Skip to content

Instantly share code, notes, and snippets.

View HidetakaKojo's full-sized avatar

Hidetaka Kojo HidetakaKojo

View GitHub Profile
@HidetakaKojo
HidetakaKojo / gist:89c86ded0b84d77322da062c0399abb3
Last active May 17, 2018 04:09
走れメロスで考える自動アニマティクス作成
  • メロスが歩いている
  • 若い衆が歩いている
  • メロス、若い衆と話す
  • 若い衆、話を聞く
  • 立ち去る
  • 若い衆をメロスが見送る
  • 人を探しながら、急ぎ足で道を歩く

キャラクター

Phoenix.Transports.WebSocekt.ws_closeが実行されると
Channel.Serverのそれぞれのpidに対してPhoenix.Channel.Server.close(pid)が呼ばれる
closeはcastでChannelプロセスの後片付けをしていて、
Phoenix.Channel.Server.handle_cast(:close, socket)が実行されて、
{:shutdown, :close}イベントが渡されるhandle_castの返り値に{:stop, {:shutdown, :close}, socket}が戻るので
Phoenix.Channel.Server.terminate({:shutdown, :close}, socket)が呼ばれてChannelが整理される
じゃあPhoenix.Transports.WebSocket.ws_closeは誰が叩いてるんだって話だと、
Phoenix.Endpoint.CowboyWebSocketで、cowboy_websocketのhandler経由.
@HidetakaKojo
HidetakaKojo / gist:a1d1e1e400e9bc0e2c89df4a7a17b393
Created September 12, 2016 06:18
list 操作のperformance

コードはこれ

defmodule Hoge do
  def create_list(num \\ 10), do: 1..num |> Enum.to_list

  def perf1_loop(num \\ 1000) do
  ¦ list = create_list(10)
  ¦ t1 = :erlang.timestamp()
  ¦ Enum.reduce(1..num, list, fn(_i, acc) ->
 ¦ ¦ perf1(acc)
@HidetakaKojo
HidetakaKojo / phoenix_pubsub.md
Last active August 4, 2016 11:34
Phoenix.PubSubを読む

調べたいことは以下...

  1. どのタイミングでsubscribeされるのか
  2. どういう経路でbroadcastからpublishが実行されるのか
  3. channelにjoinした際にどういう挙動でbroadcastに対象になるのか

(なんとなくわかってることもあるけど、再度確認のために)

どのタイミングでsubscribeされるのか

@HidetakaKojo
HidetakaKojo / elixir_basic.md
Last active July 4, 2016 11:17
elixirのdeployとauto scaling

構成検討

  • packaging
    • ansible / exrm
  • release location
    • S3
  • deploy
    • consul + ??

参考資料

@HidetakaKojo
HidetakaKojo / innodb_lock_free.md
Last active February 28, 2019 05:25
innodb(xtradb)の書き込みをロックを減らすためのチューニングポイント