[PHP] foreach ($array as &$value)形式が使えたなんて
- 2008-04-28
- カテゴリ: Server Side
- タグ: Tips PHP 不覚
foreach文で参照が使えるってさっきはじめて気づいた。
<?php
$array = array(array(), array(), array());
foreach ($array as $value) {
$value[] = 'foo';
}
print_r($array);
foreach ($array as &$value) {
$value[] = 'bar';
}
print_r($array);
知らなかった
最近livedoor Readerからの読者が増えたなぁと思って、livedoor Readerで何人くらいがこのブログのフィードを登録しているのかが気になった。今までlivedoor IDを持っていなかったからわからなかったけど、今日ID取って見てみたら、60人以上がフィードを登録してくれているんだとか。せいぜい5人くらいかと思っていたから、意外と多くて驚いた。
ってかlivedoor Reader便利そうだな。そろそろはてなRSSから乗り換えようか。
ブックマークもはてなからdel.icio.usに乗り換えちゃったし、最近自分の中ではてな離れが止まらない。
前回と前々回のエントリーの問題を総当りで
前々回と前回のエントリで書いた問題を、Perlで総当りで解こうとしてみた。使ったコードは最後に添付。
実行開始から7時間半経過したけど未だに終わる気配がない。馬鹿正直に40人の参加希望者と10個の実験枠を組み合わせたら組み合わせは10^40通り。今回のコードでは、参加可能枠の配列を使って解空間を狭めたけれど、それでもやはり9 * 8 * 9 * 6 * 6 * 5 * 4 * 6 * 7 * 9 * 6 * 8 * 9 * 6 * 7 * 5 * 9 * 4 * 4 * 5 * 3 * 8 * 6 * 8 * 6 * 8 * 7 * 3 * 7 * 9 * 5 * 9 * 5 * 6 * 8 * 7 * 8 * 8 * 7 * 5 = 1.4271125147448316e+32通りの解がある。もっと解空間を狭めるアルゴリズムを考えるか、確率的なアルゴリズムを考えるしかないようだ。
ちなみに、7時間半走らせたところ、最適解は最大実験枠が4個で最大参加者数が12人になっている。明らかにまだまだ。
XREAでMTOS (Movable Type Open Source)を導入してみた
- 2008-04-10
- カテゴリ: その他のプログラミング
- タグ:
XREAのサーバーにMovable Typeを導入するというのは何回もやってきたことなのだが、今回はSSHを使ってやってみた。シェルをほとんど使ったことがなかったから苦戦したが、以前よりもかなり早く導入できるようになった。
今までは、シェルを知らなかったから、↓のようなすごく非効率的なことをやっていた。
- MTOSのダウンロードページからZIPをダウンロードする。
- ZIPを展開
- FTPでアップロード (2000ファイル近くある上に、しばしば失敗する)
- ちまちまと権限を設定
今回はXREAのサーバーにSSHで接続してやってみた。
[メモ][Java][JavaScript] ユークリッドの互除法
- 2008-04-06
- カテゴリ: Client Side
- タグ: JavaScript Java アルゴリズム Tips
よく使うので、ユークリッドの互除法で二つの整数の最大公約数を求める関数をメモ。
/** Java */
int gcd(int x, int y) {
int g = Math.max(Math.abs(x), Math.abs(y));
int l = Math.min(Math.abs(x), Math.abs(y));
while (l != 0) l = g % (g = l);
return g;
}
/** JavaScript */
function gcd(x, y) {
var g = Math.max(Math.abs(x), Math.abs(y));
var l = Math.min(Math.abs(x), Math.abs(y));
while (l != 0) l = g % (g = l);
return g;
}
再帰は使わない。再帰を使っていなければ、関数化しないでインラインで使うこともできて便利。大小関係がはっきりしている正整数が二つある場合、ユークリッドの互除法は本質的にはwhile (l != 0) l = g % (g = l);だけで表現できるんだね。
まずJavaで書いて、それをほぼそのままJavaScriptに移植したから、JavaScript側のコードは引数のチェックをしていない。必要な場合は整数かどうかのチェックをしておいたほうがいいと思う。
Perlを書くようになったなぁと思うとき
- 2008-04-05
- カテゴリ: Client Side
- タグ: Perl
リネームツールを探してくる代わりに
rename $_, ++$i . '.jpg' foreach (sort glob '*.jpg');
とか書いて済ませ始めたとき。

