Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
PhoenixFrameworkとフロントエンドフレームワークを併用している場合、 mix phoenix.gen.jsonでAPI作成してフロントからAjaxリクエストしてJSONを取得するという使い方をするのが主だと思います。 本記事はそんなAjaxリクエストに対して「ある条件の時にエラーを返したい・・・」となった時のTipsになります。 やり方 Ajaxリクエストでは特定のHTTPステータスコードが返ってきた場合にエラーになります。 どのHTTPステータスコードがエラーになるかは以下が参考になります。 jQueryのajaxが,HTTPステータスコードの何番がsuccessで,何番がerrorなのか調べました ということはPhoenix側でエラーになるHTTPステータスコードを送ってあげればよいのです。 それではまずはmix phoenix.gen.jsonで生成されたコントローラを
Goal .ezファイルを作成して、"mix archive.install"する。 Dev-Environment OS: Windows8.1 Erlang: Eshell V6.4, OTP-Version 17.5 Elixir: v1.0.5 Wait a minute カスタムタスクを作成した後、そのプロジェクト内もしくはダウンロードしたプロジェクトでしか使えないのは不便ですね。 mixが使えれば、どこからでも呼べるコマンドにしたいですね。 具体的には、"archive.install"でezファイルをインストールして、 mixコマンドからどのディレクトリにいても呼べるようにしたいです。 というわけで、やっていきましょう!! Index mix archive.build |> Preparation |> mix archive.build |> Extra Preparat
WebSocket を利用するアプリケーションは Pub/Sub サーバを使ってスケールアウトさせるのが一般的です。 今回は Redis の Pub/Sub 機能を使って Phoenix の WebSocket をスケールアウトさせてみます。 Phoenix で WebSocket 通信をさせる方法はコチラをご参照ください。 事前知識: WebSocket アプリケーションのスケールアウトについて 通常の Web アプリケーションにおけるスケールアウトは、サーバ台数を増やしてロードバランサでリクエストを分散させる、というのが一般的ですが、WebSocket アプリケーションではこの手法が使えません。 なぜかというと、WebSocket アプリケーションはコネクションをサーバ内で管理するステートフルな作りになっているためです。冗長化させたサーバにリクエストを分散させてしまうと、他サーバで接続
Phoenix には Ecto と呼ばれるデータベース操作ライブラリがあり、PostgreSQL や MySQL(MariaDB)、SQLite といったものに対応しています。 Ecto を使うと定義したモデルを元に簡単に(SQL を書かずに)CRUD 操作ができるようなのですが、今回はあえて生の SQL を発行して MariaDB に問い合わせることをしたいと思います。 Phoenix アプリケーションの作成についてはコチラを参照してください。 なぜ生 SQL なのか Ecto はモデル定義さえすれば、それを使った CRUD 操作やテーブルの作成、果ては JSON API や HTML までも生成してくれる優れものです。 ただ、自分の経験上、DB 操作を伴う大規模な WebAPI を開発していくと、以下のようなケースに遭遇し、どうしても生 SQL を書きたくなることが多いです。 レコード
Qiita API v2 用の Elixir クライアント QiitaEx を公開したので、簡単な使い方、悩んだこと、ハマったことなどについて書きます。 作った理由 Qiita API v2 Hackathon が明日開催されます。参加したかったのですが都合がつかない。でも遠くからでも、雰囲気だけでも参加したい。ということで一人で一週間くらいチマチマと Qiita Hackathon して作りました。 それと去年も Elixir で Qiita API 作ろうとしたけど、途中で断念しちゃってたのでリベンジという意味もあります。 Output ということで Qiita Hackathon で作ったものは以下に公開してあります。 Hex: https://hex.pm/packages/qiita_ex GitHub: https://github.com/ma2gedev/qiita_ex
Phoenix に Cache 機構をいれてみます。 今回は ConCache を使って OpenWeatherMap API のレスポンスをキャッシュしてみます。 Phoenix アプリケーションでの外部 API リクエストについてはコチラを参照してください。 Elixir におけるキャッシュについて キャッシュ機構の実装というと、シングルトンクラスを作って処理することをイメージするかもしれませんが、これは オブジェクト指向 な考え方であり、Elixir のような プロセス指向 な言語には当てはめられません。 プロセス指向では、その名の通り データをストアしておくプロセス を作成して処理します。プロセスの作成と聞くとなにやら大変そうな気がしますが、Erlang/OTP のおかげでシンプルに実装できるようになっています。 では早速、ConCache を利用してプロセスを用いたキャッシュを体
Phoenix で OAuth 認証をやってみます。 今回は GitHub の OAuth を使いますが、Twitter や Facebook といったものにもつかえると思います。 また、認証用ライブラリはコチラを利用します。実装はこちらに公開されているサンプルを追っていくカタチとなります。 Phoenix アプリケーションの作成についてはコチラをご参照ください。 下準備: GitHub アプリケーションを登録する まずは GitHub にアプリケーションを登録して、各種キーを手に入れます。 GitHub にログインした状態で登録ページに行き、フォームを埋めていきます。 今回はテスト用のアプリケーションなので、基本的には適当に埋めていけば良いのですが、callback URL だけ以下のように設定します。 http://localhost:4000/auth/callback Regist
phoenixとは、elixirで実装されたWeb framework Getting Startedを進めていくと、いろいろと学べるはず Adding pagesで新しくページを追加するところまでを学んでいるうちに、Postリクエストを処理する内容に寄り道したのでメモを残しておく ルーティング 基本はmethod "path", Controller, :action_nameをweb/router.exに設定していく resourcesを使うと、GET / POST / PUT / DELETEをまとめてルーティングしてくれたりする defmodule HelloPhoenix.Router do use HelloPhoenix.Web, :router pipeline :browser do plug :accepts, ["html"] plug :fetch_session
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 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と話をする例が出てきます。 ちょ
結論 mix compileは複数のcompile.*タスクから成る。 自前のcompile.hogehogeタスクもcompileタスクに組み込むことができる。 コンパイルのタイミングはmix.exsで指定する。 Code.require_file "lib/mix/tasks/compile.hogehoge.ex" defmodule MyAwesomeApp.Mixfile do use Mix.Project def project do [app: :my_awesome_app, version: "0.0.1", elixir: "~> 1.0", compilers: [:hogehoge, :elixir, :app], deps: deps] end # 略 end 説明 何したい 例えばNIFなど、Cで書いた関数を使うElixirモジュールを作りたいとする。そのEl
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.
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く