タグ

Elixirに関するhohoho_ho2005のブックマーク (151)

  • [翻訳] Elixirノート:Mapのパターンマッチング - Qiita

    Rob Phoenixさんの2016年1月4日付のブログ記事Notes on Elixir: Pattern-Matching Mapsの翻訳です。ここのところ立て続けにElixirについてのノートを投稿していて前回の投稿は私の前回の翻訳とほぼ同じ内容でした。つまり単純なスカラー型データやリストについての例です。 今回取り挙げられているのはMap型のデータでElixirのパターンマッチングがどうなるか、という例です。 パターンマッチングについての前回の投稿からの続きで、Elixirで主なキー・バリューストアとして使われるmap型データは、パターンマッチングについては他のデータ構造と全然違う面白い機能を持っています。 mapはその値のまさにサブセットだけをパターンマッチさせることができます。マッチングのパターン内のキーはマッチさせる対象の中に存在している必要がありますが、listやtuple

    [翻訳] Elixirノート:Mapのパターンマッチング - Qiita
  • Elixirの静的型チェック - decadence

    Elixir再履修 JVMはすごいけど限界もあるって最近感じてて、process単位でのGCが行えるBEAM系言語としてElixir触ってる*1。 前に一度触ったけど文法とか飛んでたしElixir再履修。 Elixir Documentation Elixir School エディタ設定とか依存管理とか予め言語開発側が用意してくれているので助かる。ただ動的型付け言語なので、その辺りは後々困るのは確実。Erlangには静的型チェックの仕組みとしてdialyzerがあり、Elixirでも利用可能なのでそのあたりを先に押さえる。 型宣言 when is_number(arg)みたいのを適宜書くのも良いが、そもそもこれはガードに利用するためのもの。Erlangの型付けで利用されていた-type、-spec、-opaque がそのまま@type、@spec、@opaqueとして利用出来る。 型につい

    Elixirの静的型チェック - decadence
  • Elixir+Phoenix開発Tips - Qiita

    Tipsというか、開発しててハマったりわかりにくかった点をいくつかあげてみたいと思います。 モデルのPrimaryKeyをデフォルトから変更する mixコマンドで mix phoenix.gen.model User users name:string age:integer のようにモデルを生成して mix ecto.migrate を実行するとテーブルのPrimaryKeyはidで作られてしまいます。 これを別名のカラムにしたいときは以下の様にします。 1, mix phoenix.gen.model でモデル作成

    Elixir+Phoenix開発Tips - Qiita
  • PhoenixでのWebサービス開発(1) サーバログ編 - Qiita

    サービス運用に必要なサーバログの設定概要の一例。 ログの出力対象を考える ここでは下記を対象とする。サービスの初期段階ではログを多めに出しておいて、安定稼働の実績が出来次第ログを減らす方針でいく。 受信したHTTP Request リクエストheader(user-agent, x-forwarded-for) リクエストbody(controllerの引数のみ) 返答したHTTPレスポンス レスポンスタイム レスポンスbody(JSONの場合) vmの情報(process数) サーバ内での予期しない例外 各ログ出力には、下記の情報を付加させる ユーザーID そのログ出力が、どのユーザーのHTTPリクエストによって発生したのかがわかるようにする リクエストID そのログ出力が、どのHTTPリクエストによって発生したのかがわかるようにする 各ログ出力を設定する リクエストheader(use

    PhoenixでのWebサービス開発(1) サーバログ編 - 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
  • 2016-2017年位にWeb界隈で流行りそうな言語、特にElixirについて - Speaker Deck

    Transcript 2016-2017೥Ґʹ Webք۾Ͱྲྀߦͬͯͦ͏ͳݴޠ, ಛʹElixirʹ͍ͭͯ @yodatomato 2015/12/25 ࣾ಺ษڧձ޲͚ࢿྉ $whoami • @yodatomato • Java/Android/ Laravel(PHP)… • Favoriteɿ
 Erlang/Elixir/Phoenix/ Mithril/kotlin/Golang • Master of ZohyoMeetUp ࡊ୯ • ͜͜·ͰͷྲྀΕ • Golangʢܰ͘ʣ • Crystal • Rust • Elixir ͜͜·ͰͷྲྀΕ • PݴޠਞӦ VS JavaRails͕͍Ζ͍Ζۦஞˍ৽͍͠෩Λਧ͖ࠐΉ • golang͍͍ͧʔΈ͍ͨͳ෩ை • དྷ೥ɺ࠶དྷ೥ลΓͲ͏ͳΔΜͰ͔͢ͶˡΠϚίί ※ ͪͳΈʹJava͸͜ͷؒҾ͖͜΋ͬͯͨΓɺScalaʹҠ ॅͨ͠

    2016-2017年位にWeb界隈で流行りそうな言語、特にElixirについて - Speaker Deck
  • ElixirのOTPでMapReduce処理を実装する | DevelopersIO

    Elixirには複数プロセスを使ってアプリケーションを簡単に実装するためのフレームワークであるOTPが用意されています。 OTPを使うとプロセス間のメッセージ通信やエラー時の再起動処理、プロセスの状態管理が非常に簡単に実装できます。 今回はOTPを使ってMapReduceのプログラムを実装してみます。 MapReduce Apache Lucene MapReduceの仕組みが利用されているソフトウェアをご紹介します。 LuceneはJavaで実装されている全文検索エンジンで、Elasticsearchの内部でも使われています。 このLuceneですが、MapReduceの仕組みを使って単語の出現場所のインデックスを生成しています(Luceneの作者は最初、Lispで実装を試したそうです)。 今回はこのMapReduceで文書のインデックスを生成する処理をElixirで実装してみます。 (

    ElixirのOTPでMapReduce処理を実装する | DevelopersIO
  • Elixir School 日本語訳

    Elixir Schoolへようこそ! Elixir SchoolはElixirを学び、マスターするための最高の場所です。 ベテランの方も、初めての方も、レッスンや補助教材で必要なものが見つかるはずです。 ボランティアの方々の努力により、Elixir Schoolは多くの言語に翻訳されています。その中には次のような翻訳があります: বাংলা, Deutsch, Ελληνικά, Español, Bahasa Indonesia, Italiano, 日語, 한국어, Bahasa Melayu, Norsk, Polski, Português, Русский, Slovenčina, Türkçe, ภาษาไทย, Українською, Việt ngữ, 简体中文 と 繁體中文. elixirschool/elixirschoolに参加することで、私たちと一緒にElix

    Elixir School 日本語訳
  • [翻訳] 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
  • [Elixir][Jupyter]Play IElixir on Jupyter

    最近、Jupyterを知りました。 Python/Rubyで学んだのですが、Elixirでもあるか探してみたらありました。(なかったら作ってみようとしてた) 使い方は簡単で、Readmeに書いている通りにするだけです。 Jupyter https://jupyter-notebook.readthedocs.org/en/stable/index.html https://github.com/jupyter IElixir https://github.com/pprzetacznik/IElixir IErlang https://github.com/robbielynch/ierlang そのほか、利用可能なKernelは以下 https://github.com/ipython/ipython/wiki/IPython%20kernels%20for%20other%20lang

    [Elixir][Jupyter]Play IElixir on Jupyter
  • Phoenix でログファイルをリアルタイムに tail してみる - Qiita

    defmodule PhoenixTail.TailChannel do use Phoenix.Channel def join("tails:sample", auth_msg, socket) do {:ok, socket} end def join("tails:" <> _private_room_id, _auth_msg, socket) do {:error, %{reason: "unauthorized"}} end end ログファイルを監視するプロセスを作る 次に、tail の対象とするログファイルを監視する部分を実装します。 処理の流れとしては、 定期的に対象のファイルをチェック 変更が入っていれば、前回取得行以降の行を取得 取得した内容を WebSocket に broadcast という感じで、サーバへのリクエストなどとは一切関係ないものとなります。 つまり

    Phoenix でログファイルをリアルタイムに tail してみる - Qiita
  • [Elixir]SupervisorとWorkerの再起動の振る舞いをちょろっと見てみた

    ちょろっとしたお遊び程度ですが、Supervisorによって管理されているプロセスをkillしたりしてプロセスをみてみました。書籍には載っているのですが、特に何も見ずにお遊び程度にサラでやってみたのでそのメモ、みたいな感じです。 初めに… 空のsupervisorプロジェクトを作ります。 $ mix new SupervisorTest --sup $ cd SupervisorTest $ mkdir lib/supervisor_test $vim lib/supervisor_test/neko_supervisor.ex defmodule SupervisorTest.Neko do use GenServer def start_link(opts) do {_, name} = opts GenServer.start_link(__MODULE__, :ok, [name:

    [Elixir]SupervisorとWorkerの再起動の振る舞いをちょろっと見てみた
  • Phoenix入門2 - Phonixで認証機能 - Rails Webook

    前回の記事は「Phonix環境のセットアップから、静的ページを作成し、表示」させました。 今回の記事では、「Phoneixで認証機能を実装」します。 それを通して、マイグレーション、モデル、外部ライブラリ利用などのWebアプリケーションを作るための基的な箇所を説明します。 次回は「チャット機能を実装」します。 サンプル ChatPhoenix - Heroku ChatPhoenix - GitHub 目次 ユーザ登録機能 ログイン・ログアウト機能 動作確認 Erlang 7.1 Elixir 1.1.1 Phoenix 10.0.3 Hex 0.9.0 node.js 0.12.7 npm 2.14.2 PostgreSQL 9.4.4 1. ユーザ登録機能 ユーザモデルの作成まず、最初にユーザモデルを作成します。 メールとパスワードでログインをできるようにし、パスワードは平文ではなく

    Phoenix入門2 - Phonixで認証機能 - Rails Webook
  • 【中級編】Riot.js + Typescript + karmaで今日から始めるElixir on Phoenixフロント開発入門 その1 - Qiita

    【中級編】Riot.js + Typescript + karmaで今日から始めるElixir on Phoenixフロント開発入門 その1TypeScriptElixirkarmaPhoenixriot はじめに 皆さん、おはこんばんちは。 年の瀬です。 コミケの入稿割引が減っていきます。 第2回 企業対抗トーナメントも大晦日に、あります。ギルティです。 正直色々忙しいですね。分かります。だって師走だもの。 そんな時は肩の力をいったん抜いて、Elixir on Phoenix、入門していきましょう。 CentOS + Erlang + Elixir + PhoenixのDockerイメージで今日から始めるElixir on Phoenix入門 【中級編】drone.io + exrmで今日から始めるElixir on Phoenixホットデプロイ入門 前回、前々回に引き続き、Elixir

    【中級編】Riot.js + Typescript + karmaで今日から始めるElixir on Phoenixフロント開発入門 その1 - Qiita
  • Node.js Is Dead - なぜ私がNode.jsを捨ててElixirに切り替えたのか-

    タイトルは釣りです。すいませんほんと。 2015年12月0c8日に行われたAktsk Tech Meetup #1: Elixir & GraphQLで発表した際の資料です。 === Node.js+Koaで開発していたサービスを、なぜリリースせずにElixir+Phoenixに書き換…

    Node.js Is Dead - なぜ私がNode.jsを捨ててElixirに切り替えたのか-
  • Elixirでプロセス5000万くらい作ってみた - Qiita

    Elixirで、表題の通り5000万プロセスぐらい作ってみた。 Elixirで20万プロセスを作ったその後 Elixirはerlang VMをベースとした関数型の言語だ。Rubyっぽい文法も使えて便利である。erlangの特徴である、軽量のプロセスが使えるのが一つの売りである。 少し前に、Elixirでプロセス20万位作ってみた という投稿を行った。その時は、デフォルトのprocess_limitのサイズ約26万を超えて、プロセスを指定する方法がわからなかった。親切な方から、26万を超えるprocess_limitの指定方法を教えてもらったので、それならどれくらいまで行けるかと思い、5000万までプロセスを作ってみた。プロセスの単位がインフレしすぎて、実際何の単位なのかわからなくなった。 erlangのプロセス この場合のプロセスは、erlangで使われる軽量プロセスのことだ。プロセスはe

    Elixirでプロセス5000万くらい作ってみた - Qiita
  • ElixirでWebスクレイピングのためのライブラリを作った - nekovaの日記

    RubyにはMetaInspectorというwebスクレイピングのためのgemがあります。複雑なparseに使うことは出来ませんが、基的な情報やOpenGraphなどのmeta情報を取得する際に効果を発揮します。 MetaInspectorよろしく、webスクレイピングを手軽にできるライブラリをElixirで使いたかったので自分で作りました。 github.com MetaInvestigatorって名前が呼びづらいので、さっそく名前を変えたくなってる 目次 MetaInvestigatorの内部的な話 開発中に直面した問題 おわりに MetaInvestigatorの内部的な話 MetaInspector家は、faradayを使ってHTTPリクエストを投げています。 それに倣って実装するため、ElixirにはどんなHTTPクライアントがあるのかを調べることにしました。 どうやらHTT

    ElixirでWebスクレイピングのためのライブラリを作った - nekovaの日記
  • Elixirのプロセス生成とプロセス間通信 | DevelopersIO

    Elixirは並行処理能力に優れたRubyライクなシンタックスを持つ関数型言語です。 前回のエントリではElixirの概要やシンタックスの紹介を簡単にしました。 今回はElixirの複数プロセスを使ったプログラミングについて書いていきます。 Elixirにはプロセス周りの実装をサポートしてくれるOTPというライブラリがあるのですが、まずはOTPを使用しないプログラミングを扱います。 軽量プロセス Elixirのプロセスは軽量プロセスと言われていて、OSのプロセスやスレッドではなくGreenスレッドです。 カーネルではなくVMでスケジューリングされるので軽量、コンテキストスイッチが発生しないという利点があります。 1軽量プロセスで約300ワードです。 プロセス生成 Elixirで新しいプロセスを生成するのは簡単です。 spawn関数を呼び出し、戻り値に生成したプロセスIDを受け取ります。 d

    Elixirのプロセス生成とプロセス間通信 | DevelopersIO
  • elixir CSVファイルを1行づつ読み込み、内容をMariaDBに登録する

    elixirでテキストファイルの読み込み テキストファイルの読み込みはこちらを参考にします。 IO and the file system まず、ファイルを1行づつ読み込んで処理するところまで。 # csvファイルをutf-8でオープン{:ok, fp} = File.open("zip_utf8.csv", [:read, :utf8])# 一行づつ読み込みEnum.each(IO.stream(fp, :line), fn(line) ->        # カンマで分割し、リストからタプルに変換    row = List.to_tuple( String.split(line, ",") )        # 前後の「"」を除去し、郵便番号(7桁)取得    zip = String.strip(elem(row, 2), ?")        # 住所は3つに分割されているので、

    elixir CSVファイルを1行づつ読み込み、内容をMariaDBに登録する
  • Elixirの Enum の主な関数の使い方の覚え書き - Qiita

    Enumでcollectionを引数に取る主要な関数を下記に記載してみる。 Collectionの指定した位置の値を返す iex(1)> Enum.at([1,2,5,4],0) 1 iex(2)> Enum.at([1,2,5,4],1) 2 iex(3)> Enum.at([1,2,5,4],2) 5 iex(4)> Enum.at([1,2,5,4],3) 4 iex(5)> Enum.at([1,2,5,4],4) nil

    Elixirの Enum の主な関数の使い方の覚え書き - Qiita