はじめてのC# – インデクサをいじってみた

2014.1.20

つくりたいものがあったので、趣味グラマーとしてC#を始めました、Niseiです。

重い方の言語はあまりガッツリやり込んだ経験が無かったので内心ワクワクしてます。

文法やらポリモーフィズムやら継承やら基本的な部分は他の言語と同じ感じでだけど、今回ちょっと新たに「インデクサ」というやつが出て来た。

なんじゃそりゃ ということでちゃんと勉強してアウトプットしてみた次第です。

インデクサ?

クラスを配列っぽく操作できる子。

この説明だけだと「ん?」ってなるけど、身近な例としては 文字列操作がある。

using System;

class Hoge
{
  public static void Main()
  {
    string foo = "bar";
    Console.WriteLine( foo[2] );
  }
}

こんな感じで何気なく使ってる foo[2]の正体こそまさにインデクサでした。

(続きを読む…)

はじめての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つの流れ

(続きを読む…)