タグ

ブックマーク / hakobe932.hatenablog.com (9)

  • 正規表現のoオプションにPerlの暗黒面を見た - はこべにっき ♨

    Perlの正規表現のoオプションてご存じでしょうか? うちはあまり使ったことがなかったのですが,効率のよい正規表現処理を行うときには便利なオプションです. oオプションを使うと,その正規表現のコンパイルが1回しか行われなくなります.たとえば,正規表現の評価が繰り返しのなかで現れると,コンパイルが何度も行われて効率が悪くなります.そういったときにoオプションを付与しておけば,正規表現コンパイルのオーバーヘッドを最小限にとどめることができます. chomp(my $pattern = <>); for my $n (0..100000000000) { # すごく回数の多いループ # oをつければ正規表現がコンパイルされるのははじめの1回だけなので安心 if ($n =~ m/^$pattern$/o) { say "match!"; } } 正規表現が静的な場合は,Perlはこのような最適化

    正規表現のoオプションにPerlの暗黒面を見た - はこべにっき ♨
  • IT勉強会カレンダーをフィルター - はこべにっき ♨

    IT勉強会カレンダーといえば,勉強会フリーク必見なネットで最も充実しているすばらしいカレンダーです.id:hanazukin ++.id:nitoyonさんの紹介記事がくわしい. さて,すばらしく情報量のおおいIT勉強会カレンダーなのですが,開催されている勉強会が多すぎでちょっと見やすいとは言えません.これはしかたないので,個人的に行きそうな勉強会だけのカレンダーにするためのフィルタースクリプトを書きました. use strict; use warnings; use utf8; use Encode; use Data::ICal; use URI::Fetch; my $IT_CAL_URL = "http://www.google.com/calendar/ical/fvijvohm91uifvd9hratehf65k%40group.calendar.google.com/publ

    IT勉強会カレンダーをフィルター - はこべにっき ♨
  • iPod touch向けのニコニコ動画のPodcastを生成する - はこべにっき#

    iPod touchが届いたー! この連休は家から出られなくなったので、iPod touchをいじり倒す予定です。 せっかくなので、Plaggerを使って、ニコニコ動画のマイリストから動画Podcastを生成してみました。ニコニコ動画 => Podcast => iTunes => iPod touch が自動できるようになるので、いつでも素敵動画が持ち歩けるように! 実際にやってみた ではまず、おもむろにお気に入りの動画をマイリストに登録します。いかにも怪しげなマイリストです。 このマイリストのRSSをもとにPlaggerで動画Podcastを生成します。Plaggerの野良プラグインに、Filter::FetchNicoVideoとFilter::FFmpegがあるのでこれを利用します。詳しくは後述。 できあがったPodcastiTunesではこんな感じに見えますよ。 ここまでくれば

    iPod touch向けのニコニコ動画のPodcastを生成する - はこべにっき#
  • MacPortsでPrivatePortsを利用する - はこべにっき ♨

    以前、はこべにっき# - MacPortsでステキなUNIXツールをインストールでMacPortsの紹介をしました。今回は、、MacPorts標準では用意されていないソフトウェアがインストールできるようになるPrivatePortsを今更ながら利用してみました。 MacPortsではソフトウェアをインストールするのに、ソフトウェアのソースコードの場所やインストール方法を指定したportfileというものを使っています。普通にMacPortsを使っているとデフォルトで用意されたportfileを使ってソフトウェアをインストールすることができます。 PrivatePortsというのは、MacPortsでデフォルト以外で、有志が作成したportfile達の事を指します。PrivatePortsを使えば、普通MacPortsではインストールできないソフトウェアやパッチが適応されたソフトウェアを使う

    MacPortsでPrivatePortsを利用する - はこべにっき ♨
  • スタンドアロンWebサーバ書くのにPOEはいいかも - はこべにっき ♨

    スタンドアロンWebサーバ書くのにPOE::Component::Server::HTTPはかなりお手軽ですね。エラー処理とかいろいろはしょると以下のコードで、Webサーバが走ります。 use strict; use warnings; use POE qw( Component::Server::HTTP Sugar::Args ); my $httpd_aliases = POE::Component::Server::HTTP->new( Port => 8080, ContentHandler => { '/' => \&httpd_index, } ); sub httpd_index { my ($request, $response) = @_; $response->code(RC_OK); $response->content('Hello, POE!'); return

    スタンドアロンWebサーバ書くのにPOEはいいかも - はこべにっき ♨
  • MacPortsでステキなUNIXツールをインストール - はこべにっき#

    2011/5/22追記: 最近のオススメは、homebrewです。ぼくもいまはhomebrew使ってます。 先日、研究室にあたらしいMac Book Pro 17"が届いた。各種操作がいちいちキビキビ動いて快適すぎる。 このMacにも、うち的最重要MacアプリケーションのひとつであるMacPortsをインストールした。 MacPortsはFreeBSDのportsというパッケージ管理システムと似たようなことを、Mac OS Xでも行うためのソフトウェアだ。有名なコマンドラインツールはほとんどこれを使えば揃えることができる*1。うちが普段使っている、perlvimもzshもscreenも全部MacPortsでインストールしたもの。 Macでライブラリやツールがなくて困ったときはとりあえず、MacPortsに聞いておけばなんとかなることも多い(例: pygameってMac OS Xで動くんだ

    MacPortsでステキなUNIXツールをインストール - はこべにっき#
  • Twistedをちょっと - はこべにっき ♨

    Perlを勉強する合間に、分け合って(というか授業の関係で)Twistedを使うことになった。しかし、あまりにも日語のドキュメントがなくて悲しい思いをしたので、自分のために肝の部分だけココにメモっておこうかと思う。 TwistedについてははTwistedスプリント - Python Developers Camp 2006 Summerが日語でくわしいところのかなり上位っぽい。 ほんとはTwistedはかなりいろんなことができるようなのだけど、うちも使いはじめたばかりなので、一番基的っぽいTCPによるサーバクライアントなコードをてっとりばやく書くのに必要なポイントだけを。 使うもの 以下の三つがあれば、とりあえずクライアントとサーバが書ける。 Protocol Factory reactor 最低限Protocolのコードを書けば良くて、Factoryとreactorは使うだけでも

    Twistedをちょっと - はこべにっき ♨
  • PlaggerとSubscription::BrowserHistoryで自分のWebブラウジングをトラッキング - はこべにっき ♨

    Plaggerのプラグインである、Subscription::BrowserHistoryを作成した。これを使うと、ブラウザの履歴をPlaggerで読み込めるようになる。いまはMozilla系のブラウザにしか対応していないけど、サブクラスかけば良いようになってるので、IEやSafari向けもすぐかけるかも。 実はこれは、すでにid:sfujiwaraさんが酒日記 はてな支店 - Morkの文字コードおよび、酒日記 はてな支店 - CustomFeed::Mork頓挫で触れられていて、Plaggerのチケットの#377 (Subscription::BrowserHistory)にもなっていたネタ。参考にさせていただきました。 で、このSubscription::BrowserHistoryを使うとなにができるかというと。たとえば以下のようなYAMLが書ける。 plugins: - modu

    PlaggerとSubscription::BrowserHistoryで自分のWebブラウジングをトラッキング - はこべにっき ♨
  • Plaggerをインストールしてみてわかったこと - はこべにっき ♨

    やっとこPlaggerを使えるところまでたどり着けた。livedoor Readerの更新FeedがGmailにどさっと届いたよ。おもしろい。 さて、Plaggerにたどり着くまでには、いくつものモジュールインストールとそのテストの失敗、たくさんの妥協、汗、涙、睡眠不足などの困難が伴ったわけだ*1。そのおかげでCPANやPerlについてわかったことをあげてみることにした。 CPANは便利でおもしろい WWW::YouTubeとかHatena::FormatterとかMac::Glueとか。もっとセンセーショナルなモジュールもたくさんあるよね。CPAN漁ったりPlaggerの依存で入るモジュールを眺めていると、こんなのもモジュール化されてるのか!っておどろくことが多い。もうほんと自分でコード書く必要あるのかというほどの充実ぶり。 CPAN漁りにはモジュールに関するいろんな情報があつまったCP

    Plaggerをインストールしてみてわかったこと - はこべにっき ♨
  • 1