Subscribed unsubscribe Subscribe Subscribe

mysql プロンプト起動時に自動で SET NAMES utf8; を発行する

$ mysql -uuser --init-command='set names utf8;'

メソッドが定義されたファイル名と行番号を取得するコマンドを作った

$ source_location.pl File::Spec canonpath FILENAME: /Users/Cside/.../File/Spec/Unix.pm LINE: 71 親クラスまでたどった大元の定義位置を返すので、クラス階層が複雑なときにデバッグに役立つ。 cpanm UNIVERSAL::source_location_for するとコマンドが…

「 bless は重い」は本当か

よく「 Perl の bless() は重いので new() しまくるとパフォーマンス悪化につながる。シングルトン化せよ」みたいなのを聞く(ような気がする。気のせいかも)。 なので、 ループ中で都度 new する方法 インスタンスを使いまわす方法 で速度を測ってみた。 u…

ローカルに立ててる memd に対しても get_multi するべきか

結論:するべき。 リモートの memd はつなぎにいくコストが高いから、 memd のアクセスは get_multi を用いてまとめて行なうべき。 http://blog.64p.org/entry/20070503/1178144869 しかしローカルで立ってる memd ならつなぎにいくコストは微小だろうし、 g…

Test::Base::SubTest というモジュールを作った。またはテストケースとテストコードは分離されていたほうが嬉しい話

自分は Test::Base が好きでよく使うのだけど、subtest 的な、テストのグルーピングができないのがずっっっと不満だったので、Test::Base::SubTest というモジュールを書いた。 https://metacpan.org/release/Test-Base-SubTest https://github.com/Cside/Te…

Data::Validator のようにコマンドラインオプションをパースするやつを作った

Getopt::TypeConstraint::Mouse - A command line options processor uses Mouse's type constraints - metacpan.org - Perl programming languagein your script #!perl use Getopt::TypeConstraint::Mouse; my $options = Getopt::TypeConstraint::Mouse->…

アドレスバーからMyはてブをインクリメンタルサーチするやつをChrome Web StoreからDLできるようにした

このとき 作ったやつ。GitHubのソースからだと最新のChromeでは動かなくなってたので、動くようにして、Chrome Web Storeにアップロードした。Chrome Web Store - Hatena Bookmark Search 使い方 アドレスバーで b + [tab] で検索できるようになる 検索ワー…

新しいタブをテキストエリアにするChrome拡張を作った

よければお使いください的な install https://chrome.google.com/webstore/detail/new-tab-to-textarea/oemhpkplpabdfpilhodcboajpehkhmgp source https://github.com/Cside/new-tab-to-textarea.crx

2013年にもなってPerlTidyに入門してみた所感

◾︎よかったこと ・結論から言うととても良かった ・「ここのインデントどうしよ?」「ここは改行したほうがいいかな?」みたいな考えに思考をブロックされないようになったのがとにかくデカい。書こうとしてるロジックにだけ集中できる。◾︎惜しいなーと思っ…

2013年にIEのクロスバージョン検証をする方法

あとで書く

YAPC::Asia 2013 に参加してきた #yapcasia

例年トークの内容の追いつけなさに凹むイベントだったけれど、今年はそういうのはあまりなかった。「あーどこもこうやってるのか。うちでやってることって王道から外れちゃいなかったんだな」ということが分かって少し安心した。久々に会った同世代エンジニ…

狭い幅で開いたら勝手にスマートフォンのUserAgentでリクエストするChrome拡張を書いた

ダウンロード https://chrome.google.com/webstore/detail/keffnkgkjiancfjjolkoejiocficcbni リポジトリ https://github.com/Cside/auto-change-to-sp-ua.crx 640px(設定で変えられる)以下の幅のウィンドウでWebページにアクセスすると、勝手にスマートフ…

リクエストパラメータを整形して出すPlack Middleware

CatalystはリクエストパラメータをこんなふうにASCII Tableに整形して出力してくれるのだけど、これが地味にデバッグに役立つので、Plack Middlewareとして切り出したものを書いてみた。 https://metacpan.org/module/Plack::Middleware::DebugRequestParams…

