タグ

ブックマーク / qiita.com/HirofumiTamori (25)

  • Raspberry pi 2 で ElixirなLチカを - Qiita

    今回はちょっと目先を変えてRaspberry Pi 2のハードウェア制御をElixir/Erlang OTPでやってみます。実は今までRaspberry Pi 2、もっぱらお手軽Linux機として使っていてLチカやったことないことに気づきました(笑)。 下準備 Raspbian(Jessie)でElixirを走らせる Raspbian(Jessie)で既にRaspberry Pi 2が動いていて、ビルドに必要なコンパイラなどがインストールされているものとします1。 まずErlang/OTPとElixirをビルドします2。 DOWNLOAD OTP 18.2.1から最新の18.2.1のソースをダウンロードしましょう。Elixirも1.2.13をビルドする予定なのでErlangは18.0以降が必須です。 先に必要なライブラリなどをRaspbianにインストールしておきます。 $ sudo ap

    Raspberry pi 2 で ElixirなLチカを - Qiita
  • [翻訳] Elixirの作者、José Valimへのインタビュー - Qiita

    Nihal Sahuさんの2015年11月30日付のインタビュー記事An Interview with Elixir Creator José Valimの翻訳です。 全然技術的な投稿じゃないんですが(とはいえポエムでもないか)、Joséのアニキの言ってることがなかなかいい感じなので訳してみました。 。。。そういえばJoséってジョゼでいいの?ホゼなの?ホセなの?1 数週間前に遡ります。私はちょうどElixirを始めた頃でした。すごくハマってしまってIRCに飛び込んで質問しまくりで皆さんにご迷惑をお掛けしたかもしれません。私はElixirの作者であるJosé Valimにもいくつか質問しました。JoséはRubyコミュニティの人気者で彼にメッセージを送ったところとても親切に答えてくれました。いくつか質問したあと、これは彼にインタビューしてみないとな…と思いました。以下は会話の結果です。 あ

    [翻訳] Elixirの作者、José Valimへのインタビュー - Qiita
  • [翻訳] ElixirとErlangの変数を比較する - Qiita

    José Valimさん1の2016年1月12日付のブログ記事"Comparing Elixir and Erlang variables"の翻訳です。 時々Erlangのプログラマは「Elixirの変数は隠れたバグの温床になるのでは」と心配するようです。この記事ではそういう心配についてと、Erlangでの変数も「隠れたバグ」を生み出しかねず、一方でElixirはそれらのうちのいくつかを除去するということについて議論します。 話を始める前に短い放棄声明を…: Elixirは可変(mutable)な変数を持っていません。あるのは再バインドです。可変性はよくストレージと関連付けられます。Elixirでは保存された値を変更することはできません(Erlangと同じです)。可変な変数の例としてF#を見てみましょう。F#では明示的にmutableキーワード(例えばlet mutable x = 5)に

    [翻訳] ElixirとErlangの変数を比較する - Qiita
  • [翻訳] Elixirでスモールデータを扱う - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? José Valimさんの2017年3月17日付けのブログ記事Small data with Elixirの翻訳です。 Elixirで「データの集まり」を扱うモジュールには Enum Stream そして新しくできた Flow があります。 ざっくり説明すると Enumはデータを全部メモリ上に取り込んで処理する Streamはデータを必要な時に読み込んで逐次的に処理する(その名の通りStreamだから) Flowはデータを必要な時に読み込んで、さらに並行処理する という違いがあります。 なお、FlowはGenStageの上に作られている

    [翻訳] Elixirでスモールデータを扱う - Qiita
  • [翻訳] ElixirとErlangで関数型プログラミングのその先へ - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? José Valim1さんの2016年5月25日付のブログ記事**Beyond Functional Programming with Elixir and Erlang**の翻訳です。 Joséさんのスタンスにとても共感できたので翻訳しました。 Erlang VMでの関数型プログラミングに少しばかり違った視点を付け足したいと思います:Erlang VMにおいては関数型プログラミングはゴールではありません。単なる手段に過ぎないのです。 Erlang言語及びErlang VMを設計する際、Joe2,Mike3そしてRobert4は関数型プ

    [翻訳] ElixirとErlangで関数型プログラミングのその先へ - Qiita
  • [翻訳] Elixir ─ 状態はどこにある? - Qiita

    Markus Krogemannさん2016年4月6日付けのブログ記事、Elixir - Where is your state? 1の翻訳です。 関数型言語はよく「状態を持たないのでプログラムの見通しがよくなる」と言われますが、サンプルアプリ以上のことをしようとすると何らかの方法で状態を保持しておかないといけなくなります。Haskellだとこういうときモナドを使うんでしたっけ?ではElixirではどうするか?という件について説明しています。 この投稿では、アクターベースの関数型プログラミング環境で状態を管理する方法として提供されているElixirのAgent抽象化を見ていきます。更にErlang/OTPで実装されているその基礎的要素についても見ていきます。その過程においてTicTacToe(三目並べ)の実装をわかりやすい実例として挙げます。 さて、状態についての問題とは何でしょうか?この

    [翻訳] Elixir ─ 状態はどこにある? - Qiita
  • [翻訳] Elixir 1.2の`with`を使い(倒し)ます - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

    [翻訳] Elixir 1.2の`with`を使い(倒し)ます - Qiita
  • [翻訳] use, import, require --- Elixirではどういう意味なのか - Qiita

    Elixir言語の解説サイトLEARNING ELIXIRから、Joseph Kainさんの2016年1月20日付けの記事Use, import, require, what do they mean in Elixir?の翻訳です。 モジュールを参照する宣言文は他の言語にもいろいろあります。どの言語でも「どう使い分けていいのか」結構迷いますね。ではElixirでは? この記事はその疑問に答えるものです。タイトルに入ってないけどaliasもありますよ。 Elixirにはいくつか他のモジュールを参照するためのスペシャルフォームがあります。それには以下のものが含まれます: use import require alias それぞれ独自の意味を持っているのですが慣れるまではどれを使えばいいのかなかなかわかりませんよね。 各スペシャルフォームの実演をするために新しいテスト用のプロジェクトを作りまし

    [翻訳] use, import, require --- Elixirではどういう意味なのか - Qiita
  • [翻訳] Elixirでドキュメントを書くということ - Qiita

    Elixir 1.2-rc1のドキュメント Writing Documentationより翻訳。 1.2からの新機能…ですよねこれ。より能動的に埋め込みドキュメントを利用していくような開発スタイルが推奨されるようです。 Elixirはドキュメントを第一級市民として扱います。即ちドキュメントは書きやすくまた読みやすくあるべきです。このドキュメントでElixirでドキュメントを書くにはどのようにすればいいか、モジュールの属性やスタイルの実例またdoctestについて学びます。 Markdown ElixirのドキュメントはMarkdownを利用して書きます。ネット上にMarkdownについては十分に参考資料がありますが、まずGithub上にある以下から始めるのがよいと思います。 https://help.github.com/articles/markdown-basics/ https://

    [翻訳] Elixirでドキュメントを書くということ - Qiita
  • [翻訳] Elixirのwithを学ぶ - Qiita

    with {:ok, contents} <- File.read("my_file.ex"), {res, binding} <- Code.eval_string(contents), do: {:ok, res} 「複数の式にマッチさせるためにこのスペシャルフォームを追加した」とありますね。 リリースが近づいてきたElixir 1.2では新しいスペシャルフォーム withの導入が予定されています。投稿でこの新しい特徴がどのように動作し、今後どのように効率的に使っていくとよいのかを調べてみます。 withは異なる構造化された結果を返すコマンドをまとめてチェーンするのを助けるために用意されました。特にひとつ使用例を挙げるとすればエラーハンドリングをちょっときれいに書くためです。あるコマンドの戻り値がwith節とマッチしなかった場合、プログラムは全部の式を飛ばしてwith節を抜けます。こ

    [翻訳] Elixirのwithを学ぶ - Qiita
  • [翻訳] 連続非推奨魔 José Valim 再びあらわる - Qiita

    Augie De Blieck Jr.さんの2015年10月3日付のブログ記事Serial Deprecator José Valim Strikes Againの翻訳です。 ElixirConf 2015のキーノートスピーチでElixirの作者 José Valim が発表したデータ構造に関する仕様変更について。HashSet, HashDict, Set, 及びDictがなくなるようです。全部Mapでやってくれ、ということみたい。 (承前:ブログ記事をElixir Conf 2015の最新臨時ニュースのために一時的に更新停止しておりました。ご了承ください) José Valim: 言語設計界で最も危険な男? テキサス州オースチン発: 連続非推奨魔José Valimがこの週末またも襲撃しさらに4人が「単純化」キャンペーンの新たな犠牲者となった。 250名を越える聴衆の面前でのこの衝撃的

    [翻訳] 連続非推奨魔 José Valim 再びあらわる - Qiita
  • [翻訳] Elixirの外側へ: Portを使って外部プログラムを実行する - Qiita

    Saša Jurićさんの2015年8月18日付のブログ記事、OUTSIDE ELIXIR: RUNNING EXTERNAL PROGRAMS WITH PORTSの翻訳です。 ElixirはBeagle Bone BlackやRaspberry Pi 2でも動作するのでそれならば最低でもLチカぐらいはさせたいところ。 そう考えて少し調べたらPortというものを使えば外部プログラムを走らせられる…つまり外部のC言語あたりで書いたLチカプログラムとElixirが連携できそうです。 この記事では主にRubyと話をする例が出てきます。 ちょっと長いです。 場合によっては何かのシステムの一部を実装するのにErlang/Elixirではない言語を使う方が有益なことがあります。私は少なくとも2つ、そうするほうがいい理由を知っています。まず、いくつかの特定の機能についてライブラリがないか他の言語に比べ

    [翻訳] Elixirの外側へ: Portを使って外部プログラムを実行する - Qiita
  • naoya@githubさんの記事を試すには - Qiita

    naoya@githubさんが最近「カッとなって」Elixir関連の記事を投稿されていますが、さらにカッとなってWEB+DB PRESSに記事を書かれています。 でも、あのソースを見てもそのままでは実際に動かせなかった人も多いのでは。次号以降に補足が出るにしても隔月刊ですしね… ということで復習も兼ねて動かし方を書いてみます。 ソース ソースはこんな感じでした(写経)。一つ目の「あまりElixirらしくない」ものを対象にしました。 defmodule WeatherClient do def fetch_json(url) do HTTPoison.start res = HTTPoison.get!(url) Poison.decode!(res.body) end def get do %{"weather" => weather} = fetch_json( "http://api.

    naoya@githubさんの記事を試すには - Qiita
  • [翻訳] Elixirでの関数カリー化 - Qiita

    Patrick Stormさんの2015年7月13日付のブログ記事Function currying in Elixirの翻訳です。 今までHaskellかじりーの、Scalaかじりーの…してて何度も出くわしてきた「カリー化」ですがなんかよく使いドコロがわからなくてスルーしてきました。 Elixir頭でならメリットとか理解できるかなあ…と思い翻訳しました。 カリー化って? カリー化はアリティNの関数を全てがアリティ1を持つ関数のシーケンスに変換するためのテクニックです。関数のアリティとは関数が取る引数の個数のことです。 カリー/カリー化という用語は今を遡る60年代に論理学者ハスケル・カリー(Haskell Curry)からその名をとって考え出されました。彼の名を持つプログラミング言語1にはカリー化関数がビルトインされていますし、他の多数の言語でもライブラリを使って同様の振る舞いが実装されて

    [翻訳] Elixirでの関数カリー化 - Qiita
  • [翻訳] Railsの弟、Phoenix Frameworkで遊ぼう - Qiita

    Michał Kalbarczykさんの2015年7月28日付のブログ記事Playing with Phoenix Framework – Rails’ younger brotherの翻訳です。 Elixirはよく「Erlangの文法をRuby風にしたもの」と言われますし、開発者のJosé ValimさんがRailsの開発コアメンバーであることからか開発環境もRubyをお手にしたものが多いです。 この記事はPhoenix FrameworkについてRuby及びRuby on Railsといろいろ比較しながら書かれています。 Phoenixについての復習も兼ねて訳してみました。 Phoenixについて聞いたことはありますか?Elixir言語で書かれた新しいWebフレームワークです。Elixirはそれ自体がRubyにインスパイアされておりErlang仮想マシン上で動作します。そう、そこには

    [翻訳] Railsの弟、Phoenix Frameworkで遊ぼう - Qiita
  • [翻訳] Ectoを使った組み立て可能なクエリ - Qiita

    Drew Olsonさんの2015年1月23日付のブログ記事Composable Queries with Ectoの翻訳です。 EctoはRuby and RailsだとActive Recordに相当するのでしょうか、データベースの抽象化機構です。 Phoenixにも欠かせない機能なんですがあまり紹介記事がなさそうなので訳してみました。 そういえばectoっていうのは「外の…」という意味の接頭語で(ex-なんかと同じ)~魂?が口から「外に出る」エクトプラズム(ectoplasm)なんてのがありましたね(笑)~データベースに直接タッチせず外から触るからついた名前かもしれません。 (どうでもいい追記) ゴーストバスターズの「作業車」の名前がEcto-1でした。 以前の投稿で(ある種ホンモノの)WebアプリをElixirで作成して1今までに私が習ってきたレッスンのいくつかについて簡潔に述べま

    [翻訳] Ectoを使った組み立て可能なクエリ - Qiita
  • [翻訳] ElixirにおけるOTPの紹介 - Qiita

    前回に引き続き、Michael Kohlさんの2015年2月13日付のブログ記事An intro to OTP in Elixirの翻訳です。 OTPとは何か? ドキュメントによればOTP-Open Telecom Platform-は「並行プログラミングのために完備された開発環境」で、Erlangコンパイラとインタプリタ、データベースサーバー(Mnesia)、解析ツール(Dyalizer)それに多数のライブラリを含んでいます。人々がOTPについて話をするときに引き合いに出すのはこの後半の部分です。 ビヘイビア(ふるまい) Erlang/OTPのデザイン原則の中心的なもののひとつはアプリケーションのパターン、OTP用語でいうところの「ビヘイビア」です。ビヘイビアは共通的なタスクに対する汎用的な実装を定義します。その一例として汎用サーバー(gen_server)モジュールがあります。アプリケ

    [翻訳] ElixirにおけるOTPの紹介 - Qiita
  • [翻訳] Elixirのストリーム - Qiita

    Drew Olsonさんの2015年6月8日付のブログ記事Elixir Streamsの翻訳です。 Elixir言語のマニュアルにはストリームについて、"Any enumerable that generates items one by one during enumeration is called a stream."「列挙できるもの~うまい訳がないのでEnumerableってみんなそのまま言ってますね。「列挙値」と訳してるものもあるけど~のうち列挙している最中に項目を一つ一つ生成できるものはストリームと呼ばれる」とあります。 他の言語だと「遅延評価できる無限リスト」とでも言えばいいのかな。たいてい「普通に書くとこうですが遅延評価を使うとこういうこともできます」と教科書的な例が出てるだけで終わっちゃうんですがこの記事には面白い利用例があったので紹介します。 私見ですがErlangのi

    [翻訳] Elixirのストリーム - Qiita
  • [翻訳] クロージャ:Elixir vs Ruby vs JavaScript - Qiita

    Hubert Łępickiさんの2015年6月14日付のブログ記事Closures: Elixir vs. Ruby vs. JavaScriptの翻訳です。 Wikipediaより クロージャ(クロージャー、英: closure)、関数閉包はプログラミング言語における関数オブジェクトの一種。いくつかの言語ではラムダ式や無名関数で実現している。引数以外の変数を実行時の環境ではなく、自身が定義された環境(静的スコープ)において解決することを特徴とする。関数とそれを評価する環境のペアであるともいえる。 大雑把に言うと例えば「大域変数は使いたくないけど(名前がぶつかるとかで)、プログラム全体で状態を保持したい場合なんかに使うアレ」です1。 こちらの猿でもわかるクロージャ超入門 まとめがわかりやすいです。ただこれもそうですが、ググってみるとなぜかJavaScriptの例が多いんですよね。で「外側

    [翻訳] クロージャ:Elixir vs Ruby vs JavaScript - Qiita
  • [翻訳] Elixirのプロセスアーキテクチャ または私は如何にして心配するのを止めてクラッシュを愛するようになったか - Qiita

    John Bohnさんのブログ記事 Elixir Process Architecture or: How I Learned to Stop Worrying and Love to Crashの翻訳です。 Elixir(とそのベースになっているErlang)のプロセスは生成のためのコストが小さいため「下手にエラー処理するコードを書いてプロセスを維持するよりはさっさとクラッシュさせて、それに続く処理の中で対策して再起動したほうがよい」という思想があります。それを実際に適用してみたという話です。なお説明を簡単にするために多少端折ってるとのこと。 ところでこのタイトルは某古典的スラップスティックSF映画のアレですね… "クラッシュさせちまえ" それは私が聞かされ続けてきたことだ。正直言ってそのセリフの意味するところを理解するまで少々時間が必要だった。その考え方がピーンと来るにはProcess

    [翻訳] Elixirのプロセスアーキテクチャ または私は如何にして心配するのを止めてクラッシュを愛するようになったか - Qiita