<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7875516775538579988</id><updated>2026-08-23T16:56:12.257+08:00</updated><category term="電腦"/><category term="Python"/><category term="飲食"/><category term="Raspberry Pi"/><category term="Mac"/><category term="旅遊 法國"/><category term="居家"/><category term="遊戲"/><category term="打果汁"/><category term="生活雜記"/><category term="旅遊 美國"/><category term="購物"/><category term="GAE"/><category term="旅遊 德國"/><category term="Verilog"/><category term="遊戲 - Castle Age"/><category term="iPhone"/><category term="遊戲 - Pokemon Go"/><category term="TradingView"/><category term="旅遊 台灣"/><category term="旅遊 瑞士"/><category term="PHP"/><category term="Tesla"/><category term="網頁"/><category term="Litecoin"/><category term="旅遊 加拿大"/><title type='text'>SKiFF</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://skiffc.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7875516775538579988/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://skiffc.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/7875516775538579988/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>SKiFF</name><uri>http://www.blogger.com/profile/11221285469631780759</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>274</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7875516775538579988.post-8047976431689038005</id><published>2026-08-16T14:08:33.113+08:00</published><updated>2026-08-16T14:08:33.113+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="旅遊 加拿大"/><title type='text'>Banff 旅遊季節提醒：避開野火霧茫茫的季節</title><content type='html'>&lt;p&gt;這次八月初來到 Banff，本來滿心期待，結果遇到森林野火，好幾天都是這樣霧茫茫的一片，拍不到心中期待的大景色。&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDWR7bq_pOcfTwm4vQ9LYZLnW6hYqEyNnNgtf6_NU81i-DUgqO6AeVLjZMjxtqut-iKe8MMpBC1bi6mmgHAUVxCyQPSIQu00sOFweF26Zm6n-f-POFErldyG6TgzqzUaWqwKjxmkyCnpPyY9bvHhku0lwkKp0xhRey-zn4mceVFkDtkiikMuPD6rqoFjc/s4898/DSC08275.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;3265&quot; data-original-width=&quot;4898&quot; height=&quot;426&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDWR7bq_pOcfTwm4vQ9LYZLnW6hYqEyNnNgtf6_NU81i-DUgqO6AeVLjZMjxtqut-iKe8MMpBC1bi6mmgHAUVxCyQPSIQu00sOFweF26Zm6n-f-POFErldyG6TgzqzUaWqwKjxmkyCnpPyY9bvHhku0lwkKp0xhRey-zn4mceVFkDtkiikMuPD6rqoFjc/w640-h426/DSC08275.JPG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDWR7bq_pOcfTwm4vQ9LYZLnW6hYqEyNnNgtf6_NU81i-DUgqO6AeVLjZMjxtqut-iKe8MMpBC1bi6mmgHAUVxCyQPSIQu00sOFweF26Zm6n-f-POFErldyG6TgzqzUaWqwKjxmkyCnpPyY9bvHhku0lwkKp0xhRey-zn4mceVFkDtkiikMuPD6rqoFjc/s4898/DSC08275.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgU1OC4t8I6mY0sIkTUyXQKBNIJ41MO6_ToMXTjxUEAsVUjor6vnUwh8-v1p3-c8JY4f-dSQNzw062abKdqXHCIKyrsPcK30XA46w3trb1JXLXvV70dPpxM27R3yp1f2W-rsQ1u6l6y_ca0xVggoflwFXRWX8E1N5rvW3aTizUUJfXCDL0XtZ96BC3-50k/s6192/DSC00043.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;/a&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgU1OC4t8I6mY0sIkTUyXQKBNIJ41MO6_ToMXTjxUEAsVUjor6vnUwh8-v1p3-c8JY4f-dSQNzw062abKdqXHCIKyrsPcK30XA46w3trb1JXLXvV70dPpxM27R3yp1f2W-rsQ1u6l6y_ca0xVggoflwFXRWX8E1N5rvW3aTizUUJfXCDL0XtZ96BC3-50k/s6192/DSC00043.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlU-EZhMTikkKJSunPbNOm7IZWx9PFlZQUUV3KapobyJV1fOxJNJdzk6A40zU8niAYE1PU6tepdRwz1ePMFtkFFvAu5GBmbQpwAS4RSVOuKMt7nGjhlDlVwLxZH14iVuz22Qp72__OfvPcbEMsJxB6zKzwT-h_WjeYNHTqN-YCgewPqY_22u4g18wEgCs/s6192/DSC08499.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;4128&quot; data-original-width=&quot;6192&quot; height=&quot;426&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlU-EZhMTikkKJSunPbNOm7IZWx9PFlZQUUV3KapobyJV1fOxJNJdzk6A40zU8niAYE1PU6tepdRwz1ePMFtkFFvAu5GBmbQpwAS4RSVOuKMt7nGjhlDlVwLxZH14iVuz22Qp72__OfvPcbEMsJxB6zKzwT-h_WjeYNHTqN-YCgewPqY_22u4g18wEgCs/w640-h426/DSC08499.JPG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;6192&quot; data-original-width=&quot;4128&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgU1OC4t8I6mY0sIkTUyXQKBNIJ41MO6_ToMXTjxUEAsVUjor6vnUwh8-v1p3-c8JY4f-dSQNzw062abKdqXHCIKyrsPcK30XA46w3trb1JXLXvV70dPpxM27R3yp1f2W-rsQ1u6l6y_ca0xVggoflwFXRWX8E1N5rvW3aTizUUJfXCDL0XtZ96BC3-50k/w426-h640/DSC00043.JPG&quot; width=&quot;426&quot; /&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;跟當地人聊天，得知其實比較推薦的旅遊季節，應該是六月底到七月初，比較不會被煙霧影響。不過有人說六月比較會下雨，但經過這次的經驗，下雨空氣乾淨還是比較好看，而且我們在 Banff 遇到的雨都很小，毛毛雨，很多人根本不撐傘。只有到了 Calgary 才遇到一場有像台灣的下雨。&lt;p&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;若行程有彈性，可以先看一下 firesmoke.ca (&lt;a href=&quot;https://firesmoke.ca/&quot;&gt;https://firesmoke.ca/&lt;/a&gt;)，預估兩天內的煙霧狀況，決定行程內容。&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;也可以直接看 Banff Gondola Webcam (&lt;a href=&quot;https://www.banffjaspercollection.com/attractions/banff-gondola/webcams/&quot;&gt;https://www.banffjaspercollection.com/attractions/banff-gondola/webcams/&lt;/a&gt;)，或是 Lake Louise Ski Webcam (&lt;a href=&quot;https://www.skilouise.com/mountain-cam/&quot;&gt;https://www.skilouise.com/mountain-cam/&lt;/a&gt;) 確認當下的真實能見度。&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://skiffc.blogspot.com/feeds/8047976431689038005/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7875516775538579988/8047976431689038005' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7875516775538579988/posts/default/8047976431689038005'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7875516775538579988/posts/default/8047976431689038005'/><link rel='alternate' type='text/html' href='http://skiffc.blogspot.com/2026/08/banff.html' title='Banff 旅遊季節提醒：避開野火霧茫茫的季節'/><author><name>SKiFF</name><uri>http://www.blogger.com/profile/11221285469631780759</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDWR7bq_pOcfTwm4vQ9LYZLnW6hYqEyNnNgtf6_NU81i-DUgqO6AeVLjZMjxtqut-iKe8MMpBC1bi6mmgHAUVxCyQPSIQu00sOFweF26Zm6n-f-POFErldyG6TgzqzUaWqwKjxmkyCnpPyY9bvHhku0lwkKp0xhRey-zn4mceVFkDtkiikMuPD6rqoFjc/s72-w640-h426-c/DSC08275.JPG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7875516775538579988.post-7573101435734612898</id><published>2026-08-16T10:21:57.486+08:00</published><updated>2026-08-16T10:27:39.645+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="iPhone"/><title type='text'>iPhone 雙卡雙待收不到簡訊的隱藏 Bug 與破解法</title><content type='html'>&lt;div style=&quot;font-family: sans-serif; font-size: 14px; line-height: 1.6;&quot;&gt;&lt;br /&gt;
 近期出國旅遊時，在通訊上我遇到了一個非常經典、差點搞死我的 iPhone 雙卡雙待 Bug。&lt;br /&gt;&lt;br /&gt;這次出國旅遊，需要一支加拿大的門號，打算不要開原機漫遊。因為早先去美國出差發現現在已經有 VoWIFI ，即便沒有開漫遊也可以收簡訊。&lt;/div&gt;&lt;div style=&quot;font-family: sans-serif; font-size: 14px; line-height: 1.6;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;font-family: sans-serif; font-size: 14px; line-height: 1.6;&quot;&gt;
 這套劇本聽起來很完美，但如果你是用 iPhone 雙卡雙待，請一定要注意下面這個致命陷阱！&lt;br /&gt;&lt;br /&gt;
 慘痛經驗：收不到 OTP 簡訊的崩潰&lt;br /&gt;&lt;br /&gt;
 出國時，我的 iPhone 設定通常如下：&lt;br /&gt;
 [主要] 台灣實體 SIM 卡 (以中華電信為例)：留著收簡訊用。&lt;br /&gt;
 [旅遊] 當地 eSIM 網卡：負責在外面的上網導航。&lt;br /&gt;&lt;br /&gt;
 我以為一切都設定好了。結果在旅程中，我完全沒有收到半封台灣的簡訊！出國不管是逛街購物刷卡、登入網銀，把新的信用卡加入 Apple Pay，都需要 OTP 簡訊驗證。但都收不到簡訊，也不知道為什麼，造成極大的麻煩。&lt;/div&gt;&lt;div style=&quot;font-family: sans-serif; font-size: 14px; line-height: 1.6;&quot;&gt;&lt;br /&gt;
 一開始我以為是剛好沒訊息，直到旅程快結束了，一直沒收到機場接送的訊息，才終於發現這根本是 iPhone 雙卡切換的隱藏 Bug！&lt;br /&gt;&lt;br /&gt;
 為什麼會這樣？(Bug 解析)&lt;br /&gt;&lt;br /&gt;
 當你同時開著兩張卡，iPhone 有時候會「卡住」。你的台灣主門號會一直傻傻地在背景尋找國外的漫遊基地台，而不會主動切換到「透過 Wi-Fi 接收訊號」的模式。結果就是：漫遊連不上，Wi-Fi 通話也沒啟動，你的台灣門號直接進入失聯狀態。&lt;br /&gt;&lt;br /&gt;
 終極破解法：先關掉加拿大門號(eSim)，反覆用飛航模式逼它重新抓取，直到連上 CHT Wi-Fi 後再開啟加拿大門號。&lt;br /&gt;&lt;br /&gt;
 如果你出國也遇到收不到簡訊的問題，請跟著我這樣做：&lt;br /&gt;&lt;br /&gt;
 第一步：連上穩定網路&lt;br /&gt;
 確認手機已經連上飯店或機場的 Wi-Fi。&lt;br /&gt;&lt;br /&gt;
 第二步：確認功能已開&lt;br /&gt;
 進到「設定」&amp;gt;「行動服務」&amp;gt; 點選你的台灣門號，確認裡面的「Wi-Fi 通話」是有打開的。&lt;br /&gt;&lt;br /&gt;
 第三步：關鍵大絕招（反覆重置）&lt;br /&gt;
 下拉控制中心，把「飛航模式」打開，等 5 秒鐘，再關掉。&lt;br /&gt;
 如果沒反應，進到設定裡，把台灣那個行動方案「關閉」再「重新打開」。&lt;br /&gt;
 重複這個動作，強迫 iPhone 重新尋找訊號路由。&lt;br /&gt;&lt;br /&gt;
 點亮那一盞明燈：「CHT Wi-Fi」&lt;br /&gt;&lt;br /&gt;
 當你反覆刺激它之後，請滑開左上角的控制中心，盯著左上角的電信商名稱看。直到你看到原本只有寫著「中華電信」的地方，突然變成了「CHT Wi-Fi」，恭喜你，成功了！&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiLlpoLnPjs8Dw3jVJBeB7AWEnmH1R0YORupbr-rsM80oz5aJSo6lL7n32jimM1cz67g0JkyQHPbFw-7BmfbZR6_WjgENWt36nLnVEDZhv4-LrGDUCoZasSNxMsXV32xjWGK-vzGfPmVI_lfinFpZZ-8clqFVuhLl6giFuItZMe4cDrEIi21IQldoCLlg0&quot;&gt;&lt;img alt=&quot;Uploaded Image&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiLlpoLnPjs8Dw3jVJBeB7AWEnmH1R0YORupbr-rsM80oz5aJSo6lL7n32jimM1cz67g0JkyQHPbFw-7BmfbZR6_WjgENWt36nLnVEDZhv4-LrGDUCoZasSNxMsXV32xjWGK-vzGfPmVI_lfinFpZZ-8clqFVuhLl6giFuItZMe4cDrEIi21IQldoCLlg0=s320&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
 當這幾個神奇的字亮起來的瞬間，幾分鐘內台灣簡訊，就進來了。不過因為簡訊太久沒送達會自動丟掉，所以我大約也只能收到當天的訊息。&lt;br /&gt;&lt;br /&gt;
 從這一刻起，你不僅可以順利接收所有銀行與 Apple Wallet 的 OTP 簡訊，在打電話時，iPhone 還會貼心地讓你選擇：是要用國外號碼打當地餐廳，還是用台灣號碼免費打回家！&lt;br /&gt;&lt;br /&gt;
 下次出國，落地到飯店的第一件事，別忘了先檢查左上角有沒有點亮你的 Wi-Fi 通話喔！&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://skiffc.blogspot.com/feeds/7573101435734612898/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7875516775538579988/7573101435734612898' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7875516775538579988/posts/default/7573101435734612898'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7875516775538579988/posts/default/7573101435734612898'/><link rel='alternate' type='text/html' href='http://skiffc.blogspot.com/2026/08/iphone-bug.html' title='iPhone 雙卡雙待收不到簡訊的隱藏 Bug 與破解法'/><author><name>SKiFF</name><uri>http://www.blogger.com/profile/11221285469631780759</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEiLlpoLnPjs8Dw3jVJBeB7AWEnmH1R0YORupbr-rsM80oz5aJSo6lL7n32jimM1cz67g0JkyQHPbFw-7BmfbZR6_WjgENWt36nLnVEDZhv4-LrGDUCoZasSNxMsXV32xjWGK-vzGfPmVI_lfinFpZZ-8clqFVuhLl6giFuItZMe4cDrEIi21IQldoCLlg0=s72-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7875516775538579988.post-8995327962653887274</id><published>2025-05-07T13:53:00.005+08:00</published><updated>2025-05-07T13:57:59.626+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="居家"/><title type='text'>悅夢床墊</title><content type='html'>&lt;div _ngcontent-ng-c2049646918=&quot;&quot; class=&quot;markdown markdown-main-panel stronger has-thoughts enable-updated-hr-color&quot; dir=&quot;ltr&quot; id=&quot;model-response-message-contentr_992b34e1ebf6ea9f&quot; style=&quot;--animation-duration: 400ms; --fade-animation-function: linear; animation: 0s ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px none rgb(27, 28, 29); clear: none; clip: auto; color: #1b1c1d; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 16px; font-stretch: normal; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(27, 28, 29) none 0px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;&quot;&gt;&lt;p style=&quot;animation: 0s ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px none rgb(27, 28, 29); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex: 0 1 auto; float: none; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 16px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px 0px 16px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(27, 28, 29) none 0px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;&quot;&gt;&lt;/p&gt;&lt;h2 style=&quot;animation: 0s ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px none rgb(27, 28, 29); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 20px; font-stretch: normal; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 8px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px 0px 8px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(27, 28, 29) none 0px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;最近，我們向悅夢床墊購買了第二張床墊。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzYGrljG5U6sE73wr5xziWQLVVyUUZAYgp2V6RoQc8By_tELqKtDo16cNnfLLMXpShoPBXKpQcwkdVhz75O2rs1_9lRbcYee6vG73llAplSx3BtcJTGrtsDW4tkt7gD7_Xk5DvgI087qaPVeLnpFbT5-i_jM7zbmhUd4ecpqa5jowOnOirUy-8aLBaM_M/s4080/PXL_20250507_035328682.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;3072&quot; data-original-width=&quot;4080&quot; height=&quot;482&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzYGrljG5U6sE73wr5xziWQLVVyUUZAYgp2V6RoQc8By_tELqKtDo16cNnfLLMXpShoPBXKpQcwkdVhz75O2rs1_9lRbcYee6vG73llAplSx3BtcJTGrtsDW4tkt7gD7_Xk5DvgI087qaPVeLnpFbT5-i_jM7zbmhUd4ecpqa5jowOnOirUy-8aLBaM_M/w640-h482/PXL_20250507_035328682.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;還記得三年前，我們第一次到竹北悅夢床墊試躺的美好經驗。那天一進到店裡，店員親切的為我們用精油酒精消毒手部、更換室內拖鞋、介紹床墊的硬度，接著便給我們拋棄式枕巾，讓我們自由試躺，期間從來不曾打擾我們。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;床的硬度由硬而軟分為九種，其中四號床，一躺下便覺得好舒服啊！厚厚的舒適層給人放鬆的包覆感，底下的彈簧又Ｑ又彈，而且是採用中鋼的彈簧！於是我們訂購了四號床。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;這幾年使用下來，真的很舒服，也不悶熱。由於打算汰換另一張使用多年的床墊，我們決定再買第二張床墊。加上敏感的我覺得床墊回軟，有明顯的睡眠區域，於是我們又回到悅夢購買了硬度更堅挺、舒適層較薄的三號床。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;再次回購，是因爲喜歡悅夢床墊的整體品質：鋼圈和層層用料的材質、品質都經過精心設計，售後保固服務讓人放心，銷售人員專業又親切。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;誠摯推薦給大家！&lt;/span&gt;&lt;/p&gt;&lt;/h2&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skiffc.blogspot.com/feeds/8995327962653887274/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7875516775538579988/8995327962653887274' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7875516775538579988/posts/default/8995327962653887274'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7875516775538579988/posts/default/8995327962653887274'/><link rel='alternate' type='text/html' href='http://skiffc.blogspot.com/2025/05/blog-post.html' title='悅夢床墊'/><author><name>SKiFF</name><uri>http://www.blogger.com/profile/11221285469631780759</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzYGrljG5U6sE73wr5xziWQLVVyUUZAYgp2V6RoQc8By_tELqKtDo16cNnfLLMXpShoPBXKpQcwkdVhz75O2rs1_9lRbcYee6vG73llAplSx3BtcJTGrtsDW4tkt7gD7_Xk5DvgI087qaPVeLnpFbT5-i_jM7zbmhUd4ecpqa5jowOnOirUy-8aLBaM_M/s72-w640-h482-c/PXL_20250507_035328682.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7875516775538579988.post-7681722692992890572</id><published>2023-12-22T00:16:00.001+08:00</published><updated>2023-12-22T00:33:10.662+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Tesla"/><title type='text'>Model Y Auto-Pilot 心得</title><content type='html'>&lt;p&gt;開了一個月的 Model Y，基於之前開車的經驗，做些心得整理。&lt;/p&gt;&lt;p&gt;目前我的 Model Y 有下面三種等級。&lt;/p&gt;&lt;p&gt;&lt;google-sheets-html-origin&gt;&lt;/google-sheets-html-origin&gt;&lt;/p&gt;&lt;table border=&quot;1&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; data-sheets-root=&quot;1&quot; dir=&quot;ltr&quot; style=&quot;border-collapse: collapse; border: none; font-family: Arial; font-size: 10pt; table-layout: fixed; width: 0px;&quot; xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;&lt;colgroup&gt;&lt;col width=&quot;100&quot;&gt;&lt;/col&gt;&lt;col width=&quot;100&quot;&gt;&lt;/col&gt;&lt;col width=&quot;100&quot;&gt;&lt;/col&gt;&lt;col width=&quot;100&quot;&gt;&lt;/col&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td style=&quot;border: 1px solid rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;ACC&amp;quot;}&quot; style=&quot;border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(0, 0, 0) rgb(204, 204, 204); border-image: initial; border-style: solid; border-width: 1px; overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;ACC&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;LKA&amp;quot;}&quot; style=&quot;border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(0, 0, 0) rgb(204, 204, 204); border-image: initial; border-style: solid; border-width: 1px; overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;LKA&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;EAP&amp;quot;}&quot; style=&quot;border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(0, 0, 0) rgb(204, 204, 204); border-image: initial; border-style: solid; border-width: 1px; overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;EAP&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;功能&amp;quot;}&quot; style=&quot;border-color: rgb(204, 204, 204) rgb(0, 0, 0) rgb(0, 0, 0); border-image: initial; border-style: solid; border-width: 1px; overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;功能&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;跟車, 車主要轉方向盤&amp;quot;}&quot; style=&quot;border-color: rgb(204, 204, 204) rgb(0, 0, 0) rgb(0, 0, 0) rgb(204, 204, 204); border-image: initial; border-style: solid; border-width: 1px; overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;跟車, 車主要轉方向盤&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;車子控制車速跟方向盤&amp;quot;}&quot; style=&quot;border-color: rgb(204, 204, 204) rgb(0, 0, 0) rgb(0, 0, 0) rgb(204, 204, 204); border-image: initial; border-style: solid; border-width: 1px; overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;車子控制車速跟方向盤&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;下交流道時, 車子會打方向燈, 換線 &amp;quot;}&quot; style=&quot;border-color: rgb(204, 204, 204) transparent rgb(0, 0, 0) rgb(204, 204, 204); border-image: initial; border-style: solid; border-width: 1px; overflow: visible; padding: 2px 0px; vertical-align: bottom;&quot;&gt;&lt;div style=&quot;left: 3px; overflow: hidden; position: relative; white-space: nowrap; width: 297px;&quot;&gt;&lt;div style=&quot;float: left;&quot;&gt;下交流道時, 車子會打方向燈, 換線&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;硬轉方向盤&amp;quot;}&quot; style=&quot;border-color: rgb(204, 204, 204) rgb(0, 0, 0) rgb(0, 0, 0); border-image: initial; border-style: solid; border-width: 1px; overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;硬轉方向盤&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;無影響, ACC 維持&amp;quot;}&quot; style=&quot;border-color: rgb(204, 204, 204) rgb(0, 0, 0) rgb(0, 0, 0) rgb(204, 204, 204); border-image: initial; border-style: solid; border-width: 1px; overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;無影響, ACC 維持&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;降級到 ACC&amp;quot;}&quot; style=&quot;border-color: rgb(204, 204, 204) rgb(0, 0, 0) rgb(0, 0, 0) rgb(204, 204, 204); border-image: initial; border-style: solid; border-width: 1px; overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;降級到 ACC&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;降級到 ACC&amp;quot;}&quot; style=&quot;border-color: rgb(204, 204, 204) rgb(0, 0, 0) rgb(0, 0, 0) rgb(204, 204, 204); border-image: initial; border-style: solid; border-width: 1px; overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;降級到 ACC&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;踩剎車&amp;quot;}&quot; style=&quot;border-color: rgb(204, 204, 204) rgb(0, 0, 0) rgb(0, 0, 0); border-image: initial; border-style: solid; border-width: 1px; overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;踩剎車&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;完全解除 ACC&amp;quot;}&quot; style=&quot;border-color: rgb(204, 204, 204) rgb(0, 0, 0) rgb(0, 0, 0) rgb(204, 204, 204); border-image: initial; border-style: solid; border-width: 1px; overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;完全解除 ACC&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;完全解除 ACC, LKA&amp;quot;}&quot; style=&quot;border-color: rgb(204, 204, 204) rgb(0, 0, 0) rgb(0, 0, 0) rgb(204, 204, 204); border-image: initial; border-style: solid; border-width: 1px; overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;完全解除 ACC, LKA&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;完全解除 ACC, LKA, EAP&amp;quot;}&quot; style=&quot;border-color: rgb(204, 204, 204) transparent rgb(0, 0, 0) rgb(204, 204, 204); border-image: initial; border-style: solid; border-width: 1px; overflow: visible; padding: 2px 0px; vertical-align: bottom;&quot;&gt;&lt;div style=&quot;left: 3px; overflow: hidden; position: relative; white-space: nowrap; width: 196px;&quot;&gt;&lt;div style=&quot;float: left;&quot;&gt;完全解除 ACC, LKA, EAP&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;往上撥桿&amp;quot;}&quot; style=&quot;border-color: rgb(204, 204, 204) rgb(0, 0, 0) rgb(0, 0, 0); border-image: initial; border-style: solid; border-width: 1px; overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;往上撥桿&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;完全解除 ACC&amp;quot;}&quot; style=&quot;border-color: rgb(204, 204, 204) rgb(0, 0, 0) rgb(0, 0, 0) rgb(204, 204, 204); border-image: initial; border-style: solid; border-width: 1px; overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;完全解除 ACC&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;完全解除 ACC, LKA&amp;quot;}&quot; style=&quot;border-color: rgb(204, 204, 204) rgb(0, 0, 0) rgb(0, 0, 0) rgb(204, 204, 204); border-image: initial; border-style: solid; border-width: 1px; overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;完全解除 ACC, LKA&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;完全解除 ACC, LKA, EAP&amp;quot;}&quot; style=&quot;border-color: rgb(204, 204, 204) transparent rgb(0, 0, 0) rgb(204, 204, 204); border-image: initial; border-style: solid; border-width: 1px; overflow: visible; padding: 2px 0px; vertical-align: bottom;&quot;&gt;&lt;div style=&quot;left: 3px; overflow: hidden; position: relative; white-space: nowrap; width: 196px;&quot;&gt;&lt;div style=&quot;float: left;&quot;&gt;完全解除 ACC, LKA, EAP&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;div&gt;由於試駕的時候，並沒很理解發生什麼事，加上還不熟悉時也不可能去看中控面板搞清楚狀況，所以雖然這個表很直覺，跟過去開的有 L2 的車並沒太大差異，但事實上還是自己開了幾天後，才慢慢摸熟。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;但有兩點想特別說的。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;第一點是在 Tesla One pedal mode 下，其實踩煞車解除 ACC, LKA, EAP 這個操作，比起我以前揩油車的經驗，真的是危險很多。主要是因為油車輕踩一下剎車解除跟車之後，還是會持續滑行，降速的過程是相當緩慢的，因此有很足夠的時間來補油門。而若是需要急煞的時候，則是重踩，這個場景，兩者也差不多。 但在 Model Y 上的操作是，用輕踩煞車解除ACC後，得在約一秒內趕快補電門（補的力道，也需要練習），不然車子很快會降速，感覺很容易出車禍。因此心得是，非常不建議再用輕踩煞車解除跟車。通常在無前車，但需要轉彎時，開油車時可以這樣一氣呵成的降速轉彎，再重新開啟定速跟車，但開Model Y覺得是用撥桿解除比較保險，而在解除之前需要先踩一下電門，感覺一下踩的力道跟目前車速有搭配才行。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;第二點是EAP會自動下交流道這件事。基本上車子並沒有任何事先預警或提示，只要是沒有要切出去的車道沒車子擋住，打個燈馬上就切過去了。加上Model Y原本換線切的都很猛，如果不是原本就有在注意，可能會真的會被嚇一跳。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;目前還蠻享受EAP幫忙換車道的感覺，只要打個方向燈，車子會找安全的時間換線。但除了這個之外，三不五時一直建議換線，擋住一些資訊，常要自己去取消。跟下交流道時，常常不知道車子到底會不會下，下交流道後通常很快又有左右分叉決定要選邊，車子也頗快，選擇時間很短，車子又在最後一刻才動作，甚至有不知道為什麼，明明沒車也沒走對邊，搞得自己看的緊張兮兮的。因此估計試用期過後，就不會再用EPA了。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;雖然 Tesla AP 的確在不少地方比過去開過的 L2 駕駛智慧，會多做一點事情，但同時也會多做很多不必要的操作，其中最恐怖的就是沒狀況但突然減速、急煞。過去因為車子的 L2 笨，但邏輯簡單，其實有注意在開車的話，對車子的掌控跟預期是頗有信任感的。但 AP 有時真的不知道他在想什麼，結果反而除了注意有沒特別路況外，還要特別注意車子突然煞車、減速，得趕快去補油門，目前感覺起來並不是輕鬆，開的緊張兮兮。對了，真的老老實實握著方向盤，卻一直要求兩三分鐘就要轉動方向盤，一趟高速公路開下來，煩都煩死了。&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skiffc.blogspot.com/feeds/7681722692992890572/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7875516775538579988/7681722692992890572' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7875516775538579988/posts/default/7681722692992890572'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7875516775538579988/posts/default/7681722692992890572'/><link rel='alternate' type='text/html' href='http://skiffc.blogspot.com/2023/12/model-y-auto-pilot.html' title='Model Y Auto-Pilot 心得'/><author><name>SKiFF</name><uri>http://www.blogger.com/profile/11221285469631780759</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7875516775538579988.post-2529124841667733450</id><published>2023-11-19T17:39:00.006+08:00</published><updated>2023-11-19T17:58:40.396+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Tesla"/><title type='text'>Model Y 聲控打開前行李箱：打開前車廂</title><content type='html'>&lt;p&gt;Model Y 長按右邊的旋鈕，可以進行語音控制。實際試起來不太聰明，但比起用過的其他品牌，還算好用，可用。從官方網頁可以查到一些&lt;a href=&quot;https://www.tesla.com/ownersmanual/modely/zh_tw/GUID-EA1715B0-A3A6-454E-995A-8AA2C3A32D44.html&quot; target=&quot;_blank&quot;&gt;語音指令&lt;/a&gt;。&lt;/p&gt;&lt;p&gt;但很快，就發現一個Bug了！&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEit_oAuqFh3xE0qBC9FK3dkA3KrsXRP5Uru-uTGjnm1u2kUMPFr8nRZufLA1-yeHdGUEtcKd6-DepELDYHxVf8NoAN1xYyQK-IkH30RZS0zERI-VEh9_cTJrLAo3Qzy0Mlf3zMBcaWlbQrr2IyKPA8Cyf4zfSxu9Mamv178e4zU0Tf64YKDVxfyehcPk6E&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;526&quot; data-original-width=&quot;760&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEit_oAuqFh3xE0qBC9FK3dkA3KrsXRP5Uru-uTGjnm1u2kUMPFr8nRZufLA1-yeHdGUEtcKd6-DepELDYHxVf8NoAN1xYyQK-IkH30RZS0zERI-VEh9_cTJrLAo3Qzy0Mlf3zMBcaWlbQrr2IyKPA8Cyf4zfSxu9Mamv178e4zU0Tf64YKDVxfyehcPk6E=s16000&quot; /&gt;&lt;/a&gt;&lt;/div&gt;在觸控螢幕上，看可以看到車子有幾個鎖，分別是前行李箱，以及行李箱（指的是後行李箱）。&lt;br /&gt;此時若以語音指令說「打開前行李箱」，可以看到語音辨識的確正確的辨識到，是打開前行李箱，但實際上卻會是打開後面的行李箱。試了許多說法，Tesla還是無法將正確識別。只要是有行李箱字眼，不過前面加了什麼形容詞，一律只會打開後行李箱。試著用英文說 Frunk，可能是英文不標準或者是在中文的語音辨識，也無法操控。&lt;p&gt;&lt;/p&gt;&lt;p&gt;官方的語音指令列表並沒有範例，上網Google也找不到解答。&lt;/p&gt;&lt;p&gt;最後請教Tesla官方Line，得到解答是：「打開前車廂」！&lt;/p&gt;&lt;p&gt;測試用這指令可以正確打開前行李箱了，不用手動進去Menu裡找，方便許多。因為這知識實在太冷門了，特別記錄下來。在LLM已經相當風行的年代，希望Tesla對於文本解讀可以好一點，跟上時代。&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://skiffc.blogspot.com/feeds/2529124841667733450/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7875516775538579988/2529124841667733450' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7875516775538579988/posts/default/2529124841667733450'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7875516775538579988/posts/default/2529124841667733450'/><link rel='alternate' type='text/html' href='http://skiffc.blogspot.com/2023/11/model-y.html' title='Model Y 聲控打開前行李箱：打開前車廂'/><author><name>SKiFF</name><uri>http://www.blogger.com/profile/11221285469631780759</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEit_oAuqFh3xE0qBC9FK3dkA3KrsXRP5Uru-uTGjnm1u2kUMPFr8nRZufLA1-yeHdGUEtcKd6-DepELDYHxVf8NoAN1xYyQK-IkH30RZS0zERI-VEh9_cTJrLAo3Qzy0Mlf3zMBcaWlbQrr2IyKPA8Cyf4zfSxu9Mamv178e4zU0Tf64YKDVxfyehcPk6E=s72-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7875516775538579988.post-2721279488232052551</id><published>2023-11-13T00:30:00.003+08:00</published><updated>2023-11-13T00:32:05.800+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="TradingView"/><title type='text'>Pine Script strategy.entry() 無法重複下單的疑惑</title><content type='html'>&lt;p&gt;接著要記錄新手百思不解的疑惑，一開始以為是自己對 Script 流程不熟悉，但到後來都靠 Log 打印確定該段程式碼有被執行到了，但 Simulator 就是不執行該交易，苦惱許久。&lt;/p&gt;&lt;p&gt;認真翻了翻 &lt;a href=&quot;https://www.tradingview.com/pine-script-docs/en/v5/concepts/Strategies.html#strategy-entry&quot; target=&quot;_blank&quot;&gt;strategy.entry() 文件&lt;/a&gt;後，終於得知，原來 Default 交易只能有一次，並不是因為 TradeID 不能重複，要修改這個設定，需要調整 pyramiding parameter.&lt;/p&gt;&lt;p&gt;&lt;span face=&quot;&amp;quot;Trebuchet MS&amp;quot;, roboto, ubuntu, sans-serif&quot; style=&quot;background-color: white; color: #131722; font-size: 16px;&quot;&gt;Another unique behavior of the&amp;nbsp;&lt;/span&gt;&lt;a class=&quot;reference external&quot; href=&quot;https://www.tradingview.com/pine-script-reference/v5/#fun_strategy{dot}entry&quot; style=&quot;background: rgb(255, 255, 255); box-sizing: border-box; color: #2962ff; font-family: &amp;quot;Trebuchet MS&amp;quot;, roboto, ubuntu, sans-serif; font-size: 16px; text-decoration-line: none;&quot;&gt;strategy.entry()&lt;/a&gt;&lt;span face=&quot;&amp;quot;Trebuchet MS&amp;quot;, roboto, ubuntu, sans-serif&quot; style=&quot;background-color: white; color: #131722; font-size: 16px;&quot;&gt;&amp;nbsp;command is that it’s affected by a script’s&amp;nbsp;&lt;/span&gt;&lt;em style=&quot;background-color: white; box-sizing: border-box; color: #131722; font-family: &amp;quot;Trebuchet MS&amp;quot;, roboto, ubuntu, sans-serif; font-size: 16px;&quot;&gt;pyramiding&lt;/em&gt;&lt;span face=&quot;&amp;quot;Trebuchet MS&amp;quot;, roboto, ubuntu, sans-serif&quot; style=&quot;background-color: white; color: #131722; font-size: 16px;&quot;&gt;&amp;nbsp;setting. Pyramiding specifies the number of consecutive orders the strategy can fill in the same direction. Its value is &lt;/span&gt;&lt;span face=&quot;&amp;quot;Trebuchet MS&amp;quot;, roboto, ubuntu, sans-serif&quot; style=&quot;background-color: white; font-size: 16px;&quot;&gt;&lt;span style=&quot;color: red;&quot;&gt;1 by default&lt;/span&gt;&lt;/span&gt;&lt;span face=&quot;&amp;quot;Trebuchet MS&amp;quot;, roboto, ubuntu, sans-serif&quot; style=&quot;background-color: white; color: #131722; font-size: 16px;&quot;&gt;, meaning the strategy only allows one consecutive order to fill in either direction. Users can set the strategy pyramiding values via the&amp;nbsp;&lt;/span&gt;&lt;code class=&quot;docutils literal notranslate&quot; style=&quot;background-color: #f0f3fa; border-radius: 4px; box-sizing: border-box; color: #131722; font-family: Consolas, monospace; font-size: 16px; line-height: 23px; margin: 20px 0px; overflow-wrap: normal; padding: 2px 4px; text-wrap: nowrap;&quot;&gt;&lt;span class=&quot;pre&quot; style=&quot;box-sizing: border-box;&quot;&gt;pyramiding&lt;/span&gt;&lt;/code&gt;&lt;span face=&quot;&amp;quot;Trebuchet MS&amp;quot;, roboto, ubuntu, sans-serif&quot; style=&quot;background-color: white; color: #131722; font-size: 16px;&quot;&gt;&amp;nbsp;parameter of the&amp;nbsp;&lt;/span&gt;&lt;a class=&quot;reference external&quot; href=&quot;https://www.tradingview.com/pine-script-reference/v5/#fun_strategy&quot; style=&quot;background: rgb(255, 255, 255); box-sizing: border-box; color: #2962ff; font-family: &amp;quot;Trebuchet MS&amp;quot;, roboto, ubuntu, sans-serif; font-size: 16px; text-decoration-line: none;&quot;&gt;strategy()&lt;/a&gt;&lt;span face=&quot;&amp;quot;Trebuchet MS&amp;quot;, roboto, ubuntu, sans-serif&quot; style=&quot;background-color: white; color: #131722; font-size: 16px;&quot;&gt;&amp;nbsp;function call or the “Pyramiding” input in the “Properties” tab of the script settings.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span face=&quot;&amp;quot;Trebuchet MS&amp;quot;, roboto, ubuntu, sans-serif&quot; style=&quot;background-color: white; color: #131722; font-size: 16px;&quot;&gt;另外 Script 有一些一開始沒辦法理解的處理方式，即在 Default 的狀況下，若有 open trading（即買入但未賣出，或反之），則即便程式跑到了下一個同方向（即買或賣） strategy.entry()，就當作沒這回事不執行，也不會報錯，但若反方向操作就可以。這件事這是讓我打轉了很久，才慢慢了解這個 Behavior。雖然能在 Script 寫下次要執行買前先賣，但覺得這樣不就無法寫出攤平之類的操作，感覺很奇怪。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span face=&quot;Trebuchet MS, roboto, ubuntu, sans-serif&quot; style=&quot;color: #131722;&quot;&gt;&lt;span style=&quot;background-color: white;&quot;&gt;strategy.entry()還有一個特別的處理方式，即是當在有open trading，執行反向的操作，則會執行，比如文件中的例子，原本是買入15，接著賣5，但實際執行則是會在當下賣20，把原本的部位也都清空。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span face=&quot;Trebuchet MS, roboto, ubuntu, sans-serif&quot; style=&quot;color: #131722;&quot;&gt;&lt;span style=&quot;background-color: white;&quot;&gt;若要只賣出買入的部分，則要透過 strategy.exit() 來控制，詳見&lt;a href=&quot;https://www.tradingview.com/pine-script-docs/en/v5/concepts/Strategies.html#strategy-exit&quot; target=&quot;_blank&quot;&gt;這邊&lt;/a&gt;的說明。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span face=&quot;Trebuchet MS, roboto, ubuntu, sans-serif&quot; style=&quot;color: #131722;&quot;&gt;&lt;span style=&quot;background-color: white;&quot;&gt;最後補上目前 Strategy 的設定值，可以允許有多次同向交易(Pyramiding)。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span face=&quot;Trebuchet MS, roboto, ubuntu, sans-serif&quot; style=&quot;color: #131722;&quot;&gt;&lt;span style=&quot;background-color: white;&quot;&gt;另外也固定 strategy.entry() 操作的價格是在每個 Bar 的 close 價位上，雖然不知這會有什麼影響，但 Default 會以 open 價位來操作，導致有些 strategy.entry(), strategy.exit() 會在當日發生，不是我預期的結果，因此透過一些Search，發現有這樣的設定。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;background-color: white; font-family: Menlo, &amp;quot;Ubuntu Mono&amp;quot;, Consolas, source-code-pro, monospace, Menlo, Monaco, &amp;quot;Courier New&amp;quot;, monospace; font-size: 13px; line-height: 18px; white-space: pre;&quot;&gt;&lt;div&gt;&lt;span style=&quot;color: #2962ff;&quot;&gt;strategy&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #388e3c;&quot;&gt;&quot;Buy When Bull BB&quot;&lt;/span&gt;&lt;span style=&quot;color: #22ab94;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #131722;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #2a2e39;&quot;&gt;initial_capital&lt;/span&gt;&lt;span style=&quot;color: #22ab94;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #f57f17;&quot;&gt;10000&lt;/span&gt;&lt;span style=&quot;color: #22ab94;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #131722;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #2a2e39;&quot;&gt;overlay&lt;/span&gt;&lt;span style=&quot;color: #22ab94;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #cc2929;&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color: #22ab94;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #131722;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #2a2e39;&quot;&gt;process_orders_on_close&lt;/span&gt;&lt;span style=&quot;color: #22ab94;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #cc2929;&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color: #22ab94;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #131722;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #2a2e39;&quot;&gt;pyramiding&lt;/span&gt;&lt;span style=&quot;color: #22ab94;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #f57f17;&quot;&gt;5&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;span style=&quot;color: #131722;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skiffc.blogspot.com/feeds/2721279488232052551/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7875516775538579988/2721279488232052551' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7875516775538579988/posts/default/2721279488232052551'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7875516775538579988/posts/default/2721279488232052551'/><link rel='alternate' type='text/html' href='http://skiffc.blogspot.com/2023/11/pine-script-strategyentry.html' title='Pine Script strategy.entry() 無法重複下單的疑惑'/><author><name>SKiFF</name><uri>http://www.blogger.com/profile/11221285469631780759</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7875516775538579988.post-1354264286481169393</id><published>2023-11-13T00:08:00.002+08:00</published><updated>2023-11-13T00:08:27.321+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="TradingView"/><title type='text'>TradingView Pine Script Debug</title><content type='html'>&lt;p&gt;剛開始使用 TradingView時，用現成的 Script 以及 ChatGPT 生成的來改寫，也還應付的過去，但當想做的越來越複雜後，ChatGPT生成的也跑不動（或許是因為沒付錢？），再對 Script 基本認識不多的時候，Debug常常會陷入膠著。因此建議得先讀完&lt;a href=&quot;https://skiffc.blogspot.com/2023/11/tradingview-pine-script.html&quot;&gt;上一篇&lt;/a&gt;文章，再開始自己寫 Pine Script。&lt;/p&gt;&lt;p&gt;Debug 大概是自己寫 Strategy 最常遭遇的問題了，Pine Script 的 Debug print 方式是透過 log.*() 來達成，詳見&lt;a href=&quot;https://www.tradingview.com/blog/en/pine-logs-in-pine-script-40490/&quot; target=&quot;_blank&quot;&gt;這篇文章&lt;/a&gt;。&lt;/p&gt;&lt;p&gt;在打印 log 時，得將內容轉換成 string data type，在 Pine Script 是使用 str.format 的方式，一些範例如：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;log.info(&quot;\nUpdate no: {0}\nclose: {1}\nSeconds elapsed: {2}&quot;, updateNo, close, (timenow - lastTime) / 1000)&lt;/p&gt;&lt;div&gt;log.warning(&quot;\nBar index: {0,number,#}&quot;, bar_index)&lt;/div&gt;&lt;/blockquote&gt;&lt;p&gt;然後在 Script Editor 視窗的，右方的三個點，點下去後，再選 Pine Logs：&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiLnqxd3iD_qintwPgqax6j9ZSf-IWpxBMNoe9qMRutz3xqxbihAL6TB1UnNZfnMjPoBn-watbC-k4NwGI9P6qAj0EBV5_W6BFdMArUHzh01FAZZjmVbxG9IG5Ya9JJ7C1D0fYb4DU6YsKHSCTMcxR1iF60SjRN7dpNiKB4KBJc23jTgRI1lB_z-POzFN4&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;535&quot; data-original-width=&quot;1306&quot; height=&quot;131&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiLnqxd3iD_qintwPgqax6j9ZSf-IWpxBMNoe9qMRutz3xqxbihAL6TB1UnNZfnMjPoBn-watbC-k4NwGI9P6qAj0EBV5_W6BFdMArUHzh01FAZZjmVbxG9IG5Ya9JJ7C1D0fYb4DU6YsKHSCTMcxR1iF60SjRN7dpNiKB4KBJc23jTgRI1lB_z-POzFN4&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;就可以在右邊看到一個 Log Window，接下來只要執行 Script，就可以看到 Log 按模擬的日期從最早開始，按 log.*() 內容，逐一顯示。&lt;p&gt;&lt;/p&gt;&lt;p&gt;除了有 Log 外，在 Strategy Tester 中的，List of Trades ，可以查到每次交易的細節如開始結束時間，金額等，還有一個超方便的快捷鍵，可以直接連結到Chart上。有這些設計真的讓 Strategy Debug 跟分析方便許多。&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjm_hhBcQaH8DgAGm_6uy1sJ18ckn_SKjj3t3XYF_3c_HDBlTZKffGqmCYTtFGsr0yuPyX44tBTQZIRlzUyeVtVt9n4vFr6-joK_ZQ2RavMN0YHCECaaUDsTK8lIYOCZRDIBQz2aX5z6vO7lXdXHpgFG4ru7FSpwwhT6NW849U5-SFOJkueJnQrzrNAFsQ&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;335&quot; data-original-width=&quot;1304&quot; height=&quot;82&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjm_hhBcQaH8DgAGm_6uy1sJ18ckn_SKjj3t3XYF_3c_HDBlTZKffGqmCYTtFGsr0yuPyX44tBTQZIRlzUyeVtVt9n4vFr6-joK_ZQ2RavMN0YHCECaaUDsTK8lIYOCZRDIBQz2aX5z6vO7lXdXHpgFG4ru7FSpwwhT6NW849U5-SFOJkueJnQrzrNAFsQ&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://skiffc.blogspot.com/feeds/1354264286481169393/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7875516775538579988/1354264286481169393' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7875516775538579988/posts/default/1354264286481169393'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7875516775538579988/posts/default/1354264286481169393'/><link rel='alternate' type='text/html' href='http://skiffc.blogspot.com/2023/11/tradingview-pine-script-debug.html' title='TradingView Pine Script Debug'/><author><name>SKiFF</name><uri>http://www.blogger.com/profile/11221285469631780759</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEiLnqxd3iD_qintwPgqax6j9ZSf-IWpxBMNoe9qMRutz3xqxbihAL6TB1UnNZfnMjPoBn-watbC-k4NwGI9P6qAj0EBV5_W6BFdMArUHzh01FAZZjmVbxG9IG5Ya9JJ7C1D0fYb4DU6YsKHSCTMcxR1iF60SjRN7dpNiKB4KBJc23jTgRI1lB_z-POzFN4=s72-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7875516775538579988.post-1116414571794480330</id><published>2023-11-12T23:44:00.006+08:00</published><updated>2023-11-12T23:44:35.809+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="TradingView"/><title type='text'>TradingView Pine Script 新手筆記</title><content type='html'>&lt;p&gt;&amp;nbsp;過去花了很多時間在建構一些交易技術指標、資料抓取、回歸測試，直到有天知道了 TradingView 後，就覺得之前的時間白花了。不過因為對 TradingView 的 Script 很不熟，所以很長的時間，都是利用他看看資訊，倒也寫不出什麼 Script。而且還不知是否有方便的掃所有標的並做一些資料統計、分析的方法。&lt;/p&gt;&lt;p&gt;最近因緣際會，又覺得該開始好好繼續這一線的發展看是否有沒機會發大財。因此開始試著寫一些 Strategy，雖然現在有ChatGPT的幫助，但對於 Pine Script 的 Behavior ，尤其是變數覺得很不懂，雖然經過兩天的嘗試，後來慢慢捉摸到他可能的樣子，但在解決 strategy.entry() 問題時，對於程式邏輯看起來沒錯，Trade 卻沒發生感到相當苦惱，因此只好老老實實地開始看文件，其實只花了不用半小時但就解決相當多疑惑。因此在這邊記錄一下，跟寫其他 Language 不一樣的地方。&lt;/p&gt;&lt;p&gt;從 &lt;a href=&quot;https://www.tradingview.com/pine-script-docs/en/v5/index.html&quot; target=&quot;_blank&quot;&gt;Pine Script v5 User Manual&lt;/a&gt; 開始，可以找到一些關於 Scripts 相關的描述，其中一個頗重要的概念是&lt;a href=&quot;How scripts are executed&quot; target=&quot;_blank&quot;&gt;這一段&lt;/a&gt;：&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;color: #131722; font-family: Trebuchet MS, roboto, ubuntu, sans-serif;&quot;&gt;How scripts are executed&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;&lt;span style=&quot;color: #131722; font-family: &amp;quot;Trebuchet MS&amp;quot;, roboto, ubuntu, sans-serif; font-size: 16px;&quot;&gt;A Pine script is&amp;nbsp;&lt;/span&gt;&lt;strong style=&quot;box-sizing: border-box; color: #131722; font-family: &amp;quot;Trebuchet MS&amp;quot;, roboto, ubuntu, sans-serif; font-size: 16px;&quot;&gt;&lt;span style=&quot;color: red;&quot;&gt;not&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;color: #131722; font-family: &amp;quot;Trebuchet MS&amp;quot;, roboto, ubuntu, sans-serif; font-size: 16px;&quot;&gt;&amp;nbsp;like programs in many programming languages that execute once and then stop. In the Pine Script™&amp;nbsp;&lt;/span&gt;&lt;em style=&quot;box-sizing: border-box; color: #131722; font-family: &amp;quot;Trebuchet MS&amp;quot;, roboto, ubuntu, sans-serif; font-size: 16px;&quot;&gt;runtime&lt;/em&gt;&lt;span style=&quot;color: #131722; font-family: &amp;quot;Trebuchet MS&amp;quot;, roboto, ubuntu, sans-serif; font-size: 16px;&quot;&gt;&amp;nbsp;environment, a script runs in the equivalent of an &lt;/span&gt;&lt;span style=&quot;color: red; font-family: &amp;quot;Trebuchet MS&amp;quot;, roboto, ubuntu, sans-serif; font-size: 16px;&quot;&gt;invisible loop&lt;/span&gt;&lt;span style=&quot;color: #131722; font-family: &amp;quot;Trebuchet MS&amp;quot;, roboto, ubuntu, sans-serif; font-size: 16px;&quot;&gt; where it is executed once on each bar of whatever chart you are on, &lt;/span&gt;&lt;span style=&quot;color: red; font-family: &amp;quot;Trebuchet MS&amp;quot;, roboto, ubuntu, sans-serif; font-size: 16px;&quot;&gt;from left to right&lt;/span&gt;&lt;span style=&quot;color: #131722; font-family: &amp;quot;Trebuchet MS&amp;quot;, roboto, ubuntu, sans-serif; font-size: 16px;&quot;&gt;. Chart bars that have already closed when the script executes on them are called&amp;nbsp;&lt;/span&gt;&lt;em style=&quot;box-sizing: border-box; color: #131722; font-family: &amp;quot;Trebuchet MS&amp;quot;, roboto, ubuntu, sans-serif; font-size: 16px;&quot;&gt;historical bars&lt;/em&gt;&lt;span style=&quot;color: #131722; font-family: &amp;quot;Trebuchet MS&amp;quot;, roboto, ubuntu, sans-serif; font-size: 16px;&quot;&gt;. When execution reaches the chart’s last bar and the market is open, it is on the&amp;nbsp;&lt;/span&gt;&lt;em style=&quot;box-sizing: border-box; color: #131722; font-family: &amp;quot;Trebuchet MS&amp;quot;, roboto, ubuntu, sans-serif; font-size: 16px;&quot;&gt;realtime bar&lt;/em&gt;&lt;span style=&quot;color: #131722; font-family: &amp;quot;Trebuchet MS&amp;quot;, roboto, ubuntu, sans-serif; font-size: 16px;&quot;&gt;. The script then executes once every time a price or volume change is detected, and one last time for that realtime bar when it closes. That realtime bar then becomes an&amp;nbsp;&lt;/span&gt;&lt;em style=&quot;box-sizing: border-box; color: #131722; font-family: &amp;quot;Trebuchet MS&amp;quot;, roboto, ubuntu, sans-serif; font-size: 16px;&quot;&gt;elapsed realtime bar&lt;/em&gt;&lt;span style=&quot;color: #131722; font-family: &amp;quot;Trebuchet MS&amp;quot;, roboto, ubuntu, sans-serif; font-size: 16px;&quot;&gt;. Note that when the script executes in realtime, it does not recalculate on all the chart’s historical bars on every price/volume update. It has already calculated once on those bars, so it does not need to recalculate them on every chart tick. See the&amp;nbsp;&lt;/span&gt;&lt;a class=&quot;reference internal&quot; href=&quot;https://www.tradingview.com/pine-script-docs/en/v5/language/Execution_model.html#pageexecutionmodel&quot; style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; box-sizing: border-box; color: #2962ff; font-family: &amp;quot;Trebuchet MS&amp;quot;, roboto, ubuntu, sans-serif; font-size: 16px; text-decoration-line: none;&quot;&gt;Execution model&lt;/a&gt;&lt;span style=&quot;color: #131722; font-family: &amp;quot;Trebuchet MS&amp;quot;, roboto, ubuntu, sans-serif; font-size: 16px;&quot;&gt;&amp;nbsp;page for more information.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;基於之前寫過類似的工具，跟兩天的盲目Try and Error，因此可以猜到背後有個Loop的概念，以及計算的順序，不過在文件看到這些說明，還是讓人可以更快進入狀況，理解也更確定 Script 執行背後發生的實際狀況。在此要注意，他們定義兩個詞為 Historical Bar &amp;amp; Realtime bar。&lt;/p&gt;&lt;p&gt;接下來就是要去看 &lt;a href=&quot;https://www.tradingview.com/pine-script-docs/en/v5/language/Execution_model.html#execution-model&quot; target=&quot;_blank&quot;&gt;Execution Model&lt;/a&gt; 這一篇，在已經理解 Script 是在有一個 Loop 反覆執行的情形下，就會想到這面臨一個問題，哪些 Script / 變數是每個 Loop 都要執行、使用，哪些不是。因此在這邊要注意變數用 = 以及 := (walrus operator) 的差別，這應該是我一開始嘗試自己在寫 Script 時，最搞不清楚的地方。另外對應這樣的執行方式，資料的型態也分為一般常見的如 Integer，以及隨著看不見的 Loop 計算出來的 Series Integer。其中 index 0 指的就是目前在計算的資料（Realtime Bar），index 1 則是前一筆資料，index 越大，即越早（久遠）的資料。&lt;/p&gt;&lt;p&gt;基於以上一些基礎認識，大約就可以掌握 Script 的執行流程，比較無痛的寫出自己想要的程式，但還有很多不理解的事情，結果就是不如預期，還是要靠讀文件說明才能明白其原因。&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://skiffc.blogspot.com/feeds/1116414571794480330/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7875516775538579988/1116414571794480330' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7875516775538579988/posts/default/1116414571794480330'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7875516775538579988/posts/default/1116414571794480330'/><link rel='alternate' type='text/html' href='http://skiffc.blogspot.com/2023/11/tradingview-pine-script.html' title='TradingView Pine Script 新手筆記'/><author><name>SKiFF</name><uri>http://www.blogger.com/profile/11221285469631780759</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7875516775538579988.post-5938848240318405599</id><published>2023-11-12T23:01:00.003+08:00</published><updated>2023-11-12T23:01:35.946+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Mac"/><title type='text'>Macbook Air 2011 無法充電</title><content type='html'>&lt;p&gt;今天家裡的老兵 Macbook Air 2011 充電充了好久，風扇轉得很大聲又很燙，但看一下電量卻一點增加也沒有。仔細一看，充電的燈也真的沒亮起來。&lt;/p&gt;&lt;p&gt;嘗試重開機，也沒改善。&lt;/p&gt;&lt;p&gt;只要插上充電線，右上方的電池Icon會顯示為充電的圖示，但是充電線的燈沒亮起來，電源固定在 9% 了半小時，打開系統資訊裡頭的電源，觀察電量，等了半小時，發現是真的沒在充電。&lt;/p&gt;&lt;p&gt;想說這台也不需要再換電池了，就試一下 &lt;a href=&quot;https://support.apple.com/zh-tw/HT201295&quot;&gt;SMC Reset&lt;/a&gt; 看看了。&lt;/p&gt;&lt;p&gt;按著網頁指示操作，重開機後就可以正常充電，充電燈也會亮了：&lt;/p&gt;&lt;ol style=&quot;background-color: white; color: #333333; font-family: &amp;quot;SF Pro TC&amp;quot;, &amp;quot;SF Pro Text&amp;quot;, &amp;quot;SF Pro Icons&amp;quot;, &amp;quot;PingFang TC&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 17px; line-height: 1.52947; list-style-image: initial; list-style-position: outside !important; margin: 10px 0px 0px 1.5em; padding: 0px; quotes: &amp;quot;「&amp;quot; &amp;quot;」&amp;quot;;&quot;&gt;&lt;li style=&quot;letter-spacing: 0px; line-height: 1.52947; margin: 0px; padding: 0px; quotes: &amp;quot;「&amp;quot; &amp;quot;」&amp;quot;;&quot;&gt;將 Mac 關機。&lt;/li&gt;&lt;li style=&quot;letter-spacing: 0px; line-height: 1.52947; margin: 6px 0px 0px; padding: 0px; quotes: &amp;quot;「&amp;quot; &amp;quot;」&amp;quot;;&quot;&gt;在內建鍵盤上，按住下列所有按鍵：&lt;ul style=&quot;letter-spacing: 0px; line-height: 1.52947; list-style-image: initial; list-style-position: outside !important; list-style-type: disc; margin: 10px 0px 1em 1.25em; padding: 0px; quotes: &amp;quot;「&amp;quot; &amp;quot;」&amp;quot;;&quot;&gt;&lt;li style=&quot;letter-spacing: 0px; line-height: 1.52947; margin: 0px; padding: 0px; quotes: &amp;quot;「&amp;quot; &amp;quot;」&amp;quot;;&quot;&gt;位於鍵盤左側的 Shift&amp;nbsp;&lt;img alt=&quot;&quot; src=&quot;https://support.apple.com/library/content/dam/edam/applecare/images/en_US/macos/Catalina/macos-catalina-sidecar-sidebar-shift-icon.png&quot; style=&quot;border: 0px; display: inline; height: auto; max-width: 100%; quotes: &amp;quot;「&amp;quot; &amp;quot;」&amp;quot;;&quot; width=&quot;20&quot; /&gt;&lt;/li&gt;&lt;li style=&quot;letter-spacing: 0px; line-height: 1.52947; margin: 6px 0px 0px; padding: 0px; quotes: &amp;quot;「&amp;quot; &amp;quot;」&amp;quot;;&quot;&gt;位於鍵盤左側的 Control&amp;nbsp;&lt;img alt=&quot;&quot; src=&quot;https://support.apple.com/library/content/dam/edam/applecare/images/en_US/macos/Catalina/macos-catalina-sidecar-sidebar-control-icon.png&quot; style=&quot;border: 0px; display: inline; height: auto; max-width: 100%; quotes: &amp;quot;「&amp;quot; &amp;quot;」&amp;quot;;&quot; width=&quot;20&quot; /&gt;&lt;/li&gt;&lt;li style=&quot;letter-spacing: 0px; line-height: 1.52947; margin: 6px 0px 0px; padding: 0px; quotes: &amp;quot;「&amp;quot; &amp;quot;」&amp;quot;;&quot;&gt;位於鍵盤左側的 Option（Alt）&lt;img alt=&quot;&quot; src=&quot;https://support.apple.com/library/content/dam/edam/applecare/images/en_US/macos/Catalina/macos-catalina-sidecar-sidebar-option-icon.png&quot; style=&quot;border: 0px; display: inline; height: auto; max-width: 100%; quotes: &amp;quot;「&amp;quot; &amp;quot;」&amp;quot;;&quot; width=&quot;20&quot; /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li style=&quot;letter-spacing: 0px; line-height: 1.52947; margin: 6px 0px 0px; padding: 0px; quotes: &amp;quot;「&amp;quot; &amp;quot;」&amp;quot;;&quot;&gt;按住這三個按鍵時，也同時按住電源按鈕。&lt;br style=&quot;quotes: &amp;quot;「&amp;quot; &amp;quot;」&amp;quot;;&quot; /&gt;&lt;img alt=&quot;同時按下這 4 個按鍵的筆記型電腦鍵盤&quot; src=&quot;https://support.apple.com/library/content/dam/edam/applecare/images/en_US/mac/2016-macbook-keyboard-diagram-smc.png&quot; style=&quot;border: 0px; display: block; height: auto; margin: 15px 0px 30px; max-width: 100%; quotes: &amp;quot;「&amp;quot; &amp;quot;」&amp;quot;;&quot; width=&quot;780&quot; /&gt;&lt;/li&gt;&lt;li style=&quot;letter-spacing: 0px; line-height: 1.52947; margin: 6px 0px 0px; padding: 0px; quotes: &amp;quot;「&amp;quot; &amp;quot;」&amp;quot;;&quot;&gt;同時按住這四個按鍵不放 10 秒。&lt;/li&gt;&lt;li style=&quot;letter-spacing: 0px; line-height: 1.52947; margin: 6px 0px 0px; padding: 0px; quotes: &amp;quot;「&amp;quot; &amp;quot;」&amp;quot;;&quot;&gt;放開所有按鍵，然後按下電源按鈕來啟動 Mac。&lt;/li&gt;&lt;/ol&gt;</content><link rel='replies' type='application/atom+xml' href='http://skiffc.blogspot.com/feeds/5938848240318405599/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7875516775538579988/5938848240318405599' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7875516775538579988/posts/default/5938848240318405599'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7875516775538579988/posts/default/5938848240318405599'/><link rel='alternate' type='text/html' href='http://skiffc.blogspot.com/2023/11/macbook-air-2011.html' title='Macbook Air 2011 無法充電'/><author><name>SKiFF</name><uri>http://www.blogger.com/profile/11221285469631780759</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7875516775538579988.post-2172377392129779656</id><published>2023-09-03T16:02:00.001+08:00</published><updated>2023-09-03T16:02:38.765+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="購物"/><title type='text'>UPS 電池更換</title><content type='html'>&lt;p&gt;最近 UPS 電池壽命又到了，但發現上次換電池時，忘了做紀錄，導致找不到到底該買哪一款電池，只好把它給拆了看一下型號，再外出購買。&lt;/p&gt;&lt;p&gt;原廠的電池是：&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnesTjL6D8mpQr27mFQpl1X1BUyoU8CK_AKcdcUoHG4l1wdjbDmbDSUZQOpwYreSuHbTxIhlS5DWBUc7k55C2qo2HnEOy8xHNOkb9Qz2VxWeos7LDjCUaNVto3nmhZEuf2utgz0yrHIIiC4xfGqZpRsK5T029WoWVWTVMFc7RtGXL8-khL5ExwInxzo_c/s4032/IMG_5185.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnesTjL6D8mpQr27mFQpl1X1BUyoU8CK_AKcdcUoHG4l1wdjbDmbDSUZQOpwYreSuHbTxIhlS5DWBUc7k55C2qo2HnEOy8xHNOkb9Qz2VxWeos7LDjCUaNVto3nmhZEuf2utgz0yrHIIiC4xfGqZpRsK5T029WoWVWTVMFc7RtGXL8-khL5ExwInxzo_c/s320/IMG_5185.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;不過我更換的是湯淺電池 NP7-12 這一顆：&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5XZuLl7xaa6JE_FTxetDblydRLuJMfFQQbGZH7vXzsmbMyTrxVDceT49utFPPQPlqCavPuhjNZCyepk5ea2pdOyyZ2h_tJyC_zvd16wRATe6N0BtbefCSXjC1JZ-LHvnyK7A6RrSwyNp92r8yoKLiCh_Blj1RWQJhCCNFWhdc_8Jc3JRgr2txJkrdK0I/s4080/PXL_20230902_062029656.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;3072&quot; data-original-width=&quot;4080&quot; height=&quot;241&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5XZuLl7xaa6JE_FTxetDblydRLuJMfFQQbGZH7vXzsmbMyTrxVDceT49utFPPQPlqCavPuhjNZCyepk5ea2pdOyyZ2h_tJyC_zvd16wRATe6N0BtbefCSXjC1JZ-LHvnyK7A6RrSwyNp92r8yoKLiCh_Blj1RWQJhCCNFWhdc_8Jc3JRgr2txJkrdK0I/s320/PXL_20230902_062029656.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;忘了上次何時換，所以不知道可以撐多久。&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://skiffc.blogspot.com/feeds/2172377392129779656/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7875516775538579988/2172377392129779656' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7875516775538579988/posts/default/2172377392129779656'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7875516775538579988/posts/default/2172377392129779656'/><link rel='alternate' type='text/html' href='http://skiffc.blogspot.com/2023/09/ups.html' title='UPS 電池更換'/><author><name>SKiFF</name><uri>http://www.blogger.com/profile/11221285469631780759</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnesTjL6D8mpQr27mFQpl1X1BUyoU8CK_AKcdcUoHG4l1wdjbDmbDSUZQOpwYreSuHbTxIhlS5DWBUc7k55C2qo2HnEOy8xHNOkb9Qz2VxWeos7LDjCUaNVto3nmhZEuf2utgz0yrHIIiC4xfGqZpRsK5T029WoWVWTVMFc7RtGXL8-khL5ExwInxzo_c/s72-c/IMG_5185.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7875516775538579988.post-8273600927514368863</id><published>2023-09-03T15:54:00.000+08:00</published><updated>2023-09-03T15:54:06.919+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Mac"/><title type='text'>Macbook Pro Retina 13&quot; 電池更換</title><content type='html'>&lt;p&gt;Macbook Pro 續航力越來越低, 大約只能撐一個多小時, 雖然還算堪用, 但看在使用次數已經將近 1400 Cycle, 還是撥空來更換電池。&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgcoJCTbPjtvZBgkTzF9lqRYNV9V8bct_NJotvwiDCEjQakp-ABFFgZE19iK9J-ZMkHbX1fG_VWt6vNlvhoONGdEJE73a879FFqv2N8orkKI-oPjhWKVrkCkYHcs6tEQ8amjFmeCszLejEmm8Z_t4hJGrh5bAEQGqD4bO_FNYQeKz3_2R3t48yvml7xzV0&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;598&quot; data-original-width=&quot;806&quot; height=&quot;237&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgcoJCTbPjtvZBgkTzF9lqRYNV9V8bct_NJotvwiDCEjQakp-ABFFgZE19iK9J-ZMkHbX1fG_VWt6vNlvhoONGdEJE73a879FFqv2N8orkKI-oPjhWKVrkCkYHcs6tEQ8amjFmeCszLejEmm8Z_t4hJGrh5bAEQGqD4bO_FNYQeKz3_2R3t48yvml7xzV0&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;照著Youtube上找到的影片拆解，其中一個要特別注意的就是這個鍵盤排線，該排線是水平的接上接口，所以在拆除時，要在水平方向施力往前方推，而不是往上拉。&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEh3coIntfqnlQtz481jfnFRMC_dPopZK8kPi8ORWrspmBPrMr7pZcoHQfhw8MNLuElOAPtNko7r_C8XIHik2rRzZFlHzybWOVGxhs18xr6OOMs5RwtNl-cA_gyEf_rmIxWAinEyst5PCbvbibR9fzA8vvTJdOwwU0uwWNGir_Ej90JJ5DaQ-aY-iTtVIr0&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;3072&quot; data-original-width=&quot;4080&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEh3coIntfqnlQtz481jfnFRMC_dPopZK8kPi8ORWrspmBPrMr7pZcoHQfhw8MNLuElOAPtNko7r_C8XIHik2rRzZFlHzybWOVGxhs18xr6OOMs5RwtNl-cA_gyEf_rmIxWAinEyst5PCbvbibR9fzA8vvTJdOwwU0uwWNGir_Ej90JJ5DaQ-aY-iTtVIr0&quot; width=&quot;319&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;相較於 Macbook Air 2011 的電池更換，Macbook Pro Retina還要面臨一個大問題就是電池上面的膠。Youtube是建議要準備去膠的酒精，但我並沒有酒精，透過用塑膠的水平鏟子（女兒的黏土玩具配件）慢慢鏟，還是可以順利的拆起來。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;更換後，發現這顆電池的總容量，比之於之前 Macbook Air 副廠電池的蓄電量還較低，但目前只是希望能不要太會發熱、能用久一點再戰幾年即可，所以就不特別計較了。&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjFlU77xJkh3TDEjl4saAFIXOGQdXbDyQduSijpOcq9f8xBZoyPgt7WG1v3emisriee1AxkD_EURtjv-ZJpnVP4RuYo7xX2H5zq0aS-9vqE9IsvWGFwhf9v0OGUERdNFc7GwVV9jg_aXi30pjC5eFH-ru3KgrxbqU-3Jxsdgouj1gj9rRjmiGHTL7KcJ_Y&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;594&quot; data-original-width=&quot;832&quot; height=&quot;228&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjFlU77xJkh3TDEjl4saAFIXOGQdXbDyQduSijpOcq9f8xBZoyPgt7WG1v3emisriee1AxkD_EURtjv-ZJpnVP4RuYo7xX2H5zq0aS-9vqE9IsvWGFwhf9v0OGUERdNFc7GwVV9jg_aXi30pjC5eFH-ru3KgrxbqU-3Jxsdgouj1gj9rRjmiGHTL7KcJ_Y&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://skiffc.blogspot.com/feeds/8273600927514368863/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7875516775538579988/8273600927514368863' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7875516775538579988/posts/default/8273600927514368863'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7875516775538579988/posts/default/8273600927514368863'/><link rel='alternate' type='text/html' href='http://skiffc.blogspot.com/2023/09/macbook-pro-retina-13.html' title='Macbook Pro Retina 13&quot; 電池更換'/><author><name>SKiFF</name><uri>http://www.blogger.com/profile/11221285469631780759</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEgcoJCTbPjtvZBgkTzF9lqRYNV9V8bct_NJotvwiDCEjQakp-ABFFgZE19iK9J-ZMkHbX1fG_VWt6vNlvhoONGdEJE73a879FFqv2N8orkKI-oPjhWKVrkCkYHcs6tEQ8amjFmeCszLejEmm8Z_t4hJGrh5bAEQGqD4bO_FNYQeKz3_2R3t48yvml7xzV0=s72-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7875516775538579988.post-4441887303142418382</id><published>2023-03-27T11:51:00.006+08:00</published><updated>2023-03-27T11:51:58.742+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="電腦"/><title type='text'>Makefile 常用語法筆記</title><content type='html'>&lt;p&gt;寫Makefile時，有些常用功能每次要寫實，都需要找一下資料，雖然現在已經有ChatGPT幫忙了，但還是自己做一下筆記。&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;建立子目錄的列表&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;DIR := $(sort $(dir $(wildcard */)))&lt;/p&gt;&lt;div&gt;&lt;div&gt;TARGET := $(patsubst %/,%,$(dir $(DIR)))&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;p&gt;Debug時打印變數&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;$(info $(TARGET))&lt;/p&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/blockquote&gt;</content><link rel='replies' type='application/atom+xml' href='http://skiffc.blogspot.com/feeds/4441887303142418382/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7875516775538579988/4441887303142418382' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7875516775538579988/posts/default/4441887303142418382'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7875516775538579988/posts/default/4441887303142418382'/><link rel='alternate' type='text/html' href='http://skiffc.blogspot.com/2023/03/makefile.html' title='Makefile 常用語法筆記'/><author><name>SKiFF</name><uri>http://www.blogger.com/profile/11221285469631780759</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7875516775538579988.post-7752598079721644662</id><published>2023-03-26T01:48:00.008+08:00</published><updated>2023-03-26T16:13:57.113+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Raspberry Pi"/><category scheme="http://www.blogger.com/atom/ns#" term="電腦"/><title type='text'>在 Raspberry Pi 上安裝 DHCP Server &amp; AdGuardHome</title><content type='html'>&lt;p&gt;記錄一下安裝成功過程, 方便以後重裝：&lt;/p&gt;&lt;p&gt;安裝 DHCP Server 參考&lt;a href=&quot;https://blog.gtwang.org/iot/raspberry-pi-dhcp-server-configuration/&quot; target=&quot;_blank&quot;&gt;這篇&lt;/a&gt;：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;sudo apt-get install isc-dhcp-server&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;div&gt;sudo vi /etc/dhcp/dhcpd.conf&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;加入 DHCP server, static IP setting 如下&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;div&gt;subnet 192.168.1.0 netmask 255.255.255.0 {&lt;/div&gt;&lt;div&gt;&amp;nbsp; range 192.168.1.100 192.168.1.190;&lt;/div&gt;&lt;div&gt;&amp;nbsp; option routers 192.168.1.1;&lt;/div&gt;&lt;div&gt;&amp;nbsp; option broadcast-address 192.168.1.255;&lt;/div&gt;&lt;div&gt;&amp;nbsp; default-lease-time 86400;&lt;/div&gt;&lt;div&gt;&amp;nbsp; max-lease-time 86400;&lt;/div&gt;&lt;div&gt;&amp;nbsp; option domain-name-servers 192.168.1., 8.8.8.8;&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;div&gt;sudo vi /etc/default/isc-dhcp-server&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;這邊要改成這樣：&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;&lt;div&gt;INTERFACESv4=&quot;eth0&quot;&lt;/div&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;最後啟動&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;div&gt;sudo service isc-dhcp-server restart&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;p&gt;這樣 DHCP 算是大功告成了，可以把原本的 DHCP Server 關掉，改用Raspberry Pi 這個。&lt;/p&gt;&lt;p&gt;要了解有哪些Device正在使用哪些 IP:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;dhcp-lease-list&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;&lt;span&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;同一台 RPi 上想裝 AdGuardHome 當作 DNS，試了幾個方式安裝都遇到問題，最後是靠&lt;a href=&quot;https://github.com/AdguardTeam/AdGuardHome#automated-install-linux-and-mac&quot; target=&quot;_blank&quot;&gt;這個&lt;/a&gt;成功：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;wget --no-verbose -O - https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s -- -v&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;然後就看提示進入AdGuardHome網頁設定即可。&amp;nbsp;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://skiffc.blogspot.com/feeds/7752598079721644662/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7875516775538579988/7752598079721644662' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7875516775538579988/posts/default/7752598079721644662'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7875516775538579988/posts/default/7752598079721644662'/><link rel='alternate' type='text/html' href='http://skiffc.blogspot.com/2023/03/raspberry-pi-dhcp-server-adguardhome.html' title='在 Raspberry Pi 上安裝 DHCP Server &amp; AdGuardHome'/><author><name>SKiFF</name><uri>http://www.blogger.com/profile/11221285469631780759</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7875516775538579988.post-5908480563308489246</id><published>2022-06-21T22:38:00.003+08:00</published><updated>2022-06-21T22:38:43.207+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Raspberry Pi"/><title type='text'>更換 TPLink Deco X60 後，Raspberry Pi 4B WiFi 時常斷線問題</title><content type='html'>&lt;p&gt;原本 Raspberry Pi 4B 已經服役多年，一直都好好的。&lt;/p&gt;&lt;p&gt;最近家裡換成 Mesh Network 之後，就蠻常連不上。沒多久就發現原來是RP4B 的 WiFi 斷掉了。Google了一些文章後，原因說法有很多種。有說是要關掉 X60 快速漫遊功能等，或者說RP4B WiFi 有Bug。但由於因為家裡一些舊設備的原因，早已把快速漫遊功能關閉。&lt;/p&gt;&lt;p&gt;按著一些文章操作檢查，花了兩三天反覆測試確認，發現真的是 RP4B WiFi 完全掛了，也無法重啟。&lt;/p&gt;&lt;p&gt;找了許久，看到一篇可以透過更新Firmware的&lt;a href=&quot;https://forums.raspberrypi.com/viewtopic.php?t=271884&quot;&gt;文章&lt;/a&gt;。比起其他的Work Around解法看起來方便多時，因此試了一下。&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;sudo apt update &amp;amp;&amp;amp; sudo apt install firmware-brcm80211&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;果然處理後，觀察了四五天，WiFi 再也沒斷過了。想必是有猜中問題。&lt;/p&gt;&lt;p&gt;不過 RP4B 在原本的DD-WRT AP都一直跑得好好的，不知X60上底發生了什麼事。&lt;/p&gt;&lt;p&gt;另外一個有趣的現象是 RP3B 沒有遇到這問題。搭配 X60 多日也沒發生 WiFi 斷線過。&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://skiffc.blogspot.com/feeds/5908480563308489246/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7875516775538579988/5908480563308489246' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7875516775538579988/posts/default/5908480563308489246'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7875516775538579988/posts/default/5908480563308489246'/><link rel='alternate' type='text/html' href='http://skiffc.blogspot.com/2022/06/tplink-deco-x60-raspberry-pi-4b-wifi.html' title='更換 TPLink Deco X60 後，Raspberry Pi 4B WiFi 時常斷線問題'/><author><name>SKiFF</name><uri>http://www.blogger.com/profile/11221285469631780759</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7875516775538579988.post-371018816365598847</id><published>2022-05-25T21:58:00.014+08:00</published><updated>2022-05-25T22:58:30.395+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Raspberry Pi"/><category scheme="http://www.blogger.com/atom/ns#" term="電腦"/><title type='text'>Raspberry Pi 4B PXE Folder Backup</title><content type='html'>&lt;p&gt;很久沒跑起 RP4B PXE Boot 了，今天安裝個新東西，所以就將 PXE Folder 備份後繼續使用起來，但因為出了紕漏，要還原改使用剛備份的目錄，結果發生了 ssh 無法登入的問題。依稀記得之前好像解決過，是權限問題，但一直想不起來切確原因。今天又重走了一次冤枉路，所以記錄一下。&lt;/p&gt;&lt;p&gt;備份 PXE Folder 時，因為有些檔案權限是 root，有些是 pi (1000) 的，因此在備份時得同時把這些權限也正確備份，這樣才不會出錯。&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;cp -rp RP4B_A RP4B_B&lt;/blockquote&gt;&lt;p&gt;但如果不幸發生了，可以在NAS上，到 PXE Folder 下，把整個權限設給 root，&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;sudo chown root PXE_FOLDER&lt;/p&gt;&lt;p&gt;sudo chgrp root PXE_FOLDER&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;再到 /home/pi，把 pi 目錄的權限改成&amp;nbsp; pi，&lt;/p&gt;&lt;p&gt;sudo chown 1000 pi&lt;/p&gt;&lt;p&gt;sudo chgrp 1000 pi&lt;/p&gt;&lt;p&gt;即透過 ssh 登入。&lt;/p&gt;&lt;p&gt;若執行 sudo 有問題的話，&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;則需從 NAS 上對 sudo 做個權限先做修改&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;sudo chmod 4755 PXE_FOLDER/usr/bin/sudo&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://skiffc.blogspot.com/feeds/371018816365598847/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7875516775538579988/371018816365598847' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7875516775538579988/posts/default/371018816365598847'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7875516775538579988/posts/default/371018816365598847'/><link rel='alternate' type='text/html' href='http://skiffc.blogspot.com/2022/05/raspberry-pi-4b-pxe-folder-backup.html' title='Raspberry Pi 4B PXE Folder Backup'/><author><name>SKiFF</name><uri>http://www.blogger.com/profile/11221285469631780759</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7875516775538579988.post-5109594431465117552</id><published>2021-06-22T21:49:00.008+08:00</published><updated>2021-06-22T22:09:36.906+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Raspberry Pi"/><title type='text'>Raspberry Pi 4B PXE Boot with Synology NAS by Setting TFTP_IP</title><content type='html'>最近想透過 PXE Boot, 來達到簡單替換 Raspberry Pi OS &amp;amp; Image。&amp;nbsp;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;一開始是用 Raspberry Pi 3B+ 開始, 雖然比起 Raspberry Pi 4少，但也有幾篇，Youtube上也找得到一些資訊，但總結下來有一些Bug, 導致找到許多各種討論跟Work around。
