タグ

ブックマーク / mattn.kaoriya.net (56)

  • Big Sky :: 今更ながらGoogle v8でembedする方法を紹介してみる。

    最近どのブログでも node.js ばかりでもう飽き飽きしてる皆さんこんばんわ。 node.js 面白いですよね!ェ node.js ってアプリケーションを作る側(つまりライブラリを使う側)からすると、Web周りの便利なライブラリが既に色々あって、そのライブラリが一体どうやって動いてるのか気にすることってあんまり無いかと思います。 pure javascriptな物ならばコードを読むのは簡単です。ただしやれる事に限りがあります。node.js はGoogle製のJavaScript Engineであるv8をベースに作られているのですが、このv8はアプリケーションに組み込むのに適した構成になっていて、関数テンプレートやインスタンス、プロトタイプという各機能がC++のクラステンプレートで上手く表現出来ているライブラリです。Spidermonkeyも確かに扱うのは簡単なのですが、僕からすると若干

    Big Sky :: 今更ながらGoogle v8でembedする方法を紹介してみる。
  • Big Sky :: Goプログラマであるかを見分ける10の質問

    下記質問にそれぞれ50文字以内を目安に簡単に説明すること。 パッケージ内に定義した関数を外部に公開するにはどうすれば良いか? 非同期に処理を行う為の命令は? 関数を抜けた際に処理を実行するにはどうするか? goroutineの同時実行数を変更するにはどうするか? コンパイラやリンカが8g/6g/5g、8l/6l/5lという名前になっている理由は? Goのガベージコレクションの実装は一般的に何と呼ばれている類か? レシーバがnilの場合にメソッドを呼び出すと何が起きるか? 可変個引数はどの様に定義するか? 関数内で定義されるローカル変数のアドレスを戻り値として外部から参照するとどうなるか? interfaceとstructの違いは何か? panicを補足して強制終了させない為にはどうするか? 答え パッケージ内に定義した関数を外部に公開するにはどうすれば良いか? 関数名の先頭を大文字にします

    Big Sky :: Goプログラマであるかを見分ける10の質問
  • Big Sky :: node.jsでtwitter上に流れる画像をパラパラ見せるサーバを作ってみた。

    こんばんわ。node.jsやってないとjavascriptのもぐりだと言われている昨今、いかがお過ごしでしょうか。 個人的には node.js は2回くらい飽きてしまって、3周目くらいです。 よく考えたらこのブログでは一度も node.js に触れてなかったなーと思ったのと、最近触ってないから忘れてそうだな...という思いからエントリにしてみました。 node.js が面白いと言われている理由の一つに非同期処理があります。そして非同期を面白くする題材として websocket があります。今日はその websocket を使って、サンプルを作ります。 物としては、twitter の filter stream から、instagr.am と picplz.com の画像URLを収集し、それをクライアントにブロードキャストします。クライアントはそれを受けて Growl 風にポップアップ表示す

    Big Sky :: node.jsでtwitter上に流れる画像をパラパラ見せるサーバを作ってみた。
  • Big Sky :: Goでblosxomライクなブログサーバ書いた。

    新しい言語を始めて慣れてくると、必ず作りたくなるのがblosxomですね。(ですよね?) て事でGoblosxomライクなのを作った。cgiも出来なくないけど、GoはWebに強かったりもするので、web.goを使ってサーバとして書いた。 名前は「blogo」(ブロゴー!えっ)。blosxomライクにテキストファイルを読み込んで、タイトルと文をこしらえます。 今回はHTMLのテンプレートエンジンとしてmustache(マツタケじゃないよ)を選びました。 結構ハマってしまったけど、一通り動いた。設定ファイル(JSON)でフォルダ位置やタイトル、サブタイトル、リンク一覧なんかを変更出来ます。見た目はこんな感じ。 短いのでソース全部のっける。 package main import "bytes" import "html" import "io" import "io/ioutil" imp

    Big Sky :: Goでblosxomライクなブログサーバ書いた。
  • Big Sky :: linuxでgtkpodを使ってiPod nano 6thへ曲の同期が出来た。

    « javascriptを難読化するapache filterモジュールmod_aaencode書いた。 | Main | Dropboxの容量が増えた。 » いままでは、ウォークマン使ってたんだけどいい加減容量も小さいし、電車の中で出すのも恥ずかしいくらい古い物になっちゃった。 ただどういう訳か先日、iPod nanoの6世代を手に入れた。めちゃくちゃちっちゃい。マルチタッチ液晶で指でグリグリ出来る。カッコいい。 FMラジオも聴けるし、写真を取り込んで見ることも出来る。一応、万歩計もついててnikeのサービスと連動してる。 iTunesから転送すべきだが、Linuxにはgtkpodっていうツールがある。 gtkpod iPod Manager gtkpod is a graphical user interface for the Apple iPod for Unix-like s

    Big Sky :: linuxでgtkpodを使ってiPod nano 6thへ曲の同期が出来た。
  • Big Sky :: Uniteプラグイン書いた。

    最近のVim界隈では、バッファセレクタの新しい形の一つであるUniteが注目を浴び始めています。 Shougo's unite.vim at master - GitHub unite all sources https://github.com/Shougo/unite.vim Uniteはバッファセレクタという単純な概念に縛られた物ではなく、候補選択を行うユーザインタフェースとして提供されるライブラリ的な代物です。 Uniteにはバッファやファイル、MRU(Most Recently Used)等、通常候補選択しそうな物がUnite sourceとして既に含まれていますが、プラグインを書く事で自分で定義した候補選択がUI付きで実現出来る事になります。 Uniteはまだ発展途上ではありますが、今日はどれだけ少ないコードでUnite UIが使える様になるかを皆さんに伝えるべくUniteプラ

    Big Sky :: Uniteプラグイン書いた。
  • Big Sky :: favstar.vim書いた。

    « いつまでたっても捨てられないexcitetranslate.vimを改造してgoogletranslate.vimを書いた。 | Main | Uniteプラグイン書いた。 » favstarを見にいくのにいちいちブラウザあげるのが面倒くさいので、なんとかならないかなと思ってた。 普段TwitVimを使ってるんだけど、同じようにvimから見れないかなーと思って勢いで書いた。 function! s:ShowFavStar(...) let user = a:0 > 0 ? a:1 : exists('g:favstar_user') ? g:favstar_user : '' if len(user) == 0 echohl WarningMsg echo "Usage:" echo "  :FavStar [user]" echo "  you can set g:favstar_u

    Big Sky :: favstar.vim書いた。
  • Big Sky :: Facebookの今後を勝手に予測してみる。

    人が増える サーバが落ちる サーバが落ちる イルカ昇天画像 グリーンピースから(以下略 Facebook婚 Facebook離婚 改変リンク ネタパクリ疑惑 闇プログラマ(以下略 2000人くらいフォローしないと観測範囲が(以下略 勝手にリンク禁止 勝手にフォロー禁止 勝手に「いいね!」禁止 はま○やという人が「こんにちわ、こんにちわ」(以下略 はせ○わようすけという人が「Facebookの壊し方」をノートに(以下略 ○ぬがわまさとという人がXSS(以下略 Facebookで動くボット登場 ボットと知らずに恋する人現る Facebook版ふぁぼったー登場 ダッシュボードに大量の「なるほど5時じゃねーか」 勝手に「いいね!」(以下略 FacebookをFBって略すな 認証APIの大胆な変更 サポートがユーザに「君らはクライアントの半分を殺した」と言われる

    Big Sky :: Facebookの今後を勝手に予測してみる。
  • Big Sky :: MacでもLinuxでもWindowsでもTwitterのhome_timelineをGrowl

    PerlのGrowlライブラリって色々ある訳ですが、誰かが書いたGrowlするアプリのコードを実行しようとした際にWindowsLinuxで動かないと少し悲しくなります。 そこでGrowl::Anyってのがあればいいんじゃね?って事で書いてみました。 Mac::Growl、notify-send、Desktop::Notify、Net::GrowlClient、Growl::GNTPのどれかがインストールされていれば使えます。 mattn's p5-Growl-Any at master - GitHub perl module that provide any growl application http://github.com/mattn/p5-Growl-Any 今日はこれを使って、twitterのhome_timelineをGrowlするスクリプトを書いてみました。 #!per

    Big Sky :: MacでもLinuxでもWindowsでもTwitterのhome_timelineをGrowl
  • Big Sky :: TwitterのBasic認証廃止は約半分のデスクトップクライアントを殺した。

    さて、TwitterがBasic認証を廃止して1ヶ月が経とうとしています。 皆さんクライアントをOAuth対応したり、乗り換えたりしたでしょうか? 今までBasic認証で動いていた、ちょっとした捨てコード、どうなってるでしょうか? Twitterが始まった当初、gtktwitterというデスクトップGUIで動くTwitterクライアントを作りました。まぁ作りはそれ程優れた物じゃなくて、RTなんか無い頃でfriends_timelineが見れて、発言出来て、@によるリプライが出来る程度の物でした。 ただ純粋なC言語だけでGTKおよびcurlを使ったクライアントという事もあり、一部のgeekからは人気があったみたいです。 さてこのgtktwitterを今回、Basic認証が消え去った現状でも動くようにしてあげようと思い、今回改造を始めた訳です。 まず大きな壁にぶち当たりました。 Twitter

    Big Sky :: TwitterのBasic認証廃止は約半分のデスクトップクライアントを殺した。
  • Big Sky :: VimmerなPerl開発環境

    えーっと、IDE使ってません。ごめんなさい。 PerlをIDEで書いてる人、どれくらいいるんだろう。何使ってるんだろ。 私はLinuxでもWindowsでもVimを使ってます。Perlってサーバで使われる事が多いし、サーバだとsshで入る事が多いだろうし、まぁXの転送やVNCやそれっぽいのでグラフィカルに操作しても良いけど、正直PerlのドキュメントもテキストベースだしPerlで入力補完出来るグラフィカルエディタもまず無いと思ってる。 で、私がVim上で使ってるPerlの開発を「200倍便利にするスクリプト」を紹介。 perldoc.vim perldocはPerlのオンラインマニュアルなんだけど、これを一々ターミナルに戻ったりして引いてると時間のロス。screenで分割して開いてもいいんだけどscreenの画面間移動よりもVim内でのウィンドウ間移動の方が操作感が統一出来てて良い。 そこ

    Big Sky :: VimmerなPerl開発環境
  • Big Sky :: 僕らはAPIで繋がりあえる

    今日、tsupoさんから「Twitter API プログラミング」というが届いた。 tsupoさん、ありがとうございました。 まだ少ししか読んでないけど、Twitterが好きで、プログラミング言語が好きで、そして何よりAPIが好きだという人にはもってこいな一冊だと思います。 1冊のほとんどをTwitterの認証やAPIの説明に費やしています。PHPPythonRubyPerl、C/C++など多くの実装例も含まれています。 私は基的なpythonのモジュールのみでxAuthを実装したサンプルコードを載せて頂きました。 ところで、今日ふとこのを手にとった時、「なんでみんなこんなにAPIが好きなんだろう」、「たかだかネットワーク上に流れるテキストストリームになぜ皆が魅了されるんだろう」と思った。 APIがあって何が嬉しい?フィボナッチ数列をtwittre.comにポストしたい?誰が嬉

    Big Sky :: 僕らはAPIで繋がりあえる
  • Big Sky :: zen-codingの殆どの機能をzencoding.vimに取り込んだ。

    全国1億8千万人のzen-codingファンの皆様、如何お過ごしでしょうか。 先日の記事でzen-codingをpure vimscriptに移植した「zencoding.vim」をご紹介させて頂きました。 あの時は略語の展開(Expand Abbreviation)しか機能がなく物足りなかったかもしれません。まぁ殆どの移植品はExpand Abbreviationしか無いのですが。 zen-codingには他どんな機能があるかというと、実はまだ便利な機能があったりします。 オフィシャルのサイトによると Expand Abbreviation Wrap with Abbreviation Balance Tag Inward/Outward Go to Next/Previous Edit Point Update Image Size Merge Lines Remove Tag Spl

    Big Sky :: zen-codingの殆どの機能をzencoding.vimに取り込んだ。
  • Big Sky :: perldocのbash-completionが激しく便利でうれしょん出た。

    タイトルは釣りです。 perlでは一般的にperldocを使って調べ物をする事が殆どですが あれー、あのモジュールなんだっけ...IO:: 忘れた。 とか IO:: の下辺りに似たモジュールあったよなー なんて事が結構あったりするのですが(私だけかも)、今日もSys::SendfileのAuthorから「チミが送ってくれたpatchに対して僕が書いたtestがWindowsで通らないんだけど、何か分かるかい?」とメールが来てて それ、以前ワテがp5pに送ったpatchの件ちゃいますやろか、確かIO:: ...えーっと... ってなってしまった訳です。 なんか良くある事なので解決出来ないかなぁと思っていた所、見つけてしまいました。perldoc-completeを。 ap's perldoc-complete at master - GitHub A bash completion help

    Big Sky :: perldocのbash-completionが激しく便利でうれしょん出た。
  • Big Sky :: Vim script manager「Vimana」が便利すぎる。

    これまでvimスクリプトをインストールするには、vim onlineでダウンロードして、書いてあるインストール手順に従って、時にはそのまま、時にはzipを解凍して.vim(windowsならvimfiles)に自前でコピーするのが一般的でした。おそらく自動化されている方もいるかもしれませんが、特有のスクリプト専用の更新ツールくらいかと思います。 Perlを知っている方ならばCPAN、rubyを知っている方ならばgemにあたる物がvimには無かったんです。 配布物が統一されていない為、無理だろうな...とも思ってました。 が、そこに登場したのがVimana(Vim script manager)です。 Vimana(3)             User Contributed Perl Documentation            Vimana(3) NAME Vimana - Vim

    Big Sky :: Vim script manager「Vimana」が便利すぎる。
  • Big Sky :: ReverseHttpで誰よりも速く「はてなブックマーク」に反応するツール書いた。

    ReverseHttp面白いですね。 ReverseHttp Tunnel HTTP over HTTP, in a structured, controllable, securable way. Let programs claim part of URL space, and serve HTTP, all by using an ordinary HTTP client library. http://www.reversehttp.net/ ただ勘違いされやすいのが「何がReverseなの」という部分。通常ブラウザからリクエストが送信され、それに対する応答がサーバから返されます。ReverseHttpはサーバで何かアクションが起きた場合に、ブラウザ側がその通知を受信する...なんて事が出来るプロトコルです。仕組みはcometというlong pollに似た仕組みで、サイトのdemo

    Big Sky :: ReverseHttpで誰よりも速く「はてなブックマーク」に反応するツール書いた。