MySQLのfrom_unixtime(), unix_timestamp()をPerlから使うモジュール作った

集計バッチやなんかを書くときに、MySQLのDateTime型(%Y-%m-%d %H:%M:%S)とUNIX timeを相互に変換したくなるときがある。要するにMySQLでいうfrom_unixtime()関数、unix_timestamp()関数にあたるものが欲しい。ので、それらをPerlで使えるやつを書いた。ht…

Perl Advent Calendar 2012 Casual Track 1日目

書いた。Perlでアプリケーションをささっと書くのに役立つTips - Perl Advent Calendar Japan 2012 Casual Track なんか今年参加者少ないのでみんな参加すると良いと思います!! -> http://atnd.org/events/34611

Perlで補完のきくインタラクティブシェル

すなわちRubyでいうpry相当のもの。Rubyからきた人に聞かれることぶっちぎり一位が「Perlにpry相当のもの無いの?」なので書きます。Perlのインタラクティブシェルは たくさんある のだけれど、自分は Devel::REPL の re.pl を使っているのでそれを推したい…

t/foo/foo.tのように階層のあるテストはデフォルトではmake testの対象外

CPANモジュールガイドのModule::Installの項を眺めていたらびっくりした。僕はこれ今日まで知りませんでした。デフォルトでは (t|xt)/*.t が対象。再帰的ではない。t/foo/foo.tのように階層を持ったテストを含めるにはMakefile.PLに以下の一行を追加する必要…

「Modelより上のレイヤーのテスト」という題でYokohama.pmで発表してきました

スライドはこちらです。 http://cside.me/slides/201210_yokohamapm/最近モデルのテストだけでは心もとないなーというケースに悩んでいて、それを補う方法をいろいろ調べたのでそれについて話しました。最近というかこの問題のことはいつも考えてる感じなの…

YAPC::Asia 2012に行ってきた

YAPC::Asia 2012に行ってきた。まずは運営の方々、お疲れ様でした。 他人を通してはじめて自分が客観的に見える、みたいに言うけど、それを強く感じた週末だった。考えたことを、つらつらと書く。 まず、自分の中の「勉強会」というものに対しての考えがだい…

quickrun.vim + Project::Libs の組み合わせが便利

VimでPerlを書いている人なら、編集中のテストでquickrunして「Can't locate ...」が出てやる気をくじかれた経験があると思います。パス通ってないからそりゃこうなりますね。で、そういうときは、Vimを抜けてプロジェクトのトップディレクトリでproveするか…

使われてないCSSセレクタを洗い出すChrome拡張

https://chrome.google.com/webstore/detail/mmjpkmmfkekecemhcnihbidgidokcbjl/作ってみたものの、デベロッパーツールのAutditsタブで見れると教えていただいた。あーあー… orz

ログの任意のキーワードに好きな色をつける

Apacheログに色を付けて快適tail生活 - y-kawazの日記 というのがあるけれど、 [31m とかで色を指定するのあまり人間が読める感じがしないので、もっと簡単に定義できるやつ作った。https://gist.github.com/2929372こんな感じにキーワードと色を定義できる…

PerlのWeb開発初心者のためのTips について喋った

社内の同期を対象にプライベートにやったものだけど、公開してまずい内容は含めてないので公開します。PerlのWebプログラミング効率化のTips - Csideグループ一般的なノウハウをまとめたかったのだけど、だいぶ僕の好みも入ってしまったかな…。

ちょっとずつ書けるブログ欲しい

技術系の内容をブログに書く敷居が自分の中で知らぬ間に上がりつつある。ブログって追記してもその内容はフィードに流れないじゃないですか。(いや別記事にすればいいんだろうけど、同じトピックを別々の記事に散らばらせるのは自分が後から探すときだるい…

アイコン画像に割り当てられているCSSクラスを調べるやつ作ってみた

https://github.com/Cside/icon-class-visualizer *1 アイコンって普通、全アイコンの画像が一枚の画像に詰まってて、それをCSSで部分的に切り出すことで表示しているけれど、「このアイコン使いたいけどCSSのクラスどれ使ってるんだろなー」を楽に調べられ…

その人にとっては当たり前のもの

今日、keikuboさんに誘ってもらってRackhub座談会なるものに参加していたのだけど、そこで「どのブラウザ使ってる?」みたいな話にたまたまなって、rosylillyさんが「いやーイベントの発火にブレークポイント仕込める機能がないと生きていけないので僕はChro…

開発時のPlackのアクセスログフォーマットを指定する

Plack::Middleware::AccessLogは、開発環境(PLACK_ENV=development)の場合、P::M::Lint や P::M::StackTrace とともに「オプションなしで」Plack::Runner によって自動で読み込まれる。つまりログのフォーマットが指定できない。app.psgi で enable 'Acces…

Sub::Inspector というモジュールを書いた

https://metacpan.org/module/Sub::Inspectorcoderefから以下の情報を簡単に取り出すモジュールです。 アトリビュート プロトタイプ 元のメソッドが定義されているファイル 元のメソッドが定義されている行番号 名前 いずれも標準モジュールの B.pm を使えば…

移転します

http://cside.hatenadiary.com/よろしくお願いします。

Hello

World! #!perl use common::sense; say 'Hello';

いまからPerl/Ruby/Node.jsやるならRackhubを使わない手はない

自作Webアプリケーションのデプロイ先として Rackhub というのが新たな定番になると思っているので、このたび Kyoto Perl Mongers *1 で布教してきました。スライド: http://speakerdeck.com/u/cside_/p/vpsdotcloudrackhub Rackhub公式: http://rackhub.n…

UNIVERSAL::source_location_for を ShipIt しました

gfxさんが こちらのエントリー で紹介されていた UNIVERSAL::source_location_for が大変便利なので、他の環境でも手軽に使うため、モジュール化してGithubに上げたところ、gfxさんからついでにShipItしちゃいましょうとのGOサインをいただいたので、CPANに…

#on_lab Hackathonで音楽を自動連続再生するiPhoneアプリを作った

ONLAB Hackathon | PeaTiX というのに参加してiPhoneアプリを作ってきた。 アプリについての説明はこちらからどうぞ。(当日の発表資料に加筆したものです) iPhoneアプリ「Music Stream(仮)」紹介 ( #on_lab ) // Speaker Deck そして、信じられないけど賞…

はてなブックマーク「お気に入り」の閾値反映版RSSを配信するWebサービス作った

http://hbt.cside.me/ 【追記 2011/01/26 19:54】旧はてなブックマークのユーザーだと使えない不具合を直しました。すみません。 以前 CGIスクリプトとして公開した のをWebから使えるようにした版。 Perl使ったことない人には導入障壁が高いだろうし管理が…

Deliciousのブクマ数やコメントを見れるChrome拡張作った

英語圏の情報収集がはかどる。 インストール https://chrome.google.com/webstore/detail/kofggnbdofjihfmkiiodmkkaplockkfa/ リポジトリ https://github.com/Cside/delicious-bookmark-count.crx 最近意識が高まってChromeのデフォルト検索エンジンをgoogle…

ErrorMarker.vimでプロジェクトのlibディレクトリを自動的に@INCに追加する

VimでflymakeるためにErrorMarker.vimを使ってる人は多いと思う。 errormarker.vim で flymake(Emacsの) る - #生存戦略 、それは - subtech errormarker.vim を使って flymake っぽくするやつを試してみた - ◆F99a.q8oVEの日記 だけど、あれをPerlのプロジ…

アドレスバー検索でページング

Chromeのアドレスバーの検索は、結果を一度に5つまでしか表示してくれない暗黙の制限がある。 なので、昨日つくったこれも5つまでしか検索結果を表示できない仕様だったのだけれど、どうにかページングをしたかったので、末尾についた . (ドット) の数だけペ…

アドレスバーでMyはてブをインクリメンタルサーチ

アドレスバーに "b" と入力すると検索できる拡張を作った。 【追記】末尾に . (ドット) を打つとページングできます。 ダウンロード https://chrome.google.com/webstore/detail/aldbbnfgfcjmcjggpldpjpmlplfladfh/publish-accepted?hl=ja ソースコード http…

Perl5.14でなくても配列操作関数にリファレンスを受け付けさせる

Perl5.14を使ったことのある方*1は、配列やハッシュのための関数群がリファレンスを受け付ける機能の便利さに感動を覚えたのではないかと思いますが、5.14でなくてもこの機能を使えるようにしたかったので、それを可能にするモジュールを作っています。 http…

YouTubeからMP3を落とすWebインターフェイスを書いた

自分用に欲しかったので、Amon2::Liteで作ってみました。 https://github.com/Cside/YouTube-to-MP3 セットアップの方法はREADME.mdにあるとおりです。(plackup、cpanm、ffmpegの入れ方はググッてね!) Amon2 とにかくコードが読みやすくて、ドキュメント…

僕がプログラミングをはじめたきっかけ

プログラミングをはじめたのは、たしか2回生の春だったと思う。 そのきっかけになったのは、 「就職に役立つスキルを今のうちから身に付けておこう」 みたいな打算的な考えからだったと今まで思っていたけれど、 やっぱりそれはごくごく一部に過ぎなかった…

Vimで保存時の構文チェックを非同期にやるようにする

今までは、.vimrcに function! _CheckPerlCode() exe ":! perl -c %" endfunction command! CheckCode call _CheckPerlCode() autocmd BufWrite *.pl,*pm,*t :CheckCode のように書くことで、保存のたびの構文チェックを「同期的に」やっていたのだけれど*1…

Chromeでlivedoor Readerのピンをタブで開くようにする

Chromeでは、LDRでピンをクリックしたとき、ピンに含まれるURLがすべて別ウィンドウとして開いてしまうらしいので、これをタブで開けるようにした拡張を作りました。 Cside/LDR_OpenPinsOnTabs - GitHub ソースをダウンロードした後、 chrome://extensions/ …

はてなブックマーク Google Chrome 公式拡張で、Googleの検索結果にブックマーク数が表示されなくなった件

について原因を調べてみたら、どうも検索結果のHTMLに変更があった(検索結果を包むdiv要素が1つ増えた)のが原因だったようなので、XPathにちょろっと書き足してpull requestしました。 diff --git src/lib/11-Siteinfo-sources.js src/lib/11-Siteinfo-sou…

WebSocketを使って重い処理の進み具合をリアルタイムにクライアントへ通知する

分割が可能な重い処理をサーバー側で実行して、処理の状況の変化をクライアント側で表示させたいとき(プログレスバーみたいなのを作るとき)、どういう方法がいいかちょっと考えてみた。問題は「どうやって処理の進歩状況の情報をクライアントサイドでリア…

オフラインでウェブページを閲覧するための Fetch::WithStatic 書いた

普通、スクレイピングしたウェブページをブラウザで開くと、外部の .js や .css や画像ファイルが無いので、ぐっちゃぐちゃになってますね。 ということで、 コマンド1発でウェブページを静的ファイルごとまとめてダウンロードできるモジュールを作りました…

「お気に入り」ページの閾値反映版RSSを配信するCGI

Google Reader Livedoor Reader はてブのお気に入りページはRSSを吐いてくれます*1が、お気に入りユーザー数の閾値が1user縛りなので、お気に入りを増やすとあっという間にフィードをチェックしきれなくなりますね。というわけで、いつものように作ってみま…

Chromeのスタートページで自分のはてブをインクリメンタル検索する拡張(ただしPerlで書いた)

せっかくブクマしても、なかなか後で自分のブクマを見返したりってしないじゃないですか。特にChromeだとサイドバーが無いから、マイブクマを常にサイドバーに表示させて…なんてこともできないし。 そういう習慣をなんとか直したかったので、Chromeのスター…

Growlについて(最近入れたものなど)

長いコマンドを実行した後、完了したかどうかを見に行く手間が省けて、非常に便利でした。 GNU screen の裏にいる Window で完了したコマンドを Growl 通知したい - unknownplace.org proveコマンドの完了をGrowl通知するプラグインを書いてみた - すぎゃー…

関連エントリーをその場で表示

https://github.com/Cside/Related-Entries-crx