<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>江边的旱鸭子</title>
  
  <subtitle>Blog of John Chou</subtitle>
  <link href="https://joouis.com/atom.xml" rel="self"/>
  
  <link href="https://joouis.com/"/>
  <updated>2025-03-25T08:22:48.446Z</updated>
  <id>https://joouis.com/</id>
  
  <author>
    <name>John Chou</name>
    
  </author>
  
  <generator uri="https://hexo.io/">Hexo</generator>
  
  <entry>
    <title>Unpacking the Data Structure of Manus Session</title>
    <link href="https://joouis.com/2025/unpacking-the-data-structure-of-manus-session/"/>
    <id>https://joouis.com/2025/unpacking-the-data-structure-of-manus-session/</id>
    <published>2025-03-21T06:23:27.000Z</published>
    <updated>2025-03-25T08:22:48.446Z</updated>
    
    <content type="html"><![CDATA[<p>The data comes from these cases:</p><ul><li><a href="https://manus.im/share/xFgpHb15vKqfRPWIs3JJPJ">Comprehensive Tesla Stock Analysis and Investment Insights</a></li><li><a href="https://manus.im/share/1ICnnOiC9L3HMK07vG0iDn">Comparative Analysis of Travel Insurance Policies</a></li><li><a href="https://manus.im/share/AN3pVVcq4qHnWbC55XhAYB">Interview Schedule Creation for April 13-15</a></li><li><a href="https://manus.im/share/AWssWxITcsrl70js5L8LgU">SEO Audit and Optimization Report for Karpathy’s Website</a></li><li><a href="https://manus.im/share/YIRZaLUfghVxGCN7dE6hbI">Customer Form for B2B Gen AI Consulting Firms</a></li></ul><p>The history data of a session is provided by the API <code>https://api.manus.im/api/chat/getSession?sessionId=xxx</code>.</p><h2 id="Data"><a href="#Data" class="headerlink" title="Data"></a>Data</h2><figure class="highlight json"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line">  <span class="attr">&quot;id&quot;</span><span class="punctuation">:</span> <span class="string">&quot;xFgpHb15vKqfRPWIs3JJPJ&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;title&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Comprehensive Tesla Stock Analysis and Investment Insights&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;iconInfo&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">    <span class="attr">&quot;$typeName&quot;</span><span class="punctuation">:</span> <span class="string">&quot;session.v1.IconInfo&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;url&quot;</span><span class="punctuation">:</span> <span class="string">&quot;https://files.manuscdn.com/assets/icon/session/apple-stocks-data.svg&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;bgColorLight&quot;</span><span class="punctuation">:</span> <span class="string">&quot;#E43573&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;bgColorDark&quot;</span><span class="punctuation">:</span> <span class="string">&quot;#3F3F3F&quot;</span></span><br><span class="line">  <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;agentTaskMode&quot;</span><span class="punctuation">:</span> <span class="number">1</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;events&quot;</span><span class="punctuation">:</span> <span class="punctuation">[</span><span class="punctuation">]</span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br></pre></td></tr></table></figure><p>Q: how many kinds of <code>agentTaskMode</code>?</p><h2 id="Events"><a href="#Events" class="headerlink" title="Events"></a>Events</h2><h3 id="chat"><a href="#chat" class="headerlink" title="chat"></a>chat</h3><ul><li><code>sender</code>: “user”, “assistant”</li><li><code>content</code>: Markdown format text</li></ul><figure class="highlight json"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br></pre></td><td class="code"><pre><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line">    <span class="attr">&quot;id&quot;</span><span class="punctuation">:</span> <span class="string">&quot;vG1n3GhvODVIjGoJ12J2GS&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;type&quot;</span><span class="punctuation">:</span> <span class="string">&quot;chat&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;timestamp&quot;</span><span class="punctuation">:</span> <span class="number">1741060890011</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;sender&quot;</span><span class="punctuation">:</span> <span class="string">&quot;user&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;messageType&quot;</span><span class="punctuation">:</span> <span class="string">&quot;text&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;content&quot;</span><span class="punctuation">:</span> <span class="string">&quot;I&#x27;d like a thorough analysis of Tesla stock, including:\n\nSummary: Company overview, key metrics, performance data and investment recommendations\nFinancial Data: Revenue trends, profit margins, balance sheet and cash flow analysis\nMarket Sentiment: Analyst ratings, sentiment indicators and news impact\nTechnical Analysis: Price trends, technical indicators and support/resistance levels\nCompare Assets: Market share and financial metrics vs. key competitors\nValue Investor: Intrinsic value, growth potential and risk factors\nInvestment Thesis: SWOT analysis and recommendations for different investor types&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;attachments&quot;</span><span class="punctuation">:</span> <span class="punctuation">[</span><span class="punctuation">]</span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br><span class="line"></span><br><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line">    <span class="attr">&quot;type&quot;</span><span class="punctuation">:</span> <span class="string">&quot;chat&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;messageType&quot;</span><span class="punctuation">:</span> <span class="string">&quot;text&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;attachments&quot;</span><span class="punctuation">:</span> <span class="punctuation">[</span><span class="punctuation">]</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;content&quot;</span><span class="punctuation">:</span> <span class="string">&quot;I&#x27;ll help you create a comprehensive analysis of Tesla stock. I&#x27;ll gather the latest financial data, market sentiment, technical analysis, competitive comparisons, and develop investment recommendations. This will take some time to research thoroughly, but I&#x27;ll work on it right away and provide you with a detailed report.&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;id&quot;</span><span class="punctuation">:</span> <span class="string">&quot;4hJnLZZjels3kckkeY8WFQ&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;sender&quot;</span><span class="punctuation">:</span> <span class="string">&quot;assistant&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;timestamp&quot;</span><span class="punctuation">:</span> <span class="number">1741060892861</span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br></pre></td></tr></table></figure><p>With attachments created before.</p><figure class="highlight json"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br></pre></td><td class="code"><pre><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line">  <span class="attr">&quot;id&quot;</span><span class="punctuation">:</span> <span class="string">&quot;JhkoA2vSJq7PUdIAVBpFzM&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;type&quot;</span><span class="punctuation">:</span> <span class="string">&quot;chat&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;timestamp&quot;</span><span class="punctuation">:</span> <span class="number">1740979547968</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;sender&quot;</span><span class="punctuation">:</span> <span class="string">&quot;user&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;messageType&quot;</span><span class="punctuation">:</span> <span class="string">&quot;text&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;content&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Here is the survey for available interview times from April 13 to April 15. Please create an interview schedule for me with two interview sessions each day (one in the morning and one in the afternoon). The number of candidates in each session should be as evenly distributed as possible, and the schedule should accommodate each student&#x27;s available time. Please provide the most reasonable interview schedule.&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;attachments&quot;</span><span class="punctuation">:</span> <span class="punctuation">[</span></span><br><span class="line">      <span class="punctuation">&#123;</span></span><br><span class="line">          <span class="attr">&quot;id&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Oe6qO9ScdztzivCMXvdstA&quot;</span><span class="punctuation">,</span></span><br><span class="line">          <span class="attr">&quot;url&quot;</span><span class="punctuation">:</span> <span class="string">&quot;https://private-us-east-1.manuscdn.com/users/309511696588767621/uploads/Oe6qO9ScdztzivCMXvdstA_na1fn_aW50ZXJ2aWV3X3N1cnZleV9maW5hbA.xlsx?Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9wcml2YXRlLXVzLWVhc3QtMS5tYW51c2Nkbi5jb20vdXNlcnMvMzA5NTExNjk2NTg4NzY3NjIxL3VwbG9hZHMvT2U2cU85U2NkenR6aXZDTVh2ZHN0QV9uYTFmbl9hVzUwWlhKMmFXVjNYM04xY25abGVWOW1hVzVoYkEueGxzeCIsIkNvbmRpdGlvbiI6eyJEYXRlTGVzc1RoYW4iOnsiQVdTOkVwb2NoVGltZSI6MTc0MTU4MzM0OH19fV19&amp;Key-Pair-Id=K2HSFNDJXOU9YS&amp;Signature=cnywaO-NMF9UdLF36czp5PW63BPGpOJvJvyrFCiLsgzw6H3wI1yoRQ8l4giGhDltF45BA1I9QCXHac3RdBTBOHRqd3Pm8lz1SU3CVxcYnkrRwVqjpIjrN0u7J69y-cSlclrh5IQs0UnnEXcaBMFgcqG9uG4yQvPHdMi-UXTkYmTSmx-q0VqfuM4gGxWTMC~p4WXGLcJf0wvSDcE4QNkrDbtNTnmGC-Dnoy5U3ett5eX8ySx27PLwJ8~aKBvQMRK28Wkgc52mvBroUWBSm9yMz~QtviRy77DL2qf6G9dG-Qar~Bv6iCRATYYRc7iGnFTizlEVrTA1Lnm-nn-HWGJ4YA__&quot;</span><span class="punctuation">,</span></span><br><span class="line">          <span class="attr">&quot;type&quot;</span><span class="punctuation">:</span> <span class="string">&quot;file&quot;</span><span class="punctuation">,</span></span><br><span class="line">          <span class="attr">&quot;filename&quot;</span><span class="punctuation">:</span> <span class="string">&quot;interview_survey_final.xlsx&quot;</span><span class="punctuation">,</span></span><br><span class="line">          <span class="attr">&quot;contentType&quot;</span><span class="punctuation">:</span> <span class="string">&quot;application/vnd.openxmlformats-officedocument.spreadsheetml.sheet&quot;</span><span class="punctuation">,</span></span><br><span class="line">          <span class="attr">&quot;contentLength&quot;</span><span class="punctuation">:</span> <span class="number">11353</span></span><br><span class="line">      <span class="punctuation">&#125;</span></span><br><span class="line">  <span class="punctuation">]</span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br><span class="line"></span><br><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line">  <span class="attr">&quot;id&quot;</span><span class="punctuation">:</span> <span class="string">&quot;KX9zvuTApeB3f9cYpVcKEl&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;type&quot;</span><span class="punctuation">:</span> <span class="string">&quot;chat&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;timestamp&quot;</span><span class="punctuation">:</span> <span class="number">1740986701272</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;sender&quot;</span><span class="punctuation">:</span> <span class="string">&quot;user&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;messageType&quot;</span><span class="punctuation">:</span> <span class="string">&quot;text&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;content&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Please analyze these travel policies and provide a comparative table with key dimensions to clearly highlight the differences between them.&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;attachments&quot;</span><span class="punctuation">:</span> <span class="punctuation">[</span></span><br><span class="line">      <span class="punctuation">&#123;</span></span><br><span class="line">          <span class="attr">&quot;id&quot;</span><span class="punctuation">:</span> <span class="string">&quot;oUO7cTCVFHVvQVOkXF0i5q&quot;</span><span class="punctuation">,</span></span><br><span class="line">          <span class="attr">&quot;url&quot;</span><span class="punctuation">:</span> <span class="string">&quot;https://private-us-east-1.manuscdn.com/users/309511696588767621/uploads/oUO7cTCVFHVvQVOkXF0i5q_na1fn_dHJhdmVsLXBvbGljeS1kb2N1bWVudA.pdf?Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9wcml2YXRlLXVzLWVhc3QtMS5tYW51c2Nkbi5jb20vdXNlcnMvMzA5NTExNjk2NTg4NzY3NjIxL3VwbG9hZHMvb1VPN2NUQ1ZGSFZ2UVZPa1hGMGk1cV9uYTFmbl9kSEpoZG1Wc0xYQnZiR2xqZVMxa2IyTjFiV1Z1ZEEucGRmIiwiQ29uZGl0aW9uIjp7IkRhdGVMZXNzVGhhbiI6eyJBV1M6RXBvY2hUaW1lIjoxNzQxNTkwNTAxfX19XX0_&amp;Key-Pair-Id=K2HSFNDJXOU9YS&amp;Signature=FQaTrhK0ZTzHWF8QW4Vneobb26Tuzv6CDgFmVUfU2dL375FrH2TaJXIzI68wgHx0NYYMRSiqaALsOdnI0r7Hmam4QBV-7IIrsMlFuIAkRsN7pAlR-POZ6kHBN55L5fVrzV00tyQSymwXW75vRyHGgxpPxcu8HsAJHZBYh9pnelxRKe6eKZcL5fjU2M8qDDKOP7a1CpckPioDwzHAIgQ5y8a67HJmkqw7enTf16J7b6cOoqJW0Ba3eiz~7A83J1QjKDuMj15teiKqjtWMR5XP-V8z~r3iXILCGKWC0kJDxH8QP6Gds~TopIU3MtRC7lT39e2D308gl5Aygi8NE1ypNw__&quot;</span><span class="punctuation">,</span></span><br><span class="line">          <span class="attr">&quot;type&quot;</span><span class="punctuation">:</span> <span class="string">&quot;file&quot;</span><span class="punctuation">,</span></span><br><span class="line">          <span class="attr">&quot;filename&quot;</span><span class="punctuation">:</span> <span class="string">&quot;travel-policy-document.pdf&quot;</span><span class="punctuation">,</span></span><br><span class="line">          <span class="attr">&quot;contentType&quot;</span><span class="punctuation">:</span> <span class="string">&quot;application/pdf&quot;</span><span class="punctuation">,</span></span><br><span class="line">          <span class="attr">&quot;contentLength&quot;</span><span class="punctuation">:</span> <span class="number">779625</span></span><br><span class="line">      <span class="punctuation">&#125;</span></span><br><span class="line">  <span class="punctuation">]</span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br><span class="line"></span><br><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line">  <span class="attr">&quot;type&quot;</span><span class="punctuation">:</span> <span class="string">&quot;chat&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;messageType&quot;</span><span class="punctuation">:</span> <span class="string">&quot;text&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;attachments&quot;</span><span class="punctuation">:</span> <span class="punctuation">[</span></span><br><span class="line">    <span class="punctuation">&#123;</span></span><br><span class="line">      <span class="attr">&quot;url&quot;</span><span class="punctuation">:</span> <span class="string">&quot;https://private-us-east-1.manuscdn.com/sessionFile/xFgpHb15vKqfRPWIs3JJPJ/sandbox/CZjwux2HibnKjGKnS2xC3V_1741061983802_na1fn_L2hvbWUvdWJ1bnR1L3Rlc2xhX2FuYWx5c2lzL2NoYXJ0cy90ZXNsYV9oaXN0b3JpY2FsX3ByaWNl.png?Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9wcml2YXRlLXVzLWVhc3QtMS5tYW51c2Nkbi5jb20vc2Vzc2lvbkZpbGUveEZncEhiMTV2S3FmUlBXSXMzSkpQSi9zYW5kYm94L0Naand1eDJIaWJuS2pHS25TMnhDM1ZfMTc0MTA2MTk4MzgwMl9uYTFmbl9MMmh2YldVdmRXSjFiblIxTDNSbGMyeGhYMkZ1WVd4NWMybHpMMk5vWVhKMGN5OTBaWE5zWVY5b2FYTjBiM0pwWTJGc1gzQnlhV05sLnBuZyIsIkNvbmRpdGlvbiI6eyJEYXRlTGVzc1RoYW4iOnsiQVdTOkVwb2NoVGltZSI6MTc0MzEyODIwOH19fV19&amp;Key-Pair-Id=K2HSFNDJXOU9YS&amp;Signature=QObuZr3pgEcIYMAdT1xhHBF0wvusk73og2YC8YHEOnnyYsWxMLVCk0I2byrMJrzekDUVmnmsfxoUX8Wei0srzeaoi9hlb~bgbGTiZjyDCV3t~8Fsoz5z8rbIr6L8STQsib3kRlLQB2dC44nibbfWTGbzrnXX~cPsoayQyVq0jHK851brNQywIp2sHx8d~1DgzFxXi3iKuLdyFad9ZQbutjMxoX1Mii-XdHJ9229yP0FSkQYO0XzrFeFtR0bGmdZSMkvwPJXR-qn~XWpSgEeiSxOZ2N~ZtaH1gHMq~z~at7f0WzJkPlkm3ULCz6oD74MnhVwHZxBFtdb6zDcBDZeOOA__&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;path&quot;</span><span class="punctuation">:</span> <span class="string">&quot;/home/ubuntu/tesla_analysis/charts/tesla_historical_price.png&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;type&quot;</span><span class="punctuation">:</span> <span class="string">&quot;image&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;filename&quot;</span><span class="punctuation">:</span> <span class="string">&quot;tesla_historical_price.png&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;timestamp&quot;</span><span class="punctuation">:</span> <span class="number">1741061983802</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;contentType&quot;</span><span class="punctuation">:</span> <span class="string">&quot;image/png&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;contentLength&quot;</span><span class="punctuation">:</span> <span class="number">47609</span></span><br><span class="line">    <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="punctuation">&#123;</span></span><br><span class="line">      <span class="attr">&quot;url&quot;</span><span class="punctuation">:</span> <span class="string">&quot;https://private-us-east-1.manuscdn.com/sessionFile/xFgpHb15vKqfRPWIs3JJPJ/sandbox/CZjwux2HibnKjGKnS2xC3V_1741061983802_na1fn_L2hvbWUvdWJ1bnR1L3Rlc2xhX2FuYWx5c2lzL2NoYXJ0cy90ZXNsYV9jYXBpdGFsX3N0cnVjdHVyZQ.png?Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9wcml2YXRlLXVzLWVhc3QtMS5tYW51c2Nkbi5jb20vc2Vzc2lvbkZpbGUveEZncEhiMTV2S3FmUlBXSXMzSkpQSi9zYW5kYm94L0Naand1eDJIaWJuS2pHS25TMnhDM1ZfMTc0MTA2MTk4MzgwMl9uYTFmbl9MMmh2YldVdmRXSjFiblIxTDNSbGMyeGhYMkZ1WVd4NWMybHpMMk5vWVhKMGN5OTBaWE5zWVY5allYQnBkR0ZzWDNOMGNuVmpkSFZ5WlEucG5nIiwiQ29uZGl0aW9uIjp7IkRhdGVMZXNzVGhhbiI6eyJBV1M6RXBvY2hUaW1lIjoxNzQzMTI4MjA4fX19XX0_&amp;Key-Pair-Id=K2HSFNDJXOU9YS&amp;Signature=rOY3ZIfUl3nxTME0-OmihUdCCh~syAj3USviGwc1sPEF40XTwFIXpd-~oa1UBgfoNPB3pR6T-e6diYUdX96KlShuEOjAloeLALOgWkErX2J4mlW8dOtBOFNo0~YTk0R~GeLHDtwT7OwbhrqvW1OMHZIk7foUjLDoDitGY8sIlf4Fpt7uDk3auN0WlVxer3aE5FvgIhrZbSSbYHeh5OCAvDXQ4cxgvYxzzkg3HH0bBmUF3sdogn6ZW4gPv-sWy15tgjcjYKCakUUMZUTP4todL6HgLH~ZCKJ2DKJjNJDiRiN6ns8LuUed8HO60Ao7LrlRhsdyZtK3dXZxhgKBwiY2Ng__&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;path&quot;</span><span class="punctuation">:</span> <span class="string">&quot;/home/ubuntu/tesla_analysis/charts/tesla_capital_structure.png&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;type&quot;</span><span class="punctuation">:</span> <span class="string">&quot;image&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;filename&quot;</span><span class="punctuation">:</span> <span class="string">&quot;tesla_capital_structure.png&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;timestamp&quot;</span><span class="punctuation">:</span> <span class="number">1741061983802</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;contentType&quot;</span><span class="punctuation">:</span> <span class="string">&quot;image/png&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;contentLength&quot;</span><span class="punctuation">:</span> <span class="number">30300</span></span><br><span class="line">    <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="punctuation">&#123;</span></span><br><span class="line">      <span class="attr">&quot;url&quot;</span><span class="punctuation">:</span> <span class="string">&quot;https://private-us-east-1.manuscdn.com/sessionFile/xFgpHb15vKqfRPWIs3JJPJ/sandbox/CZjwux2HibnKjGKnS2xC3V_1741061983802_na1fn_L2hvbWUvdWJ1bnR1L3Rlc2xhX2FuYWx5c2lzL2NoYXJ0cy90ZXNsYV9yZXZlbnVlX2dyb3d0aA.png?Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9wcml2YXRlLXVzLWVhc3QtMS5tYW51c2Nkbi5jb20vc2Vzc2lvbkZpbGUveEZncEhiMTV2S3FmUlBXSXMzSkpQSi9zYW5kYm94L0Naand1eDJIaWJuS2pHS25TMnhDM1ZfMTc0MTA2MTk4MzgwMl9uYTFmbl9MMmh2YldVdmRXSjFiblIxTDNSbGMyeGhYMkZ1WVd4NWMybHpMMk5vWVhKMGN5OTBaWE5zWVY5eVpYWmxiblZsWDJkeWIzZDBhQS5wbmciLCJDb25kaXRpb24iOnsiRGF0ZUxlc3NUaGFuIjp7IkFXUzpFcG9jaFRpbWUiOjE3NDMxMjgyMDh9fX1dfQ__&amp;Key-Pair-Id=K2HSFNDJXOU9YS&amp;Signature=TOhZSNCFinyvfUW3pT1RxOHa9v5KMyMbZ0Tjcy6OzzIoW8JTUa7S0KNZskgUtuoBnqimVaEyqAVVida9-ZBSGpbwTocJH8IygaUZSkpRhtKDtrlUPGUHV~bZyYkURRkc7zo57C1HO9u3g3gfc55jjBJLZzfU4m2ht92Hfe0vwAoPLMoyjXSR7wgs1vGjQ4SR97N6pOFh-CA3q4BRPEPyk5BiX0F6EJjoXeAD5gF0lNBhhtMwXSar0u6kEAMPcgxdGfKGIe5B-4YGYi2DEhe4v7o26fNW-2oeJpL8kLpbLYY-0qYGpex8JyQCpDNbxwujkC-mMd3qizXjUqTkahyb2g__&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;path&quot;</span><span class="punctuation">:</span> <span class="string">&quot;/home/ubuntu/tesla_analysis/charts/tesla_revenue_growth.png&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;type&quot;</span><span class="punctuation">:</span> <span class="string">&quot;image&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;filename&quot;</span><span class="punctuation">:</span> <span class="string">&quot;tesla_revenue_growth.png&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;timestamp&quot;</span><span class="punctuation">:</span> <span class="number">1741061983802</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;contentType&quot;</span><span class="punctuation">:</span> <span class="string">&quot;image/png&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;contentLength&quot;</span><span class="punctuation">:</span> <span class="number">32821</span></span><br><span class="line">    <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="punctuation">&#123;</span></span><br><span class="line">      <span class="attr">&quot;url&quot;</span><span class="punctuation">:</span> <span class="string">&quot;https://private-us-east-1.manuscdn.com/sessionFile/xFgpHb15vKqfRPWIs3JJPJ/sandbox/CZjwux2HibnKjGKnS2xC3V_1741061983802_na1fn_L2hvbWUvdWJ1bnR1L3Rlc2xhX2FuYWx5c2lzL2NoYXJ0cy90ZXNsYV9wcm9maXRhYmlsaXR5X21hcmdpbnM.png?Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9wcml2YXRlLXVzLWVhc3QtMS5tYW51c2Nkbi5jb20vc2Vzc2lvbkZpbGUveEZncEhiMTV2S3FmUlBXSXMzSkpQSi9zYW5kYm94L0Naand1eDJIaWJuS2pHS25TMnhDM1ZfMTc0MTA2MTk4MzgwMl9uYTFmbl9MMmh2YldVdmRXSjFiblIxTDNSbGMyeGhYMkZ1WVd4NWMybHpMMk5vWVhKMGN5OTBaWE5zWVY5d2NtOW1hWFJoWW1sc2FYUjVYMjFoY21kcGJuTS5wbmciLCJDb25kaXRpb24iOnsiRGF0ZUxlc3NUaGFuIjp7IkFXUzpFcG9jaFRpbWUiOjE3NDMxMjgyMDh9fX1dfQ__&amp;Key-Pair-Id=K2HSFNDJXOU9YS&amp;Signature=R4ECYV9kqx2Ktfx-lxMTyd7mpF-6EWqY~rjd1nu7g417pHP2XiAlANwDhCXHowizuu276LWMY5sv79w4qqxYkIZMcH~awKcEov~HD8jirSDvjAX7hD4Q3uiDw-gsoTF4705Ic3liw655GSGb35XDUOEDN6ml15szhqi9xP4XaqFVeMfdqXelYHldYrLQyB0h~2TggYHpeEdOHFGX7ea96N9CdbV3X3tT37gD5iLUkAJjnnx~ny0oF26Eflj1L0YdzwSK~tpC-VZYZl9js1vTd4J2FGbyz9yp3CZyTvz0inUt-WnmcrVCS1M7KFGYrtf5U3S75p7sdf6dpncZWgrGzw__&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;path&quot;</span><span class="punctuation">:</span> <span class="string">&quot;/home/ubuntu/tesla_analysis/charts/tesla_profitability_margins.png&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;type&quot;</span><span class="punctuation">:</span> <span class="string">&quot;image&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;filename&quot;</span><span class="punctuation">:</span> <span class="string">&quot;tesla_profitability_margins.png&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;timestamp&quot;</span><span class="punctuation">:</span> <span class="number">1741061983802</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;contentType&quot;</span><span class="punctuation">:</span> <span class="string">&quot;image/png&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;contentLength&quot;</span><span class="punctuation">:</span> <span class="number">61140</span></span><br><span class="line">    <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="punctuation">&#123;</span></span><br><span class="line">      <span class="attr">&quot;url&quot;</span><span class="punctuation">:</span> <span class="string">&quot;https://private-us-east-1.manuscdn.com/sessionFile/xFgpHb15vKqfRPWIs3JJPJ/sandbox/CZjwux2HibnKjGKnS2xC3V_1741061983802_na1fn_L2hvbWUvdWJ1bnR1L3Rlc2xhX2FuYWx5c2lzL2NoYXJ0cy90ZXNsYV9jYXNoX2Zsb3dfYW5hbHlzaXM.png?Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9wcml2YXRlLXVzLWVhc3QtMS5tYW51c2Nkbi5jb20vc2Vzc2lvbkZpbGUveEZncEhiMTV2S3FmUlBXSXMzSkpQSi9zYW5kYm94L0Naand1eDJIaWJuS2pHS25TMnhDM1ZfMTc0MTA2MTk4MzgwMl9uYTFmbl9MMmh2YldVdmRXSjFiblIxTDNSbGMyeGhYMkZ1WVd4NWMybHpMMk5vWVhKMGN5OTBaWE5zWVY5allYTm9YMlpzYjNkZllXNWhiSGx6YVhNLnBuZyIsIkNvbmRpdGlvbiI6eyJEYXRlTGVzc1RoYW4iOnsiQVdTOkVwb2NoVGltZSI6MTc0MzEyODIwOH19fV19&amp;Key-Pair-Id=K2HSFNDJXOU9YS&amp;Signature=P0GyMLi38cIp0ssnWkQYaG1g1wuSfFOv1yg8jIrse7HGQlMaWFUi2pQKA9IDrZv-UXDqitqy-S1-lSfRECFdUXI0sxqfSg8rlMfl9afGySE~5lYlue4Ym9ZGJeyZ3eqVhDP2sy-P9iY~QWmE5qSdBbcCMnIhK6fv4xQVXNXMW9-swcaM0yYaUyfYuYXNUe8taMIUjBnYJZu~rJ57zAfh8VgAoKrcVl-W3xdBP~Qk-2zZUk6jmcf8uZArUjnZ1L45KjQhmzh15D7B9b8zXIlIXX0s4ygnMHdQ6twYjVG-ITHOO1XqSjD8fEVt0ufEAV6UxgyM3lZkf4A~Ce9ol6BPRg__&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;path&quot;</span><span class="punctuation">:</span> <span class="string">&quot;/home/ubuntu/tesla_analysis/charts/tesla_cash_flow_analysis.png&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;type&quot;</span><span class="punctuation">:</span> <span class="string">&quot;image&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;filename&quot;</span><span class="punctuation">:</span> <span class="string">&quot;tesla_cash_flow_analysis.png&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;timestamp&quot;</span><span class="punctuation">:</span> <span class="number">1741061983802</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;contentType&quot;</span><span class="punctuation">:</span> <span class="string">&quot;image/png&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;contentLength&quot;</span><span class="punctuation">:</span> <span class="number">44464</span></span><br><span class="line">    <span class="punctuation">&#125;</span></span><br><span class="line">  <span class="punctuation">]</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;content&quot;</span><span class="punctuation">:</span> <span class="string">&quot;I&#x27;ve completed the financial data collection and analysis for Tesla. Here&#x27;s what I&#x27;ve gathered:\n\n1. Historical Stock Data: I&#x27;ve retrieved Tesla&#x27;s stock price history from Yahoo Finance, including key metrics like the current price ($284.65), 52-week high ($488.54), and 52-week low ($138.80). I&#x27;ve created visualizations of the price trends and calculated volatility metrics.\n\n2. Revenue Analysis: Tesla has shown remarkable growth, with revenue increasing from $24.6 billion in 2019 to $96.8 billion in 2023, representing a strong compound annual growth rate.\n\n3. Profitability Metrics: I&#x27;ve analyzed Tesla&#x27;s gross margins, operating margins, and net margins over the past five years, showing their progression from negative operating income in 2019 to substantial profitability in recent years.\n\n4. Balance Sheet Strength: Tesla has significantly improved its financial position, reducing debt while building cash reserves to over $29 billion by 2023.\n\n5. Cash Flow Analysis: The company has demonstrated strong cash generation capabilities with positive and growing free cash flow despite significant capital expenditures.\n\n6. R&amp;D and Capital Investments: Tesla continues to invest heavily in research and development and production capacity expansion.\n\nI&#x27;m now moving on to analyze market sentiment for Tesla, including analyst ratings, price targets, and news impact on the stock. This will give us insight into how the market perceives Tesla&#x27;s future prospects.&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;id&quot;</span><span class="punctuation">:</span> <span class="string">&quot;CZjwux2HibnKjGKnS2xC3V&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;sender&quot;</span><span class="punctuation">:</span> <span class="string">&quot;assistant&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;timestamp&quot;</span><span class="punctuation">:</span> <span class="number">1741061983997</span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br></pre></td></tr></table></figure><p>Ask for approval by <code>requestDeployActionId</code>.</p><figure class="highlight json"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line">  <span class="attr">&quot;type&quot;</span><span class="punctuation">:</span> <span class="string">&quot;chat&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;messageType&quot;</span><span class="punctuation">:</span> <span class="string">&quot;text&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;attachments&quot;</span><span class="punctuation">:</span> <span class="punctuation">[</span><span class="punctuation">]</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;requestDeployActionId&quot;</span><span class="punctuation">:</span> <span class="string">&quot;toolu_01Xea7dTETZUtxWThJB9Ggsi&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;content&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Manus 正在尝试将位于 `/home/ubuntu/tesla_analysis/dashboard` 的服务部署到公网上。请通过点击按钮确认您是否同意。&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;id&quot;</span><span class="punctuation">:</span> <span class="string">&quot;YCrGxLFvxLLJlGHKSfx8zg&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;sender&quot;</span><span class="punctuation">:</span> <span class="string">&quot;assistant&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;timestamp&quot;</span><span class="punctuation">:</span> <span class="number">1741065199191</span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br></pre></td></tr></table></figure><p>Text output result.</p><figure class="highlight json"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br></pre></td><td class="code"><pre><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line">  <span class="attr">&quot;type&quot;</span><span class="punctuation">:</span> <span class="string">&quot;chat&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;messageType&quot;</span><span class="punctuation">:</span> <span class="string">&quot;text&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;attachments&quot;</span><span class="punctuation">:</span> <span class="punctuation">[</span></span><br><span class="line">      <span class="punctuation">&#123;</span></span><br><span class="line">          <span class="attr">&quot;url&quot;</span><span class="punctuation">:</span> <span class="string">&quot;https://private-us-east-1.manuscdn.com/sessionFile/1ICnnOiC9L3HMK07vG0iDn/sandbox/17M5PpfEyRmhkYuQKEN1rD_1740987315310_na1fn_L2hvbWUvdWJ1bnR1L3RyYXZlbF9wb2xpY3lfYW5hbHlzaXMvdHJhdmVsX2luc3VyYW5jZV9jb21wYXJpc29uX2FuYWx5c2lz.md?Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9wcml2YXRlLXVzLWVhc3QtMS5tYW51c2Nkbi5jb20vc2Vzc2lvbkZpbGUvMUlDbm5PaUM5TDNITUswN3ZHMGlEbi9zYW5kYm94LzE3TTVQcGZFeVJtaGtZdVFLRU4xckRfMTc0MDk4NzMxNTMxMF9uYTFmbl9MMmh2YldVdmRXSjFiblIxTDNSeVlYWmxiRjl3YjJ4cFkzbGZZVzVoYkhsemFYTXZkSEpoZG1Wc1gybHVjM1Z5WVc1alpWOWpiMjF3WVhKcGMyOXVYMkZ1WVd4NWMybHoubWQiLCJDb25kaXRpb24iOnsiRGF0ZUxlc3NUaGFuIjp7IkFXUzpFcG9jaFRpbWUiOjE3NDM0OTMwMDV9fX1dfQ__&amp;Key-Pair-Id=K2HSFNDJXOU9YS&amp;Signature=S6sY4GEiJ7Ewfuqs0guIKF~Zz8fn~0FJbrO5fFLB6eFs~s9HxhGbL12~waVslQr17phRTyMNE80r1Ygn4pG9NUYYccTIZFDCgbicCs3Yz0o2CjnnYoRJYuqDfwtwG7B5NmX8A2ClkwJe6QnDVGOuHWM0z~GgBRpHKJHU11dTCw2dOltuRzoiWKIrKrBoXW3Q60mesiI3Fszv9tjhtlT6g52YKVGLlrR6pWXSHrd219mUfp73P~Pa4DkmaTf5~46hNgbWw06jomVvd7K2TgrsIFlwx9DJ812ZCNZwy~4mJz7JYPTBi4P0CLLfv1izeTHewytWeY8SMIPtYhsnlZSd7Q__&quot;</span><span class="punctuation">,</span></span><br><span class="line">          <span class="attr">&quot;path&quot;</span><span class="punctuation">:</span> <span class="string">&quot;/home/ubuntu/travel_policy_analysis/travel_insurance_comparison_analysis.md&quot;</span><span class="punctuation">,</span></span><br><span class="line">          <span class="attr">&quot;type&quot;</span><span class="punctuation">:</span> <span class="string">&quot;file&quot;</span><span class="punctuation">,</span></span><br><span class="line">          <span class="attr">&quot;filename&quot;</span><span class="punctuation">:</span> <span class="string">&quot;travel_insurance_comparison_analysis.md&quot;</span><span class="punctuation">,</span></span><br><span class="line">          <span class="attr">&quot;timestamp&quot;</span><span class="punctuation">:</span> <span class="number">1740987315310</span><span class="punctuation">,</span></span><br><span class="line">          <span class="attr">&quot;contentType&quot;</span><span class="punctuation">:</span> <span class="string">&quot;text/markdown&quot;</span><span class="punctuation">,</span></span><br><span class="line">          <span class="attr">&quot;contentLength&quot;</span><span class="punctuation">:</span> <span class="number">10605</span></span><br><span class="line">      <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="punctuation">&#123;</span></span><br><span class="line">          <span class="attr">&quot;url&quot;</span><span class="punctuation">:</span> <span class="string">&quot;https://private-us-east-1.manuscdn.com/sessionFile/1ICnnOiC9L3HMK07vG0iDn/sandbox/17M5PpfEyRmhkYuQKEN1rD_1740987315310_na1fn_L2hvbWUvdWJ1bnR1L3RyYXZlbF9wb2xpY3lfYW5hbHlzaXMvdHJhdmVsX2luc3VyYW5jZV9jb21wYXJpc29uX3RhYmxl.md?Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9wcml2YXRlLXVzLWVhc3QtMS5tYW51c2Nkbi5jb20vc2Vzc2lvbkZpbGUvMUlDbm5PaUM5TDNITUswN3ZHMGlEbi9zYW5kYm94LzE3TTVQcGZFeVJtaGtZdVFLRU4xckRfMTc0MDk4NzMxNTMxMF9uYTFmbl9MMmh2YldVdmRXSjFiblIxTDNSeVlYWmxiRjl3YjJ4cFkzbGZZVzVoYkhsemFYTXZkSEpoZG1Wc1gybHVjM1Z5WVc1alpWOWpiMjF3WVhKcGMyOXVYM1JoWW14bC5tZCIsIkNvbmRpdGlvbiI6eyJEYXRlTGVzc1RoYW4iOnsiQVdTOkVwb2NoVGltZSI6MTc0MzQ5MzAwNX19fV19&amp;Key-Pair-Id=K2HSFNDJXOU9YS&amp;Signature=n4xbqL2MlOZaIArjsBB8Jjsrh3cEhvhV1Iiv0KRFVOc1gPPNeRUV6IeZDuoE2zogIvlp8Q41p3TMljG-h5~~QMTulSzgM5iV5b~GT7mn23o9oG0mlwQa9yTblV4rZ4BaFgqM0OFBlUs7LfABjQZnRoRxcd0m4xm18dGFdbeTkPvskQh3DQwmS0GKx~wfB9OBpTeAJOqaeuJJXC-1i7ekC~nH1v5dupBMZbk0~gBL6VgDCN785W05zB8AaOgS80RzUuMXowqkKYzsVo6FP7wZgtkGnWnG5~aJVhqkEAZ7k87YI12TOVGnCc-gqosHqoiDCnmAYKj1qEQoyNCVzZZW2w__&quot;</span><span class="punctuation">,</span></span><br><span class="line">          <span class="attr">&quot;path&quot;</span><span class="punctuation">:</span> <span class="string">&quot;/home/ubuntu/travel_policy_analysis/travel_insurance_comparison_table.md&quot;</span><span class="punctuation">,</span></span><br><span class="line">          <span class="attr">&quot;type&quot;</span><span class="punctuation">:</span> <span class="string">&quot;file&quot;</span><span class="punctuation">,</span></span><br><span class="line">          <span class="attr">&quot;filename&quot;</span><span class="punctuation">:</span> <span class="string">&quot;travel_insurance_comparison_table.md&quot;</span><span class="punctuation">,</span></span><br><span class="line">          <span class="attr">&quot;timestamp&quot;</span><span class="punctuation">:</span> <span class="number">1740987315310</span><span class="punctuation">,</span></span><br><span class="line">          <span class="attr">&quot;contentType&quot;</span><span class="punctuation">:</span> <span class="string">&quot;text/markdown&quot;</span><span class="punctuation">,</span></span><br><span class="line">          <span class="attr">&quot;contentLength&quot;</span><span class="punctuation">:</span> <span class="number">4098</span></span><br><span class="line">      <span class="punctuation">&#125;</span></span><br><span class="line">  <span class="punctuation">]</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;content&quot;</span><span class="punctuation">:</span> <span class="string">&quot;I&#x27;ve completed the comparative analysis of the four travel insurance policies you provided. The analysis includes a comprehensive breakdown of key dimensions such as medical coverage, trip protection, baggage coverage, personal accident and liability, special benefits, plan structure, and additional features.\n\nI&#x27;ve created a detailed report that highlights the strengths and unique offerings of each policy, along with key insights for each dimension and specific recommendations based on different traveler needs.\n\nHere&#x27;s the full comparative analysis document and the supporting comparison table.&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;id&quot;</span><span class="punctuation">:</span> <span class="string">&quot;17M5PpfEyRmhkYuQKEN1rD&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;sender&quot;</span><span class="punctuation">:</span> <span class="string">&quot;assistant&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;timestamp&quot;</span><span class="punctuation">:</span> <span class="number">1740987315791</span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br><span class="line"></span><br><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line">  <span class="attr">&quot;type&quot;</span><span class="punctuation">:</span> <span class="string">&quot;chat&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;messageType&quot;</span><span class="punctuation">:</span> <span class="string">&quot;text&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;attachments&quot;</span><span class="punctuation">:</span> <span class="punctuation">[</span></span><br><span class="line">      <span class="punctuation">&#123;</span></span><br><span class="line">          <span class="attr">&quot;url&quot;</span><span class="punctuation">:</span> <span class="string">&quot;https://private-us-east-1.manuscdn.com/sessionFile/AN3pVVcq4qHnWbC55XhAYB/sandbox/myZ92j2wqYkDtJWabMe6pl_1740979879402_na1fn_L2hvbWUvdWJ1bnR1L3NjaGVkdWxlX3ZhbGlkYXRpb24.txt?Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9wcml2YXRlLXVzLWVhc3QtMS5tYW51c2Nkbi5jb20vc2Vzc2lvbkZpbGUvQU4zcFZWY3E0cUhuV2JDNTVYaEFZQi9zYW5kYm94L215WjkyajJ3cVlrRHRKV2FiTWU2cGxfMTc0MDk3OTg3OTQwMl9uYTFmbl9MMmh2YldVdmRXSjFiblIxTDNOamFHVmtkV3hsWDNaaGJHbGtZWFJwYjI0LnR4dCIsIkNvbmRpdGlvbiI6eyJEYXRlTGVzc1RoYW4iOnsiQVdTOkVwb2NoVGltZSI6MTc0MzQ5MzMwMn19fV19&amp;Key-Pair-Id=K2HSFNDJXOU9YS&amp;Signature=iRnP0nf6jevr5v84yS5X8~aeWPpdh7zBxzKsFApy7sVVoCCpUU4c0y6g0p2ZLWb-LBVE0rsbcVwhniwP9EGX15xwy9APsd1JxcrCFxL1IekKIkrjZnB3uJbFokn3yVNLra7G7VF6YFAyPnMjSBwQafGNUmU0S~HhxM-a~M-OjJDQnXGMnU7YIeP74Cyk2x-3zHVYAb4txv1YmrTo~BN9GFUTIXQtu5yZirPy6D-ghXdB32O64Z-WYdx28O2QB2dRf7DAgAeBj1aXWnf9TsjhsuLRCD~455t6deFYmc4rFfJJFh6uFtFHLRNqIlGCgPMnPGyrBKtjP4h-CnRDXC8GMg__&quot;</span><span class="punctuation">,</span></span><br><span class="line">          <span class="attr">&quot;path&quot;</span><span class="punctuation">:</span> <span class="string">&quot;/home/ubuntu/schedule_validation.txt&quot;</span><span class="punctuation">,</span></span><br><span class="line">          <span class="attr">&quot;type&quot;</span><span class="punctuation">:</span> <span class="string">&quot;file&quot;</span><span class="punctuation">,</span></span><br><span class="line">          <span class="attr">&quot;filename&quot;</span><span class="punctuation">:</span> <span class="string">&quot;schedule_validation.txt&quot;</span><span class="punctuation">,</span></span><br><span class="line">          <span class="attr">&quot;timestamp&quot;</span><span class="punctuation">:</span> <span class="number">1740979879402</span><span class="punctuation">,</span></span><br><span class="line">          <span class="attr">&quot;contentType&quot;</span><span class="punctuation">:</span> <span class="string">&quot;text/plain&quot;</span><span class="punctuation">,</span></span><br><span class="line">          <span class="attr">&quot;contentLength&quot;</span><span class="punctuation">:</span> <span class="number">461</span></span><br><span class="line">      <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="punctuation">&#123;</span></span><br><span class="line">          <span class="attr">&quot;url&quot;</span><span class="punctuation">:</span> <span class="string">&quot;https://private-us-east-1.manuscdn.com/sessionFile/AN3pVVcq4qHnWbC55XhAYB/sandbox/myZ92j2wqYkDtJWabMe6pl_1740979879402_na1fn_L2hvbWUvdWJ1bnR1L2ZpbmFsX2ludGVydmlld19zY2hlZHVsZQ.html?Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9wcml2YXRlLXVzLWVhc3QtMS5tYW51c2Nkbi5jb20vc2Vzc2lvbkZpbGUvQU4zcFZWY3E0cUhuV2JDNTVYaEFZQi9zYW5kYm94L215WjkyajJ3cVlrRHRKV2FiTWU2cGxfMTc0MDk3OTg3OTQwMl9uYTFmbl9MMmh2YldVdmRXSjFiblIxTDJacGJtRnNYMmx1ZEdWeWRtbGxkMTl6WTJobFpIVnNaUS5odG1sIiwiQ29uZGl0aW9uIjp7IkRhdGVMZXNzVGhhbiI6eyJBV1M6RXBvY2hUaW1lIjoxNzQzNDkzMzAyfX19XX0_&amp;Key-Pair-Id=K2HSFNDJXOU9YS&amp;Signature=Jbu7otQtMTx8B2ZuDxWVOxswA-MCH-u4XaiSxpr7NfbwHgOsMewq3FArJYPTiiPREnKBtpclGhBM9IK6NtKLmonjjxMYX45QyZV5646QGmVEJRsLE2xAs9~0JZ3v8i6kazZhkVQl2OCvQq0CC~nBw03gX3pPafYVbNplYP7iwjVaL9LPWBkI~W~tc7hdxMKYs40hUkVq2loJgsA6hILGFimeeUDUdEBZT8Xl9RI0jMsyTihrYsDNAhWigSbiOkc5AeS9UEChLTvzhPfVHLTld9RmhcMyPla4F4DsR4fEG2BSvLnOTG7qFwnn~qv879bpUrLaVZZSEy9fH3aHF6AjZg__&quot;</span><span class="punctuation">,</span></span><br><span class="line">          <span class="attr">&quot;path&quot;</span><span class="punctuation">:</span> <span class="string">&quot;/home/ubuntu/final_interview_schedule.html&quot;</span><span class="punctuation">,</span></span><br><span class="line">          <span class="attr">&quot;type&quot;</span><span class="punctuation">:</span> <span class="string">&quot;file&quot;</span><span class="punctuation">,</span></span><br><span class="line">          <span class="attr">&quot;filename&quot;</span><span class="punctuation">:</span> <span class="string">&quot;final_interview_schedule.html&quot;</span><span class="punctuation">,</span></span><br><span class="line">          <span class="attr">&quot;timestamp&quot;</span><span class="punctuation">:</span> <span class="number">1740979879402</span><span class="punctuation">,</span></span><br><span class="line">          <span class="attr">&quot;contentType&quot;</span><span class="punctuation">:</span> <span class="string">&quot;text/html&quot;</span><span class="punctuation">,</span></span><br><span class="line">          <span class="attr">&quot;contentLength&quot;</span><span class="punctuation">:</span> <span class="number">5892</span></span><br><span class="line">      <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="punctuation">&#123;</span></span><br><span class="line">          <span class="attr">&quot;url&quot;</span><span class="punctuation">:</span> <span class="string">&quot;https://private-us-east-1.manuscdn.com/sessionFile/AN3pVVcq4qHnWbC55XhAYB/sandbox/myZ92j2wqYkDtJWabMe6pl_1740979879402_na1fn_L2hvbWUvdWJ1bnR1L2ZpbmFsX2ludGVydmlld19zY2hlZHVsZQ.md?Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9wcml2YXRlLXVzLWVhc3QtMS5tYW51c2Nkbi5jb20vc2Vzc2lvbkZpbGUvQU4zcFZWY3E0cUhuV2JDNTVYaEFZQi9zYW5kYm94L215WjkyajJ3cVlrRHRKV2FiTWU2cGxfMTc0MDk3OTg3OTQwMl9uYTFmbl9MMmh2YldVdmRXSjFiblIxTDJacGJtRnNYMmx1ZEdWeWRtbGxkMTl6WTJobFpIVnNaUS5tZCIsIkNvbmRpdGlvbiI6eyJEYXRlTGVzc1RoYW4iOnsiQVdTOkVwb2NoVGltZSI6MTc0MzQ5MzMwMn19fV19&amp;Key-Pair-Id=K2HSFNDJXOU9YS&amp;Signature=m2e5536kp1d3IHj9kES0U9ON~EcGn65VGejuVHtZb~D9QUVi7eFqhfgD45MQuGpDb5yZEAT4HFrVTlhSPjwFaCJjYs9vO6Ke8Ysu7qoyVNYASU0LrIupfPg2MjCQpGsMI61bHTUIAfqJbh~5DBg1pfEkGXPnb9Z2vR6KHTepIOTtFZWyf-LcFSYd2789kGUos-i4fYdWfDN8RfzK1dslNs8F8b8FItT3n4UdqFYOgxNikUjc253uWFWsVBwHAnvYp90Zj1SwyutD4VdqhPD-zy1SI~ZWXuDHd4csshG3dxp6g7YB2SHpKd7ygzHxMcsL1cof4A7Du6lLXZAsSlpWAQ__&quot;</span><span class="punctuation">,</span></span><br><span class="line">          <span class="attr">&quot;path&quot;</span><span class="punctuation">:</span> <span class="string">&quot;/home/ubuntu/final_interview_schedule.md&quot;</span><span class="punctuation">,</span></span><br><span class="line">          <span class="attr">&quot;type&quot;</span><span class="punctuation">:</span> <span class="string">&quot;file&quot;</span><span class="punctuation">,</span></span><br><span class="line">          <span class="attr">&quot;filename&quot;</span><span class="punctuation">:</span> <span class="string">&quot;final_interview_schedule.md&quot;</span><span class="punctuation">,</span></span><br><span class="line">          <span class="attr">&quot;timestamp&quot;</span><span class="punctuation">:</span> <span class="number">1740979879402</span><span class="punctuation">,</span></span><br><span class="line">          <span class="attr">&quot;contentType&quot;</span><span class="punctuation">:</span> <span class="string">&quot;text/markdown&quot;</span><span class="punctuation">,</span></span><br><span class="line">          <span class="attr">&quot;contentLength&quot;</span><span class="punctuation">:</span> <span class="number">1566</span></span><br><span class="line">      <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="punctuation">&#123;</span></span><br><span class="line">          <span class="attr">&quot;url&quot;</span><span class="punctuation">:</span> <span class="string">&quot;https://private-us-east-1.manuscdn.com/sessionFile/AN3pVVcq4qHnWbC55XhAYB/sandbox/myZ92j2wqYkDtJWabMe6pl_1740979879402_na1fn_L2hvbWUvdWJ1bnR1L2ludGVydmlld19zY2hlZHVsZV92aXN1YWw.png?Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9wcml2YXRlLXVzLWVhc3QtMS5tYW51c2Nkbi5jb20vc2Vzc2lvbkZpbGUvQU4zcFZWY3E0cUhuV2JDNTVYaEFZQi9zYW5kYm94L215WjkyajJ3cVlrRHRKV2FiTWU2cGxfMTc0MDk3OTg3OTQwMl9uYTFmbl9MMmh2YldVdmRXSjFiblIxTDJsdWRHVnlkbWxsZDE5elkyaGxaSFZzWlY5MmFYTjFZV3cucG5nIiwiQ29uZGl0aW9uIjp7IkRhdGVMZXNzVGhhbiI6eyJBV1M6RXBvY2hUaW1lIjoxNzQzNDkzMzAyfX19XX0_&amp;Key-Pair-Id=K2HSFNDJXOU9YS&amp;Signature=sL97hTV77CAh9IDkZy6RNBWXd-a3JBqSIoucaElZoQWdK-gCiNXRVpUaUIGRReYiAdwvyVRtvIrUx4VcUdgiyrOa76EZv2hVSYNmLH1cu9qaxivtDvwfY~8d8C8iR30ojQGfwgbABR0bBfK7K4jvjA3KH04Od5bk2mTU17SuegX4das6D6SZO0Zyty7WYJy1KOoxTgw61nWByaaGQu4OzCvJDhdZGb5XxVrCIoKvqlbtRVw9l6qZTQGjiawe-fHzmRDbn3bglsBN8PvGBrDhHKl1TdGoNij9voFKfixgMs~YO5G~cSM4n5OfhzEGphca89LgiPpvIz7hkCcjf~ISlg__&quot;</span><span class="punctuation">,</span></span><br><span class="line">          <span class="attr">&quot;path&quot;</span><span class="punctuation">:</span> <span class="string">&quot;/home/ubuntu/interview_schedule_visual.png&quot;</span><span class="punctuation">,</span></span><br><span class="line">          <span class="attr">&quot;type&quot;</span><span class="punctuation">:</span> <span class="string">&quot;image&quot;</span><span class="punctuation">,</span></span><br><span class="line">          <span class="attr">&quot;filename&quot;</span><span class="punctuation">:</span> <span class="string">&quot;interview_schedule_visual.png&quot;</span><span class="punctuation">,</span></span><br><span class="line">          <span class="attr">&quot;timestamp&quot;</span><span class="punctuation">:</span> <span class="number">1740979879402</span><span class="punctuation">,</span></span><br><span class="line">          <span class="attr">&quot;contentType&quot;</span><span class="punctuation">:</span> <span class="string">&quot;image/png&quot;</span><span class="punctuation">,</span></span><br><span class="line">          <span class="attr">&quot;contentLength&quot;</span><span class="punctuation">:</span> <span class="number">373745</span></span><br><span class="line">      <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="punctuation">&#123;</span></span><br><span class="line">          <span class="attr">&quot;url&quot;</span><span class="punctuation">:</span> <span class="string">&quot;https://private-us-east-1.manuscdn.com/sessionFile/AN3pVVcq4qHnWbC55XhAYB/sandbox/myZ92j2wqYkDtJWabMe6pl_1740979879402_na1fn_L2hvbWUvdWJ1bnR1L2ludGVydmlld19zY2hlZHVsZQ.txt?Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9wcml2YXRlLXVzLWVhc3QtMS5tYW51c2Nkbi5jb20vc2Vzc2lvbkZpbGUvQU4zcFZWY3E0cUhuV2JDNTVYaEFZQi9zYW5kYm94L215WjkyajJ3cVlrRHRKV2FiTWU2cGxfMTc0MDk3OTg3OTQwMl9uYTFmbl9MMmh2YldVdmRXSjFiblIxTDJsdWRHVnlkbWxsZDE5elkyaGxaSFZzWlEudHh0IiwiQ29uZGl0aW9uIjp7IkRhdGVMZXNzVGhhbiI6eyJBV1M6RXBvY2hUaW1lIjoxNzQzNDkzMzAyfX19XX0_&amp;Key-Pair-Id=K2HSFNDJXOU9YS&amp;Signature=QOl4zvhkq~bx7CWVWuTR3aWNMZ-cFp7paT7Xa54ARx3X5D0KCGpkAzdEmJWIpPVEf25soICrGMtBkRMKazzUXZ3~7g2NcyKI5CsKZZD~Le45LZje1qYDlLgTmC201LiqAefkLKZ3xviUPAdPwWUYrYA05HwqJyNb3zYnGpFyIC0Zrh~HOiUvD52v~CMKmfAAuJKWq-39dDIEYG9XLuTVOPQtE9QmQi6Pcw5hU208uY7mU6h2jRCraROTMZeOSMcF8hv2bfIM1jH6KPEXgTDKP-5ihe6xrihh8yOYnZifGQgEvRqCYjk0~9WsekWHNSLhtDzQlLDKIhhQkpJGl9jmiA__&quot;</span><span class="punctuation">,</span></span><br><span class="line">          <span class="attr">&quot;path&quot;</span><span class="punctuation">:</span> <span class="string">&quot;/home/ubuntu/interview_schedule.txt&quot;</span><span class="punctuation">,</span></span><br><span class="line">          <span class="attr">&quot;type&quot;</span><span class="punctuation">:</span> <span class="string">&quot;file&quot;</span><span class="punctuation">,</span></span><br><span class="line">          <span class="attr">&quot;filename&quot;</span><span class="punctuation">:</span> <span class="string">&quot;interview_schedule.txt&quot;</span><span class="punctuation">,</span></span><br><span class="line">          <span class="attr">&quot;timestamp&quot;</span><span class="punctuation">:</span> <span class="number">1740979879402</span><span class="punctuation">,</span></span><br><span class="line">          <span class="attr">&quot;contentType&quot;</span><span class="punctuation">:</span> <span class="string">&quot;text/plain&quot;</span><span class="punctuation">,</span></span><br><span class="line">          <span class="attr">&quot;contentLength&quot;</span><span class="punctuation">:</span> <span class="number">1179</span></span><br><span class="line">      <span class="punctuation">&#125;</span></span><br><span class="line">  <span class="punctuation">]</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;content&quot;</span><span class="punctuation">:</span> <span class="string">&quot;I&#x27;ve completed creating the interview schedule based on the survey data. Here&#x27;s what I&#x27;ve prepared:\n\n1. I&#x27;ve created a balanced interview schedule with two sessions per day (morning and afternoon) from April 13-15.\n2. All 45 candidates have been assigned to sessions according to their availability.\n3. The distribution is well-balanced with 8, 7, 6, 8, 7, and 7 candidates per session.\n4. The schedule has been validated to ensure all candidates are assigned to times they&#x27;re available.\n\nI&#x27;m attaching the schedule in multiple formats:\n- A text version with the basic schedule\n- A markdown version with more detailed formatting\n- An HTML version with enhanced visual presentation\n- A visual representation showing the schedule graphically\n\nThe schedule successfully accommodates all candidates&#x27; availability constraints while maintaining an even distribution across all six sessions.&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;id&quot;</span><span class="punctuation">:</span> <span class="string">&quot;myZ92j2wqYkDtJWabMe6pl&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;sender&quot;</span><span class="punctuation">:</span> <span class="string">&quot;assistant&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;timestamp&quot;</span><span class="punctuation">:</span> <span class="number">1740979879558</span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br></pre></td></tr></table></figure><h3 id="liveStatus"><a href="#liveStatus" class="headerlink" title="liveStatus"></a>liveStatus</h3><p>Always show the latest one at the bottom before the job is finished.</p><p><img data-src="https://cdn.joouis.com/unpacking-the-data-structure-of-manus-session-1.avif"></p><figure class="highlight json"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line">  <span class="attr">&quot;id&quot;</span><span class="punctuation">:</span> <span class="string">&quot;k7QnLyNeOeCtPCzteTREAz&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;type&quot;</span><span class="punctuation">:</span> <span class="string">&quot;liveStatus&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;timestamp&quot;</span><span class="punctuation">:</span> <span class="number">1741060890082</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;text&quot;</span><span class="punctuation">:</span> <span class="string">&quot;初始化沙箱&quot;</span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br></pre></td></tr></table></figure><h3 id="sandboxUpdate"><a href="#sandboxUpdate" class="headerlink" title="sandboxUpdate"></a>sandboxUpdate</h3><figure class="highlight json"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br></pre></td><td class="code"><pre><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line">    <span class="attr">&quot;id&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Kgfk50K5yUzFGh8kBmD25y&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;type&quot;</span><span class="punctuation">:</span> <span class="string">&quot;sandboxUpdate&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;timestamp&quot;</span><span class="punctuation">:</span> <span class="number">1741060891120</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;sandboxId&quot;</span><span class="punctuation">:</span> <span class="string">&quot;****&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;status&quot;</span><span class="punctuation">:</span> <span class="string">&quot;running&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;codeServerUrl&quot;</span><span class="punctuation">:</span> <span class="string">&quot;****&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;vncUrl&quot;</span><span class="punctuation">:</span> <span class="string">&quot;****&quot;</span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br><span class="line"></span><br><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line">    <span class="attr">&quot;id&quot;</span><span class="punctuation">:</span> <span class="string">&quot;DPtpw7TlfGM0F3JBFOe5Vf&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;type&quot;</span><span class="punctuation">:</span> <span class="string">&quot;sandboxUpdate&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;timestamp&quot;</span><span class="punctuation">:</span> <span class="number">1741066408097</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;sandboxId&quot;</span><span class="punctuation">:</span> <span class="string">&quot;****&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;status&quot;</span><span class="punctuation">:</span> <span class="string">&quot;stopped&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;codeServerUrl&quot;</span><span class="punctuation">:</span> <span class="string">&quot;****&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;vncUrl&quot;</span><span class="punctuation">:</span> <span class="string">&quot;****&quot;</span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br></pre></td></tr></table></figure><h3 id="resourceAccessed"><a href="#resourceAccessed" class="headerlink" title="resourceAccessed"></a>resourceAccessed</h3><p>A read-only list showed on web page.</p><figure class="highlight json"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br></pre></td><td class="code"><pre><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line">  <span class="attr">&quot;id&quot;</span><span class="punctuation">:</span> <span class="string">&quot;FTSYIESAA0lX1IKWQEMDcx&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;type&quot;</span><span class="punctuation">:</span> <span class="string">&quot;resourceAccessed&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;timestamp&quot;</span><span class="punctuation">:</span> <span class="number">1741060897834</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;brief&quot;</span><span class="punctuation">:</span> <span class="string">&quot;已连接到数据源&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;resourceType&quot;</span><span class="punctuation">:</span> <span class="string">&quot;data_api&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;resources&quot;</span><span class="punctuation">:</span> <span class="punctuation">[</span></span><br><span class="line">    <span class="punctuation">&#123;</span></span><br><span class="line">      <span class="attr">&quot;id&quot;</span><span class="punctuation">:</span> <span class="string">&quot;api_19&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;title&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Get stock chart&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;kind&quot;</span><span class="punctuation">:</span> <span class="string">&quot;builtin&quot;</span></span><br><span class="line">    <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="punctuation">&#123;</span></span><br><span class="line">      <span class="attr">&quot;id&quot;</span><span class="punctuation">:</span> <span class="string">&quot;api_20&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;title&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Get stock holders&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;kind&quot;</span><span class="punctuation">:</span> <span class="string">&quot;builtin&quot;</span></span><br><span class="line">    <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="punctuation">&#123;</span></span><br><span class="line">      <span class="attr">&quot;id&quot;</span><span class="punctuation">:</span> <span class="string">&quot;api_21&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;title&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Get stock insights&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;kind&quot;</span><span class="punctuation">:</span> <span class="string">&quot;builtin&quot;</span></span><br><span class="line">    <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="punctuation">&#123;</span></span><br><span class="line">      <span class="attr">&quot;id&quot;</span><span class="punctuation">:</span> <span class="string">&quot;api_16&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;title&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Get stock profile&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;kind&quot;</span><span class="punctuation">:</span> <span class="string">&quot;builtin&quot;</span></span><br><span class="line">    <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="punctuation">&#123;</span></span><br><span class="line">      <span class="attr">&quot;id&quot;</span><span class="punctuation">:</span> <span class="string">&quot;api_22&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;title&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Get stock SEC filing&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;kind&quot;</span><span class="punctuation">:</span> <span class="string">&quot;builtin&quot;</span></span><br><span class="line">    <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="punctuation">&#123;</span></span><br><span class="line">      <span class="attr">&quot;id&quot;</span><span class="punctuation">:</span> <span class="string">&quot;api_23&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;title&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Get what analysts are saying of a stock&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;kind&quot;</span><span class="punctuation">:</span> <span class="string">&quot;builtin&quot;</span></span><br><span class="line">    <span class="punctuation">&#125;</span></span><br><span class="line">  <span class="punctuation">]</span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br></pre></td></tr></table></figure><h3 id="statusUpdate"><a href="#statusUpdate" class="headerlink" title="statusUpdate"></a>statusUpdate</h3><p>Note that <code>planStepId</code> will be generated before <code>stepId</code>.</p><figure class="highlight json"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br></pre></td><td class="code"><pre><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line">    <span class="attr">&quot;id&quot;</span><span class="punctuation">:</span> <span class="string">&quot;l5ckmcJ92qsBeEcPWdd517&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;type&quot;</span><span class="punctuation">:</span> <span class="string">&quot;statusUpdate&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;timestamp&quot;</span><span class="punctuation">:</span> <span class="number">1741060902886</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;agentStatus&quot;</span><span class="punctuation">:</span> <span class="string">&quot;running&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;brief&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Manus 正在工作&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;description&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Creating a plan for Tesla stock analysis&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;noRender&quot;</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">false</span></span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;planStepId&quot;</span><span class="punctuation">:</span> <span class="string">&quot;E7Q4GDL3FsNrzRuv3Cb5Xa&quot;</span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br><span class="line"></span><br><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line">    <span class="attr">&quot;id&quot;</span><span class="punctuation">:</span> <span class="string">&quot;JjrDxkPfwe54YWM2akBGEp&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;type&quot;</span><span class="punctuation">:</span> <span class="string">&quot;statusUpdate&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;timestamp&quot;</span><span class="punctuation">:</span> <span class="number">1741065081706</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;agentStatus&quot;</span><span class="punctuation">:</span> <span class="string">&quot;running&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;brief&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Manus 正在运行&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;description&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Manus 正在处理您的请求&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;noRender&quot;</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;planStepId&quot;</span><span class="punctuation">:</span> <span class="string">&quot;jxqdGJWP8ipvTYx6Y4fCEZ&quot;</span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br><span class="line"></span><br><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line">    <span class="attr">&quot;id&quot;</span><span class="punctuation">:</span> <span class="string">&quot;WLYbSvWSWXO94sQHJzLNlf&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;type&quot;</span><span class="punctuation">:</span> <span class="string">&quot;statusUpdate&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;timestamp&quot;</span><span class="punctuation">:</span> <span class="number">1741065742563</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;agentStatus&quot;</span><span class="punctuation">:</span> <span class="string">&quot;stopped&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;brief&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Manus 已完成工作&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;description&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Manus 已完成当前任务，并准备好接收新请求或修改。&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;noRender&quot;</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">false</span></span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;planStepId&quot;</span><span class="punctuation">:</span> <span class="string">&quot;qUIIRtCmzKhU9rXxeGIfpb&quot;</span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br></pre></td></tr></table></figure><h3 id="toolUsed"><a href="#toolUsed" class="headerlink" title="toolUsed"></a>toolUsed</h3><ul><li><code>tool</code>: “terminal”, “text_editor”, “search”, “browser”</li><li><code>detail</code> data should be used to show runtime outputs in “Manus’ computer” card</li></ul><h4 id="terminal"><a href="#terminal" class="headerlink" title="terminal"></a><code>terminal</code></h4><figure class="highlight json"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br></pre></td><td class="code"><pre><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line">    <span class="attr">&quot;id&quot;</span><span class="punctuation">:</span> <span class="string">&quot;lxD5h6ztASqqdXXvJMoKcq&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;type&quot;</span><span class="punctuation">:</span> <span class="string">&quot;toolUsed&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;timestamp&quot;</span><span class="punctuation">:</span> <span class="number">1741060905794</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;actionId&quot;</span><span class="punctuation">:</span> <span class="string">&quot;toolu_014zqVgHFTWGj543mEUAmYnx&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;tool&quot;</span><span class="punctuation">:</span> <span class="string">&quot;terminal&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;status&quot;</span><span class="punctuation">:</span> <span class="string">&quot;success&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;brief&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Manus 正在使用终端&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;description&quot;</span><span class="punctuation">:</span> <span class="string">&quot;已执行命令 `mkdir -p tesla_analysis &amp;&amp; cd tesla_analysis &amp;&amp; touch todo.md`&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;message&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">        <span class="attr">&quot;action&quot;</span><span class="punctuation">:</span> <span class="string">&quot;正在执行命令&quot;</span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">&quot;param&quot;</span><span class="punctuation">:</span> <span class="string">&quot;mkdir -p tesla_analysis &amp;&amp; cd tesla_analysis &amp;&amp; touch todo.md&quot;</span></span><br><span class="line">    <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;detail&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">        <span class="attr">&quot;terminal&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">            <span class="attr">&quot;action&quot;</span><span class="punctuation">:</span> <span class="string">&quot;execute&quot;</span><span class="punctuation">,</span></span><br><span class="line">            <span class="attr">&quot;finished&quot;</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span></span><br><span class="line">            <span class="attr">&quot;shellId&quot;</span><span class="punctuation">:</span> <span class="string">&quot;shell1&quot;</span><span class="punctuation">,</span></span><br><span class="line">            <span class="attr">&quot;command&quot;</span><span class="punctuation">:</span> <span class="string">&quot;mkdir -p tesla_analysis &amp;&amp; cd tesla_analysis &amp;&amp; touch todo.md&quot;</span><span class="punctuation">,</span></span><br><span class="line">            <span class="attr">&quot;outputType&quot;</span><span class="punctuation">:</span> <span class="string">&quot;append&quot;</span><span class="punctuation">,</span></span><br><span class="line">            <span class="attr">&quot;output&quot;</span><span class="punctuation">:</span> <span class="punctuation">[</span></span><br><span class="line">                <span class="string">&quot;\u001b[32mubuntu@sandbox:~ $\u001b[0m cd /home/ubuntu &amp;&amp; mkdir -p tesla_analysis &amp;&amp; cd tesla_analysis &amp;&amp; touch todo.md\n\n\u001b[32mubuntu@sandbox:~/tesla_analysis $\u001b[0m&quot;</span></span><br><span class="line">            <span class="punctuation">]</span></span><br><span class="line">        <span class="punctuation">&#125;</span></span><br><span class="line">    <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;planStepId&quot;</span><span class="punctuation">:</span> <span class="string">&quot;E7Q4GDL3FsNrzRuv3Cb5Xa&quot;</span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br></pre></td></tr></table></figure><h4 id="text-editor"><a href="#text-editor" class="headerlink" title="text_editor"></a><code>text_editor</code></h4><figure class="highlight json"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br></pre></td><td class="code"><pre><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line">    <span class="attr">&quot;id&quot;</span><span class="punctuation">:</span> <span class="string">&quot;g5UfojfdB2VhWIxwcvs6Uj&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;type&quot;</span><span class="punctuation">:</span> <span class="string">&quot;toolUsed&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;timestamp&quot;</span><span class="punctuation">:</span> <span class="number">1741060924172</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;actionId&quot;</span><span class="punctuation">:</span> <span class="string">&quot;toolu_01HjcgTGFBtBfZpRCKZRzZ32&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;tool&quot;</span><span class="punctuation">:</span> <span class="string">&quot;text_editor&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;status&quot;</span><span class="punctuation">:</span> <span class="string">&quot;success&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;planStepId&quot;</span><span class="punctuation">:</span> <span class="string">&quot;E7Q4GDL3FsNrzRuv3Cb5Xa&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;brief&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Manus 正在使用文本编辑器&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;description&quot;</span><span class="punctuation">:</span> <span class="string">&quot;正在创建文件 `tesla_analysis/todo.md`&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;message&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">        <span class="attr">&quot;action&quot;</span><span class="punctuation">:</span> <span class="string">&quot;正在创建文件&quot;</span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">&quot;param&quot;</span><span class="punctuation">:</span> <span class="string">&quot;tesla_analysis/todo.md&quot;</span></span><br><span class="line">    <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;detail&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">        <span class="attr">&quot;textEditor&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">            <span class="attr">&quot;action&quot;</span><span class="punctuation">:</span> <span class="string">&quot;write&quot;</span><span class="punctuation">,</span></span><br><span class="line">            <span class="attr">&quot;path&quot;</span><span class="punctuation">:</span> <span class="string">&quot;/home/ubuntu/tesla_analysis/todo.md&quot;</span><span class="punctuation">,</span></span><br><span class="line">            <span class="attr">&quot;content&quot;</span><span class="punctuation">:</span> <span class="string">&quot;# Tesla Stock Analysis Todo List\n\n## 1. Create Todo List\n- [x] Create project directory structure\n- [x] Create todo.md file\n- [x] Outline all required analysis components\n\n## 2. Gather Tesla Company Overview\n- [ ] Collect basic company information (ticker, exchange, etc.)\n- [ ] Get company profile and business summary\n- [ ] Identify key executives and leadership team\n- [ ] Document company history and major milestones\n- [ ] Analyze business model and revenue streams\n\n## 3. Collect Tesla Financial Data\n- [ ] Retrieve historical stock price data\n- [ ] Analyze revenue trends over past 5 years\n- [ ] Calculate profit margins and profitability metrics\n- [ ] Examine balance sheet strength and liabilities\n- [ ] Analyze cash flow statements and free cash flow\n- [ ] Review capital expenditures and R&amp;D investments\n\n## 4. Analyze Market Sentiment for Tesla\n- [ ] Gather recent analyst ratings and price targets\n- [ ] Collect analyst commentary and research reports\n- [ ] Analyze recent news impact on stock price\n- [ ] Review insider trading activity\n- [ ] Examine institutional ownership changes\n- [ ] Assess social media and retail investor sentiment\n\n## 5. Perform Technical Analysis on Tesla Stock\n- [ ] Create price charts for different time periods\n- [ ] Identify key support and resistance levels\n- [ ] Calculate and analyze moving averages\n- [ ] Evaluate momentum indicators (RSI, MACD, etc.)\n- [ ] Identify chart patterns and potential breakout points\n- [ ] Assess volume trends and distribution\n\n## 6. Compare Tesla with Competitors\n- [ ] Identify key competitors in EV and automotive space\n- [ ] Compare market share and growth rates\n- [ ] Analyze financial metrics relative to peers\n- [ ] Compare valuation multiples (P/E, P/S, EV/EBITDA)\n- [ ] Assess technological advantages and disadvantages\n- [ ] Evaluate manufacturing capacity and efficiency\n\n## 7. Calculate Intrinsic Value of Tesla\n- [ ] Apply discounted cash flow (DCF) model\n- [ ] Estimate future growth rates and margins\n- [ ] Calculate weighted average cost of capital (WACC)\n- [ ] Perform sensitivity analysis on key assumptions\n- [ ] Compare intrinsic value to current market price\n- [ ] Assess margin of safety for potential investors\n\n## 8. Develop Investment Thesis for Tesla\n- [ ] Conduct SWOT analysis (Strengths, Weaknesses, Opportunities, Threats)\n- [ ] Identify key growth drivers and catalysts\n- [ ] Assess major risk factors and potential headwinds\n- [ ] Develop bull case scenario and price target\n- [ ] Develop bear case scenario and price target\n- [ ] Create recommendations for different investor types\n\n## 9. Compile Comprehensive Tesla Stock Report\n- [ ] Write executive summary with key findings\n- [ ] Organize all analysis sections into cohesive report\n- [ ] Create visualizations for key metrics and trends\n- [ ] Format report with proper sections and references\n- [ ] Review and proofread final document\n\n## 10. Deliver Report to User\n- [ ] Finalize all report components\n- [ ] Ensure all analyses are complete and accurate\n- [ ] Package report with all supporting files\n- [ ] Deliver final report to user\n&quot;</span><span class="punctuation">,</span></span><br><span class="line">            <span class="attr">&quot;oldContent&quot;</span><span class="punctuation">:</span> <span class="string">&quot;&quot;</span></span><br><span class="line">        <span class="punctuation">&#125;</span></span><br><span class="line">    <span class="punctuation">&#125;</span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br></pre></td></tr></table></figure><h4 id="search"><a href="#search" class="headerlink" title="search"></a><code>search</code></h4><figure class="highlight json"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br><span class="line">124</span><br><span class="line">125</span><br><span class="line">126</span><br><span class="line">127</span><br><span class="line">128</span><br><span class="line">129</span><br><span class="line">130</span><br><span class="line">131</span><br><span class="line">132</span><br><span class="line">133</span><br><span class="line">134</span><br><span class="line">135</span><br><span class="line">136</span><br><span class="line">137</span><br><span class="line">138</span><br><span class="line">139</span><br><span class="line">140</span><br><span class="line">141</span><br><span class="line">142</span><br><span class="line">143</span><br><span class="line">144</span><br><span class="line">145</span><br><span class="line">146</span><br><span class="line">147</span><br><span class="line">148</span><br><span class="line">149</span><br><span class="line">150</span><br><span class="line">151</span><br><span class="line">152</span><br><span class="line">153</span><br><span class="line">154</span><br><span class="line">155</span><br><span class="line">156</span><br><span class="line">157</span><br><span class="line">158</span><br><span class="line">159</span><br><span class="line">160</span><br><span class="line">161</span><br><span class="line">162</span><br></pre></td><td class="code"><pre><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line">  <span class="attr">&quot;id&quot;</span><span class="punctuation">:</span> <span class="string">&quot;ojMR1Nj4QG7x8YWJRZ3h97&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;type&quot;</span><span class="punctuation">:</span> <span class="string">&quot;toolUsed&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;timestamp&quot;</span><span class="punctuation">:</span> <span class="number">1741008399077</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;actionId&quot;</span><span class="punctuation">:</span> <span class="string">&quot;toolu_01DS3VkDNRcRRg77a3MmW8Qs&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;tool&quot;</span><span class="punctuation">:</span> <span class="string">&quot;search&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;status&quot;</span><span class="punctuation">:</span> <span class="string">&quot;success&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;brief&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Manus 正在搜索网络&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;description&quot;</span><span class="punctuation">:</span> <span class="string">&quot;正在搜索 `pre-Series B American B2B AI companies startups`&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;message&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">      <span class="attr">&quot;action&quot;</span><span class="punctuation">:</span> <span class="string">&quot;正在搜索&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;param&quot;</span><span class="punctuation">:</span> <span class="string">&quot;pre-Series B American B2B AI companies startups&quot;</span></span><br><span class="line">  <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;detail&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">      <span class="attr">&quot;search&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">          <span class="attr">&quot;queries&quot;</span><span class="punctuation">:</span> <span class="punctuation">[</span></span><br><span class="line">              <span class="string">&quot;pre-Series B American B2B AI companies startups&quot;</span></span><br><span class="line">          <span class="punctuation">]</span><span class="punctuation">,</span></span><br><span class="line">          <span class="attr">&quot;results&quot;</span><span class="punctuation">:</span> <span class="punctuation">[</span></span><br><span class="line">              <span class="punctuation">&#123;</span></span><br><span class="line">                  <span class="attr">&quot;favicon&quot;</span><span class="punctuation">:</span> <span class="string">&quot;TODO&quot;</span><span class="punctuation">,</span></span><br><span class="line">                  <span class="attr">&quot;link&quot;</span><span class="punctuation">:</span> <span class="string">&quot;https://explodingtopics.com/blog/ai-startups&quot;</span><span class="punctuation">,</span></span><br><span class="line">                  <span class="attr">&quot;snippet&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Here are our picks for some of the most promising AI startups with a broad range of use cases across different industries.&quot;</span><span class="punctuation">,</span></span><br><span class="line">                  <span class="attr">&quot;title&quot;</span><span class="punctuation">:</span> <span class="string">&quot;60 Growing AI Companies &amp; Startups (2025) - Exploding Topics&quot;</span></span><br><span class="line">              <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">              <span class="punctuation">&#123;</span></span><br><span class="line">                  <span class="attr">&quot;favicon&quot;</span><span class="punctuation">:</span> <span class="string">&quot;TODO&quot;</span><span class="punctuation">,</span></span><br><span class="line">                  <span class="attr">&quot;link&quot;</span><span class="punctuation">:</span> <span class="string">&quot;https://topstartups.io/?industries=Artificial%20Intelligence&quot;</span><span class="punctuation">,</span></span><br><span class="line">                  <span class="attr">&quot;snippet&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Top AI startups and new AI companies hiring now. Sort by valuation and recent funding. Funded by Sequoia, YC, A16Z, Benchmark - the very best.&quot;</span><span class="punctuation">,</span></span><br><span class="line">                  <span class="attr">&quot;title&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Top 147 AI Startups 2025 | Funded by Sequoia, YC, A16Z&quot;</span></span><br><span class="line">              <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">              <span class="punctuation">&#123;</span></span><br><span class="line">                  <span class="attr">&quot;favicon&quot;</span><span class="punctuation">:</span> <span class="string">&quot;TODO&quot;</span><span class="punctuation">,</span></span><br><span class="line">                  <span class="attr">&quot;link&quot;</span><span class="punctuation">:</span> <span class="string">&quot;https://www.ycombinator.com/companies/industry/ai&quot;</span><span class="punctuation">,</span></span><br><span class="line">                  <span class="attr">&quot;snippet&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Browse 100 of the top AI startups funded by Y Combinator. We also have a Startup Directory where you can search through over 5,000 companies.&quot;</span><span class="punctuation">,</span></span><br><span class="line">                  <span class="attr">&quot;title&quot;</span><span class="punctuation">:</span> <span class="string">&quot;AI (Artificial Intelligence) Startups funded by Y Combinator (YC) 2025&quot;</span></span><br><span class="line">              <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">              <span class="punctuation">&#123;</span></span><br><span class="line">                  <span class="attr">&quot;favicon&quot;</span><span class="punctuation">:</span> <span class="string">&quot;TODO&quot;</span><span class="punctuation">,</span></span><br><span class="line">                  <span class="attr">&quot;link&quot;</span><span class="punctuation">:</span> <span class="string">&quot;https://aimresearch.co/generative-ai/b2b-ai-startup-ceos-to-watch-in-the-u-s-in-2024&quot;</span><span class="punctuation">,</span></span><br><span class="line">                  <span class="attr">&quot;snippet&quot;</span><span class="punctuation">:</span> <span class="string">&quot;According to forecasts, around $87 billion in opportunities are projected to emerge in the AI sector for B2B companies this year, with ...&quot;</span><span class="punctuation">,</span></span><br><span class="line">                  <span class="attr">&quot;title&quot;</span><span class="punctuation">:</span> <span class="string">&quot;B2B AI Startup CEOs to Watch in the U.S. in 2024 - AIM Research&quot;</span></span><br><span class="line">              <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">              <span class="punctuation">&#123;</span></span><br><span class="line">                  <span class="attr">&quot;favicon&quot;</span><span class="punctuation">:</span> <span class="string">&quot;TODO&quot;</span><span class="punctuation">,</span></span><br><span class="line">                  <span class="attr">&quot;link&quot;</span><span class="punctuation">:</span> <span class="string">&quot;https://growthlist.co/pre-seed-startups/&quot;</span><span class="punctuation">,</span></span><br><span class="line">                  <span class="attr">&quot;snippet&quot;</span><span class="punctuation">:</span> <span class="string">&quot;We compile startup data every week and have thousands of pre-seed funded startups in our database that we update every week.&quot;</span><span class="punctuation">,</span></span><br><span class="line">                  <span class="attr">&quot;title&quot;</span><span class="punctuation">:</span> <span class="string">&quot;List of Funded Pre-Seed Startups For 2025 - Growth List&quot;</span></span><br><span class="line">              <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">              <span class="punctuation">&#123;</span></span><br><span class="line">                  <span class="attr">&quot;favicon&quot;</span><span class="punctuation">:</span> <span class="string">&quot;TODO&quot;</span><span class="punctuation">,</span></span><br><span class="line">                  <span class="attr">&quot;link&quot;</span><span class="punctuation">:</span> <span class="string">&quot;https://www.ycombinator.com/companies/industry/b2b&quot;</span><span class="punctuation">,</span></span><br><span class="line">                  <span class="attr">&quot;snippet&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Browse 100 of the top B2B Software and Services startups funded by Y Combinator.&quot;</span><span class="punctuation">,</span></span><br><span class="line">                  <span class="attr">&quot;title&quot;</span><span class="punctuation">:</span> <span class="string">&quot;B2B Software and Services Startups funded by Y Combinator (YC ...&quot;</span></span><br><span class="line">              <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">              <span class="punctuation">&#123;</span></span><br><span class="line">                  <span class="attr">&quot;favicon&quot;</span><span class="punctuation">:</span> <span class="string">&quot;TODO&quot;</span><span class="punctuation">,</span></span><br><span class="line">                  <span class="attr">&quot;link&quot;</span><span class="punctuation">:</span> <span class="string">&quot;https://startupsavant.com/startups-to-watch/ai&quot;</span><span class="punctuation">,</span></span><br><span class="line">                  <span class="attr">&quot;snippet&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Take a look at the top AI startups entering the market today and learn about the investors, funding amounts, and founders who are changing the world.&quot;</span><span class="punctuation">,</span></span><br><span class="line">                  <span class="attr">&quot;title&quot;</span><span class="punctuation">:</span> <span class="string">&quot;43 Top AI Startups to Watch in 2025 | TRUiC&quot;</span></span><br><span class="line">              <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">              <span class="punctuation">&#123;</span></span><br><span class="line">                  <span class="attr">&quot;favicon&quot;</span><span class="punctuation">:</span> <span class="string">&quot;TODO&quot;</span><span class="punctuation">,</span></span><br><span class="line">                  <span class="attr">&quot;link&quot;</span><span class="punctuation">:</span> <span class="string">&quot;https://www.pymnts.com/artificial-intelligence-2/2025/snowflake-plans-ai-hub-and-200-million-in-startup-investments/&quot;</span><span class="punctuation">,</span></span><br><span class="line">                  <span class="attr">&quot;snippet&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Data cloud company Snowflake says it is opening a new Silicon Valley “AI hub” designed to support artificial intelligence startups.&quot;</span><span class="punctuation">,</span></span><br><span class="line">                  <span class="attr">&quot;title&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Snowflake Plans &#x27;AI Hub&#x27; and $200 Million in Startup Investments&quot;</span></span><br><span class="line">              <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">              <span class="punctuation">&#123;</span></span><br><span class="line">                  <span class="attr">&quot;favicon&quot;</span><span class="punctuation">:</span> <span class="string">&quot;TODO&quot;</span><span class="punctuation">,</span></span><br><span class="line">                  <span class="attr">&quot;link&quot;</span><span class="punctuation">:</span> <span class="string">&quot;https://www.whoraised.io/saas-startups/artificial-intelligence-saas-startups&quot;</span><span class="punctuation">,</span></span><br><span class="line">                  <span class="attr">&quot;snippet&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Here is a list of 152 SaaS Startups in the Artificial Intelligence Industry. We explore each business including funding, investors and company profile.&quot;</span><span class="punctuation">,</span></span><br><span class="line">                  <span class="attr">&quot;title&quot;</span><span class="punctuation">:</span> <span class="string">&quot;152 SaaS Startups in the Artificial Intelligence Industry | who raised?&quot;</span></span><br><span class="line">              <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">              <span class="punctuation">&#123;</span></span><br><span class="line">                  <span class="attr">&quot;favicon&quot;</span><span class="punctuation">:</span> <span class="string">&quot;TODO&quot;</span><span class="punctuation">,</span></span><br><span class="line">                  <span class="attr">&quot;link&quot;</span><span class="punctuation">:</span> <span class="string">&quot;https://www.seedtable.com/best-ai-startups&quot;</span><span class="punctuation">,</span></span><br><span class="line">                  <span class="attr">&quot;snippet&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Discover Fast-growing Global startups ... Seedtable uses technology and people to track over 71,000 companies to help you find the right ones to partner with.&quot;</span><span class="punctuation">,</span></span><br><span class="line">                  <span class="attr">&quot;title&quot;</span><span class="punctuation">:</span> <span class="string">&quot;69 Best Ai Startups to Watch in 2025 - Seedtable&quot;</span></span><br><span class="line">              <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">              <span class="punctuation">&#123;</span></span><br><span class="line">                  <span class="attr">&quot;favicon&quot;</span><span class="punctuation">:</span> <span class="string">&quot;TODO&quot;</span><span class="punctuation">,</span></span><br><span class="line">                  <span class="attr">&quot;link&quot;</span><span class="punctuation">:</span> <span class="string">&quot;https://www.netguru.com/blog/generative-ai-startups&quot;</span><span class="punctuation">,</span></span><br><span class="line">                  <span class="attr">&quot;snippet&quot;</span><span class="punctuation">:</span> <span class="string">&quot;We&#x27;ve curated this list of 31 promising generative AI startups from different categories and markets.&quot;</span><span class="punctuation">,</span></span><br><span class="line">                  <span class="attr">&quot;title&quot;</span><span class="punctuation">:</span> <span class="string">&quot;30 Remarkable Generative AI Startups You Simply Can&#x27;t Ignore&quot;</span></span><br><span class="line">              <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">              <span class="punctuation">&#123;</span></span><br><span class="line">                  <span class="attr">&quot;favicon&quot;</span><span class="punctuation">:</span> <span class="string">&quot;TODO&quot;</span><span class="punctuation">,</span></span><br><span class="line">                  <span class="attr">&quot;link&quot;</span><span class="punctuation">:</span> <span class="string">&quot;https://news.crunchbase.com/ai/startup-billion-dollar-fundraisers-openai-anthropic/&quot;</span><span class="punctuation">,</span></span><br><span class="line">                  <span class="attr">&quot;snippet&quot;</span><span class="punctuation">:</span> <span class="string">&quot;There were at least 23 private, AI-focused startups funded in the past couple years that have raised over $1 billion in equity financing to date.&quot;</span><span class="punctuation">,</span></span><br><span class="line">                  <span class="attr">&quot;title&quot;</span><span class="punctuation">:</span> <span class="string">&quot;These Are The AI Startups That Raised Over $1B - Crunchbase News&quot;</span></span><br><span class="line">              <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">              <span class="punctuation">&#123;</span></span><br><span class="line">                  <span class="attr">&quot;favicon&quot;</span><span class="punctuation">:</span> <span class="string">&quot;TODO&quot;</span><span class="punctuation">,</span></span><br><span class="line">                  <span class="attr">&quot;link&quot;</span><span class="punctuation">:</span> <span class="string">&quot;https://aventis-advisors.com/ai-valuation-multiples/&quot;</span><span class="punctuation">,</span></span><br><span class="line">                  <span class="attr">&quot;snippet&quot;</span><span class="punctuation">:</span> <span class="string">&quot;We reviewed all the funding rounds by AI companies across the globe in the period between 2010 and September 2024.&quot;</span><span class="punctuation">,</span></span><br><span class="line">                  <span class="attr">&quot;title&quot;</span><span class="punctuation">:</span> <span class="string">&quot;AI Valuation Multiples 2024 - Aventis Advisors&quot;</span></span><br><span class="line">              <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">              <span class="punctuation">&#123;</span></span><br><span class="line">                  <span class="attr">&quot;favicon&quot;</span><span class="punctuation">:</span> <span class="string">&quot;TODO&quot;</span><span class="punctuation">,</span></span><br><span class="line">                  <span class="attr">&quot;link&quot;</span><span class="punctuation">:</span> <span class="string">&quot;https://www.startupblink.com/blog/ai-accelerators-incubators-and-startup-programs/&quot;</span><span class="punctuation">,</span></span><br><span class="line">                  <span class="attr">&quot;snippet&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Explore our list of AI accelerators, incubators, and startup programs offering funding, mentorship, and resources to help AI startups grow ...&quot;</span><span class="punctuation">,</span></span><br><span class="line">                  <span class="attr">&quot;title&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Top 20 AI Accelerators, Incubators &amp; Startup Programs - StartupBlink&quot;</span></span><br><span class="line">              <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">              <span class="punctuation">&#123;</span></span><br><span class="line">                  <span class="attr">&quot;favicon&quot;</span><span class="punctuation">:</span> <span class="string">&quot;TODO&quot;</span><span class="punctuation">,</span></span><br><span class="line">                  <span class="attr">&quot;link&quot;</span><span class="punctuation">:</span> <span class="string">&quot;https://www.digitalocean.com/resources/articles/startup-funding-series-a-b-c&quot;</span><span class="punctuation">,</span></span><br><span class="line">                  <span class="attr">&quot;snippet&quot;</span><span class="punctuation">:</span> <span class="string">&quot;In fact, the median Series B startup has a pre-money valuation of $40 million. Series B funding is mostly used for scale — not development.&quot;</span><span class="punctuation">,</span></span><br><span class="line">                  <span class="attr">&quot;title&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Startup funding explained: Series A, Series B, Series C | DigitalOcean&quot;</span></span><br><span class="line">              <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">              <span class="punctuation">&#123;</span></span><br><span class="line">                  <span class="attr">&quot;favicon&quot;</span><span class="punctuation">:</span> <span class="string">&quot;TODO&quot;</span><span class="punctuation">,</span></span><br><span class="line">                  <span class="attr">&quot;link&quot;</span><span class="punctuation">:</span> <span class="string">&quot;https://growthrocks.com/blog/ai-startups/&quot;</span><span class="punctuation">,</span></span><br><span class="line">                  <span class="attr">&quot;snippet&quot;</span><span class="punctuation">:</span> <span class="string">&quot;The Top 15 AI Startups to Keep Eye on in 2024 · 1. ElevenLabs [AI voice generator] · 2. Krutrim [AI computing] · 3. DataSnipper [intelligent ...&quot;</span><span class="punctuation">,</span></span><br><span class="line">                  <span class="attr">&quot;title&quot;</span><span class="punctuation">:</span> <span class="string">&quot;The Top 15 AI Startups to Keep Eye on in 2024 - GrowthRocks&quot;</span></span><br><span class="line">              <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">              <span class="punctuation">&#123;</span></span><br><span class="line">                  <span class="attr">&quot;favicon&quot;</span><span class="punctuation">:</span> <span class="string">&quot;TODO&quot;</span><span class="punctuation">,</span></span><br><span class="line">                  <span class="attr">&quot;link&quot;</span><span class="punctuation">:</span> <span class="string">&quot;https://topstartups.io/?funding_round=Series%20A&quot;</span><span class="punctuation">,</span></span><br><span class="line">                  <span class="attr">&quot;snippet&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Top Series A startups hiring now. Sort by valuation and recent funding. Research Series A startup salary and equity.&quot;</span><span class="punctuation">,</span></span><br><span class="line">                  <span class="attr">&quot;title&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Top Series A Startups 2025 — Sequoia, YC, A16Z, Benchmark&quot;</span></span><br><span class="line">              <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">              <span class="punctuation">&#123;</span></span><br><span class="line">                  <span class="attr">&quot;favicon&quot;</span><span class="punctuation">:</span> <span class="string">&quot;TODO&quot;</span><span class="punctuation">,</span></span><br><span class="line">                  <span class="attr">&quot;link&quot;</span><span class="punctuation">:</span> <span class="string">&quot;https://www.datamation.com/artificial-intelligence/ai-companies/&quot;</span><span class="punctuation">,</span></span><br><span class="line">                  <span class="attr">&quot;snippet&quot;</span><span class="punctuation">:</span> <span class="string">&quot;The top AI companies are leading the way in developing and deploying cutting-edge artificial intelligence applications across nearly every sector.&quot;</span><span class="punctuation">,</span></span><br><span class="line">                  <span class="attr">&quot;title&quot;</span><span class="punctuation">:</span> <span class="string">&quot;100 Top AI Companies Trendsetting In 2024 - Datamation&quot;</span></span><br><span class="line">              <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">              <span class="punctuation">&#123;</span></span><br><span class="line">                  <span class="attr">&quot;favicon&quot;</span><span class="punctuation">:</span> <span class="string">&quot;TODO&quot;</span><span class="punctuation">,</span></span><br><span class="line">                  <span class="attr">&quot;link&quot;</span><span class="punctuation">:</span> <span class="string">&quot;https://visible.vc/blog/startup-funding-stages/&quot;</span><span class="punctuation">,</span></span><br><span class="line">                  <span class="attr">&quot;snippet&quot;</span><span class="punctuation">:</span> <span class="string">&quot;How to Acquire Pre-Seed Funding? Raising a pre-seed round mirrors a traditional B2B sales process. You will be talking and adding investors ...&quot;</span><span class="punctuation">,</span></span><br><span class="line">                  <span class="attr">&quot;title&quot;</span><span class="punctuation">:</span> <span class="string">&quot;The Ultimate Guide to Startup Funding Stages - Visible.vc&quot;</span></span><br><span class="line">              <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">              <span class="punctuation">&#123;</span></span><br><span class="line">                  <span class="attr">&quot;favicon&quot;</span><span class="punctuation">:</span> <span class="string">&quot;TODO&quot;</span><span class="punctuation">,</span></span><br><span class="line">                  <span class="attr">&quot;link&quot;</span><span class="punctuation">:</span> <span class="string">&quot;https://en.wikipedia.org/wiki/List_of_unicorn_startup_companies&quot;</span><span class="punctuation">,</span></span><br><span class="line">                  <span class="attr">&quot;snippet&quot;</span><span class="punctuation">:</span> <span class="string">&quot;This is a list of unicorn startup companies. In finance, a unicorn is a privately held startup company with a current valuation of US$1 billion or more.&quot;</span><span class="punctuation">,</span></span><br><span class="line">                  <span class="attr">&quot;title&quot;</span><span class="punctuation">:</span> <span class="string">&quot;List of unicorn startup companies - Wikipedia&quot;</span></span><br><span class="line">              <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">              <span class="punctuation">&#123;</span></span><br><span class="line">                  <span class="attr">&quot;favicon&quot;</span><span class="punctuation">:</span> <span class="string">&quot;TODO&quot;</span><span class="punctuation">,</span></span><br><span class="line">                  <span class="attr">&quot;link&quot;</span><span class="punctuation">:</span> <span class="string">&quot;https://www.digitalocean.com/resources/articles/startup-funding-series-a-b-c&quot;</span><span class="punctuation">,</span></span><br><span class="line">                  <span class="attr">&quot;snippet&quot;</span><span class="punctuation">:</span> <span class="string">&quot;What is Series B? Most Series A funding is expected to last 12 to 18 months. If a company still needs funds after this period to dominate its market, it can go through Series B funding. By the point a startup gets to Series B funding, it&#x27;s already successful. However, this success isn&#x27;t necessarily measured in profits.&quot;</span><span class="punctuation">,</span></span><br><span class="line">                  <span class="attr">&quot;title&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Startup funding explained: Series A, Series B, Series C | DigitalOcean&quot;</span></span><br><span class="line">              <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">              <span class="punctuation">&#123;</span></span><br><span class="line">                  <span class="attr">&quot;favicon&quot;</span><span class="punctuation">:</span> <span class="string">&quot;TODO&quot;</span><span class="punctuation">,</span></span><br><span class="line">                  <span class="attr">&quot;link&quot;</span><span class="punctuation">:</span> <span class="string">&quot;https://explodingtopics.com/blog/ai-startups&quot;</span><span class="punctuation">,</span></span><br><span class="line">                  <span class="attr">&quot;snippet&quot;</span><span class="punctuation">:</span> <span class="string">&quot;HERE ARE OUR PICKS FOR SOME OF THE MOST PROMISING AI STARTUPS WITH A BROAD RANGE OF USE CASES ACROSS DIFFERENT INDUSTRIES.\n1\nDeepL. 5-year search growth: 258% ...\n2\nFrame AI. 5-year search growth: 1,900% ...\n3\nUizard. 5-year search growth: 3,233% ...\n4\nMoveworks. 5-year search growth: 296% ...\n5\nDatabricks. ...\n6\nSynthesia. ...\n7\nCodeium. ...\n8\nCohere.&quot;</span><span class="punctuation">,</span></span><br><span class="line">                  <span class="attr">&quot;title&quot;</span><span class="punctuation">:</span> <span class="string">&quot;60 Growing AI Companies &amp; Startups (2025) - Exploding Topics&quot;</span></span><br><span class="line">              <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">              <span class="punctuation">&#123;</span></span><br><span class="line">                  <span class="attr">&quot;favicon&quot;</span><span class="punctuation">:</span> <span class="string">&quot;TODO&quot;</span><span class="punctuation">,</span></span><br><span class="line">                  <span class="attr">&quot;link&quot;</span><span class="punctuation">:</span> <span class="string">&quot;https://ascendixtech.com/how-many-ai-companies-are-there/&quot;</span><span class="punctuation">,</span></span><br><span class="line">                  <span class="attr">&quot;snippet&quot;</span><span class="punctuation">:</span> <span class="string">&quot;How Many AI Startups Are There? According to Stanford&#x27;s 2024 AI Index Report, there are approximately 10,095 AI startups across the top ten countries leading in artificial intelligence innovation. The United States dominates the field with 5,509 AI startups, accounting for more than half of this total.&quot;</span><span class="punctuation">,</span></span><br><span class="line">                  <span class="attr">&quot;title&quot;</span><span class="punctuation">:</span> <span class="string">&quot;How Many AI Companies Are There in the World? [2024] - Ascendix Tech&quot;</span></span><br><span class="line">              <span class="punctuation">&#125;</span></span><br><span class="line">          <span class="punctuation">]</span></span><br><span class="line">      <span class="punctuation">&#125;</span></span><br><span class="line">  <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;planStepId&quot;</span><span class="punctuation">:</span> <span class="string">&quot;5JipVHomfozTx0oN3E9tdH&quot;</span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br></pre></td></tr></table></figure><h4 id="browser"><a href="#browser" class="headerlink" title="browser"></a><code>browser</code></h4><figure class="highlight json"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br></pre></td><td class="code"><pre><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line">  <span class="attr">&quot;id&quot;</span><span class="punctuation">:</span> <span class="string">&quot;CXm1fugpdRdl6JKocCWnRR&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;type&quot;</span><span class="punctuation">:</span> <span class="string">&quot;toolUsed&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;timestamp&quot;</span><span class="punctuation">:</span> <span class="number">1740980974476</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;actionId&quot;</span><span class="punctuation">:</span> <span class="string">&quot;toolu_01P9z6gShaD7Y6jUZD8LXfzL&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;tool&quot;</span><span class="punctuation">:</span> <span class="string">&quot;browser&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;status&quot;</span><span class="punctuation">:</span> <span class="string">&quot;success&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;brief&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Manus 正在使用浏览器&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;description&quot;</span><span class="punctuation">:</span> <span class="string">&quot;正在浏览 `https://karpathy.ai/`&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;message&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">      <span class="attr">&quot;action&quot;</span><span class="punctuation">:</span> <span class="string">&quot;正在浏览&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;param&quot;</span><span class="punctuation">:</span> <span class="string">&quot;https://karpathy.ai/&quot;</span></span><br><span class="line">  <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;detail&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">      <span class="attr">&quot;browser&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">          <span class="attr">&quot;url&quot;</span><span class="punctuation">:</span> <span class="string">&quot;https://karpathy.ai/&quot;</span><span class="punctuation">,</span></span><br><span class="line">          <span class="attr">&quot;screenshot&quot;</span><span class="punctuation">:</span> <span class="string">&quot;https://private-us-east-1.manuscdn.com/sessionFile/AWssWxITcsrl70js5L8LgU/browserScreenshots/5iFPa0Xhs9IAzHuKf7ByKD_1740980970271_na1fn_Y2xlYW4.webp?Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9wcml2YXRlLXVzLWVhc3QtMS5tYW51c2Nkbi5jb20vc2Vzc2lvbkZpbGUvQVdzc1d4SVRjc3JsNzBqczVMOExnVS9icm93c2VyU2NyZWVuc2hvdHMvNWlGUGEwWGhzOUlBekh1S2Y3QnlLRF8xNzQwOTgwOTcwMjcxX25hMWZuX1kyeGxZVzQud2VicCIsIkNvbmRpdGlvbiI6eyJEYXRlTGVzc1RoYW4iOnsiQVdTOkVwb2NoVGltZSI6MTc0MzQ5Mzg4MX19fV19&amp;Key-Pair-Id=K2HSFNDJXOU9YS&amp;Signature=wHW~YsIRLSrIuv~Pi8AdnL9bm2M9~rKqH0iT9cE9QY-pmK-MVSIIxm1ohvb8nMo0TYbilkMSVL-00Pf40IGZr4rlpKxd2mG3RqrZ7UwmuCp97jN999EBSBr-Ep1dqbKIDPKyVD0rdMsGgqWwfWv~ukGgTFU0~mlnRLkaRVxmJctEoNqdMiKEO7gnuUCzaiG-9n0cFZ1HZlSOGUVt4jKjVQyvulp~5Y-UH8NmKIL~qeP-v0VkyXnpsp~QF1v1LkOVm66xCnE99kwWlKKB5RBcXFUA5dsQruJ2AJOX4pEAEg7wKWeU59cbMWlgRKjrM2P6cbFaKO4dRBCJAik7Uk7OYw__&quot;</span></span><br><span class="line">      <span class="punctuation">&#125;</span></span><br><span class="line">  <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;planStepId&quot;</span><span class="punctuation">:</span> <span class="string">&quot;3mPWD1nYK6JeimtDwK4N6e&quot;</span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br><span class="line"></span><br><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line">  <span class="attr">&quot;id&quot;</span><span class="punctuation">:</span> <span class="string">&quot;3olVNF5YnNYm7oK5hsTeQy&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;type&quot;</span><span class="punctuation">:</span> <span class="string">&quot;toolUsed&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;timestamp&quot;</span><span class="punctuation">:</span> <span class="number">1740981189108</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;actionId&quot;</span><span class="punctuation">:</span> <span class="string">&quot;toolu_01HMaehhr62BUTN5dqhHyaGy&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;tool&quot;</span><span class="punctuation">:</span> <span class="string">&quot;browser&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;status&quot;</span><span class="punctuation">:</span> <span class="string">&quot;success&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;brief&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Manus 正在使用浏览器&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;description&quot;</span><span class="punctuation">:</span> <span class="string">&quot;运行 JavaScript: `// Check for canonical tags\nconst canonicalLink = document.querySelector(&#x27;link[rel=\&quot;canonical\&quot;]&#x27;);\nconst canonicalUrl = canonicalLink ? canonicalLink.href : &#x27;No canonical URL found&#x27;;\n\n// Check for schema markup\nconst schemaScripts = document.querySelectorAll(&#x27;script[type=\&quot;application/ld+json\&quot;]&#x27;);\nconst schemaData = Array.from(schemaScripts).map(script =&gt; script.textContent);\n\n// Check for SSL implementation\nconst isSSL = window.location.protocol === &#x27;https:&#x27;;\n\n// Analyze internal linking structure\nconst internalLinks = Array.from(document.getElementsByTagName(&#x27;a&#x27;))\n  .filter(a =&gt; a.href.includes(&#x27;karpathy.ai&#x27;))\n  .map(a =&gt; (&#123;\n    text: a.textContent.trim(),\n    href: a.href\n  &#125;));\n\n// Check for duplicate content\nconst h1Tags = document.getElementsByTagName(&#x27;h1&#x27;);\nconst h1Count = h1Tags.length;\n\n// Check for hreflang tags\nconst hreflangTags = document.querySelectorAll(&#x27;link[rel=\&quot;alternate\&quot;][hreflang]&#x27;);\nconst hreflangData = Array.from(hreflangTags).map(tag =&gt; (&#123;\n  hreflang: tag.getAttribute(&#x27;hreflang&#x27;),\n  href: tag.getAttribute(&#x27;href&#x27;)\n&#125;));\n\n// Return all collected data\nJSON.stringify(&#123;\n  canonicalUrl,\n  schemaData,\n  isSSL,\n  internalLinks,\n  h1Count,\n  hreflangData\n&#125;, null, 2);`&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;message&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">      <span class="attr">&quot;action&quot;</span><span class="punctuation">:</span> <span class="string">&quot;正在运行 JavaScript&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;param&quot;</span><span class="punctuation">:</span> <span class="string">&quot;// Check for canonical tags\nconst canonicalLink = document.querySelector(&#x27;link[rel=\&quot;canonical\&quot;]&#x27;);\nc...&quot;</span></span><br><span class="line">  <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;detail&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">      <span class="attr">&quot;browser&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">          <span class="attr">&quot;url&quot;</span><span class="punctuation">:</span> <span class="string">&quot;https://karpathy.ai/sitemap.xml&quot;</span><span class="punctuation">,</span></span><br><span class="line">          <span class="attr">&quot;screenshot&quot;</span><span class="punctuation">:</span> <span class="string">&quot;https://private-us-east-1.manuscdn.com/sessionFile/AWssWxITcsrl70js5L8LgU/browserScreenshots/8ok3S2fztznd3xXXAckWuU_1740981186961_na1fn_Y2xlYW4.webp?Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9wcml2YXRlLXVzLWVhc3QtMS5tYW51c2Nkbi5jb20vc2Vzc2lvbkZpbGUvQVdzc1d4SVRjc3JsNzBqczVMOExnVS9icm93c2VyU2NyZWVuc2hvdHMvOG9rM1MyZnp0em5kM3hYWEFja1d1VV8xNzQwOTgxMTg2OTYxX25hMWZuX1kyeGxZVzQud2VicCIsIkNvbmRpdGlvbiI6eyJEYXRlTGVzc1RoYW4iOnsiQVdTOkVwb2NoVGltZSI6MTc0MzQ5Mzg4MX19fV19&amp;Key-Pair-Id=K2HSFNDJXOU9YS&amp;Signature=a5f63042KYtlkK0EBZ~6wchQhFIyF3UPznX5BwyRhOTkBKqIxpccQKwfA61Mjoh7G3olaAEnMoKY8V33yppQqh~XtqhDH4Zi9WhhvPjvsT1x3kEUi~TsNAPWAyquTsevwp8AnN3FNvji6W5LejYf3FPqYrwDxQ3CovabG66gTymBPuDH6xRPpTMZJ3e5V6dJpUeFvfme2P83lMfOocPanb6oVUjuI5NbFtPlfrBCdZ1viRbW7nsJ17cva8xnLMhdGvSDiZgpjR3cR8JQgWIduGS6~OGYDEWJjWbSLzruXCSfMKgISIRKu8p3I-r1V92FdPnf3ibZEFO0DWvc5t-cEg__&quot;</span></span><br><span class="line">      <span class="punctuation">&#125;</span></span><br><span class="line">  <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;planStepId&quot;</span><span class="punctuation">:</span> <span class="string">&quot;zIMD9AzOodmLihMIWvrfau&quot;</span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br><span class="line"></span><br><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line">    <span class="attr">&quot;id&quot;</span><span class="punctuation">:</span> <span class="string">&quot;HWODKdCH1qsyTRRqfBr9Rv&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;type&quot;</span><span class="punctuation">:</span> <span class="string">&quot;toolUsed&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;timestamp&quot;</span><span class="punctuation">:</span> <span class="number">1740981300966</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;actionId&quot;</span><span class="punctuation">:</span> <span class="string">&quot;toolu_01JbRvGTd1ZZqro7x9cG7fyp&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;tool&quot;</span><span class="punctuation">:</span> <span class="string">&quot;browser&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;status&quot;</span><span class="punctuation">:</span> <span class="string">&quot;success&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;brief&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Manus 正在使用浏览器&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;description&quot;</span><span class="punctuation">:</span> <span class="string">&quot;向下滚动&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;message&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">        <span class="attr">&quot;action&quot;</span><span class="punctuation">:</span> <span class="string">&quot;向下滚动&quot;</span></span><br><span class="line">    <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;detail&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">        <span class="attr">&quot;browser&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">            <span class="attr">&quot;url&quot;</span><span class="punctuation">:</span> <span class="string">&quot;https://karpathy.ai/sitemap.xml&quot;</span><span class="punctuation">,</span></span><br><span class="line">            <span class="attr">&quot;screenshot&quot;</span><span class="punctuation">:</span> <span class="string">&quot;https://private-us-east-1.manuscdn.com/sessionFile/AWssWxITcsrl70js5L8LgU/browserScreenshots/NtlzbhabiafX6YzkUV4IPW_1740981297970_na1fn_Y2xlYW4.webp?Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9wcml2YXRlLXVzLWVhc3QtMS5tYW51c2Nkbi5jb20vc2Vzc2lvbkZpbGUvQVdzc1d4SVRjc3JsNzBqczVMOExnVS9icm93c2VyU2NyZWVuc2hvdHMvTnRsemJoYWJpYWZYNll6a1VWNElQV18xNzQwOTgxMjk3OTcwX25hMWZuX1kyeGxZVzQud2VicCIsIkNvbmRpdGlvbiI6eyJEYXRlTGVzc1RoYW4iOnsiQVdTOkVwb2NoVGltZSI6MTc0MzQ5Mzg4MX19fV19&amp;Key-Pair-Id=K2HSFNDJXOU9YS&amp;Signature=vp3ct3QZMgwNEexJpMuxZ-PHgPnBjrwhD2jG6A10X11vOy7bfEbvF8eVJW~6diSn1hqnOFKVeOP0-dtbA81KCYQoWnEJlKzPXjQOF3JSoNKSfByCtCtmGOaeFony-4RFvgLhIXFo5YRlXK3yqOjLPHJ61ZjDtv8ubH8nKXiQR7EpgFCkEdY~UYCy6G5mpOBRO8SRF2PDvkjbnHaMLhKsR1ktX-A1KHfrnCipV7u4sxz-~8wtNlVpI195iFT0P1zxoG8SYoFUMdPojuqM3HZm2vRhPK8WoDYGfT9UslFNOrzVLMEu0oT0~ngIyS3LdoMstGATwB4jg4b9WJMkD7yYOw__&quot;</span></span><br><span class="line">        <span class="punctuation">&#125;</span></span><br><span class="line">    <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;planStepId&quot;</span><span class="punctuation">:</span> <span class="string">&quot;aEN75n7TG4G4jQIa3Wcq6w&quot;</span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br><span class="line"></span><br><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line">    <span class="attr">&quot;id&quot;</span><span class="punctuation">:</span> <span class="string">&quot;TQdH6uiDxug1mvfuax1wev&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;type&quot;</span><span class="punctuation">:</span> <span class="string">&quot;toolUsed&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;timestamp&quot;</span><span class="punctuation">:</span> <span class="number">1741008567997</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;actionId&quot;</span><span class="punctuation">:</span> <span class="string">&quot;toolu_01KMrkUjZRaNwYtYszogRu3S&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;tool&quot;</span><span class="punctuation">:</span> <span class="string">&quot;browser&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;status&quot;</span><span class="punctuation">:</span> <span class="string">&quot;success&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;brief&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Manus 正在使用浏览器&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;description&quot;</span><span class="punctuation">:</span> <span class="string">&quot;点击索引为 `17` 的元素&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;message&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">        <span class="attr">&quot;action&quot;</span><span class="punctuation">:</span> <span class="string">&quot;正在点击元素&quot;</span></span><br><span class="line">    <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;detail&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">        <span class="attr">&quot;browser&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">            <span class="attr">&quot;url&quot;</span><span class="punctuation">:</span> <span class="string">&quot;https://topstartups.io/?industries=Artificial%20Intelligence&quot;</span><span class="punctuation">,</span></span><br><span class="line">            <span class="attr">&quot;screenshot&quot;</span><span class="punctuation">:</span> <span class="string">&quot;https://private-us-east-1.manuscdn.com/sessionFile/YIRZaLUfghVxGCN7dE6hbI/browserScreenshots/4krQb4zV8cVF2C2ZBHqGd5_1741008563479_na1fn_Y2xlYW4.webp?Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9wcml2YXRlLXVzLWVhc3QtMS5tYW51c2Nkbi5jb20vc2Vzc2lvbkZpbGUvWUlSWmFMVWZnaFZ4R0NON2RFNmhiSS9icm93c2VyU2NyZWVuc2hvdHMvNGtyUWI0elY4Y1ZGMkMyWkJIcUdkNV8xNzQxMDA4NTYzNDc5X25hMWZuX1kyeGxZVzQud2VicCIsIkNvbmRpdGlvbiI6eyJEYXRlTGVzc1RoYW4iOnsiQVdTOkVwb2NoVGltZSI6MTc0MzQ5NDM4M319fV19&amp;Key-Pair-Id=K2HSFNDJXOU9YS&amp;Signature=fGPk7NotNLYyve10v9CMq~3k~B-QXeWQ8m17S9276KOpqNcv5cFnhVPHn2F08j-EQVWWJPyNqnVoHgmZ22p5YdmG1DC1wGKmRwzwMZ41-mFGW-W2kdSYRi9I3Ha9uPP23ZpgR1HPLDu-wOAKQzhPZCX1Mx0F8y-2qrJVmLqeAyaELm6Pvlk7cZzSGF~W5hJptHx7xdfARXLWV-gtKU~XtCu5ZdIZfutyjryGPiV8xIknpTyFvPfR~MCypNWMAXY2tR3MAmV1x3r~F7CWj5JV44kpYZrTPI-maPUtnkoxXnt7oLXFNUAHFYamBq86uo8C5ZNjTa9Q5D25nlbSicp8uw__&quot;</span></span><br><span class="line">        <span class="punctuation">&#125;</span></span><br><span class="line">    <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;planStepId&quot;</span><span class="punctuation">:</span> <span class="string">&quot;crQ9ZsB23l5MN7IYhwOnSx&quot;</span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br><span class="line"></span><br><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line">    <span class="attr">&quot;id&quot;</span><span class="punctuation">:</span> <span class="string">&quot;AUsLw5l0nxo5Qwa4jZhZQM&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;type&quot;</span><span class="punctuation">:</span> <span class="string">&quot;toolUsed&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;timestamp&quot;</span><span class="punctuation">:</span> <span class="number">1741009272646</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;actionId&quot;</span><span class="punctuation">:</span> <span class="string">&quot;toolu_014ymijbAfUVMC9RFfPht8oA&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;tool&quot;</span><span class="punctuation">:</span> <span class="string">&quot;browser&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;status&quot;</span><span class="punctuation">:</span> <span class="string">&quot;error&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;brief&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Manus 正在使用浏览器&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;description&quot;</span><span class="punctuation">:</span> <span class="string">&quot;browser:Error executing action browser_navigate: Page.goto: net::ERR_EMPTY_RESPONSE at http://8000-i5hfldcpydtx82vqb7cu1-226a4af3.manus.computer/\nCall log:\n  - navigating to \&quot;http://8000-i5hfldcpydtx82vqb7cu1-226a4af3.manus.computer/\&quot;, waiting until \&quot;commit\&quot;\n&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;message&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">        <span class="attr">&quot;action&quot;</span><span class="punctuation">:</span> <span class="string">&quot;正在处理浏览器错误&quot;</span></span><br><span class="line">    <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;planStepId&quot;</span><span class="punctuation">:</span> <span class="string">&quot;iSOY2zdYOeyP0kAWNHrDLF&quot;</span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br></pre></td></tr></table></figure><h3 id="planUpdate"><a href="#planUpdate" class="headerlink" title="planUpdate"></a>planUpdate</h3><ul><li><code>status</code>: “doing”, “todo”, “done”</li><li><code>endAt</code> for “done” status task</li></ul><p>It seems that this event will be emitted after a <code>toolUsed</code> or <code>newPlanStep</code> event.</p><p><code>tasks</code> list in <code>planUpdate</code> event will be appended after user asked a new question.</p><figure class="highlight json"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br></pre></td><td class="code"><pre><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line">  <span class="attr">&quot;id&quot;</span><span class="punctuation">:</span> <span class="string">&quot;XrXQO9oRo34MYtstDRLZwE&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;type&quot;</span><span class="punctuation">:</span> <span class="string">&quot;planUpdate&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;timestamp&quot;</span><span class="punctuation">:</span> <span class="number">1741060908470</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;tasks&quot;</span><span class="punctuation">:</span> <span class="punctuation">[</span></span><br><span class="line">    <span class="punctuation">&#123;</span></span><br><span class="line">      <span class="attr">&quot;id&quot;</span><span class="punctuation">:</span> <span class="string">&quot;step_001&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;title&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Create comprehensive Tesla stock analysis task list&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;status&quot;</span><span class="punctuation">:</span> <span class="string">&quot;doing&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;startedAt&quot;</span><span class="punctuation">:</span> <span class="number">1741060908465</span></span><br><span class="line">    <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="punctuation">&#123;</span></span><br><span class="line">      <span class="attr">&quot;id&quot;</span><span class="punctuation">:</span> <span class="string">&quot;step_002&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;title&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Gather Tesla company overview and key information&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;status&quot;</span><span class="punctuation">:</span> <span class="string">&quot;todo&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;startedAt&quot;</span><span class="punctuation">:</span> <span class="number">1741060908465</span></span><br><span class="line">    <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="punctuation">&#123;</span></span><br><span class="line">      <span class="attr">&quot;id&quot;</span><span class="punctuation">:</span> <span class="string">&quot;step_003&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;title&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Collect and analyze Tesla&#x27;s financial data&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;status&quot;</span><span class="punctuation">:</span> <span class="string">&quot;todo&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;startedAt&quot;</span><span class="punctuation">:</span> <span class="number">1741060908465</span></span><br><span class="line">    <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="punctuation">&#123;</span></span><br><span class="line">      <span class="attr">&quot;id&quot;</span><span class="punctuation">:</span> <span class="string">&quot;step_004&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;title&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Evaluate market sentiment for Tesla&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;status&quot;</span><span class="punctuation">:</span> <span class="string">&quot;todo&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;startedAt&quot;</span><span class="punctuation">:</span> <span class="number">1741060908465</span></span><br><span class="line">    <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="punctuation">&#123;</span></span><br><span class="line">      <span class="attr">&quot;id&quot;</span><span class="punctuation">:</span> <span class="string">&quot;step_005&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;title&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Perform technical analysis on Tesla stock&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;status&quot;</span><span class="punctuation">:</span> <span class="string">&quot;todo&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;startedAt&quot;</span><span class="punctuation">:</span> <span class="number">1741060908465</span></span><br><span class="line">    <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="punctuation">&#123;</span></span><br><span class="line">      <span class="attr">&quot;id&quot;</span><span class="punctuation">:</span> <span class="string">&quot;step_006&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;title&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Compare Tesla with key industry competitors&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;status&quot;</span><span class="punctuation">:</span> <span class="string">&quot;todo&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;startedAt&quot;</span><span class="punctuation">:</span> <span class="number">1741060908465</span></span><br><span class="line">    <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="punctuation">&#123;</span></span><br><span class="line">      <span class="attr">&quot;id&quot;</span><span class="punctuation">:</span> <span class="string">&quot;step_007&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;title&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Calculate intrinsic value of Tesla stock&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;status&quot;</span><span class="punctuation">:</span> <span class="string">&quot;todo&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;startedAt&quot;</span><span class="punctuation">:</span> <span class="number">1741060908465</span></span><br><span class="line">    <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="punctuation">&#123;</span></span><br><span class="line">      <span class="attr">&quot;id&quot;</span><span class="punctuation">:</span> <span class="string">&quot;step_008&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;title&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Develop comprehensive investment thesis&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;status&quot;</span><span class="punctuation">:</span> <span class="string">&quot;todo&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;startedAt&quot;</span><span class="punctuation">:</span> <span class="number">1741060908465</span></span><br><span class="line">    <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="punctuation">&#123;</span></span><br><span class="line">      <span class="attr">&quot;id&quot;</span><span class="punctuation">:</span> <span class="string">&quot;step_009&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;title&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Compile detailed Tesla stock analysis report&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;status&quot;</span><span class="punctuation">:</span> <span class="string">&quot;todo&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;startedAt&quot;</span><span class="punctuation">:</span> <span class="number">1741060908465</span></span><br><span class="line">    <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="punctuation">&#123;</span></span><br><span class="line">      <span class="attr">&quot;id&quot;</span><span class="punctuation">:</span> <span class="string">&quot;step_010&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;title&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Deliver comprehensive stock analysis to user&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;status&quot;</span><span class="punctuation">:</span> <span class="string">&quot;todo&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;startedAt&quot;</span><span class="punctuation">:</span> <span class="number">1741060908465</span></span><br><span class="line">    <span class="punctuation">&#125;</span></span><br><span class="line">  <span class="punctuation">]</span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br></pre></td></tr></table></figure><h3 id="newPlanStep"><a href="#newPlanStep" class="headerlink" title="newPlanStep"></a>newPlanStep</h3><p><code>stepId</code> instead of <code>planStepId</code> in data, which will wrap the steps like this:</p><p><img data-src="https://cdn.joouis.com/unpacking-the-data-structure-of-manus-session-2.avif"></p><p><code>newPlanStep</code> seems to be the flag to indicate next step is beginning. (Guess the step status is also controlled by this.)</p><p><img data-src="https://cdn.joouis.com/unpacking-the-data-structure-of-manus-session-3.avif"></p><figure class="highlight json"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line">  <span class="attr">&quot;id&quot;</span><span class="punctuation">:</span> <span class="string">&quot;4UHAXLMlsuovhOWGm6WBzB&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;type&quot;</span><span class="punctuation">:</span> <span class="string">&quot;newPlanStep&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;timestamp&quot;</span><span class="punctuation">:</span> <span class="number">1741060902693</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;title&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Create comprehensive Tesla stock analysis task list&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;stepId&quot;</span><span class="punctuation">:</span> <span class="string">&quot;E7Q4GDL3FsNrzRuv3Cb5Xa&quot;</span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br></pre></td></tr></table></figure><h3 id="knowledgeSuggested"><a href="#knowledgeSuggested" class="headerlink" title="knowledgeSuggested"></a>knowledgeSuggested</h3><figure class="highlight json"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line">  <span class="attr">&quot;id&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Gg74U4LDSvOC4x1wGDW1IL&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;type&quot;</span><span class="punctuation">:</span> <span class="string">&quot;knowledgeSuggested&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;timestamp&quot;</span><span class="punctuation">:</span> <span class="number">1741064324520</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;brief&quot;</span><span class="punctuation">:</span> <span class="string">&quot;建议的新知识&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;resources&quot;</span><span class="punctuation">:</span> <span class="punctuation">[</span></span><br><span class="line">    <span class="punctuation">&#123;</span></span><br><span class="line">      <span class="attr">&quot;title&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Tesla stock analysis dashboard creation&quot;</span></span><br><span class="line">    <span class="punctuation">&#125;</span></span><br><span class="line">  <span class="punctuation">]</span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br></pre></td></tr></table></figure><h2 id="A-steps-collection-of-plan"><a href="#A-steps-collection-of-plan" class="headerlink" title="A steps collection of plan"></a>A steps collection of plan</h2><p><code>statusUpdate</code> and <code>toolUsed</code> events searched by a same <code>planStepId</code> .</p><figure class="highlight json"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br><span class="line">124</span><br><span class="line">125</span><br><span class="line">126</span><br><span class="line">127</span><br><span class="line">128</span><br><span class="line">129</span><br><span class="line">130</span><br><span class="line">131</span><br><span class="line">132</span><br><span class="line">133</span><br><span class="line">134</span><br><span class="line">135</span><br><span class="line">136</span><br><span class="line">137</span><br><span class="line">138</span><br><span class="line">139</span><br><span class="line">140</span><br><span class="line">141</span><br><span class="line">142</span><br><span class="line">143</span><br><span class="line">144</span><br><span class="line">145</span><br><span class="line">146</span><br><span class="line">147</span><br><span class="line">148</span><br><span class="line">149</span><br><span class="line">150</span><br><span class="line">151</span><br><span class="line">152</span><br><span class="line">153</span><br><span class="line">154</span><br><span class="line">155</span><br><span class="line">156</span><br><span class="line">157</span><br><span class="line">158</span><br><span class="line">159</span><br><span class="line">160</span><br><span class="line">161</span><br><span class="line">162</span><br><span class="line">163</span><br><span class="line">164</span><br><span class="line">165</span><br><span class="line">166</span><br><span class="line">167</span><br><span class="line">168</span><br><span class="line">169</span><br><span class="line">170</span><br><span class="line">171</span><br><span class="line">172</span><br><span class="line">173</span><br><span class="line">174</span><br><span class="line">175</span><br><span class="line">176</span><br><span class="line">177</span><br><span class="line">178</span><br><span class="line">179</span><br><span class="line">180</span><br><span class="line">181</span><br><span class="line">182</span><br><span class="line">183</span><br><span class="line">184</span><br><span class="line">185</span><br><span class="line">186</span><br><span class="line">187</span><br><span class="line">188</span><br><span class="line">189</span><br><span class="line">190</span><br><span class="line">191</span><br><span class="line">192</span><br><span class="line">193</span><br><span class="line">194</span><br><span class="line">195</span><br><span class="line">196</span><br><span class="line">197</span><br><span class="line">198</span><br><span class="line">199</span><br><span class="line">200</span><br><span class="line">201</span><br><span class="line">202</span><br><span class="line">203</span><br><span class="line">204</span><br><span class="line">205</span><br><span class="line">206</span><br><span class="line">207</span><br><span class="line">208</span><br><span class="line">209</span><br><span class="line">210</span><br><span class="line">211</span><br><span class="line">212</span><br><span class="line">213</span><br><span class="line">214</span><br><span class="line">215</span><br><span class="line">216</span><br><span class="line">217</span><br><span class="line">218</span><br><span class="line">219</span><br><span class="line">220</span><br><span class="line">221</span><br><span class="line">222</span><br><span class="line">223</span><br><span class="line">224</span><br><span class="line">225</span><br><span class="line">226</span><br><span class="line">227</span><br><span class="line">228</span><br><span class="line">229</span><br><span class="line">230</span><br><span class="line">231</span><br></pre></td><td class="code"><pre><span class="line"><span class="punctuation">[</span></span><br><span class="line">  <span class="punctuation">&#123;</span></span><br><span class="line">    <span class="attr">&quot;id&quot;</span><span class="punctuation">:</span> <span class="string">&quot;wQ0tsoHiqVskSwU9Ud93sA&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;type&quot;</span><span class="punctuation">:</span> <span class="string">&quot;statusUpdate&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;timestamp&quot;</span><span class="punctuation">:</span> <span class="number">1741061972527</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;agentStatus&quot;</span><span class="punctuation">:</span> <span class="string">&quot;running&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;brief&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Manus 正在工作&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;description&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Moving to analyze market sentiment for Tesla&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;noRender&quot;</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">false</span></span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;planStepId&quot;</span><span class="punctuation">:</span> <span class="string">&quot;7galTGLGCzryoM1tSeM1YR&quot;</span></span><br><span class="line">  <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="punctuation">&#123;</span></span><br><span class="line">    <span class="attr">&quot;id&quot;</span><span class="punctuation">:</span> <span class="string">&quot;XYu58JLESxdSecDmgKLeJi&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;type&quot;</span><span class="punctuation">:</span> <span class="string">&quot;newPlanStep&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;timestamp&quot;</span><span class="punctuation">:</span> <span class="number">1741061972511</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;title&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Evaluate market sentiment for Tesla&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;stepId&quot;</span><span class="punctuation">:</span> <span class="string">&quot;7galTGLGCzryoM1tSeM1YR&quot;</span></span><br><span class="line">  <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="punctuation">&#123;</span></span><br><span class="line">    <span class="attr">&quot;id&quot;</span><span class="punctuation">:</span> <span class="string">&quot;ooZqdunPTMjCQY1WZe75mY&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;type&quot;</span><span class="punctuation">:</span> <span class="string">&quot;statusUpdate&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;timestamp&quot;</span><span class="punctuation">:</span> <span class="number">1741061994707</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;agentStatus&quot;</span><span class="punctuation">:</span> <span class="string">&quot;running&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;brief&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Manus 正在工作&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;description&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Analyzing market sentiment for Tesla&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;noRender&quot;</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">false</span></span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;planStepId&quot;</span><span class="punctuation">:</span> <span class="string">&quot;7galTGLGCzryoM1tSeM1YR&quot;</span></span><br><span class="line">  <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="punctuation">&#123;</span></span><br><span class="line">    <span class="attr">&quot;id&quot;</span><span class="punctuation">:</span> <span class="string">&quot;dH95W9Qz9mwR9Xd9Vh029D&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;type&quot;</span><span class="punctuation">:</span> <span class="string">&quot;toolUsed&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;timestamp&quot;</span><span class="punctuation">:</span> <span class="number">1741062198875</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;actionId&quot;</span><span class="punctuation">:</span> <span class="string">&quot;toolu_01PbZbqkKu517na1HvYTWsZu&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;tool&quot;</span><span class="punctuation">:</span> <span class="string">&quot;terminal&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;status&quot;</span><span class="punctuation">:</span> <span class="string">&quot;success&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;brief&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Manus 正在使用终端&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;description&quot;</span><span class="punctuation">:</span> <span class="string">&quot;已执行命令 `cd /home/ubuntu/tesla_analysis/data &amp;&amp; touch tesla_market_sentiment.py`&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;message&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">      <span class="attr">&quot;action&quot;</span><span class="punctuation">:</span> <span class="string">&quot;正在执行命令&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;param&quot;</span><span class="punctuation">:</span> <span class="string">&quot;cd /home/ubuntu/tesla_analysis/data &amp;&amp; touch tesla_market_sentiment.py&quot;</span></span><br><span class="line">    <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;detail&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">      <span class="attr">&quot;terminal&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">        <span class="attr">&quot;action&quot;</span><span class="punctuation">:</span> <span class="string">&quot;execute&quot;</span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">&quot;finished&quot;</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">&quot;shellId&quot;</span><span class="punctuation">:</span> <span class="string">&quot;shell2&quot;</span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">&quot;command&quot;</span><span class="punctuation">:</span> <span class="string">&quot;cd /home/ubuntu/tesla_analysis/data &amp;&amp; touch tesla_market_sentiment.py&quot;</span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">&quot;outputType&quot;</span><span class="punctuation">:</span> <span class="string">&quot;append&quot;</span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">&quot;output&quot;</span><span class="punctuation">:</span> <span class="punctuation">[</span></span><br><span class="line">          <span class="string">&quot;\u001b[32mubuntu@sandbox:~/tesla_analysis/data $\u001b[0m cd /home/ubuntu/tesla_analysis/data &amp;&amp; cd /home/ubuntu/tesla_analysis/data &amp;&amp; touch tesla_market_sentiment.py\n\n\u001b[32mubuntu@sandbox:~/tesla_analysis/data $\u001b[0m&quot;</span></span><br><span class="line">        <span class="punctuation">]</span></span><br><span class="line">      <span class="punctuation">&#125;</span></span><br><span class="line">    <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;planStepId&quot;</span><span class="punctuation">:</span> <span class="string">&quot;7galTGLGCzryoM1tSeM1YR&quot;</span></span><br><span class="line">  <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="punctuation">&#123;</span></span><br><span class="line">    <span class="attr">&quot;id&quot;</span><span class="punctuation">:</span> <span class="string">&quot;kp9yBKsz4TVgQn8oNtp8wD&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;type&quot;</span><span class="punctuation">:</span> <span class="string">&quot;statusUpdate&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;timestamp&quot;</span><span class="punctuation">:</span> <span class="number">1741062306008</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;agentStatus&quot;</span><span class="punctuation">:</span> <span class="string">&quot;running&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;brief&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Manus 正在工作&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;description&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Analyzing market sentiment for Tesla&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;noRender&quot;</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">false</span></span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;planStepId&quot;</span><span class="punctuation">:</span> <span class="string">&quot;7galTGLGCzryoM1tSeM1YR&quot;</span></span><br><span class="line">  <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="punctuation">&#123;</span></span><br><span class="line">    <span class="attr">&quot;id&quot;</span><span class="punctuation">:</span> <span class="string">&quot;5sP3g1brITVABMTqR6WwgC&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;type&quot;</span><span class="punctuation">:</span> <span class="string">&quot;toolUsed&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;timestamp&quot;</span><span class="punctuation">:</span> <span class="number">1741062396685</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;actionId&quot;</span><span class="punctuation">:</span> <span class="string">&quot;toolu_01BRfXbq4SLzWftS4fjUBLCM&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;tool&quot;</span><span class="punctuation">:</span> <span class="string">&quot;text_editor&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;status&quot;</span><span class="punctuation">:</span> <span class="string">&quot;success&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;planStepId&quot;</span><span class="punctuation">:</span> <span class="string">&quot;7galTGLGCzryoM1tSeM1YR&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;brief&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Manus 正在使用文本编辑器&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;description&quot;</span><span class="punctuation">:</span> <span class="string">&quot;正在创建文件 `tesla_analysis/data/tesla_market_sentiment.py`&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;message&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">      <span class="attr">&quot;action&quot;</span><span class="punctuation">:</span> <span class="string">&quot;正在创建文件&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;param&quot;</span><span class="punctuation">:</span> <span class="string">&quot;tesla_analysis/data/tesla_market_sentiment.py&quot;</span></span><br><span class="line">    <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;detail&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">      <span class="attr">&quot;textEditor&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">        <span class="attr">&quot;action&quot;</span><span class="punctuation">:</span> <span class="string">&quot;write&quot;</span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">&quot;path&quot;</span><span class="punctuation">:</span> <span class="string">&quot;/home/ubuntu/tesla_analysis/data/tesla_market_sentiment.py&quot;</span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">&quot;content&quot;</span><span class="punctuation">:</span> <span class="string">&quot;import sys\nsys.path.append(&#x27;/opt/.manus/.sandbox-runtime&#x27;)\nfrom data_api import ApiClient\nimport json\nimport pandas as pd\nimport matplotlib.pyplot as plt\nfrom datetime import datetime\nimport os\nimport re\nfrom collections import Counter\n\n# Initialize API client\n&lt;response clipped&gt;&lt;NOTE&gt;To save on context only part of this file has been shown to you. You should retry this tool after you have searched inside the file with `grep -n` in order to find the line numbers of what you are looking for.&lt;/NOTE&gt;&quot;</span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">&quot;oldContent&quot;</span><span class="punctuation">:</span> <span class="string">&quot;&quot;</span></span><br><span class="line">      <span class="punctuation">&#125;</span></span><br><span class="line">    <span class="punctuation">&#125;</span></span><br><span class="line">  <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="punctuation">&#123;</span></span><br><span class="line">    <span class="attr">&quot;id&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Rsk8LFoezHv2npHjVCwlRo&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;type&quot;</span><span class="punctuation">:</span> <span class="string">&quot;statusUpdate&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;timestamp&quot;</span><span class="punctuation">:</span> <span class="number">1741062403749</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;agentStatus&quot;</span><span class="punctuation">:</span> <span class="string">&quot;running&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;brief&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Manus 正在工作&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;description&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Analyzing market sentiment for Tesla&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;noRender&quot;</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">false</span></span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;planStepId&quot;</span><span class="punctuation">:</span> <span class="string">&quot;7galTGLGCzryoM1tSeM1YR&quot;</span></span><br><span class="line">  <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="punctuation">&#123;</span></span><br><span class="line">    <span class="attr">&quot;id&quot;</span><span class="punctuation">:</span> <span class="string">&quot;IoPrLfFwxxO3VuwnBLogJO&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;type&quot;</span><span class="punctuation">:</span> <span class="string">&quot;toolUsed&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;timestamp&quot;</span><span class="punctuation">:</span> <span class="number">1741062438389</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;actionId&quot;</span><span class="punctuation">:</span> <span class="string">&quot;toolu_0115Z943k9mQYDZgPT2vp46Q&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;tool&quot;</span><span class="punctuation">:</span> <span class="string">&quot;terminal&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;planStepId&quot;</span><span class="punctuation">:</span> <span class="string">&quot;7galTGLGCzryoM1tSeM1YR&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;status&quot;</span><span class="punctuation">:</span> <span class="string">&quot;success&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;brief&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Manus 正在使用终端&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;message&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">      <span class="attr">&quot;action&quot;</span><span class="punctuation">:</span> <span class="string">&quot;正在执行命令&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;param&quot;</span><span class="punctuation">:</span> <span class="string">&quot;cd /home/ubuntu/tesla_analysis/data &amp;&amp; python3 tesla_market_sentiment.py&quot;</span></span><br><span class="line">    <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;description&quot;</span><span class="punctuation">:</span> <span class="string">&quot;执行命令 `cd /home/ubuntu/tesla_analysis/data &amp;&amp; python3 tesla_market_sentiment.py` 并等待了 `30` 秒&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;detail&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">      <span class="attr">&quot;terminal&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">        <span class="attr">&quot;action&quot;</span><span class="punctuation">:</span> <span class="string">&quot;execute&quot;</span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">&quot;finished&quot;</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">false</span></span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">&quot;shellId&quot;</span><span class="punctuation">:</span> <span class="string">&quot;shell2&quot;</span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">&quot;command&quot;</span><span class="punctuation">:</span> <span class="string">&quot;cd /home/ubuntu/tesla_analysis/data &amp;&amp; python3 tesla_market_sentiment.py&quot;</span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">&quot;outputType&quot;</span><span class="punctuation">:</span> <span class="string">&quot;append&quot;</span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">&quot;output&quot;</span><span class="punctuation">:</span> <span class="punctuation">[</span><span class="string">&quot;(No output from terminal)&quot;</span><span class="punctuation">]</span></span><br><span class="line">      <span class="punctuation">&#125;</span></span><br><span class="line">    <span class="punctuation">&#125;</span></span><br><span class="line">  <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="punctuation">&#123;</span></span><br><span class="line">    <span class="attr">&quot;id&quot;</span><span class="punctuation">:</span> <span class="string">&quot;dg1mAnR7Mpxs7R2oVY4czy&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;type&quot;</span><span class="punctuation">:</span> <span class="string">&quot;statusUpdate&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;timestamp&quot;</span><span class="punctuation">:</span> <span class="number">1741062544145</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;agentStatus&quot;</span><span class="punctuation">:</span> <span class="string">&quot;running&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;brief&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Manus 正在工作&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;description&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Analyzing market sentiment for Tesla&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;noRender&quot;</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">false</span></span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;planStepId&quot;</span><span class="punctuation">:</span> <span class="string">&quot;7galTGLGCzryoM1tSeM1YR&quot;</span></span><br><span class="line">  <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="punctuation">&#123;</span></span><br><span class="line">    <span class="attr">&quot;id&quot;</span><span class="punctuation">:</span> <span class="string">&quot;aRArJ9xWzOlLzzUUh4cmFM&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;type&quot;</span><span class="punctuation">:</span> <span class="string">&quot;toolUsed&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;timestamp&quot;</span><span class="punctuation">:</span> <span class="number">1741062548731</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;actionId&quot;</span><span class="punctuation">:</span> <span class="string">&quot;toolu_01Q8eFq4SuY8icHma6NNc9B4&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;tool&quot;</span><span class="punctuation">:</span> <span class="string">&quot;terminal&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;status&quot;</span><span class="punctuation">:</span> <span class="string">&quot;success&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;brief&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Manus 正在使用终端&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;description&quot;</span><span class="punctuation">:</span> <span class="string">&quot;已执行命令 `cd /home/ubuntu/tesla_analysis/data &amp;&amp; ls -la`&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;message&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">      <span class="attr">&quot;action&quot;</span><span class="punctuation">:</span> <span class="string">&quot;正在执行命令&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;param&quot;</span><span class="punctuation">:</span> <span class="string">&quot;cd /home/ubuntu/tesla_analysis/data &amp;&amp; ls -la&quot;</span></span><br><span class="line">    <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;detail&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">      <span class="attr">&quot;terminal&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">        <span class="attr">&quot;action&quot;</span><span class="punctuation">:</span> <span class="string">&quot;execute&quot;</span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">&quot;finished&quot;</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">&quot;shellId&quot;</span><span class="punctuation">:</span> <span class="string">&quot;shell3&quot;</span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">&quot;command&quot;</span><span class="punctuation">:</span> <span class="string">&quot;cd /home/ubuntu/tesla_analysis/data &amp;&amp; ls -la&quot;</span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">&quot;outputType&quot;</span><span class="punctuation">:</span> <span class="string">&quot;append&quot;</span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">&quot;output&quot;</span><span class="punctuation">:</span> <span class="punctuation">[</span></span><br><span class="line">          <span class="string">&quot;\u001b[32mubuntu@sandbox:~ $\u001b[0m cd /home/ubuntu/tesla_analysis/data &amp;&amp; cd /home/ubuntu/tesla_analysis/data &amp;&amp; ls -la\ntotal 660\ndrwxrwxr-x 2 ubuntu ubuntu   4096 Mar  3 14:38 \u001b[0m\u001b[01;34m.\u001b[0m\ndrwxrwxr-x 4 ubuntu ubuntu   4096 Mar  3 14:25 \u001b[01;34m..\u001b[0m\n-rw-rw-r-- 1 ubuntu ubuntu    174 Mar  3 14:38 tesla_analyst_reports_raw.json\n-rw-rw-r-- 1 ubuntu ubuntu   1675 Mar  3 14:20 tesla_business_model.json\n-rw-rw-r-- 1 ubuntu ubuntu   1166 Mar  3 14:20 tesla_business_model.txt\n-rw-rw-r-- 1 ubuntu ubuntu   2404 Mar  3 14:18 tesla_company_profile.py\n-rw-rw-r-- 1 ubuntu ubuntu   1848 Mar  3 14:18 tesla_company_profile.txt\n-rw-rw-r-- 1 ubuntu ubuntu  12466 Mar  3 14:29 tesla_financial_analysis.py\n-rw-rw-r-- 1 ubuntu ubuntu   3744 Mar  3 14:30 tesla_financial_analysis.txt\n-rw-rw-r-- 1 ubuntu ubuntu    232 Mar  3 14:25 tesla_financial_metrics.json\n-rw-rw-r-- 1 ubuntu ubuntu   1548 Mar  3 14:29 tesla_financial_metrics_detailed.json\n-rw-rw-r-- 1 ubuntu ubuntu    287 Mar  3 14:25 tesla_financial_summary.txt\n-rw-rw-r-- 1 ubuntu ubuntu  21753 Mar  3 14:25 tesla_historical_prices.csv\n-rw-rw-r-- 1 ubuntu ubuntu   1741 Mar  3 14:20 tesla_history.json\n-rw-rw-r-- 1 ubuntu ubuntu    945 Mar  3 14:20 tesla_history.txt\n-rw-rw-r-- 1 ubuntu ubuntu   8602 Mar  3 14:38 tesla_holders_raw.json\n-rw-rw-r-- 1 ubuntu ubuntu 216917 Mar  3 14:38 tesla_insights_raw.json\n-rw-rw-r-- 1 ubuntu ubuntu    891 Mar  3 14:20 tesla_leadership.json\n-rw-rw-r-- 1 ubuntu ubuntu   8480 Mar  3 14:20 tesla_leadership.py\n-rw-rw-r-- 1 ubuntu ubuntu    443 Mar  3 14:20 tesla_leadership.txt\n-rw-rw-r-- 1 ubuntu ubuntu  21364 Mar  3 14:38 tesla_market_sentiment.py\n-rw-rw-r-- 1 ubuntu ubuntu   3150 Mar  3 14:38 tesla_market_sentiment.txt\n-rw-rw-r-- 1 ubuntu ubuntu   2579 Mar  3 14:18 tesla_profile_raw.json\n-rw-rw-r-- 1 ubuntu ubuntu 126156 Mar  3 14:38 tesla_sec_filings_raw.json\n-rw-rw-r-- 1 ubuntu ubuntu   6083 Mar  3 14:38 tesla_sentiment_data.json\n-rw-rw-r-- 1 ubuntu ubuntu   6926 Mar  3 14:23 tesla_stock_data.py\n-rw-rw-r-- 1 ubuntu ubuntu   9321 Mar  3 14:25 tesla_stock_data_raw_1mo.json\n-rw-rw-r-- 1 ubuntu ubuntu  20505 Mar  3 14:25 tesla_stock_data_raw_1y.json\n-rw-rw-r-- 1 ubuntu ubuntu     60 Mar  3 14:25 tesla_stock_data_raw_5y.json\n-rw-rw-r-- 1 ubuntu ubuntu  43112 Mar  3 14:25 tesla_stock_data_raw_6mo.json\n-rw-rw-r-- 1 ubuntu ubuntu  62875 Mar  3 14:25 tesla_stock_data_raw_max.json\n-rw-rw-r-- 1 ubuntu ubuntu    182 Mar  3 14:38 tesla_twitter_raw.json\n\u001b[32mubuntu@sandbox:~/tesla_analysis/data $\u001b[0m&quot;</span></span><br><span class="line">        <span class="punctuation">]</span></span><br><span class="line">      <span class="punctuation">&#125;</span></span><br><span class="line">    <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;planStepId&quot;</span><span class="punctuation">:</span> <span class="string">&quot;7galTGLGCzryoM1tSeM1YR&quot;</span></span><br><span class="line">  <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="punctuation">&#123;</span></span><br><span class="line">    <span class="attr">&quot;id&quot;</span><span class="punctuation">:</span> <span class="string">&quot;FWT7evw7q3d78b0ordJp58&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;type&quot;</span><span class="punctuation">:</span> <span class="string">&quot;statusUpdate&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;timestamp&quot;</span><span class="punctuation">:</span> <span class="number">1741062614593</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;agentStatus&quot;</span><span class="punctuation">:</span> <span class="string">&quot;running&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;brief&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Manus 正在工作&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;description&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Completing market sentiment analysis for Tesla&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;noRender&quot;</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">false</span></span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;planStepId&quot;</span><span class="punctuation">:</span> <span class="string">&quot;7galTGLGCzryoM1tSeM1YR&quot;</span></span><br><span class="line">  <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="punctuation">&#123;</span></span><br><span class="line">    <span class="attr">&quot;id&quot;</span><span class="punctuation">:</span> <span class="string">&quot;oU4CahZLkVztLlRx78Mho6&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;type&quot;</span><span class="punctuation">:</span> <span class="string">&quot;toolUsed&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;timestamp&quot;</span><span class="punctuation">:</span> <span class="number">1741062614950</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;actionId&quot;</span><span class="punctuation">:</span> <span class="string">&quot;toolu_01QsGKEkNeUoZFWoyiFaiUX1&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;tool&quot;</span><span class="punctuation">:</span> <span class="string">&quot;terminal&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;status&quot;</span><span class="punctuation">:</span> <span class="string">&quot;success&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;brief&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Manus 正在使用终端&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;description&quot;</span><span class="punctuation">:</span> <span class="string">&quot;已执行命令 `cd /home/ubuntu/tesla_analysis/charts &amp;&amp; ls -la`&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;message&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">      <span class="attr">&quot;action&quot;</span><span class="punctuation">:</span> <span class="string">&quot;正在执行命令&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;param&quot;</span><span class="punctuation">:</span> <span class="string">&quot;cd /home/ubuntu/tesla_analysis/charts &amp;&amp; ls -la&quot;</span></span><br><span class="line">    <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;detail&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">      <span class="attr">&quot;terminal&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">        <span class="attr">&quot;action&quot;</span><span class="punctuation">:</span> <span class="string">&quot;execute&quot;</span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">&quot;finished&quot;</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">&quot;shellId&quot;</span><span class="punctuation">:</span> <span class="string">&quot;shell3&quot;</span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">&quot;command&quot;</span><span class="punctuation">:</span> <span class="string">&quot;cd /home/ubuntu/tesla_analysis/charts &amp;&amp; ls -la&quot;</span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">&quot;outputType&quot;</span><span class="punctuation">:</span> <span class="string">&quot;append&quot;</span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">&quot;output&quot;</span><span class="punctuation">:</span> <span class="punctuation">[</span></span><br><span class="line">          <span class="string">&quot;\u001b[32mubuntu@sandbox:~/tesla_analysis/data $\u001b[0m cd /home/ubuntu/tesla_analysis &amp;&amp; cd /home/ubuntu/tesla_analysis/charts &amp;&amp; ls -la\ntotal 252\ndrwxrwxr-x 2 ubuntu ubuntu  4096 Mar  3 14:38 \u001b[0m\u001b[01;34m.\u001b[0m\ndrwxrwxr-x 4 ubuntu ubuntu  4096 Mar  3 14:25 \u001b[01;34m..\u001b[0m\n-rw-rw-r-- 1 ubuntu ubuntu 30300 Mar  3 14:30 tesla_capital_structure.png\n-rw-rw-r-- 1 ubuntu ubuntu 44464 Mar  3 14:30 tesla_cash_flow_analysis.png\n-rw-rw-r-- 1 ubuntu ubuntu 47609 Mar  3 14:25 tesla_historical_price.png\n-rw-rw-r-- 1 ubuntu ubuntu 61140 Mar  3 14:30 tesla_profitability_margins.png\n-rw-rw-r-- 1 ubuntu ubuntu 32821 Mar  3 14:30 tesla_revenue_growth.png\n-rw-rw-r-- 1 ubuntu ubuntu 23416 Mar  3 14:38 tesla_technical_outlook.png\n\u001b[32mubuntu@sandbox:~/tesla_analysis/charts $\u001b[0m&quot;</span></span><br><span class="line">        <span class="punctuation">]</span></span><br><span class="line">      <span class="punctuation">&#125;</span></span><br><span class="line">    <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;planStepId&quot;</span><span class="punctuation">:</span> <span class="string">&quot;7galTGLGCzryoM1tSeM1YR&quot;</span></span><br><span class="line">  <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="punctuation">&#123;</span></span><br><span class="line">    <span class="attr">&quot;id&quot;</span><span class="punctuation">:</span> <span class="string">&quot;sPndWS5ngDLS0XuGHYep6N&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;type&quot;</span><span class="punctuation">:</span> <span class="string">&quot;statusUpdate&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;timestamp&quot;</span><span class="punctuation">:</span> <span class="number">1741062620453</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;agentStatus&quot;</span><span class="punctuation">:</span> <span class="string">&quot;running&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;brief&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Manus 正在工作&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;description&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Completing market sentiment analysis for Tesla&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;noRender&quot;</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">false</span></span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;planStepId&quot;</span><span class="punctuation">:</span> <span class="string">&quot;7galTGLGCzryoM1tSeM1YR&quot;</span></span><br><span class="line">  <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="punctuation">&#123;</span></span><br><span class="line">    <span class="attr">&quot;id&quot;</span><span class="punctuation">:</span> <span class="string">&quot;FpA1ynrLVk70PPIjM3RGKA&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;type&quot;</span><span class="punctuation">:</span> <span class="string">&quot;toolUsed&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;timestamp&quot;</span><span class="punctuation">:</span> <span class="number">1741062626134</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;actionId&quot;</span><span class="punctuation">:</span> <span class="string">&quot;toolu_01F7XnUyYY9SXZYnLS4xmMPV&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;tool&quot;</span><span class="punctuation">:</span> <span class="string">&quot;text_editor&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;status&quot;</span><span class="punctuation">:</span> <span class="string">&quot;success&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;planStepId&quot;</span><span class="punctuation">:</span> <span class="string">&quot;7galTGLGCzryoM1tSeM1YR&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;brief&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Manus 正在使用文本编辑器&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;description&quot;</span><span class="punctuation">:</span> <span class="string">&quot;编辑文件 `tesla_analysis/todo.md`&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;message&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">      <span class="attr">&quot;action&quot;</span><span class="punctuation">:</span> <span class="string">&quot;正在编辑文件&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;param&quot;</span><span class="punctuation">:</span> <span class="string">&quot;tesla_analysis/todo.md&quot;</span></span><br><span class="line">    <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;detail&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">      <span class="attr">&quot;textEditor&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">        <span class="attr">&quot;action&quot;</span><span class="punctuation">:</span> <span class="string">&quot;update&quot;</span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">&quot;path&quot;</span><span class="punctuation">:</span> <span class="string">&quot;/home/ubuntu/tesla_analysis/todo.md&quot;</span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">&quot;content&quot;</span><span class="punctuation">:</span> <span class="string">&quot;# Tesla Stock Analysis Todo List\n\n## 1. Create Todo List\n- [x] Create project directory structure\n- [x] Create todo.md file\n- [x] Outline all required analysis components\n\n## 2. Gather Tesla Company Overview\n- [x] Collect basic company information (ticker, exchange, etc.)\n- [x] Get company profile and business summary\n- [x] Identify key executives and leadership team\n- [x] Document company history and major milestones\n- [x] Analyze business model and revenue streams\n\n## 3. Collect Tesla Financial Data\n- [x] Retrieve historical stock price data\n- [x] Analyze revenue trends over past 5 years\n- [x] Calculate profit margins and profitability metrics\n- [x] Examine balance sheet strength and liabilities\n- [x] Analyze cash flow statements and free cash flow\n- [x] Review capital expenditures and R&amp;D investments\n\n## 4. Analyze Market Sentiment for Tesla\n- [x] Gather recent analyst ratings and price targets\n- [x] Collect analyst commentary and research reports\n- [x] Analyze recent news impact on stock price\n- [x] Review insider trading activity\n- [x] Examine institutional ownership changes\n- [x] Assess social media and retail investor sentiment\n\n## 5. Perform Technical Analysis on Tesla Stock\n- [ ] Create price charts for different time periods\n- [ ] Identify key support and resistance levels\n- [ ] Calculate and analyze moving averages\n- [ ] Evaluate momentum indicators (RSI, MACD, etc.)\n- [ ] Identify chart patterns and potential breakout points\n- [ ] Assess volume trends and distribution\n\n## 6. Compare Tesla with Competitors\n- [ ] Identify key competitors in EV and automotive space\n- [ ] Compare market share and growth rates\n- [ ] Analyze financial metrics relative to peers\n- [ ] Compare valuation multiples (P/E, P/S, EV/EBITDA)\n- [ ] Assess technological advantages and disadvantages\n- [ ] Evaluate manufacturing capacity and efficiency\n\n## 7. Calculate Intrinsic Value of Tesla\n- [ ] Apply discounted cash flow (DCF) model\n- [ ] Estimate future growth rates and margins\n- [ ] Calculate weighted average cost of capital (WACC)\n- [ ] Perform sensitivity analysis on key assumptions\n- [ ] Compare intrinsic value to current market price\n- [ ] Assess margin of safety for potential investors\n\n## 8. Develop Investment Thesis for Tesla\n- [ ] Conduct SWOT analysis (Strengths, Weaknesses, Opportunities, Threats)\n- [ ] Identify key growth drivers and catalysts\n- [ ] Assess major risk factors and potential headwinds\n- [ ] Develop bull case scenario and price target\n- [ ] Develop bear case scenario and price target\n- [ ] Create recommendations for different investor types\n\n## 9. Compile Comprehensive Tesla Stock Report\n- [ ] Write executive summary with key findings\n- [ ] Organize all analysis sections into cohesive report\n- [ ] Create visualizations for key metrics and trends\n- [ ] Format report with proper sections and references\n- [ ] Review and proofread final document\n\n## 10. Deliver Report to User\n- [ ] Finalize all report components\n- [ ] Ensure all analyses are complete and accurate\n- [ ] Package report with all supporting files\n- [ ] Deliver final report to user\n&quot;</span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">&quot;oldContent&quot;</span><span class="punctuation">:</span> <span class="string">&quot;# Tesla Stock Analysis Todo List\n\n## 1. Create Todo List\n- [x] Create project directory structure\n- [x] Create todo.md file\n- [x] Outline all required analysis components\n\n## 2. Gather Tesla Company Overview\n- [x] Collect basic company information (ticker, exchange, etc.)\n- [x] Get company profile and business summary\n- [x] Identify key executives and leadership team\n- [x] Document company history and major milestones\n- [x] Analyze business model and revenue streams\n\n## 3. Collect Tesla Financial Data\n- [x] Retrieve historical stock price data\n- [x] Analyze revenue trends over past 5 years\n- [x] Calculate profit margins and profitability metrics\n- [x] Examine balance sheet strength and liabilities\n- [x] Analyze cash flow statements and free cash flow\n- [x] Review capital expenditures and R&amp;D investments\n\n## 4. Analyze Market Sentiment for Tesla\n- [ ] Gather recent analyst ratings and price targets\n- [ ] Collect analyst commentary and research reports\n- [ ] Analyze recent news impact on stock price\n- [ ] Review insider trading activity\n- [ ] Examine institutional ownership changes\n- [ ] Assess social media and retail investor sentiment\n\n## 5. Perform Technical Analysis on Tesla Stock\n- [ ] Create price charts for different time periods\n- [ ] Identify key support and resistance levels\n- [ ] Calculate and analyze moving averages\n- [ ] Evaluate momentum indicators (RSI, MACD, etc.)\n- [ ] Identify chart patterns and potential breakout points\n- [ ] Assess volume trends and distribution\n\n## 6. Compare Tesla with Competitors\n- [ ] Identify key competitors in EV and automotive space\n- [ ] Compare market share and growth rates\n- [ ] Analyze financial metrics relative to peers\n- [ ] Compare valuation multiples (P/E, P/S, EV/EBITDA)\n- [ ] Assess technological advantages and disadvantages\n- [ ] Evaluate manufacturing capacity and efficiency\n\n## 7. Calculate Intrinsic Value of Tesla\n- [ ] Apply discounted cash flow (DCF) model\n- [ ] Estimate future growth rates and margins\n- [ ] Calculate weighted average cost of capital (WACC)\n- [ ] Perform sensitivity analysis on key assumptions\n- [ ] Compare intrinsic value to current market price\n- [ ] Assess margin of safety for potential investors\n\n## 8. Develop Investment Thesis for Tesla\n- [ ] Conduct SWOT analysis (Strengths, Weaknesses, Opportunities, Threats)\n- [ ] Identify key growth drivers and catalysts\n- [ ] Assess major risk factors and potential headwinds\n- [ ] Develop bull case scenario and price target\n- [ ] Develop bear case scenario and price target\n- [ ] Create recommendations for different investor types\n\n## 9. Compile Comprehensive Tesla Stock Report\n- [ ] Write executive summary with key findings\n- [ ] Organize all analysis sections into cohesive report\n- [ ] Create visualizations for key metrics and trends\n- [ ] Format report with proper sections and references\n- [ ] Review and proofread final document\n\n## 10. Deliver Report to User\n- [ ] Finalize all report components\n- [ ] Ensure all analyses are complete and accurate\n- [ ] Package report with all supporting files\n- [ ] Deliver final report to user\n&quot;</span></span><br><span class="line">      <span class="punctuation">&#125;</span></span><br><span class="line">    <span class="punctuation">&#125;</span></span><br><span class="line">  <span class="punctuation">&#125;</span></span><br><span class="line"><span class="punctuation">]</span></span><br></pre></td></tr></table></figure>]]></content>
    
    
    <summary type="html">Simple note of data interface of Manus session with examples.</summary>
    
    
    
    <category term="ML/DL/LLM" scheme="https://joouis.com/categories/ML-DL-LLM/"/>
    
    <category term="AI Agent" scheme="https://joouis.com/categories/ML-DL-LLM/AI-Agent/"/>
    
    
    <category term="large language model" scheme="https://joouis.com/tags/large-language-model/"/>
    
    <category term="llm" scheme="https://joouis.com/tags/llm/"/>
    
    <category term="gpt" scheme="https://joouis.com/tags/gpt/"/>
    
    <category term="agent" scheme="https://joouis.com/tags/agent/"/>
    
    <category term="data structure" scheme="https://joouis.com/tags/data-structure/"/>
    
    <category term="manus" scheme="https://joouis.com/tags/manus/"/>
    
    <category term="session" scheme="https://joouis.com/tags/session/"/>
    
  </entry>
  
  <entry>
    <title>Qwen2.5 vs. GPT-4o - Unlocking Coding Potential with Cline</title>
    <link href="https://joouis.com/2025/qwen25-vs-gpt4o-with-cline/"/>
    <id>https://joouis.com/2025/qwen25-vs-gpt4o-with-cline/</id>
    <published>2025-01-17T14:22:30.000Z</published>
    <updated>2025-01-17T17:35:00.000Z</updated>
    
    <content type="html"><![CDATA[<h3 id="Key-Takeaways"><a href="#Key-Takeaways" class="headerlink" title="Key Takeaways:"></a>Key Takeaways:</h3><ul><li>The locally deployed open-source model Qwen2.5-72B outperforms GPT-4o with Cline.</li><li>A more general instruction-tuned model is preferable over coding&#x2F;math-specific versions when using Cline.</li><li>Improvements in model performance could enhance other tools, such as OpenHands, which I plan to try next.</li></ul><h3 id="Exploring-the-Coding-Agent-Landscape"><a href="#Exploring-the-Coding-Agent-Landscape" class="headerlink" title="Exploring the Coding Agent Landscape"></a>Exploring the Coding Agent Landscape</h3><p>Recently, one of the hottest topics has been coding agents. Our team explored the Cursor and Windsurf editors (both forks of VS Code) and found them to be amazing! Their capabilities, including code quality, response speed, automation, and less human feedback, are superior to the GitHub Copilot extension on VS Code. It’s not surprising that Cursor and Windsurf can easily outperform GitHub Copilot (and Cline + GPT-4o which I’ll introduce soon), as these products have comprehensive optimizations, including post-trained models, customized prompts, RAG, etc. However, they also come with privacy and security risks.</p><p>To adopt a coding assistant while meeting compliance requirements, the Cline extension with the GPT-4o service provided by Azure AI is an excellent option. We are grateful for the leadership team’s encouragement and support in utilizing this tool.</p><h3 id="My-Short-Journey-with-Cline-AOAI-GPT-4o"><a href="#My-Short-Journey-with-Cline-AOAI-GPT-4o" class="headerlink" title="My Short Journey with Cline + AOAI GPT-4o"></a>My Short Journey with Cline + AOAI GPT-4o</h3><p>I started using Cline + AOAI GPT-4o to replace Cursor right after the callout email. However, like my teammates, I found its performance below expectations. The setup process was complicated with unclear configurations and TPM rate limits, and its capabilities were far inferior to Cursor&#x2F;Windsurf. It also suffered from stability issues, including extended hangups (over 5 minutes) and code 500 request errors. The downgraded experience was disappointing for an aspiring engineer.</p><p>GPT-4o should be the best model we can use so far, we can only choose AOAI models from the base model list. Although o1-preview is also on the list, applications are required, and there is a lengthy wait for approval. While creating the GPT-4o deployment on Azure AI Foundry, I noticed that fine-tuned models were “available”. This made me wonder if other models on Azure AI might be both compliant and superior to GPT-4o. Public leaderboards could answer the performance question, though verification would take effort. Azure AI only offers fine-tuning tool, which isn’t ideal for our case. Azure AI Foundry’s Model catalog presents another opportunity with its many popular models, but I lacked both quota and budget to experiment. Faced with either using a mediocre tool or leaving an idea unverified, I decided to locally deploy the open-source Qwen2.5 model.</p><h3 id="Deployment-and-Testing"><a href="#Deployment-and-Testing" class="headerlink" title="Deployment and Testing"></a>Deployment and Testing</h3><p>I deployed the official Qwen2.5-72B-Instruct-AWQ model using vLLM, and the process went smoothly. Even configuring Cline proved easier than with AOAI. For smaller tasks, the model performs on par with GPT-4o. For project-level challenges like “write a Tetris game for the web using TypeScript”, its planning and reasoning capabilities surpass GPT-4o. I tested both models a few times for this task - Qwen2.5 consistently provided similar, rough, and workable versions with few rounds of human feedback, while GPT-4o only succeeded once. Both outputs were buggy and required multiple rounds of instructions to refine.</p><p>The response speed for both models is about the same, which is acceptable to me. The token usage for Qwen2.5 always shows as 0, which might be a bug, but the log sizes for both models are comparable. While scaling up usage might reveal new challenges, the service and quality of Qwen2.5 currently meet my needs.</p><p>Initially, I tried Qwen2.5-Coder-32B-Instruct because of its high download ranking and coding purpose, but it occasionally struggled with Cline prompts. There is <a href="https://www.reddit.com/r/LocalLLaMA/comments/1gpqhgu/qwen_25_32b_coder_doesnt_handle_the_cline_prompt/">similar issue</a> discussed on Reddit. I also noticed that Cline supports DeepSeek, which has received glowing feedback from colleagues about its DeepSeek-V3 commercial version. However, its MoE architecture with 685B parameters makes it impractical for typical personal use.</p><h3 id="Scaling-Up-for-Team-Deployment"><a href="#Scaling-Up-for-Team-Deployment" class="headerlink" title="Scaling Up for Team Deployment"></a>Scaling Up for Team Deployment</h3><p>I’m happy with my local server now, but how can I generalize it to the whole team? I guess the solution still lies with Azure AI model service. Interestingly, while Phi-4 is a Microsoft model, we’re unable to use it directly on Azure AI. Perhaps Microsoft is too deeply tied to OpenAI. If it’s possible to reallocate a portion of the AOAI compute quotas to deploy some of these wonderful open-source models, things would be different.</p>]]></content>
    
    
    <summary type="html">If you haven&#39;t heard Cline before, just try it!</summary>
    
    
    
    <category term="ML/DL/LLM" scheme="https://joouis.com/categories/ML-DL-LLM/"/>
    
    <category term="AI Agent" scheme="https://joouis.com/categories/ML-DL-LLM/AI-Agent/"/>
    
    
    <category term="large language model" scheme="https://joouis.com/tags/large-language-model/"/>
    
    <category term="llm" scheme="https://joouis.com/tags/llm/"/>
    
    <category term="gpt" scheme="https://joouis.com/tags/gpt/"/>
    
    <category term="open source" scheme="https://joouis.com/tags/open-source/"/>
    
    <category term="agent" scheme="https://joouis.com/tags/agent/"/>
    
    <category term="coding assistant" scheme="https://joouis.com/tags/coding-assistant/"/>
    
    <category term="gpt-4o" scheme="https://joouis.com/tags/gpt-4o/"/>
    
    <category term="qwen2.5" scheme="https://joouis.com/tags/qwen2-5/"/>
    
    <category term="cline" scheme="https://joouis.com/tags/cline/"/>
    
    <category term="windsurf" scheme="https://joouis.com/tags/windsurf/"/>
    
    <category term="cursor" scheme="https://joouis.com/tags/cursor/"/>
    
    <category term="azure ai" scheme="https://joouis.com/tags/azure-ai/"/>
    
  </entry>
  
  <entry>
    <title>From Research to Product: Customer Insights on Prompt flow</title>
    <link href="https://joouis.com/2024/from-research-to-product-customer-insights-on-prompt-flow/"/>
    <id>https://joouis.com/2024/from-research-to-product-customer-insights-on-prompt-flow/</id>
    <published>2024-05-27T13:55:12.000Z</published>
    <updated>2024-05-31T04:26:00.000Z</updated>
    
    <content type="html"><![CDATA[<h2 id="Time-to-navigate-the-frontier"><a href="#Time-to-navigate-the-frontier" class="headerlink" title="Time to navigate the frontier"></a>Time to navigate the frontier</h2><p>In the dynamic landscape of Large Language Models (LLM), our team is once again at the cutting edge, pioneering a new venture called <a href="https://github.com/microsoft/promptflow">Prompt flow</a> (PF). My role transcends the rapid and high-quality delivery of products. I need to contemplate the features that can deliver real values to our customers and the user experience that resonates with the essence of those features. This new challenge is substantial for a web front-end engineer and has been a focal point of my professional contemplation.</p><p>As 2023 drew to a close, a fortuitous invitation from a university peer led me to explore the synergy between LLMs and conventional ML models. This exploration transformed me into an amateur researcher, granting me the privilege to scrutinize the research process through our customers’ lens, with the aim of pinpointing their pain points to better inform our product design.</p><h2 id="Recent-academic-work-I-learned-from"><a href="#Recent-academic-work-I-learned-from" class="headerlink" title="Recent academic work I learned from"></a>Recent academic work I learned from</h2><p><a href="https://arxiv.org/abs/2402.13414">This paper</a> has been accepted by ACL 2024 Findings few days ago, a great encouragement for us. <strong>Please read the full paper if you’re interested in details, which will not be interpreted here</strong>.</p><h4 id="Harnessing-LLMs-as-post-hoc-correctors"><a href="#Harnessing-LLMs-as-post-hoc-correctors" class="headerlink" title="Harnessing LLMs as post-hoc correctors"></a>Harnessing LLMs as post-hoc correctors</h4><p>A fixed LLM is leveraged to propose corrections to an arbitrary ML model’s predictions without additional training or the need for additional datasets.</p><p><img data-src="https://cdn.joouis.com/from-research-to-product-customer-insights-on-prompt-flow-1-concept.png" alt="Figure 1: Harnessing LLMs as post-hoc correctors. A fixed LLM is leveraged to propose corrections to an arbitrary ML model&#39;s predictions without additional training or the need for additional datasets."></p><h4 id="A-high-level-overview-of-LLMCORR"><a href="#A-high-level-overview-of-LLMCORR" class="headerlink" title="A high-level overview of LLMCORR"></a>A high-level overview of LLMCORR</h4><p>Harnessing Large Language Models (LLMs) as post-hoc correctors to refine predictions made by an arbitrary Machine Learning (ML) model.</p><p><img data-src="https://cdn.joouis.com/from-research-to-product-customer-insights-on-prompt-flow-2-pipeline.png" alt="Figure 2: A high-level overview of LLMCORR, harnessing Large Language Models (LLMs) as post-hoc correctors to refine predictions made by an arbitrary Machine Learning (ML) model."></p><h4 id="LLMCORR-prompt-template"><a href="#LLMCORR-prompt-template" class="headerlink" title="LLMCORR prompt template"></a>LLMCORR prompt template</h4><p>Multiple contextual knowledge from training and validation datasets can be included by expanding the template.</p><p><img data-src="https://cdn.joouis.com/from-research-to-product-customer-insights-on-prompt-flow-3-prompt.png" alt="Figure 3: LLMCORR prompt template. Multiple contextual knowledge from training and validation datasets can be included by expanding the template."></p><h2 id="Reflections-on-Prompt-flow"><a href="#Reflections-on-Prompt-flow" class="headerlink" title="Reflections on Prompt flow"></a>Reflections on Prompt flow</h2><p>I have been deeply involved in PF since the inception of this project. Naturally, I endeavored to integrate it into our research, yet reality diverged from my original intentions. Hence, let’s see these few reflections on PF throughout the research journey. Please note that most of our works were done before early February of 2024, so I don’t mean to be a monday morning quarterback for some points.</p><h3 id="1-Support-and-optimization-of-local-inference-experience-will-gain-more-customer-favor"><a href="#1-Support-and-optimization-of-local-inference-experience-will-gain-more-customer-favor" class="headerlink" title="1. Support and optimization of local inference experience will gain more customer favor"></a>1. Support and optimization of local inference experience will gain more customer favor</h3><p>Most researchers and engineers have certain computational resources, and from the perspective of cost control, they are likely to choose open-source large language models (LLMs) for local inference work, which PF does not support. We have similar story that opted for LLMs like Llama at the beginning of the experiment, which meant giving up on PF.</p><h3 id="2-Flex-mode-is-crucial-for-the-use-of-flow"><a href="#2-Flex-mode-is-crucial-for-the-use-of-flow" class="headerlink" title="2. Flex mode is crucial for the use of flow"></a>2. Flex mode is crucial for the use of flow</h3><p>Despite transitioning to OpenAI’s GPT3.5&#x2F;4 models, our repository was already rich with Python utilities and Jupyter notebooks, complemented by a wealth of projects from previous research endeavors. The core competitive edge of PF aside, the availability of flex mode at that juncture would have allowed for an exploratory integration with our established GNN workflow, potentially igniting a synergistic spark.</p><h3 id="3-Is-Prompt-engineering-really-that-important"><a href="#3-Is-Prompt-engineering-really-that-important" class="headerlink" title="3. Is Prompt engineering really that important?"></a>3. Is Prompt engineering really that important?</h3><p>The value of our work lies in placing LLM to an interesting position with right work in the system to maximize its value. The prompts designed and used are relatively common today: simple structure, essential knowledge and few-shots. Therefore prompt engineering have not played the key role in this work.</p><p>It is worth mentioning that PF recently launched the Prompty feature, which provides quick access and focuses on the value of tuning prompts. This may be practical in large engineering applications, where the content of a single prompt can range from hundreds to thousands of lines. If the scenario holds, then support complex Jinja Template Designer features and preview the final prompt content will be of great help (just like Overleaf does).</p><h3 id="4-What-PF-did-right"><a href="#4-What-PF-did-right" class="headerlink" title="4. What PF did right?"></a>4. What PF did right?</h3><p>When we began to learn and try to implement RAG App, we naturally looked at some LangChain samples first, then… went from beginner to giving up. My teammate chose the OpenAI Playground to use the GPT4 Assistants feature, meanwhile Azure OpenAI had not supported Assistants yet, so I chose to build a RAG flow following the PF sample. In this scenario, there are a few advantages to note:</p><ul><li>Low-code is always easy to build PoC.</li><li>Orchestration to do batch run.</li><li>Tracing (Not implemented yet at that time, but definitely a keeper feature).</li></ul><p>Of course, there are also points worth discussing, such as whether you still need to write some code that will affect the ease of use assessment if it is not clear in the sample that embeddings are generated using the same model set and stored in the vector database; or the data input and output in the batch run scenario, which also involves a lot of manual work.</p><p>Another aside, the performance of File retrieval of OpenAI (OAI) Assistants was not satisfactory at that time. I wonder if there has been a significant improvement after it was renamed to File Search now.</p><h3 id="5-What-should-PF-focus-on-if-it-conducts-Experiments"><a href="#5-What-should-PF-focus-on-if-it-conducts-Experiments" class="headerlink" title="5. What should PF focus on if it conducts Experiments?"></a>5. What should PF focus on if it conducts Experiments?</h3><p>Firstly, there are some old topics, such as experiment status display and refresh, CRUD operations and viewing logs at each step, which are essential features of various products.</p><p>When the amount of experimental data is huge, limitations on metrics like RPM and TPM will start to trouble users. Thus, how to estimate the number of tokens and requests for experiments under these constraints by services like OAI and Azure OpenAI (AOAI) to achieve automated high-concurrency scheduling, and even support multi-endpoints concurrency, will be a great value to customer. In previous experiments, we implemented very basic token calculation and request interval logic, and I believe we are not the only ones with such needs.</p><h2 id="Last-few-words"><a href="#Last-few-words" class="headerlink" title="Last few words"></a>Last few words</h2><p>It’s not commonly encouraged for engineers to delve into academic pursuits, since not everyone possesses the passion, foundation, or even time. However, in the era of Generative AI, immersing oneself in scholarly articles is always a wise move!</p><p>Whether in practical application or academic experimentation, only through in-depth engagement can one truly understand and unearth the pain points of users. I believe this embodies the spirit of our current discussion.</p>]]></content>
    
    
    <summary type="html">Reflections on becoming a customer of our own product.</summary>
    
    
    
    <category term="ML/DL/LLM" scheme="https://joouis.com/categories/ML-DL-LLM/"/>
    
    
    <category term="TechTalk" scheme="https://joouis.com/tags/TechTalk/"/>
    
    <category term="machine learning" scheme="https://joouis.com/tags/machine-learning/"/>
    
    <category term="large language model" scheme="https://joouis.com/tags/large-language-model/"/>
    
    <category term="llm" scheme="https://joouis.com/tags/llm/"/>
    
    <category term="gpt" scheme="https://joouis.com/tags/gpt/"/>
    
    <category term="research" scheme="https://joouis.com/tags/research/"/>
    
    <category term="product mindset" scheme="https://joouis.com/tags/product-mindset/"/>
    
    <category term="reflection" scheme="https://joouis.com/tags/reflection/"/>
    
    <category term="prompt flow" scheme="https://joouis.com/tags/prompt-flow/"/>
    
    <category term="acl" scheme="https://joouis.com/tags/acl/"/>
    
  </entry>
  
  <entry>
    <title>2023大阪东京走马观花五日流水账（下）</title>
    <link href="https://joouis.com/2023/my-first-trip-to-japan-3/"/>
    <id>https://joouis.com/2023/my-first-trip-to-japan-3/</id>
    <published>2023-12-10T08:50:00.000Z</published>
    <updated>2023-12-11T14:19:00.000Z</updated>
    
    <content type="html"><![CDATA[<h2 id="前情提要"><a href="#前情提要" class="headerlink" title="前情提要"></a>前情提要</h2><p>《<a href="https://joouis.com/2023/my-first-trip-to-japan-2/">2023大阪东京走马观花五日游（中）</a>》</p><h2 id="04-24东京微软办公室长什么样？"><a href="#04-24东京微软办公室长什么样？" class="headerlink" title="04.24东京微软办公室长什么样？"></a>04.24东京微软办公室长什么样？</h2><p>一觉睡到九点半对我来说不算什么，但对Eyama而言够晚了，他也是真累了。中午Eyama约了他之前在Bing的一位同事姐姐带我们参观微软品川办公室。办公室就在品川站旁边，地理位置非常便捷。不过我们并没有绕一圈去品川站，还是沿着昨晚回来的路线，R线转临海线到天王洲岛站下车。考虑到剩余路程不长，并且地图上看这一带由好几个小岛连接而成，景色应该不错，因此我们直接步行到微软办公室。</p><p>沿途环境很优美，并且周一工作时间人不多。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-3-1.avif"></p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-3-2.avif"></p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-3-3.avif"></p><p>约莫二十分钟走到微软大楼。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-3-4.avif"></p><p>电梯上来就是一个透明玻璃屋的纪念品店，我们离开前逛了一下，有意思的礼品不多。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-3-5.avif"></p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-3-6.avif"></p><p>我背着小包出门，把工牌忘在酒店的书包里了，只能登记访客进入。而Eyama被前台小姐姐赋予了永久进入品川办公室的权限&#x3D; &#x3D;+</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-3-7.avif"></p><p>Eyama的前同事Tomoko小姐姐是我厂的一名产品经理，人很亲切。接到我们之后正好是饭点，先带我们简单吃个工作餐。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-3-8.avif"></p><p>东京办公室的设计主题有点像是热带丛林，办公室的整体环境和国内差不多。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-3-9.avif"></p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-3-10.avif"></p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-3-11.avif"></p><p>餐厅应该都比苏州分公司的强（吧）。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-3-12.avif"></p><p>Tomoko把我们带到Eyama前团队所在的区域和老同事打招呼后就因为工作先离开了，我们相约苏州办公室再见。三四年过去了，Eyama的同事还有好几位在原来的团队，大家随意叙旧聊了好一会。隔壁居然有个做机器人的小哥在用我们组的机器学习产品，和他简单交流后表示有问题随时Teams上ping我😎。</p><p>离开前再拍一张，整体来说这边是很传统外企风的办公室。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-3-13.avif"></p><h2 id="04-24中古琴行初体验"><a href="#04-24中古琴行初体验" class="headerlink" title="04.24中古琴行初体验"></a>04.24中古琴行初体验</h2><p>离开微软后我们到品川站坐地铁前往涩谷，去那边的Ikebe琴行寻找在大阪没看到的中古琴。一路都在想带把合适的琴回去，把这次日本行的费用给挣回来。Ikebe的涩谷分店距离车站很近，一栋商业楼里有一层全是中古琴，店的面积也不算小，有点意思。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-3-14.avif"></p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-3-15.avif"></p><p>居然还能见到Warmoth的拼琴。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-3-16.avif"></p><p>我一眼就发现了之前在网上相中的吉他，向店员提出了试琴的请求。店员二话不说拿下琴接好音箱，调音之后递给我就接着忙去了。体验非常棒！</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-3-17.avif"></p><p>琴的音色没什么好说的，经典335之声。正面品相尚可，但其他地方有一些明显的磕碰。咨询价格才知道网上的标价似乎是店里的进货价，实际售价要比标价高出不少，一下子就没比国内便宜多少了。好吧，看来回去还得多做做功课，这次看看就好。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-3-18.avif"></p><h2 id="04-24自助核酸，银座采购"><a href="#04-24自助核酸，银座采购" class="headerlink" title="04.24自助核酸，银座采购"></a>04.24自助核酸，银座采购</h2><p>离开琴行后有件非常重要的事情，那就是做核酸。说来也不太走运，五月开始回国就不需要核酸证明，我们恰好处在四月的尾巴，还得花钱找一次麻烦。中午吃饭时Tomoko帮我们查询到了涩谷站附近的核酸点，并协助我们完成了线上预约。走去核酸检测站的路上，觉得这个上坡很有澳门街道的味道。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-3-19.avif"></p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-3-20.avif"></p><p>日本做核酸可不便宜，跟国内20年到21年时医院的价格差不多。里面的工作人员态度不是很好，是这次旅途中罕见的不太友善的日本人。当然我们也有点紧张，这边的核酸是自己操作检测，万一由于操作不当被认定为无效检测进而影响回程航班，那将是一场灾难。好在第二天下午返回大阪的路上，我们各自收到了阴性结果的检测报告。</p><p>在网上了解日本核酸的过程中，我还发现了一个短暂的灰色产业：闲鱼上居然有人帮忙伪造核酸检测报告！核酸检测报告上只有基本信息和检测结果，这意味着仿造的成本极低；而登机前航司只会查看报告，并不会去网上查验真伪，约等于走个过场。只能说有些人胆子真的大！</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-3-21.avif"></p><p>做完核酸三点不到，而Eric的演唱会六点才入场，时间充裕我们先路过银座给Eyama女友以及他老板代购。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-3-22.avif"></p><p>也不记得从多早以前起便知道银座这个名字，到了后的直接观感就是购物中心，满街的奢侈品店。不少店还配有会中文的店员，简单了解才知道原本就是中国人。另外这里的店员绝对是我们在日本遇到英文最好的那批人，果然为了赚钱还得多学几门语言🤣。我们回地铁站的路上还遇到了看起来像精神不正常的流浪汉，边走边咒骂，时不时扇自己巴掌，好在对路人没什么攻击性。</p><p>乡巴佬头一次听说MIKIMOTO这个品牌，据说创始人是世界上第一个成功培育珍珠的人，因此这家珠宝店因珍珠闻名。我们来这儿是帮Eyama老板代购，跟导购小哥聊得过程中，Eyama开玩笑说帮老板买东西是为了升职，同为东亚人的日本小哥秒懂，后面自如使用“for promotion~”这个梗，只能说大家都深受传统东亚职场文化荼毒已久XD</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-3-23.avif"></p><h2 id="04-24吉他之神的演唱会！"><a href="#04-24吉他之神的演唱会！" class="headerlink" title="04.24吉他之神的演唱会！"></a>04.24吉他之神的演唱会！</h2><p>买完东西已经五点出头，中间花了不少时间在微信沟通上。等我们到武道馆时已经五点半，看起来是没时间吃正餐了，便利店饭团解决吧。吃饭团前腹中感到不适，立马冲去路边的公共厕所大号。结果这个厕所着实让我震惊，非常干净，没什么异味。要是偏远地段或者高级商场里的厕所就算了，这就是一个普通的路边厕所，并且靠近九段下地铁站，人流和使用量非常大，下午五点半居然能保持这么好？！当下在微信上跟对象说，虽然听起来像国内公知说的话，但这个厕所甚至比我们家的还干净…</p><p>出来后还发现马路对面居然是靖国神社，那正好把这泡屎送给供奉在里面的战犯们~</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-3-24.avif"></p><p>六点差几分，武道馆场外已经排起了长队，我们也抓紧时间入场，不过等坐进去才发现里面大多数座位还空着呢，再晚半小时都完全来得及。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-3-25.avif"></p><p>听说日本的音乐人都以能在武道馆开个人演唱会为荣，其地位类似香港的红馆。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-3-26.avif"></p><p>“ERIC CLAPTON LIVE AT BUDOKAN 2023”，我们今晚是此次老克东京演出的最后一场。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-3-27.avif"></p><p>入座后发现超过一半以上的座位还空着。武道馆不大，座位还是老式的塑料板凳，更多是一种象征吧。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-3-28.avif"></p><p>年初手机从S21U升级到S23U，号称演唱会神器，客观说10倍光学变焦也只是看得到，距离看得清还有一段差距。但确实比大部分手机强不少，整体差强人意吧。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-3-29.avif"></p><p>一眼望过去老年粉丝还真不少，Eric跟随Cream乐队在上世纪六十年代就闻名全球，有这么多老年粉丝也正常。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-3-30.avif"></p><p>六点五十，工作人员上台进行最后的调音检查工作。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-3-31.avif"></p><p>七点准时开演，一个半小时的听觉盛宴。我们当晚发现举起手机的观众很少，后来才知道日本的很多演出不允许拍摄。不过这一场没有看到禁止告示，姑且认为没有问题吧。下面浅放一些演出照片，YouTube上可以搜到其他场次的全场录像。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-3-32.avif"></p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-3-33.avif"></p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-3-34.avif"></p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-3-35.avif"></p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-3-36.avif"></p><p>在几首电吉他曲目后换木吉他表演，中间还说了几句话感谢歌迷一直以来的支持。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-3-37.avif"></p><p>等演到《Tears in Heaven》时，全场观众自发打开手机闪光灯跟随节奏摇摆起来，场面很温情。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-3-38.avif"></p><p>我并非Eric的铁粉，之前也只听过他的一些广为流传的作品，更别说他的巡演乐队。但是当下就能感觉到乐手们非常厉害，各个卧虎藏龙，尤其是最左边的键盘手，solo的旋律和节奏都一顶一。演出结束后上网搜寻才知道这居然是一支“老龄乐队”：最年轻的吉他手Doyle Bramhall II都已54岁，键盘手Chris Stainton更是79岁高龄，有着赫赫履历的一群大师！总觉得光头佬很眼熟，看到名字直拍大腿，原来是Nathan East——音乐史上参与录音最多的贝斯手之一。之前总是在网上的各种演出视频中见到，没想到他也是Eric的老伙伴。这场演出绝对物超所值！</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-3-39.avif"></p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-3-40.avif"></p><p>演出一个半小时就结束了，意犹未尽，完全听不够。在大家的安可声中Eric和乐队只返场了一次，他与另一位键盘手Paul Carrack各唱一首歌便彻底谢幕。原本以为作为东京演唱会的最后一场老克会有更多表演回馈粉丝，不过了解他们的年龄后表示理解，这个岁数还能在舞台上近乎完美地表演一个半小时，很难要求更多。</p><p>这是我第一次出国看演唱会，也是第一次现场看全球顶级巨星、吉他英雄的演出，今生难忘！当时在朋友圈感叹道：</p><blockquote><p>圆梦2023之老克演唱会，顶级的老克、顶级的乐队、顶级的观众，几乎完美的观看体验！不是老克的粉丝，但传奇的魅力无法阻挡！今晚最佳个人投《I shot the sheriff》，但用《Wonderful tonight》给日本之行画下句号再合适不过。</p><p>震撼，精彩！</p></blockquote><p>大家有序退场后，我们与Eyama的朋友一起吃了顿印度菜，顺便了解了一点日本大学生毕业后的工作生活状况。听上去名校毕业生在国际大公司工作光鲜亮丽，实际在东京这样的大都市甚至会入不敷出。赚得多花得也多，和北上深挺像的。</p><p>依稀记得这是永田町站的换乘电梯。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-3-41.avif"></p><p>今天完成来日本最重要的行程，一整个大满足。洗完澡放松地坐在床上跟Eyama再干一杯，把剩下的零食消灭掉，明天就要回国啰。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-3-42.avif"></p><h2 id="04-25东京Google办公室长什么样？"><a href="#04-25东京Google办公室长什么样？" class="headerlink" title="04.25东京Google办公室长什么样？"></a>04.25东京Google办公室长什么样？</h2><p>东京的最后一个行程也尤为精彩，那便是参观谷歌在涩谷的办公室。来之前我们本想在涩谷站取返回大阪的新干线高铁票，但不知为何Visa卡付款一直有问题，远程求助LQ君无果，她直接杀下楼帮我们重买两张票。再一看行李寄存柜的价格，算了还是托管在办公室的前台吧。</p><p>和贵软的中年企业风相比，谷歌办公室的风格更加年轻时尚，符合我们对互联网大厂的期待。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-3-43.avif"></p><p>音乐室空间不小，设备偏入门等级。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-3-44.avif"></p><p>走廊靠墙的谷歌日语键盘展示区域很有趣，用大大小小几个键盘模仿摆出一台架子鼓，桌下还有两个踏板。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-3-45.avif"></p><p>落地窗外的风景，甚至能看到东京铁塔，简直是电视剧里才会出现的场景。本IT民工羡慕哭了😭😭😭。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-3-46.avif"></p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-3-47.avif"></p><p>Google的食堂毫无疑问秒杀贵软，无论是东京还是国内的几个办公室。并且食堂有好几个，包含西餐和日式餐点。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-3-48.avif"></p><p>用餐景色也这么顶。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-3-49.avif"></p><p>日式拉面食堂门口有一台售票机，实际不要钱~</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-3-50.avif"></p><p>所有食堂免费不说，种类丰富，碳水和蛋白质管够。水果有也好几种，吃完主食后才去拿。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-3-51.avif"></p><p>娱乐室倒没什么特别的，就是这个攀岩墙应该是给小朋友玩得吧。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-3-52.avif"></p><p>直到我们走后几个月，LQ才搞明白跳舞机和打碟机该怎么玩。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-3-53.avif"></p><p>贵软唯一能与之一战得可能只有pantry了…</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-3-54.avif"></p><p>感谢LQ大佬这几天在东京的照顾，大感恩~</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-3-55.avif"></p><h3 id="04-25返程"><a href="#04-25返程" class="headerlink" title="04.25返程"></a>04.25返程</h3><p>最后剩下返程之旅。我们先坐地铁到品川，接着乘坐新干线返回大阪。不得不说当初拒绝Eyama乘坐夜间大巴往返是多么明智的决定，虽然新干线不便宜，但舒适度比夜间大巴高出无数个档次，何况参观谷歌办公室的体验更是难得。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-3-56.avif"></p><p>新干线列车和国内的高铁感觉差不多。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-3-57.avif"></p><p>到达新大阪站后转机场快线，还看到一辆Hello Kitty主题的列车。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-3-58.avif"></p><p>我们原本要坐到关西空港的特急列车，不知怎么又上错车，到大阪后停了十多分钟开始返程新大阪才发现不对劲，赶忙查到下一班特急并成功赶上。也幸亏最初订新干线时多预留了一个半小时的时间。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-3-59.avif"></p><p>抵达关西机场后发现网上介绍的美食区域基本都在装修，只剩寥寥个位数的门店还在营业。这家拉面店的炸物好吃。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-3-60.avif"></p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-3-61.avif"></p><p>值机前Eyama去免税药妆店按照他对象给出的清单采购物品，其中有一部分是买给他自己用的，结果他一律省略只买他对象所需，真是节俭到有点离谱了… 我则是“来都来了”，问好免税门槛之后凭直觉买了点平时可能会用到的药，比如大正口腔溃疡贴。只是好像没比国内便宜多少，应该是我没做好功课。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-3-62.avif"></p><p>值机时还遇到一点小麻烦，航司要求所有乘客出示纸质版的核酸检测报告，Eyama有点走不动了，只好让他看着行李我去找便利店打印。结果航站楼内的便利店没有打印机，店员告诉我要去对面楼的全家才有。火急火燎跑过去之后，前面有个国人小姐姐正在操作，但她的苹果手机连不上打印机，而我的三星没问题但身上没有硬币现金。她主动帮我投了币，我也义不容辞帮她打印了证明。</p><p>我俩风尘仆仆赶回值机柜台时，原本排着的长队已经走光，我们随后也顺利办完手续登机。落地上海已是夜里十一点半，等到停车场的接驳车把我们接回停车场差不多十二点。来时是Eyama开得车，回程就由我来一路狂飙了。因为是Eyama的车，开回苏州他家小区门口之后，我还需要再打车花费约半小时才能到家。苏州没有机场真得太伤，一口气赶十二小时的路太伤。</p><p>无论如何，第一次日本之行到此圆满告一段落，除了没有背一把吉他回来外其余目标全都达成。增长了很多见识，对日本IT业职场也有了一丁点浅薄的认知。感慨对于有钱人来说，在日本当一个外国人（不融入当地文化）生活很爽，既有发达国家的基建、产业优势，同时又兼具安全、好服务等一些欧美国家被诟病缺乏的东西。</p><p>五年多次签证不能白办，以后还会常来看看~</p>]]></content>
    
    
    <summary type="html">参观东京微软、谷歌办公室，逛琴行，看演唱会，日本之行圆满结束。</summary>
    
    
    
    <category term="人生游记" scheme="https://joouis.com/categories/%E4%BA%BA%E7%94%9F%E6%B8%B8%E8%AE%B0/"/>
    
    
    <category term="trip" scheme="https://joouis.com/tags/trip/"/>
    
    <category term="travel" scheme="https://joouis.com/tags/travel/"/>
    
    <category term="holiday" scheme="https://joouis.com/tags/holiday/"/>
    
    <category term="food" scheme="https://joouis.com/tags/food/"/>
    
    <category term="japan" scheme="https://joouis.com/tags/japan/"/>
    
    <category term="okasa" scheme="https://joouis.com/tags/okasa/"/>
    
    <category term="tokyo" scheme="https://joouis.com/tags/tokyo/"/>
    
  </entry>
  
  <entry>
    <title>2023大阪东京走马观花五日流水账（中）</title>
    <link href="https://joouis.com/2023/my-first-trip-to-japan-2/"/>
    <id>https://joouis.com/2023/my-first-trip-to-japan-2/</id>
    <published>2023-12-06T10:00:00.000Z</published>
    <updated>2023-12-11T13:09:00.000Z</updated>
    
    <content type="html"><![CDATA[<h2 id="前情提要"><a href="#前情提要" class="headerlink" title="前情提要"></a>前情提要</h2><p>《<a href="https://joouis.com/2023/my-first-trip-to-japan-1/">2023大阪东京走马观花五日游（上）</a>》</p><h2 id="04-22徒步往返大阪城"><a href="#04-22徒步往返大阪城" class="headerlink" title="04.22徒步往返大阪城"></a>04.22徒步往返大阪城</h2><p>今天是未曾设想的超级特种兵的一天，且听我慢慢道来。</p><p>早上八点五十，赶在酒店早餐收摊之前浅尝了一下，只能说很有地方特色 :)</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-2-1.avif"></p><p>吃完我们便出发前往今日唯一景点——大阪城。需要说明从心斋桥往返大阪城我们几乎全程步行，因为Eyama对Hello Cycling的电动自行车有莫名的执念，沿路查看每个停车点有无车辆。结果所有网点都没有超过一辆可以正常使用的自行车，导致我们走了绝大多数路程。随后由于距离近、走街串巷，依然徒步在心斋桥附近逛琴行、逛商店街以及找吃的。最终手机上破纪录地显示今天走了<strong>18.78公里</strong>…</p><p>祸不单行，到了晚上我开始感到脸烫头晕，一开始还以为过度疲劳导致发烧，后面几天才意识到，我居然晒伤了！还是太年轻，完全没想到大阪的紫外线如此强烈… 而Eyama，他戴了帽子😂。</p><p>那么开始今天的city walk吧。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-2-2.avif"></p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-2-3.avif"></p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-2-4.avif"></p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-2-5.avif"></p><p>这个红绿灯旁边有个按钮，如需过马路要提前按一下，不然一直是红灯。我们就这样傻傻等了好一会才意识到不对劲😂。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-2-6.avif"></p><p>还有中文解释，说明咱国人游客不少。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-2-7.avif"></p><p>感觉大阪不算拥挤，街道宽敞，还能偶遇这样的小公园。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-2-8.avif"></p><p>这里原本要触发一个支线任务，那就是Eyama计划在去大阪城的沿途探寻一家Tabelog评分很高的店，就在这个小公园旁边。我们到店时间11点不到，想着这么早到应该不用排队，结果店家告诉我们需要预约… 支线任务失败 :(</p><p>这不仅需要Eyama当下再从Tabelog找一家附近的店，同时也无意中加大了当日行走量以及为晒伤埋下伏笔。在公园阴凉处稍息片刻，Eyama决定午餐吃一家步行十几分钟距离的大阪烧，既然选择权交给他我自然同意。</p><p>到店差点破防，今日店内不接客。好在店家还做外卖，我们可以买了带去附近的7-11吃。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-2-9.avif"></p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-2-10.avif"></p><p>两份炒面的味道其实差不多，就是加料带来区别。和昨晚的炒面类似，闻着很香，但吃起来特别咸。我俩都狂喝水，最后也没全吃完。只能说关西风味不太适合我们。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-2-11.avif"></p><p>我们顶着中午十二点的大太阳继续前往大阪城。途中路过大阪历史博物馆，下次一定。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-2-12.avif"></p><p>大阪警察本部就在大阪城对面。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-2-13.avif"></p><p>隔着护城河远眺大阪城。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-2-14.avif"></p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-2-15.avif"></p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-2-16.avif"></p><p>城门外就能看到大阪城中央的天守阁。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-2-17.avif"></p><p>银民水井户，据说是给老百姓用的水井，水特别清凉。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-2-18.avif"></p><p>四月春天，郁郁葱葱。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-2-19.avif"></p><p>天守阁下不少游客拍照，我跟Eyama都没什么兴趣上去一探究竟，同时开始感到些许劳累，远远观望拍照就算来过了。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-2-20.avif"></p><p>天守阁边上有一栋小楼，包含纪念品商店、展览厅等设施。我们在里面休息片刻，便返程前往心斋桥的Ikebe琴行，中途当然免不了找自行车直至放弃🙃。</p><h2 id="04-22日本逛琴行初体验"><a href="#04-22日本逛琴行初体验" class="headerlink" title="04.22日本逛琴行初体验"></a>04.22日本逛琴行初体验</h2><p>逛琴行自然是我的提议，这次旅行我们接连考察了大阪和东京的Ikebe分店。在网上看了许久的逛琴行节目，并且经常能在闲鱼上刷到职业卖家在日本收得中古琴，我自然也想体验一把捡漏。于是乎提前在网上查到这家日本较大的连锁琴行，并在其官网看好几把电吉他等着线下验证。</p><p>IKebe心斋桥的分店略显拥挤。一楼是各种配件以及单块效果器，感觉价格并没有比国内便宜。最大的收获是见到一块售价三万多人民币（698000JPY）的金马Klon，拍完才发现标价牌上写着 “No Picture”（抱歉！），就不放出来了。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-2-21.avif"></p><p>二楼是电木吉他区，都是一些比较亲民的型号，因此直接摆在外面。印象中还有一个被透明玻璃墙隔出来的小房间，里面则全是相对高端的电吉他，都是大牌，倒没什么罕见的款式。可能也是因为现在国内资讯发达，同时有钱人一多各种奇珍异宝都能出现在闲鱼上，我们这些玩家不知不觉跟着涨了许多见识。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-2-22.avif"></p><p>询问店员才知道官网页面上有信息说明某一把吉他在哪家分店，而我想看的几把都在东京，加上当下已经累了，第一次逛琴行就这样草草结束啦。</p><h2 id="04-22从高分咖啡店到高分荞麦面店"><a href="#04-22从高分咖啡店到高分荞麦面店" class="headerlink" title="04.22从高分咖啡店到高分荞麦面店"></a>04.22从高分咖啡店到高分荞麦面店</h2><p>我们早上离开酒店前已经办理了退房，行李则寄存在酒店，毕竟临近地铁晚上去大阪车站方便。回酒店之前我跟Eyama分开行动，他想吃点东西补充能量，而我想买杯咖啡休息一下。在Google Map上看到附近有家评分非常高的Mel Coffee，单程步行十分钟，此时已经不太走得动，犹豫片刻本着“来都来了”的指导思想还是冲了。</p><p>这家店门面不大，到的时候已经有几个人在排队，店员拿着菜单挨个询问客人点单。比较有趣的是菜单分日文和英文两种，店员看到我时一句话没问直接递给我英文版，犀利预判我不是日本人😆。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-2-23.avif"></p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-2-24.avif"></p><p>我们在大阪遇到的绝大多数服务业者都几乎不懂英文，这家咖啡店也不例外。沟通不太顺利的情况下，我盲选了一手价格居中、名字最长（之一）的Guatamala El Platanillo Geisha。然而我不太能喝出咖啡的好坏，欣赏水平还停留在香醇微甜的“初级阶段”，因此很难评价这杯咖啡到底如何，印象中属于不难喝但也不好喝的那种。随咖啡还有一张卡片，介绍了这款咖啡的来头，就当喝个文化吧。最搞笑的是店员不懂英文但会几句汉语，可能没少接待中国游客哈哈。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-2-25.avif"></p><p>由于店里没有座位，我端着热腾腾的咖啡回到酒店，此时临近四点，Eyama早已饱食一顿回来。在酒店大厅休息到五点，我们拖着行李出发大阪车站，准确说是先去吃一家Tabelog高评分的荞麦面店后再去车站。</p><p>这家名为蕎斬的店在新地商业街的地下一层，门口只有一盏灯笼作为招牌，加上到得太早还没营业亮灯，我们丝毫没有发现店铺就在眼前 😅。同时这一层有好几家店的门上都贴着由“大阪府风俗环境净化协会”出具的未成年不得入内警示，我们一度怀疑找错了地方（这是什么日本电影的场景？！）。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-2-26.avif"></p><p>回到一层后我们又询问了路过的工作人员，确认地址没错，正巧碰上荞麦面店员出来，我们才反应过来！店员也是顺便点亮招牌。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-2-27.avif"></p><p>这家荞麦面店非常小，只有L字形两排座椅。但味道真的没话说，我俩点了三种口味的面分享，都没有踩雷。另外看到老板给隔壁桌客人倒乌龙茶，询问才知道是收费的，一杯居然要六百日元！“来都来了”，我也要了一杯，不得不说确实好喝。当下劝Eyama也来一杯，既然来消费就一次到位，结果他还是没舍得😂。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-2-28.avif"></p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-2-29.avif"></p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-2-30.avif"></p><p>味道实在太棒，也因为中午的大阪烧没吃饱，我们又加点一碗面。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-2-31.avif"></p><p>美食真的有治愈能力，如同前一晚，我们吃得很满足，也跟老板、隔壁桌大叔聊得很开心（主要靠Eyama蹩脚的日文和他们勉强能听懂一点英文LOL）。下次一定还来，还点乌龙茶 XDD</p><h2 id="04-22夜间大巴-梦魇"><a href="#04-22夜间大巴-梦魇" class="headerlink" title="04.22夜间大巴&#x3D;梦魇"></a>04.22夜间大巴&#x3D;梦魇</h2><p>荞麦面店离大阪车站非常近，只花一刻钟我们就拖着行李箱来到大阪车站的候车厅。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-2-32.avif"></p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-2-33.avif"></p><p>这里就要介绍我们去东京搭乘的交通工具——夜间大巴。毫无疑问这是Eyama同学的提议，他看完网上的介绍后非常心动：一方面是新奇的体验，另一方面睡到东京可以省去一晚酒店钱。最初规划行程时，他在YouTube上找到旅行博主拍下的体验视频，看上去静谧舒适，我承认我也动心了。但考虑到大巴座椅无法完全放倒，以及在台湾多次乘坐长途大巴的经验，总感觉实际不会像视频里表现得那么舒服。我坚持去东京时体验一次即可，回程必须新干线。事实证明我的担忧是正确的，视频里看起来的舒适都是假象，除了拥挤的座椅很难翻身外，最致命的是大巴隔音非常差，吵得人难以入睡。</p><p>之前有提到，今天本就异常疲惫，加之被晒伤，上车前我已经开始头晕，还以为是发烧。原本计划在候车厅再喝点小酒吃个宵夜，我也毫无胃口只能喝点热饮。这一夜简直折磨，以致于到东京站我选择直接打车去酒店，希望能早点休息。但是并没能如愿，这是后话。</p><p>我们到大阪站候车厅时才七点，Eyama决定先去附近的商场为他女朋友看下Cocah包，我直接蔫了吧唧地待在候车厅玩手机。等他回来后我们去车站隔壁的便利店买了点宵夜，我顺便买了支牙刷，一会上车前刷牙、用漱口水。这只牙膏回国时因为忘了托运，还被安检人员收走了🙂。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-2-34.avif"></p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-2-35.avif"></p><p>十点五十左右，候车厅广播和电视屏幕开始通知上车。上车前把行李箱交给工作人员后会给你一张凭证，下车时需要凭这张票领行李箱，很靠谱的小细节。我们的车票是在网上提前预订的，上车时直接向工作人员出示电子票据即可。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-2-36.avif"></p><p>这就是我今晚的“床铺”，毛毯、眼罩等细节其实很不错，但大巴发动之后的噪音实在是太恼人。另外座位本身也不大，我都觉得略窄，何况身材更高大的Eyama。并且当你前面的人放倒座椅后，会占用你腿部上方的空间，也就是说前面人的躺下后你也得跟着躺下，不然会被挤得动弹不得。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-2-37.avif"></p><p>没有办法，就算预料到今夜无眠，也只能选择坐下。伴随着头痛和浑身酸疼，我想这可能是人生中最后一次乘坐夜间大巴。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-2-38.avif"></p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-2-39.avif"></p><h2 id="04-23品川豪宅小憩"><a href="#04-23品川豪宅小憩" class="headerlink" title="04.23品川豪宅小憩"></a>04.23品川豪宅小憩</h2><p>早上七点夜间大巴准时抵达东京站，此时的东京站已是人来人往。我在大巴上大概只睡了三四个小时，下车的那一刻整个人都是飘的，脸也依然很烫。Eyama本想坐地铁去酒店，我实在是扛不住，直接说去打车算我的。我们在东京的两天都住在丰洲市场附近的日航旗下酒店Hotel JAL City Tokyo Toyosu，主要原因是Eyama想一大早冲去丰洲市场逛吃海产，这家酒店步行十分即可。此外从地图上看酒店到品川区的直线距离不远，去拜访微软和谷歌的办公室应该还算方便。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-2-40.avif"></p><p>日本的出租车都开得很快，大约一刻钟便到酒店。只可惜酒店前台告知无法提前入住，看起来生意确实很好，大堂过往的住客非常多。或许受疫情和签证的影响，在大量国人暂时无法前往日本旅游的当下，我们观察到最多的外国游客是韩国人，无论在大阪的道顿掘、大阪城还是江东区的这家酒店以及附近的地铁站。酒店大堂旁就是餐厅，一大早自然吵闹得很，坐在大堂的椅子上想睡也睡不着。萎靡地坐到八点多，我让Eyama先出去玩，我看着行李等入住，反正以现在的身体状况今天肯定是废掉了。不过Eyama也是在大厅找了个角落玩手机，除了关心我之外，虽然嘴上说夜间大巴睡得还行，其实同样累得够呛，从他后面两天不太能走很久就看得出😉。</p><p>大概到了十点，救星LQ大佬登场！</p><p>LQ是我们组北京的前同事，当年因为交接DRI工作逐渐熟络起来。后来她离职去了Google Tokyo，又因疫情滞留在上海办公一段时间，来苏州面基吃饭赏湖景，大家结下深厚友谊。去年上海放开之后她终于办理好手续登陆东京，这次来前也约好请她带我们参观谷歌的办公室。</p><p>在微信上跟她说明情况之后，她表示可以去她家休息，她去公寓的自习室学习（准备日语考试）。这对我来说无疑是救命稻草，立马出发，Eyama也跟我一起坐公交去市区吃东西。这里还有个小插曲，到大阪的第一天取完现金后我要分给Eyama，他表示没带小包不方便装钱，况且绝大多数时间都是一起行动没必要。结果他中午在一家人气小店排了很长的队伍后发现店家只收现金，欲哭无泪。</p><p>LQ住在五反田附近，公交车坐到中央区后再转地铁。高轮台地铁站，看起来有些年头。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-2-41.avif"></p><p>从五反田地铁出来后还要走小十分钟，环境不错，据LQ说这一带是日本old money的居住区。嗯，所以她也是old money XD</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-2-42.avif"></p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-2-43.avif"></p><p>高档公寓，我的最爱。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-2-44.avif"></p><p>LQ戴着口罩从大楼侧门出现，一时间竟没认出来。简单介绍完屋内设施之后她就光速撤离，值得一提的是她提前换了一套新的床单被套，简直不要太贴心！大佬的豪宅也令人印象深刻，简约但不简单，尤其是超大阳台，直接全体起立。租金每月大概一万人民币，并且有政府和公司的政策支持可以计入减税，只能说太值了。可能是我要求低，觉得屋子看起来没有问题，但LQ表示很乱，按照她的要求浅浅码一下地上的物品（桌下那个豆沙包太可爱所以放过它）。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-2-45.avif"></p><p>家人们，肥仔的快乐，谁懂啊。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-2-46.avif"></p><p>马桶上的洗手池设计非常巧妙，冲完马桶后洗手水直接加入水箱，这很环保。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-2-47.avif"></p><p>昨天走了那么久，又在车上睡了一夜，自然洗个澡再睡觉。拿衣服时发现书包里还装着昨晚因为不舒服没喝的酒精饮料，悄咪咪放进了LQ家的冰箱👻。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-2-48.avif"></p><p>眼睛一闭一睁已经快两点，其实只睡了两个多小时，但感觉活了过来。睡前就定好闹钟，因为晚上跟Eyama的东京朋友们约了网红烤肉店，午饭也不能太晚吃。LQ带我去附近的商场吃了烤牛舌套餐，味道不错，不过聊天才是重点。年初做新项目一直加班，跟她同步了组里的近况，也听她分享了一些现在团队的见闻。吃饭时还有个打扮精致的日本小姐姐似乎在面试，难道是来应聘服务员？</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-2-49.avif"></p><h2 id="04-23台湾烤肉YYDS"><a href="#04-23台湾烤肉YYDS" class="headerlink" title="04.23台湾烤肉YYDS"></a>04.23台湾烤肉YYDS</h2><p>东京这两天有点降温，吃完饭想说去旁边的优衣库看看外套，结果一进门就看到穿着西装的模特，不愧是日本啊哪里都在卖工作服。在咖啡店坐到四点一刻，Eyama说他们已经到烤肉店门口排队，我们可以出发过去。即使排得那么早，我们也等到六点才上桌，真的非常夸张！</p><p>烤肉店在足立区，略偏远，我们地铁转出租车一小时才到。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-2-50.avif"></p><p>Tabelog评分高达4.25的Sutaminaen烤肉店，老板娘是台湾人，所以菜品里还有卤肉饭。久违的台湾烤肉😭！</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-2-51.avif"></p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-2-52.avif"></p><p>菜还没上，那么先干杯吧🍻~ Eyama的几位朋友都是中国人，来自天南地北，职业背景也各不相同。据说他们在一位旅居日本的美食博主的微信群里结识，那位美食博主给这家店打过广告，几位朋友中也有认识老板娘的常客，因此送了我们不少菜品。感恩~</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-2-53.avif"></p><p>这一顿吃肉根本停不下来，开玩笑跟Eyama的朋友“控诉”，前两天他都只带我吃碳水，想吃肉想哭了哈哈。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-2-54.avif"></p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-2-55.avif"></p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-2-56.avif"></p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-2-57.avif"></p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-2-58.avif"></p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-2-59.avif"></p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-2-60.avif"></p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-2-61.avif"></p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-2-62.avif"></p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-2-63.avif"></p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-2-64.avif"></p><p>酒足饭饱走出烤肉店，想起台湾中秋节吃烤肉的习俗，抬头看了看今晚的月亮。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-2-65.avif"></p><h2 id="04-23终于入住酒店"><a href="#04-23终于入住酒店" class="headerlink" title="04.23终于入住酒店"></a>04.23终于入住酒店</h2><p>饭后Eyama跟朋友们去KTV唱歌，我送LQ回家顺便拿包，再搭地铁回酒店办理入住。在五反田坐车时体会到了东京地铁的复杂，也可能是累傻了，先是想到大崎转乘临海线不知怎么坐到了户越银座，折返回去坐临海线又等了好久一班才发车。折腾了快两小时才到酒店。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-2-66.avif"></p><p>临海线到国际展示场后，还得出站步行五分钟转乘R线（Rinkai Line）再坐三站。不过第一次搭乘熟悉之后，我们第二天再去品川便轻车熟路。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-2-67.avif"></p><p>我们住得是日航酒店的标间，设施很新，也很整洁，就是不出意料的面积不大，好在我们也只是回来睡个觉。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-2-68.avif"></p><p>吃完烤肉一身味道，正好酒店房间内有备除臭喷雾，试了下效果非常好，可谓是解决了我的“痒点”。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-2-69.avif"></p><p>哦对了，约LQ和Eyama的朋友们一起聚餐还有一个原因，那就是要找她拿之前在日本网络平台购买得Eric Clapton的演唱会门票。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-2-70.avif"></p><p>走前LQ还顺手送我一份伴手礼，说是她出去旅游时买的，看着很像农副产品，回国后才知道是类似徐福记的煎饼，很香的小零嘴。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-2-71.avif"></p><p>受特种兵行程拖累的一天总算要结束，见到老朋友以及烤肉吃到饱都十分开心。后面的节奏终于回归正常，明天将参观微软东京办公室、逛琴行并观看吉他之神老克的演唱会。</p><h2 id="下一集"><a href="#下一集" class="headerlink" title="下一集"></a>下一集</h2><p>《<a href="https://joouis.com/2023/my-first-trip-to-japan-3/">2023大阪东京走马观花五日流水账（下）</a>》</p>]]></content>
    
    
    <summary type="html">从大阪到东京，一路特种兵之行！</summary>
    
    
    
    <category term="人生游记" scheme="https://joouis.com/categories/%E4%BA%BA%E7%94%9F%E6%B8%B8%E8%AE%B0/"/>
    
    
    <category term="trip" scheme="https://joouis.com/tags/trip/"/>
    
    <category term="travel" scheme="https://joouis.com/tags/travel/"/>
    
    <category term="holiday" scheme="https://joouis.com/tags/holiday/"/>
    
    <category term="food" scheme="https://joouis.com/tags/food/"/>
    
    <category term="japan" scheme="https://joouis.com/tags/japan/"/>
    
    <category term="okasa" scheme="https://joouis.com/tags/okasa/"/>
    
    <category term="tokyo" scheme="https://joouis.com/tags/tokyo/"/>
    
  </entry>
  
  <entry>
    <title>2023大阪东京走马观花五日流水账（上）</title>
    <link href="https://joouis.com/2023/my-first-trip-to-japan-1/"/>
    <id>https://joouis.com/2023/my-first-trip-to-japan-1/</id>
    <published>2023-11-27T16:56:00.000Z</published>
    <updated>2023-12-10T16:30:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>身为拖延症重症患者，这篇四月底出行的旅行笔记不出意外地拖到了年底。前几天本想抢到John Mayer在东京Blue Note的跨年演出票再去东京玩一趟，可惜BN座位太少又缺乏其线上抢票经验，今年应该只有四月这一次日本行。只能补上这篇流水账，温习一下短短几天的日本时光。尽管有没计划好的行程把人折腾得不行，但整体来说瑕不掩瑜，是一次美好的旅行。</p><p>写这篇文章花了十几个小时，挑选了近两百张照片，说实话是一件费时费力的事。想必正在阅读本文的你也得花上一点时间才能看完三篇文章的所有内容。也想过以后是不是直接录视频、剪辑成Vlog上传到B站、YouTube，如果要做到精益求精工作量只会更大吧。并且年更型选手不需要流量更不需要变现（也不敢想），写给自己的回忆，图文记录应该足够。一年还能写上一篇笔记，对我来说已经是一个不小的目标~</p><p>最后要说明得是文中时间均使用当地时间，在国内是国内时间，在日本则是日本时间，两者有一小时时差。</p><h2 id="04-20出发前的失眠夜"><a href="#04-20出发前的失眠夜" class="headerlink" title="04.20出发前的失眠夜"></a>04.20出发前的失眠夜</h2><p>此次和公司同事Eyama约好一同出行，我们提前订好了往返机票、酒店以及演唱会的门票，并且制定了大致的行程。由于去程航班中午出发，早上十点就得值机，在Eyama的邀请下我前一天晚上直接睡他家客房，第二天一早七点出发自驾前往上海浦东机场附近的停车场。之所以选择开车去是因为返程航班晚上十一点才到达，公共交通基本都收班了，还是自己开车回苏州靠得住。20号晚餐吃得很爽，Eyama师傅作为拿到中级厨师证的资深爱好者，做得一手好饭，我们经常来他家聚餐。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-1-1.avif" alt="那天晚上四人聚餐的一道硬菜"></p><p>不过这一晚我几乎没睡着：可能是不习惯早睡，也可能因为床板太硬；不知为何房门不能完全关紧，从厕所窗外传来的大街上飘荡的回响听得一清二楚；他家的两只猫猫时不时钻进房间视察一下。总之就这样熬到了第二天清早…</p><h2 id="04-21出发"><a href="#04-21出发" class="headerlink" title="04.21出发"></a>04.21出发</h2><p>楼下简单吃了个早饭，便利店买几罐咖啡，我们即刻出发。今天是周五，之前担心会遇到早高峰堵车，不过运气不错一路畅通。Eyama开车，我虽然困得不行还是陪他聊了一路音乐。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-1-2.avif" alt="恐怕只有在苏州开车才懂的梗"></p><p>浦东机场卫生间外的数据大屏。现在只要上云，都要冠以“智慧” “AI” “大数据”这些噱头。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-1-3.avif"></p><p>值机后时间绰绰有余，我们来到贵宾厅小憩一下，吃点东西补充能量。出关时国内海关的工作人员在我说完去日本旅游、四五天就回后，莫名其妙来了一句“不去美国玩啊？”，我整个人懵了一下。虽然护照里有十年美签，但这是什么奇怪的联想。配合上他那似笑非笑的表情，属实让人不舒服。“不去！”。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-1-4.avif"></p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-1-5.avif"></p><p>日本时间下午三点抵达大阪关西国际机场，入关的人不多，不过后来看网上说这几天有些时段也是要排长队。我办得是五年多次往返旅游签证，单次入境最多可以待90天。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-1-6.avif"></p><p>按照当地政策，如果已经在国内接种了三针疫苗，则不用再做核酸。直接在微信小程序“防疫健康码国际版”上获取《国际旅行健康证明》，出机场时出示给工作人员看即可。此外还有一个环节需要在机场的大屏设备上登记一些东西，这才过半年已经忘了是干什么的 @_@</p><p>在搭电车去大阪市中心前，我们原本准备取点日元备用，看完机场机器上的汇率后立马劝退。Eyama已经换上提前在淘宝买的流量卡，问了下日本当地的朋友说市区便利店的汇率不错，于是我俩都只在Apple Pay上给Suica充了点钱，先坐电车到市区再说。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-1-7.avif"></p><h2 id="04-21初识大阪，入住心斋桥"><a href="#04-21初识大阪，入住心斋桥" class="headerlink" title="04.21初识大阪，入住心斋桥"></a>04.21初识大阪，入住心斋桥</h2><p>关西机场建在一个岛上，去市区的第一步就是过海。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-1-8.avif"></p><p>日本的酒店都是我订的（Eyama负责选餐厅），我们今晚住在心斋桥边上的东横INN酒店。电车到达难波站后，看距离不是很远我们决定步行过去。这几天Eyama都只提了一个内置保温层的大袋子，里面非常离谱地装了一位深圳朋友做得糕点，要带去东京给一群他们共同的朋友。我非常无语这群东京的人好意思让Eyama从深圳-苏州-大阪-东京这么带一路，同时这也苦了我的行李箱。因为大多时候他都把袋子放行李箱上，然后主动提出拖着箱子走。尽管路上跟他说过几次，但是一旦走得久点，Eyama就会在过马路时下意识通过拉杆直接提起箱子通过台阶，这样的后果就是回苏州时拉杆已经摇摇晃晃、命不久矣。后半段还是我自己管好箱子吧。</p><p>初到大阪的第一个深刻印象就是出租车打蜡保养得非常新。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-1-9.avif"></p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-1-10.avif"></p><p>室外22°气候凉爽，风稍微有点大。去酒店的路基本就沿着左侧这座高架桥一路向北。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-1-11.avif"></p><p>沿路看到的Livehouse，演出类型主要是爵士、放克和布鲁斯。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-1-12.avif"></p><p>日本特色之K car，没想到还有越野版。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-1-13.avif"></p><p>豪车在心斋桥附近还挺常见。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-1-14.avif"></p><p>这座高架是阪神高速道路。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-1-15.avif"></p><p>电话亭和停车计费器。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-1-16.avif"></p><p>东横INN酒店楼下就是一个停车场，这里也有随处可见的自动贩售机。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-1-17.avif"></p><p>这就是我们今天过夜的东横INN酒店，前同事推荐，是日本的一家连锁品牌。出门就是地铁，价格不贵还包含早餐，性价比很高。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-1-18.avif"></p><p>很复古的电梯。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-1-19.avif"></p><p>房间面积虽然不大但干净整洁。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-1-20.avif"></p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-1-21.avif"></p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-1-22.avif"></p><p>卫生间面积很小，基本上只能一个人落脚，但是存在很多巧思设计提升空间利用率。这就是日本吧~</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-1-23.avif"></p><h2 id="04-21道顿掘逛吃"><a href="#04-21道顿掘逛吃" class="headerlink" title="04.21道顿掘逛吃"></a>04.21道顿掘逛吃</h2><p>放好东西，我们再次出发走去道顿掘逛逛，吃点当地特色小吃。</p><p>路边这个宠物医院还挺洋气。另外大阪街头骑自行车的人非常多。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-1-24.avif"></p><p>路过一家7-11顺便取了四万日元，并拍照留念🤣。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-1-25.avif"></p><p>药妆店也是随处可见。普锐斯倒是国内越来越稀少的车型。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-1-26.avif"></p><p>这是什么建筑你知道吗？</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-1-27.avif"></p><p>逐渐靠近道顿掘商圈。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-1-28.avif"></p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-1-29.avif"></p><p>河道两旁很安静。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-1-30.avif"></p><p>这里面也有不少酒店。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-1-31.avif"></p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-1-32.avif"></p><p>河上的一座桥。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-1-33.avif"></p><p>走到另一段又见一个牌子。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-1-34.avif"></p><p>远处这个梯形大楼令人瞩目，此外这条大道上有不少奢侈品店。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-1-35.avif"></p><p>这种招牌还挺可爱的。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-1-36.avif"></p><p>哪里都有兰州牛肉面！</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-1-37.avif"></p><p>过了刚才能看到尖角大厦的主干道，东边的商业街人山人海、异常热闹。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-1-38.avif"></p><p>逛了好一会，也该出手了。我们决定试试这家排队人超多的章鱼烧店。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-1-39.avif"></p><p>没想到小小章鱼烧也有定制款售票机。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-1-40.avif"></p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-1-41.avif"></p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-1-42.avif"></p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-1-43.avif"></p><p>最终成品如下，味道不错，口感较嫩。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-1-44.avif"></p><p>后面Eyama提议再来点串，而我想留点肚子吃正餐。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-1-45.avif"></p><p>傍晚的河道，夕阳余晖，而大楼陆续亮起灯光。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-1-46.avif"></p><p>牛郎的广告，销售额破亿的“亿男”，有点搞笑。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-1-47.avif"></p><p>来到道顿掘，自然要打卡Glico跑男。桥上拍照的、跟广告牌合影的人超级多！我们打完卡赶紧离开。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-1-48.avif"></p><p>这家招聘画得实在可爱！</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-1-49.avif"></p><p>我们原本准备吃一家烤肉店，但排队人数众多，一眼瞥到隔壁这家365酒场，网上评价也不错，那就这家吧。事实证明味道和氛围都不错，我们相当满意！</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-1-50.avif"></p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-1-51.avif"></p><p>这家店看上去不大，实际还有地下一整层，有不少日本上班族在此畅饮畅谈。Eyama给我科普，日本人在这种场合喝酒为主，只会点少量菜下酒，而我们这种桌上除了两杯酒外全是菜的，一看就是外国人😅。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-1-52.avif"></p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-1-53.avif"></p><p>墙上的海报同样有特色。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-1-54.avif"></p><p>扫码点餐，顺便附上WIFI账密。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-1-55.avif"></p><p>啤酒很清爽，食物的整体口味也不错，基本没怎么踩雷。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-1-56.avif"></p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-1-57.avif"></p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-1-58.avif"></p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-1-59.avif"></p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-1-60.avif"></p><p>意犹未尽，再来一杯乌龙茶啤酒。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-1-61.avif"></p><p>这个炒面是正宗大阪口味，非常咸，我不太行。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-1-62.avif"></p><p>走前去了个厕所，又是日本特色的迷你洗手池和电动马桶圈。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-1-63.avif"></p><p>前面Eyama说过日本人在居酒屋以喝酒为主，然而他们并不是不饿，而是会在散场之后再站在拉面店门口嗦碗面😅。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-1-64.avif"></p><p>吃饱走回酒店，沿路夜景很好，满满的都会感。</p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-1-65.avif"></p><p><img data-src="https://cdn.joouis.com/my-first-trip-to-japan-1-66.avif"></p><p>睡前看了下酒店房间的电视有什么节目，果不其然有成人分类，并且需要付费观看。前一晚一直没睡好，今天赶了大半天路，明晚还要坐夜间巴士（并且还有未知的特种兵行程），睡了睡了。</p><h2 id="下一集"><a href="#下一集" class="headerlink" title="下一集"></a>下一集</h2><p>《<a href="https://joouis.com/2023/my-first-trip-to-japan-2/">2023大阪东京走马观花五日流水账（中）</a>》</p>]]></content>
    
    
    <summary type="html">失眠夜后出发埋伏笔，大阪初印象好评！</summary>
    
    
    
    <category term="人生游记" scheme="https://joouis.com/categories/%E4%BA%BA%E7%94%9F%E6%B8%B8%E8%AE%B0/"/>
    
    
    <category term="trip" scheme="https://joouis.com/tags/trip/"/>
    
    <category term="travel" scheme="https://joouis.com/tags/travel/"/>
    
    <category term="holiday" scheme="https://joouis.com/tags/holiday/"/>
    
    <category term="food" scheme="https://joouis.com/tags/food/"/>
    
    <category term="japan" scheme="https://joouis.com/tags/japan/"/>
    
    <category term="okasa" scheme="https://joouis.com/tags/okasa/"/>
    
    <category term="tokyo" scheme="https://joouis.com/tags/tokyo/"/>
    
  </entry>
  
  <entry>
    <title>2022年我想练的歌单</title>
    <link href="https://joouis.com/2022/playlist-want-to-play-in-2022/"/>
    <id>https://joouis.com/2022/playlist-want-to-play-in-2022/</id>
    <published>2022-03-18T06:56:10.000Z</published>
    <updated>2022-03-18T12:00:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>虽然2022年已经过去俩月半，但“想练”意味着不一定能啃下来，先把目标都列下来再看看到年底具体能有哪些斩获吧😅。清单数量限定在十首左右，因此选择的都是我个人非常喜欢同时也具备一定技术难度、需要花时间去琢磨的曲目。每一首都在我工作或深夜单曲循环过无数遍，一定好听且耐听。这个清单也符合我一直以来的“杂食”风格，流行歌、爵士以及一些现代融合的风格都有，曲目按首字母排序，偏好无先后顺序。</p><span id="more"></span><h2 id="爱我还是他-李荣浩"><a href="#爱我还是他-李荣浩" class="headerlink" title="爱我还是他 - 李荣浩"></a>爱我还是他 - 李荣浩</h2><ul><li>原曲：<a href="https://youtu.be/xanYQbxMY7A">YouTube</a></li><li>碎碎念：手指机能是目前的最大瓶颈之一，目标能原速演奏。此外能接上唱更好… 老大的歌百听不厌。</li><li>参考资料：<ul><li><a href="https://www.bilibili.com/video/BV14z4y1y7aP">李荣浩那段技惊四座《爱我还是他》的吉他SOLO</a></li><li><a href="https://www.bilibili.com/video/BV17Z4y137oX">从李荣浩《爱我还是他》🎸电吉他 solo 中学到的十件事</a></li></ul></li></ul><h2 id="Autumn-leaves-Eric-Clapton"><a href="#Autumn-leaves-Eric-Clapton" class="headerlink" title="Autumn leaves - Eric Clapton"></a>Autumn leaves - Eric Clapton</h2><div class="video-container"><iframe src="https://www.youtube.com/embed/UQlFOX0YKlQ" frameborder="0" loading="lazy" allowfullscreen></iframe></div><ul><li>原曲：<a href="https://youtu.be/UQlFOX0YKlQ">YouTube</a>、<a href="https://www.bilibili.com/video/BV14R4y1W7DM">Bilibili</a></li><li>碎碎念：吉他solo包含木吉他和电吉他两段，难度不是很大，可以自己扒下来，要注意音色和演奏情感。Chet Baker那一版也是单曲循环无数次，想起去年上课好像学了很多，又好像什么都忘了… 欸，明年清单再列上吧。</li><li>参考资料：<ul><li><a href="https://www.bilibili.com/video/BV1GQ4y1q7P6">【吉他教学】弹琴没细节？手把手教你保证细节拉满！Autumn Leaves</a></li></ul></li></ul><h2 id="Covered-in-rain-John-Mayer"><a href="#Covered-in-rain-John-Mayer" class="headerlink" title="Covered in rain - John Mayer"></a>Covered in rain - John Mayer</h2><div class="video-container"><iframe src="https://www.youtube.com/embed/DYHng61lftA" frameborder="0" loading="lazy" allowfullscreen></iframe></div><ul><li>原曲：<a href="https://youtu.be/DYHng61lftA">YouTube</a>、<a href="https://www.bilibili.com/video/BV1iW411i7Us">Bilibili</a></li><li>碎碎念：可以说是从小听到大的歌曲，脑海中基本可以“全文背诵”。通过这首歌，第一次感受到电吉他solo堆砌起来的充沛叙事感和情感。毫无疑问JM是我心中的吉他英雄，因为他喜欢上吉他。我并不反感市场化或商业化，作品如果全是技巧没有感情，或全是感情没有旋律性，都不是我的菜。我觉得JM就是把这几件事结合得出类拔萃的天才，至于一些商业化带来的八卦以及他的”stupid mouth”，我不关心。</li><li>参考资料：应该非常多，暂未搜寻。</li></ul><h2 id="Europa-Carlos-Santana"><a href="#Europa-Carlos-Santana" class="headerlink" title="Europa - Carlos Santana"></a>Europa - Carlos Santana</h2><div class="video-container"><iframe src="https://www.youtube.com/embed/aAfylWv_uBc" frameborder="0" loading="lazy" allowfullscreen></iframe></div><ul><li>原曲：<a href="https://youtu.be/aAfylWv_uBc">YouTube</a>、<a href="https://www.bilibili.com/video/BV1Ps411D7Fr">Bilibili</a></li><li>碎碎念：又一支从小听到大的曲子，“全文背诵”什么的后面就不提了。除了这首曲子外，像《Game of love》、《Smooth》等歌也是往后想扒和练得目标。</li><li>参考资料：应该非常多，暂未搜寻。</li></ul><h2 id="Gravity-John-Mayer"><a href="#Gravity-John-Mayer" class="headerlink" title="Gravity - John Mayer"></a>Gravity - John Mayer</h2><div class="video-container"><iframe src="https://www.youtube.com/embed/Fo4746XZgw8" frameborder="0" loading="lazy" allowfullscreen></iframe></div><ul><li>原曲：<a href="https://youtu.be/Fo4746XZgw8">YouTube</a>、<a href="https://www.bilibili.com/video/BV13X4y1K7aN">Bilibili</a></li><li>碎碎念：这首曲子没什么好说的了吧，从技巧到音色，有朝一日必须拿下。</li><li>参考资料：应该非常多，暂未搜寻。</li></ul><h2 id="How-insensitive-Wes-Montgomery"><a href="#How-insensitive-Wes-Montgomery" class="headerlink" title="How insensitive - Wes Montgomery"></a>How insensitive - Wes Montgomery</h2><div class="video-container"><iframe src="https://www.youtube.com/embed/jdO6wP3CqqQ" frameborder="0" loading="lazy" allowfullscreen></iframe></div><ul><li>原曲：<a href="https://youtu.be/jdO6wP3CqqQ">YouTube</a>、<a href="https://www.bilibili.com/video/BV1K54y1j7T2">Bilibili</a></li><li>碎碎念：对于爵士乐我比较喜欢标准曲和bossa nova风格，说白了也都是流行歌过来的，只不过有更多丰富的语言词汇去表达情感。这首曲子也算从小听到大，除了非常好听之外，也是标准曲中为数不多用吉他演奏的最广为流传的版本，必须冲一发。</li><li>参考资料：应该非常多，暂未搜寻。</li></ul><h2 id="Kyoto-Tomo-Fujita"><a href="#Kyoto-Tomo-Fujita" class="headerlink" title="Kyoto - Tomo Fujita"></a>Kyoto - Tomo Fujita</h2><div class="video-container"><iframe src="https://www.youtube.com/embed/4dupGktvi0s" frameborder="0" loading="lazy" allowfullscreen></iframe></div><ul><li>原曲：<a href="https://youtu.be/4dupGktvi0s">YouTube</a>、<a href="https://www.bilibili.com/video/BV1Jb411C7Wy">Bilibili</a></li><li>碎碎念：去年偶然在油管上听到的曲子，旋律很抓耳朵，情感细腻，同时Tomo在他自己的频道上也放了多个不同风味的版本。感觉不是很难，适合现阶段学习和练习。</li><li>参考资料：<ul><li><a href="https://youtu.be/587i4Cv-Zs0">Tomo Fujita - KYOTO</a></li><li><a href="https://youtu.be/Rh_bv5Z8jQE">Tomo Fujita - KYOTO JAM - 1967 Gibson ES-335</a></li></ul></li></ul><h2 id="Little-Wing-Stevie-Ray-Vaughan"><a href="#Little-Wing-Stevie-Ray-Vaughan" class="headerlink" title="Little Wing - Stevie Ray Vaughan"></a>Little Wing - Stevie Ray Vaughan</h2><div class="video-container"><iframe src="https://www.youtube.com/embed/An4uDegHB8s" frameborder="0" loading="lazy" allowfullscreen></iframe></div><ul><li>原曲：<a href="https://youtu.be/An4uDegHB8s">YouTube</a></li><li>碎碎念：在这首歌和JM的《Bold as love》之间犹豫了一会，不过两首都是Jimi Hendrix的歌，练会哪首另一首应该也能很快能掌握。说实话我对Jimi的作品到目前为止没多少感觉，但SRV和JM演绎的版本立马能抓住我的耳朵，也听了很多年，该好好研究一下。</li><li>参考资料：应该非常多，暂未搜寻。</li></ul><h2 id="Plastic-love-Mariya-Takeuchi"><a href="#Plastic-love-Mariya-Takeuchi" class="headerlink" title="Plastic love - Mariya Takeuchi"></a>Plastic love - Mariya Takeuchi</h2><div class="video-container"><iframe src="https://www.youtube.com/embed/9Gj47G2e1Jc" frameborder="0" loading="lazy" allowfullscreen></iframe></div><ul><li>原曲：<a href="https://youtu.be/9Gj47G2e1Jc">YouTube</a>、<a href="https://www.bilibili.com/video/BV1E3411k7sp">Bilibili</a></li><li>碎碎念：非常喜欢city pop风格，旋律和编曲百听不厌，这种纸醉金迷的都会氛围感，令人沉迷… 这首歌用来练习funk吉他正好，此外应该也有一些表演机会，毕竟是更有市场的音乐。</li><li>参考资料：应该非常多，暂未搜寻。</li></ul><h2 id="South-of-the-river-Tom-Misch"><a href="#South-of-the-river-Tom-Misch" class="headerlink" title="South of the river - Tom Misch"></a>South of the river - Tom Misch</h2><div class="video-container"><iframe src="https://www.youtube.com/embed/NdJHvUTWx6c" frameborder="0" loading="lazy" allowfullscreen></iframe></div><ul><li>原曲：<a href="https://youtu.be/NdJHvUTWx6c">YouTube</a>、<a href="https://www.bilibili.com/video/BV1dW411x7tA">Bilibili</a></li><li>碎碎念：Tom Misch是我20年的最大发现，基本上每首歌都很好听，融合了funk和爵士的元素兼具音乐性和技术性，网上也有人称他为英国JM… 🤣。这首歌的节奏吉他和键盘solo都想扒一下，弹出那种音乐带给人最简单的快乐（如果看过MV就会秒懂）。</li><li>参考资料：<ul><li><a href="https://www.bilibili.com/video/BV1BZ4y1w77B">用吉他弹键盘solo是什么效果？South of the River（Cover）</a></li></ul></li></ul><h2 id="There-will-never-be-another-you-Arturo-Sandoval"><a href="#There-will-never-be-another-you-Arturo-Sandoval" class="headerlink" title="There will never be another you - Arturo Sandoval"></a>There will never be another you - Arturo Sandoval</h2><div class="video-container"><iframe src="https://www.youtube.com/embed/z1nOfbQ_GwU" frameborder="0" loading="lazy" allowfullscreen></iframe></div><ul><li>原曲：<a href="https://youtu.be/z1nOfbQ_GwU">YouTube</a>、<a href="https://www.bilibili.com/video/BV1Yq4y1h7Eh">Bilibili</a></li><li>碎碎念：很犹豫是否要放一首真正意义上的爵士标准曲，《How insensitive》可以看做练一首有“标准答案的指弹曲目”，而到了爵士标准曲，除了扒大师的谱外，即兴是必不可少的一部分。这就没有了标准答案，于是变成很难花费一年半载便能达到大师们那种好听水平的一件事。完美主义多少害了我，对于特别喜欢的作品，不太敢迈出第一步（JM的歌我也一首没练过）。但这首歌对我有太多的回忆，该逼自己成长了。</li><li>参考资料：<ul><li><a href="https://www.bilibili.com/video/BV1154y1Y7ME">《新不了情+There will never be another you》成大爵士乐社</a></li></ul></li></ul>]]></content>
    
    
    <summary type="html">&lt;p&gt;虽然2022年已经过去俩月半，但“想练”意味着不一定能啃下来，先把目标都列下来再看看到年底具体能有哪些斩获吧😅。清单数量限定在十首左右，因此选择的都是我个人非常喜欢同时也具备一定技术难度、需要花时间去琢磨的曲目。每一首都在我工作或深夜单曲循环过无数遍，一定好听且耐听。这个清单也符合我一直以来的“杂食”风格，流行歌、爵士以及一些现代融合的风格都有，曲目按首字母排序，偏好无先后顺序。&lt;/p&gt;</summary>
    
    
    
    <category term="爱乐之城" scheme="https://joouis.com/categories/%E7%88%B1%E4%B9%90%E4%B9%8B%E5%9F%8E/"/>
    
    
    <category term="playlist" scheme="https://joouis.com/tags/playlist/"/>
    
    <category term="爱我还是他" scheme="https://joouis.com/tags/%E7%88%B1%E6%88%91%E8%BF%98%E6%98%AF%E4%BB%96/"/>
    
    <category term="李荣浩" scheme="https://joouis.com/tags/%E6%9D%8E%E8%8D%A3%E6%B5%A9/"/>
    
    <category term="autumn leaves" scheme="https://joouis.com/tags/autumn-leaves/"/>
    
    <category term="eric clapton" scheme="https://joouis.com/tags/eric-clapton/"/>
    
    <category term="covered in rain" scheme="https://joouis.com/tags/covered-in-rain/"/>
    
    <category term="john mayer" scheme="https://joouis.com/tags/john-mayer/"/>
    
    <category term="europa" scheme="https://joouis.com/tags/europa/"/>
    
    <category term="carlos santana" scheme="https://joouis.com/tags/carlos-santana/"/>
    
    <category term="gravity" scheme="https://joouis.com/tags/gravity/"/>
    
    <category term="how insensitive" scheme="https://joouis.com/tags/how-insensitive/"/>
    
    <category term="wes montgomery" scheme="https://joouis.com/tags/wes-montgomery/"/>
    
    <category term="kyoto" scheme="https://joouis.com/tags/kyoto/"/>
    
    <category term="tomo fujita" scheme="https://joouis.com/tags/tomo-fujita/"/>
    
    <category term="little wing" scheme="https://joouis.com/tags/little-wing/"/>
    
    <category term="srv" scheme="https://joouis.com/tags/srv/"/>
    
    <category term="plastic love" scheme="https://joouis.com/tags/plastic-love/"/>
    
    <category term="mariya takeuchi" scheme="https://joouis.com/tags/mariya-takeuchi/"/>
    
    <category term="south of the river" scheme="https://joouis.com/tags/south-of-the-river/"/>
    
    <category term="tom misch" scheme="https://joouis.com/tags/tom-misch/"/>
    
    <category term="there will never be another you" scheme="https://joouis.com/tags/there-will-never-be-another-you/"/>
    
    <category term="arturo sandoval" scheme="https://joouis.com/tags/arturo-sandoval/"/>
    
  </entry>
  
  <entry>
    <title>蔡剑爵士吉他课程二年级笔记</title>
    <link href="https://joouis.com/2022/cj-jazz-guitar-school-notes-2/"/>
    <id>https://joouis.com/2022/cj-jazz-guitar-school-notes-2/</id>
    <published>2022-01-16T14:53:50.000Z</published>
    <updated>2022-05-03T09:00:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>Here are the notes from the Cai Jian (蔡剑, a well-known jazz guitarist and composer in China, the teacher of Jazz Guitar at the Xinghai Conservatory of Music) jazz guitar school in 2nd grade. The mind map notes are made by teaching assistant Zhichao (<a href="https://mobile.twitter.com/jazz_chao">@Jazz_Chao</a>).</p><span id="more"></span><h2 id="Lesson-1-Harmony-of-Black-Orpheus"><a href="#Lesson-1-Harmony-of-Black-Orpheus" class="headerlink" title="Lesson 1 - Harmony of Black Orpheus"></a>Lesson 1 - Harmony of Black Orpheus</h2><p><img data-src="https://cdn.joouis.com/cj-jazz-guitar-school-notes-2-0.avif"></p><p><img data-src="https://cdn.joouis.com/cj-jazz-guitar-school-notes-2-1.avif"></p><h2 id="Lesson-2-Transcription-of-Black-Orpheus"><a href="#Lesson-2-Transcription-of-Black-Orpheus" class="headerlink" title="Lesson 2 - Transcription of Black Orpheus"></a>Lesson 2 - Transcription of Black Orpheus</h2><p><img data-src="https://cdn.joouis.com/cj-jazz-guitar-school-notes-2-2.avif"></p><h2 id="Lesson-3-Bird-blues"><a href="#Lesson-3-Bird-blues" class="headerlink" title="Lesson 3 - Bird blues"></a>Lesson 3 - Bird blues</h2><p><img data-src="https://cdn.joouis.com/cj-jazz-guitar-school-notes-2-3.avif"></p><h2 id="Lesson-4-Transcription-of-Blues-for-Alice"><a href="#Lesson-4-Transcription-of-Blues-for-Alice" class="headerlink" title="Lesson 4 - Transcription of Blues for Alice"></a>Lesson 4 - Transcription of Blues for Alice</h2><p><img data-src="https://cdn.joouis.com/cj-jazz-guitar-school-notes-2-4.avif"></p><h2 id="Lesson-5-Harmony-of-All-the-things-you-are"><a href="#Lesson-5-Harmony-of-All-the-things-you-are" class="headerlink" title="Lesson 5 - Harmony of All the things you are"></a>Lesson 5 - Harmony of All the things you are</h2><p><img data-src="https://cdn.joouis.com/cj-jazz-guitar-school-notes-2-5.avif"></p><h2 id="Lesson-6-Improvisation-practices-of-All-the-things-you-are"><a href="#Lesson-6-Improvisation-practices-of-All-the-things-you-are" class="headerlink" title="Lesson 6 - Improvisation practices of All the things you are"></a>Lesson 6 - Improvisation practices of All the things you are</h2><p><img data-src="https://cdn.joouis.com/cj-jazz-guitar-school-notes-2-6.avif"></p><h2 id="Lesson-7-Transcription-of-All-the-things-you-are"><a href="#Lesson-7-Transcription-of-All-the-things-you-are" class="headerlink" title="Lesson 7 - Transcription of All the things you are"></a>Lesson 7 - Transcription of All the things you are</h2><p><img data-src="https://cdn.joouis.com/cj-jazz-guitar-school-notes-2-7.avif"></p><h2 id="Lesson-8-A613-Blues-Afro-12-8"><a href="#Lesson-8-A613-Blues-Afro-12-8" class="headerlink" title="Lesson 8 - A613 Blues Afro 12&#x2F;8"></a>Lesson 8 - A613 Blues Afro 12&#x2F;8</h2><p><img data-src="https://cdn.joouis.com/cj-jazz-guitar-school-notes-2-8.avif"></p><h2 id="Lesson-9-Transcription-of-A613-Blues"><a href="#Lesson-9-Transcription-of-A613-Blues" class="headerlink" title="Lesson 9 - Transcription of A613 Blues"></a>Lesson 9 - Transcription of A613 Blues</h2><p><img data-src="https://cdn.joouis.com/cj-jazz-guitar-school-notes-2-9.avif"></p><h2 id="Lesson-10-Harmony-of-Softly-as-a-morning-sunrise"><a href="#Lesson-10-Harmony-of-Softly-as-a-morning-sunrise" class="headerlink" title="Lesson 10 - Harmony of Softly as a morning sunrise"></a>Lesson 10 - Harmony of Softly as a morning sunrise</h2><p><img data-src="https://cdn.joouis.com/cj-jazz-guitar-school-notes-2-10.avif"></p><h2 id="Lesson-11-Transcription-of-Softly-as-a-morning-sunrise-Mr-P-C"><a href="#Lesson-11-Transcription-of-Softly-as-a-morning-sunrise-Mr-P-C" class="headerlink" title="Lesson 11 - Transcription of Softly as a morning sunrise &amp; Mr. P.C."></a>Lesson 11 - Transcription of Softly as a morning sunrise &amp; Mr. P.C.</h2><p><img data-src="https://cdn.joouis.com/cj-jazz-guitar-school-notes-2-11.avif"></p><h2 id="Lesson-12-Songs-recommendation-and-review"><a href="#Lesson-12-Songs-recommendation-and-review" class="headerlink" title="Lesson 12 - Songs recommendation and review"></a>Lesson 12 - Songs recommendation and review</h2><p><img data-src="https://cdn.joouis.com/cj-jazz-guitar-school-notes-2-12.avif"></p>]]></content>
    
    
    <summary type="html">&lt;p&gt;Here are the notes from the Cai Jian (蔡剑, a well-known jazz guitarist and composer in China, the teacher of Jazz Guitar at the Xinghai Conservatory of Music) jazz guitar school in 2nd grade. The mind map notes are made by teaching assistant Zhichao (&lt;a href=&quot;https://mobile.twitter.com/jazz_chao&quot;&gt;@Jazz_Chao&lt;/a&gt;).&lt;/p&gt;</summary>
    
    
    
    <category term="爱乐之城" scheme="https://joouis.com/categories/%E7%88%B1%E4%B9%90%E4%B9%8B%E5%9F%8E/"/>
    
    
    <category term="music" scheme="https://joouis.com/tags/music/"/>
    
    <category term="jazz" scheme="https://joouis.com/tags/jazz/"/>
    
    <category term="jazz guitar" scheme="https://joouis.com/tags/jazz-guitar/"/>
    
    <category term="lesson" scheme="https://joouis.com/tags/lesson/"/>
    
    <category term="note" scheme="https://joouis.com/tags/note/"/>
    
    <category term="bossa nova" scheme="https://joouis.com/tags/bossa-nova/"/>
    
    <category term="black orpheus" scheme="https://joouis.com/tags/black-orpheus/"/>
    
    <category term="bird blues" scheme="https://joouis.com/tags/bird-blues/"/>
    
    <category term="blues for alice" scheme="https://joouis.com/tags/blues-for-alice/"/>
    
    <category term="all the things you are" scheme="https://joouis.com/tags/all-the-things-you-are/"/>
    
    <category term="improvisation" scheme="https://joouis.com/tags/improvisation/"/>
    
  </entry>
  
  <entry>
    <title>2020云南游记（下）</title>
    <link href="https://joouis.com/2021/2020-yunnan-trip-3/"/>
    <id>https://joouis.com/2021/2020-yunnan-trip-3/</id>
    <published>2021-12-18T09:05:07.000Z</published>
    <updated>2021-12-18T15:03:00.000Z</updated>
    
    <content type="html"><![CDATA[<h2 id="上一集"><a href="#上一集" class="headerlink" title="上一集"></a>上一集</h2><p>《<a href="https://joouis.com/2021/2020-yunnan-trip-2/">2020云南游记（中）</a>》</p><h2 id="09-29丽江古城与木府"><a href="#09-29丽江古城与木府" class="headerlink" title="09.29丽江古城与木府"></a>09.29丽江古城与木府</h2><p>尽管前几日的行程负荷不算太大，但我一路兼顾车夫和游客的双重身份，仍有些疲惫，所以最后两天我们选择让节奏再慢一点。当然早餐还是不能落下，闹钟定在九点半，醒来拉开窗帘，让阳光照进古香古色的房间。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-3-1.avif"></p><p>不知是谁把门打开了，九月底的天气已经有点凉，来一碗热腾腾的牛肉面正是心头所好。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-3-2.avif"></p><p>吃饱当然要转一圈消消食，从对面看餐厅。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-3-3.avif"></p><p>回笼觉睡到两点，磨蹭一下出门吃午饭。我们选择了网上口碑很好甚至有同事推荐的云雪丽餐厅，皇冠分店就在酒店隔壁，步行三分钟可达。不过我们参考大众点评的热门榜单点了三个菜，只有炸豆腐合我们的口味（推荐！），另外两个菜嘛… 吃不惯，算难得的翻车经历吧，并且这顿是我们云南之行吃得最贵的一餐😂。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-3-4.avif"></p><p>鱼是甜口的，小火煮到后面越吃越甜😢。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-3-5.avif"></p><p>菌菇中规中矩，吃到后面有点凉了就不太行。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-3-6.avif"></p><p>人生充满了无数次试错，这次的失败原因只不过是口味不合，并不影响我们的心情。实际上为了不浪费粮食（以及钱），我们还是吃了很多，后面逛丽江古城时都没买什么小吃。从店里出来向古城中心走，路的右边是饭店、民宿等商家，左边便是我们住的酒店。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-3-7.avif"></p><p>人少，幽静，处处有河道。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-3-8.avif"></p><p>不一会便走到了木府，它是我们今天参观得唯一一个正儿八经的景点，代表了一段民族文化融合的历史。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-3-9.avif"></p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-3-10.avif"></p><p>门票包含导游解说服务，由于游客不多，都是聚集一批游客才开始导览。我们木府门后的广场等待时，还见识了旅游景点的赚钱套路。有工作人员主动安排我们合影留恋，等参观完回到广场时他们便拿着洗好的照片和挂牌问我们买不买。老一辈或传统观念的人还是很吃这套，想着来都来了留个纪念或者担心打好的照片被用作其他用途，便掏出手机扫码付款、被强行消费了一把。只可惜工作人员今天遇上我们，一口回绝不要，主动跟我们讨价还价还是不要，当代年轻人谁要在你这大殿门口拍到此一游照😂。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-3-11.avif"></p><p>从大门的“忠义”到议事厅的“心诚报国”，也算是一次爱国教育机会吧哈哈。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-3-12.avif"></p><p>木府是纳西族木氏土司的衙门，当时的土司审时度势主动归顺明王朝，积极学习汉文化，因此木府里的不少建筑元素对我们国内游客而言极其熟悉。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-3-13.avif"></p><p>读万卷书，行万里路。几百年前的少数民族积极学习先进文化知识是一件令人欣慰的事情。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-3-14.avif"></p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-3-15.avif"></p><p>在木府内看古城的街道。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-3-16.avif"></p><p>乔木世家。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-3-17.avif"></p><p>半兽人？</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-3-18.avif"></p><p>最后登上这个半山腰的道教三清殿俯瞰木府，有点在景山公园眺望故宫的意思。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-3-19.avif"></p><p>出了木府才五点，晚上九点这边还有灯光秀，我们便打算在古城里逛逛再决定晚餐吃什么。这边的店铺和其他古城、古镇类似，都很商业化。不过也能看到一些当地的民俗特色，例如纳西语的象形文字。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-3-20.avif"></p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-3-21.avif"></p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-3-22.avif"></p><p>蓝是中国蓝。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-3-23.avif"></p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-3-24.avif"></p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-3-25.avif"></p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-3-26.avif"></p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-3-27.avif"></p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-3-28.avif"></p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-3-29.avif"></p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-3-30.avif"></p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-3-31.avif"></p><p>晚餐选择了大众点评上的另一家热门餐厅——滇厨餐厅小锅巴，人气很旺，七点取号居然排了四十分钟的队，这是云南之行头一次也是唯一一次排队。好在等待是值得的，味道很不错，我们也等饿了，只随手拍了两张。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-3-32.avif"></p><p>这个野山菌铜锅饭贼香，有菌菇有火腿，米饭带着油和锅巴，无敌！</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-3-33.avif"></p><p>吃完我们直奔木府看灯光秀，通过将影片投影在木府的大门上呈现木府的历史与风采，视觉效果比较立体。上一次看到类似的表演应该还是清华大学百年校庆时的主楼投影，也是当时的热搜话题之一。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-3-34.avif"></p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-3-35.avif"></p><p>最后一项活动是回酒店泡澡玩手游😆，顺带一提云南的网络延迟在玩游戏时特别明显，打PVP游戏只配玩玩娱乐模式。</p><p>洲际酒店的后门，有点欧式建筑的感觉，还挺好看的。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-3-36.avif"></p><h2 id="09-30返程"><a href="#09-30返程" class="headerlink" title="09.30返程"></a>09.30返程</h2><p>今天睡到十点多，卡在极限来吃最后的早午餐。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-3-37.avif"></p><p>吃完就回去收拾行李准备回家啰。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-3-38.avif"></p><p>下午六点多的航班不着急，作为吃货的我们寄存好行李后，又去酒店附近一家广受好评的牛肉米线嗦了碗粉，顺便再搞杯奶茶喝喝。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-3-39.avif"></p><p>做出口碑的苍蝇小馆必然是物美价廉。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-3-40.avif"></p><p>从酒店打车到三义机场的终点直接设在贵宾楼，招行CIP点数赶紧消耗一下，疫情日子都要用不完了。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-3-41.avif"></p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-3-42.avif"></p><p>不远处硕大的招牌写着“重拳出击，扫黑除恶”，今年的《扫黑风暴》你看了吗？</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-3-43.avif"></p><p>是时候说再见了，我们下篇游记再见吧👋🏻。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-3-44.avif"></p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-3-45.avif"></p>]]></content>
    
    
    <summary type="html">悠闲地“浪费”掉九月的最后两天。</summary>
    
    
    
    <category term="人生游记" scheme="https://joouis.com/categories/%E4%BA%BA%E7%94%9F%E6%B8%B8%E8%AE%B0/"/>
    
    
    <category term="trip" scheme="https://joouis.com/tags/trip/"/>
    
    <category term="travel" scheme="https://joouis.com/tags/travel/"/>
    
    <category term="holiday" scheme="https://joouis.com/tags/holiday/"/>
    
    <category term="food" scheme="https://joouis.com/tags/food/"/>
    
    <category term="yunnan" scheme="https://joouis.com/tags/yunnan/"/>
    
    <category term="dali" scheme="https://joouis.com/tags/dali/"/>
    
    <category term="driving" scheme="https://joouis.com/tags/driving/"/>
    
    <category term="洱海" scheme="https://joouis.com/tags/%E6%B4%B1%E6%B5%B7/"/>
    
    <category term="喜洲" scheme="https://joouis.com/tags/%E5%96%9C%E6%B4%B2/"/>
    
    <category term="稼穑集農耕文化艺术馆" scheme="https://joouis.com/tags/%E7%A8%BC%E7%A9%91%E9%9B%86%E8%BE%B2%E8%80%95%E6%96%87%E5%8C%96%E8%89%BA%E6%9C%AF%E9%A6%86/"/>
    
    <category term="大理" scheme="https://joouis.com/tags/%E5%A4%A7%E7%90%86/"/>
    
    <category term="大理古城" scheme="https://joouis.com/tags/%E5%A4%A7%E7%90%86%E5%8F%A4%E5%9F%8E/"/>
    
    <category term="双廊" scheme="https://joouis.com/tags/%E5%8F%8C%E5%BB%8A/"/>
    
    <category term="玉龙雪山" scheme="https://joouis.com/tags/%E7%8E%89%E9%BE%99%E9%9B%AA%E5%B1%B1/"/>
    
    <category term="蓝月谷" scheme="https://joouis.com/tags/%E8%93%9D%E6%9C%88%E8%B0%B7/"/>
    
    <category term="丽江" scheme="https://joouis.com/tags/%E4%B8%BD%E6%B1%9F/"/>
    
    <category term="丽江古城" scheme="https://joouis.com/tags/%E4%B8%BD%E6%B1%9F%E5%8F%A4%E5%9F%8E/"/>
    
    <category term="木府" scheme="https://joouis.com/tags/%E6%9C%A8%E5%BA%9C/"/>
    
  </entry>
  
  <entry>
    <title>2020云南游记（中）</title>
    <link href="https://joouis.com/2021/2020-yunnan-trip-2/"/>
    <id>https://joouis.com/2021/2020-yunnan-trip-2/</id>
    <published>2021-12-12T08:35:36.000Z</published>
    <updated>2021-12-12T15:55:00.000Z</updated>
    
    <content type="html"><![CDATA[<h2 id="上一集"><a href="#上一集" class="headerlink" title="上一集"></a>上一集</h2><p>《<a href="https://joouis.com/2021/2020-yunnan-trip-1/">2020云南游记（上）</a>》</p><h2 id="09-28玉龙雪山"><a href="#09-28玉龙雪山" class="headerlink" title="09.28玉龙雪山"></a>09.28玉龙雪山</h2><p>对于夜猫族来说，假期的上午九点多起床、十点出门已经够早，我们需要赶在最后一刻去吃自助早餐。洲际和府酒店的房间坐落在一群古香古色的二层楼房里，如果有较重的行李或距离大堂较远可以提前预约电瓶车接送。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-2-1.avif"></p><p>餐厅在大堂一楼的一侧，味道中规中矩，关键还是装修风格和视野别有风情。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-2-2.avif"></p><p>吃饱站在外面的天台，找个合适的角度能看到雪山。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-2-3.avif"></p><p>当然酒店内视野最好的观景点，同时也是酒店著名的打卡点之一，便是大堂中央的酒廊。犹抱琵琶半遮面的雪山远景如同一幅壁画镶嵌在巨大的落地窗上。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-2-4.avif"></p><p>条条大路通雪山😁。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-2-5.avif"></p><p>半小时出头，我们便到了雪山景区入口。除了套餐里包含的玉龙雪山门票，需要额外付一笔主景区门票费，网上也称为进山费，80块一个人。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-2-6.avif"></p><p>进入景区大门之后，实际还有一段路程才到停车场，沿路已经开始有人停车拍照。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-2-7.avif"></p><p>从停车场往游客中心走去，环境不错，像走在一个生态公园中。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-2-8.avif"></p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-2-9.avif"></p><p>本次云南之行的一个重要目的，就是考察景区智慧厕所的建设情况（大误）。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-2-10.avif"></p><p>在游客接待大厅兑票、检票过后，坐上了旅游大巴，把我们送去雪山脚下的索道站。沿途这蜿蜒的盘山公路，配上四周高耸林立的树木，和之前又是完全不同的景色。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-2-11.avif"></p><p>索道口的海拔高度是3356米，对常人来说已不算低。其实从停车场下车走了两步，我就隐约感觉脚下有点飘。事实证明越往上走，随着供氧不足，高原反应会越来越严重。而我们一开始在网上做功课的结论是不买氧气罐，那么实际情况会如何呢？</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-2-12.avif"></p><p>坐上缆车，没想到某人怕得要命，抓紧了我的裤子😂。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-2-13.avif"></p><p>不过害怕这事因人而异，我们隔壁的一对情侣是男生怕得闭上了眼睛，反倒是他对象一直喊他睁眼看看。索道的后半段已经云雾缭绕，窗外什么都看不清，直到接近光秃秃的雪山。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-2-14.avif"></p><p>前一天了解到九月底的雪山还没有雪，温度也不是很低，我便只穿了短袖T恤套一件厚绒外套上去。事实证明静止不动时还是有一点冷，爬山则刚刚好。出了索道出口这边的游客中心，就到了登山的大平台，海拔4506米。望向玉龙雪山允许游客攀爬的终点觉得并不远，等到实际爬起来才发现并不容易，每一步上升的海拔高度都仿佛在对渺小的人类说“到此为止吧”。有些年纪大的老人确实没上去，就在平台上拍拍照、转悠一下。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-2-15.avif"></p><p>往下看很壮观，有平原、山峦、索道还有栈道。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-2-16.avif"></p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-2-17.avif"></p><p>居然还有商家运了只羊驼上来搞创收，有点离谱。然而大爷大妈们似乎对它很感兴趣。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-2-18.avif"></p><p>我们在4506米平台上晃了一圈，吃掉昨天在大理买的鲜花饼和自助早餐薅的酸奶后，做了一个明智的决定——买瓶氧气罐再上栈道。最终这瓶氧气罐支撑着某位朋友上到终点，按照她的理论，身体好的人高反会更加严重，而我这种身体差加上长期过度疲劳的人，受到的影响会小很多🙄。</p><p>那么，开始爬向终点吧。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-2-19.avif"></p><p>走一段台阶就休息一下，顺便拍拍照、欣赏下风景。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-2-20.avif"></p><p>一眨眼就爬了65米，比想象中轻松呢。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-2-21.avif"></p><p>往另一边看，一点绿色都没有。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-2-22.avif"></p><p>人少，走走停停还是比较舒服。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-2-23.avif"></p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-2-24.avif"></p><p>又上升了20米，距离终点4680还有228米。另外无人机禁飞，赞！</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-2-25.avif"></p><p>距离4506米平台的垂直高度，这么看根本不像有85米。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-2-26.avif"></p><p>救命的“大宝贝”，景点商铺卖60块一瓶，对某位朋友发出“真香”⚠️。一路上有不少跟团来的游客，除了自己买的氧气罐外，旅行团也发了，压根用不完。他们直接原地叫卖，我们半价30又收了一瓶😂。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-2-27.avif"></p><p>来，摆个自黑的pose，哈哈哈哈。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-2-28.avif"></p><p>有点雪山那意思了。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-2-29.avif"></p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-2-30.avif"></p><p>另一侧还是这种黑灰色沙土面。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-2-31.avif"></p><p>终于，来到了终点！</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-2-32.avif"></p><p>4680米！一对东北的母女游客给她们可爱的玩偶拍打卡站，超有爱。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-2-33.avif"></p><p>回头看看来时走过的路，174米的高度。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-2-34.avif"></p><p>冰川分段景观，这时候没什么好看的。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-2-35.avif"></p><p>下山前来根全国各大旅游景点的知名美食——台湾烤肠补充体力。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-2-36.avif"></p><p>下山的路上已经可以看到我们的下一个目标蓝月湖。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-2-37.avif"></p><p>返回4506米平台，最后在缆车中看一眼美丽山川。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-2-38.avif"></p><h2 id="09-28-蓝月谷"><a href="#09-28-蓝月谷" class="headerlink" title="09.28 蓝月谷"></a>09.28 蓝月谷</h2><p>走完玉龙雪山，下一站是同样大名鼎鼎的蓝月湖。看到第一眼就被折服，好美！</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-2-39.avif"></p><p>雪山脚下的壮丽。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-2-40.avif"></p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-2-41.avif"></p><p>我很中意这一处景，很有感觉。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-2-42.avif"></p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-2-43.avif"></p><p>除了拍婚纱的新人外，似乎还有奇怪的主播入镜？</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-2-44.avif"></p><p>不同角度看湖水颜色还不完全一样。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-2-45.avif"></p><p>实际上湖水非常清澈。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-2-46.avif"></p><p>走到第三个湖，脚酸的不行，湖景也看够了，打道回府吧。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-2-47.avif"></p><p>上大巴前看到三位老太太齐坐一排吸氧😂。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-2-48.avif"></p><p>回到停车场，走前再去马路对面拍几张，远处也有人在拍婚纱照。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-2-49.avif"></p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-2-50.avif"></p><p>下山的路，没什么车，开起来超级惬意。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-2-51.avif"></p><p>回到酒店，电话车行来停车场取车。三天跑了五百公里，回本咯。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-2-52.avif"></p><p>傍晚的酒店，也还蛮好看的。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-2-53.avif"></p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-2-54.avif"></p><p>今天整理房间的服务员小姐姐给折了一只小象，有点丑萌哈哈。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-2-55.avif"></p><p>晚餐来吃大众点评热门的阿婆腊排骨，从酒店步行十分钟就到了。店不大，生意很好。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-2-56.avif"></p><p>团购的情侣套餐才109块，这满满一锅肉，味道可以。连续两天晚餐都物美价廉，大大的好评！</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-2-57.avif"></p><p>走完溜达回去，看到了酒店的招聘广告，有需要的朋友直接电话联系，就说是我介绍的👌。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-2-58.avif"></p><p>抬头还能看到几颗星星，真好，晚安。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-2-59.avif"></p><h2 id="下一集"><a href="#下一集" class="headerlink" title="下一集"></a>下一集</h2><p>《<a href="https://joouis.com/2021/2020-yunnan-trip-3/">2020云南游记（下）</a>》</p>]]></content>
    
    
    <summary type="html">像醉汉一般登上地球上最温暖的的雪山😅。</summary>
    
    
    
    <category term="人生游记" scheme="https://joouis.com/categories/%E4%BA%BA%E7%94%9F%E6%B8%B8%E8%AE%B0/"/>
    
    
    <category term="trip" scheme="https://joouis.com/tags/trip/"/>
    
    <category term="travel" scheme="https://joouis.com/tags/travel/"/>
    
    <category term="holiday" scheme="https://joouis.com/tags/holiday/"/>
    
    <category term="food" scheme="https://joouis.com/tags/food/"/>
    
    <category term="yunnan" scheme="https://joouis.com/tags/yunnan/"/>
    
    <category term="dali" scheme="https://joouis.com/tags/dali/"/>
    
    <category term="driving" scheme="https://joouis.com/tags/driving/"/>
    
    <category term="洱海" scheme="https://joouis.com/tags/%E6%B4%B1%E6%B5%B7/"/>
    
    <category term="喜洲" scheme="https://joouis.com/tags/%E5%96%9C%E6%B4%B2/"/>
    
    <category term="稼穑集農耕文化艺术馆" scheme="https://joouis.com/tags/%E7%A8%BC%E7%A9%91%E9%9B%86%E8%BE%B2%E8%80%95%E6%96%87%E5%8C%96%E8%89%BA%E6%9C%AF%E9%A6%86/"/>
    
    <category term="大理" scheme="https://joouis.com/tags/%E5%A4%A7%E7%90%86/"/>
    
    <category term="大理古城" scheme="https://joouis.com/tags/%E5%A4%A7%E7%90%86%E5%8F%A4%E5%9F%8E/"/>
    
    <category term="双廊" scheme="https://joouis.com/tags/%E5%8F%8C%E5%BB%8A/"/>
    
    <category term="玉龙雪山" scheme="https://joouis.com/tags/%E7%8E%89%E9%BE%99%E9%9B%AA%E5%B1%B1/"/>
    
    <category term="蓝月谷" scheme="https://joouis.com/tags/%E8%93%9D%E6%9C%88%E8%B0%B7/"/>
    
    <category term="丽江" scheme="https://joouis.com/tags/%E4%B8%BD%E6%B1%9F/"/>
    
    <category term="丽江古城" scheme="https://joouis.com/tags/%E4%B8%BD%E6%B1%9F%E5%8F%A4%E5%9F%8E/"/>
    
    <category term="木府" scheme="https://joouis.com/tags/%E6%9C%A8%E5%BA%9C/"/>
    
  </entry>
  
  <entry>
    <title>2020云南游记（上）</title>
    <link href="https://joouis.com/2021/2020-yunnan-trip-1/"/>
    <id>https://joouis.com/2021/2020-yunnan-trip-1/</id>
    <published>2021-10-04T13:27:59.000Z</published>
    <updated>2021-10-06T17:54:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>2020上半年疫情较为严重的那段时期，旅游业为了生存推出各种机酒预售套餐，三月底在阿里旅行群里看到嬉游的菜菜推荐丽江和府洲际&#x2F;英迪格酒店，3晚含双早和玉龙雪山门票只要￥1846，花呗囤货、不约可退，有效期至2020年底。要知道疫情前后一晚酒店加下午茶和索道就要接近两千，这谁顶得住呀，果断下手。</p><p>经历漫长拖延期后，我们在八月预约了九月底入住酒店。由于把去程机票买在丽江后才决定顺道去大理走走，租车自驾游便成为能把整个行程串联起来的上佳选择。租车也不贵，携程上选了一个高分车行，起亚K2 （实际是同等级车型，最终给了我们一辆奔腾X40，这个后面再吐槽）租3天，异地还车，考虑要开山路加选无忧尊享服务费（无需承担含玻璃、轮胎在内的全部车辆损失）才五百多，再使用中行卡支付立减￥55，总共￥481。至于大理的酒店就随意选了一间民宿，两百多一晚含双早。</p><h2 id="09-25出发"><a href="#09-25出发" class="headerlink" title="09.25出发"></a>09.25出发</h2><p>可怜的在苏务工人员只能打车去无锡硕放机场，特意选了下午四点飞的航班，两张票加机建费一共一千四出头。出行前还收到了航司的促销短信，加百来块把座位调到第一排，好处是腿部空间宽敞许多。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-1.avif"></p><p>疫情在家待了好久，再次上天看到成片的云朵内心有点小激动。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-2.avif"></p><p>晚上八点准时抵达丽江三义国际机场，车行距离机场还有一定距离，工作人员开车接我们过去后，办好手续，就马不停蹄前往大理的民宿！拿到车照例拍一张初始里程数~</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-3.avif"></p><p>山路有几段还是有点蜿蜒曲折，一路上黑黢黢也没什么灯光，甚至连前后也没有来车，漆黑又寂静。这辆低价位SUV只配了卤素灯，开灯给人的感觉就是“开了，但没全开”… 基于没什么来车的情况，安全起见，我默默打开了远光灯赶路。</p><p>经过两个小时的跋涉，我们进入大理，看到了洱海的星星点点。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-4.avif"></p><p>奔腾这辆车动力极其之弱，开去玉龙雪山时油门踩到底也只能跑一百。更可怕的是在第二天还出现过突然熄火的状况，还好当时不是在高速上… 也不知道为啥还是个河北的车牌。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-5.avif"></p><p>民宿在洱海传奇小区里，一个半山腰上的度假别墅群，靠近大理市区，环境不错。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-6.avif"></p><p>更爽的是晚上十点多还可以点外卖，抚慰了饥肠辘辘的赶路人。干饭当然要配上张大仙的视频🤣。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-7.avif"></p><h2 id="09-26喜洲与大理古城"><a href="#09-26喜洲与大理古城" class="headerlink" title="09.26喜洲与大理古城"></a>09.26喜洲与大理古城</h2><p>我们订的是所谓的“海景房”，考虑到其价位，远观个大概倒也尚可。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-8.avif"></p><p>楼顶还有观景平台，地板上铺了镜面玻璃，方便客人们拍那些网红打卡风格的游客照哈哈。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-9.avif"></p><p>对面便是苍山洱海。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-10.avif"></p><h3 id="喜洲镇"><a href="#喜洲镇" class="headerlink" title="喜洲镇"></a>喜洲镇</h3><p>我们今天计划环洱海顺时针开到喜洲古镇，中午玩完古镇后去海舌生态公园，最后回到大理古城吃吃逛逛。出发时候已经十一点多，二十分钟后到洱海公园还下来看了看湖景。</p><p>米10Pro广角拍摄的自动白平衡有问题，21年果断换回S21Ultra。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-11.avif"></p><p>公园就在路边，对面是停车场，不过没啥好看的。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-12.avif"></p><p>一路上车不多，十二点半就到了喜洲古镇，停好车发现对面有所古香古色却挂着电子跑马灯的中学。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-13.avif"></p><p>居然还是华师的附属中学… 还有一架正在行驶的马车花车。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-14.avif"></p><p>喜洲镇外的马路边有不少这样的花车，算旅游景区的特色服务项目吧 -。-</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-15.avif"></p><p>马路对面就是喜洲镇的一个入口。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-16.avif"></p><p>走进去左手边又是一座古香古色的小学。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-17.avif"></p><p>古镇的游客少到令人惊喜。我们猜测是因为疫情的关系，有店家解释还没到人流高峰期。可以看到古镇已经经过了现代化改造，不少房子也重新装修过。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-18.avif"></p><p>一路上见到过好几家的连锁（或加盟）鲜花饼店，刚出炉的鲜花饼味道确实不错。另外还有全国知名的清真兰州拉面，长得都一样，就不放图了。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-19.avif"></p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-20.avif"></p><p>我们十点多才吃过早饭，因此在喜洲镇随便吃点当地小吃当作午餐了。除了鲜花饼外，自然要尝尝点评上好评的喜洲粑粑。在这么冷清的镇上，这家店生意算相当不错。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-21.avif"></p><p>至于味道嘛… 个人觉得一般。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-22.avif"></p><p>这家店位于喜洲镇的中心广场旁，有一排桌椅供游客们在小店买了吃喝后休息，主要是防晒。严家大院也在广场旁边，不过我们对此都不感兴趣就没进去参观。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-23.avif"></p><h3 id="稼穑集農耕文化艺术馆"><a href="#稼穑集農耕文化艺术馆" class="headerlink" title="稼穑集農耕文化艺术馆"></a>稼穑集農耕文化艺术馆</h3><p>不到一个小时我们逛完了喜洲镇，坦白讲也没啥可逛的。除了吃以外，这些翻新的建筑也就走马观花看一看。但俗话说得好，来都来了，换条小路继续逛逛吧，意外地发现了这座農耕文化艺术馆，很是惊喜。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-24.avif"></p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-25.avif"></p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-26.avif"></p><p>这稻田是真的好看。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-27.avif"></p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-28.avif"></p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-29.avif"></p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-30.avif"></p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-31.avif"></p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-32.avif"></p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-33.avif"></p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-34.avif"></p><p>从喜洲镇出来，虽然地图上显示海舌生态公园停止营业，但来都来了，这么近的距离还是开车过去看看。公园确实还在维修建设中，尘土飞扬，还有很重的柴油味。路边看洱海水质一般，却有老哥在湖边钓鱼，也不知道收获如何。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-35.avif"></p><h3 id="大理古城"><a href="#大理古城" class="headerlink" title="大理古城"></a>大理古城</h3><p>返程前在车上小憩一会，开回大理古城已过五点。天色渐暗，还飘起了毛毛细雨。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-36.avif"></p><p>大理古城人依旧不多，没有太阳后非常凉爽，逛起来很舒服。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-37.avif"></p><p>晚餐是点评上搜的特色菌菇锅，菌菇的种类非常丰富，还有火腿肉，味道不错，物美价廉。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-38.avif"></p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-39.avif"></p><p>大理古城商业化成熟，麦当劳、星巴克、屈臣氏等连锁店一应俱全。小店和国内的其他古城、古镇也都差不多，没啥意思。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-40.avif"></p><p>九点回到民宿，再次登上楼顶欣赏洱海夜色，结束这一天。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-41.avif"></p><h2 id="09-27环海东路、双廊古镇与丽江和府洲际酒店"><a href="#09-27环海东路、双廊古镇与丽江和府洲际酒店" class="headerlink" title="09.27环海东路、双廊古镇与丽江和府洲际酒店"></a>09.27环海东路、双廊古镇与丽江和府洲际酒店</h2><p>早餐，人生的一半。民宿的米粉好吃。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-42.avif"></p><p>回屋喝杯茶，收拾好行李，准备出发游玩洱海的东半部分。今天计划沿环海东路一路边开边欣赏湖景、拍照，时间有限跳过挖色镇，在双廊古镇吃午餐，最后回丽江的酒店歇脚。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-43.avif"></p><h3 id="环海东路"><a href="#环海东路" class="headerlink" title="环海东路"></a>环海东路</h3><blockquote><p>后视镜里的世界，越来越远的道别。</p></blockquote><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-44.avif"></p><p>蓝天白云，车少，开起来非常爽。有些路段有绿道可供游客跑步、骑行，旁边靠湖的草坪有几组人在拍婚纱照。我们也在附近停车，下来走走拍拍。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-45.avif"></p><p>走，过去看人拍婚纱！</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-46.avif"></p><p>这个天气、景色以及人流来拍婚纱还是蛮不错的。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-47.avif"></p><p>右前方应该是金梭岛。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-48.avif"></p><p>天境阁景区这有一个下坡大拐角路段，特意规划停车位供游客驻足赏景。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-49.avif"></p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-50.avif"></p><p>沿路能看到不少租敞篷甲壳虫或小跑车的店，也确实有人租（顶着这么强的紫外线也是够拼😅）。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-51.avif"></p><p>给这辆小破车也来一张，虽然是租来的车。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-52.avif"></p><p>抬头可见罗荃塔。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-53.avif"></p><p>看起来下方有些布景可供游客拍照。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-54.avif"></p><p>铁门把山旁有一段路还在维护，两边都有工人指挥，双向单车道。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-55.avif"></p><h3 id="双廊古镇"><a href="#双廊古镇" class="headerlink" title="双廊古镇"></a>双廊古镇</h3><p>两点半出头，我们来到了双廊古镇。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-56.avif"></p><p>从主干道往巷子里看通向洱海。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-57.avif"></p><p>走到靠湖的尽头，跨过这座桥，来吃点评推荐的石板烧。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-58.avif"></p><p>二楼的风景也是不错，能看到桥的另一侧。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-59.avif"></p><p>和平时吃的烤肉味道差不多，此时已是下午三点，开吃！</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-60.avif"></p><p>凉拌木耳酸辣清爽。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-61.avif"></p><p>当地特色饵丝，吃不惯。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-62.avif"></p><p>饭店厕所门前的景色竟然也不错。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-63.avif"></p><p>吃饱再散步消消食。这里景色说不上有多美，但给人感觉安逸闲适。杨丽萍的违章建筑太阳宫就在隔壁，不过需要喝下午茶才让进，略过。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-64.avif"></p><p>随便找条大点的巷子走进去看看。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-65.avif"></p><p>有台阶走下去，湖水还算清澈。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-66.avif"></p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-67.avif"></p><p>另一侧民宿的风格很网红哈哈。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-68.avif"></p><p>返回停车场的路上还跟一位老奶奶买了几个石榴，甜。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-69.avif"></p><p>没想到腾讯云已经把“魔手”伸向了云南一个旅游古镇的公厕！</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-70.avif"></p><p>出发回丽江。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-71.avif"></p><p>六点四十抵达三义收费站，夕阳很美。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-72.avif"></p><h3 id="和府洲际酒店"><a href="#和府洲际酒店" class="headerlink" title="和府洲际酒店"></a>和府洲际酒店</h3><p>提前订房时已经被告知没有英迪格的房源，IHG对比之下少个小院子，算是小小的遗憾。不过IHG也蛮棒的。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-73.avif"></p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-74.avif"></p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-75.avif"></p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-76.avif"></p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-77.avif"></p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-78.avif"></p><p>提前搜好附近好评的铁锅鱼，套餐才六十多块，店的环境也不错，性价比无敌。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-79.avif"></p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-80.avif"></p><p>土豆片居然带着淡紫色，第一次见。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-81.avif"></p><p>快十点回到酒店，去礼宾部取上明天雪山的门票，一切就绪只待出发。</p><p><img data-src="https://cdn.joouis.com/2020-yunnan-trip-1-82.avif"></p><h2 id="下一集"><a href="#下一集" class="headerlink" title="下一集"></a>下一集</h2><p>《<a href="https://joouis.com/2021/2020-yunnan-trip-2/">2020云南游记（中）</a>》</p>]]></content>
    
    
    <summary type="html">为超值折扣机酒，出发云南！</summary>
    
    
    
    <category term="人生游记" scheme="https://joouis.com/categories/%E4%BA%BA%E7%94%9F%E6%B8%B8%E8%AE%B0/"/>
    
    
    <category term="trip" scheme="https://joouis.com/tags/trip/"/>
    
    <category term="travel" scheme="https://joouis.com/tags/travel/"/>
    
    <category term="holiday" scheme="https://joouis.com/tags/holiday/"/>
    
    <category term="food" scheme="https://joouis.com/tags/food/"/>
    
    <category term="yunnan" scheme="https://joouis.com/tags/yunnan/"/>
    
    <category term="dali" scheme="https://joouis.com/tags/dali/"/>
    
    <category term="driving" scheme="https://joouis.com/tags/driving/"/>
    
    <category term="洱海" scheme="https://joouis.com/tags/%E6%B4%B1%E6%B5%B7/"/>
    
    <category term="喜洲" scheme="https://joouis.com/tags/%E5%96%9C%E6%B4%B2/"/>
    
    <category term="稼穑集農耕文化艺术馆" scheme="https://joouis.com/tags/%E7%A8%BC%E7%A9%91%E9%9B%86%E8%BE%B2%E8%80%95%E6%96%87%E5%8C%96%E8%89%BA%E6%9C%AF%E9%A6%86/"/>
    
    <category term="大理" scheme="https://joouis.com/tags/%E5%A4%A7%E7%90%86/"/>
    
    <category term="大理古城" scheme="https://joouis.com/tags/%E5%A4%A7%E7%90%86%E5%8F%A4%E5%9F%8E/"/>
    
    <category term="双廊" scheme="https://joouis.com/tags/%E5%8F%8C%E5%BB%8A/"/>
    
    <category term="玉龙雪山" scheme="https://joouis.com/tags/%E7%8E%89%E9%BE%99%E9%9B%AA%E5%B1%B1/"/>
    
    <category term="蓝月谷" scheme="https://joouis.com/tags/%E8%93%9D%E6%9C%88%E8%B0%B7/"/>
    
    <category term="丽江" scheme="https://joouis.com/tags/%E4%B8%BD%E6%B1%9F/"/>
    
    <category term="丽江古城" scheme="https://joouis.com/tags/%E4%B8%BD%E6%B1%9F%E5%8F%A4%E5%9F%8E/"/>
    
    <category term="木府" scheme="https://joouis.com/tags/%E6%9C%A8%E5%BA%9C/"/>
    
  </entry>
  
  <entry>
    <title>Jazz guitar foundations</title>
    <link href="https://joouis.com/2021/jazz-guitar-foundations/"/>
    <id>https://joouis.com/2021/jazz-guitar-foundations/</id>
    <published>2021-08-22T13:55:00.000Z</published>
    <updated>2021-08-29T04:52:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>Note of preparatory courses of Cai Jian (蔡剑) jazz guitar lessons by Qihao Chen (陈启豪).</p><span id="more"></span><h2 id="Course-1"><a href="#Course-1" class="headerlink" title="Course 1"></a>Course 1</h2><h3 id="Four-stages-of-practice"><a href="#Four-stages-of-practice" class="headerlink" title="Four stages of practice:"></a>Four stages of practice:</h3><ol><li>Learn the thing from unknown to known</li><li>Get familiar with it on the instrument</li><li>Apply it to your playing like melodic sequence</li><li>Internalization</li></ol><h3 id="The-first-step-of-learning-jazz-guitar"><a href="#The-first-step-of-learning-jazz-guitar" class="headerlink" title="The first step of learning jazz guitar"></a>The first step of learning jazz guitar</h3><p>Know every note of strings and frets on the standard tuning guitar.</p><ul><li>CAGED system<ul><li>Think about the positions on fretboard corresponding to the note invervals</li><li>Playing a scale can reflect the sequence of intervals</li></ul></li><li>3NPS (3 Notes Per String)</li></ul><h3 id="Chord"><a href="#Chord" class="headerlink" title="Chord"></a>Chord</h3><p>Two important factors:</p><ul><li>Root note</li><li>Type of chord</li></ul><p>Think of the C major chord by harmonizing C note in C major scale, so the other notes in the scale with third intervals are E and G. Same thing to the other notes or scales, we have these common chords:</p><ul><li>Triads: major (1, 3, 5), minor (1, b3, 5), augmented (1, 3, #5), diminished (1, b3, b5)</li><li>7th chords: major (1, 3, 5, 7), dominant (1, 3, 5, b7), minor (1, b3, 5, b7), half diminished (1, b3, b5, b7), diminished (1, b3, b5, bb7), minor major (1, b3, 5, 7), augmented major (1, 3, #5, 7)</li></ul><h3 id="Figure-out-the-root-position-of-chords"><a href="#Figure-out-the-root-position-of-chords" class="headerlink" title="Figure out the root position of chords"></a>Figure out the root position of chords</h3><ol><li>Know the members of chord due to its type</li><li>Find the root notes on 4th to 6th strings</li><li>Find the position of other notes due to the intervals</li></ol><p>In this way we can infer 5 common patterns (R, 5, 7, 3 and R, 7, 3, 5) by CAGED system of each type of chords.</p><h3 id="Chord-scale-system"><a href="#Chord-scale-system" class="headerlink" title="Chord-scale system"></a>Chord-scale system</h3><p>The chord is equal to the scale and vice versa. Think that a heptatonic scale (like diatonic scale) is consist of 4 notes of the 7th chord which the root note is harmonized with other 3 extensions. In the other hand, 4 notes determine the type of chord, and 3 extensions determine the type of scale. Like playing a maj7 could be Ionion or Lydian mode scales, plus a #4 extension makes it a Lydian.</p><h3 id="Rhythm"><a href="#Rhythm" class="headerlink" title="Rhythm"></a>Rhythm</h3><ul><li>Beat: the unit of time for music, BPM (Beats Per Minute)</li><li>Metre: the regularly recurring patterns and accents such as bars and beats</li><li>Rhythm: the combination of beat and metre over time</li></ul><h3 id="Homeworks"><a href="#Homeworks" class="headerlink" title="Homeworks"></a>Homeworks</h3><ol><li>C major scale on CAGED system:<ul><li>Cover all notes of 5 positions</li><li>Start and end from other notes instead of the root note</li><li>Various scale patterns</li></ul></li><li>Find the note position due to interval<ul><li>Imagine you have two pairs of cards, one pair are ascending and descending order cards, another one are interval cards like minor 2nd, major 2nd, minor 3rd, …, etc</li><li>Pick the root note and each one card from two pairs like F on 6th string, ascending and perfect 5th</li><li>Find the the ascending perfect 5th note of F on 6th string</li></ul></li></ol><h4 id="Tips"><a href="#Tips" class="headerlink" title="Tips"></a>Tips</h4><ul><li>Try to think faster before playing.</li><li>Inversion of interval of two notes, 9 &#x3D; perfect 4th and perfect 5th &#x3D; major 3rd and minor 6th</li><li><em>Maybe you can try this mini app <a href="https://joouis.com/fingerboard-mate/">Fingerboard mate</a></em></li></ul><h2 id="Course-2"><a href="#Course-2" class="headerlink" title="Course 2"></a>Course 2</h2><h3 id="Modes"><a href="#Modes" class="headerlink" title="Modes"></a>Modes</h3><p>Older than natural major&#x2F;minor scales.</p><table><thead><tr><th align="center">Tonic relative to major scale</th><th align="center">Name</th><th align="center">Interval sequence</th><th align="center">Tonic 7th chord</th></tr></thead><tbody><tr><td align="center">I</td><td align="center">Natural major scale, Ionian mode</td><td align="center">1, 2, 3, 4, 5, 6, 7</td><td align="center">△7</td></tr><tr><td align="center">II</td><td align="center">Dorian mode</td><td align="center">1, 2, b3, 4, 5, 6, b7</td><td align="center">-7</td></tr><tr><td align="center">III</td><td align="center">Phrygian mode</td><td align="center">1, b2, b3, 4, 5, b6, b7</td><td align="center">-7</td></tr><tr><td align="center">IV</td><td align="center">Lydian mode</td><td align="center">1, 2, 3, #4, 5, 6, 7</td><td align="center">△7</td></tr><tr><td align="center">V</td><td align="center">Mixolydian mode</td><td align="center">1, 2, 3, 4, 5, 6, b7</td><td align="center">dom7</td></tr><tr><td align="center">VI</td><td align="center">Natural minor scale, Aeolian mode</td><td align="center">1, 2, b3, 4, 5, b6, b7</td><td align="center">-7</td></tr><tr><td align="center">VII</td><td align="center">Locrian mode</td><td align="center">1, b2, b3, 4, b5, b6, b7</td><td align="center">-7b5</td></tr></tbody></table><p>C major scale we practiced before has same notes to the D dorian, E phrygian, F lydian, G mixolydian, A aeolian and B locrian.</p><h3 id="Practice-hints-with-fifth-circle"><a href="#Practice-hints-with-fifth-circle" class="headerlink" title="Practice hints with fifth circle"></a>Practice hints with fifth circle</h3><ul><li>Start from dorian and mixolydian modes which are ofren used for minor and dominant chords</li><li>Change root note and practice with corresponding interval sequence on C major scale on CAGED system</li><li>Modulation: play each key along with fifth circle on <strong>one position area</strong> of CAGED system</li><li>Write down the notes of major scale, modes name and corresponding tonic chords to help remembering</li><li>Play tonic chord before and after scale&#x2F;mode</li><li>Practice root position for one kind of chords along with fifth circle on one position area of CAGED system, like play major chords in 12 keys on C position then go to other positions, then change to minor chords, dominant chords…</li></ul><h3 id="Subdivision"><a href="#Subdivision" class="headerlink" title="Subdivision"></a>Subdivision</h3><p>Dividing the beat into smaller units. Swing 8th are perfoming by one 1&#x2F;3 triplets and another 2&#x2F;3 triplets, counting triplets beats in mind.</p><h3 id="Comping"><a href="#Comping" class="headerlink" title="Comping"></a>Comping</h3><p>Providing background like chords, timing, etc to make improvised solo or meldoy lines a complete work. It also has lots of possibilities as same as solo to create or renew the song. Recommend the guitarist Freddie Green to know more.</p><h3 id="Homeworks-1"><a href="#Homeworks-1" class="headerlink" title="Homeworks"></a>Homeworks</h3><ol><li>Know well about the name and interval sequence of 7 modes<ul><li>Random root note with random mode to practice</li><li>Play swing 8th</li></ul></li><li>Proficient in playing major II-V-I chords in each key<ul><li>Random root note</li><li>Play swing 4th (mute the third beat in triplets)</li></ul></li></ol><h2 id="Course-3"><a href="#Course-3" class="headerlink" title="Course 3"></a>Course 3</h2><h3 id="Minor-II-V-I"><a href="#Minor-II-V-I" class="headerlink" title="Minor II-V-I"></a>Minor II-V-I</h3><p>In the natural minor scale (1, 2, b3, 4, 5, b6, b7), the tension can’t be resolved due to both V and I are minor chords. Thus leverage the harmonic minor scale (1, 2, b3, 4, 5, b6, 7) to make V to be dominant chord, but also keep the II and I chords in natural minor scale to construct the minor II-V-I.</p><p>Comparing to the V in major scale (1, 2, 3, 4, 5, 6, b7), the V in harmonic minor scale (1, b2, 3, 4, 5, b6, 7) has b9 and b13 notes which is called altered. Typically, a dominant seventh chord is considered altered if either or both the 5th or 9th are chromatically raised or lowered (#9 or b9 and #11 or b13).</p><p>In result, the minor II-V-I is m7b5-dom7alt-min7. You can also change the I to minMaj7 if you prefer harmonic minor scale.</p><h3 id="Phrygian-dominant-mode"><a href="#Phrygian-dominant-mode" class="headerlink" title="Phrygian dominant mode"></a>Phrygian dominant mode</h3><p>There are also 7 modes based on harmonic minor scale, the most common one is the 5th mode phrygian dominant. When you see a G13 chord, it must comes from a major scale. And when you see a dom7b9, you can infer that it comes from the V in minor scale, then you can play phrygian dominant.</p><p>Moreover, the basic patterns to play minor II-V-I are locrian for minor II, phrygian dominant for minor V and aeolian or dorian for minor I.</p><h3 id="Avoid-note"><a href="#Avoid-note" class="headerlink" title="Avoid note"></a>Avoid note</h3><p>Avoid note will change the functionality of chords.</p><ul><li>For major and dominant chords, the avoid note is 4th diatonic scale step (11), the available extensions are 9, #11, 13.</li><li>For minors chords, the avoid note is 6th scale step (13), the available extensions are 9, 11. There is an exception, it can work if the minor chord acts as dominant function. For instance, replace V dominant by IV minor and the progression turns to be IV major, IV minor and I major, sounds great.</li></ul><p>Avoid notes for modes of the C major scale:</p><table><thead><tr><th align="center">Scale degree</th><th align="center">Chord</th><th align="center">Mode</th><th align="center">Avoid note</th><th align="center">Available tensions</th></tr></thead><tbody><tr><td align="center">1</td><td align="center">Cmaj7</td><td align="center">Ionian</td><td align="center">Fourth scale step, F</td><td align="center">9, 13</td></tr><tr><td align="center">2</td><td align="center">Dm7</td><td align="center">Dorian</td><td align="center">Sixth scale step, B</td><td align="center">9, 11</td></tr><tr><td align="center">3</td><td align="center">Em7</td><td align="center">Phrygian</td><td align="center">Second and sixth scale steps, F and C</td><td align="center">11</td></tr><tr><td align="center">4</td><td align="center">Fmaj7</td><td align="center">Lydian</td><td align="center">No avoid note</td><td align="center">9, ♯11, 13</td></tr><tr><td align="center">5</td><td align="center">G7</td><td align="center">Mixolydian</td><td align="center">Fourth scale step, C</td><td align="center">9, 13</td></tr><tr><td align="center">6</td><td align="center">Am7</td><td align="center">Aeolian</td><td align="center">Sixth scale step, F</td><td align="center">9, 11</td></tr><tr><td align="center">7</td><td align="center">Bø7</td><td align="center">Locrian</td><td align="center">Second scale step, C</td><td align="center">11, ♭13</td></tr></tbody></table><h3 id="Steps-to-learn-a-standard"><a href="#Steps-to-learn-a-standard" class="headerlink" title="Steps to learn a standard"></a>Steps to learn a standard</h3><ol><li>Listen multiple versions of the song with lead sheet, figure out the form of the song.</li><li>Practice the melody and chords of the song.</li><li>Practice scales and arpeggios through the chords.</li><li>Improvisation. This a really comprehensive topic, try to find the 3rd notes of every chords at first.</li></ol><h3 id="Homeworks-2"><a href="#Homeworks-2" class="headerlink" title="Homeworks"></a>Homeworks</h3><ol><li>Harmonic minor scales on CAGED system with 5th dominant 7th chord, for example A harmonic minor scale with E7 on 5 positions.</li><li>II-V-I progression of relative keys. For C major and A minor keys, the progression is Dm7-G7-C-Bm7b5-E7Alt-Am7. Try chord progression in other keys as well as arpeggios.</li></ol><h2 id="Course-4"><a href="#Course-4" class="headerlink" title="Course 4"></a>Course 4</h2><h3 id="Melodic-minor-scale"><a href="#Melodic-minor-scale" class="headerlink" title="Melodic minor scale"></a>Melodic minor scale</h3><ul><li>The ascending melodic minor scale, aka jazz minor scale: 1, 2, ♭3, 4, 5, 6, 7</li><li>The descending melodic minor scale: 1, 2, ♭3, 4, 5, ♭6, ♭7</li></ul><p>Modes of the ascending melodic minor scale:</p><table><thead><tr><th align="center">Mode</th><th align="center">Name</th><th align="center">Associated chords</th></tr></thead><tbody><tr><td align="center">I</td><td align="center"><a href="https://en.wikipedia.org/wiki/Ascending_melodic_minor">Ascending melodic minor</a></td><td align="center">C minor major 7 (9, 11, 13) or C minor 6 chords (functions as i minor)</td></tr><tr><td align="center">II</td><td align="center">Phrygian ♮6, <a href="https://en.wikipedia.org/wiki/Dorian_%E2%99%AD2_scale">Dorian ♭2</a>, Assyrian, or Phrygidorian</td><td align="center">D7sus (♭9, ♯9, 13) chord, with ♭2 as a non-chord tone producing a minor ninth</td></tr><tr><td align="center">III</td><td align="center"><a href="https://en.wikipedia.org/wiki/Lydian_augmented_scale">Lydian augmented</a> or Lydian ♯5</td><td align="center">E♭ major 7♯5 (9, #11) chord (functions as a III+)</td></tr><tr><td align="center">IV</td><td align="center"><a href="https://en.wikipedia.org/wiki/Lydian_dominant_scale">Lydian dominant</a>, Lydian ♭7, <a href="https://en.wikipedia.org/wiki/Acoustic_scale">Acoustic scale</a>, Mixolydian ♯4, Overtone, or Lydomyxian</td><td align="center">F7 (9, ♯11, 13) chord (functions as a dominant, secondary, or substitute dominant)</td></tr><tr><td align="center">V</td><td align="center"><a href="https://en.wikipedia.org/wiki/Aeolian_dominant_scale">Mixolydian ♭6</a>, Melodic major, fifth mode of Melodic minor, Hindu, or Myxaeolian</td><td align="center">G7 (9, ♭13) chord (functions as a dominant with ♭13 as a non-chord tone or the fifth avoided in the chord voicing as they produce a minor ninth)</td></tr><tr><td align="center">VI</td><td align="center">Locrian ♮2, <a href="https://en.wikipedia.org/wiki/Half_diminished_scale">Half-diminished</a>, or Aeolocrian</td><td align="center">A minor 7♭5 (9, 11, ♭13) (functions as a ii chord in the fifth mode of melodic minor)</td></tr><tr><td align="center">VII</td><td align="center">Super Locrian, Altered dominant scale, or <a href="https://en.wikipedia.org/wiki/Altered_scale">altered scale</a></td><td align="center">B7 (♯ or ♭9, ♯11, ♭13) chord (functions as a dominant with the fifth of the chord replaced by ♯11 or ♭13, may also be used to harmonize a vii7♭5 chord in melodic minor)</td></tr></tbody></table><h3 id="Tritone-substitution"><a href="#Tritone-substitution" class="headerlink" title="Tritone substitution"></a>Tritone substitution</h3><p>If two chords share the same 3rd and 7th notes, they will have similar sound thus can replace each other. For example, we can play IIm7-bII7-I△7 instead of IIm7-V7-I△7 to make bassline changing smoothly.</p><p>Lydian dominant is the most important mode of melodic scale, the only difference with mixolydian mode is #4 note. One common scenario to apply this mode is with tritone substitution, an approach to help finding the positions on fretboard quickly. If you want to play the V dominant altered scale on V7 chord, it’s exactly the bII lydian dominant scale on bII7.</p><h3 id="Homework"><a href="#Homework" class="headerlink" title="Homework"></a>Homework</h3><p>Melodic minor scales on CAGED system with related tonic chords.</p><h2 id="References"><a href="#References" class="headerlink" title="References"></a>References</h2><ul><li><a href="https://en.wikipedia.org/wiki/Mode_(music)">Mode</a></li><li><a href="https://en.wikipedia.org/wiki/Avoid_note">Avoid note</a></li><li><a href="https://en.wikipedia.org/wiki/Jazz_scale">Jazz scale</a></li></ul>]]></content>
    
    
    <summary type="html">&lt;p&gt;Note of preparatory courses of Cai Jian (蔡剑) jazz guitar lessons by Qihao Chen (陈启豪).&lt;/p&gt;</summary>
    
    
    
    <category term="爱乐之城" scheme="https://joouis.com/categories/%E7%88%B1%E4%B9%90%E4%B9%8B%E5%9F%8E/"/>
    
    
    <category term="music" scheme="https://joouis.com/tags/music/"/>
    
    <category term="jazz" scheme="https://joouis.com/tags/jazz/"/>
    
    <category term="jazz guitar" scheme="https://joouis.com/tags/jazz-guitar/"/>
    
    <category term="note" scheme="https://joouis.com/tags/note/"/>
    
    <category term="chords" scheme="https://joouis.com/tags/chords/"/>
    
    <category term="scales" scheme="https://joouis.com/tags/scales/"/>
    
    <category term="harmony" scheme="https://joouis.com/tags/harmony/"/>
    
  </entry>
  
  <entry>
    <title>吉他保养简记</title>
    <link href="https://joouis.com/2021/guitar-maintenance-note/"/>
    <id>https://joouis.com/2021/guitar-maintenance-note/</id>
    <published>2021-08-11T12:27:00.000Z</published>
    <updated>2022-10-24T14:00:00.000Z</updated>
    
    <content type="html"><![CDATA[<h2 id="电吉他指板与漆面"><a href="#电吉他指板与漆面" class="headerlink" title="电吉他指板与漆面"></a>电吉他指板与漆面</h2><h3 id="品丝"><a href="#品丝" class="headerlink" title="品丝"></a>品丝</h3><p>品丝如果有锈迹可使用 MusicNomad MN104 品丝抛光剂打磨，注意使用品丝护理片或在打磨前贴上胶带以保护指板。如果观察品丝缝隙有较多污渍，可用小勾刀轻轻刮掉。</p><h3 id="指板"><a href="#指板" class="headerlink" title="指板"></a>指板</h3><ul><li>玫瑰木：使用 Dunlop 6524 指板清洁剂和 Dunlop 6532 深层护理，预算有限也可使用 Dunlop 6554 柠檬油。</li><li>枫木：<ul><li>上过油漆，用布擦拭。</li><li>无漆，用沾水的布擦拭，不要使用任何护理品。</li></ul></li><li>石墨、碳纤维：用布擦拭即可。</li><li>TBD：烤枫木、乌木。</li></ul><h3 id="琴体"><a href="#琴体" class="headerlink" title="琴体"></a>琴体</h3><ul><li>聚酯漆：如墨芬和日芬，用沾水的布擦拭即可。</li><li>聚氨酯漆：现代琴居多，使用 Dunlop 654 上光清洁剂和 Dunlop 6574 抛光巴西棕榈乳液。抛光先将乳液抹匀，然后使用电磨机配抛光棉抛光。</li><li>硝基漆：复古琴居多，用布擦干后使用 Prefox AC201 蜂蜡抛光。</li><li>哑光漆：如 James Tyler，使用 Zippo 油擦拭。</li></ul><h2 id="电吉他状态调节"><a href="#电吉他状态调节" class="headerlink" title="电吉他状态调节"></a>电吉他状态调节</h2><h3 id="检查琴颈"><a href="#检查琴颈" class="headerlink" title="检查琴颈"></a>检查琴颈</h3><ul><li>方法一：变调夹夹住第一品，手指按住六弦最后一格，看 8 品的弦距是否在 0.25mm 左右，大于该数值说明琴颈过弯需调直，小于则说明过直需放松。</li><li>方法二：使用琴颈尺观察。</li></ul><h3 id="调节琴颈"><a href="#调节琴颈" class="headerlink" title="调节琴颈"></a>调节琴颈</h3><p>以复古琴为例，松琴弦后用变调夹夹住 1 品，拧螺丝拆下琴颈。使用一字螺丝刀调节琴颈内的钢筋，若需调直则顺时针方向旋转，一次不要超过 30°。上螺丝时对角顺序安装。</p><h3 id="调节琴桥"><a href="#调节琴桥" class="headerlink" title="调节琴桥"></a>调节琴桥</h3><p>根据指板弧度选择对应的弧度尺。先调节琴码使六弦 12 品弦距 2mm、1弦 12 品弦距 1.6mm，将弧度尺放至琴弦下，挨个调节其他琴码使所有琴弦贴合弧度尺，可以拨动琴弦看是否会被弧度尺闷住。若琴码有两颗螺丝，则要注意将琴码调平。</p><p>对于 Gibson 类型的一体琴桥，由于其弧度是固定的，只需使用扳手调节一弦和六弦的高度即可。拉弦板为了获得最大的张力可调至最低，注意不要角度过大使琴弦碰到琴桥。还可以将琴弦反向穿过拉弦板再压上琴桥。</p><h3 id="调节拾音器的高度"><a href="#调节拾音器的高度" class="headerlink" title="调节拾音器的高度"></a>调节拾音器的高度</h3><p>如果不知道要怎么调可以参考这篇<a href="https://docs.google.com/spreadsheets/d/16_4b36FBkg4yOzCJkDjwMOTOMtoBY1Qri2fJ7lc7R0w/edit?usp=sharing">文档</a>的数据，具体还是以琴的实际听感为准。此外更换品牌拾音器通常可以参考官方提供的数值，以Lace拾音器为例：</p><ul><li>按住高音<code>E</code>弦的21品，琴弦到拾音器的高度为：琴颈 1.5mm，中间 2.0mm，琴桥 1.0mm；</li><li>按住低音<code>E</code>弦的21品，琴弦到拾音器的高度为：琴颈 2.5mm，中间 3.5mm，琴桥 2.0mm；</li></ul><p><img data-src="https://cdn.joouis.com/guitar-maintenance-note-1.png"></p><p>如果一把琴的两个或三个拾音器的功率不同，将它们调至同一高度后，需对功率较小的拾音器再次调节，使其音量与其他拾音器音量保持一致。如果同时有单拾音器和双拾音器，可以不追求音量平衡，发挥各自拾音器的特色。</p><h2 id="冬季木吉他保养"><a href="#冬季木吉他保养" class="headerlink" title="冬季木吉他保养"></a>冬季木吉他保养</h2><h3 id="湿度控制是关键（40-55-）"><a href="#湿度控制是关键（40-55-）" class="headerlink" title="湿度控制是关键（40%-55%）"></a>湿度控制是关键（40%-55%）</h3><ul><li>加湿器：冷蒸发式 &gt; 超声波式</li><li>吉他恒湿柜</li><li>音孔加湿器</li><li>塑封袋一面打几个小孔，里面放一块干净湿润的毛巾，将塑封袋放入木吉他音孔中</li></ul><h3 id="保养tips"><a href="#保养tips" class="headerlink" title="保养tips"></a>保养tips</h3><ul><li>一段时间不弹的琴放琴盒，琴弦松一个全音</li><li>擦指板<ul><li>均匀喷洒 Dunlop 6524 指板清洁剂后，如果特别脏可先用毛刷轻刷，然后折叠纸巾（使用琴布略微有点浪费）擦拭</li><li>使用纸巾按压吸收 Dunlop 6532 的护理油，再用纸巾轻轻擦拭指板</li></ul></li><li>擦琴体<ul><li>选一块好的琴布：表面无较硬颗粒、有一定的韧性、化纤含量少擦拭久了发热量小</li><li>对折琴布到可以握住，擦拭的面积为长条型，检查擦拭区域不脏、无杂质</li><li>将 Dunlop 654 清洁剂喷在琴布擦拭区域，轻擦琴体（有污渍的地方），擦拭时朝一个方向</li></ul></li></ul><h2 id="参考与推荐视频"><a href="#参考与推荐视频" class="headerlink" title="参考与推荐视频"></a>参考与推荐视频</h2><ul><li><a href="https://www.bilibili.com/video/BV1pt41117QC">【光头说】自己给吉他Setup：Nut和Relief【Trebor_TTTTT】</a></li><li><a href="https://www.bilibili.com/video/BV1at411979J">【光头说】自己给吉他Setup2：Saddle【Trebor_TTTTT】</a></li><li><a href="https://www.bilibili.com/video/BV1st411q796">【光头说】自己给吉他Setup3：八度音准【Trebor_TTTTT】</a></li><li><a href="https://www.bilibili.com/video/BV1Bt411e7jr">【光头说】自己给吉他Setup4：拾音器高度【Trebor_TTTTT】</a></li><li><a href="https://www.bilibili.com/video/BV1pb411n7Db">【光头说】自己给吉他做Setup：木吉他篇【Trebor_TTTTT】</a></li><li><a href="https://www.bilibili.com/video/BV1t54y1b7Hq">【Tubes&amp;Tone】我如何调节拾音器Pole Piece？</a></li><li><a href="https://www.thegearpage.net/board/index.php?threads/pickup-height-specs-sheet.1678657/">Pickup Height Specs</a></li><li><a href="https://www.bilibili.com/video/BV15U4y1K7bg">冬季吉他保养基础攻略</a></li><li><a href="https://www.bilibili.com/video/BV19741127nm">夏式吉他保养调整一条龙服务初探</a></li><li><a href="https://www.bilibili.com/video/BV1tx41197F3">电吉他的调节与保养流程，曲度、弦距、八度、琴桥等所有都在里面了</a></li><li><a href="https://www.bilibili.com/video/BV16A411J7P4">怎样绕线不打结？</a></li><li><a href="https://www.bilibili.com/video/BV1y54y1r7j1">【天线吉他实验室】简单实用调琴指南，教你如何调节出满意舒适的吉他手感</a></li><li><a href="https://www.bilibili.com/video/BV1Xv411j7hL">电吉他为什么爱打品？极度硬核讲解＆品丝找平修复过程</a></li><li><a href="https://www.bilibili.com/video/BV11Y411p7Z5">吉他保养之【如何擦琴】小白科普向 吉他要天天擦吗？你会擦琴吗？如何判断漆面和清洁液是否匹配</a></li><li><a href="https://www.bilibili.com/video/BV1454y1Y7JT">【小白扫盲】雅马哈技师如何手感调试</a></li><li><a href="https://lacemusic.com/products/lace-sensor-gold-single-coil-pickup">Lace Sensor Gold - Single Coil Pickup</a></li></ul>]]></content>
    
    
    <summary type="html">目前记录了一些电吉他保养知识。</summary>
    
    
    
    <category term="爱乐之城" scheme="https://joouis.com/categories/%E7%88%B1%E4%B9%90%E4%B9%8B%E5%9F%8E/"/>
    
    
    <category term="music" scheme="https://joouis.com/tags/music/"/>
    
    <category term="note" scheme="https://joouis.com/tags/note/"/>
    
    <category term="guitar" scheme="https://joouis.com/tags/guitar/"/>
    
    <category term="electric guitar" scheme="https://joouis.com/tags/electric-guitar/"/>
    
    <category term="maintenance" scheme="https://joouis.com/tags/maintenance/"/>
    
    <category term="fingerboard" scheme="https://joouis.com/tags/fingerboard/"/>
    
    <category term="finish" scheme="https://joouis.com/tags/finish/"/>
    
    <category term="pickup" scheme="https://joouis.com/tags/pickup/"/>
    
  </entry>
  
  <entry>
    <title>音乐基础速查笔记</title>
    <link href="https://joouis.com/2021/music-concepts-cheat-sheet/"/>
    <id>https://joouis.com/2021/music-concepts-cheat-sheet/</id>
    <published>2021-07-18T08:47:02.000Z</published>
    <updated>2023-07-01T10:36:00.000Z</updated>
    
    <content type="html"><![CDATA[<h2 id="和弦"><a href="#和弦" class="headerlink" title="和弦"></a>和弦</h2><h3 id="七和弦"><a href="#七和弦" class="headerlink" title="七和弦"></a>七和弦</h3><table><thead><tr><th>和弦</th><th>英文名</th><th>音程关系</th><th>标记（以C和弦为例）</th></tr></thead><tbody><tr><td>大七和弦</td><td>Major seventh chord</td><td>1、3、5、7</td><td>Cmajor7、Cmaj7、Cma7、C△7</td></tr><tr><td>增大七和弦</td><td>Augmented major seventh chord</td><td>1、3、#5、7</td><td>Cmaj7#5、C△7#5</td></tr><tr><td>小七和弦</td><td>Minor seventh chord</td><td>1、b3、5、b7</td><td>Cminor7、Cmin7、Cmi7、Cm7、C-7</td></tr><tr><td>属七和弦</td><td>Dominant seventh chord</td><td>1、3、5、b7</td><td>Cdominat7、Cdom7、C7</td></tr><tr><td>半减七和弦</td><td>Half-diminished seventh chord</td><td>1、b3、b5、b7</td><td>Cm7b5、C-7b5、Cφ7</td></tr><tr><td>减七和弦</td><td>Diminished seventh chord</td><td>1、b3、b5、bb7</td><td>Cdimish7、Cdim7、Co7</td></tr><tr><td>小大七和弦</td><td>Minor major seventh chord</td><td>1、b3、5、7</td><td>CminMaj7、CmMaj7、CmM7</td></tr><tr><td>变化属七和弦</td><td>Alt chord</td><td>包含变化延伸音的属七和弦</td><td></td></tr></tbody></table><h3 id="斜线与转位和弦"><a href="#斜线与转位和弦" class="headerlink" title="斜线与转位和弦"></a>斜线与转位和弦</h3><ul><li>斜线和弦（Slash chord）：将和弦原有的根音换成其他音，如 Dm&#x2F;G 表示将 Dm 和弦的根音换成 G</li><li>转位和弦（Chord Inversions）：当和弦最低音为根音时称为原位和弦，最低音为其他构成音时称为转位和弦</li></ul><h3 id="密集与开放排列"><a href="#密集与开放排列" class="headerlink" title="密集与开放排列"></a>密集与开放排列</h3><ul><li>密集排列和弦（Close position chord）：和弦音的排列从最低音到最高音不超过一个八度</li><li>开放排列和弦（Open position chord）：和弦音的排列从最低音到最高音超过一个八度</li></ul><h3 id="Drop和弦"><a href="#Drop和弦" class="headerlink" title="Drop和弦"></a>Drop和弦</h3><ul><li>Drop2 chord：将密集排列七和弦第二高音降低一个八度</li><li>Drop3 chord：将密集排列七和弦第三高音降低一个八度</li><li>Drop2&amp;3 chord：将密集排列七和弦第二、三高音降低一个八度</li><li>Drop2&amp;4 chord：将密集排列七和弦第二、四高音降低一个八度</li></ul><h3 id="251进行"><a href="#251进行" class="headerlink" title="251进行"></a>251进行</h3><ul><li>大调 251 进行：大调顺阶和弦的二级、五级和一级的和弦进行，如 C 大调的 251 进行为 Dm7、G7、Cmaj7</li><li>小调 251 进行：爵士乐小调 251 即兴中，5 级和弦选择属和弦而非顺阶的小和弦，如 C 小调的 251 进行为 Dm7b5、G7、Cm7</li></ul><h3 id="重属和弦与三全音替代"><a href="#重属和弦与三全音替代" class="headerlink" title="重属和弦与三全音替代"></a>重属和弦与三全音替代</h3><ul><li>重（次）属和弦（Secondary dominant chord）：解决到主和弦以外的其他调内和弦（半减七、减七和弦除外）的属和弦</li><li>三全音替代（Tritone substitution）：使用距离原本属和弦根音三全音位置的属和弦替代</li></ul><h3 id="和弦琶音、延伸音"><a href="#和弦琶音、延伸音" class="headerlink" title="和弦琶音、延伸音"></a>和弦琶音、延伸音</h3><ul><li>和弦琶音（Arpeggio）：由和弦内音组成的一串音，通常用于即兴中构建乐句</li><li>和弦延伸音（Tension）：非和弦基础部分构成的音，为和弦增添了额外的色彩</li></ul><h2 id="音阶"><a href="#音阶" class="headerlink" title="音阶"></a>音阶</h2><h3 id="自然大小调"><a href="#自然大小调" class="headerlink" title="自然大小调"></a>自然大小调</h3><table><thead><tr><th>音阶</th><th>英文名</th><th>音程关系</th></tr></thead><tbody><tr><td>自然大调（I级）</td><td>Natural major scale, Ionian mode</td><td>1、2、3、4、5、6、7</td></tr><tr><td>大调II级调式</td><td>Dorian mode</td><td>1、2、b3、4、5、6、b7</td></tr><tr><td>大调III级调式</td><td>Phrygian mode</td><td>1、b2、b3、4、5、b6、b7</td></tr><tr><td>大调IV级调式</td><td>Lydian mode</td><td>1、2、3、#4、5、6、7</td></tr><tr><td>大调V级调式</td><td>Mixolydian mode</td><td>1、2、3、4、5、6、b7</td></tr><tr><td>自然小调、自然大调VI级</td><td>Natural minor scale, Aeolian mode</td><td>1、2、b3、4、5、b6、b7</td></tr><tr><td>大调VII级调式</td><td>Locrian mode</td><td>1、b2、b3、4、b5、b6、b7</td></tr></tbody></table><h3 id="和声小调"><a href="#和声小调" class="headerlink" title="和声小调"></a>和声小调</h3><table><thead><tr><th>音阶</th><th>英文名</th><th>音程关系</th><th>适用和弦</th></tr></thead><tbody><tr><td>和声小调（I级）</td><td>Harmonic minor</td><td>1、2、b3、4、5、b6、7</td><td>minMaj7</td></tr><tr><td>小调II级调式</td><td>Locrian 6</td><td>1、b2、b3、4、b5、6、b7</td><td>min7b5</td></tr><tr><td>小调III级调式</td><td>Ionian augmented&#x2F;#5</td><td>1、2、3、4、#5、6、7</td><td>maj7#5</td></tr><tr><td>小调IV级调式</td><td>Dorian #4</td><td>1、2、b3、#4、5、6、b7</td><td>min7</td></tr><tr><td>小调V级调式</td><td>Phrygian dominant</td><td>1、b2、3、4、5、b6、b7</td><td>dom7, susb9</td></tr><tr><td>小调VI级调式</td><td>Lydian #2</td><td>1、#2、3、#4、5、6、7</td><td>maj7</td></tr><tr><td>小调VII级调式</td><td>Super locrian b7</td><td>1、b2、b3、b4、b5、b6、bb7</td><td>dim7</td></tr></tbody></table><h3 id="旋律小调"><a href="#旋律小调" class="headerlink" title="旋律小调"></a>旋律小调</h3><p>TBC…</p><h3 id="其他常用音阶"><a href="#其他常用音阶" class="headerlink" title="其他常用音阶"></a>其他常用音阶</h3><table><thead><tr><th>音阶</th><th>英文名</th><th>音程关系</th></tr></thead><tbody><tr><td>大调五声音阶</td><td>Major pentatonic scale</td><td>1、2、3、5、6</td></tr><tr><td>小调五声音阶</td><td>Minor pentatonic scale</td><td>1、b3、4、5、b7</td></tr><tr><td>大调布鲁斯音阶</td><td>Major blues scale</td><td>1、2、b3、3、5、6</td></tr><tr><td>小调布鲁斯音阶</td><td>Minor blues scale</td><td>1、b3、4、#4、5、b7</td></tr><tr><td>全半减音阶</td><td>Whole half diminished scale</td><td>1、2、b3、4、b5、#5、6、7</td></tr><tr><td>半全减音阶</td><td>Half whole diminished scale</td><td>1、b9、#9、3、#11、5、13、b7</td></tr><tr><td>全音阶</td><td>Whole tone scale</td><td>1、2、3、#4、#5、#6</td></tr><tr><td>增音阶</td><td>Augmented scale</td><td>1、b3、3、5、#5、7</td></tr><tr><td></td><td>Bebop dorian</td><td>1、2、b3、3、4、5、6、b7</td></tr><tr><td></td><td>Bebop dominant</td><td>1、2、3、4、5、6、b7、7</td></tr><tr><td></td><td>Bebop major</td><td>1、2、3、4、5、#5、6、7</td></tr><tr><td></td><td>Bebop melodic minor</td><td>1、2、b3、4、5、#5、6、7</td></tr></tbody></table><h3 id="音程推导"><a href="#音程推导" class="headerlink" title="音程推导"></a>音程推导</h3><p><img data-src="https://cdn.joouis.com/music-concepts-cheat-sheet-1.jpg" alt="intervals-calculation-1"></p><p><img data-src="https://cdn.joouis.com/music-concepts-cheat-sheet-2.jpg" alt="intervals-calculation-2"></p>]]></content>
    
    
    <summary type="html">以爵士乐知识为主的大杂烩。</summary>
    
    
    
    <category term="爱乐之城" scheme="https://joouis.com/categories/%E7%88%B1%E4%B9%90%E4%B9%8B%E5%9F%8E/"/>
    
    
    <category term="music" scheme="https://joouis.com/tags/music/"/>
    
    <category term="note" scheme="https://joouis.com/tags/note/"/>
    
    <category term="chords" scheme="https://joouis.com/tags/chords/"/>
    
    <category term="scales" scheme="https://joouis.com/tags/scales/"/>
    
    <category term="harmony" scheme="https://joouis.com/tags/harmony/"/>
    
    <category term="cheat sheet" scheme="https://joouis.com/tags/cheat-sheet/"/>
    
    <category term="intervals" scheme="https://joouis.com/tags/intervals/"/>
    
  </entry>
  
  <entry>
    <title>开车有三宝</title>
    <link href="https://joouis.com/2021/3-idiots-while-driving/"/>
    <id>https://joouis.com/2021/3-idiots-while-driving/</id>
    <published>2021-04-26T04:29:38.000Z</published>
    <updated>2021-04-26T04:29:38.000Z</updated>
    
    <content type="html"><![CDATA[<p>开车有三宝：</p><p>变道、转向不打灯，</p><p>并线或占两车道行驶，</p><p>限速 60 开 40，限速 80 开 50，限速 120 开 80。</p><p>“奇葩”的违规行为数不胜数，以上三宝只因过于常见可以作为模式归纳。</p><p>三宝们配合上横冲直撞的电瓶车“大军”，在马路上构建出一幅幅和谐、美好的画面。</p><p>真好，呵呵。</p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;开车有三宝：&lt;/p&gt;
&lt;p&gt;变道、转向不打灯，&lt;/p&gt;
&lt;p&gt;并线或占两车道行驶，&lt;/p&gt;
&lt;p&gt;限速 60 开 40，限速 80 开 50，限速 120 开 80。&lt;/p&gt;
&lt;p&gt;“奇葩”的违规行为数不胜数，以上三宝只因过于常见可以作为模式归纳。&lt;/p&gt;
&lt;p&gt;三宝们配合</summary>
      
    
    
    
    <category term="人生游记" scheme="https://joouis.com/categories/%E4%BA%BA%E7%94%9F%E6%B8%B8%E8%AE%B0/"/>
    
    
    <category term="driving" scheme="https://joouis.com/tags/driving/"/>
    
    <category term="idiots" scheme="https://joouis.com/tags/idiots/"/>
    
    <category term="illegal" scheme="https://joouis.com/tags/illegal/"/>
    
  </entry>
  
  <entry>
    <title>Getting started with AAD integration in JavaScript</title>
    <link href="https://joouis.com/2021/getting-started-with-aad-integration-in-javascript/"/>
    <id>https://joouis.com/2021/getting-started-with-aad-integration-in-javascript/</id>
    <published>2021-04-14T00:05:13.000Z</published>
    <updated>2021-09-16T09:52:00.000Z</updated>
    
    <content type="html"><![CDATA[<h2 id="Relationship-between-OAuth2-0-AAD-and-MSAL"><a href="#Relationship-between-OAuth2-0-AAD-and-MSAL" class="headerlink" title="Relationship between OAuth2.0, AAD and MSAL"></a>Relationship between OAuth2.0, AAD and MSAL</h2><h3 id="Definitions"><a href="#Definitions" class="headerlink" title="Definitions"></a>Definitions</h3><h4 id="OAuth-2-0"><a href="#OAuth-2-0" class="headerlink" title="OAuth 2.0"></a>OAuth 2.0</h4><p>OAuth 2.0 is the industry-standard <strong>protocol</strong> for authorization. OAuth 2.0 focuses on client developer simplicity while providing specific authorization flows for web applications, desktop applications, mobile phones, and living room devices.</p><h4 id="Azure-Authentication-Directory"><a href="#Azure-Authentication-Directory" class="headerlink" title="Azure Authentication Directory"></a>Azure Authentication Directory</h4><p>One of OAuth 2.0 and OpenID Connect standard-compliant authentication <strong>service</strong> enabling developers to authenticate work or school accounts. It’s the implementation which supports OAuth 2.0. It’s the component of Microsoft Identity platform.</p><h4 id="Microsoft-Authentication-Libraries"><a href="#Microsoft-Authentication-Libraries" class="headerlink" title="Microsoft Authentication Libraries"></a>Microsoft Authentication Libraries</h4><p>Open source <strong>libraries</strong> for <strong>several clients</strong> to authenticate users using AAD, Microsoft personal accounts (MSA), and social identity providers like Facebook, Google, LinkedIn, Microsoft accounts, etc.</p><h3 id="Usage-scenario"><a href="#Usage-scenario" class="headerlink" title="Usage scenario"></a>Usage scenario</h3><p><img data-src="https://cdn.joouis.com/getting-started-with-aad-integration-in-javascript-1.png" alt="oauth-scenario"></p><h2 id="Workflow-and-implementation"><a href="#Workflow-and-implementation" class="headerlink" title="Workflow and implementation"></a>Workflow and implementation</h2><h3 id="Authentication-flow"><a href="#Authentication-flow" class="headerlink" title="Authentication flow"></a>Authentication flow</h3><p><img data-src="https://cdn.joouis.com/getting-started-with-aad-integration-in-javascript-2.png" alt="auth-flow"></p><h4 id="Two-APIs"><a href="#Two-APIs" class="headerlink" title="Two APIs"></a>Two APIs</h4><p>Only two APIs requested from client-side, very simple. Notice that <code>/oauth2/v2.0/authorize</code> is <code>document</code> type.</p><p><img data-src="https://cdn.joouis.com/getting-started-with-aad-integration-in-javascript-3.png" alt="auth-document"></p><h4 id="Redirect-URI-setup"><a href="#Redirect-URI-setup" class="headerlink" title="Redirect URI setup"></a>Redirect URI setup</h4><p>For CORS and redirect target from sign-in page usage, should configure it on both Azure Portal and codebase.</p><h4 id="Configuration-on-Azure-Portal"><a href="#Configuration-on-Azure-Portal" class="headerlink" title="Configuration on Azure Portal"></a>Configuration on Azure Portal</h4><p><img data-src="https://cdn.joouis.com/getting-started-with-aad-integration-in-javascript-4.png" alt="reply-uris-config"></p><h4 id="oauth-html"><a href="#oauth-html" class="headerlink" title="oauth.html"></a>oauth.html</h4><p>Usually we will set two reply URIs, one is probably the homepage as redirect target after signed in, another is used for requesting token silently. The silent token refresh loads an iframe using that empty <code>oauth.html</code> file, and that same <code>oauth.html</code> file needs to receive the response back, so the acquire token silent flow provides the <code>/oauth.html</code> endpoint as the redirect URI. This is different from the user-facing flow because there is no iframe that the middleware loads into the page, redirecting back to <code>oauth.html</code> will not hook into React or MSAL and auth would halt – it must redirect back to your react app in the user-facing flow.</p><h4 id="Code-configuration"><a href="#Code-configuration" class="headerlink" title="Code configuration"></a>Code configuration</h4><figure class="highlight typescript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">const</span> config = &#123;</span><br><span class="line">    <span class="attr">auth</span>: &#123;</span><br><span class="line">        <span class="comment">// The application ID of your AAD application</span></span><br><span class="line">        <span class="attr">clientId</span>: <span class="string">&quot;11111111-1111-1111-111111111111&quot;</span>,</span><br><span class="line">        <span class="comment">// The authority URL for your application</span></span><br><span class="line">        <span class="attr">authority</span>: <span class="string">&quot;https://login.microsoftonline.com/common&quot;</span>,</span><br><span class="line">        <span class="comment">// Defaults to application start page</span></span><br><span class="line">        <span class="attr">redirectUri</span>: <span class="string">&quot;https://localhost:3000&quot;</span>,</span><br><span class="line">        <span class="attr">postLogoutRedirectUri</span>: <span class="string">&quot;https://localhost:3000/logout&quot;</span></span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="keyword">const</span> loginRequest = &#123;</span><br><span class="line">    <span class="attr">scopes</span>: [<span class="string">`<span class="subst">$&#123;resourceEndpoint&#125;</span>/.default`</span>]</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><h4 id="Authority"><a href="#Authority" class="headerlink" title="Authority"></a>Authority</h4><p>The authority is a URL that indicates a directory that MSAL can request tokens from, for more details check the <a href="https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-client-application-configuration">MSAL Application configuration options</a>.</p><h4 id="Scopes-and-permissions"><a href="#Scopes-and-permissions" class="headerlink" title="Scopes and permissions"></a>Scopes and permissions</h4><p>Applications that integrate with the Microsoft identity platform follow an authorization model that gives users and administrators control over how data can be accessed. <code>/.default</code> represents OpenID Connect scopes, for more details check the <a href="https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-permissions-and-consent">Permissions and consent in the Microsoft identity platform</a>.</p><h3 id="Sign-in-with-redirect"><a href="#Sign-in-with-redirect" class="headerlink" title="Sign-in with redirect"></a>Sign-in with redirect</h3><p>It’s no need to redirect to sign-in page every time if auth is not expired, just go ahead. You can also <a href="https://docs.microsoft.com/en-us/azure/active-directory/develop/scenario-spa-sign-in?tabs=javascript2#sign-in-with-a-pop-up-window">sign-in with a pop-up window</a>.</p><figure class="highlight typescript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">let</span> username = <span class="string">&quot;&quot;</span>;</span><br><span class="line"></span><br><span class="line"><span class="keyword">const</span> msalInstance = <span class="keyword">new</span> <span class="title class_">PublicClientApplication</span>(config);</span><br><span class="line"></span><br><span class="line"><span class="keyword">function</span> <span class="title function_">handleResponse</span>(<span class="params">response</span>) &#123;</span><br><span class="line">    <span class="comment">//handle redirect response</span></span><br><span class="line"></span><br><span class="line">    <span class="comment">// In case multiple accounts exist, you can select</span></span><br><span class="line">    <span class="keyword">const</span> currentAccounts = msalInstance.<span class="title function_">getAllAccounts</span>();</span><br><span class="line"></span><br><span class="line">    <span class="keyword">if</span> (currentAccounts === <span class="literal">null</span>) &#123;</span><br><span class="line">        <span class="comment">// No accounts detected, need to login</span></span><br><span class="line">        msalInstance.<span class="title function_">loginRedirect</span>(loginRequest);</span><br><span class="line">    &#125; <span class="keyword">else</span> <span class="keyword">if</span> (currentAccounts.<span class="property">length</span> &gt; <span class="number">1</span>) &#123;</span><br><span class="line">        <span class="comment">// Add choose account code here</span></span><br><span class="line">    &#125; <span class="keyword">else</span> <span class="keyword">if</span> (currentAccounts.<span class="property">length</span> === <span class="number">1</span>) &#123;</span><br><span class="line">        username = currentAccounts[<span class="number">0</span>].<span class="property">username</span>;</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line">msalInstance.<span class="title function_">handleRedirectPromise</span>().<span class="title function_">then</span>(handleResponse);</span><br></pre></td></tr></table></figure><h4 id="Authorization-code"><a href="#Authorization-code" class="headerlink" title="Authorization code"></a>Authorization code</h4><p>After signed in successfully, page will redirect to the redirect URI we set before with the authorization code. MSAL.js library will handle it automatically, we can observe the code on the navigation bar.</p><p><img data-src="https://cdn.joouis.com/getting-started-with-aad-integration-in-javascript-5.png" alt="hash-code"></p><p>Then the library will parse the authorization code and send the request to get token back directly, all logics encapsulated. Here is the structure of the decoded code.</p><p><img data-src="https://cdn.joouis.com/getting-started-with-aad-integration-in-javascript-6.png" alt="auth-code-deserialized"></p><h3 id="Acquire-a-token-with-a-redirect"><a href="#Acquire-a-token-with-a-redirect" class="headerlink" title="Acquire a token with a redirect"></a>Acquire a token with a redirect</h3><p>The pattern for acquiring tokens for APIs with MSAL.js is to first attempt a silent token request by using the <code>acquireTokenSilent</code> method. When this method is called, the library first checks the cache in browser storage to see if a valid token exists and returns it. When no valid token is in the cache, it sends a silent token request to AAD from a hidden iframe.</p><p>The silent token requests to AAD might fail for reasons like an expired Azure AD session or a password change. In that case, we need to redirect or using a pop-up window to acquire tokens.</p><figure class="highlight typescript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">const</span> <span class="attr">accessTokenRequest</span>: <span class="title class_">AuthenticationParameters</span> = &#123;</span><br><span class="line">    <span class="attr">scopes</span>: [<span class="string">`<span class="subst">$&#123;resourceEndpoint&#125;</span>/.default`</span>],</span><br><span class="line">    <span class="attr">authority</span>: <span class="variable language_">this</span>.<span class="property">authority</span>,</span><br><span class="line">    <span class="attr">redirectUri</span>: <span class="string">&quot;https://localhost:3000/oauth.html&quot;</span>,</span><br><span class="line">    <span class="attr">account</span>: <span class="variable language_">this</span>.<span class="property">account</span></span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line">msalInstance.<span class="title function_">acquireTokenSilent</span>(accessTokenRequest).<span class="title function_">then</span>(<span class="keyword">function</span>(<span class="params">accessTokenResponse</span>) &#123;</span><br><span class="line">    <span class="comment">// Acquire token silent success</span></span><br><span class="line">    <span class="comment">// Call API with token</span></span><br><span class="line">    <span class="keyword">let</span> accessToken = accessTokenResponse.<span class="property">accessToken</span>;</span><br><span class="line">&#125;).<span class="title function_">catch</span>(<span class="keyword">function</span> (<span class="params">error</span>) &#123;</span><br><span class="line">    <span class="comment">//Acquire token silent failure, and send an interactive request</span></span><br><span class="line">    <span class="variable language_">console</span>.<span class="title function_">log</span>(error);</span><br><span class="line">    <span class="keyword">if</span> (error.<span class="property">errorMessage</span>.<span class="title function_">indexOf</span>(<span class="string">&quot;interaction_required&quot;</span>) !== -<span class="number">1</span>) &#123;</span><br><span class="line">        msalInstance.<span class="title function_">acquireTokenRedirect</span>(accessTokenRequest);</span><br><span class="line">    &#125;</span><br><span class="line">&#125;);</span><br></pre></td></tr></table></figure><h4 id="Why-use-redirect-way"><a href="#Why-use-redirect-way" class="headerlink" title="Why use redirect way?"></a>Why use redirect way?</h4><p>If users have browser constraints or policies where pop-ups windows are disabled, you can use the redirect method. Use the redirect method with the Internet Explorer browser, because there are <a href="https://github.com/AzureAD/microsoft-authentication-library-for-js/wiki/Known-issues-on-IE-and-Edge-Browser">known issues with pop-up windows on Internet Explorer</a>.</p><h3 id="Choice-of-MSAL-js"><a href="#Choice-of-MSAL-js" class="headerlink" title="Choice of MSAL.js"></a>Choice of MSAL.js</h3><p>You will find so many packages when you visit MSAL.js repository, APIs used above should be compatible across the packages, then question comes: how to make a choice?</p><p>Besides node package using in the server-side, I recommend <code>msal-browser</code> (<a href="https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser">Microsoft Authentication Library for JavaScript v2.x</a>) or other UI framework wrappers based on it, for its implementation of OAuth 2.0 Authorization Code Flow with PCKE as well as it’s OpenID-compliant.</p><p><img data-src="https://cdn.joouis.com/getting-started-with-aad-integration-in-javascript-7.png" alt="msal-package-structure"></p><p>These packages are just official engineering implementations, not so well-documented yet, I had to read the source code for debugging before. Anyway as long as you master the workflow of authentication, it would not be too complicated.</p><h2 id="Migration-from-AdalJS-to-MSAL-js"><a href="#Migration-from-AdalJS-to-MSAL-js" class="headerlink" title="Migration from AdalJS to MSAL.js"></a>Migration from AdalJS to MSAL.js</h2><p>AdalJS is the legacy library for AAD authentication used by so many dated products. If you don’t have any idea about this section, the official document explains <a href="https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-migration#why-switch-to-msal">Why switch to MSAL</a> clearly.</p><h3 id="Tips"><a href="#Tips" class="headerlink" title="Tips"></a>Tips</h3><ul><li>You may need to change the reply URL type from <code>Web</code> to <code>SPA</code> as MSAL.js required. AdalJS supports both two types, so this change will not block online client services.</li><li>Need to specify the <code>accessTokenAcceptedVersion</code> to <code>2</code> and <code>signInAudience</code> to <code>AzureADandPersonalMicrosoftAccount</code> in the manifest if you want to support both AAD account and MSA account. These settings will not break online client services as well.</li><li>You can just import the MSAL.js distribution script to your app then test if the current AAD configurations are satisfying both SDKs.</li><li>If there is an auth service for the app, you can just do <a href="https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/login-user.md#silent-login-with-ssosilent">silent login with <code>ssoSlient()</code></a>.</li><li>Remember to test all kinds of audiences of the customers and all provided resouce endpoints with access token.</li></ul><h3 id="Quick-login-verification-on-you-app-page"><a href="#Quick-login-verification-on-you-app-page" class="headerlink" title="Quick login verification on you app page"></a>Quick login verification on you app page</h3><p>PoC (Proof of concept) or verfication always needs quick moves. For the migration scenario, we have to make sure the AAD configurations are correct as well as compatible to make both AdalJS clients and MSAL.js clients login successfully at first stage. To do the quick login verification, the authentication client class need to be exposed to <code>Window</code> global no matter AdalJS or MSAL.js, then we can do experiment on the console of browser.</p><h4 id="For-MSAL-js"><a href="#For-MSAL-js" class="headerlink" title="For MSAL.js"></a>For MSAL.js</h4><p>Please refer to the <a href="https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/initialization.md">document</a>, it’s similar to the codes demonstrated above.</p><h4 id="For-AdalJS"><a href="#For-AdalJS" class="headerlink" title="For AdalJS"></a>For AdalJS</h4><p>The docs for AdalJS are much fewer than MSAL.js probably becasue it has been deprecated. And different versions of AdalJS seems to have few subtle API as well as behavior changes, so you may need to update the code below to make it work. My test code is based on AdalJS v1.0.8.</p><figure class="highlight javascript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">var</span> authContext = <span class="keyword">new</span> <span class="title class_">AuthenticationContext</span>(&#123;</span><br><span class="line">            <span class="attr">instance</span>: <span class="string">&quot;https://login.microsoftonline.com/&quot;</span>,</span><br><span class="line">            <span class="attr">clientId</span>: <span class="string">&quot;Client ID of AAD app&quot;</span>,</span><br><span class="line">            <span class="attr">redirectUri</span>: <span class="string">&quot;Reply URL of AAD app&quot;</span>,</span><br><span class="line">            <span class="attr">postLogoutRedirectUri</span>: <span class="variable language_">window</span>.<span class="property">location</span>.<span class="property">href</span>,</span><br><span class="line">            <span class="attr">cacheLocation</span>: <span class="string">&#x27;localStorage&#x27;</span>,</span><br><span class="line">            <span class="attr">endpoints</span>: &#123; <span class="attr">graphApiResourceEndpoint</span>: <span class="string">&quot;https://graph.microsoft.com/&quot;</span> &#125;,</span><br><span class="line">        &#125;)</span><br><span class="line"></span><br><span class="line"><span class="comment">// Implement the pop-up login flow</span></span><br><span class="line">authContext.<span class="property">config</span>.<span class="property">displayCall</span> = <span class="keyword">function</span> (<span class="params">url</span>) &#123;</span><br><span class="line">      authContext.<span class="property">config</span>.<span class="property">displayCall</span> = <span class="literal">null</span>;</span><br><span class="line">      <span class="keyword">var</span> popup = <span class="variable language_">window</span>.<span class="title function_">open</span>(url, <span class="string">&#x27;auth-popup&#x27;</span>, <span class="string">&#x27;width=800,height=500&#x27;</span>);</span><br><span class="line">      <span class="keyword">var</span> intervalId = <span class="variable language_">window</span>.<span class="built_in">setInterval</span>(<span class="keyword">function</span> (<span class="params"></span>) &#123;</span><br><span class="line">        <span class="keyword">try</span> &#123;</span><br><span class="line">          <span class="comment">// Assume your reply URL contains &quot;/signin&quot;</span></span><br><span class="line">          <span class="keyword">if</span> (popup.<span class="property">location</span>.<span class="property">pathname</span>.<span class="title function_">indexOf</span>(<span class="string">&#x27;/signin&#x27;</span>) &gt;= <span class="number">0</span>) &#123;</span><br><span class="line">            <span class="variable language_">window</span>.<span class="built_in">clearInterval</span>(intervalId);</span><br><span class="line">            <span class="comment">// Pass the ID token for AdalJS to parse</span></span><br><span class="line">            <span class="variable language_">window</span>.<span class="property">location</span>.<span class="property">hash</span> = popup.<span class="property">location</span>.<span class="property">hash</span>;</span><br><span class="line">            <span class="comment">// But AdalJS will not clean the &quot;#&quot; tag in url, so it will redirect in the handleWindowCallback().</span></span><br><span class="line">            <span class="comment">// I&#x27;d like to add a breakpoint inside to update the value of &quot;adal.login.request&quot; key to stop redirection.</span></span><br><span class="line">            <span class="comment">// Just read the source code if you don&#x27;t know what I mean.</span></span><br><span class="line">            authContext.<span class="title function_">handleWindowCallback</span>();</span><br><span class="line">            popup.<span class="title function_">close</span>();</span><br><span class="line">            <span class="keyword">var</span> user = authContext.<span class="title function_">getCachedUser</span>();</span><br><span class="line">            <span class="keyword">if</span> (user) &#123;</span><br><span class="line">              <span class="variable language_">console</span>.<span class="title function_">log</span>(<span class="title class_">JSON</span>.<span class="title function_">stringify</span>(user))</span><br><span class="line">            &#125; <span class="keyword">else</span> &#123;</span><br><span class="line">              <span class="variable language_">console</span>.<span class="title function_">error</span>(authContext.<span class="title function_">getLoginError</span>());</span><br><span class="line">            &#125;</span><br><span class="line">          &#125;</span><br><span class="line">        &#125; <span class="keyword">catch</span> (whatever) &#123;</span><br><span class="line">          <span class="keyword">if</span> (popup.<span class="property">closed</span>) &#123;</span><br><span class="line">            <span class="variable language_">console</span>.<span class="title function_">error</span>(whatever)</span><br><span class="line">          &#125;</span><br><span class="line">        &#125;</span><br><span class="line">      &#125;, <span class="number">100</span>);</span><br><span class="line">    &#125;;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Login via a pop-up window</span></span><br><span class="line">authContext.<span class="title function_">login</span>();</span><br><span class="line"></span><br><span class="line"><span class="comment">// Inspect the access token after logining</span></span><br><span class="line">authContext.<span class="title function_">acquireToken</span>(<span class="string">&quot;https://graph.microsoft.com/&quot;</span>, <span class="keyword">function</span>(<span class="params"></span>) &#123; <span class="variable language_">console</span>.<span class="title function_">log</span>(<span class="variable language_">arguments</span>); <span class="keyword">debugger</span> &#125;)</span><br></pre></td></tr></table></figure><h2 id="Frequently-asked-issues"><a href="#Frequently-asked-issues" class="headerlink" title="Frequently asked issues"></a>Frequently asked issues</h2><h3 id="Debugging-and-verification-approach"><a href="#Debugging-and-verification-approach" class="headerlink" title="Debugging and verification approach"></a>Debugging and verification approach</h3><p>You can’t verify your change until the production release, also the change for the production environment can’t be verified on other staging environment since they are using different hosts. So the question is how to debug or do verification?</p><p>Basically you can run a local server to host your application with adding a host record which points the production host to your local IP address like <code>127.0.0.1</code> to make it. Remember to enable HTTPS protocol for your local server.</p><p>And it’s better to verify your change on both common window and incognito window after the release.</p><h3 id="Difference-between-access-token-ID-token-and-refresh-token"><a href="#Difference-between-access-token-ID-token-and-refresh-token" class="headerlink" title="Difference between access token, ID token, and refresh token"></a>Difference between access token, ID token, and refresh token</h3><p>We observed that <code>/oauth2/v2.0/token</code> return 3 tokens: <code>access_token</code>,  <code>id_token</code> and <code>refresh_token</code>.</p><p><code>access_token</code> enables clients to securely call protected web APIs, and are used by web APIs to perform authentication and authorization. For more details please check <a href="https://docs.microsoft.com/en-us/azure/active-directory/develop/access-tokens">Microsoft identity platform access tokens</a>.</p><p><code>id_token</code> should be used to validate that a user is who they claim to be and get additional useful information about them, it can be sent alongside or instead of an access token. We have not used it. For more details please check <a href="https://docs.microsoft.com/en-us/azure/active-directory/develop/id-tokens">Microsoft identity platform ID tokens</a>.</p><p><code>access_token</code> and <code>id_token</code> are both JWT which consists of a header, payload, and signature portion, that’s why they look so similiar though these two strings are base64 encoded. We mainly use access token for the application, it contains more information than ID token, and we can get user info like name, E-mail from it.</p><p>Because access tokens are valid for only a short period of time, authorization servers will sometimes issue a refresh token at the same time the access token is issued. MSAL.js will exchange the <code>refresh_token</code> while request token silently for a new access token when needed.</p><h3 id="How-to-change-token-expiration-time"><a href="#How-to-change-token-expiration-time" class="headerlink" title="How to change token expiration time?"></a>How to change token expiration time?</h3><p>Please check this <a href="https://stackoverflow.com/questions/31162257/azure-oauth-how-to-change-token-expiration-time">answer from StackOverflow</a>.</p><h3 id="InteractionRequiredAuthError-AADSTS50058-A-silent-sign-in-request-was-sent-but-no-user-is-signed-in"><a href="#InteractionRequiredAuthError-AADSTS50058-A-silent-sign-in-request-was-sent-but-no-user-is-signed-in" class="headerlink" title="InteractionRequiredAuthError: AADSTS50058: A silent sign-in request was sent but no user is signed in."></a>InteractionRequiredAuthError: AADSTS50058: A silent sign-in request was sent but no user is signed in.</h3><p>This error need interaction sign in, thus catch the error and call <code>acquireTokenRedirect</code> method to sign in.</p><p>If the error message contains like this “The cookies used to represent the user’s session were not sent in the request to Azure AD. This could happen if the user is using Internet Explorer or Edge, and the web app sending the silent sign-in request is in different IE security zone than the Azure AD endpoint (login.microsoftonline.com).”, upgrade your MSAL.js v1.x to v2.x. Check more details <a href="https://github.com/AzureAD/microsoft-authentication-library-for-js/issues/1765">here</a>.</p><h3 id="The-frame-attempting-navigation-of-the-top-level-window-is-sandboxed-but-the-flag-of-‘allow-top-navigation’-or-‘allow-top-navigation-by-user-activation’-is-not-set"><a href="#The-frame-attempting-navigation-of-the-top-level-window-is-sandboxed-but-the-flag-of-‘allow-top-navigation’-or-‘allow-top-navigation-by-user-activation’-is-not-set" class="headerlink" title="The frame attempting navigation of the top-level window is sandboxed, but the flag of ‘allow-top-navigation’ or ‘allow-top-navigation-by-user-activation’ is not set."></a>The frame attempting navigation of the top-level window is sandboxed, but the flag of ‘allow-top-navigation’ or ‘allow-top-navigation-by-user-activation’ is not set.</h3><p>This error usually occurred while requesting token, mostly it’s caused by wrong reply URL which iframe could not load it to request token silently. So make sure your reply URL pointing to the blank static HTML resource is right. Additional, this error message is somehow confusing cause it does not tell the root cause directly, check more details <a href="https://github.com/AzureAD/microsoft-authentication-library-for-js/issues/1199">here</a>.</p><h3 id="BrowserAuthError-pcke-not-created-The-PCKE-code-challenge-and-verifier-could-not-be-generated"><a href="#BrowserAuthError-pcke-not-created-The-PCKE-code-challenge-and-verifier-could-not-be-generated" class="headerlink" title="BrowserAuthError: pcke_not_created: The PCKE code challenge and verifier could not be generated."></a>BrowserAuthError: pcke_not_created: The PCKE code challenge and verifier could not be generated.</h3><p>Check the protocol and be sure it’s HTTPS.</p><h2 id="References"><a href="#References" class="headerlink" title="References"></a>References</h2><ul><li><a href="https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-auth-code-flow">Microsoft identity platform and OAuth 2.0 authorization code flow</a></li><li><a href="https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-overview">What is the Microsoft identity platform?</a></li><li><a href="https://docs.microsoft.com/en-us/azure/active-directory/fundamentals/auth-oauth2">OAuth 2.0 authentication with Azure Active Directory</a></li><li><a href="https://docs.microsoft.com/en-us/azure/active-directory/develop/scenario-spa-sign-in">Single-page application: Sign-in and Sign-out</a></li><li><a href="https://docs.microsoft.com/en-us/azure/active-directory/develop/scenario-spa-acquire-token">Single-page application: Acquire a token to call an API</a></li><li><a href="https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-client-application-configuration">MSAL Application configuration options</a></li><li><a href="https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-permissions-and-consent">Permissions and consent in the Microsoft identity platform</a></li><li><a href="https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-configurable-token-lifetimes">Configurable token lifetimes in the Microsoft identity platform</a></li><li><a href="https://docs.microsoft.com/en-us/azure/active-directory/develop/id-tokens">Microsoft identity platform ID tokens</a></li><li><a href="https://docs.microsoft.com/en-us/azure/active-directory/develop/access-tokens">Microsoft identity platform access tokens</a></li><li><a href="https://docs.microsoft.com/en-us/azure/active-directory/develop/quickstart-register-app">Quickstart: Register an application with the Microsoft identity platform</a></li></ul>]]></content>
    
    
    <summary type="html">My sharing for the UX team about the auth process, components and some empirical knowledges from the business.</summary>
    
    
    
    <category term="Web 前端" scheme="https://joouis.com/categories/Web-%E5%89%8D%E7%AB%AF/"/>
    
    
    <category term="TechTalk" scheme="https://joouis.com/tags/TechTalk/"/>
    
    <category term="oauth" scheme="https://joouis.com/tags/oauth/"/>
    
    <category term="azure" scheme="https://joouis.com/tags/azure/"/>
    
    <category term="aad" scheme="https://joouis.com/tags/aad/"/>
    
    <category term="auth" scheme="https://joouis.com/tags/auth/"/>
    
    <category term="msal" scheme="https://joouis.com/tags/msal/"/>
    
    <category term="microsoft-identity" scheme="https://joouis.com/tags/microsoft-identity/"/>
    
  </entry>
  
  <entry>
    <title>邂逅爵士乐——记在台湾的一段美好经历</title>
    <link href="https://joouis.com/2021/how-i-met-jazz/"/>
    <id>https://joouis.com/2021/how-i-met-jazz/</id>
    <published>2021-02-22T10:06:18.000Z</published>
    <updated>2021-06-22T12:53:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>各位新春快乐！</p><p>很早就想创建一个音乐分类，不如就在新年伊始开个头，碎碎念几句我是如何喜欢上爵士乐的。</p><span id="more"></span><p>大家可能在咖啡厅、欧美流行音乐中都或多或少听过一点爵士乐，但要说第一次正儿八经接触这种音乐形态，并让我深深爱上它，源自一场在我研究生入学没多久的爵士乐社招新演出。</p><p>那是2014年秋，成大爵士乐社在校园社团博览会上的表演。 露天舞台下所有人享受着美妙的音乐和社员分发的小杯鸡尾酒，炎炎夏日感受到无限清凉。 虽然这只是LG G2手持录制的片段，但每次看到这段回忆仍会被深深感动。说起来G2是最早搭载OIS光学防抖的手机，也是当时最窄边框的手机，我从那个时候开始就对手机拍照有较高的要求，淘了这么个韩国水货“洋垃圾”，现在回看当年拍的照片和视频也算能入眼，深感欣慰！</p><div style="position: relative; width: 100%; height: 0; padding-bottom: 80%;"><iframe src="//player.bilibili.com/player.html?aid=844279689&bvid=BV1154y1Y7ME&cid=301552198&page=1" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"> </iframe></div><p>没有任何迟疑，我立即报名参加了爵士乐社，在此期间参加了几次社内的培训活动，了解了爵士乐的一些基本概念，甚至那会就装上了iReal Pro，可惜荒废了这么多年！现在还能回想起，有一次大伙去一个社员家的天台烧烤，酒足饭饱，自然是jam时间，那种氛围真的是超级好。</p><p><img data-src="https://cdn.joouis.com/how-i-met-jazz-1.avif"></p><p>另一件非常值得分享和回忆的活动，便是在加入爵士乐社后没多久，地处花莲的东华大学音乐学院爵士组举办的<a href="https://music.ndhu.edu.tw/p/406-1072-79900,r3061.php">第二届爵士研习营</a>。报名费用非常便宜，三天时间人民币800块（新台币4000）包吃住，师资阵容也不错，不得不夸一句台湾的这些活动真的很良心。在收到成大爵士乐社的报名通知并跟研究生导师请好假后，我也毫不犹豫地报了名。不过去了后才知道，几乎没有我这种毫无基础的营员😥，除了少量玩得不错的爱好者外，大多数还是职业乐手和音乐系的学生。</p><p><img data-src="https://cdn.joouis.com/how-i-met-jazz-2.avif"></p><p>社团成员都是穷书生，大家为了省钱一大早坐六点多的台铁出发前往花莲，抵达花莲站时已经中午十二点多。</p><p><img data-src="https://cdn.joouis.com/how-i-met-jazz-3.avif"></p><p>一群人抵达东华大学后，立马前往音乐系报道并领取研习营的资料，包含时间表、一些简易的课件等。</p><p><img data-src="https://cdn.joouis.com/how-i-met-jazz-4.avif"></p><p><img data-src="https://cdn.joouis.com/how-i-met-jazz-5.avif"></p><p>当天晚上便开始研习营的课程，每节课后必会有jam，特别的嗨！</p><p><img data-src="https://cdn.joouis.com/how-i-met-jazz-6.avif"></p><p>东华大学是台湾最美的大学之一，同时是台湾最早开始在音乐系设立爵士主修的学校，其音乐系也是台湾唯一大学部跟硕士班同时有爵士演奏主修的音乐系。</p><p><img data-src="https://cdn.joouis.com/how-i-met-jazz-7.avif"></p><p>音乐系看起来很朴素，与大自然融为一体。</p><p><img data-src="https://cdn.joouis.com/how-i-met-jazz-8.avif"></p><p><img data-src="https://cdn.joouis.com/how-i-met-jazz-9.avif"></p><p><img data-src="https://cdn.joouis.com/how-i-met-jazz-10.avif"></p><p>爵士萨克斯风演奏家张坤德老师上课中，他毕业于伯克利音乐学院。这节课应该是研习营的第一次乐队齐奏课程，当所有声乐一同奏响的那一刻，我感受到了音乐现场的美妙与冲击力，那是在家里听音乐永远都体会不到的乐趣。</p><p><img data-src="https://cdn.joouis.com/how-i-met-jazz-11.avif"></p><p>那一届爵士研习营请来了美国的爵士电颤琴演奏家Tony Miceli，尽管我当时无法辨别他的技术有多牛，不过仍记得他的演奏音乐性很强，能打动我这么一个小白，简单说就是好听。在他的乐理课程上，他要求我们每个人根据和声弹点东西，轮到我时我说不会，他说不要紧，无论你弹什么，你至少要弹几个音符给我。更囧的是，我当时带的还是一把没拾音器的箱琴，和我的看客身份简直绝配😅。其实我是一个自尊心很强的人，在研习营第一天发现自己与环境格格不入后，就有过想走的念头。已经忘记当时是和哪位老师交流，他劝我先留下来跟着听听再说，真的感谢他的建议，我也做到了！</p><p><img data-src="https://cdn.joouis.com/how-i-met-jazz-12.avif"></p><p>傍晚黄昏，美到心醉。现在只能惋惜当初只去了两次花莲。</p><p><img data-src="https://cdn.joouis.com/how-i-met-jazz-13.avif"></p><p>午饭后的jam活动，研习营的一大好处就是为营员创造了大量演出机会，只要想表演就上。说起来虽然东华大学音乐系的爵士组一直没有爵士吉他教师，但研习营还是欢迎吉他手参加，并邀请来了曾给《中国好歌曲》《中国梦之声》、刘若英、蔡健雅、丁当等等节目和歌手巡演做过电吉他手的邱安炜老师，专门给我们上了一节分享课。课上的 Q&amp;A 环节我厚着脸皮问老师，对于我这种零基础的人该怎么学琴，老师非常详细地介绍了他学琴、练琴过程中不断检视自己的几个方面，当下就有不少顿悟。小炜老师当时拿了一把James Tyler的琴，那也是我第一次认识这个品牌。</p><p><img data-src="https://cdn.joouis.com/how-i-met-jazz-14.avif"></p><p>研习营非常有心，除了演奏家、职业乐手外，还请来了一位业内非常资深的音控师高敏福老师，给大家分享现场演出时的调音知识。</p><p><img data-src="https://cdn.joouis.com/how-i-met-jazz-15.avif"></p><p>除了常规的教学课程外，爵士研习营的举办人之一、音乐系爵士组的领头人魏广皓教授还与大家探讨了职业发展规划的话题。别说爵士乐这种“没市场的音乐”，就算从事流行大众音乐领域想赚到钱也不容易，未来的路该怎么走值得思考。</p><p><img data-src="https://cdn.joouis.com/how-i-met-jazz-16.avif"></p><p><img data-src="https://cdn.joouis.com/how-i-met-jazz-17.avif"></p><p>短暂而美好的爵士研习营结束后，我便回归课业将重心放在学业和项目，一晃就是五年。</p><p>感谢这段难得的经历，让我与爵士结缘。我会一直记得这些日子。</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;各位新春快乐！&lt;/p&gt;
&lt;p&gt;很早就想创建一个音乐分类，不如就在新年伊始开个头，碎碎念几句我是如何喜欢上爵士乐的。&lt;/p&gt;</summary>
    
    
    
    <category term="爱乐之城" scheme="https://joouis.com/categories/%E7%88%B1%E4%B9%90%E4%B9%8B%E5%9F%8E/"/>
    
    
    <category term="music" scheme="https://joouis.com/tags/music/"/>
    
    <category term="jazz" scheme="https://joouis.com/tags/jazz/"/>
    
    <category term="taiwan" scheme="https://joouis.com/tags/taiwan/"/>
    
    <category term="ncku" scheme="https://joouis.com/tags/ncku/"/>
    
    <category term="ndhu" scheme="https://joouis.com/tags/ndhu/"/>
    
  </entry>
  
  <entry>
    <title>2021 微软内推，已协助超过十余位候选人拿到 offer</title>
    <link href="https://joouis.com/2021/2021-referral-kickoff/"/>
    <id>https://joouis.com/2021/2021-referral-kickoff/</id>
    <published>2021-01-18T14:29:50.000Z</published>
    <updated>2021-01-18T14:29:50.000Z</updated>
    
    <content type="html"><![CDATA[<p>哈喽各位，2020年的时间仿佛被偷走了一样，一晃眼就来到了2021。</p><p>从2018年底第一次发帖为微软内推，现在已是第三个年头。在工作和生活之余进行这项活动，至今推成了三十多位候选人，对我来说是一件非常有成就感的事。每一批候选人入职后，请大家一起吃个饭、相互认识一下，偶尔也请HR同事一起顺道为新人们答疑解惑，这样的“网友”线下见面很有意思。公司尤其是苏州这边发展得速度也超乎想象，即将有一大批人搬到隔壁楼办公，而正式的二期大楼也已经开工。公司一直在持续发展、整体环境依然处于不错的水准，是我继续内推的动力。</p><p>回想过去大半年，其实我已经很少置顶自己的帖子去打广告，因为体验不好停掉了校招内推，这期间也陆续能看到其他同事的内推帖，甚至包括我内推进来的同事 LOL。不过还是能陆续收到一些咨询、请求内推的邮件，真的非常感谢大家对我的信任。我做内推的想法一直没变，真诚沟通，不骗简历，不歧视简历，尽量换位思考。</p><p>这里极简单的分享过去一年中的两个小故事。第一个也许有点老生常谈，一位职场经验不多的优秀候选人，同时拿到了两份大厂offer，很纠结，我从短期三五年职业发展的角度帮助他分析了两小时，给了他一些建议，即便这些建议可能让我拿不到内推奖金。第二个有点曲折，简而言之是候选人成功进来做了同事，工作很努力，但发展远不如预期，他自己过得也不是很开心。我们一年多的时间聊了好几次，我从一开始给一些工作效率、沟通效率的建议，到后面帮忙打听别组的机会，现在他开心地飞起，开始另一段业务挑战。</p><p>最后我也只是个普通的打工人，经验不多，个性耿直。不是所有找我内推的朋友我都帮推了，我内推的不少候选人最后也没通过所有面试，这太正常不过了。反正我就继续佛系内推，有缘多交流，最后来不来还是看候选人自身的实力和职业发展选择。</p><p>希望大家2021都能顺利，更重要的是，自己和家人身体健康！</p><span id="more"></span><br /><p>至于如何找我内推，附上以往的内推帖，里面会有答案：</p><ul><li><a href="https://joouis.com/recruit/">微软中国招聘，期待你的加入</a></li><li><a href="https://joouis.com/2019/a-thought-of-referral/">分享一下我的内推心得，顺便招人</a></li><li><a href="https://joouis.com/2020/2020-referral-kickoff/">2020 微软内推，已协助超过十余位候选人拿到 offer</a></li></ul>]]></content>
    
    
    <summary type="html">&lt;p&gt;哈喽各位，2020年的时间仿佛被偷走了一样，一晃眼就来到了2021。&lt;/p&gt;
&lt;p&gt;从2018年底第一次发帖为微软内推，现在已是第三个年头。在工作和生活之余进行这项活动，至今推成了三十多位候选人，对我来说是一件非常有成就感的事。每一批候选人入职后，请大家一起吃个饭、相互认识一下，偶尔也请HR同事一起顺道为新人们答疑解惑，这样的“网友”线下见面很有意思。公司尤其是苏州这边发展得速度也超乎想象，即将有一大批人搬到隔壁楼办公，而正式的二期大楼也已经开工。公司一直在持续发展、整体环境依然处于不错的水准，是我继续内推的动力。&lt;/p&gt;
&lt;p&gt;回想过去大半年，其实我已经很少置顶自己的帖子去打广告，因为体验不好停掉了校招内推，这期间也陆续能看到其他同事的内推帖，甚至包括我内推进来的同事 LOL。不过还是能陆续收到一些咨询、请求内推的邮件，真的非常感谢大家对我的信任。我做内推的想法一直没变，真诚沟通，不骗简历，不歧视简历，尽量换位思考。&lt;/p&gt;
&lt;p&gt;这里极简单的分享过去一年中的两个小故事。第一个也许有点老生常谈，一位职场经验不多的优秀候选人，同时拿到了两份大厂offer，很纠结，我从短期三五年职业发展的角度帮助他分析了两小时，给了他一些建议，即便这些建议可能让我拿不到内推奖金。第二个有点曲折，简而言之是候选人成功进来做了同事，工作很努力，但发展远不如预期，他自己过得也不是很开心。我们一年多的时间聊了好几次，我从一开始给一些工作效率、沟通效率的建议，到后面帮忙打听别组的机会，现在他开心地飞起，开始另一段业务挑战。&lt;/p&gt;
&lt;p&gt;最后我也只是个普通的打工人，经验不多，个性耿直。不是所有找我内推的朋友我都帮推了，我内推的不少候选人最后也没通过所有面试，这太正常不过了。反正我就继续佛系内推，有缘多交流，最后来不来还是看候选人自身的实力和职业发展选择。&lt;/p&gt;
&lt;p&gt;希望大家2021都能顺利，更重要的是，自己和家人身体健康！&lt;/p&gt;</summary>
    
    
    
    <category term="技术人生谈" scheme="https://joouis.com/categories/%E6%8A%80%E6%9C%AF%E4%BA%BA%E7%94%9F%E8%B0%88/"/>
    
    
    <category term="work" scheme="https://joouis.com/tags/work/"/>
    
    <category term="referral" scheme="https://joouis.com/tags/referral/"/>
    
    <category term="recruit" scheme="https://joouis.com/tags/recruit/"/>
    
    <category term="microsoft" scheme="https://joouis.com/tags/microsoft/"/>
    
    <category term="feedback" scheme="https://joouis.com/tags/feedback/"/>
    
    <category term="review" scheme="https://joouis.com/tags/review/"/>
    
  </entry>
  
  <entry>
    <title>Hands-on linear regression for machine learning</title>
    <link href="https://joouis.com/2020/hands-on-linear-regression-for-ml/"/>
    <id>https://joouis.com/2020/hands-on-linear-regression-for-ml/</id>
    <published>2020-11-24T02:58:35.000Z</published>
    <updated>2020-11-25T05:08:00.000Z</updated>
    
    <content type="html"><![CDATA[<h2 id="Goal"><a href="#Goal" class="headerlink" title="Goal"></a>Goal</h2><p>This is the sharing session for my team, the goal is to quick ramp up the essential knowledges for linear regression case to experience how machine learning works during 1 hour. This sharing will recap basic important concepts, introduce runtime environments, and go through the codes on Notebooks of Azure Machine Learning Studio platform.</p><span id="more"></span><h2 id="Recap-of-basic-concepts"><a href="#Recap-of-basic-concepts" class="headerlink" title="Recap of basic concepts"></a>Recap of basic concepts</h2><p><strong>Do not worry about these theories if you can’t catch up, just take it as an intro.</strong></p><h3 id="Steps-of-machine-learning"><a href="#Steps-of-machine-learning" class="headerlink" title="Steps of machine learning"></a>Steps of machine learning</h3><ol start="0"><li>Get familiar with dataset, do preprocessing works.</li><li>Define the model, like linear model or neural network.</li><li>Define the goodness/cost of model, metrics can be error, cross entropy, etc.</li><li>Calculate the best function by optimization algorithms.</li></ol><h3 id="Linear-model"><a href="#Linear-model" class="headerlink" title="Linear model"></a>Linear model</h3><p>Let’s start with the simplest linear model <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.566ex;" xmlns="http://www.w3.org/2000/svg" width="13.966ex" height="2.262ex" role="img" focusable="false" viewBox="0 -750 6173 1000"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D453" d="M118 -162Q120 -162 124 -164T135 -167T147 -168Q160 -168 171 -155T187 -126Q197 -99 221 27T267 267T289 382V385H242Q195 385 192 387Q188 390 188 397L195 425Q197 430 203 430T250 431Q298 431 298 432Q298 434 307 482T319 540Q356 705 465 705Q502 703 526 683T550 630Q550 594 529 578T487 561Q443 561 443 603Q443 622 454 636T478 657L487 662Q471 668 457 668Q445 668 434 658T419 630Q412 601 403 552T387 469T380 433Q380 431 435 431Q480 431 487 430T498 424Q499 420 496 407T491 391Q489 386 482 386T428 385H372L349 263Q301 15 282 -47Q255 -132 212 -173Q175 -205 139 -205Q107 -205 81 -186T55 -132Q55 -95 76 -78T118 -61Q162 -61 162 -103Q162 -122 151 -136T127 -157L118 -162Z"></path></g><g data-mml-node="mo" transform="translate(550,0)"><path data-c="28" d="M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"></path></g><g data-mml-node="mi" transform="translate(939,0)"><path data-c="1D465" d="M52 289Q59 331 106 386T222 442Q257 442 286 424T329 379Q371 442 430 442Q467 442 494 420T522 361Q522 332 508 314T481 292T458 288Q439 288 427 299T415 328Q415 374 465 391Q454 404 425 404Q412 404 406 402Q368 386 350 336Q290 115 290 78Q290 50 306 38T341 26Q378 26 414 59T463 140Q466 150 469 151T485 153H489Q504 153 504 145Q504 144 502 134Q486 77 440 33T333 -11Q263 -11 227 52Q186 -10 133 -10H127Q78 -10 57 16T35 71Q35 103 54 123T99 143Q142 143 142 101Q142 81 130 66T107 46T94 41L91 40Q91 39 97 36T113 29T132 26Q168 26 194 71Q203 87 217 139T245 247T261 313Q266 340 266 352Q266 380 251 392T217 404Q177 404 142 372T93 290Q91 281 88 280T72 278H58Q52 284 52 289Z"></path></g><g data-mml-node="mo" transform="translate(1511,0)"><path data-c="29" d="M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"></path></g><g data-mml-node="mo" transform="translate(2177.8,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mi" transform="translate(3233.6,0)"><path data-c="1D464" d="M580 385Q580 406 599 424T641 443Q659 443 674 425T690 368Q690 339 671 253Q656 197 644 161T609 80T554 12T482 -11Q438 -11 404 5T355 48Q354 47 352 44Q311 -11 252 -11Q226 -11 202 -5T155 14T118 53T104 116Q104 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Q21 293 29 315T52 366T96 418T161 441Q204 441 227 416T250 358Q250 340 217 250T184 111Q184 65 205 46T258 26Q301 26 334 87L339 96V119Q339 122 339 128T340 136T341 143T342 152T345 165T348 182T354 206T362 238T373 281Q402 395 406 404Q419 431 449 431Q468 431 475 421T483 402Q483 389 454 274T422 142Q420 131 420 107V100Q420 85 423 71T442 42T487 26Q558 26 600 148Q609 171 620 213T632 273Q632 306 619 325T593 357T580 385Z"></path></g><g data-mml-node="mi" transform="translate(3949.6,0)"><path data-c="1D465" d="M52 289Q59 331 106 386T222 442Q257 442 286 424T329 379Q371 442 430 442Q467 442 494 420T522 361Q522 332 508 314T481 292T458 288Q439 288 427 299T415 328Q415 374 465 391Q454 404 425 404Q412 404 406 402Q368 386 350 336Q290 115 290 78Q290 50 306 38T341 26Q378 26 414 59T463 140Q466 150 469 151T485 153H489Q504 153 504 145Q504 144 502 134Q486 77 440 33T333 -11Q263 -11 227 52Q186 -10 133 -10H127Q78 -10 57 16T35 71Q35 103 54 123T99 143Q142 143 142 101Q142 81 130 66T107 46T94 41L91 40Q91 39 97 36T113 29T132 26Q168 26 194 71Q203 87 217 139T245 247T261 313Q266 340 266 352Q266 380 251 392T217 404Q177 404 142 372T93 290Q91 281 88 280T72 278H58Q52 284 52 289Z"></path></g><g data-mml-node="mo" transform="translate(4743.8,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mi" transform="translate(5744,0)"><path data-c="1D44F" d="M73 647Q73 657 77 670T89 683Q90 683 161 688T234 694Q246 694 246 685T212 542Q204 508 195 472T180 418L176 399Q176 396 182 402Q231 442 283 442Q345 442 383 396T422 280Q422 169 343 79T173 -11Q123 -11 82 27T40 150V159Q40 180 48 217T97 414Q147 611 147 623T109 637Q104 637 101 637H96Q86 637 83 637T76 640T73 647ZM336 325V331Q336 405 275 405Q258 405 240 397T207 376T181 352T163 330L157 322L136 236Q114 150 114 114Q114 66 138 42Q154 26 178 26Q211 26 245 58Q270 81 285 114T318 219Q336 291 336 325Z"></path></g></g></g></svg></mjx-container>, you can also try more complex model if you get trouble in underfitting.</p><p><em>Question: How to initialize parameters?</em></p><h3 id="Generalization"><a href="#Generalization" class="headerlink" title="Generalization"></a>Generalization</h3><p>The model’s ability to adapt properly to new, previously unseen data, drawn from the same distribution as the one used to create the model.</p><p><img data-src="https://cdn.joouis.com/hands-on-linear-regression-for-ml-1.png" alt="Goodness of fit, https://bit.ly/2JhniSc"></p><ul><li>Underfitting: model is too simple to learn the underlying structure of the data (large bias)</li><li>Overfitting: model is too complex relative to the amount and noisiness of the training data (large variance)</li></ul><p><em>Solutions: <a href="#References-and-resources">References and resources</a>, or <a href="https://towardsdatascience.com/underfitting-and-overfitting-in-machine-learning-and-how-to-deal-with-it-6fe4a8a49dbf">Underfitting and Overfitting in machine learning and how to deal with it</a>.</em></p><h3 id="Loss-Cost-function"><a href="#Loss-Cost-function" class="headerlink" title="Loss/Cost function"></a>Loss/Cost function</h3><p>There is a dataset for training, it looks like: <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.566ex;" xmlns="http://www.w3.org/2000/svg" width="7.144ex" height="2.452ex" role="img" focusable="false" viewBox="0 -833.9 3157.8 1083.9"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mo"><path data-c="28" d="M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"></path></g><g data-mml-node="msup" transform="translate(389,0)"><g data-mml-node="mi"><path data-c="1D465" d="M52 289Q59 331 106 386T222 442Q257 442 286 424T329 379Q371 442 430 442Q467 442 494 420T522 361Q522 332 508 314T481 292T458 288Q439 288 427 299T415 328Q415 374 465 391Q454 404 425 404Q412 404 406 402Q368 386 350 336Q290 115 290 78Q290 50 306 38T341 26Q378 26 414 59T463 140Q466 150 469 151T485 153H489Q504 153 504 145Q504 144 502 134Q486 77 440 33T333 -11Q263 -11 227 52Q186 -10 133 -10H127Q78 -10 57 16T35 71Q35 103 54 123T99 143Q142 143 142 101Q142 81 130 66T107 46T94 41L91 40Q91 39 97 36T113 29T132 26Q168 26 194 71Q203 87 217 139T245 247T261 313Q266 340 266 352Q266 380 251 392T217 404Q177 404 142 372T93 290Q91 281 88 280T72 278H58Q52 284 52 289Z"></path></g><g data-mml-node="mn" transform="translate(605,363) scale(0.707)"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path></g></g><g data-mml-node="mo" transform="translate(1397.6,0)"><path data-c="2C" d="M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"></path></g><g data-mml-node="msup" transform="translate(1842.2,0)"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mover"><g data-mml-node="mi"><path data-c="1D466" d="M21 287Q21 301 36 335T84 406T158 442Q199 442 224 419T250 355Q248 336 247 334Q247 331 231 288T198 191T182 105Q182 62 196 45T238 27Q261 27 281 38T312 61T339 94Q339 95 344 114T358 173T377 247Q415 397 419 404Q432 431 462 431Q475 431 483 424T494 412T496 403Q496 390 447 193T391 -23Q363 -106 294 -155T156 -205Q111 -205 77 -183T43 -117Q43 -95 50 -80T69 -58T89 -48T106 -45Q150 -45 150 -87Q150 -107 138 -122T115 -142T102 -147L99 -148Q101 -153 118 -160T152 -167H160Q177 -167 186 -165Q219 -156 247 -127T290 -65T313 -9T321 21L315 17Q309 13 296 6T270 -6Q250 -11 231 -11Q185 -11 150 11T104 82Q103 89 103 113Q103 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Z"></path></g><g data-mml-node="mo" transform="translate(300.6,16) translate(-250 0)"><path data-c="5E" d="M112 560L249 694L257 686Q387 562 387 560L361 531Q359 532 303 581L250 627L195 580Q182 569 169 557T148 538L140 532Q138 530 125 546L112 560Z"></path></g></g></g><g data-mml-node="mn" transform="translate(523,363) scale(0.707)"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path></g></g><g data-mml-node="mo" transform="translate(2768.8,0)"><path data-c="29" d="M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"></path></g></g></g></svg></mjx-container>, <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.566ex;" xmlns="http://www.w3.org/2000/svg" width="7.144ex" height="2.452ex" role="img" focusable="false" viewBox="0 -833.9 3157.8 1083.9"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mo"><path data-c="28" d="M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"></path></g><g data-mml-node="msup" transform="translate(389,0)"><g data-mml-node="mi"><path data-c="1D465" d="M52 289Q59 331 106 386T222 442Q257 442 286 424T329 379Q371 442 430 442Q467 442 494 420T522 361Q522 332 508 314T481 292T458 288Q439 288 427 299T415 328Q415 374 465 391Q454 404 425 404Q412 404 406 402Q368 386 350 336Q290 115 290 78Q290 50 306 38T341 26Q378 26 414 59T463 140Q466 150 469 151T485 153H489Q504 153 504 145Q504 144 502 134Q486 77 440 33T333 -11Q263 -11 227 52Q186 -10 133 -10H127Q78 -10 57 16T35 71Q35 103 54 123T99 143Q142 143 142 101Q142 81 130 66T107 46T94 41L91 40Q91 39 97 36T113 29T132 26Q168 26 194 71Q203 87 217 139T245 247T261 313Q266 340 266 352Q266 380 251 392T217 404Q177 404 142 372T93 290Q91 281 88 280T72 278H58Q52 284 52 289Z"></path></g><g data-mml-node="mn" transform="translate(605,363) scale(0.707)"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g></g><g data-mml-node="mo" transform="translate(1397.6,0)"><path data-c="2C" d="M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"></path></g><g data-mml-node="msup" transform="translate(1842.2,0)"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mover"><g data-mml-node="mi"><path data-c="1D466" d="M21 287Q21 301 36 335T84 406T158 442Q199 442 224 419T250 355Q248 336 247 334Q247 331 231 288T198 191T182 105Q182 62 196 45T238 27Q261 27 281 38T312 61T339 94Q339 95 344 114T358 173T377 247Q415 397 419 404Q432 431 462 431Q475 431 483 424T494 412T496 403Q496 390 447 193T391 -23Q363 -106 294 -155T156 -205Q111 -205 77 -183T43 -117Q43 -95 50 -80T69 -58T89 -48T106 -45Q150 -45 150 -87Q150 -107 138 -122T115 -142T102 -147L99 -148Q101 -153 118 -160T152 -167H160Q177 -167 186 -165Q219 -156 247 -127T290 -65T313 -9T321 21L315 17Q309 13 296 6T270 -6Q250 -11 231 -11Q185 -11 150 11T104 82Q103 89 103 113Q103 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Z"></path></g><g data-mml-node="mo" transform="translate(300.6,16) translate(-250 0)"><path data-c="5E" d="M112 560L249 694L257 686Q387 562 387 560L361 531Q359 532 303 581L250 627L195 580Q182 569 169 557T148 538L140 532Q138 530 125 546L112 560Z"></path></g></g></g><g data-mml-node="mn" transform="translate(523,363) scale(0.707)"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g></g><g data-mml-node="mo" transform="translate(2768.8,0)"><path data-c="29" d="M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"></path></g></g></g></svg></mjx-container>, …, <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.566ex;" xmlns="http://www.w3.org/2000/svg" width="7.464ex" height="2.398ex" role="img" focusable="false" viewBox="0 -810 3299.2 1060"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mo"><path data-c="28" d="M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"></path></g><g data-mml-node="msup" transform="translate(389,0)"><g data-mml-node="mi"><path data-c="1D465" d="M52 289Q59 331 106 386T222 442Q257 442 286 424T329 379Q371 442 430 442Q467 442 494 420T522 361Q522 332 508 314T481 292T458 288Q439 288 427 299T415 328Q415 374 465 391Q454 404 425 404Q412 404 406 402Q368 386 350 336Q290 115 290 78Q290 50 306 38T341 26Q378 26 414 59T463 140Q466 150 469 151T485 153H489Q504 153 504 145Q504 144 502 134Q486 77 440 33T333 -11Q263 -11 227 52Q186 -10 133 -10H127Q78 -10 57 16T35 71Q35 103 54 123T99 143Q142 143 142 101Q142 81 130 66T107 46T94 41L91 40Q91 39 97 36T113 29T132 26Q168 26 194 71Q203 87 217 139T245 247T261 313Q266 340 266 352Q266 380 251 392T217 404Q177 404 142 372T93 290Q91 281 88 280T72 278H58Q52 284 52 289Z"></path></g><g data-mml-node="mi" transform="translate(605,363) scale(0.707)"><path data-c="1D45B" d="M21 287Q22 293 24 303T36 341T56 388T89 425T135 442Q171 442 195 424T225 390T231 369Q231 367 232 367L243 378Q304 442 382 442Q436 442 469 415T503 336T465 179T427 52Q427 26 444 26Q450 26 453 27Q482 32 505 65T540 145Q542 153 560 153Q580 153 580 145Q580 144 576 130Q568 101 554 73T508 17T439 -10Q392 -10 371 17T350 73Q350 92 386 193T423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 112 180T152 343Q153 348 153 366Q153 405 129 405Q91 405 66 305Q60 285 60 284Q58 278 41 278H27Q21 284 21 287Z"></path></g></g><g data-mml-node="mo" transform="translate(1468.3,0)"><path data-c="2C" d="M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"></path></g><g data-mml-node="msup" transform="translate(1912.9,0)"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mover"><g data-mml-node="mi"><path data-c="1D466" d="M21 287Q21 301 36 335T84 406T158 442Q199 442 224 419T250 355Q248 336 247 334Q247 331 231 288T198 191T182 105Q182 62 196 45T238 27Q261 27 281 38T312 61T339 94Q339 95 344 114T358 173T377 247Q415 397 419 404Q432 431 462 431Q475 431 483 424T494 412T496 403Q496 390 447 193T391 -23Q363 -106 294 -155T156 -205Q111 -205 77 -183T43 -117Q43 -95 50 -80T69 -58T89 -48T106 -45Q150 -45 150 -87Q150 -107 138 -122T115 -142T102 -147L99 -148Q101 -153 118 -160T152 -167H160Q177 -167 186 -165Q219 -156 247 -127T290 -65T313 -9T321 21L315 17Q309 13 296 6T270 -6Q250 -11 231 -11Q185 -11 150 11T104 82Q103 89 103 113Q103 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Z"></path></g><g data-mml-node="mo" transform="translate(300.6,16) translate(-250 0)"><path data-c="5E" d="M112 560L249 694L257 686Q387 562 387 560L361 531Q359 532 303 581L250 627L195 580Q182 569 169 557T148 538L140 532Q138 530 125 546L112 560Z"></path></g></g></g><g data-mml-node="mi" transform="translate(523,363) scale(0.707)"><path data-c="1D45B" d="M21 287Q22 293 24 303T36 341T56 388T89 425T135 442Q171 442 195 424T225 390T231 369Q231 367 232 367L243 378Q304 442 382 442Q436 442 469 415T503 336T465 179T427 52Q427 26 444 26Q450 26 453 27Q482 32 505 65T540 145Q542 153 560 153Q580 153 580 145Q580 144 576 130Q568 101 554 73T508 17T439 -10Q392 -10 371 17T350 73Q350 92 386 193T423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 112 180T152 343Q153 348 153 366Q153 405 129 405Q91 405 66 305Q60 285 60 284Q58 278 41 278H27Q21 284 21 287Z"></path></g></g><g data-mml-node="mo" transform="translate(2910.2,0)"><path data-c="29" d="M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"></path></g></g></g></svg></mjx-container>. The error of <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.025ex;" xmlns="http://www.w3.org/2000/svg" width="2.034ex" height="1.904ex" role="img" focusable="false" viewBox="0 -830.4 899 841.4"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="msup"><g data-mml-node="mi"><path data-c="1D465" d="M52 289Q59 331 106 386T222 442Q257 442 286 424T329 379Q371 442 430 442Q467 442 494 420T522 361Q522 332 508 314T481 292T458 288Q439 288 427 299T415 328Q415 374 465 391Q454 404 425 404Q412 404 406 402Q368 386 350 336Q290 115 290 78Q290 50 306 38T341 26Q378 26 414 59T463 140Q466 150 469 151T485 153H489Q504 153 504 145Q504 144 502 134Q486 77 440 33T333 -11Q263 -11 227 52Q186 -10 133 -10H127Q78 -10 57 16T35 71Q35 103 54 123T99 143Q142 143 142 101Q142 81 130 66T107 46T94 41L91 40Q91 39 97 36T113 29T132 26Q168 26 194 71Q203 87 217 139T245 247T261 313Q266 340 266 352Q266 380 251 392T217 404Q177 404 142 372T93 290Q91 281 88 280T72 278H58Q52 284 52 289Z"></path></g><g data-mml-node="mi" transform="translate(605,363) scale(0.707)"><path data-c="1D456" d="M184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Z"></path></g></g></g></g></svg></mjx-container> should be <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.566ex;" xmlns="http://www.w3.org/2000/svg" width="9.652ex" height="2.444ex" role="img" focusable="false" viewBox="0 -830.4 4266.3 1080.4"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="msup"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mover"><g data-mml-node="mi"><path data-c="1D466" d="M21 287Q21 301 36 335T84 406T158 442Q199 442 224 419T250 355Q248 336 247 334Q247 331 231 288T198 191T182 105Q182 62 196 45T238 27Q261 27 281 38T312 61T339 94Q339 95 344 114T358 173T377 247Q415 397 419 404Q432 431 462 431Q475 431 483 424T494 412T496 403Q496 390 447 193T391 -23Q363 -106 294 -155T156 -205Q111 -205 77 -183T43 -117Q43 -95 50 -80T69 -58T89 -48T106 -45Q150 -45 150 -87Q150 -107 138 -122T115 -142T102 -147L99 -148Q101 -153 118 -160T152 -167H160Q177 -167 186 -165Q219 -156 247 -127T290 -65T313 -9T321 21L315 17Q309 13 296 6T270 -6Q250 -11 231 -11Q185 -11 150 11T104 82Q103 89 103 113Q103 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Z"></path></g><g data-mml-node="mo" transform="translate(300.6,16) translate(-250 0)"><path data-c="5E" d="M112 560L249 694L257 686Q387 562 387 560L361 531Q359 532 303 581L250 627L195 580Q182 569 169 557T148 538L140 532Q138 530 125 546L112 560Z"></path></g></g></g><g data-mml-node="mi" transform="translate(523,363) scale(0.707)"><path data-c="1D456" d="M184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Z"></path></g></g><g data-mml-node="mo" transform="translate(1039.2,0)"><path data-c="2212" d="M84 237T84 250T98 270H679Q694 262 694 250T679 230H98Q84 237 84 250Z"></path></g><g data-mml-node="mi" transform="translate(2039.4,0)"><path data-c="1D453" d="M118 -162Q120 -162 124 -164T135 -167T147 -168Q160 -168 171 -155T187 -126Q197 -99 221 27T267 267T289 382V385H242Q195 385 192 387Q188 390 188 397L195 425Q197 430 203 430T250 431Q298 431 298 432Q298 434 307 482T319 540Q356 705 465 705Q502 703 526 683T550 630Q550 594 529 578T487 561Q443 561 443 603Q443 622 454 636T478 657L487 662Q471 668 457 668Q445 668 434 658T419 630Q412 601 403 552T387 469T380 433Q380 431 435 431Q480 431 487 430T498 424Q499 420 496 407T491 391Q489 386 482 386T428 385H372L349 263Q301 15 282 -47Q255 -132 212 -173Q175 -205 139 -205Q107 -205 81 -186T55 -132Q55 -95 76 -78T118 -61Q162 -61 162 -103Q162 -122 151 -136T127 -157L118 -162Z"></path></g><g data-mml-node="mo" transform="translate(2589.4,0)"><path data-c="28" d="M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"></path></g><g data-mml-node="mi" transform="translate(2978.4,0)"><path data-c="1D465" d="M52 289Q59 331 106 386T222 442Q257 442 286 424T329 379Q371 442 430 442Q467 442 494 420T522 361Q522 332 508 314T481 292T458 288Q439 288 427 299T415 328Q415 374 465 391Q454 404 425 404Q412 404 406 402Q368 386 350 336Q290 115 290 78Q290 50 306 38T341 26Q378 26 414 59T463 140Q466 150 469 151T485 153H489Q504 153 504 145Q504 144 502 134Q486 77 440 33T333 -11Q263 -11 227 52Q186 -10 133 -10H127Q78 -10 57 16T35 71Q35 103 54 123T99 143Q142 143 142 101Q142 81 130 66T107 46T94 41L91 40Q91 39 97 36T113 29T132 26Q168 26 194 71Q203 87 217 139T245 247T261 313Q266 340 266 352Q266 380 251 392T217 404Q177 404 142 372T93 290Q91 281 88 280T72 278H58Q52 284 52 289Z"></path></g><g data-mml-node="msup" transform="translate(3550.4,0)"><g data-mml-node="mo"><path data-c="29" d="M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"></path></g><g data-mml-node="mi" transform="translate(422,363) scale(0.707)"><path data-c="1D456" d="M184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Z"></path></g></g></g></g></svg></mjx-container>, we can add all errors of data to define our loss function:</p><p><mjx-container class="MathJax" jax="SVG" display="true"><svg style="vertical-align: -2.819ex;" xmlns="http://www.w3.org/2000/svg" width="23.23ex" height="6.354ex" role="img" focusable="false" viewBox="0 -1562.5 10267.5 2808.5"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D43F" d="M228 637Q194 637 192 641Q191 643 191 649Q191 673 202 682Q204 683 217 683Q271 680 344 680Q485 680 506 683H518Q524 677 524 674T522 656Q517 641 513 637H475Q406 636 394 628Q387 624 380 600T313 336Q297 271 279 198T252 88L243 52Q243 48 252 48T311 46H328Q360 46 379 47T428 54T478 72T522 106T564 161Q580 191 594 228T611 270Q616 273 628 273H641Q647 264 647 262T627 203T583 83T557 9Q555 4 553 3T537 0T494 -1Q483 -1 418 -1T294 0H116Q32 0 32 10Q32 17 34 24Q39 43 44 45Q48 46 59 46H65Q92 46 125 49Q139 52 144 61Q147 65 216 339T285 628Q285 635 228 637Z"></path></g><g data-mml-node="mo" transform="translate(681,0)"><path data-c="28" d="M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"></path></g><g data-mml-node="mi" transform="translate(1070,0)"><path data-c="1D453" d="M118 -162Q120 -162 124 -164T135 -167T147 -168Q160 -168 171 -155T187 -126Q197 -99 221 27T267 267T289 382V385H242Q195 385 192 387Q188 390 188 397L195 425Q197 430 203 430T250 431Q298 431 298 432Q298 434 307 482T319 540Q356 705 465 705Q502 703 526 683T550 630Q550 594 529 578T487 561Q443 561 443 603Q443 622 454 636T478 657L487 662Q471 668 457 668Q445 668 434 658T419 630Q412 601 403 552T387 469T380 433Q380 431 435 431Q480 431 487 430T498 424Q499 420 496 407T491 391Q489 386 482 386T428 385H372L349 263Q301 15 282 -47Q255 -132 212 -173Q175 -205 139 -205Q107 -205 81 -186T55 -132Q55 -95 76 -78T118 -61Q162 -61 162 -103Q162 -122 151 -136T127 -157L118 -162Z"></path></g><g data-mml-node="mo" transform="translate(1620,0)"><path data-c="29" d="M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"></path></g><g data-mml-node="mo" transform="translate(2286.8,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="munderover" transform="translate(3342.6,0)"><g data-mml-node="mo"><path data-c="2211" d="M60 948Q63 950 665 950H1267L1325 815Q1384 677 1388 669H1348L1341 683Q1320 724 1285 761Q1235 809 1174 838T1033 881T882 898T699 902H574H543H251L259 891Q722 258 724 252Q725 250 724 246Q721 243 460 -56L196 -356Q196 -357 407 -357Q459 -357 548 -357T676 -358Q812 -358 896 -353T1063 -332T1204 -283T1307 -196Q1328 -170 1348 -124H1388Q1388 -125 1381 -145T1356 -210T1325 -294L1267 -449L666 -450Q64 -450 61 -448Q55 -446 55 -439Q55 -437 57 -433L590 177Q590 178 557 222T452 366T322 544L56 909L55 924Q55 945 60 948Z"></path></g><g data-mml-node="TeXAtom" transform="translate(148.2,-1087.9) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="1D456" d="M184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Z"></path></g><g data-mml-node="mo" transform="translate(345,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mn" transform="translate(1123,0)"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path></g></g><g data-mml-node="TeXAtom" transform="translate(509.9,1150) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="1D45B" d="M21 287Q22 293 24 303T36 341T56 388T89 425T135 442Q171 442 195 424T225 390T231 369Q231 367 232 367L243 378Q304 442 382 442Q436 442 469 415T503 336T465 179T427 52Q427 26 444 26Q450 26 453 27Q482 32 505 65T540 145Q542 153 560 153Q580 153 580 145Q580 144 576 130Q568 101 554 73T508 17T439 -10Q392 -10 371 17T350 73Q350 92 386 193T423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 112 180T152 343Q153 348 153 366Q153 405 129 405Q91 405 66 305Q60 285 60 284Q58 278 41 278H27Q21 284 21 287Z"></path></g></g></g><g data-mml-node="mo" transform="translate(4786.6,0)"><path data-c="28" d="M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"></path></g><g data-mml-node="msup" transform="translate(5175.6,0)"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mover"><g data-mml-node="mi"><path data-c="1D466" d="M21 287Q21 301 36 335T84 406T158 442Q199 442 224 419T250 355Q248 336 247 334Q247 331 231 288T198 191T182 105Q182 62 196 45T238 27Q261 27 281 38T312 61T339 94Q339 95 344 114T358 173T377 247Q415 397 419 404Q432 431 462 431Q475 431 483 424T494 412T496 403Q496 390 447 193T391 -23Q363 -106 294 -155T156 -205Q111 -205 77 -183T43 -117Q43 -95 50 -80T69 -58T89 -48T106 -45Q150 -45 150 -87Q150 -107 138 -122T115 -142T102 -147L99 -148Q101 -153 118 -160T152 -167H160Q177 -167 186 -165Q219 -156 247 -127T290 -65T313 -9T321 21L315 17Q309 13 296 6T270 -6Q250 -11 231 -11Q185 -11 150 11T104 82Q103 89 103 113Q103 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Z"></path></g><g data-mml-node="mo" transform="translate(300.6,16) translate(-250 0)"><path data-c="5E" d="M112 560L249 694L257 686Q387 562 387 560L361 531Q359 532 303 581L250 627L195 580Q182 569 169 557T148 538L140 532Q138 530 125 546L112 560Z"></path></g></g></g><g data-mml-node="mi" transform="translate(523,413) scale(0.707)"><path data-c="1D456" d="M184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Z"></path></g></g><g data-mml-node="mo" transform="translate(6214.7,0)"><path data-c="2212" d="M84 237T84 250T98 270H679Q694 262 694 250T679 230H98Q84 237 84 250Z"></path></g><g data-mml-node="mi" transform="translate(7215,0)"><path data-c="1D453" d="M118 -162Q120 -162 124 -164T135 -167T147 -168Q160 -168 171 -155T187 -126Q197 -99 221 27T267 267T289 382V385H242Q195 385 192 387Q188 390 188 397L195 425Q197 430 203 430T250 431Q298 431 298 432Q298 434 307 482T319 540Q356 705 465 705Q502 703 526 683T550 630Q550 594 529 578T487 561Q443 561 443 603Q443 622 454 636T478 657L487 662Q471 668 457 668Q445 668 434 658T419 630Q412 601 403 552T387 469T380 433Q380 431 435 431Q480 431 487 430T498 424Q499 420 496 407T491 391Q489 386 482 386T428 385H372L349 263Q301 15 282 -47Q255 -132 212 -173Q175 -205 139 -205Q107 -205 81 -186T55 -132Q55 -95 76 -78T118 -61Q162 -61 162 -103Q162 -122 151 -136T127 -157L118 -162Z"></path></g><g data-mml-node="mo" transform="translate(7765,0)"><path data-c="28" d="M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"></path></g><g data-mml-node="msup" transform="translate(8154,0)"><g data-mml-node="mi"><path data-c="1D465" d="M52 289Q59 331 106 386T222 442Q257 442 286 424T329 379Q371 442 430 442Q467 442 494 420T522 361Q522 332 508 314T481 292T458 288Q439 288 427 299T415 328Q415 374 465 391Q454 404 425 404Q412 404 406 402Q368 386 350 336Q290 115 290 78Q290 50 306 38T341 26Q378 26 414 59T463 140Q466 150 469 151T485 153H489Q504 153 504 145Q504 144 502 134Q486 77 440 33T333 -11Q263 -11 227 52Q186 -10 133 -10H127Q78 -10 57 16T35 71Q35 103 54 123T99 143Q142 143 142 101Q142 81 130 66T107 46T94 41L91 40Q91 39 97 36T113 29T132 26Q168 26 194 71Q203 87 217 139T245 247T261 313Q266 340 266 352Q266 380 251 392T217 404Q177 404 142 372T93 290Q91 281 88 280T72 278H58Q52 284 52 289Z"></path></g><g data-mml-node="mi" transform="translate(605,413) scale(0.707)"><path data-c="1D456" d="M184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Z"></path></g></g><g data-mml-node="mo" transform="translate(9052.9,0)"><path data-c="29" d="M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"></path></g><g data-mml-node="msup" transform="translate(9441.9,0)"><g data-mml-node="mo"><path data-c="29" d="M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"></path></g><g data-mml-node="mn" transform="translate(422,413) scale(0.707)"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g></g></g></g></svg></mjx-container></p><p><mjx-container class="MathJax" jax="SVG" display="true"><svg style="vertical-align: -2.819ex;" xmlns="http://www.w3.org/2000/svg" width="29.694ex" height="6.354ex" role="img" focusable="false" viewBox="0 -1562.5 13124.6 2808.5"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D43F" d="M228 637Q194 637 192 641Q191 643 191 649Q191 673 202 682Q204 683 217 683Q271 680 344 680Q485 680 506 683H518Q524 677 524 674T522 656Q517 641 513 637H475Q406 636 394 628Q387 624 380 600T313 336Q297 271 279 198T252 88L243 52Q243 48 252 48T311 46H328Q360 46 379 47T428 54T478 72T522 106T564 161Q580 191 594 228T611 270Q616 273 628 273H641Q647 264 647 262T627 203T583 83T557 9Q555 4 553 3T537 0T494 -1Q483 -1 418 -1T294 0H116Q32 0 32 10Q32 17 34 24Q39 43 44 45Q48 46 59 46H65Q92 46 125 49Q139 52 144 61Q147 65 216 339T285 628Q285 635 228 637Z"></path></g><g data-mml-node="mo" transform="translate(681,0)"><path data-c="28" d="M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"></path></g><g data-mml-node="mi" transform="translate(1070,0)"><path data-c="1D464" d="M580 385Q580 406 599 424T641 443Q659 443 674 425T690 368Q690 339 671 253Q656 197 644 161T609 80T554 12T482 -11Q438 -11 404 5T355 48Q354 47 352 44Q311 -11 252 -11Q226 -11 202 -5T155 14T118 53T104 116Q104 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Q21 293 29 315T52 366T96 418T161 441Q204 441 227 416T250 358Q250 340 217 250T184 111Q184 65 205 46T258 26Q301 26 334 87L339 96V119Q339 122 339 128T340 136T341 143T342 152T345 165T348 182T354 206T362 238T373 281Q402 395 406 404Q419 431 449 431Q468 431 475 421T483 402Q483 389 454 274T422 142Q420 131 420 107V100Q420 85 423 71T442 42T487 26Q558 26 600 148Q609 171 620 213T632 273Q632 306 619 325T593 357T580 385Z"></path></g><g data-mml-node="mo" transform="translate(1786,0)"><path data-c="2C" d="M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"></path></g><g data-mml-node="mi" transform="translate(2230.7,0)"><path data-c="1D44F" d="M73 647Q73 657 77 670T89 683Q90 683 161 688T234 694Q246 694 246 685T212 542Q204 508 195 472T180 418L176 399Q176 396 182 402Q231 442 283 442Q345 442 383 396T422 280Q422 169 343 79T173 -11Q123 -11 82 27T40 150V159Q40 180 48 217T97 414Q147 611 147 623T109 637Q104 637 101 637H96Q86 637 83 637T76 640T73 647ZM336 325V331Q336 405 275 405Q258 405 240 397T207 376T181 352T163 330L157 322L136 236Q114 150 114 114Q114 66 138 42Q154 26 178 26Q211 26 245 58Q270 81 285 114T318 219Q336 291 336 325Z"></path></g><g data-mml-node="mo" transform="translate(2659.7,0)"><path data-c="29" d="M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"></path></g><g data-mml-node="mo" transform="translate(3326.4,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="munderover" transform="translate(4382.2,0)"><g data-mml-node="mo"><path data-c="2211" d="M60 948Q63 950 665 950H1267L1325 815Q1384 677 1388 669H1348L1341 683Q1320 724 1285 761Q1235 809 1174 838T1033 881T882 898T699 902H574H543H251L259 891Q722 258 724 252Q725 250 724 246Q721 243 460 -56L196 -356Q196 -357 407 -357Q459 -357 548 -357T676 -358Q812 -358 896 -353T1063 -332T1204 -283T1307 -196Q1328 -170 1348 -124H1388Q1388 -125 1381 -145T1356 -210T1325 -294L1267 -449L666 -450Q64 -450 61 -448Q55 -446 55 -439Q55 -437 57 -433L590 177Q590 178 557 222T452 366T322 544L56 909L55 924Q55 945 60 948Z"></path></g><g data-mml-node="TeXAtom" transform="translate(148.2,-1087.9) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="1D456" d="M184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Z"></path></g><g data-mml-node="mo" transform="translate(345,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mn" transform="translate(1123,0)"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path></g></g><g data-mml-node="TeXAtom" transform="translate(509.9,1150) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="1D45B" d="M21 287Q22 293 24 303T36 341T56 388T89 425T135 442Q171 442 195 424T225 390T231 369Q231 367 232 367L243 378Q304 442 382 442Q436 442 469 415T503 336T465 179T427 52Q427 26 444 26Q450 26 453 27Q482 32 505 65T540 145Q542 153 560 153Q580 153 580 145Q580 144 576 130Q568 101 554 73T508 17T439 -10Q392 -10 371 17T350 73Q350 92 386 193T423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 112 180T152 343Q153 348 153 366Q153 405 129 405Q91 405 66 305Q60 285 60 284Q58 278 41 278H27Q21 284 21 287Z"></path></g></g></g><g data-mml-node="mo" transform="translate(5826.2,0)"><path data-c="28" d="M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"></path></g><g data-mml-node="msup" transform="translate(6215.2,0)"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mover"><g data-mml-node="mi"><path data-c="1D466" d="M21 287Q21 301 36 335T84 406T158 442Q199 442 224 419T250 355Q248 336 247 334Q247 331 231 288T198 191T182 105Q182 62 196 45T238 27Q261 27 281 38T312 61T339 94Q339 95 344 114T358 173T377 247Q415 397 419 404Q432 431 462 431Q475 431 483 424T494 412T496 403Q496 390 447 193T391 -23Q363 -106 294 -155T156 -205Q111 -205 77 -183T43 -117Q43 -95 50 -80T69 -58T89 -48T106 -45Q150 -45 150 -87Q150 -107 138 -122T115 -142T102 -147L99 -148Q101 -153 118 -160T152 -167H160Q177 -167 186 -165Q219 -156 247 -127T290 -65T313 -9T321 21L315 17Q309 13 296 6T270 -6Q250 -11 231 -11Q185 -11 150 11T104 82Q103 89 103 113Q103 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Z"></path></g><g data-mml-node="mo" transform="translate(300.6,16) translate(-250 0)"><path data-c="5E" d="M112 560L249 694L257 686Q387 562 387 560L361 531Q359 532 303 581L250 627L195 580Q182 569 169 557T148 538L140 532Q138 530 125 546L112 560Z"></path></g></g></g><g data-mml-node="mi" transform="translate(523,413) scale(0.707)"><path data-c="1D456" d="M184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Z"></path></g></g><g data-mml-node="mo" transform="translate(7254.4,0)"><path data-c="2212" d="M84 237T84 250T98 270H679Q694 262 694 250T679 230H98Q84 237 84 250Z"></path></g><g data-mml-node="mo" transform="translate(8254.6,0)"><path data-c="28" d="M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"></path></g><g data-mml-node="mi" transform="translate(8643.6,0)"><path data-c="1D464" d="M580 385Q580 406 599 424T641 443Q659 443 674 425T690 368Q690 339 671 253Q656 197 644 161T609 80T554 12T482 -11Q438 -11 404 5T355 48Q354 47 352 44Q311 -11 252 -11Q226 -11 202 -5T155 14T118 53T104 116Q104 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Q21 293 29 315T52 366T96 418T161 441Q204 441 227 416T250 358Q250 340 217 250T184 111Q184 65 205 46T258 26Q301 26 334 87L339 96V119Q339 122 339 128T340 136T341 143T342 152T345 165T348 182T354 206T362 238T373 281Q402 395 406 404Q419 431 449 431Q468 431 475 421T483 402Q483 389 454 274T422 142Q420 131 420 107V100Q420 85 423 71T442 42T487 26Q558 26 600 148Q609 171 620 213T632 273Q632 306 619 325T593 357T580 385Z"></path></g><g data-mml-node="msup" transform="translate(9359.6,0)"><g data-mml-node="mi"><path data-c="1D465" d="M52 289Q59 331 106 386T222 442Q257 442 286 424T329 379Q371 442 430 442Q467 442 494 420T522 361Q522 332 508 314T481 292T458 288Q439 288 427 299T415 328Q415 374 465 391Q454 404 425 404Q412 404 406 402Q368 386 350 336Q290 115 290 78Q290 50 306 38T341 26Q378 26 414 59T463 140Q466 150 469 151T485 153H489Q504 153 504 145Q504 144 502 134Q486 77 440 33T333 -11Q263 -11 227 52Q186 -10 133 -10H127Q78 -10 57 16T35 71Q35 103 54 123T99 143Q142 143 142 101Q142 81 130 66T107 46T94 41L91 40Q91 39 97 36T113 29T132 26Q168 26 194 71Q203 87 217 139T245 247T261 313Q266 340 266 352Q266 380 251 392T217 404Q177 404 142 372T93 290Q91 281 88 280T72 278H58Q52 284 52 289Z"></path></g><g data-mml-node="mi" transform="translate(605,413) scale(0.707)"><path data-c="1D456" d="M184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Z"></path></g></g><g data-mml-node="mo" transform="translate(10480.8,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mi" transform="translate(11481,0)"><path data-c="1D44F" d="M73 647Q73 657 77 670T89 683Q90 683 161 688T234 694Q246 694 246 685T212 542Q204 508 195 472T180 418L176 399Q176 396 182 402Q231 442 283 442Q345 442 383 396T422 280Q422 169 343 79T173 -11Q123 -11 82 27T40 150V159Q40 180 48 217T97 414Q147 611 147 623T109 637Q104 637 101 637H96Q86 637 83 637T76 640T73 647ZM336 325V331Q336 405 275 405Q258 405 240 397T207 376T181 352T163 330L157 322L136 236Q114 150 114 114Q114 66 138 42Q154 26 178 26Q211 26 245 58Q270 81 285 114T318 219Q336 291 336 325Z"></path></g><g data-mml-node="mo" transform="translate(11910,0)"><path data-c="29" d="M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"></path></g><g data-mml-node="msup" transform="translate(12299,0)"><g data-mml-node="mo"><path data-c="29" d="M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"></path></g><g data-mml-node="mn" transform="translate(422,413) scale(0.707)"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g></g></g></g></svg></mjx-container></p><p>Obviously the smaller loss, the better model. So our target function should be:</p><p><mjx-container class="MathJax" jax="SVG" display="true"><svg style="vertical-align: -2.06ex;" xmlns="http://www.w3.org/2000/svg" width="17.589ex" height="3.757ex" role="img" focusable="false" viewBox="0 -750 7774.4 1660.5"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="msup"><g data-mml-node="mi"><path data-c="1D453" d="M118 -162Q120 -162 124 -164T135 -167T147 -168Q160 -168 171 -155T187 -126Q197 -99 221 27T267 267T289 382V385H242Q195 385 192 387Q188 390 188 397L195 425Q197 430 203 430T250 431Q298 431 298 432Q298 434 307 482T319 540Q356 705 465 705Q502 703 526 683T550 630Q550 594 529 578T487 561Q443 561 443 603Q443 622 454 636T478 657L487 662Q471 668 457 668Q445 668 434 658T419 630Q412 601 403 552T387 469T380 433Q380 431 435 431Q480 431 487 430T498 424Q499 420 496 407T491 391Q489 386 482 386T428 385H372L349 263Q301 15 282 -47Q255 -132 212 -173Q175 -205 139 -205Q107 -205 81 -186T55 -132Q55 -95 76 -78T118 -61Q162 -61 162 -103Q162 -122 151 -136T127 -157L118 -162Z"></path></g><g data-mml-node="mo" transform="translate(636,413) scale(0.707)"><path data-c="2217" d="M229 286Q216 420 216 436Q216 454 240 464Q241 464 245 464T251 465Q263 464 273 456T283 436Q283 419 277 356T270 286L328 328Q384 369 389 372T399 375Q412 375 423 365T435 338Q435 325 425 315Q420 312 357 282T289 250L355 219L425 184Q434 175 434 161Q434 146 425 136T401 125Q393 125 383 131T328 171L270 213Q283 79 283 63Q283 53 276 44T250 35Q231 35 224 44T216 63Q216 80 222 143T229 213L171 171Q115 130 110 127Q106 124 100 124Q87 124 76 134T64 161Q64 166 64 169T67 175T72 181T81 188T94 195T113 204T138 215T170 230T210 250L74 315Q65 324 65 338Q65 353 74 363T98 374Q106 374 116 368T171 328L229 286Z"></path></g></g><g data-mml-node="mo" transform="translate(1317.3,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mi" transform="translate(2373.1,0)"><path data-c="61" d="M137 305T115 305T78 320T63 359Q63 394 97 421T218 448Q291 448 336 416T396 340Q401 326 401 309T402 194V124Q402 76 407 58T428 40Q443 40 448 56T453 109V145H493V106Q492 66 490 59Q481 29 455 12T400 -6T353 12T329 54V58L327 55Q325 52 322 49T314 40T302 29T287 17T269 6T247 -2T221 -8T190 -11Q130 -11 82 20T34 107Q34 128 41 147T68 188T116 225T194 253T304 268H318V290Q318 324 312 340Q290 411 215 411Q197 411 181 410T156 406T148 403Q170 388 170 359Q170 334 154 320ZM126 106Q126 75 150 51T209 26Q247 26 276 49T315 109Q317 116 318 175Q318 233 317 233Q309 233 296 232T251 223T193 203T147 166T126 106Z"></path><path data-c="72" d="M36 46H50Q89 46 97 60V68Q97 77 97 91T98 122T98 161T98 203Q98 234 98 269T98 328L97 351Q94 370 83 376T38 385H20V408Q20 431 22 431L32 432Q42 433 60 434T96 436Q112 437 131 438T160 441T171 442H174V373Q213 441 271 441H277Q322 441 343 419T364 373Q364 352 351 337T313 322Q288 322 276 338T263 372Q263 381 265 388T270 400T273 405Q271 407 250 401Q234 393 226 386Q179 341 179 207V154Q179 141 179 127T179 101T180 81T180 66V61Q181 59 183 57T188 54T193 51T200 49T207 48T216 47T225 47T235 46T245 46H276V0H267Q249 3 140 3Q37 3 28 0H20V46H36Z" transform="translate(500,0)"></path><path data-c="67" d="M329 409Q373 453 429 453Q459 453 472 434T485 396Q485 382 476 371T449 360Q416 360 412 390Q410 404 415 411Q415 412 416 414V415Q388 412 363 393Q355 388 355 386Q355 385 359 381T368 369T379 351T388 325T392 292Q392 230 343 187T222 143Q172 143 123 171Q112 153 112 133Q112 98 138 81Q147 75 155 75T227 73Q311 72 335 67Q396 58 431 26Q470 -13 470 -72Q470 -139 392 -175Q332 -206 250 -206Q167 -206 107 -175Q29 -140 29 -75Q29 -39 50 -15T92 18L103 24Q67 55 67 108Q67 155 96 193Q52 237 52 292Q52 355 102 398T223 442Q274 442 318 416L329 409ZM299 343Q294 371 273 387T221 404Q192 404 171 388T145 343Q142 326 142 292Q142 248 149 227T179 192Q196 182 222 182Q244 182 260 189T283 207T294 227T299 242Q302 258 302 292T299 343ZM403 -75Q403 -50 389 -34T348 -11T299 -2T245 0H218Q151 0 138 -6Q118 -15 107 -34T95 -74Q95 -84 101 -97T122 -127T170 -155T250 -167Q319 -167 361 -139T403 -75Z" transform="translate(892,0)"></path></g><g data-mml-node="mo" transform="translate(3765.1,0)"><path data-c="2061" d=""></path></g><g data-mml-node="munder" transform="translate(3931.8,0)"><g data-mml-node="mo"><path data-c="6D" d="M41 46H55Q94 46 102 60V68Q102 77 102 91T102 122T103 161T103 203Q103 234 103 269T102 328V351Q99 370 88 376T43 385H25V408Q25 431 27 431L37 432Q47 433 65 434T102 436Q119 437 138 438T167 441T178 442H181V402Q181 364 182 364T187 369T199 384T218 402T247 421T285 437Q305 442 336 442Q351 442 364 440T387 434T406 426T421 417T432 406T441 395T448 384T452 374T455 366L457 361L460 365Q463 369 466 373T475 384T488 397T503 410T523 422T546 432T572 439T603 442Q729 442 740 329Q741 322 741 190V104Q741 66 743 59T754 49Q775 46 803 46H819V0H811L788 1Q764 2 737 2T699 3Q596 3 587 0H579V46H595Q656 46 656 62Q657 64 657 200Q656 335 655 343Q649 371 635 385T611 402T585 404Q540 404 506 370Q479 343 472 315T464 232V168V108Q464 78 465 68T468 55T477 49Q498 46 526 46H542V0H534L510 1Q487 2 460 2T422 3Q319 3 310 0H302V46H318Q379 46 379 62Q380 64 380 200Q379 335 378 343Q372 371 358 385T334 402T308 404Q263 404 229 370Q202 343 195 315T187 232V168V108Q187 78 188 68T191 55T200 49Q221 46 249 46H265V0H257L234 1Q210 2 183 2T145 3Q42 3 33 0H25V46H41Z"></path><path data-c="69" d="M69 609Q69 637 87 653T131 669Q154 667 171 652T188 609Q188 579 171 564T129 549Q104 549 87 564T69 609ZM247 0Q232 3 143 3Q132 3 106 3T56 1L34 0H26V46H42Q70 46 91 49Q100 53 102 60T104 102V205V293Q104 345 102 359T88 378Q74 385 41 385H30V408Q30 431 32 431L42 432Q52 433 70 434T106 436Q123 437 142 438T171 441T182 442H185V62Q190 52 197 50T232 46H255V0H247Z" transform="translate(833,0)"></path><path data-c="6E" d="M41 46H55Q94 46 102 60V68Q102 77 102 91T102 122T103 161T103 203Q103 234 103 269T102 328V351Q99 370 88 376T43 385H25V408Q25 431 27 431L37 432Q47 433 65 434T102 436Q119 437 138 438T167 441T178 442H181V402Q181 364 182 364T187 369T199 384T218 402T247 421T285 437Q305 442 336 442Q450 438 463 329Q464 322 464 190V104Q464 66 466 59T477 49Q498 46 526 46H542V0H534L510 1Q487 2 460 2T422 3Q319 3 310 0H302V46H318Q379 46 379 62Q380 64 380 200Q379 335 378 343Q372 371 358 385T334 402T308 404Q263 404 229 370Q202 343 195 315T187 232V168V108Q187 78 188 68T191 55T200 49Q221 46 249 46H265V0H257L234 1Q210 2 183 2T145 3Q42 3 33 0H25V46H41Z" transform="translate(1111,0)"></path></g><g data-mml-node="TeXAtom" transform="translate(639,-665.5) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="1D453" d="M118 -162Q120 -162 124 -164T135 -167T147 -168Q160 -168 171 -155T187 -126Q197 -99 221 27T267 267T289 382V385H242Q195 385 192 387Q188 390 188 397L195 425Q197 430 203 430T250 431Q298 431 298 432Q298 434 307 482T319 540Q356 705 465 705Q502 703 526 683T550 630Q550 594 529 578T487 561Q443 561 443 603Q443 622 454 636T478 657L487 662Q471 668 457 668Q445 668 434 658T419 630Q412 601 403 552T387 469T380 433Q380 431 435 431Q480 431 487 430T498 424Q499 420 496 407T491 391Q489 386 482 386T428 385H372L349 263Q301 15 282 -47Q255 -132 212 -173Q175 -205 139 -205Q107 -205 81 -186T55 -132Q55 -95 76 -78T118 -61Q162 -61 162 -103Q162 -122 151 -136T127 -157L118 -162Z"></path></g></g></g><g data-mml-node="mi" transform="translate(5765.4,0)"><path data-c="1D43F" d="M228 637Q194 637 192 641Q191 643 191 649Q191 673 202 682Q204 683 217 683Q271 680 344 680Q485 680 506 683H518Q524 677 524 674T522 656Q517 641 513 637H475Q406 636 394 628Q387 624 380 600T313 336Q297 271 279 198T252 88L243 52Q243 48 252 48T311 46H328Q360 46 379 47T428 54T478 72T522 106T564 161Q580 191 594 228T611 270Q616 273 628 273H641Q647 264 647 262T627 203T583 83T557 9Q555 4 553 3T537 0T494 -1Q483 -1 418 -1T294 0H116Q32 0 32 10Q32 17 34 24Q39 43 44 45Q48 46 59 46H65Q92 46 125 49Q139 52 144 61Q147 65 216 339T285 628Q285 635 228 637Z"></path></g><g data-mml-node="mo" transform="translate(6446.4,0)"><path data-c="28" d="M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"></path></g><g data-mml-node="mi" transform="translate(6835.4,0)"><path data-c="1D453" d="M118 -162Q120 -162 124 -164T135 -167T147 -168Q160 -168 171 -155T187 -126Q197 -99 221 27T267 267T289 382V385H242Q195 385 192 387Q188 390 188 397L195 425Q197 430 203 430T250 431Q298 431 298 432Q298 434 307 482T319 540Q356 705 465 705Q502 703 526 683T550 630Q550 594 529 578T487 561Q443 561 443 603Q443 622 454 636T478 657L487 662Q471 668 457 668Q445 668 434 658T419 630Q412 601 403 552T387 469T380 433Q380 431 435 431Q480 431 487 430T498 424Q499 420 496 407T491 391Q489 386 482 386T428 385H372L349 263Q301 15 282 -47Q255 -132 212 -173Q175 -205 139 -205Q107 -205 81 -186T55 -132Q55 -95 76 -78T118 -61Q162 -61 162 -103Q162 -122 151 -136T127 -157L118 -162Z"></path></g><g data-mml-node="mo" transform="translate(7385.4,0)"><path data-c="29" d="M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"></path></g></g></g></svg></mjx-container></p><p>Average value would be better than total sum, then we get the actual function that needs to be computed:</p><p><mjx-container class="MathJax" jax="SVG" display="true"><svg style="vertical-align: -2.819ex;" xmlns="http://www.w3.org/2000/svg" width="36.043ex" height="6.354ex" role="img" focusable="false" viewBox="0 -1562.5 15931 2808.5"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="msup"><g data-mml-node="mi"><path data-c="1D464" d="M580 385Q580 406 599 424T641 443Q659 443 674 425T690 368Q690 339 671 253Q656 197 644 161T609 80T554 12T482 -11Q438 -11 404 5T355 48Q354 47 352 44Q311 -11 252 -11Q226 -11 202 -5T155 14T118 53T104 116Q104 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Q21 293 29 315T52 366T96 418T161 441Q204 441 227 416T250 358Q250 340 217 250T184 111Q184 65 205 46T258 26Q301 26 334 87L339 96V119Q339 122 339 128T340 136T341 143T342 152T345 165T348 182T354 206T362 238T373 281Q402 395 406 404Q419 431 449 431Q468 431 475 421T483 402Q483 389 454 274T422 142Q420 131 420 107V100Q420 85 423 71T442 42T487 26Q558 26 600 148Q609 171 620 213T632 273Q632 306 619 325T593 357T580 385Z"></path></g><g data-mml-node="mo" transform="translate(749,413) scale(0.707)"><path data-c="2217" d="M229 286Q216 420 216 436Q216 454 240 464Q241 464 245 464T251 465Q263 464 273 456T283 436Q283 419 277 356T270 286L328 328Q384 369 389 372T399 375Q412 375 423 365T435 338Q435 325 425 315Q420 312 357 282T289 250L355 219L425 184Q434 175 434 161Q434 146 425 136T401 125Q393 125 383 131T328 171L270 213Q283 79 283 63Q283 53 276 44T250 35Q231 35 224 44T216 63Q216 80 222 143T229 213L171 171Q115 130 110 127Q106 124 100 124Q87 124 76 134T64 161Q64 166 64 169T67 175T72 181T81 188T94 195T113 204T138 215T170 230T210 250L74 315Q65 324 65 338Q65 353 74 363T98 374Q106 374 116 368T171 328L229 286Z"></path></g></g><g data-mml-node="mo" transform="translate(1152.6,0)"><path data-c="2C" d="M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"></path></g><g data-mml-node="msup" transform="translate(1597.2,0)"><g data-mml-node="mi"><path data-c="1D44F" d="M73 647Q73 657 77 670T89 683Q90 683 161 688T234 694Q246 694 246 685T212 542Q204 508 195 472T180 418L176 399Q176 396 182 402Q231 442 283 442Q345 442 383 396T422 280Q422 169 343 79T173 -11Q123 -11 82 27T40 150V159Q40 180 48 217T97 414Q147 611 147 623T109 637Q104 637 101 637H96Q86 637 83 637T76 640T73 647ZM336 325V331Q336 405 275 405Q258 405 240 397T207 376T181 352T163 330L157 322L136 236Q114 150 114 114Q114 66 138 42Q154 26 178 26Q211 26 245 58Q270 81 285 114T318 219Q336 291 336 325Z"></path></g><g data-mml-node="mo" transform="translate(462,413) scale(0.707)"><path data-c="2217" d="M229 286Q216 420 216 436Q216 454 240 464Q241 464 245 464T251 465Q263 464 273 456T283 436Q283 419 277 356T270 286L328 328Q384 369 389 372T399 375Q412 375 423 365T435 338Q435 325 425 315Q420 312 357 282T289 250L355 219L425 184Q434 175 434 161Q434 146 425 136T401 125Q393 125 383 131T328 171L270 213Q283 79 283 63Q283 53 276 44T250 35Q231 35 224 44T216 63Q216 80 222 143T229 213L171 171Q115 130 110 127Q106 124 100 124Q87 124 76 134T64 161Q64 166 64 169T67 175T72 181T81 188T94 195T113 204T138 215T170 230T210 250L74 315Q65 324 65 338Q65 353 74 363T98 374Q106 374 116 368T171 328L229 286Z"></path></g></g><g data-mml-node="mo" transform="translate(2740.6,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mi" transform="translate(3796.3,0)"><path data-c="61" d="M137 305T115 305T78 320T63 359Q63 394 97 421T218 448Q291 448 336 416T396 340Q401 326 401 309T402 194V124Q402 76 407 58T428 40Q443 40 448 56T453 109V145H493V106Q492 66 490 59Q481 29 455 12T400 -6T353 12T329 54V58L327 55Q325 52 322 49T314 40T302 29T287 17T269 6T247 -2T221 -8T190 -11Q130 -11 82 20T34 107Q34 128 41 147T68 188T116 225T194 253T304 268H318V290Q318 324 312 340Q290 411 215 411Q197 411 181 410T156 406T148 403Q170 388 170 359Q170 334 154 320ZM126 106Q126 75 150 51T209 26Q247 26 276 49T315 109Q317 116 318 175Q318 233 317 233Q309 233 296 232T251 223T193 203T147 166T126 106Z"></path><path data-c="72" d="M36 46H50Q89 46 97 60V68Q97 77 97 91T98 122T98 161T98 203Q98 234 98 269T98 328L97 351Q94 370 83 376T38 385H20V408Q20 431 22 431L32 432Q42 433 60 434T96 436Q112 437 131 438T160 441T171 442H174V373Q213 441 271 441H277Q322 441 343 419T364 373Q364 352 351 337T313 322Q288 322 276 338T263 372Q263 381 265 388T270 400T273 405Q271 407 250 401Q234 393 226 386Q179 341 179 207V154Q179 141 179 127T179 101T180 81T180 66V61Q181 59 183 57T188 54T193 51T200 49T207 48T216 47T225 47T235 46T245 46H276V0H267Q249 3 140 3Q37 3 28 0H20V46H36Z" transform="translate(500,0)"></path><path data-c="67" d="M329 409Q373 453 429 453Q459 453 472 434T485 396Q485 382 476 371T449 360Q416 360 412 390Q410 404 415 411Q415 412 416 414V415Q388 412 363 393Q355 388 355 386Q355 385 359 381T368 369T379 351T388 325T392 292Q392 230 343 187T222 143Q172 143 123 171Q112 153 112 133Q112 98 138 81Q147 75 155 75T227 73Q311 72 335 67Q396 58 431 26Q470 -13 470 -72Q470 -139 392 -175Q332 -206 250 -206Q167 -206 107 -175Q29 -140 29 -75Q29 -39 50 -15T92 18L103 24Q67 55 67 108Q67 155 96 193Q52 237 52 292Q52 355 102 398T223 442Q274 442 318 416L329 409ZM299 343Q294 371 273 387T221 404Q192 404 171 388T145 343Q142 326 142 292Q142 248 149 227T179 192Q196 182 222 182Q244 182 260 189T283 207T294 227T299 242Q302 258 302 292T299 343ZM403 -75Q403 -50 389 -34T348 -11T299 -2T245 0H218Q151 0 138 -6Q118 -15 107 -34T95 -74Q95 -84 101 -97T122 -127T170 -155T250 -167Q319 -167 361 -139T403 -75Z" transform="translate(892,0)"></path></g><g data-mml-node="mo" transform="translate(5188.3,0)"><path data-c="2061" d=""></path></g><g data-mml-node="munder" transform="translate(5355,0)"><g data-mml-node="mo"><path data-c="6D" d="M41 46H55Q94 46 102 60V68Q102 77 102 91T102 122T103 161T103 203Q103 234 103 269T102 328V351Q99 370 88 376T43 385H25V408Q25 431 27 431L37 432Q47 433 65 434T102 436Q119 437 138 438T167 441T178 442H181V402Q181 364 182 364T187 369T199 384T218 402T247 421T285 437Q305 442 336 442Q351 442 364 440T387 434T406 426T421 417T432 406T441 395T448 384T452 374T455 366L457 361L460 365Q463 369 466 373T475 384T488 397T503 410T523 422T546 432T572 439T603 442Q729 442 740 329Q741 322 741 190V104Q741 66 743 59T754 49Q775 46 803 46H819V0H811L788 1Q764 2 737 2T699 3Q596 3 587 0H579V46H595Q656 46 656 62Q657 64 657 200Q656 335 655 343Q649 371 635 385T611 402T585 404Q540 404 506 370Q479 343 472 315T464 232V168V108Q464 78 465 68T468 55T477 49Q498 46 526 46H542V0H534L510 1Q487 2 460 2T422 3Q319 3 310 0H302V46H318Q379 46 379 62Q380 64 380 200Q379 335 378 343Q372 371 358 385T334 402T308 404Q263 404 229 370Q202 343 195 315T187 232V168V108Q187 78 188 68T191 55T200 49Q221 46 249 46H265V0H257L234 1Q210 2 183 2T145 3Q42 3 33 0H25V46H41Z"></path><path data-c="69" d="M69 609Q69 637 87 653T131 669Q154 667 171 652T188 609Q188 579 171 564T129 549Q104 549 87 564T69 609ZM247 0Q232 3 143 3Q132 3 106 3T56 1L34 0H26V46H42Q70 46 91 49Q100 53 102 60T104 102V205V293Q104 345 102 359T88 378Q74 385 41 385H30V408Q30 431 32 431L42 432Q52 433 70 434T106 436Q123 437 142 438T171 441T182 442H185V62Q190 52 197 50T232 46H255V0H247Z" transform="translate(833,0)"></path><path data-c="6E" d="M41 46H55Q94 46 102 60V68Q102 77 102 91T102 122T103 161T103 203Q103 234 103 269T102 328V351Q99 370 88 376T43 385H25V408Q25 431 27 431L37 432Q47 433 65 434T102 436Q119 437 138 438T167 441T178 442H181V402Q181 364 182 364T187 369T199 384T218 402T247 421T285 437Q305 442 336 442Q450 438 463 329Q464 322 464 190V104Q464 66 466 59T477 49Q498 46 526 46H542V0H534L510 1Q487 2 460 2T422 3Q319 3 310 0H302V46H318Q379 46 379 62Q380 64 380 200Q379 335 378 343Q372 371 358 385T334 402T308 404Q263 404 229 370Q202 343 195 315T187 232V168V108Q187 78 188 68T191 55T200 49Q221 46 249 46H265V0H257L234 1Q210 2 183 2T145 3Q42 3 33 0H25V46H41Z" transform="translate(1111,0)"></path></g><g data-mml-node="TeXAtom" transform="translate(330.4,-657.7) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="1D464" d="M580 385Q580 406 599 424T641 443Q659 443 674 425T690 368Q690 339 671 253Q656 197 644 161T609 80T554 12T482 -11Q438 -11 404 5T355 48Q354 47 352 44Q311 -11 252 -11Q226 -11 202 -5T155 14T118 53T104 116Q104 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Q21 293 29 315T52 366T96 418T161 441Q204 441 227 416T250 358Q250 340 217 250T184 111Q184 65 205 46T258 26Q301 26 334 87L339 96V119Q339 122 339 128T340 136T341 143T342 152T345 165T348 182T354 206T362 238T373 281Q402 395 406 404Q419 431 449 431Q468 431 475 421T483 402Q483 389 454 274T422 142Q420 131 420 107V100Q420 85 423 71T442 42T487 26Q558 26 600 148Q609 171 620 213T632 273Q632 306 619 325T593 357T580 385Z"></path></g><g data-mml-node="mo" transform="translate(716,0)"><path data-c="2C" d="M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"></path></g><g data-mml-node="mi" transform="translate(994,0)"><path data-c="1D44F" d="M73 647Q73 657 77 670T89 683Q90 683 161 688T234 694Q246 694 246 685T212 542Q204 508 195 472T180 418L176 399Q176 396 182 402Q231 442 283 442Q345 442 383 396T422 280Q422 169 343 79T173 -11Q123 -11 82 27T40 150V159Q40 180 48 217T97 414Q147 611 147 623T109 637Q104 637 101 637H96Q86 637 83 637T76 640T73 647ZM336 325V331Q336 405 275 405Q258 405 240 397T207 376T181 352T163 330L157 322L136 236Q114 150 114 114Q114 66 138 42Q154 26 178 26Q211 26 245 58Q270 81 285 114T318 219Q336 291 336 325Z"></path></g></g></g><g data-mml-node="munderover" transform="translate(7188.7,0)"><g data-mml-node="mo"><path data-c="2211" d="M60 948Q63 950 665 950H1267L1325 815Q1384 677 1388 669H1348L1341 683Q1320 724 1285 761Q1235 809 1174 838T1033 881T882 898T699 902H574H543H251L259 891Q722 258 724 252Q725 250 724 246Q721 243 460 -56L196 -356Q196 -357 407 -357Q459 -357 548 -357T676 -358Q812 -358 896 -353T1063 -332T1204 -283T1307 -196Q1328 -170 1348 -124H1388Q1388 -125 1381 -145T1356 -210T1325 -294L1267 -449L666 -450Q64 -450 61 -448Q55 -446 55 -439Q55 -437 57 -433L590 177Q590 178 557 222T452 366T322 544L56 909L55 924Q55 945 60 948Z"></path></g><g data-mml-node="TeXAtom" transform="translate(148.2,-1087.9) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="1D456" d="M184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Z"></path></g><g data-mml-node="mo" transform="translate(345,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mn" transform="translate(1123,0)"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path></g></g><g data-mml-node="TeXAtom" transform="translate(509.9,1150) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="1D45B" d="M21 287Q22 293 24 303T36 341T56 388T89 425T135 442Q171 442 195 424T225 390T231 369Q231 367 232 367L243 378Q304 442 382 442Q436 442 469 415T503 336T465 179T427 52Q427 26 444 26Q450 26 453 27Q482 32 505 65T540 145Q542 153 560 153Q580 153 580 145Q580 144 576 130Q568 101 554 73T508 17T439 -10Q392 -10 371 17T350 73Q350 92 386 193T423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 112 180T152 343Q153 348 153 366Q153 405 129 405Q91 405 66 305Q60 285 60 284Q58 278 41 278H27Q21 284 21 287Z"></path></g></g></g><g data-mml-node="mo" transform="translate(8632.7,0)"><path data-c="28" d="M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"></path></g><g data-mml-node="msup" transform="translate(9021.7,0)"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mover"><g data-mml-node="mi"><path data-c="1D466" d="M21 287Q21 301 36 335T84 406T158 442Q199 442 224 419T250 355Q248 336 247 334Q247 331 231 288T198 191T182 105Q182 62 196 45T238 27Q261 27 281 38T312 61T339 94Q339 95 344 114T358 173T377 247Q415 397 419 404Q432 431 462 431Q475 431 483 424T494 412T496 403Q496 390 447 193T391 -23Q363 -106 294 -155T156 -205Q111 -205 77 -183T43 -117Q43 -95 50 -80T69 -58T89 -48T106 -45Q150 -45 150 -87Q150 -107 138 -122T115 -142T102 -147L99 -148Q101 -153 118 -160T152 -167H160Q177 -167 186 -165Q219 -156 247 -127T290 -65T313 -9T321 21L315 17Q309 13 296 6T270 -6Q250 -11 231 -11Q185 -11 150 11T104 82Q103 89 103 113Q103 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Z"></path></g><g data-mml-node="mo" transform="translate(300.6,16) translate(-250 0)"><path data-c="5E" d="M112 560L249 694L257 686Q387 562 387 560L361 531Q359 532 303 581L250 627L195 580Q182 569 169 557T148 538L140 532Q138 530 125 546L112 560Z"></path></g></g></g><g data-mml-node="mi" transform="translate(523,413) scale(0.707)"><path data-c="1D456" d="M184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Z"></path></g></g><g data-mml-node="mo" transform="translate(10060.8,0)"><path data-c="2212" d="M84 237T84 250T98 270H679Q694 262 694 250T679 230H98Q84 237 84 250Z"></path></g><g data-mml-node="mo" transform="translate(11061.1,0)"><path data-c="28" d="M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"></path></g><g data-mml-node="mi" transform="translate(11450.1,0)"><path data-c="1D464" d="M580 385Q580 406 599 424T641 443Q659 443 674 425T690 368Q690 339 671 253Q656 197 644 161T609 80T554 12T482 -11Q438 -11 404 5T355 48Q354 47 352 44Q311 -11 252 -11Q226 -11 202 -5T155 14T118 53T104 116Q104 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Q21 293 29 315T52 366T96 418T161 441Q204 441 227 416T250 358Q250 340 217 250T184 111Q184 65 205 46T258 26Q301 26 334 87L339 96V119Q339 122 339 128T340 136T341 143T342 152T345 165T348 182T354 206T362 238T373 281Q402 395 406 404Q419 431 449 431Q468 431 475 421T483 402Q483 389 454 274T422 142Q420 131 420 107V100Q420 85 423 71T442 42T487 26Q558 26 600 148Q609 171 620 213T632 273Q632 306 619 325T593 357T580 385Z"></path></g><g data-mml-node="msup" transform="translate(12166.1,0)"><g data-mml-node="mi"><path data-c="1D465" d="M52 289Q59 331 106 386T222 442Q257 442 286 424T329 379Q371 442 430 442Q467 442 494 420T522 361Q522 332 508 314T481 292T458 288Q439 288 427 299T415 328Q415 374 465 391Q454 404 425 404Q412 404 406 402Q368 386 350 336Q290 115 290 78Q290 50 306 38T341 26Q378 26 414 59T463 140Q466 150 469 151T485 153H489Q504 153 504 145Q504 144 502 134Q486 77 440 33T333 -11Q263 -11 227 52Q186 -10 133 -10H127Q78 -10 57 16T35 71Q35 103 54 123T99 143Q142 143 142 101Q142 81 130 66T107 46T94 41L91 40Q91 39 97 36T113 29T132 26Q168 26 194 71Q203 87 217 139T245 247T261 313Q266 340 266 352Q266 380 251 392T217 404Q177 404 142 372T93 290Q91 281 88 280T72 278H58Q52 284 52 289Z"></path></g><g data-mml-node="mi" transform="translate(605,413) scale(0.707)"><path data-c="1D456" d="M184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Z"></path></g></g><g data-mml-node="mo" transform="translate(13287.2,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mi" transform="translate(14287.5,0)"><path data-c="1D44F" d="M73 647Q73 657 77 670T89 683Q90 683 161 688T234 694Q246 694 246 685T212 542Q204 508 195 472T180 418L176 399Q176 396 182 402Q231 442 283 442Q345 442 383 396T422 280Q422 169 343 79T173 -11Q123 -11 82 27T40 150V159Q40 180 48 217T97 414Q147 611 147 623T109 637Q104 637 101 637H96Q86 637 83 637T76 640T73 647ZM336 325V331Q336 405 275 405Q258 405 240 397T207 376T181 352T163 330L157 322L136 236Q114 150 114 114Q114 66 138 42Q154 26 178 26Q211 26 245 58Q270 81 285 114T318 219Q336 291 336 325Z"></path></g><g data-mml-node="mo" transform="translate(14716.5,0)"><path data-c="29" d="M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"></path></g><g data-mml-node="msup" transform="translate(15105.5,0)"><g data-mml-node="mo"><path data-c="29" d="M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"></path></g><g data-mml-node="mn" transform="translate(422,413) scale(0.707)"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g></g></g></g></svg></mjx-container></p><p>Not big deal, just minimize the mean square error of our trivial linear model.</p><h3 id="Vectorized-form"><a href="#Vectorized-form" class="headerlink" title="Vectorized form"></a>Vectorized form</h3><p>You may have heard “feature” before, for each of data <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.025ex;" xmlns="http://www.w3.org/2000/svg" width="2.034ex" height="1.904ex" role="img" focusable="false" viewBox="0 -830.4 899 841.4"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="msup"><g data-mml-node="mi"><path data-c="1D465" d="M52 289Q59 331 106 386T222 442Q257 442 286 424T329 379Q371 442 430 442Q467 442 494 420T522 361Q522 332 508 314T481 292T458 288Q439 288 427 299T415 328Q415 374 465 391Q454 404 425 404Q412 404 406 402Q368 386 350 336Q290 115 290 78Q290 50 306 38T341 26Q378 26 414 59T463 140Q466 150 469 151T485 153H489Q504 153 504 145Q504 144 502 134Q486 77 440 33T333 -11Q263 -11 227 52Q186 -10 133 -10H127Q78 -10 57 16T35 71Q35 103 54 123T99 143Q142 143 142 101Q142 81 130 66T107 46T94 41L91 40Q91 39 97 36T113 29T132 26Q168 26 194 71Q203 87 217 139T245 247T261 313Q266 340 266 352Q266 380 251 392T217 404Q177 404 142 372T93 290Q91 281 88 280T72 278H58Q52 284 52 289Z"></path></g><g data-mml-node="mi" transform="translate(605,363) scale(0.707)"><path data-c="1D456" d="M184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Z"></path></g></g></g></g></svg></mjx-container>, if the number of its features is <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.025ex;" xmlns="http://www.w3.org/2000/svg" width="1.986ex" height="1.025ex" role="img" focusable="false" viewBox="0 -442 878 453"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D45A" d="M21 287Q22 293 24 303T36 341T56 388T88 425T132 442T175 435T205 417T221 395T229 376L231 369Q231 367 232 367L243 378Q303 442 384 442Q401 442 415 440T441 433T460 423T475 411T485 398T493 385T497 373T500 364T502 357L510 367Q573 442 659 442Q713 442 746 415T780 336Q780 285 742 178T704 50Q705 36 709 31T724 26Q752 26 776 56T815 138Q818 149 821 151T837 153Q857 153 857 145Q857 144 853 130Q845 101 831 73T785 17T716 -10Q669 -10 648 17T627 73Q627 92 663 193T700 345Q700 404 656 404H651Q565 404 506 303L499 291L466 157Q433 26 428 16Q415 -11 385 -11Q372 -11 364 -4T353 8T350 18Q350 29 384 161L420 307Q423 322 423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 112 181Q151 335 151 342Q154 357 154 369Q154 405 129 405Q107 405 92 377T69 316T57 280Q55 278 41 278H27Q21 284 21 287Z"></path></g></g></g></svg></mjx-container>, then the actual model should be:</p><p><mjx-container class="MathJax" jax="SVG" display="true"><svg style="vertical-align: -0.576ex;" xmlns="http://www.w3.org/2000/svg" width="37.065ex" height="2.568ex" role="img" focusable="false" viewBox="0 -880.4 16382.7 1135.2"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="msup"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mover"><g data-mml-node="mi"><path data-c="1D466" d="M21 287Q21 301 36 335T84 406T158 442Q199 442 224 419T250 355Q248 336 247 334Q247 331 231 288T198 191T182 105Q182 62 196 45T238 27Q261 27 281 38T312 61T339 94Q339 95 344 114T358 173T377 247Q415 397 419 404Q432 431 462 431Q475 431 483 424T494 412T496 403Q496 390 447 193T391 -23Q363 -106 294 -155T156 -205Q111 -205 77 -183T43 -117Q43 -95 50 -80T69 -58T89 -48T106 -45Q150 -45 150 -87Q150 -107 138 -122T115 -142T102 -147L99 -148Q101 -153 118 -160T152 -167H160Q177 -167 186 -165Q219 -156 247 -127T290 -65T313 -9T321 21L315 17Q309 13 296 6T270 -6Q250 -11 231 -11Q185 -11 150 11T104 82Q103 89 103 113Q103 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Z"></path></g><g data-mml-node="mo" transform="translate(300.6,16) translate(-250 0)"><path data-c="5E" d="M112 560L249 694L257 686Q387 562 387 560L361 531Q359 532 303 581L250 627L195 580Q182 569 169 557T148 538L140 532Q138 530 125 546L112 560Z"></path></g></g></g><g data-mml-node="mi" transform="translate(523,413) scale(0.707)"><path data-c="1D456" d="M184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Z"></path></g></g><g data-mml-node="mo" transform="translate(1094.7,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="msub" transform="translate(2150.5,0)"><g data-mml-node="mi"><path data-c="1D464" d="M580 385Q580 406 599 424T641 443Q659 443 674 425T690 368Q690 339 671 253Q656 197 644 161T609 80T554 12T482 -11Q438 -11 404 5T355 48Q354 47 352 44Q311 -11 252 -11Q226 -11 202 -5T155 14T118 53T104 116Q104 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Q21 293 29 315T52 366T96 418T161 441Q204 441 227 416T250 358Q250 340 217 250T184 111Q184 65 205 46T258 26Q301 26 334 87L339 96V119Q339 122 339 128T340 136T341 143T342 152T345 165T348 182T354 206T362 238T373 281Q402 395 406 404Q419 431 449 431Q468 431 475 421T483 402Q483 389 454 274T422 142Q420 131 420 107V100Q420 85 423 71T442 42T487 26Q558 26 600 148Q609 171 620 213T632 273Q632 306 619 325T593 357T580 385Z"></path></g><g data-mml-node="mn" transform="translate(749,-150) scale(0.707)"><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"></path></g></g><g data-mml-node="mo" transform="translate(3525.3,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="msub" transform="translate(4525.5,0)"><g data-mml-node="mi"><path data-c="1D464" d="M580 385Q580 406 599 424T641 443Q659 443 674 425T690 368Q690 339 671 253Q656 197 644 161T609 80T554 12T482 -11Q438 -11 404 5T355 48Q354 47 352 44Q311 -11 252 -11Q226 -11 202 -5T155 14T118 53T104 116Q104 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Q21 293 29 315T52 366T96 418T161 441Q204 441 227 416T250 358Q250 340 217 250T184 111Q184 65 205 46T258 26Q301 26 334 87L339 96V119Q339 122 339 128T340 136T341 143T342 152T345 165T348 182T354 206T362 238T373 281Q402 395 406 404Q419 431 449 431Q468 431 475 421T483 402Q483 389 454 274T422 142Q420 131 420 107V100Q420 85 423 71T442 42T487 26Q558 26 600 148Q609 171 620 213T632 273Q632 306 619 325T593 357T580 385Z"></path></g><g data-mml-node="mn" transform="translate(749,-150) scale(0.707)"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path></g></g><g data-mml-node="msubsup" transform="translate(5678.1,0)"><g data-mml-node="mi"><path data-c="1D465" d="M52 289Q59 331 106 386T222 442Q257 442 286 424T329 379Q371 442 430 442Q467 442 494 420T522 361Q522 332 508 314T481 292T458 288Q439 288 427 299T415 328Q415 374 465 391Q454 404 425 404Q412 404 406 402Q368 386 350 336Q290 115 290 78Q290 50 306 38T341 26Q378 26 414 59T463 140Q466 150 469 151T485 153H489Q504 153 504 145Q504 144 502 134Q486 77 440 33T333 -11Q263 -11 227 52Q186 -10 133 -10H127Q78 -10 57 16T35 71Q35 103 54 123T99 143Q142 143 142 101Q142 81 130 66T107 46T94 41L91 40Q91 39 97 36T113 29T132 26Q168 26 194 71Q203 87 217 139T245 247T261 313Q266 340 266 352Q266 380 251 392T217 404Q177 404 142 372T93 290Q91 281 88 280T72 278H58Q52 284 52 289Z"></path></g><g data-mml-node="mi" transform="translate(605,413) scale(0.707)"><path data-c="1D456" d="M184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Z"></path></g><g data-mml-node="mn" transform="translate(605,-247) scale(0.707)"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path></g></g><g data-mml-node="mo" transform="translate(6908.8,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="msub" transform="translate(7909.1,0)"><g data-mml-node="mi"><path data-c="1D464" d="M580 385Q580 406 599 424T641 443Q659 443 674 425T690 368Q690 339 671 253Q656 197 644 161T609 80T554 12T482 -11Q438 -11 404 5T355 48Q354 47 352 44Q311 -11 252 -11Q226 -11 202 -5T155 14T118 53T104 116Q104 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Q21 293 29 315T52 366T96 418T161 441Q204 441 227 416T250 358Q250 340 217 250T184 111Q184 65 205 46T258 26Q301 26 334 87L339 96V119Q339 122 339 128T340 136T341 143T342 152T345 165T348 182T354 206T362 238T373 281Q402 395 406 404Q419 431 449 431Q468 431 475 421T483 402Q483 389 454 274T422 142Q420 131 420 107V100Q420 85 423 71T442 42T487 26Q558 26 600 148Q609 171 620 213T632 273Q632 306 619 325T593 357T580 385Z"></path></g><g data-mml-node="mn" transform="translate(749,-150) scale(0.707)"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g></g><g data-mml-node="msubsup" transform="translate(9061.6,0)"><g data-mml-node="mi"><path data-c="1D465" d="M52 289Q59 331 106 386T222 442Q257 442 286 424T329 379Q371 442 430 442Q467 442 494 420T522 361Q522 332 508 314T481 292T458 288Q439 288 427 299T415 328Q415 374 465 391Q454 404 425 404Q412 404 406 402Q368 386 350 336Q290 115 290 78Q290 50 306 38T341 26Q378 26 414 59T463 140Q466 150 469 151T485 153H489Q504 153 504 145Q504 144 502 134Q486 77 440 33T333 -11Q263 -11 227 52Q186 -10 133 -10H127Q78 -10 57 16T35 71Q35 103 54 123T99 143Q142 143 142 101Q142 81 130 66T107 46T94 41L91 40Q91 39 97 36T113 29T132 26Q168 26 194 71Q203 87 217 139T245 247T261 313Q266 340 266 352Q266 380 251 392T217 404Q177 404 142 372T93 290Q91 281 88 280T72 278H58Q52 284 52 289Z"></path></g><g data-mml-node="mi" transform="translate(605,413) scale(0.707)"><path data-c="1D456" d="M184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Z"></path></g><g data-mml-node="mn" transform="translate(605,-247) scale(0.707)"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g></g><g data-mml-node="mo" transform="translate(10292.4,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mo" transform="translate(11292.6,0)"><path data-c="22EF" d="M78 250Q78 274 95 292T138 310Q162 310 180 294T199 251Q199 226 182 208T139 190T96 207T78 250ZM525 250Q525 274 542 292T585 310Q609 310 627 294T646 251Q646 226 629 208T586 190T543 207T525 250ZM972 250Q972 274 989 292T1032 310Q1056 310 1074 294T1093 251Q1093 226 1076 208T1033 190T990 207T972 250Z"></path></g><g data-mml-node="mo" transform="translate(12686.8,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="msub" transform="translate(13687.1,0)"><g data-mml-node="mi"><path data-c="1D464" d="M580 385Q580 406 599 424T641 443Q659 443 674 425T690 368Q690 339 671 253Q656 197 644 161T609 80T554 12T482 -11Q438 -11 404 5T355 48Q354 47 352 44Q311 -11 252 -11Q226 -11 202 -5T155 14T118 53T104 116Q104 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Q21 293 29 315T52 366T96 418T161 441Q204 441 227 416T250 358Q250 340 217 250T184 111Q184 65 205 46T258 26Q301 26 334 87L339 96V119Q339 122 339 128T340 136T341 143T342 152T345 165T348 182T354 206T362 238T373 281Q402 395 406 404Q419 431 449 431Q468 431 475 421T483 402Q483 389 454 274T422 142Q420 131 420 107V100Q420 85 423 71T442 42T487 26Q558 26 600 148Q609 171 620 213T632 273Q632 306 619 325T593 357T580 385Z"></path></g><g data-mml-node="mi" transform="translate(749,-150) scale(0.707)"><path data-c="1D45A" d="M21 287Q22 293 24 303T36 341T56 388T88 425T132 442T175 435T205 417T221 395T229 376L231 369Q231 367 232 367L243 378Q303 442 384 442Q401 442 415 440T441 433T460 423T475 411T485 398T493 385T497 373T500 364T502 357L510 367Q573 442 659 442Q713 442 746 415T780 336Q780 285 742 178T704 50Q705 36 709 31T724 26Q752 26 776 56T815 138Q818 149 821 151T837 153Q857 153 857 145Q857 144 853 130Q845 101 831 73T785 17T716 -10Q669 -10 648 17T627 73Q627 92 663 193T700 345Q700 404 656 404H651Q565 404 506 303L499 291L466 157Q433 26 428 16Q415 -11 385 -11Q372 -11 364 -4T353 8T350 18Q350 29 384 161L420 307Q423 322 423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 112 181Q151 335 151 342Q154 357 154 369Q154 405 129 405Q107 405 92 377T69 316T57 280Q55 278 41 278H27Q21 284 21 287Z"></path></g></g><g data-mml-node="msubsup" transform="translate(15106.9,0)"><g data-mml-node="mi"><path data-c="1D465" d="M52 289Q59 331 106 386T222 442Q257 442 286 424T329 379Q371 442 430 442Q467 442 494 420T522 361Q522 332 508 314T481 292T458 288Q439 288 427 299T415 328Q415 374 465 391Q454 404 425 404Q412 404 406 402Q368 386 350 336Q290 115 290 78Q290 50 306 38T341 26Q378 26 414 59T463 140Q466 150 469 151T485 153H489Q504 153 504 145Q504 144 502 134Q486 77 440 33T333 -11Q263 -11 227 52Q186 -10 133 -10H127Q78 -10 57 16T35 71Q35 103 54 123T99 143Q142 143 142 101Q142 81 130 66T107 46T94 41L91 40Q91 39 97 36T113 29T132 26Q168 26 194 71Q203 87 217 139T245 247T261 313Q266 340 266 352Q266 380 251 392T217 404Q177 404 142 372T93 290Q91 281 88 280T72 278H58Q52 284 52 289Z"></path></g><g data-mml-node="mi" transform="translate(605,413) scale(0.707)"><path data-c="1D456" d="M184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Z"></path></g><g data-mml-node="mi" transform="translate(605,-247) scale(0.707)"><path data-c="1D45A" d="M21 287Q22 293 24 303T36 341T56 388T88 425T132 442T175 435T205 417T221 395T229 376L231 369Q231 367 232 367L243 378Q303 442 384 442Q401 442 415 440T441 433T460 423T475 411T485 398T493 385T497 373T500 364T502 357L510 367Q573 442 659 442Q713 442 746 415T780 336Q780 285 742 178T704 50Q705 36 709 31T724 26Q752 26 776 56T815 138Q818 149 821 151T837 153Q857 153 857 145Q857 144 853 130Q845 101 831 73T785 17T716 -10Q669 -10 648 17T627 73Q627 92 663 193T700 345Q700 404 656 404H651Q565 404 506 303L499 291L466 157Q433 26 428 16Q415 -11 385 -11Q372 -11 364 -4T353 8T350 18Q350 29 384 161L420 307Q423 322 423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 112 181Q151 335 151 342Q154 357 154 369Q154 405 129 405Q107 405 92 377T69 316T57 280Q55 278 41 278H27Q21 284 21 287Z"></path></g></g></g></g></svg></mjx-container></p><p>Kind of verbose right? Let’s use <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: 0;" xmlns="http://www.w3.org/2000/svg" width="1.88ex" height="1.005ex" role="img" focusable="false" viewBox="0 -444 831 444"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="1D430" d="M624 444Q636 441 722 441Q797 441 800 444H805V382H741L593 11Q592 10 590 8T586 4T584 2T581 0T579 -2T575 -3T571 -3T567 -4T561 -4T553 -4H542Q525 -4 518 6T490 70Q474 110 463 137L415 257L367 137Q357 111 341 72Q320 17 313 7T289 -4H277Q259 -4 253 -2T238 11L90 382H25V444H32Q47 441 140 441Q243 441 261 444H270V382H222L310 164L382 342L366 382H303V444H310Q322 441 407 441Q508 441 523 444H531V382H506Q481 382 481 380Q482 376 529 259T577 142L674 382H617V444H624Z"></path></g></g></g></g></svg></mjx-container> to represent all feature weights <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.339ex;" xmlns="http://www.w3.org/2000/svg" width="2.608ex" height="1.342ex" role="img" focusable="false" viewBox="0 -443 1152.6 593"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="msub"><g data-mml-node="mi"><path data-c="1D464" d="M580 385Q580 406 599 424T641 443Q659 443 674 425T690 368Q690 339 671 253Q656 197 644 161T609 80T554 12T482 -11Q438 -11 404 5T355 48Q354 47 352 44Q311 -11 252 -11Q226 -11 202 -5T155 14T118 53T104 116Q104 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Q21 293 29 315T52 366T96 418T161 441Q204 441 227 416T250 358Q250 340 217 250T184 111Q184 65 205 46T258 26Q301 26 334 87L339 96V119Q339 122 339 128T340 136T341 143T342 152T345 165T348 182T354 206T362 238T373 281Q402 395 406 404Q419 431 449 431Q468 431 475 421T483 402Q483 389 454 274T422 142Q420 131 420 107V100Q420 85 423 71T442 42T487 26Q558 26 600 148Q609 171 620 213T632 273Q632 306 619 325T593 357T580 385Z"></path></g><g data-mml-node="mn" transform="translate(749,-150) scale(0.707)"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path></g></g></g></g></svg></mjx-container> to <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.357ex;" xmlns="http://www.w3.org/2000/svg" width="3.212ex" height="1.359ex" role="img" focusable="false" viewBox="0 -443 1419.8 600.8"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="msub"><g data-mml-node="mi"><path data-c="1D464" d="M580 385Q580 406 599 424T641 443Q659 443 674 425T690 368Q690 339 671 253Q656 197 644 161T609 80T554 12T482 -11Q438 -11 404 5T355 48Q354 47 352 44Q311 -11 252 -11Q226 -11 202 -5T155 14T118 53T104 116Q104 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Q21 293 29 315T52 366T96 418T161 441Q204 441 227 416T250 358Q250 340 217 250T184 111Q184 65 205 46T258 26Q301 26 334 87L339 96V119Q339 122 339 128T340 136T341 143T342 152T345 165T348 182T354 206T362 238T373 281Q402 395 406 404Q419 431 449 431Q468 431 475 421T483 402Q483 389 454 274T422 142Q420 131 420 107V100Q420 85 423 71T442 42T487 26Q558 26 600 148Q609 171 620 213T632 273Q632 306 619 325T593 357T580 385Z"></path></g><g data-mml-node="mi" transform="translate(749,-150) scale(0.707)"><path data-c="1D45A" d="M21 287Q22 293 24 303T36 341T56 388T88 425T132 442T175 435T205 417T221 395T229 376L231 369Q231 367 232 367L243 378Q303 442 384 442Q401 442 415 440T441 433T460 423T475 411T485 398T493 385T497 373T500 364T502 357L510 367Q573 442 659 442Q713 442 746 415T780 336Q780 285 742 178T704 50Q705 36 709 31T724 26Q752 26 776 56T815 138Q818 149 821 151T837 153Q857 153 857 145Q857 144 853 130Q845 101 831 73T785 17T716 -10Q669 -10 648 17T627 73Q627 92 663 193T700 345Q700 404 656 404H651Q565 404 506 303L499 291L466 157Q433 26 428 16Q415 -11 385 -11Q372 -11 364 -4T353 8T350 18Q350 29 384 161L420 307Q423 322 423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 112 181Q151 335 151 342Q154 357 154 369Q154 405 129 405Q107 405 92 377T69 316T57 280Q55 278 41 278H27Q21 284 21 287Z"></path></g></g></g></g></svg></mjx-container> as well as the bias term <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.375ex;" xmlns="http://www.w3.org/2000/svg" width="2.608ex" height="1.377ex" role="img" focusable="false" viewBox="0 -443 1152.6 608.6"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="msub"><g data-mml-node="mi"><path data-c="1D464" d="M580 385Q580 406 599 424T641 443Q659 443 674 425T690 368Q690 339 671 253Q656 197 644 161T609 80T554 12T482 -11Q438 -11 404 5T355 48Q354 47 352 44Q311 -11 252 -11Q226 -11 202 -5T155 14T118 53T104 116Q104 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Q21 293 29 315T52 366T96 418T161 441Q204 441 227 416T250 358Q250 340 217 250T184 111Q184 65 205 46T258 26Q301 26 334 87L339 96V119Q339 122 339 128T340 136T341 143T342 152T345 165T348 182T354 206T362 238T373 281Q402 395 406 404Q419 431 449 431Q468 431 475 421T483 402Q483 389 454 274T422 142Q420 131 420 107V100Q420 85 423 71T442 42T487 26Q558 26 600 148Q609 171 620 213T632 273Q632 306 619 325T593 357T580 385Z"></path></g><g data-mml-node="mn" transform="translate(749,-150) scale(0.707)"><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"></path></g></g></g></g></svg></mjx-container>, which called <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.025ex;" xmlns="http://www.w3.org/2000/svg" width="0.971ex" height="1.595ex" role="img" focusable="false" viewBox="0 -694 429 705"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D44F" d="M73 647Q73 657 77 670T89 683Q90 683 161 688T234 694Q246 694 246 685T212 542Q204 508 195 472T180 418L176 399Q176 396 182 402Q231 442 283 442Q345 442 383 396T422 280Q422 169 343 79T173 -11Q123 -11 82 27T40 150V159Q40 180 48 217T97 414Q147 611 147 623T109 637Q104 637 101 637H96Q86 637 83 637T76 640T73 647ZM336 325V331Q336 405 275 405Q258 405 240 397T207 376T181 352T163 330L157 322L136 236Q114 150 114 114Q114 66 138 42Q154 26 178 26Q211 26 245 58Q270 81 285 114T318 219Q336 291 336 325Z"></path></g></g></g></svg></mjx-container> before. Same way, use <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: 0;" xmlns="http://www.w3.org/2000/svg" width="1.373ex" height="1.005ex" role="img" focusable="false" viewBox="0 -444 607 444"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="1D431" d="M227 0Q212 3 121 3Q40 3 28 0H21V62H117L245 213L109 382H26V444H34Q49 441 143 441Q247 441 265 444H274V382H246L281 339Q315 297 316 297Q320 297 354 341L389 382H352V444H360Q375 441 466 441Q547 441 559 444H566V382H471L355 246L504 63L545 62H586V0H578Q563 3 469 3Q365 3 347 0H338V62H366Q366 63 326 112T285 163L198 63L217 62H235V0H227Z"></path></g></g></g></g></svg></mjx-container> to represent all the feature values <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.339ex;" xmlns="http://www.w3.org/2000/svg" width="2.282ex" height="1.339ex" role="img" focusable="false" viewBox="0 -442 1008.6 592"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="msub"><g data-mml-node="mi"><path data-c="1D465" d="M52 289Q59 331 106 386T222 442Q257 442 286 424T329 379Q371 442 430 442Q467 442 494 420T522 361Q522 332 508 314T481 292T458 288Q439 288 427 299T415 328Q415 374 465 391Q454 404 425 404Q412 404 406 402Q368 386 350 336Q290 115 290 78Q290 50 306 38T341 26Q378 26 414 59T463 140Q466 150 469 151T485 153H489Q504 153 504 145Q504 144 502 134Q486 77 440 33T333 -11Q263 -11 227 52Q186 -10 133 -10H127Q78 -10 57 16T35 71Q35 103 54 123T99 143Q142 143 142 101Q142 81 130 66T107 46T94 41L91 40Q91 39 97 36T113 29T132 26Q168 26 194 71Q203 87 217 139T245 247T261 313Q266 340 266 352Q266 380 251 392T217 404Q177 404 142 372T93 290Q91 281 88 280T72 278H58Q52 284 52 289Z"></path></g><g data-mml-node="mn" transform="translate(605,-150) scale(0.707)"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path></g></g></g></g></svg></mjx-container> to <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.357ex;" xmlns="http://www.w3.org/2000/svg" width="2.887ex" height="1.357ex" role="img" focusable="false" viewBox="0 -442 1275.8 599.8"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="msub"><g data-mml-node="mi"><path data-c="1D465" d="M52 289Q59 331 106 386T222 442Q257 442 286 424T329 379Q371 442 430 442Q467 442 494 420T522 361Q522 332 508 314T481 292T458 288Q439 288 427 299T415 328Q415 374 465 391Q454 404 425 404Q412 404 406 402Q368 386 350 336Q290 115 290 78Q290 50 306 38T341 26Q378 26 414 59T463 140Q466 150 469 151T485 153H489Q504 153 504 145Q504 144 502 134Q486 77 440 33T333 -11Q263 -11 227 52Q186 -10 133 -10H127Q78 -10 57 16T35 71Q35 103 54 123T99 143Q142 143 142 101Q142 81 130 66T107 46T94 41L91 40Q91 39 97 36T113 29T132 26Q168 26 194 71Q203 87 217 139T245 247T261 313Q266 340 266 352Q266 380 251 392T217 404Q177 404 142 372T93 290Q91 281 88 280T72 278H58Q52 284 52 289Z"></path></g><g data-mml-node="mi" transform="translate(605,-150) scale(0.707)"><path data-c="1D45A" d="M21 287Q22 293 24 303T36 341T56 388T88 425T132 442T175 435T205 417T221 395T229 376L231 369Q231 367 232 367L243 378Q303 442 384 442Q401 442 415 440T441 433T460 423T475 411T485 398T493 385T497 373T500 364T502 357L510 367Q573 442 659 442Q713 442 746 415T780 336Q780 285 742 178T704 50Q705 36 709 31T724 26Q752 26 776 56T815 138Q818 149 821 151T837 153Q857 153 857 145Q857 144 853 130Q845 101 831 73T785 17T716 -10Q669 -10 648 17T627 73Q627 92 663 193T700 345Q700 404 656 404H651Q565 404 506 303L499 291L466 157Q433 26 428 16Q415 -11 385 -11Q372 -11 364 -4T353 8T350 18Q350 29 384 161L420 307Q423 322 423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 112 181Q151 335 151 342Q154 357 154 369Q154 405 129 405Q107 405 92 377T69 316T57 280Q55 278 41 278H27Q21 284 21 287Z"></path></g></g></g></g></svg></mjx-container> with <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.375ex;" xmlns="http://www.w3.org/2000/svg" width="2.282ex" height="1.375ex" role="img" focusable="false" viewBox="0 -442 1008.6 607.6"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="msub"><g data-mml-node="mi"><path data-c="1D465" d="M52 289Q59 331 106 386T222 442Q257 442 286 424T329 379Q371 442 430 442Q467 442 494 420T522 361Q522 332 508 314T481 292T458 288Q439 288 427 299T415 328Q415 374 465 391Q454 404 425 404Q412 404 406 402Q368 386 350 336Q290 115 290 78Q290 50 306 38T341 26Q378 26 414 59T463 140Q466 150 469 151T485 153H489Q504 153 504 145Q504 144 502 134Q486 77 440 33T333 -11Q263 -11 227 52Q186 -10 133 -10H127Q78 -10 57 16T35 71Q35 103 54 123T99 143Q142 143 142 101Q142 81 130 66T107 46T94 41L91 40Q91 39 97 36T113 29T132 26Q168 26 194 71Q203 87 217 139T245 247T261 313Q266 340 266 352Q266 380 251 392T217 404Q177 404 142 372T93 290Q91 281 88 280T72 278H58Q52 284 52 289Z"></path></g><g data-mml-node="mn" transform="translate(605,-150) scale(0.707)"><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"></path></g></g></g></g></svg></mjx-container> is equal to 1. Then we can transform linear regression model to the vectorized form:</p><p><mjx-container class="MathJax" jax="SVG" display="true"><svg style="vertical-align: -0.566ex;" xmlns="http://www.w3.org/2000/svg" width="17.721ex" height="2.398ex" role="img" focusable="false" viewBox="0 -810 7832.8 1060"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mover"><g data-mml-node="mi"><path data-c="1D466" d="M21 287Q21 301 36 335T84 406T158 442Q199 442 224 419T250 355Q248 336 247 334Q247 331 231 288T198 191T182 105Q182 62 196 45T238 27Q261 27 281 38T312 61T339 94Q339 95 344 114T358 173T377 247Q415 397 419 404Q432 431 462 431Q475 431 483 424T494 412T496 403Q496 390 447 193T391 -23Q363 -106 294 -155T156 -205Q111 -205 77 -183T43 -117Q43 -95 50 -80T69 -58T89 -48T106 -45Q150 -45 150 -87Q150 -107 138 -122T115 -142T102 -147L99 -148Q101 -153 118 -160T152 -167H160Q177 -167 186 -165Q219 -156 247 -127T290 -65T313 -9T321 21L315 17Q309 13 296 6T270 -6Q250 -11 231 -11Q185 -11 150 11T104 82Q103 89 103 113Q103 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Z"></path></g><g data-mml-node="mo" transform="translate(300.6,16) translate(-250 0)"><path data-c="5E" d="M112 560L249 694L257 686Q387 562 387 560L361 531Q359 532 303 581L250 627L195 580Q182 569 169 557T148 538L140 532Q138 530 125 546L112 560Z"></path></g></g></g><g data-mml-node="mo" transform="translate(767.8,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="msub" transform="translate(1823.6,0)"><g data-mml-node="mi"><path data-c="210E" d="M137 683Q138 683 209 688T282 694Q294 694 294 685Q294 674 258 534Q220 386 220 383Q220 381 227 388Q288 442 357 442Q411 442 444 415T478 336Q478 285 440 178T402 50Q403 36 407 31T422 26Q450 26 474 56T513 138Q516 149 519 151T535 153Q555 153 555 145Q555 144 551 130Q535 71 500 33Q466 -10 419 -10H414Q367 -10 346 17T325 74Q325 90 361 192T398 345Q398 404 354 404H349Q266 404 205 306L198 293L164 158Q132 28 127 16Q114 -11 83 -11Q69 -11 59 -2T48 16Q48 30 121 320L195 616Q195 629 188 632T149 637H128Q122 643 122 645T124 664Q129 683 137 683Z"></path></g><g data-mml-node="mi" transform="translate(609,-150) scale(0.707)"><path data-c="1D464" d="M580 385Q580 406 599 424T641 443Q659 443 674 425T690 368Q690 339 671 253Q656 197 644 161T609 80T554 12T482 -11Q438 -11 404 5T355 48Q354 47 352 44Q311 -11 252 -11Q226 -11 202 -5T155 14T118 53T104 116Q104 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Q21 293 29 315T52 366T96 418T161 441Q204 441 227 416T250 358Q250 340 217 250T184 111Q184 65 205 46T258 26Q301 26 334 87L339 96V119Q339 122 339 128T340 136T341 143T342 152T345 165T348 182T354 206T362 238T373 281Q402 395 406 404Q419 431 449 431Q468 431 475 421T483 402Q483 389 454 274T422 142Q420 131 420 107V100Q420 85 423 71T442 42T487 26Q558 26 600 148Q609 171 620 213T632 273Q632 306 619 325T593 357T580 385Z"></path></g></g><g data-mml-node="mo" transform="translate(2988.8,0)"><path data-c="28" d="M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"></path></g><g data-mml-node="mi" transform="translate(3377.8,0)"><path data-c="1D465" d="M52 289Q59 331 106 386T222 442Q257 442 286 424T329 379Q371 442 430 442Q467 442 494 420T522 361Q522 332 508 314T481 292T458 288Q439 288 427 299T415 328Q415 374 465 391Q454 404 425 404Q412 404 406 402Q368 386 350 336Q290 115 290 78Q290 50 306 38T341 26Q378 26 414 59T463 140Q466 150 469 151T485 153H489Q504 153 504 145Q504 144 502 134Q486 77 440 33T333 -11Q263 -11 227 52Q186 -10 133 -10H127Q78 -10 57 16T35 71Q35 103 54 123T99 143Q142 143 142 101Q142 81 130 66T107 46T94 41L91 40Q91 39 97 36T113 29T132 26Q168 26 194 71Q203 87 217 139T245 247T261 313Q266 340 266 352Q266 380 251 392T217 404Q177 404 142 372T93 290Q91 281 88 280T72 278H58Q52 284 52 289Z"></path></g><g data-mml-node="mo" transform="translate(3949.8,0)"><path data-c="29" d="M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"></path></g><g data-mml-node="mo" transform="translate(4616.6,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="TeXAtom" data-mjx-texclass="ORD" transform="translate(5672.4,0)"><g data-mml-node="mi"><path data-c="1D430" d="M624 444Q636 441 722 441Q797 441 800 444H805V382H741L593 11Q592 10 590 8T586 4T584 2T581 0T579 -2T575 -3T571 -3T567 -4T561 -4T553 -4H542Q525 -4 518 6T490 70Q474 110 463 137L415 257L367 137Q357 111 341 72Q320 17 313 7T289 -4H277Q259 -4 253 -2T238 11L90 382H25V444H32Q47 441 140 441Q243 441 261 444H270V382H222L310 164L382 342L366 382H303V444H310Q322 441 407 441Q508 441 523 444H531V382H506Q481 382 481 380Q482 376 529 259T577 142L674 382H617V444H624Z"></path></g></g><g data-mml-node="mo" transform="translate(6725.6,0)"><path data-c="22C5" d="M78 250Q78 274 95 292T138 310Q162 310 180 294T199 251Q199 226 182 208T139 190T96 207T78 250Z"></path></g><g data-mml-node="TeXAtom" data-mjx-texclass="ORD" transform="translate(7225.8,0)"><g data-mml-node="mi"><path data-c="1D431" d="M227 0Q212 3 121 3Q40 3 28 0H21V62H117L245 213L109 382H26V444H34Q49 441 143 441Q247 441 265 444H274V382H246L281 339Q315 297 316 297Q320 297 354 341L389 382H352V444H360Q375 441 466 441Q547 441 559 444H566V382H471L355 246L504 63L545 62H586V0H578Q563 3 469 3Q365 3 347 0H338V62H366Q366 63 326 112T285 163L198 63L217 62H235V0H227Z"></path></g></g></g></g></svg></mjx-container></p><p>Thus our loss function of vectorized form is:</p><p><mjx-container class="MathJax" jax="SVG" display="true"><svg style="vertical-align: -2.819ex;" xmlns="http://www.w3.org/2000/svg" width="28.125ex" height="6.354ex" role="img" focusable="false" viewBox="0 -1562.5 12431.3 2808.5"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="msup"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="1D430" d="M624 444Q636 441 722 441Q797 441 800 444H805V382H741L593 11Q592 10 590 8T586 4T584 2T581 0T579 -2T575 -3T571 -3T567 -4T561 -4T553 -4H542Q525 -4 518 6T490 70Q474 110 463 137L415 257L367 137Q357 111 341 72Q320 17 313 7T289 -4H277Q259 -4 253 -2T238 11L90 382H25V444H32Q47 441 140 441Q243 441 261 444H270V382H222L310 164L382 342L366 382H303V444H310Q322 441 407 441Q508 441 523 444H531V382H506Q481 382 481 380Q482 376 529 259T577 142L674 382H617V444H624Z"></path></g></g><g data-mml-node="mo" transform="translate(864,413) scale(0.707)"><path data-c="2217" d="M229 286Q216 420 216 436Q216 454 240 464Q241 464 245 464T251 465Q263 464 273 456T283 436Q283 419 277 356T270 286L328 328Q384 369 389 372T399 375Q412 375 423 365T435 338Q435 325 425 315Q420 312 357 282T289 250L355 219L425 184Q434 175 434 161Q434 146 425 136T401 125Q393 125 383 131T328 171L270 213Q283 79 283 63Q283 53 276 44T250 35Q231 35 224 44T216 63Q216 80 222 143T229 213L171 171Q115 130 110 127Q106 124 100 124Q87 124 76 134T64 161Q64 166 64 169T67 175T72 181T81 188T94 195T113 204T138 215T170 230T210 250L74 315Q65 324 65 338Q65 353 74 363T98 374Q106 374 116 368T171 328L229 286Z"></path></g></g><g data-mml-node="mo" transform="translate(1545.3,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mfrac" transform="translate(2601.1,0)"><g data-mml-node="mn" transform="translate(270,676)"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path></g><g data-mml-node="mi" transform="translate(220,-686)"><path data-c="1D45B" d="M21 287Q22 293 24 303T36 341T56 388T89 425T135 442Q171 442 195 424T225 390T231 369Q231 367 232 367L243 378Q304 442 382 442Q436 442 469 415T503 336T465 179T427 52Q427 26 444 26Q450 26 453 27Q482 32 505 65T540 145Q542 153 560 153Q580 153 580 145Q580 144 576 130Q568 101 554 73T508 17T439 -10Q392 -10 371 17T350 73Q350 92 386 193T423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 112 180T152 343Q153 348 153 366Q153 405 129 405Q91 405 66 305Q60 285 60 284Q58 278 41 278H27Q21 284 21 287Z"></path></g><rect width="800" height="60" x="120" y="220"></rect></g><g data-mml-node="munder" transform="translate(3807.8,0)"><g data-mml-node="mo"><path data-c="6D" d="M41 46H55Q94 46 102 60V68Q102 77 102 91T102 122T103 161T103 203Q103 234 103 269T102 328V351Q99 370 88 376T43 385H25V408Q25 431 27 431L37 432Q47 433 65 434T102 436Q119 437 138 438T167 441T178 442H181V402Q181 364 182 364T187 369T199 384T218 402T247 421T285 437Q305 442 336 442Q351 442 364 440T387 434T406 426T421 417T432 406T441 395T448 384T452 374T455 366L457 361L460 365Q463 369 466 373T475 384T488 397T503 410T523 422T546 432T572 439T603 442Q729 442 740 329Q741 322 741 190V104Q741 66 743 59T754 49Q775 46 803 46H819V0H811L788 1Q764 2 737 2T699 3Q596 3 587 0H579V46H595Q656 46 656 62Q657 64 657 200Q656 335 655 343Q649 371 635 385T611 402T585 404Q540 404 506 370Q479 343 472 315T464 232V168V108Q464 78 465 68T468 55T477 49Q498 46 526 46H542V0H534L510 1Q487 2 460 2T422 3Q319 3 310 0H302V46H318Q379 46 379 62Q380 64 380 200Q379 335 378 343Q372 371 358 385T334 402T308 404Q263 404 229 370Q202 343 195 315T187 232V168V108Q187 78 188 68T191 55T200 49Q221 46 249 46H265V0H257L234 1Q210 2 183 2T145 3Q42 3 33 0H25V46H41Z"></path><path data-c="69" d="M69 609Q69 637 87 653T131 669Q154 667 171 652T188 609Q188 579 171 564T129 549Q104 549 87 564T69 609ZM247 0Q232 3 143 3Q132 3 106 3T56 1L34 0H26V46H42Q70 46 91 49Q100 53 102 60T104 102V205V293Q104 345 102 359T88 378Q74 385 41 385H30V408Q30 431 32 431L42 432Q52 433 70 434T106 436Q123 437 142 438T171 441T182 442H185V62Q190 52 197 50T232 46H255V0H247Z" transform="translate(833,0)"></path><path data-c="6E" d="M41 46H55Q94 46 102 60V68Q102 77 102 91T102 122T103 161T103 203Q103 234 103 269T102 328V351Q99 370 88 376T43 385H25V408Q25 431 27 431L37 432Q47 433 65 434T102 436Q119 437 138 438T167 441T178 442H181V402Q181 364 182 364T187 369T199 384T218 402T247 421T285 437Q305 442 336 442Q450 438 463 329Q464 322 464 190V104Q464 66 466 59T477 49Q498 46 526 46H542V0H534L510 1Q487 2 460 2T422 3Q319 3 310 0H302V46H318Q379 46 379 62Q380 64 380 200Q379 335 378 343Q372 371 358 385T334 402T308 404Q263 404 229 370Q202 343 195 315T187 232V168V108Q187 78 188 68T191 55T200 49Q221 46 249 46H265V0H257L234 1Q210 2 183 2T145 3Q42 3 33 0H25V46H41Z" transform="translate(1111,0)"></path></g><g data-mml-node="TeXAtom" transform="translate(539.7,-600) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="1D430" d="M624 444Q636 441 722 441Q797 441 800 444H805V382H741L593 11Q592 10 590 8T586 4T584 2T581 0T579 -2T575 -3T571 -3T567 -4T561 -4T553 -4H542Q525 -4 518 6T490 70Q474 110 463 137L415 257L367 137Q357 111 341 72Q320 17 313 7T289 -4H277Q259 -4 253 -2T238 11L90 382H25V444H32Q47 441 140 441Q243 441 261 444H270V382H222L310 164L382 342L366 382H303V444H310Q322 441 407 441Q508 441 523 444H531V382H506Q481 382 481 380Q482 376 529 259T577 142L674 382H617V444H624Z"></path></g></g></g><g data-mml-node="munderover" transform="translate(5641.4,0)"><g data-mml-node="mo"><path data-c="2211" d="M60 948Q63 950 665 950H1267L1325 815Q1384 677 1388 669H1348L1341 683Q1320 724 1285 761Q1235 809 1174 838T1033 881T882 898T699 902H574H543H251L259 891Q722 258 724 252Q725 250 724 246Q721 243 460 -56L196 -356Q196 -357 407 -357Q459 -357 548 -357T676 -358Q812 -358 896 -353T1063 -332T1204 -283T1307 -196Q1328 -170 1348 -124H1388Q1388 -125 1381 -145T1356 -210T1325 -294L1267 -449L666 -450Q64 -450 61 -448Q55 -446 55 -439Q55 -437 57 -433L590 177Q590 178 557 222T452 366T322 544L56 909L55 924Q55 945 60 948Z"></path></g><g data-mml-node="TeXAtom" transform="translate(148.2,-1087.9) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="1D456" d="M184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Z"></path></g><g data-mml-node="mo" transform="translate(345,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mn" transform="translate(1123,0)"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path></g></g><g data-mml-node="TeXAtom" transform="translate(509.9,1150) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="1D45B" d="M21 287Q22 293 24 303T36 341T56 388T89 425T135 442Q171 442 195 424T225 390T231 369Q231 367 232 367L243 378Q304 442 382 442Q436 442 469 415T503 336T465 179T427 52Q427 26 444 26Q450 26 453 27Q482 32 505 65T540 145Q542 153 560 153Q580 153 580 145Q580 144 576 130Q568 101 554 73T508 17T439 -10Q392 -10 371 17T350 73Q350 92 386 193T423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 112 180T152 343Q153 348 153 366Q153 405 129 405Q91 405 66 305Q60 285 60 284Q58 278 41 278H27Q21 284 21 287Z"></path></g></g></g><g data-mml-node="mo" transform="translate(7085.4,0)"><path data-c="28" d="M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"></path></g><g data-mml-node="msup" transform="translate(7474.4,0)"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mover"><g data-mml-node="mi"><path data-c="1D466" d="M21 287Q21 301 36 335T84 406T158 442Q199 442 224 419T250 355Q248 336 247 334Q247 331 231 288T198 191T182 105Q182 62 196 45T238 27Q261 27 281 38T312 61T339 94Q339 95 344 114T358 173T377 247Q415 397 419 404Q432 431 462 431Q475 431 483 424T494 412T496 403Q496 390 447 193T391 -23Q363 -106 294 -155T156 -205Q111 -205 77 -183T43 -117Q43 -95 50 -80T69 -58T89 -48T106 -45Q150 -45 150 -87Q150 -107 138 -122T115 -142T102 -147L99 -148Q101 -153 118 -160T152 -167H160Q177 -167 186 -165Q219 -156 247 -127T290 -65T313 -9T321 21L315 17Q309 13 296 6T270 -6Q250 -11 231 -11Q185 -11 150 11T104 82Q103 89 103 113Q103 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Z"></path></g><g data-mml-node="mo" transform="translate(300.6,16) translate(-250 0)"><path data-c="5E" d="M112 560L249 694L257 686Q387 562 387 560L361 531Q359 532 303 581L250 627L195 580Q182 569 169 557T148 538L140 532Q138 530 125 546L112 560Z"></path></g></g></g><g data-mml-node="mi" transform="translate(523,413) scale(0.707)"><path data-c="1D456" d="M184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Z"></path></g></g><g data-mml-node="mo" transform="translate(8513.6,0)"><path data-c="2212" d="M84 237T84 250T98 270H679Q694 262 694 250T679 230H98Q84 237 84 250Z"></path></g><g data-mml-node="msup" transform="translate(9513.8,0)"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="1D430" d="M624 444Q636 441 722 441Q797 441 800 444H805V382H741L593 11Q592 10 590 8T586 4T584 2T581 0T579 -2T575 -3T571 -3T567 -4T561 -4T553 -4H542Q525 -4 518 6T490 70Q474 110 463 137L415 257L367 137Q357 111 341 72Q320 17 313 7T289 -4H277Q259 -4 253 -2T238 11L90 382H25V444H32Q47 441 140 441Q243 441 261 444H270V382H222L310 164L382 342L366 382H303V444H310Q322 441 407 441Q508 441 523 444H531V382H506Q481 382 481 380Q482 376 529 259T577 142L674 382H617V444H624Z"></path></g></g><g data-mml-node="mi" transform="translate(864,413) scale(0.707)"><path data-c="1D456" d="M184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Z"></path></g></g><g data-mml-node="msup" transform="translate(10671.8,0)"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="1D431" d="M227 0Q212 3 121 3Q40 3 28 0H21V62H117L245 213L109 382H26V444H34Q49 441 143 441Q247 441 265 444H274V382H246L281 339Q315 297 316 297Q320 297 354 341L389 382H352V444H360Q375 441 466 441Q547 441 559 444H566V382H471L355 246L504 63L545 62H586V0H578Q563 3 469 3Q365 3 347 0H338V62H366Q366 63 326 112T285 163L198 63L217 62H235V0H227Z"></path></g></g><g data-mml-node="mi" transform="translate(640,413) scale(0.707)"><path data-c="1D456" d="M184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Z"></path></g></g><g data-mml-node="msup" transform="translate(11605.7,0)"><g data-mml-node="mo"><path data-c="29" d="M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"></path></g><g data-mml-node="mn" transform="translate(422,413) scale(0.707)"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g></g></g></g></svg></mjx-container></p><p>Notice that <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: 0;" xmlns="http://www.w3.org/2000/svg" width="1.88ex" height="1.005ex" role="img" focusable="false" viewBox="0 -444 831 444"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="1D430" d="M624 444Q636 441 722 441Q797 441 800 444H805V382H741L593 11Q592 10 590 8T586 4T584 2T581 0T579 -2T575 -3T571 -3T567 -4T561 -4T553 -4H542Q525 -4 518 6T490 70Q474 110 463 137L415 257L367 137Q357 111 341 72Q320 17 313 7T289 -4H277Q259 -4 253 -2T238 11L90 382H25V444H32Q47 441 140 441Q243 441 261 444H270V382H222L310 164L382 342L366 382H303V444H310Q322 441 407 441Q508 441 523 444H531V382H506Q481 382 481 380Q482 376 529 259T577 142L674 382H617V444H624Z"></path></g></g></g></g></svg></mjx-container> actually is <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.025ex;" xmlns="http://www.w3.org/2000/svg" width="5.481ex" height="1.077ex" role="img" focusable="false" viewBox="0 -465 2422.4 476"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D45B" d="M21 287Q22 293 24 303T36 341T56 388T89 425T135 442Q171 442 195 424T225 390T231 369Q231 367 232 367L243 378Q304 442 382 442Q436 442 469 415T503 336T465 179T427 52Q427 26 444 26Q450 26 453 27Q482 32 505 65T540 145Q542 153 560 153Q580 153 580 145Q580 144 576 130Q568 101 554 73T508 17T439 -10Q392 -10 371 17T350 73Q350 92 386 193T423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 112 180T152 343Q153 348 153 366Q153 405 129 405Q91 405 66 305Q60 285 60 284Q58 278 41 278H27Q21 284 21 287Z"></path></g><g data-mml-node="mo" transform="translate(822.2,0)"><path data-c="2217" d="M229 286Q216 420 216 436Q216 454 240 464Q241 464 245 464T251 465Q263 464 273 456T283 436Q283 419 277 356T270 286L328 328Q384 369 389 372T399 375Q412 375 423 365T435 338Q435 325 425 315Q420 312 357 282T289 250L355 219L425 184Q434 175 434 161Q434 146 425 136T401 125Q393 125 383 131T328 171L270 213Q283 79 283 63Q283 53 276 44T250 35Q231 35 224 44T216 63Q216 80 222 143T229 213L171 171Q115 130 110 127Q106 124 100 124Q87 124 76 134T64 161Q64 166 64 169T67 175T72 181T81 188T94 195T113 204T138 215T170 230T210 250L74 315Q65 324 65 338Q65 353 74 363T98 374Q106 374 116 368T171 328L229 286Z"></path></g><g data-mml-node="mi" transform="translate(1544.4,0)"><path data-c="1D45A" d="M21 287Q22 293 24 303T36 341T56 388T88 425T132 442T175 435T205 417T221 395T229 376L231 369Q231 367 232 367L243 378Q303 442 384 442Q401 442 415 440T441 433T460 423T475 411T485 398T493 385T497 373T500 364T502 357L510 367Q573 442 659 442Q713 442 746 415T780 336Q780 285 742 178T704 50Q705 36 709 31T724 26Q752 26 776 56T815 138Q818 149 821 151T837 153Q857 153 857 145Q857 144 853 130Q845 101 831 73T785 17T716 -10Q669 -10 648 17T627 73Q627 92 663 193T700 345Q700 404 656 404H651Q565 404 506 303L499 291L466 157Q433 26 428 16Q415 -11 385 -11Q372 -11 364 -4T353 8T350 18Q350 29 384 161L420 307Q423 322 423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 112 181Q151 335 151 342Q154 357 154 369Q154 405 129 405Q107 405 92 377T69 316T57 280Q55 278 41 278H27Q21 284 21 287Z"></path></g></g></g></svg></mjx-container>-dimensional matrix.</p><p>In addition, deep learning depends on matrix calculations especially, it will take advantage of GPU to speed up model training.</p><h3 id="Closed-form-solution"><a href="#Closed-form-solution" class="headerlink" title="Closed-form solution"></a>Closed-form solution</h3><p>As we already know the values of <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: 0;" xmlns="http://www.w3.org/2000/svg" width="1.373ex" height="1.005ex" role="img" focusable="false" viewBox="0 -444 607 444"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="1D431" d="M227 0Q212 3 121 3Q40 3 28 0H21V62H117L245 213L109 382H26V444H34Q49 441 143 441Q247 441 265 444H274V382H246L281 339Q315 297 316 297Q320 297 354 341L389 382H352V444H360Q375 441 466 441Q547 441 559 444H566V382H471L355 246L504 63L545 62H586V0H578Q563 3 469 3Q365 3 347 0H338V62H366Q366 63 326 112T285 163L198 63L217 62H235V0H227Z"></path></g></g></g></g></svg></mjx-container> and <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.464ex;" xmlns="http://www.w3.org/2000/svg" width="1.109ex" height="2.296ex" role="img" focusable="false" viewBox="0 -810 490 1015"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mover"><g data-mml-node="mi"><path data-c="1D466" d="M21 287Q21 301 36 335T84 406T158 442Q199 442 224 419T250 355Q248 336 247 334Q247 331 231 288T198 191T182 105Q182 62 196 45T238 27Q261 27 281 38T312 61T339 94Q339 95 344 114T358 173T377 247Q415 397 419 404Q432 431 462 431Q475 431 483 424T494 412T496 403Q496 390 447 193T391 -23Q363 -106 294 -155T156 -205Q111 -205 77 -183T43 -117Q43 -95 50 -80T69 -58T89 -48T106 -45Q150 -45 150 -87Q150 -107 138 -122T115 -142T102 -147L99 -148Q101 -153 118 -160T152 -167H160Q177 -167 186 -165Q219 -156 247 -127T290 -65T313 -9T321 21L315 17Q309 13 296 6T270 -6Q250 -11 231 -11Q185 -11 150 11T104 82Q103 89 103 113Q103 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Z"></path></g><g data-mml-node="mo" transform="translate(300.6,16) translate(-250 0)"><path data-c="5E" d="M112 560L249 694L257 686Q387 562 387 560L361 531Q359 532 303 581L250 627L195 580Q182 569 169 557T148 538L140 532Q138 530 125 546L112 560Z"></path></g></g></g></g></g></svg></mjx-container>, it’s easy to calculate the <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: 0;" xmlns="http://www.w3.org/2000/svg" width="1.88ex" height="1.005ex" role="img" focusable="false" viewBox="0 -444 831 444"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="1D430" d="M624 444Q636 441 722 441Q797 441 800 444H805V382H741L593 11Q592 10 590 8T586 4T584 2T581 0T579 -2T575 -3T571 -3T567 -4T561 -4T553 -4H542Q525 -4 518 6T490 70Q474 110 463 137L415 257L367 137Q357 111 341 72Q320 17 313 7T289 -4H277Q259 -4 253 -2T238 11L90 382H25V444H32Q47 441 140 441Q243 441 261 444H270V382H222L310 164L382 342L366 382H303V444H310Q322 441 407 441Q508 441 523 444H531V382H506Q481 382 481 380Q482 376 529 259T577 142L674 382H617V444H624Z"></path></g></g></g></g></svg></mjx-container> by Normal Equation:</p><p><mjx-container class="MathJax" jax="SVG" display="true"><svg style="vertical-align: -0.566ex;" xmlns="http://www.w3.org/2000/svg" width="17.011ex" height="2.583ex" role="img" focusable="false" viewBox="0 -891.7 7518.8 1141.7"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mover"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="1D430" d="M624 444Q636 441 722 441Q797 441 800 444H805V382H741L593 11Q592 10 590 8T586 4T584 2T581 0T579 -2T575 -3T571 -3T567 -4T561 -4T553 -4H542Q525 -4 518 6T490 70Q474 110 463 137L415 257L367 137Q357 111 341 72Q320 17 313 7T289 -4H277Q259 -4 253 -2T238 11L90 382H25V444H32Q47 441 140 441Q243 441 261 444H270V382H222L310 164L382 342L366 382H303V444H310Q322 441 407 441Q508 441 523 444H531V382H506Q481 382 481 380Q482 376 529 259T577 142L674 382H617V444H624Z"></path></g></g><g data-mml-node="mo" transform="translate(415.5,18) translate(-250 0)"><path data-c="5E" d="M112 560L249 694L257 686Q387 562 387 560L361 531Q359 532 303 581L250 627L195 580Q182 569 169 557T148 538L140 532Q138 530 125 546L112 560Z"></path></g></g></g><g data-mml-node="mo" transform="translate(1108.8,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mo" transform="translate(2164.6,0)"><path data-c="28" d="M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"></path></g><g data-mml-node="msup" transform="translate(2553.6,0)"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="1D431" d="M227 0Q212 3 121 3Q40 3 28 0H21V62H117L245 213L109 382H26V444H34Q49 441 143 441Q247 441 265 444H274V382H246L281 339Q315 297 316 297Q320 297 354 341L389 382H352V444H360Q375 441 466 441Q547 441 559 444H566V382H471L355 246L504 63L545 62H586V0H578Q563 3 469 3Q365 3 347 0H338V62H366Q366 63 326 112T285 163L198 63L217 62H235V0H227Z"></path></g></g><g data-mml-node="mi" transform="translate(640,413) scale(0.707)"><path data-c="1D447" d="M40 437Q21 437 21 445Q21 450 37 501T71 602L88 651Q93 669 101 677H569H659Q691 677 697 676T704 667Q704 661 687 553T668 444Q668 437 649 437Q640 437 637 437T631 442L629 445Q629 451 635 490T641 551Q641 586 628 604T573 629Q568 630 515 631Q469 631 457 630T439 622Q438 621 368 343T298 60Q298 48 386 46Q418 46 427 45T436 36Q436 31 433 22Q429 4 424 1L422 0Q419 0 415 0Q410 0 363 1T228 2Q99 2 64 0H49Q43 6 43 9T45 27Q49 40 55 46H83H94Q174 46 189 55Q190 56 191 56Q196 59 201 76T241 233Q258 301 269 344Q339 619 339 625Q339 630 310 630H279Q212 630 191 624Q146 614 121 583T67 467Q60 445 57 441T43 437H40Z"></path></g></g><g data-mml-node="TeXAtom" data-mjx-texclass="ORD" transform="translate(3741.4,0)"><g data-mml-node="mi"><path data-c="1D431" d="M227 0Q212 3 121 3Q40 3 28 0H21V62H117L245 213L109 382H26V444H34Q49 441 143 441Q247 441 265 444H274V382H246L281 339Q315 297 316 297Q320 297 354 341L389 382H352V444H360Q375 441 466 441Q547 441 559 444H566V382H471L355 246L504 63L545 62H586V0H578Q563 3 469 3Q365 3 347 0H338V62H366Q366 63 326 112T285 163L198 63L217 62H235V0H227Z"></path></g></g><g data-mml-node="msup" transform="translate(4348.4,0)"><g data-mml-node="mo"><path data-c="29" d="M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"></path></g><g data-mml-node="TeXAtom" transform="translate(422,413) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mo"><path data-c="2212" d="M84 237T84 250T98 270H679Q694 262 694 250T679 230H98Q84 237 84 250Z"></path></g><g data-mml-node="mn" transform="translate(778,0)"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path></g></g></g><g data-mml-node="msup" transform="translate(5724,0)"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="1D431" d="M227 0Q212 3 121 3Q40 3 28 0H21V62H117L245 213L109 382H26V444H34Q49 441 143 441Q247 441 265 444H274V382H246L281 339Q315 297 316 297Q320 297 354 341L389 382H352V444H360Q375 441 466 441Q547 441 559 444H566V382H471L355 246L504 63L545 62H586V0H578Q563 3 469 3Q365 3 347 0H338V62H366Q366 63 326 112T285 163L198 63L217 62H235V0H227Z"></path></g></g><g data-mml-node="mi" transform="translate(640,413) scale(0.707)"><path data-c="1D447" d="M40 437Q21 437 21 445Q21 450 37 501T71 602L88 651Q93 669 101 677H569H659Q691 677 697 676T704 667Q704 661 687 553T668 444Q668 437 649 437Q640 437 637 437T631 442L629 445Q629 451 635 490T641 551Q641 586 628 604T573 629Q568 630 515 631Q469 631 457 630T439 622Q438 621 368 343T298 60Q298 48 386 46Q418 46 427 45T436 36Q436 31 433 22Q429 4 424 1L422 0Q419 0 415 0Q410 0 363 1T228 2Q99 2 64 0H49Q43 6 43 9T45 27Q49 40 55 46H83H94Q174 46 189 55Q190 56 191 56Q196 59 201 76T241 233Q258 301 269 344Q339 619 339 625Q339 630 310 630H279Q212 630 191 624Q146 614 121 583T67 467Q60 445 57 441T43 437H40Z"></path></g></g><g data-mml-node="TeXAtom" data-mjx-texclass="ORD" transform="translate(6911.8,0)"><g data-mml-node="mi"><path data-c="1D432" d="M84 -102Q84 -110 87 -119T102 -138T133 -149Q148 -148 162 -143T186 -131T206 -114T222 -95T234 -76T243 -59T249 -45T252 -37L269 0L96 382H26V444H34Q49 441 146 441Q252 441 270 444H279V382H255Q232 382 232 380L337 151L442 382H394V444H401Q413 441 495 441Q568 441 574 444H580V382H510L406 152Q298 -84 297 -87Q269 -139 225 -169T131 -200Q85 -200 54 -172T23 -100Q23 -64 44 -50T87 -35Q111 -35 130 -50T152 -92V-100H84V-102Z"></path></g></g></g></g></svg></mjx-container></p><p>Check out this <a href="https://www.coursera.org/lecture/machine-learning/normal-equation-2DKxQ">online course video</a> (about 16min) from Andrew Ng to learn more.</p><p>Yes we’re done. Our introduction is here 🤣🤣🤣 .</p><p><em>Question: How to deal with complex models? How about computation burden?</em></p><h3 id="Gradient-Descent"><a href="#Gradient-Descent" class="headerlink" title="Gradient Descent"></a>Gradient Descent</h3><blockquote><p>Gradient Descent is a <strong>generic optimization algorithm</strong> capable of finding optimal solution to a wide range of problems.</p><p>Gradient descent is a <strong>first-order iterative optimization algorithm</strong> for finding a <strong>local minimum</strong> of a differentiable function.</p></blockquote><p>Our loss function is differentiable indeed, so we can use it to find the local minimum (also the global minimum in this case). Let’s get it by one chart.</p><p><img data-src="https://cdn.joouis.com/hands-on-linear-regression-for-ml-2.png" alt="Gradient Descent, Hands-On Machine Learning by Aurélien Géron"></p><p>So here is the last equation in this post (I promise, typing these LaTeX expressions really wore me out 🥲 ), the gradient of our loss function:</p><p><mjx-container class="MathJax" jax="SVG" display="true"><svg style="vertical-align: -2.819ex;" xmlns="http://www.w3.org/2000/svg" width="36.73ex" height="6.354ex" role="img" focusable="false" viewBox="0 -1562.5 16234.5 2808.5"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="2207" d="M46 676Q46 679 51 683H781Q786 679 786 676Q786 674 617 326T444 -26Q439 -33 416 -33T388 -26Q385 -22 216 326T46 676ZM697 596Q697 597 445 597T193 596Q195 591 319 336T445 80L697 596Z"></path></g><g data-mml-node="TeXAtom" data-mjx-texclass="ORD" transform="translate(833,0)"><g data-mml-node="mi"><path data-c="1D43F" d="M228 637Q194 637 192 641Q191 643 191 649Q191 673 202 682Q204 683 217 683Q271 680 344 680Q485 680 506 683H518Q524 677 524 674T522 656Q517 641 513 637H475Q406 636 394 628Q387 624 380 600T313 336Q297 271 279 198T252 88L243 52Q243 48 252 48T311 46H328Q360 46 379 47T428 54T478 72T522 106T564 161Q580 191 594 228T611 270Q616 273 628 273H641Q647 264 647 262T627 203T583 83T557 9Q555 4 553 3T537 0T494 -1Q483 -1 418 -1T294 0H116Q32 0 32 10Q32 17 34 24Q39 43 44 45Q48 46 59 46H65Q92 46 125 49Q139 52 144 61Q147 65 216 339T285 628Q285 635 228 637Z"></path></g></g><g data-mml-node="mo" transform="translate(1791.8,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mfrac" transform="translate(2847.6,0)"><g data-mml-node="mrow" transform="translate(295,676)"><g data-mml-node="mi"><path data-c="1D715" d="M202 508Q179 508 169 520T158 547Q158 557 164 577T185 624T230 675T301 710L333 715H345Q378 715 384 714Q447 703 489 661T549 568T566 457Q566 362 519 240T402 53Q321 -22 223 -22Q123 -22 73 56Q42 102 42 148V159Q42 276 129 370T322 465Q383 465 414 434T455 367L458 378Q478 461 478 515Q478 603 437 639T344 676Q266 676 223 612Q264 606 264 572Q264 547 246 528T202 508ZM430 306Q430 372 401 400T333 428Q270 428 222 382Q197 354 183 323T150 221Q132 149 132 116Q132 21 232 21Q244 21 250 22Q327 35 374 112Q389 137 409 196T430 306Z"></path></g><g data-mml-node="TeXAtom" data-mjx-texclass="ORD" transform="translate(566,0)"><g data-mml-node="mi"><path data-c="1D43F" d="M228 637Q194 637 192 641Q191 643 191 649Q191 673 202 682Q204 683 217 683Q271 680 344 680Q485 680 506 683H518Q524 677 524 674T522 656Q517 641 513 637H475Q406 636 394 628Q387 624 380 600T313 336Q297 271 279 198T252 88L243 52Q243 48 252 48T311 46H328Q360 46 379 47T428 54T478 72T522 106T564 161Q580 191 594 228T611 270Q616 273 628 273H641Q647 264 647 262T627 203T583 83T557 9Q555 4 553 3T537 0T494 -1Q483 -1 418 -1T294 0H116Q32 0 32 10Q32 17 34 24Q39 43 44 45Q48 46 59 46H65Q92 46 125 49Q139 52 144 61Q147 65 216 339T285 628Q285 635 228 637Z"></path></g></g></g><g data-mml-node="mrow" transform="translate(220,-686)"><g data-mml-node="mi"><path data-c="1D715" d="M202 508Q179 508 169 520T158 547Q158 557 164 577T185 624T230 675T301 710L333 715H345Q378 715 384 714Q447 703 489 661T549 568T566 457Q566 362 519 240T402 53Q321 -22 223 -22Q123 -22 73 56Q42 102 42 148V159Q42 276 129 370T322 465Q383 465 414 434T455 367L458 378Q478 461 478 515Q478 603 437 639T344 676Q266 676 223 612Q264 606 264 572Q264 547 246 528T202 508ZM430 306Q430 372 401 400T333 428Q270 428 222 382Q197 354 183 323T150 221Q132 149 132 116Q132 21 232 21Q244 21 250 22Q327 35 374 112Q389 137 409 196T430 306Z"></path></g><g data-mml-node="TeXAtom" data-mjx-texclass="ORD" transform="translate(566,0)"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="1D430" d="M624 444Q636 441 722 441Q797 441 800 444H805V382H741L593 11Q592 10 590 8T586 4T584 2T581 0T579 -2T575 -3T571 -3T567 -4T561 -4T553 -4H542Q525 -4 518 6T490 70Q474 110 463 137L415 257L367 137Q357 111 341 72Q320 17 313 7T289 -4H277Q259 -4 253 -2T238 11L90 382H25V444H32Q47 441 140 441Q243 441 261 444H270V382H222L310 164L382 342L366 382H303V444H310Q322 441 407 441Q508 441 523 444H531V382H506Q481 382 481 380Q482 376 529 259T577 142L674 382H617V444H624Z"></path></g></g></g></g><rect width="1597" height="60" x="120" y="220"></rect></g><g data-mml-node="mo" transform="translate(4962.3,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mn" transform="translate(6018.1,0)"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g><g data-mml-node="mfrac" transform="translate(6518.1,0)"><g data-mml-node="mn" transform="translate(270,676)"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path></g><g data-mml-node="mi" transform="translate(220,-686)"><path data-c="1D45B" d="M21 287Q22 293 24 303T36 341T56 388T89 425T135 442Q171 442 195 424T225 390T231 369Q231 367 232 367L243 378Q304 442 382 442Q436 442 469 415T503 336T465 179T427 52Q427 26 444 26Q450 26 453 27Q482 32 505 65T540 145Q542 153 560 153Q580 153 580 145Q580 144 576 130Q568 101 554 73T508 17T439 -10Q392 -10 371 17T350 73Q350 92 386 193T423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 112 180T152 343Q153 348 153 366Q153 405 129 405Q91 405 66 305Q60 285 60 284Q58 278 41 278H27Q21 284 21 287Z"></path></g><rect width="800" height="60" x="120" y="220"></rect></g><g data-mml-node="munderover" transform="translate(7724.8,0)"><g data-mml-node="mo"><path data-c="2211" d="M60 948Q63 950 665 950H1267L1325 815Q1384 677 1388 669H1348L1341 683Q1320 724 1285 761Q1235 809 1174 838T1033 881T882 898T699 902H574H543H251L259 891Q722 258 724 252Q725 250 724 246Q721 243 460 -56L196 -356Q196 -357 407 -357Q459 -357 548 -357T676 -358Q812 -358 896 -353T1063 -332T1204 -283T1307 -196Q1328 -170 1348 -124H1388Q1388 -125 1381 -145T1356 -210T1325 -294L1267 -449L666 -450Q64 -450 61 -448Q55 -446 55 -439Q55 -437 57 -433L590 177Q590 178 557 222T452 366T322 544L56 909L55 924Q55 945 60 948Z"></path></g><g data-mml-node="TeXAtom" transform="translate(148.2,-1087.9) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="1D456" d="M184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Z"></path></g><g data-mml-node="mo" transform="translate(345,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mn" transform="translate(1123,0)"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path></g></g><g data-mml-node="TeXAtom" transform="translate(509.9,1150) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="1D45B" d="M21 287Q22 293 24 303T36 341T56 388T89 425T135 442Q171 442 195 424T225 390T231 369Q231 367 232 367L243 378Q304 442 382 442Q436 442 469 415T503 336T465 179T427 52Q427 26 444 26Q450 26 453 27Q482 32 505 65T540 145Q542 153 560 153Q580 153 580 145Q580 144 576 130Q568 101 554 73T508 17T439 -10Q392 -10 371 17T350 73Q350 92 386 193T423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 112 180T152 343Q153 348 153 366Q153 405 129 405Q91 405 66 305Q60 285 60 284Q58 278 41 278H27Q21 284 21 287Z"></path></g></g></g><g data-mml-node="mo" transform="translate(9168.8,0)"><path data-c="28" d="M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"></path></g><g data-mml-node="msup" transform="translate(9557.8,0)"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mover"><g data-mml-node="mi"><path data-c="1D466" d="M21 287Q21 301 36 335T84 406T158 442Q199 442 224 419T250 355Q248 336 247 334Q247 331 231 288T198 191T182 105Q182 62 196 45T238 27Q261 27 281 38T312 61T339 94Q339 95 344 114T358 173T377 247Q415 397 419 404Q432 431 462 431Q475 431 483 424T494 412T496 403Q496 390 447 193T391 -23Q363 -106 294 -155T156 -205Q111 -205 77 -183T43 -117Q43 -95 50 -80T69 -58T89 -48T106 -45Q150 -45 150 -87Q150 -107 138 -122T115 -142T102 -147L99 -148Q101 -153 118 -160T152 -167H160Q177 -167 186 -165Q219 -156 247 -127T290 -65T313 -9T321 21L315 17Q309 13 296 6T270 -6Q250 -11 231 -11Q185 -11 150 11T104 82Q103 89 103 113Q103 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Z"></path></g><g data-mml-node="mo" transform="translate(300.6,16) translate(-250 0)"><path data-c="5E" d="M112 560L249 694L257 686Q387 562 387 560L361 531Q359 532 303 581L250 627L195 580Q182 569 169 557T148 538L140 532Q138 530 125 546L112 560Z"></path></g></g></g><g data-mml-node="mi" transform="translate(523,413) scale(0.707)"><path data-c="1D456" d="M184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Z"></path></g></g><g data-mml-node="mo" transform="translate(10597,0)"><path data-c="2212" d="M84 237T84 250T98 270H679Q694 262 694 250T679 230H98Q84 237 84 250Z"></path></g><g data-mml-node="msup" transform="translate(11597.2,0)"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="1D430" d="M624 444Q636 441 722 441Q797 441 800 444H805V382H741L593 11Q592 10 590 8T586 4T584 2T581 0T579 -2T575 -3T571 -3T567 -4T561 -4T553 -4H542Q525 -4 518 6T490 70Q474 110 463 137L415 257L367 137Q357 111 341 72Q320 17 313 7T289 -4H277Q259 -4 253 -2T238 11L90 382H25V444H32Q47 441 140 441Q243 441 261 444H270V382H222L310 164L382 342L366 382H303V444H310Q322 441 407 441Q508 441 523 444H531V382H506Q481 382 481 380Q482 376 529 259T577 142L674 382H617V444H624Z"></path></g></g><g data-mml-node="mi" transform="translate(864,413) scale(0.707)"><path data-c="1D456" d="M184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Z"></path></g></g><g data-mml-node="msup" transform="translate(12755.1,0)"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="1D431" d="M227 0Q212 3 121 3Q40 3 28 0H21V62H117L245 213L109 382H26V444H34Q49 441 143 441Q247 441 265 444H274V382H246L281 339Q315 297 316 297Q320 297 354 341L389 382H352V444H360Q375 441 466 441Q547 441 559 444H566V382H471L355 246L504 63L545 62H586V0H578Q563 3 469 3Q365 3 347 0H338V62H366Q366 63 326 112T285 163L198 63L217 62H235V0H227Z"></path></g></g><g data-mml-node="mi" transform="translate(640,413) scale(0.707)"><path data-c="1D456" d="M184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Z"></path></g></g><g data-mml-node="mo" transform="translate(13689.1,0)"><path data-c="29" d="M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"></path></g><g data-mml-node="mo" transform="translate(14300.3,0)"><path data-c="2212" d="M84 237T84 250T98 270H679Q694 262 694 250T679 230H98Q84 237 84 250Z"></path></g><g data-mml-node="msup" transform="translate(15300.5,0)"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="1D431" d="M227 0Q212 3 121 3Q40 3 28 0H21V62H117L245 213L109 382H26V444H34Q49 441 143 441Q247 441 265 444H274V382H246L281 339Q315 297 316 297Q320 297 354 341L389 382H352V444H360Q375 441 466 441Q547 441 559 444H566V382H471L355 246L504 63L545 62H586V0H578Q563 3 469 3Q365 3 347 0H338V62H366Q366 63 326 112T285 163L198 63L217 62H235V0H227Z"></path></g></g><g data-mml-node="mi" transform="translate(640,413) scale(0.707)"><path data-c="1D456" d="M184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Z"></path></g></g></g></g></svg></mjx-container></p><p><em>Question: disadvantages of gradient descent?</em></p><p><img data-src="https://cdn.joouis.com/hands-on-linear-regression-for-ml-3.png" alt="Gradient Descent pitfalls, Hands-On Machine Learning by Aurélien Géron"></p><h4 id="Variants-optimizers"><a href="#Variants-optimizers" class="headerlink" title="Variants optimizers"></a>Variants optimizers</h4><ul><li>SGD, Stochastic gradient descent</li><li>Adam</li><li>Mini-batch gradient descent</li><li>Adagrad</li></ul><h3 id="Training-tips"><a href="#Training-tips" class="headerlink" title="Training tips"></a>Training tips</h3><p>Probably it’s enough for us to dig into the code, so the recap should be stopped here. At last, giving this tips section for some practical training techniques.</p><ul><li>Hyperparameters tuning/optimization, like pick a good learning rate</li><li>L2 (Ridge) regularization</li><li>Early stopping</li><li>Feature engineering<ul><li>Feature selection by recursive feature elimination and cross-validation (<a href="https://scikit-learn.org/stable/modules/generated/sklearn.feature_selection.RFECV.html">RFECV</a>)<br><img data-src="https://cdn.joouis.com/hands-on-linear-regression-for-ml-4.png" alt="Recursive feature elimination with cross-validation, https://scikit-learn.org"></li><li>Feature scaling like normalization</li><li>Data correction for dirty part</li><li>Defining and removing outliers</li><li>Update model to make it fits dataset better like add high order term for most important feature, or even you can use a neural network if you want 😏</li></ul></li><li>Leveraging K-fold cross validation to split data and evaluate model performance</li></ul><h2 id="Runtime-environments"><a href="#Runtime-environments" class="headerlink" title="Runtime environments"></a>Runtime environments</h2><h3 id="Local"><a href="#Local" class="headerlink" title="Local"></a>Local</h3><p>I highly recommend using Conda to run your Python code even on Unix-like OS, and <a href="https://docs.conda.io/en/latest/miniconda.html">Miniconda</a> is good to get start.</p><blockquote><p>Conda as a package manager helps you find and install packages. If you need a package that requires a different version of Python, you do not need to switch to a different environment manager, because conda is also an environment manager. With just a few commands, you can set up a totally separate environment to run that different version of Python, while continuing to run your usual version of Python in your normal environment.</p></blockquote><h3 id="Cloud"><a href="#Cloud" class="headerlink" title="Cloud"></a>Cloud</h3><p>It’s cloud computing era, we can write and save our code on the cloud and run it at anytime with any web client. Two cloud platforms will be introduced here, I suggest you try both of them and enjoy your experiment.</p><p>More specifically, these two products are all based on <a href="https://jupyter.org/">Jupyter Notebook</a>, which provides flexible Python runtime and Markdown document feature, it’s easy to run code snippet just like on the local terminal.</p><h4 id="Notebooks-of-Azure-Machine-Learning-Studio"><a href="#Notebooks-of-Azure-Machine-Learning-Studio" class="headerlink" title="Notebooks of Azure Machine Learning Studio"></a>Notebooks of Azure Machine Learning Studio</h4><p>Here is a <a href="https://docs.microsoft.com/en-us/azure/machine-learning/how-to-run-jupyter-notebooks">brief introduction</a> of Notebooks of AML Studio, the advantages of this product are:</p><ul><li>IntelliSense and Monaco Editor adopted from Visual Studio Code are great.</li><li>Rich sample notebooks are provided, and the tab view allows user to open several documents with several file types in one page.</li><li>An one-stop platform for user to develop their machine learning project, you can take it as cloud IDE (Integrated Development Environment). For example, user can manager their huge datasets by Datasets, and then consume them in Notebooks.</li></ul><p><img data-src="https://cdn.joouis.com/hands-on-linear-regression-for-ml-5.png" alt="UI of Notebooks of AML Studio"></p><h4 id="Google-Colaboratory"><a href="#Google-Colaboratory" class="headerlink" title="Google Colaboratory"></a>Google Colaboratory</h4><p>You can open <code>ipynb</code> file on Google Drive by this product, there are also several advantages:</p><ul><li>Cleaner and larger workspace.</li><li>“Code snippets” feature is interesting, but not smart enough (like intelligent recommendation), nor rich code exmaples.</li><li>It will create compute target or VM (virtual machine) for the user automatically.</li><li>Download dataset from Google Drive, comment and share are easily.</li></ul><p><img data-src="https://cdn.joouis.com/hands-on-linear-regression-for-ml-6.png" alt="UI of Google Colab"></p><h2 id="Code-snippets"><a href="#Code-snippets" class="headerlink" title="Code snippets"></a>Code snippets</h2><p>You can check sample code on Google Colab <a href="https://colab.research.google.com/drive/131sSqmrmWXfjFZ3jWSELl8cm0Ox5ah3C">here</a>, and codes below will has slight differences.</p><h3 id="Target"><a href="#Target" class="headerlink" title="Target"></a>Target</h3><p>To predict the PM2.5 value of first ten hour by other nine hours data.</p><h3 id="Data-preprocessing"><a href="#Data-preprocessing" class="headerlink" title="Data preprocessing"></a>Data preprocessing</h3><p>Original data structure looks like this:</p><table><thead><tr><th></th><th>00:00</th><th>01:00</th><th>…</th><th>23:00</th></tr></thead><tbody><tr><td>Feature 1 of day 1</td><td></td><td></td><td></td><td></td></tr><tr><td>Feature 2 of day 1</td><td></td><td></td><td></td><td></td></tr><tr><td>…</td><td></td><td></td><td></td><td></td></tr><tr><td>Feature 17 of day 1</td><td></td><td></td><td></td><td></td></tr><tr><td>Feature 18 of day 1</td><td></td><td></td><td></td><td></td></tr><tr><td>Feature 1 of day 2</td><td></td><td></td><td></td><td></td></tr><tr><td>Feature 2 of day 2</td><td></td><td></td><td></td><td></td></tr><tr><td>…</td><td></td><td></td><td></td><td></td></tr></tbody></table><p>24 columns represent 24 hours, 18 features with every first 20 days of month in one year, we have <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.186ex;" xmlns="http://www.w3.org/2000/svg" width="18.603ex" height="1.717ex" role="img" focusable="false" viewBox="0 -677 8222.4 759"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mn"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path><path data-c="38" d="M70 417T70 494T124 618T248 666Q319 666 374 624T429 515Q429 485 418 459T392 417T361 389T335 371T324 363L338 354Q352 344 366 334T382 323Q457 264 457 174Q457 95 399 37T249 -22Q159 -22 101 29T43 155Q43 263 172 335L154 348Q133 361 127 368Q70 417 70 494ZM286 386L292 390Q298 394 301 396T311 403T323 413T334 425T345 438T355 454T364 471T369 491T371 513Q371 556 342 586T275 624Q268 625 242 625Q201 625 165 599T128 534Q128 511 141 492T167 463T217 431Q224 426 228 424L286 386ZM250 21Q308 21 350 55T392 137Q392 154 387 169T375 194T353 216T330 234T301 253T274 270Q260 279 244 289T218 306L210 311Q204 311 181 294T133 239T107 157Q107 98 150 60T250 21Z" transform="translate(500,0)"></path></g><g data-mml-node="mo" transform="translate(1222.2,0)"><path data-c="2217" d="M229 286Q216 420 216 436Q216 454 240 464Q241 464 245 464T251 465Q263 464 273 456T283 436Q283 419 277 356T270 286L328 328Q384 369 389 372T399 375Q412 375 423 365T435 338Q435 325 425 315Q420 312 357 282T289 250L355 219L425 184Q434 175 434 161Q434 146 425 136T401 125Q393 125 383 131T328 171L270 213Q283 79 283 63Q283 53 276 44T250 35Q231 35 224 44T216 63Q216 80 222 143T229 213L171 171Q115 130 110 127Q106 124 100 124Q87 124 76 134T64 161Q64 166 64 169T67 175T72 181T81 188T94 195T113 204T138 215T170 230T210 250L74 315Q65 324 65 338Q65 353 74 363T98 374Q106 374 116 368T171 328L229 286Z"></path></g><g data-mml-node="mn" transform="translate(1944.4,0)"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path></g><g data-mml-node="mo" transform="translate(3166.7,0)"><path data-c="2217" d="M229 286Q216 420 216 436Q216 454 240 464Q241 464 245 464T251 465Q263 464 273 456T283 436Q283 419 277 356T270 286L328 328Q384 369 389 372T399 375Q412 375 423 365T435 338Q435 325 425 315Q420 312 357 282T289 250L355 219L425 184Q434 175 434 161Q434 146 425 136T401 125Q393 125 383 131T328 171L270 213Q283 79 283 63Q283 53 276 44T250 35Q231 35 224 44T216 63Q216 80 222 143T229 213L171 171Q115 130 110 127Q106 124 100 124Q87 124 76 134T64 161Q64 166 64 169T67 175T72 181T81 188T94 195T113 204T138 215T170 230T210 250L74 315Q65 324 65 338Q65 353 74 363T98 374Q106 374 116 368T171 328L229 286Z"></path></g><g data-mml-node="mn" transform="translate(3888.9,0)"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z" transform="translate(500,0)"></path></g><g data-mml-node="mo" transform="translate(5166.7,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mn" transform="translate(6222.4,0)"><path data-c="34" d="M462 0Q444 3 333 3Q217 3 199 0H190V46H221Q241 46 248 46T265 48T279 53T286 61Q287 63 287 115V165H28V211L179 442Q332 674 334 675Q336 677 355 677H373L379 671V211H471V165H379V114Q379 73 379 66T385 54Q393 47 442 46H471V0H462ZM293 211V545L74 212L183 211H293Z"></path><path data-c="33" d="M127 463Q100 463 85 480T69 524Q69 579 117 622T233 665Q268 665 277 664Q351 652 390 611T430 522Q430 470 396 421T302 350L299 348Q299 347 308 345T337 336T375 315Q457 262 457 175Q457 96 395 37T238 -22Q158 -22 100 21T42 130Q42 158 60 175T105 193Q133 193 151 175T169 130Q169 119 166 110T159 94T148 82T136 74T126 70T118 67L114 66Q165 21 238 21Q293 21 321 74Q338 107 338 175V195Q338 290 274 322Q259 328 213 329L171 330L168 332Q166 335 166 348Q166 366 174 366Q202 366 232 371Q266 376 294 413T322 525V533Q322 590 287 612Q265 626 240 626Q208 626 181 615T143 592T132 580H135Q138 579 143 578T153 573T165 566T175 555T183 540T186 520Q186 498 172 481T127 463Z" transform="translate(500,0)"></path><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z" transform="translate(1000,0)"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(1500,0)"></path></g></g></g></svg></mjx-container> rows.</p><p><img data-src="https://cdn.joouis.com/hands-on-linear-regression-for-ml-7.png" alt="Dataset preview in AML Studio"></p><p>Our target data structure of <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: 0;" xmlns="http://www.w3.org/2000/svg" width="1.966ex" height="1.552ex" role="img" focusable="false" viewBox="0 -686 869 686"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="1D417" d="M327 0Q306 3 174 3Q52 3 43 0H33V62H98L162 63L360 333L157 624H48V686H59Q80 683 217 683Q368 683 395 686H408V624H335L393 540L452 458L573 623Q573 624 528 624H483V686H494Q515 683 646 683Q769 683 778 686H787V624H658L575 511Q493 398 493 397L508 376Q522 356 553 312T611 229L727 62H835V0H824Q803 3 667 3Q516 3 489 0H476V62H513L549 63L401 274L247 63Q247 62 292 62H338V0H327Z"></path></g></g></g></g></svg></mjx-container> will be:</p><table><thead><tr><th></th><th>Feature 1 of 1st hour</th><th>Feature 1 of 2nd hour</th><th>…</th><th>Feature 1 of 9th hour</th><th>Feature 2 of 1st hour</th><th>…</th><th>Feature 18 of 9th hour</th></tr></thead><tbody><tr><td>10th hour of day 1</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>11st hour of day 1</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>…</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>24th hour of day 1</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>1st hour of day 2</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>…</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr></tbody></table><p>Number of columns should be <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.186ex;" xmlns="http://www.w3.org/2000/svg" width="11.941ex" height="1.692ex" role="img" focusable="false" viewBox="0 -666 5278 748"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mn"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path><path data-c="38" d="M70 417T70 494T124 618T248 666Q319 666 374 624T429 515Q429 485 418 459T392 417T361 389T335 371T324 363L338 354Q352 344 366 334T382 323Q457 264 457 174Q457 95 399 37T249 -22Q159 -22 101 29T43 155Q43 263 172 335L154 348Q133 361 127 368Q70 417 70 494ZM286 386L292 390Q298 394 301 396T311 403T323 413T334 425T345 438T355 454T364 471T369 491T371 513Q371 556 342 586T275 624Q268 625 242 625Q201 625 165 599T128 534Q128 511 141 492T167 463T217 431Q224 426 228 424L286 386ZM250 21Q308 21 350 55T392 137Q392 154 387 169T375 194T353 216T330 234T301 253T274 270Q260 279 244 289T218 306L210 311Q204 311 181 294T133 239T107 157Q107 98 150 60T250 21Z" transform="translate(500,0)"></path></g><g data-mml-node="mo" transform="translate(1222.2,0)"><path data-c="2217" d="M229 286Q216 420 216 436Q216 454 240 464Q241 464 245 464T251 465Q263 464 273 456T283 436Q283 419 277 356T270 286L328 328Q384 369 389 372T399 375Q412 375 423 365T435 338Q435 325 425 315Q420 312 357 282T289 250L355 219L425 184Q434 175 434 161Q434 146 425 136T401 125Q393 125 383 131T328 171L270 213Q283 79 283 63Q283 53 276 44T250 35Q231 35 224 44T216 63Q216 80 222 143T229 213L171 171Q115 130 110 127Q106 124 100 124Q87 124 76 134T64 161Q64 166 64 169T67 175T72 181T81 188T94 195T113 204T138 215T170 230T210 250L74 315Q65 324 65 338Q65 353 74 363T98 374Q106 374 116 368T171 328L229 286Z"></path></g><g data-mml-node="mn" transform="translate(1944.4,0)"><path data-c="39" d="M352 287Q304 211 232 211Q154 211 104 270T44 396Q42 412 42 436V444Q42 537 111 606Q171 666 243 666Q245 666 249 666T257 665H261Q273 665 286 663T323 651T370 619T413 560Q456 472 456 334Q456 194 396 97Q361 41 312 10T208 -22Q147 -22 108 7T68 93T121 149Q143 149 158 135T173 96Q173 78 164 65T148 49T135 44L131 43Q131 41 138 37T164 27T206 22H212Q272 22 313 86Q352 142 352 280V287ZM244 248Q292 248 321 297T351 430Q351 508 343 542Q341 552 337 562T323 588T293 615T246 625Q208 625 181 598Q160 576 154 546T147 441Q147 358 152 329T172 282Q197 248 244 248Z"></path></g><g data-mml-node="mo" transform="translate(2722.2,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mn" transform="translate(3778,0)"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path><path data-c="36" d="M42 313Q42 476 123 571T303 666Q372 666 402 630T432 550Q432 525 418 510T379 495Q356 495 341 509T326 548Q326 592 373 601Q351 623 311 626Q240 626 194 566Q147 500 147 364L148 360Q153 366 156 373Q197 433 263 433H267Q313 433 348 414Q372 400 396 374T435 317Q456 268 456 210V192Q456 169 451 149Q440 90 387 34T253 -22Q225 -22 199 -14T143 16T92 75T56 172T42 313ZM257 397Q227 397 205 380T171 335T154 278T148 216Q148 133 160 97T198 39Q222 21 251 21Q302 21 329 59Q342 77 347 104T352 209Q352 289 347 316T329 361Q302 397 257 397Z" transform="translate(500,0)"></path><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z" transform="translate(1000,0)"></path></g></g></g></svg></mjx-container>, and rows should be <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.566ex;" xmlns="http://www.w3.org/2000/svg" width="24.26ex" height="2.262ex" role="img" focusable="false" viewBox="0 -750 10722.9 1000"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mo"><path data-c="28" d="M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"></path></g><g data-mml-node="mn" transform="translate(389,0)"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path></g><g data-mml-node="mo" transform="translate(1611.2,0)"><path data-c="2217" d="M229 286Q216 420 216 436Q216 454 240 464Q241 464 245 464T251 465Q263 464 273 456T283 436Q283 419 277 356T270 286L328 328Q384 369 389 372T399 375Q412 375 423 365T435 338Q435 325 425 315Q420 312 357 282T289 250L355 219L425 184Q434 175 434 161Q434 146 425 136T401 125Q393 125 383 131T328 171L270 213Q283 79 283 63Q283 53 276 44T250 35Q231 35 224 44T216 63Q216 80 222 143T229 213L171 171Q115 130 110 127Q106 124 100 124Q87 124 76 134T64 161Q64 166 64 169T67 175T72 181T81 188T94 195T113 204T138 215T170 230T210 250L74 315Q65 324 65 338Q65 353 74 363T98 374Q106 374 116 368T171 328L229 286Z"></path></g><g data-mml-node="mn" transform="translate(2333.4,0)"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path><path data-c="34" d="M462 0Q444 3 333 3Q217 3 199 0H190V46H221Q241 46 248 46T265 48T279 53T286 61Q287 63 287 115V165H28V211L179 442Q332 674 334 675Q336 677 355 677H373L379 671V211H471V165H379V114Q379 73 379 66T385 54Q393 47 442 46H471V0H462ZM293 211V545L74 212L183 211H293Z" transform="translate(500,0)"></path></g><g data-mml-node="mo" transform="translate(3555.7,0)"><path data-c="2212" d="M84 237T84 250T98 270H679Q694 262 694 250T679 230H98Q84 237 84 250Z"></path></g><g data-mml-node="mn" transform="translate(4555.9,0)"><path data-c="39" d="M352 287Q304 211 232 211Q154 211 104 270T44 396Q42 412 42 436V444Q42 537 111 606Q171 666 243 666Q245 666 249 666T257 665H261Q273 665 286 663T323 651T370 619T413 560Q456 472 456 334Q456 194 396 97Q361 41 312 10T208 -22Q147 -22 108 7T68 93T121 149Q143 149 158 135T173 96Q173 78 164 65T148 49T135 44L131 43Q131 41 138 37T164 27T206 22H212Q272 22 313 86Q352 142 352 280V287ZM244 248Q292 248 321 297T351 430Q351 508 343 542Q341 552 337 562T323 588T293 615T246 625Q208 625 181 598Q160 576 154 546T147 441Q147 358 152 329T172 282Q197 248 244 248Z"></path></g><g data-mml-node="mo" transform="translate(5055.9,0)"><path data-c="29" d="M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"></path></g><g data-mml-node="mo" transform="translate(5667.1,0)"><path data-c="2217" d="M229 286Q216 420 216 436Q216 454 240 464Q241 464 245 464T251 465Q263 464 273 456T283 436Q283 419 277 356T270 286L328 328Q384 369 389 372T399 375Q412 375 423 365T435 338Q435 325 425 315Q420 312 357 282T289 250L355 219L425 184Q434 175 434 161Q434 146 425 136T401 125Q393 125 383 131T328 171L270 213Q283 79 283 63Q283 53 276 44T250 35Q231 35 224 44T216 63Q216 80 222 143T229 213L171 171Q115 130 110 127Q106 124 100 124Q87 124 76 134T64 161Q64 166 64 169T67 175T72 181T81 188T94 195T113 204T138 215T170 230T210 250L74 315Q65 324 65 338Q65 353 74 363T98 374Q106 374 116 368T171 328L229 286Z"></path></g><g data-mml-node="mn" transform="translate(6389.3,0)"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z" transform="translate(500,0)"></path></g><g data-mml-node="mo" transform="translate(7667.1,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mn" transform="translate(8722.9,0)"><path data-c="35" d="M164 157Q164 133 148 117T109 101H102Q148 22 224 22Q294 22 326 82Q345 115 345 210Q345 313 318 349Q292 382 260 382H254Q176 382 136 314Q132 307 129 306T114 304Q97 304 95 310Q93 314 93 485V614Q93 664 98 664Q100 666 102 666Q103 666 123 658T178 642T253 634Q324 634 389 662Q397 666 402 666Q410 666 410 648V635Q328 538 205 538Q174 538 149 544L139 546V374Q158 388 169 396T205 412T256 420Q337 420 393 355T449 201Q449 109 385 44T229 -22Q148 -22 99 32T50 154Q50 178 61 192T84 210T107 214Q132 214 148 197T164 157Z"></path><path data-c="36" d="M42 313Q42 476 123 571T303 666Q372 666 402 630T432 550Q432 525 418 510T379 495Q356 495 341 509T326 548Q326 592 373 601Q351 623 311 626Q240 626 194 566Q147 500 147 364L148 360Q153 366 156 373Q197 433 263 433H267Q313 433 348 414Q372 400 396 374T435 317Q456 268 456 210V192Q456 169 451 149Q440 90 387 34T253 -22Q225 -22 199 -14T143 16T92 75T56 172T42 313ZM257 397Q227 397 205 380T171 335T154 278T148 216Q148 133 160 97T198 39Q222 21 251 21Q302 21 329 59Q342 77 347 104T352 209Q352 289 347 316T329 361Q302 397 257 397Z" transform="translate(500,0)"></path><path data-c="35" d="M164 157Q164 133 148 117T109 101H102Q148 22 224 22Q294 22 326 82Q345 115 345 210Q345 313 318 349Q292 382 260 382H254Q176 382 136 314Q132 307 129 306T114 304Q97 304 95 310Q93 314 93 485V614Q93 664 98 664Q100 666 102 666Q103 666 123 658T178 642T253 634Q324 634 389 662Q397 666 402 666Q410 666 410 648V635Q328 538 205 538Q174 538 149 544L139 546V374Q158 388 169 396T205 412T256 420Q337 420 393 355T449 201Q449 109 385 44T229 -22Q148 -22 99 32T50 154Q50 178 61 192T84 210T107 214Q132 214 148 197T164 157Z" transform="translate(1000,0)"></path><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z" transform="translate(1500,0)"></path></g></g></g></svg></mjx-container>.</p><h4 id="Preprocessing"><a href="#Preprocessing" class="headerlink" title="Preprocessing"></a>Preprocessing</h4><p>You may wonder why variable <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: 0;" xmlns="http://www.w3.org/2000/svg" width="1.966ex" height="1.552ex" role="img" focusable="false" viewBox="0 -686 869 686"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="1D417" d="M327 0Q306 3 174 3Q52 3 43 0H33V62H98L162 63L360 333L157 624H48V686H59Q80 683 217 683Q368 683 395 686H408V624H335L393 540L452 458L573 623Q573 624 528 624H483V686H494Q515 683 646 683Q769 683 778 686H787V624H658L575 511Q493 398 493 397L508 376Q522 356 553 312T611 229L727 62H835V0H824Q803 3 667 3Q516 3 489 0H476V62H513L549 63L401 274L247 63Q247 62 292 62H338V0H327Z"></path></g></g></g></g></svg></mjx-container> is capital and variable <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.452ex;" xmlns="http://www.w3.org/2000/svg" width="1.373ex" height="1.457ex" role="img" focusable="false" viewBox="0 -444 607 644"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="1D432" d="M84 -102Q84 -110 87 -119T102 -138T133 -149Q148 -148 162 -143T186 -131T206 -114T222 -95T234 -76T243 -59T249 -45T252 -37L269 0L96 382H26V444H34Q49 441 146 441Q252 441 270 444H279V382H255Q232 382 232 380L337 151L442 382H394V444H401Q413 441 495 441Q568 441 574 444H580V382H510L406 152Q298 -84 297 -87Q269 -139 225 -169T131 -200Q85 -200 54 -172T23 -100Q23 -64 44 -50T87 -35Q111 -35 130 -50T152 -92V-100H84V-102Z"></path></g></g></g></g></svg></mjx-container> is lower-case, just Google matrix notation.</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># Remove first useless columns: ID, Date, Feature name</span></span><br><span class="line">data = data.iloc[:, <span class="number">3</span>:]</span><br><span class="line"><span class="comment"># Replace "NR" value by 0</span></span><br><span class="line">data[data == <span class="string">'NR'</span>] = <span class="number">0</span></span><br><span class="line">raw_data = data.to_numpy()</span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">cook_raw</span>(<span class="params">raw_data</span>):</span><br><span class="line">  month_data = {}</span><br><span class="line">  <span class="keyword">for</span> month <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">12</span>):</span><br><span class="line">    sample = np.empty([<span class="number">18</span>, <span class="number">480</span>])</span><br><span class="line">    <span class="keyword">for</span> day <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">20</span>):</span><br><span class="line">      sample[:, day * <span class="number">24</span> : (day + <span class="number">1</span>) * <span class="number">24</span>] = raw_data[<span class="number">18</span> * (<span class="number">20</span> * month + day) : <span class="number">18</span> * (<span class="number">20</span> * month + day + <span class="number">1</span>), :]</span><br><span class="line">      month_data[month] = sample</span><br><span class="line"></span><br><span class="line">    X = np.empty([<span class="number">12</span> * <span class="number">471</span>, <span class="number">18</span> * <span class="number">9</span>], dtype = <span class="built_in">float</span>)</span><br><span class="line">    y = np.empty([<span class="number">12</span> * <span class="number">471</span>, <span class="number">1</span>], dtype = <span class="built_in">float</span>)</span><br><span class="line">    <span class="keyword">for</span> month <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">12</span>):</span><br><span class="line">      <span class="keyword">for</span> day <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">20</span>):</span><br><span class="line">        <span class="keyword">for</span> hour <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">24</span>):</span><br><span class="line">          <span class="keyword">if</span> day == <span class="number">19</span> <span class="keyword">and</span> hour &gt; <span class="number">14</span>:</span><br><span class="line">            <span class="keyword">continue</span></span><br><span class="line">          <span class="comment"># Vector dim: 18 * 9</span></span><br><span class="line">          X[month * <span class="number">471</span> + day * <span class="number">24</span> + hour, :] = month_data[month][:,day * <span class="number">24</span> + hour : day * <span class="number">24</span> + hour + <span class="number">9</span>].reshape(<span class="number">1</span>, -<span class="number">1</span>)</span><br><span class="line">          <span class="comment"># Value</span></span><br><span class="line">          y[month * <span class="number">471</span> + day * <span class="number">24</span> + hour, <span class="number">0</span>] = month_data[month][<span class="number">9</span>, day * <span class="number">24</span> + hour + <span class="number">9</span>]</span><br><span class="line">    X[X &lt; <span class="number">0</span>] = <span class="number">0</span></span><br><span class="line"></span><br><span class="line">    <span class="keyword">return</span> X, y</span><br><span class="line"></span><br><span class="line">X, y = cook_raw(raw_data=raw_data)</span><br></pre></td></tr></table></figure><h4 id="Feature-engineering-by-adding-quadratice-equation"><a href="#Feature-engineering-by-adding-quadratice-equation" class="headerlink" title="Feature engineering by adding quadratice equation"></a>Feature engineering by adding quadratice equation</h4><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># Polynomial regression: quadratic equation</span></span><br><span class="line"><span class="comment"># 10th feature is PM2.5</span></span><br><span class="line">X = np.concatenate((X, X[:, <span class="number">9</span>*<span class="number">9</span> : <span class="number">10</span>*<span class="number">9</span>] ** <span class="number">2</span>), axis=<span class="number">1</span>)</span><br></pre></td></tr></table></figure><h4 id="Normalization"><a href="#Normalization" class="headerlink" title="Normalization"></a>Normalization</h4><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># Normalization</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">_normalization</span>(<span class="params">X</span>):</span><br><span class="line">  <span class="comment"># Vectors dim: 18 * 9</span></span><br><span class="line">  mean_x = np.mean(X, axis = <span class="number">0</span>)</span><br><span class="line">  std_x = np.std(X, axis = <span class="number">0</span>)</span><br><span class="line">  <span class="comment"># Length: 471 * 12</span></span><br><span class="line">  <span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="built_in">len</span>(X)):</span><br><span class="line">    <span class="comment"># Length: 18 * 9</span></span><br><span class="line">    <span class="keyword">for</span> j <span class="keyword">in</span> <span class="built_in">range</span>(<span class="built_in">len</span>(X[<span class="number">0</span>])):</span><br><span class="line">      <span class="keyword">if</span> std_x[j] != <span class="number">0</span>:</span><br><span class="line">        X[i][j] = (X[i][j] - mean_x[j]) / std_x[j]</span><br><span class="line">  <span class="keyword">return</span> X</span><br><span class="line"></span><br><span class="line">X = _normalization(X)</span><br></pre></td></tr></table></figure><h4 id="Feature-engineering-by-pruning-unimportant-features"><a href="#Feature-engineering-by-pruning-unimportant-features" class="headerlink" title="Feature engineering by pruning unimportant features"></a>Feature engineering by pruning unimportant features</h4><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># Delete features to prevent overfitting</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">prune</span>(<span class="params">X</span>):</span><br><span class="line">  delete_cols = []</span><br><span class="line">  <span class="comment"># Remove trivial features: NOx(#7), RAINFALL(#11)</span></span><br><span class="line">  remove_idx = [<span class="number">6</span>, <span class="number">10</span>]</span><br><span class="line">  <span class="keyword">for</span> i <span class="keyword">in</span> remove_idx:</span><br><span class="line">    delete_cols.extend(<span class="built_in">range</span>(i * <span class="number">9</span> + <span class="number">1</span>, (i + <span class="number">1</span>) * <span class="number">9</span> + <span class="number">1</span>))</span><br><span class="line"></span><br><span class="line">  res = np.delete(X, delete_cols, <span class="number">1</span>)</span><br><span class="line">  <span class="keyword">return</span> res</span><br><span class="line"></span><br><span class="line"><span class="comment"># Initialize bias values with 1</span></span><br><span class="line">X_pruned = prune(np.concatenate((np.ones([<span class="number">12</span> * <span class="number">471</span>, <span class="number">1</span>]), X), axis = <span class="number">1</span>).astype(<span class="built_in">float</span>))</span><br></pre></td></tr></table></figure><h4 id="Split-training-data-into-training-set-and-validation-set"><a href="#Split-training-data-into-training-set-and-validation-set" class="headerlink" title="Split training data into training set and validation set"></a>Split training data into training set and validation set</h4><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">X_train_set = X[: math.floor(<span class="built_in">len</span>(x) * <span class="number">0.8</span>), :]</span><br><span class="line">y_train_set = y[: math.floor(<span class="built_in">len</span>(y) * <span class="number">0.8</span>), :]</span><br><span class="line">X_validation = X[math.floor(<span class="built_in">len</span>(x) * <span class="number">0.8</span>): , :]</span><br><span class="line">y_validation = y[math.floor(<span class="built_in">len</span>(y) * <span class="number">0.8</span>): , :]</span><br></pre></td></tr></table></figure><h3 id="Training-and-prediction"><a href="#Training-and-prediction" class="headerlink" title="Training and prediction"></a>Training and prediction</h3><h4 id="Rough-training"><a href="#Rough-training" class="headerlink" title="Rough training"></a>Rough training</h4><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># Loss function: RMSE</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">eval_loss</span>(<span class="params">X, y, w</span>):</span><br><span class="line">  <span class="keyword">return</span> np.sqrt(np.<span class="built_in">sum</span>(np.power(X @ w - y, <span class="number">2</span>))/X.shape[<span class="number">0</span>])</span><br><span class="line"></span><br><span class="line"><span class="comment"># Batch gradient descent</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">train</span>(<span class="params">X, y, w = <span class="number">0</span>, reg = <span class="number">1</span>, <span class="built_in">iter</span> = <span class="number">8000</span></span>):</span><br><span class="line">  dim = X.shape[<span class="number">1</span>]</span><br><span class="line">  <span class="keyword">if</span> <span class="built_in">type</span>(w) == <span class="built_in">int</span>:</span><br><span class="line">    w = np.zeros([dim, <span class="number">1</span>])</span><br><span class="line"></span><br><span class="line">  learning_rate = <span class="number">1.6</span></span><br><span class="line">  adagrad = np.zeros([dim, <span class="number">1</span>])</span><br><span class="line">  eps = <span class="number">0.0000000001</span></span><br><span class="line">  <span class="keyword">for</span> t <span class="keyword">in</span> <span class="built_in">range</span>(<span class="built_in">iter</span>):</span><br><span class="line">    loss = eval_loss(X, y, w)</span><br><span class="line">    <span class="keyword">if</span>(t%<span class="number">500</span>==<span class="number">0</span>):</span><br><span class="line">        <span class="built_in">print</span>(<span class="string">'#'</span> + <span class="built_in">str</span>(t) + <span class="string">":"</span> + <span class="built_in">str</span>(loss))</span><br><span class="line">    <span class="comment"># Ridge regularization</span></span><br><span class="line">    gradient = <span class="number">2</span> * (X.T @ (X @ w - y)) + <span class="number">2</span> * reg * w</span><br><span class="line">    <span class="comment"># Learning schedule by Adagrad</span></span><br><span class="line">    adagrad += gradient ** <span class="number">2</span></span><br><span class="line">    w = w - learning_rate * gradient / np.sqrt(adagrad + eps)</span><br><span class="line">  <span class="keyword">return</span> w</span><br><span class="line"></span><br><span class="line">w = train(X_train_set, y_train_set)</span><br></pre></td></tr></table></figure><h4 id="Validate-training"><a href="#Validate-training" class="headerlink" title="Validate training"></a>Validate training</h4><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">eval_loss(X_validation, y_validation, w)</span><br></pre></td></tr></table></figure><h4 id="Training-again-and-remove-outliers"><a href="#Training-again-and-remove-outliers" class="headerlink" title="Training again and remove outliers"></a>Training again and remove outliers</h4><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line">w = train(X = X_pruned, y = y, w = w)</span><br><span class="line"></span><br><span class="line">outliers = []</span><br><span class="line"><span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(X_pruned.shape[<span class="number">0</span>]):</span><br><span class="line">  <span class="keyword">if</span> np.absolute(X_pruned[i] @ w - y[i]) &gt; <span class="number">10</span>:</span><br><span class="line">    outliers.append(i)</span><br><span class="line"></span><br><span class="line"><span class="comment"># Try to eliminate irreducible error</span></span><br><span class="line">X_pruned = np.delete(X_pruned, outliers, <span class="number">0</span>)</span><br><span class="line">y = np.delete(y, outliers, <span class="number">0</span>)</span><br><span class="line"></span><br><span class="line">w = train(X = X_pruned, y = y, w = w)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">'\nFinal loss on full training dataset: {}'</span>.<span class="built_in">format</span>(eval_loss(X_pruned, y, w)))</span><br></pre></td></tr></table></figure><h3 id="Review"><a href="#Review" class="headerlink" title="Review"></a>Review</h3><p>Compare the <a href="#Steps-of-machine-learning">Steps of machine learning</a> section with each code snippets below and rethink the whole flow, you may have an overview about machine learning now 👍 .</p><h2 id="Going-further"><a href="#Going-further" class="headerlink" title="Going further"></a>Going further</h2><ul><li>Enjoy the <a href="#References-and-resources">References and resources</a></li><li>Try assignments in the referred book and courses<br><img data-src="http://speech.ee.ntu.edu.tw/~tlkagk/HW.png" alt="Learning map, https://bit.ly/3mf7jCU"></li></ul><h2 id="References-and-resources"><a href="#References-and-resources" class="headerlink" title="References and resources"></a>References and resources</h2><ul><li>Book: <a href="https://learning.oreilly.com/library/view/hands-on-machine-learning/9781492032632/">Hands-on Machine Learning with Scikit-Learn, Keras, and TensorFlow, 2nd Edition</a> (try it free by your Microsoft account)<ul><li><a href="https://book.douban.com/subject/30310982/">Average rating 9.9 on Douban Book</a> (till 11/24/2020)</li><li><a href="https://www.oreilly.com/catalog/errata.csp?isbn=0636920142874">Errata</a></li></ul></li><li>Courses:<ul><li><a href="http://speech.ee.ntu.edu.tw/~tlkagk/courses_ML20.html">Machine Learning 2020</a>, Hung-yi Lee</li><li><a href="https://developers.google.com/machine-learning/crash-course/">Machine Learning Crash Course</a>, Google</li></ul></li><li>Desserts: <a href="https://www.youtube.com/channel/UCbfYPyITQ-7l4upoX8nvctg">Two Minute Papers</a></li></ul>]]></content>
    
    
    <summary type="html">&lt;h2 id=&quot;Goal&quot;&gt;&lt;a href=&quot;#Goal&quot; class=&quot;headerlink&quot; title=&quot;Goal&quot;&gt;&lt;/a&gt;Goal&lt;/h2&gt;&lt;p&gt;This is the sharing session for my team, the goal is to quick ramp up the essential knowledges for linear regression case to experience how machine learning works during 1 hour. This sharing will recap basic important concepts, introduce runtime environments, and go through the codes on Notebooks of Azure Machine Learning Studio platform.&lt;/p&gt;</summary>
    
    
    
    <category term="ML/DL/LLM" scheme="https://joouis.com/categories/ML-DL-LLM/"/>
    
    
    <category term="TechTalk" scheme="https://joouis.com/tags/TechTalk/"/>
    
    <category term="machine learning" scheme="https://joouis.com/tags/machine-learning/"/>
    
    <category term="linear regression" scheme="https://joouis.com/tags/linear-regression/"/>
    
    <category term="regularization" scheme="https://joouis.com/tags/regularization/"/>
    
    <category term="gradient descent" scheme="https://joouis.com/tags/gradient-descent/"/>
    
    <category term="feature engineering" scheme="https://joouis.com/tags/feature-engineering/"/>
    
  </entry>
  
  <entry>
    <title>三星Note9与米10Pro拍照对比</title>
    <link href="https://joouis.com/2020/photos-comparison-between-note9-and-mi10pro/"/>
    <id>https://joouis.com/2020/photos-comparison-between-note9-and-mi10pro/</id>
    <published>2020-05-04T14:56:21.000Z</published>
    <updated>2020-05-05T19:03:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>在正文开始前，请允许我碎碎念一下。</p><p>我从小喜欢数码产品，各种拆解、修复，初中开始靠使电烙铁拿奖中考加分… 一直以来身边人购置数码产品或者遇到问题都会咨询我，但我好像越长大越懒得折腾这些东西，热情逐渐被岁月磨灭（？）。难得有兴趣在换手机时做个简短的对比评测，就借此机会多写一点吧。</p><span id="more"></span><h2 id="我的玩机历史"><a href="#我的玩机历史" class="headerlink" title="我的玩机历史"></a>我的玩机历史</h2><p>我从高中开始放飞自我，因为囊中羞涩主要倒腾各种二手手机，在此之前只玩过小灵通和MOTO V3（向永恒的Razor系列致敬！）。那会正是诺基亚如日中天的时候，Symbian S40&#x2F;S60v3平台的手机相对保值，也就蹭同学的手机玩，在二手市场中没有性价比可言。我则从Sony（黑白机）、Sony Ericsson（自研系统和Symbian OS）、MOTO（自研Linux系统和Windows Phone）、三星（自研系统、Symbian OS 和 Windows Phone）、HP（Windows Phone）到多普达以及 HTC 贴各种运营商牌的Windows Phone，各种体验、刷机、维修和转卖，度过了高中三年时光。这些手机便宜，但绝大多数内置强大的操作系统，更具体讲可以安装各种应用软件，在还是GPRS网络和Java小游戏的年代已经具备一定的可玩性。</p><p>记得高三那年 iPhone 3GS发布，当时还觉得平平无奇，就是贵。而初次见到HTC Hero G3被鲜艳的大屏和UI震撼到了，开始入坑Android。大学时主要有两台神机令我印象深刻，持有时间最长。</p><p>第一部是MOTO Defy，简直是当时的性价比之王，两千元左右的价格配置全面，陪我度过了两年的时光。还记得那时候就开始玩Real Racing 3，没想到这款游戏在近10年后的今天仍然占据着Android热门赛车游戏的一席之地，还被EA收购了。</p><p>第二部则是LG G2，这部手机是当时全球最窄边框的智能手机，外观在今天看来仍不过时，非常的“现代化”。除此之外，性能不必多说，还有两大卖点。一是LCD的屏幕出自自家LG Display，是全球最好的LCD屏幕没有之一，iPhone也用的它家屏幕，这和我后来选三星类似。另一卖点则是用上了OIS光学防抖的摄像头，这个配置如今司空见惯，但在当年真是鹤立鸡群的技术，拍照素质自然秒杀其他手机一截。这也是我第一次玩韩版机，到三星时代因为指纹支付问题以及蛋疼的系统已经不再碰它们了。</p><p>随后就有点平淡无奇，不爱折腾了，就开始保持品牌忠诚度。我选手机的标准很明确，当下旗舰机保证基本门槛，在此基础上依照拍照、屏幕、 续航、扬声器、是否支持无线充电（从S7E尝到甜头开始）、是否支持IP68防尘防水（依然是从S7E开始提高要求）为顺序做挑选。实际的换机轨迹在G2之后是G Pro 2、G3和G4，直到G4出现大面积主板故障，同时三星的双相位对角、曲面屏开始惊艳市场后，入坑S7E、S8+和Note9。</p><h2 id="关于米10-Pro"><a href="#关于米10-Pro" class="headerlink" title="关于米10 Pro"></a>关于米10 Pro</h2><p>去年差点入坑1+7 Pro，不过之前玩过二手的1+3T对拍照表现不太满意，以及看过1+7 Pro的各种评测，觉得不少细节还是差点意思（如在2019年仍不支持无线充电），于是放弃。直到今年初，三星的系统“负优化”在玩30帧“王者荣耀”时竟然会偶尔卡顿，续航也开始退化，决定换其他厂牌，考察一圈最终选择米10 Pro。</p><p>其实这个选择挺容易做的，MIUI的优化加各种顶配硬件不仅玩游戏体验远胜Note9，屏幕还是三星家的A货，双扬声器在每次B站评测中总能引来《全体起立》（毫不夸张讲是我到目前为止听过最棒的手机外放）的弹幕，以及今天要对比的DXO评分124分的拍照功能，基本上很难找到对手。说起来我对价格不算太敏感，也考虑过S20+甚至S20 Ultra，不过想到那个“慢吞吞”的One UI还是算了吧，S20 Ultra还被一众测评指出固件并不完善。</p><p>一开始抱着不好用就再卖掉的心态使了两天米10 Pro，结果它毫无悬念的在绝大多数方面体验完胜Note9，导致后者被我秒出。除了上述的优点外，米10 Pro的背面磨砂玻璃手感很不错，挖孔屏实际带来的干扰也比我想象中要小不少，果然是看习惯就好。而Note9还能胜过米10 Pro的地方有二：</p><ul><li>系统更纯净，也就是大家吐槽已久的MIUI广告问题。确实通过各种设置可以关掉绝大多数MIUI上的广告，只是我不太理解把这些“狗屁膏药”贴在自己旗舰上真的能增加更多营收吗，要知道这一点劝退了不少人。而我个人认为这会培养消费者对小米品牌的负面认知，这些“狗皮膏药”始终让小米看起来不像真旗舰机。据说把系统改成英文就没这困扰了，um… 🙄 。</li><li>品控不太好。每年网上吐槽小米手机质量的声音不少，例如出名的断流问题。我对这些问题算是比较包容的态度，实际我手上这台也还没遇到断流等“硬伤”问题。不过我遇到了一个玩机这么多年头次见的小问题，屏幕边缘居然有黑胶，这会导致裸机状态下手感大打折扣。而我作为一个轻度强迫症患者，看到这个瑕疵也是不能忍，弄了半天却没法完全弄掉。还好戴套之后眼不见心不烦。</li></ul><p><img data-src="https://cdn.joouis.com/photos-comparison-between-note9-and-mi10pro-0.avif"></p><h2 id="拍照对比总结"><a href="#拍照对比总结" class="headerlink" title="拍照对比总结"></a>拍照对比总结</h2><p>回归正题，DXO上米10 Pro的评分比三星Note9高了足足21分，那么实际成片效果是否如此，就用我五一前几天随手拍的一些样张作为对比吧。三星Note9的固件是4月最新的版本，已经用上Android 10，后续的OTA更新基本都是安全补丁，印象中没看到相机方面的优化；而米 10 Pro的固件是MIUI 11.0.16.0稳定版。</p><p>先说结论，拍照方面无论是成像素质还是拍摄场景的多面性，米10 Pro都毫无疑问比Note9强得多，照片文件大小前者是后者的一倍左右，而前者的超广角镜头和多倍混合光学变焦也是后者无法企及的。Note9唯一值得说道还是它的调色，暖色调、高饱和度、高对比度，某些场景下拍出的照片第一眼讨喜。此外米10 Pro偶尔会出现白平衡不准的情况，后面会有照片说明。</p><p>那么开始看照片吧。默认同一内容的两张照片<strong>Note9在前、米10 Pro在后</strong>，均使用默认配置项，大概也就是使用主摄像头、开启AI场景识别优化。我会基于过去玩单反（Pentax配三饼干）的经验简单评价照片，并选出我更喜欢的一边。这是一件非常主观的事，不过鄙人拍照的初衷就是记录生活、愉悦自己 :)</p><h2 id="样张对比"><a href="#样张对比" class="headerlink" title="样张对比"></a>样张对比</h2><p>公寓的走廊，很明显米 10 Pro 的主摄视角比 Note9 广一些。不过这种题材通常也不会有人关注细节，平手。</p><p><img data-src="https://cdn.joouis.com/photos-comparison-between-note9-and-mi10pro-1-n.avif"></p><p><img data-src="https://cdn.joouis.com/photos-comparison-between-note9-and-mi10pro-1-m.avif"></p><p>电梯里，弱光环境下米10 Pro的曝光第一眼更好看，细看文字都能看得清，差距不大，米10 Pro险胜。</p><p><img data-src="https://cdn.joouis.com/photos-comparison-between-note9-and-mi10pro-2-n.avif"></p><p><img data-src="https://cdn.joouis.com/photos-comparison-between-note9-and-mi10pro-2-m.avif"></p><p>工作日的餐厅和午餐。Note9 的调色显得食物更有食欲，但米 10 Pro这种更接近食物原本色彩的调色风格我觉得也不错，平手。</p><p><img data-src="https://cdn.joouis.com/photos-comparison-between-note9-and-mi10pro-3-n.avif"></p><p><img data-src="https://cdn.joouis.com/photos-comparison-between-note9-and-mi10pro-3-m.avif"></p><p>视角更广的米 10 Pro更有优势，同时明亮的调色观感比Note9更好，细节就不对比了没有悬念。米10 Pro胜。</p><p><img data-src="https://cdn.joouis.com/photos-comparison-between-note9-and-mi10pro-4-n.avif"></p><p><img data-src="https://cdn.joouis.com/photos-comparison-between-note9-and-mi10pro-4-m.avif"></p><p>杂乱的工位 😅 。平手。</p><p><img data-src="https://cdn.joouis.com/photos-comparison-between-note9-and-mi10pro-5-n.avif"></p><p><img data-src="https://cdn.joouis.com/photos-comparison-between-note9-and-mi10pro-5-m.avif"></p><p>办公室走廊，两者都支持HDR，不过米 10 Pro的宽容度更高，观感也更好，胜出。值得一提的是右侧边缘的文字Note9更为清晰。</p><p><img data-src="https://cdn.joouis.com/photos-comparison-between-note9-and-mi10pro-6-n.avif"></p><p><img data-src="https://cdn.joouis.com/photos-comparison-between-note9-and-mi10pro-6-m.avif"></p><p>书报架，这种文艺主题显然是Note9的主场，调色更讨喜，胜。</p><p><img data-src="https://cdn.joouis.com/photos-comparison-between-note9-and-mi10pro-7-n.avif"></p><p><img data-src="https://cdn.joouis.com/photos-comparison-between-note9-and-mi10pro-7-m.avif"></p><p>兰州拉面之红烧牛肉面，超好吃。这一次我反而觉得Note9的高饱和、高对比不如米10 Pro的成片看起来更舒服，嗯就是很主观的评价，米10 Pro险胜。</p><p><img data-src="https://cdn.joouis.com/photos-comparison-between-note9-and-mi10pro-8-n.avif"></p><p><img data-src="https://cdn.joouis.com/photos-comparison-between-note9-and-mi10pro-8-m.avif"></p><p>在此期间把 Roland Micro Cube GX音箱给卖了，因为有了这个小箱子——过年前在香港买的Boss Katana Mini。米10 Pro的视角更有优势，同时也把音箱外壳材质的纹理拍得明显更清晰，胜。</p><p><img data-src="https://cdn.joouis.com/photos-comparison-between-note9-and-mi10pro-9-n.avif"></p><p><img data-src="https://cdn.joouis.com/photos-comparison-between-note9-and-mi10pro-9-m.avif"></p><p>最近油价大跌，加油站除了降价外又开始搞加油满￥200送机洗的活动。随手来一张，平局。</p><p><img data-src="https://cdn.joouis.com/photos-comparison-between-note9-and-mi10pro-10-n.avif"></p><p><img data-src="https://cdn.joouis.com/photos-comparison-between-note9-and-mi10pro-10-m.avif"></p><p>到了本文老大哥Note9的高光时刻，完胜米10 Pro的一颗柠檬，色泽完美，而后者的白平衡居然完全跑偏…</p><p><img data-src="https://cdn.joouis.com/photos-comparison-between-note9-and-mi10pro-11-n.avif"></p><p><img data-src="https://cdn.joouis.com/photos-comparison-between-note9-and-mi10pro-11-m.avif"></p><p>看来提前下载Snapseed是个明智的决定。下图只调了白平衡参数，基本就是肉眼所见的柠檬外观，不过还是没有Note9的那张看起来诱人 😂。</p><p><img data-src="https://cdn.joouis.com/photos-comparison-between-note9-and-mi10pro-11-m-fixed.avif"></p><p>切柠檬是为了配干邑，作为一个业余爱好者，我毫不掩饰地承认我都用可乐搭配，自己喜欢最重要！这里Note9的深色调反而没有米10 Pro的看起来可口，后者胜。</p><p><img data-src="https://cdn.joouis.com/photos-comparison-between-note9-and-mi10pro-12-n.avif"></p><p><img data-src="https://cdn.joouis.com/photos-comparison-between-note9-and-mi10pro-12-m.avif"></p><p>和同事去泡汤、写代码、打桌游，这家会所无论地理位置还是装潢水平在苏州都数一数二。Note9的照片涂抹感有点严重，这点也经常被各大数码评测节目提到。很明显米10 Pro拍出来的泳池更为清澈好看，也更接近真实观感，胜出。</p><p><img data-src="https://cdn.joouis.com/photos-comparison-between-note9-and-mi10pro-13-n.avif"></p><p><img data-src="https://cdn.joouis.com/photos-comparison-between-note9-and-mi10pro-13-m.avif"></p><p>米10 Pro的宽容度同时保留了高光和暗部细节，完胜。</p><p><img data-src="https://cdn.joouis.com/photos-comparison-between-note9-and-mi10pro-14-n.avif"></p><p><img data-src="https://cdn.joouis.com/photos-comparison-between-note9-and-mi10pro-14-m.avif"></p><p>Note9的色调更温馨一点，米10 Pro的视角加分，平手。</p><p><img data-src="https://cdn.joouis.com/photos-comparison-between-note9-and-mi10pro-15-n.avif"></p><p><img data-src="https://cdn.joouis.com/photos-comparison-between-note9-and-mi10pro-15-m.avif"></p><p>我更喜欢Note9的调色，更显豪华感，高光的压制也不输小老弟，胜。</p><p><img data-src="https://cdn.joouis.com/photos-comparison-between-note9-and-mi10pro-16-n.avif"></p><p><img data-src="https://cdn.joouis.com/photos-comparison-between-note9-and-mi10pro-16-m.avif"></p><p>又是调色和视角的各有所长，平手。</p><p><img data-src="https://cdn.joouis.com/photos-comparison-between-note9-and-mi10pro-17-n.avif"></p><p><img data-src="https://cdn.joouis.com/photos-comparison-between-note9-and-mi10pro-17-m.avif"></p><p>朋友一直推荐这家的炒牛河好吃，确实不错！我更喜欢米10 Pro的炒蛋颜色，前者有点酱油放多了的感觉… 米10 Pro险胜吧。</p><p><img data-src="https://cdn.joouis.com/photos-comparison-between-note9-and-mi10pro-18-n.avif"></p><p><img data-src="https://cdn.joouis.com/photos-comparison-between-note9-and-mi10pro-18-m.avif"></p><p>Splendor真的超级好玩！之前听朋友们说过几次，这次初次上手就赢了他们，嘿嘿 😝。没人会在意画质吧，平手。</p><p><img data-src="https://cdn.joouis.com/photos-comparison-between-note9-and-mi10pro-19-n.avif"></p><p><img data-src="https://cdn.joouis.com/photos-comparison-between-note9-and-mi10pro-19-m.avif"></p><p>尽管Note9还是有涂抹的痕迹，但成片更显环境高级感，米10 Pro有点偏冷了，前者险胜。</p><p><img data-src="https://cdn.joouis.com/photos-comparison-between-note9-and-mi10pro-20-n.avif"></p><p><img data-src="https://cdn.joouis.com/photos-comparison-between-note9-and-mi10pro-20-m.avif"></p><p>米10 Pro的高光处理更出色，整体色彩也更讨喜，胜。</p><p><img data-src="https://cdn.joouis.com/photos-comparison-between-note9-and-mi10pro-21-n.avif"></p><p><img data-src="https://cdn.joouis.com/photos-comparison-between-note9-and-mi10pro-21-m.avif"></p><p>这张照片里Note9还是会有酱油放多、画面过于浓郁的问题，米10 Pro上那根葱、还有上方冒着热气模糊的感觉更讨喜，后者胜。</p><p><img data-src="https://cdn.joouis.com/photos-comparison-between-note9-and-mi10pro-22-n.avif"></p><p><img data-src="https://cdn.joouis.com/photos-comparison-between-note9-and-mi10pro-22-m.avif"></p><p>虽然米10 Pro的细节更多，但炫光问题令人捉急，Note9胜。</p><p><img data-src="https://cdn.joouis.com/photos-comparison-between-note9-and-mi10pro-23-n.avif"></p><p><img data-src="https://cdn.joouis.com/photos-comparison-between-note9-and-mi10pro-23-m.avif"></p><p><strong>苏州除了是大家传统印象中的旅游城市外，其实更是一座工厂城市，大大小小的工厂散落苏州的各个区、市。这些工厂托起了中国的实体经济，而每年来自全国各地的年轻人被输送到这些厂里做工，每月做六休一、算上各种加班费也只能赚几千块钱，他们才是绝大多数“后浪”。</strong>我不喜欢Note9的色彩，仿佛在看“旧照片”，后者胜。</p><p><img data-src="https://cdn.joouis.com/photos-comparison-between-note9-and-mi10pro-24-n.avif"></p><p><img data-src="https://cdn.joouis.com/photos-comparison-between-note9-and-mi10pro-24-m.avif"></p><p>我的爱琴。面向朋友圈拍照肯定是Note9胜，第一眼太讨喜，不过吉他还是值得放大看细节的，这时候米10 Pro就扳回一城。平手。</p><p><img data-src="https://cdn.joouis.com/photos-comparison-between-note9-and-mi10pro-25-n.avif"></p><p><img data-src="https://cdn.joouis.com/photos-comparison-between-note9-and-mi10pro-25-m.avif"></p><p>总的来说米10 Pro拍照能力在Note9之上，符合我的预期，能让我将Note9安心出掉，也算是不负小米想打进高端价位市场的初心。配合一众出色的硬件和成熟的MIUI优化，不愧是今年的“真香机”！</p><p>希望小米的股价也能快点涨起来，不要坐实了“年轻人第一支被套牢的股票”之名😂 —— 来自一位在结尾突然想起自己是小米股东的年轻人 Orz</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;在正文开始前，请允许我碎碎念一下。&lt;/p&gt;
&lt;p&gt;我从小喜欢数码产品，各种拆解、修复，初中开始靠使电烙铁拿奖中考加分… 一直以来身边人购置数码产品或者遇到问题都会咨询我，但我好像越长大越懒得折腾这些东西，热情逐渐被岁月磨灭（？）。难得有兴趣在换手机时做个简短的对比评测，就借此机会多写一点吧。&lt;/p&gt;</summary>
    
    
    
    <category term="数码体验" scheme="https://joouis.com/categories/%E6%95%B0%E7%A0%81%E4%BD%93%E9%AA%8C/"/>
    
    
    <category term="mobile" scheme="https://joouis.com/tags/mobile/"/>
    
    <category term="photo" scheme="https://joouis.com/tags/photo/"/>
    
    <category term="comparison" scheme="https://joouis.com/tags/comparison/"/>
    
    <category term="samsung" scheme="https://joouis.com/tags/samsung/"/>
    
    <category term="xiaomi" scheme="https://joouis.com/tags/xiaomi/"/>
    
    <category term="note9" scheme="https://joouis.com/tags/note9/"/>
    
    <category term="mi10 pro" scheme="https://joouis.com/tags/mi10-pro/"/>
    
  </entry>
  
</feed>
