アーカイブ

‘Blog’ タグのついている投稿

しょーもないPHPプログラマにありがちな40の兆候

ザラッと訳してみる
元々がちょっと変な所は手を入れてます。なんだか良く判らんのは原文残してます。添削してつかあさい。

40 signs you really are a lousy PHP programmer

  1. phpDoc 等でコードにコメントを入れない
  2. Zend Studio や Eclipse PDT の様な IDE の恩恵に目を向けない
  3. Subversion 等のバージョン管理ツールを使おうとしない
  4. プロジェクトにて、コーディング・命名規約や共通の規約を設けない
  5. 一貫性の有る手順を設けない
  6. 入力値や SQL クエリのエスケープ、検証をしない
  7. コードを書く前にアプリケーション全体の計画をしない
  8. テスト駆動開発を行わない
  9. error_reporting を on にしないで開発、テストをする
  10. デバッガの恩恵に目を向けない
  11. リファクタリングをしない
  12. MVC の様にレイヤーの切り分けを維持しようとしない
  13. これらの略語の意味を知らない:KISS, DRY, MVC, OOP, REST
  14. 関数やクラスがデータを返さずに、直接 print や echo をする
  15. ユニットテストや一般的なテスティングの利点に目を向けた事が無い
  16. データや文字列やオブジェクトではなく、HTML を return する
  17. メッセージや設定パラメータをハードコードする
  18. SQL クエリの最適化をしない
  19. __autoload 関数を使わない
  20. エラーをスマートに扱わない(don’t allow intelligent error handling)
  21. $_POST を使わずに何でも $_GET にしてしまう
  22. 正規表現をどう使えばいいか知らない
  23. SQL インジェクションやクロスサイトスクリプティングという言葉を聞いた事が無い
  24. 設定をシンプルにしない → クラスのコンストラクタでパラメータを受けたり、セッタ・ゲッタを呼び出したり、実行時に定義する事が出来る
  25. オブジェクト指向プログラミングの利点と制限を理解していない
  26. OOP の誤用。どんなに小さな物でも OOP で書いてしまう。
  27. 再利用出来るソフトウェアは OOP じゃないと駄目だ、と思っている
  28. 理にかなったデフォルト設定をしない(don’t choose intelligent defaults)
  29. 設定ファイルがひとつじゃない
  30. ファイルの中身が見えるようにせず、拡張子を .php の替わりに .inc にする(don’t want the file contents to be seen, but give it a .inc extension instead of .php)
  31. データベース抽象レイヤを使わない
  32. DRY 原則を守らない → コピペや重複を避けた方がいい
  33. 関数 / クラス / メソッドの責務を一つに絞らず、相互作用するように作らない
  34. abstract/interface クラスや、ポリモーフィズム、アクセス修飾子等の OOP の利点を得ようとしていない
  35. デザインパターンを使ってアプリケーション設計の最適化をしない
  36. 複数のファイルやディレクトリが必要なアプリケーションで、ベースディレクトリの定義をしない
  37. グローバルネームスペースを汚染する → ライブラリに共通の文字列をプレフィックスとして付ける方法がある
  38. DB のテーブルにプレフィックスをつけさせない
  39. 別々のテンプレートエンジンを使う
  40. ウェブ開発のコンセプトに長けており、コードのキレイな PHP フレームワークに注目していない

PHP に直接関係無い項目もありますね。
素直に納得出来る項目もあれば、場面ってのも。
場面ってのはそれが有効に作用するケースもあるだろう事を知っていないといかんのですけど。

タグ: ,

CoD4 のオレオレカスタムクラス

CoD4 では装備セッティングを「カスタムクラス」として 5 つ作成できます。
で、俺チャンが使っているセッティングを公開してみたいと思った次第。

Maps は使用頻度の高さ程度。実際は場面。
最近は Headquarters しかやってないんですけど Team Deathmatch, Domination でも同じセッティングでやってます。

これ書いてる時点で Lv.34 (Prestige Lv.1) なので P90 とか Frag x 3 とかナシ。

中距離 3 発フィニッシュ系

Assult
M16A4 (RedDotSight)
Perk1
RPG x 2
Perk2
Stopping Power
Perk3
Martyrdom
Maps
Ambush, Bog, Crossfire, Crush, Downpour, Overgrown, Pipeline, Showdown, Strike

beta 時はフルオートだった M16 ですが、あまりにも強過ぎたせいか 3 点バーストに変更。
それでも強い!バランスが良過ぎる。Stopping Power 付きだと上半身に 3 発ヒットでおk。ただ 3 点バースト故、近距離 2v1 だと撃ち負ける事が多いので Martyrdom (aka ウンコ) で巻き添え狙い。

