[TIL] docker-compose yaml文件檔案格式問題

快速紀錄一下: 在Windows 的Quick Start Terminal (Toolbox)下,如果git下載 docker-compose.yml下來會無法順利讀到. 原因是unix的文件檔案在Windows底下會無法正確閱讀. (CRLF問題) 解決方式: 參考這篇吧 �[31mERROR�[0m: In file '.\docker-compose.yml' service 'version' doesn't have any configuration options. All top level keys in your docker-compose.yml must map to a dictionary of configuration option 此外,如果很聰明地使用了vagrant來進入ubuntu VM中跑docker-compose.如果不小心把檔案寫到了跟Widows共享的資料夾內,一樣會有相同的問題. 結論: MacOSX/Linux 的Docker最安全… Windows好危險 XDDD
繼續閱讀

[TIL] Vagrant installation and docker installation

起因 想要分享檔案在VM跟電腦,其實VBOX本身有點麻煩.比起VBOX,vagrant反而提供比較簡單的方式. 步驟 //Check vagrant box list vagrant list //init vagrant init ubuntu/trusty64 //update for vagrant shared folder // editing Vagrantfile // --> config.vm.synced_folder "./data", "/vagrant_data" //startup vagrant up //login vagrant ssh //Save bot vagrant package --output BOT_NAME //Install about basic component sudo apt-get install build-essential openssl sudo apt-get install -y pkg-config sudo apt-get install -y libcairo2-dev //Install about docker sudo apt-get update sudo apt-get install apt-transport-https ca-certificates sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D //edit /etc/apt/sources.list.d/docker.list // deb https://apt.dockerproject.org/repo ubuntu-wily main sudo apt-get update sudo apt-get purge lxc-docker sudo apt-cache policy docker-engine sudo apt-get install docker-engine sudo service docker start //Docker-compose curl -L https://github.com/docker/compose/releases/download/1.6.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose //Docker-machine curl -L https://github.com/docker/machine/releases/download/v0.6.0/docker-machine-`uname -s`-`uname -m` > /usr/local/bin/docker-machine && \ chmod +x /usr/local/bin/docker-machine //Install npm curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash - sudo apt-get install -y nodejs sudo apt-get update sudo apt-get install nodejs-legacy sudo apt-get install...
繼續閱讀

程式設計週記[2016/03/18]:AlphaGo的勝利代表機器學習對於選擇這件事情已經更加熟練

這是什麼? 程式週記主要內容如下: Gihub project 介紹: 主要會貼一些github,但是會盡量寫上一些有用的評語(或是我容易想到的關鍵詞)幫助以後查詢 網路文章心得: 會寫些心得,強迫自己閱讀. “程式週記”並且定期週期性更新. 大部分內容在我的twitter都會有,這邊只是將一些簡單的心得與感想註解一下. 本週摘要 本週依舊圍繞在AlphaGo與機器學習上,不過工作上的長官給了我很好的學習方向. 對於新的事物,我們只要搞懂三件事情(不論你有沒有興趣) 為何以前做不到? 以前的困難是什麼? 這一次做到的原因是什麼? 突破點是什麼? 對於相關技術未來的展望? 這個禮拜花了不少時間先思考該如何寫專案,確定好整個方向與架構後才開始動手.想不到卻相當的迅速. Go A very minimal but flexible golang web application framework, providing a robust set of features for building single & multi-page, web applications. http://kataras.github.io/iris/ minimal but flexible golang web application framework for #golang, and the performance benchmark is perfect Official golang implementation of the Ethereum protocol http://ethereum.github.io/go-ethereum/ 類似於blockchain的系統(我不是很確定該用哪種名稱來統稱這種系統). groupcache is a caching and cache-filling library, intended as a replacement for memcached in many cases. groupcache is a caching and cache-filling library, intended as a replacement for memcached in many cases. 類似於memcached,可以透過key來cache資料. Python Flappy Bird hack using Deep Reinforcement Learning (Deep Q-learning). 用Tensorflow (深度學習) 玩#FalppyBird 聽說可以玩360關 AlphaGo: A replication of DeepMind’s 2016 Nature publication, “Mastering the game of Go with deep neural networks and tree search,” details of which can be found on their website. 使用Python 建立的AlphaGo Deep Learning Engine. Ruby jekyll-now:...
繼續閱讀

[TIL] About Go template usage

起因 想要試著寫RSS render,其實並沒有那麼困難. 步驟 先建立一個 tmpl file (ex: atom.tmpl) <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> <channel> <title></title> <link></link> <atom:link href="" rel="self" type="application/rss+xml" /> <description></description> <pubDate></pubDate> <lastBuildDate></lastBuildDate> <item> <title></title> <description></description> <pubDate></pubDate> <guid></guid> <link></link> </item> </channel> </rss> 然後再Code裡面,去使用html/template func AtomRender() string { var r SomeStuct //讀入template t, err := template.ParseFiles("atom.tmpl") if err != nil { log.Fatal(err) } // log.Println("parse template") //產生io.writer buffer buf := new(bytes.Buffer) //讀取資料 err = t.Execute(buf, r) // log.Println("execute it") if err != nil { log.Fatal(err) } // log.Println("get rss:", buf.String()) return buf.String() } 雷 ”+”, “-“ charactor handle 想要在html 裡面parse +或是-,可別直接當成string. //定義成 template.HTML RssNow template.HTML // t.RssNow = template.HTML(SomeString) 跟RFC822對於W3C Feed Validator的問題 問題: Hi All, I trying to write a feed render and I found the time.Format(time.RFC822) is not valid by W3C feed validator . Here is the code http://play.golang.org/p/mfzLKsuVOW Not sure if it is a issue, or I misunderstanding. 得到解答: try time.RFC1123.seems to be close enough –> RFC1123 seems much...
繼續閱讀

[TIL] 為何圍棋AlphaGo贏了人類有那麼重要?

前提: 要跟部門大長官開會前,他提到了目前受歡迎的AlphaGo事件.提醒我們對於新聞事件的思考邏輯應該是? 這個新科技是什麼? 為什麼之前做不到? 這次的突破點是什麼? 之後有可能的路是什麼? 這個思考脈絡很能夠引發對於科技更深一步的思考,於是找了一些資料試著把這件事情搞清楚. 裡面有幾個前提是: 我並不會下圍棋 主要參考文章是 “尹相志Allan’s blog- 淺談Alpha Go所涉及的深度學習技術”,還有幾篇相關的論文. 幾個可能的Q&A: 為何電腦下圍棋很難? 因為圍棋可能性是19X19格子,共有361個落子點.所以計算出來需要10的121次方.. (遠遠大過古代宇宙原子說 10的75次方) 以西洋棋(比較簡單)來說40個分支,20步就算是1GHz的處理器,也要計算3486528500050735年. 所以就知道電腦要下圍棋在之前是不行的. 為何AlphaGo 這次能贏? 突破點是什麼? Machine Learning 的突破點 Deep Learning突破點 2006 的是「A fast learning algorithm for deep belief nets」類神經網路的亂數權重不是隨機,而是經過計算.如此一來可以透過計算的權重刪減掉許多的子樹,大幅度地減少類神經網路的尋找解答的範圍. 之前下西洋棋的”深藍”取決法是透過MinMax(也就是透過賽局理論)來選取最好的下法跟Alpha-Beta Pruning 來刪除不必要的搜尋路徑(不會勝利的選擇). AlphaGo 如何獲勝 而AlphaGo 思考模式.. 兩個類神經網路(人家稱為兩個大腦)(Policy Network, Value Network) Policy Network(策略類神經網路): 猜測對方落子的機率.是一種大量輸入棋譜的監督式學習(透過猜測,並且給予解答認證). 由於透過整體形勢來做預測,亂下是無法打亂電腦的計算. 透過增強策略網路(兩兩對戰,增加預測機率),減少誤判. Value Network (評價網路): 評估目前局勢,找出如何下會取得比較高的勝率. 最後的拼圖,蒙地卡羅搜尋樹: 選取: 隨機挑選一個結果(由於兩個大腦挑選過,可挑選的分支變得可以計算). 展開: 透過剛剛開始的結果,推導接下來棋局. 評估: 計算這次推導結果(樹的搜尋結果) 倒傳導: 挑選最佳結果後,將結果回傳到一開始,然後繼續之後的計算. AlphaGo贏了.. 接下來代表著什麼? 這部分留著繼續思考…. 參考資料: “尹相志Allan’s blog- 淺談Alpha Go所涉及的深度學習技術” 2006: A fast learning algorithm for deep belief nets Wiki: MinMax Wiki: Alpha-Beta Pruning Wiki: Monte Carlo method
繼續閱讀

[TIL]關於BlockChain的學習整理

前提: 主要是在Line上面的討論,有人覺得像是Bitcoin中blockchain把資料全部分散放在各個client裡面是很不好的做法.這樣所有資料都redundancy. 於是再把一些相關spec拿出來看.. 快速整理一下.. Blockchain 架構速記: Bitcoin 最好的 blockchain 1.0 應用 喧賓奪主的應用,大概非Bitcoin莫屬. 沒太多人(一般民眾)注意到blockchain的精髓. 只記得這個應用.. 不過隨著幾個大廠商(ex: IBM) 也在開發自己的blockchain 應用. 這一塊早已在新創產業不是話題了… bitcoin 被稱為是blockchain 1.0的應用,而現階段在新創產業與一些大公司在推廣的就稱為是blockchain 2.0 (smart contract) . 簡單架構 Bitcoin wallet: 一個記錄所有交易紀錄(以下皆成為block)的資料庫(使用Google LevelDB) 每筆交易紀錄(block)平均大小是250bytes,其格式包括了: Block Size: 4 bytes, 來敘述block大小. Block Header: 80 bytes, Block header 包括 version, previous hash, timestamp.. (還有其他的) Transaction Counter: 1~9 bytes (可變) 有多少交易在這個block. Variable: 大小不定, 交易內容.. 每筆記錄(block)與前一筆是串接在一起的(ordering),透過Hash value作為唯一的識別(using SHA256). Bitcoin miner: (所謂的挖礦機) 負責尋找最新的block hash value,並且確保該hash value 還沒有被產生過. 產生block會先加在最後,並且獲得一定的bitcoin作為獎勵.由於SHA256有其限制,所以能產生的bitcoin被限制在21000k bitcoin. 取得新的Hash後,需要以下的兩者擇一成真,才能獲的bitcoin: 取得大多數的wallet的同意(大於1/2 的 computing power) 連續取得6個新的Hash (表示你的機器速度大於全世界的miner六倍以上) Bitcoin的特性與展望: 特性: 去中心化 安全(透過其他P2P的審議機制) 所有端點會記錄大部分資料(或全部資料) 未來展望: 除了金流的bitcoin之外,可能有以下的應用: 電子簽約(Smart Contract) 將所有的簽約內容當成錢幣來存放,所有相關人都必須存放所有內容. 存放雙方資料,商品名稱與單位量. 挑戰: 如何計算營收? 如何避免透露過多商業資訊? 證券交割 將股票單位作為blockchain 交易的單位. 遊戲幣 這邊沒有太多特別地方,就是把遊戲中的貨幣改成透過blockchain.可以讓民眾私下交易遊戲幣. 專利與商品證明 bitproof.io 想到透過blockchain來保護智慧財產權.他可以透過檔案(將你的專利或是文章作成檔案後,上傳來取得特定的標記),透過該標記來證明你是第一版的擁有者. 其他: 朋友在討論中談到: “Blockchain 機制會造成資料的重複嗎?” 經過我尋找,一些資料如下 每筆交易資料 平均是 250 bytes (包含多筆交易資料) 平均每筆交易資料為 26 bytes (參考bitcoin wiki) 透過Google LevelDB 大小會被壓縮.. 其實儲存可能不會超過一半以上,因為機制上只要一半以上通過就可以. 不過當網路順暢時還是會儲存全部. 相關鏈結: Google LevelDB How bitcoin use LevelDB 押宝比特币?错,IBM看重的只是Blockchain未来 Amazon Book: Mastering Bitcoin: Unlocking Digital Cryptocurrencies bitproof.io透過bitcoin的專利機制 Bitcoin Wiki: Transaction
繼續閱讀