タグ:プログラミング ( 14 ) タグの人気記事

マッシュ!

ひさびさにコンピュータちっくなこと書こうかな。

GoogleがGoogleブランドを出さないでsearchmashっていうUI実験をやってる。どれどれ、と思って見てみると、ちゃんと日本語検索もできるし、なんだか不思議っぽい動きもする。
検索順位を入れ替えたりとか。

しかしサービス名に「mash」なんて入れてるってことは…と思いつつ、とりあえずソースを見てみると
_init({
estimatedCount: "657",
moreResults: true,
event: "CLHb77KK4YcCFQxgCQodsKp4PA",
query: {
prefix: "",
terms: "とっくりばー"
},
results: [
{
title: "<b>とっくりばー</b>",
snippet: "<b>とっくりばー</b>. イチから作り直しても。 プログラムを一度作って、そして <b>...</b> <br> 甘やかされた男たち. from <b>とっくりばー</b>. ~が下手. from たのしい検索・ゆかいな検索 <b>...</b>",
site: "tockri.exblog.jp",
rawUrl: "http://tockri.exblog.jp/",
url: "http://tockri.exblog.jp/",
cacheUrl: "http://72.14.203.104/search?q=cache:uOEBlBwq_UYJ:tockri.exblog.jp/+&hl=en&gl=us&ct=clnk&cd=1",
displayUrl: "tockri.exblog.jp/"
},
おおっ、検索結果がJSON。ってことは、隠しiframeの中にwww.searchmash.com/search/を呼んで_init()を上書きしてパクっちゃえばあんなことやこんなこと。いやそれは違うドメインではできないのか?まあとにかくCNET Japanのトラックバック一覧を見ても誰もまだやってない。あとで暇になったら(なるのか?)

と思ったら
404 Blog Not Found:What's mashin' @ searchmash?
やられてた。ちっ。手が早すぎ。
[PR]
by tockri | 2006-10-05 13:24 | ├ コンピュータ

イチから作り直しても。

プログラムを一度作って、そして作ったときには思ってもみなかった要求を他の人から出されて、ちょっと付け足して、作ったときには必要だったのが必要なくなったからちょっと削除して…というのを何度も繰り返すと、かなり高い確率でぐちゃぐちゃでどこをいじったらどこが変わるのかわからないようなシロモノができあがる。

多少とも腕のある人が一人ないし少人数で作って、同じレベルのメンバーがきちんと保守してればあまりそういうことにはならないのだけど、そういう幸運なケースというのは残念ながら少数派なので、世の中のほとんどのプログラムは時間とともにぐちゃぐちゃになっていく。

ぐちゃぐちゃになったモノを前にして、多くの人は「壊してえ…」とぼそっとつぶやく。

そこでアメリカ一の大金持ちのビルゲイツさんはいいこと言ったね。いや、誰が言ったんだかほんとはよく覚えてない。ゲイツさんだったような気がする。
プログラマの犯す最大の間違いは、一から作り直せば全ての問題が解決すると思ってしまうこと
とか、そんなような。

僕はそれを読んで、「分をわきまえる」ということなのかなと思った。

最初から作り直したってね、そのモノを作るのと同じ時間かけて作るってのがどだい無理なんだし、かりにそんな大量の時間と資源を与えられたとしても、今目の前にある問題は解決してるけど、そのものがすでに解決しちゃってた問題が再発したりとか、いろんなことが起こって、「完璧で美しいステキな完成品」からはほど遠いところに墜落するのがオチなんだよ、と。

ましてや、そのぐちゃぐちゃな状態を作ってたのが自分である場合。その人は一から作り直しても、間違いなくもう一度ひどいものを作ってしまう。
「自分のせいじゃない、外部からあれやこれやと横槍が入って。」
「ちょうどそのとき時間が無くて。」
同情はするけど、それに対応できなかった人は、次回も対応できない。
[PR]
by tockri | 2006-09-26 13:11 | ├ コンピュータ

[PHP]文字列連結に配列を使うと遅い

以前、最速の人が、JavaScriptでは文字列連結に配列を使ったほうが高速と言っていたので、ああそういうもんかなと思って、PHPでも無意識に使っていた。

で、ふと思い立ってPHPで実験してみたら、PHPではどうやら配列作ってjoinのほうが文字列連結演算子より遅かった。以下コード。

define('COUNT', 1000000);
/**
* 文字列連結演算子
*/

function test1() {
$str = "";
for($i = 0; $i < COUNT; $i++) {
$str .= "" . $i % 50;
}
return $str;
}
/**
* 配列作ってjoin
*/
function test2() {
$str = array();
for($i = 0; $i < COUNT; $i++) {
$str[] = "" . ($i % 50);
}
return join('', $str);
}
/**
* 時間を測定する
*/
function calcTime($func) {
$begin = getmicrotime();
$func();
$end = getmicrotime();
echo $func, " : ", ($end - $begin), " msec\n";
}
/**
* マイクロ秒で時刻を得る
*/
function getmicrotime(){
list($msec, $sec) = explode(" ", microtime());
return ((float)$sec + (float)$msec);
}

calcTime("test2");
calcTime("test1");
結果。
test2 : 4.5721399784088 msec
test1 : 1.4333798885345 msec

[PR]
by tockri | 2006-06-22 10:14 | ├ コンピュータ

下手が下手なままでいる害悪

「手術は掛け算よ。いくら優秀なメンバーが集まっても、0が一人いれば手術は失敗する」

と、医龍のERのボスみたいな人が言ってた。

最近、
「下手なくせに自分は上手いと思ってる人」
が独りで1年間自由奔放に書いたコードを、
「下手を自覚していて考えず理解せずにコピペと試行錯誤でなんとか動くようにする人」
が独りで半年間たくさん継ぎ足したコード、というのに機能を追加している。

その長さ、深さ、複雑さ、意図の読めなさと来たら、チェックボックスのデフォルト値をちょっとOFFにするだけで一晩かかるというシロモノ。すごい。
「プログラミングも掛け算よ。」
って。多少足し算して0じゃなくしたと思っても次の瞬間また謎のコードが出現して0がかかる。ここまでふんだんに0を掛けまくられちゃあどうしょうもない。

下手が下手なままでいると、上手な人の性能までスポイルしてしまうという典型だ。

組織において下手が増えると全体のパフォーマンスは指数関数的に悪化する。技術を要する仕事を行う組織は絶えず下手を少しでも減らす努力をしなければならない。上手であればなおいいが、それよりも「下手でないこと」が大事だと思う。

下手な人が存在するときに教育のコストを払えない組織には未来はない。
[PR]
by tockri | 2006-05-29 16:37 | ├ コンピュータ

国家資格とか。

一級システム設計士、みたいな国家資格あったらいいのに。で、システム設計事務所みたいなもん開いてて、顧客の要望に合わせてインターフェイス設計、ハードウェア選定、アーキテクチャ設計、フレームワーク準備、クラス設計、開発マネジメントまでやるの。

当然そういう人は一級建築士みたいにすんごい給料もらってて。

いーじゃん。僕それになる。
[PR]
by tockri | 2006-05-18 14:29 | ├ コンピュータ

上手に出来るとは

いつも下手くそなプログラムを見て
「なんでまともに設計しないんだ、なんでマニュアルに書いてあるとおりにしないんだ、なんでこんなに馬鹿みたいに長くて読みにくいんだ」
と憤ると決まって
「もう時間のないとこでだーって作ったものにあとからつぎはぎで足してって…時間なくて…」
という答えが返ってくる。
「時間がないから時間を無駄にしないように設計するんじゃないか。時間がないから出来るだけ楽できるように短く見通しのいいプログラムを作るんじゃないか。だいたいいくら時間がなくてもこんなの作る人は時間があったっていいものを作れるはずがない」
と思っても、まあ、大人なので。

ちょっとずつ全部言う。(言うのかよ)

思うに、「上手に出来る」というのは、コストをかけずにイイコトが出来るということなんだろう。

モテの上級者が非モテの人に「もうちょっと服装とかなんとかしなよ」と言って「いやあ忙しくて買いに行く暇が」とか「金なくて」とか言われたりして、「服買うのに時間なんかかからんだろ」「その変なネルシャツを買う金で別のを買えってことなんだけどな」と思っても伝わらないのと同じコトかもしれない。

上手に出来るようになるまでには結構なコストを払い続けてきた結果、コストをかけずにすんなり良い結果を出せるようになる、それが正しい上達の仕方だと思う。

上手な人に何か指摘されたときにコストがかけられないのではなく、自分が上手でないことが原因だと考える人が上達していく人なのかもしれない。
[PR]
by tockri | 2006-05-18 14:21 | ├ かんがえごと

設計をすることの意味

ごめん、めっちゃわかんない話をします。

Q. ソフトウェアの設計って何のためにするのか?
A. 複数人で開発方法を共有するため。
Q. よい設計とはどんなものか?
A. 作るのが楽で、変更するのが楽で、誰が見ても把握しやすい設計。
Q. フレームワークは何のためにあるのか?
A. 楽に作るため。各部の担当者が全体を細かく知らなくても作れるため。
Q. フレームワークを利用して、きちんと設計もしたのに楽にならないしどこがどういう風に動くか把握できないのはなぜか?
A. その設計がまちがってるから。

ソフトウェアの開発にフレームワークを利用することが多い。
でもそのフレームワークを何のために利用するのか聞くと答えられない人が多いのかもしれない。

「このやり方に従ってやれば作れるらしいので。」
レシピがないと作れない初心者は設計とかしないほうが良いと思う。

「DB接続が便利なので」
接続クラス作るだけなら僕が30分で作ってあげるよ。


フレームワークの基本的な考え方は、
同じようなことを毎回毎回書くの面倒でしょうから肩代わりしてあげますよ。ついでにちょっと便利にしてあげます。
ってことだ。

それなのにフレームワークを利用するためのお約束コードを毎回毎回繰り返して書かなきゃいけないとしたら、それは何かが間違ってると気づかなきゃいけない。

できあがったプログラム全体のなかで、コピー&ペーストで作られた部分ができるだけ少なくなるようなのがイカス設計ってえものだよ。
[PR]
by tockri | 2006-04-18 13:55 | ├ コンピュータ

会社のホームページ。

自分とこの会社のホームページを作った。こういうのを作ると、自分のデザイン能力の限界をまざまざと思い知らされてへこむ。

会社の他の連中が「Googleで見つからない」とかってうっさいからここからリンクして見つかるようにしてあげましょう。

有限会社S.A.T.
[PR]
by tockri | 2006-04-04 12:47 | └ 出来事、雑感

できるというのとやるというの

例によって僕が一般的なことだなあと思っているだけで、考えるきっかけはプログラミングのことなんだけども。

何か高級なことを実際やって提示してあげられる、というのと、理論上それができるということを知っている、というのでは、質としての差はそんなにないように思える。ヴィトゲンシュタイン先生は「いやいやそれが本質的な差だ」って言うかもしれないけど。

こんなにも情報が取り出しやすくなってる(特にプログラミングについてはもう無限の知識がネット上にある)昨今、それが可能であるってことだけ解ってればやり方調べればなんとかなる。

でも、世の中にある「完成品」では、その高級なことが出来てないことが多い。

なんでかというと、「完成品」を作るのには制限時間があるから。「制限時間内にできる」と「できない」の差はものすごく大きい。

僕たちがなんでこんなにチマチマとめんどくさい勉強をし続けるのかといえば、ただひたすらに、「次の機会に制限時間内に高級なことをするため」なんであって、で、そのまた次の機会のための、さらに高級なことの基礎部分にするためで、さらに、複雑で高級なことを完遂する体力を強化するためなんだと思う。

シュレーディンガー方程式をどうこうしようって言うときに、行列演算とかオイラーの定理の証明とかに時間をかけてたら、「そのとき猫が死ぬのか死なないのか」の判定に何年もかかってしまって猫が寿命で死んじゃうわけだ。

「呼吸をするように」基本的なツールを使いこなして、「指先でちょちょいっと」応用ツールを使いこなす。その積み重ねによってのみ、高級な完成品は生み出される。

「やればできるのは知ってるよ。時間がないからしないけど」
というのは、たぶんに手遅れの可能性がある。ずっと積み重ねてきていれば、時間なんかかからないか、むしろ短くて済んだりするはずなんだ。
[PR]
by tockri | 2006-03-29 14:28 | ├ かんがえごと

mixi portal キラー

mixiの3列目を消す試みがあちこちにあるけど早速対策されたりしていたちごっこになってたり。

僕もgreasemonkeyスクリプト作ってみたよ。width=224とかを使ってないぶんちょっと長持ちかなと。

mixiportalkiller.user.js
[PR]
by tockri | 2006-02-10 01:53 | ├ コンピュータ
 
移転しました。
by tockri
S M T W T F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
最新のトラックバック
[media][gove..
from bewaad institu..
甘やかされた男たち
from とっくりばー
~が下手
from たのしい検索・ゆかいな検索
例えバトン
from ひまわりてんびんへの道
例えバトン
from 明日は明日のホラを吹く-To..
リンク
ライセンス

クリエイティブ・コモンズ・ライセンス

このブログのテキストおよび画像は、クリエイティブ・コモンズ・ライセンスの下でライセンスされています。




検索
ファン
ブログジャンル
画像一覧