Erlang/Elixir精選-第1期

第1期(20191202)

文章

  1. A short guide to the structure and internals of the Erlang distributed messaging facility.
    Erlang分佈式啓動流程源碼閱讀指南:
    • 節點啓動時通過epmd互相發現彼此。
    • net_kernel啓動tcp建立穩定的長連接流程,handshake,setnode,set_cookie。
    • 節點間發消息使用的數據格式external term format。
  2. How to opens an ssh tunnel to connect to a remote Erlang VM via Observer.

    觀察節點想啓動observer觀測其它節點,觀察節點只有ssh的網絡權限,其它端口不通,
    可以使用把epmd的端口映射ssh代理隧道上,來實現節點通信。
    更進一步,可以研究一下SSHEX如何通過Erlang自帶的ssh庫來實現功能的。

  3. How to evaluate a string of code in Erlang at runtime.

    Erlang作爲動態語言的絕佳優勢就是可以運行時才parse/eval輸入的字符串,
    這也是Erlang Shell運行的基本原理。大部分人都幻想過在瀏覽器裏面運行來
    Erlang Shell,實現控制管理後臺。
    比如這個:TryErlang。可以嘗試,但一定要注意如何限制權限。防止被人hack後直接init:stop/0

  4. Ten Years of Erlang.

    Learn You Some Erlang_作者Fred總結了加入Erlang社區10年的變化。附譯文

  5. Monitoring Erlang Atoms.

    原子是不會垃圾回收的,當原子個數達到最大時(默認爲1048576),節點會直接crash。
    由於舊版的OTP不能直接得到atom數量,所以文中需要間接通過erlang:system_info(info)來做。

    在新版OTP中可以直接使用erlang:system_info(atom_limit)和erlang:system_info(atom_count)
    得到最大值和當前值。

$ erl
Erlang/OTP 20 [erts-9.0] [source] [64-bit] ...
1> [list_to_atom(integer_to_list(I)) 
   || I <- lists:seq(1, erlang:system_info(atom_limit))].
no more index entries in atom_tab (max=1048576)
Crash dump is being written to: erl_crash.dump...done

代碼

Hexadecimal字符轉二進制

1> Hexs = ["FF","AC","01"].
2> << <<(list_to_integer(C,16)):8>> || C <- Hexs >>.
<<255,172,1>>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章