Author: atifans

  • 北海道自駕遊 2018 part 3

    9/24 今天要搭飛機,早上九點起來就帶著行李出發,路上買了超商飯糰後,就從大通坐地鐵到栄町 札幌的地鐵算古老,很多上下階梯的地方都沒有電梯,只好扛著行李走 其中有幾次行李撞到腳踝附近,當時我並沒有很在意,但過幾天傷口的狀況並不好,這部分之後再提 早上的地鐵沒什麼人,我想可能跟24號是假日有關 到栄町之後推行李到附近的栄町駅交通広場等公車,雖然那邊離機場沒很遠(大概1.3km),但你一定不會想推著行李去 很快公車就來了,搭上去也很快就到機場 丘珠機場是札幌市內的機場,專飛國內線,一下公車看到航廈的感想是:超小 在報到櫃台前面有一台X光機,先把行李拿給警衛,過機器之後他會在行李的鎖頭上貼一個「已檢查」貼紙,再把行李拿到櫃台去託運 登機證跟一般國際用的不同,比較短比較寬,通關是靠上面的小QR code 報到好之後就上二樓,有賣土產的商店和各種介紹札幌的展示 拍個可愛的ちなつ 中間圍紅龍的那個小門就是進安全檢查區 日本的國內線允許攜帶飲料,但要放進X光機,而且通過後他們會放在一個儀器上用光線檢查液體內容 我在過安檢門的時候才想到皮帶好像沒拿掉,但機器沒有叫,現場的姐姐就笑著說反正都通過了 一過安檢馬上就是候機室,可以直接看到要搭的飛機 要搭飛機也是很簡單,刷完登機證後下樓,直接走向飛機就是了 飛機是SAAB340B,只能載36人,今天天氣算不錯 這種螺旋槳的小飛機剛起飛的時候感覺好像是飄上去一樣,一路飄到雲上面 快到釧路的時候雲層很大又很厚,機長不知道在做什麼,一直用大傾角左右來回盤旋,轉到頭都快暈了 就這樣轉了十幾分鐘後,一回到水平就正對跑道,高度也已經降下來,直接進場降落 大概是飛機小的關係,降落滑一小段就減速完成,機長還要提高引擎轉速維持滑行的速度 到停機坪之後隔壁的是peach的737,相較起來超大一台 抵達後一走進航廈馬上就是行李轉盤,拿了直接往外走就出去了 大廳的租車櫃台和想像得不太一樣,就是一排小櫃子上面放各家公司的電話 正想要怎麼聯絡他們的時候,因為我有預約接機的關係,旁邊出現一個姐姐來帶路,坐上租車公司的車繞了機場門口一小圈到租車的地方 帶路的姐姐就是這次接待的業務,人還滿可愛的,給人一種天然又努力把事情做好的那種感覺 除了一開始算錯錢之外,辦手續的過程還算順利,完成後就去看車子 姐姐拿了兩本冊子,其中一本記載他們已經檢查過的項目以及車子已有的損傷及部位,帶我看完一遍車子後就請我簽名,這本冊子也要放在車上,還車的時候要交給那邊的人 另外一本是實用向的手冊,除了有各種詳細的行車地圖之外還有遇到突發狀況的對應步驟,姐姐還特別說要小心鹿 中文版手冊很精簡,日文版的地圖整個等級就不同 我租的自排車有三個踏板,所以我就問姐姐第三個是什麼,她說那是サイドブレーキ(side brake),並示範是踩一下卡住踩一下鬆開,一開始我大概猜是手煞車,但完全沒辦法理解那個名詞,只好看儀表的圖示來判斷(圈圈中有P的圖案是國際標準),後來才知道那個詞的確是手煞車,但它是日本人自製的英文詞 我還問了變速系統的B跟S,姐姐說只要用D開就好了,這回答其實不太好,因為開長途山路很需要引擎煞車的輔助,輕自動車的動力不足也會需要靠轉速來維持引擎出力 出發前姐姐有拿雨傘來,說可以放在車上,只要還車的時候給他們就好了,真是貼心的服務 確認沒問題之後就出發了,機場出來的路段都沒車,可以先適應一下煞車油門的開度和右駕的感覺 照原定計畫是要到釧路港口去,沒想到海邊起大霧什麼都看不到,到釧路車站之後就回頭了 目標改到AEON釧路昭和,除了補貨順便吃個午餐 午餐選了附近的蕎麥麵店「そば処くしろ庵」,味道還不錯 因為天氣不好加上時間不好抓,本來要去的釧路濕原也跳過,直接前往晚上在阿寒湖的住宿 往阿寒的路上,遇到比較斜的爬坡用D檔就開始沒力,660cc的2000轉扭力好低 進阿寒市區的時候,遇到一個路口要停再開,我停了沒看到車,結果一轉過去有一台車很快接近,還按了喇叭抱怨我開出來,問題是我根本沒看到他阿….幸好沒有發生事故 今天住的地方是「温泉民宿山口」,一晚兩餐6650円 民宿的樓梯超陡,房間普通但隔音差,浴室的池子腐蝕的有點嚴重 老闆娘人很熱心,介紹完民宿的設施之後還給了觀光地圖讓我帶著 民宿的房間可以看到街上 從這個角度看車子有點長 東西放好之後就到街上看看,沿著湖邊到另外一頭 然後再沿著街道走回去 這一間旅館看起來很漂亮 天色開始暗了 時間差不多就回民宿吃晚餐,菜色很豐盛,吃得很飽 餐廳是用三角椅,如果不好好坐人會摔倒 吃過飯之後,老闆娘說八點半有火把遊行可以參加,雖然不太明白就還是去了…

  • 北海道自駕遊 2018 part 2

    9/21 今天的行程是到小樽,早上買了超商飯糰之後走到電視塔旁邊的中央巴士總站 小樽的市區巴士和天狗山纜車都是中央巴士的運輸設施,有提供從札幌出發的高速巴士套票可以買,不過說實在的,如果札幌市區巴士沒什麼坐的話其實不會省到很多 到總站的櫃台買完票之後一看時刻表剛好正要發車,跑去乘車處司機看起來準備要走了,就趕快跑過去上車 車上人不多,會從北海道大學那邊一路往北載客,直到上高速公路為止 最讓我震驚(?)的是,高速公路上有公車站牌,而且真的有人會上下車 除了高速公路旁有民宅之外 還會有阿公阿嬤帶著花到墳墓去,這一站叫做見晴(miharashi) 到小樽之後會在巴士總站前放人,就在火車站旁邊 那時是中午要找午餐,想說直接到運河看看,就在巴士站等100號的觀光公車 公車等了很久,又開得很慢,走的路程又短 建議有要去小樽運河的各位,直接從火車站走過去就好了,不要搭公車,如果要去水族館或是天狗山再搭 觀光區的街道 觀光區最尾端的小樽音樂盒館 觀光區沒什麼賣吃的店,後來找到一家賣拉麵的就進去了,價錢還算普通,大概800, 900的樣子 運河的源頭是從lawson那邊下來,一條小水溝流到倉庫那邊去 到倉庫之後運河就變得很寬,看介紹是說以前運河更寬,現在有把部分拿去做人行道跟馬路 晃了一圈後到小樽運河的巴士站等公車上天狗山 天狗山的山路很直但很陡,一路聽著引擎嘶吼爬上去 到了之後拿套票去換纜車乘車券,櫃台還給了兩張天狗山紀念明信片 跟藻岩山比起來,天狗山纜車的設備看起來很有昭和味 纜車站往港口的方向看 另一邊是山谷 天狗桑 天狗山神社 松鼠園,進去之後可以買瓜子餵松鼠,當時去好像只有看到兩隻 不過他們有點笨(?),丟瓜子給牠還是傻傻站在那邊,要是不小心丟到牠還會嚇到躲起來 山上的東西不多,冬天做滑雪場人可能會比較多 下山之後到火車站那邊的商場逛逛,就去等車回札幌了 巴士到札幌車站就先下車,晚餐在stellar place找了一家店吃 回去旅館經過大通公園時有人在人行道唱歌,周遭圍了很多人聽 晚上的電視塔 9/22 今天要去野幌森林公園 坐JR到森林公園之後,發現公車超少,少到不行的那種 於是直接從車站走上山,上去之後先去看百年紀念塔,一個位於水池中央的鐵塔 今天是周六,但公園裡的人不多,紀念塔這邊只有一個阿公帶孫子坐在那裏 順手查了一下評論,發現這紀念塔的另外一面 50年前為了紀念北海道開拓100年而使用當時最先進的技術打造的100m高塔,期望可以用100年 現在則落到變成危樓禁止進入,而且也沒什麼人來看它了 評論裡面大多提到他們小時候戶外教學來過,為如今這樣感到悲傷 我自己是聯想到的是一個時代的過去,衰退、光景不再的社會 塔的旁邊還有一個很落魄隱密的景點,它叫做「大地的手」廣場 以1972年札幌冬奧時,世界各國的人留下的手印做了這個廣場 手代表人類智慧,期望人類反省自身,不要破壞自然 公園繼續往下走會有進入森林的林道入口,整個公園是一個保護很完整的森林 好像是颱風的關係,我去的時候有看到的林道入口都是封閉的,而且到處可以看到樹倒一半 沿著柏油路走會到北海道博物館 門口的廣場有一隻鳥(?),說是站在前面拍手會聽到它的聲音,我聽起來是有一種嗡嗡的迴響 博物館有賣開拓村的套票,如果兩邊都要去的話可以買這個 展覽的內容是從史前時代開始講,一路講到現代,我覺得近代的部分比較有趣,整體還是會推薦來看看 這個是教地理的紙上遊戲 Honda的內燃機腳踏車,完全不像機車,看起來就是腳踏車裝引擎…

  • 北海道自駕遊 2018 part 1

    大約六月的時候想說沒有去過北海道,不如就規畫一個行程去看看,萬事起頭難,總之先有機票就對了 找了很多家航空的票價之後,有一天晚上就傳訊息問我老闆說請假兩週行不行,結果老闆直接回「ok」,問的問題還是機票有買到便宜的嗎,真是佛心QQ 然後我就買了九月樂桃直飛新千歲的機票,來回含稅含一件20kg行李大約是一萬左右,飛機的時間是早上去下午回,覺得還可以 行程規劃的過程就不詳述了,總之最後旅途大致是長這個樣子 到新千歲之後坐車進札幌市區,總共待五天,期間順便去小樽 五天之後坐國內航班到釧路,租車開始遶,一路繞回新千歲機場還車,就能回家了 大約在出發兩週前,北海道發生大地震,震源剛好和我的行程剛好錯開,所以不會遇到,有使用到的公共設施也都沒大礙 比較需要擔心的是沒有電力,幸好電力在我出發前一周就已經恢復基本民生供給,雖然有限電但影響不大 旅程是從9/19開始到10/3,總計15天 9/19 到新千歲之後要準備過入國審查,這邊很不一樣的是,拍照和按指紋竟然是老人志工來做 在排隊之前,可以到志工那邊先拍照按指紋,接著再去櫃台一下就能過關了 新千歲身為國際機場,行李轉盤卻只有兩個,同時抵達多個航班就必須共用轉盤,不幸排到後面等待時間會長很多 這時想說先拿手機出來聯網,沒想到Pixel 2用softbank只有收到3G訊號,等等這不是機場嗎?? 入境之後,機場裡冷冷清清,往札幌市區的交通工具要先去國內線那邊才有 走在航廈之間的聯絡道路上,電燈只有開一半,電視廣告看板都是關著的,沿途的鐵門也全部拉下來 國內線航廈有一個大廣場,往上一望,所有鐵門都是拉下來的,沒有店家營業 我原本打算坐巴士到市區,要先到地面的站牌去 找到往一樓的電扶梯,被拉起封鎖線,往回找別的電梯下樓,結果一樓的鐵門也是拉下來的…..現在是要玩密室逃脫嗎(崩潰 於是直接放棄坐巴士的念頭改搭JR,至少JR站有路標,不用再花時間找路 機場往札幌的JR除了機場的人之外,更多的是靠火車通勤的當地人,那時剛好是下午四點多,每到一個站,上來的人就越來越多 到札幌站就跟著人潮下車,準備換地鐵到すすきの 札幌的地鐵很古老,很多地方沒有手扶梯或是電梯,帶著行李就代表必須扛起來走 在下班人潮中到了すすきの,回到地面之後準備去住的地方 這邊我想說直接看手機導航就好,沒想到電子指南針又歪了,每次到日本好像都要壞一次Orz 當下先不要管校正,直接走一段路,看人在地圖上是怎麼移動來判斷方向 在札幌的五天都是住在すすきの的ネストホテル札幌大通,就是普通的商務旅館,交通跟住宿品質還算不錯,唯一想抱怨的是電梯很喜歡夾人 check-in的時候用很破的日文和櫃台姐姐溝通,拿護照給他看並寫了資料,通常外國人入住要寫住址的話可以只寫國家名就好 在日本如果遇到你用破日文溝通,對方卻努力跟你用日文的情況,大多是因為他英文也不好,可以把握這種機會練習一下 拿到了長這樣的房門鑰匙,真的可以拿來開門 房間內的電力開關要把鑰匙放在上面,我看了下是金屬感應開關,放100円的硬幣也有反應 行李放好之後到附近找了一間叫做すあげプラス(suage+)的湯咖哩吃晚餐,味道還不錯 晚上就在這地區逛逛 然後把狸小路商店街走一遍,這間唐吉軻德離住的地方很近,適合補貨 唐吉軻德那邊也有地面電車通過 地面電車下方有地下街,但好像沒什麼店有開 狸小路走到最後面有居酒屋 商店街裡面也有這種柏青哥 除此之外還有業務超市跟一堆藥妝店,業務超市的東西真的很便宜,但大多是做菜用的,比較適合觀光客的東西可能是1L裝的冰淇淋吧(? 藥妝店主要配備了說中文的店員,會在路上招攬對中文有點反應的人 走完我就回旅館了 9/20 第二天的行程是札幌市內的景點,早上吃過doutor先去大通公園的電視塔 從電視塔看大通公園 創成川通 足球隊用松山光做廣告 我覺得最詭異的東西是這個電視一家,除了有神社之外,連樓下的桌椅都是他(汗 題外話,電視塔的票可以在樓下的冰淇淋攤打折,沒記錯好像是半價,所以我買了一支ww 接下來是去時計台,可惜他在整修中,只有看到皮(?) 往道廳的路上看到這面牆有很多小洞,不知道用途是什麼 很快就到道廳了,大門旁邊就是札幌市的主要道路起點 舊道廳正面,右後方的大樓是現在的道廳,左邊矮矮的是議會 通往舊道廳的磚瓦路上有寫字,看起來是以北海道各個地區來分類 庭院裡面有水池…

  • 虛擬主機設計與規劃

    最近替主機換新的硬體,順便重新檢視虛擬主機的設計,做些改良後決定寫下來 使用者帳號與網頁檔案 因為規模小,使用者採用unix系統帳戶來管理,網站使用以下的格式放置在每個人的家目錄裡面 /home/{user_name}/sites/{domain_name}/ 每個網站的目錄底下各會有「backup」「log」「temp」「webroot」四個資料夾 「backup」是放定期打包好的網站目錄,畢竟直接用FTP拉一堆資料夾效率很差 「log」有apache_access、apache_error、php_error的檔案,並會定期做logrotate 「temp」是開給php放暫存的檔案,不論是上傳檔案、session、opcache通通在裡面 「webroot」顧名思義就是放網站的地方 整體而言會需要存取家目錄的程式有「httpd」「php-fpm」「vsftpd」「logrotate」這四個 這邊採取的安全措施有三種,略分為「file permission」「software access control」「SELinux context」 「file permission」就是磁碟的權限,家目錄下一律是使用者擁有自己的檔案 「httpd」主動加入使用者的群組,並將家目錄設為群組可讀 「php-fpm」直接以使用者的身分啟動 process 「vsftpd」使用 chroot_local_user 切換成使用者的身分 「logrotate」是 root 身分不受權限影響 「software access control」是軟體本身定義存取的範圍 「httpd」設定 DocumentRoot 在 webroot 「php-fpm」利用 open_basedir 把存取範圍限制在 temp 和 webroot 「vsftpd」使用 chroot 限制在家目錄裡面 「logrotate」從 config 定義 log 的位置 「SELinux context」是系統對軟體的存取控制,可輔助磁碟權限的不足,我對家目錄用了以下規則 semanage fcontext -a -t httpd_log_t ‘/home/[^/]+/sites/[^/]+/log(/.*)?’…

  • Rails container 在 Google Kubernetes Engine 上不正常關閉

    最近在部署rails專案到GKE上,發現rolling update在關掉container時會跳出「Pod errors: Error with exit code 1」,然後狀態變成紅色的 雖然只是要被關閉的pod壞掉不影響更新流程,但偶爾會造成服務中斷,看起來不是件好事 最初推測是puma在關閉的時候有什麼問題,找到一個issue說bundler在1.16版以前跑「bundle exec」會造成puma收到SIGTERM後回傳exit code 1 這現象剛好很符合遇到的情境,但我用的是1.16版以後的bundler,而且測試發現,bash上跑的puma收到SIGTERM會正確的回傳code 143,唯有放在container裡用docker開起來,傳送SIGTERM才會遇到code 1的結果 當時完全沒有頭緒,過了幾天同事剛好提到說他以前有看過一個叫做dumb-init的東西 dumb-init是設計給container用的init process,有回收process和轉送signal的功能,至於為什麼container還需要init process的原因可以看這一篇文章的說明 查了之後覺得可能很有幫助,畢竟bundler跟puma都曾有過signal處理不好的問題,而且在bash上可以正確關閉,代表直接把puma放在PID 1會缺某種東西 一試用下去,puma還真的能正確回傳code 143了,正想說可以放上GKE的時候,GKE又亮紅燈了…. 他對143這個回答也不高興Orz code 143是由128 + 15組成,signal 15也就是SIGTERM,不一定是異常的狀態 為了要讓GKE滿意,只好想怎麼把code變成0 翻了翻手冊並測試確定puma在收到SIGINT時會回傳code 0,剛好dumb-init有支援signal rewrite,可以直接把SIGTERM改成SIGINT傳給puma 於是最終透過dumb-init成功解決了exit code造成GKE不爽的問題 另外有個值得注意的地方是docker的entrypoint跟cmd分別等於kubernetes的command跟args,如果設錯會產生不同的效果,細節可以看手冊的Notes

  • Database Query 最佳化實記

    兩三個月前遇到一個嚴重拖垮公司資料庫的query,好死不死那個API又是流量主要會出現的點,身為社畜只好想辦法把它解決掉,就這樣我看了一整周的db console和mysql手冊,最後想出一個只需最小修改就能達成的最佳化方案 先說明一下問題點的架構,這邊的設計以正規化來說我是覺得沒問題的 食譜和分類是傳統的多對多關係,因此會有一張中間表;分類本身則是有自我關聯的上下層關係 應用上的需求是這樣的:給定某個分類,找出該分類(置頂與不置頂)及其子分類(不置頂)下的所有食譜(不能重複),並以「是否置頂」和「發表時間」進行排序 系統原設計是先抓出所有分類ID(某分類及其子分類)後,才進行傳統的join去從分類ID找食譜,這部分因為分類數量不會很大,所以我認為還堪用就不進行修改 真正的瓶頸在後面,當時query長這個樣子 一開始的想法是order由兩張表的欄位組成,照手冊的說法不會利用到index,所以試著在category_recipes上面做非正規化,加了一個published_at,值則是利用model callback從recipe同步過來 可惜這樣跑起來還是不快 後來想到distinct比較的是所有欄位,但index裡面不可能有所有欄位,就往group的方向去思考 反正只要id是唯一的,得到的東西就不會重複 於是query變成這樣 雖然感覺方向對了,但效能還是沒到理想的狀態 手冊又翻了半天才理解出: – index 的利用是從左到右 – GROUP BY 和 ORDER BY 共用同一個 index – GROUP BY 和 ORDER BY 如果有任何一個方向不同就不能用 index 如果能在recipe_id之前用is_sticky和published_at做group的話不是就能用到index了? 很幸運的實驗有成功,資料結果和排序也正確 query最終變成了這樣 index的部分我試出這幾種,第一種是效率最高的,雖然只能用到OFFSET 330左右但很夠了 OFFSET如果更大的話,資料庫會選擇其他兩種並建立暫存表和使用filesort 到這邊總算解決query時的效能問題…以為就這樣結束了嗎? 改完後發現分頁套件(kaminari)在計算總數的時候會觸發ActiveRecord組錯SQL的現象,一查才發現是它不支援descending count,原本還想去修,但我才發現group根本不能拿來count我要的東西 為什麼?因為我想count的是總數,並不是group完分別的數字,因此計算總數的時候還是要回去用distinct 這邊有個比較簡單的想法,因為ActiveRecord的count屬於terminal method(終點站),所以可以直接在上面做切換機制 但問題又來了,ActiveRecord的語法是用串的,我要怎麼知道先前有串過group?而且不是所有group都需要換回去distinct,該怎麼分辨? 後來想到的方法是透過SQL comment傳遞訊息,直接在group裡面給字串的時候插一個特定的comment進去,再由count那邊去判斷就好了 到這邊才成功解決這個query的效能問題,資料庫CPU使用率和反應速度都有大幅改進,使用者終於不用等到斷線了QQ 2019/01/10 更新 後來遇到特定分類在抓資料的時候無法使用效率最好的index,會產生不必要的系統負擔 解法是透過FORCE INDEX指定query能用的index,避免optimizer選了錯誤的選項…

  • Ruby on Rails after_create_commit 重複執行

    在處理after_create_commit這個callback時,發現會有重複執行的問題,最初觀察到的現象是會執行兩次 經過多次修改嘗試後,確定問題是出在callback內更新,單純在裡面放logger丟訊息並不會重複 google後才發現這問題從Rails 4.0就有了(汗 後續也不斷有issue被提出來,不過都沒有去解決 要重現這個問題很簡單,只要弄一個像這樣的Model,然後對它create就能看到無限迴圈 目前我的解法是透過after_commit_everywhere這個套件,將程式碼直接掛在當下執行時的transaction上,由於不牽涉到rails本身的transaction運作,所以不會遇到重複的雷 還好最近終於有人去修這個問題了(ae028984),不過因為是剛弄上去的,要包進release可能還要些時間

  • 如何更改Windows環境下的DNS設定

    雖然說更換DNS設定這件事不難,但應該有不少人不會操作,所以這篇就是來解說的~

  • Mail server on Fedora 26

    備註:這篇是修改自三年前的「Mail server on CentOS 6」,加上些新的內容和補充 本文開始~~ 一般來說email是由三個部分組成,Mail (Transfer/Delivery/User) Agent,為什麼wiki上說有五種呢?因為MSA和MRA通常是包含在前面三種裡 在伺服端的重點是MTA跟MDA,負責收發跟儲存信的兩個部分,這邊我們用postfix和dovecot來實作 套件 在開始之前,先安裝必須的軟體 SSL憑證 由於這個教學會設定成提供加密連線,憑證是必需品 dovecot在安裝後會自動產生一組self-signed cert,放在/etc/pki/dovecot裡面,不過還是建議向CA申請,避免使用者在連線時會出現錯誤 向CA拿到憑證之後,就直接放在/etc/pki/dovecot/certs/裡面,私鑰則是/etc/pki/dovecot/private/ 如果CA有中繼憑證(intermediate certificate)的話,只需把中繼憑證以倒敘的方式append在自己的憑證後面即可 最後,檢查憑證跟私鑰的selinux context和存取權限,權限建議是root:root 600 selinux在enforcing的情況下,context如果不是「unconfined_u:object_r:dovecot_cert_t:s0」,會造成dovecot無法啟動的狀況(permission denied) 如果使用Let’s encrypt作為CA的話,可以不用搬到/etc/pki/dovecot/裡面,直接指向/etc/letsencrypt底下的憑證即可 MySQL 首先是產生所需的db和table,使用mysql root來執行以下語句 到這邊就新增完成了,記得先用select看一下DB的內容是否正確 Postfix 首先到/etc/postfix/main.cf去看看 基本設定主要是和本機(localhost)有關,我們的信箱會使用虛擬網域來收發信 在這之前,先把驗證和加密的功能設定好 再來是設定虛擬信箱 馬上就來新增剛剛寫的mysql檔案,總共有三個 存好之後使用chmod修改存取權限為600以免DB密碼被看到 然後使用以下指令來驗證上述三個檔案是不是正確設定 如果設定正確,應該會看到網域或是信箱,什麼都沒有代表失敗,就要檢查設定或是資料庫是否有問題 最後修改/etc/postfix/master.cf,開放465和587的port Postfix到這邊就完成了,記得要替防火牆開port 25, 465, 587,然後重開postfix服務 Dovecot dovecot的主要設定都在conf.d裡,我們逐步來修改 來弄資料夾的部分 過來是驗證的部分 來到剛剛引入的auth-sql.conf.ext 沿著剛剛的args繼續往下做回到上一層新增dovecot-sql.conf.ext pass_scheme選SHA512-CRYPT的原因是插入使用者資料時使用$6$作為參數呼叫ENCRYPT(),libc的crypt()在hash時會知道我們要使用SHA512 進入倒數第二個部分,dovecot的socket 最後是SSL的設定 大功告成! 一樣記得開防火牆的port…

  • Google Pixel 2

    原本用的Nexus 5X在一年半的時候爆發bootloop,原本還想撐久一點的QQ 那時剛好是8月,市場上都還是舊機型,就先用3G手機撐到各家發表會 原本物色索索的XZ1和XZ1C,這兩台都很不錯,唯一讓我放棄的點是他的電源鍵做在側面中央,握在手心的時候拇指沒辦法按到….. 於是我最後選了G社的Pixel 2,因為台灣沒有賣所以用代運的方式送回來,美買國際的包稅運送方案是秤重,剛好很適合手機這種輕又高單價的東西,我只花了380台幣就運回來了 從美國倉庫送回來其實很快,週一上飛機週三就到海關,花一天清關,再加上一天國內宅配,我週五就收到了 出乎意料是台灣製,不過大老遠從美國買台灣貨回來…(´・ω・`) 裡面的配件:充電器、USB-C線、USB-C轉USB-A母、USB-C轉3.5mm 充電器是5V3A和9V2A,照google的習慣應該會用USB-PD而不是QC 機身是金屬外殼,有點噴砂的效果,手有點汗的話是還滿止滑,完全乾燥拿的時候要小心滑掉 我很喜歡方形的機身,握起來比較紮實也不容易掉 相機功能滿強的,顏色調得不錯,白天照下來的細節也快和相機一樣 開箱就到這邊,用可愛的ちなつ做個結尾