近距離〜中距離タカタカ系

SMG
MP5 (RedDotSight)
Perk1
RPG x 2
Perk2
Stopping Power
Perk3
Martyrdom
Maps
Backlot, Countdown, District, Shipment, Vacant, WetWork

銃声は一番好き。
beta 時も含めてちゃんと使った事が無かった。Prestige 入りしてから使ってみたらビックリ。
レートこそ低いんですが、その分リコイルも少ないし何より集弾率が高い!Stopping Power で威力増すれば全然使えます。一番ビックリなのが中距離戦も結構行けちゃう点。

裏取り専用ステルス系

SMG
MP5 (Silencer)
Perk1
Bandlier
Perk2
UAV Jammer
Perk3
Extreme Condition
Maps
Bog, Crossfire, Overgrown

GPS 映らない Perk 設定で敵の裏取り。Bandlier で所持弾数を増やしておかないと困った事になりがちでした。Lv.40 以降ならば P90 にサイレンサーで Perk3 は Steady Aim に。

裏取りはその名の通り敵のバックエンドにダッシュ!捲り一発!で Kill していくんですが、「裏取りするヤツがいる」事にイラっとさせてプレイを粗くさせる目的もあります。いわゆる『裏の裏』になるケースもあるのでハマると気持ちいい。

裏取り 5 Kill -> AirStrike -> “Friendly Helicopter Inbound” がキマると脳汁ドバドバ出ます。

アンチヘリ専用

LMG
RPD (Grip)
Perk1
-
Perk2
Stopping Power
Perk3
Deep Impact
Maps
ヘリが来たら

ヘリが来たら使います。正確にはヘリに殺されたら。
Grip 付けると化ける。かなりリコイルが抑えられます。
アイアンサイトでも十分狙いやすいので普段使いも出来るっちゃ出来るんですが、あまり使わない。一時 Shipment で使ってたんですが MP5 のが扱い易い事が判ってからアンチヘリ専用に。

近接もたまにあるけど基本は中距離系

Assult
M4 (RedDotSight)
Perk1
RPG x 2
Perk2
Stopping Power
Perk3
Steady Aim
Maps
Crush, Downpour, Pipeline

ゲームスタート時に選択する事はありませんが、相手が近距離に持ち込むタイプの時はこっちに切り替えます。フルオートなので遠目の 2v1 でもそこそこいける。気がする。Stopping Power より Double Tap のがいいのではと思う事もありますが、そもそもあまり使わないので研究機会が無い。

Lv.41 以降は RPG が Frag x 3 になってます。
あと Shipment の時だけ Perk2 を SonicBoom にするのもアリ。

それにしても最近はヘリがソッコーで撃墜されてしまう。
6 Kill で止めて(つまり死んで)リスポン後に AirStrike → 6 Kill 止め、のループのが良いのかなー。特に Shipment とか。

【補足】
実はこの草稿を用意した時の話で、今はちょうど一周回った Lv.35 (Prestige Lv.2) です。クラスのセットアップはちょっと違います(AK-74 / AK-74u)が「同じ装備使っててもつまらん」という理由なので上記のクラスが自分的にはベーシックパターンです。

コール オブ デューティ4 モダン・ウォーフェア
アクティビジョン (2007/12/27)売り上げランキング: 66
ヘッドセットEX
ヘッドセットEX
posted with amazlet on 08.02.04
ホリ (2007/12/20)売り上げランキング: 965
タグ: , ,

livedoor Reader の使い方を間違っていた

livedoor Reader と言えば視点移動の少ない UI のおかけで楽にフィード閲覧が出来る、ピン機能、Greasemonkey でイジりまわせる等々。

ただどうもここ最近使っている俺のテンポが悪い。ピンがすぐ埋まってしまう。
登録フィード数は5000件ちょいくらい。

フローはこんな感じ

1. ピンを立てる
2. 記事を読みにいく
3. 内容次第では Yojimbo にブックマークあるいはアーカイブ

ピンは100件までなので溜まりきったら読んで空きを確保するわけですが、この作業が頻発する。
そのせいか「ピンを立ててもいいんだが空きが少ないから止めておこう」という非常に宜しくない事を考えるようになってしまった。

ピンを同時に別の何か、SBM 的なモノに投げるようなグリモンでも書こう。でもわざわざそんなことせんでも「一発クリップ」があるなー、という段階でピンの使い方を間違っていた事にようやく気付いた。重要度の高い(であろう)記事は一発クリップ、ニュースや中身の薄そうな記事はピン、という使い方が良いんじゃないか。

