Hypermedia: The Missing Element to Building Adaptable Web APIs in Rails (増補日本語版)Toru Kawamura
![The new Text::Hatena](https://cdn-ak-scissors.b.st-hatena.com/image/square/87c7e90450c21cba6f53de217f086a2ec44c8a9b/height=288;version=1;width=512/https%3A%2F%2Fcdn.slidesharecdn.com%2Fss_thumbnails%2Fnew-text-hatena-120818021605-phpapp01-thumbnail.jpg%3Fwidth%3D640%26height%3D640%26fit%3Dbounds)
Perl 5.14.0が出ました。気になるものとして、新しい標準モジュールに入った HTTP::Tinyがあります。cpanmも使っているモジュールです。 標準モジュールで HTTPクライアントが簡単にかけると、助かる場面と いうのは多いのではないでしょうか。 perl5.14.0 Jesse Vincent / perl-5.14.0 - search.cpan.org ソース 指定した URLから jpeg, gifのリンクを抜き出すというものです。 LWPを意識していると思われ、簡単なことをやるならほぼ同じです。 getの戻り値が HTTP::Responseのようなオブジェクトではなく、 ハッシュとして返ってくるというぐらいですかね。 #!/usr/bin/env perl use strict; use warnings; use HTTP::Tiny; my $url = sh
今年もよしなにお願いいたします 連載第18回ではlocal::libの話題を取り上げましたが、今回はそのときにもちらと紹介した、モジュールをインストールするときに利用するいくつかのモジュールについて簡単にまとめてみます。 ExtUtils::MakeMakerが生まれるまで Perlがバージョン3でコンパイル時にユーザ独自のライブラリを組み込んで本体機能を拡張できるようになったとき(1990年)、おそらくもっとも喜んだのがデータベースを使っていたユーザでした。彼らはいそいそと自分の使っていたデータベースのライブラリをPerlに組み込み、それとわかる名前をつけて公開しました。当時の記録によれば、Oracleに対応したOraperlやPostgreSQLに対応したPgperlなど、データベース関連だけで8つないし9つの専用Perlがあったようです[1]。 でも、このアプローチには問題もあ
ATNDのAPIを簡単に使えるようにすることを目指したモジュールを作りました。 https://github.com/memememomo/p5-WebService-Simple-ATND yusukebeさんの「WebService::Simple」を使って実装しています。 使い方は以下の通りです。 ATNDには「イベントサーチAPI」と「出欠確認API」があります。 どちらのAPIを使うかによって、「query_events()」か「query_users()」を呼び出して、クエリビルダを作成します。 検索クエリのパラメータは「add_{パラメータ名}」メソッドで追加していき、getメソッドにクエリビルダを渡してAPIにアクセスします。 返されるレスポンスは、すでにパースされた状態になっています。検索クエリに対応するイベントは、eventメソッドで簡単に取得できるようになっています。
ExtUtils::Install, ExtUtils::Installed を使うと cpan コマンドでインストールしたモジュールについてあれやこれや調べる事が出来ます。 インストールされているモジュール一覧 perl -MExtUtils::Installed -le 'print join "\n" => sort ExtUtils::Installed->new->modules;' 特定のモジュール名が属する dist に含まれるファイル一覧 $ perl -MExtUtils::Installed -le 'print join "\n" => sort ExtUtils::Installed->new->files(shift @ARGV);' YAML::Syck /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi
Perlで、インストールされているモジュールの一覧を取得するには ExtUtils::Installed を使うとよいという記事をよく見かけていたので、自分もよくそのようにしていました。 新しいPerlに今まで使ってたモジュールをまとめてインストールする - 酒日記 はてな支店 cpan コマンドでインストールしたモジュールを調べる - Yet Another Hackadelic しかし本日、perlbrewでperl-5.12.2をインストールした後、bin/ 配下に置かれるコマンドをなんとなく眺めていたところ、instmodsh というコマンドがあることに気付きました。これを使うと、 $ instmodsh Available commands are: l - List all installed modules m <module> - Select a module q - Q
Log::Minimal v0.02をリリースしました。xaicronさんのpatchにより出力するログのレベルを変更することができるようになりました。 WARN以上のログだけを出したい場合、$Log::Minimal::LOG_LEVEL を変更します。 use Log::Minimal; local $Log::Minimal::LOG_LEVEL = "WARN"; infof("info"); #出力されない warnf("warn"); #出力される デフォルトのレベルはDEBUGです。なお、デバックメッセージを出すには環境変数も設定されている必要があります。 ところで、Log::Minimalでは4つのログレベル、DEBUG、INFO、WARN、CRITICALをサポートしていますが、他のLogモジュールではより詳細なレベルを用意しているものがあります。そのため、アプリケーショ
Perlのコードを書いていると各種モジュールに分割してメソッド呼び出しをバシバシ行うと思うんですが、 package Proj::Api::User; sub new { bless {}, +shift } sub lookup { my ($self, $args) = @_; warn $args->{user_id}; } 的なコードを書くと思うのですよ。 この場合、lookupメソッドはpackage名にあるUserから連想して $argsにはuser_idが入っているというルールを決めておけば、 まぁとりあえず問題なさそうにみえますが、(結構楽なのでこうしてしまいがちなんですが) 本当にuser_idがあるかどうかチェックしたほうが本当はいいわけですね。 そこでParams::Validateというモジュールがあります。 コレを使うとこのようにかけます package P
module Foo def hello puts "hello" end end Foo::hello #-> undefined method `hello' for Foo:Module (NoMethodError) includeしないと使えないのかな… module Foo def hello puts "hello" end end module Bar include Foo def hello2 hello hello end end def tmp include Bar hello2 end tmp hello # 呼べる うーむ、includeすれば使えるは使えるが、includeはモジュールの中のメソッドをクラスに追加するのであって、メソッドのローカル変数として関数オブジェクトをインポートするのとは違うんだなぁ。これだと実質的に「インポートしたモジュールの中身はグ
2010年08月23日08:00 カテゴリLightweight Languages perl - Data::Decycle で悪循環を断とう! Data::Decycleというモジュールをリリースしたのでお知らせします。 /lang/perl/Data-Decycle/trunk - CodeRepos::Share - Trac dankogai's p5-data-decycle at master - GitHub Dan Kogai / Data::Decycle - search.cpan.org Perlは循環参照が苦手 有名な話ですが、Perlで循環参照を作ると、プログラムが終了するまでその分のメモリーは解放されません。 perlobj - search.cpan.org use strict; use warnings; { package Dummy; sub new
cpan-outdated という、使っている CPAN module が古くないかどうかを確認できる便利なスクリプトがありますが、その cpan-outdated さんが local::lib に対応してました。 % cpan-outdated -L extlib | cpanm -L extlibなどとやると、extlib/ 以下のふるいモジュールを一気にアップグレードできます。 まあ気がむいたらやってみるといいんじゃないでしょうか。
Perl-5.12.1 がリリースされたということで早速インストールされたかたも多いと思いますが、新しい Perl にモジュールを全部入れ直すのは面倒ですよね。 ExtUtils::Installed を使うと楽ができます。 今まで使ってる perl でインストールされているモジュールの一覧をファイルに落として、新しい perl で cpanm に食わせるだけです。 $ cpanm ExtUtils::Installed $ perl -MExtUtils::Installed -e 'print "$_\n" for ExtUtils::Installed->new->modules' > modules.txt $ perlbrew switch perl-5.12.1 $ cpanm < modules.txtあと、perlbrew でインストールした直後は cpanm も perl
xaicron's pm-uninstall at master - GitHub 今までも、CPAN モジュールをアンインストールするために、 ExtUtils::Install と ExtUtils::Installed を使った、以下のようなエイリアスを書いて使っていたのですが、 alias cpan-uninstall='perl -MExtUtils::Install -MExtUtils::Installed -e "unshift@ARGV,new ExtUtils::Installed;sub a{\@ARGV};uninstall((eval{a->[0]->packlist(a->[1])}||do{require CPAN;a->[0]->packlist(CPAN::Shell->expandany(a->[1])->distribution->base_id=~m
そういえば C で quine 書いた覚えがないなー、あと Linux のカーネルモジュール書いてみたいなー、と思ったので、練習として Linux のカーネルモジュールで quine を書いてみました。 ref: http://github.com/mame/kernel-mode-quine ビルド方法。まず、環境にあわせて Makefile の KDIR をいじってください。Ubuntu ならいじらなくてもいけるかも。Debian だと linux-headers とか入れればこのままで行けるかも。とにかく make が通れば OK 。 $ vi Makefile $ makeinsmod でカーネルにロードする。素人が書いたカーネルモジュールなので、何が起きても知りません。 $ sudo insmod ./quine.ko/proc/quine ができてるはず。 $ ls /proc
前回までのあらすじ ようやくlocal::lib童貞を捨てた - すぎゃーんメモから1.5ヶ月ほど経過。 やはりプロジェクト毎にモジュールのバージョンを揃えておきたくて、各プロジェクト用にモジュールをインストールしている。 アカウント作成して切り替え、という方法は早々に見切りをつけ、最近は #!/bin/sh export MODULEBUILDRC="/Users/sugyan/local/.modulebuildrc" export PERL_MM_OPT="INSTALL_BASE=/Users/sugyan/local" export PERL5LIB="/Users/sugyan/local/lib/perl5:/Users/sugyan/local/lib/perl5/darwin-thread-multi-2level:$PERL5LIB" export PATH="/Use
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く