{"pageContext":{"index":195,"total":362,"name":"2023-01-29","items":[{"node":{"frontmatter":{"title":"expo router即将发布","publish":true,"cover":"https://miro.medium.com/max/1400/1*0aoGKevRxqG6fNs9Rh6dkg.webp","showCover":null,"date":"2023-01-29","category":"mobile","url":"https://blog.expo.dev/announcing-the-expo-router-v1-release-candidate-c5680b88a18c","author":"Evan Bacon","translator":"","tags":["expo"],"priority":2},"html":"<p>支持React Navigation的整合</p>"}},{"node":{"frontmatter":{"title":"DummyJSON 提供假数据api","publish":true,"cover":"","showCover":null,"date":"2023-01-29","category":"frontend","url":"https://github.com/Ovi/DummyJSON","author":"Muhammad Ovi (Owais)","translator":"","tags":["fake"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"Drift - 自托管类似Gist服务","publish":true,"cover":"","showCover":null,"date":"2023-01-29","category":"nodejs","url":"https://github.com/MaxLeiter/Drift","author":"Max Leiter","translator":"","tags":["gist"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"imaginAIry - 基于stable diffusion算法自然语言驱动AI改图","publish":true,"cover":"https://github.com/brycedrennan/imaginAIry/raw/master/assets/pearl_depth_1.jpg","showCover":null,"date":"2023-01-29","category":"AI","url":"https://github.com/brycedrennan/imaginAIry","author":"Bryce Drennan","translator":"","tags":["stable diffusion"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"jazzer.js 进程内模糊工具","publish":true,"cover":"","showCover":null,"date":"2023-01-29","category":"nodejs","url":"https://github.com/CodeIntelligenceTesting/jazzer.js","author":"Code Intelligience","translator":"","tags":["fuzz"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"react-native-android-widget - 使用 React Native 构建 Android 小部件","publish":true,"cover":"","showCover":null,"date":"2023-01-29","category":"mobile","url":"https://github.com/sAleksovski/react-native-android-widget","author":"Stefan Aleksovski","translator":"","tags":["react native"],"priority":1},"html":"<p>支持expo</p>"}},{"node":{"frontmatter":{"title":"opossum - nodejs异步断路器","publish":true,"cover":"","showCover":null,"date":"2023-01-29","category":"nodejs","url":"https://github.com/nodeshift/opossum","author":"NodeShift","translator":"","tags":["circuit"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"nut.js - 桌面原生ui自动化测试框架","publish":true,"cover":"","showCover":null,"date":"2023-01-29","category":"frontend","url":"https://github.com/nut-tree/nut.js","author":"nut-tree","translator":"","tags":["test"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"s3fs - 由AWS s3实现的文件系统API","publish":true,"cover":"","showCover":null,"date":"2023-01-29","category":"nodejs","url":"https://github.com/cyclic-software/s3fs","author":"Cyclic","translator":"","tags":["AWS"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"使用Temporal云服务构建分布式nodejs应用","publish":true,"cover":"https://images.ctfassets.net/0uuz8ydxyd9p/23viK26Hvfx8jYCam3kC9r/36321dc6b375fe829a8c3e701b85bb9f/menu.jpg","showCover":null,"date":"2023-01-29","category":"nodejs","url":"https://temporal.io/blog/building-reliable-distributed-systems-in-node","author":"Loren Sands-Ramshaw","translator":"","tags":["microservice"],"priority":2},"html":""}},{"node":{"frontmatter":{"title":"你可能不需要 ORM","publish":true,"cover":"","showCover":null,"date":"2023-01-29","category":"database","url":"https://sometechblog.com/posts/you-might-not-need-an-orm/","author":"SOME TECH BLOG","translator":"","tags":["ORM"],"priority":1},"html":"<p>用到了SQL工具<a href=\"https://aihelperbot.com/\">AI bot</a></p>\n<blockquote>\n<p>这文章老生常谈，要使用原生SQL没必要就不用ORM，结合起来用不行吗，估计作者代码都不爱定义modal他自己看得懂就行</p>\n</blockquote>"}},{"node":{"frontmatter":{"title":"使用集合论理解 TypeScript类型","publish":true,"cover":"https://blog.thoughtspile.tech/images/ts-sets/all.png","showCover":null,"date":"2023-01-29","category":"javascript","url":"https://github.com/MaxLeiter/Drift","author":"Vladimir Klepov","translator":"","tags":["typescript"],"priority":2},"html":""}},{"node":{"frontmatter":{"title":"夏日暑假的下午 - 温馨视觉的webgl游戏","publish":true,"cover":"","showCover":null,"date":"2023-01-29","category":"game","url":"https://summer-afternoon.vlucendo.com/","author":"vlucendo","translator":"","tags":["game"],"priority":1},"html":"<p>基于threejs, <a href=\"https://greensock.com/gsap/\">gsap</a>, svelte, <a href=\"https://www.sidefx.com/products/houdini/\">houdini</a></p>"}},{"node":{"frontmatter":{"title":"游戏帝国时代的网络编程","publish":true,"cover":"https://eu-images.contentstack.com/v3/assets/blt95b381df7c12c15d/blt10af2e05b1394e9c/611e41178d060c638cda186c/terrano_06.jpg?width=828&quality=80&format=webply&disable=upscale","showCover":null,"date":"2023-01-29","category":"algrithm","url":"https://www.gamedeveloper.com/programming/1500-archers-on-a-28-8-network-programming-in-age-of-empires-and-beyond","author":"Paul Bettner","translator":"","tags":["game"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"教程 - 让你的 React Native 手势感觉自然","publish":true,"cover":"https://cdn.shopify.com/s/files/1/0779/4361/files/SheetResistance.gif?v=1674229658","showCover":null,"date":"2023-01-29","category":"mobile","url":"https://shopify.engineering/making-react-native-gestures-feel-natural","author":"Andrew Lo","translator":"","tags":["react native"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"搞事情 - 建议react 官方用 Vite 替换 Create React App","publish":true,"cover":"","showCover":null,"date":"2023-01-29","category":"frontend","url":"https://github.com/reactjs/reactjs.org/pull/5487","author":"Theo Browne","translator":"","tags":["react"],"priority":1},"html":"<p>虽然支持的多，但是反对的声音理由更充分:</p>\n<ul>\n<li>vite不自动配置eslint</li>\n<li><a href=\"https://github.com/vitejs/vite/issues/2433\">vite有内存泄漏</a></li>\n</ul>"}},{"node":{"frontmatter":{"title":"详解Typescript类型never","publish":true,"cover":"","showCover":null,"date":"2023-01-29","category":"javascript","url":"https://www.zhenghao.io/posts/ts-never","author":"Zhenghao","translator":"","tags":["typescript"],"priority":1},"html":"<p>用法一:定义不允许存在的属性</p>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\">type VariantA <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span>\n    a<span class=\"token punctuation\">:</span> string\n    b<span class=\"token operator\">?</span><span class=\"token punctuation\">:</span> never\n<span class=\"token punctuation\">}</span>\n\ntype VariantB <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span>\n    b<span class=\"token punctuation\">:</span> number\n    a<span class=\"token operator\">?</span><span class=\"token punctuation\">:</span> never\n<span class=\"token punctuation\">}</span>\n\ndeclare <span class=\"token keyword\">function</span> <span class=\"token function\">fn</span><span class=\"token punctuation\">(</span>arg<span class=\"token punctuation\">:</span> VariantA <span class=\"token operator\">|</span> VariantB<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span> <span class=\"token keyword\">void</span>\n\n\n<span class=\"token keyword\">const</span> input <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span>a<span class=\"token punctuation\">:</span> <span class=\"token string\">'foo'</span><span class=\"token punctuation\">,</span> b<span class=\"token punctuation\">:</span> <span class=\"token number\">123</span> <span class=\"token punctuation\">}</span>\n<span class=\"token function\">fn</span><span class=\"token punctuation\">(</span>input<span class=\"token punctuation\">)</span> <span class=\"token comment\">// ❌ Types of property 'a' are incompatible</span></code></pre></div>\n<blockquote>\n<p>never感觉有点晦涩，复杂度超过一定阈值的东西，用的人就少，别人读的也麻烦。</p>\n</blockquote>"}}]}}