ikemonn's blog

技術ネタをちょこちょこと

【Underscore.js】_.eachを読んだ

jashkenas/underscoreの_.eachを読んだ。 概要 第二引数で指定した関数に第一引数の配列やオブジェクトの各要素を引数として渡して、実行する。 var x = _.each([1,2,3], function(num){ console.log(num); }); // 1 // 2 // 3 ソースコード _.each = _.forE…

【Underscore.js】_.shuffleを読んだ

jashkenas/underscoreの_.shuffleを読んだ。 概要 Returns a shuffled copy of the list, using a version of the Fisher-Yates shuffle. Fisher–Yates shuffleを用いて、シャッフルされたリストのコピーを返す。 x = _.shuffle([1,2,3]); console.log(x); /…

Code Readingを読んだ 1章

本書を読む目的 他人の書いたコードを早く理解して、修正を加えられるようになりたい 自分の書き方をもっと洗練させたい 設計が苦手なので、既存のコードから読み取れるようになりたい はじめに 他人の作品を読まなかった偉大な作家、他人の筆使いを研究しな…

【Node.js】Vagrantとsupervisorでファイル更新後自動でプロセスを再起動させる

概要 Vagrantを使っており、ホスト側(Mac等)のファイルを変更したら自動でプロセスが再起動してほしい nodemonだと-Lオプションでできるが遅いらしい Usage with Vagrant · Issue #146 · remy/nodemon supervisorをつかって、ホスト側のファイルを変更したら…

Stack Overflow 10月「DevDays」に行ってきた

Stack Overflow 10月「DevDays」に行ってきました。 Stack Overflow社では開発者の力になれることは何でもやろうと考えています。その一つとして、開発者のみなさんが主役のイベントの開催を計画しています。 日本の開発者と意見交換しアイデアを聞くため、…

【Node.js】Express4.13.1でHTTPのPUT,DELETEメソッドを処理する

概要 HTMLのformにinput type="hidden"でname=“_method”, value=“put(delete)”を指定する method-overrideとbody-parserをインストールしておく method-overrideをapp.useする時に一工夫する 手順 formにhidden属性のinputを加える(index.ejs) <form class="" action="/posts/<%= i %>" method="post"> <input type="submit" name="name" value="delete"> </form>

【Node.js】ottoでExpressの環境を作る

きっかけ ottoでSymfony2を構築してみちゃったを読んで、Expressで試してみた。 ottoのDL 適当なディレクトリにダウンロードしてきて解凍すればOKです。 ~/binをmkdirして置きました。 $ cd ~/bin $ wget -qO- -O tmp.zip https://dl.bintray.com/mitchellh/…

【Node.js】HTTPクライアントの概要

3つのクラス HTTPクライアントを実装する際には次の3つのクラスについて理解することが必要 http.ClientRequest HTTPクライアントからHTTPサーバへ送信リクエストヘッダ及びボディを扱うクラス http.ClientResponse HTTPクライアントがHTTPサーバから受信し…

【Node.js】httpのエコーサーバを実装してみる

処理のざっくりした流れ http.ServerがHTTPサーバ機能を実現するサーバオブジェクトを生成する HTTPクライアントからサーバへのHTTPリクエストが送信される http.Serverはrequestイベントを発生させる 受信したリクエスト情報を持つ、http.ServerRequestとHT…

【Node.js】イベントループの仕組み

概要 Nodeのイベントループは文字通りwhieで行われている ループ処理はI/Oイベントの処理(リクエスト)の実行時やI/Oイベントの発生を待つオブジェクト(ハンドル)の登録時に維持される 例えば下記のコードはハンドルやリクエストが何も登録されていないので、…

【Node.js】イベントの作成と利用

概要 Node上ではイベント自体を定義して、それを任意のタイミングで発生させ、そのイベントに応じたプログラミングができる。 処理の流れは下記 イベントを発生するオブジェクトを作成する イベント発生時の処理関数を作成する イベントを定義する 任意のタ…

node inspectorを使ってデバッグする

