Category Archives: プログラム道

まだまだだなぁ・・・。(自分のこと)

最近、ありがたいことにいろいろな方から仕事のお話をいただきます。が、自分の不得手な分野ばかりなので申し訳なくもお断りしていたりします。

今まで我流で学んできたので、得意・不得意にすごく偏りがあるんですよね。仕事の幅を広げるためにも、もっと勉強せにゃと思うのですが、なかなかその気になれません。時間と脳エネルギーの先行投資と思えばいいんでしょうが。

Ruby のおかげでオブジェクト指向の考え方はわかったので、特に Java 周辺の知識は身に着けたいなぁと思っています。昔、アプレットの開発で挫折したことがあるせいでちょっとしたトラウマになっていますが、市場的には案件多いですし。

google suggest を JSONP で取得

もう一つ Google ネタ。こちらはたぶん undocumented なものです。

http://suggestqueries.google.com/complete/search?hl=ja&qu=%E9%AB%98%E6%A2%A8&json=t&jsonp=foo

↑こんなリクエストを投げると、JSONPでサジェスト候補を返してくれます。 パラメータの解説は不要ですよね。

Google Ajax Search が RESTful な JSON(P) に対応してる件

Google Operating System のエントリより。

More than one year after Google discontinued the SOAP Search API, it finally got a proper replacement. The AJAX Search API can now be used from any Web application, not just in JavaScript. The other two Google AJAX APIs for feeds and translations were updated for non-AJAX use, as well.

Ajax Search は知ってたんですが、あんまり食指が動かなかったという人も多いはず。こんなのしか作れなかったし。

でも、RESTでクエリを投げると JSONP で結果を返してくれる API が公開されました。サンプルリクエストはこんな感じ↓。

http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=%E9%AB%98%E6%A2%A8&callback=foo&context=bar&rsz=large&start=8

リクエストパラメータはこちらを参照してください。

ただし、制約もあります。

  • 正しい HTTPリファラを送ること。
  • 一度に取得できる件数は最大で8件。また、32件目以降の結果を取得することはできません。

あと、なるべくAPIキーをつけることが推奨されています。ざっと見た感じでは1日に何クエリーまでという制限はなさそうでした。

元ネタページの追記によると、ほぼ2年前から使えるようになってはいたものの、正式に公開されたのは最近になってからのようです。orz

人月計算がプログラマを腐らせる

この業界の用語で「人月」あるいは「人日」という単位があります。システム構築などの見積りをするとき、「3人月で120万円」と言ったりする。これはどういうことかというと「3人のプログラマが協力しあって1ヶ月かかって作るくらいの規模」ということです。

でも、これってよく考えてみれば変でしょう?同じものを1人の腕の立つプログラマなら半月で作ってしまうかもしれない。そうしたら、値段は6分の1でいいということになってしまいます。普通の人が1ヶ月かかって作るものを半月で作る人のほうが当然能力が高いはずなのに、値段は下ってしまうわけです。これではプログラマは腐って当たり前です。

プログラミングというのは言うまでもなく高度に創造的な作業です。センス・知識・確実性が求められ、何人がかりで何日と見積れるような作業ではありません。本来なら、お客様のご要望を聞き、締切りまでの期間を考慮し、「このシステムはざっくり○○万円です」と勇気を持って言えば済む話なんですよね。

とはいいつつも、弊社で見積りを出すときは人月・人日という単位をさりげなく使います(笑)。ひとつには見積りに説得力が生まれるからで、もうひとつの理由は、開発期間を長く取れる可能性があるからです。どうしても短納期で仕上げなければならない仕事を除き、「うーん、これは2人月くらいになりますねぇ」などと、ぼそっとつぶやくと、たいていお客様は納得してくれます。作業する側にしてみれば、1ヶ月かけてやる仕事を2ヶ月取れた方が精神的にも大変楽に進められるわけです。人月・人日は見積りを出すときの特別な言葉と割りきって、腹の中では「このお客様にとっての価値」を見積っています。当然、見積りを出す相手によって値段も違ってくることになりますが、それでいいのです。

「競馬を成り立たせているのは意見の相違である」という言葉がありますが、人によって価値観なんて様々なのです。たかが炭素の立体結晶に数億円の値段がついているではないですか。たまたま生れた国が違うだけで、同じ労働をしても払われる賃金が数倍も違うではないですか。不均衡は常にあり、それが価値と呼ばれています。良いか悪いかはさておき、それが世の中というものと割りきらないと、やっていけません

システムは構想3ヶ月実装は3日であるべし

能力が低いことの言い訳っぽいですが、プログラムやシステムというのは、3日やれば3日分書けるかというとそうではなく、書けないところでつまづくといいアイデアが浮ぶかいい解決案が見つかるまで時間がかかることもあります。できるっちゃできるけど、もっとスマートな方法はないか、と考え始めるともっと時間がかかります。

