タグ

2012年1月24日のブックマーク (18件)

  • #01 Teng is simple and lightweight ORM - Articles Advent Calendar 2011 Teng

    こんにちは! 今年はボクが作ってるTengというPerlORMについて 25日かけて紹介してみたいとおもてるんだ。 師走ってことで仕事もあっていろいろあって忙しいから完走できるかどうか不安なんだけど みんなに是非つかってもらいたいから頑張るんだ。 この記事執筆時点のTengの最新バージョンは0.14_03のdev releaseとなっています。 25日間でTengのバージョンがupされるかもしれませんがその場合は注意書きをいれますのでご注意ください。 Tengのリポジトリはhttps://github.com/nekokak/p5-TengこちらですのでCPANにupされる前に試したい! Tengにpatches and testsを叩きつけたい!という場合はforkしてpull requestしてくだされば よきにmergeしますよ。 Tengはなるべく依存モジュールが増えないようには

    #01 Teng is simple and lightweight ORM - Articles Advent Calendar 2011 Teng
    barlog
    barlog 2012/01/24
    {Perl-Teng]1
  • STF分散オブジェクトストレージ - Articles Advent Calendar 2011 Hacker

    lestrratです。日めでたく正式にSTFがオープンソースとしてlivedoor ラボ EDGE上でリリースされました! プレスリリースはこちら。 いままでちょこちょこと先出し先出しで情報をだしていましたが、これで当に当の正式公開です。一応上記のサイト以外に「公式」サイト的なものも用意しました。ソースコードはgithub上に公開されています。ということで使って欲しいので紹介記事です。 STFは分散オブジェクトストレージです。Perlメインの似たようなシステムとしてはMogileFSが有名ですが、STFは後発のメリットを生かしてPSGI互換にしたり、使用するプロトコルを基的にHTTPというオープンで枯れた技術を採用したりとメンテナンス・運用の利便性があがっていると考えています。 歴史 STFは元々ApacheモジュールといくつかのPerlワーカーで書かれていましたが、ひょんなことか

    STF分散オブジェクトストレージ - Articles Advent Calendar 2011 Hacker
  • Perl::Metrics::Lite - プラガブルなメトリクス測定モジュール - Articles Advent Calendar 2011 Hacker

    こんにちは。dann です。みなさん、意識は高まっていますか? 僕は上々です。 今回は拙作の Perl::Metrics::Lite というモジュールを紹介させて頂きます。 開発した動機 Perl::MetricsやPerl::Metrics::Simpleなど、PerlのコードのMetricsを測定するツールがあるのですが、どれも使い勝手の点でいまいちです。 Perl::Metricsは測定項目をプラガブルに追加可能なのですが、APIがプリミティブすぎてMetricsを測定するには使いずらいです。 一方、Perl::Metrics::Simpleは、Perl::MetricsをよりユーザーフレンドリなAPIにして、名前の通りシンプルに使えるように作られているのですが、今度は測定項目が拡張可能になっておらず、特定のメトリックしか測定できませんでした。 従来のモジュールの問題点を解決するため

    Perl::Metrics::Lite - プラガブルなメトリクス測定モジュール - Articles Advent Calendar 2011 Hacker
    barlog
    barlog 2012/01/24
    21 Perl::Metrics::Lite
  • dotcloudで複数サーバーが必要なシステムを立ち上げたりした話 2011年12月版 - Articles Advent Calendar 2011 Hacker

    どうも、最近あまりコード書いてないと思ってたけど、よく考えたら今回ネタにしているアプリに関して*だけ*はコード書いてるlestrratです 皆さんはdotcloud使ってますか?僕は基的にはdotcloudにほれこんでいて、料金とかの問題がGAEとかみたいに表面化しなければしばらくは使っていきたいと考えています。 ちなみに僕はありがたいことにβユーザーなんですね。なんでもしかしたら一部非βユーザーの方には使えない機能とかの話があるかもしれません。まぁその辺りは適当に読み進めてやってください。 題 さて、ここのところ一番時間をかけてるのはJenkinsとSTFというアプリケーションです。なんでSTFに色々手を入れているかというと、まぁ日々のメンテナンスもあるのですが、もうちょっとしたら正式にオープンソース化をするからです。今は僕の先走り的な感じでちょこちょこ情報が漏れてる状態ですね。 で

    dotcloudで複数サーバーが必要なシステムを立ち上げたりした話 2011年12月版 - Articles Advent Calendar 2011 Hacker
  • FormValidator::Simple::Plugin::V8 - バリデーションルールをサーバー/クライアントで共有するためのモジュール - Articles Advent Calendar 2011 Hacker

    FormValidator::Simple::Plugin::V8 - バリデーションルールをサーバー/クライアントで共有するためのモジュール 前置き こんにちは。cho45 です。もう当に年末ですね。みなさん、意識は高まっていますか? 僕は年末に向けて下がりつつあります。それはともかく、今回は FormValidator::Simple::Plugin::V8 というモジュールを紹介させて頂きます。 ウェブアプリケーションを開発するとき、だいたいの場合、サーバーサイドで入力にバリデーションをかけますよね。そんなとき便利な FormValidator::Simple というモジュールがあり、こちらはみなさんご存知かと思います。さらに近年ではフォームを submit する前にクライアントサイド JavaScript でリアルタイムでエラーがわかって欲しいとう欲求もときどきあるというのも、ご

    barlog
    barlog 2012/01/24
    17 FormValidator::Simple::Plugin::V8
  • GD::Chord::Piano - ピアノのコード表を画像出力する - Articles Advent Calendar 2011 Hacker

    前置き こんにちは。bayashi です。みなさん、意識は高まっていますか? 僕は上々です。今回は拙作の GD-Chord-Piano というモジュールを紹介いたします。 play it おもむろに以下のコードを実行してみます。 use GD::Chord::Piano; my $im = GD::Chord::Piano->new; open my $fh, ">", "c.png" or die $!; print $fh $im->chord('C')->png; close $fh; 次のような画像が吐き出されてしまいます。 赤い印のついたところを押さえれば、C が弾けますね! ド、ミ、ソ!! generate メソッドを使えば、おれおれコードを描画することもできてしまいます。これはびっくり。 my $im = GD::Chord::Piano->new; $im->generat

    GD::Chord::Piano - ピアノのコード表を画像出力する - Articles Advent Calendar 2011 Hacker
    barlog
    barlog 2012/01/24
    16 GD::Chord::Piano
  • Data::Monad::CondVar でAnyEvent を使いやすくする - Articles Advent Calendar 2011 Hacker

    こんにちは。hiratara です。みなさん、意識は高まっていますか? 私は上々です。今回は拙作の Data::Monad::CondVar というモジュールを紹介させて頂きます。 モジュール名にMonad というNGワードが入っていますが、このモジュールはAnyEvent 用のJSDeferred です。JSDeferred はみなさん好きですね? 嫌いな人は好きになるまで何度も繰り返し使って好きになればいいと思います。 コールバック方式の関数を順に呼び出す場合、一般に記述がネストします。 use AnyEvent; sub add1($$) { my ($n, $cb) = @_; my $t; $t = AE::timer 1, 0, sub { $cb->($n + 1); undef $t; }; } my $cv = AE::cv; add1 0 => sub { my $n

    Data::Monad::CondVar でAnyEvent を使いやすくする - Articles Advent Calendar 2011 Hacker
  • Skype::AnyでSkype botを作る - Articles Advent Calendar 2011 Hacker

    メッセージを送る use Skype::Any; use Skype::Any::User; my $skype = Skype::Any->new; # echo123にメッセージを送る my $user = Skype::Any::User->new('echo123'); $user->send_message('どうもー'); 自動返信 use Skype::Any; my $skype = Skype::Any->new; # メッセージが送られてきたら $skype->message_received(sub { my $self = shift; $self->chat->send_message('おはよう'); }); $skype->run; $skype->run というものが出てきました。これはイベントループ開始の合図です。 また、誰がメッセージを送ったのが知りたい

    Skype::AnyでSkype botを作る - Articles Advent Calendar 2011 Hacker
  • Time::Piece::Plus - Time::Pieceに便利メソッドを - Articles Advent Calendar 2011 Hacker

    はじめに こんばんは、takuji31と申します。 今回はPerl歴2年弱の初心者である私が作ったTime::Piece::Plusというモジュールを紹介します。Hacker(笑)となってしまった方はすみません。 さて皆さん、Time::Pieceというモジュールはご存知でしょうか? 既に[/articles/advent-calendar/2011/hacker/7:title=7日目のトラック]にて紹介されているのでご存知でない方はそちらを見ていただければと思います。 このTime::Piece、非常に軽快でシンプルが故に意外とかゆいところに手が届かないことがあるのではないでしょうか? 例えばDateTimeにあるtruncateメソッドはTime::Pieceにはありません。 例えば今日の0時を取得したい時は use strict; use warnings; use utf8; u

    Time::Piece::Plus - Time::Pieceに便利メソッドを - Articles Advent Calendar 2011 Hacker
    barlog
    barlog 2012/01/24
    12 Time::Piece::Plus
  • データ分散とインデックス最適化のためのハッシュ関数の利用 - Articles Advent Calendar 2011 Hacker

    はじめに こんにちは、piarra です。みなさん、意識は高まっていますか?私は上々です。 という書き出しをやめたくてやめられなかったのが心残りです。 昨年までは、Casual Trackで寄稿させていただいていましたが、今年はYAPCで話したこともあり、Hacker Trackに初挑戦させていただきます。得意のMD5暗算法とその習得法について解説したいと思っていたところですが、より日常に役立つ方がよいかと思い、MD5やその他のハッシュ関数の活用法について少し触れてみたいと思います。 データサンプル DBMSを考慮せず、以下のようなデータサンプルがあったと考えてみましょう。 +----+-----------------------+ | id | url | +----+-----------------------+ | 1 | http://www.google.com | | 2

    データ分散とインデックス最適化のためのハッシュ関数の利用 - Articles Advent Calendar 2011 Hacker
  • FarmBalance: Webファームシステムにおけるデータ件数やトランザクション量等の均等分散 - Articles Advent Calendar 2011 Hacker

    はじめに はじめまして! dukkiedukkie と申します。みなさん、意識は高まっていますか?私は当麻紗綾のように「高まるぅ〜」です。 先日test Tracksに初めて投稿させていただきましたが、こちらのTrackはレベルの高い皆さんばかりで当にお恥ずかしい次第ですが、最近作成し今なおより良いものに改良していこうと考えております拙作のモジュール、FarmBalancehttps://github.com/dukkie/FarmBalance/blob/master/lib/FarmBalance.pmについて今日はお話させてくださいまし。 大量トラフィックに抗しうるWebファーム インターネット業界でのお仕事をされているかたですと、利用者からの過密リクエストやトランザクションに対して、「いかにシステムを分散構成するか?」を悩まれたご経験があることと思われます。3〜4台のアプリケーシ

    FarmBalance: Webファームシステムにおけるデータ件数やトランザクション量等の均等分散 - Articles Advent Calendar 2011 Hacker
  • App::Donburi - IRCを使い倒すアプリ - Articles Advent Calendar 2011 Hacker

    はじめに こんばんは。大遅刻に定評のあるふしはらかんです。……皆さんごめんなさい。 App::Donburiは名前空間から分かるように、ライブラリではなくアプリケーションです。Donburiという名前は開発中に丼がべたかったという理不尽な理由で付けられたものでアプリの機能とは全く関係なく、バッチ等からIRCへの通知を簡単にする、というのがdonburiの簡単な説明になります。 インストール & 起動 App::DonburiはCPANにアップロード済みなので、cpan(cpanm)コマンドで簡単に導入できます。 cpanm App::Donburi インストールが済んだら、donburiコマンドを実行してみましょう。 % donburi donburi need 'config.yaml'. I write config.yaml sample at ./config.yaml . pl

    App::Donburi - IRCを使い倒すアプリ - Articles Advent Calendar 2011 Hacker
  • App::pfswatch - ファイルの変更を検知して、指定したコマンドを実行する - Articles Advent Calendar 2011 Hacker

    前置き こんにちは、aloelightと申します。みなさん、意識は高まっていますか? 私は上々です。 今日は、拙作のpfswatchを紹介します。 ファイルが変更されたら特定のコマンドを叩きたいなーと思ったことはありませんか?pfswatchを使うと簡単に実現できます。 使い方 インストール方法は cpanm App::pfswatch を叩くだけです。適当なbin/に pfswatchコマンド がインストールされます。インストール後は、pfswatchコマンドに監視したいディレクトリやファイルと実行したいコマンドを-eオプションのに続けて渡してあげます。 $ pfswatch /path/to/watch -e perl -E 'say "wassyoi"' 私は以下のようなコマンドで、モジュールを更新したらテストを自動で実行するために使っています。別窓で立ち上げておくと、横目で互換性が

    App::pfswatch - ファイルの変更を検知して、指定したコマンドを実行する - Articles Advent Calendar 2011 Hacker
  • Time::Piece::Over24 - 24時以降の時間をTime::Pieceで扱う - Articles Advent Calendar 2011 Hacker

    前置き こんにちは。はじめまして i47_rozary と申します。みなさん、意識は高まっていますか? 僕は上々でいたーいです。今回は拙作のTime::Piece::Over24というモジュールを紹介いたします。 皆さん Time::Piece ってモジュールご存知ですか? 軽いとの評判もあり、DateTime に代わって使われるようになってきている時間系のモジュールであります。 ボクは時間周りの処理をよくするので、よく使うんですけれども。Time::Pieceは、24時以降の時間(例えば、25時は翌日の1時であるとか)を扱えないので、深夜帯に生きるボクには活かせづらいときがままありました。 だので、そこら辺をよしなにしたいなといった趣向のモジュールになります。 24時以降のTime::Pieceオブジェクトを作っちゃう use strict; use warnings; use Time

    Time::Piece::Over24 - 24時以降の時間をTime::Pieceで扱う - Articles Advent Calendar 2011 Hacker
    barlog
    barlog 2012/01/24
    7 Time::Peace::Over24
  • perl の locale 設定と autolocale - Articles Advent Calendar 2011 Hacker

    次に拙作 autolocale の紹介をさせて頂きます。 autolocale は上記のような状況を踏まえて、$ENV{"LANG"} が変更された時に自動的に locale 設定を変更するプラグマモジュールです。 使い方 使い方は以下のようになります。 use autolocale; $ENV{"LANG"} = "ja_JP.UTF8"; # locale 設定が "ja_JP.UTF8" に変更 my $time; { local $ENV{"LANG"} = "C";# locale 設定が "C" に変更 $time = localtime; } # スコープが変わり、$ENV{"LANG"} の値が "ja_JP.UTF8" に戻り、locale 設定も"ja_JP.UTF8" に no autolocale; # locale の自動設定を無効化 $ENV{"LANG"} =

    perl の locale 設定と autolocale - Articles Advent Calendar 2011 Hacker
  • Text::UnicodeTable::Simple - 全角文字を含むテキストテーブルを描く - Articles Advent Calendar 2011 Hacker

    前置き こんにちは. syohexと申します. みなさん意識は高まっていますか ? 私は若干微妙ですが, 上々です. 今回は拙作の Text::UnicodeTable::Simpleというモジュールを紹介します. 現在 CPANにアップされている私の唯一のモジュールでもあります. Text::UnicodeTable::Simpleはテキストで表を書くというモジュールです. 同様のモジュールは Text::Table, Text::ASCIITable, Text::SimpleTable等多数存在しているのですが, ひらがな, カタカナ, 漢字といった全角幅の文字を含めると表がずれるという問題があります. Text::ASCIITable::TWという一部の言語に特化したものはあるんですが, Moose依存であったり, 何より使用言語が限られるのは避けたかったので一から作りました. T

    Text::UnicodeTable::Simple - 全角文字を含むテキストテーブルを描く - Articles Advent Calendar 2011 Hacker
  • 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
  • App::Rolling - 標準入力を世代管理されたファイルに書き出す - Articles Advent Calendar 2011 Hacker

    前置き こんにちは。bayashi です。みなさん、意識は高まっていますか? 僕は上々です。今回は拙作の App::Rolling というモジュールを紹介いたします。 といっても、絶賛開発中のモジュールなので、ここで紹介したインターフェースは変更されるかもしれません。 つまり、人柱、大歓迎で㌃ 何をするモジュール? App::Rolling は、標準入力を世代管理されたファイルに書き出す目的で作っています。例えば、いつ起きるかわからない適当な通信のTCPダンプを取得したい場合、ひとつのファイルにひたすら書き出して捉えるのは、なんとなく気が引けますよね。そんなとき、App::Rolling に同梱される roll コマンドを使えば、好きな間隔で、好きな世代だけローテートさせながら、ファイルに書き出すことができるようになります。 通常、以下のようにダンプとったりしますね。 $ /usr/sbi

    App::Rolling - 標準入力を世代管理されたファイルに書き出す - Articles Advent Calendar 2011 Hacker