一昨日くらいからこのスタイルにしてみたんですが、これが結構いい具合。ピンの溜まるスピードがかなり落ちる。ピンに立ててある記事は比較的どうでもいいものがほとんどなので開いて斜め読みして閉じていく事で LDR にすぐ戻れる。意外と良ければ Yojimbo に投げる。

livedoor Clip は LDRize でバツバツ読めるし、自分の clip したフィードを Vienna に食わせておくようにもしている。タブで元記事表示が出来るので悪くない。Vienna 単体で RSS リーダーとして使うには複数台環境で厄介になるが、フィード1件ならどうでもいい。Vienna から Yojimbo にブックマークやアーカイブする AppleScript を書けばより幸せになれる。

購読数が7000や8000になるとまた読み方が変わってくるとは思いますが、今の所はこれで機能しそうです。

タグ: ,

競艇場のお抱え実況アナが面白すぎる

競艇場にはお抱えのアナウンサーがいて、彼らがレースの実況をするそうだ。
なかには独特の節回しでファンを獲得している様子。

YouTube に数点ありました。

平和島競艇・ベイ吉こと松永良一アナ

「まさに」「XXXとお伝えしておきます」「捲りぅいっっぱつ!」「XXと呼んで頂けたらと思います」

テキトーなニックネーミングと耳に残るフレージングが素敵すぎる。
「お伝えしておきます」はちょっと使いたくなる。

蒲郡競艇場の名物アナ、高橋貴隆氏の実況ハイライト2007Ver.

すっごいツボ。
通常時と気合いの入った擬音表現のギャップがヤバい。

お二方とも普段からこのスタイルでは無くて、大きいレースの時だけらしい。

おまけ。ギャオン。

飯塚オート実況(・∀・)ギャオ

本年も宜しくおたのもうします。

タグ:

RSpec本が出る Part.2 : Pragmatic Bookshelf から

2007 年 12 月 21 日 コメントはありません

ここまでの流れ

RSpec 本を発見する

秒殺 1Click 予約

エントリ書く

何故かはてブされている

「なんだこの階段コメントは?」

るびまの RubyConf2007 レポートを読む

Pragmatic Bookshelf から出る事を知る

オウフww大丈夫ww大丈夫ですww ← イマココ

「月初に Wii 買ったんですよ。で、ヌンチャク入ってないもんだと思って一緒に別個に買ったんですわ。そしたらバンドルされてましてね。イヤー、参った参った」リターンズ

爆速で読めませんし、懐も痛くはあるんですが買ってみることにしますよー。
Pragmatic Bookshelf の方はいつか誰かに借ります。

