2009年7月14日火曜日

Velocity

Velocityを使ってるライブラリでSingletonモデルを利用されると困る。
というかひとしきりハマる。VelocityEngineをDIで作って、
使う場所ではオブジェクトとして受け渡すというのが正解なのかなあ。

2009年7月8日水曜日

うむ

深夜仕事をしてる人はたいてい煮詰まってるのであまり訪ねるのはよしておこうと思いました。

2009年7月7日火曜日

プログラムが書けるということ

  • 全くプログラムを知らない人がプログラムを書けるようになるにはどうしたらいいかというのを真剣に考える必要がある。
  • 技術者はいつだって不足だ。つか、ここ二年ばかり新人さんづいている。
  • まず前提としてぼくは全然凡人だしなんか新しいものを独自に作ったりとか独自のすばらしいデザインで創作したりとか、根気よくひとつことを続けてなんてことはできない。
  • それは謙遜でなくそう思う。WEBを見ればすばらしく書ける人なんていくらもいるし。あーおれは根性が足らんのだなと常々思わされる。
  • ただまあ仕事を続けてる上ではお金になったものもいくつかあるしいわゆる書ける人ではある。
  • 自分を振り返ると、中学生のころは全くプログラムとか書けなかった。親に高いパソコンを買わせて実際親不孝者を道でいっていた。あの当時だからパソコンなんて珍しい。まあ素地としてマイコン時代に触っていたというのはパソコンに対する抵抗をなくすためによかったかもしれないが。そんなのは正直誤差程度の話だろう。
  • 大卒してパソコン買った契機に世の中に言うプログラミングというやつを少しよこしまな思いもあり多少いじったが。ほとんど全然身に付かなかった。衒学嗜好かK&Rなんて読んでた。いわゆる志向性というものはあっが、まったく全然身にはついていなかったし。仲間を探すのもヘタで人付き合いなんてのもよろしくないほうなので、しばらくして断念して、インターネットをさわってあとはやっぱりゲーム機みたいになっていたように思う。
  • そのころ、あの時期の景気と人あぶれから好きな仕事になんて当然つけず、まあそもそもやりたい仕事に適正もあったが今となっては謎なのだが。企業のインフラやERPの構築管理をする仕事についた。
  • 実際いじるような環境になって。そんな自分でも人よりはコンピューターに詳しいのだなということに気づくことになる。そこはホスト機からの流れをくんでるような古いSIerで、まあ詳しい人がゴロゴロいそうなもんだが。
  • 時期的に丁度Windowsが普及しだしてクラサバの環境があちこちに作られだした時期IT化がまわりはじめた時期というのもあるかもしれない。
  • 最初は交通費清算システムのようななものをLotus Domino、Lotus Notesで作成した。ペーパーレス化の一環というやつ。他にはインターネットを調べたりしながら、企業内のメールとかインターネットの利用規則のようなもの、つまりITリテラシの基準を作ったりとか。いま思えば、大卒数年の人間がそんなの作ってよいものなのかしらとも思うが。面倒だし他によく知る人間もいないんだから仕方ない。
  • そんななか、社内システムとして構築したもののひとつをお客が気に入り、なんか客先に出すことになって事業化しようというような話になる。そのころにはLotus NotesでWin32APIを呼び出してとかそんな凝ったこともできるようになっていた。
  • このあたりの謎の技術向上は、作るものがあったということと、あとはインターネットさまさまで、まあ根気よく調べればたくさん情報は当時もあったのである。ぜんぜんオブジェクト指向もなんもわかりませんし、まあ興味はあるが今思えばひどいコードを書いてたように思うが誰も教えてくれはしないんだから仕方がない。でそんな状況で作ったものを客先に組み込むなんていろいろまずすぎる。
  • それに前して後してかはよく覚えてないが、このあたりで真剣にC言語の勉強をしたように思う。まず目に付く本はかたっぱしから買って積んだ。積んだだけでは勉強にならなかった。このように追い込まれている状況では形だけでは何にもならないと悟った。
  • 何がきっかけかは思い至らないが、というかその本の序章にはそう書いてあるのを、とにかくまじめにやってみようと思い至ったのか。独習Cという本。その本の一章から200本近い、短いソースコードを全て写経して、コンパイルして実行。ということを一ヶ月ちかくに渡り行った。独習C++もあったがそれは半分もいかず諦めた。
  • それで別にプログラムができるようになったわけではなく、正直ポインタとかちんぷんかんぷんで、いろいろひきづることになったが、まあなんとなく自分でプログラムを書けるようになったのだと思う。
  • そのあとはまあ知らないなりに無理無理いろいろ書いて、そのなんかわからない理由で客先に納入した製品も、正式にプロダクトとなり、悪夢の社内ベンチャーと化し、おれは増長して、精神をやんだりしたのです。
  • それはさておいて、翻って見ると。プログラムの仕方は基本的に誰も教えてくれはしないし、作ったものをいじるのではなく、イチから作る技能を身につけようと思うと凡人レベルでは写経による記憶へのスリコミが必要なくらいには大変な話なのだ。というか分かる人には、そこにそう書いてあるじゃないレベルの話で、それをイチイチ説明することはとても面倒くさくてできないし、説明される方も説明されてるうちに面倒でなげだしてしまう。
  • IT業界の人間は多いのだけど、プログラムをいちから設計して作れる人間はあまりいない。プログラム以外の知識まあつまり業務だとか楽しいことをそこにさらに積み上げるというのは加えて難しい。ある意味そんな状態だからおれなんかにも仕事はあるんだが、でもその流れで業界が流れてきて、一時期アウトソーシングの流れとかもあったりして、この業界自体がいやーな方向に向かってるなあというのは常々感じる。というか昔からエセ技術者の頭をカポカポ叩いて回りたい欲があるんだが。手が疲れるし外聞がわるいし。人に言わせると俺だけの主観のようなのでやらない。
  • コンサルめいた要件でプログラムを見せてもらうたび、ひどいなあという感想をもつのがたいていで企業がプロダクトとして出してるものより、オープンソースのソフトウェアのが数倍マシなのである。
  • ぶっちゃけ、子供の玩具の方が安全もふまえてきっちり設計されている。建築とか機械産業に比較なんて申し訳なさすぎる。
  • 高卒の何も知らないような子を一度下につけたことがあるが簡単にコンピューターの基礎を把握したら、全然他の社員より上手にコンピューターの操作ができるようになったし、少し気になっていたあの子と結婚して幸せな家庭をきづいてるんじゃねえぞ馬鹿やろう。みたいな。本人の情熱もあるが効率のよいやり方をおぼえればえてして仕事なんてそんなもんなんだろう。
  • まあそんなこんなで新しく覚える人には下地をしっかり作ってもらいたいものだと。知識の下地が出来てれば、キャリアを踏まえて正直なところ、あなたは他の80%の技術者風の人たちには負けない。きちんとしたプログラムは上の方の10%くらいで行われている。プログラムを続けるなら勉強しつづけて上の方の10%くらいに常にいることが大切だと思う。
  • 80%にうずもれれば、そこにあるのは、「どうせオレなんて」という呪いの言葉だ。「オレはプログラムなんてできなくても」とかまあいろいろバリエーションはある。まじめにコーディングしてるほうもそんな言、ある意味たかがプログラムごときで聞きたくないのでよしていただきたい。
  • あと、若いうちだけの呪文だと思うが、自分にはそれしかない、と思いなさい。親に助けてもらうのは癪だろうし、まあそのうちあなたより先にお迎えがくるだろうし、あなたは仕事をしないと生きていけないのだ。幸い職場にいることで機会はあたえられているのだから、それをしっかり自分のものにすれば生きていけるのだ。
  • 総論すると方向を間違えずに努力しましょうというそんな話。万能AIなんて作られることはないし、丸投げのアウトソーシングの有用性は70年代にIBMの調査ですでに否定されている。ワインバーグの著書でも一読するといい。下地のある優秀なプログラマの需要はなくならない。

