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

■ ElixirのConcurrent Programmingについてまとめた過去記事 Elixir Concurrent Programming(1) - Spawn - Qiita Elixir Concurrent Programming(2) - GenServer - Qiita Elixir Concurrent Programming(3) - Supervisors - Qiita Elixir Concurrent Programming(4) - Task and Agent -Qiita SpawnやGenServerなどより、簡単にバックグランド・プロセスをつくるための仕組みである、TaskとAgentについてみてみます。 1.Task GenServerはサーバとして働き、永続的にリクエストを受け付け、処理を行うというものでした。これに反してTaskはworker
はじめに 今日は fukuoka.ex のもくもく会です。fukuoka.ex のもくもく会どころか「もくもく」と名前がついている会合すら初めてです。ここでやったことをそのまま貼り付けてみます。 これまで はじめてなElixir(9) 有限状態機械を作ってみる はじめてなElixir(10) 小水力発電所の状態遷移を表現してみる と、状態機械で遊んできましたが、もうちょっと先に行ってみようと思います。そのために今日は生プロセスにチャレンジしてみます。 とりあえず教科書のまま まずは「プログラミングElixir」14章の先頭のママで遊んでみます。 defmodule Spawn4 do def greet do receive do {sender, msg} -> send sender, { :ok, "Hello, #{msg}" } greet() end end end pid =
fukuoka.ex代表のpiacereです 今回もご覧いただいて、ありがとうございます まもなく、私のQiitaコラム1番人気が、「重力プログラミング入門『第2回:Pythonで重力波を解析する』」から、「Excelから関数型言語マスター1回目:行の『並べ替え』と『絞り込み』」に取って代わられそうな勢いで、Elixirへの注目が集まり始めてきました 「重力プログラマ」としての私は危機感を感じています(笑)が、「福岡Elixirプログラマ」としての私はホクホクしています さて今回は、Elixirをやると疑問に感じる方も多いであろう、他言語にあってElixirに無い(もしくは簡単に使えない)イディオム…たとえば、whileが、何故無いのかについて、答えてみようと思います なお、内容については、関数型やElixirの由緒正しい文献を見ながら持ってきた、とかでは無く、思考と記憶から引っ張ってきて
fukuoka.ex代表のpiacereです 今回もご覧いただいて、ありがとうございます 「Elixirは何故whileやメンバー変数が無いの?」に答えてみる① で、Enum.sumを紹介しましたが、その内部実装が、Elixirを初めたばかりの方には、トリッキーな構文だったので、Elixirのコードを読む練習として、少し解説したいと思います お知らせ:Elixirもくもく会(リモート参加OK、入門トラック有)を今日、開催です 「fukuoka.ex#14:Elixir/Phoenixもくもく会~入門もあるよ」を9/28(金)に開催します 今回から「Zoomによるリモート参加」を正式に受け付けるようになりましたので、福岡以外の都心や地方からでも参加できます(申し込みいただいたら、追ってZoom URLをconnpassメールでお送りします) また、これまではElixir/Phoenix経験者
ZACKYこと山崎進です。 私たちはFAISの研究助成金を受けて研究を進めています! 今日はFAISの谷口コーディネーターとミーティングでした。とても貴重なご意見をいただけて,前向きに研究計画を修正することにしました! 「ZEAM開発ログ 目次」はこちら 今までの研究計画について 「micro Elixir / ZEAM ロードマップ(2018年度)」 に書きましたが,今までは次の4段階のロードマップからなる計画でした。 今までの研究計画 |> ロードマップ第1段階: Polymorphic LLVM インラインアセンブラによる型多相・型安全なコード生成 (2018年10月リリース) |> ロードマップ第2段階: Elixir制御構造のサポート (2018年12月リリース) |> ロードマップ第3段階: リスト構造と Enum.map のサポート (2019年1月リリース) |> ロードマ
fukuoka.ex代表のpiacereです 今回もご覧いただいて、ありがとうございます Elixirでdefと末尾再帰を使った、スタンダードなカウンタ付き無限ループのコラムを見たら、Streamでカウンタ付き無限ループを書きたくなったので、書いてみました そういえば、こないだのStream版ズンドコキヨシと言い、ややStream芸人になりつつある… お知らせ:Elixirもくもく会(リモート参加OK、入門トラック有)を今月末に開催します 「fukuoka.ex#14:Elixir/Phoenixもくもく会~入門もあるよ」を9/28(金)に開催します 今回から「Zoomによるリモート参加」を正式に受け付けるようになりましたので、福岡以外の都心や地方からでも参加できます(申し込みいただいたら、追ってZoom URLをconnpassメールでお送りします) また、これまではElixir/Pho
■ ElixirのConcurrent Programmingについてまとめた過去記事 Elixir Concurrent Programming(1) - Spawn - Qiita Elixir Concurrent Programming(2) - GenServer - Qiita Elixir Concurrent Programming(3) - Supervisors - Qiita Elixir Concurrent Programming(4) - Task and Agent -Qiita spawnで作られたプロセスは、tail recursionの中でreceiveを使い、永続的にクライアントからのリクエストを処理を行うことでサーバの役割を実現することができます。さらに recursionにおいて引数としてstateを持たせることも簡単にできます。 しかしもっと簡単
static ERL_NIF_TERM asm_1_nif_bi(ErlNifEnv *env, int argc, const ERL_NIF_TERM argv[]) { if(enif_is_number(env, argv[0])) { printf("is a number\n"); } else { printf("is not a number\n"); } if(enif_is_map(env, argv[0])) { printf("is a map (struct)\n"); } else { printf("is not a map (struct)\n"); } if(enif_is_empty_list(env, argv[0])) { printf("is an empty list\n"); } else { printf("is not an empty l
■ ElixirのConcurrent Programmingについてまとめた過去記事 Elixir Concurrent Programming(1) - Spawn - Qiita Elixir Concurrent Programming(2) - GenServer - Qiita Elixir Concurrent Programming(3) - Supervisors - Qiita Elixir Concurrent Programming(4) - Task and Agent -Qiita ElixirのプログラムはBEAMと呼ばれるVM上で走ります。そしてElixirにはConcurrent Programmingという特徴がありますが、これは特有の軽量プロセス(BEAMプロセス)を使って実現されます。一つのプロセスには基本的に数KBしか必要とされません。またひとつの
前回 またいつかと言っていたPlugの話です。 Plug Plugは、Webアプリケーション間で構成可能なモジュールの仕様です。 …とりあえずgoogle翻訳してみましたけど、良くわかりませんね。 とりあえずこんな理解をしておけば良さそうかと思ってます。 Plug.Connという構造体を通じて処理を行う仕組み Plug.Connを受け取ってPlug.Connを返すという仕組みに則り、処理を組み合わせることが出来る plug HogePlug と書くことで順に実行される 仕組み的な話はいったん置いておきます。 …メタプログラミング勉強しないと。 Function Plug 関数によるPlug。 これまでの例ではRouterに plug HogePlug を書いてたけど、Controllerにも書けます。 Controllerに書くことで、Controller内での共通処理のようなものが実装で
defmodule NifLlvm.MixProject do use Mix.Project def project do [ app: :nif_llvm, version: "0.1.0", elixir: "~> 1.6", compilers: [:nif_llvm] ++ Mix.compilers, start_permanent: Mix.env() == :prod, deps: deps() ] end # Run "mix help compile.app" to learn about applications. def application do [ extra_applications: [:logger] ] end # Run "mix help deps" to learn about dependencies. defp deps do [ {:asm
$ iex Erlang/OTP 21 [erts-10.0] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1] [hipe] Interactive Elixir (1.6.6) - press Ctrl+C to exit (type h() ENTER for help) iex(1)> bs = << 3 :: size(2) >> <<3::size(2)>> iex(2)> is_bitstring(bs) true iex(3)> is_binary(bs) false iex(4)> byte_size(bs) 1 iex(5)> bs = << 0 :: size(2), 1 :: size(2), 2 :: size(2), 3 :: size(2)>> "\e" iex(6)> is_bitstring
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く