仮想化の基礎のおさらい

クラウドサービスでも使われている

クラウドサービスといえば、Amazon Web ServiceやGoogle Cloud Platformなどがあり、最近はどちらも様々なサービスが豊富にあり、より複雑になってきています。様々なサービスを組み合わせることでできたアーキテクチャなどもあります。

クラウドの基盤となる仮想化技術のお話を軽くおさらいしていきます。

続きを読む

HTTP/2の概要

HTTPの歴史

HTTPの初めのバージョンは、Webサーバとともに誕生したHTTP/0.9です。
HTTP/0.9では、ほんとうに必要な機能しか持っておらず、リクエスト内容もメソッドと取得先のパスのみで、そのメソッドもGETしかありませんでした。
また、レスポンスのヘッダの規定もなくシンプルにドキュメントを返すのみのメッセージ構造でした。

そしてHTTP/1.1までのバージョンアップによって現在のようなWebシステムにおいて必要不可欠な機能が実装されるまでにいたっています。
また、セキュリティ面の要請からSSL2.0がNetscape Navigator1.1に実装されたのが1994年です。SSLは、TCP/IPプロトコルスタックのトランスポート層の上にセッション層を追加する形で登場し、HTTPをはじめとするアプリケーション層すべてのプロトコルで恩恵を受けることができました。

続きを読む

HTTP1.1のメソッドまとめ

HTTPメソッドってGETとPOST以外にあと何があった?

Webアプリケーションを開発するうえで、HTTPについてあまり意識しないで開発をしている人が多いのではないでしょうか?
もちろん、私もその一人ですw
HTTPメソッドって、GETPOSTのやつでしょ!?的な感じで、他にわかるのは、かろうじてPUTDELETEくらい、、、
他にもHTTPメソッドはあるけど、使ったことがあるかどうかもよくわかんない状態だった、、、
また、効率の良いWebアプリケーションを開発したり、技術的に正しい挙動をするWebアプリケーションを開発する上では、HTTPメソッドについて詳しく知っていることが必要不可欠と感じたので、HTTPメソッドについて調べてみた。

続きを読む

Node.jsとWebSocketでリアルタイムチャットをやってみた

Node.jsでWebサーバを構築するメリット

Node.jsでは、リクエストを処理するときに、イベントループというモデルを採用しており、シングルスレッドで対応します。
イベントが発生するとイベントキューに積まれていき、イベントループで積まれているイベントを処理していきます。Node.jsでWebサーバを構築すると、多重プロセスモデルに比べて、大量のクライアントからの接続を維持できるというメリットがあります。
その反面、CPUを大量に消費するような重たい処理を行うとイベントループが止まってしまうので、そのような処理をするときにはNode.jsは向いていません。

event-model

そんな感じで、Node.jsの大量のクライアントからの接続を維持できるというメリットをいかしWebSocketを使って、リアルタイムチャットをつくってみた。

続きを読む

WantedlyのSpring intern2016に行ってきた

3月2日から4日までの3日間にWantedlyさんのSpring intern2016に参加してきました。
Wantedlyさんは、【シゴトでココロオドル】をコーポレートミッションに掲げていて、ビジネスSNSのWantedlyやビジネス用グループチャットSyncを展開されています。
wantedlyのオフィス
インターンの内容や感想、Wantedlyさんの印象をまとめてみました。

続きを読む

nodebrewでnodeとnpmのバージョン管理しよう(Mac編)

最近nodejsのアップデートの頻度が激しいですね。
nodejsとnpmのそのもののバージョンを管理するnodebrewは結構便利ですので、紹介します。

nodebrewをインストール

Homebrew経由でnodebrewをインストールし、セットアップで.nodebrewを作成します。

$ brew install nodebrew
$ nodebrew setup

次に、nodebrewのパスを通します
.bash_profileもしくは.zshrcに以下の文を追加)

export PATH=$HOME/.nodebrew/current/bin:$PATH

そしてお決まりのやつを実行(設定を有効化)

$ source .bash_profile( or .zshrc)

最後にパスが通っているかを確認
続きを読む

Vagrantでマウントに失敗するときの解決法

vagrant up でマウントでこけたとき、Guest Additionsを再ビルドすることで、解決できる。

下記のようなエラー

Failed to mount folders in Linux guest. This is usually because
the "vboxsf" file system is not available. Please verify that
the guest additions are properly installed in the guest and
can work properly. The command attempted was:

mount -t vboxsf -o uid=`id -u vagrant`,gid=`getent group vagrant | cut -d: -f3` vagrant /vagrant
mount -t vboxsf -o uid=`id -u vagrant`,gid=`id -g vagrant` vagrant /vagrant

The error output from the last command was:

/sbin/mount.vboxsf: mounting failed with the error: No such device

続きを読む

Laravel4.2でHomesteadを使おう!!

Laravelを使った開発ではおなじみのHomesteadをプロジェクトごとに入れたときのあれこれやHomesteadの環境のDBのデフォルトの情報などを残しておきます。

boxのインストール

とりあえずhomesteadのboxがない人はこれを

$ vagrant box add laravel/homestead https://atlas.hashicorp.com/laravel/boxes/homestead

Laravel4.2のインストール

composerを使ってLaravelを入れましょう

$ composer create-project laravel/laravel {プロジェクト名} 4.2 --prefer-dist
$ cd {プロジェクト名}
$ composer install

続きを読む

JavaScriptのnew演算子を使わないオブジェクト生成法

JavaScriptはプロトタイプベースのオブジェクト指向だといわれてるが、他言語(クラスベース)と同様にnew演算子を使ってオブジェクトを作ることが可能なのですが、newが原因でバグを生み出し探しまわるのに時間をかけるはめになってしまうなんてことも。。。

newがなぜいけないのかという解説は、別のところにまかせて今回は、Object.createメソッドを使ったオブジェクトの生成とその一歩先をいったオブジェクトの生成法であるファクトリ関数を作成するところまで紹介します。

続きを読む