<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Your Life, Your Lab</title>
    <link>https://ianlifelab.com/</link>
    <description>從化學系到工程師，再從工程師到產品經理，一個不斷接觸新事物的普通人。</description>
    <generator>Hugo</generator>
    <language>zh-Hant-TW</language>
    <lastBuildDate>Tue, 06 May 2025 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://ianlifelab.com/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>做產品不要害怕被用戶拒絕！</title>
      <link>https://ianlifelab.com/start-up/do-not-be-afraid-of-being-rejected-by-users/</link>
      <pubDate>Tue, 06 May 2025 00:00:00 +0000</pubDate>
      <dc:creator>Ian Tsai</dc:creator>
      <guid>https://ianlifelab.com/start-up/do-not-be-afraid-of-being-rejected-by-users/</guid>
      <category>創業筆記</category>
      <description>用戶願意提出反饋，代表對於產品來說還是有些期待，對於產品來說是很好的事情。但同時也要過濾用戶提估的意見，才不會最後做出一堆看似符合用戶實際上卻沒解決問題的功能。</description>
      <content:encoded><![CDATA[<br>
<br>
<aside>
😀 『你這個太難用了吧？ＸＸＸ的比你好用多了！』
你在做產品時有沒有聽過這類的用戶反饋呢？你知道用戶對你的產品提出問題甚至拒絕使用對你有什麼幫助嗎？
</aside>
<h2 id="當用戶說我不需要你的產品">📝 當用戶說『我不需要你的產品』</h2><p>剛開始開發產品時，為了可以獲得用戶反饋，所以想辦法找了許多使用者使用。以健身產業做例子，健身產業中有大型健身房、小型健身房、個人健身工作室以及自由教練等，每個群體的需求都不一樣，當時我定義了產品 TA 為自由教練，所以想盡辦法找了能找到的自由教練使用產品，並定期訪談這些教練的使用體驗，其中一個教練這樣跟我說：</p>
<p>『我所有學生的上課紀錄在 google 行事曆內，你的產品沒辦法讓我直接轉移 google 的資料，我要一個一個重新輸入太浪費時間。而且我也當教練十幾年了，會來找我訓練的學生基本上我都記得住他們的問題，不太需要再做紀錄，而且光訓練這些學生我的時間就被排滿了。<strong>所以基本上我不太需要你的產品</strong>』。（<em>註：健身產業是舉例。）</em></p>
<p>聽完這段對話簡直晴天霹靂⚡，但我並沒有難過得太久，反而在思考整理過後知道了幾件事：</p>
<ol>
<li>有十幾年經驗的健身教練並不是產品的 TA</li>
<li>有一套自己固定工作流程的人，要再導入新流程反而增加他們的負擔</li>
<li>『紀錄』這件事，對於比較早進入健身產業的教練來說並不是太重要</li>
</ol>
<p>比起一直說『不錯呀』、『還行吧』的回應，我更喜歡直接點出問題的用戶。因為這可快速讓我知道原來這個功能甚至這個產品還有可以改進的地方，或是我們可以更聚焦於哪類的 TA。所以在這之後我再尋找用戶試用時，就會盡量撇除這幾種類型的用戶，讓我可以獲得更精準的用戶反饋。</p>
<h2 id="過濾需求而不是照單全收">📝 過濾需求而不是照單全收</h2><p>
  <img src="https://i.imgur.com/iu9I6dc.jpg" alt="做產品不要害怕被用戶拒絕！" loading="lazy" decoding="async">

</p>
<aside>
🏎️ 『當你問人們他們想要什麼？他們會回你想要更快的馬！』-亨利福特
</aside>
<p>用戶所提的任何需求都不一定是他真正需要的，甚至他根本不知道他想要哪些功能。產品很需要用戶給予反饋，但並非所有的需求都要接受。</p>
<p>你可以試試以下幾個面向來評估這個需求是Must, Should or Nice to have：（這邊先撇除 Bug 相關問題）</p>
<ol>
<li>提出需求的用戶與產品的目標用戶是否一致？</li>
<li>這個需求是否解決目標用戶的主要問題？或是可以提升目標用戶的使用體驗？</li>
<li>產品自身有沒有類似的解決方案可以先使用？還是必須實作一個新的？</li>
<li>完成這個需求需要花多少資源，是否會擠壓到本來預計安排的任務？</li>
</ol>
<p>若評估完這個用戶提出的需求必須擁有，沒有會影響到產品使用，那就安排時間整合；若判斷是應該需要，但目前有產品功能有替代方案，那就安排未來有資源時優先整合；若是有很好、沒有沒差的需求，可以等有資源有時間，或是做某項功能時可以用很低成本一起實作時再來考慮。</p>
<h2 id="-總結">🤗 總結</h2><p>用戶願意提出反饋，代表對於產品來說還是有些期待，對於產品來說是很好的事情。但同時也要過濾用戶提估的意見，才不會最後做出一堆看似符合用戶實際上卻沒解決問題的功能。</p>
]]></content:encoded>
    </item>
    <item>
      <title>做產品一定要創新嗎？</title>
      <link>https://ianlifelab.com/start-up/do-you-have-to-innovate/</link>
      <pubDate>Wed, 30 Apr 2025 00:00:00 +0000</pubDate>
      <dc:creator>Ian Tsai</dc:creator>
      <guid>https://ianlifelab.com/start-up/do-you-have-to-innovate/</guid>
      <category>創業筆記</category>
      <description>先驅者、創新者等創造全新的需求確實有機會讓產品大賣，甚至改變大家的生活，但在成功之前所需要付出的成本也高非常的多；反之後進者雖然較晚加入，但相對不需要負擔大量的前期探索成本，只需要將資源放在差異化或是尋找尚未被解決的問題即可。</description>
      <content:encoded><![CDATA[<br>
<br>
<aside>
😀 做產品的心態是什麼？有的人說一定要創新才有機會，有的人則會說先模仿也可以，那到底要以什麼心態去面對做產品這件事呢？
</aside>
<h2 id="-這個產品有人做過了">📝 這個產品有人做過了</h2><p>有人說 Apple、Facebook、Instagram、Airbnb 等這些世界頂尖個科技公司是因為他們自己創造了新的需求、改變了人們的生活型態，造就了這些公司今天的成功！</p>
<p>回到我們所處的這個時代，要在製作產品上尋找『創新』我認為難度是比以前高很多，再加上就算找到了，也不一定有雄厚的資本可以與科技巨頭抗衡。但如果產品不創新，又會跟不上時代，那我們該怎麼辦？</p>
<p>這邊分享幾個故事給大家：</p>
<h4 id="故事一大家都在教投資還有搞頭嗎">故事一：大家都在教投資？還有搞頭嗎？</h4><p>市場上的投資商品、課程非常的多，美股、台股、ETF、加密貨幣等等，多到你不知道要選哪一個，我也有一位朋友在投資領域創業，我簡單地與他聊了他對於這件事的想法</p>
<p>我問他：『你對於市場這麼多人在做投資教學有什麼想法嗎？』</p>
<p>他回我：『很好啊，越多人做代表需求跟機會都很大，也不用去教育市場，只要想辦法找到差異化的點就好了！』</p>
<h4 id="故事二這有人做過了我還能做嗎">故事二：這有人做過了，我還能做嗎？</h4><p>第二個故事則是跟交友軟體有關，前幾年市場上非常多交友 app 出現，我與一個做交友軟體創業的老闆聊到，如果他的產品某個功能或是產品題目有人做過了那怎麼辦？</p>
<p>『很好啊，代表市場已經被教育過了，不再需要花大量的成本教育市場，要做的就是找到現在還沒被解決的問題，或是整體流程做得比其他產品更好。』他這樣回我。</p>
<h4 id="故事三競爭對手這麼多不創新有機會嗎">故事三：競爭對手這麼多，不創新有機會嗎？</h4><p>最後則是跟一位做桌遊遊戲的老闆聊到他的創業歷程以及同業這麼多會不會有惡性競爭的問題，他說『同業不一定是對手，有時反而是盟友。我們不一定要堅持創新，創新看大眾接不接受，還要教育消費者，這個成本太高了，這不是我們簡單可以做起來的。』</p>
<p>發現這些故事的哪些部分很雷同嗎？他們都認為**『人家做過沒關係，這些前輩已經幫忙驗證過市場了，我只要做出跟他們不同的地方就好了』**。</p>
<h3 id="有沒有模仿最後超越的案例">有沒有模仿最後超越的案例？</h3><p>還記得神魔之塔嗎？十幾年前日本推出當時創新的手機轉珠遊戲『龍族拼圖』，當時風靡日本，有些台灣的玩家得知這個訊息也跨區去下載，我朋友甚至貢獻了不少營收在這間公司上。但大部分台灣人聽到的轉珠遊戲是神魔之塔這個遊戲，甚至有人覺得是龍族拼圖抄襲了神魔之塔。雖然遊戲玩法一樣，但後期推出的功能卻漸漸有了差異，甚至有幾次更新讓龍族拼圖不得不『致敬』神魔之塔的功能。</p>
<h2 id="-總結">🤗 總結</h2><p>先驅者、創新者等創造全新的需求確實有機會讓產品大賣，甚至改變大家的生活，但在成功之前所需要付出的成本也高非常的多；反之後進者雖然較晚加入，但相對不需要負擔大量的前期探索成本，只需要將資源放在差異化或是尋找尚未被解決的問題即可。</p>
<p>如果你是一個軟體創業家、早期新創公司或是新產品線的產品經理，可以試著換個角度思考看看要做什麼產品這件事。</p>
]]></content:encoded>
    </item>
    <item>
      <title>AI 時代的 PM 該怎麼生存？</title>
      <link>https://ianlifelab.com/product/ai-and-product-manager/</link>
      <pubDate>Thu, 20 Mar 2025 00:00:00 +0000</pubDate>
      <dc:creator>Ian Tsai</dc:creator>
      <guid>https://ianlifelab.com/product/ai-and-product-manager/</guid>
      <category>產品思維</category>
      <description>產品經理會是 AI 浪潮下被取代的一員嗎？AI 幫助我們提升效率的同時，也代替我們成長？如何與 AI 並存是 PM 該思考的下一步。</description>
      <content:encoded><![CDATA[<br>
<br>
<p>在 AI 大量發生後的這段時間，社群上一直充斥著『XXX 是不是會被 AI 取代？』、『YY 公司導入 AI 降低了 n% 的人力成本』等資訊，
究竟 PM 會隨著這股 AI 浪潮被取代？還是會有不一樣的機會出現？</p>
<h3 id="ai-可以幫助我們做什麼">AI 可以幫助我們做什麼？</h3><hr>
<p>想起剛出社會當軟體工程師時，遇到一個 bug 要爬各種 Stack Overflow 找問題出在哪，然後不斷地 try-and-error，
而現在只需要把問題丟給 AI 就可以用最短的時間內找到方法，甚至叫他優化程式碼，這能不香嗎？</p>
<p>過去一個 PM 想要推出一個功能，從發想到 prototype，除非 PM 本身會設計會寫程式，不然光靠 PM 一個人很難做到這件事。
但現在，PM 只要會畫圖，就可以讓會畫圖的 AI 幫忙產出 wireframe，接著再把 wireframe 放到會寫程式的 AI 就可以產出一個 prototype 了。</p>
<p>不只 prototype，連整理數據、整理訪談資料、整理研究資料、製作簡報等，這些 PM 平常要做的事情，都有對應的 AI 可以幫忙，
這大幅提升了工作的效率，也降低了許多決策的門檻。</p>
<p>在做 MeFresh 這個產品時，我當然也使用了 ChatGPT 幫助我解決我遇到的很多問題，比方說我希望點擊按鈕時有個動畫效果，但我以往是後端工程師不會做動畫怎麼辦？
GPT 很快地幫我找到了解法，並解釋了對應的參數，在使用這段程式碼後 app 也確實產生了動畫效果，只要去調整參數讓效果更貼近我所想像的就好了。</p>
<p>再產品的部分，我也請 GPT 幫我找尋國內外類似的產品、甚至每個國家使用不同類型產品的習慣，讓我可以更有目標的去知道要分析哪些產品，而不會像無頭蒼蠅一樣亂撞。</p>
<p>AI 確實幫助了工作上『效率』、『速度』的提升，但&hellip;它有沒有副作用呢？</p>
<h3 id="提升效率而非代替成長">提升效率而非代替成長？</h3><hr>
<p>AI 確實可以提升效率，但他不一定可以幫助你解決所有問題。
若直接搬運程式碼，可能造成 app 不相容或是隱藏的 bug；若直接將 AI 給的分析資訊拿去做產品決策，也可能導致錯誤發生。</p>
<p>最重要的是 AI 沒辦法『幫助我們成長』，試想所有事情都讓 AI 做，就像請了一個工具人叫他做所有你該做的事，
等到有一天工具人學會所有的事情後就你就會被他所取代。AI 也是一樣，若我們沒有在使用 AI 的狀況下加入自己的判斷，並藉由 AI 提升自己的能力，
那總有一天我們也會被 AI 取代，因為在成長的是 AI 並不是我們。</p>
<p>若你還在做一個 AI 搬運工，不管你是不是 PM ，最後可能真的會被 AI 取代，就如同早期被新鮮的肝取代樣！</p>
<h3 id="pm-的不可被取代性">PM 的不可被取代性？</h3><hr>
<p>我認為 PM 的價值在於『與人的溝通』，包含與用戶的溝通、與同事的溝通等，以及『任務安排』，如 roadmap 的規劃、開發任務的異動等。</p>
<p>與人的溝通是指什麼？產品的需求多半來自於人，人的想法與行為隨時會改變，所以產品才會安排用戶訪談或是問券調查，目的就是希望知道用戶的需求在哪邊，
尤其是用戶訪談更能知道用戶遇到了什麼問題，我們需要如何幫助他們解決。
同時需求也可能來自於內部，比方說老闆發現了什麼機會、業務與客戶談完後轉需求進來等，這些有都是需要 PM 去做溝通協調的部分。
如果這些全部都丟給 AI 做，改了個 prompt 結果就不一樣了，我想應該誰也不服誰吧！</p>
<p>再來產品需求就會需要進行開發，但當過 PM 的應該都知道，開發資源總是有限，PM 需要去與安排所有的任務優先級，並與不同的部門溝通所需要的資源。
任務安排也不是一成不變，PM 仍需要依照市場狀況、用戶反饋來動態調整任務的優先順序。
若臨時來了一個大 bug 影響到用戶的體驗，那勢必需要先把其他任務往後移，優先將問題解決，以免造成過多的用戶流失。</p>
<h3 id="ai-工具那麼多我到底要學哪個">AI 工具那麼多，我到底要學哪個？</h3><hr>
<p>回歸到 PM 為何要用 AI？使用 AI 是為了幫助我們更有效率的完成工作及任務，市面上有許不同的 AI 模型，各有各的好壞，
應該先知道自己『希望 AI 幫我們處理什麼事？』，比方說希望幫忙將文字轉為流程圖、或是整理會議資料，那 ChatGPT 就可以滿足 80% 以上的需求；
若是要畫影片封面照片，midjourney 可以完成這項任務。</p>
<p>當有新的 AI 產品出來時，我認為可以先抱持著開放的態度使用看看，
多看不同的產品的差異在哪，但同時也不用過於焦慮，就如同程式語言有很多種，各有各的對應的領域，不需要因為多出了一種語言就產生焦慮感。</p>
<p>
  <img src="https://i.imgur.com/czaRmFx.jpg" alt="AI 時代的 PM 該怎麼生存？" loading="lazy" decoding="async">

</p>
]]></content:encoded>
    </item>
    <item>
      <title>一個字回顧 2024、一個字期許 2025</title>
      <link>https://ianlifelab.com/life/one-word-for-2024-and-2025/</link>
      <pubDate>Tue, 31 Dec 2024 00:00:00 +0000</pubDate>
      <dc:creator>Ian Tsai</dc:creator>
      <guid>https://ianlifelab.com/life/one-word-for-2024-and-2025/</guid>
      <category>生活隨筆</category>
      <description>2024 一整年，我想只有『亂』一個字可以代表我今年遭遇的種種事件，本以為在新創環境待久的我應該很習慣在混亂中求生存，但混亂中伴隨的不確定性、焦慮、躁動也對身心造成了不小的影響。</description>
      <content:encoded><![CDATA[<br>
<br>
<p>2024 一整年，我想只有『亂』一個字可以代表我今年遭遇的種種事件，本以為在新創環境待久的我應該很習慣在混亂中求生存，
但混亂中伴隨的不確定性、焦慮、躁動也對身心造成了不小的影響。</p>
<p>2025 年希望用一個『慢』字來開啟，凡事不急躁、不求快、不比較，照著自己的步調走。</p>
<h3 id="事業上的慢">事業上的『慢』</h3><hr>
<p>在前一年我離開了本來的公司，開始做自己的產品，也因為這樣有短暫的經營一陣子自媒體，認識了一些創業家，
有的創業多年出場過很多次，也有的也是剛走上這條陸矇矇懂懂，在這期間我也開啟了第一次以合約的形式與另一間新創公司老闆一起合作。</p>
<p>這期間我不斷地思考，現在的我到底有什麼技能？有什麼成就？離開公司的我、沒了 title 的我究竟還有什麼能力在這個市場上立足？</p>
<p>在自我懷疑的同時，還是需要不斷地向前走，不管是上課學習、與高階人士請教，漸漸明白急於成就於某些事並不一定是好事，當然也是有天選之人有辦法做到，
但畢竟不在多數，我只需要專注於眼前我可以做到的事情就好。</p>
<p>所謂事業上的慢並不是停止不前或是真的慢慢走，而是無需與其他人比較，只要照著自己的步調、朝著自己的目標一步一步向前即可。</p>
<p><strong><a href="../slow-down-your-life">人生不是只有加速鍵</a></strong>
<strong><a href="/read/late-bloomers">大氣可以晚成</a></strong></p>
<h3 id="生活上的慢">生活上的『慢』</h3><hr>
<p>現在大家的生活步調都很快，忙著上班開會、忙著顧家庭小孩，總覺得慢下來好像在浪費時間，似乎只剩下下班待在車上的 30 分鐘以及覺得珍貴的睡前時間，
連滑個 10 秒的短影音都覺得久，不一定可以每部影片都看完。</p>
<p>生活上的慢，並非是所有事情都慢慢來，而是指『活在當下』，每個當下一定都有好事發生，只是我們還來不及覺察就錯過了，因為我們總是『忙著去想接下來要幹嘛』，
比方說『吃午餐時想著下午的會議』、『下班後想著明天要做的事情』等等，不知不覺就讓我們陷入了焦躁的情緒而錯失了現在。</p>
<p>期許 2025 可以更把握現在，讓自己可以跳脫活在未來的限制。</p>
<p>
  <img src="https://i.imgur.com/dHLOEMG.jpg" alt="一個字回顧 2024、一個字期許 2025" loading="lazy" decoding="async">

</p>
]]></content:encoded>
    </item>
    <item>
      <title>用戶應該會這樣做？『我覺得』不一定是真的！</title>
      <link>https://ianlifelab.com/start-up/what-are-users-thinking/</link>
      <pubDate>Wed, 11 Dec 2024 00:00:00 +0000</pubDate>
      <dc:creator>Ian Tsai</dc:creator>
      <guid>https://ianlifelab.com/start-up/what-are-users-thinking/</guid>
      <category>創業筆記</category>
      <description>我覺得開一間店會需要先將『商品』、『服務時間』、『店家資訊』等事項都準備好後，才會開始攬客，但實際上用戶在使用一個軟體產品時卻不是我想的這個樣子。</description>
      <content:encoded><![CDATA[<br>
<br>
<p>開始做 MeFresh 後，我踩了不少的坑，其中一個就是 UX 上的『我覺得』！</p>
<p>這是什麼意思？</p>
<p>舉個例，我覺得開一間店會需要先將『商品』、『服務時間』、『店家資訊』等事項都準備好後，才會開始攬客，但實際上美容師在使用一個軟體產品時卻不是這個樣子。</p>
<h3 id="美容師的目的不是開店">美容師的目的不是開店</h3><hr>
<p>下載 MeFresh 的美容師，通常都已經有自己的服務項目，且也已經有店面開始營業，所以這群美容師的目的不是開一家網路商店，而是找一個系統可以幫助他們運作工作室更順暢，
降低一些很瑣碎但又不得不做的事，比方說整理客人資料、處理客人預約等等。</p>
<p>這群用戶下載後通常第一件事會是去建立客人預約，早期的 MeFresh 會在畫面上顯示『請先優先新增服務項目』，我認為這個邏輯很正常，
店家要有服務項目才能給客人預約，所以當用戶沒有新增服務項目時我就跟會提醒他們完成新增後才可以繼續執行其他事，
但我忽略的是『用戶是想先用看看這個 app 有沒有符合他的需求』。</p>
<p>建立客人預約是 MeFresh 用戶的第一個也是最重要的需求，所以他希望先看這個功能有沒有符合他的期待，若有他才會繼續使用其他的功能，若沒有那他就會離開。
若在確認這個需求之前流程過於複雜，那用戶的耐心就會不斷地被消磨，最後就算他成功使用了建立預約的功能，但可能只要有一點小瑕疵他就會棄兒不用，
因為他已經經過長途跋涉才到這一步，對於瑕疵的接受度不在像一開始那麼高了，就算他小如沙粒他們可能也不會接受。</p>
<h3 id="用最短路徑幫助用戶達成目的">用最短路徑幫助用戶達成目的</h3><hr>
<p>現在我知道用戶最想做的事是『建立第一筆預約』，那我要如何用最短的路徑讓他體驗到這件事？當時我想了兩個方案：</p>
<ol>
<li>在建立預約的畫面內加上新增服務的按鈕讓用戶直接使用。</li>
<li>當用戶建立完帳號後，直接建立預設的服務項目在帳號內。</li>
</ol>
<p>其實選項並沒有優劣之分，只是看哪個比較符合當時的情境，以這個情境來說最終選擇了方案 2 作為解法。</p>
<p>為什麼？</p>
<p>剛剛有提到用戶最希望快速知道這個產品是否適合他使用，且基本需求為建立客人的預約，那我們就讓他可以 5~10 秒內就完成這件事，
排除所有可能造成耐心磨損的可能性，如：新增服務項目時需要理解每個欄位的用途等。
後續追蹤用戶從建立帳號到完成第一筆預約的比例也確實增加了不少，且願意繼續使用的用戶比例也一同上升，代表在這部分確實滿足了他們最初的目的。</p>
<p>至於方案 2 不好嗎？若情境為『用戶在建立一筆客人預約時，需要新增額外的服務項目』上那就是一個好的方案。</p>
<p>什麼意思？</p>
<p>比方說當美容師習得了新技能，要推出新服務時，可能只是與朋友或客人介紹，還沒新增服務到系統內，若客人表示有興趣想要預約下次的新服務，
那方案 2 就可以同時完成『新增預約＋新增服務』這兩件事，不用新增預約後想到沒新增服務，還要關閉跑到其他地方再回來，增加多餘的操作行為。</p>
<h3 id="幫助用戶完成他們最想完成的事">幫助用戶完成他們最想完成的事</h3><hr>
<p>一個產品一定會有許多不同的功能，傳統會設計一個『設定中心』將所有功能統一放到這邊讓用戶使用，但這種設計現在是否還能沿用呢？
在做 MeFresh 這段時間我發現，用戶不一定知道他該做什麼設定，或是說他知道的很少，很高的機率是在遇到狀況的當下才會想到，
比方說剛剛提到的的新增服務項目以及建立第一筆預約。</p>
<p>所以在『對應的功能』安插『對應的設定』顯得格外重要，目的是希望用戶在不同的情境使用對應的功能時，不需要跑來跑去做額外的設定，
只需要待在同一頁，就可以做完當下該做的事，真正讓他感受到『這個系統 / 服務真的有讓他工作起來更輕鬆』的感覺。</p>
<p>舉個我認為比較貼切的例子，當在訂機票時，我們並不會先去會員中心設定護照資訊，而是在訂機票的過程中設定，試想若訂票時突然出現『請您先到會員中心登入護照資訊』，
那會不會整個都燥起來，甚至不想繼續在這個平台訂票呢！ 🤣</p>
]]></content:encoded>
    </item>
    <item>
      <title>數位遊牧住哪裡？90 天旅居計畫最終站 - 馬來西亞吉隆坡</title>
      <link>https://ianlifelab.com/nomads/Kuala-Lumpur-digital-nomadism/</link>
      <pubDate>Sun, 07 Apr 2024 00:00:00 +0000</pubDate>
      <dc:creator>Ian Tsai</dc:creator>
      <guid>https://ianlifelab.com/nomads/Kuala-Lumpur-digital-nomadism/</guid>
      <category>數位遊牧</category>
      <description>吉隆坡其實並不在我的旅遊清單上，因為吉隆坡跟台灣的文化相似度很高，似乎要去檳城或沙巴才會有不一樣的體驗，所以讓我對這個城市興趣缺缺。但吉隆坡在數位遊牧的城市中排名不低，所以決定這次的旅居最後一站決定來到吉隆坡嘗試看看。</description>
      <content:encoded><![CDATA[<br>
<br>
<p>吉隆坡其實並不在我的旅遊清單上，主要是身邊的朋友都說就跟台灣差不多，似乎要去檳城或沙巴才會有不一樣的體驗，所以讓我對這個城市興趣缺缺。
但吉隆坡在數位遊牧的城市中排名不低，所以決定這次的旅居最後一站決定來到吉隆坡嘗試看看。</p>
<p>但先說結論，吉隆坡對我來說並不是一個適合旅居的城市，物價其實也沒有網紅講得那麼便宜（這是經過在地朋友認證的部分🤣）。</p>
<h3 id="適合工作的咖啡廳偏少">適合工作的咖啡廳偏少</h3><hr>
<p>在吉隆坡旅居的期間，去咖啡廳工作的時間下降很多，大多數都在房間內工作，主要是住宿附近沒有太多適合工作的咖啡廳，就算跑到 Pavilion 附近也同樣比較少，
再加上咖啡廳座位也不一定都有插座或是網路順暢，以星巴克來說，在星巴克時我的 Macbook 根本連不上他們的網路，完全沒辦法工作只能用手機的網路，
但也有查到可能是星巴克 wifi 本來就不太友善。</p>
<p>
  <img src="https://i.imgur.com/gEpqPNIl.jpg" alt="數位遊牧住哪裡？90 天旅居計畫最終站 - 馬來西亞吉隆坡" loading="lazy" decoding="async">

</p>
<h3 id="雷到不行的住宿-httpswwwairbnbcomtwrooms927203852971401963guests1adults1s67unique_share_idbac18b00-1bfe-4859-8621-feb7408ee82b">雷到不行的住宿 <a href="https://www.airbnb.com.tw/rooms/927203852971401963?guests=1&amp;adults=1&amp;s=67&amp;unique_share_id=bac18b00-1bfe-4859-8621-feb7408ee82b">📎</a></h3><hr>
<p>前幾篇有提到，因為住的時間都偏長，所以都會選有洗廚房以及洗衣機的 Airbnb，這次訂到一間偏新的住宿，當初評論只有三個，看照片內的環境覺得不錯，
頂樓有泳池、健身房、咖啡廳，不需要跑太遠就可以直接在上樓工作，而且還能每天運動一下，整個想像就是非常的美好。</p>
<p>但現實總是跟想像有段差距，剛入住時有些部分並沒有打掃乾淨，但清潔服務是這次住宿遇到最大的問題。
通常住宿時間超過一週都會提供房間清潔服務，在釜山時是提前一天跟客服預約、河內則是跟老闆確認固定時間就好。
這間雖然也是自己跟客服預約，但客服並不會即時回覆，有遇過今天上午 11 點問問題，隔天才回的狀況，而預約了清潔服務，基本上沒有一次準時來打掃，都用人力吃緊等問題回覆，整體的住宿體驗非常的差&hellip;</p>
<p>雖然之後應該是不會再來吉隆坡旅居，但還是建議要來的人選擇房源時可以選比較多旅客住過且有給回饋的，新房源可能流程跟系統都還沒建立起來，要花大量時間溝通非常的累。
（不過相信還是有很認真經營的房東！</p>
<p>
  <img src="https://i.imgur.com/uDsIH1Sl.jpg" alt="數位遊牧住哪裡？90 天旅居計畫最終站 - 馬來西亞吉隆坡" loading="lazy" decoding="async">

</p>
<h3 id="下班除了逛街還是逛街">下班除了逛街、還是逛街</h3><hr>
<p>吉隆坡下班後的消遣我覺得選擇滿少的，對我來說大概只有吃飯跟逛街兩個選擇，Pavilion 是我們最常去的地方，剛好當時是聖誕節＋跨年，街上還算滿熱鬧的，
很多店家都在打折，前兩站因為行李重量沒辦法買太多東西的問題，在最終站終於獲得解放🤣。
但如果平常來的話，估計百貨公司逛到膩了之後就不知道要幹嘛了，就只能窩在房間裡看 Netflix 看到飽。</p>
<p>附近的話可以去個黑風洞看看，另外你對於清真寺有興趣，有滿多不同的清真寺可以去看，如粉紅清真寺、藍色清真寺等等，
如果想看海上清真寺跟吃雞粒飯的話可以去個馬六甲，不然可以多跑淡水看看就好！</p>
<p>
  <img src="https://i.imgur.com/SWB9b8el.jpg" alt="數位遊牧住哪裡？90 天旅居計畫最終站 - 馬來西亞吉隆坡" loading="lazy" decoding="async">

</p>
<h3 id="物價並不便宜">物價並不便宜</h3><hr>
<p>來吉隆坡前後，多少有看一些旅遊 YT 介紹，說物價多便宜、東西多好吃，東西好不好吃這件事很主觀就不多說，
但物價絕對沒有便宜到哪裡去，連在地人都說這邊的物價近幾年漲得很兇，他們都覺得很誇張，
只能物價便不便宜這東西主要還是看口袋的預算以及跟哪個地區對標。</p>
<p><em><del>（看到有網紅說一餐四五百很便宜直接傻爆眼）</del></em></p>
<h3 id="總結一下">總結一下</h3><hr>
<p>剛好這次也遇到先前在清邁認識的馬來西亞朋友，跟他們去打了漆彈、聊了馬來人與馬來西亞華人的差異、討論了亞洲人與歐美人面對工作上價值觀的不同等等，
雖然這趟吉隆坡旅居的體驗並沒到特別好，食物也不是每樣東西都特別對胃口，但旅居就是這樣，多體驗、見識不同國家、種族之間的文化，有機會認識不一樣的人、聽到不一樣的故事。</p>
<p>最終站選擇這個城市對我來說並不會特別後悔，若沒有來這可能就不會再跟清邁認識的朋友有聯繫、可能也不會聊到更多關於馬來西亞人才知道的一些文化背景。
至於吉隆坡到底好不好，只能說這見仁見智，別人的好不一定適合我、我的不好也不一定適合其他人，或許自己切身體驗後真的知道每個國家跟城市適不適合自己！</p>
<p><em>馬來人跟馬來西亞華人的故事我覺得滿有趣的，有空寫一篇來聊聊</em></p>
<p>
  <img src="https://i.imgur.com/lAJjHdSl.jpg" alt="數位遊牧住哪裡？90 天旅居計畫最終站 - 馬來西亞吉隆坡" loading="lazy" decoding="async">

</p>
<h3 id="一些跟隆坡數位遊牧的小-tip">一些跟隆坡數位遊牧的小 Tip</h3><hr>
<h5 id="市中心內捷運比-grab-方便">市中心內捷運比 Grab 方便</h5><p>吉隆坡的交通並沒有想像中的好，該塞車的地方還是會塞到爆掉，所以不是所有的 Grab 司機都會願意開進來載客人，就算費用很高也是一樣，因為進來市區後再出去就會花很多時間，
對他們來說根本不符合成本，所以有時搭捷運反而會比等 Grab 快。但如果要從市區到外面一點的地方就會比較好叫了。</p>
<h5 id="關於換錢">關於換錢</h5><p>這趟旅居吉隆坡，除了在台灣先換了約 3000 台幣的令吉外沒有再換過錢，當地連小吃攤都可以用信用卡，除了一些觀光區的攤位、捷運以外基本上用不太到現金，我覺得這點對於外國人來說非常友善。</p>
<h5 id="關於黑風洞">關於黑風洞</h5><p>猴子很多，也很易怒，山上的供品大多用塑膠袋裝，所以看到塑膠袋會以為裡面有食物然後去搶，上去盡量不要拿塑膠袋。另外會有當地人塞花生給你餵猴子，一開始以為是路人分享，結果是要薛觀光客，
幾粒花生會跟你收 20 令吉 ，不要理他給他一塊錢就好。</p>
<h5 id="超市買不到豬肉">超市買不到豬肉</h5><p>因為宗教的關係，基本上超市沒有賣豬肉，所以想吃豬肉的話只能去有賣的店家裡面吃。
<em><del>一開始到超市採買時還到處找豬肉，後來才發現因為文化的關係根本沒有賣</del></em></p>
<h5 id="捷運上不能帶榴槤">捷運上不能帶榴槤</h5><p>這看到覺得滿有趣的，本來以為是怕榴槤皮有刺太硬會被當武器，但聽朋友說其實是怕太臭影響到其他人，畢竟還是有人不喜歡，不過只要把他包好基本上就可以了，喜歡吃榴蓮的朋友還是小心點囉 🤣</p>
<p>
  <img src="https://i.imgur.com/rFIS48dl.jpg" alt="數位遊牧住哪裡？90 天旅居計畫最終站 - 馬來西亞吉隆坡" loading="lazy" decoding="async">

</p>
]]></content:encoded>
    </item>
    <item>
      <title>你真的懂的『休息』嗎？假裝休息比不休息更糟糕！</title>
      <link>https://ianlifelab.com/start-up/do-you-really-understand-rest/</link>
      <pubDate>Sat, 23 Mar 2024 00:00:00 +0000</pubDate>
      <dc:creator>Ian Tsai</dc:creator>
      <guid>https://ianlifelab.com/start-up/do-you-really-understand-rest/</guid>
      <category>生活隨筆</category>
      <description>完全休息不代表要出去旅遊或是放長假，他可以是一天、一個下午甚至一兩個小時。這段時間放下所有工作相關的事物，不管是手機還是電腦，選擇一件你認為可以清空大腦、完全放鬆的事情，比方說散步、畫畫、擼貓等等，要知道這段時間並不浪費，他是在回復你的精神能量、重整你的大腦，讓你可以用更好的狀態面對接下來的事情。</description>
      <content:encoded><![CDATA[<br>
<br>
<p>你的休假日在幹嘛呢？與家人出遊但仍心繫著工作嗎？還是在擔心下週的產品發佈會有沒有意外？
甚至在怕老闆是不是會臨時打給你呢？結果整個休假過完，什麼事都沒發生，但你卻沒有真正休息到。</p>
<p>如果你是個創業者，你甚至會覺得休息是奢侈的，無時無可都在思考怎麼打造產品、怎麼獲取用戶、怎麼拓展市場，
各種不確定性壓得你喘不過氣，甚至讓你有『上班真的比較舒服』的想法。</p>
<h3 id="試著將時間留白">試著將時間『留白』</h3><hr>
<p>『留白』在現代設計來說是一個很重要的觀念，以往我們會希望『將我們想傳達的所有資訊放入有限的空間內』，但這也造就了一個問題，
畫面的的資訊過多，主要及次要資訊都擠在一起，沒辦法傳遞主要資訊給觀看者，大多數第一次看到內容的人，並不會知道這份設計主要想傳達什麼訊息，
過多的資訊對他們來說反而是雜訊，讓他們沒辦法找到真正核心訊息。適度的留白不只可以凸現設計想傳達的主要資訊，
同時也降低了過量資訊讓觀看者產生的壓力，提升了整體觀看體驗。</p>
<p>留白的概念不只出現在設計上，演講時也會使用同樣的概念，講者在演講過程中會適時地停頓，這就是留白的一種手段，在緊湊的演講中讓觀眾的精神有一絲喘息的機會，
同時講者也可以用這短暫的時間觀察台下聽眾的反應以及規劃接下來的節奏。</p>
<blockquote>
<p>那時間需不需要留白呢？</p>
</blockquote>
<p>試想過去我們把一整天的時間都『塞滿』，是否會覺得『我今天做了真多的事情』的感覺，
但你有沒有發現，滿載的狀態持續久了，有時可能導致你的精神狀況不好，在電腦前一整天就是沒有靈感、東西不斷刪刪改改，
看似花了一整天做了很多事，但這些產出卻不如預期？而更令人焦慮的是這種狀況居然還持好了好幾天。</p>
<p>時間的留白，就像設計或演講一樣，是給自己以及緊繃神經一個喘息的機會，並且觀察過去的工作狀態以及規劃接下來適合執行的步調。</p>
<p>
  <img src="https://i.imgur.com/6Xe7m8jl.jpg" alt="你真的懂的『休息』嗎？假裝休息比不休息更糟糕！" loading="lazy" decoding="async">

</p>
<h3 id="人並沒有無限的精神力">人並沒有無限的精神力</h3><hr>
<p>你有過增肌的經驗嗎？為什麼健身教練總是說休息很重要，練得再多吃得再乾淨，沒有好好休息也沒辦法順利長肌肉？
因為當你給肌肉過度刺激，它會需要時間去修復，給它充足的營養，但沒給它時間，肌肉也辦辦法長大，甚至可能因為過度操勞而受傷，
導致訓練計畫中斷。</p>
<p>精神也一樣，雖然它相較於肌肉比較抽象，但可以想想有沒有<strong>長時間連續加班，導致精神及身體變很糟</strong>的經驗發生？
而在這個狀態下的效率明顯不好、出錯頻率也會上升，嚴重一點讓工作進度延後，甚至可能伴隨著一些情緒延伸出工作以外的問題。
這都是我們不希望發生的事，但當下確實也沒有更多的精神去處理好每件事，唯一能做的就空出時間是讓自己休息。</p>
<p>
  <img src="https://i.imgur.com/IopDM2Wl.jpg" alt="你真的懂的『休息』嗎？假裝休息比不休息更糟糕！" loading="lazy" decoding="async">

</p>
<h3 id="假裝休息反而適得其反">假裝休息反而適得其反</h3><hr>
<blockquote>
<p>好吧！那我只要有休息就好了吧</p>
</blockquote>
<p>只要<strong>安排一個假期</strong>或是<strong>出國旅遊一段時間</strong>應該可以就可以了吧？
確實放假以及旅遊都可以讓我們的內心感到滿足，但如果在這段期間心中人不斷掛念著工作、時不時接到電話需要上線與老闆同事開會、協助處理同事的問題等，
等到假期結束回到工作崗位上反而還覺得『為啥我沒有休息到的感覺』，不只沒休息到，反而連假期都用掉，讓自己掉入一個懊悔的循環中。</p>
<p>更不用說創業者了，你認為你在休息，但卻有一搭沒一搭的處理公事，結果發現工作沒處理好，身體也沒休息到，
浪費了一堆時間後悔不已，讓你更不敢把時間花在休息上，導致狀況越來越差而造成負循環。</p>
<h3 id="給自己一個完全休息的時間吧">給自己一個完全休息的時間吧</h3><hr>
<p>完全休息不代表要出去旅遊或是放長假，他可以是一天、一個下午甚至一兩個小時。這段時間放下所有工作相關的事物，不管是手機還是電腦，
選擇一件你認為可以清空大腦、完全放鬆的事情，比方說散步、畫畫、擼貓等等，要知道這段時間並不浪費，他是在回復你的精神能量、重整你的大腦，
讓你可以用更好的狀態面對接下來的事情。</p>
<p>
  <img src="https://i.imgur.com/MtkgP2Il.jpg" alt="你真的懂的『休息』嗎？假裝休息比不休息更糟糕！" loading="lazy" decoding="async">

</p>
]]></content:encoded>
    </item>
    <item>
      <title>還在自己畫流程圖嗎？學會下指令讓 ChatGPT &#43; Notion 幫你解決所有事情</title>
      <link>https://ianlifelab.com/tech/drawing-flowcharts-with-ChatGPT-and-Notion/</link>
      <pubDate>Tue, 05 Mar 2024 00:00:00 +0000</pubDate>
      <dc:creator>Ian Tsai</dc:creator>
      <guid>https://ianlifelab.com/tech/drawing-flowcharts-with-ChatGPT-and-Notion/</guid>
      <category>產品思維</category>
      <description>使用 ChatGPT &#43; Notion 幫你完成複雜的流程圖工作，節省你的工作時間同時提升溝通效率。</description>
      <content:encoded><![CDATA[<br>
<br>
<p>你的產品流程圖還在慢慢畫嗎？</p>
<p>開發產品時產品經理需要畫很多圖，就算是自己創業或是做 Side project，把你龐大的思緒整理成有條理的流程圖或心智圖也要花上不少時間。
最近在設計產品的全新功能，使用 ChatGPT + Notion 組合後發現，這組合大大的降低我準備素材的時間，只需要直接將 Mermaid 程式碼放入 Notion 的程式碼 block 內就可以將流程圖呈現出來，不需要再用 Mirror 或是 Figma 一個一個拉，同時 Notion 為主要的產品管理平台，
等於我們使用了最少的工具及時間，就可以完成這些複雜的事情。</p>
<h3 id="該準備什麼素材給-chatgpt">該準備什麼素材給 ChatGPT？</h3><hr>
<p>如何下 prompt 應該是大家比較在意的事情，但在下 prompt 之前，身為 PM 的你應該對於接下來要設計的新功能流程有一定程度上的了解，
如果沒有也沒關係，可以先問問 GPT ，看他對於你想要設計的新功能有什麼想法：</p>
<p>
  <img src="https://i.imgur.com/i3qkvuw.png" alt="還在自己畫流程圖嗎？學會下指令讓 ChatGPT &#43; Notion 幫你解決所有事情" loading="lazy" decoding="async">

</p>
<p>在詢問時先告訴 GPT 他需要 cosplay 什麼角色，GPT 會依照角色跟問題給回答一個相對精準的答案</p>
<p>
  <img src="https://i.imgur.com/Onydj1i.png" alt="還在自己畫流程圖嗎？學會下指令讓 ChatGPT &#43; Notion 幫你解決所有事情" loading="lazy" decoding="async">

</p>
<p><em>註：回答的內容有點多截取部分做表示</em></p>
<p>這時你可以檢查這個流程是不是跟你想像中的一樣，或是有哪些地方需要增減，這邊先假設他提供的流程符合我的需求，
所以我接續要求他把這段流程寫成 Mermaid 的語法：</p>
<p>
  <img src="https://i.imgur.com/XBJH4zi.png" alt="還在自己畫流程圖嗎？學會下指令讓 ChatGPT &#43; Notion 幫你解決所有事情" loading="lazy" decoding="async">

</p>
<p>
  <img src="https://i.imgur.com/aU4J3g7.png" alt="還在自己畫流程圖嗎？學會下指令讓 ChatGPT &#43; Notion 幫你解決所有事情" loading="lazy" decoding="async">

</p>
<p>這時你便獲得了一串看似很複雜，自己要研究很久才看得懂的程式碼。不過不用擔心，你只需要將這段程式碼貼到 Notion 上，
Notion 會自動幫你畫出整張流程圖</p>
<p>
  <img src="https://i.imgur.com/O1fU9Hp.png" alt="還在自己畫流程圖嗎？學會下指令讓 ChatGPT &#43; Notion 幫你解決所有事情" loading="lazy" decoding="async">



  <img src="https://i.imgur.com/6RaPz2S.png" alt="還在自己畫流程圖嗎？學會下指令讓 ChatGPT &#43; Notion 幫你解決所有事情" loading="lazy" decoding="async">

</p>
<p>若覺得流程圖直式很難看，你只需要將程式碼第一行的<code>graph TD</code> 改為 <code>graph LR</code> 那流程圖就會改為橫式，就看使用上篇好哪種方式呈現拉！</p>
<blockquote>
<p>LR：從左到右。</p>
<p>RL：從右到左。</p>
<p>TB or TD：從上到下。</p>
<p>BT：從下到上。</p>
</blockquote>
<p>
  <img src="https://i.imgur.com/nIQ0gLY.png" alt="還在自己畫流程圖嗎？學會下指令讓 ChatGPT &#43; Notion 幫你解決所有事情" loading="lazy" decoding="async">

</p>
<p>以流程圖來說，ChatGPT 產出的程式碼已經算堪用，畢竟流程只是要討論接下來如何實作該功能，但如果你希望更了解如何撰寫流程圖的話，
可以參考 <a href="https://mermaid.js.org/intro/">Mermaid 的官方 Doc</a>的資訊學習。</p>
<h3 id="functional-map-也讓-gpt-來幫我完成吧">Functional Map 也讓 GPT 來幫我完成吧</h3><hr>
<p>隨著產品越來越大，Functional Map (功能地圖) 的維護也越發困難&hellip;，但不要擔心，一樣靠 GPT 可以幫助你完成這件事。</p>
<p>一樣以會員系統為例，假設以下是會員系統所包含的功能</p>
<pre><code>用戶註冊與登入
    註冊新會員
    用戶登入/登出
    第三方帳號登入（如Facebook、Google等）
    忘記密碼/重設密碼
    電子郵件驗證
    雙因素認證（選擇性增加安全性）
    個人資料管理

編輯個人資料（如姓名、電子郵件、生日等）
    更改密碼
    上傳/更換頭像
    管理聯絡資訊（如地址、電話號碼）
    設定偏好（如接收通知的偏好）
    會員專屬功能

積分/獎勵計畫
    會員專屬優惠與折扣
    早鳥訪問新產品或活動
    會員等級系統
    訂單管理

查看訂單歷史
    訂單詳情與進度追蹤
    退貨/換貨申請與管理
    通訊偏好設定

訂閱/取消訂閱電子報
    管理推送通知設定
    設定隱私偏好
    安全性與隱私

帳戶安全檢查
    查看帳戶活動歷史
    設定隱私權限（誰可以看到個人資料等）
    客戶支援與互動

會員專線或客服聯繫方式
    常見問題（FAQ）與幫助中心
    會員意見反饋
</code></pre>
<p>
  <img src="https://i.imgur.com/Lzi0FMF.png" alt="還在自己畫流程圖嗎？學會下指令讓 ChatGPT &#43; Notion 幫你解決所有事情" loading="lazy" decoding="async">

</p>
<p>
  <img src="https://i.imgur.com/Tp9L7yL.png" alt="還在自己畫流程圖嗎？學會下指令讓 ChatGPT &#43; Notion 幫你解決所有事情" loading="lazy" decoding="async">

</p>
<p>
  <img src="https://i.imgur.com/LIh5vf4.png" alt="還在自己畫流程圖嗎？學會下指令讓 ChatGPT &#43; Notion 幫你解決所有事情" loading="lazy" decoding="async">

</p>
<p>
  <img src="https://i.imgur.com/mFDH9Cm.png" alt="還在自己畫流程圖嗎？學會下指令讓 ChatGPT &#43; Notion 幫你解決所有事情" loading="lazy" decoding="async">

</p>
<p>如此一來，身為 PM 或是 Product Owner 的你，只需要好好的管理這份文字檔，剩下的交給 ChatGPT 來幫助你，
不只節省你的時間，資料圖形化後也易於理解，降低與他人之間的溝通成本。</p>
<h3 id="gpt-的提問-prompt">GPT 的提問 prompt</h3><hr>
<p>如果是連續提問的話，就不需要一直跟他說他是誰了，直接叫他做事即可，分開提問才需要告訴他他要 cosplay 什麼角色。
另外文字流程跟功能列表，都用 bullet point 的方式呈現比較好，這樣比較不會過於凌亂。</p>
<p><strong>流程圖</strong></p>
<pre tabindex="0"><code>你身為一個資深的產品設計師，有非常豐富的產品經驗，
現在我要在本來的[你的產品類型]內新增一個[你預計新增的功能]，
請你依照列出[你預計新增的功能]的流程，撰寫一段 Mermaid 的程式碼。

[新功能的文字流程]
</code></pre><p><strong>Functional Map</strong></p>
<pre tabindex="0"><code>你身為一個資深的產品設計師，有非常豐富的產品經驗，
請依照以下列出的所有[功能]撰寫出一段 Mermaid 的程式碼。

[功能列表]
</code></pre>]]></content:encoded>
    </item>
    <item>
      <title>數位遊牧住哪裡？90 天旅居計畫第二站 - 越南河內</title>
      <link>https://ianlifelab.com/nomads/hanoi-digital-nomadism/</link>
      <pubDate>Sat, 02 Mar 2024 00:00:00 +0000</pubDate>
      <dc:creator>Ian Tsai</dc:creator>
      <guid>https://ianlifelab.com/nomads/hanoi-digital-nomadism/</guid>
      <category>數位遊牧</category>
      <description>越南在大家的印象中通常是不安全，相比於鄰近的泰國，越南數位遊牧似乎比較少人去，聽到最多的應該是富國島旅遊。但越南還是有許多地方吸引著我們，如被列為世界遺產的下龍灣，或是因為殖民所遺留的法式街道、飲食文化等等，所以最後決定越南河內為這次為期三個月數位遊牧的第二站。</description>
      <content:encoded><![CDATA[<br>
<br>
<p>越南在大家的印象中通常是不安全、交通混亂、在路上滑手機容易被搶，以及入境時可能要請海關人員喝咖啡等等，再加上之前到越南的簽證其實也不便宜（似乎要 4500 台幣），所以相比於鄰近的泰國，越南似乎比較少人去，聽到最多的應該是最近開放的小馬爾地夫 - 富國島。但越南還是有許多地方吸引著我們，如被列為世界遺產的下龍灣，或是因為殖民所遺留的法式街道、飲食文化等等，所以最後決定越南河內為這次為期三個月旅居的第二站。</p>
<h3 id="亂中有序的越南交通">亂中有序的越南交通</h3><hr>
<p>離開河內機場後，因為剛從釜山來到河內，對於環境或是街景都有些衝擊，而第一印象是極其混亂的交通以及 Airbnb 房東跟我們說的一句話：
『當你要過馬路時，舉起你的手直接走過去就對了，你站在路邊沒人會等你。』，當下聽到覺得有這麼誇張嗎？直到當天晚上要出門吃晚餐才深深體會到這句話的真實性。
在觀光區附近，也可以看到遊覽車、汽車、機車、腳踏車及路人卡在一個十字路口動彈不得的情景，但過了一會兒又會神奇地暢通，我想這也是他們文交通化的一部分吧！</p>
<p>雖然交通很混亂以及喇叭聲頻傳，但其實車上的車速普遍不快，喇叭似乎是要通知前車『你後面有我！』這樣而已。</p>
<p>
  <img src="https://i.imgur.com/hsp8ajul.jpg" alt="數位遊牧住哪裡？90 天旅居計畫第二站 - 越南河內" loading="lazy" decoding="async">

</p>
<h3 id="數不盡個人特色的咖啡廳">數不盡個人特色的咖啡廳</h3><hr>
<p>身為一個數位遊牧者，到了不同的城市除了參與社群以外，當然是要去找咖啡廳拍照啊？啊不是我是說工作！</p>
<p>河內的咖啡廳大概就分兩種，一種是可以坐在街邊都是小椅子的咖啡廳，另一種則是一般有座位可以工作的咖啡廳。
相較於釜山，河內這邊咖啡廳的裝潢風格都滿有不同的特色，會讓你每天都想要去不同的咖啡廳看看，咖啡的價錢也很便宜，
喜歡熱鬧一點的區域可以去還劍湖附近尋找，若你是週五去，湖的附近還有每週五六日才有的夜市，可以順便去逛逛。
而你如果是喜歡有寬廣視野的人則可以到西湖四周找找，相較於還劍湖，這邊就比較優靜一點，工作累了可以到窗邊看看西湖的景色舒壓一下。</p>






<div id="carousel0" class="carousel" duration="3000" style="left: 50%; transform: translate(-50%,0); width:700px ;">
    
    <ul>
            <li id="c_slide1" style="min-width: calc(100%/); padding-bottom: 500px; background-image:url(https://i.imgur.com/rl1jm4y.jpg);"></li>
            
        </li>
            <li id="c_slide2" style="min-width: calc(100%/); padding-bottom: 500px; background-image:url(https://i.imgur.com/SdRtnwI.jpg);"></li>
            
        </li>
            <li id="c_slide3" style="min-width: calc(100%/); padding-bottom: 500px; background-image:url(https://i.imgur.com/Yl6jy0f.jpg);"></li>
            
        </li>
            <li id="c_slide4" style="min-width: calc(100%/); padding-bottom: 500px; background-image:url(https://i.imgur.com/F9V1Zaj.jpg);"></li>
            
        </li></ul>
    <ol style="padding-inline-start: 0px;"><li><a href="#c_slide1"></a></li>
        <li><a href="#c_slide2"></a></li>
        <li><a href="#c_slide3"></a></li>
        <li><a href="#c_slide4"></a></li>
        </ol>
    <div class="prev">&lsaquo;</div>
    <div class="next">&rsaquo;</div>
</div>
<h3 id="在河內可以怎麼吃">在河內可以怎麼吃？</h3><hr>
<p>美食這種東西比較主觀，蛋咖啡、法國麵包＋烤肉、蝦餅是我個人比較推的幾項，這幾個我都回訪兩三次！
而其他的炒飯、河粉跟春捲之類的，我覺得哪家都差不多，就沒有特別找哪家。</p>
<p>另外若你在河內數位遊牧的時間不短，可以考慮住有廚房的 Airbnb，像我們每週都會到樂天超市採購一些食物回家料理，
有沒有比較便宜就看怎麼買怎麼吃，我覺得沒有很一定，如果膩了也可以看要怎麼料理自己想吃的食物，但我可以說品客洋芋片很便宜！
水果類我就比較偏向去超市買，至少定價看得懂，被當盤子的機率就比較低。
另外個人認為越南的食物相較於泰國沒有那麼多樣，或是說吸引我們的種類不多，所以有 1/3 的時間是在 Airbnb 內解決。</p>






<div id="carousel1" class="carousel" duration="3000" style="left: 50%; transform: translate(-50%,0); width:700px ;">
    
    <ul>
            <li id="c_slide1" style="min-width: calc(100%/); padding-bottom: 400px; background-image:url(https://i.imgur.com/2cxubeX.jpg);"></li>
            
        </li>
            <li id="c_slide2" style="min-width: calc(100%/); padding-bottom: 400px; background-image:url(https://i.imgur.com/aCIxJCD.jpg);"></li>
            
        </li></ul>
    <ol style="padding-inline-start: 0px;"><li><a href="#c_slide1"></a></li>
        <li><a href="#c_slide2"></a></li>
        </ol>
    <div class="prev">&lsaquo;</div>
    <div class="next">&rsaquo;</div>
</div>
<h3 id="在河內下班放假可以去哪">在河內下班放假可以去哪？</h3><hr>
<p>若你在河內數位遊牧的時間不短，可以撥出一兩天拜訪下龍灣以及陸龍灣，身為世界新七大自然奇景的下龍灣絕對是直得你安排一兩天去拜訪。
陸龍灣則是被稱作路上的下龍灣，如果有時間也滿推薦去的。</p>
<p>如果你是個喜歡微熱鬧的人，假日可以到還劍湖旁晃晃，附近有很多店家可以逛，逛累了就可以坐在湖邊休息，
有些人也會在湖旁邊寫生，而且還劍湖週五晚上開始就有交通管制，管制區內並不會有吵雜的喇叭聲，
很適合在那邊休息放鬆，如果運氣好還有可能遇到當地舉辦的活動，像我們去時就有舉辦街舞比賽！</p>
<p>若是喜歡幽靜的環境，就去西湖旁邊找一間充滿植物的咖啡廳，一杯咖啡配著一本書，也是很棒的選擇。</p>






<div id="carousel2" class="carousel" duration="3000" style="left: 50%; transform: translate(-50%,0); width:700px ;">
    
    <ul>
            <li id="c_slide1" style="min-width: calc(100%/); padding-bottom: 400px; background-image:url(https://i.imgur.com/MtkgP2I.jpg);"></li>
            
        </li>
            <li id="c_slide2" style="min-width: calc(100%/); padding-bottom: 400px; background-image:url(https://i.imgur.com/Btfug7I.jpg);"></li>
            
        </li>
            <li id="c_slide3" style="min-width: calc(100%/); padding-bottom: 400px; background-image:url(https://i.imgur.com/GqLUPbp.jpg);"></li>
            
        </li></ul>
    <ol style="padding-inline-start: 0px;"><li><a href="#c_slide1"></a></li>
        <li><a href="#c_slide2"></a></li>
        <li><a href="#c_slide3"></a></li>
        </ol>
    <div class="prev">&lsaquo;</div>
    <div class="next">&rsaquo;</div>
</div>
<h3 id="總結一下">總結一下</h3><hr>
<p>總結河內數位遊牧將近一個月，讓我對越南的印象改觀了許多，當然也可能跟待的區域有關係，一開始朋友跟我說河內很無聊大概三天就差不多時我還煩惱了一下，
結果下一站的吉隆坡才真的讓我很失望🤣</p>
<p>關於安全的部分，有聽說相較於胡志明，河內的『搶手機怪客』似乎比較少，也可能是因為我們都待在觀光客常去或是很寬的人行道內，所以比較少遇到這類的狀況，
但還是建議如果有去越南的人還是多注意比較好。</p>
<p>最後就還劍湖跟西湖的湖景都很美，周圍也有很多不一樣的咖啡廳，這次大多都去還劍湖附近，比較少去西湖，直到離開前一天決定還西湖一周才發現，
很多很漂亮的咖啡廳想要進去，結果因為現金不夠沒辦法去&hellip;，如果有機會再來，可能會多到西湖旁的咖啡廳工作！</p>
<p>
  <img src="https://i.imgur.com/xgpiAqTl.jpg" alt="數位遊牧住哪裡？90 天旅居計畫第二站 - 越南河內" loading="lazy" decoding="async">

</p>
<h3 id="一些河內數位遊牧的小-tip">一些河內數位遊牧的小 Tip</h3><hr>
<h5 id="關於海關的咖啡錢">關於海關的咖啡錢</h5><p>因為這次出門有帶空拍機，越南一直是這趟旅程風險最大的國家，許多人帶空拍機進越南被刁難，當然也有沒事的，剛好這次出海關時旁邊有一團旅行團，
海關人員看到旅行團就摸摸鼻子放行，還聽到導遊說『不用管他說啥，走就對了！』，所以下次如果要入境越南，看是要找旅行團一起混出來還是直接無視他們海關快速跑走 🤣</p>
<h5 id="關於越南的交通">關於越南的交通</h5><p>越南的 Grab 滿便宜的，如果第一次去且會待長時間的話，建議可以先訂閱一個月，會送幾張優惠券可以使用！（不過之後要自己記得取消訂閱就是了</p>
<h5 id="關於換錢">關於換錢</h5><p>在台灣跟機場不用換太多，匯率都很差，當時在機場換 750，金飾店 775。
如果有加入 FB 的社團，可以在上面獲得資訊，都有好心人士每天在上面 po 今日匯率。
我們在比較幾間換錢所後，還是決定去 FB 社團推薦的金飾店換錢最划算。</p>
<blockquote>
<p><strong>（某間金飾店）</strong></p>
<p>在聖若瑟主教座堂旁邊，我們只是經過覺得很多人所以進去，看到很多東西很便宜結果不小心點爆&hellip;，結論就是點爆蝦餅、喜歡春捲可以點一個試試、豬排跟水餃還好。</p>
<p>👍 推薦：⭐⭐⭐⭐⭐</p>
<p>🗺️ 地圖：<a href="https://maps.app.goo.gl/WuB1VuyRQcxCTxRNA?g_st=il">https://maps.app.goo.gl/WuB1VuyRQcxCTxRNA?g_st=il</a></p>
<p>🖥️ FB 社團： <a href="https://www.facebook.com/share/di7kBR24gQwjHdHZ/?mibextid=K35XfP">越南自由行資訊交流🇻🇳</a></p>
</blockquote>
<h5 id="關於多次回訪的食物店">關於多次回訪的食物店</h5><p>食物這種東西很主觀，網路也有很多人推薦，加上我只是吃貨不是評論家，所以以下列出的店只是我覺得好吃且會回訪！</p>
<p><em>括號內是我自己取的名字，因為看不懂越南文～</em></p>
<blockquote>
<p><strong>Quán Gốc Đa （教堂旁邊的炸物店）</strong></p>
<p>在聖若瑟主教座堂旁邊，我們只是經過覺得很多人所以進去，看到很多東西很便宜結果不小心點爆&hellip;，結論就是點爆蝦餅、喜歡春捲可以點一個試試、豬排跟水餃還好。</p>
<p>👍 推薦：⭐⭐⭐⭐</p>
<p>🍗 必點：點爆蝦餅就對了</p>
<p>🗺️ 地圖：<a href="https://maps.app.goo.gl/SzuzEvSWfMZNriZo7?g_st=il">https://maps.app.goo.gl/SzuzEvSWfMZNriZo7?g_st=il</a></p>
</blockquote>
<blockquote>
<p><strong>Quán Gốc Đa （環劍湖旁的甜筒冰淇淋）</strong></p>
<p>在環劍湖一條道路邊的甜筒店，一隻才 10～15 塊台幣而已，口味也很多種，喜歡吃冰可以試試。</p>
<p>👍 推薦：⭐⭐⭐⭐⭐</p>
<p>🍗 必點：除了榴槤其他都可以試試</p>
<p>🗺️ 地圖：<a href="https://maps.app.goo.gl/MwGFB4WC4B3AFiED7?g_st=il">https://maps.app.goo.gl/MwGFB4WC4B3AFiED7?g_st=il</a></p>
</blockquote>
<blockquote>
<p><strong>Cafe Giảng （蛋咖啡創始店）</strong></p>
<p>第一次來點蛋咖啡，第二次來我點了蛋啤酒，大家有機會一定要試試蛋啤酒！</p>
<p>👍 推薦：⭐⭐⭐⭐⭐⭐⭐</p>
<p>🍗 必點：蛋咖啡＋蛋啤酒一次滿足所有願望</p>
<p>🗺️ 地圖：<a href="https://maps.app.goo.gl/yHEbY3XeUqLWpWy37?g_st=il">https://maps.app.goo.gl/yHEbY3XeUqLWpWy37?g_st=il</a></p>
</blockquote>
<blockquote>
<p><strong>Quán thịt nướng khói （轉角的烤肉攤）</strong></p>
<p>這間也是經過看到很多人＋味道超香，經過幾次決定試試，結果驚為天人，差點每天都來吃。</p>
<p>👍 推薦：⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐ 太好吃了超過十分</p>
<p>🍗 必點：烤豬肉串、法國麵包夾三串肉、炸法國麵包</p>
<p>🗺️ 地圖：<a href="https://maps.app.goo.gl/SzuzEvSWfMZNriZo7?g_st=il">https://maps.app.goo.gl/SzuzEvSWfMZNriZo7?g_st=il</a></p>
</blockquote>
<p><em>只給超過五分的照片</em>🤣</p>






<div id="carousel3" class="carousel" duration="3000" style="left: 50%; transform: translate(-50%,0); width:500px ;">
    
    <ul>
            <li id="c_slide1" style="min-width: calc(100%/); padding-bottom: 700px; background-image:url(https://i.imgur.com/DkiRE7D.jpg);"></li>
            
        </li>
            <li id="c_slide2" style="min-width: calc(100%/); padding-bottom: 700px; background-image:url(https://i.imgur.com/Pn9MvAi.jpg);"></li>
            
        </li>
            <li id="c_slide3" style="min-width: calc(100%/); padding-bottom: 700px; background-image:url(https://i.imgur.com/NY0vGKL.jpg);"></li>
            
        </li></ul>
    <ol style="padding-inline-start: 0px;"><li><a href="#c_slide1"></a></li>
        <li><a href="#c_slide2"></a></li>
        <li><a href="#c_slide3"></a></li>
        </ol>
    <div class="prev">&lsaquo;</div>
    <div class="next">&rsaquo;</div>
</div>
<h5 id="關於專薛觀光客的盤子熱炒店">關於專薛觀光客的盤子熱炒店</h5><p>食物這種東西很主觀，以下列出的店只是我覺得被雷到心情不好而已&hellip;</p>
<p><em>括號內是我自己取的名字，因為看不懂越南文～</em></p>
<blockquote>
<p><strong>Steak &amp; Duck（盤子熱炒店）</strong></p>
<p>坐下來才看評論的盤子店，食物味道不差，但價格差不多是同類的 2~2.5 倍，個人覺得不需要花這個錢&hellip;（氣到沒拍照XD，然後寫這篇文章時他的 Google 評論已來到 1.4 顆星&hellip;</p>
<p>🍽️ 盤子度：🍽️ 🍽️ 🍽️ 🍽️ 🍽️ 🍽️ 🍽️ 🍽️ 🍽️ 🍽️</p>
<p>🗺️ 地圖：<a href="https://maps.app.goo.gl/94j3ShGS1HYvL42G6?g_st=il">https://maps.app.goo.gl/94j3ShGS1HYvL42G6?g_st=il</a></p>
</blockquote>
]]></content:encoded>
    </item>
    <item>
      <title>新產品不適合跑 Scrum？</title>
      <link>https://ianlifelab.com/start-up/do-not-use-scrum-before-new-pd-launch/</link>
      <pubDate>Thu, 07 Dec 2023 00:00:00 +0000</pubDate>
      <dc:creator>Ian Tsai</dc:creator>
      <guid>https://ianlifelab.com/start-up/do-not-use-scrum-before-new-pd-launch/</guid>
      <category>創業筆記</category>
      <description>Scrum 是矽谷推崇的一種工作模式，許多軟體公司都有引入 Scrum 作為團隊協作的框架，但並非所有狀況都適合 Scrum。</description>
      <content:encoded><![CDATA[<br>
<br>
<p>Scrum 算是現在軟體公司內最主流的協作框架，藉由 sprint 來切割產品每次更新的 scope ，讓產品可以不斷地與用戶互動，從而打造最貼近用戶及市場的產品。
但並不是所有的產品或是團隊都適合執行 Scrum 這個框架，甚至 Scrum 會阻礙開發的進度。</p>
<h3 id="scrum-的優勢在於小步快跑">Scrum 的優勢在於小步快跑</h3><hr>
<p>Scrum 的優勢在於小步快跑，產品藉由每次的迭代更新，不斷地適應市場的改變與用戶的需求。
在執行 sprint 的過程中，會評估每個 task 所需要花的資源、每個 sprint 可以完成掉多少 task 以及定義每個 sprint 的 goals 等，
這些數據讓 PM 可以有效的管理產品的進度，同時也可以經由這些資訊與不同的部門合作，讓產品可以在市場上順利被推行。</p>
<br>
<h3 id="新產品還沒上線之前不適合跑-scrum">新產品還沒上線之前不適合跑 Scrum？</h3><hr>
<p>為什麼會說產品還沒上市前不適合跑 Scrum 呢？剛剛有提到，Scrum 講求小步快跑，藉由產品的快速迭代獲取更多用戶反饋，進而打造更貼近市場的產品。
重點來了！『產品的快速迭代』來獲取反饋，但產品還沒上線，怎麼來迭代獲取反饋呢？
同時 Scrum 中的會議也會大量使用掉團隊的時間，在產品發布之前更應該把時間放在開發產品上，盡量避免耗時太久的會議。</p>
<p>在新產品上線之前，通常團隊或是 PM 會決定好新產品要有什麼功能，或是具備什麼條件，滿足這些需求推出市場才有意義。
所以在開發新產品時，團隊的目標並非迭代產品，而是<strong>完成可上線的產品</strong>，讓銷售部門可以順利的將產品推往市場。
這階段會更像是專案式的開發方式而非 Scrum。</p>
<p>專案式的開發方式，就像接案公司承接甲方的案件一樣，有明確的交付日期以及交付項目，這些資訊通常會跟著發佈計畫做調整；
同理，在公司內部開發新產品時，也會有一個發布計畫，預計新產品需要在何時發布、發布時需要囊括哪些功能、預期帶來什麼效應等等，
若錯過此時機，可能發布的效果就不會如預期般理想。</p>
<p>時效性的例子，我想以 Youtuber 是最好的範例，每年 Apple 新品發佈會，各大科技 YT 都會守在電腦前面，甚至有的被受邀出席 Apple 官方的實體發佈會，
在結束後分秒必爭的整理素材、剪輯後製、發布影片，為了就是要搭上發佈會後的這個黃金時段，因為這時流量最高，可能只要晚同業一兩天，流量就是天與地的差異。
產品的開發雖然沒有這麼極端，但邏輯卻非常相似。</p>
<p>這是否代表用專案式開發方式，要完全捨棄 Scrum 用取代呢？</p>
<h3 id="新產品並非不適合-scrum而是看怎麼使用">新產品並非不適合 Scrum，而是看怎麼使用</h3><hr>
<p>其實並非新產品不適合 Scrum，而是不要拘泥於形式讓 Scrum 成了開發上的障礙，如開發不完就遞延，這可能會影響到產品上線的標準。</p>
<p>怎麼將專案型開發流程融入 Scrum 呢？以一個開發時長為期 12 週的產品為例子，雖然這個產品還是有既定的專案規劃，如交付項目、交付日期等，
但仍然可以依照開發時長可以切成數個 sprint ，每個 sprint 的會議只需包含了 planning, retrospective, review 以及 daily standup 即可。
由於所需完成的任務在 kick-off meeting 中已經決定，理論上不太需要再花大把的時間去開 refinement meeting，但如果有需求變更，仍可招開會議討論。
而這些會議主要是讓 PM 可以順利追蹤產品進度，同時也讓團隊可以不斷優化彼此合作的模式。</p>
<p>乍看之下似乎跟原本的模式相同，但其實目的卻差很多，<strong>新產品的目標是在交付日期前完成，Scrum 是讓團隊的協作可以更順利</strong>；
而既有產品執行 Scrum 的目標則是讓團隊與產品可以快速適應市場的變化。</p>
<h3 id="讓團隊保有彈性不拘泥於框架">讓團隊保有彈性、不拘泥於框架</h3><hr>
<p>不管是 Scrum 、 Waterfall 或是專案式開發，都只是一個形式，都要依照團隊的狀況去選擇適合的開發方式，
而不是盲目的追求形式，認為有使用某個框架就是遵從了該框架的精神，
相較於拘泥於形式，讓團隊保有一點可以應付各種事情的彈性可能是較好的選擇。</p>
<br>
<!-- 

<br>

<div>
    <div>
        <h2 id="start-up">新創產品工具包讓開啟你的產品之路</h2>
    </div>
    <hr>
    <div>
        <span>
            看了這麼多產品相關的知識，卻沒有機會實際運用嗎？何不試試自己製作一個產品或是 Side Project 來驗證一下呢？
            我正在準備新創產品工具包，這裡面包含了一些我過去自己開發產品實用的工具或模板，
            如『用 notion 做產品管理』、『用 notion 作為產品的公開 wiki』或是『怎麼自己從零開始設計網站 mockup』等資訊。
            如果你對此工具包以及如何打造產品有興趣的話，可以關注我的 IG 
            <a href="https://www.instagram.com/startup.note/" target="_blank"><b>@startup.note</b></a>
            以及
            <a href="https://ianlifelab.com/categories/start-up/" target="_blank"><b>創業那些事</b></a>
            系列文，讓你擁有好用工具的同時也可以避開我踩過的坑。
        </span>
    </div>
</div>


<br>
<hr>
<br>
<div>
    <div>
        <span>
            關於
            <a href="https://ianlifelab.com/categories/start-up/" target="_blank"><b>創業那些事</b></a>
            系列文，主要是紀錄從 0 開始打造 MeFresh 產品的一些經驗，包含踩過什麼坑、跟夥伴吵架怎麼辦、遇到問題怎麼解決以及經歷這些事後的心境轉換，希望這些經驗也可以幫助到正在閱讀這系列文章的你。
        </span>
    </div>
</div>
<br>
 -->]]></content:encoded>
    </item>
    <item>
      <title>矽谷推崇的新創思維 - 為何要產品需要 MVP？</title>
      <link>https://ianlifelab.com/start-up/why-need-mvp/</link>
      <pubDate>Tue, 05 Dec 2023 00:00:00 +0000</pubDate>
      <dc:creator>Ian Tsai</dc:creator>
      <guid>https://ianlifelab.com/start-up/why-need-mvp/</guid>
      <category>創業筆記</category>
      <description>推出 MVP 來測試產品是矽谷推崇的新創思維之一，但大部分公司都已經有穩定的產品，工作上我們不太容易有執行 MVP 的經驗，究竟 MVP 對產品帶來的益處是什麼？我們又可以用什麼方法來獲取實踐 MVP 的理論呢？</description>
      <content:encoded><![CDATA[<br>
<br>
<h3 id="mvp-是那個-mvp-嗎">MVP 是那個 MVP 嗎？</h3><hr>
<p>在軟體產業中，MVP （最小可行性產品）這個詞大家應該不陌生，但在工作上卻不太容易去接觸到，因為在我們進入公司時，
大部分的公司都已經有一個穩定的產品，或是已經經過打磨驗證的產品，這讓我們要從如何去實踐 MVP 這套理論的機會也變得比較困難。
所以大家可能都有『產品最好先推出 MVP 』的概念，但卻很少有實際執行 MVP 的經驗。</p>
<h3 id="產品推出-mvp-會帶給你什麼好處">產品推出 MVP 會帶給你什麼好處？</h3><hr>
<p>一定要推 MVP 嗎？以前的產品也沒 MVP 照樣有人買單啊！</p>
<p>說到早期產品開發，通常會經歷開會討論需求、確認規格、執行開發、功能測試、產品發佈等階段，中間可能還會有需求變更的環節、溝通落差等還環節讓時間延遲，
前後加起來可能 12~18 個月甚至更久，但早期的產品仍能獲得了成功，為何現在不行呢？
相比十年前，現今社會的變化速度太快，以前可能五年市場才會出現變化，現在可能一年甚至更短，市場或是人們的習慣就會被改變。</p>
<p>以一個遊戲為例，約莫十年前日本推出一款遊戲叫龍族拼圖，當時風靡遊戲市場一大段時間，還記得當時一隻 T1 角色可以稱霸遊戲半年一年沒問題，
但現在遊戲的選擇太多，遊戲商為了讓玩家花更多注意力在遊戲上，遊戲不斷推出新的挑戰刺激玩家，副本 Meta 不斷改變，
上個月人人搶著抽的 T1 的角色，這個月在 PTT 可能就出現『XX 是不是過氣』的類似留言。</p>
<p>產品市場也是，現在環境以及用戶的習慣變化的太快速，如果花一兩年的時間開發產品，可能產品已經沒辦法滿足現在客戶的需求了。
而經由 MVP 提早接觸市場，我認為對產品有以下三個好處：</p>
<h5 id="1-確認產品的方向">1. 確認產品的方向</h5><p>我想拍拍圈（PopChill）是個不錯的例子，當初拍拍圈的產品想要做社群電商，像是 IG 裡面內建電商的功能一樣，
推出之後發現這個題目似乎跟當初預期的效果不一樣，最終他們決定要把題目改為『精品二手拍賣』，現在的成果就非常的好。
試想要是拍拍圈產品做了一兩年都沒推出市場，花了大把資源卻發現選錯題目，到時改題目的成本會不會更高？</p>
<p>產品提早接觸市場，不但可以驗證產品是否有解決市場上的問題，也可評估產品的方向是否需要改變。</p>
<h5 id="2-確認產品功能是否真的被需要">2. 確認產品功能是否真的被需要</h5><p>做產品的人有時會掉入『我要打造最強產品』漩渦，而忽略了市場需求及聲音。
團隊可能從市場發現某些需求，或是經由訪談找到了用戶沒被滿足的痛點，讓產品有機會從這些點切入，
但這些都停留在『我們覺得用戶需要』的階段，但我們不知道的是，可能這些需求對於用戶來說不夠痛，他們有其他替代品可以使用，
有或是推出的產品雖然解決了問題，但因為設計不良讓用戶花更多的時間適應產品，以至於用戶們不買單。
推出 MVP 可以驗證我們的假設，同時團隊可以從先行使用的用戶中獲得的反饋去優化產品，讓產品可以更貼近用戶的需求，解決他們實務上的問題。</p>
<h5 id="3-確認產品-ta-是否與預期的相似">3. 確認產品 TA 是否與預期的相似</h5><p>一開始在設計產品時，團隊一定會依照某些標準去 target 一些用戶為產品的 TA，試著以這些 TA 的輪廓來規劃產品的解決方案。
這跟第二點類似，這些 TA 是『我們認為的 TA』，實際上可能不是，比方說一個加密貨幣錢包商，認為所有接觸加密貨幣的人都是錢包的 TA，
但推出產品後發現，相比於錢包，專業交易員更喜歡使用交易所，不只是交易所提供豐富的衍生性金融商品，交易所在交易上對於交易員來說比錢包方便很多。
這時團隊就會了解要把交易員剔除在目標客戶之外，關於交易相關的功能優先度就變得不是那麼的高。</p>
<br>
<br>
<h3 id="一定要-0-到-1-的產品才能實踐-mvp-嗎">一定要 0 到 1 的產品才能實踐 MVP 嗎？</h3><hr>
<p>看到這可能還是有人會覺得『啊我進公司時就已經有產品了，我要怎麼去實踐 MVP 這套理論？』</p>
<p>以現在軟體發展的速度來看，產品為了脫穎而出，不少公司都願意付出一些成本來試錯創新，甚至會成立創新部門，讓這個部門來研發各種創新的功能，
如科技巨頭、傳統金融公司為了跟上 Web3, AI 的潮流，都有成立對應的創新部門來對應這些變化。他們不一定要打造全新的產品，
也可以是在原本的產品上運用這些技術，讓產品有不同的競爭力。比方說 IG 支援了 NFT 大頭貼、X 可以用 btc 來支付 tip 等都使類似的案例。</p>
<p>所以要實踐 MVP 不一定要從零開始打造產品，在既有的產品上增加一個全新的功能，推出市場讓用戶使用並獲取反饋也是一種方法。</p>
<br>
<h3 id="做-side-project-也是實踐-mvp-的好方法">做 Side project 也是實踐 MVP 的好方法</h3><hr>
<p>除了工作上的實作，自己做一個 Side Project 也是很好的一個選擇，如果你擁有技術能力，給自己三個月的時間打造一款產品 MVP 並尋找初始用戶，
搜集他們的回饋並不斷地打磨產品，或是你與一兩個志同道合的夥伴以繼進行這個 project。
如果沒有技術能力，也可以用 figma 打造一個 prototype 並找用戶做訪談，讓他們試用看看你的 prototype 產品並同時做更深入的需求探索。</p>
<br>
<!-- 

<br>

<div>
    <div>
        <h2 id="start-up">新創產品工具包讓開啟你的產品之路</h2>
    </div>
    <hr>
    <div>
        <span>
            看了這麼多產品相關的知識，卻沒有機會實際運用嗎？何不試試自己製作一個產品或是 Side Project 來驗證一下呢？
            我正在準備新創產品工具包，這裡面包含了一些我過去自己開發產品實用的工具或模板，
            如『用 notion 做產品管理』、『用 notion 作為產品的公開 wiki』或是『怎麼自己從零開始設計網站 mockup』等資訊。
            如果你對此工具包以及如何打造產品有興趣的話，可以關注我的 IG 
            <a href="https://www.instagram.com/startup.note/" target="_blank"><b>@startup.note</b></a>
            以及
            <a href="https://ianlifelab.com/categories/start-up/" target="_blank"><b>創業那些事</b></a>
            系列文，讓你擁有好用工具的同時也可以避開我踩過的坑。
        </span>
    </div>
</div>


<br>
<hr>
<br>
<div>
    <div>
        <span>
            關於
            <a href="https://ianlifelab.com/categories/start-up/" target="_blank"><b>創業那些事</b></a>
            系列文，主要是紀錄從 0 開始打造 MeFresh 產品的一些經驗，包含踩過什麼坑、跟夥伴吵架怎麼辦、遇到問題怎麼解決以及經歷這些事後的心境轉換，希望這些經驗也可以幫助到正在閱讀這系列文章的你。
        </span>
    </div>
</div>
<br>
 -->]]></content:encoded>
    </item>
    <item>
      <title>矽谷阿雅 - 追不到夢想就創一個!</title>
      <link>https://ianlifelab.com/read/create-dreams/</link>
      <pubDate>Sat, 02 Dec 2023 00:00:00 +0000</pubDate>
      <dc:creator>Ian Tsai</dc:creator>
      <guid>https://ianlifelab.com/read/create-dreams/</guid>
      <category>學習成長</category>
      <description>相信身為 PM 的人應該都聽過『矽谷阿雅』，也知道他的經歷非常的漂亮，這人人稱羨的經歷背後，可能是種種挫折堆疊而成的結果，但大家並不知道這些事情罷了。我認為書中提到幾個觀點與我個人想法滿貼近的，也有些事情是正在經歷而有所感受。</description>
      <content:encoded><![CDATA[<br>
<p>相信身為 PM 的人應該都聽過『矽谷阿雅』，也知道他的經歷非常的漂亮，這人人稱羨的經歷背後，可能是種種挫折堆疊而成的結果，但大家並不知道這些事情罷了。
有些人會覺得這是一本雞湯書，但看的過程卻有些共鳴，這些看似雞湯的背後，都是不為人知的辛酸血淚。</p>
<p>簡單聊聊閱讀過程中產生共鳴的一些部分。</p>
<br>
<h4 id="獨立思考-vs-直接解答">獨立思考 vs 直接解答</h4><hr>
<p>我想這可能是歐美與亞洲國家的教育體制的差異？我們從小到大不管是教育、考試都會有一套<strong>標準答案</strong>，甚至工作後我們認為<strong>上司的指令</strong>就是我們<strong>工作的標準</strong>，但歐美似乎更注重你如何思考，如何解決問題，而不是伸手等著答案出現。</p>
<p>這讓我想到曾經當主管的經驗，每當組員來問問題時，一開始的我會給予<strong>我認為的解法</strong>，當然組員聽過想了想就會回『好我知道了』，變聽話照做。
結果並沒有不理想，但漸漸的我發現，他們看似解決了工作上的問題，但其實只是把一個答案填進去空格裡而已，
這樣其實失去了很多成長的機會，如沒辦法獨立下決定、害怕承擔錯誤等。</p>
<p>於是後來當他們來問我問題時，我都會反問『<strong>那你怎麼想呢？你覺得這個問題怎麼解決會比較好？</strong>』
其實這樣問並不是要去找麻煩，而是希望大家是真的經過思考，帶著一些想法過來討論，這個想法可以是不完整、可以不正確，但它可以訓練我們的思考解決問題的脈絡，
而不再只是像一個機器人一樣聽話照做。當往後再次遇到問題時，漸漸的自己會建立一套解決流程，而不會像無頭蒼蠅一樣不知所措。
我認為這不只是主管對組員的狀況才適用，而是當我們今天要找任何人，甚至老闆討論事情時，大家都希望你是<strong>帶著一點東西來</strong>，而不是伸手就要答案。</p>
<br>
<h4 id="勇於挑戰任何失敗都是在練習成功">勇於挑戰，任何失敗都是在練習成功</h4><hr>
<p>穩定對於亞洲人、或是台灣人來說非常重要，踏出舒適圈代表著不穩定，可能會失敗，
我們非常的畏懼失敗，害怕失敗就會失去一切、被瞧不起，
與其要經歷失敗的痛苦，不如繼續穩定現在的生活，至少可以在不舒服中尋找小確幸。</p>
<p>其實這沒有什麼對錯，相較於歐美人，亞洲人的確會比較保守，但我認為在可承受的範圍內去探索未知的領域，其實都是給自己創造機會。
也許現在的自己能力已經非常的強，只是待在相同的環境沒辦法發揮，或是其他原因導致不自信、畏懼失敗等種種原因，讓人無法跨出第一步。
就算真的失敗了，在這過程中學習到的任何事物，都會成為我們的經驗，搞不好未來的哪天我們就可以運用這個經驗爬得更高。</p>
<p>以我為例子，
當年決定轉職成 PM 前猶豫了很久，當工程師也幾年了，如果轉職成 PM 那年資就要重算，薪水也要調降，這讓我糾結了很久。
最後我還是決定挑戰看看，現在回去看也覺得這個決定沒有做錯，在 PM 的這條路上，工程師的背景幫助我很多事情，讓我有更多的時間可以鑽研產品相關的技能。
有沒有可能失敗，當然有，失敗頂多回去當工程師。有沒有可能繼續當工程師薪水更高，當然也有，但這可能不是未來我想要的職涯，
等到那天我想通時再轉換的成本可能更高了。（但工程師的薪水是真的香 🤣</p>
<br>
<h4 id="我的價值由自己肯定">我的價值由自己肯定</h4><hr>
<p><strong>30 歲成為上市公司的 CEO</strong>、<strong>大學畢業就創造了獨角獸新創公司</strong>，如果擁有這種 Title 應該很炫吧？
年輕有為、少年董，這些 Title 都讓人著迷，但真正在年輕時擁有大成功的人並不是多數，
也不是每個人都有辦法複製這些成功，成為 CEO 或是創造獨角獸更不一定是每個人的夢想，那為何我們要按照別人或是社會的期待去活著？
只有我才知道我的價值在哪裡，也只有我知道我未來的夢想是什麼，每個人都不一樣，
我們只需要肯定自身的價值並實現夢想，並不需要被社會的價值所綁架。</p>
<br>
<h4 id="讀後心得">讀後心得</h4><hr>
<p>阿雅這本書可能很多人會覺得『啊不就是雞湯文』、『看似講了什麼，但好像又沒講什麼』，但我認為可能擁有過類似經歷的人看了這本書會比較有共鳴，
在看的過程中我也在思考，如果我是他我會怎麼做？現在扛兩三百萬的貸款壓力就很大了，更不用說在她那個時代，
可能大部分的人都會想著『如果我失敗了怎麼辦』，但有些事真的是沒有經歷過我們都不會知道結果會是怎樣，
如果結果是『不小心成功了』的話呢？我們會不會慶幸當下有做這個決定？
我認為人生的路上一定會遇到很多迷茫，那些成功創業家的背後，也不知道經歷了多少挫折失敗，才造就了現今的獨角獸或是科技大廠。</p>
<p>想想年幼的我們，對任何事物都充滿好奇心，面對任何事情都認為自己一定可以解決，但隨著年紀的增長，有了知識、有了金錢、有了名聲，
卻失去了年輕時的勇氣、好奇以及無畏，這是多麼可惜的事情。
每個明天對我們來說都是未知的，天天都有機會出現意料之外的事情，與其焦慮、憂鬱、擔心，不如試著擁抱這種未知性，
接受並解決他們，讓每個今天都過得比昨天更好。</p>
<p>結論，我認為是一本好書，書中還有很多有趣的故事，就算不是 PM 也推薦看看！！</p>
<br>
<p>
  <img src="https://i.imgur.com/vXFH6dll.jpg" alt="bookimg" loading="lazy" decoding="async">

</p>
<br>]]></content:encoded>
    </item>
    <item>
      <title>誰說 sprint ticket 一定要 story point?</title>
      <link>https://ianlifelab.com/product/does-ticket-must-need-story-point/</link>
      <pubDate>Mon, 27 Nov 2023 00:00:00 +0000</pubDate>
      <dc:creator>Ian Tsai</dc:creator>
      <guid>https://ianlifelab.com/product/does-ticket-must-need-story-point/</guid>
      <category>產品思維</category>
      <description>有參與過敏捷開發的人一定聽過 story point，網路上也很多有關 story point 的解釋以及如了運用，他主要是協助衡量團隊的開發狀況，讓 PM 可以再有一定的基準下去跟其他部門溝通，如產品行銷或是活動銷售等等。但是不是真的有了 story point 就一定可以讓產品或專案順利進行？有沒有可能有了 story point 但還是遇到一堆狀況？</description>
      <content:encoded><![CDATA[<p>有參與過敏捷開發的人一定聽過 story point，網路上也很多有關 story point 的解釋以及如了運用，
他主要是協助衡量團隊的開發狀況，讓 PM 可以再有一定的基準下去跟其他部門溝通，如產品行銷或是活動銷售等等。
但是不是真的有了 story point 就一定可以讓產品或專案順利進行？
有沒有可能有了 story point 但還是遇到一堆狀況？</p>
<p>
  <img src="https://i.imgur.com/ayNO7ddl.png" alt="誰說 sprint ticket 一定要 story point?" loading="lazy" decoding="async">

</p>
<br>
<br>
<br>
<h3 id="永遠估不準的-story-point">永遠估不準的 Story Point</h3><hr>
<p>有沒有遇過這個狀況，在 sprint lanning 時團隊評估這個 sprint 可以完成 40 點，但 sprint 結束時卻只完成了 25~30 點，
常見的原因可能有這幾種：</p>
<ol>
<li>ticket 的點數估不準（如後端工程師估一同評估前端工程師的 ticket ）</li>
<li>評估 ticket 時忘記某個項目也要做（如 App 新功能只評估畫面開發，遺漏 API 串接）</li>
<li>實作 ticket 時出現預期之外問題或任務（在串接第三方平台時，回的參數與文件給的不同）</li>
</ol>
<p>這些狀況都可能對在進行中的 sprint 造成一些風險，當然一般來說還是有辦法解決，
通常會在 Retrospective meeting 中去討論如何避免這次該遇到的困難，如後端工程師需要了解前端的開發不只有畫面，也包含邏輯；
與第三方廠商串接資料時需要先確認文件與實際提供的參數是否相同等事項，並期待下次再評估點數時可以更貼近團隊的狀況。</p>
<p>但，有沒有就是沒辦法解決的狀況？如不管討論幾次總是會出現預期之外的問題，或是 ticket 總是會在 sprint 中不斷地長大，
導致需要在 sprint 去調整開發進度，接著去跟其他部門溝通 Delay 的狀況呢？</p>
<br>
<h3 id="以-sprint-goals-為導向story-point-僅是參考">以 Sprint Goals 為導向，Story Point 僅是參考</h3><hr>
<p>在執行敏捷開發的過程中，團隊可能覺得目標是『完成全部的 story point』，
但如果遇到了進度不如預期，會很容易掉入一個互相踢皮球的狀況，如『 PM 安排太多事情了拉』，
『這個 sprint 少一天沒辦法做這麼多啊』、『為什麼工程師可以做這麼慢，這不是很簡單嗎？』、『做不完大家都有鍋啊』之類的情境內。</p>
<p>可以試著以 <strong>Sprint Goals</strong> 作為團隊的目標，如『我們與 ABC company 在 xx/yy 有聯合行銷活動，所以這個 sprint 需要完成 XYZ 功能的開發與測試，讓行銷及業務團隊可以如期的與 ABC company 舉辦活動來推廣及曝光產品。』，團隊成員就知道<strong>我們是為了什麼目標</strong>需要在這個 sprint 努力的把事情完成，
而不在只是像機器人一樣完成全部的 story point 而不知道為什麼要做完這些事情。</p>
<br>
<h3 id="小團隊甚至可以不需要-story-point">小團隊甚至可以不需要 Story Point</h3><hr>
<p>通常敏捷開發會需要 Refinement meeting 來進行 story point 的估算，這會議可能會需要耗時 1 ~ 1.5 hr 以上，
在團隊還小的時候，最重要的事情並非要走完所有的『形式會議』，而是把產品的開發出來並且保有一定的品質。
且團隊小，通常成員都需要負責多項任務，所以對於產品細節也都有一定的理解程度。
與其花大把時間去遵從這些形式，不如給團隊保有彈性，以 Sprint Goals 來對齊團隊目標，把更多的時間花在產品上而非形式或流程。</p>
<br>
<h3 id="找出適合團隊的工作流程最重要">找出適合團隊的工作流程最重要</h3><hr>
<p>過去有很多種開發協作方式，敏捷相較於過去的瀑布流，優勢是可以讓產品更快速的投入市場迭代，
大量獲取用戶反饋來改進產品，我們應該是遵循這敏捷的精神而不是拘泥於形式。
若團隊適合的敏捷是以目標導向，不管怎樣就是在 sprint 內完成所設定的目標，那是否點數的估算就不那麼重要；
當然如果是有規模的團隊，需要非常有條理，需要以點數的完成率來評估績效，或許 story point 對於他們來說就有意義。</p>
<p>總結，找出適合團隊的工作流程，比拘泥於形式來得更重要！</p>
<p>
  <img src="https://i.imgur.com/17jKDIA.png" alt="誰說 sprint ticket 一定要 story point?" loading="lazy" decoding="async">

</p>
<br>]]></content:encoded>
    </item>
    <item>
      <title>數位遊牧住哪裡？90 天旅居計畫第一站 - 韓國釜山</title>
      <link>https://ianlifelab.com/nomads/busan-digital-nomadism/</link>
      <pubDate>Sun, 19 Nov 2023 00:00:00 +0000</pubDate>
      <dc:creator>Ian Tsai</dc:creator>
      <guid>https://ianlifelab.com/nomads/busan-digital-nomadism/</guid>
      <category>數位遊牧</category>
      <description>這次旅居於擁有廣安、海雲臺等多個度假氛圍的海水浴場，也包含西面、南浦洞等熱鬧商圈的多元城市 - 釜山，同時韓國 95% 以上的咖啡豆也是從這座美麗的都市進口至韓國各地，這也讓釜山街上隨處可見咖啡廳，提供數位遊牧民族一個多元的選擇。</description>
      <content:encoded><![CDATA[<br>
<br>
<p>自從上次從清邁體驗過數位遊牧的生活之後，彷彿發現新世界一樣，不管是時間或是心態都跟旅遊時不同，沒有一定要逛完所有景點，
也沒有時間壓力，在保有新鮮感的同時也可以照著自己的步調走，所以趁著還有這股衝動回國後立馬規劃下一次遊牧的時間及國家。
剛好秋天是楓葉季，且聽說秋天的釜山整體氣溫涼爽，非常宜人，只要套一件薄外套出門就可以了，所以第一站就決定給韓國的釜山了！</p>
<p>這次旅居釜山與清邁不同，在清邁時大部分時間都待在 Co-Living 內，
由於 Co-Living 的費用包含了 Co-Wprking 的工作空間，所以除了吃飯很少出去探索周圍的環境，
而這次的旅居目標是『探索當地更多不一樣風景』，看看釜山哪邊適合工作、有什麼在地的好吃的食物、平時大家的休閒是什麼、最後再想想是不適合移民來韓國 🤣🤣🤣</p>
<br>
<h3 id="釜山要去哪裡工作">釜山要去哪裡工作？</h3><hr>
<p>聽說韓國有 95% 咖啡豆從釜山進入，所以路上真的隨便就是一間咖啡廳，還有人說釜山可能沒地方吃飯，但不會找不到咖啡廳，不知道是真的還是假的🤣。</p>
<p>這次住在西面站附近，西面站應該算是釜山的鬧區，可能有點像台北的東區或是信義區的地方，店家選擇很多非常的熱鬧。
在西面站附近有非常多的咖啡廳可以工作，尤其是田圃咖啡街<strong>對面</strong>的街道（沒錯，適合工作咖啡廳在咖啡街對面 XD），每天在路上選就選不出來了！！
而且基本上每家咖啡廳都有附插座及 Wifi，美式咖啡的價格通常落在 3k ~ 4k 上下，當然有些店家會更便宜，環境也很適合工作一整天，個人覺得這種價格不貴，
而且每家咖啡廳風格也都不一樣，有些很好拍照，當工作做累了就可以站起來隨處拍拍放鬆一下心情。</p>
<p>當然如果要工作還是要選擇適合<strong>久坐</strong>的咖啡廳，釜山也有很多是自己創業開店的咖啡廳，這就比較偏向打卡聊天吃甜點，不適合工作了
（人家排隊吃甜點，如果看到你把電腦拿出來應該會白眼翻一百圈吧哈哈）</p>
<p>另外，釜山周圍有非常多海水浴場，如廣安、海雲臺等，這些海水浴場的規劃都非常的好，而且也有很多海景咖啡廳。
如果今天你想要遠離城市的喧囂，可以到海水浴場附近選擇一間咖啡廳，一邊看海景一邊工作，也會有不一樣的感受！</p>
<p><em>文章最後有附上在釜山一個月內踩過五間我認為適合工作的咖啡廳以及可以採買生活用品的超市</em></p>
<p>
  <img src="https://i.imgur.com/SopWXLz.jpg" alt="數位遊牧住哪裡？90 天旅居計畫第一站 - 韓國釜山" loading="lazy" decoding="async">

</p>
<h3 id="平常在釜山可以幹嘛">平常在釜山可以幹嘛？</h3><hr>
<p>下班後不妨到街上走走，雖然有些人會說韓國很無聊，市容跟台北高度相似，但我覺得還是得看你是以什麼心態去看待這些事，
像這次在路上就遇到滿多當地舉辦的活動或是街頭藝人表演，這些都滿新鮮的，尤其時釜山在 2030 年要舉辦世博，他們從現在就開始準備了，所以其實滿有機會看到不同的活動。但如果你說要逛街的話，我是覺得台灣街頭很多日韓貨，所以可能會覺得差異不大沒有新鮮感。</p>
<p>假日就可以跑比較遠的地方，這次剛好運氣比較好，待在釜山的期間有遇到煙火節，剛好體驗到整個沙灘擠爆百萬人，若中間跑去上廁所就沒辦法回到座位上的窘境。</p>
<p>
  <img src="https://i.imgur.com/7yszzrB.jpg" alt="數位遊牧住哪裡？90 天旅居計畫第一站 - 韓國釜山" loading="lazy" decoding="async">

</p>
<h3 id="旅居釜山一個月的感想">旅居釜山一個月的感想</h3><hr>
<p>相較於清邁，感覺釜山出沒的歐美旅客或是數位遊牧的人相對比較少一點（在咖啡廳工作時亞洲面孔的出沒機率比較高），
不過我仍然認為釜山是一個很棒的城市，如果今天上班想換個心情，搭個地鐵 20 分鐘就可以到廣安海水浴場，
選一間咖啡廳就可以配著海景工作一整天，心情也會愉悅很多。
而且釜山是個很多樣化的城市，不管是輕鬆休閒的海灘，或是比較喧囂繁華的鬧區，都可以在釜山找到。
這次去也剛好遇到釜山舉辦不同的活動，讓我看到這座城市帶給大家的魅力，如果未來有機會旅居釜山，一定要好好深入感受一下當地的文化，
相信會是一段有別於『旅遊』的體驗！</p>
<p>
  <img src="https://i.imgur.com/4QmgPFi.jpg" alt="數位遊牧住哪裡？90 天旅居計畫第一站 - 韓國釜山" loading="lazy" decoding="async">

</p>
<p> 
 
 </p>
<h3 id="一些釜山數位遊牧的小-tip">一些釜山數位遊牧的小 Tip</h3><hr>
<h5 id="關於釜山西面推薦工作咖啡廳">關於釜山西面推薦工作咖啡廳</h5><p>這次大概踩了十多間咖啡廳，選了五間個人認為適合工作的咖啡廳推薦一下，評價標準就是依據是否有插座、網路順暢度以及環境舒適度，
不過這很主觀，以及這些咖啡廳都是連鎖店，每間連鎖店的環境也會依照地區的差異有所不同，所以參考參考就好！</p>






<div id="carousel0" class="carousel" duration="3000" style="left: 50%; transform: translate(-50%,0); width:700px ;">
    
    <ul>
            <li id="c_slide1" style="min-width: calc(100%/); padding-bottom: 400px; background-image:url(https://i.imgur.com/SopWXLz.jpg);"></li>
            
        </li>
            <li id="c_slide2" style="min-width: calc(100%/); padding-bottom: 400px; background-image:url(https://i.imgur.com/3it2V5J.jpg);"></li>
            
        </li></ul>
    <ol style="padding-inline-start: 0px;"><li><a href="#c_slide1"></a></li>
        <li><a href="#c_slide2"></a></li>
        </ol>
    <div class="prev">&lsaquo;</div>
    <div class="next">&rsaquo;</div>
</div>
<blockquote>
<p><strong>Top1 EDIYA COFFEE</strong></p>
<p>四樓有專門的讀書或辦公空間，幾乎每個座位都有插座，且網路很順，環境安靜不吵雜</p>
<p>📍 地址：부산 부산진구 서전로10번길 71 2, 3, 4층</p>
<p>🗺️ 地圖：<a href="https://naver.me/5nXbeRyb">https://naver.me/5nXbeRyb</a></p>
<p>👍 推薦：⭐⭐⭐⭐⭐</p>
<p>💰 價格：💸💸</p>
<p>📸 好拍：✨✨</p>
</blockquote>






<div id="carousel1" class="carousel" duration="3000" style="left: 50%; transform: translate(-50%,0); width:700px ;">
    
    <ul>
            <li id="c_slide1" style="min-width: calc(100%/); padding-bottom: 400px; background-image:url(https://i.imgur.com/1PikY8g.jpg);"></li>
            
        </li>
            <li id="c_slide2" style="min-width: calc(100%/); padding-bottom: 400px; background-image:url(https://i.imgur.com/cNPaD8r.jpg);"></li>
            
        </li>
            <li id="c_slide3" style="min-width: calc(100%/); padding-bottom: 400px; background-image:url(https://i.imgur.com/ZA7oILC.jpg);"></li>
            
        </li>
            <li id="c_slide4" style="min-width: calc(100%/); padding-bottom: 400px; background-image:url(https://i.imgur.com/rl6w6Hc.jpg);"></li>
            
        </li></ul>
    <ol style="padding-inline-start: 0px;"><li><a href="#c_slide1"></a></li>
        <li><a href="#c_slide2"></a></li>
        <li><a href="#c_slide3"></a></li>
        <li><a href="#c_slide4"></a></li>
        </ol>
    <div class="prev">&lsaquo;</div>
    <div class="next">&rsaquo;</div>
</div>
<blockquote>
<p><strong>Top2 Blackup coffee</strong></p>
<p>這間有四層樓，靠邊或柱子的位子都有插座，網路很順，有時會有人聊天，但不影響工作。招牌海鹽咖啡必點，喝拎！！</p>
<p>📍 地址：부산 부산진구 서전로10번길 41</p>
<p>🗺️ 地圖：<a href="https://naver.me/GrNqAO8Q">https://naver.me/GrNqAO8Q</a></p>
<p>👍 推薦：⭐⭐⭐⭐⭐</p>
<p>💰 價格：💸💸💸</p>
<p>📸 好拍：✨✨✨✨</p>
</blockquote>






<div id="carousel2" class="carousel" duration="3000" style="left: 50%; transform: translate(-50%,0); width:700px ;">
    
    <ul>
            <li id="c_slide1" style="min-width: calc(100%/); padding-bottom: 400px; background-image:url(https://i.imgur.com/FEbjpzA.jpg);"></li>
            
        </li>
            <li id="c_slide2" style="min-width: calc(100%/); padding-bottom: 400px; background-image:url(https://i.imgur.com/18f0JtO.jpg);"></li>
            
        </li>
            <li id="c_slide3" style="min-width: calc(100%/); padding-bottom: 400px; background-image:url(https://i.imgur.com/Ldmg60F.jpg);"></li>
            
        </li></ul>
    <ol style="padding-inline-start: 0px;"><li><a href="#c_slide1"></a></li>
        <li><a href="#c_slide2"></a></li>
        <li><a href="#c_slide3"></a></li>
        </ol>
    <div class="prev">&lsaquo;</div>
    <div class="next">&rsaquo;</div>
</div>
<blockquote>
<p><strong>Top3 CONGCAPHE</strong></p>
<p>這間有四層樓，頂樓為室外咖啡廳，整體有種復古的感覺，靠窗或牆壁都有插座，網路還行，不過如果是在樓梯下面就會斷線。</p>
<p>📍 地址：부산 부산진구 중앙대로692번길 45 1~3층 콩카페 부산서면점</p>
<p>🗺️ 地圖：<a href="https://naver.me/G87iQQHG">https://naver.me/G87iQQHG</a></p>
<p>👍 推薦：⭐⭐⭐⭐</p>
<p>💰 價格：💸💸</p>
<p>📸 好拍：✨✨✨✨</p>
</blockquote>
<!-- 





<div id="carousel3" class="carousel" duration="3000" style="left: 50%; transform: translate(-50%,0); width:700px ;">
    
    <ul>
            <li id="c_slide1" style="min-width: calc(100%/); padding-bottom: 400px; background-image:url(https://i.imgur.com/zQO0gcu.jpg);"></li>
            
        </li>
            <li id="c_slide2" style="min-width: calc(100%/); padding-bottom: 400px; background-image:url(https://i.imgur.com/EjKYKjO.jpg);"></li>
            
        </li>
            <li id="c_slide3" style="min-width: calc(100%/); padding-bottom: 400px; background-image:url(https://i.imgur.com/qzyadF8.jpg);"></li>
            
        </li>
            <li id="c_slide4" style="min-width: calc(100%/); padding-bottom: 400px; background-image:url(https://i.imgur.com/vfFg7Vy.jpg);"></li>
            
        </li></ul>
    <ol style="padding-inline-start: 0px;"><li><a href="#c_slide1"></a></li>
        <li><a href="#c_slide2"></a></li>
        <li><a href="#c_slide3"></a></li>
        <li><a href="#c_slide4"></a></li>
        </ol>
    <div class="prev">&lsaquo;</div>
    <div class="next">&rsaquo;</div>
</div> -->
<!-- >**Top4 HISFFEE**
>
>網路很順，靠牆的一側座位以及吧台有插座，不過桌子偏小，上廁所要去隔壁大樓，需要密碼才可以進測所！！招牌白咖啡好喝！！
>
>📍 地址：부산 부산진구 중앙대로 668 1층 히스피
> 
>🗺️ 地圖：<https://map.naver.com/p/entry/place/1761923046?c=15.00,0,0,0,dh>
>
>👍 推薦：⭐⭐⭐⭐
>
>💰 價格：💸💸💸
>
>📸 好拍：✨✨✨ -->
<!-- 





<div id="carousel4" class="carousel" duration="3000" style="left: 50%; transform: translate(-50%,0); width:700px ;">
    
    <ul>
            <li id="c_slide1" style="min-width: calc(100%/); padding-bottom: 400px; background-image:url(https://i.imgur.com/8lKyvCB.jpg);"></li>
            
        </li>
            <li id="c_slide2" style="min-width: calc(100%/); padding-bottom: 400px; background-image:url(https://i.imgur.com/XRzZgxc.jpg);"></li>
            
        </li></ul>
    <ol style="padding-inline-start: 0px;"><li><a href="#c_slide1"></a></li>
        <li><a href="#c_slide2"></a></li>
        </ol>
    <div class="prev">&lsaquo;</div>
    <div class="next">&rsaquo;</div>
</div> -->
<!-- >**Top5 TENP ERCENT**
>
>網路尚可，都有插座，中規中矩有點像台灣的路易莎
>
>📍 地址：부산 부산진구 동천로 69
> 
>🗺️ 地圖：<https://naver.me/Fcu4tUET>
>
>👍 推薦：⭐⭐⭐⭐
>
>💰 價格：💸💸
>
>📸 好拍：✨✨ -->
<br>
<p>這幾間咖啡廳都在西面商圈附近，周圍有很多店家可以逛，包含餐廳、服飾、拍貼店等。
在咖啡廳工作可以找一間順眼的餐廳坐下來吃個飯，吃飽後可以逛逛附近的店家，
如果還有體力也可以參與年輕人的夜生活！！
（不過聽說韓國有些夜店不准 30 歲以上的人進去 🤣）</p>
<br>
<h5 id="關於釜山數位遊牧的食衣住行">關於釜山數位遊牧的食衣住行？</h5><hr>
<p>衣住行應該不是問題，畢竟韓國旅遊那麼夯，網路上一撈就一堆資訊，所以這部分就只講<strong>食</strong>開始講好了，<strong>理論上</strong>吃飯問題應該也不大，
不過因為旅居的關係，不可能餐餐大魚大肉，有時還是會傳統市場或超市買一些食材回住宿的地方自己煮，所以也提供一些這次旅居釜山會去採買食材的地方！！</p>
<blockquote>
<p><strong>西面市場</strong></p>
<p>西面附近的傳統市場，規劃的滿好的，菜肉海鮮熟食都有，從早上開到傍晚。</p>
<p>📍 地址：西面站 15 出口</p>
<p>🗺️ 地圖：<a href="https://naver.me/52T0mmXf">https://naver.me/52T0mmXf</a></p>
</blockquote>
<blockquote>
<p><strong>슈퍼센타 超市</strong></p>
<p>有新鮮蔬菜直接幫你處理好，放到袋子回家可直接煮</p>
<p>📍 地址：부산 부산진구 동천로 69</p>
<p>🗺️ 地圖：<a href="https://naver.me/FqiGAgcH">https://naver.me/FqiGAgcH</a></p>
</blockquote>
<blockquote>
<p><strong>Homeplus Express 超市</strong></p>
<p>有點像全聯，有些東西會特價，不過要注意需不需要會員。（看到一公斤豬肉半價直接開心買回家，結果看發票才發現需要會員 Orz）</p>
<p>📍 地址：부산 부산진구 동천로 69</p>
<p>🗺️ 地圖：<a href="https://naver.me/5buzqQLN">https://naver.me/5buzqQLN</a></p>
</blockquote>
<p><em>當然還是有吃爆烤肉跟一些餐廳，但因為不是食記或是旅遊攻略，就不多說了，如果有興趣的話可以留言或是 IG 私訊我拿吃爆的餐廳名單</em> 🤣🤣🤣</p>
<!-- 
#### 關於超好吃的韓式烤肉

#### 關於專薛觀光客的盤子馬車 -->]]></content:encoded>
    </item>
    <item>
      <title>為何交易所也推出錢包服務？</title>
      <link>https://ianlifelab.com/exchange-and-wallet/</link>
      <pubDate>Tue, 14 Nov 2023 00:00:00 +0000</pubDate>
      <dc:creator>Ian Tsai</dc:creator>
      <guid>https://ianlifelab.com/exchange-and-wallet/</guid>
      <category>科技探索</category>
      <description>『剛進入 Web3 的用戶』一直都是 Web3 錢包商或是交易所必爭的一塊，在相同競爭力的產品之下，哪個產品的進入門檻越低、使用起來越順手，就越有機會獲得用戶的青睞，以現在資訊這麼多的狀況下，停留在同一個產品的注意力並不會太久，市場又有這麼多的選擇時，如何短時間抓住用戶至關重要。</description>
      <content:encoded><![CDATA[<br>
<br>
<br>
<h2 id="錢包是踏入-web3-的第一站但大家卻都選擇交易所">錢包是踏入 Web3 的第一站但大家卻都選擇交易所？</h2><p>在幣圈打滾幾年的人應該都知道，如果要使用 Defi 或是進入元宇宙，都會需要自己建立一個加密貨幣的錢包，但交易所的用戶量始終大於錢包的用戶，明明錢包應該才是進入 Web3 的入口，為什麼大家卻選擇交易所呢？我認為有以下兩個原因</p>
<ol>
<li>交易所的操作性與 web2 一樣</li>
<li>大部分用戶是想要『投資賺錢』</li>
</ol>
<p>過去的 web3 因為進入門檻實在太高，再加上未知的領域太多，導致一般人很難或是很怕進入這個領域，但隨著早期貢獻者的開拓以及技術的堆疊，現在進入 web3 的門檻已經不像以前一樣那麼高，而且各種應用的出現也是為了讓圈外人可以更簡單的進入這個產業。而錢包則從早期保護資產安全到中期可以連動多種 Dapp 到現在試著融入一般現實世界的生活。雖然幣圈老屁股不斷強調 <strong>Not your key, not your crypto</strong>，一直呼籲菜鳥玩家要用錢包，把錢放在自己身上才是最安全的，連世界第二大的 FTX 都可以倒，只有把錢放在自己身上才沒有風險（還是有啊，忘記種子的話 XD），但為何大家還是去用交易所呢？</p>
<h2 id="主打去中心化的優勢但用戶只在意好不好用賺不賺得到錢">主打去中心化的優勢？但用戶只在意好不好用，賺不賺得到錢</h2><p>過去 web3 產業打著『自託管』、『去中心化是未來』的口號，試圖建立大家的『正確』的知識，但就算建構者不斷地呼籲這件事，時不時還是會有新聞報出哪間交易所其實是詐騙（如 2023 年的 JPEX），散戶們損失了幾個億等等，而這類新聞只要出現，就會發現錢包商的用戶短期內會有所增長，那為何大家不一開始就使用錢包而還要去用交易所呢？</p>
<p>試想以前在教自己的長輩使用 Facebook 或 Line 等這些他們那個時代沒有的東西時，是不是會聽到『這太難了拉』、『你幫我設定好，讓我可以直接用』，把這個情境搬到 web3 似乎沒有違和感，『蛤建立錢包要抄註記詞喔，啊我弄丟了錢不就不見了』、『交易所可以用 google 登入誒，我用交易所就好了吧』、『我只是要買幣又沒有要玩 Dapp，交易比較方便拉』之類的聲音出現。因為自己建立錢包不但不方便，還有可能遺失『密碼』讓自己的錢不見，我只是想要投資買幣而已，與其相信自己不如相信交易所。</p>
<h2 id="aa-錢包的出現讓交易所也開始推出錢包服務">AA 錢包的出現讓交易所也開始推出錢包服務</h2><p>EIP-4337 Account Abstraction 協議出現之後，似乎開始改變了這個窘境(網路上有很多關於 AA 提供了什麼功能，在這邊就先不細談)，在以太坊上使用 AA 錢包，體驗跟 web2 一樣，可以用手機或是 email 來建立錢包，就算丟失了帳戶的 key 也可以通過朋友或家人的錢包來為你做『社交恢復』，如此一來傳統加密貨幣錢包帶來的不便（複雜的註記詞）及風險（弄丟註記詞）在 AA 上面就被解決了。</p>
<p>AA 錢包的出現，也讓交易所有所警覺，先撇除交易所提供豐富的金融商品，相較於錢包，交易所的優勢在於『當用戶只是想買加密貨幣投資時，交易所有著與 web2 有著相同的用戶體驗，讓用戶可以不需要有額外的學習成本就可以持有加密貨幣』。現在 AA 錢包有著跟交易所類似的體驗，卻更忠於 web3 的去中心化的理念，用戶也可以『真正持有自己的資產』，交易所能不緊張嗎？與其把用戶拱手讓給錢包商，不如自己成為錢包商，讓用戶的資產可以『低成本的』在交易所以及自家錢包內轉換，憑藉著交易所豐富的金融商品及使用體驗來綁住這些用戶。</p>
<h2 id="降低進入門檻才是將-web2-用戶導入-web3-的關鍵">降低進入門檻才是將 Web2 用戶導入 Web3 的關鍵</h2><p>『剛進入 Web3 的用戶』一直都是 Web3 錢包商或是交易所必爭的一塊，在相同競爭力的產品之下，哪個產品的進入門檻越低、使用起來越順手，就越有機會獲得用戶的青睞，以現在資訊這麼多的狀況下，停留在同一個產品的注意力並不會太久，市場又有這麼多的選擇時，如何短時間抓住用戶至關重要。</p>
<h2 id="如何在生活中實際應用可能是下一步">如何在生活中實際應用可能是下一步？</h2><p>等到一定比例的人都進入了 web3 ，擁有錢包以及加密貨幣，下一階段就會是怎麼將 web3 真正融入生活，讓大家不會認為 web3 = 加密貨幣 = 投資商品，比方說生活中的支付、鏈上保險（紀錄都在鏈上，可以快速出險減少作業時間）、犯罪記錄（不會有因為人情或是背景問題來隱匿紀錄）、官方證書（不會有真假論文事件？）等，真正運用 web3 的技術來解決目前不斷出現的問題。</p>
]]></content:encoded>
    </item>
    <item>
      <title>人生不是只有加速鍵</title>
      <link>https://ianlifelab.com/life/slow-down-your-life/</link>
      <pubDate>Thu, 26 Oct 2023 00:00:00 +0000</pubDate>
      <dc:creator>Ian Tsai</dc:creator>
      <guid>https://ianlifelab.com/life/slow-down-your-life/</guid>
      <category>生活隨筆</category>
      <description>在資訊爆炸的現代，就宛如一個賽場，為了不被淹沒在資訊的洪流中，大家都不斷地往前跑，看著別人一直往前進，彷彿再說『不能停下來』，但是否人生只有播放鍵甚至快轉鍵，而沒辦法放慢呢？</description>
      <content:encoded><![CDATA[<br>
<br>
<h3 id="資訊科技快速進步的時代">資訊科技快速進步的時代</h3><hr>
<p>近年科技的蓬勃發展，加速了資訊的傳播途徑，我們也漸漸發現資訊的落差已不再像過去那般明顯。以工程師為例，過去轉職成軟體工程師時，大多需參加資策會或私立電腦補習班，而如今豐富的資源在網路上隨手可得，Youtube 也有很多詳細的教學影片，線上課程也是百百種，知識取得的難度明顯降低。</p>
<p>而在疫情過後，國際國內的資訊交流更加緊密，招募和求職的選擇變得更多元。這也意味著競爭者不再僅限於國內，而是擴大到全球。在這樣的情境下，我們時刻提醒自己不能停滯不前。只要稍有鬆懈，將難以在這快速迭代的社會中立足。</p>
<br>
<h3 id="年輕成功者備受世界矚目">年輕成功者備受世界矚目</h3><hr>
<p>受到資訊快速發展的影響，時至今日，我們可以在媒體和社交平台時常播報著某國大學生的創業報導，或某名二十幾歲的年輕創者短期間就擄獲全球關注，成就備受矚目。在當前世界，似乎需要年輕人早早取得成功，方能贏得社會的認可，而傳統意義上的小職員好像則會被視為無成就的代表。</p>
<p>這樣的觀念在社會中滋生，仿佛年輕人要早早創業，或是年輕一代必須不斷努力，爭取早日獲得成就。這種思維同時讓年輕人不敢停頓休息，壓力不斷增加，
不禁困惑於每天的努力到底是為了什麼？但如果不努力，彷彿下一個被裁減的就是自己。</p>
<p>
  <img src="https://i.imgur.com/d3Mi0zkm.png" alt="人生不是只有加速鍵" loading="lazy" decoding="async">

</p>
<br>
<h3 id="放慢腳步會發現不一樣的視野">放慢腳步，會發現不一樣的視野</h3><hr>
<p>不知道大家有沒有開車或騎車的經驗，當車子在高速行駛的時候，充斥著緊張及刺激，也版隨著狹窄的視野，而更不用說車窗外一閃而過的美麗風景。
想想我們的生活是不是也一樣，當我們前進的速度越來越快，不斷地追求薪資成長、社會地位等，在享受成就感以及社會讚揚的同時
是否也錯失許多美好的風景，如同說專注於事業成長的父母，沒有多餘的時間可以陪伴自己的小孩，轉眼間小孩就已經大學畢業即將步入職場。</p>
<p>另外，有多少人是投入職場幾十年，卻還是感到遺憾的呢？如同你的同事 A 或 B 或 C 跟你說，後悔沒趁年輕去打工旅遊，體驗異國生活；
又或是你的老前輩 Y 說，終身奉獻給公司，沒有找到自己的興趣，退休後突然沒了生活目標。</p>
<p>相比於跟著社會的風向走，將速度放慢，甚至暫停一下先認識自己、與自己對話、找到屬於自己的道路，這條路或許會走得比較長久，儘管你會在過程中不斷地懷疑自己的決定，
不斷地思考是不是本來的路更好，我覺得這些都是再正常不過的事，在這過程中我們需要學會與自己對話並接受這些狀況，因為你也不會知道原本的路是否真的會更好。</p>
<br>
<h3 id="每個人的時間軸不一樣調整好後再加速">每個人的時間軸不一樣，調整好後再加速</h3><hr>
<p>我覺得這個觀點講出來很容易，要接受很困難，但必須時刻提醒自己『我有屬於自己的時間軸』，並專注在自己可以做的事情上就好。
每個人的成長、生活背景都不一樣，所以很難去複製別人的成功經歷，但不代表不能學習。與其像個無頭蒼蠅一樣沒方向的快速飛竄，
不如調整好找到明確目標後再加速衝刺。</p>
<br>
<p>
  <img src="https://i.imgur.com/CZFM00W.jpg" alt="人生不是只有加速鍵" loading="lazy" decoding="async">

</p>
]]></content:encoded>
    </item>
    <item>
      <title>數位遊牧住哪裡？泰國清邁開啟第一次的數位遊牧旅程</title>
      <link>https://ianlifelab.com/nomads/Chiang-Mai-Digital-Nomadism/</link>
      <pubDate>Fri, 29 Sep 2023 00:00:00 +0000</pubDate>
      <dc:creator>Ian Tsai</dc:creator>
      <guid>https://ianlifelab.com/nomads/Chiang-Mai-Digital-Nomadism/</guid>
      <category>數位遊牧</category>
      <description>如果你想開始數位遊牧卻沒有數位遊牧的經驗，那在你腦中閃過的第一個城市可能會是清邁。</description>
      <content:encoded><![CDATA[<br>
<br>
<p>如果你想開始數位遊牧卻沒有數位遊牧的經驗，那在你腦中閃過的第一個城市可能會是清邁。
在我開始計劃數位遊牧之前，看過許多有關數位遊牧、旅居的影片或是文章，基本上全部都跟清邁有關，
再加上沒有去過泰國，這讓我對泰國以及清邁有滿滿的憧憬，想到第一次旅居在這個城市就無比的興奮及期待。</p>
<p>直到從清邁後，開始更深入的了解數位遊牧以及適合旅居的國家以及城市後，才接著規劃年底為期三個月的數位遊牧之旅。</p>
<h3 id="第一次數位遊牧住哪裡比較好呢">第一次數位遊牧住哪裡比較好呢？</h3><hr>
<p>一開始對於數位遊牧的理解是『可以認識各地不同的數位遊牧工作者』，於是便打算第一次旅居的住宿就選擇住在共生公寓（Co-living apartment）內，
看到網上的許多資訊推薦 Alt_ChiangMai ，查了一下發現 Alt_ChiangMai 可以以週為單位計算，整體算很有彈性，
再加上 Alt_ChiangMai 會舉辦很多社交活動，如瑜伽、冰桶挑戰、Family meeting 等，住在這邊的人也會揪團一起去打泰拳、攀岩或是慢跑等，
對於第一次體驗這類社群的我們來說算是很新鮮，可以藉由這些活動認識不同國家的人。</p>
<p>另外 Alt_ChiangMai 也有 Co-working space，有在這住宿的房客都可以直接使用，不需要再跑出去找其他咖啡廳工作，
工作環境及設備都滿新的，有開放區域、會議室、安靜空間等等，可以依照自己的需求移動到想工作的位子上，如果不想公共空間，也可以在住宿的區域客廳進行辦公，算是有很多選擇。</p>
<p>綜合這些考量，這次就沒有查太多其他清邁住宿的資訊，直接決定 Alt_ChiangMai 為我們第一次數為遊牧的住宿點。</p>
<p><em>不過之後再旅居其他國家後發現，Alt_ChiangMai 真的很貴&hellip;</em> 😅</p>
<p>
  <img src="https://i.imgur.com/EuN4gwtl.jpg" alt="數位遊牧住哪裡？泰國清邁開啟第一次的數位遊牧旅程" loading="lazy" decoding="async">

</p>
<h3 id="清邁的天氣以及環境適合旅居嗎">清邁的天氣以及環境適合旅居嗎？</h3><hr>
<p>這次八月中到九月初到清邁旅居，再來之前有上網查過清邁旅遊適合的月份，涼季是從十一月到二月，氣溫涼爽，比較適合旅遊；
而六月到十月則是雨季，降雨機率會比較高。
當初還有點擔心天氣會很悶熱以及一直下雨，但其實就只是是有幾天短暫零星的雷雨跟大雨而已，大部分天氣都很好，
雖然氣溫是比較高，但也沒有熱到有灼燒感，相比於同時間的台北，清邁的天氣更舒服，頂多去咖啡廳或百貨公司要帶一間薄外套進去，比較不會因為溫差的關係感冒。</p>
<p>不過九月中我們要離開時清邁前一兩天，雨就開始下的比較頻繁，夜市的街道上淹水直接淹過小腿，當下滿慶幸我們再過兩天就要離開了😅。</p>
<p>另外，有朋友提到清邁有個缺點就是空氣很糟，但這次去並沒有遇到空氣的問題，這可能跟去的月份有關。
不過街道環境就比較沒那麼舒服了，滿多砂石堆在路旁，不確定是不是要興建大樓或是道路施工，每次穿拖鞋出門回到住宿的地方都需要洗一次腳，不然鞋子跟腳上都會沾到很多沙子。</p>
<p>整體而言清邁在八九月我認為算是滿適合旅居的天氣。</p>
<h3 id="去國外不會一直想要玩嗎這樣怎麼工作">去國外不會一直想要玩嗎？這樣怎麼工作</h3><hr>
<p>與其說是出國玩，不如說是藉由數位遊牧的方式體驗不同國家的文化及生活。像是以前出國五天，每天都要跑當地熱門景點，吃當地特有的餐廳，比較像是『難得放假出國，不要浪費這些時間』的模式，但如果把住宿時間拉長，其實就跟本來的生活類似，平日早上上班、晚上休息、假日出去玩，至少對現在的我來說要每天跑景點吃大餐還是會有些累 XD。</p>
<p>至於會不會一直想往外跑，我覺得難免還是會，不過換個角度想，這次來並不是只待三五天，而是待一個月甚至更久，其實可以好好安排這些時間，也不一定這一趟就要把所有的景點都去過，待在台灣也不一定所有地方都去過，畢竟就算是短期也會需要有選擇，而且這次沒來到也有理由下次再來啊哈哈。</p>
<p>
  <img src="https://i.imgur.com/Q3wMfng.jpg" alt="數位遊牧住哪裡？泰國清邁開啟第一次的數位遊牧旅程" loading="lazy" decoding="async">

</p>
<h3 id="第一次旅居的感想">第一次旅居的感想</h3><hr>
<p>對於這次清邁旅居的體驗算是滿新鮮的，可以認識不同類型不同國家的工作者，而居住時間比較長，步調並不會像短期出國旅遊一樣緊湊，反而是可以慢下來體驗當地的生活。也因為對於這些事情充滿好奇，工作就要變得更有效率，才可以有更多的時間了解當地的各種事物。可能很多人會覺得『太好了吧！我也想要過這種生活』，但必須要說不一定每個人都適合這種模式，畢竟到了一個新的國家或城市生活，可能沒辦法朋友說揪就揪，也要不斷認識新朋友才不會讓自己孤單，如果自己是比較內向的又是一個人的話，可能就會過得比較孤單辛苦。</p>
<p>
  <img src="https://i.imgur.com/VfJFmb8l.jpg" alt="數位遊牧住哪裡？泰國清邁開啟第一次的數位遊牧旅程" loading="lazy" decoding="async">

</p>
]]></content:encoded>
    </item>
    <item>
      <title>為什麼產品開發一定要有 Deadline？ 注意這五點提升團隊效率</title>
      <link>https://ianlifelab.com/product/why-need-Deadline/</link>
      <pubDate>Sat, 05 Aug 2023 00:00:00 +0000</pubDate>
      <dc:creator>Ian Tsai</dc:creator>
      <guid>https://ianlifelab.com/product/why-need-Deadline/</guid>
      <category>產品思維</category>
      <description>Deadline 不只是發布產品的時間點，有效的利用 Deadline 不但可以提升團隊的產能，更能讓產品提早接觸市場做迭代更新。</description>
      <content:encoded><![CDATA[<br>
<br>
<br>
<h3 id="deadline-的用途是什麼">Deadline 的用途是什麼？</h3><hr>
<p>產品經理在規劃產品路線圖（Roadmap）時常以會先做競品分析、市場分析或是用戶訪談，結著評估分析結果是否契合公司的年度或季度目標，最後再安排進 Roadmap 。這份 Roadmap 並非僅提供給產品跟技術團隊，行銷、業務、客服團隊也會根據 Roadmap 上即將釋出的功能去提前做準備，如與合作夥伴洽談、KOL 協作或是撰寫 FAQ 等，這時 Deadline 變得尤為重要，它成為各個團隊追蹤進度的標準。當 Deadline 一到，所有的任務都將完成，產品因此得以投入市場。不過若某團隊因為某些原因導致無法如期完成這項任務，則會影響到其他部門，甚至公司達成目標。</p>
<p>因此， Deadline 不僅僅是產品發佈的時間點，同時也是團隊協作中的一個共同指標，避免有認知上的落差。</p>
<br>
<h3 id="deadline-除了讓團隊有一致的目標還能讓產品提早迭代">Deadline 除了讓團隊有一致的目標，還能讓產品提早迭代</h3><hr>
<p>剛才我們提及，產品經理在策劃產品時有諸多因素需要考量。以區塊鏈產業來說，2021 年末是 NFT 風潮的高峰， 年初產品經理經過評估認為 NFT 將是今年的趨勢，因此規劃相關功能並預計年中完成並投入市場。若在 Deadline 之前完成，對於產品而言可以提早進入市場做測試、收集用戶反饋，進行迭代更新，等到 NFT 流量達到巔峰時，產品已經完成打磨，符合 80 甚至 90% 市場需求，行銷與業務部門也可以提前布局，讓產品更容易被市場關注，進而吸引大量的用戶。反之若錯失高峰後才完成，用戶早就已經找到習慣使用的產品，這時要再將其他產品的用戶轉換到自家產品將變得相當困難。</p>
<br>
<h3 id="是否每件事都需要設定一個-deadline">是否每件事都需要設定一個 Deadline</h3><hr>
<p>以軟體產品為例，可能大部分公司都是以 Scrum 的方式在迭代產品。通常，這種方法不會明確產生一個絕對的 Deadline，或者說 Sprint 的最後一天即視為 Deadline。而 Scrum 作為開發的話會更專注在每個 Sprint 的 Sprint Goals ，有明確的 Goals 可以讓團隊在 Sprint 期間能夠專注目標衝刺。</p>
<p>然而產品總是會有需要推出重大更新的時候，通常是基於市場趨勢的評估，或是發現有新的痛點或是機會的突破口，需要在特定的時間點完成特定任務，如果錯過時機，可能也就會錯失增長或盈利的機會。這就是為何必須有明確的 Deadline，以確保產品能在正確的時間點推向市場。</p>
<p>以先前 NFT 的例子為例，若是在 2021/06 加密貨幣錢包推出 NFT 相關功能，早期的 NFT 玩家將優先選擇有支援 NFT 的錢包做使用，雖然功能可能不完整，但市場上暫無其他產品競爭，產品不僅獲取了早期玩家，還有時間可以做迭代更新，領先其他競爭對手。若是在 2021/12 NFT 流量最高時推出，也能吸引一些追隨NFT潮流進入市場的圈外玩家，但相較於 6 月，12 月時支援了 NFT 功能的錢包已更多，所以獲客成本相較於 6 月會高出一些。最後就是在流量往下掉時推出，市場或許認為 NFT 即將泡沫化，大部分玩家不再對 NFT 保持樂觀，這時產品要獲取用戶將極具挑戰。</p>
<p>是否需要有明確的 Deadline ，還是需要依照當下的狀況做判斷，看是要做迭代更新，還是要推出一個新功能或產品來搶先佔據市場地位。</p>
<p>Scrum相關內容，或許可單獨撰文探討</p>
<br>
<h3 id="如何設定有效的deadline讓團隊效率大大提升">如何設定有效的Deadline讓團隊效率大大提升</h3><hr>
<p>怎樣的 Deadline 才是合理且對團隊有效的呢？我認為可以分為以下幾點</p>
<h4 id="1-kick-off-meeting">1. Kick-off meeting</h4><p>在 Kick-off Meeting 中，產品經理將會招集各部門參與，明確說明項目的目的、預期完成的功能和效益，並協調各部門提供的資源。這有助於確定一個共同認可的合理 Deadline。</p>
<h4 id="2-確保資訊傳遞暢通">2. 確保資訊傳遞暢通</h4><p>通常這類型的專案會需要跨部門合作，保持資訊的流通暢通無阻至關重要，比方說行銷要提早準備新聞稿、KOL 合作，客服需要準備 FAQ 、技術需要開發產品等，這些資訊都需要流通順暢，讓各部門可以掌握專案的最新進度，再依照自己負責的任務做動態的調整。這可以透過文件記錄和公司通訊軟體的使用實現，確保每個團隊了解整體專案進度，以便及時調整任務。</p>
<h4 id="3-定期追蹤">3. 定期追蹤</h4><p>定期的專案回顧會議可以有效組織各部門的進度，會議相較於訊息，因為每個部門都需要參與，所以通常會更有組織及條理，部門間也可以很快地理解大家的進度狀況，有沒有遇到合作上或是開發上的困難，專案是否可能延後或是提早等，都可以在會議中提出並討論解決方案。</p>
<h4 id="4-拒絕隕石">4. 拒絕隕石</h4><p>產品經理在面對意外需求時應具備拒絕的能力，並根據資源和優先級評估是否接受。不過通常在 kick-off 時就會討論到資源如何分配，每個部門投入多少資源進入這個專案，其餘的資源可能只能做日常的維護或是一些小的更新，沒辦法同時進行兩個甚至三個任務，確保專案不受「隕石」干擾，這樣才有辦法讓 project 如期上線</p>
<h4 id="5-事後-retro-meeting">5. 事後 Retro meeting</h4><p>雖然事前有規劃且有定期追蹤，但預期之外的問題總是可能發生，如專案開始後發現規劃不完整、開發時遇見非預期錯誤，或是行銷合作談不攏等事件導致專案 delay 都是有可能發生的事，因此，在每個專案結束後進行事後 retro meeting ，討論遭遇的挑戰，找出流程、開發和溝通方面的問題，以及解決方案，以確保未來專案能更順利地上線。</p>
<br>
<h3 id="每個任務都要準時在-deadline-到之前完成並且上線">每個任務都要準時在 Deadline 到之前完成並且上線？</h3><hr>
<p>我想每位產品經理應該都很希望有無限的資源，這樣就可以確保規劃的 project 或是 Roadmap 按計劃上線，最理想的情況是可以提前完成進度。但這就是理想和現實的差距，不太可能每次都如期把 project 推出，在過程中一定會遇到一些非預期的困難，這時產品經理需要做出抉擇，確定哪些決策對產品和公司是最有利的。當然這不會是產品經理一個人的問題，團隊成員需要提供不同方向的意見給予產品經理參考，如行銷再經過調查後覺得Ａ功能相較於Ｂ功能更能吸引用戶等，讓他可以在有限的時間內做出正確的決定。</p>
<br>
<p>我相信大家對於有明確 Deadline 的任務都會感到壓力倍增，畢竟誰不想按照自己的節奏進行工作呢？然而，透過有效的規劃和事後的檢討，我們能夠增加成功推出產品的次數，同時提升自身經驗，並逐漸培養出對於工作的成就感。</p>
]]></content:encoded>
    </item>
    <item>
      <title>就是因為『沒時間』，才什麼都能辦到</title>
      <link>https://ianlifelab.com/read/just-do-it/</link>
      <pubDate>Sun, 27 Nov 2022 00:00:00 +0000</pubDate>
      <dc:creator>Ian Tsai</dc:creator>
      <guid>https://ianlifelab.com/read/just-do-it/</guid>
      <category>學習成長</category>
      <description>羅賓・夏瑪說過『不是因為某件事很難，你才不想做，而是因為你不想做，所以變得困難。』</description>
      <content:encoded><![CDATA[<br>
<h4 id="沒時間那就全部一起做">沒時間，那就全部一起做</h4><hr>
<p>『我想要學XXX啊，但下班後就沒有時間』，或是說『這件事情太難，我沒時間學』之類的話。我們往往被『工作』、『家庭』等這些生活上事情所困，但多半因為這樣也會因為被這些塞滿，時不時會有『我想幹大事』的衝動，可能是『想要去打工度假』，也可能是『想要開始征服百岳』等，就是因為沒有自由的時間，才是充滿『幹勁』的時刻。</p>
<p>當發現了這個『沒時間』反而是『轉機』後，來整理看看自己每天的時間，就會知道自己的一天有多少可利用時間，以及哪些時間段是可以被優化的部分。如下兩張圖，圖一時作者平時的行程，圖二為決定去美國留學後的行程，誰說有工作又要帶小孩就不能準備出國留學？可以發現藉由調整早上與晚上兩時段的作息，讓他一天多了三小時可以為了留學而做準備。</p>
<p>
  <img src="https://i.imgur.com/IOEaek1l.png" alt="schedule1" loading="lazy" decoding="async">


  <img src="https://i.imgur.com/DVPEojYl.png" alt="schedule1" loading="lazy" decoding="async">

</p>
<br>
<h4 id="時間無法節約那只能提升價值密度">時間無法節約，那只能提升價值密度</h4><hr>
<p>什麼是提升時間的價值密度？當我們整理了自己的一天之後會發現，我們其實有許多時間可以利用，不管是一段長的時間，或是很小很零碎的時間。但空出時間不代表就會成功，還需要列出要執行的待辦清單，並依照重要程度將這些任務安排在空出的時間內，否則我們單純就只是把時間空出來繼續滑抖音而已。</p>
<p>不知道大家有沒有看過一個短片，教授分別把高爾夫球、碎石、沙粒以及啤酒分別到入罐子內，並在每放入一個東西時，問學生裝滿了沒。這些內容物就是代表任務，而高爾夫球就是清單上最重要的任務，試想如果先放入了沙粒以及碎石，哪還有沒有空間放高爾夫球呢？所以當整理出可利用的時間後，應該優先把清單上的高爾夫球放入時間內，再接著放入碎石即沙粒，才有辦法確保最重要的事情一定會優先完成，而不是都把時間花在瑣碎且不重要的事物上。這邊可能有人會想，那啤酒呢？啤酒則代表，就算生活過得再辛苦，也要停下來喝杯酒休息一下 🤣</p>
<br>
<h4 id="因為你不想做所以變得困難">因為你不想做，所以變得困難</h4><hr>
<p>羅賓・夏瑪說過『不是因為某件事很難，你才不想做，而是因為你不想做，所以變得困難。』</p>
<p>大家應該都有騎腳踏車的經驗，起步時的第一下是最辛苦的，但是在接續第二下之後會發現，第二下所耗費的力氣比第一下小許多，於是便可以更容易的踏下第三、第四下。在學習新事物或是挑戰新計畫也是一樣，我們沒辦法準備到 100% 完美時才開始執行這些事，可以想像不管我們在學生時代、或是在職場上，環境強迫我們踏出第一步接觸新事物，並且在新的環境內遇到各種不同的挑戰，我們會嘗試解決這些問題，過程中當然會遇到挫折或失敗，但同時我們也獲得了更多的經驗，讓自己不斷地強壯。</p>
<p>
  <img src="https://i.imgur.com/RH1zITc.jpg" alt="banner" loading="lazy" decoding="async">

</p>
<br>
<h4 id="正常速度沒辦法完成那就加速吧">正常速度沒辦法完成，那就加速吧</h4><hr>
<p>回到騎腳踏車的議題，若我們今天的目標是一日雙塔，時速 10 公里跟時速 30 公里所花費的時間一定不同，在學習挑戰任何事物的時候也是如此，但要怎麼做才可以有效的『加速』？</p>
<p>先來談談如何加速，第一點是『不要想太多，先做了再說』，試想當生日時買了新手機，會先打開把玩看看，還是看一頁一頁的說明書呢？想必不會是打開說明書，一定是先開機玩玩看。如果把手機換成學習程式語言 Python 呢？可能就會開始去研讀他的官方文件，不是說讀文件不好，從零開始一定要會一些基本的東西，但當這些東西都學會之後，應該要開始自己寫看看，體驗一下這個程式語言到底該怎麼撰寫，如果不這樣，永遠不會知道自己遇到什麼問題，一定是執行一段程式碼後後發現了 bug 才會知道遇到了什麼問題並尋求解決方案。</p>
<p>第二點就是『不要停，一直堅持下去』，當決定開始學寫 Python ，已經安裝好 Python 、載好了開發工具，並成功的將『Hello World!!』給印出來時，最困難的第一步已經完成了，剩下的就是如何堅持下去，可以自己定一個目標讓計畫堅持下去，可能是要用 Python 的框架建造一個電商網站，那就可以朝著這個目標邁進，隨著不斷執行計畫，技能會越來越熟練，速度自然會越來越快。</p>
<p>最後就是給自己一個『deadline』吧。有了期限限制，便能發揮『臨陣磨槍』的狂熱，期限是讓人『加速』的必要條件，因為以正常速度並沒有辦法完成事情，那叫讓他加速讓他有可能成功。</p>
<br>
<h4 id="讀後心得">讀後心得</h4><hr>
<p>這本書與其說是方法書，我覺得更像是作者的經歷分享，從決定申請哈佛研究所到學成歸國，這段經歷中所遇到各種挑戰時的心境，以及最後如何解決這些問題，最後如願取得哈佛的碩士。我想這比『成功的人都比你更努力』這句話更貼近我們，在讀完這本書後不禁會思考，這位三個小孩的母親，並不是富二代，也沒嫁入豪門，完全靠著他自己對於『哈佛』的憧憬，努力的完成了他的夢想，那我們還有什麼理由原地踏步。或許我們真的被生活壓得喘不過氣，想要停下腳步休息，我認為這沒有不對，但在休息過後還是要跨步向前，開始人生的下個旅程，若是一直停滯不前，也只能落入我們認為不美滿的無限迴圈內而已。最後，用羅賓・夏瑪的這段話來讓自己動起來吧！</p>
<p><strong>『不是因為某件事很難，你才不想做，而是因為你不想做，所以變得困難。』</strong></p>
<p>
  <img src="https://i.imgur.com/SlJANHO.png" alt="banner" loading="lazy" decoding="async">

</p>
<br>]]></content:encoded>
    </item>
    <item>
      <title>FTX 慘劇，論去中心化的重要性，錢要放哪才是你的錢？</title>
      <link>https://ianlifelab.com/ftx-is-gone/</link>
      <pubDate>Mon, 14 Nov 2022 00:00:00 +0000</pubDate>
      <dc:creator>Ian Tsai</dc:creator>
      <guid>https://ianlifelab.com/ftx-is-gone/</guid>
      <category>科技探索</category>
      <description>FTX 的慘劇，論去中心化的重要性，錢包內的錢，才是自己的錢。</description>
      <content:encoded><![CDATA[<br>
<br>
<p>在 2022/05 發生 Luna 崩跌事件後，當大家還覺得為什麼最近市場的波動這麼小時，全球第二大加密貨幣交易所 FTX 在上週給了大家一個驚喜，因為被爆私自挪用用戶資金，導致交易所內發生了擠兌潮，以至於 FTX 不堪負荷，不但暫停用戶提領，更在一週內宣告破產，讓許多來不及逃難的用戶資金卡在 FTX 內沒辦法拿出來。</p>
<p>（ 還錢～～～</p>
<p>FTX 相關事件的文章或分析相信在網路上搜個關鍵字都可以找到很多資訊在這就不多加敘述，而本篇要來探討的並非 FTX 倒閉，而是身在加密貨幣的世界裡，要如何選擇存放資產的位置，才不會風險發生時被當成韭菜收割。</p>
<br>
<h4 id="選擇大到不會倒的交易所">選擇大到不會倒的交易所？</h4><hr>
<p>大家在一開始接觸加密貨幣時，應該都會聽到『選一間你信任且大到不會倒的交易所，就可以開始把錢放進去買虛擬貨幣了』，相較於一些名不見經傳的交易所，世界排行前幾名的交易所的確安全許多，但 FTX 卻給了我們一個重擊，全球第二大的交易所不到一週就宣布破產，相信在 SBF 與 CZ 隔空交火時，大部分的人應該還沒想到會是這個結果。</p>
<br>
<h4 id="區塊鏈的精神---去中心化">區塊鏈的精神 - 去中心化</h4><hr>
<p>交易所倒閉跟去中心化又有什麼關係呢？想必有接觸過區塊鏈都聽過『去中心化』一詞，那這又代表著什麼呢？在 Web2.0 的世界裡，科技巨頭 Facebook, Google 掌握著用戶的所有資料以及生殺大權，今天只要他們認為你不合乎平台規範，他們便可以將你封鎖（想想之前川普的 twitter）；而傳統金融也是，錢讓私有銀行管理，如果銀行營運出了什麼問題導致沒辦法領出現金，那你在銀行的錢錢就只是一串數字罷了（比如說前陣子中國四大銀行無法提領現金的狀況）。而區塊鏈的其中一個精神，就是不希望有一個集團或是一個機構來『操控』這一切，你的資產讓你自己保管，鏈上一切皆由參與者來共同決定這件事。</p>
<p>講到這有沒有覺得，都已經投入了一個『去中心化』的世界了，卻還相信著『中心化』的機構，是不是有種矛盾的感覺？？🤣</p>
<br>
<h4 id="被管理的資產">『被管理』的資產</h4><hr>
<p>加密貨幣的地址是以持有的註記詞經由一連串的協議及演算法導出的一串英數字，而註記詞會交由交易保管並不會提供給用戶，用戶只會獲得每個加密貨幣的地址，提供給別人接收加密貨幣。而當要發送交易時，需要發送『申請』，等交易所同意這筆交易，用戶才能將交易發送到區塊鏈上。從頭到尾的操作，都需要經過『交易所』的同意（除了存錢以外），雖然看起來是自己決定自己的資產要做什麼，但其實所有的一切都是由交易所決定，而不是自己，哪天交易所駁回你的請求，那我們也沒辦法用其他方式拯救自己的資產。</p>
<p>
  <img src="https://i.imgur.com/nphWSD7.png" alt="SBF" loading="lazy" decoding="async">

</p>
<br>
<h4 id="not-your-keys-not-your-asset"><strong><strong>Not Your Keys, Not Your Asset</strong></strong></h4><hr>
<p>什麼是 Key？區塊鏈的每一筆交易都需要用 private key 簽署後得到一個 signature，並將這個 signature 連同交易發送到區塊鏈上驗證。而這個 key 也是由註記詞依照一串協議及演算法推導而成。剛剛提到在交易所發送一筆交易時都需『被同意』，同意後交易所會發送一筆用『我們的 key』簽署出來的簽章及交易到鏈上，當然他也可以不同意，這樣我們就沒辦法操控自己的資產。</p>
<p>
  <img src="https://i.imgur.com/VkA3rQd.png" alt="Key" loading="lazy" decoding="async">

</p>
<p>而這把 Key 除了放在交易所內，也可以放在加密貨幣錢包中。只要持有錢包，所有的交易都不再需要被同意，任何交易行為都掌控在自己的手上。也就是說，我們有 100% 掌控錢包內資產的權力，就算有第二個 FTX 不給用戶提領也跟我們沒有關係，因為我們的 Key 在自己的手上不需要遷就其他團體或機構。</p>
<br>
<h4 id="究竟是加密貨幣不安全還是對產業不了解">究竟是加密貨幣不安全，還是對產業不了解？</h4><hr>
<p>最後回到 FTX 事件，個人認為如果把 FTX 事件的原因歸咎於『加密貨幣就是不安全』的話，就不太合情理，畢竟中心化的機構，本來就伴隨著『人』這個最大的風險，十年夫妻也可能被戴綠帽，何況是一間交易所。不過這不代表不能把錢存在交易所內，只是做任何決定時需要知道其伴隨的風險，當風險發生時伴隨的傷害會不會影響到自己的生活甚至周遭的人，評估之下若是可以負擔的狀況，再來做這件事，不然如果心臟太小顆的話，還是把錢放在錢包內吧。</p>
<p>
  <img src="https://i.imgur.com/zSmYW7G.jpg" alt="Wallet" loading="lazy" decoding="async">

</p>
<br>
]]></content:encoded>
    </item>
    <item>
      <title>行為上癮，短影片是如何綁架你的時間</title>
      <link>https://ianlifelab.com/read/behavioural-addiction/</link>
      <pubDate>Wed, 27 Jul 2022 00:00:00 +0000</pubDate>
      <dc:creator>Ian Tsai</dc:creator>
      <guid>https://ianlifelab.com/read/behavioural-addiction/</guid>
      <category>學習成長</category>
      <description>還在憑靠意志力來戒除壞習慣？破解行為上癮的秘密，找回時間的自主權。</description>
      <content:encoded><![CDATA[<br>
<p>相信大家都有一種經驗，每當下定決心要發奮學習時，手機拿起來滑個影片，不知不覺就到睡覺時間了，不但該做的事沒有做，還浪費了一個晚上，明明知道不行，但身體卻很誠實的一部部影片看下去。
到底短影片是怎樣綁架我們的時間呢？</p>
<br>
<h4 id="1-意志力不足才會沈迷於某些事物">1. 意志力不足才會沈迷於某些事物？</h4><hr>
<p>毒癮、賭癮是最常見到行為上癮的事務，不管哪個，都會讓人甚至家庭造成巨大的危害。但你以為沒吸毒賭博，就不會成癮了嗎？
遊戲、社群是這個世代另種讓人成癮的事物，在科技發達的現代，各種 app、廣告、媒體、遊戲都在爭奪人們的眼球，只要有辦法讓人停留一秒，那就有機會觸發上癮的行為。
比如說，明明沒事卻一直重新整理 IG 頁面，抖音影片都看完了，還是不斷重看等。</p>
<p>明明我們知道不能一直這樣下去，但還是會不由自主的花時間成癮在這些事物上，是為什麼？可能有人會說『一定是他們意志力不足。』
但真的是這樣嗎？曾經有一個測試意志力實驗的案例是這樣：</p>
<pre><code>實驗兩組學生進行一個無解的數學題考試，並要求兩組學生在解題前要空腹，分別安排在裝滿餅乾以及胡蘿蔔的房間，
一組要求只能吃餅乾，另一組只能吃胡蘿蔔，相較於餅乾組，胡蘿蔔組的學生需要驅動意志力才可以抵抗餅乾的誘惑。
隨後兩組學生在分別去進行無解的數學題考試，餅乾組堅持的時間是胡蘿蔔組的兩倍。
</code></pre>
<p>就結果來看，胡蘿蔔組的學生，縱使他們很有意志力的讓自己不吃，但最後的數學題卻沒能堅持太久就放棄了。
很顯然，意志力是很難持續驅動的，就像是肌肉一樣，當人一直使用肌肉的力量到筋疲力盡時，肌肉變無法再提供力量作其他的活動。
所以意志力並非一項技能，他更像一種會消耗的力量。</p>
<br>
<h4 id="2-是什麼讓我們行為上癮">2. 是什麼讓我們行為上癮？</h4><hr>
<p>既然我們沒辦法一直驅動意志力，那究竟是什麼因素導致了人們會沈迷於某些事物呢？
人的行為模式，好比一個個演算法的組成，當然依照不同的類型還是有些微的差異，但大致上可以分成三個階段：動機、能力以及觸發條件。</p>
<h6 id="動機">動機</h6><p>在做每一件事之前，我們都會思考為什麼要做這件事，好比說工作一天身心非常的疲憊，所以拿出手機想看個短影片舒壓一下，『想要舒壓』就是動機。</p>
<h6 id="能力">能力</h6><p>當感覺想要拿出手機時，往口袋一伸就拿到了，代表著很簡單就可以做到這件事，『口袋拿手機』就是能力，那是否有其他因素會影響呢？
當然會，比方說下班正在等公車，當天又下雨，一手提著公事包一手撐著雨傘，就沒辦法做『拿手機』這個動作，也就是沒能力做這個動作，那就沒辦法完成這件事。</p>
<h6 id="觸發條件">觸發條件</h6><p>有了動機、有了能力，那要如何『觸發』這個行為，那就是剛剛提到的，『感到疲憊』這件事。只要感到疲憊，就會想要舒壓，那便會去尋找手機在哪，如此一來『看短影片』這個行為就產生了。</p>
<p>所以，當動機 (Motivation)、能力 (Ability) 以及觸發 (Trigger) 三個元素都存在時，那行為 (Behavior) 就會被啟動。</p>
<pre><code>B = MAT
</code></pre>
<p>當然，觸發行為有很多種，例如當今天我發表了一篇文章，發現我的朋友有給我點讚，那下次看到他的貼文，我也會反射性地也給他點讚，這就是個體觸發內的互惠行為。</p>
<p>
  <img src="https://i.imgur.com/OU5fJ88.png" alt="行為上癮，短影片是如何綁架你的時間" loading="lazy" decoding="async">

</p>
<br>
<h4 id="3-登入就送大禮包讓入坑變得很簡單">3. 登入就送大禮包，讓『入坑』變得很簡單</h4><hr>
<p>『登入七天就送魔關羽』，這句話在電視或是廣告上出現的頻率非常的高，科技發達的現代，交友軟體、遊戲等 App 不斷推陳出新，為了短時間內累積用戶，送禮物給第一次下載的用戶已經不足為奇了。
相較於遊戲一開始就要求玩家課金，直接送一個 SS 及英雄，讓玩家體驗 SS 級英雄在各方面素質都遠比其他英雄來的優異時，玩家自然會對高級英雄產生興趣，為了玩得更舒服，自然會不由自主的課金買英雄。</p>
<p>除了登入送禮包以外，免費開盲盒也是一種簡單入坑的方式。只要贏得遊戲勝利就會贈送一個銀寶箱，銀寶箱需要花費三個小時才能打開，此外也有一定的機率會獲得金寶箱，而金寶箱就需要等八小時，當然也可以去商城選擇是否要購買鑽石。
當玩家開到高級卡片後，便會開始期待下個寶箱會開出什麼卡片，這也促使了部分玩家會進入商城購買鑽石來開寶箱，滿足當下的慾望。</p>
<p>這些看似免費送福利的行為，其實都是新設計的一套流程，先讓用戶『使用』這個產品，接著慢慢的讓用戶離不開，最後引導他們在產品內消費，這稱作『登門檻效應』。</p>
<pre><code>一批實驗人員在一個社區做實驗，要求一些住戶在自家窗戶掛一個小招牌，一段時間後再掛一個更大更醜的招牌，
有五成的住戶同意更換招牌。而如果直接要求掛又大又醜的招牌，成功率僅兩成。
</code></pre>
<br>
<h4 id="4-未完待續讓你一部一部的看下去">4. 未完待續，讓你一部一部的看下去</h4><hr>
<p>讓人沈迷的可不是只有短影片，追劇也是很容易成癮的事。許多人應該都有類似的經驗，『這部劇還沒出完，等他出完在一次看完』，
原因是，每次影集都會在最精彩的部分突然『下集待續』，需要經過漫長的等待，才有辦法看到下集，不但覺得時間過的漫長，還要負擔內心對影集好奇心的煎熬。
比方說宮鬥劇看得正精彩，太后要把女主角小宮女殺了的時候，突然一個聲音出現『且慢』，接著『下集待續』的畫面出現，這不禁會讓人心頭養，覺得怎麼會在這邊停住？</p>
<p>同樣的理論用在電影的預告片也是一樣，前幾集是個正派突然在這集變成大魔王、男主開車跌落懸崖不知道有沒有獲救等，不管是，其實這些東西就是觀眾的『認知缺口』。
因為產生了『缺口』，所以想要快點填補，自然而然就會一集一集、一部一部的看下去。</p>
<br>
<h4 id="5-擺脫上癮相反習慣治療法">5. 擺脫上癮，相反習慣治療法</h4><hr>
<p>擺脫行為上癮，不外乎就是遠離環境，制定明確的目標等方法，但書中提供了一個滿有趣的方法叫『替換習慣』，習慣要如何替換呢？</p>
<p>比方說，有個小女孩有咬指甲的習慣，他非常討厭這個行為，但覺又控制不了自己，導致指甲凹凸不平不好看。
他也試著靠意志力來告訴自己不要做這件事，但最後都是以失敗告終，最後只好求助於心理醫師。</p>
<p>心理醫師幫他歸納出了以下幾點原因：</p>
<ol>
<li>
<p>確定觸發條件：為何要咬指甲？
因為手指甲根部有些不舒服，甚至還會有倒刺，摸到就會想咬，只要開始就會一個接著一個咬完全部手指的指甲。</p>
</li>
<li>
<p>釐清有何獎勵：咬指甲帶來什麼獎勵？
做作業時要指甲的動作會頻繁出現，每當咬完所有的指甲都會有成就感。</p>
</li>
<li>
<p>尋找相同的刺激：如何不咬指甲也可獲得成就感？
醫師設計一張索引卡，並佈置了一項任務：當指甲不舒服時就打勾，若依照某種替代方案成功克制咬指甲的行為就畫一條線。
最後女孩發現，不管是摩擦手臂、或是用手指教敲桌子，都可以有相同的充實感。</p>
</li>
<li>
<p>新舊習慣更替：以同樣可以獲得成就感的行為，來代替掉原本不好的習慣。</p>
</li>
</ol>
<p>心理醫生把這個種方法稱之為『相反習慣治療法』，其實除了咬指甲，此治療法也泛用在抽煙、賭博等行為上。
最主要是大多數人在驅動自我行為的渴求之前，並不了解自己，如同這位女孩不知道咬指甲的原因在於『實質性刺激的渴望』。</p>
<br>
<h4 id="讀後心得">讀後心得</h4><hr>
<p>其實這本書講述了非常多會讓人行為上癮的原因，相信不管是遊戲或是影片，大家都有控制不住自己的時候。
對於想要戒除壞習慣的人，書中會跟你說，你為什麼會上癮？原因是什麼？就像是為什麼賭場最賺錢的總是吃角子老虎機？為什麼夾娃娃可以讓人一夾再夾？背後的原因都是值得思考的事情。
對於想要做產品的人，這本書會讓你知道，為什麼有產品可以做到世界的前幾名，他們靠的是什麼。
弄懂這些，就會發現其實這背後的邏輯都非常的有趣，整體而言算是一本很棒的書籍。</p>
<p><strong>還在憑靠意志力來戒除壞習慣？破解行為上癮的秘密，找回時間的自主權。</strong></p>
<p>
  <img src="https://i.imgur.com/S0tG3t2.png" alt="行為上癮，短影片是如何綁架你的時間" loading="lazy" decoding="async">

</p>
]]></content:encoded>
    </item>
    <item>
      <title>幣圈黑天鵝，前十大公鏈 Terra 如何從月球殞落</title>
      <link>https://ianlifelab.com/blockchain-black-swan-terra/</link>
      <pubDate>Thu, 12 May 2022 00:00:00 +0000</pubDate>
      <dc:creator>Ian Tsai</dc:creator>
      <guid>https://ianlifelab.com/blockchain-black-swan-terra/</guid>
      <category>科技探索</category>
      <description>一個星期前，Terra 還是市值前十的加密貨幣，但在短短的一週 Luna 的價格卻已從 80 跌到0.00001 美金，這中間與 UST 脫鉤有著莫大的關係。</description>
      <content:encoded><![CDATA[<br>
<br>
<br>
<p>一個星期前，Terra 還是市值前十的加密貨幣，其中包含近期最熱門的 Defi 項目 Anchor 也是大家趨之若鶩投資的項目之一，
甚至有很多投資人把大部分資產兌換成 UST 放到 Anchor 內。
但短短的一週 Luna 的價格卻從 80 跌到0.00001 美金，Anchor 中的 UST 資金也大量的撤離，
這中間與 UST 脫鉤有著莫大的關係，一個大家都以為會成功的項目是如何在短時間內跌落谷底，
自身參與了這個幣圈的重大事件 (韭菜？)，想說來紀錄一下。</p>
<h4 id="terra-的模型">Terra 的模型</h4><hr>
<p>Terra 是一個擁有雙主鏈幣的區塊鏈，包含其算法穩定幣 Terra 及治理代幣 Luna，而 UST 為算法穩定幣 Terra 的一種。
由於 UST 並不像 USDC 有美元資產儲備抵押，需要依靠演算法及市場支撐與美金的掛鉤。</p>
<p>所以當 UST 價格高於一美元時，代表供不應求，這時便會燃燒 Luna 並鑄造 UST，讓價格回穩到一美元，
而這中間也因為 Luna 的總量變小，進而提高了 Luna 的價格。</p>
<p>反之，若 UST 低於一美元時，代表供過於求，這時則會燃燒 UST 去鑄造 Luna，也因為這樣 UST 的總量變小，可以讓價格回穩至一美元，
而當 UST 價格回穩後，因為 Luna 便多，所以導致 Lune 的價格下降。</p>
<p>這看似很合理的邏輯，似乎必須建立在市場對 Terra 有信心的情況下，Terra 才可以穩定的生存，
這也讓 Terra 埋下了一個落入死亡螺旋的不安定因素。</p>
<p>
  <img src="https://images.vocus.cc/fa4b1779-5914-49d5-ab5e-7d660e7cb38c.png" alt="幣圈黑天鵝，前十大公鏈 Terra 如何從月球殞落" loading="lazy" decoding="async">

</p>
<br>
<h4 id="terra-如何墜入死亡螺旋">Terra 如何墜入死亡螺旋</h4><hr>
<p>UST 的價值必須要 Luna 來做支撐，5/8 巨鯨開始大量的拋售 UST，讓 UST 開始出現脫鉤的現象，引發市場擠兌潮，
投資者紛紛的開始在擠兌 UST。 到 5/9 UST 狀況並沒有好轉，反而更多的 UST 被拋售，使得 UST 開始嚴重脫鉤，那也因為這個狀況，
Terra 的機制開始啟動，為了讓 UST 回歸到一美元，必須要燃燒 UST 去鑄造 Luna 好讓價格回穩。
但這也造就了一個問題，大量的鑄造 Luna 導致他的價格不斷地下降，市場仍然處於恐慌的狀態，不斷擠兌 UST ，這時 Terra 便展開他的死亡螺旋。</p>
<p>
  <img src="https://i.imgur.com/3jF7sYZ.png" alt="幣圈黑天鵝，前十大公鏈 Terra 如何從月球殞落" loading="lazy" decoding="async">

</p>
<br>
<h4 id="terra-的下一步">Terra 的下一步？</h4><hr>
<p>雖然 Terra 創辦人 Do Kwon 以及社群已有提出了解決方案，Terra 鏈上也有一些不錯的項目，要起死回生也不是沒有機會，
不過難度應該是滿高的，一方面是市場對於 Terra 以及創辦人已失去信心，再加上投資人的資金被套在各種價格之間，
如果要解套，少說也要漲個幾百倍。短時間內 Terra 要做到並不是一件簡單的事。</p>
<p>不過相較於其他項目，Terra 算是很認真想要解決問題，滿期待他們後去提出的解決方案。</p>
<br>
<h4 id="算法穩定幣到底穩不穩">算法穩定幣到底穩不穩</h4><hr>
<p>法幣儲備抵押穩定幣是目前最常見的穩定幣，像是 USDC, USDT 等，（雖然目前市場對於 USDT 還是有些爭議，疑似美元擔保因為遭到挪用，不過這邊就先不探討其原因）。
也就是發行一顆 USDC 背後要有一美元作擔保，確保該穩定幣有辦法清償市場上的穩定幣。
但這始終會與某些中心化機構的有所關聯，雖然目前都是有監管狀態，但也不排除哪天這些機構不玩了，又或是真的儲備資產遭挪用，對於投資人來說也是一個風險。</p>
<p>個人認為，算法穩定幣可以實現區塊鏈去中心化的理念，完全依照演算法穩定與法幣價值的掛鉤，雖然目前為止可以說是所有的算法穩定幣都以失敗收場
而它的問題也始終暴露在那，不過現在就要宣布算法穩定幣絕對沒辦法使用，我認為言之過早。
或許因為這次 Terra 事件會讓區塊鏈或是算法穩定幣的發展受到限制，但畢竟這個產業也才剛起步，還是有很多可能性存在。</p>
<p>Near protocol 最近也推出了算法穩定幣 USN ，希望可以藉由這次 Terra 事件警惕，避免成為下一個 UST。</p>
<br>
<p><strong>抄底投資有賺有賠，在抄底之前請詳閱帳戶餘額，以免被抄到失智～</strong></p>
<p>
  <img src="https://pbs.twimg.com/media/ETMs6JFXQAESDvU.jpg" alt="幣圈黑天鵝，前十大公鏈 Terra 如何從月球殞落" loading="lazy" decoding="async">

</p>
<h4 id="references">References</h4><hr>
<ul>
<li><a href="https://docs.terra.money/docs/learn/protocol.html" target="_blank">Terra station</a></li>
</ul>
]]></content:encoded>
    </item>
    <item>
      <title>畫 Wireframe 目的是什麼？</title>
      <link>https://ianlifelab.com/product/pm101-wireframe/</link>
      <pubDate>Mon, 02 May 2022 00:00:00 +0000</pubDate>
      <dc:creator>Ian Tsai</dc:creator>
      <guid>https://ianlifelab.com/product/pm101-wireframe/</guid>
      <category>產品思維</category>
      <description>wireframe 是產品開發現場的建築藍圖，不是草稿</description>
      <content:encoded><![CDATA[<br>
<br>
<br>
<p>最近畫 Wireframe 的頻率有點高，也畫出了一些心得，中間也有遇到一些問題，剛好分享紀錄一下。</p>
<h4 id="什麼是-wireframe">什麼是 Wireframe</h4><hr>
<p>基本的 Wireframe 是一種低保真的設計原型，頁面上面沒有華麗的設計元素，只有匡線、文字資訊、架構排版等。
在一個新的需求出現時，會有非常多的不確定性，需要先確定產品要呈現什麼資訊給用戶、使用旅程是什麼、可能遇到什麼問題、我們想解決什麼問題等，
都需要考慮進去，所以若是太快進入 UI 設計，如果架構或是流程等部分需要做更改，可能會造成過多的資源消耗。</p>
<p>
  <img src="https://i.imgur.com/GAmbXpUl.png" alt="畫 Wireframe 目的是什麼？" loading="lazy" decoding="async">

</p>
<br>
<h4 id="畫-wireframe-目的是什麼">畫 Wireframe 目的是什麼？</h4><hr>
<p>我認為 Wireframe 階段主要考慮以下兩個部分：</p>
<ul>
<li>傳遞資訊</li>
<li>使用者流程</li>
</ul>
<p>以下會拿會員系統內新增訂單功能來做範例：</p>
<h6 id="傳遞資訊">傳遞資訊</h6><p>畫面上要呈現什麼類型的資訊給用戶，必須在 Wireframe 階段就決定，
使用適當的文字幫助用戶理解情境，讓用戶可以很簡單的知道新功能的價值是什麼。</p>
<p>比方說，電商會員系統中新增了查詢訂單的功能，用戶在登入會員後會希望去看自己的訂單狀況，
或許在會員頁面上用一段文字提醒目前訂單狀況，讓用戶在一進到會員頁面時就知道自己的訂單現在的狀況。</p>
<br>
<h6 id="使用者流程">使用者流程</h6><p>接續上述的情境，當用戶看到自己訂單狀況時，要怎麼樣引導他去看到自己的訂單。
可以在文字附上超連結導去訂單頁面，也可以在畫面上新增『我的訂單』的分頁，讓用戶可以用最短時間內找到自己的訂單，
這些都是我們希望用戶去看到訂單的方式。</p>
<p>所以 Wireframe 除了傳達資訊以外，使用者流程也是很重要的一環，用戶看到關鍵訊息後，可以很簡單的使用新功能。</p>
<br>
<h4 id="wireframe-常見的錯誤">Wireframe 常見的錯誤</h4><hr>
<p>第一次畫 Wireframe 的人很有可能落入『濫用視覺元素』這個錯誤，畫著畫著就會開始想頁面的顏色要怎樣呈現比較好按鈕形狀長怎樣，
要放什麼 icon 在畫面上，在顯示圖片的地方要放哪張圖等。
但這些東西並不是在 Wireframe 階段該專注的事情，上面有提到 Wireframe 專注於傳遞資訊，包含資訊架構、流程等等，
而不是設計，所以用最簡單基本的方式呈現，剩下精緻的設計就讓設計師煩惱吧。</p>
<p>以下幾個是我從零開始畫 Wireframe 時會注意的幾點：</p>
<ol>
<li>只用灰白色，專注於架構的呈現</li>
<li>單一字體，專注於傳達資訊</li>
<li>只用 3, 4 種字級</li>
<li>不用照片或插圖，用方框框代替</li>
<li>不用強烈風格的 icon 或裝飾圖</li>
</ol>
<p>另一個情況是，產品已經很成熟，在 Wireframe 階段會拿既有的畫面去改，這時要注意的點便是每個畫面或是元件所使用的場景是什麼。
以電商來說，買家的訂單元件以及賣家的訂單元件可能就長得不一樣，這時如果混用的話，由於已經算是高保真的設計，
這時一同討論的工程師或是設計師可能會因為精緻的畫面，而跳過『討論資訊架構』的階段，開始思考畫面的問題。
所以當使用既有的畫面去做 Wireframe 時要注意使用的元件要正確，不能混用，導致誤會。</p>
<br>
<h4 id="怎樣的-wireframe-算好的-wireframe">怎樣的 Wireframe 算好的 Wireframe</h4><hr>
<p>Wireframe 不是上色的 UI，不管是低保真還是高保真的 Wireframe，他的目的都是要確認資訊架構以及使用者流程，
提供工程師與設計師明確的規格。所以我認為只要可以明確表達上述兩點的，讓別人可以很簡單的了解 Wireframe 想傳遞的資訊，
個人認為就是好的 Wireframe。</p>
<p>
  <img src="https://i.imgur.com/LFyenvE.png" alt="畫 Wireframe 目的是什麼？" loading="lazy" decoding="async">

</p>
]]></content:encoded>
    </item>
    <item>
      <title>給予 - 施比受更有福，給予的力量</title>
      <link>https://ianlifelab.com/read/give-and-take/</link>
      <pubDate>Tue, 26 Apr 2022 00:00:00 +0000</pubDate>
      <dc:creator>Ian Tsai</dc:creator>
      <guid>https://ianlifelab.com/read/give-and-take/</guid>
      <category>學習成長</category>
      <description>給予、索取、互利是三種人際的互動模式，在生活、職場上，每個人都可能扮演不同的角色，與不同對象互動時會採取不同的互動模式。比方說，在求職談薪水時會展寫出索取者的姿態，但在指導新人的時候又會變成給予者的模式。</description>
      <content:encoded><![CDATA[<br>
<h4 id="1-誰在金字塔的頂端">1. 誰在金字塔的頂端？</h4><hr>
<p>給予、索取、互利是三種人際的互動模式，在生活、職場上，每個人都可能扮演不同的角色，與不同對象互動時會採取不同的互動模式。
比方說，在求職談薪水時會展寫出索取者的姿態，但在指導新人的時候又會變成給予者的模式。</p>
<p>那以職場來講，誰在金字塔的底部，而又是誰在頂層呢？你可能會猜在金字塔底部的應該是給予者，因為給予者喜歡給予，但也是因為這一點，在給予的過程中給予者可能會犧牲自己的權益。</p>
<p>加州有份調查報告是有關於工程師在工作上的生產力以及效率，統計發現表現最差的工程師確實是給予比索取多的人，這些人為了幫助別人付出更多心力，但也無法好好的完成工作。
那頂層是索取者還是互利者呢？在同一份調查結果顯示，生產力最高的一樣式給予者，工作成果評分最高的工程師一直樂於貢獻。
當然這種現象不只出現在工程師，同樣也有一份調查是針對業務員，結果就如同工程師的統計一樣，不管是表現最差還是最好的，都是給予者。</p>
<p>那為何在金字塔的頂端以及底部都是給予者呢？</p>
<br>
<h4 id="2-影響力真空頂與底的給予者">2. 影響力真空，頂與底的給予者</h4><hr>
<p>大家普遍會認為，過多的給予只會造成自己的困擾，但是其實許多成功者本質上也喜歡給予，頂端與底部的給予者本質上的差異又是什麼呢？
底層的給予者屬於『無私奉獻型』給予者，他們重視他人的利益，但卻過度忽視自己的利益，把時間和精力花在奉獻上，而不顧自己的需求。
頂端的給予者屬於『利人利己型』給予者，他們關注於他人利益的同時，也重視著自己的利益。
可能多數人會認為『利己』以及『利人』在光譜的兩邊，而這是否也更像互利者？</p>
<p>書中提到的電訪員的故事，該部門的電訪員需要打給畢業校友募款，其中給予型的電訪員業績普通，甚至稱不上好，但索取型的電訪員業績則是給予型的好幾倍。
索取型的電訪員在這個部門的薪水是最高的，這也是他的動力之一，也是他們的『獎勵』。但給予型電訪員想要的獎勵卻不是錢，他更在意自己可以有什麼貢獻。
電訪員所募來的資金大多數會作為大學生的獎學金，這筆獎學金可以幫助到不少的學生完成學業。當給予型電訪員知道這個原因後，只花了一週業績就追上了索取型電訪員。</p>
<p>給予者『利己』的目標較於互利者以及索取者不太一樣，他們更在意自己做的事是否可以幫助到他人。
當自己所做的事可以對他人產生價值時，給予者的成就往往會高出另外兩者許多，如果沒有，就會在底層打滾，這種現在稱作『影響力真空』。</p>
<br>
<h4 id="3-如何找到人才">3. 如何找到人才</h4><hr>
<p>世界上一些有名的網球選手，第一個網球教練並不是超強的教練，但這些教練大多都很會帶小朋友，他們提供了孩子動力，讓他們對網球產生興趣，願意花時間去練習。</p>
<p>給予者擔任領導及教導的角色時，能力並不是他們考量的第一要點，他們認為每個人都有『潛力』。
這些選手的教練，會特別關照他們，並不是因為他們天賦異稟，而是因為他們有過於常人的決心、肯努力。
心理學家把這種特質稱作韌性 (grit)：對長程目標有熱情及毅力。</p>
<p>但這並不代表天賦不重要，只是當有一群能力都過門檻的人，韌性就會成為指標，能預測這些人發揮潛力的程度，這也是為什麼對於給予者來說，栽培有韌性的人 CP 值最高的原因。</p>
<p>在職場上同理，給予型的主管會提攜後輩，他認為人人都是『潛力股』，並且他也不會畏懼能力出眾的下屬，因為給予者的目標並不是個人的成就，而是大家的成就。
但索取者就不一樣了，索取者會預設立場，懷疑別人立意不良，若遇到有潛力的人會視為威脅，不願支持與栽培，較少扮演扶植者。
而互利者是只要發現有潛力，就會給予支持，但這相對也是缺點，因為互利者通常都看到指標才會行動，不願意冒險，這也讓他們有可能錯失有潛力的人才。</p>
<br>
<h4 id="4-給予的力量團隊分享">4. 給予的力量，團隊分享</h4><hr>
<p>給予的力量到底有多大？</p>
<p>試想自己在職場上，提出了一個創新的方案，主管在跟老闆提案時說『這是我花一個月想出來的方案』以及『這是 XXX 提出，並經由團隊共同討論得出的方案』
哪個更願意讓人繼續追隨。</p>
<p>一個團隊的成功，團隊裡的給予者，並不會去搶功勞，因為他希望整個團隊都一起成功。
而索取者則會認為，功勞都是自己的，別人只是幫他抬轎而已，他不願意分享成果。
雖然『搶功勞』對於索取者來說並不影響他的成就，但『分享成果』這件事卻會促使給予者的成功。
因為這對於給予者來說，分享的當下可能會損失一些收入或名氣，但把時間拉長，相較於索取者，大家更願意主動推薦給予者，跟他一起合作，
而互利者也只會想要獎勵給予者，懲罰索取者。</p>
<br>
<h4 id="5-給予者如何避免成為別人的墊腳石">5. 給予者如何避免成為別人的『墊腳石』</h4><hr>
<p>給予者在某種程度上還是會成為索取者的『墊腳石』，索取者可能會假扮成給予者，讓給予者認為好像遇到志同道合的人，但其實只是想要利用給予者而已。
大家可能會認為『這個人感覺還不錯』他就是給予者；『這個人相處起來不舒服』他一定是索取者。
一開始認識朋友，當他對你冷淡，會以為對方不在乎我們，因為我們對他沒有利益，所以他是索取者。
但在生活上也可能遇到『討人喜歡的給予者』，所以『討人喜歡』與否，只是一個印象，並不能代表索取者或給予者。</p>
<p>如何分辨真假給予者？『真程度篩選』是給予者分辯索取者及互利者的一個方法，給予者相較於其他兩類人更有辦法分辨出誰是索取者及互利者。
因為給予者比較會注意他人的行爲舉止，也比較能了解別人的思緒和感覺，因此更能察覺出一些線索。
第二點就是，他們很容易信任別人，可能有時會被索取者背刺，但也可能因為自己的付出獲得超值的回報。
時間一長，給予者對於每個人之間的差異就會更敏感，便不會落入『討喜』或『不討喜』的選擇題內。</p>
<p>給予者在可以分辨真假給予者後，便會依照對方的類型改變自己的互動方式，書中稱此行為叫做『寬容版的以牙還牙』。
賽局理論中的以牙還牙的策略，是典型的互利做法。也就是一開始先配合對方的做法，當對方開始競爭後，才開始改採競爭做法，但缺點則是對於偶發事件不夠寬容。
而寬容版的以牙還牙則是開始一樣採配合做法，當對方開始競爭後，才開始改採競爭做法，但也不是每次都與其競爭，2/3 採競爭做法，其餘則是選擇寬恕配合。
這對於給予者來說是一個彈性，遇到索取者時給予者有辦法與他來回互動，不在是單方面給予。</p>
<br>
<h4 id="讀後心得">讀後心得</h4><hr>
<p>在社會上打滾幾年後來看『給予』這本書特別有感觸，社會上形形色色的人都有，如何找到正確的人，與不同類型的人合作，一直都是重要的課題。
職涯一路走來也受到不少人的幫助，自己也會想究竟為何有人就是未將手伸出來幫助別人，救自己都來不及了何況救別人？XD
但也許也是因為這樣，現在每當看到一些有需要的人時，就會想到以前自己是如何受人幫助，便會不自主地伸出手。
並不是說自己有多偉大，但或許這些舉動可以讓這些人找到自己的路，就像當年的我一樣。
在書中也看到了，要真的居上位，不一定要踩著別人往上爬，做的『利人利己的給予者』一樣可以走到高處。</p>
<p>
  <img src="https://i.imgur.com/jJs4ucl.png" alt="給予 - 施比受更有福，給予的力量" loading="lazy" decoding="async">

</p>
]]></content:encoded>
    </item>
    <item>
      <title>什麼是 Blockchain Bridges，運作原理是什麼?</title>
      <link>https://ianlifelab.com/blockchain-bridge/</link>
      <pubDate>Thu, 31 Mar 2022 00:00:00 +0000</pubDate>
      <dc:creator>Ian Tsai</dc:creator>
      <guid>https://ianlifelab.com/blockchain-bridge/</guid>
      <category>科技探索</category>
      <description>Blockchain Bridge 允許了兩條不同規則、不同協議的區塊鏈將他們的數據、代幣互相傳遞。</description>
      <content:encoded><![CDATA[<br>
<br>
<br>
<p>區塊鏈技術在近幾年來成長非常的快速，最早的 Bitcoin、Ethereum 到 Binance Chain 、 Polygon 、 Solana 等，每條鏈上都有各自的治理模式、協議、規則，甚至是 Defi、NFT、DAO 等多元化的應用也相繼出現。</p>
<p>儘管近幾年出現的這麼多元的應用，但這些終究只能存在於單一條區塊鏈上，並沒有辦法與其他的區塊鏈互動，也就是說鏈與鏈之間並沒有互相操作性。每一條區塊鏈，就好比一座小島，試想在台灣的 Ian 想要跟在日本的 Justin 溝通訊息，該如何做到呢？現在的社會可以經由通訊軟體或是社群軟體，直接將訊息傳遞出去，也就是所謂 Web 2.0 的應用，同理，比特幣想要到以太坊上做應用，以現在的狀況來說，只有中心化交易所（還不能經由去中心化交易所 Dex）換成以太幣或是 ERC-20 token 才有辦法做到這件事。但若這樣操作手上便不在持有比特幣，這也跟當初想要以『比特幣在以太坊上做應用』的想法有所差異。</p>
<br>
<h4 id="什麼是-bridges運作原理是什麼">什麼是 Bridges，運作原理是什麼？</h4><hr>
<p>先來講講什麼是 Blockchain Bridge ，它是以什麼方式來解決互相操作性的問題。Bridge 允許兩條不同規則、不同協議的區塊鏈將他們的數據、代幣互相傳遞。以上述的例子來講，可以不經由交易所得換幣服務，直接再以太坊上使用自己持有的比特幣。</p>
<p>在你希望將自己的一部分比特幣轉移到以太坊上時， Blockchain Bridge 會先將你比特幣鎖在所使用的 Bridge 上，並在以太坊上建立等同價值的比特幣代幣（稱作 wBTC），此時便可以使用 wBTC 去操作以太坊上的 Dapp 。相反，當你認為不需要繼續在以太坊上，想要換回比特幣時，只需要做反向的行為，以太坊上的 wBTC 會被燒毀，而同等價值的比特幣則會回到你的手上。但必須注意的是，若用 Bridge 將 10 BTC 換成 10 wBTC，換回時卻只有 9 wBTC 的話，也只能取得 9 BTC。</p>
<p>簡單來說，經由 Bridge 是將你的加密貨幣『複製』一份到別條鏈上，讓他符合另一條鏈的規範與協議，可以操作上面的各種應用。</p>
<br>
<h4 id="bridges-種類">Bridges 種類</h4><hr>
<p>Bridges 又分為 One-Way Bridges &amp; Two-Way Bridges，以及 Trust-Based &amp; Trustless Bridges。</p>
<p>One-Way Bridges 的意思就是，只能Ａ鏈到Ｂ鏈，不能相反操作，Two-Way Bridges 則是可以互相跨越。而 Trust-Based Bridges 則是有一個中心化集團來控制這個 Bridge， Trustless Bridge 則是由程式協議來操作這項服務。</p>
<p>比方說剛剛提到的 BTC 換到以太坊上的 wBTC 就不僅是一個 One-Way Bridge，同時也是 Trust-Based Bridge。它只可以比特幣到以太坊，不可以相反操作，且是經由 BitGo 這間公司來做打包交換這件事。Wormhole 就是 Two-Way Bridge，不管你在 Solana 或是以太坊上都可以互相交換，而 Wormhole 是用合約協議的方式來做到跨鏈，並沒有一個集團或是企業來控制這項服務。</p>
<br>
<h4 id="為何要用-bridges">為何要用 Bridges</h4><hr>
<p>可能大家會想，都已經有交易所了可以換幣了，那為何還需要 Bridge 呢？如同第一段所講，持有比特幣的人想要再以太坊上做更多的應用，但另一方面又想持有比特幣，以交易所來說是沒辦法達成這件事。第二點是，在不同的鏈上的手續費及速度上也會有差異，比方說在以太坊上交易必須要耗費大量的時間及手續費，若經由 Bridge 的方式轉移到 Polygon 上，便大大降低了這些成本。</p>
<p>當然 Bridge 有許多好處，同時也帶有一些隱藏的風險，比方說大家會問 Trust-Based &amp; Trustless Bridges 哪個比較好，其實這沒有一定的答案。或許部分人會覺得讓某集團控制會有一定的風險，不如選擇 Trustless Bridges 會比較安全，但其實 Trustless Bridges 也會有被駭客攻擊的風險。最終還是要評估自己承受風險的程度以及使否有對正在使用的 Bridge 有所了解。</p>
<p>
  <img src="https://i.imgur.com/3k79a4e.png" alt="什麼是 Blockchain Bridges，運作原理是什麼?" loading="lazy" decoding="async">

</p>
<br>
<h4 id="references">References</h4><hr>
<ul>
<li><a href="https://academy.bit2me.com/en/what-is-a-crypto-bridge/" target="_blank">What is a Crypto Bridge?</a></li>
<li><a href="https://blog.liquid.com/blockchain-cross-chain-bridge" target="_blank">What Are Blockchain Bridges and Why Do We Need Them?</a></li>
<li><a href="https://coinmarketcap.com/alexandria/article/what-are-blockchain-bridges" target="_blank">What Are Blockchain Bridges?</a></li>
<li><a href="https://www.coindesk.com/learn/what-are-blockchain-bridges-and-how-do-they-work/" target="_blank">What Are Blockchain Bridges and How Do They Work?</a></li>
</ul>
]]></content:encoded>
    </item>
    <item>
      <title>大器可以晚成</title>
      <link>https://ianlifelab.com/read/late-bloomers/</link>
      <pubDate>Tue, 29 Mar 2022 00:00:00 +0000</pubDate>
      <dc:creator>Ian Tsai</dc:creator>
      <guid>https://ianlifelab.com/read/late-bloomers/</guid>
      <category>學習成長</category>
      <description>當世界沉迷年少得志，耐心是你成功的本事</description>
      <content:encoded><![CDATA[<h4 id="1-英雄出少年的時代">1. 英雄出少年的時代</h4><hr>
<p>現在時常可以看到關於『三十歲以下的傑出青年榜』、『矽谷獨角獸創辦人年紀僅二十多歲』之類的新聞，大多在敘述現在的年輕人有多麼的積極，年紀輕輕就創出了一番名號、甚至改變產業，賺進鉅額的資產。而父母為了讓自己的兒女也可以『英雄出少年』，便讓小孩從小學，甚至幼稚園開始就開始補習，目的就是為了不要讓他們輸在起跑點，可以在年紀輕輕就有一番成就。</p>
<p>這個文化不只影響了父母，學校教育也逐漸偏向這種風氣，比方說，如何用智力測驗篩選出菁英人才；為了讓考生可以進入菁英大學而開設的補習班等等，整個社會彷彿充斥著『你必須要在年輕時就成功，這樣才算一個成功者』的氛圍，但同時也扼殺了年輕人的潛能。為了及早成功，這些人相較以前更為疲憊、脆弱、甚至害怕失敗。為了成功，他們不在願意冒險，只想打著安全牌，這樣看似可以交出一些東西，也不會被檢討。或許這在成績、工作上可以帶來成就，但這並不一定是自己想要過的人生。</p>
<br>
<h4 id="2-創造屬於自己的文化">2. 創造屬於自己的文化</h4><hr>
<p>如同之前講的，社會對於年輕就有成就的人給予了極大的肯定，心理學家稱這類的想法為『規範性思維』。『規範性思維』有幾個缺點，首先大部分的人都認為『多數人的選擇』才是正確的選擇，像是『大家都考大學，所以我也要跟著考大學』一樣。第二個壞處在於，會無止盡的『有害比較』，如哪間大學畢業、薪水多少、職業是什麼等。如果自己沒有遵從這規範性思維，就會被社會排擠、被認為是異類。不過也有成功人士，在年輕時默默無聞，經歷了一番歷練後才有所成就，
如漫威（Marvel）教父史丹．李（Stan Lee）40多歲創立自己的漫畫世界、張忠謀 56 歲創立台積電、肯德基爺爺哈倫德 65 歲才創肯德基。</p>
<p>若當下的自己還沒有，或是沒辦法發揮自己的潛能，或許可以看看現今社會對文化的影響，可能不是你不夠好，只是你被現今的社會文化所束縛了。一定得進 google 才算成功嗎？自己開一間餐館或許是更好的選擇。</p>
<br>
<h4 id="3-學會放棄探索更多可能">3. 學會放棄，探索更多可能</h4><hr>
<p>成功的秘訣在於堅忍不拔，克服重重困難。在這個社會，放棄是被忽略的選項甚至是被禁止的事情，但堅持不懈卻幾個問題：</p>
<ol>
<li>
<p>韌性以及意志是一種有限的資源：也就是自我損耗的概念，當你在堅持一件自己沒那麼相信的事，那到最後只會將你的意志力消磨殆盡而已。這就很像去重訓，最多就只能做100公斤四組，但硬要做到第五組，那結果顯而易見（但這不代表意志力可以像肌肉一樣鍛鍊）。</p>
</li>
<li>
<p>放棄反而有益健康＆常能帶來更好的結果：1970 末期 intel 因為日韓進入了記憶體市場而開始跟他們薛價競爭，這是 intel 決定要放棄記憶體市場，將未來賭在微處理器上，以現在看來這是個成功的決定，但當初並不是這麼順利，如果 intel 沒有放棄記憶體市場，現在的微處理器大廠可能就換人了。所以放棄並非失敗，放棄只是為了尋找更適合的方向。</p>
</li>
</ol>
<br>
<h4 id="4-成長的太慢那就尋找更好的花盆">4. 成長的太慢？那就尋找更好的花盆</h4><hr>
<p>相信大家都聽過『螃蟹心理』，當一隻螃蟹想要往上爬時，其他螃蟹會將他往下拉。有時自己想要往上爬，便會感到同溫層會將自己往下拉的力量，就如同螃蟹一樣。
不過為了自己可以有更好的發展，必須要找到適合的地方，就像每種植栽都適合不同的栽種方式，必須要找到適合的花盆，才有可能長的美麗。</p>
<p>但不是說毫無計畫的更換，如果想要去國外工作，離職去當外送員似乎助力不大，或許去外商公司上班磨練，會是更好的選擇。所以在選擇花盆時，應該考慮自己的目標是否與花盆契合，轉換後是否可以讓自己更專心、認真、更全心投入，讓整體表現都比現在狀況更好。轉換的過程中也會有阻力，不管是環境或是自己，畢竟改變是痛苦的，為何我不好好待在舒適圈？不過我們應該時刻的問自己『我是不是待在最能讓我發光發熱的花盆內？』這才是最重要的事。</p>
<br>
<h4 id="5-成功沒有期限">5. 成功沒有期限</h4><hr>
<p>在資訊爆發的年代，很多團體或是公司橫空出世，大家所認為的『一夕爆紅』、『一夜至富』的背後，其實是十幾年、甚至二三十年的堅持，才能活得的結果。諸多大器晚成的人都表示，只要找到屬於自己的花盆，就要努力堅持下去。</p>
<br>
<h4 id="讀後心得">讀後心得</h4><hr>
<p>在這網路發達的時代，社群媒體、新聞上充斥著各種的年輕創業家，短短幾年內把自己的產品打造成獨角獸的故事。讓社會漸漸的覺得『如果沒有年紀輕輕有一番作為，那一定沒辦法成功』。當然這個觀念也深深影響到了我，曾經的我也認爲需要在年輕時有一番作為，不管年薪達到一個門檻，或是當上某間公司的主管，就是一個成功者。這也讓我在追逐著這『自以為的成功』的過程中付出了不小的代價。</p>
<p>這本書説是為大器晚成的人抱不平，但其實我認為他想傳遞的思想是『跳脫社會主流的價值觀，活出自己想要的樣子』。或許每個人都要思考一下，自己有限的人生中，想要成為什麼樣子的人？社會定義的文化並非適用於每個人，也不是一個必須遵守的法則。耐心尋找屬於自己的路，走出自己的人生才是最重要的。</p>
<p>
  <img src="https://i.imgur.com/ozhF9lo.png" alt="大器可以晚成" loading="lazy" decoding="async">

</p>
]]></content:encoded>
    </item>
    <item>
      <title>可複製的領導力：樊登的九堂商業課</title>
      <link>https://ianlifelab.com/read/reproducible-leadership/</link>
      <pubDate>Mon, 24 Jan 2022 00:00:00 +0000</pubDate>
      <dc:creator>Ian Tsai</dc:creator>
      <guid>https://ianlifelab.com/read/reproducible-leadership/</guid>
      <category>學習成長</category>
      <description> 成為領袖之前，成功就是讓自己成長。成為領袖之後，成功是讓別人成長。——美國商業領袖傑克-韋爾奇</description>
      <content:encoded><![CDATA[<h4 id="管理者的定位是什麼">管理者的定位是什麼？</h4><hr>
<p>管理者的任務是打造有戰鬥力團隊，而不是什麼事都親力親為，一個能力好管理者，除了帶領團隊達成目標以外，同時也能培養出有能力的人才。</p>
<h6 id="透過別人完成任務">透過別人完成任務</h6><p>當從一名職員升職成一名管理者，所需承擔的責任也從『完成被交付的任務』變為『讓團隊完成任務』。
就算曾經是一名超級員工，也不太可能一個人囊括所有的任務，所以如何讓『透過別人完成任務』就是管理者很重要的課題。</p>
<h6 id="給部屬嘗試錯誤的空間">給部屬嘗試錯誤的空間</h6><p>要培養一個健康且強大的團隊，就必須激發員工的各種潛能。這過程中不可避免會有些錯誤，經歷了這些錯誤才可以不斷地成長。</p>
<h6 id="船長的責任">船長的責任</h6><p>團隊好比一艘船，每個船員在這艘船上都有各自的任務該做。一艘小船，船長可以自己執行所有任務來駕駛這艘船，
但若是一艘大船，船長的任務就不在是駕駛船隻，而是需要掌握船的方向、速度以及安全。
管理者同理，隨著團隊的擴張，管理者需要奠定策略，組織員工達成任務。</p>
<h4 id="用目標管理降低主觀影響">用目標管理，降低主觀影響</h4><hr>
<p>在團隊中，我們需要讓員工知道，到底公司或團隊想要做到什麼事？目標是什麼？究竟為了什麼而努力？
而目標管理與目標一樣重要，目標管理會因為團隊中各層級的不同，對於各自任務的目標設置也會有所不同。</p>
<p>用目標管理也可以屏除管理者的主觀意識，可以很客觀的評斷每一位員工是否有達到各自設置的目標。
同時管理者也要思考，給予員工的目標是否合理、明確、可量化。</p>
<p><em>可參考此篇<a href="https://www.blink.com.tw/board/post/79733/" target="_blank">SMART法則，讓目標變得更容易</a></em></p>
<br>
<br>
<h4 id="溝通視窗的四個象限">溝通視窗的四個象限</h4><hr>
<p>溝通視窗，也稱周哈里窗，是一種溝通的技巧與理論。其中又分為以下四個象限：</p>
<p>
  <img src="https://i.imgur.com/8jerSOM.png" alt="可複製的領導力：樊登的九堂商業課" loading="lazy" decoding="async">

</p>
<h6 id="隱私窗格正面溝通避免誤解">隱私窗格：正面溝通，避免誤解</h6><p>顧名思義，隱私就是隱僻、不公開的私事。但在隱私窗格內，分為三個階層，從不能公開到部分公開，</p>
<ol>
<li>第一層：不能說</li>
</ol>
<p>又稱為『 Deep Dark Secret 』，每個人都有 DDS ，但如果一個人有過多的 DDS，則會承受龐大的精神壓力。
在日常生活中，不打聽別人的隱私，給予對方一些空間，這是基本禮儀。
但在工作中，沒有必要有太多 DDS，不然會讓人整天活在焦慮與壓力之下。</p>
<ol start="2">
<li>第二層：不好意思說</li>
</ol>
<p>有時在工作上，員工犯錯時，本來應該給予嚴厲的懲罰，但當員工一臉緊張的到你面前時，當下又會動了惻隱之心。
這在職場上很常見，因為管理者『不好意思說』，該被糾正的問題沒有被糾正，下一次造成更嚴重的問題。</p>
<ol start="3">
<li>第三層：忘了說</li>
</ol>
<p>『忘了說』比不好意思說更嚴重，『忘了說』指的是，管理者誤以為大家都應該知道這些是，不需要再多講，但這往往是管理者的一廂情願。
這是團隊中最應該被重視的一點，又被稱『知識的詛咒』。</p>
<pre><code>知識的詛咒：當我們對某件事非常了解，腦中存有非常多的專業知識時，就會轉換表達方式，
以致說出來的東西，別人聽不懂或是難以理解，自己卻以為已經說得很明確了。
</code></pre>
<ul>
<li><strong>如何破解知識的詛咒</strong></li>
</ul>
<p>知識的詛咒，是行銷中很重要的改念，可以看看這一篇 <a href="https://kknews.cc/zh-tw/food/lgoe5yb.html" target="_blank">舒利茲啤酒的由來</a>
，了解行銷大師霍普金斯如何破解知識的詛咒，讓舒利茲大賣。</p>
<h6 id="盲點窗格利用回饋看到自身侷限">盲點窗格：利用回饋，看到自身侷限</h6><p>盲點窗格，就是自己不知道，但別人知道的部分。盲點窗格有點類似汽車的視覺死角，所以需要後照鏡來輔助，試想如果開車或停車時，
後照鏡被拔掉了，駕駛沒辦法經由後照鏡看到視線死角，是否整個過程都會一路上都會感到焦慮？
就如同自身的盲點窗格，若是越大，自己則會覺得越危險。</p>
<ul>
<li><strong>如何改善盲點窗格</strong></li>
</ul>
<p>若有人願意提出自己的缺點時，先想想是否確實擁有這個問題，以及是否為盲點窗格。
投訴以及回饋的機制也是可以讓自己知道自身盲點窗格的方法之一。</p>
<h6 id="潛能窗格不要輕視每一名員工的潛能">潛能窗格：不要輕視每一名員工的潛能</h6><p>每個員工都有巨大的潛能，作為管理者，應該要克服自己的主觀偏見，以一個標準化的流程，讓每個員工有公平競爭的機會。
其中管理者也比需思考以下兩件事：</p>
<ol>
<li>是否充分調動了員工的積極性？</li>
<li>是否為員工能力的提升提供了好的規劃與培訓？</li>
</ol>
<h6 id="公開窗格讓員工尊重你而不是懼怕你">公開窗格：讓員工尊重你，而不是懼怕你</h6><p>大家都知道的資訊，如姓名、性別等，這都屬於公開窗格的資訊。它的好處的就具有社會影響力，讓人們產生信任感，如明星代言產品。
但壞處則是少了隱私，需要時刻預防偷拍、防止負面新聞流出等。</p>
<p>帶領團隊與公開窗格的關係又是如何？職涯的進展，就是擴大公開窗格的過程。在剛出社會時，因為經驗不足、認識的人少，所以公開窗格的內容也少。
但隨著工作上經驗增加，認識了同事、業務，甚至帶了一個團隊，公開窗格不斷地擴大，別人對我們的態度也會漸漸產生轉變。
換言之，公開窗格就是自己的成長過程，當一個管理者有足夠大的公開窗格，團隊對於管理者就會產生尊重以及信任。</p>
<br>
<br>
<h4 id="傾聽">傾聽</h4><hr>
<p>傾聽的要點是聽取對方的訊息，而多數管理者會希望別人認真聽完自己的意見後去執行，卻不善於傾聽員工的意見。
傾聽絕非只是被動等人把話說完，而是一個接受對方資的過成。
善於傾聽的人能夠盡可能接受對方表達出來以及未表達出來的資訊，進而提升雙方溝通的效率，建立彼此的信任。</p>
<p>書中提出了傾聽的一個基本流程：深呼吸、提問、複述。</p>
<h6 id="深呼吸">深呼吸</h6><p>深呼吸的目的在於穩定自身的情緒，將注意力集中在對方說話這件事上，藉由深呼吸來讓自己的心沈靜下來，專注於陳述的事實而非情緒。</p>
<h6 id="提問">提問</h6><p>傾聽並非保持同一種姿態到最後，需要適時提出一些問題，對方才會更願意交流和溝通。
提問的目的，不只是證明自己有在聽，同時也讓對方知道我們對於他的尊重以及信任。</p>
<h6 id="複述">複述</h6><p>在整個傾聽的最後，需要對結果做一個確認，這過程叫做複述。
複述的目的是為了讓雙方對於這個結果有同樣的理解，以免事後再發生時造成認知上的落差。</p>
<br>
<br>
<h4 id="回饋">回饋</h4><hr>
<p>『即時回饋』是日常工作的重要內容之一，但別用『績效考核』來代替回饋。
試想平時相處起來和樂融融，管理者都沒對說職員那邊做不好，但在年底績效考核時卻突然翻臉指證不合格，只會讓員工產生錯愕以及不諒解。
定期與員工會談，或是在任務告一段落時給員工回饋，都會比在績效考核時更有效率。</p>
<h6 id="透過反饋給予指引">透過反饋，給予指引</h6><p>『反饋』是非常迫切的需求，在工作上，員工接到新任務時通常會充滿熱情，
但過程中若沒得到管理者的即時回饋，員工會產生焦慮，他並不知道現在的狀態是否符合預期，
所以管理者適時給予反饋，讓員工更能掌握任務方向，同時也可以建立信任感。</p>
<h6 id="推理階梯">推理階梯</h6><pre><code>周星馳在小時候家裡過得非常辛苦，吃飯時總把自己最愛吃的魚丟到地板上，每次媽媽看到都會
罵浪費食物，並撿起來洗一洗自己吃。

之後周星馳上節目回憶起，才道出其中的原因：『媽媽總是把好吃的留給我們，自己吃得很差，
但我知道如過直說，他一定不會答應，就把魚到底上。雖然這樣我會被罵，但媽媽就會吃到魚了。』
</code></pre>
<p>在日常或工作上，個人的判斷大部分來自自身的主觀意識，而非事實。
作為管理者，不要輕易地對員工做推論，因為錯誤的推論沒辦法即時澄清，也會引起員工的反感。</p>
<p>『推論階梯』則可以幫助我們解決自身『自我推斷』的問題</p>
<ul>
<li>
<p>收集資訊：
透過觀察，搜集來自各界的資訊，這些事產生推論的基礎。</p>
</li>
<li>
<p>選擇性接受資訊：
『選擇性接受』是大腦處理事情的固有方式，如同『順眼的人越看越順眼，討厭的燃越看越討厭』。</p>
</li>
<li>
<p>賦予意義，提出結論，採取行動：
在選擇性接收後，我們會想要賦予這些資訊意義，進而做出假設以及評論。</p>
</li>
</ul>
<p>以上就是『推論階梯』的過程，在我們下任何決定之前，有沒有可能這只是個推論，而非真正的原因。
如果只憑著推論階梯的方式去思考，而沒有查證真正的原因，會造成什麼後果？？？？？</p>
<br>
<br>
<h4 id="讀後心得">讀後心得</h4><hr>
<p><strong>『領導力是影響其他人完成你無法完成的事情』</strong></p>
<p>這是我對於領導力的定義，也是當初當上領導者後對自己的期許。
成為主管的這三個月來，算是職涯上經驗直衝最快的一個階段，部門內外溝通、策略規劃、任務執行、組織團隊等，都讓我在管理者這個位子上成長了不少。
過程中不免落入了書中的一些盲點，也不習慣自己的身份轉換，思考著是否自己來就不會發生類似的問題？
但看過這本書後思想上也做了一些轉換，培養、引導、帶領員工，才是管理者該做的事情，如何將他們放在正確的位子上並引導出他們的潛能，讓團隊達成目標，
也是身為管理者的重要課題。</p>
<p>
  <img src="https://i.imgur.com/goEhYCH.png" alt="可複製的領導力：樊登的九堂商業課" loading="lazy" decoding="async">

</p>
]]></content:encoded>
    </item>
    <item>
      <title>大人的11堂寫作課 - 複利成長自身的價值</title>
      <link>https://ianlifelab.com/read/11-writing-lesson/</link>
      <pubDate>Sat, 24 Jul 2021 00:00:00 +0000</pubDate>
      <dc:creator>Ian Tsai</dc:creator>
      <guid>https://ianlifelab.com/read/11-writing-lesson/</guid>
      <category>學習成長</category>
      <description>寫一篇好文章，可以重複銷售自己的時間與價值，讓人生複利成長。</description>
      <content:encoded><![CDATA[<h4 id="為什麼要寫作">為什麼要寫作？</h4><hr>
<pre><code>寫作可以重複銷售自己的時間
</code></pre>
<p>一個人最簡單的商業模式，就是販售時間，比方說：上班就是把自己的時間賣給老闆賺取薪水。
而在這模式中，又可分為三種類型，同一份時間出售一次、重複出售同一份時間、購買他人的時間再出售。
絕大多數的人都是第一種，少部分是第三種。而我們則可以靠自身優化從第一種進化成第二種。</p>
<p>舉個簡單的例子，今天要分享故事，與多人分享的效率一定比只跟一個人講高。
但如果另一群人要聽，又要再講一次，等於要再花一次的時間。
是把演講的內容寫成一篇完整的文章，今天會有人看，明天也會有人看，甚至一年後也會有人看。
但並不需要再花時間做一次演講，這就是將時間重複銷售。</p>
<br>
<h5 id="寫的爛才要開始寫">寫的爛才要開始寫</h5><p>『我覺得我寫的很爛，等進步了我在開始寫』，這是多數人不敢開始寫作的理由。但應該是因為寫的差，所以要從現在開始練習寫。
想想我們在做任何改變或是學習之前，應該都有『我這方面就是比較差，所以要開始練習』的認知，寫作也一樣，
應該是『我覺得我寫不好，所以現在要開始練習寫作』。
所以如何踏出寫作的第一步。就是先認清『自己暫時寫的差』的這個事實。</p>
<p>
  <img src="https://i.imgur.com/G1MkCbq.png" alt="大人的11堂寫作課 - 複利成長自身的價值" loading="lazy" decoding="async">

</p>
<h5 id="先寫好一段話">先寫好一段話</h5><p>寫作的第一步，並不是寫長篇文章，而是先寫好一段話。比方說從『無限賽局』中學到了什麼事有限思維以及無限思維，
一開始就要寫一篇關於無限思維的文章困難度非常高，但可以先從一段文字開始，試著用幾句話向別人解釋什麼是無限思維。
『原子習慣』一書中提到『最小努力原則』，意思是讓習慣簡單到就算沒意願也會執行，難度越低，執行起來越容易。
比方說，今天看完一部電影，要直接寫出影評太困難，但可以先寫 50~100 字的觀後心得。
持續練習下來會發現，300~400 的文章已經可以輕鬆地寫出來，直到有一天就可以寫出一篇完整的觀後影評。</p>
<br>
<h4 id="寫作的核心輸入思考輸出">寫作的核心：輸入、思考、輸出</h4><hr>
<p>寫作不外乎就是，想到東西、整理思緒、寫下來。看似簡單的幾個動作，其中卻有不簡單的道理。
例如：</p>
<ol>
<li>想寫一篇政治的文章，但一個沒看過新聞的人，怎麼寫得出來呢？『輸入』的重要性。</li>
<li>平時常常在看新聞，但只是邊看邊跟著罵政府，那能寫出什麼東西呢？『思考』的重要性。</li>
<li>平時都有看新聞，也有經過獨立思考了，終於拿起筆，但卻不知道要寫什麼，該怎麼辦？『輸出』能力。</li>
</ol>
<p>接下來接著深入探討如何有效的『輸入』、『思考』、『輸出』。</p>
<h6 id="輸入">輸入</h6><p>要長期且穩定有高品質的輸出，就需要不斷的接收新資訊、新觀點，所以輸入的方法就很重要，可以用以下三種方法來提升我們輸入的能力。</p>
<ol>
<li>強度：『沒數量就沒品質』，兩人能力相當的情況下，一年讀五百萬字和一年五十萬字的人，寫作能力就會有極大的差距。</li>
<li>標準：『8 星 &gt; 6 星』，寧可多花一些時間去查詢評價，也不要直接去看一部沒什麼重點的爛片（不一定是影集）。</li>
<li>效果：『吸收 &gt; 完成』，完成不是重點，重點是有沒有吸收。比方說同樣是讀書，有的人目標是『讀完』，有的人目標是『將書中的知識運用在工作上』。</li>
</ol>
<br>
<h6 id="思考">思考</h6><p>必須要將輸入的資訊整理清楚，才有辦法有效的輸出成文字，</p>
<ol>
<li>追問：不管遇到什麼問題，都要有追根究底的精神。</li>
<li>建立連結：試著將學到的知識互相建立關係。例如：從寫好一句話開始 -&gt; 原子習慣中的『最小努力原則』。</li>
<li>應用：將所學的東西實際應用出來。</li>
</ol>
<br>
<h6 id="輸出">輸出</h6><p>有不斷的輸入、不斷的思考，最後就是如何把素材輸出成一篇文章，作者提供了以下四種方法來練習寫作：</p>
<ol>
<li>就是寫：就是不會，才要『刻意練習』。如同開頭講的，可以從一段話開始慢慢練習。</li>
<li>學寫故事、觀點：故事及觀點可以讓我們思考文章如何呈現給讀者，讀者才會買單。</li>
<li>建立寫作流程：寫作也是需要流程的，選題、找素材、擬稿、成搞&hellip;等，因人而異。</li>
<li>建立回饋系統：不管做任何事，回饋機制很重要，有回饋才有辦法改進，才能不斷的進步。</li>
</ol>
<br>
<h4 id="五個切入點寫出好文章">五個切入點寫出好文章</h4><hr>
<p>
  <img src="https://i.imgur.com/we04AYT.png" alt="大人的11堂寫作課 - 複利成長自身的價值" loading="lazy" decoding="async">

</p>
<h5 id="主題對這世界要有點意見">主題：對這世界要有點意見</h5><p>一篇好的文章，主題很重要。作者認為我們應該『對這世界要有點意見』，多發表自己的觀點，用自己的思路去思考每件事。再來主題應該要可以覆蓋多數人群，打到大部分人的痛點，可以參考人生金字塔的五個階層。</p>
<p>
  <img src="https://i.imgur.com/DxRBO73.png" alt="大人的11堂寫作課 - 複利成長自身的價值" loading="lazy" decoding="async">

</p>
<br>
<h5 id="題目抓住眼球">題目：抓住眼球</h5><p>好的題目可以讓讀者一眼看下去，就有『這就是我要找的』感覺。。這裡也可以參考剛剛提到的人生金字塔來擬定題目。
作者認為，好的標題包含三個因素：</p>
<ol>
<li>你的寫作主題：讓讀者直接了解這篇文章要講的是什麼。</li>
<li>給讀者確定性：讓讀者覺得『我就是要找這篇文章』的感覺</li>
<li>是眼球聚集器：在數個標題內，可以成功吸引到讀者目光的題目。</li>
</ol>
<br>
<h5 id="素材幫助文章畫龍點睛">素材：幫助文章畫龍點睛</h5><p>自己或是身旁友人的經驗，是最好的素材，因為已經經歷過，並不想網路素材一樣虛幻，說服力也較高。</p>
<p>好的素材不是搜出來，而是搜集出來</p>
<br>
<h5 id="結構好的結構提升完讀率">結構：好的結構提升完讀率</h5><h6 id="吸引人的開頭激發好奇心">吸引人的開頭，激發好奇心</h6><p>讀者一但有了好奇心，就會繼續的往下閱讀文章，所以一個吸引人的開頭，是可以有效提升文章的完讀率。</p>
<h6 id="設計小標題幫助理解文章">設計小標題，幫助理解文章</h6><p>如果長篇文章沒有段落或是小標題，讀者讀起來會覺得很辛苦，適當的設計小標題，不但可以讓讀者先清楚的了解文章的架構，也可以降低閱讀壓力。</p>
<h6 id="好的結尾讓人主動分享">好的結尾，讓人主動分享</h6><p>如果一個結局，可以讓讀者有所共鳴，就可以刺激分享的衝動，讓更多的人看到這篇文章。</p>
<br>
<h5 id="成搞運用加減法讓文章更完美">成搞：運用加減法，讓文章更完美</h5><h6 id="先完成再完美">先完成，再完美</h6><p>完美固然很重要，但需要有稿，才能將其完美。
所以想到就寫，開始寫就會開始找素材，不需要想清楚，因為只是在擬稿而已。
再來就是推進思維，哪邊容易寫哪邊，因為寫作是個動態過程，沒有一定得從頭寫到尾。</p>
<h6 id="加法寫作提高資訊總量">加法寫作，提高資訊總量</h6><p>讀者的時間是很寶貴的，如果文章內的訊息量太低，就等於文章沒有價值，那讀這就不會願意買單。
比方說，用到的延伸詞有沒有解釋道、論點的面相夠不夠多、論據的數量夠不夠，這都是可以提供文章價值的部分。</p>
<h6 id="減法寫作提高價值密度">減法寫作，提高價值密度</h6><p>長篇的文章，應該避免以下幾個地雷，如：無聚焦主題、重複表達的部分、悚言贅字太多，這些都會影響文章的品質。
我認為最重要的一點是『無聚焦主題』的部分，有時自己花一段時間寫了很長的一段字，但發現無法契合主題，這時又很捨不得刪掉。
作者認為，只要不契合主題，就不要留下，因為這樣對文章不會有加分的效果。</p>
<br>
<h4 id="聊天也可以練習寫作">聊天也可以練習寫作</h4><hr>
<p>聊天如何練習寫作？其實它們也有相似之處，比方說，聊天需要話題，而寫作需要主題；聊天需要吸引對發的興趣，而寫作需要引起讀者的興趣；聊天是在敘述某件事，而寫作是在傳遞某些知識資訊；聊天需要有好的氣氛，寫作則需要有好的閱讀體驗。所以有內容的談話也可以增進寫作能力。</p>
<br>
<h4 id="讀後心得">讀後心得</h4><hr>
<p>從去年開始架設部落格，陸陸續續寫了一些文章，從一開始一篇幾百個字到讀書心得慢慢的可以超過一千個字，雖然進步不是說很明顯，但也是有小小的成就感。
中間也有去觀看一些關於寫作技巧的文章、部落格，不外乎就是書中提到的這幾點，但這本書又講得更加透徹，讓我的寫作從混亂變得比較有些計畫。
整體而言這本書對於寫作新手來說會是不錯的工具書，對於熟悉寫做的人幫著或許就沒那麼的顯著了。</p>
<p>
  <img src="https://i.imgur.com/UldRV8P.png" alt="大人的11堂寫作課 - 複利成長自身的價值" loading="lazy" decoding="async">

</p>
]]></content:encoded>
    </item>
    <item>
      <title>讀懂一本書 - 從讀書到說書</title>
      <link>https://ianlifelab.com/read/understand-a-book/</link>
      <pubDate>Sun, 27 Jun 2021 00:00:00 +0000</pubDate>
      <dc:creator>Ian Tsai</dc:creator>
      <guid>https://ianlifelab.com/read/understand-a-book/</guid>
      <category>學習成長</category>
      <description>說書，是將書本的知識『再傳遞』，如果有辦法有效的說書，那也代表自己可以有效的掌握了這本書。</description>
      <content:encoded><![CDATA[<br>
<br>
<p>在開始讀書之後，讓我開啟了廣大的視野，但如何將書本的東西有效的吸收內化，
甚至可以將書本的內容有效的分享給別人，也是我現階段重要的課題，
如果能有效的『再傳遞』書本內的知識，那也就代表我真的掌握到這本書所想傳遞的精神，真正的『讀懂一本書』。</p>
<br>
<h4 id="閱讀是反脆弱的武器">閱讀是『反脆弱』的武器</h4><hr>
<p>什麼是脆弱？就像玻璃杯從桌上掉落，就被摔碎一樣。
相反就是堅固？比方說換成鐵球，就不會與玻璃杯有一樣的下場。
若是再換換成乒乓球，那它掉到地上就會馬上彈起來。</p>
<p>在『反脆弱』一書中，作者認為脆弱的相反不是堅固而是<strong>反脆弱</strong>，如同乒乓球，不管怎樣用不良、負面的事件去影響，它不僅不會壞，反而會更強大、更優異。
在現實中，脆弱代表著怕變動、怕跳戰、面對突如其來的事件會遭遇損害；而堅固則是面對突如其來的事件，對它來說什麼都不會影響及改變；反脆弱則代表者勇於接受變動、挑戰，越多刺激，那自身能力就會越進步。</p>
<p>為什麼閱讀是反脆弱的武器呢？因為閱讀有兩個特點，
第一點是『主動性』：讀書是主動的學習，我們所讀一定是我們所需要的，這可以彌補自身知識的不足。
第二點是『針對性』：讀書所帶來的收穫因人而異，莎士比亞說『一千個讀者，就會有一千個哈姆雷特』。每個人會因為尋找符合自身個性化的領域吸收加強。</p>
<p>當掌握這兩點，遇到變動或是挑戰時，不會再像玻璃杯一樣一摔就破，而是有辦法去適應這些事件，讓自己越來越強大。</p>
<br>
<h4 id="為知識鬆綁會讀書也要會說書">為知識鬆綁，會讀書也要會說書</h4><hr>
<p>為什麼會認為閱讀是痛苦的，因為我們認為閱讀的成效不如我們的預期。就像去下定決心要減肥，但發現鏡子裡的自己好像沒有瘦，得不到成就感，最後只好選擇放棄。</p>
<p>說書，是將書本的知識『再傳遞』，如果有辦法有效的講書，那也代表自己可以有效的掌握了這本書。要更有效的說書，在閱讀時我們必須不斷的問自己三個問題：</p>
<ol>
<li>我能不能準確把握這本書真正的含義，理解這本書？</li>
<li>我能不能用自己的語言，清楚表達出這本書的真正含義？我的資訊效度和信度如何？</li>
<li>我表達出來的內容能不能讓沒讀過這本書的人無障礙理解？我的語言是否通俗易懂，能夠被二次傳播？</li>
</ol>
<p>每次閱讀帶著這三個問題，先說服自己，才有辦法傳遞給他人。
如同我們工作上網查資料，必須先<strong>篩選</strong>適合的資料，並<strong>過濾</strong>出有效的資訊，接著<strong>解讀</strong>、<strong>思考</strong>是否有符合我們需求的資訊、最後再將其<strong>驗證</strong>。</p>
<p>
  <img src="https://i.imgur.com/ipef64y.png" alt="讀懂一本書 - 從讀書到說書" loading="lazy" decoding="async">

</p>
<br>
<h4 id="一般人的劃線重點-vs-說書人的劃線重點">一般人的劃線重點 v.s. 說書人的劃線重點</h4><hr>
<p>究竟書中的名言佳句是不是重點，我們會在閱讀時畫下『我們認為』重要的句子，可能是某個偉人的名言佳句、又或者是讓我們有深刻體悟的一段話。
樊登認為這是非常關鍵的一個問題，所以總結了以下八個評判標準：</p>
<h6 id="1-當你感覺概念被清楚界定時">1. 當你感覺概念被清楚界定時</h6><p>如同一開始提到反脆弱所舉的例子，玻璃杯、鐵球、乒乓球間所代表的差異性。</p>
<h6 id="2-當你感覺問題很嚴重時">2. 當你感覺問題很嚴重時</h6><p>如果自己都沒覺得嚴重，那怎麼說服他人。像之前讀到的『為了遇見40歲更好的自己』中有提到，我們總是想要做很多事，發現每件事都有做，但每件事都沒達成目標。
因為人類大腦無法同時判斷多組情報，因此三種左右是最適當的數量。過去我也曾經有這個煩惱，這本書所提到的這個面相讓我有深刻的體驗，也感受到這個問題的嚴重。</p>
<h6 id="3-當你感覺某種解釋令你很意外時">3. 當你感覺某種解釋令你很意外時</h6><p>抽菸者要戒菸普羅大眾認為要靠毅力，直到樊登朋友因為一本『這書能讓你戒菸』，而成功戒菸，讓他對於戒菸的印象有個改變。
因為書中提到，如果淺意識內認為抽煙是好的，就算再有毅力都不會成功。
戒菸應該靠對吸菸的『認知』，要知道吸菸對於身體或是周遭的人所產生傷害，才有辦法從根本上戒除。</p>
<h6 id="4-當你看出遞進關係時">4. 當你看出遞進關係時</h6><p>樊登提到他在講『世界觀』這本書時，無法略過第谷，因為第谷提供全套的觀測結果，所以克普勒提出第一定律及第二定律，接著牛頓則算出橢圓形上的週期運動，這就是一步步的遞進關係。</p>
<h6 id="5-當你看出轉折關係時要留意轉折後的內容">5. 當你看出轉折關係時，要留意轉折後的內容</h6><p>閱讀到書中的轉捩點，或是讀到觀感上的反轉，這也是很重要的部分。</p>
<h6 id="6-不同面向彰顯書籍內的價值">6. 不同面向彰顯書籍內的價值</h6><p>有的書結構是遞進；有的則是先提出主題，再用不同面向的去驗證這個主題。我認為我看過的書中『原子習慣』是遞進，而無限賽局則是『提出主題』。</p>
<p>『原子習慣』一書中，先定義習慣的對我們的影響多大，在從頭開始述說我們要怎麼去建立一個原子習慣。
『無限賽局』則是先定義無限以及有限定義出來，再經由幾個面向去解釋驗證無限思維的重要。</p>
<h6 id="7-閱讀受到心靈衝擊">7. 閱讀受到心靈衝擊</h6><p>在『無限賽局』一書中提到，無限思維與有限思維的差異讓我有深刻的體會。</p>
<h6 id="8-書中的奇聞趣事增添說書的趣味性">8. 書中的奇聞趣事，增添說書的趣味性</h6><p>記下一些書中提到有趣的故事，可以在說書時分享，讓過程更有趣。</p>
<br>
<h4 id="讀後心得">讀後心得</h4><hr>
<p>在開始閱讀之後，時不時會與幾個朋友聚再一起分享閱讀的書籍，雖然每次都有寫下書本摘要及心得，但總感覺無法有效的將書中的知識做傳遞。
最初選這本書的原因只是希望自己可以真正的將書本內的知識吸收，並有效的轉換成文字或是言語分享給其他人，但讀完之後給我的啟發已經遠超過當初的期待。
從為什麼要閱讀、如何讀懂一本書、如何抓取書中的重點知識、說書其實是再創作、運用心智圖說書&hellip;等等，對我來說都非常的有幫助。</p>
<p>我滿喜歡書中提到的一點『理解的池子有多大，就能讀懂多難的書』。如果連三角函數都不會，怎麼去學微積分，唯有不段的充實自己，才有更多的可能性。</p>
<p>
  <img src="https://i.imgur.com/Tn4AGYL.png" alt="讀懂一本書 - 從讀書到說書" loading="lazy" decoding="async">

</p>
]]></content:encoded>
    </item>
    <item>
      <title>無視礦工，以太坊的倫敦硬分叉</title>
      <link>https://ianlifelab.com/ethereum-london-hard-fork/</link>
      <pubDate>Wed, 16 Jun 2021 00:00:00 +0000</pubDate>
      <dc:creator>Ian Tsai</dc:creator>
      <guid>https://ianlifelab.com/ethereum-london-hard-fork/</guid>
      <category>科技探索</category>
      <description>Ethereum London Hard Fork （倫敦硬分叉）所做的更新，包含了 EIP-1559、EIP-3198、EIP-3238 三個提案，其中 EIP-1559 也是這次比較備受關注的部分， EIP-1559 可能會改變以太坊的交易費用模型。</description>
      <content:encoded><![CDATA[<br>
<br>
<br>
<h4 id="前言">前言</h4><hr>
<p>現今以太坊的手續費過於昂貴，交易者需要付出高額的手續費才可以完成交易。
這次的 Ethereum London Hard Fork （倫敦硬分叉）所做的更新，包含了 EIP-1559、EIP-3198、EIP-3238 三個提案，
其中 EIP-1559 也是這次比較備受關注的部分。</p>
<br>
<h4 id="eip-是什麼">EIP 是什麼？</h4><hr>
<p>EIP(Ethereum Improvement Proposals)，是為以太坊指定潛在新功能或流程的標準，包含提議更改的技術規範。通過 EIP 流程討論和開發以太坊的網絡升級和應用標準。</p>
<br>
<h4 id="提案一-eip-1559區塊鏈交易費用模型">提案一： EIP-1559（區塊鏈交易費用模型）</h4><hr>
<p>EIP-1559 是對用戶在以太坊網絡上支付 gas 費用方式的更改。（由於現在以太坊交易手續費過高，降低對用戶的吸引力）</p>
<ul>
<li>以往：礦工可以賺的收入「挖礦獎勵」跟「 100% Gas fee 」</li>
<li>EIP 1559 ： gas fee 分為基礎費（base fee）和小費兩種，給礦工的是「小費」； base fee 的 50% 會直接銷毀。</li>
</ul>
<p>EIP-1559 也導入目標塊容量機制，每個區塊的基本費用根據網絡需求而變化。如果一個區塊的交易量超過 50%，則基本費用將增加，低於 50% 的話基本費則會下降。
而基本費可能會隨著交易加入 block 時發生改變，可以先將 price 設定成願意支付的上限，最後沒用到的部分會退還。</p>
<p>這個提案重點在於基本費會被銷毀，並不會所有的 gas fee 都讓礦工拿走。而也藉由『銷毀』機制，讓以太幣的供應量下降，避免通貨膨脹。</p>
<br>
<h5 id="交易格式的差異">交易格式的差異</h5><p>以下部分段程式碼是從
<a href="https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1559.md" target="_blank">EIP-1559</a>
擷取。</p>
<p>新交易格式內的 <strong>base_fee_per_gas</strong> ＆ <strong>priority_fee_per_gas</strong> 取代了以往的 <strong>Legacy Ethereum transactions</strong> 的 <strong>gas_price</strong>。
但 EIP-1559 <strong>可以相容</strong> Legacy Ethereum transactions 的格式。
雖然現有的交易格式仍然有效且也被包含在 block 中，不過 Legacy transactions <strong>沒辦法</strong>享有新的 pricing system 所帶來的優點。</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span>@dataclass
</span></span><span style="display:flex;"><span><span style="color:#ff79c6">class</span> <span style="color:#50fa7b">TransactionLegacy</span>:
</span></span><span style="display:flex;"><span>	signer_nonce: <span style="color:#8be9fd;font-style:italic">int</span> <span style="color:#ff79c6">=</span> <span style="color:#bd93f9">0</span>
</span></span><span style="display:flex;"><span>	gas_price: <span style="color:#8be9fd;font-style:italic">int</span> <span style="color:#ff79c6">=</span> <span style="color:#bd93f9">0</span>
</span></span><span style="display:flex;"><span>	gas_limit: <span style="color:#8be9fd;font-style:italic">int</span> <span style="color:#ff79c6">=</span> <span style="color:#bd93f9">0</span>
</span></span><span style="display:flex;"><span>	destination: <span style="color:#8be9fd;font-style:italic">int</span> <span style="color:#ff79c6">=</span> <span style="color:#bd93f9">0</span>
</span></span><span style="display:flex;"><span>	amount: <span style="color:#8be9fd;font-style:italic">int</span> <span style="color:#ff79c6">=</span> <span style="color:#bd93f9">0</span>
</span></span><span style="display:flex;"><span>	payload: <span style="color:#8be9fd;font-style:italic">bytes</span> <span style="color:#ff79c6">=</span> <span style="color:#8be9fd;font-style:italic">bytes</span>()
</span></span><span style="display:flex;"><span>	v: <span style="color:#8be9fd;font-style:italic">int</span> <span style="color:#ff79c6">=</span> <span style="color:#bd93f9">0</span>
</span></span><span style="display:flex;"><span>	r: <span style="color:#8be9fd;font-style:italic">int</span> <span style="color:#ff79c6">=</span> <span style="color:#bd93f9">0</span>
</span></span><span style="display:flex;"><span>	s: <span style="color:#8be9fd;font-style:italic">int</span> <span style="color:#ff79c6">=</span> <span style="color:#bd93f9">0</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>@dataclass
</span></span><span style="display:flex;"><span><span style="color:#ff79c6">class</span> <span style="color:#50fa7b">Transaction1559Payload</span>:
</span></span><span style="display:flex;"><span>	chain_id: <span style="color:#8be9fd;font-style:italic">int</span> <span style="color:#ff79c6">=</span> <span style="color:#bd93f9">0</span>
</span></span><span style="display:flex;"><span>	signer_nonce: <span style="color:#8be9fd;font-style:italic">int</span> <span style="color:#ff79c6">=</span> <span style="color:#bd93f9">0</span>
</span></span><span style="display:flex;"><span>	max_priority_fee_per_gas: <span style="color:#8be9fd;font-style:italic">int</span> <span style="color:#ff79c6">=</span> <span style="color:#bd93f9">0</span>
</span></span><span style="display:flex;"><span>	max_fee_per_gas: <span style="color:#8be9fd;font-style:italic">int</span> <span style="color:#ff79c6">=</span> <span style="color:#bd93f9">0</span>
</span></span><span style="display:flex;"><span>	gas_limit: <span style="color:#8be9fd;font-style:italic">int</span> <span style="color:#ff79c6">=</span> <span style="color:#bd93f9">0</span>
</span></span><span style="display:flex;"><span>	destination: <span style="color:#8be9fd;font-style:italic">int</span> <span style="color:#ff79c6">=</span> <span style="color:#bd93f9">0</span>
</span></span><span style="display:flex;"><span>	amount: <span style="color:#8be9fd;font-style:italic">int</span> <span style="color:#ff79c6">=</span> <span style="color:#bd93f9">0</span>
</span></span><span style="display:flex;"><span>	payload: <span style="color:#8be9fd;font-style:italic">bytes</span> <span style="color:#ff79c6">=</span> <span style="color:#8be9fd;font-style:italic">bytes</span>()
</span></span><span style="display:flex;"><span>	access_list: List[Tuple[<span style="color:#8be9fd;font-style:italic">int</span>, List[<span style="color:#8be9fd;font-style:italic">int</span>]]] <span style="color:#ff79c6">=</span> field(default_factory<span style="color:#ff79c6">=</span><span style="color:#8be9fd;font-style:italic">list</span>)
</span></span><span style="display:flex;"><span>	signature_y_parity: <span style="color:#8be9fd;font-style:italic">bool</span> <span style="color:#ff79c6">=</span> <span style="color:#ff79c6">False</span>
</span></span><span style="display:flex;"><span>	signature_r: <span style="color:#8be9fd;font-style:italic">int</span> <span style="color:#ff79c6">=</span> <span style="color:#bd93f9">0</span>
</span></span><span style="display:flex;"><span>	signature_s: <span style="color:#8be9fd;font-style:italic">int</span> <span style="color:#ff79c6">=</span> <span style="color:#bd93f9">0</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#ff79c6">---</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#ff79c6">def</span> <span style="color:#50fa7b">normalize_transaction</span>(self, transaction: Transaction, signer_address: <span style="color:#8be9fd;font-style:italic">int</span>) <span style="color:#ff79c6">-&gt;</span> NormalizedTransaction:
</span></span><span style="display:flex;"><span>		<span style="color:#6272a4"># legacy transactions</span>
</span></span><span style="display:flex;"><span>		<span style="color:#ff79c6">if</span> <span style="color:#8be9fd;font-style:italic">isinstance</span>(transaction, TransactionLegacy):
</span></span><span style="display:flex;"><span>			<span style="color:#ff79c6">return</span> NormalizedTransaction(
</span></span><span style="display:flex;"><span>				signer_address <span style="color:#ff79c6">=</span> signer_address,
</span></span><span style="display:flex;"><span>				signer_nonce <span style="color:#ff79c6">=</span> transaction<span style="color:#ff79c6">.</span>signer_nonce,
</span></span><span style="display:flex;"><span>				gas_limit <span style="color:#ff79c6">=</span> transaction<span style="color:#ff79c6">.</span>gas_limit,
</span></span><span style="display:flex;"><span>				max_priority_fee_per_gas <span style="color:#ff79c6">=</span> transaction<span style="color:#ff79c6">.</span>gas_price,
</span></span><span style="display:flex;"><span>				max_fee_per_gas <span style="color:#ff79c6">=</span> transaction<span style="color:#ff79c6">.</span>gas_price,
</span></span><span style="display:flex;"><span>				destination <span style="color:#ff79c6">=</span> transaction<span style="color:#ff79c6">.</span>destination,
</span></span><span style="display:flex;"><span>				amount <span style="color:#ff79c6">=</span> transaction<span style="color:#ff79c6">.</span>amount,
</span></span><span style="display:flex;"><span>				payload <span style="color:#ff79c6">=</span> transaction<span style="color:#ff79c6">.</span>payload,
</span></span><span style="display:flex;"><span>				access_list <span style="color:#ff79c6">=</span> [],
</span></span><span style="display:flex;"><span>			)
</span></span><span style="display:flex;"><span>		<span style="color:#6272a4"># 1559 transactions</span>
</span></span><span style="display:flex;"><span>		<span style="color:#ff79c6">elif</span> <span style="color:#8be9fd;font-style:italic">isinstance</span>(transaction, Transaction1559Envelope):
</span></span><span style="display:flex;"><span>			<span style="color:#ff79c6">return</span> NormalizedTransaction(
</span></span><span style="display:flex;"><span>				signer_address <span style="color:#ff79c6">=</span> signer_address,
</span></span><span style="display:flex;"><span>				signer_nonce <span style="color:#ff79c6">=</span> transaction<span style="color:#ff79c6">.</span>payload<span style="color:#ff79c6">.</span>signer_nonce,
</span></span><span style="display:flex;"><span>				gas_limit <span style="color:#ff79c6">=</span> transaction<span style="color:#ff79c6">.</span>payload<span style="color:#ff79c6">.</span>gas_limit,
</span></span><span style="display:flex;"><span>				max_priority_fee_per_gas <span style="color:#ff79c6">=</span> transaction<span style="color:#ff79c6">.</span>payload<span style="color:#ff79c6">.</span>max_priority_fee_per_gas,
</span></span><span style="display:flex;"><span>				max_fee_per_gas <span style="color:#ff79c6">=</span> transaction<span style="color:#ff79c6">.</span>payload<span style="color:#ff79c6">.</span>max_fee_per_gas,
</span></span><span style="display:flex;"><span>				destination <span style="color:#ff79c6">=</span> transaction<span style="color:#ff79c6">.</span>payload<span style="color:#ff79c6">.</span>destination,
</span></span><span style="display:flex;"><span>				amount <span style="color:#ff79c6">=</span> transaction<span style="color:#ff79c6">.</span>payload<span style="color:#ff79c6">.</span>amount,
</span></span><span style="display:flex;"><span>				payload <span style="color:#ff79c6">=</span> transaction<span style="color:#ff79c6">.</span>payload<span style="color:#ff79c6">.</span>payload,
</span></span><span style="display:flex;"><span>				access_list <span style="color:#ff79c6">=</span> transaction<span style="color:#ff79c6">.</span>payload<span style="color:#ff79c6">.</span>access_list,
</span></span><span style="display:flex;"><span>			)
</span></span><span style="display:flex;"><span>		<span style="color:#ff79c6">else</span>:
</span></span><span style="display:flex;"><span>			<span style="color:#ff79c6">raise</span> Exception(<span style="color:#f1fa8c">&#39;invalid transaction: unexpected number of items&#39;</span>)
</span></span></code></pre></div><br>
<h5 id="計算-gas-fee">計算 gas fee</h5><p>gas fee 會分為基礎費和小費兩種，base fee 會直接銷毀，「小費」會給礦工，沒有用到的部分則會返回給交易者。</p>
<p>這邊第一步會判斷地址的 balance 是否有辦法負擔 <strong>base fee</strong>，如果有的話就會繼續往下計算 <strong>fee_per_gas</strong> 以及 <strong>priority_fee_per_gas</strong>，這邊就不逐一解釋程式碼了。</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#ff79c6">for</span> unnormalized_transaction <span style="color:#ff79c6">in</span> transactions:
</span></span><span style="display:flex;"><span>			<span style="color:#6272a4"># Note: this validates transaction signature and chain ID which must happen before we normalize below since normalized transactions don&#39;t include signature or chain ID</span>
</span></span><span style="display:flex;"><span>			signer_address <span style="color:#ff79c6">=</span> self<span style="color:#ff79c6">.</span>validate_and_recover_signer_address(unnormalized_transaction)
</span></span><span style="display:flex;"><span>			transaction <span style="color:#ff79c6">=</span> self<span style="color:#ff79c6">.</span>normalize_transaction(unnormalized_transaction, signer_address)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>			signer <span style="color:#ff79c6">=</span> self<span style="color:#ff79c6">.</span>account(signer_address)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>			signer<span style="color:#ff79c6">.</span>balance <span style="color:#ff79c6">-=</span> transaction<span style="color:#ff79c6">.</span>amount
</span></span><span style="display:flex;"><span>			<span style="color:#ff79c6">assert</span> signer<span style="color:#ff79c6">.</span>balance <span style="color:#ff79c6">&gt;=</span> <span style="color:#bd93f9">0</span>, <span style="color:#f1fa8c">&#39;invalid transaction: signer does not have enough ETH to cover attached value&#39;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>			<span style="color:#6272a4"># ensure that the user was willing to at least pay the base fee</span>
</span></span><span style="display:flex;"><span>			<span style="color:#ff79c6">assert</span> transaction<span style="color:#ff79c6">.</span>max_fee_per_gas <span style="color:#ff79c6">&gt;=</span> block<span style="color:#ff79c6">.</span>base_fee_per_gas
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>			<span style="color:#6272a4"># The first two of these four rules are implicit due to the next two rules</span>
</span></span><span style="display:flex;"><span>			<span style="color:#6272a4"># Prevent impossibly large numbers</span>
</span></span><span style="display:flex;"><span>			<span style="color:#ff79c6">assert</span> transaction<span style="color:#ff79c6">.</span>max_fee_per_gas <span style="color:#ff79c6">&lt;</span> <span style="color:#bd93f9">2</span><span style="color:#ff79c6">**</span><span style="color:#bd93f9">256</span>
</span></span><span style="display:flex;"><span>			<span style="color:#6272a4"># Prevent impossibly large numbers</span>
</span></span><span style="display:flex;"><span>			<span style="color:#ff79c6">assert</span> transaction<span style="color:#ff79c6">.</span>max_priority_fee_per_gas <span style="color:#ff79c6">&lt;</span> <span style="color:#bd93f9">2</span><span style="color:#ff79c6">**</span><span style="color:#bd93f9">256</span>
</span></span><span style="display:flex;"><span>			<span style="color:#6272a4"># The total must be the larger of the two</span>
</span></span><span style="display:flex;"><span>			<span style="color:#ff79c6">assert</span> transaction<span style="color:#ff79c6">.</span>max_fee_per_gas <span style="color:#ff79c6">&gt;=</span> transaction<span style="color:#ff79c6">.</span>max_priority_fee_per_gas
</span></span><span style="display:flex;"><span>			<span style="color:#6272a4"># the signer must be able to afford the transaction</span>
</span></span><span style="display:flex;"><span>			<span style="color:#ff79c6">assert</span> signer<span style="color:#ff79c6">.</span>balance <span style="color:#ff79c6">&gt;=</span> transaction<span style="color:#ff79c6">.</span>gas_limit <span style="color:#ff79c6">*</span> transaction<span style="color:#ff79c6">.</span>max_fee_per_gas
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>			<span style="color:#6272a4"># priority fee is capped because the base fee is filled first</span>
</span></span><span style="display:flex;"><span>			priority_fee_per_gas <span style="color:#ff79c6">=</span> <span style="color:#8be9fd;font-style:italic">min</span>(transaction<span style="color:#ff79c6">.</span>max_priority_fee_per_gas, transaction<span style="color:#ff79c6">.</span>max_fee_per_gas <span style="color:#ff79c6">-</span> block<span style="color:#ff79c6">.</span>base_fee_per_gas)
</span></span><span style="display:flex;"><span>			<span style="color:#6272a4"># signer pays both the priority fee and the base fee</span>
</span></span><span style="display:flex;"><span>			effective_gas_price <span style="color:#ff79c6">=</span> priority_fee_per_gas <span style="color:#ff79c6">+</span> block<span style="color:#ff79c6">.</span>base_fee_per_gas
</span></span><span style="display:flex;"><span>			signer<span style="color:#ff79c6">.</span>balance <span style="color:#ff79c6">-=</span> transaction<span style="color:#ff79c6">.</span>gas_limit <span style="color:#ff79c6">*</span> effective_gas_price
</span></span><span style="display:flex;"><span>			<span style="color:#ff79c6">assert</span> signer<span style="color:#ff79c6">.</span>balance <span style="color:#ff79c6">&gt;=</span> <span style="color:#bd93f9">0</span>, <span style="color:#f1fa8c">&#39;invalid transaction: signer does not have enough ETH to cover gas&#39;</span>
</span></span><span style="display:flex;"><span>			gas_used <span style="color:#ff79c6">=</span> self<span style="color:#ff79c6">.</span>execute_transaction(transaction, effective_gas_price)
</span></span><span style="display:flex;"><span>			gas_refund <span style="color:#ff79c6">=</span> transaction<span style="color:#ff79c6">.</span>gas_limit <span style="color:#ff79c6">-</span> gas_used
</span></span><span style="display:flex;"><span>			cumulative_transaction_gas_used <span style="color:#ff79c6">+=</span> gas_used
</span></span><span style="display:flex;"><span>			<span style="color:#6272a4"># signer gets refunded for unused gas</span>
</span></span><span style="display:flex;"><span>			signer<span style="color:#ff79c6">.</span>balance <span style="color:#ff79c6">+=</span> gas_refund <span style="color:#ff79c6">*</span> effective_gas_price
</span></span><span style="display:flex;"><span>			<span style="color:#6272a4"># miner only receives the priority fee; note that the base fee is not given to anyone (it is burned)</span>
</span></span><span style="display:flex;"><span>			self<span style="color:#ff79c6">.</span>account(block<span style="color:#ff79c6">.</span>author)<span style="color:#ff79c6">.</span>balance <span style="color:#ff79c6">+=</span> gas_used <span style="color:#ff79c6">*</span> priority_fee_per_gas
</span></span></code></pre></div><br>
<h5 id="交易順序">交易順序</h5><p>多數的人不會在 <strong>priority fees</strong> 去做競爭，所以基本上以相同優先度會依照交易時間來進行排序。</p>
<br>
<h4 id="提案二-eip-3198basefee-操作碼">提案二： EIP-3198（BASEFEE 操作碼）</h4><hr>
<p>固定費用 base fee 的實際原始碼。</p>
<br>
<h4 id="提案三-eip-3238difficulty-bomb-delay">提案三： EIP-3238（Difficulty Bomb Delay）</h4><hr>
<p>難度炸彈是以太坊在 2015 年加入的一段程式碼，透過逐步增加區塊鏈挖礦難度，主要是為了減低以太坊被開發的速度。
EIP-3238 主要是延遲難度炸彈，原本炸彈難題這次將預定在 2021/7 發生，這次預計延到 2022 年第二季度左右才會發生。
過去以太坊也曾爆過三次炸彈難題，並手動調整把難度調回爆炸前的程度。</p>
<br>
<h4 id="小結">小結</h4><hr>
<p>由於本身是開發人員，不是投資人或是礦工，所以比較關心交易格式有沒有發生變化，是否可以相容，對於此次更新對於以太坊生態的影響可能沒有各界大佬清楚，還請見諒ＸＤ</p>
<br>
<br>
<h4 id="references">References</h4><hr>
<ul>
<li><a href="https://github.com/ethereum/EIPs/blob/master/EIPS/eip-3198.md" target="_blank">EIP-3198</a></li>
<li><a href="https://github.com/ethereum/EIPs/blob/master/EIPS/eip-3238.md" target="_blank">EIP-3238</a></li>
<li><a href="https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1559.md" target="_blank">EIP-1559</a></li>
<li><a href="https://ethereum.org/zh-tw/eips/" target="_blank">Introduction to Ethereum Improvement Proposals (EIPs)</a></li>
</ul>
]]></content:encoded>
    </item>
    <item>
      <title>無限賽局 - 『永續』還是『取勝』？</title>
      <link>https://ianlifelab.com/read/game-the-infinite-game/</link>
      <pubDate>Sat, 15 May 2021 00:00:00 +0000</pubDate>
      <dc:creator>Ian Tsai</dc:creator>
      <guid>https://ianlifelab.com/read/game-the-infinite-game/</guid>
      <category>學習成長</category>
      <description>跳脫勝負、平手、僵局之外，看懂自己身處的賽局，才能選對策略、創造最大價值。</description>
      <content:encoded><![CDATA[<br>
<br>
<h4 id="沒有開始中場以及結束的賽局">沒有開始、中場以及結束的賽局</h4><hr>
<p>想想從小到大，我們經歷了許多賽局，像是體育競賽，有已知的玩家，既定的規則。在達成目標，也就是誰的比分先到標準，該隊伍就會獲勝，賽局就會結束。
相較於競技比賽的『有限賽局』。『無限賽局』中並沒有時間限制、沒有終點線、沒有真正的結束，像是商場上會不斷的有新玩家加入，沒有既定的規則，大家會依照自己的方式衍生出商業模式，試著一直存活在這場賽局內。</p>
<br>
<h4 id="從微軟與蘋果間的戰爭看待商業賽局">從微軟與蘋果間的戰爭看待商業賽局</h4><hr>
<p>微軟本來的願景，是為了提高生產力，幫助地球每個人到組織，可以貢獻更多，成就更大。但到了近幾年，公司的目標逐漸轉向『打贏競爭者』，也就是打贏蘋果。
作者曾經受邀在微軟以及蘋果的教育高峰論壇上演講。在微軟的論壇中，多數的講者都會提到如何打敗蘋果；而在蘋果的論壇內，講者都花時間在討論蘋果如何幫助老師教學、幫助學生學習。</p>
<p>打敗蘋果事現在微軟的目標，所以微軟的產品都以『性能需要比蘋果強』為出發點思考；反之蘋果則是思考如何達到公司願景，創造更好的產品來滿足大眾的需求，並且可以不段的創新突破，這樣的信念也進而改變了市場的結構。</p>
<br>
<h4 id="無限思維的五個關鍵">無限思維的五個關鍵</h4><hr>
<p>如何從有限思維的框架中跳脫出去，進而有無限思維呢？作者提供了五個關鍵給我們</p>
<br>
<h5 id="崇高的信念">崇高的信念</h5><pre><code>崇高的信念是對一個尚不存在的未來懷抱具體的願景；這個未來令人嚮往到人們願意犧牲小我，來實現這個願景。
</code></pre>
<p>『隨時隨地以最低的價格來服務美國廣大的勞工』，這是美國零售業沃爾瑪的企業願景。其創辦人沃爾頓秉持著這個信念經營，在經濟大蕭條時成為了最富有的人之一。
但就算這樣，沃爾瑪也有背離信念的時候。接任執行長杜克上任後，將公司目標轉向利潤、成長以及市場地位，服務的對象以股東為首，不在是美國勞工。這也造就了後續沃爾瑪的各種負面新聞。直到明倫接任杜克之後，才重拾沃爾瑪的信念，將公司帶回無限賽局內。</p>
<p>信念不像目標，達成就結束，而是會一直持續下去。若公司的不在以信念為核心推廣業務，反而只在乎獲利、報酬，長久下來會脫離原本的軌道，也無法進步。</p>
<br>
<h5 id="彼此信任的團隊">彼此信任的團隊</h5><pre><code>領導者要負責的不是結果，領導者要負責的是要對結果負責的人們。
</code></pre>
<p>組織文化、環境關係到一個團隊的是否可以高效率的執行作業。
許多公司現在提倡組織扁平，每個員工都可以為了公司、產品提出自己的見解，讓資訊流通暢行無阻。
而領導者的責任就是維持這個組織的文化，提升成員對團隊的信任程度，讓員工發揮最佳的表現。</p>
<p>『有限思維』的領導者關注『結果』、『績效』，想著如何壓榨員工，讓他們達到自己預期的成果；
『無限思維』的領導者則是關注團隊的『環境』、解決問題的『過程』，遇到問題時大家是否可以適時的提出自己的意見，並一起解決眼前的問題。</p>
<br>
<h5 id="可敬的對手">可敬的對手</h5><pre><code>傳統思維讓我們採取要獲勝的態度，敬畏對手的思維則啟發我們採取改進的態度
</code></pre>
<p>『成為第一』、『打敗對手』內心總是想著如何讓對手退出賽局，傳統的思維讓我們侷限在只能『獲勝』的層次。
或許仔細思考，可以發現因為對手所擅長的事自己並不擅長，但我們卻不願意面對，轉而將精神放在如何擊敗他的上面？
擁有『無限思維』的人為認為，可敬的對手指出了自身的不足，我們可以藉由向對方學習，不斷的提升自己，讓自己不斷的朝『崇高的信念』邁進。</p>
<p>『有限思維』的人關注『結果』，想著如何才可以打敗對手；
『無限思維』的人關注改變的『過程』，改變讓自己更接近『崇高的信念』。</p>
<br>
<h5 id="攸關存亡的應變">攸關存亡的應變</h5><pre><code>攸關存亡的應變是為了更有效地推動信念，即使這麼做會顛覆現有的商業模式。
</code></pre>
<p>以往的商業模式可以賺大錢，但套用在現今或許不在實用，可以從柯達這間公司來思考。</p>
<p>『像鉛筆一樣簡單。你按快門，剩下的交給我們。』這是柯達的廣告詞。
柯達的底片佔了公司大部分營收，而第一台數位相機也是柯達發明，但為什麼柯達最後還是敗在數位相機？</p>
<p>柯達的領導者認為，數位相機這項產品，與自家的底片有衝突，如果就這樣發表出去，可能會影響到公司的營收。
最後領導者認為底片才是賺錢的來源，而數位相機會讓賣出的底片變少，所以選擇不發表這項產品。
十年後 Nikon 發表第一台數位相機，而柯達到最後也退出了這場賽局。</p>
<p>『有限思維』的人關注『短期獲利』，只想著怎麼樣才可以賺錢，而忽略了自身的信念；
『無限思維』的人關注『推動信念』，攸關存亡的應變為了更推動『崇高的信念』，即使推翻現有的商業模式。</p>
<br>
<h5 id="領導的勇氣">領導的勇氣</h5><pre><code>正值不只是做對的事，正直是在大眾抗議或醜聞發生之前就採取行動。
當領導這知道公司明明在做不道德的事，卻等輿論爆發之後才採取行動，這不是正直，這叫損害控制。
</code></pre>
<p>2014 年，美國最大的連鎖藥局 CVS 宣布停售香煙及菸草，這項決定並沒有人去要求 CVS ，也並非任何負面消息，縱使這項決定會使他們每年損失二十億美元。
CVS 的領導者用『信念』來引導公司業務，而這項決定也讓有使命感的公司去跟他們合作，開啟了 CVS 在保健食品這塊領域的商機，也提升了公司的形象。
反觀競爭對手，只高喊帶給世人健康的信念，而沒有勇氣做出改變的決定。</p>
<br>
<img src="https://i.imgur.com/h4dJAap.jpg" width="100%" alt="CVS 停售香菸的決定" loading="lazy" />
<br>
<h4 id="限時的無限賽局">限時的無限賽局</h4><hr>
<p>或許『信念』才是『無限思維』根本，蘋果的信念是創新，微軟的信念是激發大家的生產力，『崇高的信念』造就了這些偉大的公司。
當信念轉變成利益導向，如同微軟不在思考怎麼讓大家發揮價值，而把目標轉向打贏蘋果，此時陷入有限思維的微軟，如同丟掉武器赤手空拳的來對抗競爭者，對於蘋果的競爭力也不在像以前那麼高。</p>
<p>人生本是一場『無限賽局』，但我們僅擁有有限的時間，我們要用『無限思維』去看待這場『限時的賽局』。崇高的信念可以讓思維跳脫輸贏，可以犯錯、可以推翻現況，就是為了更接近人生的信念；擁有可敬的對手讓我們不在只在乎表面的輸贏，而是成為互相檢視的導師，推動自己不斷的向前邁進。當我們不在以『我』為中心來思考任何事，而是將眼光放遠，以信念來引導我們的方向，勢必可以創造屬於自己的價值，並影響更多的人。</p>
<pre><code>🔅 原子習慣：一旦你發現『時間』才是最寶貴的貨幣，你會徹底改變你的生活風格和習慣。 
</code></pre>
<br>
<h4 id="slideshare">SlideShare</h4><hr>
<details>
<summary>顯示簡報</summary>
<iframe class="slideShare" src="//www.slideshare.net/slideshow/embed_code/key/gpWT6mhExd9KAX" width="595" height="485" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen> </iframe> <div style="margin-bottom:5px"> <strong> <a href="//www.slideshare.net/ssuser76de98/game-the-infinite-game-248308253" title="Game the infinite game" target="_blank">Game the infinite game</a> </strong> from <strong><a href="https://www.slideshare.net/ssuser76de98" target="_blank">Ian Tsai</a></strong> </div>
</details>]]></content:encoded>
    </item>
    <item>
      <title>超速學習 - 『學習』從來不是一件輕鬆的事</title>
      <link>https://ianlifelab.com/read/ultralearning/</link>
      <pubDate>Sun, 21 Mar 2021 00:00:00 +0000</pubDate>
      <dc:creator>Ian Tsai</dc:creator>
      <guid>https://ianlifelab.com/read/ultralearning/</guid>
      <category>學習成長</category>
      <description>超速學習的定義為『一種獲取技能與知識的策略，兼具自主性與高強度。』</description>
      <content:encoded><![CDATA[<br>
<br>
<h4 id="如何成為超速學習者">如何成為超速學習者？</h4><hr>
<p>超速學習並非千篇一律的方法，每個人的學習計畫都是獨特的，而要到達的精通程度所需的方法也不同。這本書中整理出了九個普遍的法則基礎，並稱這套方法為超速學習。</p>
<p><code>後設學習、專心致志、直接學習、反覆練習、提取記憶、意見回饋、保留記憶、培養直覺、勇於實驗</code></p>
<br>
<br>
<h4 id="建立學習地圖">建立學習地圖</h4><hr>
<p>超速學習的第一步為『後設學習』，後設學習在這本書中指的是<strong>學習關於學習這件事</strong>。比方說，只會英語者以及會西班牙語加英語的雙語者同時學法語課。後續追中顯示，雙語者表現會優於單語者。</p>
<p>為什麼？因為西班牙語以及法語都是羅馬語系，因此對雙語者來說是一個優勢。但其原因不只是這樣！會多種語言者可以藉由比較兩種或以上語言特中，開發出不同語言學習的策略能力。也就是所謂的『後設語言覺識』。</p>
<p>而要畫出學習地圖，則要先問自己『為什麼、做什麼、怎麼做』，進而了解自己的學習目標以及方法。</p>
<br>
<br>
<h4 id="真正的學習其實是在直接做你想變擅長的事時才會發生">真正的學習，其實是在直接做你想變擅長的事時才會發生</h4><hr>
<p>回想以前考高中大學時常常聽到一句話：『若你覺得現在唸書是痛苦的，那代表你做對了，請你堅持下去。』，在我的認知裡，直接學習一項技能並不會太舒服，甚至很痛苦，例如想學一種語言，並非直接看文法、背單字或是與人對話，而是透過各種有趣的應用軟體，讓自己有種『我好像學到東西』的感覺。而
<strong>真正的學習，其實是在直接做你想變擅長的事時才會發生。</strong>
當真的要學習語言，應該思考如何做直接的可以學習到這項技能，比方說上線上真人課程與外國人溝通、每天閱讀英文報章雜誌學習新字彙&hellip;等。</p>
<br>
<br>
<h4 id="在被迎面痛擊之前每個人都有自己的一套計畫">在被迎面痛擊之前，每個人都有自己的一套計畫。</h4><hr>
<p>學習過程中，取得回饋很重要，回饋是可以評估學習成效的重要方式之一。但不見得回饋越多越好，關鍵在於得到回饋的類型。當回饋提供的是指引學習方向有用的資訊，那就會有好的效果。若是給一個<strong>個體</strong>的評價，例如：『你好棒！』或是『你好懶墮&hellip;』，這並非是對<strong>學習本身</strong>的回饋，通常會對學習有負面影響。</p>
<p>而回饋的不當解讀或無法給予有用的資訊，也會造成反效果。超速學習者必須留意兩種可能性：</p>
<ol>
<li>對並未提供能帶來有用資訊的回饋反應過度。超速學習者必須對回饋敏感，並過濾。</li>
<li>如果運用不當，回饋對行動力也會有影響。過度負面會降低行動力，過度正面會阻礙進步。</li>
</ol>
<br>
<br>
<h4 id="勇於實驗往舒適圈外探索">勇於實驗，往舒適圈外探索</h4><hr>
<p>開始一項新技能時，通常只要照著比自己厲害的人去做就夠了。但隨著越學越多，只是<strong>遵循榜樣</strong>通常不再足夠，必須自己去實驗，找到屬於自己的道路。比方說一個程式設計師，一開始學寫程式時，通常都是上網找尋範本。但等到累積一定的知識量後，就不用在複製別人的範本，而是自行架設一個網站，可以藉由自行架設網站的過程中，知道哪些部分的能力還需要加強。</p>
<br>
<br>
<h4 id="費曼技巧">費曼技巧</h4><hr>
<p>書中第八個法則『培養直覺』中提到了費曼技巧，讓我想起為什麼想寫文章，一方面是想要紀錄自己學了什麼，另一方面是想如果是別人看我的文章，可以理解這個東西到什麼程度、要如何將<strong>我所理解的知識</strong>傳遞給他人，若無法順利傳遞知識，代表我對於正在學習的項目還不是很了解。</p>
<ol>
<li>在一張紙的最上方，寫下你想了解的觀念或問題。</li>
<li>在下方空間解釋那個想法，彷彿你必須傳授他人。
<ol>
<li>若是觀念，先問自己，要如何把這個觀念傳給從未聽過的人</li>
<li>若是問題，就說明該如何解答；重要的事，要說明你為何認為解題步驟是合理的。</li>
</ol>
</li>
<li>當你卡住了，就代表你的理解無法提供清楚的解答，請回去找書、筆記、老師、或是參考資料，直到找出答案為止。</li>
</ol>
<p>可以應用在三個地方：</p>
<ol>
<li>你完全不了解的事物。</li>
<li>你似乎無法解決的問題。</li>
<li>為了擴展直覺。</li>
</ol>
<br>
<br>
<h4 id="讀後心得">讀後心得</h4><hr>
<p>超速學習在這本書中，給了滿多真實範例及方法。但他絕對不是教你如何輕鬆學習，因為超速學習的定義為『一種獲取技能與知識的策略，兼具自主性與高強度。』而在書中也點出了一些我在學習時產生的盲點，如『直接學習』。就像上面講的，往往學習新事物都是痛苦的，所以都想要用輕鬆的方式去達成學習的成果，但都忽略了最直接的學習，可以最快速了解內容，雖然過程不舒服，但累積下來的成果也將非常可觀。</p>
<br>
<br>
<h4 id="閱讀筆記">閱讀筆記</h4><hr>
<p>若想參考閱讀筆記，可以點 <strong><a href="https://www.notion.so/2021-03-91da9a88d72148a8b8237e2b7d1d662d" target="_blank">這裡</a></strong> 參考</p>
]]></content:encoded>
    </item>
    <item>
      <title>複身犯 - 寫出你的名字，你是誰？</title>
      <link>https://ianlifelab.com/movie/plurality/</link>
      <pubDate>Sun, 14 Mar 2021 00:00:00 +0000</pubDate>
      <dc:creator>Ian Tsai</dc:creator>
      <guid>https://ianlifelab.com/movie/plurality/</guid>
      <category>生活隨筆</category>
      <description>不管這個世界怎麼看你，你都要相信你自己。</description>
      <content:encoded><![CDATA[<br>
<br>
<p>上次看電影是2019年的事（沒看天能，有理由不當低能🤣），而上次看國片更不知何時了，對於國片的記憶還停留在『大尾鱸鰻』、『總鋪師』等等賀歲片，這次剛好朋友介紹而看這部電影，起初以為是類似於人格分裂的犯罪電影，想不到劇情比我想的還要豐富，有點刷新了我對於國片既定的印象。雖然有部分沒有解釋的很到位，但對於我來說，看電影就是放鬆心情，不要太過於糾結🤣🤣🤣。</p>
<p>以下心得可能有點雷，還沒看過的就先跳出囉！！</p>
<h4 id="人格的撕扯我不是我">人格的撕扯，我不是我。</h4><hr>
<p>『攔截記憶碼』是我對於這類電影的一個印象，但這片一次注入五個人格到單一個體的精神裡，是給演員的一大考驗。個人覺得楊祐寧把這五個人都詮釋的不錯，畢竟一次演兩個人就已經不是一件簡單的事了，更何況是五個人。而在這五個人存在於意識裡的空間，是與現實相同的實驗室，表示就算你們逃出了現實的實驗室，在意識裡面還是被關起來的。如果某一個人格想要驅動 193 的身體，就需要找到一個紅門，這個紅門，象徵著 193 與女兒講的『怪角鹿』的故事，那隻鹿為了面對自己而穿過的紅門。</p>
<p>張榕容飾演的科學家沈宜玲，竭盡自己的所學，為了小孩，不放棄所有可能找到他的線索，體現出一個母親，可以為自己的孩子付出一切。故事的最後，意外的反轉，193 並不是許明哲，而真的許明哲，為了奪取身體而模仿甚至策劃抹殺所有人的意識，一種『我不是我，那我是誰』的感覺。</p>
<p>整部下來印象最深刻的一句話還是公車司機邱俊生的：我只是想看我阿嬤啊</p>
<p>
  <img src="https://i.imgur.com/0PN4xtt.jpg" alt="複身犯 - 寫出你的名字，你是誰？" loading="lazy" decoding="async">

</p>
<br>
<br>
<h4 id="觀後的省思">觀後的省思</h4><hr>
<h5 id="世界友善對待先天有缺陷的人並不友善">世界友善對待先天有缺陷的人並不友善</h5><p>想起以前學生時代，大家對於一些行為怪異或是身心有缺陷的人了，往往都給予不友善的態度甚至會霸凌他們。大家普遍認為他們是怪人，給與異樣眼光，對於這些人來說，這個世界有的甚至父母，都不會友善的對待自己。片中許明哲以及 193（意識載體）分別用不同的方法，去對待這些人。但許明哲這種極端的行為，也許演出很多人內心不敢表現出的想法，而 193 則是父母對待自己子女愛的體現。不禁讓人反思，是不是因為我們而造就了這個不友善的世界？</p>
<br>
<h5 id="被正義包裝的惡">被『正義』包裝的『惡』</h5><p>片尾王警官說：『我們沒辦法知道怪物的腦中想什麼，或許殺了他們，反而對他們比較好。』這句話就跟許明哲對沈宜玲（張榕容）講的話一樣：『這世界對他們並不友善，所以殺了他們。對他們比較好。』。往往有些『惡意』的外層包裝了『正義』，社會大眾就會覺的是合理的事，但是否只要是『正義』就是絕對的正確呢？</p>
<br>
<h5 id="不管這個世界怎麼看你你都要相信你自己">不管這個世界怎麼看你，你都要相信你自己。</h5><p>193 對女兒說：『不管這個世界怎麼看你，你都要相信你自己。』</p>
<p>現在的人大多數在意『別人怎麼看我』，但我們是想要活出『我夢想中的自己』，還是『別人眼中的自己』。適度的在意並把意見化為養分是必要的，但應該要過濾，不是照單全收。</p>
<br>
<br>
<br>
<p>最後，你們有沒有看我阿嬤啊</p>
<p>
  <img src="https://i.imgur.com/Uc0Fb4Lm.png" alt="RMA" loading="lazy" decoding="async">

</p>
]]></content:encoded>
    </item>
    <item>
      <title>在 Hugo Blog 中加上 Algolia 文章搜索工具</title>
      <link>https://ianlifelab.com/build-blog/hugo-and-algolia/</link>
      <pubDate>Sat, 13 Mar 2021 00:00:00 +0000</pubDate>
      <dc:creator>Ian Tsai</dc:creator>
      <guid>https://ianlifelab.com/build-blog/hugo-and-algolia/</guid>
      <category>科技探索</category>
      <description>Algolia 是為你在APP或網站提供搜索功能的最佳方式之一，在 Hugo 中加入 Algolia，讓你更方便尋找以前的文章。</description>
      <content:encoded><![CDATA[<br>
<br>
<p>隨著文章越來越多，要找到以前寫的文章就越來越麻煩，所以就一直想尋找站內搜索的功能使用。之前有試用 google 的站內搜索功能，但總覺得整體不是很好看，也就沒有繼續使用。直到最近看到 Algolia ，可建立文章的索引，將資料上傳到 Algolia，再藉由串接 API 就可以完成搜索功能。</p>
<p>接下來就開始建立站內搜索功能吧。</p>
<br>
<br>
<h4 id="註冊-algolia">註冊 Algolia</h4><hr>
<p>第一步就是要到 <a href="https://www.algolia.com/">Algolia</a> 註冊帳號，登入後會要求輸入一個 index（等等要用到這個 index），然後會以這個 index 建立一個 app ，接著選擇存取的國家（我是選日本），完成之後會有這個畫面。</p>
<p>
  <img src="https://i.imgur.com/i9tNtP7.png?1" alt="app" loading="lazy" decoding="async">

</p>
<p>然後點選左邊的 API Keys，這邊有等等設定需要使用的參數，可以先將他們記下來。</p>
<p>
  <img src="https://i.imgur.com/xvxBX7Q.png" alt="API Keys" loading="lazy" decoding="async">

</p>
<p><em>註：Algolia 有分幾個付費等級，現在有 15 天試用期，不過因為 blog 只需要簡單的搜索文章的功能，這裡目前是使用免費版，若要更進階的功能可以自行研究看看。</em></p>
<br>
<br>
<h4 id="hugo-生成索引文件">hugo 生成索引文件</h4><hr>
<h6 id="1-修改-configtoml">1. 修改 config.toml</h6><p>修改<code>./config.toml</code>設定好需要的參數。</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-toml" data-lang="toml"><span style="display:flex;"><span>[outputs]
</span></span><span style="display:flex;"><span>  home = [<span style="color:#f1fa8c">&#34;HTML&#34;</span>, <span style="color:#f1fa8c">&#34;RSS&#34;</span>, <span style="color:#f1fa8c">&#34;Algolia&#34;</span>]
</span></span><span style="display:flex;"><span>  
</span></span><span style="display:flex;"><span>[outputFormats.Algolia]
</span></span><span style="display:flex;"><span>  baseName = <span style="color:#f1fa8c">&#34;algolia&#34;</span>
</span></span><span style="display:flex;"><span>  isPlainText = <span style="color:#ff79c6">true</span>
</span></span><span style="display:flex;"><span>  mediaType = <span style="color:#f1fa8c">&#34;application/json&#34;</span>
</span></span><span style="display:flex;"><span>  notAlternative = <span style="color:#ff79c6">true</span>
</span></span><span style="display:flex;"><span>  
</span></span><span style="display:flex;"><span>[params.algolia]
</span></span><span style="display:flex;"><span>  appId = <span style="color:#f1fa8c">&#34;剛剛看到的 ID&#34;</span>
</span></span><span style="display:flex;"><span>  indexName = <span style="color:#f1fa8c">&#34;一開始輸入的 index&#34;</span>
</span></span><span style="display:flex;"><span>  searchOnlyKey = <span style="color:#f1fa8c">&#34;剛剛看到的 Search Only Key&#34;</span>
</span></span><span style="display:flex;"><span>  vars = [<span style="color:#f1fa8c">&#34;title&#34;</span>, <span style="color:#f1fa8c">&#34;summary&#34;</span>, <span style="color:#f1fa8c">&#34;date&#34;</span>, <span style="color:#f1fa8c">&#34;publishdate&#34;</span>, <span style="color:#f1fa8c">&#34;expirydate&#34;</span>, <span style="color:#f1fa8c">&#34;permalink&#34;</span>] 
</span></span><span style="display:flex;"><span>  params = [<span style="color:#f1fa8c">&#34;categories&#34;</span>, <span style="color:#f1fa8c">&#34;tags&#34;</span>, <span style="color:#f1fa8c">&#34;series&#34;</span>]
</span></span></code></pre></div><br>
<h6 id="2-新增-listalgoliajson">2. 新增 list.algolia.json</h6><p>在<code>layouts/_default</code>路徑下新增<code>list.algolia.json</code>文件，並加入以下程式碼，可以依照每個不同的 blog 所含有的參數去做設定。</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span>{{- $.Scratch.Add <span style="color:#ff79c6">&#34;index&#34;</span> slice -}}
</span></span><span style="display:flex;"><span>{{- $section := $.Site.GetPage <span style="color:#ff79c6">&#34;section&#34;</span> .Section}}
</span></span><span style="display:flex;"><span>{{- range .Site.AllPages -}}
</span></span><span style="display:flex;"><span>  {{- if or (and (.IsDescendant $section) (and (not .Draft) (not .Params.private))) $section.IsHome -}}
</span></span><span style="display:flex;"><span>    {{- $.Scratch.Add <span style="color:#ff79c6">&#34;index&#34;</span> (dict <span style="color:#f1fa8c">&#34;objectID&#34;</span> .UniqueID <span style="color:#f1fa8c">&#34;date&#34;</span> .Date.UTC.Unix <span style="color:#f1fa8c">&#34;description&#34;</span> .Description <span style="color:#f1fa8c">&#34;dir&#34;</span> .Dir <span style="color:#f1fa8c">&#34;expirydate&#34;</span> .ExpiryDate.UTC.Unix <span style="color:#f1fa8c">&#34;fuzzywordcount&#34;</span> .FuzzyWordCount <span style="color:#f1fa8c">&#34;keywords&#34;</span> .Keywords <span style="color:#f1fa8c">&#34;kind&#34;</span> .Kind <span style="color:#f1fa8c">&#34;lang&#34;</span> .Lang <span style="color:#f1fa8c">&#34;lastmod&#34;</span> .Lastmod.UTC.Unix <span style="color:#f1fa8c">&#34;permalink&#34;</span> .Permalink <span style="color:#f1fa8c">&#34;publishdate&#34;</span> .PublishDate <span style="color:#f1fa8c">&#34;readingtime&#34;</span> .ReadingTime <span style="color:#f1fa8c">&#34;relpermalink&#34;</span> .RelPermalink <span style="color:#f1fa8c">&#34;summary&#34;</span> .Summary <span style="color:#f1fa8c">&#34;title&#34;</span> .Title <span style="color:#f1fa8c">&#34;type&#34;</span> .Type <span style="color:#f1fa8c">&#34;url&#34;</span> .URL <span style="color:#f1fa8c">&#34;weight&#34;</span> .Weight <span style="color:#f1fa8c">&#34;wordcount&#34;</span> .WordCount <span style="color:#f1fa8c">&#34;section&#34;</span> .Section <span style="color:#f1fa8c">&#34;tags&#34;</span> .Params.Tags <span style="color:#f1fa8c">&#34;categories&#34;</span> .Params.Categories <span style="color:#f1fa8c">&#34;authors&#34;</span> .Params.Authors)}}
</span></span><span style="display:flex;"><span>  {{- end -}}
</span></span><span style="display:flex;"><span>{{- end -}}
</span></span><span style="display:flex;"><span>{{- $.Scratch.Get <span style="color:#ff79c6">&#34;index&#34;</span> | jsonify -}}
</span></span></code></pre></div><br>
<h6 id="3-產生-algoliajson">3. 產生 algolia.json</h6><p>之後在執行<code>hugo</code>建立的<code>public</code>時可以確認一下有沒有產生<code>algolia.json</code>的索引文件。</p>
<br>
<br>
<h4 id="自動上傳索引至-algolia">自動上傳索引至 Algolia</h4><hr>
<h6 id="1-安装-atomic-algolia">1. 安装 atomic-algolia</h6><pre tabindex="0"><code class="language-treminal" data-lang="treminal">npm init
npm install atomic-algolia --save
</code></pre><p><em>註：這裡需要用到 npm 套件工具，所以需要安裝 node js，若沒有安裝的可以到 <a href="https://nodejs.org/en/download/" target="_blank">這裏</a>下載。</em></p>
<br>
<h6 id="2-修改根目錄下的-packagejson">2. 修改根目錄下的 package.json</h6><p>到根目錄下的 package.json 內，在 scripts 下添加 &ldquo;algolia&rdquo;: &ldquo;atomic-algolia&rdquo;</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span>  <span style="color:#f1fa8c">&#34;scripts&#34;</span>: {
</span></span><span style="display:flex;"><span>    <span style="color:#ff79c6">&#34;test&#34;</span>: <span style="color:#f1fa8c">&#34;echo \&#34;Error: no test specified\&#34; &amp;&amp; exit 1&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#ff79c6">&#34;algolia&#34;</span>: <span style="color:#f1fa8c">&#34;atomic-algolia&#34;</span>
</span></span><span style="display:flex;"><span>  },
</span></span></code></pre></div><br>
<h6 id="3-建立-env-檔">3. 建立 .ENV 檔</h6><pre tabindex="0"><code class="language-code" data-lang="code">ALGOLIA_APP_ID=你的Application ID
ALGOLIA_INDEX_NAME=你的索引名字
ALGOLIA_INDEX_FILE=public/algolia.json
ALGOLIA_ADMIN_KEY=你的Admin API Key
</code></pre><br>
<h6 id="4-上傳索引文件">4. 上傳索引文件</h6><p>可以在 local 端執行<code>npm run algolia</code>這行指令查看效果：</p>
<p>
  <img src="https://i.imgur.com/fb2sQzO.png" alt="run algolia" loading="lazy" decoding="async">

</p>
<br>
<h6 id="5-設定索引">5. 設定索引</h6><p>回到 Algolia 做索引的條件設定，勾選自己想要的所以關鍵字，之後便會依照這些關鍵字給予搜索結果。</p>
<p>
  <img src="https://i.imgur.com/UxxYS6C.png" alt="setting" loading="lazy" decoding="async">

</p>
<h6 id="6-測試索引">6. 測試索引</h6><br>
<p>可以測試看看搜索功能是否成功，若輸入關鍵字，後方有出現結果，就是設定成功，可以搜尋了。</p>
<p>
  <img src="https://i.imgur.com/jw9m5tu.png" alt="search" loading="lazy" decoding="async">

</p>
<br>
<br>
<h4 id="畫面添加搜尋欄">畫面添加搜尋欄</h4><hr>
<p><em>註：這部分的 html, css 都使用現成的，只稍作修改。</em></p>
<h6 id="1-新增-searchhtml">1. 新增 search.html</h6><p>到 <code>layouy/partials/</code> 路徑下新增一個</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;display:grid;"><code class="language-html" data-lang="html"><span style="display:flex;"><span style="white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 1</span><span>&lt;<span style="color:#ff79c6">div</span> <span style="color:#50fa7b">class</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">&#34;aa-input-container&#34;</span> <span style="color:#50fa7b">id</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">&#34;aa-input-container&#34;</span>&gt;
</span></span><span style="display:flex;"><span style="white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 2</span><span>  &lt;<span style="color:#ff79c6">input</span> <span style="color:#50fa7b">type</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">&#34;search&#34;</span> <span style="color:#50fa7b">id</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">&#34;aa-search-input&#34;</span> <span style="color:#50fa7b">class</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">&#34;aa-input-search&#34;</span> <span style="color:#50fa7b">placeholder</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">&#34;Search for titles or URIs...&#34;</span>
</span></span><span style="display:flex;"><span style="white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 3</span><span>    <span style="color:#50fa7b">name</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">&#34;search&#34;</span> <span style="color:#50fa7b">autocomplete</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">&#34;off&#34;</span> /&gt;
</span></span><span style="display:flex;"><span style="white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 4</span><span>  &lt;<span style="color:#ff79c6">svg</span> <span style="color:#50fa7b">class</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">&#34;aa-input-icon&#34;</span> <span style="color:#50fa7b">viewBox</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">&#34;654 -372 1664 1664&#34;</span>&gt;
</span></span><span style="display:flex;"><span style="white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 5</span><span>    &lt;<span style="color:#ff79c6">path</span>
</span></span><span style="display:flex;"><span style="white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 6</span><span>      <span style="color:#50fa7b">d</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">&#34;M1806,332c0-123.3-43.8-228.8-131.5-316.5C1586.8-72.2,1481.3-116,1358-116s-228.8,43.8-316.5,131.5  C953.8,103.2,910,208.7,910,332s43.8,228.8,131.5,316.5C1129.2,736.2,1234.7,780,1358,780s228.8-43.8,316.5-131.5  C1762.2,560.8,1806,455.3,1806,332z M2318,1164c0,34.7-12.7,64.7-38,90s-55.3,38-90,38c-36,0-66-12.7-90-38l-343-342  c-119.3,82.7-252.3,124-399,124c-95.3,0-186.5-18.5-273.5-55.5s-162-87-225-150s-113-138-150-225S654,427.3,654,332  s18.5-186.5,55.5-273.5s87-162,150-225s138-113,225-150S1262.7-372,1358-372s186.5,18.5,273.5,55.5s162,87,225,150s113,138,150,225  S2062,236.7,2062,332c0,146.7-41.3,279.7-124,399l343,343C2305.7,1098.7,2318,1128.7,2318,1164z&#34;</span> /&gt;
</span></span><span style="display:flex;"><span style="white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 7</span><span>  &lt;/<span style="color:#ff79c6">svg</span>&gt;
</span></span><span style="display:flex;"><span style="white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 8</span><span>&lt;/<span style="color:#ff79c6">div</span>&gt;
</span></span><span style="display:flex;"><span style="white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 9</span><span>&lt;<span style="color:#ff79c6">script</span> <span style="color:#50fa7b">src</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">&#34;https://res.cloudinary.com/jimmysong/raw/upload/rootsongjc-hugo/algoliasearch.min.js&#34;</span>&gt;&lt;/<span style="color:#ff79c6">script</span>&gt;
</span></span><span style="display:flex;"><span style="white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">10</span><span>&lt;<span style="color:#ff79c6">script</span> <span style="color:#50fa7b">src</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">&#34;https://res.cloudinary.com/jimmysong/raw/upload/rootsongjc-hugo/autocomplete.min.js&#34;</span>&gt;&lt;/<span style="color:#ff79c6">script</span>&gt;
</span></span><span style="display:flex;"><span style="white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">11</span><span>&lt;<span style="color:#ff79c6">script</span>&gt;
</span></span><span style="display:flex; background-color:#3d3f4a"><span style="white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">12</span><span>  <span style="color:#8be9fd;font-style:italic">var</span> client <span style="color:#ff79c6">=</span> algoliasearch({{.Site.Params.algolia.appId}}, {{.Site.Params.algolia.searchOnlyKey}});
</span></span><span style="display:flex; background-color:#3d3f4a"><span style="white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">13</span><span>  <span style="color:#8be9fd;font-style:italic">var</span> index <span style="color:#ff79c6">=</span> client.initIndex({{.Site.Params.algolia.indexName}});
</span></span><span style="display:flex;"><span style="white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">14</span><span>  autocomplete(<span style="color:#f1fa8c">&#39;#aa-search-input&#39;</span>,
</span></span><span style="display:flex;"><span style="white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">15</span><span>    { hint<span style="color:#ff79c6">:</span> <span style="color:#ff79c6">false</span> }, {
</span></span><span style="display:flex;"><span style="white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">16</span><span>    source<span style="color:#ff79c6">:</span> autocomplete.sources.hits(index, { hitsPerPage<span style="color:#ff79c6">:</span> <span style="color:#bd93f9">20</span> }),
</span></span><span style="display:flex;"><span style="white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">17</span><span>    displayKey<span style="color:#ff79c6">:</span> <span style="color:#f1fa8c">&#39;name&#39;</span>,
</span></span><span style="display:flex;"><span style="white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">18</span><span>    templates<span style="color:#ff79c6">:</span> {
</span></span><span style="display:flex;"><span style="white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">19</span><span>        suggestion<span style="color:#ff79c6">:</span> <span style="color:#8be9fd;font-style:italic">function</span> (suggestion) {
</span></span><span style="display:flex;"><span style="white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">20</span><span>            <span style="color:#ff79c6">return</span> <span style="color:#f1fa8c">&#39;&lt;span&gt;&#39;</span> <span style="color:#ff79c6">+</span> <span style="color:#f1fa8c">&#39;&lt;a href=&#34;&#39;</span> <span style="color:#ff79c6">+</span> suggestion.relpermalink <span style="color:#ff79c6">+</span> <span style="color:#f1fa8c">&#39;&#34;&gt;&#39;</span> <span style="color:#ff79c6">+</span>
</span></span><span style="display:flex;"><span style="white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">21</span><span>            suggestion.title <span style="color:#ff79c6">+</span> <span style="color:#f1fa8c">&#39;&lt;/a&gt;&lt;/span&gt;&#39;</span>;
</span></span><span style="display:flex;"><span style="white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">22</span><span>      }
</span></span><span style="display:flex;"><span style="white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">23</span><span>    }
</span></span><span style="display:flex;"><span style="white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">24</span><span>  });
</span></span><span style="display:flex;"><span style="white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">25</span><span>
</span></span><span style="display:flex; background-color:#3d3f4a"><span style="white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">26</span><span>  $(<span style="color:#f1fa8c">&#39;#searchGlyph&#39;</span>).click(<span style="color:#8be9fd;font-style:italic">function</span>() {
</span></span><span style="display:flex; background-color:#3d3f4a"><span style="white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">27</span><span>    setTimeout(<span style="color:#8be9fd;font-style:italic">function</span>(){
</span></span><span style="display:flex; background-color:#3d3f4a"><span style="white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">28</span><span>      $(<span style="color:#f1fa8c">&#39;#aa-search-input&#39;</span>).focus();
</span></span><span style="display:flex; background-color:#3d3f4a"><span style="white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">29</span><span>    },<span style="color:#bd93f9">300</span>);
</span></span><span style="display:flex; background-color:#3d3f4a"><span style="white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">30</span><span>  });
</span></span><span style="display:flex;"><span style="white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">31</span><span>&lt;/<span style="color:#ff79c6">script</span>&gt;
</span></span></code></pre></div><p>幾點注意事項：</p>
<ol>
<li>
<p><strong>algoliasearch</strong> 以及 <strong>client.initIndex</strong> 所需要的參數在最一開始我們就已經設定到<code>config.toml</code>內了，如果還沒設定的可以往前看。</p>
</li>
<li>
<p><code>suggestion</code>call api 後回傳的物件，若想知道裡面有什麼，可以用<code>console.log()</code>將其印出來，並確認<code>templates</code>的 return 是否有使用到物件內的欄位。</p>
</li>
<li>
<p>有些教學文會使用<code>docsearch</code>這個 function，但在這個 function 我測試過是無法使用，查了一些資料發現比較推薦使用<code>autocomplete</code>這個 function，所以大家在使用時可以注意這一點。</p>
</li>
<li>
<p>為了方便點選 search icon 之後可以直接輸入查詢資料，所以要增加 26-30 行的程式碼，而因為頁面 modal 內的 input 渲染較慢，所以需要設定延遲的時間
，才有辦法 focus 到 input 內。</p>
</li>
</ol>
<br>
<h6 id="2-在-header-加入搜索按鈕">2. 在 header 加入搜索按鈕</h6><p>先在 header 最後加上放大鏡的 icon</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-html" data-lang="html"><span style="display:flex;"><span>&lt;<span style="color:#ff79c6">a</span> <span style="color:#50fa7b">href</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">&#34;#modalSearch&#34;</span> <span style="color:#50fa7b">data-toggle</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">&#34;modal&#34;</span> <span style="color:#50fa7b">data-target</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">&#34;#modalSearch&#34;</span> <span style="color:#50fa7b">style</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">&#34;outline: none;&#34;</span>&gt;
</span></span><span style="display:flex;"><span>    &lt;<span style="color:#ff79c6">span</span> <span style="color:#50fa7b">id</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">&#34;searchGlyph&#34;</span> <span style="color:#50fa7b">class</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">&#34;glyphicon glyphicon-search&#34;</span>&gt;&lt;<span style="color:#ff79c6">i</span> <span style="color:#50fa7b">class</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">&#34;fas fa-search&#34;</span>&gt;&lt;/<span style="color:#ff79c6">i</span>&gt;&lt;/<span style="color:#ff79c6">span</span>&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#ff79c6">a</span>&gt;
</span></span></code></pre></div><p>接著加入搜所匡</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-html" data-lang="html"><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>&lt;<span style="color:#ff79c6">div</span> <span style="color:#50fa7b">id</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">&#34;modalSearch&#34;</span> <span style="color:#50fa7b">class</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">&#34;modal fade&#34;</span> <span style="color:#50fa7b">role</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">&#34;dialog&#34;</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#ff79c6">div</span> <span style="color:#50fa7b">class</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">&#34;modal-dialog&#34;</span>&gt;
</span></span><span style="display:flex;"><span>    &lt;<span style="color:#ff79c6">div</span> <span style="color:#50fa7b">class</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">&#34;modal-content&#34;</span>&gt;
</span></span><span style="display:flex;"><span>      &lt;<span style="color:#ff79c6">div</span> <span style="color:#50fa7b">class</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">&#34;modal-header&#34;</span>&gt;
</span></span><span style="display:flex;"><span>        &lt;<span style="color:#ff79c6">h4</span> <span style="color:#50fa7b">class</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">&#34;modal-title&#34;</span>&gt;文章搜尋&lt;/<span style="color:#ff79c6">h4</span>&gt;&lt;<span style="color:#ff79c6">button</span> <span style="color:#50fa7b">type</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">&#34;button&#34;</span> <span style="color:#50fa7b">class</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">&#34;close&#34;</span> <span style="color:#50fa7b">data-dismiss</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">&#34;modal&#34;</span>&gt;&amp;times;&lt;/<span style="color:#ff79c6">button</span>&gt;
</span></span><span style="display:flex;"><span>      &lt;/<span style="color:#ff79c6">div</span>&gt;
</span></span><span style="display:flex;"><span>      &lt;<span style="color:#ff79c6">div</span> <span style="color:#50fa7b">class</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">&#34;modal-body&#34;</span>&gt;
</span></span><span style="display:flex;"><span>        {{ partial &#34;search.html&#34; . }}
</span></span><span style="display:flex;"><span>      &lt;/<span style="color:#ff79c6">div</span>&gt;
</span></span><span style="display:flex;"><span>      <span style="color:#6272a4">&lt;!-- &lt;div class=&#34;modal-footer&#34;&gt;
</span></span></span><span style="display:flex;"><span><span style="color:#6272a4">        &lt;button type=&#34;button&#34; class=&#34;btn btn-default&#34; data-dismiss=&#34;modal&#34;&gt;close&lt;/button&gt;
</span></span></span><span style="display:flex;"><span><span style="color:#6272a4">      &lt;/div&gt; --&gt;</span>
</span></span><span style="display:flex;"><span>    &lt;/<span style="color:#ff79c6">div</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;/<span style="color:#ff79c6">div</span>&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#ff79c6">div</span>&gt;
</span></span></code></pre></div><br>
<h6 id="3-加入-css">3. 加入 css</h6><p>可以到<code>staic/css</code>內新增<code>search.css</code>，但我這部分設定好像沒弄好，所以我是新增在<code>assets/scss/main.scss</code>內，建議如果要加在這的話，可以寫幾行註解，以免日後不知道自己新增哪些 css。</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-css" data-lang="css"><span style="display:flex;"><span>@<span style="color:#ff79c6">import</span> <span style="color:#f1fa8c">&#39;https://fonts.googleapis.com/css?family=Montserrat:400,700&#39;</span>;
</span></span><span style="display:flex;"><span>.<span style="color:#50fa7b">aa-input-container</span> {
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">display</span>: <span style="color:#ff79c6">inline-block</span>;
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">position</span>: <span style="color:#ff79c6">relative</span>;
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">width</span>: <span style="color:#bd93f9">100</span><span style="color:#8be9fd">%</span>;
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>.<span style="color:#50fa7b">aa-input-container</span> <span style="color:#ff79c6">span</span><span style="color:#ff79c6">,</span>.<span style="color:#50fa7b">aa-input-container</span> <span style="color:#ff79c6">input</span> {
</span></span><span style="display:flex;"><span>    <span style="color:#ff79c6">width</span>: <span style="color:#ff79c6">inherit</span>;
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>.<span style="color:#50fa7b">aa-input-search</span> {
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">width</span>: <span style="color:#bd93f9">300</span><span style="color:#8be9fd">px</span>;
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">padding</span>: <span style="color:#bd93f9">12</span><span style="color:#8be9fd">px</span> <span style="color:#bd93f9">28</span><span style="color:#8be9fd">px</span> <span style="color:#bd93f9">12</span><span style="color:#8be9fd">px</span> <span style="color:#bd93f9">12</span><span style="color:#8be9fd">px</span>;
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">border</span>: <span style="color:#bd93f9">2</span><span style="color:#8be9fd">px</span> <span style="color:#ff79c6">solid</span> <span style="color:#bd93f9">#e4e4e4</span>;
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">border-radius</span>: <span style="color:#bd93f9">4</span><span style="color:#8be9fd">px</span>;
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">-webkit-</span><span style="color:#ff79c6">transition</span>: <span style="color:#bd93f9">.2</span><span style="color:#8be9fd">s</span>;
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">transition</span>: <span style="color:#bd93f9">.2</span><span style="color:#8be9fd">s</span>;
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">font-family</span>: <span style="color:#f1fa8c">&#34;Montserrat&#34;</span>, <span style="color:#ff79c6">sans-serif</span>;
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">box-shadow</span>: <span style="color:#bd93f9">4</span><span style="color:#8be9fd">px</span> <span style="color:#bd93f9">4</span><span style="color:#8be9fd">px</span> <span style="color:#bd93f9">0</span> <span style="color:#8be9fd;font-style:italic">rgba</span>(<span style="color:#bd93f9">241</span>, <span style="color:#bd93f9">241</span>, <span style="color:#bd93f9">241</span>, <span style="color:#bd93f9">0.35</span>);
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">font-size</span>: <span style="color:#bd93f9">11</span><span style="color:#8be9fd">px</span>;
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">box-sizing</span>: <span style="color:#ff79c6">border-box</span>;
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">color</span>: <span style="color:#bd93f9">#333</span>;
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">-webkit-</span><span style="color:#ff79c6">appearance</span>: <span style="color:#ff79c6">none</span>;
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">-moz-</span><span style="color:#ff79c6">appearance</span>: <span style="color:#ff79c6">none</span>;
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">appearance</span>: <span style="color:#ff79c6">none</span>;
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>.<span style="color:#50fa7b">aa-input-search</span>::-webkit-search-decoration<span style="color:#ff79c6">,</span> .<span style="color:#50fa7b">aa-input-search</span>::-webkit-search-cancel-button<span style="color:#ff79c6">,</span> .<span style="color:#50fa7b">aa-input-search</span>::-webkit-search-results-button<span style="color:#ff79c6">,</span> .<span style="color:#50fa7b">aa-input-search</span>::-webkit-search-results-decoration {
</span></span><span style="display:flex;"><span>    <span style="color:#ff79c6">display</span>: <span style="color:#ff79c6">none</span>;
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>.<span style="color:#50fa7b">aa-input-search</span>:focus {
</span></span><span style="display:flex;"><span>    <span style="color:#ff79c6">outline</span>: <span style="color:#bd93f9">0</span>;
</span></span><span style="display:flex;"><span>    <span style="color:#ff79c6">border-color</span>: <span style="color:#bd93f9">#3a96cf</span>;
</span></span><span style="display:flex;"><span>    <span style="color:#ff79c6">box-shadow</span>: <span style="color:#bd93f9">4</span><span style="color:#8be9fd">px</span> <span style="color:#bd93f9">4</span><span style="color:#8be9fd">px</span> <span style="color:#bd93f9">0</span> <span style="color:#8be9fd;font-style:italic">rgba</span>(<span style="color:#bd93f9">58</span>, <span style="color:#bd93f9">150</span>, <span style="color:#bd93f9">207</span>, <span style="color:#bd93f9">0.1</span>);
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>.<span style="color:#50fa7b">aa-input-icon</span> {
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">height</span>: <span style="color:#bd93f9">16</span><span style="color:#8be9fd">px</span>;
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">width</span>: <span style="color:#bd93f9">16</span><span style="color:#8be9fd">px</span>;
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">position</span>: <span style="color:#ff79c6">absolute</span>;
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">top</span>: <span style="color:#bd93f9">50</span><span style="color:#8be9fd">%</span>;
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">right</span>: <span style="color:#bd93f9">16</span><span style="color:#8be9fd">px</span>;
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">-webkit-</span><span style="color:#ff79c6">transform</span>: <span style="color:#8be9fd;font-style:italic">translateY</span>(<span style="color:#bd93f9">-50</span><span style="color:#8be9fd">%</span>);
</span></span><span style="display:flex;"><span>          <span style="color:#ff79c6">transform</span>: <span style="color:#8be9fd;font-style:italic">translateY</span>(<span style="color:#bd93f9">-50</span><span style="color:#8be9fd">%</span>);
</span></span><span style="display:flex;"><span>  fill: <span style="color:#bd93f9">#e4e4e4</span>;
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>.<span style="color:#50fa7b">aa-hint</span> {
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">color</span>: <span style="color:#bd93f9">#e4e4e4</span>;
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>.<span style="color:#50fa7b">aa-dropdown-menu</span> {
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">background-color</span>: <span style="color:#bd93f9">#fff</span>;
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">border</span>: <span style="color:#bd93f9">2</span><span style="color:#8be9fd">px</span> <span style="color:#ff79c6">solid</span> <span style="color:#8be9fd;font-style:italic">rgba</span>(<span style="color:#bd93f9">228</span>, <span style="color:#bd93f9">228</span>, <span style="color:#bd93f9">228</span>, <span style="color:#bd93f9">0.6</span>);
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">border-top-width</span>: <span style="color:#bd93f9">1</span><span style="color:#8be9fd">px</span>;
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">font-family</span>: <span style="color:#f1fa8c">&#34;Montserrat&#34;</span>, <span style="color:#ff79c6">sans-serif</span>;
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">width</span>: <span style="color:#bd93f9">300</span><span style="color:#8be9fd">px</span>;
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">margin-top</span>: <span style="color:#bd93f9">10</span><span style="color:#8be9fd">px</span>;
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">box-shadow</span>: <span style="color:#bd93f9">4</span><span style="color:#8be9fd">px</span> <span style="color:#bd93f9">4</span><span style="color:#8be9fd">px</span> <span style="color:#bd93f9">0</span> <span style="color:#8be9fd;font-style:italic">rgba</span>(<span style="color:#bd93f9">241</span>, <span style="color:#bd93f9">241</span>, <span style="color:#bd93f9">241</span>, <span style="color:#bd93f9">0.35</span>);
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">font-size</span>: <span style="color:#bd93f9">11</span><span style="color:#8be9fd">px</span>;
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">border-radius</span>: <span style="color:#bd93f9">4</span><span style="color:#8be9fd">px</span>;
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">box-sizing</span>: <span style="color:#ff79c6">border-box</span>;
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>.<span style="color:#50fa7b">aa-suggestion</span> {
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">padding</span>: <span style="color:#bd93f9">12</span><span style="color:#8be9fd">px</span>;
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">border-top</span>: <span style="color:#bd93f9">1</span><span style="color:#8be9fd">px</span> <span style="color:#ff79c6">solid</span> <span style="color:#8be9fd;font-style:italic">rgba</span>(<span style="color:#bd93f9">228</span>, <span style="color:#bd93f9">228</span>, <span style="color:#bd93f9">228</span>, <span style="color:#bd93f9">0.6</span>);
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">cursor</span>: <span style="color:#ff79c6">pointer</span>;
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">-webkit-</span><span style="color:#ff79c6">transition</span>: <span style="color:#bd93f9">.2</span><span style="color:#8be9fd">s</span>;
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">transition</span>: <span style="color:#bd93f9">.2</span><span style="color:#8be9fd">s</span>;
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">display</span>: <span style="color:#ff79c6">-webkit-</span>box;
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">display</span>: <span style="color:#ff79c6">-ms-</span>flexbox;
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">display</span>: <span style="color:#ff79c6">flex</span>;
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">-webkit-</span>box-pack: <span style="color:#ff79c6">justify</span>;
</span></span><span style="display:flex;"><span>      <span style="color:#ff79c6">-ms-</span>flex-pack: <span style="color:#ff79c6">justify</span>;
</span></span><span style="display:flex;"><span>          <span style="color:#ff79c6">justify-content</span>: <span style="color:#ff79c6">space-between</span>;
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">-webkit-</span>box-align: <span style="color:#ff79c6">center</span>;
</span></span><span style="display:flex;"><span>      <span style="color:#ff79c6">-ms-</span>flex-align: <span style="color:#ff79c6">center</span>;
</span></span><span style="display:flex;"><span>          <span style="color:#ff79c6">align-items</span>: <span style="color:#ff79c6">center</span>;
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>.<span style="color:#50fa7b">aa-suggestion</span>:hover<span style="color:#ff79c6">,</span> .<span style="color:#50fa7b">aa-suggestion</span>.<span style="color:#50fa7b">aa-cursor</span> {
</span></span><span style="display:flex;"><span>    <span style="color:#ff79c6">background-color</span>: <span style="color:#8be9fd;font-style:italic">rgba</span>(<span style="color:#bd93f9">241</span>, <span style="color:#bd93f9">241</span>, <span style="color:#bd93f9">241</span>, <span style="color:#bd93f9">0.35</span>);
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>.<span style="color:#50fa7b">aa-suggestion</span> <span style="color:#ff79c6">&gt;</span> <span style="color:#ff79c6">span</span>:first-child {
</span></span><span style="display:flex;"><span>    <span style="color:#ff79c6">color</span>: <span style="color:#bd93f9">#333</span>;
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>.<span style="color:#50fa7b">aa-suggestion</span> <span style="color:#ff79c6">&gt;</span> <span style="color:#ff79c6">span</span>:last-child {
</span></span><span style="display:flex;"><span>    <span style="color:#ff79c6">text-transform</span>: <span style="color:#ff79c6">uppercase</span>;
</span></span><span style="display:flex;"><span>    <span style="color:#ff79c6">color</span>: <span style="color:#bd93f9">#a9a9a9</span>;
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>.<span style="color:#50fa7b">aa-suggestion</span> <span style="color:#ff79c6">&gt;</span> <span style="color:#ff79c6">span</span>:first-child <span style="color:#ff79c6">em</span><span style="color:#ff79c6">,</span> .<span style="color:#50fa7b">aa-suggestion</span> <span style="color:#ff79c6">&gt;</span> <span style="color:#ff79c6">span</span>:last-child <span style="color:#ff79c6">em</span> {
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">font-weight</span>: <span style="color:#bd93f9">700</span>;
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">font-style</span>: <span style="color:#ff79c6">normal</span>;
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">background-color</span>: <span style="color:#8be9fd;font-style:italic">rgba</span>(<span style="color:#bd93f9">58</span>, <span style="color:#bd93f9">150</span>, <span style="color:#bd93f9">207</span>, <span style="color:#bd93f9">0.1</span>);
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">padding</span>: <span style="color:#bd93f9">2</span><span style="color:#8be9fd">px</span> <span style="color:#bd93f9">0</span> <span style="color:#bd93f9">2</span><span style="color:#8be9fd">px</span> <span style="color:#bd93f9">2</span><span style="color:#8be9fd">px</span>;
</span></span><span style="display:flex;"><span>}
</span></span></code></pre></div><p>這一步如果剛剛是建立一個新的 <code>search.css</code>的話，要到 <code>layout/partails/head.html</code> 內將剛剛寫好的 css 引入。若是在<code>main.scss</code>內則不用。</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-html" data-lang="html"><span style="display:flex;"><span>  &lt;<span style="color:#ff79c6">link</span> <span style="color:#50fa7b">rel</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">&#34;stylesheet&#34;</span> <span style="color:#50fa7b">href</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">&#34;{{ &#34;</span> <span style="color:#50fa7b">css</span>/<span style="color:#50fa7b">search</span>.<span style="color:#50fa7b">css</span>&#34; | <span style="color:#50fa7b">absURL</span> }}&#34; /&gt;
</span></span></code></pre></div><p>到這邊基本設定都已經完成，接著就可以試用看看自己的文章搜索功能拉！！</p>
<p>
  <img src="https://i.imgur.com/cnGIXay.png" alt="search block" loading="lazy" decoding="async">

</p>
<br>
<p>如果無法使用或有更好的建議都歡迎留言給我，感謝收看！！</p>
<br>
<br>
<h4 id="references">References</h4><hr>
<ul>
<li><a href="https://www.qikqiak.com/post/hugo-integrated-algolia-search/" target="_blank">Hugo 集成 Algolia 搜索</a></li>
<li><a href="https://edward852.github.io/post/hugo%E6%B7%BB%E5%8A%A0algolia%E6%90%9C%E7%B4%A2%E6%94%AF%E6%8C%81/" target="_blank">Hugo添加Algolia搜索支持</a></li>
<li><a href="https://forestry.io/blog/search-with-algolia-in-hugo/" target="_blank">Static site search with Hugo + Algolia</a></li>
</ul>
]]></content:encoded>
    </item>
    <item>
      <title>咖啡的價值 - 是買咖啡還是買時間？</title>
      <link>https://ianlifelab.com/life/a-cup-of-coffee/</link>
      <pubDate>Fri, 12 Mar 2021 00:00:00 +0000</pubDate>
      <dc:creator>Ian Tsai</dc:creator>
      <guid>https://ianlifelab.com/life/a-cup-of-coffee/</guid>
      <category>生活隨筆</category>
      <description>寧靜的下午坐在咖啡廳、喝著咖啡、看著書，思考這『這杯咖啡的價值』是什麼。</description>
      <content:encoded><![CDATA[<br>
<br>
<h4 id="到咖啡廳唸書">到咖啡廳唸書？</h4><hr>
<p>很多人喜歡到咖啡廳看書，曾經的我覺得，為何要花錢去咖啡廳看書？自制力高一點在家看不就好了，何必要多花一筆錢？那到底有沒有必要去咖啡廳唸書？</p>
<br>
<br>
<h4 id="一杯咖啡的價值">一杯咖啡的價值</h4><hr>
<p>每到週末，我就會想著：『難得的假日，休息一下再來做事好了！』，然後就晚上了。是自制力不足，
還是目標不夠明確所以才導致這個結果呢？</p>
<p><a href="https://ianlifelab.com/read/atom-habits/" target="_blank"><strong>原子習慣</strong></a>一書中提到，『改變習慣的四大法則之一：讓習慣淺而易見』，反之則是讓壞習慣視而不見。那這跟在家看書有什麼關係？</p>
<p>想想自己房間裡的環境，看到床就想睡一下、看到電動就想玩一下、走到客廳看到電視就想看一會兒&hellip;諸如此類，當我們想要在這充滿誘惑的環境做一些不屬於這個環境的事情，想必會有一定的難度，而我們的時間往往就這樣被消磨掉了。一個週末、兩個週末&hellip;這樣的時間累計起來，其實也是滿可觀的。</p>
<p>而我開始對『一杯咖啡的價值』開始有了不一樣的想法。他是單純菜單上的 60/100 元的『飲料』，還是他可以想成，你用這樣的價錢，控制了你一天的『時間』？</p>
<br>
<br>
<h4 id="資產與負債">資產與負債</h4><hr>
<p>一杯咖啡，怎麼會講到資產與負債？我認為這兩件事的觀念有點相似。現在常聽到人問，『什麼是資產？你的房子是不是？你的車子是不是？』，而答案通常會是『房子那來出租，就會是資產；車子拿來載客人，也是資產。』</p>
<p>那我買一杯咖啡，到底是投資還是消費？</p>
<br>
<br>
<h4 id="一杯咖啡換一天的時間">一杯咖啡換一天的時間</h4><hr>
<pre><code>高爾基：『時間是最公平合理的，它從不多給誰一分。』
</code></pre>
<p>老天給我們最公平的東西就是——時間，每個人都有，無論是貧賤、富貴，每個人都是一樣的，而時間是公平的，我們每個人能擁有它，但因為使用它的方式不同，導致在『相同』的時間內，沒有相同的結果。</p>
<p>而現在，我用一杯咖啡，換到一個沒有誘惑的環境、換來一天的時間，這件事讓我不再認為『到咖啡廳唸書』是個浪費錢的事情，反而覺得是非常值得的『投資』。</p>
]]></content:encoded>
    </item>
    <item>
      <title>為了遇見40歲更好的自己</title>
      <link>https://ianlifelab.com/read/40-years-old/</link>
      <pubDate>Sun, 21 Feb 2021 00:00:00 +0000</pubDate>
      <dc:creator>Ian Tsai</dc:creator>
      <guid>https://ianlifelab.com/read/40-years-old/</guid>
      <category>學習成長</category>
      <description>40歲是『夾心世代』。為了過得更好，留下對自己真正必要的東西。</description>
      <content:encoded><![CDATA[<h3 id="讀後心得">讀後心得</h3><p>40歲是夾在上一代及下一代中間的一個世代，為了讓自己過得更好，需要學會捨棄一些事物。但往往要捨棄時，又會有些捨不得。就像要整理自己的衣櫃時，拿出很多衣服可能一年內根本沒拿出來穿過，但卻捨不得丟掉，又把他放回衣櫃裡佔去了衣櫃的空間。而哪些東西是該捨棄，而為什麼要捨棄，捨棄之後可以達到什麼效果，這本書基本上都有提到。書中有5個大章節、43個小章節，我挑幾個感受比較深的項目拿來舉例。</p>
<h4 id="1-勇於捨棄提升人生的品質">1. 『勇於捨棄』，提升人生的品質</h4><p>我還年輕，我全身都很健康；這個我以前就是這樣做，絕對沒問題。這些『自信』、『堅持』大家一定都有過。但隨著時間的推移，我們會變老，時代會進步。需要不段的定期檢討、不段的求新求變，才不會被社會淘汰。華特·迪士尼說過：『迪士尼永遠不會完工，維持現狀等於是一種退步。』</p>
<h4 id="2-習慣改變行動自然改變">2. 習慣改變，行動自然改變</h4><p>一開始有提到整理衣櫃。根據調查顯示，女性的衣櫃內有70%的衣服是沒再穿的，只有30%的衣服是平常有再穿的。作者建議把這70%的衣服丟掉，留下真正<strong>需要</strong>的30%。而依照人的習慣，還是會把這70%補滿。但補滿以後的衣櫃，裡面都是<strong>會穿</strong>出去的衣服。套用到人身上也一樣，應該適時的檢視並捨棄自己不需要的東西，補充新事物給自己。</p>
<h4 id="3-透過選擇與集中提升工作的成果">3. 透過『選擇與集中』，提升工作的成果</h4><p>在樹立目標的時候，我們往往會想要達成多件事情。例如：每個月要讀完一本書、英文要考到多益900分、要養成每天運動的習慣、要學習股票投資&hellip;等等。但之後會發現每件事都有做，但都沒有達到目標。研究顯示，人類大腦無法同時判斷多組情報，因此三種左右是最適當的數量。所以我們可以把要執行的事情縮至三項，將其他事項暫時捨去，才可以專心的去完成每件事。此外，也要定期的檢視自己的執行項目是否有需要或是可更新成更好的方法，並定期的記錄下來。</p>
<h4 id="4-調整時間分配改變成長速度">4. 調整『時間分配』，改變成長速度</h4><p>『我今天要看完一個線上課程，但上完班好累喔，休息一下再看好了！』，相信大家都有這個經驗，但休息一下之後，就準備洗澡睡覺了。如何避免這種情況發生呢？書裡建議我們，事先『算好』時間。也就是將你要做的是用時間去切分好，如下圖：</p>
<p>
  <img src="https://i.imgur.com/Pt8IewR.png" alt="Schedule" loading="lazy" decoding="async">

</p>
<p>應先固定好時間，再決定做什麼事。但通常我們無法『完美的』執行我們的計劃，有時可能會有突發狀況發生，所以也必須捨棄『行程必須百分之百完成』的義務感，並不是沒做到就是失敗，而是要有些彈性。</p>
<h4 id="5-和真正重要的人建立人際關係">5. 和『真正重要的人』建立人際關係</h4><p>到新公司就減少與前公司聚餐的次數，因為『如果不跟現在公司的同事打好關係，就無法創造成果。』。</p>
<p>並不是到了新公司就要捨棄舊同事，而是現在是與新同事共事，要與他們一起創造成果。但如何與同事來往更加緊密？書中提到『讓溝通戲劇性改變之三種應可棄的東西』</p>
<ol>
<li>為了得到旁人的信賴，請停止『責人』：在遇到問題時，應該先思考自己可以付出什麼，而非先找戰犯。</li>
<li>若想討人喜歡，請捨棄『想討人喜歡的念頭』：應該適時的表達意見，而不是一直考慮是否會被對方討厭。</li>
<li>想要聽見對方的真心話，請捨棄『先入為主的觀念』：產品好不好用，是客戶決定。我們應該思考『這件事由誰判定？』而非自己先覺得對方怎想。</li>
</ol>
<hr>
<p>『改變行為一定可以改變結果』，書中讓我們思考什麼該東西是現在應該捨去的。例如：過度的自信、自我堅持、達到目標途中不需要的東西&hellip;等等。專心對待眼前最重要的事物，才有辦法完成目標。這本書雖然有些觀點個人是稍微不認同，不過整體來說是不錯的，可以看看！！</p>
<p>
  <img src="https://i.imgur.com/oo2Bdif.jpg" alt="Book" loading="lazy" decoding="async">

</p>
<h3 id="閱讀筆記">閱讀筆記</h3><p>若想參考閱讀筆記，可以點 <strong><a href="https://www.notion.so/2021-02-40-efa2ce155f2344df8c702ad109afafec" target="_blank">這裡</a></strong> 參考</p>
]]></content:encoded>
    </item>
    <item>
      <title>原子習慣 - 細微改變帶來巨大成就</title>
      <link>https://ianlifelab.com/read/atom-habits/</link>
      <pubDate>Sat, 23 Jan 2021 00:00:00 +0000</pubDate>
      <dc:creator>Ian Tsai</dc:creator>
      <guid>https://ianlifelab.com/read/atom-habits/</guid>
      <category>學習成長</category>
      <description>在華氏 25 度的房間內有著一塊冰塊，隨著房間溫度緩慢的增加，26、27、28 。冰塊依然在，29、30、31 直到 32 （攝氏零度）度時，冰塊開始融化。如同習慣一樣，一開始可能沒有太大的差異，但從某一刻開始就會起到巨大的變化。</description>
      <content:encoded><![CDATA[<h3 id="讀後心得">讀後心得</h3><pre tabindex="0"><code>如果每天進步百分之一，持續一年你會進步37倍；
每天退步百分之一，一年後就會弱化到趨近於零，時間會放大成功與失敗之間的差距。
</code></pre><p>當我們想著要改變的時候，往往想著馬上就可以看到成果，但都忽略一些細微的改變。想想每年年初都訂立一些目標，我 TOEIC 要考 950 以上、我今年要變成巨巨&hellip;等等。但到了年底發現，我今年跟去年好像一樣都沒變，怎麼會這樣？</p>
<p><code>決定成功與失敗的，並非目標，而是系統。</code></p>
<p>例如：Ａ跟Ｂ都想要有六塊腹肌，但一年後，Ａ成功的練出了腹肌，Ｂ卻跟原本的一樣。差異在哪？</p>
<p>Ａ一周至少上六天健身房，且有做飲食控管並記錄每天的身體數值、飲食及訓練項目。Ｂ一週也上六天健身房，但卻沒有控制飲食以及紀錄。兩個人的目標相同，但執行方式（系統）卻不一樣，所以造就了不同的結果。</p>
<p>可以發現，雖然定了目標，但系統執行的方向不對，所呈現的結果也不一樣。</p>
<p>我們往往把注意力過於放在目標上，忽略了如何執行這件事。而對於想要改變習慣，卻因為習慣過於難執行，又或是生活讓我們只能安於現狀，最後只能回歸原樣。</p>
<pre tabindex="0"><code>提示 &lt;&gt; 讓提示顯而易見 
渴望 &lt;&gt; 讓習慣有吸引力 
回應 &lt;&gt; 讓行動輕而易舉 
獎賞 &lt;&gt; 讓獎賞令人滿足
</code></pre><p>這是書中提到養成習慣的四種方法，簡單用這四個法則來延續六塊肌例子：</p>
<ul>
<li>
<p>讓提示顯而易見</p>
<p>為了養成健身的習慣，將健身手套放在書桌上，看到手套就知道該去健身房了。</p>
</li>
<li>
<p>讓習慣有吸引力</p>
<p>去健身房只是為了健身？No！當然是為了看健身妹子跟巨巨的肌肉拉，所以會為了這件事所以去健身房。</p>
</li>
<li>
<p>讓行動輕而易舉</p>
<p>選一間離家走路三分鐘的健身房，這樣就算下雨也只需要撐個傘就可以到了。</p>
</li>
<li>
<p>讓獎賞令人滿足</p>
<p>每天持續記錄自己的體態，看到改變而帶來的成就感。（或是因為去健身房脫單）</p>
</li>
</ul>
<p>而壞習慣就反向而行，這樣就可以比較有效的建立自己的習慣。</p>
<p>看完這本書後，練習了一下覺得其實滿受用的。書中也有舉許多實例，讓法則比較淺顯易懂。滿值得入手的一本好書，不愧是暢銷前幾名。</p>
<h3 id="閱讀筆記">閱讀筆記</h3><p>因為是心得所以不想打太多筆記類的東西，若想看閱讀筆記，可以點 <strong><a href="https://www.notion.so/2021-01-c5c683debfe84df39b7c16de9e4bf808" target="_blank">這裡</a></strong> 參考</p>
]]></content:encoded>
    </item>
    <item>
      <title>用Bootstrap &#43; Masonry &#43; magnific Popup架設個人相簿</title>
      <link>https://ianlifelab.com/build-blog/build_photograph_in_hugo/</link>
      <pubDate>Wed, 06 May 2020 00:00:00 +0000</pubDate>
      <dc:creator>Ian Tsai</dc:creator>
      <guid>https://ianlifelab.com/build-blog/build_photograph_in_hugo/</guid>
      <category>科技探索</category>
      <description>剛開始架設網站時就決定要在網站內架一個相簿，這篇會分享如何用Bootstrap+Masonry+magnificPopup建構屬於你自己的相片牆
</description>
      <content:encoded><![CDATA[<p>剛開始架設網站時就決定要在網站內架一個相簿，這篇會分享如何用Bootstrap+Masonry+magnificPopup建構屬於你自己的相片牆</p>
<p>當初試了滿多種方法，從一開始硬去寫到使用modal＋carousel，最後使用Bootstrap+Masonry+magnificPopup才達到我想要的效果。
之後可能還是會加上輪播功能，但我們得先有相簿，才有辦法輪播ＸＤ</p>
<p>那我們就開始吧！</p>
<p><em>以下都以我這個主題為例子，中間會給一些註解方便大家閱讀</em></p>
<hr>
<ul>
<li>
<h4 id="事前準備">事前準備</h4></li>
</ul>
<p>因為我們是建立在Hugo的網站上，所以我們得先把這個相簿的連結按鈕、content資料夾及html layout準備好</p>
<br>
<h5 id="0-1-連結按鈕">0-1. 連結按鈕</h5><p>連結的部分就不在多說，去header裡面複製一個就可以了，按自己喜好做設定！</p>
<h5 id="0-2-content-folder">0-2. content folder</h5><p>複製about的資料夾，裡面會有一個<code>_index.md</code>的檔案。</p>
<p><em>若沒有about，可以找一個適合的複製來使用</em></p>
<pre tabindex="0"><code>.
|- content
    |- about
        |- _index.md
    |- blog
    |- photograph (new)
        |- _index.md (new)

(只列出會用到的資料夾路徑)
</code></pre><h5 id="0-3-html-layout">0-3. html layout</h5><p>以我的為例子，我是將about的layout複製一份，改名叫photograph，然後一樣放到layout的資料夾下，與about同層，
啟動server後你會發現photograph跟about頁面會一樣，這樣就算準備完成了。</p>
<pre tabindex="0"><code>.
|-layout
    |- _default
        |- photo-single.html (new)
    |- about
        |- list.html
    |- partials
        |- head.html
    |- photograph (new)
        |- list.html (new)

(只列出會用到的資料夾路徑)
</code></pre><hr>
<p>**基本上about是一頁式的網頁，但我們想要的可以用不同的md檔去呈現不同篇的照片，所以這個部分需要做改寫。</p>
<h5 id="0-新增測試照片的markdown">0. 新增測試照片的markdown</h5><p>在<code>photograph/</code>底下新增幾個markdown的檔案作為等等要呈現的照片範例，參數設定如下（可以行更改）</p>
<pre tabindex="0"><code>+++
title = &#34;日本 明治神宮&#34;
date = &#34;2017-10-09&#34;
cover = &#34;image_url&#34;
+++
</code></pre><ul>
<li>
<h4 id="開始製作">開始製作</h4></li>
</ul>
<h5 id="1-_partialsheadhtml引入js-css">1. _partials/head.html引入js, css</h5><div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-html" data-lang="html"><span style="display:flex;"><span>  &lt;<span style="color:#ff79c6">link</span> <span style="color:#50fa7b">rel</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">&#34;stylesheet&#34;</span> <span style="color:#50fa7b">href</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">&#34;../css/magnific-popup.css&#34;</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#ff79c6">script</span> <span style="color:#50fa7b">src</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">&#34;https://code.jquery.com/jquery-3.3.1.slim.min.js&#34;</span> <span style="color:#50fa7b">integrity</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">&#34;sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo&#34;</span> <span style="color:#50fa7b">crossorigin</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">&#34;anonymous&#34;</span>&gt;&lt;/<span style="color:#ff79c6">script</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#ff79c6">script</span> <span style="color:#50fa7b">src</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">&#34;../js/jquery.magnific-popup.js&#34;</span>&gt;&lt;/<span style="color:#ff79c6">script</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#ff79c6">script</span> <span style="color:#50fa7b">src</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">&#34;https://masonry.desandro.com/masonry.pkgd.js&#34;</span>&gt;&lt;/<span style="color:#ff79c6">script</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#ff79c6">script</span> <span style="color:#50fa7b">src</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">&#34;https://desandro.github.io/imagesloaded/imagesloaded.pkgd.min.js&#34;</span>&gt;&lt;/<span style="color:#ff79c6">script</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#ff79c6">link</span> <span style="color:#50fa7b">rel</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">&#34;stylesheet&#34;</span> <span style="color:#50fa7b">href</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">&#34;https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css&#34;</span> <span style="color:#50fa7b">integrity</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">&#34;sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T&#34;</span> <span style="color:#50fa7b">crossorigin</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">&#34;anonymous&#34;</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#ff79c6">script</span> <span style="color:#50fa7b">src</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">&#34;https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js&#34;</span> <span style="color:#50fa7b">integrity</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">&#34;sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1&#34;</span> <span style="color:#50fa7b">crossorigin</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">&#34;anonymous&#34;</span>&gt;&lt;/<span style="color:#ff79c6">script</span>&gt;
</span></span></code></pre></div><p>magnific的js, css可以到<a href="https://github.com/dimsemenov/Magnific-Popup" target="_blank">here</a>下載</p>
<h5 id="2-改寫photographlisthtml">2. 改寫photograph/list.html</h5><p>找到<code>&lt;div id=&quot;content&quot;&gt;</code>，這裡面就是連接<code>/content/photograph/_index.md</code>的內文所呈現的區塊</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-html" data-lang="html"><span style="display:flex;"><span>&lt;<span style="color:#ff79c6">main</span> <span style="color:#50fa7b">id</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">&#34;site-main&#34;</span>&gt;
</span></span><span style="display:flex;"><span>    &lt;<span style="color:#ff79c6">article</span> <span style="color:#50fa7b">class</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">&#34;post&#34;</span>&gt;
</span></span><span style="display:flex;"><span>        &lt;<span style="color:#ff79c6">header</span>&gt;
</span></span><span style="display:flex;"><span>            &lt;<span style="color:#ff79c6">div</span> <span style="color:#50fa7b">class</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">&#34;title&#34;</span>&gt;
</span></span><span style="display:flex;"><span>                {{ if $.Scratch.Get &#34;h1&#34; }}
</span></span><span style="display:flex;"><span>                &lt;<span style="color:#ff79c6">h1</span>&gt;&lt;<span style="color:#ff79c6">a</span> <span style="color:#50fa7b">href</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">&#34;{{ .RelPermalink }}&#34;</span>&gt;{{ .Title }}&lt;/<span style="color:#ff79c6">a</span>&gt;&lt;/<span style="color:#ff79c6">h1</span>&gt;
</span></span><span style="display:flex;"><span>                {{ $.Scratch.Set &#34;h1&#34; false }}
</span></span><span style="display:flex;"><span>                {{ else }}
</span></span><span style="display:flex;"><span>                &lt;<span style="color:#ff79c6">h2</span>&gt;&lt;<span style="color:#ff79c6">a</span> <span style="color:#50fa7b">href</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">&#34;{{ .RelPermalink }}&#34;</span>&gt;{{ .Title }}&lt;/<span style="color:#ff79c6">a</span>&gt;&lt;/<span style="color:#ff79c6">h2</span>&gt;
</span></span><span style="display:flex;"><span>                {{ end }}
</span></span><span style="display:flex;"><span>                {{ with .Description }}&lt;<span style="color:#ff79c6">p</span>&gt;{{ . }}&lt;/<span style="color:#ff79c6">p</span>&gt;{{ end }}
</span></span><span style="display:flex;"><span>            &lt;/<span style="color:#ff79c6">div</span>&gt;
</span></span><span style="display:flex;"><span>        &lt;/<span style="color:#ff79c6">header</span>&gt;
</span></span><span style="display:flex;"><span>        &lt;<span style="color:#ff79c6">div</span> <span style="color:#50fa7b">id</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">&#34;content&#34;</span>&gt;
</span></span><span style="display:flex;"><span>        {{ .Content }}
</span></span><span style="display:flex;"><span>        &lt;/<span style="color:#ff79c6">div</span>&gt;
</span></span><span style="display:flex;"><span>    &lt;/<span style="color:#ff79c6">article</span>&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#ff79c6">main</span>&gt;
</span></span></code></pre></div><p>在</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-html" data-lang="html"><span style="display:flex;"><span>&lt;<span style="color:#ff79c6">div</span> <span style="color:#50fa7b">id</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">&#34;content&#34;</span>&gt;
</span></span><span style="display:flex;"><span>{{ .Content }}
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#ff79c6">div</span>&gt;
</span></span></code></pre></div><p>前面或後面加上（.Content為呈現_index.md的內文，若是不想要的話可以刪除或註解掉）</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-html" data-lang="html"><span style="display:flex;"><span>&lt;<span style="color:#ff79c6">div</span> <span style="color:#50fa7b">class</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">&#34;container&#34;</span>&gt;
</span></span><span style="display:flex;"><span>    &lt;<span style="color:#ff79c6">div</span> <span style="color:#50fa7b">class</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">&#34;row&#34;</span>&gt;
</span></span><span style="display:flex;"><span>    {{ range (where .Site.RegularPages &#34;Section&#34; &#34;photograph&#34;)}}  <span style="color:#6272a4">&lt;!-- 註1 --&gt;</span>
</span></span><span style="display:flex;"><span>    &lt;<span style="color:#ff79c6">div</span> <span style="color:#50fa7b">class</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">&#34;col-md-3&#34;</span>&gt;
</span></span><span style="display:flex;"><span>        &lt;<span style="color:#ff79c6">div</span>&gt;
</span></span><span style="display:flex;"><span>        {{ .Render &#34;photo-single&#34; }} <span style="color:#6272a4">&lt;!-- 註2 --&gt;</span>
</span></span><span style="display:flex;"><span>        &lt;/<span style="color:#ff79c6">div</span>&gt;
</span></span><span style="display:flex;"><span>    &lt;/<span style="color:#ff79c6">div</span>&gt;
</span></span><span style="display:flex;"><span>    {{ end }}
</span></span><span style="display:flex;"><span>    &lt;/<span style="color:#ff79c6">div</span>&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#ff79c6">div</span>&gt;
</span></span></code></pre></div><p><em>註1：這行事hugo的語法，抓取所有photpgraph下的.md檔案。（Section就是content內的分類）</em></p>
<p><em>註2：.Render為將頁面倒到指定頁面，但一定要在<code>layout/_default</code>路徑下的頁面才有作用</em></p>
<h5 id="3-撰寫photo-singlehtml">3. 撰寫photo-single.html</h5><p>寫入</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-html" data-lang="html"><span style="display:flex;"><span>&lt;<span style="color:#ff79c6">div</span>&gt;
</span></span><span style="display:flex;"><span>    &lt;<span style="color:#ff79c6">img</span> <span style="color:#50fa7b">src</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">&#34;{{ .Params.cover }}&#34;</span> <span style="color:#50fa7b">alt</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">&#34;&#34;</span> <span style="color:#50fa7b">class</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">&#34;img-responsive&#34;</span>&gt; <span style="color:#6272a4">&lt;!-- 註3 --&gt;</span>
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#ff79c6">div</span>&gt;
</span></span></code></pre></div><p><em>註1：.Params.cover就是對應到第0步驟的參數</em></p>
<p>到這步驟頁面應該會呈現如下</p>
<p>
  <img src="https://i.imgur.com/CrSHSpa.png" alt="範例1" loading="lazy" decoding="async">

</p>
<h5 id="4-套用masonry">4. 套用masonry</h5><p>在photograph/list.html最下面加上這段script</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-html" data-lang="html"><span style="display:flex;"><span>&lt;<span style="color:#ff79c6">script</span> <span style="color:#50fa7b">src</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">&#34;https://unpkg.com/masonry-layout@4/dist/masonry.pkgd.min.js&#34;</span>&gt;&lt;/<span style="color:#ff79c6">script</span>&gt; <span style="color:#6272a4">&lt;!-- 這如果剛剛有引入就不需要寫 --&gt;</span>
</span></span><span style="display:flex;"><span>&lt;<span style="color:#ff79c6">script</span>&gt;
</span></span><span style="display:flex;"><span>  $(<span style="color:#8be9fd;font-style:italic">function</span>(){
</span></span><span style="display:flex;"><span>    $(<span style="color:#f1fa8c">&#39;.masonry&#39;</span>).masonry({
</span></span><span style="display:flex;"><span>        itemSelector<span style="color:#ff79c6">:</span> <span style="color:#f1fa8c">&#39;.item&#39;</span>
</span></span><span style="display:flex;"><span>      })
</span></span><span style="display:flex;"><span>    });
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#ff79c6">script</span>&gt;
</span></span></code></pre></div><p>然後將masonry, item分別加入class內</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-html" data-lang="html"><span style="display:flex;"><span>&lt;<span style="color:#ff79c6">div</span> <span style="color:#50fa7b">class</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">&#34;container&#34;</span>&gt;
</span></span><span style="display:flex;"><span>    &lt;<span style="color:#ff79c6">div</span> <span style="color:#50fa7b">class</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">&#34;row masonry&#34;</span>&gt;
</span></span><span style="display:flex;"><span>    {{ range (where .Site.RegularPages &#34;Section&#34; &#34;photograph&#34;)}}
</span></span><span style="display:flex;"><span>    &lt;<span style="color:#ff79c6">div</span> <span style="color:#50fa7b">class</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">&#34;col-md-3 item&#34;</span>&gt;
</span></span><span style="display:flex;"><span>        &lt;<span style="color:#ff79c6">div</span> <span style="color:#50fa7b">class</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">&#34;shadow photo-div&#34;</span>&gt;
</span></span><span style="display:flex;"><span>        {{ .Render &#34;photo-single&#34; }}
</span></span><span style="display:flex;"><span>        &lt;/<span style="color:#ff79c6">div</span>&gt;
</span></span><span style="display:flex;"><span>    &lt;/<span style="color:#ff79c6">div</span>&gt;
</span></span><span style="display:flex;"><span>    {{ end }}
</span></span><span style="display:flex;"><span>    &lt;/<span style="color:#ff79c6">div</span>&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#ff79c6">div</span>&gt;
</span></span></code></pre></div><p>更改完後再看一次效果</p>
<p>
  <img src="https://i.imgur.com/JN6czkn.png" alt="範例2" loading="lazy" decoding="async">

</p>
<h5 id="5-套用magnific-popup">5. 套用magnific Popup</h5><p>回到<code>photo-signle.html</code>，最下面加上一段script，然後在最外層的<code>div</code>加上<code>class=&quot;parent-container&quot;</code>。</p>
<p>為了讓圖片有連結，所以在<code>img</code>外加上<code>&lt;a&gt;</code>作為可點擊的連結。</p>
<p>最後為增添一點效果所以在加入<code>title</code>的<code>div</code>。</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-html" data-lang="html"><span style="display:flex;"><span>&lt;<span style="color:#ff79c6">div</span> <span style="color:#50fa7b">class</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">&#34;parent-container&#34;</span>&gt;
</span></span><span style="display:flex;"><span>    &lt;<span style="color:#ff79c6">a</span> <span style="color:#50fa7b">href</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">&#34;{{ .Params.cover }}&#34;</span>&gt;&lt;<span style="color:#ff79c6">img</span> <span style="color:#50fa7b">src</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">&#34;{{ .Params.cover }}&#34;</span> <span style="color:#50fa7b">alt</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">&#34;&#34;</span> <span style="color:#50fa7b">class</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">&#34;img-responsive&#34;</span>&gt;&lt;/<span style="color:#ff79c6">a</span>&gt;
</span></span><span style="display:flex;"><span>    &lt;<span style="color:#ff79c6">div</span> <span style="color:#50fa7b">style</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">&#34;text-align:center; padding: 15px;&#34;</span>&gt;{{ .Params.Title }}&lt;/<span style="color:#ff79c6">div</span>&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#ff79c6">div</span>&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>&lt;<span style="color:#ff79c6">script</span>&gt;
</span></span><span style="display:flex;"><span>  $(<span style="color:#f1fa8c">&#39;.parent-container&#39;</span>).magnificPopup({
</span></span><span style="display:flex;"><span>    delegate<span style="color:#ff79c6">:</span> <span style="color:#f1fa8c">&#39;a&#39;</span>,
</span></span><span style="display:flex;"><span>    type<span style="color:#ff79c6">:</span> <span style="color:#f1fa8c">&#39;image&#39;</span>
</span></span><span style="display:flex;"><span>  });
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#ff79c6">script</span>&gt;
</span></span></code></pre></div><p>最後呈現的效果</p>
<p>
  <img src="https://i.imgur.com/SXMIgzm.png" alt="範例3" loading="lazy" decoding="async">



  <img src="https://i.imgur.com/rgdrDPd.png" alt="範例4" loading="lazy" decoding="async">

</p>
<hr>
<p>為了相簿花了一段時間研究，可能某些部分有些遺漏，有問題都歡迎討論，也希望想要在自己網頁上建立相片牆的人，這篇可以幫助到你！！</p>
<hr>
<ul>
<li>
<h4 id="references">References</h4></li>
</ul>
<ul>
<li><a href="https://dimsemenov.com/plugins/magnific-popup/documentation.html" target="_blank">Magnific Popup Documentation</a></li>
<li><a href="https://www.minwt.com/webdesign-dev/html/16943.html" target="_blank">Bootstrap+Masonry」讓網格系統也支援瀑布流排版</a></li>
</ul>
<hr>]]></content:encoded>
    </item>
    <item>
      <title>部署Hugo個人網頁至GitHub</title>
      <link>https://ianlifelab.com/build-blog/deploy_hugo_on_github/</link>
      <pubDate>Sat, 02 May 2020 00:00:00 +0000</pubDate>
      <dc:creator>Ian Tsai</dc:creator>
      <guid>https://ianlifelab.com/build-blog/deploy_hugo_on_github/</guid>
      <category>科技探索</category>
      <description>之前用Hugo架設個人網站，但架設完成後還是需要部署到一個平台，才有辦法瀏覽， 這篇就來分享如何將網頁部署到GitHub以及途中遇到的一些問題
</description>
      <content:encoded><![CDATA[<p>之前用Hugo架設個人網站，但架設完成後還是需要部署到一個平台，才有辦法瀏覽，
這篇就來分享如何將網頁部署到GitHub以及途中遇到的一些問題</p>
<p>如果還不知道怎麼架設個人頁面的可以參考 <strong><a href="../get_started_hugo">使用HUGO建立個人網頁</a></strong></p>
<p>讓我們繼續看下去!</p>
<p>**<a href="https://gohugo.io/hosting-and-deployment/hosting-on-github/" target="_blank">Hugo GitHub</a>**上有兩個方法，這邊兩種都會介紹！</p>
<pre tabindex="0"><code>User/Organization Pages
(https://&lt;USERNAME|ORGANIZATION&gt;.github.io/)

Project Pages
(https://&lt;USERNAME|ORGANIZATION&gt;.github.io/&lt;PROJECT&gt;/)
</code></pre><ul>
<li>
<h4 id="userorganization-pages">User/Organization Pages</h4></li>
</ul>
<h5 id="1-github建立兩個repository">1. GitHub建立兩個repository</h5><p>首先要先建立兩個repository</p>
<pre tabindex="0"><code>my_blog(可自行命名)                     放你原始Hugo程式
my_account.github.io(用自己的帳號)      放要部署的網頁程式
</code></pre><p>這邊要記得，my_account.github.io這個建立時要選public，若不小心選到private的話可以依照這路徑去更改
<code>Setting &gt; Danger Zone &gt; Make this repository public</code></p>
<h5 id="2-建立部署網頁的資料public">2. 建立部署網頁的資料(/public)</h5><p>回到根目錄，輸入</p>
<pre tabindex="0"><code>hugo
</code></pre><p>根目錄下面就會產生一個public的資料夾，裡面有自動產出的html，這是等等要部署到GitHub的頁面</p>
<p><em>如果你在執行這步驟時，有開啟server，記得要先關閉在執行</em></p>
<h5 id="2-1-設定pages-source">2-1. 設定pages source</h5><p>當你部署完成後，需要將Setting內GitHub Pages的Source指定到master，這樣待會測試時才會有網頁出現

  <figure>
    <img src="https://i.imgur.com/bBzIKlJ.png" alt="GITHUB PAGE" loading="lazy" decoding="async">
    <figcaption>GITHUB PAGE</figcaption>
  </figure>

</p>
<h5 id="3-連接public及my_accountgithubio">3. 連接public及my_account.github.io</h5><pre tabindex="0"><code>cd public
git init
git remote add blog &lt;my_account.github.io_repository&gt; #註1
git add .
git commit -m &#34;first commit&#34;
git push blog master
</code></pre><p>git的部分就不在多做贅述，若有不清楚的可以點<a href="https://git-scm.com/docs" target="_blank">here</a>看看</p>
<p><em>註1：這邊remote name不用origin是因為另一個repo的remote name也會用origin，當初兩個都用一樣，在更新文章(下面會提到)時遇到不少問題，所以索性就用不一樣的名稱，這樣也比較好辨識，這可以照自己的習慣命名。</em></p>
<h5 id="4-將hugo資料夾連接到my_project">4. 將Hugo資料夾連接到my_project</h5><pre tabindex="0"><code>cd ..
git init
git remote add origin &lt;my_project_repository&gt;
git add .
git commit -m &#34;first commit&#34;
git push origin master
</code></pre><p>等待一下，然後輸入https://my_account.github.io/顯示出你的網頁就代表成功囉！</p>
<hr>
<ul>
<li>
<h4 id="project-pages">Project Pages</h4></li>
</ul>
<h5 id="0-設定configtoml">0. 設定config.toml</h5><p>這邊要先更新config內的baseurl</p>
<pre tabindex="0"><code>baseurl                 = &#34;https://my_account.github.io/my_page/&#34; #my_page為等等要建立的repo name，可自行命名
DefaultContentLanguage  = &#34;zh&#34;
title                   = &#34;Ian Blog&#34;
</code></pre><h5 id="1-github建立兩個repository-1">1. GitHub建立兩個repository</h5><p>首先要先建立兩個repository</p>
<pre tabindex="0"><code>my_blog(可自行命名)                   放你原始Hugo程式
my_page(要對應config內的baseurl)      放要部署的網頁程式
</code></pre><p>這邊ㄧ樣要記得，my_page這個建立時要選public，若不小心選到private的話可以依照這路徑去更改</p>
<p><code>Setting &gt; Danger Zone &gt; Make this repository public</code></p>
<h5 id="2-建立部署網頁的資料public-1">2. 建立部署網頁的資料(/public)</h5><p>回到根目錄，輸入</p>
<pre tabindex="0"><code>hugo
</code></pre><p>根目錄下面就會產生一個public的資料夾，裡面有自動產出的html，這是等等要部署到GitHub的頁面</p>
<p><em>如果你在執行這步驟時，有開啟server，記得要先關閉在執行</em></p>
<h5 id="2-1-設定pages-source-1">2-1. 設定pages source</h5><p>當你部署完成後，需要將Setting內GitHub Pages的Source指定到master，這樣待會測試時才會有網頁出現

  <figure>
    <img src="https://i.imgur.com/bBzIKlJ.png" alt="GITHUB PAGE" loading="lazy" decoding="async">
    <figcaption>GITHUB PAGE</figcaption>
  </figure>

</p>
<h5 id="3-連接public及my_accountgithubio-1">3. 連接public及my_account.github.io</h5><pre tabindex="0"><code>cd public
git init
git remote add blog &lt;my_account.github.io_repository&gt; #註1
git add .
git commit -m &#34;first commit&#34;
git push blog master
</code></pre><p>git的部分就不在多做贅述，若有不清楚的可以點<a href="https://git-scm.com/docs" target="_blank">here</a>看看</p>
<p><em>註1：這邊remote name不用origin是因為另一個repo的remote name也會用origin，當初兩個都用一樣，在更新文章(下面會提到)時遇到不少問題，所以索性就用不一樣的名稱，這樣也比較好辨識，這可以照自己的習慣命名。</em></p>
<h5 id="4-將hugo資料夾連接到my_project-1">4. 將Hugo資料夾連接到my_project</h5><pre tabindex="0"><code>cd ..
git init
git remote add origin &lt;my_project_repository&gt;
git add .
git commit -m &#34;first commit&#34;
git push origin master
</code></pre><p>等待一下，然後輸入https://my_account.github.io/顯示出你的網頁就代表成功囉！！</p>
<p>
  <figure>
    <img src="https://i.imgur.com/ErxnUyk.png" alt="page" loading="lazy" decoding="async">
    <figcaption>apge</figcaption>
  </figure>

</p>
<hr>
<ul>
<li>
<h4 id="寫自動化腳本">寫自動化腳本</h4></li>
</ul>
<p>部署成功後的，當然就是開始寫自己的blog拉！</p>
<p>但如果每次發佈都要打一堆指令，個人會覺得很累，所以就來寫個腳本吧ＸＤ</p>
<h5 id="1-建立deploysh">1. 建立deploy.sh</h5><p>在你的根目錄下建立deploy.sh的檔案，然後打開terminal，輸入<code>chmod +x deploy.sh</code>讓他變成可執行的檔案</p>
<h5 id="2-撰寫deploysh">2. 撰寫deploy.sh</h5><pre tabindex="0"><code>#!/bin/sh

set -e

hugo 

cd public

git add .

msg=&#34;rebuilding site $(date)&#34;
if [ -n &#34;$*&#34; ]; then
	msg=&#34;$*&#34;
fi
git commit -m &#34;$msg&#34;

git push blog master #註2
</code></pre><p><em>註2：這邊就會遇到剛提到的remote的問題，如果兩個remote name都叫origin，那在這邊執行時就會有問題，因為原本的repo已經被第二個蓋掉了，所以這邊才用不同的remote去做分類</em></p>
<h5 id="3-更新文章">3. 更新文章</h5><p>假設現在已經寫好文章要更新了
在根目錄下</p>
<pre tabindex="0"><code>git add .
git commit -m &#34;update new post&#34; # 在更新前一定要將你的文章commit才可以往下執行

./depoly.sh
</code></pre><p>這樣就完成拉！！
也不用像一開始打一長串的指令，快速方便又好用！！</p>
<hr>
<ul>
<li>
<h4 id="references">References</h4></li>
</ul>
<ul>
<li><a href="https://gohugo.io/hosting-and-deployment/hosting-on-github/" target="_blank">Host on GitHub</a> 再次感謝官方文件大力贊助播出</li>
</ul>]]></content:encoded>
    </item>
    <item>
      <title>使用Hugo建立個人網頁</title>
      <link>https://ianlifelab.com/build-blog/get_started_hugo/</link>
      <pubDate>Thu, 30 Apr 2020 00:00:00 +0000</pubDate>
      <dc:creator>Ian Tsai</dc:creator>
      <guid>https://ianlifelab.com/build-blog/get_started_hugo/</guid>
      <category>科技探索</category>
      <description>一直有想要寫一些文章記錄生活，身為一個工程師，難免會有想要自己架設的靈魂（？， 最近發現hugo可以快速架站，除了有template以外也可以自己更改裡面的配置 ，對於一個前端小菜鳥來說，算是一大福音ＸＤ，於是開始了這條漫漫長路～
</description>
      <content:encoded><![CDATA[<p>一直有想要寫一些文章記錄生活，身為一個工程師，難免會有想要自己架設的靈魂（？，
最近發現hugo可以快速架站，除了有template以外也可以自己更改裡面的配置
，對於一個前端小菜鳥來說，算是一大福音ＸＤ，於是開始了這條漫漫長路～</p>
<p>&mdash;我是短分隔線&mdash;</p>
<p>以下紀錄是我花了幾天時間估狗各種網站＋自己一直鬼打牆後的一些心得，希望也可以讓大家少踩點雷ＸＤ
然後我是用mac的系統，所以就先介紹mac架設的方法
那就開始介紹吧！！！</p>
<ul>
<li>
<h4 id="開始之前">開始之前</h4></li>
</ul>
<p>首先我們可以先去<a href="https://themes.gohugo.io/" target="_blank">HUGO</a>的官網選擇喜歡的template，我覺得很重要，畢竟是自己要用的，自己喜歡才有動力做下去！！</p>
<hr>
<ul>
<li>
<h4 id="開始搭建你的網站">開始搭建你的網站</h4></li>
</ul>
<h5 id="1-打開你的terminal安裝hugo輸入">1. 打開你的terminal，安裝hugo，輸入：</h5><pre tabindex="0"><code>brew install hugo
</code></pre><p><em>brew 是mac的管理套件 如果沒裝過的話 可以去<a href="https://brew.sh/index_zh-tw" target="_blank">這裏</a>看看或是複製以下程式碼到你的terminal執行</em></p>
<pre tabindex="0"><code>/bin/bash -c &#34;$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)&#34;
</code></pre><h5 id="2-建立新網站">2. 建立新網站</h5><pre tabindex="0"><code>hugo new site project-name
cd project-name
</code></pre><p>project-name可以自訂，看你喜歡叫什麼都行！</p>
<h5 id="2-1-資料夾結構">2-1. 資料夾結構</h5><p>建立好網站以後，來看看一下結構，這邊當矇逼滿久的，想說就順便記錄比較清楚</p>
<pre tabindex="0"><code>project
├── archetypes
├── content # 文章的家
├── layout # html的家
├── static # js, css 的家
├── themes # 等等template要clone下來住的家
</code></pre><p>就先把大項目列出來，他的行距實在太大，我覺得很醜，但目前找不到方法只好先加減用了ＱＱ</p>
<p>（之後來研究一下Markdown好了</p>
<h5 id="3-新增themehttpsthemesgohugoio-我是用hugo-future-imperfect-slimhttpsthemesgohugoiohugo-future-imperfect-slim">3. 新增<a href="https://themes.gohugo.io/">Theme</a>: 我是用<a href="https://themes.gohugo.io/hugo-future-imperfect-slim/">Hugo Future Imperfect Slim</a></h5><pre tabindex="0"><code>cd themes
git clone https://github.com/pacollins/hugo-future-imperfect-slim.git
</code></pre><p>要等待一下下，完成後你就可以到你的themes內看看你選擇的template的資料有些啥</p>
<h5 id="4-將指定資料取代根目錄資料">4. 將指定資料取代根目錄資料</h5><p>這邊就要將你載下來的一些檔案取代你原本空的檔案</p>
<pre tabindex="0"><code>themes/layouts 取代原本的 layouts
themes/exampleSite/static 取代原本的 static
themes/exampleSite/content 這些範例文章可以放到content內
themes/exampleSite/config.toml 取代原本的config.toml
</code></pre><p>這樣基本上你的模板就完成了</p>
<h5 id="4-1-設定configtoml">4-1. 設定config.toml</h5><p>基本上整個網站的參數設定都在這，隨著每個網站的不同，設置方式會有差異，這邊就說一個最基本的設定</p>
<pre tabindex="0"><code>baseurl                 = &#34;https://github_account.github.io/&#34;
DefaultContentLanguage  = &#34;zh&#34;
title                   = &#34;Ian Blog&#34;
</code></pre><p>因為我們之後要部署到github，所以baseurl就先把他設定好，一定要用github的帳號，才連接的上去</p>
<h5 id="5-新增文章">5. 新增文章</h5><pre tabindex="0"><code>hugo new content/blog/first-post.md
</code></pre><p>新增的路徑依照你的主題不同會有不同的路徑，新增完後就可以開始寫你的文章了，而文章是用Markdown語法去寫</p>
<h5 id="6-啟動server">6. 啟動server</h5><p>回到你的根目錄，然後輸入：</p>
<pre tabindex="0"><code>hugo server
</code></pre><p>跑完後你會看到一行http://localhost:1313/，點下去看看，若有頁面顯示，<strong>恭喜你</strong>已經完成了你的網站了！！！</p>
<hr>
<p>剛開始分享可能有些不清楚的地方，自己的網站也還沒說非常完整，不過就把它當做成就一步一步解，也是頗有成就感！</p>
<p>本來想要把部署github也寫在一起，但好像篇幅會有點長，所以就下一篇再來分享怎麼把自己的hugo推到github上吧！!</p>
<hr>
<ul>
<li>
<h4 id="references">References</h4></li>
</ul>
<ul>
<li><a href="https://gohugo.io/getting-started/quick-start/" target="_blank">HUGO Doc</a> 感謝官方文件大力贊助播出</li>
</ul>
<hr>]]></content:encoded>
    </item>
  </channel>
</rss>
