DDlog is a bottom-up, incremental, in-memory, typed Datalog engine. It is well suited for writing programs that incrementally update their output in response to input changeshtml
DDlog是一種自底向上,增量式,基於內存的類型化Datalog引擎,它很是適合編寫響應輸入更改而增量更新其輸出的程序。目前官方說明文檔介紹的安裝方式,只在Linux和maxOS上通過了驗證,未介紹Windows平臺下運行環境搭建的方法。最近由於學習須要,本身在Liunx(Ubuntu 18.04) 系統下,通過一番折騰,終於把編譯運行環境搞定,這裏作個記錄。python
主要依賴Haskell 編譯環境和對應的stack管理工具,以及rust編譯環境github
推薦方案:electron-ssr 訪問外網 + 執行官方安裝腳本。若是不能訪問外網,能夠考慮修改安裝腳本,將下載源改爲 tuna 源或 ustc 源,可是考慮到編譯運行環境的依賴關係較爲複雜,此方法若非萬不得已,仍是不要用了,費時費力,浪費感情!(良心建議~)segmentfault
1. 配置、使用electron-ssr後端
因爲 electron-ssr 開源項目的做者刪除了該項目github主頁的內容,因此使用搜索引擎時,能夠考慮從一些用戶備份的github倉庫下載,Ubuntu系統能夠選擇deb 或 AppImage 格式的安裝包。瀏覽器
electron-ssr下載地址: https://github.com/qingshuisiyuan/electron-ssr-backup/releases服務器
AppImage格式的安裝包,使用 chmod a+x electron-ssr.AppImage 命令授予運行權限,而後運行 /electron-ssr.AppImage 命令,便可執行客戶端。根據引導,配置服務器節點,和小飛機同樣。網絡
因爲electron-ssr採用Python腳本做爲後端,因此在啓動electron-ssr以前,要確保Python環境配置好。若是python環境沒配好,執行electron不會報錯,可是使用 netstat -lntp 查看,會發現代理端口沒有被打開(使用netstat -lntp命令以前要先安裝net-tools安裝包)。框架
在終端下檢查python命令是否存在,若是python命令不存在,而python3命令存在,能夠執行 sudo ln /usr/bin/python3 /usr/bin/python 命令,用一個軟連接把python3 連接到 python 上,這樣系統查找 python的時候,就直接可使用python3了;若是python3命令也沒有,就證實系統沒有任何python環境,需手動安裝。
electron-ssr環境配置好後,在瀏覽器(Ubuntu默認是Firefox)搜索殷勤搜索"ip"關鍵詞,便可查看本機IP服務商的位置,以下圖所示
若IP服務商的位置還是本地,須要進一步對瀏覽器配置網絡代理,在首選項-> 網絡設置中配置結果以下,隨後應該就能正常使用瀏覽器上外網。
而咱們在終端使用腳本安裝,須要在終端使用代理,可使用 export http_proxy="IP:PORT" 方式對當前終端設置代理,其中代理信息IP:PORT在小飛機的菜單欄能夠找到,而後使用 curl www.google.com 命令,檢查終端可否成功使用代理。
2. 使用官方安裝腳原本配置編譯運行環境
安裝腳本是項目倉庫中的一部分,所以首先須要將項目下載到本地,強烈建議使用 git clone 方式,而非下載壓縮包方式,後續在build過程當中,會檢查項目目錄中的git信息,若是是以壓縮包方式下載,process 29 會build失敗。
項目文件比較大,git clone 過程發生 RPC failed; curl 56 GnuTLS recv error (-9): A TLS packet with unexpected length 錯誤;
參考解決辦法:https://blog.csdn.net/qq_34121797/article/details/79561110?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task
解決了網絡問題,親測後面的安裝過程較爲順利!爲了加快stack的下載速度,能夠修改鏡像源爲中科大或者清華大學,詳見 http://mirrors.ustc.edu.cn/help/stackage.html
3,使用ddlog
編寫一個playpen.dl的sample, 官方文檔介紹了兩種測試方式,可是親測以後,發現使用 stack test --ta '-p playpen
測試框架依然會遇到網絡訪問問題,不要慌,前面的努力沒白費,使用 ddlog -i playpen.dl -L../../lib 是能夠順利編譯的,但願到了這一步的童靴不要放棄啊!(能倒騰到這一步的,我反正血槽已幹…)
最後,就是萬事具有,只剩寫代碼了,頭禿啊!
參考連接
https://zhuanlan.zhihu.com/p/31635905
http://abloz.com/tech/2019/08/19/rust-install-cn/
https://segmentfault.com/a/1190000016475279