header image

携帯対応

QRコード

RING

人気ブログランキング

新着記事

2009/07/03 14:58:58 セキュリティ 2 Comments

ECサイトから65万人の情報漏洩 20人が70時間,不眠不休で対応

直ちにFTPサーバーを停止。中島氏と相談し,Webシステム上のカード情報をバックアップして消去し,サイトでのカード決済を停止した。
(略)
コンテンツ担当の4人が中心となって3万本のプログラムをチェックしていく。夜が明けても作業は終わらない。結局,実際に使われているファイルを3000本にまで絞り込めたのは,作業開始から22時間30分たった同日午後11時だった。

対応が甘いよね。

  • 実際にサーバ上で動いているプログラムの本数がちゃんと管理できていないなら、変なプログラムが1つしかないなんてどうやって保証するの?
  • FTPサーバにログインされた、ってことは全サーバがログインされた可能性がある。
  • aspxって書かれているからWindowsサーバってことになるけど、レジストリや各種設定が改ざんされていないかの確証を取らなければならない。普通はOSから再インストールすべし。
  • スパムの発信元や他所への攻撃に踏み台になっている可能性もある。
  • そういう意味で変なプログラムがサーバで見つかった時点で、サイトは一旦クローズしないといけない。
  • 中途半端に決済だけとめてサービスを継続するのは得策では無い。ウィルスを配布されたりする可能性もゼロではない。
  • ということでF/Wがあったなら、アウトバウンドは全部とめたり、インバウンドも全部とめる。サーバをネットワークから切り離す。
  • たぶんあんまりモジュール化せずにアプリケーション作ったんだろうなー、って想像がつくんだけど、将来への負債をかかえているよね。脆弱性対応をやるのは良いけど、本来的にはコードベースが古いってことで作り直した方が良い。
  • 個人的な経験則としては、やたらとモジュール数が多いっていうのは、似たようなモジュールがコピペで粗製乱造されていて品質が悪いことが多い。
  • ここがどうなのかは分からんけど。

ちなみに今サイトを見てみたが、まだIISのままだな。ってかシグネチャ隠しなよ・・・。404用のページもIIS標準じゃない奴用意しようよ・・・。

HTTP/1.x 200 OK
Content-Length: 271
Content-Type: image/gif
Last-Modified: Thu, 17 Apr 2008 09:47:33 GMT
Accept-Ranges: bytes
Etag: “109d72f70a0c81:688d”
Server: Microsoft-IIS/6.0
Date: Fri, 03 Jul 2009 05:50:09 GMT
Connection: Keep-Alive

2009/07/03 06:31:53 日記 none Comments

7/1(水)14:00から18:00までCakePHPの第三回IRC集会に参加してみた。オフラインの会に比べると、オンラインのIRCは敷居が低い。

話の流れはこちら(第3回 CakePHP IRC集会終了とまとめ)を参照