手順 $ npm install -g node-inspector $ node --debug [デバッグしたいファイル] $ node-inspector node-inspectorを実行すると下記のようなログが出るので、表示されているURLにChromeでアクセス(下記の場合はhttp://127.0.0.1:8080/?ws=127.0.0.1:8080&po…

Node.js 4.0.0をEl Captianにinstall(zsh)

手順 $ curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.27.1/install.sh | bash $ nvm alias default v4.0.0 # 下記の設定をzshrcに追記 $ vim ~/.zshrc ↓追記内容 [[ -s (自分のホームディレクトリ)/.nvm/nvm.sh ]] && . (自分のホームディ…

Want to learn JavaScript in 2015?を読んだ時のメモ

JSを勉強しようと思ってWant to learn JavaScript in 2015?を見つけた。 後で見直すようにメモを取った。 概要 ゴールは1年でJSの仕事を得ること 筆者はBSkyBでJSの開発者としての仕事を得た 一番難しかったのは自分のJSレベルが中級になった時だった 初級と…

ヘネパタ 付録A (命令セットアーキテクチャの分類)

CPU

命令セットアーキテクチャの分類 主要な方式として、スタック、アキュミュレータ、レジスタを用いる方式がある スタックアーキテクチャ オペランドは暗黙的にスタックのトップ アキュムレータアーキテクチャ オペランドの1つは暗黙的に1つしか存在しないアキ…

コンピュータアーキテクチャのエッセンス 20章コンピュータアーキテクチャのエッセンス 20章

CPU

アーキテクチャの例と階層構造 ディジタルシステムのアーキテクチャはいくつもの抽象レベルで示すことができる システムレベル:コンピュータシステム全体の構造 ボードレベル:各ボードの構造 チップレベル:1つのIC回路の内部構造 参考 コンピュータアーキ…

コンピュータアーキテクチャのエッセンス 19章

CPU

性能評価 数多くの性能評価法が提案されている FLOPS 1秒間に実行できる平均の浮動小数点演算数 MIPS 平均の命令数 加重平均法 頻繁に使われる命令に重みをかける ベンチマークには一般的なプログラムや性能評価のためのプログラムを用いる SPECによって有名…

コンピュータアーキテクチャのエッセンス 18章

CPU

パイプライン ハードウェアパイプライン 機械命令を処理するためにプロセッサ内部で使われる命令パイプライン 任意のデータがパイプラインを通って行くデータパイプライン より速いプロセッサを使わない限り、データパイプラインでは1つのデータを処理する時…

コンピュータアーキテクチャのエッセンス 17章

CPU

並列化 並列化はハードウェアの性能を向上させるために使われる1つの基本的な技術 コンピュータシステムの多くの装置は並列ハードウェアを持っており、並列プロセッサを持っている場合にのみ、並列アーキテクチャとして分類される SISD 単一命令単一データ流…

コンピュータアーキテクチャのエッセンス 15章

プログラム駆動入出力と割り込みこみ駆動入出力 入出力装置を扱うのに下記の2つのパラダイムがある プログラム駆動入出力 割り込み駆動入出力 プログラム駆動入出力 プロセッサが操作の各々のステップを世話するのにプロセッサを必要とする プロセッサは入出…

コンピュータアーキテクチャのエッセンス 16章

CPU

装置、入出力、そしてバッファリングに対するプログラマの視点 入出力の2つの様相がプログラマと関係する デバイスドライバは3つの部分に分かれる アプリケーションプログラムと相互に作用する上半分 装置自体と相互に作用する下半分 共有変数の集合 プログ…

コンピュータアーキテクチャのエッセンス 14章

CPU

バスとバスアーキテクチャ バスは下記をコンピュータ・システム内で相互連結するのに使われる基本的な仕組み メモリ 入出力装置 プロセッサ バスは複数のビットを同時に転送できるような並列接続線から成る 各々のバスは装着された装置がバスをアクセスする…

コンピュータアーキテクチャのエッセンス 13章

CPU

入出力の概念と用語 コンピュータシステムはデバイスを制御するかデータを転送するために外部装置とやりとりする 外部インターフェースは、直列型か並列型のアプローチを使える 同時に送ることができるビットの数を並列型インターフェイスの幅という 双方向…

コンピュータアーキテクチャのエッセンス 12章

CPU

キャッシュとキャッシュ機構 キャッシュ技術はコンピュータシステム全体において基本となる最適化技術 アクセス要求を検知 自動的に値を格納 可能な限り高速にアクセス要求に答える 多重レベルキャッシュ階層や、先読みキャッシュがある キャッシュ技術は物…

コンピュータアーキテクチャのエッセンス 11章

仮想メモリの技術と仮想アドレス 仮想メモリシステム 抽象的なアドレス空間をプロエッサとプロセサ上で稼働するアプリケーションプログラムに提供する 下層の物理メモリの詳細を隠ぺいする ワードのアドレス付の詳細を隠蔽する アドレス空間を均質に見せるこ…

コンピュータアーキテクチャのエッセンス 10章

物理メモリと物理アドレス 現在多くのメモリ技術が存在する 永続性(RAMやROM) クロック同期 リード、ライトサイクル時間 物理メモリはワードとして構造化され、コントローラを通してアクセスされる プログラマにとってはびとアドレッシングが使いやすいがワ…

コンピュータアーキテクチャのエッセンス 9章

CPU

メモリと記憶装置 メモリのキーとなる概念 技術 揮発性か不揮発性か ランダムアクセスか逐次アクセスか 永続的か? 一次的か二次的か 構造 小容量の高性能メモリと大容量の低性能メモリ 参考 コンピュータアーキテクチャのエッセンス (IT Architects Archive…

コンピュータアーキテクチャのエッセンス 8章

CPU

アセンブリ言語とプログラミングパラダイム アセンブリ言語 命令セット、オペランドの番地付け、レジスタなどのプロセッサの特徴を含んだ低レベルな言語 多くのアセンブリ言語が存在する 各プロセッサにつき一つ以上のアセンブリ言語がある アセンブリ言語の…

コンピュータアーキテクチャのエッセンス 7章

CPU

CPU:マイクロコード、保護、およびプロセッサモード 実行モードは許可された処理や現在の特権レベルのような操作上のパラメタを決定する 大抵のCPUには特権と保護において2つ以上のレベルがある OSのためのもの アプリケーションプログラムのためのもの 内部…

コンピュータアーキテクチャのエッセンス 6章

CPU

オペランドアドレッシングと命令表現 プロセッサを設計するとき、アーキテクトはオペランドの数と型を各命令ごとに選択する オペランドを効率的に取り扱うために、大抵のプロセッサはその数を3つ以下に制限する オペランド数と型の選択には、機能性、プログ…