因此建議看一下&lt;a href=&quot;https://www.raspberrypi.org/documentation/hardware/raspberrypi/bootmodes/net.md&quot;&gt;這一篇&lt;/a&gt;，可以把各種問題先有個底，且能知道是否已經被修掉。


&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;目前實作&quot;半成功&quot;的做法主要是參照這一篇&lt;a href=&quot;https://www.definit.co.uk/2020/03/pxe-booting-raspberry-pi-4-with-synology-and-ubiquiti-edgerouter/&quot; rel=&quot;nofollow&quot; target=&quot;&quot;&gt;&quot;PXE BOOTING RASPBERRY PI 4 WITH SYNOLOGY AND UBIQUITI EDGEROUTER&quot;&lt;/a&gt;。之所以半成功是，若不改用預先設好TFTP_IP，在我家的設備下，還是無法正常PXE Boot。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;其中 DHCP 的部分，若由 Synology NAS DHCP Server來做的話，要參考&lt;a href=&quot;https://community.synology.com/enu/forum/17/post/104147&quot; rel=&quot;nofollow&quot;&gt;這一篇的做法&lt;/a&gt;，登入 NAS 後，產生檔案 /etc/dhcpd/dhcpd-vendor.conf 並編輯:&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;dhcp-option=vendor:PXEClient,43,Raspberry Pi Boot&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;如此從 tcpdump -vv port bootpc 時才會看到有 Vendor-Option Option 43 送出 &quot;Raspberry Pi Boot&quot; 這段出來。但內容跟&lt;a href=&quot;https://www.raspberrypi.org/documentation/hardware/raspberrypi/bootmodes/net.md&quot; rel=&quot;nofollow&quot;&gt;預期的&lt;/a&gt;還是有落差。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;pre&gt;	  Vendor-rfc1048 Extensions
	    Magic Cookie 0x63825363
	    DHCP-Message Option 53, length 1: Offer
	    Server-ID Option 54, length 4: 192.168.1.10
	    Lease-Time Option 51, length 4: 86400
	    BF Option 67, length 13: &quot;bootcode.bin^@&quot;
	    RN Option 58, length 4: 43200
	    RB Option 59, length 4: 75600
	    Subnet-Mask Option 1, length 4: 255.255.255.0
	    BR Option 28, length 4: 192.168.1.255
	    Default-Gateway Option 3, length 4: 192.168.1.1
	    Vendor-Option Option 43, length 20: 43.17.82.97.115.112.98.101.114.114.121.32.80.105.32.66.111.111.116.255
	    Vendor-Class Option 60, length 32: &quot;PXEClient:Arch:00000:UNDI:002001&quot;
