理系学生日記

おまえはいつまで学生気分なのか

perl

grepでは困難な、特定文字列の存在行から別の文字列が存在する行までの抽出 (Perlのflip-flop演算子の使い方)

特定の文字列がある行から、別の特定の文字列がある行までを抽出したいということがよくあります。 これgrep等を使うと苦労する話なんですが、flip-flop演算子を使ったPerlのone-linerで可能です。 例えば昨日の記事ではgit help commitの中から--no-edit/オ…

B::Deparse で One-Liner を理解する

久しぶりに会社で Perl の話をしました。何の話かというと B::Deparseです。 最近 Perl を使うのは One-Liner くらいなのですが、一般に One-Liner は可読性が犠牲になります。 一体この One-Liner は何をしているのか、というのを説明するときには B::Depar…

はてブのタグ表記揺れを修正するスクリプト書いた

はてブのタグの表記揺れが発生した!!! みたいなことある。あるいは、タグ名 typo してたけど補完にまかせてそのタグ名使い続けてたわ!!!! みたいなことある。下の画像が具体的な例で、carier っていう typo したタグ使ってた。こんなのを世界に向けて公開し…

PAUSE ID 取った

pause id 9 文字が最長で、kiririmode 10 文字だから ID 取れなくて、kiririmod になった。つらい。 http://search.cpan.org/~kiririmod/

WebService::Hatena::Bookmark::Lite が直らない

これバグってると思って pull req 出してるんだけど反応ない。新しいの作りたい。 WebService::Hatena::Bookmark::Lite - A Perl Interface for Hatena::Bookmark AtomPub API - metacpan.org

Pocket で特定のタグを付けたエントリを自動ではてブする

これでできる。 15 分毎で cron 登録した。 https://github.com/kiririmode/HatenaInYourPocket #!/usr/bin/env perl use strict; use warnings; use Getopt::Long qw(:config posix_default no_ignore_case gnu_compat); use Pod::Usage; use Config::Pit; …

Pocket クライアントモジュールを API v3 に対応させました

対応させました。WebService::Pocket::Lite です。 GitHub - kiririmode/p5-WebService-Pocket-Lite: Perl client for Pocket Pocket の Consumer Key と Access Token を取得していることを前提に、以下のようなコードが書けます。 use WebService::Pocket:…

WebService::Hatena::Bookmark::Lite について

Pocket から はてブへ特定エントリ転送するツール作り直しているので、WebService::Hatena::Bookmark::Lite 使っているのだけれど、どうも 2 つほど問題があるっぽい。 "Use of qw(...) as parentheses is deprecated." っていうワーニングが毎回でる テスト…

Pocket からリクエストトークン取得するやつ

Pocket の API の version.3 がいつのまにか出ていて、予想通り oauth2 だったので、リクエストトークン取得する殴り書きスクリプト書いた。 スクリプト書く必要ないとおもう。curl あたり使ったらすぐに取得できるとおもう。HTTP::Body 使う必要もないとお…

スクリプトからの Livedoor Reader へのログイン方法

このエントリでは、(WWW::Mechanize ではなく)LWP::UserAgent を使って Livedoor Reader にログインするにはどうすれば良いのかを説明します。 WWW::Mechanize を使った方法 Livedoor Reader は(未公開ながらも)API を持っているので、これが利用できると世…

アニメの情報を効率よく集めるために OPML つくるスクリプトを作り人生が豊かになる

背景 ここだけは見とけっていうアニメ情報サイト10選 - 稀にライトノベルを読むよ^0^/ この何ともならない人生をそれでもアニメ充するために、ここに列挙されている Web サイトだけは見ておかなくてはならぬ!そうしないと人間が死ぬ!!lたくさん死ぬ!…

Data::Dumper に代わる Data::Printer

LL でデバッグと言えばデバッガではなく print デバッグ、という人は多いと思います。ぼくはもっぱら print デバッグです。 いまこのタイミングでこのオブジェクトはどんな値を持っているんだろう、というときは、Perl だったらもっぱら Data::Dumper を使っ…

Mixi ダイアリーを LDR で読めるように Plagger 設定

友人関係が Mixi と Facebook に分かれてしまったこともあり、個々人の Mixi ダイアリーを一々 Mixi のページを開いて読むのがメンドくさくなってしまいました。 以上の理由により、あーもう LDR で読めるようにしたいなーと思い、そういえば Plagger に Mix…

しょぼいカレンダーを iCal 化して iPhone でアニメ時間を確認する

YAPC::Asia Tokyo 2011 で id:hakobe932 さんが WebService::SyoboiCalendar の LT をされていました。 くわしくはこちらをご覧ください。 はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知 これはしょぼいカレンダー というアニメ…

モジュールインストールのタイミングでタグテーブルファイル (TAGS) を作りなおしたい

