Codaybook

サーバサイドエンジニアが必死に作成した!発見した!を綴るブログ



今何かと話題のCrystalを入れてみる

高い生産性を兼ね備えているOSなプログラミング言語Rubyですが、そのエレガントな文法をそのままに C言語に近いスピードで動作するコンパイル言語CrystalHello Worldしてみました。ちなみにOSOSX10.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でという使い方ができないか模索中です。

Xamarin StudioのカラースキーマをMonokaiにする

MacC#等をプログラミングする際に使用するであろう Xamarin StudioのカラースキーマをいつもAtomで使用しているMonokai に変更したいと思いました。

嬉しいことにMonokaiはデフォルトで設定できます。
しかし、実際に設定してみるといろんなところに色が設定されていて Atom Editorとはだいぶ違う見た目になります。
そこでAtom Editorで設定できるMonokai似るように設定してみました。 以下、Gistで設定ファイルも確認できます。

Atom Editor monokai color schema for xamarin

多段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の設定を書く場合は、proxy01sshした程で記述してください。

プロンプトにブランチ名を

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管理をしてみました。 これを使うことによってログイン機能が簡単に作れるようですね。
ちょっと試してみました。

easy session by mojoliciou

ログインしていたら、タブを変更したりしてもcookie情報からログイン状態にしてくれたり、 ログアウトしていたら、直接ページ他のページに飛ぼうとしてもログインページに飛ぶようになったりします。

でも、MojoliciousでSession管理について検索するとあまり使わないほうがいいってでるんですよね・・。 社内だけで使う分にはいいのかもしれませんね。

他のセッション管理だとCGI::SessionとかPlack::Middleware::Sessionとかあるみたいなので、いつか試しに使ってみたいと思います。

MojoliciousでCLIみたいなのを実装

リアルタイムWebアプリケーションフレームワークのMojoliciousで CLIを作成するときにこんな感じでとりあず組めばいいのかというを書きました。

CLI for Mojolicious

ディレクトリ構成は、以下の通りです。

  • bin/cli.pl (CLIの実行ファイル)
  • lib/Test/Web/CLI/Base.pm (CLIの共通機能)
  • lib/Test/Web/CLI/Testcli.pm (Testcliというコマンドの実装)

実際にCLIを実行するには以下のコマンドを入力します。

$ perl bin/cli.pl Testcli [引数]

これでなんとなくCLI的なことができると思います。ご参考程度に。

Tgif Sister 公開

金曜日が待ちきれないBOT@tgif_sisterperlでリプレイスしました。
バッチを動かすと以下のような文章を作成してTwitterに投稿します。

f:id:nisei275:20150511023011p:plain

version 0.1ではこの機能しかありません。いずれはリプライを受け取って休日の提案をしてくれるような機能をつけたいと思います。

ソースコードGitHubにて公開していますので、twitterperlの連携で参考にしていただければと思います。