Skype::Anyというモジュールを書いている話

少し前に、Net::DBus::Skype::Liteというモジュールを書きました。PerlからSkype APIを叩けるのは便利なのですが、不満点がいくつかあります。 LinuxのSkypeにしか対応していない 全体で2200行くらいある(Liteなのに…) 無駄なコードが多すぎる そこで、Net::…

Hokkaido.pm#6で話してきます

http://hokkaido.pm.org/event/hokkaidopm6.html 10分枠をもらったので、botの話をしたいなーと思っています。 AnySanで簡単! Twitter bot AnySanで簡単! ◯◯ bot ↑今、これを実現するためにモジュールを書いています。

はてブロ

http://akiym.hateblo.com/

Acme::Collector64というモジュールを書きました

akiym/Acme-Collector64 - GitHub オリジナルのBase64を作ることができるモジュールです。 使い方はこんな感じです。 use strict; use warnings; use utf8; use Acme::Collector64; my $index_table = 'あいうえおかきくけこさしすせそたちつてとなにぬねの…

Initial commit

http://staff.hatenablog.com/entry/2011/11/24/180013

ワンライナーでExcel列名変換問題(逆変換)

Excel列名変換問題で第2回社内プログラミングコンテストを開催してみた(前編) - give IT a try より 27 → AA perl -le'$c=A;$c++for 2..pop;print$c' 追記(11月5日 0:50) AA → 27 perl -le'$n++for A..pop;print$n'

crontab tips

