少しLogに関する知見を得たので、 logger_file_backend とか使ってみることにしました。後でちゃんとCustomLoggerの知見を貯めておこう。 経緯 通常、Loggerはconsoleに書き出されます。しかし、そのままではIOが大変ですし、ファイルに書き出したりしていきたいです。そのため、ログをファイル出力する形にしたいなーと考えていました。 CustomLogger ElixirのLogger のドキュメントを少し読んでみると、デフォルトでは :console としてコンソールに結果が出力され、そこからカスタムするときはCustomLoggerを作れるよ、と書いています。 Custom backends を読んでみると、 GenEvent を使ってCustomLoggerを作ることができるのですね。そこで簡単なファイルへ書き出すCustomLoggerを作ろうとは思ったのですが、通常のLoggerの結果をファイルに書き出す、というシンプルなreposirotyを見つけたので、ひとまずはそれを使ってみることにしました。 Logger_file_backend Logger_file_backend https://hex.pm/packages/logger_file_backend https://github.com/onkel-dirtus/logger_file_backend 他に、Erlangのlagerをラップしたexlagerというのもあるのですが、Phoenixと一緒に使う方法とか探しているとElixirに組み込まれているLoggerを操作する系の方が安易だったので見送りました。 exloger https://github.com/khia/exlager 参考 elixir in production from Tsunenori Oohara 導入した時の、サンプルプロジェクトのコミット https://github.com/KazuCocoa/web_qa_vote/commit/035f5cd6e451cd84d5c3e4304cc0853e8ccf0672More
Category Archives: development
[Elixir]tear down in ExUnit as on_exit
teardownを探していたのですが、 ExUnit では、現在はteardownは on_exit のcallbackで実装されています。過去、この形に変更されたのですね。 http://elixir-lang.org/docs/v1.1/ex_unit/ExUnit.Callbacks.html#on_exit/2 使い方は以下。 setup の中で on_exit を定義します。これで、この setup_all や setup と同じサイクルで処理が実施されます。 ちなみに、 shouldi を使った時は上手く動作しなかった… 過去、私も書いていた… MIX AND OTP vol 1More
[Elixir]Release http_proxy support regex matching in request play mode
[Elixir]about parameterized test with Elixir(Eng ver)
Previously, I published support library to do parameterized test with Elixir on hex and WordPress. See here, but it in Japanese. The library is simple macro. So, anyone can use it easily. See readme and docs if you would like to know more hex https://hex.pm/packages/ex_parameterized GitHub https://github.com/KazuCocoa/ex_parameterized Example This file contains hidden or bidirectional Unicode…More
[Elixir]compile timeに決定されるモジュールの定数
Elixirでは以下のように @neko と定義することで、このモジュール内で共通して使える要素を定義できます。最近使い方を誤ってしまったのですが、この値はコンパイル時に決定されるので、それ以降に読まれる値を設定することはできません。 In other words, the value is read at compilation time and not at runtime. As we are going to see, this makes attributes useful to be used as storage during module compilation. http://elixir-lang.org/getting-started/module-attributes.html 例えば、 というような用途では、必ず default が代入されます。 つい忘れていてつまづいたので、メモ…More
[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%20languages こんな感じで起動できます。 ElixirというかErlang自体、こういう数値計算は得意としない領域なのですが、Elixir/Erlangをブラウザ越しに試す、という環境ではかなり使い勝手の良いものです。 🙂 追記: nbviewerを使えば、GitHub上でコードを簡単に共有もできてとても便利に使えます 🙂 (ただ、Elixir/Erlangは未対応です) http://nbviewer.ipython.org/More
[Elixir]Release http_proxy support record/play request
I released http_proxy 0.3.0 which support play/record http request. Now, the library support multiple port proxy and each proxies support play/record request. Hex: https://hex.pm/packages/http_proxy Docs: http://hexdocs.pm/http_proxy/0.3.0/extra-api-reference.html GitHub: https://github.com/KazuCocoa/http_proxyMore
[Elixir]implement binary search with Elixir
ElixirでBinary Searchを実装してみた。メモ。 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 Search do def binary(_, []), do: -1 def binary(search, [head|tail]) when…More
[Swift]XCUITestにおけるCoverageとScreenshotの在り処
XCUITestでは、自動的にスクリーンショットを取得してくれます。それがどこに保存されるか?というと、以下のように Attachments に保存されました。保存されるファイル名に統一感がないのですが、 plist にテストケースとスクショの結びつけを保存しているのですね。テスト結果をXcode以外からうまいこと見ることできないかなーと思ってたのですが、すんなりホイとはできなさそうな感じです。 /Users/user-name/Library/Developer/Xcode/DerivedData/TestProject-randome-values/Logs/Test/Attachments あと、スクショのタイミングを任意なタイミングではできないので画像比較のためにそれを使う、というのには使えなさそうな感じです。んー。テスト失敗した時の参考になる以上ではちょっと使いにくい感じです。 ついでに、XCUITestでも、カバレッジを取得できる模様?ちゃんと計測はしていないのですが、うまいこと使えれば使えそうでした。 そのほか XCUITest、いろいろ調べてみましたが通知のダイアログなどのシステム設定をリセットする手段ないので、ちょっとテストケースの管理に難しさを感じました。 ちなみに、wait/sleepは適度にwaitしてくれるので、さほど気にしすぎなくても良いのですね。 waitUntil のようなメソッドを定義したのですが、それを使うのは限定的になりそう。retryが内包されているのはGUIから操作するテストケースではありですね。Exceptionを出す種類も、 XCTAssert 系以外にもいくつかあったのですが、ここはXCTestの頃からそのまま使っているもののようですね。 このfastlaneのsnapshotも、このXcode7(XCUITest)対応したみたいですね。 https://github.com/fastlane/snapshotMore
[Swift]SwiftでParameterized Test?
Swift2.1でParameterized Testをどう書こうか、と考えた時、以下な感じでできそうに思えたのでメモ。 parametarized() にBlockとデータセットを与えることで、そのBlockの中の要素を全てBlockにて与えた処理を行う 与えるパラメータは、 struct で定義する 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 import XCTest class xctestSampleTests: XCTestCase { //…More