原创 Go語法集錦

Go語法集錦(摘自https://github.com/adambard/learnxinyminutes-docs) // 單行註釋 /* 多行 註釋 */ // 導入包的子句在每個源文件的開頭。 // Main比較特殊,

原创 Python-CGI編程

README 搭建Apache環境 Mac 自動Apache環境,調整配置支持cgi、py /etc/apache2/httpd.conf 刪除註釋 LoadModule cgi_module libexec/apache2/mod

原创 Python-XML遠程

README 運行方式 shell1: python client.py urls.txt dir1 http://localhost:4242 > fetch test1.txt Couldn't find the file tes

原创 Go項目結構推薦

概述 隨着項目文件的增長,若項目結構凌亂,團隊協作開發,將加劇項目凌亂程度,維護或查詢信息代價越來越高,因此項目構建初期便構建通用目錄結構變得必要 參考:https://github.com/golang-standards/proj

原创 Go Module實戰測試

go modules 官方提倡的包管理方式(go 1.11增加),乃至項目管理機制,使用go mod管理項目,將可以繞開GO項目必須放置到GOPATH目錄的約束,以下將與大家一起測試 實戰測試 1.新建文件夾 $> mkdir tes

原创 Python-即時標記

README 項目詳情 python基礎編程 第20章 項目1:自動添加標籤 運行 python markup.py < test_input.txt > test_output.html 部分邏輯說明 過濾器 filters 替

原创 初學《Erlang程序設計》兩週感想

初步接觸 剛開始是屬於C/C++這一塊的程序工作,接觸過的語言大多也是偏與面向對象,初步接觸Erlang這樣的函數式編程語言確實有種難以適從的感覺,就比如C++中常見的for循環,在Erlang中卻只能進行尾遞歸或者列表推導纔可以實現,明

原创 Lager進程結構及啓動

整體進程 注: 1.lager_event實際爲gen_event,爲event manager 2.lager_handler_watcher_sup監督進程lager_handler_watcher(gen_server),子

原创 Ejabberd源碼解讀-ejabberd_sm模塊

ejabberd_sm是Ejabberd Session Manager的縮寫,顧名思義是會話管理模塊 ejabberd_sm進程在初始化時會進行一系列相關數據庫(backends)操作,XMPP協議協商校驗完成,ejabberd_c2

原创 Erlang相關Appups/熱更介紹及坑點

Appup 部分命令說明 load_module 簡單代碼替換,針對某功能模塊部分修改,僅需載入新版本即可 {load_module, Module} update 同步代碼替換,針對進程(某個gen_server/gen_fsm/g

原创 XMPP學習10-連接方法

客戶端-服務器(基於TCP)-c2s 初始化連接服務器的TCP ->在TCP上打開一個XML流 ->協商各種流特徵 ->綁定資源 ->交換XML節 具體操作步驟 第一步:打開一個連接到服務器IP地址和端口的TCP連接 第二步:客戶

原创 XMPP學習6.5-MUC協議詳析

MUC基礎 概念 MUC(Multi User Chat),XMPP在其XEP-0045擴展中定義的一個用於多用戶文本會議(羣聊)的協議,類似於互聯網中繼聊天(IRC),提供通道或房間讓大家能互相交流信息,並查看用戶在線情況。 特徵

原创 Ejabberd源碼解讀-ejabberd_hooks模塊

在ejabberd 中,hooks 是很重要的一個模塊,作爲系統hook(鉤子),通過調用ejabberd_hooks:add函數,註冊一系列方法在ets表hook中,爲某些特定事件(event)鉤掛相應的行爲(action),使在事件(

原创 Ejabberd源碼解讀-ejabberd_listener模塊

ejabberd_listener模塊啓動分爲兩部分 1 啓動端口監聽 查看ejabberd_app.erl文件,啓動過程語句 %%%啓動一個supervisor,並啓動和監控定義子進程 Sup = ejabberd_sup:star

原创 Ejabberd啓動梳理及相關文件介紹

啓動流程 ejabberd工程啓動application:start(ejabberd). ejabberd.erl start() -> %%%ejabberd_cover:start(), application: