がるの健忘録

エンジニアでゲーマーで講師で占い師なおいちゃんのブログです。

PHP

「全部プログラムでやる」のか「得意分野はお任せする」のか

元ネタは…今ちょいとかかわっているWordPress案件。 セッションを使う必要があるのと、セッションをDBに格納する必要があるので「なんかせにゃならん」ってんでSessionHandlerInterfaceインタフェースをimplementsしたクラスを作成していたのですが。 そこで…

小ネタ:コメント形式に注意

PHP

元々は、小山さんがfacebookでお話をされていた内容がベースなのですが。 そちらのお話だと 「$data = preg_replace('~()~isD', $header_css . $css . $js . '$1', $data, 1);」といった感じの行を // でコメントアウトしたらsyntax errorになったお!! 的…

模擬試験作成用ヘルププログラム

PHP

限りなくメモ(笑 まぁ何かに使える事もあるかと思ったので、アップしときます。 …githubに上げるほどでもねぇなぁ、って思ったので、ここに(笑 試験項目作成用

Singletonをcloneさせたくないエトセトラ

PHP

たまにはちょっとお馬鹿い考察を(笑 Singletonで顕著なのですが、インスタンスを「1つにしたい」ってケースで。 まぁ勿論規約で縛るとかってのもよいのですが、縛っても踏み越えて乗り越えてくるケースってのはあるので。 ある程度くらいまでは「不可能な状…

DB handle周りのチューニング

PHP

某所というかまぁFacebookでなのですが。 接続数が多くて「too many connections」エラーが発生する場合。 PHPのプログラム(バッチファイル)側として何か対応すべきことや、 注意すべきことなどありますでしょうか? という、大変に有意義で結構質問のあり…

PSR関連、おいちゃんの流儀との差異に関する覚え書き

PHP

タイトルそのまんま。 特に記述が無いところは「異論が無い」って思ってもらえればなぁ、っと。 PSR-0 ・名前空間まだ使ってないのと、個人的には「C++の名前空間」が好きなので、なんか今ひとつなんでどこまで使うかぶっちゃけ不明 ・「クラス名に含まれる…

アプリでの、会員登録&認証

ちと急ぎで必要だったので、ざっくりと。 近々、もうちょっと落ち着いて書く予定ではございますが、ツッコミなどありましたら頂戴できれば幸いです。 前提 フロントってのは、ようはUnityやらcocosやらMonacaやらその他で作られた「アプリ」です。 基本的に…

タイプヒンティングで実験

PHP

元ネタとしては http://d.hatena.ne.jp/gallu/20131212/p1 とかあるのですが。 ちぃと、おいちゃん作成フレームワーク「MagicWeapon」にメソッド追加を想定していて、その思考の流れでふと、気になった事があったので実験。 function hoge($awk) { } // hoge…

set_from_cgi_update()のオーバライド用覚え書き

MagicWeaponには、data_clumpっていう、おいちゃんが勝手に「OTM(Object Tbale Mapper)」って呼称している、割合特徴的なクラスがあります。 で、この子は割と「データの塊」を扱うので。 例えば「formから情報を一式とってきてインスタンスん中にいれる」場…

get_recursive_depth() を実装しました

MWでいうところのModel(「アプリケーションデータ、ビジネスルール、ロジック、関数」ってところから、ウチでは実際の処理一式。他のPHPのフレームワーク的には「Controller内にある1Action相当」って思うとわかりやすいかと)に、get_recursive_depth()メソ…

「列挙型をよこせ!」

PHP

いやまぁふと思いついたのですが…まぁ以前から定期的に思ってたんですがね「列挙型はどこだ!」。 こんな感じのをイメージしてまふ。 おいちゃんはC言語方面から歩んできている旅人なんでね。 #include <stdio.h> // 列挙型の宣言 enum cardsuit { CLUBS, DIAMONDS, H</stdio.h>…

「URLの擬似静的化」のMagicWeapon用の覚え書き

今度どこか(多分github)にまとめますが。 簡易的に、MagicWeapon用のをmemoっておきます。 mod_rewriteの記述 RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-s RewriteRule…

所謂「URLの擬似静的化」についての諸々

うちとこの生徒さん(達)に質問されたのですが、ちょうど「どっかで書かないとなぁ」って思ってたネタでちょうど良いので。 URLの擬似静的化(または、URLの静的化)ってのは…んと… http://example.com/program.php?param=param ってなので動く動的なHTMLを、 h…

validateについて

頂戴したデータがvalidなのかをvalidationするvalidatorの、どっちかってぇと「理屈」部分を、少し整理してみましょう的な備忘録。 実用一点張りなのと、とりあえず「PHPメイン」で書きますんで、適宜、他言語な方々におかれましては応用したりかみ砕いたり…

カタカナをvalidateしてみる

PHP

考えてみるとあんまり真面目に考察してなかったので調べてみる…とまぁ、色々なパターンが。 概ね正規表現で、preg_matchまたはmb_eregを使うケースが多いようなのですが(マルチバイトって意味だとmb_eregかなぁとか思いつつ)。 正規表現パターンが概ね mb_er…

「内部的にstaticな変数」の実験

PHP

ちょいとお仕事がドッタンバッタンなので、ギア入りっぱなしのまま書いているので本気で備忘録。 読み取れる方は適宜読み取ってくださりませ。 実験コード。

ヨーダ記法を応援します

PHP

軽く各方面とバトりそうなネタなれど。 まず。 ヨーダ記法(ないしNTT記法…って、うちのまわりではいってたんだけど、ググるとあんまりでてこない)ですが。 これは「if等の比較演算において、左辺に定数、右辺に変数を置く」記法です。 とりあえず幾つかネッ…

テーブル設計

基本は以下の通り ユーザテーブル →ユーザの情報が一式。「1レコードが1ユーザを意味するテーブル」。 商品テーブル →商品の情報が一式。「1レコードが1商品を意味するテーブル」。在庫管理は一端なし。 受注テーブル →受注情報の根っこ。「1レコードが…

目的

基本的には ・コード含めて、設計が出来るだけ平坦でシンプル なものを作る予定。 機能としては「ギリギリECとして成り立つ」程度まで削り落として。 どちらかと言わなくても「エンジニアがカスタマイズする前提」にしようと思っています。 受託での実務の実…

simple EC作るまでの道程を記録しまふ

前々から…うん多分、暖めてからだと「…何年だろう?」ってくらい前から暖め続けているのですが。 そろそろいい加減発酵度合いが半端ない感じになってきたので、openな場所で退路を断とうと思いました(笑 だって…「29 Mar 2012」とかにレポジトリ作る時だって…

emailアドレスのvalidate

PHP

「存在確認じゃなくて」validate、のお話。 いや実際色々と困るのよねぇ、っと。 ググると「明らかに間違った正規表現がTopに出てくる」とかしゃれならん状況もありますし B-p*1 とりあえずPHP用の想定でお話しますが、多分、他の言語でも通用する一般的な話…

UUIDv4の(多分)一番雑な作り方

色々考えたり調べたり悩んだりしていたのですが。 uuidgenっていうコマンドラインユーティリティあるんですねぇ知りませんでした(苦笑 http://linuxjm.sourceforge.jp/html/e2fsprogs/man1/uuidgen.1.html uuidgen - UUID 値を生成するコマンドラインユーテ…

「スマートなコード」ねぇ…

PHP

元ネタ 保守性・管理性が劇的に上がるPHPのスマートなコードの書き方12選 http://bulkserver.jp/blog/2014/08/07/php-code/ http://megalodon.jp/2014-0812-1255-23/bulkserver.jp/blog/2014/08/07/php-code/ ※えぇなんとなく魚拓を取ってみましたなんとなく…

「出来た」んだが、どうも「やっていい」では無い気が山盛り…

PHP

原稿を書いていて、気づいて…且つ、ちょいと「まだ原稿には書けないなぁ」な内容だったので。 ネタは、PHPの、クロージャ(無名関数)周り。 bindっちゅ〜メソッドがあるのですが。 「バインドされたオブジェクトとクラスのスコープでクロージャを複製する」の…

ブラックジャックを設計してみる:おまけ

PHP

$_SESSIONにインスタンスをぶちこむときのちょっとしたコツ。 serialize/unserializeを使いましょう。 んと…多分、不慣れだと $obj = new hoge(); $_SESSION['object'] = $obj;ってやっちゃうのですが、これだと、色々と面倒も多いので。 $obj = new hoge();…

ブラックジャックを設計してみる:おまけでポーカー

PHP

前提は似たようなもんで、とりあえず「ユーザを特定できる(authenticationは必要ないので、authorizationが出来る)」。 PHPだと、session機能使うと楽ですな。 カジノでの「サシの」ポーカーを一端想定してまふ。 ユーザから「ページを表示する」リクエスト…

ブラックジャックを設計してみる:本体

PHP

とりあえず「どのタイミングで通信を発生させて」「情報を保存するか」ってあたりがキモだと思うんで、その辺を中心に。 おいちゃんは、この手の物は割と「永続インスタンス」を使うほうなので、それで説明をしていきます。 とりあえず「ユーザを特定できる(…

ブラックジャックを設計してみる:必要性の説明

PHP

通信データを暗号化するとか色々ありますが、設計の基本は「状態の遷移方向だけ通信したほうが楽だよ」ってのが根っこにありまして…ってお話。 MMOでの「移動」を例にとってみます。マップは適当に、縦横400とかってしておきます。 現在地点が200,200。勝手…

ブラックジャックを設計してみる:前置き

PHP

発端としては、ちょいと、TGS関連で関わり合いのあるほにゃららがありまして。 専門学校の生徒さんに「JavaScriptなら出来るんだけどPHP使って通信、ってのがピンとこない」って話をもらいまして。 それに絡めて、いくつかお勉強を兼ねた内容を盛り込めれば…

strcmpの興味深い実装

PHP

ちょいと故がありまして、PHPのstrcmpの実装を調べていたのですが…思ったよりも、僅かに、不思議な実装をしておりました。 ZEND_API int zend_binary_strcmp(const char *s1, uint len1, const char *s2, uint len2) /* {{{ */ { int retval; if (s1 == s2) …