タグ

ブックマーク / naoya-2.hatenadiary.org (26)

  • 【今北産業】3分で分かるLTSV業界のまとめ【LTSV】 - naoyaのはてなダイアリー

    id:stanaka がはてなで使って居るログフォーマットが LTSV だよーとブログに書く Labeled Tab Separated Values (LTSV) ノススメ - stanaka's blog Web界隈のエンジニアたち、特にログとか、#fluentd 関係者がざわつく 「ざわ・・・ざわ・・・」 @t_wada 「Unix 哲学の大事な点が形になっていると思う。素晴らしい。」 @hotchpotch 「cool」 六木、渋谷、白金台方面から京都へ熱い視線が送られる id:naoya がただ vagrant + chef を使いたいがために LTSV に乗っかる GrowthForecast を使っていたため GF の中の人が反応する @kazeburo 「[growthforecast]」 id:naoya が勢いで Text::LTSV を作る あまり反応がないのでしょ

    【今北産業】3分で分かるLTSV業界のまとめ【LTSV】 - naoyaのはてなダイアリー
    kits
    kits 2013/02/08
  • Firefox OS - naoyaのはてなダイアリー

    Firefox OS が面白そう、というので少し触ってみました。 Firefox OS はWeb 標準ベースの開発を基礎としたモバイル端末用プラットフォーム、要は HTMLJavaScriptCSS でアプリケーション開発できるモバイル端末用の OS。間もなく Developer Preview Phone な実機が発売されるというのでにわかに盛り上がりを見せているみたいです。 Firefox OS が目指すところは Web 標準による、開発者がロックインされないオープンなプラットフォーム。iOS や Android の昨今の状況を見れば、そのアンチテーゼになるプラットフォーム構想があってもおかしくないわけで、まさにそれを目指しているようですね。 いったいどんなものかという概観は dynamis さんによるスライドが分かりやすい。 Firefox OS from dynamis

    Firefox OS - naoyaのはてなダイアリー
  • HBFav というはてなブックマーク iPhone アプリを作りました - naoyaのはてなダイアリー

    ちょこちょこと余暇の時間を使って、HBFav という iPhone アプリを作りました。 HBFav は、はてなブックマークの「お気に入り」機能を閲覧するためのアプリです。はてなブックマークの「お気に入り」は、気に入ったユーザーがブックマークしたブックマークを一覧する機能、つまり、Twitter で言うところのタイムラインです。それを見る専用のアプリがほしかった、ということで作ったものです。 ・・・ということで、繰り返すと、HBFav はタイムライン形式でソーシャル・ブックマークを楽しむためのアプリ。はてなブックマークのお気に入り機能を活用しているぜ! という方におすすめです。 HBFav は、App Store からインストールできます。 App Store - HBFav : http://itunes.apple.com/app/id477950722 Kindle とともに HBF

    HBFav というはてなブックマーク iPhone アプリを作りました - naoyaのはてなダイアリー
  • Mojolicious::Lite で WebSocket を使ったチャットを作る - naoyaのはてなダイアリー

    node.jsの衝撃とWebSocketが拓く未来 (1/2):WebSocketで目指せ! リアルタイムWeb(1) - @IT という記事を読みました。node.js という V8 を用いたサーバーサイド JavaScript フレームワークを使うと簡単にイベント駆動のサーバが書ける、node-websocket-server.js を使うと node.js で WebSocket サーバが実装できる。Ajax による polling や Long Polling などと WebSocket のアーキテクチャ比較といった内容でした。 WebSocket を使うと手軽にサーバプッシュ的なアプリケーションが作れて嬉しいのですが、現時点では、HTTPサーバー側で WebSocket を処理する下地の実装をどう用意するかというところがひとつ課題でしょう。node.js はその回答のひとつとして

    Mojolicious::Lite で WebSocket を使ったチャットを作る - naoyaのはてなダイアリー
  • String::Dictionary - naoyaのはてなダイアリー

    String::Dictionary という Perl のライブラリを作ってみました。 http://github.com/naoya/perl-String-Dictionary/tree/master String::Dictionary は検索エンジンその他を作る時に必要になる「辞書」のためのデータ構造 + API です。辞書は単語の集まりですが、これを配列やハッシュなどで持つのではなく、単語をすべて繋げた一つの大きな文字列として保持することでメモリ領域を節約したものです。単語は単に文字列連結で持つだけでなく、Front Coding で圧縮しています。以下簡単な解説です。 辞書は例えば [0] ・・・ jezebel [1] ・・・ jezer [2] ・・・ jezerit [3] ・・・ jeziah [4] ・・・ jeziel ...という風に単語を配列で持つことで実現でき

    String::Dictionary - naoyaのはてなダイアリー
  • Introduction to DBIx::MoCo - naoyaのはてなダイアリー

    YAPC::Asia 2008 で OR マッパの DBIx::MoCo について発表しました。DBIx::MoCo は最近のはてなのサービスで利用しているバックエンドのソフトウェアで、Ruby 風のリスト操作や memcached による透過的なキャッシュなどをサポートしています。 http://bloghackers.net/~naoya/ppt/080516introduction_to_dbix_moco.ppt にて発表資料を公開しています。

    Introduction to DBIx::MoCo - naoyaのはてなダイアリー
  • LWP::UserAgent + POE::Filter::Line で行ベース処理 - naoyaのはてなダイアリー

    #!/usr/bin/env perl use strict; use warnings; use LWP::UserAgent; use POE::Filter::Line; my $filter = POE::Filter::Line->new; my $ua = LWP::UserAgent->new; ## POE::Filter::Line で $chunk を行入力に変換 $ua->get( 'http://d.hatena.ne.jp/naoya/', ':content_cb' => sub { my $chunk = shift; my $lines = $filter->get([ $chunk ]); for (@$lines) { print "got: $_\n"; } } ); POE::Filter は単独で使うことができます。LWP のコールバックと組み合わ

    LWP::UserAgent + POE::Filter::Line で行ベース処理 - naoyaのはてなダイアリー
    kits
    kits 2008/05/08
  • Web::Scraper - naoyaのはてなダイアリー

    Today I've been thinking about what to talk in YAPC::EU (and OSCON if they're short of Perl talks, I'm not sure), and came up with a few hours of hacking with web-content scraping module using Domain Specific Languages. 使ってみたよ! #!/usr/local/bin/perl use strict; use warnings; use FindBin::libs; use URI; use Web::Scraper; use Encode; use List::MoreUtils qw/uniq/; my $links = scraper { process 'a.key

    Web::Scraper - naoyaのはてなダイアリー
    kits
    kits 2007/05/10
  • naoyaのはてなダイアリー - さくらインターネット移行記#1

    先日のライブドアのテクノロジーセミナー(http://d.hatena.ne.jp/naoya/20061214/1166063145)でも少し触れたのですが、はてなのサーバーは今後さくらインターネットのiDCでホストすることになりました。 複数の iDC を検討しましたが、最終的にさくらインターネットに決めた理由は回線品質の高さと回線が低価格である点でした。 はてなのようなコミュニティ中心のサービスは、お金の面では、どうしても回線コストと収益の間にアンバランスが生じがちです。ショッピングサイトや各種メディアのようなコンテンツに比べてマネタイズが難しい、というのがその主な理由です。 例えばはてなのトラフィックの多くははてなダイアリーの日記へのアクセスで占められていますが、基的に個人の日記にははてな側からは広告を掲載しないポリシーでいます。そのためトラフィックを多数必要とされる箇所で収益を

    naoyaのはてなダイアリー - さくらインターネット移行記#1
    kits
    kits 2007/01/16
  • naoyaのはてなダイアリー - Perl で CSS セレクタ

    rubyスクレイピングして web の情報を取得するのには、今まで正規表現か xpath でやってたので、わりと面倒でした。で、ふと scrAPI というスクレイピングツールキットを知ったのですが、これがかなり便利そう。 このツールキットを使うと、CSS3 なセレクタを記述することで、要素を取得することができます。 という Ruby の scrAPI での CSS セレクタがいい感じでございますなあと指をくわえて見てたんだけど、 Per discussions in CSS Selector in Perl, I made a quick perl module HTML::Selector::XPath, which is available at http://svn.bulknews.net/repos/public/HTML-Selector-XPath/trunk/ now.

    naoyaのはてなダイアリー - Perl で CSS セレクタ
    kits
    kits 2006/10/03
  • naoyaのはてなダイアリー - HTTP::BrowserDetect Template Toolkit 動的CSS で CSS Hackless

    Perl に HTTP::BrowserDetect というモジュールがあるんですが、これを使うとサーバサイドでブラウザの判定ができます。 my $browser = HTTP::BrowserDetect->new($user_agent_string); if ($browser->is_firefox) { ... }とかして使う。 CSS を静的なファイルではなく動的コンテンツとして提供してるサイトなら、このモジュールを使えば CSS Hackless でクロスブラウザなスタイリングができるよという話。TT で CSS のテンプレートを書いてるのであれば、 div#body ul { [% 'line-height: 120%' IF browser.is_ie %] }とかできて幸せ。というのを思いつきました。Catalyst::Plugin::Browser とかはこのために作

    naoyaのはてなダイアリー - HTTP::BrowserDetect Template Toolkit 動的CSS で CSS Hackless
    kits
    kits 2006/08/11
    CSS hackよりブラウザ判定の方が保守が大変だと思う(新しいブラウザが出るたびにサーバサイドのプログラムを対応させなければならないので)
  • naoyaのはてなダイアリー - REST と GET

    RESTful なアプリケーションでは、対象とするリソースに副作用を及ぼすときは POST なり PUT を使うのがベストプラクティス。(ベストプラクティスという言葉を使ってみたかった!) この考え方はウェブアプリケーションを作るときに、GET にするか POST にするかに明確な指針を与えてくれてすっきりします。 で、ふと思ったんだけど、表面的には GET でよさそうだけども実は中でリソースに副作用が及んでいるような代物はどうしたらいいんだろうなということ。例えば検索エンジンなんかで、クリックに合わせて後ろでクリック回数を数えてたり統計とってたりするものがあると思うんだけど、そういう類。 ウェブサイトの検索エンジンとかだとクリック対象の URI が差すリソースが外部サイトでちょっとイメージしづらいので、例えば search.cpan.org など。モジュールの検索結果からのクリック回数を

    naoyaのはてなダイアリー - REST と GET
    kits
    kits 2006/05/02
    「ベストプラクティス」の使い方に違和感。(RESTfullなアプリケーションでリソースを変更する時にPOSTやPUTを使うのは、bestと言うよりもonlyのような)
  • diary.pahoo.org - naoyaのはてなダイアリー

    http://b.hatena.ne.jp/entry/http://diary.pahoo.org/ otsuneさんも書いてるけど。これって単に diary.pahoo.org の正引きにはてなダイアリーのアドレスを指定してるだけでしょ。 $ dig diary.pahoo.org ; <<>> DiG 9.2.1 <<>> diary.pahoo.org ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 1725 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 5, ADDITIONAL: 0 ;; QUESTION SECTION: ;diary.pahoo.org. IN A ;; AN

    diary.pahoo.org - naoyaのはてなダイアリー
    kits
    kits 2006/03/03
    あまり問題視されてない様子だけど、複数のURIで同じコンテンツを見れるようにするのは避けた方がよい気がする(サーチエンジンのランク付け等に影響がでそう)
  • naoyaのはてなダイアリー - tmpfs は本当に容量が動的なのか

    Linux には tmpfs という便利なファイルシステムがあります。 $ mount -t tmpfs -o size=64m tmpfs /dev/shm $ mount -t tmpfs -o size=64m /dev/shm /var/tmpとすると、/var/tmp がディスク上ではなくメモリ上に作られたファイルシステムとして mount されます。なので、/var/tmp は I/O 時にディスクI/Oが一切発生しない高速なディスクとして使えると。いわゆる RAM ディスク。(もちろんサーバーの電源を落とすと保存したファイルは消えます。) この tmpfs はなかなかに便利で、キャッシュとかそういうものでディスクにおいてたものここ置くと、ディスク I/O がカットできて超高速になります。はてなでは MySQL のスレーブの MyISAM のファイルを tmpfs において、オ

    naoyaのはてなダイアリー - tmpfs は本当に容量が動的なのか
    kits
    kits 2006/02/17
    tmpfsの話
  • きよへろのPerlコードをリファクタしようのコーナー No.2

    2回目やってるっぽいので、今回も私家版を書いてみる。 というわけで id:naoya からの今回の課題。 「スクリプトを実行することで、現在の日付を返すスクリプト」 やっぱり最初は localtime を素で使っちゃうよね。Perl の入門書にはおそらくほとんど localtime での例になってると思われます。しかし、僕なら Time::Piece を使う。 #!/usr/local/bin/perl use strict; use warnings; use Time::Piece; my $lt = localtime; printf "%s %s\n", $lt->ymd('/'), $lt->hms;なぜって、localtime の関数型インタフェースがださすぎるから。Matt Sergeant タンのTime::Piece を使えば組み込みの localtime が OO イン

    きよへろのPerlコードをリファクタしようのコーナー No.2
    kits
    kits 2005/10/31
  • きよへろの Perl コードをリファクタしようのコーナー - naoyaのはてなダイアリー

    キーに姓、バリューに名を格納したハッシュに yasuhiro と引数を渡すことで onishi と返すスクリプト(今月始めに作成) id:kiyohero が Perl を勉強しはじめたというのでリファクタしようのコーナーです。続くかどうかは分かりません。 #!/usr/local/bin/perl use strict; use warnings; my %staff = ( kondo => 'junya', ito => 'naoya', onishi => 'yasuhiro', danjou => 'nobuo', minowa => 'higepon', ); my $user = shift or die "usage: $0 <name>"; print $staff{$user}, "\n" if $staff{$user}; 変数が入らない文字列はシングルクォートで。

    きよへろの Perl コードをリファクタしようのコーナー - naoyaのはてなダイアリー
    kits
    kits 2005/10/28
    姓=>名のハッシュなら同名の人がいる場合もありそう。私案→ print "$_\n" for grep { $user eq $staff{$_} } keys %staff;
  • Amazon.co.jp のタイトル - naoyaのはてなダイアリー

    Amazon.co.jp の HTML のタイトルが最近「Amazon.co.jp: 通販サイト 、DVD、CD、エレクトロニクス、家電、おもちゃ&ホビー、ホーム&キッチン、ゲーム、ソフトウェア、洋書ほか」なんてのに変わりました。この間までは「Amazon.co.jp: アマゾンへようこそ!」だった。 おそらく SEO を考慮してのこと(奥様方たちは、ネットで買い物したいときは Yahoo! で"通販"と検索してサイトにたどり着く) だと思うのだけど、なんか Amazon には自身から「通販サイト」とか名乗ってほしくないなあと思うのは僕だけだろうか(笑) Amazon はネットの中でも「通販サイト」なんていう小さなくくりを越えた、Technology Geek にも愛されるクールなショッピングサイトというイメージなのだ。そういうのをドドーンと打ち出してホシス。 .com の方でも「Onl

    Amazon.co.jp のタイトル - naoyaのはてなダイアリー
    kits
    kits 2005/10/27
  • submit ボタン disable 技の罠 - naoyaのはてなダイアリー

    昨日のonsubmit で submit ボタンを disable にしてユーザビリティを良くするにはちょっとした罠があって、それに気付かずに使うとはまってしまうかもしれないので、それもちょっと書いておく、というか今日僕自身がはまったわけだが。 罠というのは、type="submit" な input 要素、つまりは submit ボタンを onsubmit ハンドラで disable するまでは良いのですが、このとき <input type="submit" name="foo" value="bar">としていて、foo=bar という値が渡ってくることを期待し、それを内部の処理に使っていると嫌な目に逢う、という話です。先のやり方では input 要素が disable になって GET なり POST なりされるので、押したボタンに対応するパラメータが渡ってこない、というわけです。一

    submit ボタン disable 技の罠 - naoyaのはてなダイアリー
  • naoyaのはてなダイアリー - onsubmit で submit ボタンを disable にしてユーザビリティを良くする

    先の Yahoo! Shopping のアプリケーションで、今度ちょっとやってみようと思ってたことを実装してみた。 http://bloghackers.net/~naoya/ys/app.cgi ボタンを押したときに、そのボタンが disable になります。この方法を使うとボタンが押されて次の処理に入ろうとしているというのが直感的に分かるのと、二重送信防止にもなるということでユーザビリティが改善できます。 仕掛けはすごく簡単で、form の onsubmit ハンドラに、その form に紐づく submit ボタンを disable になるような JavaScript を登録しておくだけ。 function disableSubmit(form) { var elements = form.elements; for (var i = 0; i < elements.length;

    naoyaのはてなダイアリー - onsubmit で submit ボタンを disable にしてユーザビリティを良くする
    kits
    kits 2005/08/03
    二重送信を防ごう
  • XML::Simple におけるパーサーの実行速度比較 - naoyaのはてなダイアリー

    XML::Simple は、どんな XML でも Perl のデータ構造に自動変換してくれるかなり便利なモジュールなのですが、中でツリーを解析したりいろいろやってるせいもあって、速度的にはあまり誉められたものではありません。以前に Perl で XML の処理はどれが速いかベンチ で比較したときには、随分遅いなという印象でした。 ただ、XML::Simple はその中で利用するパーサーを色々切り替えられるようになっています。じゃあそれを切り替えたら少しは速くなるんだろうかと気になってベンチを取ってみました。 XML::Simple は $XML::Simple::PREFERRED_PARSER に任意の SAX パーサーを指定するとそれを使ってパースするようになっています。 XML::LibXML::SAX XML::SAX::Expat XML::SAX::ExpatXS XML::P

    XML::Simple におけるパーサーの実行速度比較 - naoyaのはてなダイアリー
    kits
    kits 2005/08/01
    速さならXML::Parser