構想は前からあったものの、実装に手間を取っていたものが、今日ふとしたきっかけで別の非常にスマートな方法があることに気づき、ほぼ8割方を1日で書き上げることができてしまいました。

こういうのが気持いいんですよね〜。「俺、実は頭いいんじゃね?」と3分だけ自己満足に浸れます。でも、その後今まで思いつかなかった自分がいたことに気づき、「俺、実はアホなんじゃね?」と1日鬱になります。(苦笑

モチベーション上げなきゃ!

他人のためにコードを書くのは飽きたので、自分で企画したシステムを自分で作ってるんですが、モチベーションがイマイチ上がりません。すぐ「明日やればいいやー」になってしまいます。集中してやれば1日くらいで終わるんだろうけど。

でも、自分でやると決めたことだし、やるぞ!やるぞ!やるぞ!と三唱して今日のところは終りにします。(ぉぃ

domLib.js と prototype.js は相性が悪い

最近ぼちぼちと Ajax にも手を出しているんですが、Ajax 界ではデファスタと言ってもいいくらいに使われている prototype.js と、このサイトでも使っている DOM Menu内のユーティリティライブラリ domLib.js が 同じ Hash という名前衝突を起こすことを今日知りました…。orz

こんなありがちな名前めぐって衝突するなー!だいたい JavaScript の名前空間管理って無きに等しいじゃろ、とか一人でぼやいてしまいましたよ。とほほ。どっちか折れてくれんかなー。

玄箱で作るアプリケーションサーバ

Webアプリケーションは何もインターネット上に公開しなければならない、とい決まっているわけではありません。社内に Web サーバを立てて、その中で使ってもらってもいいじゃないか、という発想で

を組み合わせてアプリケーションサーバとして売れないか、などと画策しています。

コケにコケまくりながらも、何とか玄箱HGの Debian(Sarge)化に成功。玄箱のいいところは、ファームウェアが既に Linux になってるので、もしDebian化に失敗しても、どうにもこうにも手出しできなくなる、ということはないことです。前に LANDISK のときはシリアルケーブルを取り付けに失敗し、ハード的にお亡くなりになってしまいましたが、玄箱はソフト的になんとかなるので、ぶきっちょ製作所も安心です。

今、PostgreSQL をコンパイルしてますが、さすがに遅いですね。実運用するには上手くインデックス張らないと厳しいかも。

[日曜ハック] FCKEditor 組み込み TinyD

GIJOE さん作の TinyD は静的なページを作るのにとても便利なのですが、組み込まれている WYSIWYG エディタが SPAW のみで、これにはエディタから直接ファイルがアップロードできないなど、やや不便な面があります。

そこで、私が知る限り最も強力なブラウザ内 WYSIWYG HTML エディタ、FCKEditor を組み込んでみました。(詳細 | ダウンロード)

ほぼ半日がかりの Hack でした。

[ja]トラックバックスパム対策[/ja][en]Fight against Trackback spam[/en]

[ja]

コメントスパムは記事IDと同じ数字を入力してもらうというお手軽な方法で対処できていたのですが、トラックバックスパムに対してどう対処するか悩んでいました。今までの全てのスパムは海外(英語)からなので「ひらがなや漢字など、日本語を含まない場合は Reject する」というありがちな案は、今後、外国人の友人がブログを始めないとも限らないので×。

で、探して見つけたのが XOOPS 版 WordPress を公開しているのぶのぶさんの「コメントスパムを撃退したい」という記事やMovable Type 3.2 User Manual: Domain name lookups 記事中の bsb.spamlookup.net, sc.surbl.orgで行っているドメインベースのスパム対策を知りました。

のぶのぶさんのプラグインに手を入れ、

  • コメントだけでなく、トラックバック、Ping にも対応
  • ドメインベースのスパムチェックにも対応

などしてみました。でもまだパフォーマンスに改善の余地ありそうなので、もう少し様子を見てから必ず公開します。お楽しみに!

[/ja]
[en]

I\’ve blocked comment spams with inputting the article id number, but the problem is how I block trackback spams. So far, all of them are from foreign countries which is written in English, so I thought of rejecting spams without any Japanese character in it. But thinking of some of my foreign friends may begin blog, the idea was no good.

Then I found an article \”Want to reject comment spams\” of Nobunobu, who releases XOOPS/Wordpress, and services on bsb.spamlookup.net, sc.surbl.org found in another article \”Movable Type 3.2 User Manual: Domain name lookups\” .

I remaked Nobunobu\’s plugin, so it has the following funcions now:

  • Not only comment spams, but also trackbacks\’ and pings\’ are rejected.
  • Looking up spam domain which are analyzed from URI.

But I hold it from making public because I\’d like to do more performance tuning. I\’ll definitely relase it, so please hang around!
[/en]

Copyright © 2024. Powered by WordPress & Romangie Theme.