[Erlang][Elixir]erlyberlyでErlang/Elixirのdebugをサポート

Erlang/Elixirのdebugを楽にするツールを知ったのでメモ。 https://github.com/andytill/erlyberly http://blog.plataformatec.com.br/2016/04/how-to-trace-elixir-nodes-with-erlyberly/ 実行のワンライナーは以下。 これが全て終わって、JavaのGUIが表示されたら、例えば以下のようにnodeを指定してアプリを起動します。 起動後、Javaで表示されているtarget nodeに “foo@127.0.0.1” を指定。 すると、メモリ使用量とか、諸々を確認することができる以下のような画面を確認できるようになります。 以下は、この簡単なPhoenixアプリケーションに対して実行した時。 対象 https://github.com/KazuCocoa/web_qa_vote 以下は、http_proxyに対して。 対象 https://github.com/KazuCocoa/http_proxy いずれも、BEAM VMのprocessやatomなどのメモリ使用量が計測できてとても良いですね。atomがGCされないので、これが過度に大きいとメモリ圧迫している、とか簡単にわかりますし。あとはfunctionsの名前空間の形もパッと見ることができますね。 https://github.com/andytill/erlyberly#get-the-process-state にあるように、processの状態を抜くこともできるようです。 ある程度はObserverでも見ることができますが、メモリ使用量をこんな感じでグラフにしてくれるのは解りやすい。Java製。More

[Elixir]Structs, String-keyed Maps, Atom-keyed Maps

Elixirの実装を書いている時、データを保持したりする時にStructs、String-keyed Maps、Atom-keyed Mapsのどれを使えばいいかよく悩んでいました。今日も悩んでいて、何かベストプラクティスないかな、と考えていたところ、ちょうど私の考えと同じものがあったのでメモ。 それぞれは以下な感じで書くことができます。 BEAM VMにおいて、atomはCGされません。そのため、どうてきにatomを生成することは良くない、と知っていました。その上で、何が一番妥当なのかなーと思ってたら、以下ページが見つかりました。 https://engineering.appcues.com/2016/02/02/too-many-dicts.html ルールは以下。 1. Always Use String-Keyed Maps for External Data 2. Convert External Data to Structs ASAP 3. Use Structs in All Other Code 4. Use Structs for Output Data 5. Avoid Using Atom-keyed Maps That Aren’t Structs 6. Use Keyword Lists Only for Function Arguments Structsで定義していたら、 defprot や…More

『チームが機能するとはどういうことか』を読んだ

チームが機能するとはどういうことか ― 「学習力」と「実行力」を高める実践アプローチ を読んだ。 内容自体は、個人的には目新しいものではありませんでした。一方で、学ぶ続けることができる環境を作るなどの必要性やその環境の構築に対して、ある程度まとまった知見を得ることができます。 心理的安全性など、威圧的になることによって発生する課題に対しても言及されていたことは良かったと思います。 また、 人が重視するのは、能力よりも優しさや信頼できるかどうかや正しい行いをするかどうかであることが、研究によって証明されている など、経験的な判断に対して研究という裏付けがあることも教えてくれます。 最後に、よくある人に対する3つの境界を。 物理的な距離 地位 知識 これらに違いがあることを前提に、うまいこと仕組みを作りたいですね。More

Espresso-core2.2.2とRunner/Rules 0.5が公開されていたのでコードを見る

espresso 2.2.2と、Runner/Rules 0.5が公開されていた。Silent releaseぽい。 https://google.github.io/android-testing-support-library/downloads/release-notes/index.html 更新情報の中で気になったところをメモ。sampleとかも書かれていないので、コードを直接追ってみました。コードまで追ってみた結果としては、 withResourceName だけ気にしていれば良いかなという感じ。 New feature Added checks for enabled animations and transitions New ViewMatcher API: withResourceName notable change ActivityTestRule, UiThreadTestRule, IntentsTestRule and ServiceTestRule are out of beta. dive into code withResourceName コードを見た感じだと以下。 withResourceName は resource idではなく、name属性から要素を特定できるっぽい。 android/support/test/espresso/matcher/ViewMatchers.java This file contains hidden or bidirectional Unicode text that may be interpreted or…More

[Alexa]learn skill kit more

