結局理解できたのは、アレのおかげでした

またもや、更新間隔があきました。
rebar3の続きの備忘録書こうとしたんですが、ちょっと寄り道します。

すごいErlangゆかいに学ぼう!

すごいErlangゆかいに学ぼう!

で、gen_serverなり、gen_fsmなり、gen_eventの説明があり、それこそ、何度読んでも???な部分でしたが、
http://erlangworld.web.fc2.com/otp/gen_server.html
を仕事中によんだら、簡単に理解できました。
迷書なので、「おまえの理解力がない」といわれると、「はぁそうですね(棒)」と言うほかないんですが、私のように理解力にない人間には、超難解本ですわ。

さて、前回の続きですが、ちょっと以下の点で、変更をしました。
PostgreSQLのコネクションプールですが、沢山のOTPがあって、いろいろ試して見ました。
Erlang Postgres Connection Pool with Episcina
devinus/poolboy
epgsql/pgapp
くるしんで、全部ためしたのですが、その内の一つの備忘録を次回に。

Erlangとrebar3と読み込まれないsys.config

昨日は、夕方からの飲み、Erlangの学習が、ちっとも進まない_| ̄|○

というか、兎に角、情報がない。
いや、正確にいうと、書いて有る事をやっても動かない。
もっと正確にいうと、なにか知識が足りない_| ̄|○
堂々巡りを数日繰り返し、絶望と希望を行ったり来たり、はや、前回更新から一ヶ月、遠回りにも程がある。
愚痴を含めて書きたいけど、ここは、備忘録のみ。

rebar3

Erlang チーム開発 rebar3でOTPアプリの雛型を作る
ありがとう、当に救いの主でございました。

$ rebar3 new release name=アプリケーション名 author_name="作者"

releaseがミソ、何がミソって、config/sys.config、config/vm.args が出来る。
releaseを付けないと、出来ない。前者のconfig/sys.configが、出来ないのが、ずーーーと謎だった。

実行

学習したのは、2つの方法。

releaseを動かす
$ rebar3 compile
$ rebar3 release
$ cd _build/default/rel/アプリケーション名
$ ./bin/アプリケーション名 start
$ ./bin/アプリケーション名 stop

但し、自分の環境では、上手くいきませんでした。多分この辺は、
rebar3で環境毎の変数設定を適用する
が、関係しそうな感じ。後ほど、気力がもどったら、検証しますわ。

erlから動かす
$ erl -pa ebin _build/default/lib/*/ebin -s アプリケーション名 -noshell
%% config/sys.configを読む必要があるなら↓
$ erl -pa ebin _build/default/lib/*/ebin -s アプリケーション名 -noshell -config config/sys.config

この二段目が、全然かららんかった。
どこかのページにあったのに、失念(つд⊂)エーン
なぜ、sys.configに拘るかというと、lagerやpostgresqlのコネクションプールのモジュール設定を書かないといけないからでした。そう、以下のモジュールのせいです。
Erlang Postgres Connection Pool with Episcina
次回は、一ヶ月、苦しめ続けた、↑のモジュールについて、怒りの備忘録。

Erlang rebar3とcowboyと学ばない私

土日があっちゅうまにすぎっちまいました。

やった事纏め

rebar3のインストール
https://www.rebar3.org/docs/getting-started
このまんま。
但し、PATHは、

$ ./rebar3 local install

に出てくる、所にちゃんと通すこと。これ忘れると、動きませぬ。

Cowboyを動かす

rebar3のページには、cowboyの組み込み方だけ、書いてあって、動かすサンプルは、無い模様。
ここで、数時間消費。
以下のページをはっケーン
http://qiita.com/yu-sa/items/c33e9c155177a7e01f48#rebar3%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6
まず、先のrebar3のサンプルの延長で作成すると、何をどうやっても動かない。

  • cowboyのバージョンが違うのはけーん

rebar.configを修正。これでも、うごかない。

  • Erlangのバージョンがサンプルと違うのはけーん

といっても、使っているは、19.1、普通大丈夫だろ、と思いつつも、先のHPのバージョン17.5をインストール。
動かぬ。しかも、mapが云々という。
どうも、バージョンは、18以降でないと駄目らしい。

18.3をインストールする。

それでも、動かぬ。(;^ν^)ぐぬぬ
先のページのサンプルがGithubにあるというので、クローンして実行してみる。

動く、こいつ動くぞ。

真似して、書き換えても動かぬ。以下のようなエラーになる。

