2012年5月21日月曜日

色んな人がいるんだねー

studygiftについて巷で話題になりましたね。
こういう「可哀想だから支援しちゃう」的な空気と「偽善者乙www」って空気はすげーなと。
俺的には炎上の話を見ても大変だなぁと他人事なんだけどこんなブログ をみて、たまには柄にもなく自分の本音でも書いてみようかなと思った次第です。
(決して仕事の大きな波が終わって暇なわけじゃないんだからねっ)


俺のステータス。

○ 親父は小学校入る前に白血病で他界
事業をしていた&昔は白血病は保険対象外だったらしく大量の借金が残ったらしい

○ 小学校の同級生が14人(これでも超多い学年だった)で母校はすでに廃校になったくらい超ど田舎出身

○ 母親は中2時に乳がん発覚→高校卒業して2ヶ月後に他界

こんな環境なので世の中の人が「お金が無くて勉強できません」って言うレベルにいたとは思う。
でも姉は大学行って看護師になってるし、俺の場合はお金(むしろ格ゲーのせい)がなくて大学いけなかったわけじゃない。
もっと言えば今はプログラマーとして色んな勉強会とか参加してるし、学歴は高卒のままだけど家族(嫁と娘二人)を養えてる。
みんな知ってることだけど学歴なんて自分次第で欲しければなんとでもなると思うし、逆に生きる上で無いより合ったほうがいいけどそれほど必要なものでもない。
だからそんなことよりも

人生は思ってるよりも短いんだから楽しく生きた方がいい

これに限るんじゃないかなと。
他人を支援することで幸せを得たいならすればいいし、 自分が楽しく生きるためのチャンスをあるなら活かせばいいし。
ただ「環境を理由に諦める」若い人をよく見かけるけど環境は自分で選べるし変えれると思うので(少なくとも俺は選べてきたと思う)それは諦める前によくよく調べて見るのがいいんじゃないかなと思います。

ということで何が言いたいかと申しますと俺のほしいものリストはここに置いときますね ←

2012年5月14日月曜日

オープンセミナー2012@岡山

すっかり更新の滞りがちなブログですが大きなイベントに参加してきましたので更新!!

この5/12に運営スタッフの一員としてオープンセミナー2012@岡山に参加してきました。
イベントの内容はまとめを見て下さい。
僕はここではイベントの内容については特に何も書かないことにします。
それと運営スタッフとしてはWEBサイト制作と当日の雑用をさせていただきました。
本当に色んなことを学びました。
来年は是非とも若い人たちを巻き込んで大きな渦にしていければいいなと思ってます。
興味があるかたは是非運営スタッフに名乗りを上げてください!!

とこれだけで終わるのも寂しいので当日の懇親会のLTの資料と最高の写真を載せときます。
この写真にイベントの雰囲気が詰まってますねっ!

残念が怖くてLTが出来るか!

titleのtypoは仕様です!!
あと残念とdisられたAタグのところとかそのままです。
適当に文字clickしてたら次があったりします。
LTの技術面に興味がある方は今回はこちらを使いましたがので参考までに。


[JS]スライドを縦横斜めのダイナミックなスクロールで表示するスクリプト -Ascensor.js


そしてみんなの最高の笑顔がこれ。
来年も絶対参加します!

2012年5月4日金曜日

EC-CUBEのハマリポイント

