[Elixir]timestamp in Ecto2.1

Ecto2.1が着々とrcとして改修されていますね。 この中で、Calendar typeの導入が書かれています。 defaultでは、従来は timestamp() などの Ecto.Scheme に設定する値には Ecto.DateTime が格納されていたのですが、ここがデフォルトで NaiveDateTime になるよう。これにより、このSchemeを使っているところは基本的に NativeDateTime でEctoから今まで Ecto.DateTime で受け取っていた時間を扱う必要がありますね。 Ecto.DateTime とかはEcto2.2で完全に削除されるそうな。 https://github.com/elixir-ecto/ecto/blob/e3077b99c24086d5b93580228b1daa6bb0ee0b5a/CHANGELOG.md#integration-with-elixir-13-calendar-types Schemeの設定としては以下になるそうですね。(ここの @timestamps_opts より。) ちなみに、これが導入PR https://github.com/elixir-ecto/ecto/commit/12d67912ddddb39ff79cb53d3098569cb427b521 ~N[] のsigilとか使われてて、個人的には Map だけで表現されるより読みやすくなった。More

[Appium]preventWDAAttachments for XCUITest strategy

Appium1.6.2から、 preventWDAAttachments というパラメータが付与されました。 これは、WebDriverAgentを動作させるときにXcodeのDerivedDataに多くの不要なファイルを書き込むことを抑制するために、そのディレクトリの権限を読み込み専用(555)に変更させるものみたいです。 defaultはtrueのようですね。 https://github.com/appium/appium-xcuitest-driver/blob/0c36c7659373c1c82a1411e50fa2503920909624/lib/desired-caps.js#L45 ただ、これはXcodeの権限設定を一部変更することになるので、capsには明記しておいたほうが良さそう。More

[UX]HEART Framework

GoogleのUXの話で、HEARTというフレームワークを見つけました。 http://www.appcues.com/blog/google-improves-user-experience-with-heart-framework/ この記事には、HEARTの中身である以下と、それぞれに対して実例を交えながらどういうものがそれぞれの要素に該当するのか、を説明しています。 name description how to measure Happiness: satisfaction, likelihood of recommendation / via user surveys User surveys Engagement: how much an average user is using your product (by time, sessions, etc) Analytics Adoption: the percent of users that adopt your product after signing up (user onboarding), and/or the percent of users that adopt…More

[Elixir]handle_infoとreply

GenServerなんかにある handle_info/2 の使い方をど忘れしてしまったので、メモ。 自身のブログを検索すると、 [Elixir in Action]OTP/GenServerを学んで非同期/並行処理を学ぶ にすでにメモってたのですが。 以下のような簡単なコールバックを実装し、スクリプトを実行してみます。 まずはGrnServerを持つプロセスを生成します。そのあと、 call や cast で定義されていないメッセージを send してあげると、ここでは handle_info/2 に拾われて処理を行います。 少し話がそれて、非同期通信の時に何らかの処理を終えた時に通知を受け取りたい場合、そういえば以下のように reply/2 を使って処理を非同期にプロセスに投げることできるのでしたね。上に貼ったリンク先を読み直してて思い出した… handle_infoも使うと、以下の通りにも書くことができる、と。 ここの、GenServerのドキュメントにも載っているやり方です。More

Read Advanced-Test-Automation-Engineer-Syllabus

ソフトウェアテスト/品質界隈だとISTQBやJSTQBは耳にする機会が比較的多いのではないでしょうか。 その中で、以下のようにadvances test automation engineerのシラバスが公開されていたので読んでみました。ジックリとではないのですが、流してどのようなことが書かれているのかをざっと。 http://www.istqb.org/downloads/category/48-advanced-level-test-automation-engineer-documents.html 内容はテスト自動化の話をテストケースの話から実装時の設計の話、実行、レポートの話までと順に書いていました。実装時の設計のところらへんで、データ駆動とかキーワード駆動、プロセス駆動などの話があったりしました。 ざっと見た感じ、開発者からテスト側によっている人の方が読みやすい(想像しやすい)のかなーと思いました。More

[WebDriver]WebDriver and Mobile JSON Wire Protocol Specification and Appium

I investigated some feature regarding with Selenium3 and associated with it. So, I put some memos I found here. PR for appium_lib to use webdriver-selenium 3.0 in the library https://github.com/appium/ruby_lib/pull/383 Appium server’s routes are: https://github.com/appium/appium-base-driver https://github.com/appium/appium-base-driver/blob/master/lib/mjsonwp/routes.js The routes are based on the following spec: https://github.com/SeleniumHQ/mobile-spec/blob/master/spec-draft.md This spec differs from W3C. So, webdriver-selenium 3.0‘s some commands…More