&lt;br /&gt;&lt;/pre&gt;

&lt;div&gt;但實際上因為不明原因，這個reply在我家的設備並無法傳回到 Raspberry Pi 4，似乎在通過 Switch 時就丟失了。會在 Raspberry Pi HDMI output 上看到DHCP有通，也取得位址，但最後還是進行不下去：&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;......&lt;/div&gt;&lt;div&gt;YI_ADDR 192.168.1.30&lt;/div&gt;&lt;div&gt;SI_ADDR 192.168.1.10&lt;/div&gt;&lt;div&gt;NETBOOT init failed&lt;/div&gt;&lt;div&gt;Insert SD-CARD&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;因此最後改採直接在 Raspberry Pi 4 BootConfig 改寫好 TFTP_IP，直接跳過這個複雜又繁瑣的過程。&lt;/div&gt;&lt;div&gt;會做這個決定是因為看到&lt;a href=&quot;https://github.com/raspberrypi/firmware/issues/859&quot; rel=&quot;nofollow&quot;&gt;這篇&lt;/a&gt;，發現有人透過switch無法boot，但直接連接後就可以了。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;因此整個做法總結起來是可以跳過&lt;a href=&quot;https://www.definit.co.uk/2020/03/pxe-booting-raspberry-pi-4-with-synology-and-ubiquiti-edgerouter/&quot; rel=&quot;nofollow&quot; target=&quot;&quot;&gt;&quot;PXE BOOTING RASPBERRY PI 4 WITH SYNOLOGY AND UBIQUITI EDGEROUTER&quot;&lt;/a&gt;&amp;nbsp;Configure DHCP Server 這一段，把Configure NFS and TFTP Server之後的步驟都操作過即可。&lt;/div&gt;&lt;div&gt;其中因為我是 2021 Jun 21 才製作 SD Card Image, &lt;a href=&quot;https://www.raspberrypi.org/documentation/installation/installing-images/&quot; rel=&quot;nofollow&quot;&gt;Imager&lt;/a&gt; 安裝後, 能找到最新的 bootcode 是 這一版：&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;/lib/firmware/raspberrypi/bootloader/stable/pieeprom-2021-04-29.bin&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;而 &lt;a href=&quot;https://www.raspberrypi.org/documentation/hardware/raspberrypi/bcm2711_bootloader_config.md&quot; rel=&quot;nofollow&quot;&gt;Configure EEPROM&lt;/a&gt;
這一步時，bootconf.txt 的修改如下即可：&lt;/div&gt;&lt;div&gt;
&lt;pre&gt;&lt;blockquote&gt;[all]
BOOT_UART=0
WAKE_ON_GPIO=1
POWER_OFF_ON_HALT=0
&lt;span style=&quot;color: red;&quot;&gt;TFTP_IP=192.168.1.10
BOOT_ORDER=0x21&lt;/span&gt;&lt;/blockquote&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;其中紅字部分是我加上去的部分，黑字則是原本的設定。請記得把 TFTP_IP 改成 Synology NAS(TFTP Server) 的IP。如此一來就可以省略先前複雜的 BOOTP/DHCP 等過程，避開 Switch 不明原因等Debug時間，直接通關。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;span&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;/span&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;如同事所說, PXE Boot沿途充滿地雷。按本篇的做法：&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1. Synology DHCP PXE 其實不需要打開。原因應該是TFTP_IP已經設定好了。&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_1_ZpDArqaI-_bvjFcPcOu5oWcxlcc9elVtiQEUnrVmFhoZURmCG-KyN5h7mCaQDSSga-n4ZwZv_1G7XcrSetPfxkf8WylG51bPOHIKhgo1KbOPYZQtpbsdBZaRobHxHuJMySUa6TqnU/&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;312&quot; data-original-width=&quot;545&quot; height=&quot;183&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_1_ZpDArqaI-_bvjFcPcOu5oWcxlcc9elVtiQEUnrVmFhoZURmCG-KyN5h7mCaQDSSga-n4ZwZv_1G7XcrSetPfxkf8WylG51bPOHIKhgo1KbOPYZQtpbsdBZaRobHxHuJMySUa6TqnU/&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;2. 從 Synology TFTP log 中，可以看到讀了這些檔案：&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZuyo4RA2GuEwHYbA1Hj7VlGvnY9IvKnuSf4iP9v95J8czIQrYGwiEsanjmZV63ByEElEfR9-1ApVvPJQPcKd5O8sQvPSB1XSnHTbZc0T5edjCgkjYjcb5IO8wHj2lUOertCxucE3mgWY/&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;310&quot; data-original-width=&quot;411&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZuyo4RA2GuEwHYbA1Hj7VlGvnY9IvKnuSf4iP9v95J8czIQrYGwiEsanjmZV63ByEElEfR9-1ApVvPJQPcKd5O8sQvPSB1XSnHTbZc0T5edjCgkjYjcb5IO8wHj2lUOertCxucE3mgWY/&quot; width=&quot;318&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;3. 並不需要把 bootcode.bin 放到 NAS /TFTP/ 根目錄之下。 由於參考了不少RP3B+的資料，因此對各種 PXE 做法感到相當混亂。&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skiffc.blogspot.com/feeds/5109594431465117552/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7875516775538579988/5109594431465117552' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7875516775538579988/posts/default/5109594431465117552'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7875516775538579988/posts/default/5109594431465117552'/><link rel='alternate' type='text/html' href='http://skiffc.blogspot.com/2021/06/raspberry-pi-4b-pxe-boot-with-synology.html' title='Raspberry Pi 4B PXE Boot with Synology NAS by Setting TFTP_IP'/><author><name>SKiFF</name><uri>http://www.blogger.com/profile/11221285469631780759</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_1_ZpDArqaI-_bvjFcPcOu5oWcxlcc9elVtiQEUnrVmFhoZURmCG-KyN5h7mCaQDSSga-n4ZwZv_1G7XcrSetPfxkf8WylG51bPOHIKhgo1KbOPYZQtpbsdBZaRobHxHuJMySUa6TqnU/s72-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7875516775538579988.post-3813121600251696936</id><published>2021-03-07T23:34:00.004+08:00</published><updated>2021-03-07T23:34:38.249+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Python"/><category scheme="http://www.blogger.com/atom/ns#" term="Raspberry Pi"/><title type='text'>Install scipy on RaspberryPi 4</title><content type='html'>&lt;p&gt;&amp;nbsp;在 Raspberry pi 上, 安裝 pip install scipy 時會報錯:&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; numpy.distutils.system_info.NotFoundError: No BLAS/LAPACK libraries found.&lt;/p&gt;&lt;div&gt;現象是, 反覆一直降版.&lt;/div&gt;&lt;div&gt;找到的解法是解法是:&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;sudo apt install libopenblas-dev&lt;/div&gt;&lt;p&gt;pip install pybind11&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;接著跑 pip install scipy 會報錯跳出：&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;ERROR: Could not build wheels for scipy which use PEP 517 and cannot be installed directly&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZ4HBJubSiSkVJUq1vyiIxa2NPk2TTHe7WNNnYMSyOfYdroHk-mtmNIX4sUJbCXvL0y8uqjxyj_tzxYiscqV0C7bXnjl3_M9gmmUI3fdS9ThCJ6G1v_bWbPWxUk_PN_YUqFKNd3TEWlQw/s734/%25E8%259E%25A2%25E5%25B9%2595%25E5%25BF%25AB%25E7%2585%25A7+2021-03-07+%25E4%25B8%258B%25E5%258D%258811.24.00.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;229&quot; data-original-width=&quot;734&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZ4HBJubSiSkVJUq1vyiIxa2NPk2TTHe7WNNnYMSyOfYdroHk-mtmNIX4sUJbCXvL0y8uqjxyj_tzxYiscqV0C7bXnjl3_M9gmmUI3fdS9ThCJ6G1v_bWbPWxUk_PN_YUqFKNd3TEWlQw/w640-h200/%25E8%259E%25A2%25E5%25B9%2595%25E5%25BF%25AB%25E7%2585%25A7+2021-03-07+%25E4%25B8%258B%25E5%258D%258811.24.00.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;發現最後一行是說找不到 Fortran compiler：&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;div&gt;error: library mach has Fortran sources but no Fortran compiler found&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;安裝後，就可以順利過關了：&amp;nbsp;&lt;/div&gt;&lt;div&gt;sudo apt-get install libatlas-base-dev gfortran&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhS5R3WbqeXVzzVgO_9AHG6_geOPd_3AsjZbbS3LNrGCVsSdjBYj_SNskLd15dfxhJimh_I2HkuKCJnDK1e6K8anbDXkhRuphIVAP31PBRgo5ApE6jTnmNGJ769jffcJuEK41zJU8oG1Dc/s1030/%25E8%259E%25A2%25E5%25B9%2595%25E5%25BF%25AB%25E7%2585%25A7+2021-03-07+%25E4%25B8%258B%25E5%258D%258811.30.16.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;225&quot; data-original-width=&quot;1030&quot; height=&quot;140&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhS5R3WbqeXVzzVgO_9AHG6_geOPd_3AsjZbbS3LNrGCVsSdjBYj_SNskLd15dfxhJimh_I2HkuKCJnDK1e6K8anbDXkhRuphIVAP31PBRgo5ApE6jTnmNGJ769jffcJuEK41zJU8oG1Dc/w640-h140/%25E8%259E%25A2%25E5%25B9%2595%25E5%25BF%25AB%25E7%2585%25A7+2021-03-07+%25E4%25B8%258B%25E5%258D%258811.30.16.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;但 Raspberry PI 4 修正問題後, 半小時內就跑了。 Raspberry Pi 3 卻跑了三小時還不行，Loading還高到 51, 不知怎麼解決, 還要再研究看看。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skiffc.blogspot.com/feeds/3813121600251696936/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7875516775538579988/3813121600251696936' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7875516775538579988/posts/default/3813121600251696936'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7875516775538579988/posts/default/3813121600251696936'/><link rel='alternate' type='text/html' href='http://skiffc.blogspot.com/2021/03/install-scipy-on-raspberrypi-4.html' title='Install scipy on RaspberryPi 4'/><author><name>SKiFF</name><uri>http://www.blogger.com/profile/11221285469631780759</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZ4HBJubSiSkVJUq1vyiIxa2NPk2TTHe7WNNnYMSyOfYdroHk-mtmNIX4sUJbCXvL0y8uqjxyj_tzxYiscqV0C7bXnjl3_M9gmmUI3fdS9ThCJ6G1v_bWbPWxUk_PN_YUqFKNd3TEWlQw/s72-w640-h200-c/%25E8%259E%25A2%25E5%25B9%2595%25E5%25BF%25AB%25E7%2585%25A7+2021-03-07+%25E4%25B8%258B%25E5%258D%258811.24.00.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7875516775538579988.post-7897736125771247697</id><published>2021-02-23T01:06:00.004+08:00</published><updated>2021-02-23T01:06:24.235+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Python"/><category scheme="http://www.blogger.com/atom/ns#" term="Raspberry Pi"/><title type='text'>Install Python matplotlib for Raspberry Pi</title><content type='html'>&lt;p&gt;&amp;nbsp;想在Raspberry Pi上安裝matplotlib, 但發現一直報錯:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; The headers or library files could not be found for jpeg,&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; a required dependency when compiling Pillow from source.&lt;/p&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;原來是安裝 matplotlib 前, 還得先安裝其他相關 library:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;sudo apt-get install libjpeg-dev zlib1g-dev&lt;/div&gt;&lt;div&gt;pip install Pillow&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;之後就可以接著安裝 matplotlib:&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;pip install matplotlib&lt;/div&gt;&lt;/blockquote&gt;</content><link rel='replies' type='application/atom+xml' href='http://skiffc.blogspot.com/feeds/7897736125771247697/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7875516775538579988/7897736125771247697' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7875516775538579988/posts/default/7897736125771247697'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7875516775538579988/posts/default/7897736125771247697'/><link rel='alternate' type='text/html' href='http://skiffc.blogspot.com/2021/02/install-python-matplotlib-for-raspberry.html' title='Install Python matplotlib for Raspberry Pi'/><author><name>SKiFF</name><uri>http://www.blogger.com/profile/11221285469631780759</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7875516775538579988.post-930619060300625042</id><published>2021-02-22T23:32:00.011+08:00</published><updated>2021-02-23T00:24:16.399+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Python"/><category scheme="http://www.blogger.com/atom/ns#" term="Raspberry Pi"/><title type='text'>Setup pyenv for Raspberry pi</title><content type='html'>&lt;p&gt;由於現在 Python 版本演化太多, 很多 open source 也都會因為版本造成問題, 所以之前也開始使用 &lt;a href=&quot;https://github.com/pyenv/pyenv&quot; target=&quot;_blank&quot;&gt;pyenv&lt;/a&gt; 來管理不同程式的 Python 執行版本。&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;按照步驟一路做下來：&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;git clone https://github.com/pyenv/pyenv.git ~/.pyenv&lt;/p&gt;&lt;p&gt;cd ~/.pyenv &amp;amp;&amp;amp; src/configure &amp;amp;&amp;amp; make -C src&lt;/p&gt;&lt;p&gt;echo &#39;export PYENV_ROOT=&quot;$HOME/.pyenv&quot;&#39; &amp;gt;&amp;gt; ~/.bash_profile&lt;/p&gt;&lt;p&gt;echo &#39;export PATH=&quot;$PYENV_ROOT/bin:$PATH&quot;&#39; &amp;gt;&amp;gt; ~/.bash_profile&lt;/p&gt;&lt;p&gt;echo -e &#39;if command -v pyenv 1&amp;gt;/dev/null 2&amp;gt;&amp;amp;1; then\n&amp;nbsp; eval &quot;$(pyenv init -)&quot;\nfi&#39; &amp;gt;&amp;gt; ~/.bash_profile&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;之後重新 source 或 login 後應該就可以啟用 pyenv 了。&lt;/p&gt;&lt;p&gt;但安裝 Python 版本前需要先安裝一些 lib:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;sudo apt-get update&amp;nbsp;&lt;/p&gt;&lt;p&gt;sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;否則會報錯:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;WARNING: The Python bz2 extension was not compiled. Missing the bzip2 lib?&lt;/p&gt;&lt;p&gt;WARNING: The Python readline extension was not compiled. Missing the GNU readline lib?&lt;/p&gt;&lt;p&gt;ERROR: The Python ssl extension was not compiled. Missing the OpenSSL lib?&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;接下來安裝需要的 Python 版本&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;pyenv install 3.9.2&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;接下來打&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;pyenv versions&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;就可以看到指定版本已安裝好如下圖：&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbPx0Ce1Hi1V2iIbn443K9xy3tEMIBcieVmTYQQjiODEOj7A7IglyGu-tc3_F0-Ti5njuwDiaFzJOXbEhlEX_KVBSEgRWTakaTp5As3YZ6gA1POn7tUQTLOJ-a_c0K0Ndml01hH2QdWBo/&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;160&quot; data-original-width=&quot;938&quot; height=&quot;69&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbPx0Ce1Hi1V2iIbn443K9xy3tEMIBcieVmTYQQjiODEOj7A7IglyGu-tc3_F0-Ti5njuwDiaFzJOXbEhlEX_KVBSEgRWTakaTp5As3YZ6gA1POn7tUQTLOJ-a_c0K0Ndml01hH2QdWBo/w400-h69/image.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;在執行目錄下打&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;pyenv local 3.9.2&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;即可切換Python版本.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://skiffc.blogspot.com/feeds/930619060300625042/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7875516775538579988/930619060300625042' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7875516775538579988/posts/default/930619060300625042'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7875516775538579988/posts/default/930619060300625042'/><link rel='alternate' type='text/html' href='http://skiffc.blogspot.com/2021/02/setup-pyenv-for-raspberry-pi.html' title='Setup pyenv for Raspberry pi'/><author><name>SKiFF</name><uri>http://www.blogger.com/profile/11221285469631780759</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbPx0Ce1Hi1V2iIbn443K9xy3tEMIBcieVmTYQQjiODEOj7A7IglyGu-tc3_F0-Ti5njuwDiaFzJOXbEhlEX_KVBSEgRWTakaTp5As3YZ6gA1POn7tUQTLOJ-a_c0K0Ndml01hH2QdWBo/s72-w400-h69-c/image.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7875516775538579988.post-1458041694655435341</id><published>2020-10-16T01:37:00.006+08:00</published><updated>2020-10-16T01:37:55.549+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Raspberry Pi"/><category scheme="http://www.blogger.com/atom/ns#" term="電腦"/><title type='text'>Sync Timestamp of the Same Files by rsync</title><content type='html'>&lt;p&gt;由於rsync預設是認檔案大小跟時間來決定是不是該做delta備份，所以若兩頭的檔案timestamp不一致的話就是個災難。&lt;/p&gt;&lt;p&gt;如果一開始就是透過rsync慢慢建立，似乎也不會有問題。不過由於小檔案太多，應該有數十萬個到百萬個之譜，且高達1.3TB，一開始直接做copy，用執行速度估算一下要以星期為單位才能跑完。所以打算先做打包、copy、解開的方式，先做第一次搬移，接下來再只做delta rsync。&lt;/p&gt;&lt;p&gt;不過因為感覺備份目的NAS上解得超慢，所以最後決定改mount到Raspberry Pi上，讓Raspberry Pi做解開的動作，NAS就專心處理檔案寫入即可，肉眼感覺速度快了好幾倍。但最後的麻煩備份目的地的目錄檔案，timestamp全部被寫成解開當下的時間，因為SMB mount的目錄, 沒有權限可以設定timestamp。&lt;/p&gt;&lt;p&gt;這時若直接跑&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;rsync -avh --progress --delete --stats FROM/ XXX@IP:/PATH/TO/&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;的話，會發現又是重頭開始一個接一個的copy，那先前做的功夫都白花了。&lt;/p&gt;&lt;p&gt;經一番研究跟測試後，發現只要用&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;rsync -rtv --progress --stats --existing FROM/ XXX@IP:/PATH/TO/ --size-only&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;就可以快速同步timestamp到目的地的檔案上，很快就做完了，花不到一分鐘。&lt;/p&gt;&lt;p&gt;之後就可以利用一般的rsync備份來進行：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;rsync -avh --progress --delete --stats FROM/ XXX@IP:/PATH/TO/&lt;/p&gt;&lt;/blockquote&gt;</content><link rel='replies' type='application/atom+xml' href='http://skiffc.blogspot.com/feeds/1458041694655435341/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7875516775538579988/1458041694655435341' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7875516775538579988/posts/default/1458041694655435341'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7875516775538579988/posts/default/1458041694655435341'/><link rel='alternate' type='text/html' href='http://skiffc.blogspot.com/2020/10/sync-timestamp-of-same-files-by-rsync.html' title='Sync Timestamp of the Same Files by rsync'/><author><name>SKiFF</name><uri>http://www.blogger.com/profile/11221285469631780759</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7875516775538579988.post-6760989796822385401</id><published>2020-10-16T01:15:00.004+08:00</published><updated>2020-10-16T01:15:48.101+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Raspberry Pi"/><title type='text'>Using rsync on Raspberry Pi by Samba Protocol (Mount)</title><content type='html'>&lt;p&gt;想將原本兩台Synology NAS間的異地備份，改由Raspberry Pi 4來進行。&lt;/p&gt;&lt;p&gt;最早的想法是想將比較複雜的計算都放在Raspberry Pi 4 上，兩台NAS只要負責處理Samba Protocol就好，想說這樣應該是不錯的架構。實測兩台NAS Folder都Mount到Raspberry Pi 4上，做兩台之間的copy，大檔案約可以跑到50MB/s的速度，感覺也蠻快的了（可惜不是100MB/s，Giga ethernet 極速）&lt;/p&gt;&lt;p&gt;實際操作起來卻發現，rsync雖然能跑，&lt;/p&gt;&lt;p&gt;rsync -avh --progress --delete --stats FROM/ TO/&lt;/p&gt;&lt;p&gt;但卻不斷地報出 rsync mkstemp failed, chgrp failed Permission Denied之類的問題，而且每次重跑都會重頭開始copy。試了一些Google到的option，並無法解決這問題，但了解到這可能是SMB Mount造成的。因此最終的解決方法是&lt;/p&gt;&lt;p&gt;“從Destination Synology NAS打開rsync支援，直接遠端寫入&quot;&lt;/p&gt;&lt;p&gt;rsync -avh --progress --delete --stats FROM/ XXX@IP:/PATH/TO/&lt;/p&gt;&lt;p&gt;這樣同時可以讓rsync過去的檔案取得完整的權限去編輯timestamp以及改成正確的owner/group，就不會報錯了。然後也可以正常的做delta rsync。原本擔心這樣速度可能會受到影響，不過跑起來大檔案也一樣有50MB/s的水準，我想也是很OK了。&lt;/p&gt;&lt;p&gt;在這過程中還發現，rsync兩個本地端的目錄（即便都是mount來的），似乎是預設用copy的方式在進行，只有來源目錄或目標目錄有一個是在遠端（SSH），rsync才會預設使用delta backup。&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://skiffc.blogspot.com/feeds/6760989796822385401/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7875516775538579988/6760989796822385401' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7875516775538579988/posts/default/6760989796822385401'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7875516775538579988/posts/default/6760989796822385401'/><link rel='alternate' type='text/html' href='http://skiffc.blogspot.com/2020/10/using-rsync-on-raspberry-pi-by-samba.html' title='Using rsync on Raspberry Pi by Samba Protocol (Mount)'/><author><name>SKiFF</name><uri>http://www.blogger.com/profile/11221285469631780759</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7875516775538579988.post-7820090924680651909</id><published>2020-10-16T00:44:00.000+08:00</published><updated>2020-10-16T00:44:01.802+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Raspberry Pi"/><category scheme="http://www.blogger.com/atom/ns#" term="電腦"/><title type='text'>Enable rsync of Synology NAS Server with Raspberry Pi 4</title><content type='html'>&lt;p&gt;可能是檔案過多、過大，或不明原因，Synology提供的異地 rsync backup(共用資料夾同步)功能無法正常動作，每次啟動就花了好幾分鐘，但什麼事都沒做就報Error停住了，執行時，兩邊Synology NAS連動資訊也都正常，也有rsync jobs在跑。查了日誌也沒什麼建設性的資訊：&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;Shared Folder Sync failed to sync task [Sync XXX] to [YYY] due to destination service was disabled.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvufW-DyeJO4Ez_sOEhq36TmPQfsK5WEaBe1WnuRjWsHXYfnh4xO9CBMVi4V97xGNjaurIVb9y_AwgJ1sBDWVEtcfZXyk9eHMpWgIC2MVX_AvfYMOe1ukpiJgqgKqcJvyd2iimGxxx_T0/&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;54&quot; data-original-width=&quot;1129&quot; height=&quot;30&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvufW-DyeJO4Ez_sOEhq36TmPQfsK5WEaBe1WnuRjWsHXYfnh4xO9CBMVi4V97xGNjaurIVb9y_AwgJ1sBDWVEtcfZXyk9eHMpWgIC2MVX_AvfYMOe1ukpiJgqgKqcJvyd2iimGxxx_T0/w640-h30/image.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;其實Synology rsync已經正常動作也好幾年，但因為平時也沒特別關心，這次注意到時，才發現他已經一年半沒成功做完異地備份了。&lt;p&gt;&lt;/p&gt;&lt;p&gt;由於想到Raspberry Pi 4有Quad Cortex-A72，計算能力海放DS212j，想說不如利用Raspberry Pi 4來做備份。&lt;/p&gt;&lt;p&gt;不過其中有個問題就是 rsync (透過 ssh)連上Synology NAS一直失敗，報Permission Denied。但透過ssh login測試連線，卻又沒問題。弄了很久後，去Google才發現，原來需要在Synology NAS上打開rsync的檔案服務才行。啟動後且設定rsync帳號，就可以從Raspberry Pi使用rsync連上了。&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjK4OlK-MRqYZrOOOdTy3MbT_1dC0a5o5fpE84R4ITGssKqtzu7cDW-vhQMs96c9zC__yDEzUg_zRbx-pdTY5Rgajp6yAHen0Ih5Mevz3sSTTLdMppwQaiSHh_uChPyPzY3827KRNlA3HQ/&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;328&quot; data-original-width=&quot;775&quot; height=&quot;270&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjK4OlK-MRqYZrOOOdTy3MbT_1dC0a5o5fpE84R4ITGssKqtzu7cDW-vhQMs96c9zC__yDEzUg_zRbx-pdTY5Rgajp6yAHen0Ih5Mevz3sSTTLdMppwQaiSHh_uChPyPzY3827KRNlA3HQ/w640-h270/image.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://skiffc.blogspot.com/feeds/7820090924680651909/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7875516775538579988/7820090924680651909' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7875516775538579988/posts/default/7820090924680651909'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7875516775538579988/posts/default/7820090924680651909'/><link rel='alternate' type='text/html' href='http://skiffc.blogspot.com/2020/10/enable-rsync-of-synology-nas-server.html' title='Enable rsync of Synology NAS Server with Raspberry Pi 4'/><author><name>SKiFF</name><uri>http://www.blogger.com/profile/11221285469631780759</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvufW-DyeJO4Ez_sOEhq36TmPQfsK5WEaBe1WnuRjWsHXYfnh4xO9CBMVi4V97xGNjaurIVb9y_AwgJ1sBDWVEtcfZXyk9eHMpWgIC2MVX_AvfYMOe1ukpiJgqgKqcJvyd2iimGxxx_T0/s72-w640-h30-c/image.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7875516775538579988.post-4235133836947583300</id><published>2020-10-11T12:09:00.002+08:00</published><updated>2020-10-11T12:21:09.534+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Mac"/><title type='text'>安裝iStats取得Macbook溫度、風扇資訊</title><content type='html'>&lt;p&gt;上網發現有個快速的做法，不用安裝APP就可以取得CPU、風扇資訊。&lt;/p&gt;&lt;p&gt;但是直接安裝時卻會報錯，上網找一下，正確的步驟該是：&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;sudo xcode-select --install&lt;/p&gt;&lt;p&gt;sudo gem install iStats&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;很快就安裝好了。安裝後，需要重開一個新的Terminal。&lt;/p&gt;&lt;p&gt;打 istats 即可取得需要資訊：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;istats&lt;/p&gt;&lt;/blockquote&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnGUF4_wWUEDVRryFWjSv9xHBglA2z1nrzV1Omh2kp9UUEqzOaEEADQuNOjdEZISakcOxT-ALNri82_GS6L2ZMuhYiuccfXXJ9br6Drr66NSfq2YGQ7bv3YGXIbt384UFIwBV1cfaX2x0/&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;760&quot; data-original-width=&quot;1108&quot; height=&quot;363&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnGUF4_wWUEDVRryFWjSv9xHBglA2z1nrzV1Omh2kp9UUEqzOaEEADQuNOjdEZISakcOxT-ALNri82_GS6L2ZMuhYiuccfXXJ9br6Drr66NSfq2YGQ7bv3YGXIbt384UFIwBV1cfaX2x0/w531-h363/image.png&quot; width=&quot;531&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&lt;p&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://skiffc.blogspot.com/feeds/4235133836947583300/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7875516775538579988/4235133836947583300' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7875516775538579988/posts/default/4235133836947583300'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7875516775538579988/posts/default/4235133836947583300'/><link rel='alternate' type='text/html' href='http://skiffc.blogspot.com/2020/10/istatsmacbook.html' title='安裝iStats取得Macbook溫度、風扇資訊'/><author><name>SKiFF</name><uri>http://www.blogger.com/profile/11221285469631780759</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnGUF4_wWUEDVRryFWjSv9xHBglA2z1nrzV1Omh2kp9UUEqzOaEEADQuNOjdEZISakcOxT-ALNri82_GS6L2ZMuhYiuccfXXJ9br6Drr66NSfq2YGQ7bv3YGXIbt384UFIwBV1cfaX2x0/s72-w531-h363-c/image.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7875516775538579988.post-5182629476351245763</id><published>2020-09-26T23:09:00.002+08:00</published><updated>2020-09-26T23:17:51.469+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Mac"/><title type='text'>Macbook Air 2011 SSD Upgrade</title><content type='html'>&lt;p&gt;雖然這台Macbook Air已經差不多是十年前的產品了，但真的鍵盤、觸控鍵盤還很好用，想說還是整理一下，換個散熱膏，以及新的SSD，看使用體驗是否多少有點提升。&lt;/p&gt;&lt;p&gt;這次是將SSD替換為 &quot;美光Micron Crucial MX500 500GB M.2 2280 SATAⅢ 固態硬碟&quot;，需要買一個轉接板。&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieLgntajsuOSh9kmwjJJmzmcUk6cw97qmeUGPErjnNkv__ImIxtF58mn0yB1wW78Gsc-AfvVjAg_mNdwns-Q8Tj3XIPd8sELw3b2QRxNr-UzlabsdhoVQ_B3gWnG2PXXVEKRNrsCqmdks/s4032/IMG_4805.HEIC&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; height=&quot;300&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieLgntajsuOSh9kmwjJJmzmcUk6cw97qmeUGPErjnNkv__ImIxtF58mn0yB1wW78Gsc-AfvVjAg_mNdwns-Q8Tj3XIPd8sELw3b2QRxNr-UzlabsdhoVQ_B3gWnG2PXXVEKRNrsCqmdks/w400-h300/IMG_4805.HEIC&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;新的SSD小很多，不過搭配轉接板時感覺會翹翹的，但鎖上SSD螺絲後看起來就還好，但還是有一點高度差。&lt;p&gt;替換後，重新安裝MacOS High Sierra，測試結果是：&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnYM-ejjJjHmTBu4Jkt4S4VhKdMzxuLNGcmDfX3qWc7g-ThHlGvYLZdjb11JHj2fths0WvMJzkdqLwyMJ3sCdNcGRQCrqMuf_buz-5o8aAs0JTZcnJi_hu7jwFLGftNXguM2nYlf1rkIM/s660/%25E8%259E%25A2%25E5%25B9%2595%25E5%25BF%25AB%25E7%2585%25A7+2020-09-26+%25E4%25B8%258B%25E5%258D%25889.30.52.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;250&quot; data-original-width=&quot;660&quot; height=&quot;242&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnYM-ejjJjHmTBu4Jkt4S4VhKdMzxuLNGcmDfX3qWc7g-ThHlGvYLZdjb11JHj2fths0WvMJzkdqLwyMJ3sCdNcGRQCrqMuf_buz-5o8aAs0JTZcnJi_hu7jwFLGftNXguM2nYlf1rkIM/w640-h242/%25E8%259E%25A2%25E5%25B9%2595%25E5%25BF%25AB%25E7%2585%25A7+2020-09-26+%25E4%25B8%258B%25E5%258D%25889.30.52.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;雖然比起後來買的 Macbook Pro、 Macbook Air 2020，數字真不怎麼樣。但比起&lt;a href=&quot;http://skiffc.blogspot.com/2016/07/macbook-air-2011-ssd-performance.html&quot; target=&quot;_blank&quot;&gt;以前測試的結果&lt;/a&gt;，看起來寫快了三倍，讀快了兩倍。500MB/s這也是封頂了，不過Write Performance有比預期略差一些，不曉得是不是 APFS 造成的？&lt;/p&gt;&lt;p&gt;但是500GB的空間，真的是目前容量最大的Macbook了，感覺使用起來都沒有壓力了。&lt;/p&gt;&lt;p&gt;不曉得是真的SSD變快了，或者是新安裝的系統比較順，整個操作感覺明顯比以前快。另外換了散熱膏後，發現風扇似乎也比較不會哀哀叫了，但實際溫度倒沒特別量測。&lt;/p&gt;&lt;p&gt;希望能再用八年。&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://skiffc.blogspot.com/feeds/5182629476351245763/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7875516775538579988/5182629476351245763' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7875516775538579988/posts/default/5182629476351245763'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7875516775538579988/posts/default/5182629476351245763'/><link rel='alternate' type='text/html' href='http://skiffc.blogspot.com/2020/09/macbook-air-2011-ssd-upgrade.html' title='Macbook Air 2011 SSD Upgrade'/><author><name>SKiFF</name><uri>http://www.blogger.com/profile/11221285469631780759</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieLgntajsuOSh9kmwjJJmzmcUk6cw97qmeUGPErjnNkv__ImIxtF58mn0yB1wW78Gsc-AfvVjAg_mNdwns-Q8Tj3XIPd8sELw3b2QRxNr-UzlabsdhoVQ_B3gWnG2PXXVEKRNrsCqmdks/s72-w400-h300-c/IMG_4805.HEIC" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7875516775538579988.post-6356864843753525467</id><published>2020-07-09T23:56:00.003+08:00</published><updated>2020-07-10T00:02:44.898+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Raspberry Pi"/><title type='text'>Fast Install ffmpeg on Raspberry Pi 3</title><content type='html'>由於需要使用到 CODEC，但又不太想花太多時間安裝，因此就找到了這個&lt;a href=&quot;https://www.johnvansickle.com/ffmpeg/&quot;&gt;網頁&lt;/a&gt;可以直接下載Binary使用。&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://www.debian.org/ports/arm/&quot;&gt;這邊&lt;/a&gt;可以查到 arm64, armhf, armel 分別代表的意思，其中armhf指的是 v7 版本的 CPU，而arm64指的是 64bit 版本的。&lt;br /&gt;
&lt;br /&gt;
Raspberry Pi 3 用的是 ARM Cortex-A53，&lt;br /&gt;
Raspberry Pi 4 用的是 ARM Cortex-A72，所以兩個應該是不一樣的。&lt;br /&gt;
&lt;br /&gt;
推想一下 Raspberry Pi 3 應該是選用 armhf，因此只要&lt;br /&gt;
&lt;div style=&quot;background-color: #141414; margin-left: 76.7969px; margin-right: 76.7969px;&quot;&gt;&lt;code class=&quot;commands&quot; style=&quot;background: rgba(200, 200, 200, 0.4); display: block; margin-top: 0.4em; padding: 0.7em;&quot;&gt;&lt;font color=&quot;#00ffff&quot; face=&quot;sans-serif&quot;&gt;&lt;span style=&quot;white-space: pre;&quot;&gt;wget https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-armhf-static.tar.xz&lt;/span&gt;&lt;/font&gt;&lt;/code&gt;&lt;code class=&quot;commands&quot; style=&quot;background: rgba(200, 200, 200, 0.4); display: block; margin-top: 0.4em; padding: 0.7em;&quot;&gt;&lt;font color=&quot;#00ffff&quot; face=&quot;sans-serif&quot;&gt;&lt;span style=&quot;white-space: pre;&quot;&gt;tar Jxvf ffmpeg-release-armhf-static.tar.xz&lt;/span&gt;&lt;/font&gt;&lt;/code&gt;&lt;code class=&quot;commands&quot; style=&quot;background: rgba(200, 200, 200, 0.4); display: block; margin-top: 0.4em; padding: 0.7em;&quot;&gt;&lt;font color=&quot;#00ffff&quot; face=&quot;sans-serif&quot;&gt;&lt;span style=&quot;white-space: pre;&quot;&gt;ln -s ffmpeg-4.3-armhf-static/ffmpeg&lt;/span&gt;&lt;/font&gt;&lt;/code&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
下載，解壓，把執行檔連結出來即可在 Raspberry Pi 3 上執行 ffmpeg。</content><link rel='replies' type='application/atom+xml' href='http://skiffc.blogspot.com/feeds/6356864843753525467/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7875516775538579988/6356864843753525467' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7875516775538579988/posts/default/6356864843753525467'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7875516775538579988/posts/default/6356864843753525467'/><link rel='alternate' type='text/html' href='http://skiffc.blogspot.com/2020/07/fast-install-ffmpeg-on-raspberry-pi-3.html' title='Fast Install ffmpeg on Raspberry Pi 3'/><author><name>SKiFF</name><uri>http://www.blogger.com/profile/11221285469631780759</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>