みなさんGWをどうお過ごしでしょうか。
僕は初めてのEC-CUBEの案件で苦労続きで前半戦はずっとドタバタしてました(´・ω・`)
今はやっと落ち着き初めましたがそんな苦い思い出のいっぱい詰まったEC-CUBEさん。
国産のメジャーなCMSな割にはコアな部分の情報は少なくて、更にバージョンによって対応も随分違ったりと大変なので自分の備忘録のためにもここにハマリポイント(ハマりそうなとこ、実際ハマったとこ)を列挙しときます。
スマートな対応じゃないとこもいっぱいあるので、もし代案があるなら是非是非教えてください!

まず前提条件として自分が担当したEC-CUBEのバージョンは2.11.4です。
そしてインフラの環境はLAMPです。
またECCUBEの基本的なディレクトリ構成(data、htmlの関係とかphpとテンプレートの関係とか )は他のサイトとソースを見て頑張ってくださいw
自分はSmartyも初めてだったのでこの本を自炊してOCRかけて使いました。
こういう技術書(特にポケットリファレンスとか)を自炊してOCRは便利ですのでオススメです。





それではいくつか。

1 ログイン認証
ソースを読むと分かるんですがpasswordは

    /data/class/util/SC_Utils.php

のメソッドで確認してます。
基本的には

$res = hash_hmac(PASSWORD_HASH_ALGOS, $str . ":" . AUTH_MAGIC, $salt);

でハッシュ化した文字列とDBの文字列がマッチすればOKです。
そこで問題になるのがそれぞれの引数。
これは

    /data/config/config.php



    define ('AUTH_MAGIC', 'ECCUBEのインストール時に生成されて保存される');
    define ('PASSWORD_HASH_ALGOS', 'sha256');

となっており、これを使われます。
また$saltは既存のユーザはDBの

    dtb_customer

にユーザ毎に保存されており、それぞれ取得して使います。
つまり検証環境と本番環境でそれぞれECCUBEをインストールして、DBだけを移行した場合はAUTH_MAGICがマッチせずログインできなくなります。
対策としてはユーザのpasswordの再設定か上記の定数をマッチしてください。
でここまではソースを見ればすぐわかる話。
俺がハマったのはさらに環境としてリバースプロクシを使ってた時。
ログインの時にログイン時のホスト名を確認しており

    $_SERVER['HTTP_HOST']

の値と

    define ('HTTP_URL', 'http://soudai.zannen);

が一致しない場合に蹴られます。
なのでリバースプロクシを使ってる環境では上記のconfig.phpの最初で

    $_SERVER['HTTP_HOST'] =  'soudai.zannen';

としてやりました。
これと同じことはwwwを標準ではつけてるけどリンクにwww無しで記載してたりしてURLがマッチしない時も起こるのでFQDNは要注意です。

2 mysqlでのシーケンスの取得
ECCUBEは受注番号や会員番号などの順番を

    table名.seq

と言うtableで管理しています。
mysqlはPostgresのように複数tableをまたがるシーケンス用の仕組みを用意してないので(むしろあったら是非教えてください!)tableでシーケンスを管理するのはよく見る手法ではあります。
で自分がよく見るのはtableの中のカラムの値をselectで取得して

update table_sequence set seq_num = LAST_INSERT_ID(seq_num+ 1) where column_name = 'zannen_num';

などで使った後は増やしてやる方法。
こうすることでtableの中の対象のカラムの中の数字がそのままシーケンスになります。
ECCUBEも一見すると同様にtableの中のカラムにシーケンスナンバーが入ってます。
ですが実際に取得してるのは

    Autoindexの値

なのでカラムの中の値を変えただけではシーケンスは変わりません!
つまりサーバ移行などで会員情報や商品情報を直接DBにINSERTしたり消した時は

    ALTER TABLE テーブル名 AUTO_INCREMENT = 目的の数字

で数を増やしてやったり減らしてやる必要があります。
初期化する場合はTRUNCATEしてやればカラムと一緒にAutoindexも初期化されます。
なのでデータ移行後にID発行が出来なくてエラーが出た場合はここを確認してみてください。
(つかシーケンス取得するたびにINSERTとDeleteしてるってことだよね?どうなのそれ...)

3 納品書のPDF生成
受注管理画面からPDFを吐き出せる機能は

    /data/class/SC_Fpdf.php

に直書きされてます。
つまりこれをそのまま弄るとバージョンアップの際の鬼門になります。
ですがそれ以上にLAMPの環境だとPDFの生成時にエラーを吐いたりします。
クライアント側がMACの場合文字化けたりします。
これは

    /data/module/fpdi/japanese.php

の中で文字コードのArialを指定してるところがあります。
Linuxだと当然サーバ側にArialなぞありません。
またMac側にもArialはないのでMacの場合はそもそも表現が出来ないので文字化けします。
なのでここの文字コードの指定を外してやって対応してます。
つかPDF関係はかなり元の実装が残念なので結構大変だと思います・・・


とまだまだECCUBEのハマリポイントはあるんですが長くなるのでこのへんで。
また元気があればちょいちょい書いて行きたいとおもいます。