2019年4月16日 星期二

關於使用PHP語法設定line的圖文選單(rich menu)筆記

之前研究line的圖文選單遇到幾個難題,所以特別留了一些筆記
文件可以參考 https://developers.line.biz/en/docs/messaging-api/using-rich-menus/

1.上傳圖文選單
根據文件上面的Upload the rich menu image章節使用curl的語法大概是這樣

curl -v -X POST https://api.line.me/v2/bot/richmenu/{richMenuId}/content \
-H "Authorization: Bearer {channel access token}" \
-H "Content-Type: image/jpeg" \
-T image.jpg

「-H」可以知道是header,在PHP可以透過CURLOPT_HTTPHEADER代入。
偏偏那個「-T」在curl_setopt的函式中完全沒有對應的參數可以使用。
在網站上很多透過post上傳檔案的方法都是使用CURLOPT_POSTFIELDS參數來模擬表單的方式來上傳並,例如設訂一個field為file,然後把檔案實體位置代進去,但是在line api上傳選單圖片的方式用此方法是行不通的,還會回報Unsupported media type(不支援媒體格式)。
雖然有人在 https://github.com/line/demo-rich-menu-bot/issues/5 有詢問這個問題,但完全沒人回答。
如果進一步去看文件的話,可以發現request body所放的資料應該是圖片內容,而CURLOPT_POSTFIELDS也可以做為設定request body使用,不一定要放入表單資訊。另外圖片大小可以放在標頭的Content-Length之中,這樣一來就會變成。

$image = "圖文選單圖片的真實路徑";
$richMenuId = "你的圖文選單ID";
$accessToken = "你的圖文選單Channel access token";
$headers = array(
    "Authorization: Bearer ". $accessToken,
    "Content-Type: image/jpeg",
    "Content-Length: ". filesize($image);
)
curl_setopt($ch,CURLOPT_URL, "https://api.line.me/v2/bot/richmenu/$richMenuId/content");
curl_setopt($ch,CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch,CURLOPT_POST, 1);
curl_setopt($ch,CURLOPT_POSTFIELDS, file_get_contents($image));
curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);



檔案內容可以透過file_get_contents來取得。

2.設定預設的圖文選單

根據文件上面的Set the default rich menu章節使用curl的語法大概是這樣
curl -v -X POST https://api.line.me/v2/bot/user/all/richmenu/{richMenuId} \
-H "Authorization: Bearer {channel access token}"

