水曜日, 7月 30, 2008

PHP: ランダムなファイル名を返す関数

Windows環境のApache+PHPでは、tempnam()関数が正常に動作しないようです。仕様かもしれませんが、拡張子は.tmpが自動的についてしまうし、プレフィックスの指定が3文字になるようです。ランダムなファイル名を返す関数を作ってみたので、参考になればと思います。

引数にファイル名の長さを指定してください。


function tempFile($length)
{
$alphanumeric="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
$len=strlen($alphanumeric);
$name="";
for($i=0;$i<$length;$i++)
{
$index=rand(0,$len-1);
$name.=substr($alphanumeric,$index,1);
}
return $name;
}

金曜日, 7月 25, 2008

iPhoneという奇跡


iPod はトラブルフリーである。なにせ、マニュアルがない。実際、説明抜きでも分かるほど使いやすい。感に入ったように「うん、いいね。ぜんぜん違う」「なるほどね。これ皆んな欲しがるわけだ」という返答をもらっている。そうだと思う。動画を動かして、映画など見ていると特に大きなその画面の無駄のないスペースの使い方がアートだと思う。

iPhoneという奇跡 (2008-7-13)

土曜日, 7月 19, 2008

WikiにおけるJavaの記述

Java の基本コンセプトは、無論のこと「仮想化」である。そのためには、言語仕様が明確であることが要求される。毎月、あるいは半年毎に変わる仕様にあわせて、仮想マシンを作りたいと思う技術者はいない。

言語仕様もさることながら、ライブラリの仕様もはっきり定義されていなければならない。このあいだ作り上げたプログラムが、ライブラリのAPIを勝手に変更されたために、意味もない警告を出してくる状況は、決して快いものではない。

言葉がいいかげんに使われるものではなく、遊びではないように、プログラミング言語を規定する側はより一層の思いやりを必要とする。プログラムは、単なるアルゴリズムの記述ではあるが、それを読み解くのはコンパイラだけではなく、記述するのは人間だからである。

Java言語の表記法が、C言語に近いのは、時代、社会的背景によるものである。しかし、Javaでは、ベタにメモリアドレスを扱うC言語とは異なり、より安全で自然なプログラミング言語である。範囲外の配列の引数は、例外処理される。オブジェクトはもちろん、それとして扱うことができる。

Java

火曜日, 7月 08, 2008

PHPの変数には、文字通り、どんな型の値を放り込むことが可能です

PHPの変数には、文字通り、どんな型の値を放り込むことが可能です。つまり、数値や文字列を返すはずの関数の返り値に、FALSEを返し、例外処理ができます。例として、ゼロでの割り算を例外処理したい場合のコードを挙げておきます。


function divide($x,$y)
{
if($y!=0)
$result=$x/$y;
else
$result=FALSE;
return $result;
}

$x=10;
$y=0;
$z=divide($x,$y);
echo "$x divided by $y equals to ";
if($z)
{
echo "$z";
}
else
{
echo "... undefined

";
}


PHPでは、変数に型を自由に指定できるため、型を含めて判断したい場合には、見慣れない===(イコールサインを3つ重ねた演算子)や!==など使うことができます。

PHPの比較演算子

木曜日, 7月 03, 2008

PHPについて -- 型変換、可変変数、グローバル変数

PHPは、サーバーサイドで動くスクリプト言語ですが、これがとても便利。やみつきになります。使っていて、PHPの言語仕様で、気づいた点を3つ。


1.PHPでは、文字列が数値にキャスト(型変換)できる。全角数字を半角に変換するには、mb_convert_kana()を用いる。


$a=(int)"10";


$str = mb_convert_kana($str, "a");
$a=(int)$str;


2.PHPでは、文字列を変数として評価することができる。(Lispでいう、eval)


$variableName="newVariable";
$newVariable="value";
echo $$variableName;


3.PHPでは、関数を定義する際に、外部変数(グローバル変数)は関数内でそれと指定せねばならない。関数内での外部変数への代入は、外部変数そのものの値を変えない。


$globalValue=100;
function summit($politicalFactor)
{
      global $globalValue;
      return $globalValue*$politicalFactor;
}
$globalValue=summit(1.3);

水曜日, 7月 02, 2008

「Firefox 3」がギネスブックに認定,公開初日ダウンロード件数の世界記録

一日で最多のダウンロード数をギネス記録にしよう!という、6月17日に行われた「ダウンロード・デイ」。Firefox 3のダウンロード数は800万を超え、見事世界記録を達成したとのこと。現時点で、ダウンロード数は2870万件とか。

「Firefox 3」がギネスブックに認定,公開初日ダウンロード件数の世界記録 (2008-7-3)

Qt: 外部プログラムを起動する

  Qt/C++ のアプリは、外部へ直接アクセスできます。これはネットアプリでは不可能な Qt のメリットです。 外部プログラムを起動することもできます。QProcess::startDetached() を使うと独立したプロセスを立ち上げることができます。 この QProces...