せっかくだから俺はこn(ry

タグ:

RSpec本が出る : Foundations of RSpec

2007 年 12 月 18 日 コメントはありません

アツすぎる。秒殺で 1Click 完了。
全然中身不明だけど 1.1.0 対応だろうか。

いくらなんでも攻めすぎだ、とも思うけどタイミング的には悪くないのか?
テスティングライブラリ1本でガッツリ本を出せるだけの勢いがあるっちゅー事だもんね。

逆に書籍が出る事でファッション化を進めちゃうケースもあるんだろうけど、RSpec は大丈夫。盤石になると思います。

Foundations of Rspec: Behavior-driven Development With Ruby and Rails (Foundations)
Chad Humphries Ken Barker Apress (2008/02/11)売り上げランキング: 16880
タグ: ,

S2Base.PHP5-2.0.0RC2 出てます

2007 年 12 月 17 日 コメントはありません

でますた。
http://s2base.php5.sandbox.seasar.org/

主な変更点
・goya コマンドを service & dao に変更
・with Symfony の追加
・with Zf に functional test を追加
・Symfony のプラグインとしてインストールする sfS2BasePlugin を新規追加

Zf の functional test はもうちょいどうにかしたいと思いつつも、今のところ大して不便もしてない事実。

mock/stub のセットアップがちょっと面倒なくらいか。
あれはなんとかしたい。

フィードバックお待ちしてます。

タグ: ,

STUDIOVOICE Blog の RSS フィード

2007 年 12 月 15 日 コメントはありません

知らないうちに STUDIOVOICE の Creator’s Blog で稲葉敦志氏がブログを書いていた。
如何せん総合フィードも OPML も存在しないし、個別フィードも permalink 踏むまでわからなかった。

とりあえず今日現在の一覧。

http://www.studiovoice.jp/blog/aoki_katsunori/rss.xml
http://www.studiovoice.jp/blog/akita_michio/rss.xml
http://www.studiovoice.jp/blog/inaba_atsushi/rss.xml
http://www.studiovoice.jp/blog/kato_masashi/rss.xml
http://www.studiovoice.jp/blog/sato_madoka/rss.xml
http://www.studiovoice.jp/blog/suzukike/rss.xml
http://www.studiovoice.jp/blog/nakamura_hiroshi/rss.xml
http://www.studiovoice.jp/blog/nagayama_yuko/rss.xml
http://www.studiovoice.jp/blog/naya_arata/rss.xml
http://www.studiovoice.jp/blog/yamanaka_yuichiro/rss.xml
http://www.studiovoice.jp/blog/svo/rss.xml

これを上から順に RSS リーダーにツッコんでもいいんだが、残念な事にどなたかが新たにブログを書き始めた時のフォローが遅れる。やはり combined feed があったほうが良い。

というわけで Pragger の出番。
Plugin でワッショイさせる。

■ studiovoice_blogs_combined.rb

require "rubygems"
require "scrapi"

require 'rss/1.0'
require 'rss/2.0'
require 'rss/maker'

def studiovoice_blogs_combined(config, data)
  feeds = []
  blog_list.each do |blog|
    feed = RSS::Parser.parse(
      "http://www.studiovoice.jp/blog/#{blog.ref}rss.xml"
    )
    feed.items.map {|item| item.author = "#{blog.title}(#{blog.name})"}
    feeds << feed
  end
  feeds.select {|f| f}.inject([]) {|acc,f| acc + f.items }
end

def blog_list
  blog_elems = Scraper.define do
    process "a.list", :ref => "@href"
    process "img", :name => "@alt"
    process "font.name1", :title => :text
    result :ref, :name, :title
  end

  Scraper.define do
    process "li", "list[]" => blog_elems
    result :list
  end.scrape(
    open('http://www.studiovoice.jp/blog/').read,
    :parser_options => {:char_encoding => 'utf8'}
  )
end

こんなんで統合フィードが出来てしまうので、日付でソートや Gmail に送信などする。

livedoor Reader 等に刺すなら、このサーバーで吐いてるヤツをそのまま使った方が楽だと思います。日付ソート済み。

■ STUDIOVOICE BLOG Combined Feed
http://thug4dev.com/rss/studiovoice.rss

タグ: ,

Xbox で遊んでいるタイトルを Twitter に流すアカウント

2007 年 12 月 12 日 コメントはありません

http://twitter.com/xboxstatus

【使い方】
1. Follow する(すぐに Follow される)
2. DM でゲーマータグを送信

こんだけです。
後は定期的にステータスを見て、オンラインになったり(ダッシュボードは除く)、違うゲームを始めたりすると Twitter にこんな感じで投げます。

日本語のタイトルでも通るはず。
試してないけど。

【追記】
日本語タイトルも通りました。有難う御座います。
ただ US でも発売されているタイトルは US での名前を優先する風。
ビューティフル塊魂は Beautiful Katamari になる。
個人的にはなんら問題を感じませんが、「日本語タイトルで表示しないとステルス暗殺する」みたいな事を言われたら考えます。

なんかあったらテレパシーで教えてつかあさい。

以下、ちょっとだけ技術風味の話。 “Xbox で遊んでいるタイトルを Twitter に流すアカウント” の続きを読む…

タグ: , ,

iTunes で MixCD のトラック管理を簡便にする見事なアイディア

2007 年 12 月 11 日 コメントはありません

仰々しくソレっぽいタイトルを付けてみましたが、大技を使ってるとかじゃないです。
でもすっごい感動した!のでちょっと紹介させて下さい。
もしかすると有名な手法なのかもしれないけど。

年末なんで DJ HIROKI が Best of 2007 の MixCD を発売したわけですが、2 枚合わせて 120 曲!
で、これをそのまま iTunes でインポートしちゃうと大変な事になってしまうのは想像に易い。そもそも MixCD のトラックをバラして聴くのもおかしいので、大体は「CD トラックを統合」オプションを使って 1 曲扱いにしてインポートしております。

ただこれをやっちゃうと「35:13 で掛かってるトラック名が知りたい」という時にちょっと不便する。

どうしたものかと思っていたんですが、見事なアイディアを教えてもらいました。

「歌詞にトラックリストを入れておく」

これだけ。
その発想はなかったわ。

確かにほぼフリースペースとして使える歌詞枠であれば、かなりのトラックリストでも突っ込んでおける。ベタ付きで見る事も滅多に無いので、気になった時に使うだけであればそんなに面倒でも無い。

歌詞表示対応の iPod だと今聴いてるトラック名を簡単に調べられるそうですよ。
俺は普段使いが iPod Shuffle なんでわからんですけど。

タグ: ,

Analytics Plugin made by VLC Media Player