diff options
31 files changed, 2405 insertions, 266 deletions
diff --git a/2023/06/17/发热及超高热危象/index.html b/2023/06/17/发热及超高热危象/index.html index 3e05493c..e96f8521 100644 --- a/2023/06/17/发热及超高热危象/index.html +++ b/2023/06/17/发热及超高热危象/index.html @@ -139,6 +139,12 @@ Medicine </a> </span> + + <span class="post-tag"> + <a href="/tags/Life/"> + Life + </a> + </span> </div> diff --git a/2023/09/28/A-Brief-History-of-Just-In-Time/index.html b/2023/09/28/A-Brief-History-of-Just-In-Time/index.html index f6e4792b..1a6f5e11 100644 --- a/2023/09/28/A-Brief-History-of-Just-In-Time/index.html +++ b/2023/09/28/A-Brief-History-of-Just-In-Time/index.html @@ -203,7 +203,7 @@ <div class="icon arrow-left"></div> <div class="post-link"> - <a href="/2023/10/05/v8%E4%B8%ADNumber-toString-%E7%9A%84%E5%AE%9E%E7%8E%B0/">Prev</a> + <a href="/2023/10/05/v8%E4%B8%AD%E7%9A%84Number-toString/">Prev</a> </div> </div> diff --git a/2023/10/05/v8中Number-toString-的实现/index.html b/2023/10/05/v8中Number-toString-的实现/index.html index ab166679..15ededb5 100644 --- a/2023/10/05/v8中Number-toString-的实现/index.html +++ b/2023/10/05/v8中Number-toString-的实现/index.html @@ -213,7 +213,7 @@ <div class="icon arrow-right"></div> <div class="post-link"> - <a href="/2023/09/28/A-Brief-History-of-Just-In-Time/">Next</a> + <a href="/2023/10/05/v8%E4%B8%AD%E7%9A%84Number-toString/">Next</a> </div> </div> diff --git a/2023/10/05/v8中的Number-toString/index.html b/2023/10/05/v8中的Number-toString/index.html new file mode 100644 index 00000000..b13f98eb --- /dev/null +++ b/2023/10/05/v8中的Number-toString/index.html @@ -0,0 +1,253 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="UTF-8"> +<meta name="viewport" + content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> +<meta http-equiv="X-UA-Compatible" content="ie=edge"> + + <meta name="author" content="韩暮秋"> + + + <meta name="subtitle" content="暮秋小屋"> + + + <meta name="description" content="这里是暮秋小屋,思念和灵感的寄存处"> + + + <meta name="keywords" content="韩暮秋,MuqiuHan"> + + + + +<title>v8中的Number.toString() | 暮秋小屋</title> + + + + + +<style> + @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=Noto+Sans+SC:wght@300;400;500;700&family=Roboto+Mono&display=swap'); +</style> + + + + <!-- stylesheets list from _config.yml --> + + <link rel="stylesheet" href="/css/style.css"> + + + + + + <!-- scripts list from _config.yml --> + + <script src="/js/frame.js"></script> + + + + + + <script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script> + <script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script> + + + + + + + + <meta name="generator" content="Hexo 6.3.0"></head> + <body> + <div class="mask-border"> + </div> + + <div class="wrapper"> + + <div class="header"> + <div class="flex-container"> + <div class="header-inner"> + <div class="site-brand-container"> + <a href="/"> + + 暮秋小屋 + + </a> + </div> + <div id="menu-btn" class="menu-btn" onclick="toggleMenu()"> + Menu + </div> + <nav class="site-nav"> + <ul class="menu-list"> + + + <li class="menu-item"> + <a href="/">主页</a> + </li> + + + + <li class="menu-item"> + <a href="/categories/gallery/">日记本</a> + </li> + + + + <li class="menu-item"> + <a href="/tags/Medicine/">医学</a> + </li> + + + + <li class="menu-item"> + <a href="/tags/Technique/">计算机科学</a> + </li> + + + + <li class="menu-item"> + <a href="/tags/Life/">生活</a> + </li> + + + + <li class="menu-item"> + <a href="/about">关于</a> + </li> + + + + </ul> + </nav> + </div> + </div> +</div> + + + <div class="main"> + <div class="flex-container"> + <article id="post"> + + + <div class="post-head"> + <div class="post-info"> + <div class="tag-list"> + + + <span class="post-tag"> + <a href="/tags/Technique/"> + Technique + </a> + </span> + + + </div> + <div class="post-title"> + + + v8中的Number.toString() + + + </div> + <span class="post-date"> + Oct 5, 2023 + </span> + </div> + <div class="post-img"> + + <div class="h-line-primary"></div> + + </div> +</div> + <div class="post-content"> + <p>这里讲一下JavaScript中<code>Number.toString()</code>的实现, 以V8为例。</p> +<ul> +<li><a target="_blank" rel="noopener" href="https://github.com/v8/v8/">The official mirror of the V8 Git repository</a></li> +</ul> +<p>在很多地方都能看到:</p> +<figure class="highlight c++"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">*isolate-><span class="built_in">factory</span>()-><span class="built_in">NumberToString</span>(value);</span><br></pre></td></tr></table></figure> +<p>例如 <a target="_blank" rel="noopener" href="https://github.com/v8/v8/blob/df99ca37a9d02a3318d3e5487c7803f6230b8f5f/src/builtins/builtins-number.cc#L140">/src/builtins/builtins-number.cc</a> 中。</p> +<p>下面看看<code>NumberToString</code>的定义, 应该是在 <a target="_blank" rel="noopener" href="https://github.com/v8/v8/blob/829e8d18d73e21807c78223b0cc107c76c80da27/src/heap/factory-base.cc#L963-L978">src/heap/factory-base.cc</a> 中:</p> +<figure class="highlight c++"><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">template</span> <<span class="keyword">typename</span> Impl></span><br><span class="line">Handle<String> FactoryBase<Impl>::<span class="built_in">NumberToString</span>(Handle<Object> number,</span><br><span class="line"> NumberCacheMode mode) {</span><br><span class="line"> <span class="built_in">SLOW_DCHECK</span>(<span class="built_in">IsNumber</span>(*number));</span><br><span class="line"> <span class="keyword">if</span> (<span class="built_in">IsSmi</span>(*number)) <span class="keyword">return</span> <span class="built_in">SmiToString</span>(Smi::<span class="built_in">cast</span>(*number), mode);</span><br><span class="line"></span><br><span class="line"> <span class="type">double</span> double_value = Handle<HeapNumber>::<span class="built_in">cast</span>(number)-><span class="built_in">value</span>();</span><br><span class="line"> <span class="comment">// Try to canonicalize doubles.</span></span><br><span class="line"> <span class="type">int</span> smi_value;</span><br><span class="line"> <span class="keyword">if</span> (<span class="built_in">DoubleToSmiInteger</span>(double_value, &smi_value)) {</span><br><span class="line"> <span class="keyword">return</span> <span class="built_in">SmiToString</span>(Smi::<span class="built_in">FromInt</span>(smi_value), mode);</span><br><span class="line"> }</span><br><span class="line"> <span class="keyword">return</span> <span class="built_in">HeapNumberToString</span>(Handle<HeapNumber>::<span class="built_in">cast</span>(number), double_value,</span><br><span class="line"> mode);</span><br><span class="line">}</span><br></pre></td></tr></table></figure> + +<p>可以看到这里调用了 <code>SmiToString</code>, 这里不往下翻这个函数的定义, 只需要知道Smi是什么即可。 Smi 是一种特殊的整数类型,它被用于表示较小的整数值,通常在 32 位系统中是 31 位有符号整数。Smi 类型的值存储在指针的低位,而指针的高位用于标记该值是一个 Smi 类型。<code>IsSmi</code> 函数会检查给定的值是否为 Smi 类型,如果是,则返回 true,否则返回 false。这个函数通常用于 V8 引擎内部的优化和性能优化。</p> +<p>所以<code>NumberToString</code>会判断number是否是一个smi, 如果是的话就调用SmiToString, 否则会尝试将其转换为double再去调用<code>DoubleToSmiInteger</code>, 将<code>DoubleToSmiInteger</code>的调用结果存在<code>smi_value</code>里面, 再通过调用<code>SmiToString</code>将<code>smi_value</code>转换为字符串。</p> +<p>如果这两条路都行不通的话,就直接调用<code>HeapNumberToString</code>了。</p> +<p><code>HeapNumberToString</code>的定义如下:</p> +<figure class="highlight c++"><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></pre></td><td class="code"><pre><span class="line"><span class="keyword">template</span> <<span class="keyword">typename</span> Impl></span><br><span class="line">Handle<String> FactoryBase<Impl>::<span class="built_in">HeapNumberToString</span>(Handle<HeapNumber> number,</span><br><span class="line"> <span class="type">double</span> value,</span><br><span class="line"> NumberCacheMode mode) {</span><br><span class="line"> <span class="type">int</span> hash = mode == NumberCacheMode::kIgnore</span><br><span class="line"> ? <span class="number">0</span></span><br><span class="line"> : <span class="built_in">impl</span>()-><span class="built_in">NumberToStringCacheHash</span>(value);</span><br><span class="line"></span><br><span class="line"> <span class="keyword">if</span> (mode == NumberCacheMode::kBoth) {</span><br><span class="line"> Handle<Object> cached = <span class="built_in">impl</span>()-><span class="built_in">NumberToStringCacheGet</span>(*number, hash);</span><br><span class="line"> <span class="keyword">if</span> (!<span class="built_in">IsUndefined</span>(*cached, <span class="built_in">isolate</span>())) <span class="keyword">return</span> Handle<String>::<span class="built_in">cast</span>(cached);</span><br><span class="line"> }</span><br><span class="line"></span><br><span class="line"> Handle<String> result;</span><br><span class="line"> <span class="keyword">if</span> (value == <span class="number">0</span>) {</span><br><span class="line"> result = <span class="built_in">zero_string</span>();</span><br><span class="line"> } <span class="keyword">else</span> <span class="keyword">if</span> (std::<span class="built_in">isnan</span>(value)) {</span><br><span class="line"> result = <span class="built_in">NaN_string</span>();</span><br><span class="line"> } <span class="keyword">else</span> {</span><br><span class="line"> <span class="type">char</span> arr[kNumberToStringBufferSize];</span><br><span class="line"> <span class="function">base::Vector<<span class="type">char</span>> <span class="title">buffer</span><span class="params">(arr, arraysize(arr))</span></span>;</span><br><span class="line"> <span class="type">const</span> <span class="type">char</span>* string = <span class="built_in">DoubleToCString</span>(value, buffer);</span><br><span class="line"> result = <span class="built_in">CharToString</span>(<span class="keyword">this</span>, string, mode);</span><br><span class="line"> }</span><br><span class="line"> <span class="keyword">if</span> (mode != NumberCacheMode::kIgnore) {</span><br><span class="line"> <span class="built_in">impl</span>()-><span class="built_in">NumberToStringCacheSet</span>(number, hash, result);</span><br><span class="line"> }</span><br><span class="line"> <span class="keyword">return</span> result;</span><br><span class="line">}</span><br></pre></td></tr></table></figure> + +<p>就是熟知的NaN, Undefined处理,重点在:</p> +<figure class="highlight c++"><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"><span class="type">char</span> arr[kNumberToStringBufferSize];</span><br><span class="line"><span class="function">base::Vector<<span class="type">char</span>> <span class="title">buffer</span><span class="params">(arr, arraysize(arr))</span></span>;</span><br><span class="line"><span class="type">const</span> <span class="type">char</span>* string = <span class="built_in">DoubleToCString</span>(value, buffer);</span><br><span class="line">result = <span class="built_in">CharToString</span>(<span class="keyword">this</span>, string, mode);</span><br></pre></td></tr></table></figure> + +<p>这里调用了<code>DoubleToCString</code>, 其定义在 <a target="_blank" rel="noopener" href="https://github.com/v8/v8/blob/829e8d18d73e21807c78223b0cc107c76c80da27/src/numbers/conversions.cc#L1064-L1126">/src/numbers/conversions.cc</a> 中:</p> +<figure class="highlight c++"><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></pre></td><td class="code"><pre><span class="line"><span class="function"><span class="type">const</span> <span class="type">char</span>* <span class="title">DoubleToCString</span><span class="params">(<span class="type">double</span> v, base::Vector<<span class="type">char</span>> buffer)</span> </span>{</span><br><span class="line"> <span class="keyword">switch</span> (FPCLASSIFY_NAMESPACE::<span class="built_in">fpclassify</span>(v)) {</span><br><span class="line"> <span class="keyword">case</span> FP_NAN:</span><br><span class="line"> <span class="keyword">return</span> <span class="string">"NaN"</span>;</span><br><span class="line"> <span class="keyword">case</span> FP_INFINITE:</span><br><span class="line"> <span class="keyword">return</span> (v < <span class="number">0.0</span> ? <span class="string">"-Infinity"</span> : <span class="string">"Infinity"</span>);</span><br><span class="line"> <span class="keyword">case</span> FP_ZERO:</span><br><span class="line"> <span class="keyword">return</span> <span class="string">"0"</span>;</span><br><span class="line"> <span class="keyword">default</span>: {</span><br><span class="line"> <span class="keyword">if</span> (<span class="built_in">IsInt32Double</span>(v)) {</span><br><span class="line"> <span class="comment">// This will trigger if v is -0 and -0.0 is stringified to "0".</span></span><br><span class="line"> <span class="comment">// (see ES section 7.1.12.1 #sec-tostring-applied-to-the-number-type)</span></span><br><span class="line"> <span class="keyword">return</span> <span class="built_in">IntToCString</span>(<span class="built_in">FastD2I</span>(v), buffer);</span><br><span class="line"> }</span><br><span class="line"> <span class="function">SimpleStringBuilder <span class="title">builder</span><span class="params">(buffer.begin(), buffer.length())</span></span>;</span><br><span class="line"> <span class="type">int</span> decimal_point;</span><br><span class="line"> <span class="type">int</span> sign;</span><br><span class="line"> <span class="type">const</span> <span class="type">int</span> kV8DtoaBufferCapacity = base::kBase10MaximalLength + <span class="number">1</span>;</span><br><span class="line"> <span class="type">char</span> decimal_rep[kV8DtoaBufferCapacity];</span><br><span class="line"> <span class="type">int</span> length;</span><br><span class="line"></span><br><span class="line"> base::<span class="built_in">DoubleToAscii</span>(</span><br><span class="line"> v, base::DTOA_SHORTEST, <span class="number">0</span>,</span><br><span class="line"> base::<span class="built_in">Vector</span><<span class="type">char</span>>(decimal_rep, kV8DtoaBufferCapacity), &sign,</span><br><span class="line"> &length, &decimal_point);</span><br><span class="line"></span><br><span class="line"> <span class="keyword">if</span> (sign) builder.<span class="built_in">AddCharacter</span>(<span class="string">'-'</span>);</span><br><span class="line"></span><br><span class="line"> <span class="keyword">if</span> (length <= decimal_point && decimal_point <= <span class="number">21</span>) {</span><br><span class="line"> <span class="comment">// ECMA-262 section 9.8.1 step 6.</span></span><br><span class="line"> builder.<span class="built_in">AddString</span>(decimal_rep);</span><br><span class="line"> builder.<span class="built_in">AddPadding</span>(<span class="string">'0'</span>, decimal_point - length);</span><br><span class="line"></span><br><span class="line"> } <span class="keyword">else</span> <span class="keyword">if</span> (<span class="number">0</span> < decimal_point && decimal_point <= <span class="number">21</span>) {</span><br><span class="line"> <span class="comment">// ECMA-262 section 9.8.1 step 7.</span></span><br><span class="line"> builder.<span class="built_in">AddSubstring</span>(decimal_rep, decimal_point);</span><br><span class="line"> builder.<span class="built_in">AddCharacter</span>(<span class="string">'.'</span>);</span><br><span class="line"> builder.<span class="built_in">AddString</span>(decimal_rep + decimal_point);</span><br><span class="line"></span><br><span class="line"> } <span class="keyword">else</span> <span class="keyword">if</span> (decimal_point <= <span class="number">0</span> && decimal_point > <span class="number">-6</span>) {</span><br><span class="line"> <span class="comment">// ECMA-262 section 9.8.1 step 8.</span></span><br><span class="line"> builder.<span class="built_in">AddString</span>(<span class="string">"0."</span>);</span><br><span class="line"> builder.<span class="built_in">AddPadding</span>(<span class="string">'0'</span>, -decimal_point);</span><br><span class="line"> builder.<span class="built_in">AddString</span>(decimal_rep);</span><br><span class="line"></span><br><span class="line"> } <span class="keyword">else</span> {</span><br><span class="line"> <span class="comment">// ECMA-262 section 9.8.1 step 9 and 10 combined.</span></span><br><span class="line"> builder.<span class="built_in">AddCharacter</span>(decimal_rep[<span class="number">0</span>]);</span><br><span class="line"> <span class="keyword">if</span> (length != <span class="number">1</span>) {</span><br><span class="line"> builder.<span class="built_in">AddCharacter</span>(<span class="string">'.'</span>);</span><br><span class="line"> builder.<span class="built_in">AddString</span>(decimal_rep + <span class="number">1</span>);</span><br><span class="line"> }</span><br><span class="line"> builder.<span class="built_in">AddCharacter</span>(<span class="string">'e'</span>);</span><br><span class="line"> builder.<span class="built_in">AddCharacter</span>((decimal_point >= <span class="number">0</span>) ? <span class="string">'+'</span> : <span class="string">'-'</span>);</span><br><span class="line"> <span class="type">int</span> exponent = decimal_point - <span class="number">1</span>;</span><br><span class="line"> <span class="keyword">if</span> (exponent < <span class="number">0</span>) exponent = -exponent;</span><br><span class="line"> builder.<span class="built_in">AddDecimalInteger</span>(exponent);</span><br><span class="line"> }</span><br><span class="line"> <span class="keyword">return</span> builder.<span class="built_in">Finalize</span>();</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line">}</span><br></pre></td></tr></table></figure> + +<p>不用过多解释, 已经很清晰了, <code>FastD2I</code> 就是 Fast Double to Integer的意思, 定义如下, 注释也很详尽:</p> +<figure class="highlight c++"><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></pre></td><td class="code"><pre><span class="line"><span class="comment">// The fast double-to-(unsigned-)int conversion routine does not guarantee</span></span><br><span class="line"><span class="comment">// rounding towards zero.</span></span><br><span class="line"><span class="comment">// The result is undefined if x is infinite or NaN, or if the rounded</span></span><br><span class="line"><span class="comment">// integer value is outside the range of type int.</span></span><br><span class="line"><span class="function"><span class="keyword">inline</span> <span class="type">int</span> <span class="title">FastD2I</span><span class="params">(<span class="type">double</span> x)</span> </span>{</span><br><span class="line"> <span class="built_in">DCHECK</span>(x <= INT_MAX);</span><br><span class="line"> <span class="built_in">DCHECK</span>(x >= INT_MIN);</span><br><span class="line"> <span class="keyword">return</span> <span class="built_in">static_cast</span><<span class="type">int32_t</span>>(x);</span><br><span class="line">}</span><br></pre></td></tr></table></figure> + +<p>以上</p> + +</div> + +<script> + window.onload = detectors(); +</script> + <div class="post-footer"> + <div class="h-line-primary"></div> + <nav class="post-nav"> + <div class="prev-item"> + + <div class="icon arrow-left"></div> + <div class="post-link"> + <a href="/2023/10/05/v8%E4%B8%ADNumber-toString-%E7%9A%84%E5%AE%9E%E7%8E%B0/">Prev</a> + </div> + + </div> + <div class="next-item"> + + <div class="icon arrow-right"></div> + <div class="post-link"> + <a href="/2023/09/28/A-Brief-History-of-Just-In-Time/">Next</a> + </div> + + </div> + </nav> +</div> + + + <div class="post-comment"> + + + + + + + +</div> + + +</article> + </div> + </div> + + <div class="footer"> + <div class="flex-container"> + <div class="footer-text"> + + + | + + + 希望路过的人可以添点柴火让这里暖和点 + + </div> + </div> +</div> + + </div> + + + + + </body> +</html> diff --git a/2023/12/02/二〇二三年十二月二日/index.html b/2023/12/02/二〇二三年十二月二日/index.html index c10f5b97..b508bdbf 100644 --- a/2023/12/02/二〇二三年十二月二日/index.html +++ b/2023/12/02/二〇二三年十二月二日/index.html @@ -187,7 +187,7 @@ <div class="icon arrow-left"></div> <div class="post-link"> - <a href="/2024/01/23/%E4%BA%8C%E3%80%87%E4%BA%8C%E5%9B%9B%E5%B9%B4%E4%B8%80%E6%9C%88%E4%BA%8C%E5%8D%81%E4%B8%89%E6%97%A5/">Prev</a> + <a href="/2024/01/08/OCaml-News-2024-1/">Prev</a> </div> </div> diff --git a/2024/01/08/OCaml-News-2024-1/index.html b/2024/01/08/OCaml-News-2024-1/index.html new file mode 100644 index 00000000..13a70b6c --- /dev/null +++ b/2024/01/08/OCaml-News-2024-1/index.html @@ -0,0 +1,283 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="UTF-8"> +<meta name="viewport" + content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> +<meta http-equiv="X-UA-Compatible" content="ie=edge"> + + <meta name="author" content="韩暮秋"> + + + <meta name="subtitle" content="暮秋小屋"> + + + <meta name="description" content="这里是暮秋小屋,思念和灵感的寄存处"> + + + <meta name="keywords" content="韩暮秋,MuqiuHan"> + + + + +<title>OCaml News 2024-1 | 暮秋小屋</title> + + + + + +<style> + @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=Noto+Sans+SC:wght@300;400;500;700&family=Roboto+Mono&display=swap'); +</style> + + + + <!-- stylesheets list from _config.yml --> + + <link rel="stylesheet" href="/css/style.css"> + + + + + + <!-- scripts list from _config.yml --> + + <script src="/js/frame.js"></script> + + + + + + <script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script> + <script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script> + + + + + + + + <meta name="generator" content="Hexo 6.3.0"></head> + <body> + <div class="mask-border"> + </div> + + <div class="wrapper"> + + <div class="header"> + <div class="flex-container"> + <div class="header-inner"> + <div class="site-brand-container"> + <a href="/"> + + 暮秋小屋 + + </a> + </div> + <div id="menu-btn" class="menu-btn" onclick="toggleMenu()"> + Menu + </div> + <nav class="site-nav"> + <ul class="menu-list"> + + + <li class="menu-item"> + <a href="/">主页</a> + </li> + + + + <li class="menu-item"> + <a href="/categories/gallery/">日记本</a> + </li> + + + + <li class="menu-item"> + <a href="/tags/Medicine/">医学</a> + </li> + + + + <li class="menu-item"> + <a href="/tags/Technique/">计算机科学</a> + </li> + + + + <li class="menu-item"> + <a href="/tags/Life/">生活</a> + </li> + + + + <li class="menu-item"> + <a href="/about">关于</a> + </li> + + + + </ul> + </nav> + </div> + </div> +</div> + + + <div class="main"> + <div class="flex-container"> + <article id="post"> + + + <div class="post-head"> + <div class="post-info"> + <div class="tag-list"> + + + <span class="post-tag"> + <a href="/tags/Technique/"> + Technique + </a> + </span> + + <span class="post-tag"> + <a href="/tags/OCaml/"> + OCaml + </a> + </span> + + + </div> + <div class="post-title"> + + + OCaml News 2024-1 + + + </div> + <span class="post-date"> + Jan 8, 2024 + </span> + </div> + <div class="post-img"> + + <div class="h-line-primary"></div> + + </div> +</div> + <div class="post-content"> + <h2 id="News"><a href="#News" class="headerlink" title="News"></a>News</h2><ul> +<li><a target="_blank" rel="noopener" href="https://tarides.com/blog/2023-12-20-ocaml-survey-developers-perception-interest-and-perceived-barriers/">OCaml Survey: Developers’ Perception, Interest, and Perceived Barriers</a></li> +<li><a target="_blank" rel="noopener" href="https://tarides.com/blog/2023-12-29-announcing-the-orchide-project-powering-satellite-innovation/">Announcing the ORCHIDE Project: Powering Satellite Innovation</a></li> +<li><a target="_blank" rel="noopener" href="https://github.com/ocaml/ocaml/pull/12885">Dynarrays, unboxed (with local dummies) #12885</a></li> +<li><a target="_blank" rel="noopener" href="https://github.com/ocaml/ocaml/pull/12871">Stdlib priority queues #12871</a></li> +<li><a target="_blank" rel="noopener" href="https://github.com/ocaml/ocaml/pull/12596">Compile recursive bindings in Lambda #12596</a></li> +<li><a target="_blank" rel="noopener" href="https://github.com/ocaml/ocaml/pull/12828">Add short syntax for dependent functor types #12828</a></li> +<li><a target="_blank" rel="noopener" href="https://github.com/ocaml/ocaml/pull/12508">[shapes] Add support for project-wide occurrences #12508</a></li> +<li><a target="_blank" rel="noopener" href="https://github.com/ocaml/ocaml/pull/1802">Make the character set for OCaml source code officially UTF-8. #1802</a></li> +<li><a target="_blank" rel="noopener" href="https://github.com/ocaml/ocaml/pull/12719">Add thread local storage #12719</a></li> +</ul> +<h2 id="Videos"><a href="#Videos" class="headerlink" title="Videos"></a>Videos</h2><ul> +<li><a target="_blank" rel="noopener" href="https://www.youtube.com/watch?v=zG7JejHlQoM">“Melange: The next frontier in type-safe web development” by Dillon Mulroy - RVAJS 2023</a></li> +<li><a target="_blank" rel="noopener" href="https://www.youtube.com/watch?v=R-XJzUrP7bQ">Trying out OCaml TUI framework Mint Tea!</a></li> +<li><a target="_blank" rel="noopener" href="https://www.youtube.com/watch?v=XyDbG9FGR1o">A TUI chat in OCaml 🐫</a></li> +<li>[Building a Game Engine… with OCaml ?! [Part 1]](<a target="_blank" rel="noopener" href="https://www.youtube.com/watch?v=1XpUaTnssQE">https://www.youtube.com/watch?v=1XpUaTnssQE</a></li> +</ul> +<h2 id="Blogs"><a href="#Blogs" class="headerlink" title="Blogs"></a>Blogs</h2><ul> +<li><a target="_blank" rel="noopener" href="https://sancho.dev/blog/whats-possible-with-melange">What’s possible with Melange</a></li> +<li><a target="_blank" rel="noopener" href="https://discuss.ocaml.org/t/access-inferred-types/13805">Access inferred types</a></li> +<li><a target="_blank" rel="noopener" href="https://discuss.ocaml.org/t/using-menhir-to-parse-into-idiomatic-js-typescript-structures/13809">Using Menhir to parse into idiomatic JS (TypeScript) structures</a></li> +<li><a target="_blank" rel="noopener" href="https://discuss.ocaml.org/t/why-constructors-are-not-curried/13792">Why constructors are not curried?</a></li> +<li><a target="_blank" rel="noopener" href="https://discuss.ocaml.org/t/practical-example-of-applicative-vs-generative-functors/13777">Practical example of applicative vs generative functors?</a></li> +<li><a target="_blank" rel="noopener" href="https://discuss.ocaml.org/t/compiler-optimization-on-flattening-adt-for-less-boxing/13764">Compiler optimization on flattening ADT for less boxing?</a></li> +<li><a target="_blank" rel="noopener" href="https://discuss.ocaml.org/t/how-to-express-koka-home-page-example/13748">How to express Koka home page example?</a></li> +<li><a target="_blank" rel="noopener" href="https://practicalocaml.com/parsing-with-binary-string-pattern-matching/">Parsing with Binary String Pattern Matching</a></li> +</ul> +<h2 id="Highlighted-Projects"><a href="#Highlighted-Projects" class="headerlink" title="Highlighted Projects"></a>Highlighted Projects</h2><ul> +<li><a target="_blank" rel="noopener" href="https://github.com/backtracking/grid">grid: A tiny library for two-dimensional arrays</a></li> +<li><a target="_blank" rel="noopener" href="https://github.com/leostera/minttea">A fun little TUI framework for OCaml</a></li> +<li><a target="_blank" rel="noopener" href="https://github.com/terrateamio/ocaml-ts-mode">ocaml-ts-mode: Ocaml mode for emacs using treesitter</a></li> +<li><a target="_blank" rel="noopener" href="https://github.com/dmmulroy/create-melange-app">create-melange-app: An example app created by create-melange-app</a></li> +<li><a target="_blank" rel="noopener" href="https://github.com/andersfugmann/ppx_protocol_conv">ppx_protocol_conv: Pluggable serialization and deserialization of ocaml data strucures based on type_conv</a></li> +<li><a target="_blank" rel="noopener" href="https://spatial-shell.app/">spatial-shell: Spatial Shell is a daemon implementing a spatial model inspired by Material Shell, for i3 and sway. More precisely, it organizes your windows within a grid whose rows are the workspaces of your favorite WM.</a></li> +<li><a target="_blank" rel="noopener" href="https://codeberg.org/marcc/fixgen">Fixgen: A language agnostic fixture generator</a></li> +<li><a target="_blank" rel="noopener" href="https://github.com/tweag/opam-nix">opam-nix: Turn opam-based OCaml projects into Nix derivations</a></li> +<li><a target="_blank" rel="noopener" href="https://github.com/leostera/blink">Blink: A pure OCaml HTTP client for Riot</a></li> +<li><a target="_blank" rel="noopener" href="https://github.com/leostera/colors">colors: A pure OCaml library for manipulating colors in different color spaces.</a></li> +<li><a target="_blank" rel="noopener" href="https://github.com/nationalarchives/miiify">miilfy: A web annotation server built with the same principles as Git</a></li> +</ul> +<h2 id="New-Releases"><a href="#New-Releases" class="headerlink" title="New Releases"></a>New Releases</h2><ul> +<li><a target="_blank" rel="noopener" href="https://github.com/leostera/riot">Roit v0.0.7: An actor-model multi-core scheduler for OCaml 5 🐫</a></li> +<li><a target="_blank" rel="noopener" href="https://github.com/leostera/castore">CAStore: A portable pure OCaml CA Store, with no dependencies, inspired by Elixir’s <a target="_blank" rel="noopener" href="https://github.com/elixir-mint/castore">:castore</a>.</a></li> +<li><a target="_blank" rel="noopener" href="https://discuss.ocaml.org/t/learn-ocaml-1-0-approaching-call-for-testers/13621">Lean-OCaml 1.0: A Web Application for Learning OCaml</a></li> +<li><a target="_blank" rel="noopener" href="https://erratique.ch/software/cmarkit">cmarkit 0.3.0” CommonMark parser and renderer for OCaml</a></li> +<li><a target="_blank" rel="noopener" href="https://ocaml.org/p/dream-html/latest">dream-html 2.0.0: A library for generating HTML</a></li> +<li><a target="_blank" rel="noopener" href="https://git.frama-c.com/pub/caisar/">Caisar: A platform under active development at CEA LIST, aiming to provide a wide range of features to characterize the safety and robustness of artificial intelligence based software.</a></li> +<li><a target="_blank" rel="noopener" href="https://github.com/jserot/rfsm">RFSM 2.0: A toolset for describing and simulating StateChart-like state diagrams.</a></li> +<li><a target="_blank" rel="noopener" href="https://github.com/chshersh/zbg/tree/main">Zbg 2.0: <code>zbg</code> (short for <strong>Z</strong>ero <strong>B</strong>ullshit <strong>G</strong>it) is a CLI tool for using <code>git</code> efficiently.</a></li> +</ul> + +</div> + +<script> + window.onload = detectors(); +</script> + <div class="post-footer"> + <div class="h-line-primary"></div> + <nav class="post-nav"> + <div class="prev-item"> + + <div class="icon arrow-left"></div> + <div class="post-link"> + <a href="/2024/01/18/OCaml-News-2024-2/">Prev</a> + </div> + + </div> + <div class="next-item"> + + <div class="icon arrow-right"></div> + <div class="post-link"> + <a href="/2023/12/02/%E4%BA%8C%E3%80%87%E4%BA%8C%E4%B8%89%E5%B9%B4%E5%8D%81%E4%BA%8C%E6%9C%88%E4%BA%8C%E6%97%A5/">Next</a> + </div> + + </div> + </nav> +</div> + + + <div class="post-comment"> + + + + + + + +</div> + + +</article> + </div> + </div> + + <div class="footer"> + <div class="flex-container"> + <div class="footer-text"> + + + | + + + 希望路过的人可以添点柴火让这里暖和点 + + </div> + </div> +</div> + + </div> + + + + + </body> +</html> diff --git a/2024/01/18/OCaml-News-2024-2/index.html b/2024/01/18/OCaml-News-2024-2/index.html new file mode 100644 index 00000000..a97be6e9 --- /dev/null +++ b/2024/01/18/OCaml-News-2024-2/index.html @@ -0,0 +1,293 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="UTF-8"> +<meta name="viewport" + content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> +<meta http-equiv="X-UA-Compatible" content="ie=edge"> + + <meta name="author" content="韩暮秋"> + + + <meta name="subtitle" content="暮秋小屋"> + + + <meta name="description" content="这里是暮秋小屋,思念和灵感的寄存处"> + + + <meta name="keywords" content="韩暮秋,MuqiuHan"> + + + + +<title>OCaml News 2024-2 | 暮秋小屋</title> + + + + + +<style> + @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=Noto+Sans+SC:wght@300;400;500;700&family=Roboto+Mono&display=swap'); +</style> + + + + <!-- stylesheets list from _config.yml --> + + <link rel="stylesheet" href="/css/style.css"> + + + + + + <!-- scripts list from _config.yml --> + + <script src="/js/frame.js"></script> + + + + + + <script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script> + <script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script> + + + + + + + + <meta name="generator" content="Hexo 6.3.0"></head> + <body> + <div class="mask-border"> + </div> + + <div class="wrapper"> + + <div class="header"> + <div class="flex-container"> + <div class="header-inner"> + <div class="site-brand-container"> + <a href="/"> + + 暮秋小屋 + + </a> + </div> + <div id="menu-btn" class="menu-btn" onclick="toggleMenu()"> + Menu + </div> + <nav class="site-nav"> + <ul class="menu-list"> + + + <li class="menu-item"> + <a href="/">主页</a> + </li> + + + + <li class="menu-item"> + <a href="/categories/gallery/">日记本</a> + </li> + + + + <li class="menu-item"> + <a href="/tags/Medicine/">医学</a> + </li> + + + + <li class="menu-item"> + <a href="/tags/Technique/">计算机科学</a> + </li> + + + + <li class="menu-item"> + <a href="/tags/Life/">生活</a> + </li> + + + + <li class="menu-item"> + <a href="/about">关于</a> + </li> + + + + </ul> + </nav> + </div> + </div> +</div> + + + <div class="main"> + <div class="flex-container"> + <article id="post"> + + + <div class="post-head"> + <div class="post-info"> + <div class="tag-list"> + + + <span class="post-tag"> + <a href="/tags/Technique/"> + Technique + </a> + </span> + + <span class="post-tag"> + <a href="/tags/OCaml/"> + OCaml + </a> + </span> + + + </div> + <div class="post-title"> + + + OCaml News 2024-2 + + + </div> + <span class="post-date"> + Jan 18, 2024 + </span> + </div> + <div class="post-img"> + + <div class="h-line-primary"></div> + + </div> +</div> + <div class="post-content"> + <h2 id="News"><a href="#News" class="headerlink" title="News"></a>News</h2><ul> +<li><a target="_blank" rel="noopener" href="https://discuss.ocaml.org/t/ann-preview-play-with-project-wide-occurrences-for-ocaml/13814">[ANN][PREVIEW] Play with project-wide occurrences for OCaml!</a></li> +<li><a target="_blank" rel="noopener" href="https://github.com/ocaml/dune/pull/8784">[Dune]: Add link flags ocamlmklib when using ctypes stubs. #8784</a></li> +<li><a target="_blank" rel="noopener" href="https://discuss.ocaml.org/t/ocaml-software-foundation-january-2024-update/13828">OCaml Software Foundation: January 2024 update</a></li> +<li>[Apprendre à programmer avec OCaml](Apprendre à programmer avec OCaml)</li> +<li><a target="_blank" rel="noopener" href="https://discuss.ocaml.org/t/call-for-speakers-for-the-2024-carolina-code-conference-is-open-until-april-15th/13827"><a target="_blank" rel="noopener" href="https://discuss.ocaml.org/t/call-for-speakers-for-the-2024-carolina-code-conference-is-open-until-april-15th/13827">Call for Speakers for the 2024 Carolina Code Conference is open until April 15th</a></a></li> +<li><a target="_blank" rel="noopener" href="https://github.com/ocaml/ocaml/discussions/11924">[OCaml]: feature request: better errors #11924</a></li> +<li><a target="_blank" rel="noopener" href="https://discuss.ocaml.org/t/ocsigen-summary-of-recent-releases/13817">Ocsigen: summary of recent releases</a></li> +</ul> +<h2 id="Discussion"><a href="#Discussion" class="headerlink" title="Discussion"></a>Discussion</h2><ul> +<li><a target="_blank" rel="noopener" href="https://discuss.ocaml.org/t/benchmark-between-open-addressing-and-closed-addressing-hashtbl/13882">Benchmark between open-addressing and closed-addressing hashtbl</a></li> +<li><a target="_blank" rel="noopener" href="https://discuss.ocaml.org/t/examples-of-caqti-infix/13878">Examples of Caqti infix?</a></li> +<li><a target="_blank" rel="noopener" href="https://discuss.ocaml.org/t/why-can-t-i-create-a-project-with-non-ascii-characters/13865">Why can’t I create a project with non-ASCII characters? </a></li> +<li><a target="_blank" rel="noopener" href="https://discuss.ocaml.org/t/old-self-taught-vs-uni-debate-landscape-for-former-jane-street/13851">Old self-taught vs. uni debate; Landscape for former; Jane Street</a></li> +<li><a target="_blank" rel="noopener" href="https://discuss.ocaml.org/t/toml-file-parser/13854">Is there an easy way to read the values from a toml file?</a></li> +<li><a target="_blank" rel="noopener" href="https://discuss.ocaml.org/t/generate-typed-ast-fragments/13824">Generate typed AST fragments</a></li> +<li><a target="_blank" rel="noopener" href="https://discuss.ocaml.org/t/partially-apply-function-accepting-multiple-modules-and-keep-polymorphic-types/13823">Partially apply function accepting multiple modules and keep polymorphic types</a></li> +<li><a target="_blank" rel="noopener" href="https://discuss.ocaml.org/t/printing-unicode-characters-on-different-platforms/13813">Printing Unicode Characters on Different Platforms</a></li> +</ul> +<h2 id="Videos"><a href="#Videos" class="headerlink" title="Videos"></a>Videos</h2><ul> +<li><a target="_blank" rel="noopener" href="https://watch.ocaml.org/w/iQNqZzA8gVmd4RQaycAwx4">Verifying an Effect-Based Cooperative Concurrency Scheduler in Iris by Adrian Dapprich</a></li> +</ul> +<h2 id="Blogs"><a href="#Blogs" class="headerlink" title="Blogs"></a>Blogs</h2><ul> +<li><a target="_blank" rel="noopener" href="https://discuss.ocaml.org/t/advice-for-combining-multiple-monads/10409">Advice for combining multiple monads</a></li> +<li><a target="_blank" rel="noopener" href="https://discuss.ocaml.org/t/writing-ctypes-bindings-to-system-shared-libraries-for-bytecode-targets-via-the-dune-ctypes-stanza/13844">Writing ctypes bindings to system shared libraries for bytecode targets via the dune ctypes stanza</a></li> +</ul> +<h2 id="Highlighted-Projects"><a href="#Highlighted-Projects" class="headerlink" title="Highlighted Projects"></a>Highlighted Projects</h2><ul> +<li><a target="_blank" rel="noopener" href="https://github.com/johnyob/grace">Grace: A fancy diagnostics library that allows your compilers to exit with grace</a></li> +<li><a target="_blank" rel="noopener" href="https://github.com/thierry-martinez/metapp">meta-pp: Meta-preprocessor for OCaml</a></li> +<li><a target="_blank" rel="noopener" href="https://github.com/stedolan/ppx_stage">ppx_stage: Staged metaprogramming in stock OCaml</a></li> +<li><a target="_blank" rel="noopener" href="https://erratique.ch/software/cmarkit">Cmarkit is an <a target="_blank" rel="noopener" href="http://ocaml.org/">OCaml</a> libary for parsing the <a target="_blank" rel="noopener" href="https://spec.commonmark.org/">CommonMark</a> specification.</a></li> +<li><a target="_blank" rel="noopener" href="https://erratique.ch/software/brr">Brr is a toolkit for programming browsers in <a target="_blank" rel="noopener" href="http://ocaml.org/">OCaml</a> with the <a target="_blank" rel="noopener" href="http://ocsigen.org/js_of_ocaml/">js_of_ocaml</a> compiler. It provides:</a></li> +<li><a target="_blank" rel="noopener" href="https://erratique.ch/software/zipc">Zipc is an in-memory <a target="_blank" rel="noopener" href="https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT">ZIP</a> archive and <a target="_blank" rel="noopener" href="https://www.rfc-editor.org/rfc/rfc1951">deflate</a> compression codec for <a target="_blank" rel="noopener" href="http://ocaml.org/">OCaml</a>.</a></li> +<li><a target="_blank" rel="noopener" href="https://github.com/lukstafi/ocaml-gccjit">ocaml-gccjit: OCaml bindings for libgccjit</a></li> +<li><a target="_blank" rel="noopener" href="https://github.com/whitequark/ocaml-m17n">ocaml-m17n: Multilingualization for the OCaml source code</a></li> +<li><a target="_blank" rel="noopener" href="https://github.com/hackwaly/ocamlearlybird">ocamlearlybird: OCaml debug adapter</a></li> +<li><a target="_blank" rel="noopener" href="https://github.com/dmbaturin/otoml">otoml: TOML parsing, manipulation, and pretty-printing library for OCaml (fully 1.0.0-compliant)</a></li> +<li><a target="_blank" rel="noopener" href="https://github.com/mattjbray/ocaml-decoders">ocaml-decoders: Elm-inspired decoders for Ocaml</a></li> +<li><a target="_blank" rel="noopener" href="https://github.com/OCamlPro/ez_toml">ez_toml: A library to parse and print TOML files</a></li> +</ul> +<h2 id="New-Releases"><a href="#New-Releases" class="headerlink" title="New Releases"></a>New Releases</h2><ul> +<li><a target="_blank" rel="noopener" href="http://cambium.inria.fr/~fpottier/oma/doc/oma/Oma/index.html">Oma: OCaml implementation of ‘Two Simplified Algorithms for Maintaining Order in a List’</a><ul> +<li><a target="_blank" rel="noopener" href="https://discuss.ocaml.org/t/ann-first-release-of-oma/13845">[ANN] First release of oma</a></li> +<li><a target="_blank" rel="noopener" href="https://erikdemaine.org/papers/DietzSleator_ESA2002/paper.pdf">Two Simplified Algorithms for Maintaining Order in a List</a></li> +</ul> +</li> +<li><a target="_blank" rel="noopener" href="https://github.com/hackwaly/ocamlearlybird">ocamlearlybird: v1.3.0</a><ul> +<li><a target="_blank" rel="noopener" href="https://discuss.ocaml.org/t/ann-ocamlearlybird-just-got-ability-to-inspect-opaque-abstract-values/13852">[ANN] Ocamlearlybird just got ability to inspect opaque/abstract values</a></li> +</ul> +</li> +<li><a target="_blank" rel="noopener" href="https://github.com/Axot017/validate">validate: OCaml Data Validation library</a><ul> +<li><a target="_blank" rel="noopener" href="https://discuss.ocaml.org/t/ann-validate-a-new-library-for-data-validation/13861">[ANN] Validate - A New Library for Data Validation</a></li> +</ul> +</li> +<li><a target="_blank" rel="noopener" href="https://github.com/gborough/sarif">sarif v2.1.0: Static Analysis Results Interchange Format (SARIF) For OCaml</a><ul> +<li><a target="_blank" rel="noopener" href="https://discuss.ocaml.org/t/ann-sarif-0-1-0-static-analysis-results-interchange-format-sarif-for-ocaml/13821">[ANN] sarif 0.1.0 - Static Analysis Results Interchange Format (SARIF) For OCaml</a></li> +</ul> +</li> +<li><a target="_blank" rel="noopener" href="https://discuss.ocaml.org/t/ann-new-release-of-menhir-20231231/13816">[ANN] New release of Menhir (20231231)</a></li> +</ul> + +</div> + +<script> + window.onload = detectors(); +</script> + <div class="post-footer"> + <div class="h-line-primary"></div> + <nav class="post-nav"> + <div class="prev-item"> + + <div class="icon arrow-left"></div> + <div class="post-link"> + <a href="/2024/01/22/Rescript-React-Native/">Prev</a> + </div> + + </div> + <div class="next-item"> + + <div class="icon arrow-right"></div> + <div class="post-link"> + <a href="/2024/01/08/OCaml-News-2024-1/">Next</a> + </div> + + </div> + </nav> +</div> + + + <div class="post-comment"> + + + + + + + +</div> + + +</article> + </div> + </div> + + <div class="footer"> + <div class="flex-container"> + <div class="footer-text"> + + + | + + + 希望路过的人可以添点柴火让这里暖和点 + + </div> + </div> +</div> + + </div> + + + + + </body> +</html> diff --git a/2024/01/22/Rescript-React-Native/index.html b/2024/01/22/Rescript-React-Native/index.html new file mode 100644 index 00000000..47775070 --- /dev/null +++ b/2024/01/22/Rescript-React-Native/index.html @@ -0,0 +1,255 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="UTF-8"> +<meta name="viewport" + content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> +<meta http-equiv="X-UA-Compatible" content="ie=edge"> + + <meta name="author" content="韩暮秋"> + + + <meta name="subtitle" content="暮秋小屋"> + + + <meta name="description" content="这里是暮秋小屋,思念和灵感的寄存处"> + + + <meta name="keywords" content="韩暮秋,MuqiuHan"> + + + + +<title>Rescript React Native | 暮秋小屋</title> + + + + + +<style> + @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=Noto+Sans+SC:wght@300;400;500;700&family=Roboto+Mono&display=swap'); +</style> + + + + <!-- stylesheets list from _config.yml --> + + <link rel="stylesheet" href="/css/style.css"> + + + + + + <!-- scripts list from _config.yml --> + + <script src="/js/frame.js"></script> + + + + + + <script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script> + <script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script> + + + + + + + + <meta name="generator" content="Hexo 6.3.0"></head> + <body> + <div class="mask-border"> + </div> + + <div class="wrapper"> + + <div class="header"> + <div class="flex-container"> + <div class="header-inner"> + <div class="site-brand-container"> + <a href="/"> + + 暮秋小屋 + + </a> + </div> + <div id="menu-btn" class="menu-btn" onclick="toggleMenu()"> + Menu + </div> + <nav class="site-nav"> + <ul class="menu-list"> + + + <li class="menu-item"> + <a href="/">主页</a> + </li> + + + + <li class="menu-item"> + <a href="/categories/gallery/">日记本</a> + </li> + + + + <li class="menu-item"> + <a href="/tags/Medicine/">医学</a> + </li> + + + + <li class="menu-item"> + <a href="/tags/Technique/">计算机科学</a> + </li> + + + + <li class="menu-item"> + <a href="/tags/Life/">生活</a> + </li> + + + + <li class="menu-item"> + <a href="/about">关于</a> + </li> + + + + </ul> + </nav> + </div> + </div> +</div> + + + <div class="main"> + <div class="flex-container"> + <article id="post"> + + + <div class="post-head"> + <div class="post-info"> + <div class="tag-list"> + + + <span class="post-tag"> + <a href="/tags/Technique/"> + Technique + </a> + </span> + + <span class="post-tag"> + <a href="/tags/Rescript/"> + Rescript + </a> + </span> + + + </div> + <div class="post-title"> + + + Rescript React Native + + + </div> + <span class="post-date"> + Jan 22, 2024 + </span> + </div> + <div class="post-img"> + + <div class="h-line-primary"></div> + + </div> +</div> + <div class="post-content"> + <p>Rescript 对 React Native 的支持还算可以,但如今的 RN 已经是 Expo 的 RN 了,所以仍然有些落后,在这个 template 中,我测试了 rescript + rescript-react-native + expo + nativewind 的组合,可以跑起来:</p> +<ul> +<li><a target="_blank" rel="noopener" href="https://github.com/muqiuhan/rescript-react-native-expo-nativewind-template">muqiuhan/rescript-react-native-expo-nativewind-template</a></li> +</ul> +<p>其中有两个问题,一是 <a target="_blank" rel="noopener" href="https://github.com/rescript-bindings/expo">rescript-expo</a> 对 rescript v11 的兼容性,我通过简单的注释让其通过编译:</p> +<ul> +<li><a target="_blank" rel="noopener" href="https://github.com/muqiuhan/expo/commit/918e9578f2a991450821760352c2445c4866f0d8">[Fix]: DocumentPicker type options</a></li> +</ul> +<p>二是对于 nativewind 的支持,编写的 binding 非常丑陋:</p> +<figure class="highlight plaintext"><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">type default_style = {</span><br><span class="line"> className?: string,</span><br><span class="line"> children?: React.element,</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line">@module("nativewind")</span><br><span class="line">external styled: React.component<'a> => React.component<default_style> = "styled"</span><br><span class="line"></span><br><span class="line">module StyledText = {</span><br><span class="line"> let make = styled(ReactNative.Text.make)</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line">module StyledView = {</span><br><span class="line"> let make = styled(ReactNative.View.make)</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line">module StyledImage = {</span><br><span class="line"> type props = {</span><br><span class="line"> source?: string,</span><br><span class="line"> ...default_style,</span><br><span class="line"> }</span><br><span class="line"></span><br><span class="line"> @module("nativewind")</span><br><span class="line"> external styled: React.component<'a> => React.component<props> = "styled"</span><br><span class="line"></span><br><span class="line"> let make: React.component<props> = styled(ReactNative.Image.make)</span><br><span class="line">}</span><br></pre></td></tr></table></figure> + +<p>而这似乎并没有好的解决方案,理想中的实现应该是:</p> +<figure class="highlight plaintext"><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">module Styled = (Component: {</span><br><span class="line"> type params // or type params = 'a</span><br><span class="line"> let make: React.component<props></span><br><span class="line">}) => {</span><br><span class="line"> type props = {</span><br><span class="line"> ...Component.props, // This can't work as it is not defined as record</span><br><span class="line"> className?: string</span><br><span class="line"> }</span><br><span class="line"> @module("nativewind")</span><br><span class="line"> external styled: React.component<Component.props> => React.component<props> = "styled"</span><br><span class="line"></span><br><span class="line"> let make: React.component<props> = styled(Component.make)</span><br><span class="line">}</span><br></pre></td></tr></table></figure> + +<p>或者退一步:</p> +<figure class="highlight plaintext"><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></pre></td><td class="code"><pre><span class="line">type styledProps = {</span><br><span class="line"> className?: string,</span><br><span class="line"> // ...</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line">@module("nativewind")</span><br><span class="line"> external styled: React.component<'a> => React.component<'b> = "styled"</span><br><span class="line"></span><br><span class="line">module StyledText = {</span><br><span class="line"> type props = {</span><br><span class="line"> ...ReactNative.Text.props,</span><br><span class="line"> ...styledProps</span><br><span class="line"> }</span><br><span class="line"></span><br><span class="line"> let make: React.component<props> = styled(ReactNative.Text.make)</span><br><span class="line">}</span><br></pre></td></tr></table></figure> + +<p>但这在当前的 rescript 中,根本无法实现。</p> +<p>详细的讨论看这个帖子:</p> +<ul> +<li><a target="_blank" rel="noopener" href="https://forum.rescript-lang.org/t/how-to-use-nativewind-in-rescript-react-native/5005">How to use Nativewind in Rescript React Native</a></li> +</ul> + +</div> + +<script> + window.onload = detectors(); +</script> + <div class="post-footer"> + <div class="h-line-primary"></div> + <nav class="post-nav"> + <div class="prev-item"> + + <div class="icon arrow-left"></div> + <div class="post-link"> + <a href="/2024/01/23/%E4%BA%8C%E3%80%87%E4%BA%8C%E5%9B%9B%E5%B9%B4%E4%B8%80%E6%9C%88%E4%BA%8C%E5%8D%81%E4%B8%89%E6%97%A5/">Prev</a> + </div> + + </div> + <div class="next-item"> + + <div class="icon arrow-right"></div> + <div class="post-link"> + <a href="/2024/01/18/OCaml-News-2024-2/">Next</a> + </div> + + </div> + </nav> +</div> + + + <div class="post-comment"> + + + + + + + +</div> + + +</article> + </div> + </div> + + <div class="footer"> + <div class="flex-container"> + <div class="footer-text"> + + + | + + + 希望路过的人可以添点柴火让这里暖和点 + + </div> + </div> +</div> + + </div> + + + + + </body> +</html> diff --git a/2024/01/23/G-Machine/index.html b/2024/01/23/G-Machine/index.html new file mode 100644 index 00000000..ff1d742e --- /dev/null +++ b/2024/01/23/G-Machine/index.html @@ -0,0 +1,240 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="UTF-8"> +<meta name="viewport" + content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> +<meta http-equiv="X-UA-Compatible" content="ie=edge"> + + <meta name="author" content="韩暮秋"> + + + <meta name="subtitle" content="暮秋小屋"> + + + <meta name="description" content="这里是暮秋小屋,思念和灵感的寄存处"> + + + <meta name="keywords" content="韩暮秋,MuqiuHan"> + + + + +<title>G-Machine | 暮秋小屋</title> + + + + + +<style> + @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=Noto+Sans+SC:wght@300;400;500;700&family=Roboto+Mono&display=swap'); +</style> + + + + <!-- stylesheets list from _config.yml --> + + <link rel="stylesheet" href="/css/style.css"> + + + + + + <!-- scripts list from _config.yml --> + + <script src="/js/frame.js"></script> + + + + + + <script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script> + <script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script> + + + + + + + + <meta name="generator" content="Hexo 6.3.0"></head> + <body> + <div class="mask-border"> + </div> + + <div class="wrapper"> + + <div class="header"> + <div class="flex-container"> + <div class="header-inner"> + <div class="site-brand-container"> + <a href="/"> + + 暮秋小屋 + + </a> + </div> + <div id="menu-btn" class="menu-btn" onclick="toggleMenu()"> + Menu + </div> + <nav class="site-nav"> + <ul class="menu-list"> + + + <li class="menu-item"> + <a href="/">主页</a> + </li> + + + + <li class="menu-item"> + <a href="/categories/gallery/">日记本</a> + </li> + + + + <li class="menu-item"> + <a href="/tags/Medicine/">医学</a> + </li> + + + + <li class="menu-item"> + <a href="/tags/Technique/">计算机科学</a> + </li> + + + + <li class="menu-item"> + <a href="/tags/Life/">生活</a> + </li> + + + + <li class="menu-item"> + <a href="/about">关于</a> + </li> + + + + </ul> + </nav> + </div> + </div> +</div> + + + <div class="main"> + <div class="flex-container"> + <article id="post"> + + + <div class="post-head"> + <div class="post-info"> + <div class="tag-list"> + + + <span class="post-tag"> + <a href="/tags/Technique/"> + Technique + </a> + </span> + + + </div> + <div class="post-title"> + + + G-Machine + + + </div> + <span class="post-date"> + Jan 23, 2024 + </span> + </div> + <div class="post-img"> + + <div class="h-line-primary"></div> + + </div> +</div> + <div class="post-content"> + <ul> +<li><a target="_blank" rel="noopener" href="https://link.springer.com/chapter/10.1007/3-540-15975-4_50">The G-machine: A fast, graph-reduction evaluator</a></li> +</ul> +<p>G-Machine 是一种通过图规约来对函数式语言程序求值的抽象架构。<br>与组合子规约不同,组合子规约的control是从表达式图本身动态导出的,而G-Machine是由通过编译Application表达式导出的指令序列指定的。</p> +<hr> +<p>FP的程序基本上都可以用一个表达式的图表示,图计算机就是对这个图求值的机器,总的说来对图的求值是一个不停合并图上的节点生产新节点的过程。</p> +<p>例如:</p> +<figure class="highlight ocaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">let</span> x = <span class="number">2</span> + <span class="number">3</span> <span class="keyword">in</span> </span><br><span class="line"> x * x</span><br></pre></td></tr></table></figure> + +<p>先计算出5,然后创建一个新的节点 <code>5 * 5</code>,然后再对这个节点求值,于是求值过程中就产生了很多临时的节点,这些中间节点也被叫做是 spine,求值过程是沿着 spine 进行的。</p> +<p>但是这样就产生了很多额外的开销,lambda lifting 里提到:可以把程序里,很多捕捉了外围绑定的闭包函数中的这些绑定,转换成函数的参数,从而消除闭包,得到的这个函数就可以自由脱离作用域,被静态的编译到机器码里。这些被 float out 的函数也叫 supercombinator.</p> +<p>在上面的代码中,如果不创建新的节点,顺序计算完了第一个 <code>x</code>,第二个 <code>x</code> 还会再被算一遍。</p> +<p>Spineless reduction 的概念:只有当面临需要重复计算的情况时,才去创建节点,不然就一路顺序算下去</p> +<ul> +<li><a target="_blank" rel="noopener" href="https://en.wikipedia.org/wiki/Graph_reduction">Graph reduction</a></li> +<li><a target="_blank" rel="noopener" href="https://en.wikipedia.org/wiki/Graph_reduction_machine">Graph reduction machine</a></li> +<li><a target="_blank" rel="noopener" href="https://www.zhihu.com/question/54834531/answer/144213668">https://www.zhihu.com/question/54834531/answer/144213668</a></li> +</ul> + +</div> + +<script> + window.onload = detectors(); +</script> + <div class="post-footer"> + <div class="h-line-primary"></div> + <nav class="post-nav"> + <div class="prev-item"> + + </div> + <div class="next-item"> + + <div class="icon arrow-right"></div> + <div class="post-link"> + <a href="/2024/01/23/%E6%85%A2%E6%80%A7%E8%82%BA%E6%BA%90%E6%80%A7%E5%BF%83%E8%84%8F%E7%97%85/">Next</a> + </div> + + </div> + </nav> +</div> + + + <div class="post-comment"> + + + + + + + +</div> + + +</article> + </div> + </div> + + <div class="footer"> + <div class="flex-container"> + <div class="footer-text"> + + + | + + + 希望路过的人可以添点柴火让这里暖和点 + + </div> + </div> +</div> + + </div> + + + + + </body> +</html> diff --git a/2024/01/23/二〇二四年一月二十三日/index.html b/2024/01/23/二〇二四年一月二十三日/index.html index b41da268..62bf3ade 100644 --- a/2024/01/23/二〇二四年一月二十三日/index.html +++ b/2024/01/23/二〇二四年一月二十三日/index.html @@ -195,7 +195,7 @@ <div class="icon arrow-right"></div> <div class="post-link"> - <a href="/2023/12/02/%E4%BA%8C%E3%80%87%E4%BA%8C%E4%B8%89%E5%B9%B4%E5%8D%81%E4%BA%8C%E6%9C%88%E4%BA%8C%E6%97%A5/">Next</a> + <a href="/2024/01/22/Rescript-React-Native/">Next</a> </div> </div> diff --git a/2024/01/23/慢性肺源性心脏病/index.html b/2024/01/23/慢性肺源性心脏病/index.html index 93def6d0..91a5abba 100644 --- a/2024/01/23/慢性肺源性心脏病/index.html +++ b/2024/01/23/慢性肺源性心脏病/index.html @@ -237,6 +237,11 @@ <nav class="post-nav"> <div class="prev-item"> + <div class="icon arrow-left"></div> + <div class="post-link"> + <a href="/2024/01/23/G-Machine/">Prev</a> + </div> + </div> <div class="next-item"> diff --git a/archives/2023/10/index.html b/archives/2023/10/index.html index a4d23175..20fee9f8 100644 --- a/archives/2023/10/index.html +++ b/archives/2023/10/index.html @@ -293,6 +293,24 @@ </div> + + + + + + <div class="post-list-item"> + <div class="post-title"> + <a href="/2023/10/05/v8%E4%B8%AD%E7%9A%84Number-toString/"> + + v8中的Number.toString() + + </a> + </div> + + <span class="post-date">Oct 5, 2023</span> + </div> + + <div id="paginator"> </div> diff --git a/archives/2023/page/2/index.html b/archives/2023/page/2/index.html index 999db11d..6d6f0eae 100644 --- a/archives/2023/page/2/index.html +++ b/archives/2023/page/2/index.html @@ -228,14 +228,14 @@ <div class="post-list-item"> <div class="post-title"> - <a href="/2023/09/28/A-Brief-History-of-Just-In-Time/"> + <a href="/2023/10/05/v8%E4%B8%AD%E7%9A%84Number-toString/"> - A Brief History of Just-In-Time + v8中的Number.toString() </a> </div> - <span class="post-date">Sep 28, 2023</span> + <span class="post-date">Oct 5, 2023</span> </div> @@ -246,14 +246,14 @@ <div class="post-list-item"> <div class="post-title"> - <a href="/2023/09/13/%E4%BA%8C%E9%9B%B6%E4%BA%8C%E4%B8%89%E5%B9%B4%E4%B9%9D%E6%9C%88%E5%8D%81%E4%B8%89%E6%97%A5/"> + <a href="/2023/09/28/A-Brief-History-of-Just-In-Time/"> - 二零二三年九月十三日 + A Brief History of Just-In-Time </a> </div> - <span class="post-date">Sep 13, 2023</span> + <span class="post-date">Sep 28, 2023</span> </div> @@ -264,14 +264,14 @@ <div class="post-list-item"> <div class="post-title"> - <a href="/2023/08/27/%E4%BA%8C%E9%9B%B6%E4%BA%8C%E4%B8%89%E5%B9%B4%E5%85%AB%E6%9C%88%E4%BA%8C%E5%8D%81%E4%B8%83%E6%97%A5/"> + <a href="/2023/09/13/%E4%BA%8C%E9%9B%B6%E4%BA%8C%E4%B8%89%E5%B9%B4%E4%B9%9D%E6%9C%88%E5%8D%81%E4%B8%89%E6%97%A5/"> - 二零二三年八月二十七日 + 二零二三年九月十三日 </a> </div> - <span class="post-date">Aug 27, 2023</span> + <span class="post-date">Sep 13, 2023</span> </div> @@ -282,14 +282,14 @@ <div class="post-list-item"> <div class="post-title"> - <a href="/2023/08/21/%E4%BA%8C%E9%9B%B6%E4%BA%8C%E4%B8%89%E5%B9%B4%E5%85%AB%E6%9C%88%E4%BA%8C%E5%8D%81%E4%B8%80%E6%97%A5/"> + <a href="/2023/08/27/%E4%BA%8C%E9%9B%B6%E4%BA%8C%E4%B8%89%E5%B9%B4%E5%85%AB%E6%9C%88%E4%BA%8C%E5%8D%81%E4%B8%83%E6%97%A5/"> - 二零二三年八月二十一日 + 二零二三年八月二十七日 </a> </div> - <span class="post-date">Aug 21, 2023</span> + <span class="post-date">Aug 27, 2023</span> </div> @@ -300,14 +300,14 @@ <div class="post-list-item"> <div class="post-title"> - <a href="/2023/08/15/tick-thread%E5%9C%A8Multicore-OCaml%E4%B8%AD%E7%9A%84%E4%BD%9C%E7%94%A8/"> + <a href="/2023/08/21/%E4%BA%8C%E9%9B%B6%E4%BA%8C%E4%B8%89%E5%B9%B4%E5%85%AB%E6%9C%88%E4%BA%8C%E5%8D%81%E4%B8%80%E6%97%A5/"> - tick thread在Multicore OCaml中的作用 + 二零二三年八月二十一日 </a> </div> - <span class="post-date">Aug 15, 2023</span> + <span class="post-date">Aug 21, 2023</span> </div> diff --git a/archives/2023/page/3/index.html b/archives/2023/page/3/index.html index b621630d..f532b7e6 100644 --- a/archives/2023/page/3/index.html +++ b/archives/2023/page/3/index.html @@ -138,6 +138,24 @@ <div class="post-list-item"> <div class="post-title"> + <a href="/2023/08/15/tick-thread%E5%9C%A8Multicore-OCaml%E4%B8%AD%E7%9A%84%E4%BD%9C%E7%94%A8/"> + + tick thread在Multicore OCaml中的作用 + + </a> + </div> + + <span class="post-date">Aug 15, 2023</span> + </div> + + + + + + + + <div class="post-list-item"> + <div class="post-title"> <a href="/2023/08/15/poll-error-attribute-in-OCaml/"> 使用 [@poll error] 实现线程安全的数据结构 @@ -293,24 +311,6 @@ </div> - - - - - - <div class="post-list-item"> - <div class="post-title"> - <a href="/2023/06/22/%E7%81%AF%E7%AC%BC%E8%8D%89/"> - - 灯笼草 - - </a> - </div> - - <span class="post-date">Jun 22, 2023</span> - </div> - - <div id="paginator"> <div class=paginator> diff --git a/archives/2023/page/4/index.html b/archives/2023/page/4/index.html index 9326b4ba..6084bdf4 100644 --- a/archives/2023/page/4/index.html +++ b/archives/2023/page/4/index.html @@ -138,6 +138,24 @@ <div class="post-list-item"> <div class="post-title"> + <a href="/2023/06/22/%E7%81%AF%E7%AC%BC%E8%8D%89/"> + + 灯笼草 + + </a> + </div> + + <span class="post-date">Jun 22, 2023</span> + </div> + + + + + + + + <div class="post-list-item"> + <div class="post-title"> <a href="/2023/06/17/%E5%8F%91%E7%83%AD%E5%8F%8A%E8%B6%85%E9%AB%98%E7%83%AD%E5%8D%B1%E8%B1%A1/"> 发热及超高热危象 @@ -293,24 +311,6 @@ </div> - - - - - - <div class="post-list-item"> - <div class="post-title"> - <a href="/2023/03/01/%E6%B0%94%E8%83%B8/"> - - 气胸 - - </a> - </div> - - <span class="post-date">Mar 1, 2023</span> - </div> - - <div id="paginator"> <div class=paginator> diff --git a/archives/2023/page/5/index.html b/archives/2023/page/5/index.html index 6e2e1e39..1883a23f 100644 --- a/archives/2023/page/5/index.html +++ b/archives/2023/page/5/index.html @@ -138,6 +138,24 @@ <div class="post-list-item"> <div class="post-title"> + <a href="/2023/03/01/%E6%B0%94%E8%83%B8/"> + + 气胸 + + </a> + </div> + + <span class="post-date">Mar 1, 2023</span> + </div> + + + + + + + + <div class="post-list-item"> + <div class="post-title"> <a href="/2023/03/01/%E7%BA%AF%E7%89%9B%E5%A5%B6%E5%8F%AF%E4%BB%A5%E5%8A%A0%E7%82%B9%E5%95%A5/"> 纯牛奶可以加点啥 diff --git a/archives/2024/01/index.html b/archives/2024/01/index.html index 9317622e..9328d12d 100644 --- a/archives/2024/01/index.html +++ b/archives/2024/01/index.html @@ -138,6 +138,24 @@ <div class="post-list-item"> <div class="post-title"> + <a href="/2024/01/23/G-Machine/"> + + G-Machine + + </a> + </div> + + <span class="post-date">Jan 23, 2024</span> + </div> + + + + + + + + <div class="post-list-item"> + <div class="post-title"> <a href="/2024/01/23/%E6%85%A2%E6%80%A7%E8%82%BA%E6%BA%90%E6%80%A7%E5%BF%83%E8%84%8F%E7%97%85/"> 慢性肺源性心脏病 @@ -167,6 +185,60 @@ </div> + + + + + + <div class="post-list-item"> + <div class="post-title"> + <a href="/2024/01/22/Rescript-React-Native/"> + + Rescript React Native + + </a> + </div> + + <span class="post-date">Jan 22, 2024</span> + </div> + + + + + + + + <div class="post-list-item"> + <div class="post-title"> + <a href="/2024/01/18/OCaml-News-2024-2/"> + + OCaml News 2024-2 + + </a> + </div> + + <span class="post-date">Jan 18, 2024</span> + </div> + + + + + + + + <div class="post-list-item"> + <div class="post-title"> + <a href="/2024/01/08/OCaml-News-2024-1/"> + + OCaml News 2024-1 + + </a> + </div> + + <span class="post-date">Jan 8, 2024</span> + </div> + + <div id="paginator"> </div> diff --git a/archives/2024/index.html b/archives/2024/index.html index fe63ebb5..48887a91 100644 --- a/archives/2024/index.html +++ b/archives/2024/index.html @@ -138,6 +138,24 @@ <div class="post-list-item"> <div class="post-title"> + <a href="/2024/01/23/G-Machine/"> + + G-Machine + + </a> + </div> + + <span class="post-date">Jan 23, 2024</span> + </div> + + + + + + + + <div class="post-list-item"> + <div class="post-title"> <a href="/2024/01/23/%E6%85%A2%E6%80%A7%E8%82%BA%E6%BA%90%E6%80%A7%E5%BF%83%E8%84%8F%E7%97%85/"> 慢性肺源性心脏病 @@ -167,6 +185,60 @@ </div> + + + + + + <div class="post-list-item"> + <div class="post-title"> + <a href="/2024/01/22/Rescript-React-Native/"> + + Rescript React Native + + </a> + </div> + + <span class="post-date">Jan 22, 2024</span> + </div> + + + + + + + + <div class="post-list-item"> + <div class="post-title"> + <a href="/2024/01/18/OCaml-News-2024-2/"> + + OCaml News 2024-2 + + </a> + </div> + + <span class="post-date">Jan 18, 2024</span> + </div> + + + + + + + + <div class="post-list-item"> + <div class="post-title"> + <a href="/2024/01/08/OCaml-News-2024-1/"> + + OCaml News 2024-1 + + </a> + </div> + + <span class="post-date">Jan 8, 2024</span> + </div> + + <div id="paginator"> </div> diff --git a/archives/index.html b/archives/index.html index 6e87a333..0a4737dd 100644 --- a/archives/index.html +++ b/archives/index.html @@ -138,9 +138,9 @@ <div class="post-list-item"> <div class="post-title"> - <a href="/2024/01/23/%E6%85%A2%E6%80%A7%E8%82%BA%E6%BA%90%E6%80%A7%E5%BF%83%E8%84%8F%E7%97%85/"> + <a href="/2024/01/23/G-Machine/"> - 慢性肺源性心脏病 + G-Machine </a> </div> @@ -156,9 +156,9 @@ <div class="post-list-item"> <div class="post-title"> - <a href="/2024/01/23/%E4%BA%8C%E3%80%87%E4%BA%8C%E5%9B%9B%E5%B9%B4%E4%B8%80%E6%9C%88%E4%BA%8C%E5%8D%81%E4%B8%89%E6%97%A5/"> + <a href="/2024/01/23/%E6%85%A2%E6%80%A7%E8%82%BA%E6%BA%90%E6%80%A7%E5%BF%83%E8%84%8F%E7%97%85/"> - 二〇二四年一月二十三日 + 慢性肺源性心脏病 </a> </div> @@ -171,19 +171,17 @@ - <div class="year-title">2023</div> - <div class="post-list-item"> <div class="post-title"> - <a href="/2023/12/02/%E4%BA%8C%E3%80%87%E4%BA%8C%E4%B8%89%E5%B9%B4%E5%8D%81%E4%BA%8C%E6%9C%88%E4%BA%8C%E6%97%A5/"> + <a href="/2024/01/23/%E4%BA%8C%E3%80%87%E4%BA%8C%E5%9B%9B%E5%B9%B4%E4%B8%80%E6%9C%88%E4%BA%8C%E5%8D%81%E4%B8%89%E6%97%A5/"> - 二〇二三年十二月二日 + 二〇二四年一月二十三日 </a> </div> - <span class="post-date">Dec 2, 2023</span> + <span class="post-date">Jan 23, 2024</span> </div> @@ -194,14 +192,14 @@ <div class="post-list-item"> <div class="post-title"> - <a href="/2023/12/01/%E4%BA%8C%E3%80%87%E4%BA%8C%E4%B8%89%E5%B9%B4%E5%8D%81%E4%BA%8C%E6%9C%88%E4%B8%80%E6%97%A5/"> + <a href="/2024/01/22/Rescript-React-Native/"> - 二〇二三年十二月一日 + Rescript React Native </a> </div> - <span class="post-date">Dec 1, 2023</span> + <span class="post-date">Jan 22, 2024</span> </div> @@ -212,14 +210,14 @@ <div class="post-list-item"> <div class="post-title"> - <a href="/2023/11/29/%E4%BA%8C%E3%80%87%E4%BA%8C%E4%B8%89%E5%B9%B4%E5%8D%81%E4%B8%80%E6%9C%88%E4%BA%8C%E5%8D%81%E4%B9%9D%E6%97%A5/"> + <a href="/2024/01/18/OCaml-News-2024-2/"> - 二〇二三年十一月二十九日 + OCaml News 2024-2 </a> </div> - <span class="post-date">Nov 29, 2023</span> + <span class="post-date">Jan 18, 2024</span> </div> @@ -230,14 +228,14 @@ <div class="post-list-item"> <div class="post-title"> - <a href="/2023/11/21/Adolescent-Onset-of-Acute-Heart-Failure/"> + <a href="/2024/01/08/OCaml-News-2024-1/"> - Adolescent Onset of Acute Heart Failure + OCaml News 2024-1 </a> </div> - <span class="post-date">Nov 21, 2023</span> + <span class="post-date">Jan 8, 2024</span> </div> @@ -245,17 +243,19 @@ + <div class="year-title">2023</div> + <div class="post-list-item"> <div class="post-title"> - <a href="/2023/11/16/Fever-of-Unknown-Origin/"> + <a href="/2023/12/02/%E4%BA%8C%E3%80%87%E4%BA%8C%E4%B8%89%E5%B9%B4%E5%8D%81%E4%BA%8C%E6%9C%88%E4%BA%8C%E6%97%A5/"> - Fever of Unknown Origin + 二〇二三年十二月二日 </a> </div> - <span class="post-date">Nov 16, 2023</span> + <span class="post-date">Dec 2, 2023</span> </div> @@ -266,14 +266,14 @@ <div class="post-list-item"> <div class="post-title"> - <a href="/2023/11/06/%E4%BA%8C%E9%9B%B6%E4%BA%8C%E4%B8%89%E5%B9%B4%E5%8D%81%E4%B8%80%E6%9C%88%E5%85%AD%E6%97%A5/"> + <a href="/2023/12/01/%E4%BA%8C%E3%80%87%E4%BA%8C%E4%B8%89%E5%B9%B4%E5%8D%81%E4%BA%8C%E6%9C%88%E4%B8%80%E6%97%A5/"> - 二零二三年十一月六日 + 二〇二三年十二月一日 </a> </div> - <span class="post-date">Nov 6, 2023</span> + <span class="post-date">Dec 1, 2023</span> </div> @@ -284,14 +284,14 @@ <div class="post-list-item"> <div class="post-title"> - <a href="/2023/10/25/%E5%84%BF%E7%AB%A5%E6%96%B0%E5%9E%8B%E5%86%A0%E7%8A%B6%E7%97%85%E6%AF%92Omicron%E6%A0%AA%E5%92%8C%E8%82%BA%E7%82%8E%E6%94%AF%E5%8E%9F%E4%BD%93%E6%B7%B7%E5%90%88%E6%84%9F%E6%9F%93%E9%87%8D%E7%97%87%E8%82%BA%E7%82%8E1%E4%BE%8B/"> + <a href="/2023/11/29/%E4%BA%8C%E3%80%87%E4%BA%8C%E4%B8%89%E5%B9%B4%E5%8D%81%E4%B8%80%E6%9C%88%E4%BA%8C%E5%8D%81%E4%B9%9D%E6%97%A5/"> - 儿童新型冠状病毒Omicron株和肺炎支原体混合感染重症肺炎1例 + 二〇二三年十一月二十九日 </a> </div> - <span class="post-date">Oct 25, 2023</span> + <span class="post-date">Nov 29, 2023</span> </div> @@ -302,14 +302,14 @@ <div class="post-list-item"> <div class="post-title"> - <a href="/2023/10/25/Radiographic-Absence-of-the-Left-Humeral-Head/"> + <a href="/2023/11/21/Adolescent-Onset-of-Acute-Heart-Failure/"> - Radiographic Absence of the Left Humeral Head + Adolescent Onset of Acute Heart Failure </a> </div> - <span class="post-date">Oct 25, 2023</span> + <span class="post-date">Nov 21, 2023</span> </div> diff --git a/archives/page/2/index.html b/archives/page/2/index.html index 395c834b..43705261 100644 --- a/archives/page/2/index.html +++ b/archives/page/2/index.html @@ -138,14 +138,14 @@ <div class="post-list-item"> <div class="post-title"> - <a href="/2023/10/25/%E8%82%BA%E7%82%8E%E6%94%AF%E5%8E%9F%E4%BD%93%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9/"> + <a href="/2023/11/16/Fever-of-Unknown-Origin/"> - 肺炎支原体注意事项 + Fever of Unknown Origin </a> </div> - <span class="post-date">Oct 25, 2023</span> + <span class="post-date">Nov 16, 2023</span> </div> @@ -156,14 +156,14 @@ <div class="post-list-item"> <div class="post-title"> - <a href="/2023/10/22/%E5%86%AC%E5%AD%A3%E5%92%B3%E5%97%BD%E8%BE%A8%E5%88%AB%E6%8C%87%E5%8D%97/"> + <a href="/2023/11/06/%E4%BA%8C%E9%9B%B6%E4%BA%8C%E4%B8%89%E5%B9%B4%E5%8D%81%E4%B8%80%E6%9C%88%E5%85%AD%E6%97%A5/"> - 冬季咳嗽辨别指南 + 二零二三年十一月六日 </a> </div> - <span class="post-date">Oct 22, 2023</span> + <span class="post-date">Nov 6, 2023</span> </div> @@ -174,14 +174,14 @@ <div class="post-list-item"> <div class="post-title"> - <a href="/2023/10/21/OCaml-Core-Int-pow-%E7%9A%84%E5%AE%9E%E7%8E%B0/"> + <a href="/2023/10/25/%E5%84%BF%E7%AB%A5%E6%96%B0%E5%9E%8B%E5%86%A0%E7%8A%B6%E7%97%85%E6%AF%92Omicron%E6%A0%AA%E5%92%8C%E8%82%BA%E7%82%8E%E6%94%AF%E5%8E%9F%E4%BD%93%E6%B7%B7%E5%90%88%E6%84%9F%E6%9F%93%E9%87%8D%E7%97%87%E8%82%BA%E7%82%8E1%E4%BE%8B/"> - OCaml Core.Int.pow 的实现 + 儿童新型冠状病毒Omicron株和肺炎支原体混合感染重症肺炎1例 </a> </div> - <span class="post-date">Oct 21, 2023</span> + <span class="post-date">Oct 25, 2023</span> </div> @@ -192,14 +192,14 @@ <div class="post-list-item"> <div class="post-title"> - <a href="/2023/10/13/%E8%82%9D%E5%8A%9F%E8%83%BD%E6%A3%80%E6%9F%A5%E5%8C%96%E9%AA%8C%E5%8D%95/"> + <a href="/2023/10/25/Radiographic-Absence-of-the-Left-Humeral-Head/"> - 肝功能检查化验单阅读指南 + Radiographic Absence of the Left Humeral Head </a> </div> - <span class="post-date">Oct 13, 2023</span> + <span class="post-date">Oct 25, 2023</span> </div> @@ -210,14 +210,14 @@ <div class="post-list-item"> <div class="post-title"> - <a href="/2023/10/12/%E8%A1%80%E5%B8%B8%E8%A7%84%E5%8C%96%E9%AA%8C%E7%BB%93%E6%9E%9C%E9%98%85%E8%AF%BB%E6%8C%87%E5%8D%97/"> + <a href="/2023/10/25/%E8%82%BA%E7%82%8E%E6%94%AF%E5%8E%9F%E4%BD%93%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9/"> - 血常规化验结果阅读指南 + 肺炎支原体注意事项 </a> </div> - <span class="post-date">Oct 12, 2023</span> + <span class="post-date">Oct 25, 2023</span> </div> @@ -228,14 +228,14 @@ <div class="post-list-item"> <div class="post-title"> - <a href="/2023/10/12/%E8%BF%87%E5%BA%A6%E7%96%B2%E5%8A%B3%E7%9A%84%E5%85%AD%E7%A7%8D%E8%A1%A8%E7%8E%B0/"> + <a href="/2023/10/22/%E5%86%AC%E5%AD%A3%E5%92%B3%E5%97%BD%E8%BE%A8%E5%88%AB%E6%8C%87%E5%8D%97/"> - 过度疲劳的六种表现 + 冬季咳嗽辨别指南 </a> </div> - <span class="post-date">Oct 12, 2023</span> + <span class="post-date">Oct 22, 2023</span> </div> @@ -246,14 +246,14 @@ <div class="post-list-item"> <div class="post-title"> - <a href="/2023/10/05/v8%E4%B8%ADNumber-toString-%E7%9A%84%E5%AE%9E%E7%8E%B0/"> + <a href="/2023/10/21/OCaml-Core-Int-pow-%E7%9A%84%E5%AE%9E%E7%8E%B0/"> - v8中Number.toString()的实现 + OCaml Core.Int.pow 的实现 </a> </div> - <span class="post-date">Oct 5, 2023</span> + <span class="post-date">Oct 21, 2023</span> </div> @@ -264,14 +264,14 @@ <div class="post-list-item"> <div class="post-title"> - <a href="/2023/09/28/A-Brief-History-of-Just-In-Time/"> + <a href="/2023/10/13/%E8%82%9D%E5%8A%9F%E8%83%BD%E6%A3%80%E6%9F%A5%E5%8C%96%E9%AA%8C%E5%8D%95/"> - A Brief History of Just-In-Time + 肝功能检查化验单阅读指南 </a> </div> - <span class="post-date">Sep 28, 2023</span> + <span class="post-date">Oct 13, 2023</span> </div> @@ -282,14 +282,14 @@ <div class="post-list-item"> <div class="post-title"> - <a href="/2023/09/13/%E4%BA%8C%E9%9B%B6%E4%BA%8C%E4%B8%89%E5%B9%B4%E4%B9%9D%E6%9C%88%E5%8D%81%E4%B8%89%E6%97%A5/"> + <a href="/2023/10/12/%E8%A1%80%E5%B8%B8%E8%A7%84%E5%8C%96%E9%AA%8C%E7%BB%93%E6%9E%9C%E9%98%85%E8%AF%BB%E6%8C%87%E5%8D%97/"> - 二零二三年九月十三日 + 血常规化验结果阅读指南 </a> </div> - <span class="post-date">Sep 13, 2023</span> + <span class="post-date">Oct 12, 2023</span> </div> @@ -300,14 +300,14 @@ <div class="post-list-item"> <div class="post-title"> - <a href="/2023/08/27/%E4%BA%8C%E9%9B%B6%E4%BA%8C%E4%B8%89%E5%B9%B4%E5%85%AB%E6%9C%88%E4%BA%8C%E5%8D%81%E4%B8%83%E6%97%A5/"> + <a href="/2023/10/12/%E8%BF%87%E5%BA%A6%E7%96%B2%E5%8A%B3%E7%9A%84%E5%85%AD%E7%A7%8D%E8%A1%A8%E7%8E%B0/"> - 二零二三年八月二十七日 + 过度疲劳的六种表现 </a> </div> - <span class="post-date">Aug 27, 2023</span> + <span class="post-date">Oct 12, 2023</span> </div> diff --git a/archives/page/3/index.html b/archives/page/3/index.html index 2efef4f3..b73ee4a3 100644 --- a/archives/page/3/index.html +++ b/archives/page/3/index.html @@ -138,14 +138,14 @@ <div class="post-list-item"> <div class="post-title"> - <a href="/2023/08/21/%E4%BA%8C%E9%9B%B6%E4%BA%8C%E4%B8%89%E5%B9%B4%E5%85%AB%E6%9C%88%E4%BA%8C%E5%8D%81%E4%B8%80%E6%97%A5/"> + <a href="/2023/10/05/v8%E4%B8%ADNumber-toString-%E7%9A%84%E5%AE%9E%E7%8E%B0/"> - 二零二三年八月二十一日 + v8中Number.toString()的实现 </a> </div> - <span class="post-date">Aug 21, 2023</span> + <span class="post-date">Oct 5, 2023</span> </div> @@ -156,14 +156,14 @@ <div class="post-list-item"> <div class="post-title"> - <a href="/2023/08/15/tick-thread%E5%9C%A8Multicore-OCaml%E4%B8%AD%E7%9A%84%E4%BD%9C%E7%94%A8/"> + <a href="/2023/10/05/v8%E4%B8%AD%E7%9A%84Number-toString/"> - tick thread在Multicore OCaml中的作用 + v8中的Number.toString() </a> </div> - <span class="post-date">Aug 15, 2023</span> + <span class="post-date">Oct 5, 2023</span> </div> @@ -174,14 +174,14 @@ <div class="post-list-item"> <div class="post-title"> - <a href="/2023/08/15/poll-error-attribute-in-OCaml/"> + <a href="/2023/09/28/A-Brief-History-of-Just-In-Time/"> - 使用 [@poll error] 实现线程安全的数据结构 + A Brief History of Just-In-Time </a> </div> - <span class="post-date">Aug 15, 2023</span> + <span class="post-date">Sep 28, 2023</span> </div> @@ -192,14 +192,14 @@ <div class="post-list-item"> <div class="post-title"> - <a href="/2023/08/15/Typed-Design-Patterns-for-the-Functional-Era/"> + <a href="/2023/09/13/%E4%BA%8C%E9%9B%B6%E4%BA%8C%E4%B8%89%E5%B9%B4%E4%B9%9D%E6%9C%88%E5%8D%81%E4%B8%89%E6%97%A5/"> - Typed Design Patterns for the Functional Era + 二零二三年九月十三日 </a> </div> - <span class="post-date">Aug 15, 2023</span> + <span class="post-date">Sep 13, 2023</span> </div> @@ -210,14 +210,14 @@ <div class="post-list-item"> <div class="post-title"> - <a href="/2023/08/01/%E4%BA%8C%E3%80%87%E4%BA%8C%E4%B8%89%E5%B9%B4%E5%85%AB%E6%9C%88%E4%B8%80%E6%97%A5/"> + <a href="/2023/08/27/%E4%BA%8C%E9%9B%B6%E4%BA%8C%E4%B8%89%E5%B9%B4%E5%85%AB%E6%9C%88%E4%BA%8C%E5%8D%81%E4%B8%83%E6%97%A5/"> - 二〇二三年八月一日 + 二零二三年八月二十七日 </a> </div> - <span class="post-date">Aug 1, 2023</span> + <span class="post-date">Aug 27, 2023</span> </div> @@ -228,14 +228,14 @@ <div class="post-list-item"> <div class="post-title"> - <a href="/2023/07/30/%E4%BA%8C%E9%9B%B6%E4%BA%8C%E4%B8%89%E5%B9%B4%E4%B8%83%E6%9C%88%E4%B8%89%E5%8D%81%E6%97%A5/"> + <a href="/2023/08/21/%E4%BA%8C%E9%9B%B6%E4%BA%8C%E4%B8%89%E5%B9%B4%E5%85%AB%E6%9C%88%E4%BA%8C%E5%8D%81%E4%B8%80%E6%97%A5/"> - 二零二三年七月三十日 + 二零二三年八月二十一日 </a> </div> - <span class="post-date">Jul 30, 2023</span> + <span class="post-date">Aug 21, 2023</span> </div> @@ -246,14 +246,14 @@ <div class="post-list-item"> <div class="post-title"> - <a href="/2023/07/26/%E4%BA%8C%E3%80%87%E4%BA%8C%E4%B8%89%E5%B9%B4%E4%B8%83%E6%9C%88%E4%BA%8C%E5%8D%81%E5%85%AD%E6%97%A5/"> + <a href="/2023/08/15/tick-thread%E5%9C%A8Multicore-OCaml%E4%B8%AD%E7%9A%84%E4%BD%9C%E7%94%A8/"> - 二〇二三年七月二十六日 + tick thread在Multicore OCaml中的作用 </a> </div> - <span class="post-date">Jul 26, 2023</span> + <span class="post-date">Aug 15, 2023</span> </div> @@ -264,14 +264,14 @@ <div class="post-list-item"> <div class="post-title"> - <a href="/2023/07/21/WiscKey-Separating-Keys-from-Values-in-SSD-conscious-Storage/"> + <a href="/2023/08/15/poll-error-attribute-in-OCaml/"> - WiscKey: Separating Keys from Values in SSD-conscious Storage + 使用 [@poll error] 实现线程安全的数据结构 </a> </div> - <span class="post-date">Jul 21, 2023</span> + <span class="post-date">Aug 15, 2023</span> </div> @@ -282,14 +282,14 @@ <div class="post-list-item"> <div class="post-title"> - <a href="/2023/06/29/%E4%BA%8C%E3%80%87%E4%BA%8C%E4%B8%89%E5%B9%B4%E5%85%AD%E6%9C%88%E4%BA%8C%E5%8D%81%E4%B9%9D%E6%97%A5/"> + <a href="/2023/08/15/Typed-Design-Patterns-for-the-Functional-Era/"> - 二〇二三年六月二十九日 + Typed Design Patterns for the Functional Era </a> </div> - <span class="post-date">Jun 29, 2023</span> + <span class="post-date">Aug 15, 2023</span> </div> @@ -300,14 +300,14 @@ <div class="post-list-item"> <div class="post-title"> - <a href="/2023/06/28/%E9%9A%90%E8%97%8F%E4%B8%80%E4%BA%9BOCaml-Effect%E7%9A%84%E6%9C%BA%E5%88%B6%EF%BC%8C%E8%AE%A9%E5%85%B6%E8%AF%AD%E6%B3%95%E5%9C%A8%E7%B2%BE%E7%A5%9E%E4%B8%8A%E6%9B%B4%E6%8E%A5%E8%BF%91delimcc/"> + <a href="/2023/08/01/%E4%BA%8C%E3%80%87%E4%BA%8C%E4%B8%89%E5%B9%B4%E5%85%AB%E6%9C%88%E4%B8%80%E6%97%A5/"> - 隐藏一些OCaml Effect的机制,让其语法在精神上更接近delimcc + 二〇二三年八月一日 </a> </div> - <span class="post-date">Jun 28, 2023</span> + <span class="post-date">Aug 1, 2023</span> </div> diff --git a/archives/page/4/index.html b/archives/page/4/index.html index f9cf2f96..1cc2a723 100644 --- a/archives/page/4/index.html +++ b/archives/page/4/index.html @@ -138,14 +138,14 @@ <div class="post-list-item"> <div class="post-title"> - <a href="/2023/06/28/caml-release-runtime-system%E5%AF%BC%E8%87%B4%E7%9A%84%E6%AD%BB%E9%94%81%E9%97%AE%E9%A2%98/"> + <a href="/2023/07/30/%E4%BA%8C%E9%9B%B6%E4%BA%8C%E4%B8%89%E5%B9%B4%E4%B8%83%E6%9C%88%E4%B8%89%E5%8D%81%E6%97%A5/"> - caml_release_runtime_system导致的死锁问题 + 二零二三年七月三十日 </a> </div> - <span class="post-date">Jun 28, 2023</span> + <span class="post-date">Jul 30, 2023</span> </div> @@ -156,14 +156,14 @@ <div class="post-list-item"> <div class="post-title"> - <a href="/2023/06/22/%E7%81%AF%E7%AC%BC%E8%8D%89/"> + <a href="/2023/07/26/%E4%BA%8C%E3%80%87%E4%BA%8C%E4%B8%89%E5%B9%B4%E4%B8%83%E6%9C%88%E4%BA%8C%E5%8D%81%E5%85%AD%E6%97%A5/"> - 灯笼草 + 二〇二三年七月二十六日 </a> </div> - <span class="post-date">Jun 22, 2023</span> + <span class="post-date">Jul 26, 2023</span> </div> @@ -174,14 +174,14 @@ <div class="post-list-item"> <div class="post-title"> - <a href="/2023/06/17/%E5%8F%91%E7%83%AD%E5%8F%8A%E8%B6%85%E9%AB%98%E7%83%AD%E5%8D%B1%E8%B1%A1/"> + <a href="/2023/07/21/WiscKey-Separating-Keys-from-Values-in-SSD-conscious-Storage/"> - 发热及超高热危象 + WiscKey: Separating Keys from Values in SSD-conscious Storage </a> </div> - <span class="post-date">Jun 17, 2023</span> + <span class="post-date">Jul 21, 2023</span> </div> @@ -192,14 +192,14 @@ <div class="post-list-item"> <div class="post-title"> - <a href="/2023/06/10/%E4%BA%8C%E9%9B%B6%E4%BA%8C%E4%B8%89%E5%B9%B4%E5%85%AD%E6%9C%88%E5%8D%81%E6%97%A5/"> + <a href="/2023/06/29/%E4%BA%8C%E3%80%87%E4%BA%8C%E4%B8%89%E5%B9%B4%E5%85%AD%E6%9C%88%E4%BA%8C%E5%8D%81%E4%B9%9D%E6%97%A5/"> - 二零二三年六月十日 + 二〇二三年六月二十九日 </a> </div> - <span class="post-date">Jun 10, 2023</span> + <span class="post-date">Jun 29, 2023</span> </div> @@ -210,14 +210,14 @@ <div class="post-list-item"> <div class="post-title"> - <a href="/2023/04/25/%E4%BA%8C%E9%9B%B6%E4%BA%8C%E4%B8%89%E5%B9%B4%E5%9B%9B%E6%9C%88%E4%BA%8C%E5%8D%81%E4%BA%94%E6%97%A5/"> + <a href="/2023/06/28/%E9%9A%90%E8%97%8F%E4%B8%80%E4%BA%9BOCaml-Effect%E7%9A%84%E6%9C%BA%E5%88%B6%EF%BC%8C%E8%AE%A9%E5%85%B6%E8%AF%AD%E6%B3%95%E5%9C%A8%E7%B2%BE%E7%A5%9E%E4%B8%8A%E6%9B%B4%E6%8E%A5%E8%BF%91delimcc/"> - 二零二三年四月二十五日 + 隐藏一些OCaml Effect的机制,让其语法在精神上更接近delimcc </a> </div> - <span class="post-date">Apr 25, 2023</span> + <span class="post-date">Jun 28, 2023</span> </div> @@ -228,14 +228,14 @@ <div class="post-list-item"> <div class="post-title"> - <a href="/2023/04/22/%E4%BA%8C%E9%9B%B6%E4%BA%8C%E4%B8%89%E5%B9%B4%E5%9B%9B%E6%9C%88%E4%BA%8C%E5%8D%81%E4%BA%8C%E6%97%A5/"> + <a href="/2023/06/28/caml-release-runtime-system%E5%AF%BC%E8%87%B4%E7%9A%84%E6%AD%BB%E9%94%81%E9%97%AE%E9%A2%98/"> - 二零二三年四月二十二日 + caml_release_runtime_system导致的死锁问题 </a> </div> - <span class="post-date">Apr 22, 2023</span> + <span class="post-date">Jun 28, 2023</span> </div> @@ -246,14 +246,14 @@ <div class="post-list-item"> <div class="post-title"> - <a href="/2023/03/14/%E8%9E%BA%E5%86%85%E9%85%AF%E7%89%87/"> + <a href="/2023/06/22/%E7%81%AF%E7%AC%BC%E8%8D%89/"> - 螺内酯片 + 灯笼草 </a> </div> - <span class="post-date">Mar 14, 2023</span> + <span class="post-date">Jun 22, 2023</span> </div> @@ -264,14 +264,14 @@ <div class="post-list-item"> <div class="post-title"> - <a href="/2023/03/14/%E5%91%8B%E5%A1%9E%E7%B1%B3/"> + <a href="/2023/06/17/%E5%8F%91%E7%83%AD%E5%8F%8A%E8%B6%85%E9%AB%98%E7%83%AD%E5%8D%B1%E8%B1%A1/"> - 呋塞米 + 发热及超高热危象 </a> </div> - <span class="post-date">Mar 14, 2023</span> + <span class="post-date">Jun 17, 2023</span> </div> @@ -282,14 +282,14 @@ <div class="post-list-item"> <div class="post-title"> - <a href="/2023/03/13/%E6%9B%BF%E7%B1%B3%E6%B2%99%E5%9D%A6/"> + <a href="/2023/06/10/%E4%BA%8C%E9%9B%B6%E4%BA%8C%E4%B8%89%E5%B9%B4%E5%85%AD%E6%9C%88%E5%8D%81%E6%97%A5/"> - 替米沙坦 + 二零二三年六月十日 </a> </div> - <span class="post-date">Mar 13, 2023</span> + <span class="post-date">Jun 10, 2023</span> </div> @@ -300,14 +300,14 @@ <div class="post-list-item"> <div class="post-title"> - <a href="/2023/03/05/%E5%A5%A5%E5%8F%B8%E4%BB%96%E9%9F%A6/"> + <a href="/2023/04/25/%E4%BA%8C%E9%9B%B6%E4%BA%8C%E4%B8%89%E5%B9%B4%E5%9B%9B%E6%9C%88%E4%BA%8C%E5%8D%81%E4%BA%94%E6%97%A5/"> - 奥司他韦 + 二零二三年四月二十五日 </a> </div> - <span class="post-date">Mar 5, 2023</span> + <span class="post-date">Apr 25, 2023</span> </div> diff --git a/archives/page/5/index.html b/archives/page/5/index.html index 088a03c0..1c4d5e17 100644 --- a/archives/page/5/index.html +++ b/archives/page/5/index.html @@ -138,14 +138,14 @@ <div class="post-list-item"> <div class="post-title"> - <a href="/2023/03/04/%E9%87%91%E5%8C%AE%E8%A6%81%E7%95%A5/"> + <a href="/2023/04/22/%E4%BA%8C%E9%9B%B6%E4%BA%8C%E4%B8%89%E5%B9%B4%E5%9B%9B%E6%9C%88%E4%BA%8C%E5%8D%81%E4%BA%8C%E6%97%A5/"> - 金匮要略 + 二零二三年四月二十二日 </a> </div> - <span class="post-date">Mar 4, 2023</span> + <span class="post-date">Apr 22, 2023</span> </div> @@ -156,14 +156,14 @@ <div class="post-list-item"> <div class="post-title"> - <a href="/2023/03/01/%E6%B0%94%E8%83%B8/"> + <a href="/2023/03/14/%E8%9E%BA%E5%86%85%E9%85%AF%E7%89%87/"> - 气胸 + 螺内酯片 </a> </div> - <span class="post-date">Mar 1, 2023</span> + <span class="post-date">Mar 14, 2023</span> </div> @@ -174,14 +174,14 @@ <div class="post-list-item"> <div class="post-title"> - <a href="/2023/03/01/%E7%BA%AF%E7%89%9B%E5%A5%B6%E5%8F%AF%E4%BB%A5%E5%8A%A0%E7%82%B9%E5%95%A5/"> + <a href="/2023/03/14/%E5%91%8B%E5%A1%9E%E7%B1%B3/"> - 纯牛奶可以加点啥 + 呋塞米 </a> </div> - <span class="post-date">Mar 1, 2023</span> + <span class="post-date">Mar 14, 2023</span> </div> @@ -192,14 +192,14 @@ <div class="post-list-item"> <div class="post-title"> - <a href="/2023/02/26/%E4%BA%8C%E9%9B%B6%E4%BA%8C%E4%B8%89%E5%B9%B4%E4%BA%8C%E6%9C%88%E4%BA%8C%E5%8D%81%E5%85%AD%E6%97%A5/"> + <a href="/2023/03/13/%E6%9B%BF%E7%B1%B3%E6%B2%99%E5%9D%A6/"> - 二零二三年二月二十六日 + 替米沙坦 </a> </div> - <span class="post-date">Feb 26, 2023</span> + <span class="post-date">Mar 13, 2023</span> </div> @@ -210,14 +210,14 @@ <div class="post-list-item"> <div class="post-title"> - <a href="/2023/02/25/%E4%BA%8C%E9%9B%B6%E4%BA%8C%E4%B8%89%E5%B9%B4%E4%BA%8C%E6%9C%88%E4%BA%8C%E5%8D%81%E4%BA%94%E6%97%A5/"> + <a href="/2023/03/05/%E5%A5%A5%E5%8F%B8%E4%BB%96%E9%9F%A6/"> - 二零二三年二月二十五日 + 奥司他韦 </a> </div> - <span class="post-date">Feb 25, 2023</span> + <span class="post-date">Mar 5, 2023</span> </div> @@ -228,14 +228,14 @@ <div class="post-list-item"> <div class="post-title"> - <a href="/2023/02/24/%E4%BA%8C%E9%9B%B6%E4%BA%8C%E4%B8%89%E5%B9%B4%E4%BA%8C%E6%9C%88%E4%BA%8C%E5%8D%81%E5%9B%9B%E6%97%A5/"> + <a href="/2023/03/04/%E9%87%91%E5%8C%AE%E8%A6%81%E7%95%A5/"> - 二零二三年二月二十四日 + 金匮要略 </a> </div> - <span class="post-date">Feb 24, 2023</span> + <span class="post-date">Mar 4, 2023</span> </div> @@ -246,14 +246,14 @@ <div class="post-list-item"> <div class="post-title"> - <a href="/2023/02/22/%E4%BA%8C%E9%9B%B6%E4%BA%8C%E4%B8%89%E5%B9%B4%E4%BA%8C%E6%9C%88%E4%BA%8C%E5%8D%81%E4%BA%8C%E6%97%A5/"> + <a href="/2023/03/01/%E6%B0%94%E8%83%B8/"> - 二零二三年二月二十二日 + 气胸 </a> </div> - <span class="post-date">Feb 22, 2023</span> + <span class="post-date">Mar 1, 2023</span> </div> @@ -264,14 +264,14 @@ <div class="post-list-item"> <div class="post-title"> - <a href="/2023/02/02/%E4%BA%8C%E9%9B%B6%E4%BA%8C%E4%B8%89%E5%B9%B4%E4%BA%8C%E6%9C%88%E4%BA%8C%E6%97%A5/"> + <a href="/2023/03/01/%E7%BA%AF%E7%89%9B%E5%A5%B6%E5%8F%AF%E4%BB%A5%E5%8A%A0%E7%82%B9%E5%95%A5/"> - 二零二三年二月二日 + 纯牛奶可以加点啥 </a> </div> - <span class="post-date">Feb 2, 2023</span> + <span class="post-date">Mar 1, 2023</span> </div> @@ -282,14 +282,14 @@ <div class="post-list-item"> <div class="post-title"> - <a href="/2023/02/01/%E4%BA%8C%E9%9B%B6%E4%BA%8C%E4%B8%89%E5%B9%B4%E4%BA%8C%E6%9C%88%E4%B8%80%E6%97%A5/"> + <a href="/2023/02/26/%E4%BA%8C%E9%9B%B6%E4%BA%8C%E4%B8%89%E5%B9%B4%E4%BA%8C%E6%9C%88%E4%BA%8C%E5%8D%81%E5%85%AD%E6%97%A5/"> - 二零二三年二月一日 + 二零二三年二月二十六日 </a> </div> - <span class="post-date">Feb 1, 2023</span> + <span class="post-date">Feb 26, 2023</span> </div> @@ -300,14 +300,14 @@ <div class="post-list-item"> <div class="post-title"> - <a href="/2023/01/21/%E4%BA%8C%E9%9B%B6%E4%BA%8C%E4%B8%89%E5%B9%B4%E4%B8%80%E6%9C%88%E4%BA%8C%E5%8D%81%E4%B8%80%E6%97%A5/"> + <a href="/2023/02/25/%E4%BA%8C%E9%9B%B6%E4%BA%8C%E4%B8%89%E5%B9%B4%E4%BA%8C%E6%9C%88%E4%BA%8C%E5%8D%81%E4%BA%94%E6%97%A5/"> - 二零二三年一月二十一日 + 二零二三年二月二十五日 </a> </div> - <span class="post-date">Jan 21, 2023</span> + <span class="post-date">Feb 25, 2023</span> </div> diff --git a/archives/page/6/index.html b/archives/page/6/index.html index 5282c707..08e5410e 100644 --- a/archives/page/6/index.html +++ b/archives/page/6/index.html @@ -133,19 +133,19 @@ - <div class="year-title">2022</div> + <div class="year-title">2023</div> <div class="post-list-item"> <div class="post-title"> - <a href="/2022/12/31/%E4%BA%8C%E9%9B%B6%E4%BA%8C%E4%BA%8C%E5%B9%B4%E5%8D%81%E4%BA%8C%E6%9C%88%E4%B8%89%E5%8D%81%E4%B8%80%E6%97%A5/"> + <a href="/2023/02/24/%E4%BA%8C%E9%9B%B6%E4%BA%8C%E4%B8%89%E5%B9%B4%E4%BA%8C%E6%9C%88%E4%BA%8C%E5%8D%81%E5%9B%9B%E6%97%A5/"> - 二零二二年十二月三十一日 + 二零二三年二月二十四日 </a> </div> - <span class="post-date">Dec 31, 2022</span> + <span class="post-date">Feb 24, 2023</span> </div> @@ -156,14 +156,14 @@ <div class="post-list-item"> <div class="post-title"> - <a href="/2022/11/03/%E4%BA%8C%E9%9B%B6%E4%BA%8C%E4%BA%8C%E5%B9%B4%E5%8D%81%E4%B8%80%E6%9C%88%E6%9C%88%E4%B8%89%E6%97%A5/"> + <a href="/2023/02/22/%E4%BA%8C%E9%9B%B6%E4%BA%8C%E4%B8%89%E5%B9%B4%E4%BA%8C%E6%9C%88%E4%BA%8C%E5%8D%81%E4%BA%8C%E6%97%A5/"> - 二零二二年十一月月三日 + 二零二三年二月二十二日 </a> </div> - <span class="post-date">Nov 3, 2022</span> + <span class="post-date">Feb 22, 2023</span> </div> @@ -174,14 +174,14 @@ <div class="post-list-item"> <div class="post-title"> - <a href="/2022/10/01/%E4%BA%8C%E9%9B%B6%E4%BA%8C%E4%BA%8C%E5%B9%B4%E5%8D%81%E6%9C%88%E4%B8%80%E6%97%A5/"> + <a href="/2023/02/02/%E4%BA%8C%E9%9B%B6%E4%BA%8C%E4%B8%89%E5%B9%B4%E4%BA%8C%E6%9C%88%E4%BA%8C%E6%97%A5/"> - 二零二二年十月一日 + 二零二三年二月二日 </a> </div> - <span class="post-date">Oct 1, 2022</span> + <span class="post-date">Feb 2, 2023</span> </div> @@ -192,14 +192,14 @@ <div class="post-list-item"> <div class="post-title"> - <a href="/2022/09/22/%E4%BA%8C%E9%9B%B6%E4%BA%8C%E4%BA%8C%E5%B9%B4%E4%B9%9D%E6%9C%88%E4%BA%8C%E5%8D%81%E4%BA%8C%E6%97%A5/"> + <a href="/2023/02/01/%E4%BA%8C%E9%9B%B6%E4%BA%8C%E4%B8%89%E5%B9%B4%E4%BA%8C%E6%9C%88%E4%B8%80%E6%97%A5/"> - 二零二二年九月二十二日 + 二零二三年二月一日 </a> </div> - <span class="post-date">Sep 22, 2022</span> + <span class="post-date">Feb 1, 2023</span> </div> @@ -210,14 +210,14 @@ <div class="post-list-item"> <div class="post-title"> - <a href="/2022/08/21/%E4%BA%8C%E9%9B%B6%E4%BA%8C%E4%BA%8C%E5%B9%B4%E5%85%AB%E6%9C%88%E4%BA%8C%E5%8D%81%E4%B8%80%E6%97%A5/"> + <a href="/2023/01/21/%E4%BA%8C%E9%9B%B6%E4%BA%8C%E4%B8%89%E5%B9%B4%E4%B8%80%E6%9C%88%E4%BA%8C%E5%8D%81%E4%B8%80%E6%97%A5/"> - 二零二二年八月二十一日 + 二零二三年一月二十一日 </a> </div> - <span class="post-date">Aug 21, 2022</span> + <span class="post-date">Jan 21, 2023</span> </div> @@ -225,17 +225,19 @@ + <div class="year-title">2022</div> + <div class="post-list-item"> <div class="post-title"> - <a href="/2022/03/14/%E4%BA%8C%E9%9B%B6%E4%BA%8C%E4%BA%8C%E5%B9%B4%E4%B8%89%E6%9C%88%E5%8D%81%E5%9B%9B%E6%97%A5/"> + <a href="/2022/12/31/%E4%BA%8C%E9%9B%B6%E4%BA%8C%E4%BA%8C%E5%B9%B4%E5%8D%81%E4%BA%8C%E6%9C%88%E4%B8%89%E5%8D%81%E4%B8%80%E6%97%A5/"> - 二零二二年三月十四日 + 二零二二年十二月三十一日 </a> </div> - <span class="post-date">Mar 14, 2022</span> + <span class="post-date">Dec 31, 2022</span> </div> @@ -246,14 +248,14 @@ <div class="post-list-item"> <div class="post-title"> - <a href="/2022/01/01/%E4%BA%8C%E9%9B%B6%E4%BA%8C%E4%BA%8C%E5%B9%B4%E4%B8%80%E6%9C%88%E4%B8%80%E6%97%A5/"> + <a href="/2022/11/03/%E4%BA%8C%E9%9B%B6%E4%BA%8C%E4%BA%8C%E5%B9%B4%E5%8D%81%E4%B8%80%E6%9C%88%E6%9C%88%E4%B8%89%E6%97%A5/"> - 二零二二年一月一日 + 二零二二年十一月月三日 </a> </div> - <span class="post-date">Jan 1, 2022</span> + <span class="post-date">Nov 3, 2022</span> </div> @@ -261,19 +263,17 @@ - <div class="year-title">2021</div> - <div class="post-list-item"> <div class="post-title"> - <a href="/2021/03/27/%E4%BA%8C%E9%9B%B6%E4%BA%8C%E4%B8%80%E5%B9%B4%E4%B8%89%E6%9C%88%E4%BA%8C%E5%8D%81%E4%B8%83%E6%97%A5/"> + <a href="/2022/10/01/%E4%BA%8C%E9%9B%B6%E4%BA%8C%E4%BA%8C%E5%B9%B4%E5%8D%81%E6%9C%88%E4%B8%80%E6%97%A5/"> - 二零二一年三月二十七日 + 二零二二年十月一日 </a> </div> - <span class="post-date">Mar 27, 2021</span> + <span class="post-date">Oct 1, 2022</span> </div> @@ -284,14 +284,14 @@ <div class="post-list-item"> <div class="post-title"> - <a href="/2021/03/15/%E4%BA%8C%E9%9B%B6%E4%BA%8C%E4%B8%80%E5%B9%B4%E4%B8%89%E6%9C%88%E5%8D%81%E4%BA%94%E6%97%A5/"> + <a href="/2022/09/22/%E4%BA%8C%E9%9B%B6%E4%BA%8C%E4%BA%8C%E5%B9%B4%E4%B9%9D%E6%9C%88%E4%BA%8C%E5%8D%81%E4%BA%8C%E6%97%A5/"> - 二零二一年三月十五日 + 二零二二年九月二十二日 </a> </div> - <span class="post-date">Mar 15, 2021</span> + <span class="post-date">Sep 22, 2022</span> </div> @@ -302,14 +302,14 @@ <div class="post-list-item"> <div class="post-title"> - <a href="/2021/02/16/%E4%BA%8C%E9%9B%B6%E4%BA%8C%E4%B8%80%E5%B9%B4%E4%BA%8C%E6%9C%88%E5%8D%81%E5%85%AD%E6%97%A5/"> + <a href="/2022/08/21/%E4%BA%8C%E9%9B%B6%E4%BA%8C%E4%BA%8C%E5%B9%B4%E5%85%AB%E6%9C%88%E4%BA%8C%E5%8D%81%E4%B8%80%E6%97%A5/"> - 二零二一年二月十六日 + 二零二二年八月二十一日 </a> </div> - <span class="post-date">Feb 16, 2021</span> + <span class="post-date">Aug 21, 2022</span> </div> diff --git a/archives/page/7/index.html b/archives/page/7/index.html index 034d13f9..45b39829 100644 --- a/archives/page/7/index.html +++ b/archives/page/7/index.html @@ -133,11 +133,103 @@ + <div class="year-title">2022</div> + + + <div class="post-list-item"> + <div class="post-title"> + <a href="/2022/03/14/%E4%BA%8C%E9%9B%B6%E4%BA%8C%E4%BA%8C%E5%B9%B4%E4%B8%89%E6%9C%88%E5%8D%81%E5%9B%9B%E6%97%A5/"> + + 二零二二年三月十四日 + + </a> + </div> + + <span class="post-date">Mar 14, 2022</span> + </div> + + + + + + + + <div class="post-list-item"> + <div class="post-title"> + <a href="/2022/01/01/%E4%BA%8C%E9%9B%B6%E4%BA%8C%E4%BA%8C%E5%B9%B4%E4%B8%80%E6%9C%88%E4%B8%80%E6%97%A5/"> + + 二零二二年一月一日 + + </a> + </div> + + <span class="post-date">Jan 1, 2022</span> + </div> + + + + + + <div class="year-title">2021</div> <div class="post-list-item"> <div class="post-title"> + <a href="/2021/03/27/%E4%BA%8C%E9%9B%B6%E4%BA%8C%E4%B8%80%E5%B9%B4%E4%B8%89%E6%9C%88%E4%BA%8C%E5%8D%81%E4%B8%83%E6%97%A5/"> + + 二零二一年三月二十七日 + + </a> + </div> + + <span class="post-date">Mar 27, 2021</span> + </div> + + + + + + + + <div class="post-list-item"> + <div class="post-title"> + <a href="/2021/03/15/%E4%BA%8C%E9%9B%B6%E4%BA%8C%E4%B8%80%E5%B9%B4%E4%B8%89%E6%9C%88%E5%8D%81%E4%BA%94%E6%97%A5/"> + + 二零二一年三月十五日 + + </a> + </div> + + <span class="post-date">Mar 15, 2021</span> + </div> + + + + + + + + <div class="post-list-item"> + <div class="post-title"> + <a href="/2021/02/16/%E4%BA%8C%E9%9B%B6%E4%BA%8C%E4%B8%80%E5%B9%B4%E4%BA%8C%E6%9C%88%E5%8D%81%E5%85%AD%E6%97%A5/"> + + 二零二一年二月十六日 + + </a> + </div> + + <span class="post-date">Feb 16, 2021</span> + </div> + + + + + + + + <div class="post-list-item"> + <div class="post-title"> <a href="/2021/02/14/%E4%BA%8C%E9%9B%B6%E4%BA%8C%E4%B8%80%E5%B9%B4%E4%BA%8C%E6%9C%88%E5%8D%81%E5%9B%9B%E6%97%A5/"> 二零二一年二月十四日 diff --git a/tag/index.html b/tag/index.html index 52d2d3b7..1840ec0b 100644 --- a/tag/index.html +++ b/tag/index.html @@ -158,6 +158,12 @@ </span> <span class="post-tag"> + <a href="/tags/Rescript/"> + Rescript + </a> + </span> + + <span class="post-tag"> <a href="/tags/Database/"> Database </a> diff --git a/tags/Life/index.html b/tags/Life/index.html index f6748714..7baa5400 100644 --- a/tags/Life/index.html +++ b/tags/Life/index.html @@ -253,6 +253,24 @@ <div class="post-list-item"> <div class="post-title"> + <a href="/2023/06/17/%E5%8F%91%E7%83%AD%E5%8F%8A%E8%B6%85%E9%AB%98%E7%83%AD%E5%8D%B1%E8%B1%A1/"> + + 发热及超高热危象 + + </a> + </div> + + <span class="post-date">Jun 17, 2023</span> + </div> + + + + + + + + <div class="post-list-item"> + <div class="post-title"> <a href="/2023/03/01/%E7%BA%AF%E7%89%9B%E5%A5%B6%E5%8F%AF%E4%BB%A5%E5%8A%A0%E7%82%B9%E5%95%A5/"> 纯牛奶可以加点啥 diff --git a/tags/OCaml/index.html b/tags/OCaml/index.html index 475e135f..dbbbb8d3 100644 --- a/tags/OCaml/index.html +++ b/tags/OCaml/index.html @@ -140,6 +140,44 @@ + <div class="year-title">2024</div> + + + <div class="post-list-item"> + <div class="post-title"> + <a href="/2024/01/18/OCaml-News-2024-2/"> + + OCaml News 2024-2 + + </a> + </div> + + <span class="post-date">Jan 18, 2024</span> + </div> + + + + + + + + <div class="post-list-item"> + <div class="post-title"> + <a href="/2024/01/08/OCaml-News-2024-1/"> + + OCaml News 2024-1 + + </a> + </div> + + <span class="post-date">Jan 8, 2024</span> + </div> + + + + + + <div class="year-title">2023</div> diff --git a/tags/Rescript/index.html b/tags/Rescript/index.html new file mode 100644 index 00000000..56476574 --- /dev/null +++ b/tags/Rescript/index.html @@ -0,0 +1,191 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="UTF-8"> +<meta name="viewport" + content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> +<meta http-equiv="X-UA-Compatible" content="ie=edge"> + + <meta name="author" content="韩暮秋"> + + + <meta name="subtitle" content="暮秋小屋"> + + + <meta name="description" content="这里是暮秋小屋,思念和灵感的寄存处"> + + + <meta name="keywords" content="韩暮秋,MuqiuHan"> + + + + +<title>Tag: Rescript | 暮秋小屋</title> + + + + + +<style> + @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=Noto+Sans+SC:wght@300;400;500;700&family=Roboto+Mono&display=swap'); +</style> + + + + <!-- stylesheets list from _config.yml --> + + <link rel="stylesheet" href="/css/style.css"> + + + + + + <!-- scripts list from _config.yml --> + + <script src="/js/frame.js"></script> + + + + + + <script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script> + <script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script> + + + + + + + + <meta name="generator" content="Hexo 6.3.0"></head> + <body> + <div class="mask-border"> + </div> + + <div class="wrapper"> + + <div class="header"> + <div class="flex-container"> + <div class="header-inner"> + <div class="site-brand-container"> + <a href="/"> + + 暮秋小屋 + + </a> + </div> + <div id="menu-btn" class="menu-btn" onclick="toggleMenu()"> + Menu + </div> + <nav class="site-nav"> + <ul class="menu-list"> + + + <li class="menu-item"> + <a href="/">主页</a> + </li> + + + + <li class="menu-item"> + <a href="/categories/gallery/">日记本</a> + </li> + + + + <li class="menu-item"> + <a href="/tags/Medicine/">医学</a> + </li> + + + + <li class="menu-item"> + <a href="/tags/Technique/">计算机科学</a> + </li> + + + + <li class="menu-item"> + <a href="/tags/Life/">生活</a> + </li> + + + + <li class="menu-item"> + <a href="/about">关于</a> + </li> + + + + </ul> + </nav> + </div> + </div> +</div> + + + <div class="main"> + <div class="flex-container"> + <div id="tag"> + + + <p class="tag-title"> + / <a href="/tag/">tags</a> + / <a href="">Rescript</a> / + </p> + <div class="post-list"> + + + + + + + <div class="year-title">2024</div> + + + <div class="post-list-item"> + <div class="post-title"> + <a href="/2024/01/22/Rescript-React-Native/"> + + Rescript React Native + + </a> + </div> + + <span class="post-date">Jan 22, 2024</span> + </div> + + + <div id="paginator"> + + </div> +</div> + + + + +</div> + </div> + </div> + + <div class="footer"> + <div class="flex-container"> + <div class="footer-text"> + + + | + + + 希望路过的人可以添点柴火让这里暖和点 + + </div> + </div> +</div> + + </div> + + + + + </body> +</html> diff --git a/tags/Technique/index.html b/tags/Technique/index.html index df29d45d..734be0bb 100644 --- a/tags/Technique/index.html +++ b/tags/Technique/index.html @@ -140,19 +140,19 @@ - <div class="year-title">2023</div> + <div class="year-title">2024</div> <div class="post-list-item"> <div class="post-title"> - <a href="/2023/10/21/OCaml-Core-Int-pow-%E7%9A%84%E5%AE%9E%E7%8E%B0/"> + <a href="/2024/01/23/G-Machine/"> - OCaml Core.Int.pow 的实现 + G-Machine </a> </div> - <span class="post-date">Oct 21, 2023</span> + <span class="post-date">Jan 23, 2024</span> </div> @@ -163,14 +163,14 @@ <div class="post-list-item"> <div class="post-title"> - <a href="/2023/10/05/v8%E4%B8%ADNumber-toString-%E7%9A%84%E5%AE%9E%E7%8E%B0/"> + <a href="/2024/01/22/Rescript-React-Native/"> - v8中Number.toString()的实现 + Rescript React Native </a> </div> - <span class="post-date">Oct 5, 2023</span> + <span class="post-date">Jan 22, 2024</span> </div> @@ -181,14 +181,14 @@ <div class="post-list-item"> <div class="post-title"> - <a href="/2023/09/28/A-Brief-History-of-Just-In-Time/"> + <a href="/2024/01/18/OCaml-News-2024-2/"> - A Brief History of Just-In-Time + OCaml News 2024-2 </a> </div> - <span class="post-date">Sep 28, 2023</span> + <span class="post-date">Jan 18, 2024</span> </div> @@ -199,14 +199,14 @@ <div class="post-list-item"> <div class="post-title"> - <a href="/2023/08/15/tick-thread%E5%9C%A8Multicore-OCaml%E4%B8%AD%E7%9A%84%E4%BD%9C%E7%94%A8/"> + <a href="/2024/01/08/OCaml-News-2024-1/"> - tick thread在Multicore OCaml中的作用 + OCaml News 2024-1 </a> </div> - <span class="post-date">Aug 15, 2023</span> + <span class="post-date">Jan 8, 2024</span> </div> @@ -214,17 +214,19 @@ + <div class="year-title">2023</div> + <div class="post-list-item"> <div class="post-title"> - <a href="/2023/08/15/poll-error-attribute-in-OCaml/"> + <a href="/2023/10/21/OCaml-Core-Int-pow-%E7%9A%84%E5%AE%9E%E7%8E%B0/"> - 使用 [@poll error] 实现线程安全的数据结构 + OCaml Core.Int.pow 的实现 </a> </div> - <span class="post-date">Aug 15, 2023</span> + <span class="post-date">Oct 21, 2023</span> </div> @@ -235,14 +237,32 @@ <div class="post-list-item"> <div class="post-title"> - <a href="/2023/08/15/Typed-Design-Patterns-for-the-Functional-Era/"> + <a href="/2023/10/05/v8%E4%B8%ADNumber-toString-%E7%9A%84%E5%AE%9E%E7%8E%B0/"> - Typed Design Patterns for the Functional Era + v8中Number.toString()的实现 </a> </div> - <span class="post-date">Aug 15, 2023</span> + <span class="post-date">Oct 5, 2023</span> + </div> + + + + + + + + <div class="post-list-item"> + <div class="post-title"> + <a href="/2023/10/05/v8%E4%B8%AD%E7%9A%84Number-toString/"> + + v8中的Number.toString() + + </a> + </div> + + <span class="post-date">Oct 5, 2023</span> </div> @@ -253,14 +273,14 @@ <div class="post-list-item"> <div class="post-title"> - <a href="/2023/07/21/WiscKey-Separating-Keys-from-Values-in-SSD-conscious-Storage/"> + <a href="/2023/09/28/A-Brief-History-of-Just-In-Time/"> - WiscKey: Separating Keys from Values in SSD-conscious Storage + A Brief History of Just-In-Time </a> </div> - <span class="post-date">Jul 21, 2023</span> + <span class="post-date">Sep 28, 2023</span> </div> @@ -271,14 +291,14 @@ <div class="post-list-item"> <div class="post-title"> - <a href="/2023/06/28/%E9%9A%90%E8%97%8F%E4%B8%80%E4%BA%9BOCaml-Effect%E7%9A%84%E6%9C%BA%E5%88%B6%EF%BC%8C%E8%AE%A9%E5%85%B6%E8%AF%AD%E6%B3%95%E5%9C%A8%E7%B2%BE%E7%A5%9E%E4%B8%8A%E6%9B%B4%E6%8E%A5%E8%BF%91delimcc/"> + <a href="/2023/08/15/tick-thread%E5%9C%A8Multicore-OCaml%E4%B8%AD%E7%9A%84%E4%BD%9C%E7%94%A8/"> - 隐藏一些OCaml Effect的机制,让其语法在精神上更接近delimcc + tick thread在Multicore OCaml中的作用 </a> </div> - <span class="post-date">Jun 28, 2023</span> + <span class="post-date">Aug 15, 2023</span> </div> @@ -289,19 +309,26 @@ <div class="post-list-item"> <div class="post-title"> - <a href="/2023/06/28/caml-release-runtime-system%E5%AF%BC%E8%87%B4%E7%9A%84%E6%AD%BB%E9%94%81%E9%97%AE%E9%A2%98/"> + <a href="/2023/08/15/poll-error-attribute-in-OCaml/"> - caml_release_runtime_system导致的死锁问题 + 使用 [@poll error] 实现线程安全的数据结构 </a> </div> - <span class="post-date">Jun 28, 2023</span> + <span class="post-date">Aug 15, 2023</span> </div> <div id="paginator"> + <div class=paginator> + <div class="h-line-primary"></div> + <nav class="pagination"> + <span class="page-number current">1</span><a class="page-number" href="/tags/Technique/page/2/">2</a> + </nav> + </div> + </div> </div> diff --git a/tags/Technique/page/2/index.html b/tags/Technique/page/2/index.html new file mode 100644 index 00000000..ca11b3ca --- /dev/null +++ b/tags/Technique/page/2/index.html @@ -0,0 +1,252 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="UTF-8"> +<meta name="viewport" + content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> +<meta http-equiv="X-UA-Compatible" content="ie=edge"> + + <meta name="author" content="韩暮秋"> + + + <meta name="subtitle" content="暮秋小屋"> + + + <meta name="description" content="这里是暮秋小屋,思念和灵感的寄存处"> + + + <meta name="keywords" content="韩暮秋,MuqiuHan"> + + + + +<title>Tag: Technique | 暮秋小屋</title> + + + + + +<style> + @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=Noto+Sans+SC:wght@300;400;500;700&family=Roboto+Mono&display=swap'); +</style> + + + + <!-- stylesheets list from _config.yml --> + + <link rel="stylesheet" href="/css/style.css"> + + + + + + <!-- scripts list from _config.yml --> + + <script src="/js/frame.js"></script> + + + + + + <script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script> + <script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script> + + + + + + + + <meta name="generator" content="Hexo 6.3.0"></head> + <body> + <div class="mask-border"> + </div> + + <div class="wrapper"> + + <div class="header"> + <div class="flex-container"> + <div class="header-inner"> + <div class="site-brand-container"> + <a href="/"> + + 暮秋小屋 + + </a> + </div> + <div id="menu-btn" class="menu-btn" onclick="toggleMenu()"> + Menu + </div> + <nav class="site-nav"> + <ul class="menu-list"> + + + <li class="menu-item"> + <a href="/">主页</a> + </li> + + + + <li class="menu-item"> + <a href="/categories/gallery/">日记本</a> + </li> + + + + <li class="menu-item"> + <a href="/tags/Medicine/">医学</a> + </li> + + + + <li class="menu-item"> + <a href="/tags/Technique/">计算机科学</a> + </li> + + + + <li class="menu-item"> + <a href="/tags/Life/">生活</a> + </li> + + + + <li class="menu-item"> + <a href="/about">关于</a> + </li> + + + + </ul> + </nav> + </div> + </div> +</div> + + + <div class="main"> + <div class="flex-container"> + <div id="tag"> + + + <p class="tag-title"> + / <a href="/tag/">tags</a> + / <a href="">Technique</a> / + </p> + <div class="post-list"> + + + + + + + <div class="year-title">2023</div> + + + <div class="post-list-item"> + <div class="post-title"> + <a href="/2023/08/15/Typed-Design-Patterns-for-the-Functional-Era/"> + + Typed Design Patterns for the Functional Era + + </a> + </div> + + <span class="post-date">Aug 15, 2023</span> + </div> + + + + + + + + <div class="post-list-item"> + <div class="post-title"> + <a href="/2023/07/21/WiscKey-Separating-Keys-from-Values-in-SSD-conscious-Storage/"> + + WiscKey: Separating Keys from Values in SSD-conscious Storage + + </a> + </div> + + <span class="post-date">Jul 21, 2023</span> + </div> + + + + + + + + <div class="post-list-item"> + <div class="post-title"> + <a href="/2023/06/28/%E9%9A%90%E8%97%8F%E4%B8%80%E4%BA%9BOCaml-Effect%E7%9A%84%E6%9C%BA%E5%88%B6%EF%BC%8C%E8%AE%A9%E5%85%B6%E8%AF%AD%E6%B3%95%E5%9C%A8%E7%B2%BE%E7%A5%9E%E4%B8%8A%E6%9B%B4%E6%8E%A5%E8%BF%91delimcc/"> + + 隐藏一些OCaml Effect的机制,让其语法在精神上更接近delimcc + + </a> + </div> + + <span class="post-date">Jun 28, 2023</span> + </div> + + + + + + + + <div class="post-list-item"> + <div class="post-title"> + <a href="/2023/06/28/caml-release-runtime-system%E5%AF%BC%E8%87%B4%E7%9A%84%E6%AD%BB%E9%94%81%E9%97%AE%E9%A2%98/"> + + caml_release_runtime_system导致的死锁问题 + + </a> + </div> + + <span class="post-date">Jun 28, 2023</span> + </div> + + + <div id="paginator"> + + <div class=paginator> + <div class="h-line-primary"></div> + <nav class="pagination"> + <a class="page-number" href="/tags/Technique/">1</a><span class="page-number current">2</span> + </nav> + </div> + + </div> +</div> + + + + +</div> + </div> + </div> + + <div class="footer"> + <div class="flex-container"> + <div class="footer-text"> + + + | + + + 希望路过的人可以添点柴火让这里暖和点 + + </div> + </div> +</div> + + </div> + + + + + </body> +</html> |
