はじめてのVagrant ~ CentOS6.5 + ApacheでWebサーバを立ててみる

2014.1.17

logo_vagrant

Vagrant?

簡単に言うとインフラ構築の自動化
例えば 手動でやろうとすると、OS入れる度に VMでディスクイメージ読み込ませて あれやこれやと細かい初期設定しないといけないけど、Vagrantを使えばたった3つのコマンドで上に書いた事を勝手にやってくれる。
Vagrantは chefのようなツールと合わせて使えば超強力と巷では言われていて、要するにソフトウェアのインストールまで自動化してくれる
これはどういうことかというと…

インフラ構築にいちいち時間かける必要もなくなるし、ミスも防げるし、チーム開発の場合は 新しく入ってきた人でもすぐに環境構築できるし、何より「俺の環境では動いたよ」も減る。

個人で勉強用に開発環境立てては壊しまくったりする場合にもかなり便利だけど、チーム開発でも圧倒的な力を発揮。

とりあえず 今回に関しては Chef を使用せずに VagrantでOSだけ入れてもらって、動作確認の意味合いを込めてWebサーバの立ち上げをやってみる。

因みにVMを動作させる環境はフリーで落とせる VirtualBox を使用。

(続きを読む…)

プログラマの成長について考えてみる

2013.12.16

Anonymous_evolution_steps

プログラムを書いていて、次に何を学習するべきか と考えることが度々あった。
その度に

「プログラマ 成長」
「プログラマ ロールモデル」
「プログラマ 1年目 本」

なんておもむろにGoogleの検索フォームに入力して、

世の中で話題になっている人のロールモデルを参考にしようと色々見ては、その人が「小さな頃から親にハードを与えられていじって遊んでいて…」というように、幼少の頃からコンピュータに深い馴染みがあることを知って「ああ 自分のケースとは合わないな」なんて思ったり

ウィザードと呼ばれている人達の論文を読んでは「もっとコンピュータに詳しくなろう」と思い立って、
Web系にも関わらず 何の脈絡も無く、突然 SICP分厚いアルゴリズム本をかじり出しては途中で挫折したり、
( 学習した事が現実的にどういった形で結びついているのかわからないから現実感が湧かない )

そんな事を繰り返していた。

正直、「プログラマとして成長をするには何をするべきか」なんて考えている時点でナンセンスだなというのはよくわかっている
考えている暇があったら情熱や好奇心に突き動かされてどんどん探検していくべきだっていうのもわかっている。
分かっているけど、ずっとどこか腑に落ちないままモヤモヤしたままだった。

というわけで「これではいけない」と思い直し、成長が遅い自分に対する反省の意味も込め、自分の中で「成長する人」の定義を文献を参考にしたり先輩に聞いたりしてはっきりさせてみた。

結果、以下の結論にたどり着いた。

学ぶ技術を現実の具体的なシーンに落とし込み、
何らかの目標達成に結びつけることができているかどうか

プログラマとして成長の遅い自分の場合

(続きを読む…)

Raspberry Pi ではじめてのLチカ体験 & 温度計制作

2013.12.1

「Tokyo Hacker Space」という乃木坂にあるハッカースペースでRaspberry Piをいじってきました。

Tokyo Hacker Space?

東京にあるものづくりのためのコミュニティ。

ホームページ見てると結構ハード寄りのことしてるみたい。

参加には月会費が必要だけど、月に何回か一般向けにもイベント開催してるっぽい。

コミュニティスペース自体も工具とかいっぱい並んでるガレージみたいな感じでものづくり精神がかき立てられる。

1

というわけで人生初のハードを体験。

これがRaspberry Pi本体。Ethernet端子やらUSB端子やらイヤホンジャックやらHDMI端子やら色々ついてる。

3

ワークショップでは8GBのSDカードを挿して「Raspbian」というDebianベースのOSを使用。

IPアドレス経由で、MacからSSHでログイン。GUIもサポートされており、「オーバークロック」やら「ロケール」やら「カメラとの連携」やら色々設定可。

Lチカしてみた。

Lチカ… LEDをチカっと光らせるハード界のド定番らしい。プログラミング言語で言う「Hello World」みたいな感じ。

「ブレッドボード」と呼ばれるものにLEDと電気抵抗を挿して、Raspberry Pi本体と接続。

(この時配線を間違えるとヘタすればショートするらしい。例えば 3.3V用のLEDを5Vのジャックに繋げちゃうと死ぬとか )

(続きを読む…)

ブラウザ上でぬるぬる動く3Dを実現する「Three.js」を触ってみた

2013.11.24

「3Dって何となく難しそうで手を出しづらいなー」と少し敬遠していたけど、ブラウザ上とかでサクサク動いているのを見てるとやっぱり自分もやってみたい。

というわけで今回はWebブラウザ上で JSベースでぬるぬる動く3Dグラフィックスを実現できる「Three.js」をいじってみた。

Q. JSベースとはいってもなんか複雑そうで手を出しづらいんだけど…

結論から言えば、基本的な流れを理解してしまえばなんとなくいじれるようになった。

この「基本的な流れ」って言うのは、Canvasで言うなら「クロスブラウザのチェックをして、canvas要素取得して、コンテキストを変数に格納して…」みたいな感じ。Three.jsの場合は以下に説明するような流れになる。

Three.js で3Dをいじるまでの基本的な5つの流れ

(続きを読む…)

RESTful Web APIs 読書会( 第三回 )に参加してきた

2013.11.15

久々の更新。しばらくRailsで趣味の開発に没頭しておりました。

というわけで 今回はRESTful Web APIs読書会(第三回)の参加報告を。

今回は主に「リソースの定義」と「HTTPリクエストの種類」と「安全性・べき等性」のお話。

・リソースの定義

リソースというと結構個人的に定義が曖昧で、データベースのデータとかがメインになるのかなと思っていたけど、どうやらRESTにおいて URIで表現されるものは全てリソースになるらしい。

そしてリソースの状態は以下の二つによって表現されうるらしい。

( 2013年12月1日改正、コメントより「リソースが(同じ状態で)複数の表現を持つ場合に、クライアントは望む表現をどのように指定するか、の選択肢である」といただきました。必ずしも二つではないということですね )

1. Content negotiation( 「内容ネゴシエーション」とも。HTTPリクエストとレスポンスから成るクライアントサーバ間のやり取り? )
2. URI( Railsで言うと new とか edit とかでURIが分かれてるイメージ? )

(続きを読む…)