サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
大谷翔平
joe-noh.hatenablog.com
smarthr.connpass.com 行ってきました。十数人で各々が好きなところから読み始めて、最後に見所や気づきを喋る流れでした。initializersを読んでいく人やモデル中心に見ていく人など様々。近日中に全員のメモが公開されるとのことですので、そのときはリンク追記します。会場を提供してくださったSmartHRさんありがとうございました。 追記 先週金曜の dev\.to コードリーディング会に参加した皆さんのメモはこちらに公開されてますhttps://t.co/uipqG1pYxu— ぷりんたい (@spacepro_be) 2018年8月13日 追記ここまで 以下は自分のメモ。やはりdev.toと言えば爆速なので、CSSをheadタグに埋め込んでいたり、キャッシュってどうやってんだろうなーといったところを中心に読みました。最後の所感にも書きましたが、爆速サイトをつくるためのイ
これ elixirforum.com 課題意識としては、Mixプロジェクトにおけるconfigはアプリケーションが起動するときに読み込まれるけれど、その一方でそれをreleaseビルドするときはコンパイルするときに読み込まれるという違いがあり、混乱のもとになっている、というもの。よくあるのはSystem.get_envで環境変数を読み込む場合で、releaseを動かす環境のものを使ってほしいのに、releaseをビルドした環境のものが使われてしまい、開発中は動いてたのにいざ本番へというところで全然動かない、ということがある。 これをどうやって解決しようか、という話で、提案されているのはconfigのファイルをreleaseの中にコピっちゃおうよ、というもの。ただしそれを行うには問題があって、一般的なMixプロジェクトでは use Mix.Config config :my_app, foo
Vue.js 2系を対象とします。 何がしたいかというと、 <my-great-text-input v-model="text" /> ということがしたい。 とりあえずドキュメントを見ると、以下のような方法が書いてある。 https://jp.vuejs.org/v2/guide/components.html#カスタムイベントを使用したフォーム入力コンポーネント <template> <input type="text" :value="value" @input="updateText"> </template> <script> export default { props: ['value'], methods: { updateText(e) { this.$emit('input', e.target.value) } } } </script> ただ、必ずしもこれしか方法が
昨日 Vector ClockとCRDTsについて調べてるけどまだ上手く説明できない と泣き言を言った後、調べてなんとか書きました。actorの気持ちにはあんまりなってません。 言葉や概念の正確さが不安なので、詳しい方にぜひご教授頂きたいです。 Phoenix.Presence Channelのトピックにプロセスの情報を登録でき、それをクラスタ内のノードにレプリケーションできる仕組み。 動画では、トピックへの接続者の一覧を表示する機能に使用されていた。 単一障害点が無い Single Source of Truthが無い セルフヒーリング という特徴がある。鍵となる技術として、CRDT(ORSWOT)があるとのことなので今回CRDTについて調べている。dockyardのブログに作者が記事を書いている[1]。 問題 ノードn1, n2, n3でクラスタを組んでいるとする。n1にuser1が接
はいコンバンハ。 Gettextっていうモジュールがあるんですが、POTとかPOファイルとか、なんかよくわかんなかったので書いておきます。 できること いわゆるi18n、アプリケーションの国際化ができます。Phoenixアプリ前提にしてしまいますが、例えばHTMLに <h1><%= MyApp.Gettext.gettext "welcome!" %></h1> と書いて、jaロケールのPOファイルには msgid "welcome!" msgstr "ようこそおいでくださいました" enロケールのPOファイルには msgid "welcome!" msgstr "Welcome to My Page!" と書いておくと、ロケールに応じていい感じに歓迎できるというわけです。ロケールの指定は、Gettext.put_locale/2で動的に設定したり、config/config.exs`など
こんにちは。 わたくし、勤め先の有志と社内向けの日報投稿Webサービス、ニポポタマス(通称ニポタマ)をやっています。元々は会社の開発合宿でつくりはじめたものですが、会社のみんなが日々の出来事、書きたいことを書ける場として、また僕ら開発者がやりたいことをいろいろ試せる場として、9月半ばから、ざっくり5ヶ月くらい開発・運用してきました。そろそろ使っている言語やフレームワークについて、どんな感じに使っているのか、また思うことなど書いてみます。 Elixir/Phoenix ニポタマはElixir/PhoenixによるJSON APIサーバをバックエンドとしたSingle PageなWebアプリです。ElixirとPhoenixってなんぞや、という方にはこの動画がおすすめです。 基本的には単にJSONを返すAPIなので、至って普通のPhoenixアプリケーションです。とくにumbrellaプロジェ
※ 多分に推測が含まれています。あとでちゃんと調べないと ※ 今まさに海の向こうではElixir & Phoenix Conf 2016が行われているのですが、インタネッツを通してこんなツイートが流れてきました。 Coming in Phoenix 1.3 #elixirconf @elixirphoenix #myelixirstatus pic.twitter.com/oeq877IOVA— Dorian Karter (@dorian_escplan) 2016年9月1日 他のツイートを探していくと、Phoenix 1.3ではwebディレクトリがlib/my_app/webのようにlib以下へ入るとのこと。 . ├── assets ├── config ├── lib │ └── my_app │ └── web │ ├── channels │ ├── contr
Payment Request APIという仕様の策定が進んでいるという話を聞きまして、ちょっと触ってみました。 あまりコードは書いてないですが、ここに置いてあります。 github.com https://joe-noh.github.io/payment_request_api/でも試せるようにしてあります。108円取られそうになりますが、途中で失敗して中断するようになってます。 できること ECサイトなんかで買い物をするとき、フォームにクレカ番号とか届け先とかを入力すると思いますが、あの辺の情報の入力をブラウザに丸投げできちゃいます。言葉で書くより、以下のページのスクショを眺めたほうが速いと思いますので貼っておきます。 developers.google.com ここではブラウザの画面で説明されていますが、今後はPCはもちろんもっと多様なデバイスで使えるようになって、夢が広がるねとい
やりたいことは表題の通り。結果はGitHubに。 docker まずはDocker for Macをインストール。アイコンかわいい。 docs.docker.com 起動したら適当なイメージを落としとく。 $ docker pull ubuntu:xenial gems 適当なディレクトリを切ってGemfileを作成。 # Gemfile source "https://rubygems.org" gem "itamae" gem "serverspec" gem "docker-api" itamae 知らない間にジェネレータが出来ていたので、それを使って適当なroleを作ってレシピを書く。 $ bundle exec itamae g role sample_role # roles/sample_role/default.rb user "sample_user" Dockerイメー
昨日は遅いと思ったからといってすぐspawnするのはダメとか言っていたけど、もう少し前にやることがあるだろうがオイ、という話。 前々回のエントリで、 こんな遅かったっけ?と思いながらおもむろにspawn と書いた。「こんな遅かったっけ?」と思ったのにその原因を考えなかったのがそもそもの誤り、諸悪の根源。 気づいてしまった 昨日のエントリではユーザ100人に加えてマイクロポスト300個つくりました。そのとき、ユーザはあんなに遅かったのに300個のマイクロポストは爆速で生成されたのですよ。普通に考えればあんなに遅いわけがないのに、「よっしゃ並行処理や」と言ってspawn、spawn。ハー。もう、ね。 遅い原因と対策 なんでユーザの生成に時間がかかるのかというと、ユーザのパスワードをhashするためにcomeoninというライブラリを使っていて、そのbcrypt_log_roundsという設定が
今日はPlugです。 Plugとは まずPlugとはなんぞやというところですが A specification for composable modules in between web applications Connection adapters for different web servers in the Erlang VM だそうです。イメージはRackです。今はCowboyというサーバにのみ対応してます。 導入 $ mix new hoge # mix.exs (一部略) def application do [applications: [:logger, :cowboy, :plug]] end defp deps do [{:cowboy, "~> 1.0"}, {:plug, "~> 0.6"}] end $ mix do deps.get, compile このへ
やったこと 年末に宴会芸みたいなものをやることになり色々と何をやろうかと話し合っていたのですが、どうにもオモシロな方向に振り切れなさそうだね〜となり、エンタメ方向なことをやりました。具体的には、 数名が舞台で踊る 観客には、あるサイトにスマホでアクセスしてもらう 1名(オレ)がスタートボタンを押して、サイトの背景色が次々と変化する 会場の全端末の画面色が同期する(はず) サイリウムみたいに振ってもらう 一体感ヤバイ という算段でした。で、自分の役割としてサイトの制作が割り当てられたというわけです。つくったサイトは以下。 アクセスしてもらうURL: https://flash-light.herokuapp.com 操作数する1名が使う操作画面: https://flash-light.herokuapp.com/controller 前者のURLを複数ウィンドウで開いて、後者画面のテーブル
なにが起きた phoenixのv0.16.0が出たのでガッとアップデートしたら、一緒にphoenix_htmlとかもバージョンが上がりました。動くっしょ〜と何も考えずにいたら、動かなくなってました。 症状は、linkヘルパで作ったリンクの内、GET以外(確認したのはPOSTとDELETE)のリンクが動かなくなってました。クリックしても今いるページの先頭にジャンプするだけ。 どうした link/2はmethodがGET以外のときはformをゴリゴリ生成するのですが、どうやら僕の知らないうちに、phoenix_html.jsというファイルがそのformの動作に必要になっていたらしいです。なのでdeps以下に潜り、deps/phoenix_html/priv/static/phoenix_htmljsをweb/static/vendor辺りにコピって、app.html.eexで読み込んだら動き
Phoenixフレームワークでは、mix phoenix.serverするとデフォルトでbrunchが立ち上がって、 web/staticらへんのファイルを監視してくれます。 とてもありがたいのですが、「え〜、brunch???」と思う方もいらっしゃるでしょう。 そんなときは、おもむろにconfig/dev.exsを開いて、 watchers: [node: ["node_modules/brunch/bin/brunch", "watch"]] こんな行を watchers: [gulp: ["watch"]] とかに変えてみましょう。gulpが立ち上がるはずです。 追記 調べてみたら、タスク定義していろいろやってくれるライブラリがあるっぽいです。1から書くのが面倒なら、使ってみるのもいいかもしれません。 phoenix_gen_webpack phoenix_gen_gulp_jspm
5月のアタマから、だいたい週1回のペースで社内Elixir勉強会をやってきました。 新卒のペーペーですが、ちょっと思うことがあるので、だらだら雑にポエムを垂れ流しておきます。 特に、何か主張したいことがあるわけじゃないです。 ちなみに勉強会の資料はこの辺に上げてあります。 思うこと メリハリ的な 以下の2つは区別が付くように話したほうが良いかなと感じています。 必ず身につけて欲しいこと 知っておくだけで十分なこと もちろん全部身につけてほしいのですが、参加者全員にそれを求めるのは間違いだと思います。なので、あえて「ここは覚えなくていいよ」っていうのを入れておくと、「ここは大事だよ!」っていう部分は目立って印象に残ってくれるんじゃないかな〜と期待しています。最初に「今回のゴール」といったスライドを設けたり、一部「これはオマケ」とかしてます。効果は測れてません。 1回の量 演習を入れて1時間ち
1.0のリリースが近づき、Elixir熱の高まりを感じる今日この頃、皆様いかがお過ごしでしょうか。 本日は、Elixirの特徴の1つであるマクロについて書いておこうと思います。対象読者は、Elixirの文法くらいはなんとなく分かるっていう人かな。 コードを書くコード 公式の解説をなぞって、unlessマクロを見てみます。 defmodule Unless do defmacro macro_unless(clause, expression) do quote do if(!unquote(clause), do: unquote(expression)) end end end require Unless Unless.macro_unless true, IO.puts("Hello") #=> 何も出力されない Unlessモジュールにmacro_unlessを定義しました。これに
GMOペパボ社内で「おいお前らElixirやるぞ!!」なことをしました。 資料はこちら Elixirだ 第1回 - 基礎だ - from Joe_noh 一応社内のエンジニアに届くかたちで呼びかけはしましたが、諸々の都合で急遽開催したので、結果ワタシが同期4人に対して1時間ほど語りかける場になりました。続けていけば、Elixirのプロダクション採用という野望も達成されるのでは…。 喋った人としての感想 今回は誰もElixirを触ったことがないという前提でプレゼンしました。ここまで長く話をするのはほぼ初めてでしたし、"その人が触れたことのないモノを説明する"ということの難しさも知っているので、どういう構成にするか結構考えました。しかしながら、1度にやるには若干量が多く、第2回の内容を考え始めると「もっとココ喋っとかないとダメだったじゃん」と思い始め、多すぎて少なすぎる内容だったなとちょっと反
以上だッッッ!!!!!!1
このページを最初にブックマークしてみませんか?
『joe-noh.hatenablog.com』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く