タグ

ブックマーク / blog.64p.org (20)

  • LL から Java に移行した人がはまりがちなこと - tokuhirom's blog

    こんにちは。Java 初心者です。 Java 初心者、得に LL から Java に来た人にありがちな問題について社内向けに書いたものをオープンアンドシェアさせていただきます。 前提として、我々は Java 8 でガンガン攻めているということをご承知おきください。 また、自分がこの数ヶ月で「うわー。こうしとくべきだったのかー」と気づいたやつをドヤ顔で語っているということにもご注意ください。 【追記】 対象は中規模 B2C の場合です(中規模というのは facebook より小さいという程度の意味です) 例外を握りつぶさないようにしよう Eclipse が生成する以下のようなコードをそのまま残しているケース。 これは言うまでもなく良くないですね。デバッグが困難になります。 try { } catch (IOException e) { e.printStackTrace(); } Perl

  • Docker で Growthforecast をインストールする方法 - tokuhirom's blog

    ちょいちょい GrowthForecast のインストールが perl だから難しいとかいってる人をみかけるけれど、Dockerfile が用意してあれば、セットアップは簡単になるんじゃないだろうか。 audreyt が Dockerfile で配布する方法で irc logger を配布していたし、それを真似してみるのもアリかもしれない。そんな風におもって僕もやってみることにした。 Docker をつかうと、アプリをふくんだイメージを簡単に配布することが可能となる。インストール手順をごちゃごちゃとブログに書いたりするのもいいけれど、Dockerfile を共有したほうがいいのではないだろうか。再現可能だし。chef でもなんでもいいけど、docker はインストールが簡単なのがいいし、覚えることがすくなくていい。 いらなくなったら、イメージごとポイすればいいだけで、簡単だしね。 さて

  • Golang に入門した - tokuhirom's blog

  • 安定的な Perl アプリケーション運用のための perlbrew 運用テクニック - tokuhirom's blog

    前提知識Perl5 は minor version 間ではバイナリ互換性が保証されているPerl5 の minor update では、bug fix しか基的に行われないPerl5 Porters の保守的さ度合いは信用できるperlbrew でセットアップするときに気をつけることインストール名をデフォルトの perl-5.16.3 などとせず、perl-5.16 と minor version を含めないようにする。 例: perlbrew install perl-5.16.2 --as perl-5.16セキュリティフィックスがでた場合の処理chromaticの記事で知ったのだが、perlbrew には upgrade-perl というコマンドがあり、最新のバージョン(マイナーアップデートのみ)にアップグレードすることが簡単にできる。 perlbrew upgrade-perl

  • ☆plenv☆ 〜 brand new perl5 installation management tool♪ 〜 - tokuhirom's blog

    Hi, I implemented brand new perl5 installation management tool named plenv. from rbenvplenv is inspired from rbenv, from ruby world. rbenv provides a missing feature in perlbrew, it can use .ruby-version file to manage project local perl module. Use .perl-version!!With plenv, when you put a .perl-version file to ~/dev/MyProj/.perl-version, you can use your required perl version under the ~/dev/MyP

  • LTをはじめてやる君へ - tokuhirom's blog

    LT というのは メインのトークは大変なので、簡単に発表できる場をもうけよう5分なのですべっても大丈夫マイナーなネタをしゃべってもゆるされるようになんか一発ネタとかも発表できる場をもうけようなどの目的をもって設置されるものです。それほど気負う必要はないし、その日のうちに思いついてやったりする場合もあります(とくに海外では、飛び込みはあたりまえにあるといいます)。 ただ、一方で5分と話す時間がみじかくなっているので、話しなれていない場合には 自己紹介は手短にスライドの文字は大きくゆっくりしゃべるよく練習するの4点に気をつけましょう。 発表になれてない人ほど自己紹介を長くしがちですが、聴衆はあなたの生い立ちに興味はありません。名前、所属程度をいえば十分です。発表が、あなたのバックグラウンドをしらないと伝わらないものならば、かるく説明する必要はありますが、それでも30秒程度におさめる方がいいでし

    sasaplus1
    sasaplus1 2012/09/04
  • node.js でも Inline::C みたいなことをしたい。 - tokuhirom's blog

    node.js をつかっているときに、ふと C 言語を書きたくなったりしたことはありませんか? 僕はありません。 そういう時には、node-tcc をつかうといいですね。node-tcc は TinyCC( http://bellard.org/tcc/ ) の node.js バインディングで、これをつかうと以下のように、簡単に C 言語を実行することができます。 var TCC = require('tcc'), var tcc = new TCC(); tcc.compile_string('int main() { return 4649; }'); var ret = tcc.run(); // => 4649 しかし、これだけでは、C 言語をつかいこなしているとはいえないでしょう。出力が、main 関数の返り値しかありませんからね。 そこで node-ffi の出番です。以下の

  • micro-location.js がいかす - tokuhirom's blog

    https://github.com/cho45/micro-location.js URL のクエリをいいかんじに書きかえる処理を JS でするためにいいかんじのライブラリをさがしていたのだが、URI.js はなんか大仰なかんじなので micro-location.js をつかってみた。 jQuery#extend と組みあわせることで、目的の処理は達成された模様。 l = Location.parse("http://example.com/?foo=bar&baz=boz"); # → Location l = l.params($.extend(l.params(), {lat: 4, foo: "hoge"})) # → Location l.href # → "http://example.com/?foo=hoge&baz=boz&lat=4"

  • MVCは死んだ!!!!!1111 時代は TCTO だ!! - tokuhirom's blog

    モデルとかビューとかウェブアプリケーションの文脈では不適切な抽象化なので T(テンプレートエンジン) C(コントローラ) T(手続き) O(O/R Mapper) とよぶといいです。

  • 設定ファイルは relaxed JSON でいいんじゃないかとおもった話 - tokuhirom's blog

    JSON.pm の relaxed モードについてPerl5 の JSON.pm/JSON::XS では relaxed JSON というものがサポートされている。これは JSON 仕様をゆるくしたもので、 shell style のコメント(# 以後がコメントとなる)のサポートと、ケツコンマのサポートが含まれている。 JSON が設定ファイルとしてつかいづらいといわれる所以はたいがいコメントがつかえないことなので、まあこれなら許容範囲かな、と。mobirc の設定ファイルもこれにしてみました。 JSON の場合は、JS がわかる人なら手でかけるのと、まあわからなくても覚えることがすくないし、覚えても損がない感じがイカス!とおもいました。

  • 最速な JavaScript のリファレンスマニュアルサイトをつくった - tokuhirom's blog

    JavaScript のリファレンスマニュアルといえば MDN(Mozilla Developers Network) が有名ですが、MDN の資料は探索がめんどくさいし、表示が遅いということで使い勝手がわるいという問題がありました。 そこで、jQuery のリファレンスマニュアルサイトとして有名な jqapi.com とおなじよような使い勝手のサイトがあったらいいのになーとおもいました。 なので、つくりました。 サイト自体はすべて static なデータで構成されているので、github からデータを取得すれば、イントラや自分のマシン内で閲覧することも可能となっています。 なお IE での動作確認はしていないので、うまくうごかない場合は pull-req してください。

  • node.js で md5 を計算する - tokuhirom's blog

    md5 の計算については、node.js で添付されているライブラリである crypto でサポートされている。 Perl5 でいうところの md5_hex については、以下のようにすると計算できる。 var crypto = require('crypto'); console.log(md5_hex('All your base are belongs to us.')); function md5_hex(src) { var md5 = crypto.createHash('md5'); md5.update(src, 'utf8'); return md5.digest('hex'); } 以下は検算。 % perl -E 'use Digest::MD5; say Digest::MD5::md5_hex("All your base are belongs to us.")'

  • node.js 用のガラケーライブラリできたよー - tokuhirom's blog

    https://github.com/tokuhirom/mobileagent-js var MobileAgent = require('../mobileagent.js'), http = require('http'); http.createServer(function (req, res) { var ma = MobileAgent.getMobileAgent(req); res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello ' + ma.getCarrierLongName() + '\n'); }).listen(1337, "127.0.0.1"); console.log('Server running at http://127.0.0.1:1337/');なんかこんなかんじ。です

  • Node.js で重い処理をしてしまったときにタイムアウトするの法 - tokuhirom's blog

    (この記事は Node.js アドベントカレンダー不参加記事です) チャットサーバー的な使い方とか意外とみんな興味なくて、普通のウェブアプリケーションなどをかく、という用途にちょっと node.js がつかえたらいいのにな、とおもっている人がおおいようにかんじています。Node.js が人気なのは、v8 をうまくパッケージングしているのが node.js ぐらいで、そして v8 をうまくパッケージングするのが結構めんどくさいから、というところが大きいのです。ぶっちゃけ node.js が〜 とさわいでる人のうち8割は I/O multiplexing だからとかそういう理由で支持しているわけではなかったりするのです(偏見)。 さて、普通の web application のようなものを書こうとしたときに Node.js って基シングルスレッドだし、なんかうっかり重い処理したときにどうした

  • Amon2とJSONとセキュリティ - tokuhirom's blog

    [1]http://d.hatena.ne.jp/ockeghem/20110907/p1[2]http://www.atmarkit.co.jp/fcoding/articles/webapp/05/webapp05a.html[3] http://msdn.microsoft.com/ja-jp/asp.net/ff713315[4] http://labs.cybozu.co.jp/blog/kazuho/archives/2007/01/cross-site_including.phpあたりをよんで、JSON とセキュリティについてかんがえてみた。 ここで、有効とされている対策のうち while(1); を先頭に付与するPOST ですべて処理するといったあたりは、RESTful でないし、BK 感がひどいというか質的ではないのでできるだけやりたくない。 また、Amon2 では互換

  • HTTP/1.1 における Keep-Alive と HEAD の関係性について - tokuhirom's blog

    HTTP/1.1 においては、HEAD リクエストの場合には Message Body を送信してはならないということにはなっているのですが、現実的には、Message Body をおくりかえしてくるアホなサーバーがおおい。たとえば Plack では Plack::Middleware::Head を明示的に使用していない場合、普通にやると HEAD でも message body をかえしてしまうだろう。 というわけで、HEAD で Message Body をかえしてくれるサーバーがおおいのだが、Message Body をかえされてしまうと、Keep-Alive しているときにこまる。次のリクエストとまじる。 この問題にたいするよい解決策はないので、HEAD リクエストを送信した後には connection を close してしまうのが、現実的な解決策だとおもった。 現実的には、現

  • モダンな Perl の開発環境の構築方法 - tokuhirom's blog

    一般的な OSX 環境および Linux 環境における、モダンな Perl 開発環境の構築方法についてまとめてみたよ。 perlbrew のインストールperlbrew をつかうことにより、簡単に最新版の Perl5 を利用することができるようになる。 perlbrew をいれる。% curl -L http://xrl.us/perlbrew | perl - install % ~/perl5/perlbrew/bin/perlbrew init ~/.bashrc (または ~/.zshrc)に source ~/perl5/perlbrew/etc/bashrc を追記。あたらしいシェルをたちあげる。最新版の perl をインストールする。% perlbrew install perl-5.12.1 % perlbrew switch perl-5.12.1 ここまできたら、she

  • mac ports やめました! ー homebrew で快適 OSX 生活! - tokuhirom's blog

    http://mxcl.github.com/homebrew/ 昨日 mac mini を購入しまして、「さて、mac ports いれなきゃなあ。でも mac ports での環境構築って時間かかるし、CPU パワーもくうし、電気代かかるしエコじゃないし」とかおもっていたところ、そういえば hsbt さんが homebrew ってのをオススメしてたなーとおもって、いれてみたところ、非常に快適。 mac ports は、システムにもともとはいっている perl とか ruby とかもいちいちコンパイルするので、序盤の環境構築が非常に時間がかかるのが難点です。 しかし homebrew は、system にもともとはいっているものはそのままつかうので、初動がはやい。自分の場合、macbook の調子がわるくって、mac mini にかいかえたので、すぐにでもつかいはじめたかったので、非常に

  • tokuhirom blog

    Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at

  • tokuhirom blog

    Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at

  • 1