Read “言語変化という問題――共時態、通時態、歴史”

言語変化という問題――共時態、通時態、歴史を読んだ。 これは教授がおすすめしていいて、言語変化をソフトウェア開発の変化に置き換えた時に良い示唆を与えてくれると仰っていたためです。なので、読んでみようかなと。 言語はなぜ変化するのかという問い自体、言語には本来そなわった安定性があるのに、生成発展がそれを乱し、破壊すらしてしまうのだと言いたげである。 > p19 言語が変化することをおかしい、というのであれば、言語は変化しない絶対的なものである必要がある。という仮定を幾つかの視点から紐解いていくことから始まります。例えば、機能的に言語を理解するのであれば、言語は体系であるから機能する、ではなく、機能を遂行するためにある目的に応じるために体系をなしているとみなすことができる、というような紐解きです。 言語の比較により、ある言語がそれとは別の言語に対して云々と言えるようなことも、自身がほかの言語に対して知ることにより産まれる疑惑です。そのため、例えばフランス人はロシア語を知っててもない限り、自分が別の仕方で考えることができるとは思いもかけない、という状態になります。 ソフトウェア開発においても、おかなくても大体同じだと思うのですが、自分の外側を知らないと井戸の中の蛙のような状態になりますし、それより良い/悪いと比較することもできない、ということですね。言語学でもそういう分析がされていたとは。 その中で、言語に対して通時態と共時態に関して分析した内容がありました。これはソシュールが使った考え方で、時間という概念を元に言語を分析した区分になります。 通時態(diachrony, diachronic: 通時的)とは、時間の流れに沿って変化していく言語の側面を言います。共時態(synchrony, synchronic: 共時的)とは、常に変化している時間の流れの一時点を抜き出してみた側面を言います。つまり、微分が共時態、積分が通時態のようなものですね。言語学には、これらを元に時の変化に伴う言語の変化を研究する通時態の学問、時間を軸に特定の言語の構造や体型を研究する共時態の学問が存在する、と。 また、記述されたものも同じ。記述された内容は、そのある時点での内容なので、連続した事象のある時点でのことでる、ということを忘れてはいけないですね。書籍に書かれたものや、資料に書かれたものは今でも有効なのか、変化しているのか、とかとか。そういうところはとても注意が必要な概念。 言語学は法則科学になる必要はない。それは対象の本性がそうなることを禁じているから法則科学になることができない。人間諸科学は物理的諸科学に比べてある種の厳密さ以上の厳密さに憧れてない。 > P、343より こう考えると、ソフトウェア開発のWFやAgileの話と似通っているところがありますね。また、それらをまとめた書籍もしかり。そして、品質というものを考えた時、従来のものは共時的品質(synchronic quality)、時間経過による変化を前提とした品質を通時的品質(diachronic quality)と呼ぶ、のも面白そうです。 詳しく内容を理解するには言語学に対する専門性が足りなくて難しい(覚えないことが多い)ので流し読みに徹したところもありますが、全体的に言語の流れは様々な変化に対する話にとって参考になる面が多そうです。 頭を使った…More

[Elixir]Registerを覗く

key-value processとしてElixir1.4に入れる予定の Register というものが公開されました。 https://github.com/elixir-lang/registry 付属のベンチマークによると、以下のように高い性能が出ていることがわかります。 the result of https://github.com/elixir-lang/registry/blob/master/bench/ MacBook Pro (Retina, 15-inch, Late 2013) OS: Mac OS 10.11.6 processor: 2.6 GHz Intel Core i7 memory: 16 GB 1600 MHz DDR3 Erlang/OTP 18 $ TASKS=8 MIX_ENV=bench mix run bench/erlang.exs {835251, :ok} $ TASKS=8 MIX_ENV=bench mix run bench/gproc.exs {732408, :ok} $ TASKS=8 MIX_ENV=bench mix run…More

learning Rx

Reactiveを再度ざっと振り返るために、以下のlearnrxをやった。 http://reactivex.io/learnrx/ map や filter 、 reduce や take など、Elixirを学んだりしていると自然と学んだものだった。 Reactive、非同期通信とか扱いやすいけれどやっぱり使いすぎるとコールバックばかりでテストコードを書くことが大味になるし、使うのは適度が良さそう。More