自然順ソートを行うPerlワンライナー

2009-06-22 PHPの豊富すぎる組み込みの関数の中でも、natsort関数はかなり高機能な関数の一つだと思います。他の言語なら本体に組み込まれることは有り得ないのではないでしょうか。 今回のお題は、このnatsortを使ったワンライナーです。(from hnwの日記)…

お気に入りソフトウェア(Windows編)

愛用フリーソフトまとめ - Akinekoの日記 なにやら波に乗らないといけないようなので書いてみる。 俺はフリーに限定しないぜ! ちなみにLinux編とかOSX編とかはない。たぶん。 ネット ブラウザ・メーラー Firefox 昔はSleipnir使ってたけど、今はこれじゃな…

LC_CTYPEをJapanese_Japan.65001(UTF-8)にできない

ロケールに依存する文字列処理があるので、UTF-8にしたくて setlocale(LC_CTYPE, "Japanese_Japan.65001"); とかやってみたんだけど失敗する。 ちなみにLC_ALLに対して指定するとこんな感じになる。 LC_COLLATE=Japanese_Japan.65001 LC_CTYPE=Japanese_Japa…

下位互換、上位互換、前方互換、後方互換がわからない

etc

たとえば下位互換の場合、下位のものが上位に対して互換性があるのか、上位のものが下位に対して互換性があるのか、いつもわからなくなる。 誤用も多いようなので、この単語だけからでは実際のところどうなのかは判断できないようだ。 上位互換 機能やグレー…

GNU toolsのWindows版GnuWin32を使う

WindowsでUNIXライクな環境といえばCygwinやMinGW/MSYSがあるわけだけど、そこまでは必要ない、ちょっとコマンドが使えればいいだけ、という場合にはGnuWin32がお手軽で便利。おすすめ。もう後の文は読まなくていいから黙って入れちゃえよ! GnuWin32 GnuWin…

sqlite関数とPDO SQLite

なんかsqlite関数とPDOのSQLiteドライバはSQLiteのバージョン違うのね。 sqlite関数はSQLite2でPDOはSQLite2とSQLite3が使える。 同じ環境で動かしてるのになんでファイルフォーマットがおかしいとか言われるのかと思ったよ。 そしてCakePHPのSQLite DBOはSQ…

自分の開発環境

というかWindowsで開発していてeclipseとか使わない人はバージョン管理とかそういったのどうしてるんだろう?という発言がTwitterで流れていたので、Windowsで開発していてEclipseとか使わない自分の開発環境を書いてみるてすつ。 ちなみに自分はWebシステム…

生のPOSTデータが取れない

PHP

別に今まさに困っているというわけではないんだけど、PHPで生のPOSTデータが取れなくてどうしたもんだろうと思ったのでメモ。 正確にはContent-Typeがmultipart/form-dataの時に取れない。 まずは$HTTP_RAW_POST_DATAについて。 PHP: $HTTP_RAW_POST_DATA - …

途中で階層を上がるパスでハマる

とある事情により特定のディレクトリからしかファイルを読み込めない機能で、別のディレクトリから読み込みたいという要求が出てきたので../bar/data.txtのような指定をして誤魔化していたのだが、Windows環境からLinux環境に移してみるとうまく動かない。 …

TracのシンタックスハイライトでPHPのタグを省略可能にしてみた

TracのWikiはWikiプロセッサという機能を利用することでソースコードのシンタックスハイライト表示ができるんだけど、PHPのソースコードはで括ってあげないとハイライトしてくれない。 PHP的にはPHPタグ(?)外の部分は標準出力される部分になるので、それ…

Allow, Denyの順番とデフォルト状態

Apacheでアクセス制限をかけるときに Order Allow,Deny Allow from 192.168.10.0/24 みたいにAllowとDenyの片方を省略して書いたりするんだけど、省略した場合デフォルトはどうなるのかがOrderによって異なるのでいつも混乱する。 混乱するなら省略せずに書…

PerlIOで混乱した