モジュールをインストールしたら早速そのモジュールを使いたいですし、モジュールを使うってことは当然その実装を読む必要がありますし、実装を読むためには etags を使ってタグジャンプさせたいです。 というわけで、モジュールをインストールしたタイミン…

perlbrew環境でcperl-perldocをひく

perlbrew といえば自分の $HOME にローカルな Perl 環境を複数構築できるとツールで、最近の Perl の人々はこれを使うか自分でソースから $HOME とかにビルドするかしてると思います。これによってシステムワイドな perl を使わなくて済みますし、当然ながら…

Read It Later から直接はてブ登録する

この間、iPhone 上の Read It Later アプリから Twitter にツイートする運用を行い、そのツイートを捕捉の上ではてブするというスクリプトを書いたのですが、よく考えなくても、Read It Later から直接はてブすれば良いではないかということに気付きました。…

cpanm でモジュール名を補完する

インストールしたいモジュール名を cpanm の引数として一言一句タイプするのは面倒なので、zsh 上で、02packages.details.txt に記述されているモジュール名で補完させるようにしました。.zshrc に以下を書き込めば良いかと思いますが、注意点としては、ブラ…

zsh で perldoc H::S::P::N::S::P を実現する

Perl のモジュール名は長い Perl のモジュール名には名前空間があり、一般的には名前空間の階層構造によって、そのモジュールのドメインが示されることになります。 その結果、場合によってはモジュール名が異常に長くなったりします。2009 年のエントリにな…

split にハマる

Java で CSV ファイルをカンマで区切る処理を、RFC4180 をムシして簡単に書こうとすると*1、String#split を使うことが多いかと思います。 しかし、String#split には以下のような罠が存在します。 public class SplitTest { public static void main(String…

WebService::Simple ではてなブックマークエントリー情報取得 API を呼び出す方法

はてなブックマークエントリー取得 API は、JSON で結果を返却します。 そのため、以下のようなパラメータをコンストラクタを渡せば、一件問題がないように見えます。 my $ws = WebService::Simple->new( base_url => 'http://b.hatena.ne.jp/entry/jsonlite…

Read It Later Pro から Twitter に投稿したとき、はてブに自動で登録するスクリプト作った

これによって、Livedoor Reader で Pin を立てると Read It Later に自動転送され、iPhone/iPad 上の Read It Later で Twitter に呟くと、それが自動ではてブに登録され、さらに Evernote に登録されるというワークフローが確立しました!! 今回作成したのは…

はてなフォトライフへの投稿スクリプト

WebService::Hatena::Fotolife がすべてやってくれた。

Perl における flip-flop 演算子の使い道について

flip-flop 演算子とは、スカラーコンテキストで使用される範囲演算子(Range Operator) のことです。一般にはドット (.) 2 個で構成される演算子として認識されています。 この演算子は 2 つのオペランドを取ります。下記の例では、3 と 5 をオペランドに取っ…

おれ様の未読フィード数がいつでも確認できるようになったぞ!

本 blog の右端の、iddy の下にあるグラフがそれで、赤いヤツが Livedoor Reader 上の未読数、緑のヤツが Read It Later 上の未読数になってます。 これで、ぼくの未読フィード数はどれくらいなのかがスゴい気になって、夜も眠れずに目がギンギンになってる…

Read It Later 上の unread エントリの既読化

昔に登録したエントリを全部クリアしたいときに。 ちなみに get_list メソッドは Read It Later の get API を叩いているのですが、下記のような state だけの指定は Read It Later のサーバに負荷をかけるので、エントリ数が少ないときにしかやっちゃダメで…

LDR から Read It Later への変換を HTTP で叩けるようにした

下記エントリのスクリプトを cron で毎時間実行させることで、LDR の pin から Read It Later へ自動的に変換するようにしています。 LDR の pin を自動で Read It Later に追加する - 理系学生日記 これによって、LDR で立てた Pin が自動的に Read It Late…

LDR の pin を自動で Read It Later に追加する

というわけで、WebService::LDR と WebService::Pin を連携させると表題のことができるようになるという例。

Read It Later の Perl インターフェイスモジュール

つくって上げた。 https://github.com/kiririmode/WebService-RIL Read It Later の API を叩くので、使用の際は API Key が必要です。もちろん無料で入手できる。 Pocket: Log In 使い方としてはこんなかんじ。指定 URL から Text のみを引っこぬいてくる A…

Livedoor Reader 用の Perl インターフェイスを作りました

WebService::LDR という Livedoor Reader 用のインターフェイスを作って、Github に上げときました。 https://github.com/kiririmode/WebService-LDR 誰得というと僕得なのですが、これによって例えば任意の URL に対してピンを立てたり、購読しているフィー…