他クルーのエントリ
ブログパーツ探すならココ!
最近のエントリ(5件)
dragger
無料ブログパーツ「dragger」で読者にやさしいブログに!

PHPの糞仕様が。

今現在結構忙しいが、久しぶりに憤慨したので立てましたw
タイトルがアレなんで最初に断って置きますが、批判ではなく留意事項です。

まずは、PHP (私の環境は5.3.1である) で以下のコードを実行してみてほしい。話はそれからだ。

switch ( $r = false )
{
	case null:
		echo 'null';
		break;

case true:
case false:
echo $r ? 'true' : 'false';
break;

default:
echo 'other';
}

さて。画面には得意げに「null(キリッ」と表示されている事であろう。

PHPのこの手のネタはインターネット上に掃いて捨てるほど蔓延しており、
普段PHPを使う者は半ばあきらめ(?)、この仕様を念頭にコーディングをする。
もちろん私もそうだ。実際に比較演算子はほぼ === や !== を使用する。
ただ、やはりこれは納得がいかない。switchが型まで見ないとなると、「case $r === null」とわざわざ書かなくてはならない。

たまたま今回ハマったときは2番目の条件で必要なため、例の通り一旦変数に落としているからいいものの、これではswitchの意味が無いではないか。
本来switchは、多岐にわたる条件文を書く際にコードの冗長化防止や、可読性の向上が目的の筈。(すくなくとも私はそう思う)

頭でわかっていても、PHPにはこう言う落とし穴が潜んでいるので本当に気を付けたい。

結論:例のような場合は幸い条件が3パターンなので、今度からboolとnullを比較する際は必ずifを使おう。

日時: 2010年03月17日 15:09 | Permalink

PostgreSQLでINSERT時に振られたIDを取得

これはどのRDBMSを使っていてもあると思いますが、
たった今直前にINSERTしたレコードの、SERIAL型のカラムに割り振られた番号などを
取得したい時ってありますよね。

SERIAL型は、MySQLで言うところのAUTO_INCREMENTですが、
MySQLの場合、PHPで処理する時は、mysql_insert_id()を使ったり、
select last_insert_id() from ...を問い合わせれば解決しますが、PostgreSQLだとそう簡単にいかない…。

実際取得する際は、目的のINSERT後に

select currval('users_seq')

のように、currvalに目的のカラムのシーケンス名を渡してやれば取得できるのですが、
小規模なwebシステムではイマイチスマートじゃない(と思うのは私だけかもしれんが)。

そこで色々調査したら、有りましたw

insert into users(u_name, sex, age, attr) values('hoge', '1', 19, '2') returning user_id

のようにINSERT文にreturning節を入れてやると、
そのクエリで実際にカラムに挿入(計算)された値の結果セットを得ることができます。

returningは、次に取得するカラム名を指定します。
SELECTと同じで * で全指定したり、user_id, u_name などで複数指定もできます。
また、SERIAL型だけでなく、now()などの関数を使って挿入した場合でも同様に結果が分かるので、
事後処理の際に重宝するかもしれません。

ただ注意してほしいのは、通常成功時にPG_COMMAND_OKを返すINSERT文ですが、
returning節を入れたクエリはPG_TUPLES_OKを返すので、直後にpg_result_statusを使っている場合は注意が必要。

※ちなみにreturningはPostgreSQL 8.2.x以降でのみ対応だそうです。

日時: 2009年06月22日 13:55 | Permalink

お酒が弱い人は要注意

お酒に弱いのに飲酒・喫煙…食道がんリスク190倍に

と言うのも、
お酒が弱い(すぐ赤くなってしまうなど)人はアセトアルデヒドの分解能力が低いらしい。
アセトアルデヒドは発がん性物質で、アルコールやたばこに含まれているの為、前述のような人は食道がんの発症リスクが最大で190倍にもなるとか。

お酒の飲みすぎ、たばこの吸いすぎには皆さん気をつけましょう!

日時: 2009年05月14日 18:14 | Permalink

入社2年目は

早いもので、明日で丸1年が経ちます。
ふと見たインターネットの求人サイトから応募し、当期は募集なし(掲載はあったがw)
と言う人事スタンスの中面接⇒仮採用まで漕ぎ着け、2008年のGW明けに晴れて試用期間として参加致しました。

当時は、多少の社会経験+ITスキルからこの仕事を軽視しているところが正直あったのか、
かなり空回りしたスタートだっと思います。

Netsketを通じて得た技術を生かし(?)始める事が実感できたのは、後半からでしょうか。
当社専用のPHPフレームワーク作成(の手伝い)や、新ブログパーツ「dragger」の公開、
はたまたネットワーク中枢のシステム担当など、色々な事を経験させて頂きました。

2年目は、新たな技術習得は勿論、これらをNetsketに貢献できる様フル活用していきたいです。
あと、小椋さんや社長の様な豊かな発想力が欲しいデス…。

日時: 2009年05月07日 18:54 | Permalink

VMware Serverの勘違い

以前から開発環境にVMware Serverを利用させて頂いてると書きましたが、
最近VMware Serverの仕様で勘違いしている点がございましたので、ご紹介致します(謎w)。
※Windows版のVMware Server 1.0.8(動作OS:Vista SP1 64-bit)でのお話です。

VMwareには稼働している仮想マシンの作成・起動・設定など、
全仮想マシンの中枢を司るVMware Server Consoleと言うアプリケーションがございます。

このアプリケーション、先述の機能の他に仮想マシンの中に入って(?)、
仮想マシン上で起動しているOSをマウスやキーボードなどのデバイスを使用して操作する事ができます。
物理光学ドライブやUSBなどのデバイスも使用する事ができます。

以上の事から、同アプリケーションは仮想マシンを実行しているプロセスそのものなんだと勘違いをしていました。
実は仮想マシン自体は(多分)別のプロセスで動いているので、
仮想マシン実行中に同アプリケーションを終了しても仮想マシン自体は稼働したままなのです。

先日、同アプリケーションが邪魔だと言う記事を書いたのですが、
以上の事から「仮想マシンを操作する時以外は終了していてもよい」と言う事がわかりました。
大変お恥ずかしい限りです(//)

※ちなみに、一度終了して再度同アプリケーションを開くと、いつも通りホストとの認証画面が表示され、
認証が終了すると現在の仮想マシンの状態を復元してくれます。

日時: 2009年04月13日 16:33 | Permalink

仕事の能率をあげる(かも)なアプリ

最近暖かくなってきましたね。
サーバ管理者の皆さん!熱暴走を懸念する季節もすぐそこです!(笑)

さて、今回は私が日頃から使用している便利なWindowsアプリをご紹介致します。

Taskbar++
このアプリケーションをインストールすると、
タスクバー上のタスクボタンをドラッグ&ドロップで並び替える事が可能になります。
日頃から、常に起動していて頻繁に使うアプリケーションをなるべく左に来るよう
出勤時に順番に起動して・・・なんて事をしなくてもよくなります。
大変便利ですね^^

ちなみに私はVista SP1 64-Bitも使うので、Taskixの方も愛用させて頂いてます。

NaiNai
このアプリケーションは、タスクトレイに常駐する機能を持たないWindowsアプリケーションに、
その機能を持たせることができます。
私はVMware Serverを使用するのですが、常駐させたいのにタスクトレイ格納の機能が付いてないため、
いつまでもタスクバーに偉そうにふんぞり返られていて困っていた所、このアプリケーションに助けられました。
その他、作業BGM用のCraving Explorerにもでかい顔をされずに済むので、とても重宝しています。

この様な「あったらいいな」なアプリは探してみると結構見つかるので、
皆さんも是非探してみては?

日時: 2009年04月10日 15:02 | Permalink

MD5の安全性

先日、とあるクルーとMD5について論議(でもないか)をしたことについて、
私のMD5に対する解釈に間違いがあった為、この場を借りて訂正しますw
まぁどこが訂正箇所なのかは明言しませんが(爆)


そもそもこの間違いに気づいたのは就業時間後にふと先ほどの論議を思い出し、
MD5のアルゴリズム等を調べていた(再確認)時のこと。

参考にさせて頂いたテキストによれば、MD5は以下の特徴を持つ。

・一方向性関数でハッシュを出力する

・元データの大きさを判断しづらい(a、aa、aaaの結果がそれぞれ全く異なるなど)
・ハッシュのビット長が固定長である(0データや、NULL・はたまたCDやDVDのデータでも同じ大きさのハッシュとなる)
・ビット長が比較的長い(128ビット)

MD5で生成されたハッシュが不可逆なのは、
元データが1ビットでも変わると結果が大きく異なり(2項)、
128ビットと言う比較的大きいサイズで固定される(3項)と言う性質を持つため。
…だと思う。

つまり、元データのサイズが何ビットだろうと128ビットに丸められるので、
元データの大きさが分かっていなければ逆算は困難だろうと言う事。

さて、話は変わりまして衝突性についての性能ですが、
128ビットな訳ですから、パターンが約340澗(340兆の1兆倍の1兆倍)通りあることになります。
例え340澗だろうと有限ですから重複はあります。

実際に、パソコンでも同じハッシュを返す二つの異なるデータ(意味を持つ物であるかは問わない)のペアは数十分で生成できるそうです。
(※ちなみにこれを強衝突と言います)

幸い、既に生成されたハッシュから生成元と別のデータを割り出す(弱衝突)のは今のテクノロジでは容易では無いそうです。

ですが技術の進歩により、いずれこの弱衝突耐性も突破されるかもしれません。
もしそうなった場合インターネット通信において、MD5での機密情報の暗号化の有用性が脅かされそうですね^^;
(今さら言う事ではないですがね)

日時: 2009年04月08日 12:47 | Permalink

上手な運転

珍しく、みゆきさんの日記にに車ネタがあったので便乗。

本日の話題は上手な運転とはなんぞや?です(笑)
この手の定義は人によって様々な解釈があるかと思いますが、私的(同乗者視点で)には

スムーズ
 一つ一つの動作(挙動)にキレが無い感じですかね。
 発進の際は、いつアクセルが踏まれたか分からない感じ(AT車限定)で、
 制動の際は、いつブレーキが踏まれたか分からない感じがいいです。
 カックンブレーキは多様されると酔うので止めて下さいw

ワンテンポ早い処理
 赤信号での停止時や、車線変更なども結構手前からやってくれると安心します。
 赤信号の際ブレーキを踏むのが遅い人は、フロントガラスから安心して目を離せませんw

余裕
 狭い道でのすれ違いや、右折のすり抜けなどを素早く(もちろん安全に)できるとストレスがありませんね。

判断力・決断力
 何事にも臨機応変だといいです。迂回路が瞬時にイメージできる人には憧れます。
 また、決断力が劣っている人の運転はかなり怖いです。
 右折の時は行くと決めたら(安全マージンだと分かっている時)行きましょう。
 ※信号が黄色になった時の優柔不断は一番止めて欲しいです。黄色の度に止まってるくらいの方がマシです。

以上の4点。
上から順に重要で、私が運転する際は日頃から意識している事です。

※「事故らない」とか「“急(きゅう)”がない」なんてのは大前提だし、起きる時は起きるので意識する物ではないかなと思います。

あとマナーが悪い人はどんなに運転が上手くてもダメです。皆さんも、マナーを守って安全運転に努めましょう。

日時: 2009年03月02日 19:00 | Permalink

デスクトップ公開

今日は作業PCのスクリーンショットでも公開してみますw

大きいんで適当に別ウィンドウとかで見て下さい。

デスクトップ綺麗でしょ?デスクトップにファイルが散乱してるのが嫌なので、まめに整理してます。
その代わりドキュメントフォルダが酷い有様です。

さて、気づいた方もいらっしゃると思いますが、タスクバーがとんでもない事になってます。
ただ撮影するのもつまらないので、色々起動してみました。

目で確認出来る物だけでも、

VMware Server、PHPエディタ、Notepad++、Firefox、FFFTP、エクスプローラ、MySQL Admin、pgAdmin、日報ツール、Photoshop、
Nero、Poderosa、Chrome、Windows Media Player、Opera、Safari、Eclipse、Process Explorer、Sleipnir、VLC media player、
Thunderbird、Winamp、Windows Live Messenger、タスクマネージャ、Avast!

こんなにあります。メディアプレイヤが3種類、Webブラウザは5種類起動しています。
因みにこの時のメモリ使用量はこんな感じでした。

これでも使用率が半分程度なので、どのアプリケーションも動作に支障をきたしていません。

※スクリーンショットの画面右側がVMwareの画面です。CentOS 5.2 x86_64 (final) を起動中です。

日時: 2009年02月06日 17:32 | Permalink

他クルーに無い技術

私もそこそこプログラムやWeb作成などの技術がある方だと自負していますが、他クルーになくて私だけが持つ技術・ノウハウが1つ2つしか見当たらないので、そろそろ色々模索していこうと思います。

日時: 2009年02月04日 08:24 | Permalink