Debuginfo

思考とアウトプット

Perl

MojoliciousでAccess-Control-Allow-Originを有効にする方法[Perl]

Mojliciousに限らずWeb server側で他ドメインのAjaxを受け入れるためには,Access-Control-Allow-Orignを有効にしなければいけないみたいです。 Mojoliciousではどうやるかというと下記のようにControllerのところにヘッダを変更すればできました。 $self->re…

Net::Amazonでkindle本を取得する方法 [Perl]

Kindle本を除外する方法はGoogleでひっかかるのですが、Kindle本を取得する方法は書かれていないので書いておきます。 下記のページに書かれていますが、ProductGroupがebookのときがKindle書籍のようです。 Product Advertising APIのItemSearchでKindle版…

#perlcasualに行ってきました

去年から2か月に一回ぐらいのペースでIT勉強会に参加していて、先週の金曜日3/29にPerlcasual#5というイベントに出席してきました。 このイベントはトイレの中でたまたま見た(決して仕事をさぼっていたわけではありません^^;;)@yusukebeさんのツイーとで知…

Perl でRedisを操作してみた ~ シリアライズは自前で? ~

前回のエントリーでインストールしました。 Redisモジュールを使って操作してみようと思います。 perldoc Redisには例がないですが、githubのテストを読めばなんとなくわかるはずです。 https://github.com/melo/perl-redis/blob/master/t/01-basic.t 基本的…

Redisをインストールしてみた

@miyagawaさんpodcastでもMentionされてたアルゴリズムとの親和性が高いRedisをインストールしてみました。バイナリサイズはmemcached並みに小さい。 $ yum install redis .... Installing: redis x86_64 2.4.10-1.el6 ... Total download size: 213 k Insta…

初めてのCarton + Mojolicious

Deployを容易にしてくれるCarton使ってみます。(Need to note that the carton is not fully production but it doesn’t matter for my joke app :) ) いつかはHerokuにデプロイしてみたいです。 $ cpanm carton $ vi Makefile.PL $ cat Makefile.PL use inc…

Net::Twitter::LiteのsearchをAPI1.1に対応させてみた

Twitter API1.1の対応を行っています。調べてみるとNet::Twitter::Liteでapiurlを1.1にすればOKみたな感じだったのですが、私が主に使っているのは検索APIで、本当にそれだけでいいのか?ってなり、モジュールを読んでみました。 すると、apiurlと別にsearch…

モダンな環境に挑戦してみる

naoyaさんの近頃の開発環境 : Mosh、z、tmux、Emacs、Perl についてに超絶インスパイアされました。 現状 ssh - 普通 vim - 適当に同僚シンタックスハイライトをコピーして使う。PBPのやつも使ってる。 screen - 2006年に作り込んで以来放置。すでに7年!信…

monitの起動スクリプトでperlbrewのperlの使い方

悩んでしまったのでメモしておきます。 monitではstart/stopスクリプトを書いて監視させます。このとき、perlbrewを使用しているとユーザ権限で起動するときに環境変数が設定されておらず、モジュールが入ったperlbrewのperlがうまく使えません。この対処法…

Model in Mojolicious

