ikemonn's blog

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

2015-01-01から1年間の記事一覧

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

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…

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

jashkenas/underscoreの_.findWhereを読んだ。 概要 _.findWhere(list, properties) propertiesの中にあるkey-valueが含まれるもの中で、listの中の一番最初のものを取得する。 var list = [ {age: 20, sex: "male", country: "JP", name: "hoge"}, {age: 22…

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

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…

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

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; }…

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

jashkenas/underscoreの_.findを読んだ。 概要 リストを走査し、渡した関数がtrueとなる最初の要素を返す。 条件を満たす要素がない場合はundefinedを返す。 trueとなる要素が見つかった時点で、リストの走査は終わる。 var list = [1, 2, 5, 6, 7]; var eve…

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

概要 リストの要素を一つの値にまとめていく。 引数のmemoは初期値。 iterateeが実行されたあと、その値をメモ化しておき、リストのindex番目の値とともにiterateeに渡し、各値を処理する。 var list = [1, 2, 3]; var sum = _.reduce(list, function(memo, …

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

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…

【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

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