自分用Erlang環境構築メモ
OS:Yosemite
vimの設定
.vimrcは上記を参考に
hybridが効かないと怒られるので、
git clone https://github.com/w0ng/vim-hybrid
NeoBundleの設定
mkdir -p ~.vim/bundle git clone https://github.com/Shougo/neobundle.vim ~/.vim/bundle/neobundle.vim
vimを起動して、:NeoBundleInstall
Erlangインストール
この記事を参考にした
curl -O https://download.basho.co.jp.cs-ap-e2.ycloud.jp/otp/download/otp_src_18.1.tar.gz tar xvzf otp_src_18.1.tar.gz cd otp_src_18.1 ./configure --prefix=/opt/erlang/18.1 --enable-smp-support --enable-threads --enable-darwin-64bit --enable-vm-probes --enable-kernel-poll --enable-hipe --with-dynamic-trace=dtrace --without-javac --enable-dirty-schedulers --disable-native-libs --disable-sctp make make install
ディレクトリが作れないと怒られたりするので、適宜対応
パスに/opt/erlang/18.1/binを追加
opensslを最新に
標準のは古いようなので、brewで新しいの取ってくる
brew upgrade openssl
パスの順番を/usr/local/binが前に来るようにする
brew link openssl --force which openssl
Haskellでプロジェクトオイラーを問いて解説するスレ
shokos Advent Calendar 2012七日目
プロジェクトオイラー
たまにやると頭の体操になっておもしろい。筋トレ感覚。
第一問
If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23. Find the sum of all the multiples of 3 or 5 below 1000.
訳:1000未満の、3または5の倍数の和を求めよ。
Haskellで書くとこうなります。
sum [x | x <- [1..999], x `mod` 3 == 0 || x `mod` 5 == 0]
今会社でやっているHaskell勉強会のいい問題になると思うので、軽く解説。
[x | x <- [1..999], x `mod` 3 == 0 || x `mod` 5 == 0]
これはリスト内包表記です。
第一回の勉強会で解説しました。http://shokos.hatenablog.com/entry/2012/12/04/222447
すごいH本だと一章に出てきます。
x <- [1..999]こちらも上記で説明しています。 [1,2,3..998,999]のリストを定義しています。
つまり、1~999の整数で、3で割り切れるものまたは5で割り切れるものを探して、sumしています。
簡単にワンライナーで解けちゃいます!やったね!
Haskellでワンライナーで書いたフィボナッチ数列がなにをやっているのか
shokos Advent Calendar 2012六日目。
ほとんどHaskell触ったことない人向けです。
社内勉強会で使おうと思っているネタ。
Haskellでフィボナッチ数列を定義すると、こうなります。
fib = 1:1:zipWith (+) fib (tail fib)
何をやっているのか、式の左側から説明していきます。
コロンは、要素をリストの先頭にくっつけます。
1:1:~は、[1,1,~]を示しています。
zipWithは
zipWith f リストA リストB
リストAとリストBの要素を、それぞれ先頭から順にもってきて、fを適用します。
片方が空リストになったらストップです。
tailはリストの先頭を取り除きます。
つまり、zipWith (+) fib (tail fib)は、fib自身と、fibから先頭を除去したものを、先頭から順番に持ってきて足し算しています。
たとえばこんな感じ。
zipWith (+) [1,1,2,3] (tail [1,1,2,3]) ↓ zipWith (+) [1,1,2,3] [1,2,3]) ↓ [2,3,5]
すごい!フィボナッチ数列の性質ができた!
これに、初期値1:1:を与えているので、あとは再帰して無限フィボナッチ数列の完成です!
spring3でひとつのコントローラーに複数URLをマッピングさせる方法
shokos Advent Calendar 2012五日目
spring3のマッピングアノテーションで、複数URLを指定する方法
@RequestMappingで、valueにStringの配列を渡してあげればOKです。
@Controller @RequestMapping(value = {"/", "/top"}) public class TopController {
ちなみにひとつしか指定しない場合は、valueは書かなくてOK。
@Controller @RequestMapping("/top") public class TopController {
とびだせHaskellの森1
shokos Advent Calendar 2012四日目
CAで「とびだせHaskellの森」という社内勉強会をしています!
初回はghciでのコマンドを色々試してもらいました。
ちょろっと遅延評価の説明とかもしつつ。
結構人が集まってくれて、感謝。
mavenプロジェクトにコンバートしたときにエラーが出る場合の対処法
shokos Advent Calendar 2012三日目
今日はエラーの対処法の話なので、人の役に立つ確率が高い。
1. 久しぶりにjavaプロジェクトを作ろう。
2. うっかりコマンドから mvn archetype:generateして作ってしまった!
3. eclipseからmavenプロジェクトにコンバートするか。
ってやると下記のように怒られることがあります。
An internal error occurred during: "Enabling Maven Dependency Management". Unsupported IClasspathEntry kind=4
そのあとMaven > Update Projectしても同じようなこと言われます。
その対処法。
1. プロジェクトを右クリック > Maven > Disable Maven Nature
2. コマンドラインからmvn eclipse:clean
3. Refreshして、再びMavenプロジェクトにコンバート
4. Maven > Update Project
これでOK!
ActiveAdminで作ったアプリのindex画面を編集
shokos Advent Calendar 2012二日目
昨日つくったActiveAdminで作ったアプリのindex画面がいけてないので編集します。
app/admin/schedules.rb を開いて
# encoding: utf-8 ActiveAdmin.register Schedule do index do column "予定", :plan column "日時", :occurred_at default_actions end end
こんな感じになります。
columnで項目指定、default_actionsはViewEdit,Deleteアクションです。