2015-01-01から1年間の記事一覧
jashkenas/underscoreの_.rejectを読んだ。 概要 _.reject(list, predicate, [context]) listの中で、predicateがfalseになる要素の配列を返す。 _.filterの反対のことをする関数。 var list = [1, 2, 3, 4, 5]; var x = _.reject(list, function(n) { retur…
jashkenas/underscoreの_.findWhereを読んだ。 概要 _.findWhere(list, properties) propertiesの中にあるkey-valueが含まれるもの中で、listの中の一番最初のものを取得する。 var list = [ {age: 20, sex: "male", country: "JP", name: "hoge"}, {age: 22…
jashkenas/underscoreの_.whereを読んだ。 概要 _.where(list, properties) propertiesで与えられたkey-valueが含まれるすべての要素をlistの中から取得する。 var list = [ {age: 20, sex: "male", country: "JP", name: "hoge"}, {age: 22, sex: "male", c…
jashkenas/underscoreの_.fliterを読んだ。 概要 リストを走査し、渡した関数がtrueとなる要素のリストを返す。 var list = [1, 2, 5, 6, 7]; // var list = {age: 1, score: 30, test: 88}; var x = _.filter(list, function(num){ return num % 2 === 0; }…
jashkenas/underscoreの_.findを読んだ。 概要 リストを走査し、渡した関数がtrueとなる最初の要素を返す。 条件を満たす要素がない場合はundefinedを返す。 trueとなる要素が見つかった時点で、リストの走査は終わる。 var list = [1, 2, 5, 6, 7]; var eve…
概要 リストの要素を一つの値にまとめていく。 引数のmemoは初期値。 iterateeが実行されたあと、その値をメモ化しておき、リストのindex番目の値とともにiterateeに渡し、各値を処理する。 var list = [1, 2, 3]; var sum = _.reduce(list, function(memo, …
jashkenas/underscoreの_.mapを読んだ。 概要 第一引数で与えられたものの値に対して、第二引数の関数を実行してその結果の配列を返す。 var list = [2, 3, 4]; var x = _.map(list, function(n){ return n *= 3; }); console.log(x); // [6, 9, 12] var lis…
jashkenas/underscoreの_.eachを読んだ。 概要 第二引数で指定した関数に第一引数の配列やオブジェクトの各要素を引数として渡して、実行する。 var x = _.each([1,2,3], function(num){ console.log(num); }); // 1 // 2 // 3 ソースコード _.each = _.forE…
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); /…
本書を読む目的 他人の書いたコードを早く理解して、修正を加えられるようになりたい 自分の書き方をもっと洗練させたい 設計が苦手なので、既存のコードから読み取れるようになりたい はじめに 他人の作品を読まなかった偉大な作家、他人の筆使いを研究しな…
概要 Vagrantを使っており、ホスト側(Mac等)のファイルを変更したら自動でプロセスが再起動してほしい nodemonだと-Lオプションでできるが遅いらしい Usage with Vagrant · Issue #146 · remy/nodemon supervisorをつかって、ホスト側のファイルを変更したら…
Stack Overflow 10月「DevDays」に行ってきました。 Stack Overflow社では開発者の力になれることは何でもやろうと考えています。その一つとして、開発者のみなさんが主役のイベントの開催を計画しています。 日本の開発者と意見交換しアイデアを聞くため、…
概要 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>
きっかけ ottoでSymfony2を構築してみちゃったを読んで、Expressで試してみた。 ottoのDL 適当なディレクトリにダウンロードしてきて解凍すればOKです。 ~/binをmkdirして置きました。 $ cd ~/bin $ wget -qO- -O tmp.zip https://dl.bintray.com/mitchellh/…
3つのクラス HTTPクライアントを実装する際には次の3つのクラスについて理解することが必要 http.ClientRequest HTTPクライアントからHTTPサーバへ送信リクエストヘッダ及びボディを扱うクラス http.ClientResponse HTTPクライアントがHTTPサーバから受信し…
処理のざっくりした流れ http.ServerがHTTPサーバ機能を実現するサーバオブジェクトを生成する HTTPクライアントからサーバへのHTTPリクエストが送信される http.Serverはrequestイベントを発生させる 受信したリクエスト情報を持つ、http.ServerRequestとHT…
概要 Nodeのイベントループは文字通りwhieで行われている ループ処理はI/Oイベントの処理(リクエスト)の実行時やI/Oイベントの発生を待つオブジェクト(ハンドル)の登録時に維持される 例えば下記のコードはハンドルやリクエストが何も登録されていないので、…
概要 Node上ではイベント自体を定義して、それを任意のタイミングで発生させ、そのイベントに応じたプログラミングができる。 処理の流れは下記 イベントを発生するオブジェクトを作成する イベント発生時の処理関数を作成する イベントを定義する 任意のタ…
手順 $ 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…
手順 $ 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 ]] && . (自分のホームディ…
JSを勉強しようと思ってWant to learn JavaScript in 2015?を見つけた。 後で見直すようにメモを取った。 概要 ゴールは1年でJSの仕事を得ること 筆者はBSkyBでJSの開発者としての仕事を得た 一番難しかったのは自分のJSレベルが中級になった時だった 初級と…
命令セットアーキテクチャの分類 主要な方式として、スタック、アキュミュレータ、レジスタを用いる方式がある スタックアーキテクチャ オペランドは暗黙的にスタックのトップ アキュムレータアーキテクチャ オペランドの1つは暗黙的に1つしか存在しないアキ…
アーキテクチャの例と階層構造 ディジタルシステムのアーキテクチャはいくつもの抽象レベルで示すことができる システムレベル:コンピュータシステム全体の構造 ボードレベル:各ボードの構造 チップレベル:1つのIC回路の内部構造 参考 コンピュータアーキ…
性能評価 数多くの性能評価法が提案されている FLOPS 1秒間に実行できる平均の浮動小数点演算数 MIPS 平均の命令数 加重平均法 頻繁に使われる命令に重みをかける ベンチマークには一般的なプログラムや性能評価のためのプログラムを用いる SPECによって有名…
パイプライン ハードウェアパイプライン 機械命令を処理するためにプロセッサ内部で使われる命令パイプライン 任意のデータがパイプラインを通って行くデータパイプライン より速いプロセッサを使わない限り、データパイプラインでは1つのデータを処理する時…
並列化 並列化はハードウェアの性能を向上させるために使われる1つの基本的な技術 コンピュータシステムの多くの装置は並列ハードウェアを持っており、並列プロセッサを持っている場合にのみ、並列アーキテクチャとして分類される SISD 単一命令単一データ流…
プログラム駆動入出力と割り込みこみ駆動入出力 入出力装置を扱うのに下記の2つのパラダイムがある プログラム駆動入出力 割り込み駆動入出力 プログラム駆動入出力 プロセッサが操作の各々のステップを世話するのにプロセッサを必要とする プロセッサは入出…
装置、入出力、そしてバッファリングに対するプログラマの視点 入出力の2つの様相がプログラマと関係する デバイスドライバは3つの部分に分かれる アプリケーションプログラムと相互に作用する上半分 装置自体と相互に作用する下半分 共有変数の集合 プログ…
バスとバスアーキテクチャ バスは下記をコンピュータ・システム内で相互連結するのに使われる基本的な仕組み メモリ 入出力装置 プロセッサ バスは複数のビットを同時に転送できるような並列接続線から成る 各々のバスは装着された装置がバスをアクセスする…
入出力の概念と用語 コンピュータシステムはデバイスを制御するかデータを転送するために外部装置とやりとりする 外部インターフェースは、直列型か並列型のアプローチを使える 同時に送ることができるビットの数を並列型インターフェイスの幅という 双方向…