Alexaは、単にテキストを話すほかに、意図した感じでテキストを話させることが可能です。 そのために、SSML(Speech Synthesis Markup Language)形式でテキストを書きます。 Speech Synthesis Markup Language (SSML) Reference https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/speech-synthesis-markup-language-ssml-reference 例 以下のように type と speech を与えると、Alexaは “Hoge (0.5秒間を開けて..) Hoge” と話します。 また、以下のようにすることで、音楽も流すことができるみたいです。実際、流れました。 2016年4月9日現在、サポートされているタグは以下のようです audio break p phoneme s say-as speak https://github.com/KazuCocoa/alexa-wise-guy また、Alexaは外部に向けてHTTP通信で取得した値を使うこともできるみたいです。 参考に、以下では取得した情報を話していました。 https://github.com/KazuCocoa/alexa-tide-pooler/blob/master/src/index.js#L341 参考 https://github.com/KazuCocoa/alexa-tide-pooler https://github.com/KazuCocoa/alexa-wise-guy ここまで調べて、やりたいことはできそう、までわかった。More

[Elixir]PubSub機構をサクッとつくる

Elixirは receive があらかじめ用意されている。そのため、 send で特定のプロセスに送ったメッセージを受け取って、何らかの処理をするというコードが容易にかける。それを使い、PubSubをするコード。 This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters Show hidden characters defmodule PubSubServer do def start(subscriber_callback \\ nil) do spawn…More

[Lambda]Hello World via Alexa

Amazon EchoのSkill Kitが面白い。 Amazon Lambdaを使って簡単なSkill Kitを使ったアプリケーションを作ることが可能なのだが、本当に対話的なやり取りを実現できる。 https://github.com/amzn/alexa-skills-kit-js/tree/master/samples/helloWorld このサンプルを使うと、 私 > Alexa, ask greeter Alexa > Welcome to the Alexa Skills Kit, you can say hello 私 > Hello Alexa > Hello World と言う感じで応答ができる。この時、私がHelloというまで You can say hello と言いながらある程度待ってくれる。 体験が変わる。 さぁ、こういう体験が出てきた時、 Quality はどうなるだろう。 ちなみに、まだ日本語は発してくれない。 https://github.com/KazuCocoa/alexa-helloworldMore

『アプリ法務ハンドブック』を読んだ

少し前なのですが、ここに残し忘れていたので。 【BUSINESS LAW JOURNAL BOOKS】アプリ法務ハンドブックを読みました。OSSの話だったり、肖像権とか、そういうアプリ開発からサービス開発にかかる法律的な話が網羅されていました。 メモメモ。More

[Elixir]Keywordの中身はTupleのList

Elixirに置いて、Keyword listはTupleで表現される。 なので、 のようなパイプを書いた時、取得されるのは [“hello”] になる。 ここで、Elixir v1.2.3 の Keyword.valuesの中身を覗いてみると、以下のようにmapを適用した中でTupleからちょうどvalueを取得してListを作って返している。 当初、 しか Keyword 系は使えないと思っていたけれど、Erlangレベルでは なので、Keyword listとみなしてKeyword操作ができるのですね。学びだ。 蛇足だけれど、 Enum.any?/2 と言う、処理の途中で要素が見つかったらtrueを返す用途で使うfunctionも教えてもらった。なるほど。More

『物語 スペインの歴史―海洋帝国の黄金時代』を読んだ

過去、シンガポールとハワイの歴史を読みましたが、今度は 『物語 スペインの歴史―海洋帝国の黄金時代 (中公新書)』 を読んでみました。 スペインはレパント海戦や無敵艦隊などで有名なので、その辺の話を知っている人も多いと思います。学校の授業などでも有名どころとしてまず学ぶところでしょう。 この本はそこだけに焦点を当てるのではなく、そこに至るまでの過去のイスラムによる支配、その国土回復のための活動など、私がよく把握していなかった過去がありました。その後、イギリスのエリザベス1世との関係や、無敵艦隊などの話に続き、その敗戦、現代と話が大きく変化します。大きな局面を例に、スペインの歴史の変化を垣間見ることができました。 「ドン・キホーテ」の著者であるセルバンテスが度々出てきますが、これは著者の嗜好も絡んでいるみたいですが、そういう視点での物語も変わって面白いものですね。 とはいえ、欧州は侵略など含めて大きく歴史が動き続けた場所でもあります。欧州に足を運ぶ際は、こういう歴史的なところも少なからず知っておきたいところですね。More