又週三了, 最近都在忙 PHP 專案改版, 都沒空記周記. 我應該從周一就開始記, 不然過了一周常想不起來要些甚麼.
週六下午接到小舅媽電話, 要我晚上別煮, 載爸一起去她們家吃晚飯, 因為婷婷表妹有回去, 我到時才發現原來阿娟母子也有來, 真熱鬧. 婷婷帶回一台安博盒子要放在鄉下, 這台功能讓我大為驚訝, 竟然連俄羅斯, 印度等國的電視節目都收得到, 當下阿娟就說也要一台, 我查了一下露天, 婷婷的封閉群組拿到的價格便宜多多, 所以也跟進了, 巧的是, 團購剛好就剩下兩台.
這周日花了一些時間勘查安裝水車的地方, 發現門口的涵洞出水口水量較大, 比較適合安裝水車 :
而水車的本體則是取材自廢棄的雙人腳踏車前輪, 這台腳踏車是剛結婚時, 有天問媽說腳踏車店不曉得有沒有中古的雙人腳踏車, 想說假日回鄉下時可以跟水某騎兜風. 結果還真的有, 但買來騎沒幾次就丟在庫房了, 因為實在不好騎. 經過十幾年輪胎都壞掉了, 索性將輪子拆來做水車 :
因為後輪有鍊條與剎車皮等較難拆, 所以先拆前輪來用, 把壞掉的外胎去除後用尺量半徑是 30 公分, 軸心直徑 0.9 公分 :
這周要買砂紙回去磨光後噴漆防鏽.
另外, 20W 太陽能板我打算安裝在屋後的浴室屋頂的外延露臺上, 其寬度為 38 公分, 剛好稍長於 30 度角的底邊長度, 安裝在此就不需要立柱做腳架了 :
左上角的水管是頂樓屋頂集雨溝的導流管, 我發現這可以收集起來灌溉用 :
集水桶則可以放在底下的三角地帶 :
下周要找時間採購角鐵開始安裝了.
2017年11月15日 星期三
2017年11月13日 星期一
證交所上市櫃股票列表
由於證交所網站在 2017-05-23 左右改版, 新版網頁拋棄全部資訊集中顯示在一張網頁的方式, 改採輸入股號股名查詢, 導致之前寫的爬蟲軟體無法再抓取到資料, 必須進行改版. 之前一頁式網頁股票名單就在網頁表單中, 只要單純剖析網頁即可獲得全部收盤資料, 但現在得分成兩步驟, 首先須取得最新上市櫃股票名單, 然後再一一查詢各股收盤資料. 但問題是如何得知最新的上市櫃股票名單呢?
原來證交所網站就有提供此最新名單, 參考 :
# 本國上市證券國際證券辨識號碼一覽表
# 本國上櫃證券國際證券辨識號碼一覽表
這兩張表格都只需要抓 "股票" 與 "ETF" 部分, 剖析表格中的 "有價證券代號及名稱", "上市日", "市場別", "產業別" 這四個欄位即可, 將其存入 stocks_list 資料表的 stock_id, stock_name, listed_date, market, 以及 category 等 5 個欄位中, 其中 listed_date 與 market 是此次改版要新增的欄位.
以擷取上市股票資料為例, 開頭位置在標示 "股票" 這一列; 而結束位置在 標示 "上市認購(售)權證" 字樣前面, 如下所示 :
檢視網頁原始碼可以找到具體的開始與結束位置 (保留 tr), 如下所示 :
用這兩個頭尾信標為界就可以抓到上市股票的資料了.
$start="<B> 股票 <B> </td></tr>"; //起始字串
$end="<tr><td bgcolor=#FAFAD2 colspan=7 ><B> 上市認購(售)權證 <B>"; //結束字串
抓下來之後就用迴圈一列列去拆解表格內容, 在迴圈內又將每一列的儲存格拆解成陣列, 這樣就可分離出各欄資料了. 注意, 在拆解股名與股號時要注意, 分隔兩者的是全形空白, 我是直接由網頁複製到記事本, 再複製到程式中 :
list($stock_id,$stock_name)=explode(" ", $brr[0]); //分出股號與股名
抓 ETF 方式一樣, 只要更改頭尾信標即可 :
原來證交所網站就有提供此最新名單, 參考 :
# 本國上市證券國際證券辨識號碼一覽表
# 本國上櫃證券國際證券辨識號碼一覽表
這兩張表格都只需要抓 "股票" 與 "ETF" 部分, 剖析表格中的 "有價證券代號及名稱", "上市日", "市場別", "產業別" 這四個欄位即可, 將其存入 stocks_list 資料表的 stock_id, stock_name, listed_date, market, 以及 category 等 5 個欄位中, 其中 listed_date 與 market 是此次改版要新增的欄位.
上市股票
上市 ETF
上櫃股票
上櫃 ETF
以擷取上市股票資料為例, 開頭位置在標示 "股票" 這一列; 而結束位置在 標示 "上市認購(售)權證" 字樣前面, 如下所示 :
檢視網頁原始碼可以找到具體的開始與結束位置 (保留 tr), 如下所示 :
用這兩個頭尾信標為界就可以抓到上市股票的資料了.
$start="<B> 股票 <B> </td></tr>"; //起始字串
$end="<tr><td bgcolor=#FAFAD2 colspan=7 ><B> 上市認購(售)權證 <B>"; //結束字串
抓下來之後就用迴圈一列列去拆解表格內容, 在迴圈內又將每一列的儲存格拆解成陣列, 這樣就可分離出各欄資料了. 注意, 在拆解股名與股號時要注意, 分隔兩者的是全形空白, 我是直接由網頁複製到記事本, 再複製到程式中 :
list($stock_id,$stock_name)=explode(" ", $brr[0]); //分出股號與股名
抓 ETF 方式一樣, 只要更改頭尾信標即可 :
$start="<B> ETF <B> </td></tr>"; //起始字串
$end="<tr><td bgcolor=#FAFAD2 colspan=7 ><B> 臺灣存託憑證(TDR) <B>"; //結束字串
注意, 證交所的原始網頁使用 MS950 編碼, 可從網頁的標頭中看出 :
Server: Apache-Coyote/1.1 Content-Type: text/html;charset=MS950 Transfer-Encoding: chunked Date: Tue, 14 Nov 2017 12:54:07 GMT MS950 是在 BIG5 碼的基礎上進行的編碼擴充, 增加了 7 個中文字以及一些符號, 也是 Windows 繁中版預設字元集, 關於編碼參考 : |
# 哪來的純文字檔?
# 亂碼問題...
在 PHP 中 MS950 編碼可以當成 BIG5 碼來處理, 但是以前用 iconv() 將 BIG5 轉成 UTF-8 都沒問題 :
$file=iconv("BIG5","UTF-8",$web_page['FILE']); //MS950 轉 UTF-8 有問題
但這回用此指令轉換後, 剖析時讀取到宏碁的 "碁" 時卻停止轉換, WHY? 後來在下面這篇看到作者用 mb_convert_encoding() 函數做轉換 :
$file=mb_convert_encoding($web_page['FILE'],"utf8","big5");
這樣就沒問題了. 如果要偵測一個字串是甚麼編碼則要用 mb_detect_encoding() 函數, 參考 :
由上市日期可以計算至今該公司已上市多久, 在選股時通常上市未滿 5 年者我都不予考慮. 從證交所網頁取得的資料經剖析後每一列會放在陣列 $brr 中, 上市日期位於第三欄, 因此索引為 2 即 $brr[2], 格式為 YYYY/MM/DD, 先用 str_replace() 將 "/" 換成 "-", 拆出年月日後呼叫 mktime() 轉成時戳, 再與目前時戳相減即得上市秒數, 最後轉換成年 :
$listed_date=str_replace("/","-",$brr[2]);
list($Y,$M,$D)=explode("-",$listed_date); //拆分 1987-02-21
$listed_time=mktime(0,0,0,$M,$D,$Y); //計算 1970-01-01 以來至上市日秒數
$listed_years=round((time()-$listed_time)/3600/24/365,1); //小數一位
另外, 漲跌家數資訊已改在下列網頁提供 :
2017年11月11日 星期六
鄉村基礎木作第七課 : 完成上蓋板與門板安裝
今天因二哥要準備功課不去上 APCS, 剛好木樂園有開, 所以早上就去學木工了. 距離上一課已超過兩個多月沒去了, 因為小狐狸們開學後我就比較忙, 而有空的周六又碰巧木工坊休息.
今天劉老師不在, 改由郭老師指導. 上回做到剩下上蓋板, 背板, 以及門板還沒裝上去, 今天就從鎖門板開始. 首先拿一個木板與門板垂直, 將蝴蝶絞鍊放在垂直角上, 上絞鍊的上端與門板內框上緣對齊; 下絞鍊的底端與門板內框下緣對齊, 然後用鉛筆在螺絲洞口畫圓作記號, 用小電鑽先鑽個小洞, 深度約螺絲的一半即可. 先給門板這側的絞鍊上螺絲, 然後拿名片厚度的卡片 2~4 張塞上下左右門縫以便有足夠寬的門縫, 然後在門框上的絞鍊螺絲洞做記號, 同樣先鑽小洞再鎖螺絲, 這樣門板便固定住了.
接著打開門板, 在外側上方兩塊木板接縫處鎖上鐵片, 這是用來給門檔磁鐵吸引用的 :
接下來是裝門檔磁鐵, 先將整個收納櫃倒過來, 在下抽屜底部畫出門檔螺絲孔位置後再鑽洞上螺絲固定 :
至此整個門板部分就完成了, 最後就是裝上背板, 然後上膠蓋上上蓋板, 讓上蓋板的溝槽將背板卡住, 左右用長 F 夾從底部起夾住上蓋板後上螺絲, 最後用小木栓上膠塞住螺絲孔, 這樣整個收納櫃就大功告成了 :
不過在上漆前必須先將外面磨光, 以免吃漆不均勻讓色澤不好看. 郭老師給我的是 1/6 吋 AA-180 的砂紙, 將其包覆磨光機底盤固定後開始打磨, 先從有小木栓的地方開始, 將凸出的部分磨掉, 其餘就是順著紋路打磨, 除了將邊角很利的地方稍微磨圓一些外, 也順便將之前用鉛筆畫的線磨掉 :
完工後時間還早, 本想直接上漆, 但因為這兩天沒太陽, 還下著毛毛雨, 濕度大漆不易乾, 所以只好下一堂課有太陽時再上漆了.
今天劉老師不在, 改由郭老師指導. 上回做到剩下上蓋板, 背板, 以及門板還沒裝上去, 今天就從鎖門板開始. 首先拿一個木板與門板垂直, 將蝴蝶絞鍊放在垂直角上, 上絞鍊的上端與門板內框上緣對齊; 下絞鍊的底端與門板內框下緣對齊, 然後用鉛筆在螺絲洞口畫圓作記號, 用小電鑽先鑽個小洞, 深度約螺絲的一半即可. 先給門板這側的絞鍊上螺絲, 然後拿名片厚度的卡片 2~4 張塞上下左右門縫以便有足夠寬的門縫, 然後在門框上的絞鍊螺絲洞做記號, 同樣先鑽小洞再鎖螺絲, 這樣門板便固定住了.
接著打開門板, 在外側上方兩塊木板接縫處鎖上鐵片, 這是用來給門檔磁鐵吸引用的 :
接下來是裝門檔磁鐵, 先將整個收納櫃倒過來, 在下抽屜底部畫出門檔螺絲孔位置後再鑽洞上螺絲固定 :
至此整個門板部分就完成了, 最後就是裝上背板, 然後上膠蓋上上蓋板, 讓上蓋板的溝槽將背板卡住, 左右用長 F 夾從底部起夾住上蓋板後上螺絲, 最後用小木栓上膠塞住螺絲孔, 這樣整個收納櫃就大功告成了 :
不過在上漆前必須先將外面磨光, 以免吃漆不均勻讓色澤不好看. 郭老師給我的是 1/6 吋 AA-180 的砂紙, 將其包覆磨光機底盤固定後開始打磨, 先從有小木栓的地方開始, 將凸出的部分磨掉, 其餘就是順著紋路打磨, 除了將邊角很利的地方稍微磨圓一些外, 也順便將之前用鉛筆畫的線磨掉 :
完工後時間還早, 本想直接上漆, 但因為這兩天沒太陽, 還下著毛毛雨, 濕度大漆不易乾, 所以只好下一堂課有太陽時再上漆了.
WordPress 學習筆記 (一) : 系統安裝
前陣子樓上同事阿達因為要幫教會架設網站來問我怎麼做, 我向他展示如何申請 Hostinger 免費網站, 請他自己試試看, 不過似乎一直無法得心應手, 要我幫忙處理. 但因為我很忙, 所以一直沒幫上甚麼忙. 今天讀到下列文章, 想起了架站這件事, 我想何不從最簡單的 WordPress 開始玩看看, 然後試試 Joomla 或 Drupal, 看看哪一個適合. 因為 Hostinger 免費版沒有網頁 FTP 功能, 所以就去 000a.biz 申請了一個免費虛擬主機來架站.
# Joomla!、WordPress、Drupal,三個CMS系統的比較與選擇;建立網站要用那一個比較符合我的需求?
000a.biz 的虛擬主機服務免費版提供 11GB 硬碟容量與 400GB 流量, 參考 :
# http://000a.biz/hosting.htm
免費主機申請方式很簡單, 點官網上方的 SIGNUP 連結 :
填寫想要的網域名稱, 密碼, 以及 e-mail 即可 :
然後去收信, 點擊確認信函中的超連結後即開通虛擬主機帳號了. 接下來要進入主機管理介面 VistaPanel 進行後台管理 :
# http://cpanel.000a.biz/index.php
注意, 這個 username 是 000a.biz 核准申請時給定的, 無法修改.
登入 VistaPanel 後先去 DATABASES 項下按 MySQL Databases 按鈕建立一個資料庫 :
注意資料庫名稱為 username 後面加上自訂名稱例如 wordpress. 然後按 Files 項下的 Online Files Manager 按鈕, 進入檔案上傳介面 :
進入 htdocs 子目錄, 這是放置網頁檔案的地方 :
按左上方的 "New Dir" 鈕新增目錄例如 wordpress :
點 wordpress 進入此空的子目錄, 準備上傳 WordPress 的 zip 壓縮檔. 在此之前需先到 WordPress 官網下載最新的正體中文版 zip 檔 :
# https://tw.wordpress.org/latest-zh_TW.zip
我下載的是 wordpress-4.8.2-zh_TW.zip, 大小約為 9.1MB, 符合 000a.biz 上傳檔案每個須小於 10MB 之限制. 按左上方 "Upload" 鈕上傳此 zip 檔至 wordpress 目錄下. 注意, 要用上傳頁面右邊的 Archives 來上傳 zip 檔, 它會在上傳完畢後自動解壓縮; 若使用左邊的 Files 上傳的話, 完成後還需要按 Unzip 鈕手動解壓.
注意, 使用網頁上傳檔案至 000a.biz 有容量限制, 單一檔案不可超過 10 MB, 超過的話要用 FTP 方式上傳 :
Restrictions:
而 wordpress 4.8.2 版大約 9.2 MB, 剛好符合網頁上傳限制之內, 只是網頁上傳速度較慢需等待 (約 5 分鐘). 完成 WordPress 上傳後會自動解壓縮, 接下來就可以進入安裝程序了. 我在上面申請的網域名稱為 hahaha.000a.biz, 而 WordPress 是放在 /wordpress 目錄下, 因此網站的位址為 hahaha.000a.biz/wordpress. 於瀏覽器輸入此網址即進入安裝頁面 :
此為安裝說明, 按 "衝吧" 進入資料庫設定頁面, 只要輸入前四個欄位即可, 按 "送出" :
按開始安裝進入管理者設定介面, 需設定網站標題, 使用者帳號密碼與郵件地址, 按 "安裝 WordPress" 即開始執行安裝程序 :
哈! 三兩下就搞定了, 按 "登入" 進入使用者登入頁面 :
大功告成! WordPress 的超簡單安裝果然名不虛傳. 接下來的工作就是學習如何設定與管理 WordPress 後台啦! 登出後再瀏覽網站即可看到前台網頁長相 :;
這是預設版面, WordPress 走的是清爽的 Blog 風.
# Joomla!、WordPress、Drupal,三個CMS系統的比較與選擇;建立網站要用那一個比較符合我的需求?
000a.biz 的虛擬主機服務免費版提供 11GB 硬碟容量與 400GB 流量, 參考 :
# http://000a.biz/hosting.htm
免費主機申請方式很簡單, 點官網上方的 SIGNUP 連結 :
填寫想要的網域名稱, 密碼, 以及 e-mail 即可 :
然後去收信, 點擊確認信函中的超連結後即開通虛擬主機帳號了. 接下來要進入主機管理介面 VistaPanel 進行後台管理 :
# http://cpanel.000a.biz/index.php
注意, 這個 username 是 000a.biz 核准申請時給定的, 無法修改.
登入 VistaPanel 後先去 DATABASES 項下按 MySQL Databases 按鈕建立一個資料庫 :
注意資料庫名稱為 username 後面加上自訂名稱例如 wordpress. 然後按 Files 項下的 Online Files Manager 按鈕, 進入檔案上傳介面 :
進入 htdocs 子目錄, 這是放置網頁檔案的地方 :
按左上方的 "New Dir" 鈕新增目錄例如 wordpress :
點 wordpress 進入此空的子目錄, 準備上傳 WordPress 的 zip 壓縮檔. 在此之前需先到 WordPress 官網下載最新的正體中文版 zip 檔 :
# https://tw.wordpress.org/latest-zh_TW.zip
我下載的是 wordpress-4.8.2-zh_TW.zip, 大小約為 9.1MB, 符合 000a.biz 上傳檔案每個須小於 10MB 之限制. 按左上方 "Upload" 鈕上傳此 zip 檔至 wordpress 目錄下. 注意, 要用上傳頁面右邊的 Archives 來上傳 zip 檔, 它會在上傳完畢後自動解壓縮; 若使用左邊的 Files 上傳的話, 完成後還需要按 Unzip 鈕手動解壓.
注意, 使用網頁上傳檔案至 000a.biz 有容量限制, 單一檔案不可超過 10 MB, 超過的話要用 FTP 方式上傳 :
Restrictions:
- The maximum size of one file is restricted by net2ftp to 9.54 MB and by PHP to 10 MB
- The maximum execution time is 800 seconds
- The FTP transfer mode (ASCII or BINARY) will be automatically determined, based on the filename extension
- If the destination file already exists, it will be overwritten
而 wordpress 4.8.2 版大約 9.2 MB, 剛好符合網頁上傳限制之內, 只是網頁上傳速度較慢需等待 (約 5 分鐘). 完成 WordPress 上傳後會自動解壓縮, 接下來就可以進入安裝程序了. 我在上面申請的網域名稱為 hahaha.000a.biz, 而 WordPress 是放在 /wordpress 目錄下, 因此網站的位址為 hahaha.000a.biz/wordpress. 於瀏覽器輸入此網址即進入安裝頁面 :
此為安裝說明, 按 "衝吧" 進入資料庫設定頁面, 只要輸入前四個欄位即可, 按 "送出" :
按開始安裝進入管理者設定介面, 需設定網站標題, 使用者帳號密碼與郵件地址, 按 "安裝 WordPress" 即開始執行安裝程序 :
哈! 三兩下就搞定了, 按 "登入" 進入使用者登入頁面 :
輸入帳密進入後台管理頁面 :
大功告成! WordPress 的超簡單安裝果然名不虛傳. 接下來的工作就是學習如何設定與管理 WordPress 後台啦! 登出後再瀏覽網站即可看到前台網頁長相 :;
這是預設版面, WordPress 走的是清爽的 Blog 風.
2017年11月10日 星期五
製作太陽能鳥屋 (一)
想要木作一個太陽能鳥屋已經很久了, 去年買了一個 1W 太陽能板, 也去特力屋買了幾塊松木, 但就是遲遲無法動手. 這鳥屋並不是真的要給鳥住的, 只是我進行太陽能與物聯網測試的小玩意, 屋頂用來安裝 1~3 W 的小太陽能板, 屋內則用來放置 Arduino/ESP8266/Raspberry Pi, 18650 電池組, LoRa 模組, 以及一些感測器如溫溼度, PIR, 土壤溼度偵測器等監測模組.
我收集了好幾種鳥屋款式, 下面這四張是去年逛特力屋時看到的 :
下面這張則是小舅家門口的鳥屋式信箱 :
下面這四張則是光興街日光貓餐廳門口擺放的鳥屋造型 :
不過, 這些鳥屋的屋頂角度都太陡, 太陽能板需要約 19~23.5 度的仰角才能得到最大的功率輸出. 參考 :
# 太陽能發電系統的性能的決定因素
我收集了好幾種鳥屋款式, 下面這四張是去年逛特力屋時看到的 :
下面這張則是小舅家門口的鳥屋式信箱 :
下面這四張則是光興街日光貓餐廳門口擺放的鳥屋造型 :
不過, 這些鳥屋的屋頂角度都太陡, 太陽能板需要約 19~23.5 度的仰角才能得到最大的功率輸出. 參考 :
# 太陽能發電系統的性能的決定因素
2017年11月8日 星期三
2017 年第 44 周記事
本周六水某要上台北開會, 順便要去師大宿舍找姊姊, 菁菁也要去, 所以跟補習班請假. 而我則是要陪大帥與小慧伉儷去爬旗靈縱走, 這是我今年第四趟了. 第一次是元旦陪阿英, 第二次是年初四陪小舅媽與小阿姨, 第三次是四月時與建興等同學, 這次除仲仔, 峰仔老班底外, 還加上喜仔, 國中同學阿錦, 以及仲仔的登山社朋友們共 13 人.
這次路線與四月時一樣, 從雷音寺走到旗尾山, 不同的是這回走全程, 路線圖如下 (取自仲仔 Line 上截圖) :
根據峰仔所傳圖片, 此行耗時 5:42 分, 不過我大概還要加上 20 分鐘, 約 6 小時, 因為從旗山祠開始我就一路抽筋, 邊走邊休息, 所以沒有在第二登山口終點處跟大家合照 :
這次路線與四月時一樣, 從雷音寺走到旗尾山, 不同的是這回走全程, 路線圖如下 (取自仲仔 Line 上截圖) :
根據峰仔所傳圖片, 此行耗時 5:42 分, 不過我大概還要加上 20 分鐘, 約 6 小時, 因為從旗山祠開始我就一路抽筋, 邊走邊休息, 所以沒有在第二登山口終點處跟大家合照 :
向 winjack88 購買充電器與手機充電線
因 USB 連接線可用的越來越少需添購, 同時加購 Pi 3 需要的 2A 電源以及手機行充等如下 (此賣家價格較優) :
# 鋁合金編織數據傳輸線充電線 安卓V8接頭 USB轉Micro $20*10=200
# 雙USB插口 通用充電器 充電座 方塊充 旅充 USB手機充電2.1A 雙插孔 $25*2=50
# USB插口DC 5V1A 恒流恒壓防爆手機充電器 $22*3=66
# 3插孔USB充電器帶LED指示燈 5V1A-3USB插口3.1A $35*3=105
# USB插口 DC 5V2A通用電源供應器 電源變壓器 $49*2=98
# 電池檢測器 電池測試器 可測1號 2號 3號 4號 5號 9V 鈕釦 電池 水銀方型電池 $60
200+50+66+105+98+60=579+60(運費)=639
# 鋁合金編織數據傳輸線充電線 安卓V8接頭 USB轉Micro $20*10=200
# 雙USB插口 通用充電器 充電座 方塊充 旅充 USB手機充電2.1A 雙插孔 $25*2=50
# USB插口DC 5V1A 恒流恒壓防爆手機充電器 $22*3=66
# 3插孔USB充電器帶LED指示燈 5V1A-3USB插口3.1A $35*3=105
# USB插口 DC 5V2A通用電源供應器 電源變壓器 $49*2=98
# 電池檢測器 電池測試器 可測1號 2號 3號 4號 5號 9V 鈕釦 電池 水銀方型電池 $60
200+50+66+105+98+60=579+60(運費)=639
訂閱:
文章
(
Atom
)
















