perlでちょっとしたテキスト処理なんかをする時に while (<>) { # code for each line } みたいなコードをよく書くんだけど、ちょっと格好つけて(?)use utf8とかuse encodingとかuse openとかつけてみたら*1途端に文字化けしまくって、しかもどうやったら…

タイムゾーンを変更する方法

Linuxのタイムゾーンを変更するにはtzconfigとやらを使うと対話的に設定できるらしい。 というわけで、Ubuntuで試してみたらdeprecatedとか言われた。 $ sudo tzconfig WARNING: the tzconfig command is deprecated, please use: dpkg-reconfigure tzdata …

extensionの読み込み順でハマった

PHP

php_exifエクステンションを有効にしたら、また昨日みたいに動かなくなった。 しかも今度はコマンドラインですらエラーが出る始末。 php_mbstring.dll が見つからなかったため、このアプリケーションを開始できませんでした。アプリケーションをインストール…

指定されたモジュールが見つからないとか言われる

Windows上に開発環境なんて作ったこと無かったので微妙にはまった。 PHP自体はWindowsでもコマンドライン上で使ってはいたんだけど、Apache入れてMySQL入れて、なんてのはLinuxでやるもんなぁ。 構成 各インストール場所はこんな感じ。C:\Program Filesとか…

vimプラグイン改造ネタ2本+α

vim

普段から愛用しているvimプラグインにわずかながら不満点があったので、現実逃避に暇を見つけてカスタマイズしてみた。 svn.vim http://www.vim.org/scripts/script.php?script_id=978 これはsvnのコメント編集時に自動的に画面を分割してコミット内容とリポ…

PHPのソートとかarray_uniqueの挙動

PHP

少し前にPHP 5.2.9でarray_uniqueの仕様が変更されてアレだって話が話題になっていたが、今のプロジェクトでもそれが問題に上がった。悩ましい。 array_unique関数がPHP5.2.9から後方互換性を失いました - hnwの日記 http://d.hatena.ne.jp/hnw/20090228 上…

Ubuntuのsyslogにcannot initialize libpolkitとかいうエラーが出ている件

会社のVMware上で使っているUbuntu 8.10 Serverの調子が悪かったのでsyslogを見てみたらCRITICALとかいうい物騒なエラーが出ていた。 Feb 23 10:00:01 ubuntu-vm console-kit-daemon[6321]: CRITICAL: cannot initialize libpolkit こんなのが10分おきに出て…

Excelのセル参照形式

電卓代わりにExcelで計算しようと思ったら妙な違和感が。 値段と数をセルに入れて数式でかけ算しただけなんだけど、なんか数式が=RC[-3]*RC[-2]*RC[-1]とかなってる。 あれ、普通は=A3*B3*C3みたいな感じじゃないっけ? なんだこれ? 列もABCじゃなくて123に…

SSHのDynamic ForwardでSOCKS Proxyしてみる

お客さんのサーバにアクセスするのに踏み台サーバを経由しなきゃいけないんだけど、いちいち2回ログインするのが面倒くさかったので、PuTTY付属のpfwdでDynamic Forwardしてみたら便利になった。 やべーこれは便利だと一人で盛り上がってたら「社内Wikiにや…

URL形式のストリームフィルタで文字コード変換ができない

PHP

以前、ストリームフィルタで文字コード変換してみるというエントリを書いたんだけど、今回別の方法でフィルタを使おうと思ったらハマったのでメモ。 前回はstream_filter_prepend/append関数でストリームのリソース(ハンドル)に対してフィルタを追加したん…

Thunderbirdでアドレス帳から入力するときに名前を付けないようにする

Thunderbirdでメールの宛先を入力するとき、アドレス帳から選択すると「名前 <メールアドレス>」という形式で挿入される。 この「名前」の部分はアドレス帳でいう「表示名」に該当する項目で、ここが空欄の場合は単純にメールアドレスだけが挿入される。「姓…

bashの設定ファイルの読み込みが複雑すぎて混乱する

/etc/profileとか~/.bash_profileとか~/.bash_loginとか~/.profileとか~/.bashrcとか多すぎてわかんねーよヽ(`Д´)ノ というわけで、調べてみた。 ディストリビューションによって若干異なったりするかもしれない。 ログイン時 /etc/profile ↓ (/etc/bash.bash…

Subversionリポジトリのバックアップ方法いろいろ

Subversionリポジトリのバックアップ方法が色々ありすぎて何がベストなのかわからなかったので調べてまとめてみた。 ただのファイルコピー 普通にファイルシステム上でディレクトリをコピー(あるいはアーカイブ)する方法。非推奨。 誰かがリポジトリにアク…

Debian系のApache管理方法

Debian系ディストリビューションのApacheは一般的なレイアウトとは少し異なっている。 /etc/apache2/apache2.conf 基本設定 /etc/apache2/httpd.conf オーバーライドする設定 /etc/apache2/conf.d/ 基本設定の中でIncludeするスニペット /etc/apache2/ports.…

Group-Office 3.0を入れてみた

日本語化パッチ等が存在するのは2系なんだけど、最新リリースの2.18が2007年10月と古い(のと、日本語化パッチが微妙だった)ので思い切って3系を入れてみた。 一言で言うと別アプリのようだった。2系から3系へのアップグレードもサポートしているようなので…

sudoでリダイレクトするときにハマること

sudoで何か実行するとき、普通にリダイレクトするとリダイレクト処理自体は自分の権限になっててハマることがある。 sudo svnadmin dump hoge >hoge.dumpついつい上のようにやってしまいがちだけど、これをやるとhoge.dumpは自分の権限で書き込まれる。書き…

FastCGI環境を構築する

長らくPHP屋をやっていたのでずっとmod_phpだったんだけど、いつかはFastCGIもやらんとなぁと思っていたところに、先日Tracでmod_fcgidを導入したのでおさらいしてみる。 以下はググって自分なりにまとめたものなので、認識が間違っているものもあるかもしれ…

TracにIniAdminプラグインを入れてみた

標準の状態でもある程度の設定はできるんだが、細かい設定になるとtrac.iniを手で編集しなければならない。 このtrac.iniの編集を管理画面(WebAdmin)上から編集できるIniAdminというプラグインがあるようなので入れてみた。 プラグインのインストールにはTra…

cpan shellでカーソルがきかない

仮想マシン内のUbuntu ServerでPerlの環境を整えていたんだが、cpanのシェルでカーソルキーが利かなくて(´・ω・`) 普通はカーソルキーの上下でコマンドラインのヒストリをさかのぼったりできるんだけど、それができない……どころか左右キーも利かなくて[^A]…