メメメモモ

プログラミング、筋トレ、ゲーム、etc

2010-04-01から1ヶ月間の記事一覧

AnyEvent::IRCを試す2

http://d.hatena.ne.jp/memememomo/20100416/1271371693 irc_privmsg => sub { my ( $self, $msg ) = @_; my $comment = $msg->{params}->[-1]; my $trans_url = 'http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=' . uri_escape($com…

MapReduce::Liteで転置インデックスを作成

MapReduce::Liteを使って、転置インデックスを作成するプログラムを書きました。 docIDとかwordIDとかは無しで、ファイル名や単語をそのままキーとして使うようにしています。 全体的な流れとしては、 複数のファイルを読み込む(perl reverse_index.pl index…

MapReduce::Liteを使って形態素解析と単語ベクトル生成

形態素解析をMapで行ない、単語の登場回数をReduceで行なうプログラムを書きました。 MapReduceのフレームワークは、MapReduce::Liteを使用しました。 Mapperの定義 文章を受け取って、形態素解析を行ない「(単語,1)」のkey-valueペアを作成します。 形態素…

AnyEventを使ってProxyサーバを書いてみた・・・けど2

こっちで書いたプログラムをAnyEvent::Handleを使って書き直してみました。割と短くなりました。 use strict; use warnings; use AnyEvent; use AnyEvent::Socket; use AnyEvent::Handle; my $proxy_port = 8080; my %conn_table; my %request; my $cv = Any…

AnyEventでProxyサーバを書いてみた・・・けど

http://gist.github.com/378947 AnyEvent::Socketを使ってProxyサーバを書いてみました。 けど、ちょっとまだ動作が不安定。 AnyEventを理解しきれていない感がたっぷりです。 AnyEvent::HTTPを使って書き直す予定。 use strict; use warnings; use AnyEvent…

2010年5月号

Software Design (ソフトウェア デザイン) 2010年 05月号 [雑誌]出版社/メーカー: 技術評論社発売日: 2010/04/17メディア: 雑誌購入: 1人 クリック: 50回この商品を含むブログ (17件) を見る 購入しました。 いままで雑誌は「Web+DB press」のみを購読してい…

四則演算と変数の扱いができるlisp

変数を使った四則演算ができる簡単なlispインタプリタを書きました。 トークン解析と構文解析 lispは下記のように書きます。 (- 3 2) ;6 (- 3 (* 2 3)) ;-3 (setq a 3) プログラムはリストで記述されます。 リストとは'('と')'で囲まれた部分です。「(- 3 2)…

Acme::Dot

http://search.cpan.org/~ovid/Acme-Dot-1.10/lib/Acme/Dot.pmメソッド呼び出しをドットでできるようになります。 package Foo; use Acme::Dot; sub new { bless {}, shift } sub hello { print "Hi there! (@_)\n" } package main; my $x = Foo->new; $x.he…

コンパイルフェイズとインタプリタフェイズで自動実行される部分について

BEGINブロック、CHECKブロック、INITブロック、ENDブロック Perlプログラムが実行されるまでの流れは下記のようになります。 この流れの中で自動実行されるブロックがあります。 実行されるブロックとその実行タイミングは以下のようなものです。 INITブロッ…

zipを扱うスクリプトメモ

複数の画像があるフォルダを圧縮してできたzipファイルを扱うスクリプトに関するメモです。 Archive::Zip zipファイルの操作は、Archive::Zipモジュールを使用します。 use strict; use warnings; use Archive::Zip; my $zip_path = $ARGV[0]; my $m_zip = A…

gitの使い方メモ

githubを使い始めたので、gitについての使い方メモです。 gitをインストールしたところからの作業になります。 初期設定 コミットした時などに表示されるユーザ名とメールアドレスを設定します。 $ git config --global user.name "memememomo" $ git config…

構文解析器

前回は、抽象構文木をプログラム直打ちで記述していました。 今回は、下記のスクリプト文字列を読み込んで、抽象構文木を作成する構文解析器を作成しました。 n=5;x=1;L5{x=x*n;n=n-1};x' スクリプトの構文解析を行なうためには、 まずスクリプトの構文がど…

抽象構文木構築

下記のスクリプトは、nの階乗を求めることを想定しています。 n = 5; x = 1; L n x = x * n; n = n - 1; x; このスクリプトを構文木の形で表現して実行するプログラムを書きました。 構文木は下記のようなものになります。プログラムは、木の節点に対して一…

TatsumakiでIRCチャットを翻訳するアプリケーション

http://github.com/memememomo/irc_translator 習作として、IRCの英語コメントを翻訳して表示するプログラムを書きました。 結構カオスな翻訳になるので、smart.fmで調べられるように各単語にリンクを貼るようにしました。 「perl irc_translator.psgi」で起…

perlによるネットワークプログラミングに関するメモ

ネットワークプログラミングでは、主にソケット処理のプログラムを記述していきます。 ソケットとは、ネットワークに関連したファイルディスクリプタで、下記のように作成されます。 use Socket; my $sock; socket( $sock, PF_INET, SOCK_STREAM, getprotoby…

AnyEvent::IRCを試す

最近、IRCチャットを始めたので、スクリプトからなにかできるようになればいいな、と思いました。 で、モジュールを探したら「AnyEvent::IRC」を発見しました。 ということで、投稿された英語コメントを日本語に翻訳して表示するスクリプトを書いてみました…

Tatsumakiアプリのディレクトリ構成

http://d.hatena.ne.jp/memememomo/20100408/1270688769 前回Tatsumakiで作成したプログラムを整理してgithubに上げてみました。 http://github.com/memememomo/twitter_track 作法的な部分はまだまだ自信ないです^^; ディレクトリ構成 ディレクトリ構成…

Google AJAX Language APIをPerlから叩いて翻訳する

翻訳関係のAPIはないかなー、と探していたところ下記の記事を見つけました。 Google AJAX Language APIをPHPから叩いて翻訳する PHPの例だったので、perlでのコードを書いてみました。 use strict; use warnings; use URI::Escape; use Encode; use LWP::Sim…

バブルソート

バブルソートを行なうプログラムをperlで書いてみました。 use strict; use warnings; { my @a = (8,4,3,9,7,6,5,2,1); print "===================\n"; print join(',',sort(@a)) . "\n"; } sub bubble_sort { my @a = @_; my $a_length = @a; for (my $i =…

逆ポーランド記法を使って四則演算を行なう

配列に入っている式から四則演算行なうプログラムをperlで書いてみました。 演算子とカッコの優先度を考慮しながら計算するために、逆ポーランド記法に直して計算するようにしています。 use strict; use warnings; { cal(qw|5 + 4 - 3|); cal(qw|5 + 4 * 3 …

Cometについてのメモ

HTTPの基本的な処理の流れは下記のようになります。 クライアント(ブラウザ)が、サーバにリクエストを送る サーバがリクエストを受け取り、レスポンスをクライアントに送る この流れが基本になります。つまり、まずはクライアントがリクエストを送ることで初…

OAuthの概要メモ

OAuthとは OAuthとは、サービス間で認可情報を受け渡しするための仕組みです。 例えば、あるクライアントソフトからツイートする場合を考えます。ツイートするためには、まずtwitterにログインする必要があります。この時にログインパスワードの入力が必要で…

シンボルテーブルについて

perlには、シンボルテーブルというものがあります。 このテーブルには、パッケージ名やサブルーチン名などが格納されています。 perlのコンパイラが参照するためにシンボルテーブルがあるのです。 シンボルテーブルは、パッケージ毎に存在します。 例えば、 …

Perlによるスレッドプログラミングメモ

スレッドの生成 perlでスレッドを使用する時は、Threadモジュールを使用します。 スレッド生成の記述は二つあります。 use strict; use warnings; use Thread; my $something; my $t = Thread->new( sub { say ($something) } ); use strict; use warnings; …

TwitterStreamをTatsumakiを使ってブラウザ表示

http://d.hatena.ne.jp/memememomo/20100408/1270679837 こちらのプログラムの結果をTatsumakiを使用してブラウザで表示するようにしました。 app.psgi ここでは、ディスパッチ設定を行ないます。 「http://localhost:5000/{トラックワード}」でアクセスして…

AnyEvent::Twitter::Stream

AnyEvent::Twitter::Streamは、イベントループ内でTwitterのStreamAPIからデータを受け取っています。下記のコードは、受け取ったデータのうち、ユーザー名とツイート内容を表示しています。 #!/usr/bin/perl use strict; use Config::Pit; use AnyEvent::Tw…

Config::Pitモジュールについて

Config::Pitモジュールは、プログラムにパスワードなどのハードコードを避けるためのモジュールです。 例えば、ニコニコ動画のダウンローダを作るときは、ログインする処理を書く必要があります。その時に、下記のようにパスワードをプログラムに書いてしま…

勉強用参考リンク

スライド/動画 miyagawaさんのスライド資料 Plack and PSGI screencast and feedbacks(動画) PLACK ADVENT CALENDAR 写経に使用したサンプルプログラム Tatsumaki でブラウザベースの Twitter Streaming Tatsumaki でニコ生放送のコメントを流してみた More…

.psgiのファイルをperlモードで開く

.psgiのファイルをemacsのperlモードで開く設定です。 下記の設定を「~./.emacs」に記述。 (setq auto-mode-alist (append '(("\\.psgi$\\|\\.p[hlm]$" . perl-mode)) auto-mode-alist))

POE,AnyEvent,Coro,Tatsumakiに関して

POE,AnyEvent,Coro,Tatsumakiの関係性がいまいち掴みきれていません。 ちょっと調べたことメモ。 イベントループのプログラミング イベントループとはイベントを見張るループ プログラマはイベントに対応したプログラムを作成する イベントループでイベント…