use strict; use warnings; use Amon2::Lite; get '/cron/regen/rss' => sub { my $c = shift; # ... $c->create_response(200, [], 'ok'); }; __PACKAGE__->to_app; */10 * * * * cronlog -- wget -O - http://localhost:5000/cron/regen/rss 2>&1

週末ひとりハッカソンのお知らせ

せっかくYAPCに行って情熱をもらってきたので、熱が冷めないうちに週末ひとりハッカソンを開催します。と言っても、ひとりハッカソンなので開催を宣言しても意味がありません。 でも、宣言しておくとやる気が出るし、放ったらかしにしてしまうことがなくなり…

高校生がYAPC::Asia 2011に行って来ました

高校生ですが、YAPC::Asia 2011に行って来ました。初参加です。 自分みたいな学生がYAPCに行くのは金銭的な問題から難しいのですが(しかも北海道からなので)、Hokkaido.pmのみなさんが支援してくれたおかげでYAPCに行くことができました。本当にありがとうご…

北海道の高校生がYAPC::Asia 2011に参加してきます

明日、飛行機に乗って東京へ行きます。 Hokkaido.pmからの支援を受けて、YAPCに参加してきます。高校生がYAPCに参加する事例はあまり聞いたことがないので、ちょっと緊張してます。 「なぜ、高校生がPerlを使うのか?」というタイトルでトークします。 15日…

Perl SEGV Golfに挑戦してみた

にひりずむ::しんぷる - perl segv golf より % perl -eversion::new zsh: segmentation fault perl -eversion::new % echo perl -eversion::new | wc -c 20 さすがにAcme::SEGVには負けますね。ちなみにperl-5.8.9ではSEGVしません。 というよりこれ、どう…

Skypeのチャットログを検索する

Skypeのチャットログを素早く閲覧・検索できるMacアプリ|SkyChatViewer - #RyoAnnaBlog より アプリをダウンロードするのはだるいですね。 OS Xでは~/Library/Application\ Support/Skype/Skype名/main.dbにDBがあります。つまり、それをごにょごにょすれば…

Hokkaido.pm#5で話してきました

Hokkaido.pmに参加するのは3回目ですが、初LTしてきました。初めてだったのでとても緊張しましたが、得られたものはとても大きいと思いました。 まず、「面白い!」と言われたこと。そして、複数の人から「YAPC来ればいいじゃん!」と言われたこと。 どちら…

PerlでSkypeボットを作る

結構前にNet::DBus::Skype::Liteというモジュールを書き始めました。一応、自分のやりたいことはできるようになったので、今では未完成のまま開発停止中です。 akiym/Net-DBus-Skype-Lite · GitHub ドキュメントがなく、コードも微妙、そしてテストもないの…

7/16のHokkaido.pmで初LTします

7/16(土)にHokkaido.pm#5が開催されます。 ゲスト: @nekokak さん Hokkaido.pm#5 : ATND 本題ですが、初LTします。タイトルは「Base64を再実装する」です。 初めてのLTでドキドキしますが、頑張ります。 あと、@nekokak さんが来るらしいので、ちょー楽しみ…

Web::Query 0.06でfirst、lastが使えるようになった話

先日書いた記事では、Web::Queryで最初の要素だけを取りたいんだけど、うまく書けないよねーと書いたあと、firstとかlastみたいなのがあると便利だなーと思ってpull-req送ったら、いいよってことで、取り込んでくれました。 Web::Query 0.06ではfirst, last…

Web::Queryで最初の要素を取りたい!

例えば、このようなリストがあるとします。 <ul class="video"> <li>A</li> <li>B</li> <li>C</li> <li>C</li> </ul> このリストから、最初の要素<li>A</li>だけを取りたい時にはどうすればいいでしょうか。 Web::Scraperではこんな感じです。 use Web::Scraper; my $scraper = scraper { process 'ul.video li', 'title' => 'TEXT…

Web::Queryで最初の要素を取りたい! その2

Web::Queryにfirst()、last()みたいなのがあると便利だなーと思いました。 例えば、こんな感じ。 sub first { my $self = shift; $self->{trees} = +[$self->{trees}[0]]; return $self; } sub last { my $self = shift; $self->{trees} = +[$self->{trees}[…

Google CGI API for Japanese Input

WebService::Simpleを使ってGoogle CGI API for Japanese Input - アリ より こう書けよ。 use strict; use warnings; use Encode; use JSON; use LWP::UserAgent; use URI; use Data::Dumper; use Data::Recursive::Encode; my $text = shift or die; my $u…

Amon2でTengを使いたいときには

Amon2のflavorを書いてみた。 こうすることで、 % amon2-setup.pl --flavor Teng MyApp みたいにできるので便利。 あと、TengにはTeng::Schema::Dumperがあるのでschemaの生成が楽。

リアルタイムプレビューしたい

gfxさんから「スクリプトを別にするのではなく、フォームからフォーマットを選べると嬉しいです!!」と言われたのでやってみました。 最近、コード書くのが楽しいです。 いい感じ!マジで便利です。 気になったこと $self->param()がからっぽのときは? こ…

昨日のリアルタイムプレビューは...

GETを使うよりもPOSTを使うべきだよね、って言われそうなのでPOSTを使ってみた。 preview in real-time. — Gist ほかにも、Text::XatenaやPod::Simple::XHTMLを使った例もあるので必見。

Mojolicious::Liteを使ってMarkdownをリアルタイムプレビューしてみた

こんな感じ。 もちろん、Text::MarkdownだけではなくText::Xatenaでもできるので満足ですね。

続 plackupを使いたい(zsh編)

実は、plackup しても引数の補完はできるのにファイル名の補完ができません。 なので、ファイル名の補完ができるようにしました。 設定方法は前回(brew、cpanm、plackupを使いたい(zsh編) - アリ)と同じです。 fpath=($HOME/.zsh/functions $fpath) を.zshrc…

vi vs Emacs

震災後アクセスが減った原因 « python練習帳より viとEmacsでも比較してみましょう。 vi Google トレンド: vi Emacs Google トレンド: emacs viの勝ちですね。やはり、viのほうが優れているということでしょうか。 ところで、vimで検索してはいけないと誰か…

brew、cpanm、plackupを使いたい(zsh編)

まずはfpathの設定を.zshrcに書く。 fpath=($HOME/.zsh/functions $fpath) brewは補完設定ファイルが付属しているので~/.zsh/functionsにコピーする。 % cp /usr/local/Library/Contributions/brew_zsh_completion.zsh ~/.zsh/functions/_brewcpanmとplackup…

jmanを使いたい(zsh編)

こんなかんじで.zshrcに書く。 export MANPATH="/usr/local/jman/share/man:$MANPATH" compdef _man jman こうするといい具合に補完機能が効く。すばらしい!

homebrewでscreenをインストールしたいときには

Mac

404 · GitHub ここから取ってくるといいです。 % brew install screen --force homebrewはなぜか知らないけど、OS X付属コマンドはインストールさせてくれないので、--forceオプションを付けてインストールしてください。

PerlからSkype APIを叩きたいときには

CPANで検索した結果こんなかんじ。 Windows SkypeAPI Mac - Linux Net::DBus::Skype Macは対応していません。 しかも、このモジュールはAPIを叩くことしかできません。Skype4Pyみたいな使いやすいラッパーが欲しいので自分でSkype APIラッパーを書くことに決…

MacからSkype APIを叩く

Mac

AppleScriptを使うと簡単に叩けます。 tell application "Skype" send command "MESSAGE echo123 check" script name "My Script" end tell tell application "Skype" send command "CALL echo123" script name "My Other Script" end tell コイツを使ってPe…