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

emacs key bindingメモ

キーバインドのデフォルトで C-h がHELPの設定になっていたので、 ~/.emacs.d/init.el ファイルに下記マクロを追加。シンタックスはemacs lisp. (keyboard-translate ?\C-h ?\C-?) Function: keyboard-translate from to この関数は、文字コードfromを文字コ…

JavaScript 関数のカリー化と部分適用

引数を複数とる関数から、いくつかの引数を固定値で束縛した新たな関数を生成する。これにより、関数を使うたびに同じ値の引数を入力する手間が省け、見た目も簡潔なプログラムになる。 カリー化とは、複数の引数を取る関数を、1つの引数のみを取る関数のチ…

JavaScriptのthis

jsのthisは、ある関数が呼び出されたときに、その関数を格納していたObjectを指す。 js how does "this" work? 関数を単にfunc();という形で単体で実行した場合、thisにはwindowが入る。 new演算子のthis jsのnewは任意の関数と一緒に呼び出すことができる。…

JavaScriptのプロトタイプベースのオブジェクト指向について、調べたこと

jsは(ES6より前は)クラスを持たないオブジェクト指向言語である。クラスの代わりに、プロトタイプというプロパティを作り、そのプロパティを複数のインスタンスで共有する。そのためプロトタイプベースのオブジェクト指向言語といわれている。 jsの全てのオ…

Javascriptでclosureと、applyメソッド、callメソッドを使う

jsが持つ関数スコープを利用してクロージャー(関数閉包)を書くことができる。 js closure 上記の例では、関数countの中のローカル変数iを参照できるのは、無名関数が入っている変数xを実行したときのみである。変数iをグローバル変数にすると他の関数からの…

Javascriptのスコープ(関数、グローバル、ES6はブロック)と巻き上げについて

jsのローカルスコープは関数内のみを参照できることであり、グローバルスコープはscriptのどこからでも参照できることを指す。ローカルスコープを持つ変数をローカル変数、グローバルスコープを持つ変数をグローバル変数という。 スコープは変数が定義された…

Javascriptが持つ関数型言語の特徴(第一級関数、高階関数)

jsはプロトタイプベースのオブジェクト指向言語と呼ばれているが、関数型言語の性質も持ち合わせている。 第一級オブジェクト(first-class object)と第一級関数(first-class function) 第一級オブジェクトとは、プログラムにおいて、生成、代入、演算、(引…

MVCアーキテクチャについて調べたこと

MVCアーキテクチャのはじまり MVCアーキテクチャは、ソフトウェアの構成と役割について言及した概念のひとつ。1978年にXerox Parc(パロアルト研究所)のTrygve Reenskaugが、Smalltalk-76で使われているMVCモデルについて紹介したのが始まりと言われている。T…

オブジェクト指向と、言語の進化を辿るということ

オブジェクト指向とは、属性と振る舞いを持つオブジェクトを作るための「型」を作ることを意識しながらプログラムを書くこと。 と言われても理解は深まらないので、オブジェクト指向ではない指向とはどんなものかを理解して、比較をすることで、理解を深めよ…

Javaソースコードが実行されるまでの流れについて調べた

Javaでいうコンパイルという動作は、C言語とRubyのそれと、どのように違うのか調べた。 Javaソースコードのコンパイル OSやハードウェア依存のJavaプラットフォームで、ソースコードのコンパイルと実行が行われる。コンパイルされたJavaソースコードはバイト…

ネットワーク機器とIPアドレス、ポート番号について調べた

ネットワークを構築するネットワーク機器 有線用機器 ルーター/L3スイッチ: IPアドレスを使って、データの配送先を制御する。インターネットなど、外部のネットワークと接続。 L2スイッチ(スイッチングハブ): MACアドレスを使って、データの配送先を制御す…

ネットワークアーキテクチャと標準化組織について調べた

ネットワークアーキテクチャとは、ネットワークにおいて必要な論理構造やプロトコルを体系的に定めたもの。代表的なアーキテクチャに、OSI参照モデルとTCP/IPモデルがある。 OSI参照モデルとTCP/IPモデルはどのようにして生まれたか 現在のインターネットの…

ターミナルからプライベートIPアドレスとMACアドレス、ルーティングテーブルを確認する

自分のlaptopのプライベートIPアドレスがどのように割り当てられているか、調べる。 ターミナルから$ ifconfig をうつ。複数のインターフェースが表示される。 上記は「lo0」「gif0」「stf0」「en0」が表示されている。 他にも「en1」「en2」「p2p0」「awdl0…

heroku cedar-10が2015年11月以降使えなくなるそうだ

heroku にpushしたら、実行環境(runtime environment)が古いので、バージョンアップしてくださいと言われた。 最新のCedar-14は、Ubuntu OS のver 14.04 を採用している。プロジェクトで使用しているRubyは2.1.0なので、Cedar-14にするには、2.1系の最新版(2…

デジタル証明書とデジタル署名について

SSL/TLSでは、通信途中のデータの改ざんや、フィッシング詐欺(銀行や組織を装い、口座番号やクレジットカードを引き出す)を防ぐために、デジタル証明書とデジタル署名という技術を用いている。 デジタル証明書とは? SSLサーバー証明書ともいう。配布されて…

SSLのハイブリッド方式

SSLはNetscape Communication社で開発された。webブラウザとwebサーバーの間でやり取りするデータを暗号化して通信するためのプロトコル。暗号化とデジタル署名の技術を使い、セキュアな通信を実現する。 SSLでは「共通鍵暗号化方式」と「公開鍵暗号化方式」…

Linuxについて調べたことまとめ

1991年にフィンランドのLinus Benedict Torvaldsによって開発された。当時、商用のUnixは高価であり、Unixの学習目的で作られたMinixは機能に大幅な制限があったため、Linus独自で開発を始めることとなった。ライセンスはGPL(GNU Public License)である。 Li…

RSAの暗号方式を調べた

公開鍵暗号方式に使われるRSA暗号方式は、Rivest(ライベスト),Shamir(シャミール),Adleman(エイドルマン)の3人によって1977年に考案された。3人の頭文字を取り、RSAと名付けられた。Rivestはハッシュ関数のMD5の作者でもある。 RSAの暗号方式を理解すると、 …