做法不難,只要在網址放上richMenuId並在header上加上Authorization即可,但是問題出在使用上面的語法可能一直回傳bad request錯誤,又找不到錯誤是錯在哪裡。
(參考https://medium.com/@augustus0818/line-bot-rich-menu-aa5fa67ac6ae 章節3.3)

其實在 https://github.com/line/line-platform-feedback/issues/73 的文章中,也有人提到這個問題,關鍵在於要補上 「-d ''」就可以順利運作了,不會有bad request的問題。
這意味著,當你傳送POST來設定圖文選單時,必須要有request body,但因為不需要使用request body傳額外的資料,所以就直接放空字串就好了。

而在PHP語法中,除了設定CURLOPT_URL、CURLOPT_POST及CURLOPT_HTTPHEADER外,別忘了還要加入
curl_setopt($ch,CURLOPT_POSTFIELDS, "");








2017年7月5日 星期三

菊花石(珊瑚化玉)是化石?本來就是化石啊

提到化石,其實化石的定義很廣泛,可以參考這邊,通常過去生物的遺骸、留下來的痕跡經過長年累月保存在地殼之中的或表明有該生物存在的證據都可以稱為化石,美國地質學會所出版的書中就可以詳細定義了。平常會討論化石通常是「古生物」、「地史」等範疇在討論。
首先討論化玉是怎麼來的,化玉原本為生物的殼體,經過替代(交替)作用矽化而成,因此主要成分以二氧化矽(石英質)為主,而原本殼體的樣子仍然保留。除了珊瑚以外矽化木等皆為這樣形成,故有人會用「玉化」這個名詞來概括整個過程,由於「玉」的定義太過於籠統及模糊,因此以地質學的觀點不會有「玉化」這東西,可以參考之前的文章。
接著再看化石的定義,化石行程必須要有該生物,而且化石可以作為該生物過去存在的證據,首先珊瑚化玉的形成前提就是要有該珊瑚存在,同時也表明過去有該珊瑚存在著,因此可以算是化石,最後以地質年代而言6000年以前的生物只能稱作亞化石,因此這部分就要看該珊瑚所形成的年代了。

註:寶石學的鑑定書只能鑑定這是怎麼樣的材質,不會專門去鑑定這是否是化石。
另外不要去看壹讀、每日頭條、台灣wiki、台灣word等大陸網站/內容農場,很多文章來自對岸,而且大多沒根據。

2017年4月15日 星期六

激光柱?對岸用語,請不要再用了

  「激光」柱通常泛指單根長條晶體的白水晶(石英),但是「激光」這詞是對岸用語,在台灣對應的詞是「雷射」,大不了可以說成「雷射柱」只不過怪怪的...,而這個詞彙也是最近才出現的,在過去很少用在用,從遣詞用字上也可以推得出來是從對岸來的。
  通常在外面看到的「雷射柱」有一些都有經過拋光,因此可能會看不到生長痕,加上很長的白水晶其實也沒那麼多,如果是完美無瑕,整個晶體透的跟玻璃一模一樣的話,那就更可疑了,所以如果白水晶若不是一塊晶簇,很容易買到贗品或者是人工養晶,就算是晶簇也可能買到養晶,但是個人還是建議買白水晶建議還是買一簇的,至於晶體可以看一下是否有生長痕,以及是不是外觀完美到非常誇張。
  註:之後我乾脆用「雷射柱」取代「激光柱」,不過叫白水晶單顆晶體比較實在。

2017年3月11日 星期六

「玉化」是啥?根本沒這回事

最近接觸到一些賞石的社群,和逛一些玉石礦物相關的留言版,偶爾會看到有人使用「玉化」這兩個字形容石頭在自然環境下,吸收了日月精華成了美麗的玉石。不過你跟地質學家講這套理論是完全講不通的。一般岩石裸露在外面,通常會受到侵蝕作用、最後沉積,當在地底下受到壓力甚至是高溫,在這環境之下就會有變質作用,但是從變質作用中完全看不出到玉化這東西,而且地質作用的時間是可長可短的。
在地表石英是很堅硬的礦物,因為不容易風化所以也是地表上常見的礦物,因此當岩石受到熱液作用或換質作用之後,除了石英,其他的成分都被帶走或者有成分被取代,因此才有矽化、石英化之說。

追註:
後來有跟其他況有關於玉化的問題,有人認為當玉石擺在空氣中石會因為空氣中的水分而讓玉石外層看起來比較光滑透亮,至於詳細的原理等等,還是找到一些科學研究的證據在下結論才會比較好。

2016年10月24日 星期一

礦物不是醫療器材沒有醫療效果,只能是你心靈的寄託

  在台灣地區水晶市場大概有一部分是因為風水、開運、能量等等起來的(這部分我不是很懂所以就點到為止),對於有些人來說相信水晶是有能量,這部分我不反對,畢竟每個人的看法都不同,對我來說大概至少也算是心理上的一些作用,而自己在製作遊戲腳本時如果道具中有礦物之類的東西也不得不附上一些魔法效果,這部份讓我對寶石充滿一些想像。但是要注意的是外面所賣水晶、礦物並不是醫療器材,也不是藥物,並不具有所謂醫療效用,或許過去有人把礦物作為藥物,但這部分另當別論,所以不要聽信某種礦物對身體的什麼有幫助可以改善身體病痛之類的謠言,身體有問題最好還是看醫生比較好,另外如果外面有人在賣礦物宣稱有醫療效用在台灣這是違法的(違反藥事法第69條),相關法條如下

藥事法第69條:非本法所稱之藥物,不得為醫療效能之標示或宣傳。

  所以說礦物不是藥物,是不能為醫療效能之標示或宣傳的,但大部分的人可能覺得藥物應該是只吃的東西才算藥物,但是在藥事法解釋如下

藥事法第4條:本法所稱藥物,係指藥品及醫療器材。
藥事法第13條:本法所稱醫療器材,係用於診斷、治療、減輕、直接預防人類疾病、調節
生育,或足以影響人類身體結構及機能,且非以藥理、免疫或代謝方法作
用於人體,以達成其主要功能之儀器、器械、用具、物質、軟體、體外試
劑及其相關物品。
前項醫療器材,中央衛生主管機關應視實際需要,就其範圍、種類、管理
及其他應管理事項,訂定醫療器材管理辦法規範之。

  如果礦物被作為醫療器材的話,那麼就不是一般人隨便可以買賣的東西,它可以要列管的喔。

藥事法第91條第2款:違反第六十九條規定者,處新臺幣六十萬元以上二千五百萬元以下罰鍰,其違法物品沒入銷燬之。

  如果違反69條除了要被罰60萬以上2500萬以下罰鍰,其商品還要被沒收銷毀,這樣子真的很得不償失。

  雖然法律歸法律,外面宣稱礦物有治療的攤商也不一定會被抓,但也冒著可能被衛生署檢舉的危險,不過還是得要知道礦物不是醫療器材沒有醫療效果,只能作為你心靈的寄託。

2016年1月20日 星期三

粉紅色白雲石(Dolomite)與黃銅礦(Chalcopyrite)共生

  這標本是於第六屆礦物展所購買的,當初因為覺得很特別,價格也不是很貴就購買了,粉紅色的晶體上面分布者像是黃鐵礦(Pyrite)的礦物晶體。當時有問過攤位的店員礦物名稱與產地,得到的答案是片沸石(Heulandite),產地為印度,但是很少難到印度的沸石上面還會共生一顆又一顆的金屬光澤金黃色的晶體所以對攤位上店員的說法有所保留。後來到網站上查片沸石+黃鐵礦的英文只看到一個網站上面有類似的標本,不過怎麼感覺就是怪怪的,所以就先把這問題先擱置。直到有一次逛ebay時看到有人賣類似的標本就趕快點進去看,得出來的答案是白雲石 (Dolomite)(在過去對白雲石的印象大概就是白白的塊狀晶體,所以對於有晶型的白雲石就沒有概念了),然後把該店家給的產地(阿肯色州)加上白雲石到網站上搜剛好Bingo,圖片上面很多產狀相同的礦物,只不過因為類似產狀的礦物可能還有其他地點有產,所以沒辦法證明這件是亞利桑那州產的。而上面金黃色一點一點的晶體不是黃鐵礦而是黃銅礦(Chalcopyrite),就這樣確認了這件標本的身分。
  粉紅色白雲石與黃銅礦共生的礦物的產地大概就是阿肯色州(Arkansas)的黑岩(Black Rock)附近的廢棄鉛礦和鋅礦的礦場等等。



透明方解石晶體

局部拍攝


白雲石(Dolomite)、黃銅礦(Chalcopyrite)、方解石(Calcite)
產地:不明
標本長約 11.5 cm × 3 cm × 4 cm

2015年12月28日 星期一

關於人造礦物或是加工礦物

在礦物市場是多多少少會看到人造礦物或是加工處理過的礦物,加工過後的標本也不能說是價值,主要就看消費者的接受度,通常加工過後的礦物大多不會保留原始的顏色,圖片之後補上,以下針對台灣常見的部分來做介紹,再者因為整篇文章主要以礦物的部分,所以並不會介紹到寶石、玉石、隕石等處理方式,相關資訊可以參考這個頁面。

人造礦物

先介紹一下人造礦物,基本上賣人造礦物並不違法,也不會有太大的爭議,只是要標記是人造就不算是詐欺,人造礦物大多為人為養晶體或是透過其他的方式來製作晶體。

1.人造鉍晶體

天然的自然鉍不常見跟人造的比起來也長得醜很多,而人造鉍晶體長得真的很像是立體迷宮,大多的鉍晶體製作方法就是將金屬鉍加熱然後讓他冷卻。市面上的人造鉍晶體通常都會標示是人造的一顆也不太貴,當然收藏一兩顆不錯的也OK。

2.人造膽礬

主要成分是有水硫酸銅,顏色為藍色,因為晶體易於製造所以算是常見的人造礦物之一(不過在台灣地區並不常見),通常只要有硫酸銅的過飽和溶液就可以養出晶體來,或是在家裡DIY製作,之前在ebay看到有波蘭的賣家有在賣(上面有標示是實驗室養晶),晶體很完美,賣得也還不錯。
註:因為台灣空氣較潮濕,因此膽礬晶體很容易潮解,因此收藏這一類的標本請注意濕度。

3.人造碳化矽

在台灣可以見到的人造礦物之一,表面看似片狀黑色有七彩光澤的礦物,不懂的賣家會說是天然礦物,常常以七彩礦、黑晶石等等名稱稱之,而這些名稱通常也找不到相關的資料。

4.人造石英(水晶養晶)

基本上人造石英(養晶)主成分和晶體結構和天然水晶無異,要分辨可能要從晶體內的雜質等特徵來分辨,有些處理的沒那麼好的可以從晶體是否含有鐵絲,或是有不自然的地方做判斷,至於打磨過的就比較困難了,通常市面上完美無瑕的水晶有機會是人工養出來的,只是有些商家為了讓商品可以快速賣出去而會標示成天然水晶賣出去。
通常人工養晶需要很多時間和適當的環境調控,需要很高的成本,因此大而漂亮的養出來的水晶價格並不便宜。

5.人造鉛玻璃

鉛玻璃常被作為假隕石或是假天然黑曜岩來販賣,外觀上可以很難判斷哪個是人工哪一個是天然的,不過經過成分分析之後就真相大白了。

除了上述三種以外還有其他的人造礦物,在台灣不常見所以就暫時不加筆介紹了。

染色處理標本

1.染色纖水矽鈣石

這種標本過去流行一陣子纖水矽鈣石本身顏色為白色,有紅色、綠色等等,在台灣因為有人金黃色認為會有添財的作用大多則以染成金黃色為主,大多以黃金鈉沸石稱之或是其他種類的沸石,但是纖水矽鈣石可是層狀矽酸鹽(Phyllosilicate)礦物而非沸石類礦物。

2.染色沙漠玫瑰

沙漠玫瑰為石膏的一種,顏色從粉色至白色,如果有其他顏色大多為染色。

3.染色青金石(青金岩)

通常青金岩由40%以上的青金石、黃鐵礦、方解石等礦物組成,當方解石含量高的時候,整顆岩石的顏色會偏白,而賣家為了要讓岩石好看一些通常將顏色較淡的標本做染色,讓其顏色更加鮮豔,除此之外也可能找到假的青金岩。

4.染色螢石

主要產地為中國曾經出產,通常是將螢石染色,將其標上「紫龍晶(紫矽鹼鈣石)」來販賣,不知情的人可能會被騙。再者紫龍晶(紫矽鹼鈣石)主要產地為俄羅斯。

加熱處理標本

通常加熱處理算是將標本弄得比較好看的一種方式。

1.加熱處理過的黃水晶

自然界的黃水晶並不是很多,所以市面上可以見到處理過後的黃水晶,也就是將紫水晶做加熱處理,讓其顏色轉呈黃色。

2.加熱處理過的海水藍寶

海藍寶石為綠柱石的一種,天然帶有藍色的綠柱石並不多,通常都會帶有一些綠色,所以會透過加熱的方式將綠色的部份給去掉。


其他處理方式尚有電鍍、照射日光處理、化學處理等等,待加入。