サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
今年の「かわいい」
perl-users.jp
今日はクリスマスイブ?お前は何を言っているんだ。 今日はまだ12月16日じゃないか。イチャ付くにはまだ早いぜ。 チキンうめええええええええええええええええええええええええええええ!!!1111 mgmg、mgmg、あ、かるぱなんとかこと、かるぱねるらです。mgmg 今日はぼくがてきとーに開発しながらカジュアルにHTMLのsyntaxをチェックするために、 モジュールをでっちあげた話をするよ! HTMLバリデーションをするCPANモジュール ぼくが調べてみたところによると、HTML::TidyとHTML::Lintというやつがあるようです。 しかし、HTML::Tidyは2010年から更新されておらず、実質HTML::Lintだけという雰囲気でした。 ところで、HTML::Tidyですが、HTML4のsyntaxにしか対応していません。 つまり、HTML5で新しく追加されたタグや属性を使って
みなさんこんにちわ!みなさんはテンプレート使ってますね! Xslate つかってますね! TTerse 使ってますね!今回はうっかりハマってしまう罠を教えます! SET で作った変数はブロックスコープである ブロックスコープなんだけど SET したスコープの中にあるブロックはスコープの対象外なので以下のテストは動かなかったりするんだ。 my $tx = Text::Xslate->new({ syntax => 'TTerse' }); my $ret = $tx->render_string(<<TMPL,); [% SET chin = 'kiru' -%] [% MACRO xaicron BLOCK -%] [% chin = 'kiranai' -%] [% chin -%] [% END -%] [% xaicron() -%] [% chin -%] TMPL is $ret
Hacker track で[/articles/advent-calendar/2012/hacker/8:title=記事]を読んで頂いた方はこんにちは。それ以外の方は初めましてだと思います。数ヵ月前に CPAN Author になりました yak_ex と申します。 Perl を使い始めてから既に 10 年以上経っておりモジュールもたまに書いたりはしていたのですが、CPAN Author となると色々と手順があって大変なんじゃないか、そんな思いもありずっと憧れの存在でありました*1。同じように感じている人もいるんじゃないだろうかということで、そんな自分が CPAN Author となるハードルを下げてもらった Dist::Zilla についてご紹介させて頂きます。なお、Dist::Zilla で CPAN Author になった、なので他の CPAN Author 向けモジュールとの
Web Application をデプロイする際に、carton をつかうという方法もありますが、もっとゆるふわでいいんじゃないかなーとおもうので、もっとゆるふわにやる方法について考えてみました。 carton について carton は以下のようなことをやってくれます。 * バージョンの固定 * インストール * モジュールパスのロード carton は carton.lock というファイルにインストールしたバージョンを記録することによって、いいかんじにバージョンを固定できて、複数の環境でアプリをうごかすときに便利です。 が、しかし carton.lock は JSON ファイルなので、複数人が同時に作業しているときに conflict したりしてメンドイ! という噂もききます。実際、carton.lock をつかうと conflict がダルすぎるので carton.lock を .
@songmuです。Hackerではありませんが、僭越ながら書かせていただきます。 運用とは戦いであり、オペレーションエンジニアたちは日々殺す殺されるの戦いを繰り広げています。 殺る前に殺るしかない。可能なら一撃で。そこでScript::Ichigekiの出番です。 Script::Ichigekiは一撃こっきりしか実行しないスクリプトを安全に実行するために作られたモジュールです。 具体的には以下の要件を満たしてくれます。 クリティカルな一発スクリプト(ゲームの報酬付与処理、データ修正処理等)を 実行前に実行確認プロンプトを表示して 実行ログを残しつつ 再実行を防ぎたい(特にシェル履歴からの誤爆とか) 後々の参照のために、スクリプト自体は残しておきたい 使い方は簡単で、あなたが実行するplファイルに use Script::Ichigeki; と書くだけ。以下使用例。 % ls -A ic
こんにちは。hatak (@hisashi) です。 Perl でジョブキューというと TheSchwartz や Qudo などの名前が挙がるかと思いますが、今回はバックエンドに Redis を利用したジョブキュー "Resque" を紹介します。 Resque はバックグラウンドジョブを処理するためのライブラリで、Github を始め大規模なサイトでも利用されています。もともとは Rubyライブラリですが、Ruby 以外の様々な言語でも実装されています。今回紹介するのはその Perl 実装のモジュールです。 試してみる クライアントで入力した文字列をワーカーが表示するだけのシンプルなプログラムを作ってみます。 まずは Redis を利用できるようにしておく必要があります。今回はローカルの Redis を利用しますが、異なるホストで動作している場合は適宜ホスト名やポート番号を変更してくだ
@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 にかわ
こんばんは、最近自己紹介する機会があったので「空前のKEN_ALL.CSVブームを作った事で有名です」って言ったら結構通じた yappo です。 と言う事で今日はわけあってどのように KEN_ALL.CSV を処理しているかについて書こうと思います。 使い方に関しては https://metacpan.org/module/Parse::JapanesePostalCode https://github.com/yappo/p5-Parse-JapanesePostalCode こちらをご覧頂ければいいです。マジ簡単だから誰でも使えます。 前提知識 http://www.post.japanpost.jp/zipcode/dl/readme.html こちらの 郵便番号データファイルの形式等 を良く読むとこのエントリの理解が深まります。 Parse::JapanesePostalCode
息子のサンタクロース1号 kazeburo です。 ウェブアプリケーションなどでデータベースとの接続をリクエスト終了後に切りたいんだけど、アプリケーションのどこかで循環参照してたりで $dbh が解放されないとデータベースに接続が溜まり、データベースの最大接続数に達して新規の接続ができなくなり、正常にサービスが続けられなくなったり、椅子が飛んできたりします。 アプリケーションのバグがすぐに見つかり、接続の滞留が解消できればいいですが、そうではない時、このモジュールが役に立つかもしれません https://metacpan.org/module/DBIx::DisconnectAll https://github.com/kazeburo/DBIx-DisconnectAll 使い方は簡単。 use DBIx::DisconnectAll; dbi_disconnect_all(); dbi
こんにちは、週末海でマンボウを獲っていたらラギアクルスに襲われた@hirataraです。今回はPerl Data Languageについて紹介します。 Perl Data LanguageとはMATLABやNumpy、Rなどと同様に、多次元配列を効率よく扱って数値計算を実現するためのライブラリです。cpanmで普通にインストールすれば使えますが、グラフを描画したり本格的な数値計算のライブラリであるGSLのバインディングを利用したりする場合はhomebrewでゴニョゴニョしたりする必要があるので、多少頑張って下さい。 基本的にはpdl関数でオブジェクトに変更してから使います。 use PDL; my $pdl = pdl [[1, 0, 0], [0, 1, 0], [0, 0, 1]]; print $pdl; 【実行結果】 [ [1 0 0] [0 1 0] [0 0 1] ] pdlが
アドベントカレンダーをご覧のみなさん、こーんにーちわ! トミール です (`・ω´・)ノ 今年はずっと、Voyage Group 社内のいろんな子会社名義で、スマートフォン向けアプリのバックエンドAPIばっかり作てました。直近のやつはひさびさの PHP で書くことに (o_o) 最終的に、複数の言語を使ってみることはエンジニア人生にとって有益とおもう。PHPでちゃんと書いてみてあらためてそう思った。始めは非効率だけど外国行ってカタコトでコミュニケーションする楽しさがあるし学ぶことがある。言語そのものだけじゃなく文化(コミュニティやエコサイクル)ごと見るの大事。ただ、何か慣れた “ホーム” ツールがあるとどこで何する上でもいい。ぼくの場合は perl にだいぶ助けられますた。 たとえばテストね。クライアントアプリ開発側と API 仕様にぎったら、まず先に Bahavior のテストを書いてし
みなさんガードオブジェクト使ってますか。ガードオブジェクトとは一般的には オブジェクト生成時になんらかのリソースを初期化・取得 オブジェクト解放時に該当リソースを解放 という動作をするオブジェクトをさします。 Perlではガーベジコレクションにリファレンスカウント方式を取っているため、ガードオブジェクトが解放されるタイミングが制御しやすいので比較的頻繁にガードオブジェクトを作って様々なリソースの初期化〜解放までを簡単にコントロールしたりします。 わかりやすい例で言うと、例えば現在実行中のスクリプトが動いている間だけ別プロセスでmemcachedのようなサーバーを立てたい、という時にProc::Guardなどのモジュールを使うと、以下のようなコードを仕込むだけで簡単にmemcachedプロセスを起動、終了することができます use strict; use Proc::Guard; my $g
はじめまして。こんにちは。kfly8です。 なべこたつみかんみかんみかん!黄色になった手でコードを書きます。 年が明けたら熱海に温泉はっかそん行きたいです。 コードを読んでいると この処理やらなくていいんじゃないか? ってこと、よくあると思います。 あるMiddlewareが変な動きをしてました # app.psgi use strict; use warnings; use utf8; use Plack::Builder; builder { # XXX 今回問題になってしまったSession周りを # よしなにやってくれてるMiddleware enable Hoge::Session => ( session_store => Plack::Session::Store->new( ... ), ); $app; } 1; # Hoge::Session.pm package Ho
やあハッキングモンスターのみんな、元気かーい? ぼくは普通です。 きょうはみんなでログをう゛ぁーてぃかるぱみゅぱみゅしちゃうぞ!あ、こんにちは bayashi です。 さて、ログは見てるかい?cat してるかい? tail してるかい? GB単位のログを vim で開いてフリーズさせてやいないかい?ログは吐いたら終わりじゃいけないぜ!ちゃんとうぉっちしないと鬼がでちゃうぞ!! とはいえ、そんなログも、たいていは1行につらつらと書かれてて見るのがつらいね!!例えばこんなやつだ。 $ tail log 127.0.0.1 - bayashi [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326 "http://www.example.com/start.html" "Mozilla/4.0 (compatible
おでんが美味しい季節になって来ましたね。たまごがないとおでんを食べた気になれない mattn ですこんにちわ。 Twitter や Facebook に代表される大型SNS(ソーシャルネットワーク)を見ると、数年前には考えられない程の動的コンテンツを扱っていて、機能は目覚しく移り替えし、Ajax API を使うなんてのは当たり前の世の中になりました。 もはや「Ajax API を提供してクライアントサイドで動的コンテンツを整形する」といった事は、こういった大規模サイトでなくとも一般的な状況になりつつあります。 モダンなウェブサイトを作る際、僕はよく API を先に作ります。データベース設計が終わった段階で、それを API としてサーブする為の仕組みを作ります。 Java であれば エンティティ DAO (Data Access Object) サービス といった流れでしょうか。Perl に
やぁみんな!!今というライフをエンジョイしているかーい!?私は普通です。 今日は、みんなにとってもクールでハッピーなモジュールを紹介してやるぜ!あ、こんにちは xaicron です。 それはこいつだ! iOS に通知を送るためのモジュール、その名も Net::APNs::Extended っつーんだ。よろしくな!!昔、typester さんが AnyEvent::Net::APNS って言うモジュールを出してますけど、できることは大体一緒です。 使い方はベリィイージー!!まずは、にっくき Apple に諸々とアプリの申請をだしたりして紆余曲折の末にクライアント証明書を手に入れてくれ!!もちろんそのためにはプッシュ通知を受け取る iOS アプリが必要なので頑張って書いてください。 証明書とアプリができたらあとは送るだけ!!!と見せかけて、まずは端末から device token っつーのを取
みなさんこんにちは。akiymです。 2012年に初めてリリースされたモジュールの中で思わず「なにこれ」と言ってしまうモジュールを独自の判断で選定しました。残念ながらこの記事はあなたの役に立たないものとなっています。 thanks - そのモジュール、お断りします( ゚ω゚ ) https://metacpan.org/module/thanks ありがとうの感謝の気持ちを伝えるモジュールかと思いきや、 no thanks するために生まれたモジュール。 以下のコードのように同じスクリプト内で宣言されたパッケージをuseすると Can't locate Foo.pm in @INC と怒られますね。 これを可能にするのがthanksです。ちゃんとuseできるようになり、->importも呼ばれるようになっています。 package Foo; # no thanks; sub new { .
こんにちは。先日、調べものをしてたらいつの間にかインナーに着ていたT-shirtsを破っていたyusukebeです。 色んなところで書いているネタな気がしますが、イマイチ良さが伝わってないのでもう一度まとめます。まず、Dropbox便利ですよね^^ PCから手元のストレージ感覚で保存したものが、クラウド?に保存され、各々のデバイスで同期される。これは素晴らしい。次に、この記事は「はてな記法」で書かれていますが、僕は最近もっぱら「Markdown記法」で文章を書いていて、シンプルで見やすく素晴らしい。となると「Markdownの文章をDropboxに保存して共有」なんてユースケースは割とあるのではないでしょうかね? Markdownを使っていて気になるのはHTMLに変換した見た目だったりしますね。Markdownはプレーンな状態とレンダリング後の見た目の差異が少ない感じ... というのが売り
「君のPSGIファイルを僕のミドルウェアでいっぱいにしたい」という台詞を思いついたけど、埋めれるほどPlack::Middlewareを書いてないkazeburo です。 そんな僕が一番最近書いた Plack::Middleware がYet Anotherなアクセスログ記録ミドルウェア AxsLog です。某二人組は今年でデビュー20周年らしいですが、あんまり関係ありません。 https://metacpan.org/module/Plack::Middleware::AxsLog Plackのコアパッケージの中に Plack::Middleware::AccessLog が含まれてますが、以前からこのミドルウェアが比較的「重い」ということが気になっていました。マイクロベンチマークですが、 $ cat test.psgi sub { [200,['Content-Type'=>'text
Perl Advent Calendar 4日目を担当しますokamuuuです。 皆さん朝出かけようとしたら雨が降っていて傘を取りに戻った経験はありませんか? 今住んでいるところはエレベーター付きなので、そんなことがあると下まで降りて、また昇って、傘取って来てまた降りるっていう無駄な作業が発生します。 怠慢な皆さんはすでにお気づきだと思いますが、これは「いつまでも繰り返されるであろう無駄な作業」です。 そんなのもうハックしちゃいましょう。 ※ちなみにこの記事Macユーザーを対象にしています。ご了承下さい。 天気情報を取得する というわけで適当な天気予報サイトを巡回します。今回は以下のURLを使います。 東京都以外の人は適宜自分の地域に置き換えて下さい。 http://weather.yahoo.co.jp/weather/jp/expo/umbrella/13/4410.html curl
えーとこんにちは。tokuhirom です。 hacker track の4日目ということで、なんか書かなきゃいけないなあとおもっているんですが、最近あまりモジュールとかかいてなくて、今年だしたものといえば Test::Ika, Test::Base::Lite, Test::Pretty, Module::Build::Pluggable, LWPx::ParanoidHandler ぐらいのもの。。 あまりにも書くことがないので、O/R Mapper をかきました。 https://github.com/tokuhirom/Karas/ https://metacpan.org/release/TOKUHIROM/Karas-0.01 Teng よりも簡素で、結構つかいやすいものになりました。 Teng みたいな connection handling schema つくらなくてもつか
こんにちは、こんにちは。カジュアルにPerl使っているkoba04 です。 Webアプリを作っていて、確率で処理を分けたり複数の要素を重み付けて選びたいことってありませんか? 真っ先に浮かぶのはガチャみたいなものですが、それ以外にもランダムでバナーを出し分けてみたり、接続するサーバーを重み付けて選んだり色々と使い道が思い浮かびます。 そんな時に使える二つのモジュールをご紹介したいと思います。 詳しくは下記の作者の方のブログを見てください。 Sub::Rate Data::WeightedRoundRobin 以上! でもいいのですが..順番に紹介してみたいと思います。 モジュールなしで実装 優先度を付けてデータを選びたい時はrandを使っての実装が思い浮かびますが、バグりそうな気もするし面倒だし出来れば書きたくないです。 (書き方が悪いという説もある) # 結果をdumpする関数 sub
こんにちは!hirobanexです!本日はフランクに、2つの配列の集合を良い感じに取り扱えるList::Compare のご紹介です。podみると、いろいろなメソッドとかオプションがあるのですが今回ご紹介するのは、 get_intersection get_union get_Lonly get_Ronly の基本的な4つのメソッドです。 取り扱う集合とメソッドの関係 それぞれのメソッドの機能をコトバで説明するよりも図で説明したほうがわかりやすいのですが、ベン図のあれっていえばだいたいの方はわかると思うので、図は出しませんwというわけで、それぞれ以下のようになります。 get_intersection : 2つの配列の共通部分を取り出す get_union : 2つの配列で合わせた部分を取り出す(List::MoreUtilsのuniq関数と同じ) get_Lonly : 2つの配列のうち
前説 おはようございます。最近単著が出来たkanです。何故か毎年のようにadvent calendarの参加者に寿司を奢っていますが、そろそろ限界です(財布が)。perl advent calenderでは参加者と共に寿司スポンサーを募集しています。 モジュール紹介 今日は、拙作のSmart::Optionsというモジュールを紹介します。リリースされたのが今年の後半になってからで日の浅いモジュールですが、自分が過去に作ったoptsというCPANモジュールや、optimistというnode.jsのライブラリの知見を生かして作られています。コンセプトは「直感的にざっくり使えて、使おうと思えば細かい設定も可能」という感じです。 使い方 use Smart::Options; my $argv = Smart::Options->new->parse; if ($argv->{rif} - 5 *
@Cside_ です。Perlを書き始めて3年ほど経ち、Perlで何か作る際の効率化の手法がそれなりに確立してきたので、それを思いつくままに紹介しようと思います。主に多言語から来てPerlにほどんど慣れてない方などを想定しています。 覚えにくい/タイプ数の多い イディオムはコードスニペット化する習慣をもつ たまに使うけどすぐ忘れるイディオムとか、よく使うけどやたらタイプ数の多いイディオムってありますよね。たとえば Test::Baseを使ったテストの書き方 DBIのメソッドのusage。selectrow_なんちゃらrefとかselectall_なんちゃらrefとか など。こういうのはコードスニペットとして保存しておいて、必要なときすぐ呼び出せるようにショートカットを割り振っておくと良いです。同じイディオムを2回以上調べたり、タイプするのだるいなーと思った瞬間に即スニペットに登録するように
前置き こんにちは。syohexです。好きな寿司ネタは鯖というかバッテラです。今回は拙作の Graphviz::DSLというモジュールを紹介させていただきます。 Graphviz::DSLは Ruby Gemの Gvizに影響され作成したモジュールです。 既存の Graphvizモジュールは OOインタフェースが中心で '$graph->add_node'のようなメソッドを使いグラフを構築していくものが主でした。しかし個人的に OOインタフェースの場合, 最終的なグラフの形状が把握しづらいという印象を持っていました. 'add_node'などのコードを追い, 自分の頭の中でグラフの形状を考える必要があるためと思います. ところが Gvizはそうではなく, DSLを用い, DOTファイルを直接書く感覚に近いものでした. 今までの Graphvizインタフェースは DOTを避けすぎていたように
次のページ
このページを最初にブックマークしてみませんか?
『Perl-users.jp - 日本のPerlユーザのためのハブサイト』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く