今何かと話題のCrystalを入れてみる
高い生産性を兼ね備えているOSなプログラミング言語Ruby
ですが、そのエレガントな文法をそのままに
C言語に近いスピードで動作するコンパイル言語Crystal
をHello Worldしてみました。ちなみにOS
はOSX10.11.2
で本記事の内容を実施しています。
まずは、OSX用パッケージマネージャーのHomebrew
をインストールします。以下のサイトでインストール方法が記述されています。
<<Homebrew>>
$ brew update $ brew install crystal-lang
これでもうCrystal
言語導入完了です。ちなみに自分はインストールする際に、エラーが発生したしまいましたが、
だいたいはcc
コマンドが足りない等のエラーです。エラーの内容をよく確認し不足しているものを導入してください。
さて、プログラミングです。その前に以下コマンドを実行します。
$ crystal init
これでなんと初期プロジェクトファイル(プログラミングして際に必要なGITやディレクト等)を作成してくれます。
これを実施してからプログラミングしましょう。
試しに簡単な引数を与えてその値を2倍するプログラムを書いてみました。
そして、ビルドして実行してみます。
$ crystal build src/Testc.cr $ ./Testc 4 8
驚くほどRuby
の文法でビルドして実行できました。コンパイル速度はかかるもの、C言語
に引けを取らないほどの実行速度を誇ります。
Crystal
は、ライブラリ経由でC言語の関数を呼び出しやすいように設計されており、
目指すところはC言語
の代替物という位置付けになりそうです。
自分の目指すところは、Unity
で速度を出したいところはCrystal
でという使い方ができないか模索中です。
多段SSHで作業効率UP
業務で環境構築するときはだいたいプロキシサーバを経由して
本番サーバにログインすることが多いので、多段SSHの設定を
.ssh/config
にまとめてみる。
$ vi ~/.ssh/config
※.ssh/config
ファイルは最初からない場合があるので新規作成する。
Host proxy01 HostName xxx.xxx.xxx.xxx # IPアドレス User user IdentityFile ~/.ssh/id_rsa Host production HostName yyy.yyy.yyy.yyy # IPアドレス User user IdentityFile ~/.ssh/id_rsa ProxyCommand ssh -CW %h:%p proxy01
上記の設定すると、$ ssh production
のコマンドを打つだけで、
proxy01
サーバにssh
でログインしてからproduction
サーバに
ssh
でログインします。
production
の設定を書く場合は、proxy01
にssh
した程で記述してください。
プロンプトにブランチ名を
OSXでgitを作業していた時にいつもクライアンでやってたので
全然気にならなかったのですが、
ターミナルでgit操作したときに何かしら物足りなさを感じた。
そう、プロンプトにブランチ名がない!
ということで、OSXに導入してみる。
プロンプトにブランチ名を表示させるためには、git-prompt.sh
というシェルスクリプトが必要になる。
gitを導入していればそのファイルはどこかに存在するはずなので(入ってなかったらHomebrew
で入れてください)
以下コマンドでそのファイルを探す。
$ find / -type f -name "*git-prompt.sh*"
見つけたらそのファイルをホームディレクトリにコピーする。
$ cp /Applications/Xcode.app/Contents/Developer/usr/share/git-core/git-prompt.sh .git-prompt.sh
.bash_profile
を編集する。
$ vim ~/.bash_profile ---追記--- source ~/.git-prompt.sh GIT_PS1_SHOWDIRTYSTATE=true PS1='[\u@\h \W]$(__git_ps1 "[\[\033[32m\]%s\[\033[0m\]]")\$ ' ----------
更新した.bash_profile
を反映させる
$ source ~/.bash_profile
あらふしぎ!git環境にcd
するとブランチ名が表示されているはずです。
Mojoliciousで簡単セッション管理
Mojoliciousにある仕組みを使って、session管理をしてみました。
これを使うことによってログイン機能が簡単に作れるようですね。
ちょっと試してみました。
ログインしていたら、タブを変更したりしてもcookie情報からログイン状態にしてくれたり、
ログアウトしていたら、直接ページ他のページに飛ぼうとしてもログインページに飛ぶようになったりします。
でも、MojoliciousでSession管理について検索するとあまり使わないほうがいいってでるんですよね・・。
社内だけで使う分にはいいのかもしれませんね。
他のセッション管理だとCGI::SessionとかPlack::Middleware::Sessionとかあるみたいなので、いつか試しに使ってみたいと思います。