役に立ちそうもないTips移転版

俺得なTipsを書き連ねるだけのブログ。

2004-01-01から1年間の記事一覧

Firebird : 主キーの制限

残念ながらver.1.5では、主キーについて次のような制限がある。 カラム数が多くとも5カラム 1カラムの場合、最大サイズが250バイト。複数カラムの場合、200バイト未満になることもある。 http://www.volny.cz/iprenosil/interbase/ip_ib_indexcalculator.htm…

Rubyのライブラリをソースからこさえるときの注意

setup.rbとかextconf.rbが付いていると一見楽そうなのだが、こいつらはruby本体がビルドされたときの情報を元にヘッダやら何やらを探そうとするので、まず > ruby -r rbconfig -e "cf=Config.CONFIG;cf.keys.sort.each{|key| print key, ' -> ', cf[key], %Q…

TomcatとJDBCドライバの関係

Webアプリから直接Class.forName()してドライバをロードするような場合は$CATALINA_HOME/shared/libに置けばいいが、Tomcatのコネクションプーリングを使うような場合は、$CATALINA_HOME/common/libに置かないとTomcatがJDBCドライバをロードできないので要…

SQLのNULLの順序

ORDER BY指定した列にNULLが含まれる場合、 Access、SQL Server NULLは最小値扱い Oracle、DB2 NULLは最大値扱い となる。(PostgreSQLとかは調べてない) なお、MAX/MINを取る場合はNULLは排除されるのでこの話は当てはまらない。念のため。

ActivePerlにJcode.pmを入れる場合

ppmでは入らない。CPANから取ってくれば、win_install.plファイルがあるので、これを実行すればよい。(

UN*X:soはどこに置く?

OSによっててんでばらばら(そもそも、.soファイルがWindowsのDLLのように扱われるという保証からしてない)だが、 AIX $LIBPATHのどこか Soralis $LD_LIBRARY_PATHのどこか に入れるそうな。(LinuxとかBSD系は調べてない) よほどひねくれてない限り、これらの…

Win32API:MoveFile()について

上書き動作はエラー。NT系であれば、MoveFileEx()で上書き移動も可能。

Win32API:Get〜ProfileInt()について

指定されたiniファイル、セクション、キーがない時は引数nDefaultに指定した値が返ってくるが、キーに対する値が数値でなかった場合決め打ちで0が返ってくる。sigh.

Windows:日付をなるべく長いスパンで取るには

Win32 APIでもっとも長い日付を持てる型はFILETIME(64ビット)。 Win32ではDWORD x 2の構造体でそのままでは64ビット演算はできないが、ULARGE_INTEGER(DWORD x 2の構造体とULONGLONGのunion)に放り込めば64ビット演算可能。 SYSTEMTIMEとの間で相互変換でき…

C++:out引数を参照渡しにしてはまずい訳

http://www.dodgson.co.jp/books/lab/hat/reference.html に議論があるが、つまり 「呼び出しコードを見たとき、値渡しと区別がつかない」 ということだそうな。(「猫でも〜」にもそのような記述あり。) とはいえ、「C++ FAQ」に言わせると、「区別がつかな…

Cocoaバンドル内から自身のリソースにアクセスする

バンドルが実行時ロードモジュールの場合、アプリケーションメインのinfo.plistでなくバンドル内部のinfo.plistにアクセスしたいときがある。こういう場合、バンドルのprincipalクラスで [NSBundle bundleForClass: [self class]]とやると「自分自身」のNSBu…

Javaの配列宣言

C/C++では、 int* a, b; のときbはintだが、 Javaの場合 int a, b; のとき、bもint。

サイズ0のstd::string

stringをresize(0)してからc_str()を取ると、ちゃんと"\0"からなる領域を指すポインタが帰ってくるので、心配せずに使える。(VC++6.0 SP5で確認)

C++オーバーロード型の識別

型付けされた変数であれば、signed/unsignedによるオーバーロードは可能。 また、int/charでオーバーロードしているとき、文字リテラルを引数に渡すと charの方が呼ばれる。(VC++6.0 SP5で確認)

ソケットを使うときのポート番号決定指針

1. 1023まではroot用なので使っちゃダメ。 2. RFC1700に主要なプロトコルのポート割り当て一覧がある。これに載ってるのも×。 3. 1024(一般にreserved)、6000-6063(X window systemで使用)ほか、著名なものを避ける。

Apacheのログの整理

ほっとくと溜まる一方なので、rotatelogツールを使うと良いらしい。

範囲を表す表記法

[n,m)で、「n以上m未満」を表す。

antでemacsenのいらんファイルを消すとき

実はantにはデフォルト除外集合というものがある。特定のファイルパスパターンだが、これに該当するファイル/ディレクトリは黙って処理対象から外される。 ……で、それが<Delete>でも効いてしまうので、*~を消すタスクを作ってもそのままでは何もしてくれない。FileSe</delete>…

Windowsで0xE06D7363例外

C++の例外を、Win32の構造化例外処理機構(SEH)で扱う際の 内部コード。例外をcatchし忘れると唐突に出るので 慌てないこと。 後で見たときにはもう古いかも知れないが一応URL。 http://support.microsoft.com/default.aspx?scid=kb;en-us;185294

よくとちるポインタ宣言

C++で hoge* piyo; は hoge *piyo; と同じだが、 hoge* piyo, muni; だとmuniはhoge*でなくhoge。

class#method

OOPな話でたまに見かけるこの記法。 methodがclassのインスタンスメソッドの時「class#method」 methodがclassのクラスメソッドなら「class.method」 と書くらしい。 ……なんか以前、逆のような記述を見た気もするんだが……

VC++6.0でイテレータを間接参照するときの注意

コンテナが空のとき、いきなり itr = hoge.rbegin(); で*itrを操作しようとすると、itrがNULL同様なのか、落ちる。 ちなみにgcc、bcc32では同等の処理をやっても落ちない。 VC++7.0以降では未検証。

java.io.File.separatorCharとpathSeperatorChar

いわゆるパスデリミタはseparatorCharの方。 pathSeparatorCharは、環境変数に複数のファイルパスを設定するような場合に使われる区切り文字。 (UN*Xなら「:」だけど、DOS/Windowsは「:」をドライブレター指示文字(?)として使ってるから「;」、とかゆー話)

Javaプログラムで、パスデリミタが「\」でも「/」でもOKにする

渡されたパスをpathとして、 new File(path).getPath() で、プラットフォームに適したパスを得ることが出来る。

cmd.exeで複数行に渡ってコマンドを入力する

UN*Xのshだと「\」で改行をエスケープできるが、似た感じで「^」で改行のエスケープのようなことが出来る。 コマンドラインでjavacを手入力しないといけないような場合は多少便利、かも。 (2014/09/04 追記) これにとんでもねえ罠があった。「^」は本来cmd.e…