タグ

ブックマーク / perl-users.jp (29)

  • はじめての80386記号プログラミング - Articles Advent Calendar 2010 Sym

    こんにちは。id:TAKESAKOです。 そろそろ単純な「Hello, world!」に飽きてきた頃なので、フィボナッチ数列を数えるプログラムをC言語で書いてみたいと思います。 C言語でフィボナッチ数列を数える それではまず最初に、Cの文字列領域にフィボナッチ数列を数えるx86の32bit実行コードを書いて、それを無理やり関数呼び出しの形式にして実行してみたいと思います。 #include <stdio.h> char x86[] = { 0x8B, 0x4C, 0x24, 0x04, // mov ecx,[esp+0x4] 0x31, 0xC0, // xor eax,eax 0x99, // cdq 0x49, // dec ecx 0x7F, 0x04, // jg 0xe 0xE0, 0x01, // loopne 0xd 0x40, // inc eax 0xC3, // re

    はじめての80386記号プログラミング - Articles Advent Calendar 2010 Sym
    y_uuki
    y_uuki 2016/04/21
  • Q4M を使ってる時のシグナル処理に注意 - JPerl Advent Calendar 2009

    Q4M を使ってる時のシグナル処理に注意 - JPerl Advent Calendar 2009 Perl に関するちょっとした Tips をのっけてみるよ。ちゃんと続くかな? はじめに 今日は趣向を変えて、 tips さんを。 Q4M だけに限った話ではなく SELECT SLEEP(10); とかしてる時でも良いんですが、今回は Q4M を使ってる時の注意という話です。 Data::Model の Q4M 対応では、もちろん DBI を使って Q4M を使うわけですが、これとシグナルを組み合わせるとシグナルを送った直後にシグナルハンドラを呼ばないんですね。 例えばこんなの # こいつは、 Q4M の queue_wait が終わるまでシグナルをトラップしない local $SIG{INT} = sub { warn "int" }; $queue->queue_running( qu

  • AnyEvent::RabbitMQ - メッセージキュー…使いこなしてますか? - Articles Advent Calendar 2011 Hacker

    前置き こんにちは。cooldaemon と申します。みなさん、意識は高まっていますか? 私は上々です。今回は拙作の AnyEvent::RabbitMQ というモジュールを紹介いたします。 AnyEvent::RabbitMQ は、AMQP ブローカーと非同期にメッセージを送受信するための AMQP クライアントです。AMQP とは、メッセージを扱うミドルウェアのオープンな標準仕様です。AMQP の正確で詳しい内容は、AMQP の公式サイトや Google をご確認ください。 当の事を言うと、名前は AnyEvent::AMQP::Client でも良かったのですが、私は、AMQP ブローカー実装の一つ RabbitMQ を常用しており、RabbitMQ 以外の AMQP ブローカーを利用する機会も必要もなく、また、接続性を保証する事もしたくなかったので、あえて名前に AMQP を含め

    AnyEvent::RabbitMQ - メッセージキュー…使いこなしてますか? - Articles Advent Calendar 2011 Hacker
  • Jonkで作るおれおれJobQueueフレームワーク - Articles Advent Calendar 2010 Hacker

    こんにちわこんにちわ!YAPC::Asia 2010でベストスピーカー賞(次点)を頂いた nekokak です。 今回は拙作 Jonk でオレオレJobQueueフレームワークを作るお話をします。 はじめに なぜJonkをつくったのかについては、JobQueueManagerについてを ご覧頂ければと思います。 簡単に言うと、やりたい事って案件によりけりだから、自分でその案件にあったJobQueueフレームワークつくれたほうがいいよね! です。 install $ cpanm Jonk だけです。依存モジュールはTry::Tinyというモジュール一個だけなので、 全く問題無く入るでしょう。 依存モジュールが殆ど無いのがJonkの売りの一つです。 JobQueueを管理するためだけに、よくわからないORMがインストールされてしまったり よく分からないモジュールがインストールされるのってやじゃ

    Jonkで作るおれおれJobQueueフレームワーク - Articles Advent Calendar 2010 Hacker
  • 続DBIとforkの関係 - Articles Advent Calendar 2011 Dbix

    はじめに DBIxといえばSkinnyです。nihenです。 DBIxトラックといいながらDBIの話でもよいみたいなのでに書いたことの続編tipsを一つ書きますです。 DBI->connect_cachedとforkの罠 DBI->connect_cachedは同一プロセスで生成された同一connectオプションのデータベースハンドルをキャッシュしてくれそれを返してくれる便利なものなのですが、これとforkの組み合わせにはやはり罠が存在します。 use strict; use warnings; use DBI; use Data::Dumper; my $dbh = DBI->connect_cached('dbi:mysql:sandbox', 'sandbox', 'sandbox') or die $DBI::errstr; $dbh->do(q{DROP TABLE IF EXI

    続DBIとforkの関係 - Articles Advent Calendar 2011 Dbix
  • Data::Validatorでバリデーションする - Articles Advent Calendar 2010 Casual

    はじめまして!@hisaichi5518です。就活生です。誰か雇ってください。 Text::Xatenaについて書こうと思っていたんですが、もうText::Xatenaの記事が他のトラックにあるので、今日はgfxさんによってリリースされたData::Validatorを紹介しようと思います。 Data::Validator とは 実行時型チェック / パラメーターチェックが出来る便利なモジュールです。 現在、Params::Validateがデファクトスタンダードっぽいんですが、速度が遅かったりするので正直微妙です。 ベンチマーク p5-Data-Validator/benchmark/simple.pl Params::Validate/0.95 Smart::Args/0.06 Data::Validator/0.06 without type constraints Rate P::

    Data::Validatorでバリデーションする - Articles Advent Calendar 2010 Casual
    y_uuki
    y_uuki 2013/04/21
  • Smart::Matchで快適スマートマッチ - Articles Advent Calendar 2011 Casual

    こんにちは。Perlで遊ぶと言うより、 未だ、Perlに遊ばれているtaiju (id:jdg) です。 YAPC::Asia TOKYO2011に参加したので、爪あとを残すべく、Perl Advent Calendar 2011に参加することにしました。 さて、Perl5.10から導入されたスマートマッチですが、これをより快適に使えるモジュールがないか、CPANで探してみたところ、Smart::Matchというモジュールが見つかりましたので、ご紹介したいと思います。 Smart::Matchはスマートマッチを快適に使うためのユーティリティをたくさん提供しているモジュールのようで、デフォルトで比較演算子でスマートマッチが採用される、switch文などで便利に使えそうなユーティリティがたくさん導入されています。 junctive Perl6のJunctionのような動作をするユーティリティ群

    Smart::Matchで快適スマートマッチ - Articles Advent Calendar 2011 Casual
  • Data::Section::Simpleで__DATA__をカジュアルに使おう! - Articles Advent Calendar 2011 Casual

    初めまして、@nqounetです。 2011年はYAPC::ASIAデビュー(参加という意味で)したので、アドベントカレンダーもデビューしたいと思います。 そんな新人の私でもカジュアルに使えそうな Data::Section::Simple を紹介します。 「ヒアドキュメント」って知ってますよね? my $html = <<"EOM"; <html> <head><title>タイトル</title></head> <body>ボディ</body> </html> EOM こんなヤツです。 古いCGIファイルを見るとよくありますよね? でも、ヒアドキュメントを使っているコードが見難いと思ったことはありませんか? 思いますよね。 そんな時には「__DATA__」を使うと簡単にコードが見やすくなります。 #!/usr/local/bin/perl use utf8; use 5.008001;

    Data::Section::Simpleで__DATA__をカジュアルに使おう! - Articles Advent Calendar 2011 Casual
    y_uuki
    y_uuki 2013/03/09
  • Resque で学ぶジョブキューイング - Articles Advent Calendar 2012 Casual

    こんにちは。hatak (@hisashi) です。 Perl でジョブキューというと TheSchwartz や Qudo などの名前が挙がるかと思いますが、今回はバックエンドに Redis を利用したジョブキュー "Resque" を紹介します。 Resque はバックグラウンドジョブを処理するためのライブラリで、Github を始め大規模なサイトでも利用されています。もともとは Rubyライブラリですが、Ruby 以外の様々な言語でも実装されています。今回紹介するのはその Perl 実装のモジュールです。 試してみる クライアントで入力した文字列をワーカーが表示するだけのシンプルなプログラムを作ってみます。 まずは Redis を利用できるようにしておく必要があります。今回はローカルの Redis を利用しますが、異なるホストで動作している場合は適宜ホスト名やポート番号を変更してくだ

    Resque で学ぶジョブキューイング - Articles Advent Calendar 2012 Casual
  • Chart::Gnuplotでグラフを生成してみよう - JPerl Advent Calendar 2009

    はじめに Perlでグラフを生成するためのモジュールとしては,グラフィックライブラリGDを利用したGD::Graphとか,GoogleChart APIを利用したGoogle::Chartとかが挙げられますが,最近,ふとしたきっかけで,Chart::Gnuplotなるモジュールの存在を知り,実際に使ってみたところ,なかなかいい感じでした. 今回は,そのChart::Gnuplotについて簡単に紹介してみます. Chart::Gnuplotの概要 グラフ描画系のツールのひとつにgnuplotというものがあります. http://www.gnuplot.info/ スクリーンショットを2点. http://farm3.static.flickr.com/2663/4166426208_a8aa809708_o.png http://farm3.static.flickr.com/2646/41

    y_uuki
    y_uuki 2013/02/17
  • Alien::RRDtool - RRDtoolをCPANから入れる - Perl Advent Calendar Japan 2011 Hacker Track

    前置き こんにちは。gfx です。みなさん、意識は高まっていますか? 僕は上々です。今回は拙作の Alien::RRDtool というモジュールを紹介いたします。 CloudForecastやGrowthForecastを使いたい!と思ったとき、RRDtoolのPerlバインディングであるRRDs.pmをインストールするのが面倒だったりします。特にperlbrewで入れたperlではRRDtoolsのソースコードをとってきてビルドしなければならないため、RRDtoolはパッケージマネージャを使ってインストールし、CloudForecastはsystem perlで動かすというのが今までのベストプラクティスでした。 Alien::RRDtoolはRRDtoolをCPAN経由でインストールするためのモジュールで、RRDtoolの各種コマンドとPerlバインディングを簡単にインストールすることが

    Alien::RRDtool - RRDtoolをCPANから入れる - Perl Advent Calendar Japan 2011 Hacker Track
  • エキスパートPerl - 変態モジュール総覧

    Perl の世界には、「変態モジュール」と呼ばれるモジュールがたくさん存在します。 これらは、モジュールの形態をとりながら、Perl の内部に踏み込み、蹂躙しているという恐ろしい存在です。 しかしながら、これらのモジュールは使いどころを間違えなければ非常に有用であり、あなたのプログラムに無限の可能性をもたらすことでしょう。 自分の足をどうやって撃ちぬくか、よく考えてからつかってください。 下記のモジュールたちは、それ自体が変態的なものもあれば、変態的なことをするときに使うモジュールもあります。 PadWalker PadWalker は変態モジュールの筆頭です。レキシカルスコープの変数を、レキシカルスコープの外から見たり書き換えたりできます。 peek_my peek_our peek_sub closed_over という4つの関数をサポートしています。 下記のようなありえない操作を可能

  • とある言語の例外処理 またはTry::Tinyの落とし穴 - Articles Advent Calendar 2010 Casual

    今年の Advent Calendar もいよいよ中盤戦。 もういくつ寝ると、メリーク×ト×ス! 最近、休日になると漫画を大人買いするのが趣味になってしまったいけない大人になってしまった僕ことzentoooですが、最近のお気に入りは「未来日記」です。あー由乃かわいいなーかーわいいなーーーかーーーわいーなあーーーーあーあーあーーーーーーあーーーーーーーーーーー頭おかしいけど。 ふぅ。 さて、みなさん、コード書いてますか、コード読んでますか。 短く簡潔なコードを読むと、気持ちもスッキリしますね。 でも、たまには例外処理なんてどうですか。 Perlで例外処理ができるなんて、なんか渋くないですか。 Perlにおけるベーシックな例外処理 冗談はさておき、初めてのPerlというハレンチなを読んだりすると、多分書いてあるのは以下のような方法による例外処理です。実際に初めてのPerlに書いてあるかどうか

    とある言語の例外処理 またはTry::Tinyの落とし穴 - Articles Advent Calendar 2010 Casual
    y_uuki
    y_uuki 2013/01/29
  • ベンチどうしますか? - Articles Advent Calendar 2011 Dbix

    どうもnekokakです。 みなさんDBIを使っているコードのベンチマークってどうしてますか? SQLのチューニングであればいいのですが、ロジックのベンチマークを取りたい時に 実際にdatabaseにクエリなげてしまうと、ネットワーク通信等が発生し、細かいロジックのチューニングの邪魔になることがあります。 たとえば私はTengのチューニングをするときに、バックエンドのdatabase性能なんてどうでもよくて、 プログラムの性能をみたいわけです。 そんなときに便利なのがTest::Mock::Guardです。(え Testというnamespaceにありますが、やっていることはコードをさしかえることなので これをつかって実際にデータベースにクエリなげるところとかをフガフガします。 例えばTengのベンチマークを取る時に試したコードは以下のようなものです。 #! /usr/bin/perl us

    ベンチどうしますか? - Articles Advent Calendar 2011 Dbix
  • カジュアルにデータを確率とか優先度で処理する - Articles Advent Calendar 2012 Casual

    こんにちは、こんにちは。カジュアルにPerl使っているkoba04 です。 Webアプリを作っていて、確率で処理を分けたり複数の要素を重み付けて選びたいことってありませんか? 真っ先に浮かぶのはガチャみたいなものですが、それ以外にもランダムでバナーを出し分けてみたり、接続するサーバーを重み付けて選んだり色々と使い道が思い浮かびます。 そんな時に使える二つのモジュールをご紹介したいと思います。 詳しくは下記の作者の方のブログを見てください。 Sub::Rate Data::WeightedRoundRobin 以上! でもいいのですが..順番に紹介してみたいと思います。 モジュールなしで実装 優先度を付けてデータを選びたい時はrandを使っての実装が思い浮かびますが、バグりそうな気もするし面倒だし出来れば書きたくないです。 (書き方が悪いという説もある) # 結果をdumpする関数 sub

    カジュアルにデータを確率とか優先度で処理する - Articles Advent Calendar 2012 Casual
  • Web アプリケーションのデプロイについての考察 - Articles Advent Calendar 2012 Casual

    Web Application をデプロイする際に、carton をつかうという方法もありますが、もっとゆるふわでいいんじゃないかなーとおもうので、もっとゆるふわにやる方法について考えてみました。 carton について carton は以下のようなことをやってくれます。 * バージョンの固定 * インストール * モジュールパスのロード carton は carton.lock というファイルにインストールしたバージョンを記録することによって、いいかんじにバージョンを固定できて、複数の環境でアプリをうごかすときに便利です。 が、しかし carton.lock は JSON ファイルなので、複数人が同時に作業しているときに conflict したりしてメンドイ! という噂もききます。実際、carton.lock をつかうと conflict がダルすぎるので carton.lock を .

    Web アプリケーションのデプロイについての考察 - Articles Advent Calendar 2012 Casual
  • Perlでアプリケーションをささっと書くのに役立つTips - Articles Advent Calendar 2012 Casual

    @Cside_ です。Perlを書き始めて3年ほど経ち、Perlで何か作る際の効率化の手法がそれなりに確立してきたので、それを思いつくままに紹介しようと思います。主に多言語から来てPerlにほどんど慣れてない方などを想定しています。 覚えにくい/タイプ数の多い イディオムはコードスニペット化する習慣をもつ たまに使うけどすぐ忘れるイディオムとか、よく使うけどやたらタイプ数の多いイディオムってありますよね。たとえば Test::Baseを使ったテストの書き方 DBIのメソッドのusage。selectrow_なんちゃらrefとかselectall_なんちゃらrefとか など。こういうのはコードスニペットとして保存しておいて、必要なときすぐ呼び出せるようにショートカットを割り振っておくと良いです。同じイディオムを2回以上調べたり、タイプするのだるいなーと思った瞬間に即スニペットに登録するように

    Perlでアプリケーションをささっと書くのに役立つTips - Articles Advent Calendar 2012 Casual
  • Scope::Guard等でリソース解放を実装する際に知っておきたいこと - Articles Advent Calendar 2012 Hacker

    みなさんガードオブジェクト使ってますか。ガードオブジェクトとは一般的には オブジェクト生成時になんらかのリソースを初期化・取得 オブジェクト解放時に該当リソースを解放 という動作をするオブジェクトをさします。 Perlではガーベジコレクションにリファレンスカウント方式を取っているため、ガードオブジェクトが解放されるタイミングが制御しやすいので比較的頻繁にガードオブジェクトを作って様々なリソースの初期化〜解放までを簡単にコントロールしたりします。 わかりやすい例で言うと、例えば現在実行中のスクリプトが動いている間だけ別プロセスでmemcachedのようなサーバーを立てたい、という時にProc::Guardなどのモジュールを使うと、以下のようなコードを仕込むだけで簡単にmemcachedプロセスを起動、終了することができます use strict; use Proc::Guard; my $g

    Scope::Guard等でリソース解放を実装する際に知っておきたいこと - Articles Advent Calendar 2012 Hacker
    y_uuki
    y_uuki 2012/12/15
  • vim で Perl を書くときのための tips - Articles Advent Calendar 2012 Casual

    @tokuhirom です。Perlを書き始めて8年ほど経ち、Perlで何か作る際の効率化の手法がそれなりに確立してきたので、それを思いつくままに紹介しようと思います。主に多言語から来てPerlにほどんど慣れてない方などを想定しています。 僕の秘伝のタレ的な .vimrc の中から perl に関係ある部分だけをぬきだしてお教えしましょう。すべて設定すればだいぶ快適になりそうです。とかかいてると教えるのもったいない気分になってきた。 ぼくの環境 僕は vim の環境として以下のようなものを指定しています。mattn さんからは DIS られがちです。 neosnippet unite.vim pathogen vim-perl プロジェクトの成果物をつかう https://github.com/vim-perl/vim-perl なんか最近、perl-vim から vim-perl にかわ

    vim で Perl を書くときのための tips - Articles Advent Calendar 2012 Casual
  • Encodeでラクラク日本語処理 - JPerl Advent Calendar 2009

    こんにちは!ラブプラスとときメモ4の狭間で揺れ動いているxaicronです!! 今日は日でプログラムを書いていたら避けては通れない気がする、Encodeの話をしようと思います! はじめに まず、この記事を読む前に、Perlのバージョンの確認をしてください。以下のようにやればバージョンが表示されます。 % perl -v ここで、5.8.1より下の数字ができてきた方は、Perlのバージョンアップをしてください。5.8.1より下のバージョンでは、Perlの内部文字コードが安定していないので、いい感じになりません。できれば5.8.8以上のバージョンを使いましょう。 それから、文字コードってなによって人も適当にWikiとかで調べてから読んだ方がいいと思います!! Encode.pm Encodeは昔のjcode.plやJcode.pmに代わる、現在の文字コード処理のスタンダードModuleです。

    y_uuki
    y_uuki 2012/10/19