MojiliciousのModelは自由度があり、開発者にその実装を委ねられていると考えています。 色々調べた結果、私は下記のようにこれを実装することにしました。 まず、lib/Crossin.pmにhelperメソッドを使いどこからでも参照できるようにします。 sub startup { …

Mojolicious controller to handle JQuery.get

Mojoliciousのコントローラーで触るファイルは2つ。lib/Crossin.pmとCrossin::Controller::Profile.pm。 #Crossin.pm $r->get('/profile')->to('profile#info'); それから、profile#infoを書く。 package Crossin::Controller::Profile; use Mojo::Base 'Mo…

Web Application Framework (WAF) を選び階層構造を決める。

PerlのWAFは結構色々選択肢がある。Catalyst, Dancer, 和製のAmonとか。去年初めてWAFに触れたのがMojolicious::LiteなのでSyntaxも知ってるし、採用しました。今回はlite_appでないものを書くつもりですが。Catalystは使った事ないけど(会社のプロジェクト…

Web Application - System Designについて

情報収集を行いました。Facebook night#10等のイベント等に参加して技術動向を探ったり、IT技術者のブログを読んだりしていました。通勤時間や昼食時、会社が終わった後等にシステムデザイン、それに関連する技術をノートに書いていました。一応、あとはコー…

CPAN Build時に自作依存モジュールはMANIFESTに書く

CPAN Testersでエラーでまくりだったので対処。一番いい方法かわかりませんが、Net::Rexster::Clientで使用する依存モジュール(Net::Rexster::Response and Net::Rexster::Request)をMANIFESTに書いたら、perl Build disttestが通りました。(disttestを今知…

Release Net::Rexster::Client!

I just wrote Net::Rexster::Client (see under http://search.cpan.org/~shoheik/) One of the graphDB problem is that each graphDB has dialect and if you switch the database, you need to rewrite the code to adapt to the replaced db. Rexster(ht…

Strategy Pattern on Perl + Moose

StackoverflowのAnswerが秀逸すぎて思わずコピペ。http://stackoverflow.com/questions/78278/clean-implementation-of-the-strategy-pattern-in-perl package StrategyInterface; use Moose::Role; requires 'run'; package Context; use Moose; has 'strat…

URI::Escapeで日本語と#以外をURIエンコーディング

#と日本語だけURIエンコーディングしたいときはreseved以外を外す。 これ以外に何か方法はあるのかな?? use URI::Escape; $uri = uri_escape_utf8($uri, "^A-Za-z0-9\/\:\&\+\=\?\(\)\'\[\]\,\*\;");

入れ子になっているときのTest::MockObject

以下のようにNet::Rexster::RequestがNet::Rexster::Responseを呼ぶ場合はMockObjectをMockObject::Extendsにはめ込んでみる。 use Test::MockObject; use Test::MockObject::Extends; use Net::Rexster::Client; use Net::Rexster::Request; # Mock for Net…

CPAN Authorになるまでの軌跡

Summary結論。CPAN Authorになれました\(^o^)/。http://search.cpan.org/~shoheik/ 多くの方がウェブ上に情報を公開してくださっているのであまり迷いませんでした。 私も簡単にですが,ログを残したいと思います。 1. 下調べ まずは何をすればいいのかを…

Perl用の.gitignoreを置く

cpanモジュールを作っているわけですが,githubに置く時に色々Build中のファイルがアップロードされると嫌なのでPerl用のgitignoreを探してました。作っている人いるんですね。https://github.com/github/gitignore $ git clone https://github.com/github/g…

PerlでGDを使って画像を合成する方法

まずはイントール。cpanm GDをしたらGDライブラリがないと怒られたので,yumでイントールします。 # yum install gd-devel.x86_64 develを入れるとgdも入るみたい。 で,目的のcpanm。 $ cpanm GD --> Working on GD Fetching http://search.cpan.org/CPAN/a…

Perlで一意な(Uniqueな)配列を取り出す方法

http://perl-users.jp/articles/advent-calendar/2008/16.html Perl Adventカレンダーのsekimura氏のエントリ。これを見るまでずっとハッシュにいれてkeysしてユニークな配列を取り出してました。 しかし,このエントリを見てから,なんてスマートな方法があ…

Mojolicious::Liteで日本語が文字化けするときの対処法

use utf8; That's it!

CentOS 64bitでNet::SSLeayが入らない件

Facebook::Graphを入れる途中でNet::SSLeayが入らない。まじ悩んだ。。 Running Mkbootstrap for Net::SSLeay () chmod 644 SSLeay.bs rm -f blib/arch/auto/Net/SSLeay/SSLeay.so LD_RUN_PATH="/usr/lib" cc -shared -O2 -L/usr/local/lib -fstack-protecto…

グラフ理論::Coupled node-edge scoring

注意:この記事は私の解釈です。間違っていたらつっこんでください。GED(Graph Edit Distance)はとりあえず置いといて、Coupled Node Edge Scoringにジャンル分けされている手法を勉強します。 (SimRankはどうやらInteractive Methodというらしい cf. Laura'…

GraphからGraphViz2経由で画像ファイルを書き出すためにGraph::Visualizeを書いた

githubにのせました。https://github.com/shoheik/Graph-Visualize 下記のようにnewして画像(default png)を吐き出せるモジュールです。 my $g = new Graph; $g->add_vertices(qw/a b c d e/); $g->add_edge('a', 'b'); $g->add_edge('b', 'c'); $g->add_edg…

Mojoliciousワンライナーを使った画像表示だけの超簡易Web Server

グラフ表示用にpngは作ったものの、png fileはVPS上でダウンロードに困った。そんなときに手軽なMojolicious :)まずpublicディレクトリを作成して、image fileを移動。 $ mkdir public $ cp test.png public/ それでワンライナーMojolicious起動する。 $ per…

グラフ表示のためにGraphViz2をインストールする

グラフを見た方がわかりやすいので、そのためにCpanからGraphViz2をインストールする。 $ cpanm GraphViz2 Underlying Toolのgraphvizが入っていなくてError。yumでツールをインストール。 $ yum install graphviz ツールがあれば問題なくインストールできた…

グラフ理論::SimRank

グラフが関係するサービスを開発しようと考えているので、まずオーソリティな論文を読んでみた。 SimRank: A Measure of Structural-Context Similarity - Glen Jeh, Jeniffier Widom 肝はこれ。再帰で書けば答えがでるはず? と思って実装したら無限ループ…

Sakura スタンダードを使ってみる. Long time no see, FreeBSD!

serversman vpsが遅すぎて死ねるので,フロントエンドのアプリを走らせるサーバを使いたくなりました。 coreserverを試しましたが,やや遅く感じたし,なによりプロセスをkillされるのがたまりません。。 結局,vpsでも利用しているSakuraさんに落ち着きそう…