<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>code on 戲中話</title><link>https://blog.iphpo.com/tags/code/</link><description>Recent content in code on 戲中話</description><generator>Hugo</generator><language>zh-tw</language><managingEditor>herb09638@gmail.com (Herb)</managingEditor><webMaster>herb09638@gmail.com (Herb)</webMaster><lastBuildDate>Sun, 31 Dec 2017 00:00:00 +0800</lastBuildDate><atom:link href="https://blog.iphpo.com/tags/code/index.xml" rel="self" type="application/rss+xml"/><item><title>PHP7.2 新特性 新功能</title><link>https://blog.iphpo.com/blog/2017/12/php7-2-%E6%96%B0%E7%89%B9%E6%80%A7-%E6%96%B0%E5%8A%9F%E8%83%BD-php72-new-feature/</link><pubDate>Sun, 31 Dec 2017 00:00:00 +0800</pubDate><author>herb09638@gmail.com (Herb)</author><guid>https://blog.iphpo.com/blog/2017/12/php7-2-%E6%96%B0%E7%89%B9%E6%80%A7-%E6%96%B0%E5%8A%9F%E8%83%BD-php72-new-feature/</guid><description>&lt;p&gt;PHP 7.2 在 2017年十一月30號釋出了&lt;/p&gt;
&lt;p&gt;趕緊用 phpbrew 裝在 Mac 上測試玩玩&lt;/p&gt;
&lt;p&gt;來看看有哪些新功能吧&lt;/p&gt;</description></item><item><title>Golang 用 goroutine 減少大量檔案讀取時間</title><link>https://blog.iphpo.com/blog/2017/12/golang-%E7%94%A8-goroutine-%E6%B8%9B%E5%B0%91%E5%A4%A7%E9%87%8F%E6%AA%94%E6%A1%88%E8%AE%80%E5%8F%96%E6%99%82%E9%96%93/</link><pubDate>Sat, 30 Dec 2017 00:00:00 +0800</pubDate><author>herb09638@gmail.com (Herb)</author><guid>https://blog.iphpo.com/blog/2017/12/golang-%E7%94%A8-goroutine-%E6%B8%9B%E5%B0%91%E5%A4%A7%E9%87%8F%E6%AA%94%E6%A1%88%E8%AE%80%E5%8F%96%E6%99%82%E9%96%93/</guid><description>&lt;p&gt;之前做了一個可以掃描多資料夾下檔案變動的程式&lt;/p&gt;
&lt;p&gt;但只要檔案變多&lt;/p&gt;
&lt;p&gt;速度就會變很慢&lt;/p&gt;
&lt;p&gt;所以這次要用 golang 自帶的 goroutine 來優化&lt;/p&gt;</description></item><item><title>測試 PHP 裡的 serialize 函式效能</title><link>https://blog.iphpo.com/blog/2017/11/%E6%B8%AC%E8%A9%A6-php-%E8%A3%A1%E7%9A%84-serialize-%E5%87%BD%E5%BC%8F%E6%95%88%E8%83%BD/</link><pubDate>Mon, 13 Nov 2017 00:00:00 +0800</pubDate><author>herb09638@gmail.com (Herb)</author><guid>https://blog.iphpo.com/blog/2017/11/%E6%B8%AC%E8%A9%A6-php-%E8%A3%A1%E7%9A%84-serialize-%E5%87%BD%E5%BC%8F%E6%95%88%E8%83%BD/</guid><description>&lt;p&gt;這次比較的有最常用的三種方式&lt;/p&gt;
&lt;p&gt;PHP內建的serialize&lt;/p&gt;
&lt;p&gt;還有json_encode&lt;/p&gt;
&lt;p&gt;另一個可能有人不知道&lt;/p&gt;
&lt;p&gt;叫 igbinary&lt;/p&gt;
&lt;p&gt;這東西在PHP5時代&lt;/p&gt;
&lt;p&gt;效能可是海放 PHP 內建的 serialize&lt;/p&gt;
&lt;p&gt;但是在效能大耀進的PHP 7上呢？&lt;/p&gt;
&lt;p&gt;馬上來做個實驗看看&lt;/p&gt;</description></item><item><title>Vue.js webpack template 在IE下顯示空白</title><link>https://blog.iphpo.com/blog/2017/07/vue-js-webpack-template-%E5%9C%A8ie%E4%B8%8B%E9%A1%AF%E7%A4%BA%E7%A9%BA%E7%99%BD/</link><pubDate>Wed, 19 Jul 2017 00:00:00 +0800</pubDate><author>herb09638@gmail.com (Herb)</author><guid>https://blog.iphpo.com/blog/2017/07/vue-js-webpack-template-%E5%9C%A8ie%E4%B8%8B%E9%A1%AF%E7%A4%BA%E7%A9%BA%E7%99%BD/</guid><description>&lt;p&gt;打開開發人員工具&lt;/p&gt;
&lt;p&gt;出現的錯誤是&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;polyfill-eventsource added missing EventSource to window&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Google後加入 Babel-polyfill 即可正常運作&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;npm install -save babel-polyfill
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;然後在初始文件加入&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-js" data-lang="js"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;import&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;babel-polyfill&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt; &lt;/p&gt;</description></item><item><title>Golang如何確認檔案是否存在</title><link>https://blog.iphpo.com/blog/2017/04/golang%E5%A6%82%E4%BD%95%E7%A2%BA%E8%AA%8D%E6%AA%94%E6%A1%88%E6%98%AF%E5%90%A6%E5%AD%98%E5%9C%A8/</link><pubDate>Mon, 17 Apr 2017 00:00:00 +0800</pubDate><author>herb09638@gmail.com (Herb)</author><guid>https://blog.iphpo.com/blog/2017/04/golang%E5%A6%82%E4%BD%95%E7%A2%BA%E8%AA%8D%E6%AA%94%E6%A1%88%E6%98%AF%E5%90%A6%E5%AD%98%E5%9C%A8/</guid><description>&lt;p&gt;在php裡有個函式可以檢查檔案是否存在&lt;/p&gt;
&lt;p&gt;&lt;a href="http://php.net/manual/en/function.file-exists.php"&gt;file_exists&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;那在Golang又該如何判斷呢？&lt;/p&gt;</description></item><item><title>在Golang用簡單的方式Mock function</title><link>https://blog.iphpo.com/blog/2017/04/%E5%9C%A8golang%E7%94%A8%E7%B0%A1%E5%96%AE%E7%9A%84%E6%96%B9%E5%BC%8Fmock-function-how-to-mock-function-in-golang/</link><pubDate>Wed, 12 Apr 2017 00:00:00 +0800</pubDate><author>herb09638@gmail.com (Herb)</author><guid>https://blog.iphpo.com/blog/2017/04/%E5%9C%A8golang%E7%94%A8%E7%B0%A1%E5%96%AE%E7%9A%84%E6%96%B9%E5%BC%8Fmock-function-how-to-mock-function-in-golang/</guid><description>&lt;p&gt;其實&lt;a href="https://github.com/golang/mock"&gt;官方有Mock package&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;但我稍微看了一下&lt;/p&gt;
&lt;p&gt;都是在Mock interface&lt;/p&gt;
&lt;p&gt;我遇到的問題是&lt;/p&gt;
&lt;p&gt;我用到其他package的function&lt;/p&gt;
&lt;p&gt;而那隻package沒有用interface&lt;/p&gt;
&lt;p&gt;所以無法產生Mock object&lt;/p&gt;
&lt;p&gt;Google上的解法&lt;/p&gt;
&lt;p&gt;都偏向Dependency Injection&lt;/p&gt;</description></item><item><title>如何在 Golang 讀取/寫入檔案</title><link>https://blog.iphpo.com/blog/2017/03/%E5%A6%82%E4%BD%95%E5%9C%A8-golang-%E8%AE%80%E5%8F%96%E5%AF%AB%E5%85%A5%E6%AA%94%E6%A1%88-how-to-read-write-file-using-golang/</link><pubDate>Wed, 15 Mar 2017 00:00:00 +0800</pubDate><author>herb09638@gmail.com (Herb)</author><guid>https://blog.iphpo.com/blog/2017/03/%E5%A6%82%E4%BD%95%E5%9C%A8-golang-%E8%AE%80%E5%8F%96%E5%AF%AB%E5%85%A5%E6%AA%94%E6%A1%88-how-to-read-write-file-using-golang/</guid><description>&lt;p&gt;這篇是在 &lt;a href="http://stackoverflow.com/questions/1821811/how-to-read-write-from-to-file-using-golang"&gt;stackoverflow&lt;/a&gt; 上看到的&lt;/p&gt;
&lt;p&gt;覺得滿實用&lt;/p&gt;
&lt;p&gt;在Golang要操作檔案有三種方法&lt;/p&gt;
&lt;p&gt;第一種就是操作檔案的指標&lt;/p&gt;
&lt;p&gt;跟php的fopen差不多&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: 18pt; color: #ff0000;"&gt;&lt;strong&gt;以下是第一段程式碼&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;</description></item><item><title>[Golang] 取得使用者的Home資料夾位置</title><link>https://blog.iphpo.com/blog/2017/03/golang-%E5%8F%96%E5%BE%97%E4%BD%BF%E7%94%A8%E8%80%85%E7%9A%84home%E8%B3%87%E6%96%99%E5%A4%BE%E4%BD%8D%E7%BD%AE-how-to-get-user-home-directory-using-golang/</link><pubDate>Fri, 10 Mar 2017 00:00:00 +0800</pubDate><author>herb09638@gmail.com (Herb)</author><guid>https://blog.iphpo.com/blog/2017/03/golang-%E5%8F%96%E5%BE%97%E4%BD%BF%E7%94%A8%E8%80%85%E7%9A%84home%E8%B3%87%E6%96%99%E5%A4%BE%E4%BD%8D%E7%BD%AE-how-to-get-user-home-directory-using-golang/</guid><description>&lt;p&gt;golang 有提供 &lt;a href="https://golang.org/pkg/os/user/"&gt;user的package&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;可以直接取得使用者的資訊&lt;/p&gt;
&lt;p&gt;在文件裡面寫到&lt;/p&gt;
&lt;p&gt;user.Current() 可以取得包含目前使用者資訊的&lt;a href="https://golang.org/pkg/os/user/#User"&gt;User struct&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;struct結構長這樣&lt;/p&gt;</description></item><item><title>[Golang] 產生檔案的MD5 hash - Generate file MD5 hash in golang</title><link>https://blog.iphpo.com/blog/2017/03/golang-%E7%94%A2%E7%94%9Fmd5-hash-generate-md5-hash-golang/</link><pubDate>Tue, 07 Mar 2017 00:00:00 +0800</pubDate><author>herb09638@gmail.com (Herb)</author><guid>https://blog.iphpo.com/blog/2017/03/golang-%E7%94%A2%E7%94%9Fmd5-hash-generate-md5-hash-golang/</guid><description>&lt;p&gt;此篇文章是一個用Golang產生檔案MD5的function範例&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;func&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;genMd5&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;Abspath&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kt"&gt;string&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kt"&gt;string&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;	&lt;/span&gt;&lt;span class="nx"&gt;path&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;:=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;filepath&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Abs&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;Abspath&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;	&lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;!=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;nil&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;		&lt;/span&gt;&lt;span class="nb"&gt;panic&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;Convert file absolute path error: &amp;#34;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;path&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;	&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;	&lt;/span&gt;&lt;span class="nx"&gt;f&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;:=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;Abspath&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;	&lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;!=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;nil&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;		&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Fatal&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;	&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;	&lt;/span&gt;&lt;span class="k"&gt;defer&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;f&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Close&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;	&lt;/span&gt;&lt;span class="nx"&gt;h&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;:=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;md5&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;New&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;	&lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;_&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;:=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;io&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Copy&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;h&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;f&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;!=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;nil&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;		&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Fatal&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;	&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;	&lt;/span&gt;&lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;hex&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;EncodeToString&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;h&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;nil&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt; &lt;/p&gt;</description></item></channel></rss>