2009年6月25日木曜日

SAStrutsのバリデーター

  • WEBアプリにてバリデーションは面倒なので、こうしたアノテーションは実に、ありがたい
  • だがいろいろありすぎて困る、Hibernateにもバリデータがあったがあれは、どう考えても領分が違うだろうなあ
  • Springではバリデータクラスにバリバリ書く派
  • でいくつかのフォームで使ったあと、いわゆるウィザード形式のフォームに適用しようとして積んだ。
  • セッションフォーム、A、B、Cの画面全てで検証したい場合、Aに検証をかけてしまうと、B、Cには入力されてない項目があるのでNG。
  • こういうケースって多いと思うんだけどなあと思いつつvalidationを使って関数上でちまちまカートを作ったのが先々週くらい。
  • でユーザー登録を作り出して、うーん、またあれをやるのかあと面倒な気持ちになっている。
  • フォームということで考えた場合小分けにするのも手だが。それはそれで試してないができなさそうな。
  • あーなるほど'target'というのを使えばいいのか。わかったんだぜ!
  • というわけでこしょこしょ。
  • @Required(target="goHoge")
  • @MinLingth(minlength="3",target="goHoge")
  • @MaxLingth(maxlength="3",target="goHoge")
  • 全て…書けと?
  • 多少めんどうだが、まあこんなことに関数をひとつひとつ書くよりはよほどましかー
  • あと、結構重要なのでなんか、もっとマニュアルの目立つ場所にこうさ。

2009年6月18日木曜日

携帯電話用 : Flashの画像差し替え、文字差し替え

最近お客様さきでいろいろ忙しかったので
しばらく放置してたFlashの画像差し替えに手を加えた。
PHPとかRubyな人たちがswfmillとかでやってるあれですな。

DBから画像を読み込むので画像がキャッシュにはいるときは処理に1秒くらいかかるものの
2枚の(240x320)の画像差し替えで、
応答速度を16ms~40msまでに短縮することに成功した。
液晶の反応速度程度の速さ。
1.4Ghz 2GBメモリの並以下のノートでの性能。
きっちり901用にJPEGの加工とかも行っている。
画像はエミュレーターを901基準にして差し替えを確認したもの。
(i-modeシミュレーターでは
シミュレーションモードを落とすと表示されるFlash Liteのバージョンもかわります)

