p_chinのおっぱいブログ

UnityとPerlなど

perl

perlで時間を固定するの処理で色々ハマった時のメモ

クライアントサイド(Unity)の時間依存の処理(2013-07-10〜2013-07-20までにログインしたら報酬プレゼントとか)のテストを書きたかったので、サーバの時間を固定する処理が欲しくて書いた時に悩む事が多かったのでメモ BEGINEブロックでCORE::GLOBAL::timeな…

(4)先週覚えたけどブログにする程ボリューム無いから全部まとめてメモ

perl Data::Validatorの、hashで引数渡さなくても良いStrictSequenceというのもある http://search.cpan.org/~gfuji/Data-Validator-1.03/lib/Data/Validator.pm#___top リファレンスの例文 sub hoge { state $rule = Data::Validator->new( foo => 'Str', )…

perlでメソッドや関数を作る時に気をつけたい事のメモ

最近一つの機能をガーッと実装して、気付いたら分かりにくいコードを量産してたので、下記に今後から気をつけたい事をメモる そもそも関数にする理由 関数名の先頭にアンダースコアを付けて外部クラスから呼ばれたくないアピールできる 複雑な処理をする場合…

(3)先週覚えたけどブログにする程ボリューム無いから全部まとめてメモ

Tool ILSPAY http://sourceforge.net/projects/sharpdevelop/files/ILSpy/ DLLをデコンパイルするツール duコマンド サーバ内で使うと一時的に負荷がかかるのであまり良くない http://itpro.nikkeibp.co.jp/article/COLUMN/20060227/230748/ ディレクトリ内…

n+1問題を体験しました

ORM使ってて、便利で余裕キメてたらn+1問題を起こしてた。 n+1問題とは 1回目 のselectで、あるテーブルのレコードの集合を取ってきて、更にまた別のテーブルから先ほど取得したレコードデータ使用して n回 selectクエリを発行してしまう現象だ。 うまく説明…

エラーのハンドリングはコントローラーで

MVCパターンを利用したフレームワークのArkとか使ってると、基本的にModelで出たエラーをControllerの、例えばhoge/errorというアクションに渡してクライアントにエラー文を送ったりする。 Modelでエラーを丸め込んで投げちゃうのは良くない 以下の様な感じ …

(2)先週覚えたけどブログにする程ボリューム無いから全部まとめてメモ

Tool pandoc Textile、MarkDownからHTMLまで相互変換できるらしいし、便利そう http://johnmacfarlane.net/pandoc/try/ Perl 変数名の頭文字の*マーク 正規表現と同じで、全ての型に対応するものらしい。 http://d.hatena.ne.jp/chaichanPaPa/20090617/12452…

perlの素の例外処理

perlには例外処理が無いからTry::Tinyとかの例外処理用のモジュールがあるって認識だったけど、違った。 evalの例外処理について Try::Tinyは以下のevalを使った例外処理の記述をtry{}catch{}にして例外を返してくれるモジュールだった。 eval { die 'fugu' …

(1)先週覚えたけどブログにする程ボリューム無いから全部まとめてメモ

Const.pmとconfig.pl 環境によって変更する値はconfig.plで そうじゃないのはConst.pmで管理した方がいい config.plが膨らんじゃうのも見づらい トランザクションについて メソッドの中で多くのDB操作をするならば、メソッドの中でトランザクション宣言した…

HTTP::Request::Commonからperlのファットコンマなどを思い知った

POSTメソッドの引数に無名配列の中にハッシュの様な物が入ってて意味分かんなかった #色々省略してるけどこんなん POST($url, [ fugu => 'kawaii', oppai => 85, ]); あれ?配列の中にhash(の様な書き方)を入れると展開されるんじゃなかったっけ? もちろん…

perlのクラスメソッドとオブジェクトメソッドの違い

なんか、今更感あるけど認識が甘かったので先輩に教えてもらった。 確認の為に、以下にまとめてみた。 #!/usr/bin/env perl use 5.016; use warnings; use utf8; use autodie; package Oppai { # コンストラクタ newじゃなくても良いけど慣例的にnew # コン…

Text::Xslate::Syntax::Kolonのテンプレートについて

便利そうな仕組みがあって先輩に教えてもらったのでメモ PHPのincludeみたいの使えたり、他にも色々あった 詳しくはドキュメント参照して分からなかったら見てください コードみてみる kawaii.tx : cascaed common::oppai {title => "タイトルに値を渡して…

plenvのバージョン管理について

入社して配属先について、初日にやったことを忘れてたのでリマインドがてらメモ 詳しくはplenvの作者tokuhirom氏の記事を見て、分からなかったら以下も見てみると良い インストールしてみよう plenv install 5.16.3 --as=5.16 --as={name}でバージョンに自由…

Tengのpager機能使った時のメモ

Tengのsearch_with_pager関数を使えばレンダリングの結果にページャ機能をよしなに付けてくれるらしい ドキュメントはTeng::Plugin::PagerとData::Page::NoTotalEntries見れば雰囲気つかめると思う Controllerのコード見る sub list :Local { my($self, $c) …

ArkでXslate使う時のメモ

Ark初心者だけど、先輩に聞いたりAdventCallender見たりして、テンプレートからレンダリングできたので、メモ 一番シンプルなコード見てから説明した方が速そう 今回は「Oppai」というプロジェクトを例にする package Oppai::Controller::Content; use stric…