MagicWeapon
ふと、色々と紆余曲折があった末として「MagicWeaponのdata_clumpで、cas形式の楽観的ロック、実装してみようかしらん?」というような発想がありまして。 その前提として「cas tokenど〜やって実装しよう?」から、比較的現実的な可能性があるあたりを妄想…
元ネタは、友人の 会員登録に住所が必要な場合の「数字は全角で」「数字は半角で」もそろそろどうにかならんのか ってあたりの発言。 まぁ実際「住所入力全角のみ」で、番地数半角ではねられていらついたとかいうケースは割と後を絶たないわけでして。 その…
PHPのセッションは、便利な反面色々と気になる事もあるのですが。 そのうち ・「セッション有効時間」をきっちりしたい(有効時間が切れたら問答無用で切断したい) ・アカウントロックの実装をかけて、ロックしたら「ログイン出来ない」だけじゃなくて「現在…
ほぼ私信のようなもんですがw 細かくはまたマニュアル( https://github.com/gallu/MagicWeaponManual/blob/master/table_of_contents.md )のほうに書きますが、一端、メモ程度に。 本質的なところ data_clumpは「データの塊」です。 例えば「1つのmail for…
以前にも estab_table というクラスを組むには組んでいたのですが。 ほんのりと思うところがありまして、新規に組んでみました。 https://github.com/gallu/MagicWeapon/blob/master/probability.inc https://github.com/gallu/MagicWeapon/blob/master/prob…
もっそ雑に調べたのですが。 int(999) } array(0) { } となって、なにかってぇとつまり「$_SESSIONは別にsession_start()しなくても普通にスー…
MagicWeaponには、data_clumpっていう、おいちゃんが勝手に「OTM(Object Tbale Mapper)」って呼称している、割合特徴的なクラスがあります。 で、この子は割と「データの塊」を扱うので。 例えば「formから情報を一式とってきてインスタンスん中にいれる」場…
MWでいうところのModel(「アプリケーションデータ、ビジネスルール、ロジック、関数」ってところから、ウチでは実際の処理一式。他のPHPのフレームワーク的には「Controller内にある1Action相当」って思うとわかりやすいかと)に、get_recursive_depth()メソ…
今度どこか(多分github)にまとめますが。 簡易的に、MagicWeapon用のをmemoっておきます。 mod_rewriteの記述 RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-s RewriteRule…
うちとこの生徒さん(達)に質問されたのですが、ちょうど「どっかで書かないとなぁ」って思ってたネタでちょうど良いので。 URLの擬似静的化(または、URLの静的化)ってのは…んと… http://example.com/program.php?param=param ってなので動く動的なHTMLを、 h…
http://d.hatena.ne.jp/gallu/20121112/p1 の続き。 これをやれば、後は単純にmemcache_handleのupdateとかinsertとかそっち系の実装で「トランザクションonなら実際のinsertとかupdateとかの代わりにdeleteを走らせる」って処理でいけると思う。 共通化して…
ものっそ覚書。 というか考えながら書いているに近い状態なので、もしかしたら文頭と文末で矛盾してるかもな場合は文末を信用してちゃぷたい。 さて。 MagicWeaponのデータ系ハンドルは、現状、こんな感じ。 data_handle ├db_handle_base |├db_handle_plura…
MagicWeaponには「tokenizer」という「一意のトークンを発行する」クラスがあります。ちょっとしたDBのPKに死ぬるほど便利なのでよく使います。 一方で、以前に書いたのですが( http://d.hatena.ne.jp/gallu/20120402/p2 )、違うトークンの作り方もあります…
すげぇアバウトなインタフェース草案。 送信 // オブジェクトを作成 $msq = new mw_message_queue(); // key設定のやり方への可能性 $msq->set_key($key) $msq->set_key($config) // クラス継承してコンストラクタで設定 // メッセージを設定。stringでもオ…
認証系を作り直しているので、備忘録兼ねて。 とりあえず ・パスワードの持ち方を変えつつ ・セッションIDにmcryptを使わないように してみやう。…いやmcryptは捨てがたいのだが(苦笑)、オプションとして。 ・パスワードの持ち方 以前はsha1でハッシュしてい…
「このフレームワークを導入したからうまくいくぞ!!」って、どこの「銀の弾丸伝説」でしょうか? フレームワークは、元々、作者の「こーゆー風に物事をやりたいつくりたい」って思いがあって、「その思いの補助道具」として存在してるざます。 あなたが使…
もっそ微妙w メモかねて。 先に使い方。 ・configに「di_config」でDI用の設定ファイル名を書く ・di_configの書式例 # 仮想クラス名 = includeファイル名:newしたいクラス名 #------------------------------------------------------- # 基本書式 cgi_req…
最近、むやみやたらに進化してきているdata clumpなのですが。 これを一言で言い表すよい言葉を思いついたので、メモ。 Object-Table Mapping 元ネタは言わずとしれたObject-Relational Mapping。 data clumpの細かい話は、また後日〜
いち。 mapファイルで@includeを使えるようにしました!! 注意点としては「カレントディレクトリは、map.txt本体が置いてある場所」って事くらいかな? レポジトリにあげなきゃいかんですが、これで本格的に「レ〜ゴレゴ」な世界に突入出来そう!! パーツ…
以下の項目をconfigに追加〜 # 携帯のみ有効とする only_mobile = on no_mobile_uri = ./no_mobile.html no_uid_uri = ./no_uid.htmluser-agent見てまふ、なのである部分注意。 &おまけ DoCoMoで「入り口だけguidチェック」するなら。 かなりあちこち雑なコ…
認証の基本知識はこっち見て。 http://d.hatena.ne.jp/gallu/20080203/p1 以下、authentication(個体認証)。 基本、login.incとかいうブツん中にあるざんす。メソッド位置的にはpublic function initialize() 内。 一般的な、ID+Passwordでのログイン:fron…
一般的な流れとMagicWeapon特有の処理をだらりんこと。 まず。 (一般) 「ユーザが特定のアドレスに空メールを送る」で、サーバ側で「メール受信を契機にプログラムを起動する」処理を書きます。 例えば、hogera@foo.com にメールを送った場合。 foo.comを持…
edit //処理 public function execute_auth() { // もし「confから来たわけではない」場合、DBからの情報を設定する if (false === $this->is_bag('edit_from_cgi')) { $cobj = new hogehoge_clump(); $cobj->set_db($this->get_db()); $cobj->set_value('pk…
本来的には、multiDicは「要素部分を"ごにょごにょする"」ものなので。 自作クラスを渡せば結構遊べまふ。最低限必要なのは function m_conv($body, $param) {ここだけだし。$bodyに要素がはいるとおもいねぇ。 $paramは…しばらく使ってないけど。例えば $$$…
こっちはちょ〜簡単。 例えばエラーメッセージがあるとするです。テンプレート的には、こう。 $$$if_error_name_must$$$ <FONT color="#ff0000">ちょっとちょっと名前くらい名乗っていきなよ<br> $$$/if_error_name_must$$$ プログラムで、下記記述があれば、出力されるです。なきゃ出</font>…
ループ系複置換の基本は 「"ハッシュ配列"の配列」を作って渡すこと。 で、data_clumpと組み合わせた方法。…ちなみに「SQL文使ってpkのlistを作る」のは、おいちゃん的には結構いや(笑 なにがしか今度作りたいなぁ。 ページ処理したい時は、page_controll_li…
radioボタンとかselectボタンとかで「入力された値を保持したい」時に使うあれ。 都道府県の場合は、 がらくた箱( http://www.gjmj.net/ )ん中にある http://www.gjmj.net/area.html が端的に楽なんだけど(笑 書式は、こんな感じ。 <SELECT name="area"> <option value="1" ***area:1*** >北海道</option> <option value="2" ***area:2*** >青森県</option> </select>
一番単純な、一対一の置換。 テンプレート側 名前:%%%name%%%に対して、プログラム側では CONVインスタンス->monoDic('name', $name);とかってcall。 data_clumpとのコンボ技の場合、まとめて clumpインスタンス->set_all_to_conv(CONVインスタンス);CONVの…
Modelのexec部分だけざっくり。 input 処理はなにも書かない。いらないっしょ? 編集系もまとめるなら、ちょっとだけ小細工入れるとぐっど。 //処理 public function execute_auth() { // return ; } confirm is_validateはまだ未実装。ごめん。 イメージは…
概ね「一塊のデータを塊のまま扱う」クラス。 大抵、1クラスと1物理テーブルが対応していて。 1インスタンスと1レコードが対応している。