すでにFlexがあるから基本携帯の分野くらいでしか使い道はないんだろうが、
この速度ならFlexでシステム組むのはちょっと面倒という向きにもアピールできますね。
単純な仕組みだから処理量が少なければFlexより速く動くだろうし。

そして評判のswfmillの記事をいろいろ見たが、
なぜわざわざ重くて当然そうなものを苦労して使うんだろうなという感想。
PHPとかRubyでSWFパーサ作った方がいろいろ速いんじゃないでしょうか。

2009年3月23日月曜日

Chaos;Head Noahプレイ

  • 連休の3/22-3/23で一気に一周目クリア。エンディングまで12時間くらい。
  • 360でノベルゲーをプレイするのは初めてだ。
  • 七海はよい妹
  • CGIチャットのログはローカルに保存されてないと思います。まあ見られるだろうが。
  • 超能力でCGIチャットのログを瞬時に書き換えるとか超能力の無駄つかいだよな
  • それを書き換えられたと真犯人が把握しているのは、説明があわないというか、それだったらシェルスクリプトで書きかえた方がマシ。
  • 大切なデータのバックアップは取りましょう
  • 磁気メディア全滅なのによく再インストールできたな。その前によくハードウェアのレベルで部品すっとばなかったな。ネットワークによくすぐつなげられたな。とかいろいろ疑問が。
  • そういった不整合はあれだ、妄想だからーの一言で片付ければいいわけだな
  • システム周りは不満はないがキー反応が悪かったりとか、固まったりとか、二度ほどフリーズしたりとか、最適化されてない感じはプンプン。
  • このあたりの品質は低予算であろうゲーを買うにあたり妥協するしかない。
  • 絵は好みだが、背景は写真そのままとかなんだろうPoserでポーズつけた人形が並べられてるのかなあって感じの画像とか手抜きが。こういうモノの品質を安価に向上させる手法は確立されるべきですよね。と手抜き背景を見るたびに思う。今は3D箱庭とかもつくれるのだし。システム作れば使いまわし利くのだし。
  • 攻略サイトでは50時間程度であるとのこと。二周目をプレイすると結構視点を切り替えた情報が追加されている感。良いニトロプラス。
  • アニメ化されてるーとか、元はPCの一般ノベル、マルチメディア展開、だとかそんな情報一切仕入れずプレイしたのだった
  • 某ネットコミュニティのスラングが出てくる、というか、主人公の語り口になってるのはまあ仕方ない。認める認めないは個人の主観にすぎず中庸の観点をとれるか。一部の人にとっては鼻につくな。
  • "Hello, World."と、Chaos;Headのシナリオは共通点がけっこうあったと思うのですよ
  • 主軸が社会的陰謀論(グローバルイルミネーションとNoah2)、主人公の立ち位置、成長物語である件とか、いちいち書き連ねるべきか。お話の構造とか違うけど要素的にかぶる。
  • ラスボスは確かにヤバイもののような気がするのだがヤバさが一周目だと見えんね。この後のシナリオでヤバさを明示してくれるんだろうか。
  • この設定ならネットゲーを伏線にしてですね、というのもありだと思いましたが、まあ最初からそんな風な話ではないな
  • ペルソナ4と同じですか、犯人はヤスですか
  • 小者としてでてくる悪者が絶対悪すぎて魅力にややかけるかも
  • こういうお話好きなので楽しめましたよ。純粋に。難癖つけてるのもマイナスではなくまあ楽しんで難癖つけてるのです。
  • 18禁とかの観点では普通に一周した分にはさほど。小包は類型が多すぎて陳腐。
  • 売りの猟奇事件の対象になるのもシナリオ上主人公に無関係の他人に限定されるので読者を安全地帯に置いてるよな感がありますね。
  • 殺人現場の場面の画像見ても、猟奇殺人云々というのはちっとも、このゲームの目玉ではないのだろうなという感じ。猟奇殺人云々といえばブラッドピット主演のSEVENって1995年か。もう遠い話になったな。
  • もっと情け容赦なくていいんじゃないかと思いましたが。やりすぎると売りモノにならんのだろうな。

2009年3月17日火曜日

java : swfの中のjpegを解析

swfを動的に書き換えるためにごにょごにょ

http://pwiki.awm.jp/~yoya/?Flash/JPEG

DefineBitsJPEG,DefineBitsJPEG2or3で二択があるが

JPEGTablesを使う(DQT,DHTセグメント)
共用というのは多分Flash上で普通の画像ファイル(クリップボードなど含む)
として追加したが圧縮情報を共用するよーということなんかな。
とりあえず普通に画像置き換えする分には該当する
レコードは処理しないか、JPEG直書きに置き換えるとか考えないといけない。

DefineBit2JPEG2のJPEG完取り込みパターンはなぜこんな仕様かー。