=ERROR REPORT==== 12-Feb-2017::17:33:10 ===
Ranch listener http had connection process started with cowboy_protocol:start_link/4 at <0.159.0> exit with reason: {[{reason,undef},{mfa,{myapp_handler,init,3}},.....

もう、17:33とか_| ̄|○
飯喰ってくる。
WRC見る。トヨタおめでとう!!イェ━━━━━ヽ( ゚Д゚)人(゚Д゚ )ノ━━━━━━イ!!

ほろ酔いで、再度、rebar3で、新しいプロジェクトを作成する。

動いた。

結論

コンパイルすると、いろいろロックファイルが出来たり、ビルドファイルが出来たり、なんやかんや、ややこしい風になるらしい。散々、_buildディレクトリを削除してやってみたけど、結局、プロジェクトから作り直しが、正解みたい。
面倒だ。

本の内容で、スーパーバイザーなど、うっすらした記憶にあるものが、出てきたけど・・・、まだ、雲をつかむ感じ。
もあ、サンプル。

すごいErlangゆかいに学ぼう! 読了

アーなんつーかそのー

わし、頭悪いんで、これ読んで、なんか作れる人、尊敬します。

まぁ、海外本というか、外人が書いた本って、文字だらけで、表や図にまとめる意識を、なはから放棄してるので、頭の悪いワシには、超難解です。
なんせ、数十ページ前の定義の一文が、なんの説明もなく使われるもんで(simple_one_for_oneやら他多数)、輪を掛けて難解にさせます。
いやぁ、頭の良い人っつーのは、こういうのが入門本なんですなぁ、尊敬します。

「もっと大事な事おしえろ!!」(Y.O)

私の感想でございました。

とはいえ、Erlangでの、開発方法や、どんな書き方があるのかは、わかりますた。
ネットでサンプル漁って、いよいよ、何か作ってみようかと。

HTTP系だと、Cowboyっていうのが有るみたいですね。それとrebar3っていうツールも必須みたいですし。
これから、Erlangの備忘録だらけになる悪寒。

Erlang ちっとも進まない件について

前の記事から三ヶ月。
以下の本を購入

すごいErlangゆかいに学ぼう!

すごいErlangゆかいに学ぼう!

プログラミングErlang

プログラミングErlang

外人が書く、本は答えが遠いっす。訳者が天才なのか、カスなのか、兎に角くどい。常人なら、本とっくに破り捨てるレベルです。ただ、オライ●ーで鍛えられた、強靱な私の精神は、負けませぬ・・・って、本当に折れそうです。もう本当重要なことだけ書いてくれよっカーッ(゚Д゚≡゚д゚)、ペッ!
手強い(´ヘ`;)ウーム… 本が!

EmacsErlangの備忘録

スペシャルサンクス!!
http://qiita.com/Satoshi_Hara/items/8071a6dbf708373a2253
環境は、
http://qiita.com/tatsuya6502/items/f15da8ea6e793c5038a2
http://www.lambdacat.com/post-modern-emacs-setup-for-erlang/

環境構築時は、バージョンを 18.x にすべし。19.x は、エラーになる。

やっとこさ、命令の補完とか出来るようになった。
それにしても、やっぱ、日本でもErlangガッツリやってる人沢山いますね。
凄いっす。
Rubyとかのお手軽感ゼロ、goのような割り切り感ゼロ、JAVAのような何でもかんでも取込まっせ感もなし。
なんもかも、新鮮で難解でございます。
頑張ります。

Erlang インストール

訳あってErlangを弄らねばならなくなった。
なので、インストール備忘録。

以下のページを参考にした。
OSX 10.10 に kerl で Erlang 17.5 をインストールし, crypto:start/0 を成功させる

基本的に、↑のページの内容で大丈夫。
gccとopensslを必ず新しいものを入れていないと、マジでコンパイルがこけます。
それと、コンパイルが、めちゃめちゃ長い。
何回も失敗すると、それだけで1時間ぐらい簡単に吹っ飛びます。

一カ所だけ気をつけるのは、

$ kerl kerl install 17.5 /path/to/erlang/17.5
   ↓
$ kerl install 17.5 /path/to/erlang/17.5

とkerlを一つ減らす事。

あとは、derenvと連動させる。
ETOOMANYERLANGS: Kerl vs Erln8
この下半分を参考にすること。
上半分を信じると、半日潰されるぞ!!(体験者)
どうも、~/.kerlrcで設定すると、コンパイラのコンフィグが、上手く設定できないらしい_| ̄|○

と言うことで、erlで起動確認できました。

MacOS Sierra に、GVM で go1.7.2 入れたった

久々の更新でございます。
仕事に忙殺されています。簡単な仕事っていったじゃん(つд⊂)エーン

むくむくと、開発意欲湧いてます。
最近は、慣れないSwiftで、通信とかぶっこくプログラム書いたり、Expressで、ソケットしたり、エッジなんだけど、どうもノリが悪いっす。
まず、Swiftは、日が浅いので、手に付かない_| ̄|○ 調べる時間が八割。
Expressは、書いてて面白くないっす。非同期って節操なさすぎる(`ヘ´) プンプン。コーディング量が増えるばっか。

やっぱ、Revelだよなぁ!!ってSocketでやられた事、棚に上げて、再び蒸し返そうとしております。
それで、半年ぐらいほっておいたら、goのバージョン、鬼上がりしてました。
go1.6だったのに、go1.7.2まで来てるではありませんか。

と言うことで、GVMからインスコこいてみたら、入らん工エエェェ(´д`)ェェエエ工
ッテナンデヤネン┌(`Д´)ノ)゚∀゚)
ググると、
GO言語の1.6.3より前のバージョンを使っている人は MacOS Sierraにアップグレードしないほうがいい話
なにそれ、どうしてそうなった。

今のままじゃどうにもならんちゅうことかいな。
んで、いろいろ試行錯誤して以下の方法でインスコできたますた。

$ gvm install go1.7.1 -B
$ gvm use 1.7.1
Now using version go1.7.1
$ gvm install go1.7.2

サクッと書いてますが、実際は、試行錯誤して、試行錯誤して、GVM消したりしてもう、環境クリーンになりすぎました。

  • Bのスイッチで、バイナリのインストールとの事です。

疲れた(´Д`)ハァ…