実は平日の日中にやってもらった方が参加しやすい。実際コーディングとか作業しながら、ながら見でIRCのポップアップを見た。発言数は少なくなるけど、ちゃんと仕事しているように見える!(笑

  • 「Xdebugで全体のカバレージを取得する方法」については振りは出たけど、どうやら明確な答えがなさそう
  • 自動テストについてはカバレージ100%が目的では無い
  • 自動テストはModel>Controller>Viewの優先順位

あたりは、みな同じように思っている、というのが分かった。まぁ想像通りといえばそうだけど。

2009/07/03 06:06:32 日記 none Comments

極道的研修のあらまし「引数と戻り値が分かりません」

留意すべき点
開発期間が短いため、「要件定義」工程は行わなくても構わない
行わない場合、アシスタントが勝手に改修課題を割り振る
開発期間が短いため、「UT工程」はスルーしてもよい
基本的に、クラスごとの差異が出ても構わないので、アシスタントの裁量で難易度を決めてよい
開発期間内に工程が終了しなかった場合はPM役の責任になるので頑張れ
「誰もがJavaのクラスを1つは作れるように割り振ってください」
「これは言語の研修ではないので開発工程を教えてください」
社内標準に完璧に従うため、JSP+Servlet+JDBCかつMVCの厳密なアーキテクチャは壊さないように指導すること
フレームワークなどもってのほかというか、アシスタントである先輩社員もStrutsとSpringがこの世でもっとも優れたフレームワークだと思っている
全員eclipseを唯一無二のツールとして利用、UMLはJUDEで描くこと
悪名高いTomcatプラグイン必須
「warを作ってデプロイなどはさせないでください」←なんで?
インターネットは(害悪なので)使えません

生徒のS君の「興味が持てません」もなかなか萎える(給料貰って研修受けているのに、そりゃねぇだろ)んだけど、これ研修プログラムの方が問題だよね。

  • いっぺんに色々教えすぎ。
  • JAVAと開発プロセスとHTTPとかWeb標準とUMLと・・・。これでは消化不良になること間違いなし
  • UML?この段階の奴に教えてどうする?どうせ覚えないよね
  • JAVAを覚えさせるなら、実際の案件じゃなくて良いから、もっと簡単な奴を徹底的にやった方がいい
  • テスト工程スルーするのか・・・。実際の案件でもスルーされたりしてね。俺は経験あるぞ
  • つうかウォーターフォールって要件定義とテストが重要なんじゃなかったっけ?
  • それらを行わなくて良い、ってのは何を教えるつもりなのか良く分からん
  • インターネット使わせない、って何??調べる能力を増やすのもトレーニングの一環だよね

で個人的にはこうすべきと思っている。

  • 「プログラムを書く」というレベルの研修をもっと長くやる
  •   製造できない奴に品質語る資格は無い
  •   ちゃんと研修担当者はコードレビューして、変な癖が付かないように叩き込む
  •   最初の3年くらいはコード書きまくれ、と思っている
  • プロセスに関する研修はプログラムを書く研修と分離する
  •   開発プロセスに種類があること、メリット・デメリットについても教える
  • プロトコルとかUMLとかの話は現場でOJT&課題図書で
  •   このレベルに到達するまでの所要時間は人によって大幅に異なる。座学で同時にやっても吸収できないので、実戦の際に吸収させる。

ちなみに、大手でも新人研修は適当だな。んでたちが悪いのが、大手だと2年目くらいから協力会社の管理とか、サブリーダーだとかそういうのやらせちゃうこと。
どうやってシステムちゃんと動かすのよ?

今日リリースされたFirefox3.5に早速更新してみた。

とりあえず僕が入れているアドオンは以下のものが未対応と表示された。
ff35_1

アプリケーション: Firefox 3.5 (20090624025744)
OS: WINNT (x86-msvc)

bbs2chreader 0.4.19
(無効, 互換性無し)
Firefox 2.0 – 3.1.*
ColorZilla 2.0.2.1
Firefox 1.5 – 3.5.*
DNS Prefetch 1.1.0
(無効, 互換性無し)
Firefox 1.5 – 3.0.*
Extension List Dumper 1.14.2
Firefox 1.5 – 3.5.*
Hatena Bookmark 1.1.7
Firefox 3.0 – 3.6a1pre
Html Validator 0.8.5.8
Firefox 1.0 – 3.5.*
Live HTTP headers 0.15
Firefox 0.8 – 3.5.*
Pearl Crescent Page Saver Basic 2.1
Firefox 2.0 – 3.5.*
Selenium IDE 1.0b2
(無効, 互換性無し)
Firefox 1.5 – 3.0.*
http://seleniumhq.org/download/にアクセスして最新版の1.0.2をインストールすればOK
SQLite Optimizer 0.2
(無効, 互換性無し)
Firefox 3.0 – 3.1b3pre
Do You PHP はてなにアクセスして、install.rdfを書き換えた野良モジュールを入れれば動作する
TwitterFox 1.8.2
Firefox 3.0 – 3.5.*
Web Developer [日本語版] 1.1.6
(無効, 互換性無し)
Firefox 1.0 – 3.0.*
http://chrispederick.com/work/web-developer/にアクセスして、1.1.8に更新すればOK
XSS Me 0.4.3
Firefox 2.0.0.8 – 3.6a1pre

自動更新に対応していないモジュールに限って、使用頻度が高いというオチであった。
まぁ、とりあえず、デスマーチ中に更新するのはやめておけ。焦るだけだ。

あと、僕のマシンだと速度はあんまり変わらない感じ。FF2からFF3に変わった時の方が性能向上は劇的だった。

2009/06/30 15:37:20 wordpress none Comments

TwitThisは、ブログ等にTwitterに投稿用ボタンをつけるプラグイン。ポップアップでTwitterへの投稿用の画面が表示される。

で、このプラグインだがバグがあって、このままだと、オプション設定でpermalinkを選択すると、トップページ等の一覧ページでコンテンツが表示されなくなる。
ということで、145行目からの関数を以下に差し替えるとちゃんと動作するよ。

function display ($content) {
   
    $display = ((get_option("display_on")) ? get_option("display_on") : "both");
    $is_single = is_single();
    $print = $content.$this->write_script();
   
    switch ($display) {
        case "both":
            return $print;
        break;
        case "permalink":
            if($is_single) {
                return $print;
            } else {
                return $content;
            }
        break;
        case "listings":
            if($is_single == false) {
                return $print;
            } else {
                return $content;
            }
        break;
    }
   
}

4月から開発してきた案件が終わるのでちょっくら振り返りするぞ。

アーキテクチャ

  • CentOS5 (開発はXAMPP)
  • PHP5.1.6
  • CakePHP1.2
  • MySQL5

案件規模

  • コントローラー13本(AppController含む)
  • モデル14本
  • ビュー80本
  • コンポーネント4本
  • PHPのソースで約1万行。テストコードで4000行。開発者は僕だけ。

ツール系

  • XAMPP 開発環境
  • Subversion ソースコード管理、ドキュメント管理に最初から利用。接続にはTortoiseSVNを利用。
  • Trac 課題管理、バグ管理、要件管理に利用
  • A5:SQL Mk-2 データベース関連の作業に利用。
  • Eclipse PHP開発用のIDE。Pleiadesを利用
  • Poedit i18nの言語ファイルの編集用
  • Lingoes 無償の辞書ツール。モジュール名や関数の命名に利用。
  • SimpleTest テスト自動化
  • Xdebug カバレージ測定
  • Cygwin 便利コマンドとして利用。tailとか出来るし。
  • Radish ローカルのSMTPサーバ。Windows環境で開発する時に実際のメールは送らなくてもメールを確認できる。

開発方式とか

  • 完全アジャイルプロジェクト
  • 提案時点でイテレーションの回数を先に決めた。
  • 定額契約モデルで、イテレーションに入らない場合は別途交渉を明示。バーター有りもあわせて明示。
  • 成果物は最初に規定。単体テストケース表とか詳細設計書は作らないことを明示
  • プロジェクト立ち上げ後、定石通り重要機能から構築開始
  • テスト自動化をすすめた結果、仕様変更、仕様追加の対応も容易だった
  • プロジェクト期間中の残業は0時間。週40時間稼動を達成。
  • 余計な事務作業とか割り込みが無いので、Velocityが高かった。
  • bakeコマンドで骨格を自動生成
  • 画面デザインは最終イテレーションで取り込み。
  • 各種メッセージ系はなるべくi18nを利用

課題とか

  • リファクタリングをどこまでやるか、について指針が無いと、時間がある限りリファクタリングしたくなってしまう。
  • 入力→確認→完了という画面遷移はもっと汎用化できそうな気がするが、現状似たようなコードが一杯ある。
  • Ajaxとか使いだすとViewの見通しが悪くなりやすい気がする。やっぱりViewに凝るのは最後の最後がよさそう。そしてViewもリファクタリング対象。
  • i18nをどこまでやるか指針を決める必要がある。
  • CodeSnifferはかけなかったので今後はやる。
  • 継続的統合ツール(phpUnderControl)は未使用。次回は使うつもり。

開発は楽しいねぇ。

2009/06/30 06:39:31 日記 none Comments Tags:

200906
休日も入れて、平均4:59。この三ヶ月は非常に安定している。
早起き記録をつけ始めたのが2008年6月20日だったので今月でちょうど1年が過ぎた。

2009/06/27 06:48:56 PHP none Comments Tags: , ,

前回の話はこちらを参照

前回以降もテストしているんだけど、「メモっとかないと忘れちゃうねー」的な話を以下列挙。
それにしても今回は真面目にテストしているぞ(笑

  • カバレージを測定したかったらテストモジュールの分割方法は、テスト対象モジュール1つにつきテストモジュール1つにするべきだ。
     僕が作っているシステムは一般向け画面と管理者向け画面に分かれていて、管理者画面へのアクセスはadmin routingを使っているのだけれど、こういう場合のテストでもコントローラー単位、モデル単位で分割すべきで、利用シーンで分離すべきではない。但し受け入れテスト等、カバレージではなく業務要件への充足確認が中心になる場合は別だけど。

  • setUp、startTest、startCase等の初期化処理の違いを押さえておくこと。bakeでControllerのテストケースを作るとsetUp()が自動で作成されるが、このメソッドは全テストの直前に毎回呼び出されるので、ここでDBの初期化をしたりすると、やたらと時間がかかるテストが出来上がる。

  • 例えば常にredirectするようなメソッドではViewを用意しないことがあるが、テストの際にredirectを再定義してしまうと、Missing Viewというシステム的なエラーが発生する。これを避けるために空白でもよいのでViewを用意しておくと良い。

  • 続きを読む »

2009/06/26 06:44:06 書評 none Comments

創造はシステムである 「失敗学」から「創造学」へ (角川oneテーマ21)
著者/訳者:中尾 政之
出版社:角川グループパブリッシング( 2009-05-09 )
定価:¥ 740
新書
ISBN-10 : 4047101885
ISBN-13 : 9784047101883

これは面白い!

第一章 創造は要求から
第二章 思考方法はワンパターン
第三章 システムは可視化できる
第四章 真似ができない創造化

まず創造の定義。別に、前人未到の製品や仕掛けを作ることだけが創造では無いのだ、という宣言に凡人である僕は救われる。自分にとって目新しいものを自分の力で成し遂げれば、それが創造だ、と言われれば自分でも「創造」できそうな気になる。
そして「創造」は「何をやりたいのか」という具体的な目的を決めることから始まり、かつ、言葉にするのが重要だ、と述べている点は、以前読んだ「非常識な成功法則」のパターンと一緒である。確かに自分でもやりたいことを言葉にするするようになってから行動の意識付けが変革した気がするので、このやり方は有効なんだろうと思う。目的は定量的にとか、簡単すぎる目標を立てない、とかは前の職場の時から相当意識していたが、ゴールや目的との相関は何か?という点を考えておかないと、「目的を設定することが目的」になってしまったりする。これは注意しないといけないな。

第二章で書かれている「思考方法はワンパターン」はその通りだろう。TRIZというロジックは使えそうなのでこれは別の本をあたってみようかと思った。
そして思考の上下運動。これは会社なんかでも良く味わうのだけど、部下が何を相談しに来ているのか分からないことがある。それは自分の目線からだけ見た課題を昇華せずに話しているからで、本質的な問題が見えてこないから、こっちも質問を繰り返して無駄に時間を使うことになる。

第三章では要求機能の作り方と機能間、組織間の干渉、そこから生まれるコミュニケーションエラーについて書かれているが、これ、アジャイルプロセスでのシステム開発をやっている人にはすごくわかりやすい章になっており、フィーチャーの抽出、選択の仕方、プロジェクトの進め方、ついでにモデルの設計方法までも網羅されている。本書は別にシステム開発の本でないけれど、結局のところモノを作る根本的な考え方は変わらないはずだ、と思い知らされる。

創造ってことばは、人を前向きにするよね!
自分は世の中に何も残せない、って思うのではなくて、どんな小さいことでも「創造」しているのだ、と思えれば毎日幸せかもしれない。

2009/06/25 06:01:21 日記 none Comments

今持ち運んで使っているlenovoのS10eだが、メモリ1Gしか積んでなくて、EclipseとかVMWareとかを使うのは心もとないので増設してみたよ。

買ったメモリはTranscendのJM667QSU-2G。DDR2-667の2G。送料込みで約3000円。
memory1

作業は簡単で、

  • バッテリーとACアダプタを外す
  • 裏蓋の2箇所のネジを外して、蓋を外す
  • メモリが刺さっているので、保護ピンを上に上げてからメモリを抜く
  • 抜いた場所に新しいのを刺す
  • 蓋を閉めてネジ止めして終了

若干裏蓋のツメの掛りがきつくて取り外ししにくいけどそれ以外は難しいことは何もない。

増設後のメモリ状況を表示させたところ。残念ながらマザーボードのスペックの関係で2Gまでしか認識されないけど、これで十分でしょう。
increase_memory_of_s10e

メモリの値段がこれだけ安いといいよね。次はSSDだが、もうチョイ待つことにする。

« 前の記事