タグ

ブックマーク / jxck.hatenablog.com (8)

  • Golang Error Handling lesson by Rob Pike - Block Rockin’ Codes

    Intro この記事は Go Advent Calendar 2014 の 15 日目の記事です。 例えばネットワークのフレーム処理的なものを書いている場合、以下のようなコードがよくでてきます。 There are many codes like this, while writing a Network Frame Parser program. var type uint8 err = binary.Read(r, binary.BigEndian, &type) if err != nil { return err } var length uint32 err = binary.Read(r, binary.BigEndian, &length) if err != nil { return err } ... 関数の中では、各要素の長さ毎に読み込んで、読み込みに失敗したらエラーを

    Golang Error Handling lesson by Rob Pike - Block Rockin’ Codes
  • Go のスライスの内部実装 - Block Rockin’ Codes

    History 14/05/09: Merge2 を修正しました。http://twitter.com/jbking/status/464659353945911297 Intro Go のスライスは、いわゆる LL 系の言語が持つ可変長配列の実装と似ています。 よって LL のような手軽な扱いをすることもできますが、その内部実装を知ることでより効率の良いメモリハンドリングができ、パフォーマンスを改善や、メモリーリークの防止などに繋がる可能性があります。 この辺は SWrap というライブラリを作りながら勉強したので、今回は、この Go のスライスの内部実装を解説します。 Go の配列 スライスを知るためには、まず配列について知っておく必要があります。 Go の配列は固定長のため、以下のように長さを指定して宣言します。 var arr [4]int func main() { arr =

  • Node.js の起動オプション、環境変数、npm start の話 - Block Rockin’ Codes

    Node は起動時に色々オプションをつけることができます。 面白いもの、有益なものあるんですが、あまり言及されてないので、 ちょっと紹介してみようかと思ってます。 最後の npm start の話は、それ単体で書いても良いかと思っていたんですが、 関連するし良い機会なので書きます。 そして、オプション周り興味がない方も、Node やってる方は最後の npm start の話だけでも、 読んでいただけるとと思ったりします。(知らない方が多いようなので) ここで紹介している Node のバージョンは v0.7.7 です。しかし v0.6.x あたりでは、 v8 のバージョンが古く、オプションが微妙に違います。そこは v0.6.12 での結果を載せている場合もあります。 -h まあ、とりあえず全ては -h から始まる。ということで、実行すると以下が出ます。 Usage: node [option

    Node.js の起動オプション、環境変数、npm start の話 - Block Rockin’ Codes
  • Node で使える ECMA Script 5 の新機能 - Block Rockin’ Codes

    追記 11/9/24 Gistのリンクを家Wikiに貼ってみました。 11/9/24 log 関数を修正しました。 11/7/10 JSON.stringify の第二引数 replacer について、補足しました。 11/7/14 os0x さんの指摘を反映しました。 String.trimRight、trimLeft は ECMA Script 5 非標準です。 JSON.stringify の第3引数には"\t"などの文字列も渡せます。 JSON.parse の第2引数 reviver について補足しました。 Array.prototype.forEach の第2引数 について補足しました。 "use strict" 時の Object.freeze 等の挙動について補足しました。 「ECMA5 というのはちょっとおかしな略し方」について補足しました。 タイトルを修正しました。(旧

  • Node におけるスケールアーキテクチャ考察(SSP 編) - Block Rockin’ Codes

    *息抜きがてら書いていたら長くなってしまった。。 *当たり前ですが、あくまで個人的な考えです。 *ころころ変わるかもしれません。 Node の基的な知識についての話は色々なところで出始めて、 じゃあこーいう場合はどうするの? みたいな話が出始めたりもするようになってきた気もします。 正直、自分にもまだ分からないことだらけです。 そもそも自分はそこまでスケールに関するアーキテクチャや、OS の低レイヤに精通しているとは言えないので、 これを期に Node は何が得意で何が不得意なのか、スケールさせるために考えないといけないこと、などを自分なりにまとめて、 ついでに、これまで学んできた周辺のアーキテクチャに関する知識も混ぜて、色々思考実験をしてみたいと思っています。 だから WebSocket にブラウザが対応してないとか、そんな複雑なサーバ群当に運用できるのかとか、 そういう話は無しに、

    Node におけるスケールアーキテクチャ考察(SSP 編) - Block Rockin’ Codes
  • #jstudy2 で node.js について発表してきました。 - Block Rockin’ Codes

    昨日の #jstudy で、主催の @hokaccha さんから LT のお誘いを頂いたので、Node.js の話をさせて頂きました。 jstudy #2 : ATND 今回は、「Node.js ってなんなのか?」という部分を中心にしました。 アーキテクチャの話を割とざっくりしてから、 Node.js の雰囲気を知ってもらえればという感じにしました。 Node.js はサーバサイドも JavaScript で書けるけど、それだけでは無いんだよ、といった感じが何となく伝わればと思います。 実際前半あたりのアーキテクチャの話は、自分も色々勉強中です。 このスライド作るにあたっても、色々調べながらやったので、自分が間違って解釈したりしている部分が有るかもしれません。 (資料最後の参考資料あたりと、その他色んな資料) もし何かおかしなところが有ったら、教えて頂けると幸いです。 Nodejs Int

    #jstudy2 で node.js について発表してきました。 - Block Rockin’ Codes
  • node.js で エコーサーバと簡易コンテンツサーバ - Block Rockin’ Codes

    追記 ここの内容は Socket.IO のバージョンが v0.7 に上がったことで、古くなりました。 v0.7 については Socket.IO API 解説 - Block Rockin’ Codes を参照してください。 文 リアルタイムWebハッカソン : ATND に参加しました。 みなさん websocket を用いて開発する感じで、websocket の実装としては node.js を筆頭に jetty や ChannelAPI の話も聞けてかなり充実したハッカソンだったと思います。 ここで自分は node.js の websocket ライブラリである socket.io をいじってたんですが、 いくつかアプリ書いて、共通するのは以下のような感じだなということで簡単なメモ。 socket.io でエコーサーバ websocket でリアルタイムなアプリとなると、socket.

    node.js で エコーサーバと簡易コンテンツサーバ - Block Rockin’ Codes
  • node.jsのSocket IO-nodeでWebSocket - Block Rockin’ Codes

    前回は、pywebsocketでのWebSocketを紹介しましたが、HTML5 hack-a-thonでは結局node.jsの実装である Socket IOとSocket IO-nodeを使いました。 こちらも備忘録。 node.js node.jsはいわゆるサーバサイドJavaScriptの一つで、最近にわかに注目を集めてる(?)技術です。 主な特徴は もちろん全てJSで書ける。 コアがGoogleのV8エンジンで速い イベント駆動I/O node.jsの概要自体は、こちらのPREZIを使ったプレゼンが簡潔で分かりやすいかと思います。 Introduction to node.js by Toshihiro Shimizu on Prezi 丁度今日、node.jsの48時間耐久Hack-a-thonが開催されていました。 その名も、Node.js Knockout。@mesoさんも参

    node.jsのSocket IO-nodeでWebSocket - Block Rockin’ Codes
  • 1