{"pageContext":{"index":298,"total":364,"name":"2025-01-18","items":[{"node":{"frontmatter":{"title":"1000行c代码实现的操作系统","publish":true,"cover":"","showCover":null,"date":"2025-01-18","category":"c","url":"https://github.com/nuta/operating-system-in-1000-lines","author":"Seiya Nuta","translator":"","tags":["drive"],"priority":1},"html":"<hr>"}},{"node":{"frontmatter":{"title":"@starting-style - 不需要keyframe的动画方式","publish":true,"cover":"","showCover":null,"date":"2025-01-18","category":"frontend","url":"https://css-tip.com/animation-without-keyframes/","author":"Temani Afif","translator":"","tags":["css"],"priority":1},"html":"<hr>\n<div class=\"gatsby-highlight\" data-language=\"css\"><pre class=\"language-css\"><code class=\"language-css\"><span class=\"token selector\">.box</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token property\">transition</span><span class=\"token punctuation\">:</span> 40s linear 1s<span class=\"token punctuation\">;</span> <span class=\"token comment\">/* duration easing delay */</span>\n  <span class=\"token property\">rotate</span><span class=\"token punctuation\">:</span> 0turn<span class=\"token punctuation\">;</span> <span class=\"token comment\">/* To (can be removed as it's the default value) */</span>\n  <span class=\"token atrule\"><span class=\"token rule\">@starting-style</span></span> <span class=\"token punctuation\">{</span>\n    <span class=\"token property\">rotate</span><span class=\"token punctuation\">:</span> -20turn<span class=\"token punctuation\">;</span> <span class=\"token comment\">/* From */</span>\n  <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span></code></pre></div>"}},{"node":{"frontmatter":{"title":"MD5 与 SHA-256 哈希性能比较","publish":true,"cover":"","showCover":null,"date":"2025-01-18","category":"nodejs","url":"https://lemire.me/blog/2025/01/11/javascript-hashing-speed-comparison-md5-versus-sha-256/","author":"Daniel Lemire","translator":"","tags":["hash"],"priority":1},"html":"<hr>\n<p>我的结果表明，您可能不应该使用 MD5。MD5 比 SHA-256 慢，也不安全。\n尽管 SHA-256 在纸面上看起来更昂贵，但现代处理器通常具有加密扩展来加速它。</p>"}},{"node":{"frontmatter":{"title":"Fidget - 用于表示、编译和计算大规模数学表达式的库","publish":true,"cover":"https://github.com/mkeeter/fidget/raw/main/demos/web-editor/screenshot.png","showCover":null,"date":"2025-01-18","category":"rust","url":"https://www.mattkeeter.com/projects/fidget/","author":"Matt Keeter","translator":"","tags":["CAD"],"priority":1},"html":"<hr>\n<p>它主要设计为隐式表面</p>"}},{"node":{"frontmatter":{"title":"Promise.race 和 all总是优先第一个调用，应该使用.any","publish":true,"cover":"","showCover":null,"date":"2025-01-18","category":"javascript","url":"https://v5.chriskrycho.com/notes/javascript-promise-race-and-promise-all-are-not-fair/","author":"Chris Krycho","translator":"","tags":["promise"],"priority":1},"html":"<hr>\n<p>对于Promise.race, 传递给 Promise 的 iterable 中的第一个值将始终获胜</p>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token function\">test</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">function</span> <span class=\"token function\">test</span><span class=\"token punctuation\">(</span>n <span class=\"token operator\">=</span> <span class=\"token number\">100</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token keyword\">const</span> <span class=\"token function-variable function\">go</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> Promise<span class=\"token punctuation\">.</span><span class=\"token function\">race</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">[</span><span class=\"token function\">one_ms</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"a\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> <span class=\"token function\">one_ms</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"b\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n  <span class=\"token keyword\">let</span> input <span class=\"token operator\">=</span> Array<span class=\"token punctuation\">.</span><span class=\"token keyword\">from</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">{</span> length<span class=\"token punctuation\">:</span> n <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span> go<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  Promise<span class=\"token punctuation\">.</span><span class=\"token function\">all</span><span class=\"token punctuation\">(</span>input<span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">then</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span>results<span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> <span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">let</span> <span class=\"token keyword\">as</span> <span class=\"token operator\">=</span> results<span class=\"token punctuation\">.</span><span class=\"token function\">filter</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span>value<span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> value <span class=\"token operator\">==</span> <span class=\"token string\">\"a\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span>length<span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">let</span> bs <span class=\"token operator\">=</span> results<span class=\"token punctuation\">.</span>length <span class=\"token operator\">-</span> <span class=\"token keyword\">as</span><span class=\"token punctuation\">;</span>\n\n    console<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span><span class=\"token template-string\"><span class=\"token string\">`'a' won </span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${</span><span class=\"token keyword\">as</span><span class=\"token interpolation-punctuation punctuation\">}</span></span><span class=\"token string\"> times`</span></span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    console<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span><span class=\"token template-string\"><span class=\"token string\">`'b' won </span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${</span>bs<span class=\"token interpolation-punctuation punctuation\">}</span></span><span class=\"token string\"> times`</span></span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token keyword\">function</span> <span class=\"token function\">one_ms</span><span class=\"token punctuation\">(</span>value<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token keyword\">return</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">Promise</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span>resolve<span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> <span class=\"token punctuation\">{</span>\n    <span class=\"token function\">setTimeout</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> <span class=\"token function\">resolve</span><span class=\"token punctuation\">(</span>value<span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>"}},{"node":{"frontmatter":{"title":"chess.js - 国际象棋库","publish":true,"cover":"","showCover":null,"date":"2025-01-18","category":"javascript","url":"https://github.com/jhlywa/chess.js","author":"Jeff Hlywa","translator":"","tags":["chess"],"priority":1},"html":"<hr>"}},{"node":{"frontmatter":{"title":"AsyncLocalStorage：简化 Node.js 服务端 中的上下文管理","publish":true,"cover":"","showCover":null,"date":"2025-01-18","category":"nodejs","url":"https://www.trevorlasn.com/blog/node-async-local-storage","author":"Trevor I. Lasn","translator":"","tags":["asyncstorage"],"priority":1},"html":"<hr>\n<p>有些类似于java多线程的ThreadLocal</p>"}},{"node":{"frontmatter":{"title":"openpilot - 开源辅助驾驶系统","publish":true,"cover":"","showCover":null,"date":"2025-01-18","category":"python","url":"https://github.com/commaai/openpilot","author":"comma.ai","translator":"","tags":["drive"],"priority":1},"html":"<hr>"}},{"node":{"frontmatter":{"title":"React 的实验性动画 API - ViewTransition试用","publish":true,"cover":"","showCover":null,"date":"2025-01-18","category":"frontend","url":"https://motion.dev/blog/reacts-experimental-view-transition-api","author":"Matt Perry","translator":"","tags":["react"],"priority":1},"html":"<hr>\n<p><a href=\"https://react-view-transition-examples.motion.dev/react\">动画示例</a></p>"}},{"node":{"frontmatter":{"title":"Shopify全面使用React Native五年后反馈非常好","publish":true,"cover":"https://cdn.shopify.com/s/files/1/0779/4361/files/Shopify-ReactNative-App-Table.png?v=1736795681","showCover":null,"date":"2025-01-18","category":"mobile","url":"https://shopify.engineering/five-years-of-react-native-at-shopify","author":"Mustafa Ali","translator":"","tags":["react native"],"priority":1},"html":"<hr>\n<p>原生代码协助react native</p>\n<p>原生仍然是构建利用 2D/3D 扫描等设备硬件并在设备上运行 AI 模型的尖端功能的最佳方式。它还更适合构建具有内存限制的功能，例如主屏幕和锁屏小部件、Apple Watch 应用程序和复杂功能、App Intent 和 Siri 快捷方式。</p>\n<p>Native 也是长时间运行的后台作业的更好选择。</p>"}},{"node":{"frontmatter":{"title":"使用 Readability.js 清理 HTML 内容以进行检索增强生成","publish":true,"cover":"https://cdn.sanity.io/images/bbnkhnhl/production/1c08cad48727740f5f61300c01a751a01df51629-756x490.gif","showCover":null,"date":"2025-01-18","category":"nodejs","url":"https://www.datastax.com/blog/html-content-retrieval-augmented-generation-readability-js","author":"Phil Nash","translator":"","tags":["AI"],"priority":2},"html":"<hr>\n<p>还可以配合langchain.js</p>"}},{"node":{"frontmatter":{"title":"postal-mime - 可用于浏览器的email解析工具","publish":true,"cover":"","showCover":null,"date":"2025-01-18","category":"nodejs","url":"https://github.com/postalsys/postal-mime","author":"Postal Systems","translator":"","tags":["email"],"priority":1},"html":"<hr>"}},{"node":{"frontmatter":{"title":"react-highlight-words - 大文本中的文字高亮","publish":true,"cover":"https://cloud.githubusercontent.com/assets/29597/11913937/0d2dcd78-a629-11e5-83e7-6a17b6d765a5.png","showCover":null,"date":"2025-01-18","category":"frontend","url":"https://github.com/bvaughn/react-highlight-words","author":"Brian Vaughn","translator":"","tags":["react"],"priority":2},"html":"<hr>"}},{"node":{"frontmatter":{"title":"分辨图片不同点的技巧","publish":true,"cover":"https://www.notion.so/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2Fc60cb9d6-ff5a-4eb2-823a-c07963f46657%2Ff6337768-e52e-468e-82cf-4ab806968e7b%2FCleanShot_2025-01-10_at_17.32.45.jpg?table=block&id=1775e32d-8082-80fd-9cbb-c0e55218ccfc&cache=v2","showCover":null,"date":"2025-01-18","category":"other","url":"https://danielwirtz.com/blog/spot-the-difference-superpower","author":"Daniel Wirtz","translator":"","tags":["picture"],"priority":2},"html":"<hr>"}},{"node":{"frontmatter":{"title":"tsconfig.json 的配置检查清单","publish":true,"cover":"","showCover":null,"date":"2025-01-18","category":"javascript","url":"https://2ality.com/2025/01/tsconfig-json.html","author":"Dr. Axel Rauschmayer","translator":"","tags":["tsconfig"],"priority":1},"html":"<hr>"}},{"node":{"frontmatter":{"title":"基于openpilot的1993版沃尔沃自动驾驶","publish":true,"cover":"https://practicapp.com/images/carbagerun.jpg","showCover":null,"date":"2025-01-18","category":"AI","url":"https://practicapp.com/carbagepilot-part1/","author":"Robbe Derks","translator":"","tags":["drive"],"priority":2},"html":"<hr>"}},{"node":{"frontmatter":{"title":"太空地图册","publish":true,"cover":"","showCover":null,"date":"2025-01-18","category":"science","url":"https://atlasof.space/","author":"atlasof.space","translator":"","tags":["astronomy"],"priority":1},"html":"<hr>"}},{"node":{"frontmatter":{"title":"我如何使用 LLM 编程","publish":true,"cover":"","showCover":null,"date":"2025-01-18","category":"AI","url":"https://crawshaw.io/blog/programming-with-llms","author":"crawshaw","translator":"","tags":["LLM"],"priority":1},"html":"<hr>"}},{"node":{"frontmatter":{"title":"运行于pdf中的俄罗斯方块","publish":true,"cover":"","showCover":null,"date":"2025-01-18","category":"javascript","url":"https://th0mas.nl/downloads/pdftris.pdf","author":"th0mas.nl","translator":"","tags":["pdf"],"priority":1},"html":"<hr>"}},{"node":{"frontmatter":{"title":"我们如何在云中以不到 512 美元的价格破解 8 位 DKIM 密钥","publish":true,"cover":"","showCover":null,"date":"2025-01-18","category":"security","url":"https://dmarcchecker.app/articles/crack-512-bit-dkim-rsa-key","author":"dmarcchecker","translator":"","tags":["RSA"],"priority":1},"html":"<hr>\n<p>三十年前，破解 512 位 RSA 公钥是一项只有使用超级计算机才能实现的壮举。今天，在云服务器上只需不到 8 美元就可以在短短几个小时内完成。</p>"}},{"node":{"frontmatter":{"title":"我为什么开发Tramway SDK - 低配置计算机上的3d游戏引擎","publish":true,"cover":"https://github.com/racenis/tram-sdk/raw/main/docs/images/etc/editingapp.png","showCover":null,"date":"2025-01-18","category":"game","url":"https://racenis.github.io/tram-sdk/why.html","author":"racenis","translator":"","tags":["engine"],"priority":1},"html":"<hr>\n<p>Half-Life 和 Morrowind engines 的结合体</p>"}},{"node":{"frontmatter":{"title":"魔法电子邮件链接：不要让它们成为唯一的选择","publish":true,"cover":"","showCover":null,"date":"2025-01-18","category":"security","url":"https://recyclebin.zip/posts/annoyinglinks/","author":"Guillaume Ross","translator":"","tags":["email"],"priority":1},"html":"<hr>\n<p>这些问题主要是针对只提供电子邮件一键登录的app</p>"}}]}}