<?xml version="1.0" encoding="UTF-8" ?>
<rss version="0.91">
  <channel>
    <title>技術覚書</title>
    <description>技術の覚書</description>
    <link>https://noteofit.blog.shinobi.jp/</link>
    <language>ja</language>
    <copyright>Copyright (C) NINJATOOLS ALL RIGHTS RESERVED.</copyright>

    <item>
      <title>GPUレンダリング</title>
      <description>バージョン4.0から、GPUレンダリングによる描画がデフォルトとなっている。&lt;br/&gt;&lt;br /&gt;
そのため、コンパイル時にmanifest.xmlへ明示的に指定しなければ&lt;br/&gt;&lt;br /&gt;
端末側のGPUレンダリングON/OFFにかかわらずONとなってしまう。</description> 
      <link>https://noteofit.blog.shinobi.jp/android/gpu%E3%83%AC%E3%83%B3%E3%83%80%E3%83%AA%E3%83%B3%E3%82%B0</link> 
    </item>
    <item>
      <title>PL/SQL</title>
      <description>&lt;p&gt;PL/SQLの書き方&lt;/p&gt;
&lt;p&gt;create or replace procedure XXX&lt;br /&gt;
is&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; -- プロシージャ内で参照できる変数を定義&lt;/p&gt;
&lt;p&gt;begin&lt;/p&gt;
&lt;p&gt;-- 内部プロシージャ&lt;br /&gt;
procedure yyy&lt;br /&gt;
is&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; -- 内部プロシージャの変数を定義&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; -- カラムの型を定義&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; aaa TBL_AAA.BBB%type;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; -- テーブルの行を定義&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; bbb TBL_AAA%rowtpye;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; -- カーソル定義&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; cursor ccc(p_param) iS&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; select * from TBL_AAA where x = p_param;&lt;br /&gt;
begin&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; -- 処理を記述&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; -- 変数に格納している行をそのままinsert・updateできる&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; insert into TBL_AAA values bbb;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; update TBL_AAA set bbb where x = x;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; -- 暗黙カーソルオープン&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; for ccc_rec in ccc(1) loop&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -- ループ&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; end loop;&lt;br /&gt;
exception&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; when no_data_found then&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -- 例外処理を記述&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -- 例外をスロー&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; raise zzz;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; when others then&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -- その他例外を記述&lt;br /&gt;
end;&lt;br /&gt;
end yyy;&lt;/p&gt;
&lt;p&gt;end XXX;&lt;/p&gt;</description> 
      <link>https://noteofit.blog.shinobi.jp/oracle/pl-sql</link> 
    </item>
    <item>
      <title>ファイルオープン</title>
      <description>ファイルオープンに使用するUTL_FILE.FOPENは読み込みバイト長(第4引数)を指定しないとデフォルトで1023バイトとなってしまう。</description> 
      <link>https://noteofit.blog.shinobi.jp/oracle/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%AA%E3%83%BC%E3%83%97%E3%83%B3</link> 
    </item>
    <item>
      <title>値比較</title>
      <description>wehre句の値比較について&lt;br /&gt;
&lt;br /&gt;
A = B&lt;br /&gt;
Aがchar型でBへ数値型を設定した場合&lt;br /&gt;
暗黙的にAにTO_NUMBERが適用される(TO_NUMBER(A))。&lt;br /&gt;
&lt;br /&gt;
Aに格納されるデータがすべて数値型のデータであれば問題なく抽出できるが、数値以外のデータが格納されているとエラーが発生してしまう。&lt;br /&gt;
&lt;br /&gt;
このような場合は、CASTを行う。&lt;br /&gt;
A = CAST(B AS CHAR(X))</description> 
      <link>https://noteofit.blog.shinobi.jp/oracle/%E5%80%A4%E6%AF%94%E8%BC%83</link> 
    </item>
    <item>
      <title>In Any</title>
      <description>動的SQLでIn Anyに1000件を超えるデータが指定されるとエラーとなる。&lt;br /&gt;
&lt;br /&gt;
回避するには、1000件で分割するかORにする。&lt;br /&gt;
ただし、どちらの場合もSQLサイズの問題が出てくる。&lt;br /&gt;
9iまでは64Kのようだが、10gでは200kまでは確認できた。</description> 
      <link>https://noteofit.blog.shinobi.jp/oracle/in%20any</link> 
    </item>
    <item>
      <title>ORACLEのNVARCHAR2について</title>
      <description>PHPからORACLEのNVARCHAR2のカラムに対し、データを取得すると正しく取得できない場合がある。&lt;br /&gt;
原因は、PHP(oci)がORACLEのNVARCHAR2のカラムサイズを取得するのにORACLEのカラム情報より取得した器をそのまま使用してしまい桁あふれしてしまっているためだ。&lt;br /&gt;
NVARCHAR2(200)でUTF-16の場合、ORACLEより返されるバイト長は200×2=400となる。&lt;br /&gt;
一方クライアント側はUTF-8で取得した場合、200×3(文字により4もある)=600～800となる。&lt;br /&gt;
200バイト以上の文字がオーバーしてしまうため、PHPはエラー？とみなし空を返してしまうようだ。&lt;br /&gt;
一方、NVARCHAR2(200)でUTF-8の場合、返されるバイト長は600となり正常に取得できる。&lt;br /&gt;
ただし、UTF-8では文字により(第3,4水準の一部の文字)4バイトとなってしまうため、これでも駄目な場合がある。&lt;br /&gt;
本当に正しく取得するようにする場合は、実際の文字数×２カラムサイズとして設定するのが無難である。&lt;br /&gt;
&lt;br /&gt;
上記問題はPHP4～PHP5.0.5まで確認できる。&lt;br /&gt;
最新のPHP5.2.5では確認できなかった。</description> 
      <link>https://noteofit.blog.shinobi.jp/php/oracle%E3%81%AEnvarchar2%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6</link> 
    </item>
    <item>
      <title>権限</title>
      <description>テーブルにアクセスする権限がなくても、そのテーブルをアクセスするプロシージャやファンクションを作成しそれに対してExecute権限を付与すればテーブルにアクセスできる。&lt;br /&gt;
&lt;br /&gt;
要はプロシージャやファンクションの実行権限が優先される。</description> 
      <link>https://noteofit.blog.shinobi.jp/oracle/%E6%A8%A9%E9%99%90</link> 
    </item>
    <item>
      <title>DUAL</title>
      <description>DUALテーブルはSYSが所有し、全てのユーザーにSELECTできる権限が付与されている。</description> 
      <link>https://noteofit.blog.shinobi.jp/oracle/dual</link> 
    </item>
    <item>
      <title>値の比較について</title>
      <description>A == ''&lt;br /&gt;
&lt;br /&gt;
Aが文字列の場合：空、NULLはtrue&lt;br /&gt;
('0'はtrueとならない)&lt;br /&gt;
Aが数値の場合：0はture&lt;br /&gt;
&lt;br /&gt;
となるため注意が必要&lt;br /&gt;
</description> 
      <link>https://noteofit.blog.shinobi.jp/php/%E5%80%A4%E3%81%AE%E6%AF%94%E8%BC%83%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6</link> 
    </item>
    <item>
      <title>Apache SSL化</title>
      <description>http://www.rinzo2.jp/~rinzo/apache_ssl/apache_and_ssl_00.htm</description> 
      <link>https://noteofit.blog.shinobi.jp/web/apache%20ssl%E5%8C%96</link> 
    </item>

  </channel>
</rss>