An explanation of your regex will be automatically generated as you type.
■まとめ tempfile(...)が作成したテンポラリファイルは、環境によってはflockされていることがある tempfile(CLEANUP => 1)は、テンポラリファイルへの参照をretainする つまり、CLEANUPを指定している場合、参照カウントに頼った自動closeは機能しないので、明示的にcloseする必要がある また、明示的にcloseしないとflock可能にならない場合がある ■ログ 16:23:30 <kazuho_> あれ perl って file handle への refcnt がゼロになったら自動的に close してくれますよね 16:23:43 <tokuhirom> してくれますね 16:23:48 <tokuhirom> しなきゃおかしいw 16:32:33 <kazuho_> https://gist.github.com/kazuho/1116
WEB+DBのPerl Hackers Hubで書かれていた「cron周りのベストプラクティス」を読んだ。かなり参考になった。 経緯としては読みたいって呟いたら感想よろしくと言われたので慌てて読んだ。 @shiba_yu36 「読んだ」なら言ってもいい— songmu (@songmu) 2014年2月24日 @shiba_yu36 マジに謝られても…— songmu (@songmu) 2014年2月24日 @shiba_yu36 マジになって感想エントリを書いてください。— songmu (@songmu) 2014年2月24日 特に参考になったこと batch.pl batch.plは非常に良いと思った。というのもcronとかのスクリプトで非常に簡単な事をやっている場合は適当にplファイルを作っちゃって登録するんだけど、得てしてそういうのはテストが無くてバグってて、しかもcronのロ
パーザを書こうという場合、Parse::RecDecsent のようなモジュールを使うのが一般的だが、Perl5 の正規表現は強力すぎるため、そんなものに頼らなくても超絶簡単にパーザを実装することが可能だ。 以下に、四則演算のパーザを示す。 use 5.018000; package Calc { use Carp (); sub parse { local $_ = $_[1]; _parse_expr(); } sub err { my ($msg) = @_; my $ret = join('', $_, "\n", (" " x pos()) . "^\n", $msg, "\n", ); Carp::croak $ret; } sub _parse_expr { my @nodes; until (/\G\s*\z/gc) { my $m = _parse_add() or do
先日のShibuya.pm #9のLightening Talkで「gdbでXS on mod_perlをデバッグ」という話をしてきました。XSを使い出すと、従来のPerl的デバッグだけでは不十分なのでgdbをうまく使って、効率的にデバッグしましょう、という話です。実は、はてな社内では1年近く前に勉強で話したネタだったのですが、ようやく公開することができました。 Shibuya.pmでは5分という枠があったのでショートver.でしたが、ここでは制限はないので、本来のロングバージョンの資料をアップします。ちょっと公開できない情報が混っていたので、xxxで隠していますが、ご了承ください。 ちなみに、Rubyとかでも似た感じでデバッグできると思うので、そちらの人も参考にしてください。長いよ!という人は、最後の「これは設定しておけ的gdb初期化マクロ」だけでもどうぞ。かなり便利です。 (資料公開が
え〜とあるアプリのバックエンドを僕一人が書いてるのですが、 さすがにキツくなってきたので大工事をして「楽に」分業出来るようにしています。 その構成はちょいと置いといて〜 ウマく行けば「とある部分」を誰かに任せることになりますよね。 すると「弊社は(そのための)エンジニア募集中です!」という展開をご期待かもしれませんが、 もう既にアサインが済んだので「弊社はエンジニアを募集しておりません!」すいません... m(__)m 本来ならばその「とある部分」の実装においては僕がメインで使っているPerlじゃなくても、 PHPでもRubyでもPythonでもなんでも良かったのですが、 当の担当する方が「Perl書けます」とのことで「じゃあPerlでいこう」という展開になってます... ただ、全然、彼のスキルセットをまだ分かってないので、これから話すという段階なんすよね... そこで、僕、人事的なことと
Songmuです。 Perlは5.10以降多くの機能が追加されていますが、巷のCPANモジュールの多くは5.8と互換性を保って書かれていることもあり、普段その機能を目にしない人も多いでしょう。僕自身のCPANモジュールも多くは5.8.1以降対応ですが、最近手元で動かすようなものに関しては5.10.1対応にすることも増えてきましたがそれでも、5.10.1止まりです。 実際のプロジェクトにおいては5.10以降の機能も使えるものは積極的に使っているのでその辺りの話。 say: 改行付きprint (5.10) printしてその後に改行を入れてくれる関数です。地味に便利です。 use 5.010; say 'Hello'; # Hello ワンライナーでも -E スイッチで使えるようになるので近年は-eを使わずに専ら-Eです。 % perl -E 'say "Hello"' Hello //:
Future::Qモジュールを書いた時に他のfuture実装についてもいくつか調べたのでメモ。 futureは(バックグラウンドで)現在進行中の処理と、それが終わったあかつきに得られるであろう結果の値を指し示す(というか保持する)オブジェクト。 http://en.wikipedia.org/wiki/Futures_and_promises 言語によってfutureとかpromiseとかdeferredとか呼ばれるけど、コンセプトとしてはどれも同じようなものなのだと思う。ここでは総称して"future"という言葉を使うことにする。 futureの使い方には主に次の2種類がある。 ブロッキングスタイル futureから値を取り出すAPIが存在する(get()メソッドなど)。処理が進行中で値が未確定の場合、処理が終わるまでブロックする。 ノンブロッキングスタイル futureにコールバック関
The document discusses various techniques in Perl for dealing with reference cycles and memory leaks caused by strong references, including using weak references, extracting needed data from objects before destroying them, and passing objects into subroutines to avoid capturing them. It also discusses analogous techniques used in Objective-C like weak references and guard objects to break cycles.R
http://shanon-tech.blogspot.jp/2013/05/perl.html Perl モジュールの作り方、2013年においては Authoring tool をつかって作るのがよいです。具体的には Minilla でつくるのがオススメであります。 perlbrew なり plenv なりで perl をいれたあとは、 % cpanm Minillaとして Minilla をインストールします。 % minil new Fooとすると、Foo.pm のスケルトンができあがります。作者の名前などは ~/.gitconfig などから自動的にさがしてきますので、設定不要です。 できあがったディレクトリは以下のような形になっています。 Foo ├── Build.PL ├── Changes ├── cpanfile ├── lib │ └── Foo.pm ├── LI
DSN に sql-mode=... 付けてもなんもなんないんだよ糞が! 最初の方に追記しておくと生DBI限定の話です。僕のしらない wrapper モジュールだと動くのかもしれません。 けど、こういうエントリを僕が書いてる時点で、そういうモジュールは筋悪いんだとおもいます。 人のプロジェクトのコードを見てたら my $dbh = DBI->connect('dbi:mysql:dbname=geekdb;sql-mode=STRICT_TRANS_TABLES', 'yappo', 'moneyfriend', %attr); みたいな感じの DSN があったんですよね。 他にも attribute てんこもりだったんで、それコミットした人に聞いて見たら「秘伝のタレです」的なのが帰ってきたので、僕も何も考えないで「これでSTRICT_TRANS_TABLES効いたら、まぁ捗るから付けとこ
はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28
Me 嶋田 裕二 (Yuji Shimada) @xaicron ソフトウェアエンジニア Me CPAN Author Me デザインセンスがとてもよい Me New! 最近ぎっくり腰になりました Works DeNA Co., Ltd. Mobage オープンプラットフォーム Mobge API Gadget Server (Proxy Server) 宣伝 宣伝 春頃に「Mobage を支える技術」という本を書きました。 ⇡これね 他にうちの部では @zigorou @nekokak の二人が書いています。 ちなみに ちなみに JPA 理事 JPA 理事 路傍の石 はい 紹介ブログの名言集 @kazeburo 35億PV/day の世界では1万回に1回しか起きない事が1秒に8回起きる。100万回に1しか起きないことが1日に3500回起きる @Yappo DeNA のノウハウが12個も馬
以前http://tech.naver.jp/blog/?p=1369の記事を読んだのだけれど、それまでにprocessの知識が無かったりして、まったく理解できませんでした。そこでWorking with UNIX ProcessesやServer::Starterの中身を呼んでようやくhot deployの仕組みを理解できた(気になっている)ので、Server::Starterの実装を追いながら、それをまとめてみます。 hot deployとは hot deployとは「再起動の時にリクエストの処理を続けながら、変更の内容を反映するための手段」です。 通常serverをrestartさせるときは、stop -> startの流れになると思いますが、この場合stopしてから、start出来るまでの期間にリクエストを処理できない期間が発生します。その期間なしにdeployする仕組みがhot
最近、 DBIx::Class の利用例を色々見てるのですが、Schema->connect は見かけるのですがdisconnectを見かけません。疑問に思ったので、色々調べてみました。 結論 disconnectは不要。 調べたこと disconnectはあるの? DBIx::Class::Storage が持ってます。 my $schema = DB::Main->connect( ... ); # ... いろいろ処理 ... $schema->storage->disconnect; DBICのコネクションのライフサイクル テストスクリプトを含めたほとんどのサンプルでは、接続が必要となった時点で自動的に接続され、プログラムの終了時に切断されます。 接続に関しては、実際には DBIx::Class::Storage::DBIで dbh_do が呼ばれるタイミングで、 _populat
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く