{"pageContext":{"index":310,"total":364,"name":"2025-04-12","items":[{"node":{"frontmatter":{"title":"Apple Pay 的工作原理","publish":true,"cover":"https://substackcdn.com/image/fetch/w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabf49462-4269-4a53-8646-58a99a0f18cb_1200x630.gif","showCover":null,"date":"2025-04-12","category":"mobile","url":"https://newsletter.systemdesign.one/p/how-does-apple-pay-work","author":"Neo Kim","translator":"","tags":["apple pay"],"priority":1},"html":"<hr>\n<p>Apple Pay没有存储信用卡详细信息，而是通过付款网络生成设备帐号，将其存储在iPhone的安全元素中。付款时，系统会创建独特的密码图，以授权交易而无需共享敏感数据。此过程利用安全的硬件组件（例如安全元素和飞地，生物识别验证(​这些生物识别数据仅存储在 iPhone 的安全隔区（Secure Enclave）中，不会上传至 Apple 服务器。​安全隔区是 iPhone 内部一个独立于主系统的处理器，用于保护敏感信息。)和NFC技术）提供比传统信用卡更安全的付款替代方案。</p>\n<p>请求网络是由读卡器发出的，所以iphone不需要处于网络环境</p>"}},{"node":{"frontmatter":{"title":"Llama 4系列人工智能模型","publish":true,"cover":"https://scontent-sin2-1.xx.fbcdn.net/v/t39.2365-6/489528324_1866126614188079_2353760794201377773_n.png?_nc_cat=1&ccb=1-7&_nc_sid=e280be&_nc_ohc=589b2OgjpKQQ7kNvwGEXvyL&_nc_oc=AdlCXyrNJV9QOAPbBFHoCiv3SiqkvIEqLpDFZ-KcNLOTVGJGFY0QTHHEeWfOrtoNEaU8RflF8u7Ki0t1t8XLvHDP&_nc_zt=14&_nc_ht=scontent-sin2-1.xx&_nc_gid=c4_4P044Lp40yZ2UOghELQ&oh=00_AfGE9UToBlQD7Q1xsWQMQufHESZBcY7eaXraNrESDr_CgA&oe=680C8CB3","showCover":null,"date":"2025-04-12","category":"AI","url":"https://ai.meta.com/blog/llama-4-multimodal-intelligence/","author":"meta","translator":"","tags":["LLM"],"priority":1},"html":"<hr>\n<p>包括Llama 4 Scout、Llama 4 Maverick和Llama 4 Behemoth。 ​这些模型采用混合专家（MoE）架构，具备强大的多模态处理能力，能够处理文本、视频、图像和音频等多种数据格式。 ​其中，Llama 4 Scout拥有170亿活跃参数和16个专家模型，Llama 4 Maverick拥有170亿活跃参数和128个专家模型。 ​Llama 4 Behemoth作为最强大的模型，目前仍在训练中。 ​这些模型已在Meta的应用程序中更新，并计划开源</p>"}},{"node":{"frontmatter":{"title":"Oracle 试图在 Oracle SaaS 服务中向客户隐瞒严重的网络安全事件","publish":true,"cover":"https://miro.medium.com/v2/resize:fit:1400/format:webp/1*h4WTNeZGtxIekzvCfJihhQ.png","showCover":null,"date":"2025-04-12","category":"security","url":"https://doublepulsar.com/oracle-attempt-to-hide-serious-cybersecurity-incident-from-customers-in-oracle-saas-service-9231c8daff4a","author":"Kevin Beaumont","translator":"","tags":["oracle"],"priority":2},"html":"<hr>\n<p>事件起因于一名名为“rose87168”的威胁行为者声称入侵了Oracle的云服务，获取了约600万条认证记录，包括Java KeyStore文件、加密的单点登录（SSO）密码和密钥等敏感信息。 ​</p>\n<p>尽管有证据表明存在数据泄露，Oracle最初否认其云服务遭到入侵，声称没有客户数据受到影响。 </p>"}},{"node":{"frontmatter":{"title":"React 中的协调（Reconciliation）过程","publish":true,"cover":"","showCover":null,"date":"2025-04-12","category":"frontend","url":"https://cekrem.github.io/posts/react-reconciliation-deep-dive/","author":"Christian Ekrem","translator":"","tags":["react"],"priority":1},"html":"<hr>\n<p>React 内部使用的是元素树（Element Tree）而非传统意义上的虚拟 DOM</p>\n<p>在协调过程中，React 遵循以下关键原则：​</p>\n<p>元素类型决定身份：​如果元素类型发生变化，React 会销毁旧的子树并创建新的子树。​</p>\n<p>同级比较：​React 仅比较同一层级的元素，不会跨层级比较。​</p>\n<p>使用唯一的 key 标识列表元素：​在渲染列表时，使用唯一的 key 可以帮助 React 更准确地识别元素，避免不必要的重新渲染。</p>"}},{"node":{"frontmatter":{"title":"PayPal旗下的自动寻找优惠券浏览器扩展程序Honey在被曝光存在不当行为后用户数量大幅下降","publish":true,"cover":"https://i0.wp.com/9to5google.com/wp-content/uploads/sites/4/2025/01/paypal-honey-logo-1.jpg?w=1500&quality=82&strip=all&ssl=1","showCover":null,"date":"2025-04-12","category":"other","url":"https://9to5google.com/2025/03/31/honey-extension-users-dropped-chrome-march-2025/","author":"Ben Schoon","translator":"","tags":["paypal"],"priority":1},"html":"<hr>\n<p>劫持关联营销代码：​Honey会在用户结账时替换原有的关联营销代码，即使它没有找到可用的优惠券或返现，这意味着Honey可能从其他推广者（如内容创作者）那里窃取佣金。 ​</p>\n<p>与商家合作控制优惠券显示：​Honey与商家合作，控制向用户展示的优惠券代码，可能导致用户无法看到真正最优惠的折扣。</p>"}},{"node":{"frontmatter":{"title":"graft - 开源事务性存储引擎","publish":true,"cover":"https://sqlsync.dev/_astro/pull_changes.DjOYfgBf_2biXxv.webp","showCover":null,"date":"2025-04-12","category":"database","url":"https://sqlsync.dev/posts/stop-syncing-everything/","author":"Carl Sverre","translator":"","tags":["transaction"],"priority":1},"html":"<hr>\n<p><a href=\"https://github.com/orbitinghail/graft\">github</a></p>"}},{"node":{"frontmatter":{"title":"fancy - 基于tailwind,motion的动画组件库","publish":true,"cover":"","showCover":null,"date":"2025-04-12","category":"frontend","url":"https://github.com/danielpetho/fancy","author":"Daniel Petho","translator":"","tags":["animation"],"priority":1},"html":"<hr>"}},{"node":{"frontmatter":{"title":"Tauri vs. Electron: 性能、包体积和真实权衡","publish":true,"cover":"https://gethopp.app/_next/image?url=%2Fimages%2Ftauri-vs-electron%2Ffeatured_image.jpg&w=1920&q=99","showCover":null,"date":"2025-04-12","category":"frontend","url":"https://gethopp.app/blog/tauri-vs-electron","author":"Costa Alexoglou","translator":"","tags":["desktop"],"priority":2},"html":"<hr>\n<p>Tauri 在内存使用和包体积方面具有明显优势，但初次构建时间较长。</p>\n<p>Tauri：​主进程使用 Rust 编写，编译为本地二进制文件，无需打包运行时。UI 渲染依赖操作系统原生的 WebView（如 Windows 的 WebView2、macOS 的 WKWebView），使得应用更轻量，但可能面临不同平台间的渲染差异</p>"}},{"node":{"frontmatter":{"title":"仅使用 CSS 实现模糊图像占位符（LQIP）的技术","publish":true,"cover":"https://leanrada.com/notes/css-only-lqip/hero.jpg","showCover":null,"date":"2025-04-12","category":"frontend","url":"https://leanrada.com/notes/css-only-lqip/","author":"Lean Rada","translator":"","tags":["css"],"priority":1},"html":"<hr>\n<div class=\"gatsby-highlight\" data-language=\"html\"><pre class=\"language-html\"><code class=\"language-html\"><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>img</span> <span class=\"token attr-name\">src</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>…<span class=\"token punctuation\">\"</span></span><span class=\"token style-attr language-css\"><span class=\"token attr-name\"> <span class=\"token attr-name\">style</span></span><span class=\"token punctuation\">=\"</span><span class=\"token attr-value\"><span class=\"token property\">--lqip</span><span class=\"token punctuation\">:</span>#9bc28e</span><span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>\n\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>style</span><span class=\"token punctuation\">></span></span><span class=\"token style language-css\">\n<span class=\"token comment\">/* we save some bytes by ‘aliasing’ this property */</span>\n<span class=\"token selector\">*</span> <span class=\"token punctuation\">{</span> <span class=\"token property\">background-color</span><span class=\"token punctuation\">:</span> <span class=\"token function\">var</span><span class=\"token punctuation\">(</span>--lqip<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">}</span>\n</span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>style</span><span class=\"token punctuation\">></span></span></code></pre></div>"}},{"node":{"frontmatter":{"title":"recorder - 运行于浏览器的录屏摄象app","publish":true,"cover":"https://github.com/addyosmani/recorder/raw/main/public/screenshot-02.jpg","showCover":null,"date":"2025-04-12","category":"javascript","url":"https://github.com/addyosmani/recorder?tab=readme-ov-file","author":"Addy Osmani","translator":"","tags":["record"],"priority":2},"html":"<hr>"}},{"node":{"frontmatter":{"title":"iptv - 全球公共电视台","publish":true,"cover":"","showCover":null,"date":"2025-04-12","category":"other","url":"https://github.com/iptv-org/iptv","author":"iptv-org","translator":"","tags":["news"],"priority":1},"html":"<hr>"}},{"node":{"frontmatter":{"title":"免费的卫报美国版通过捐赠的模式蓬勃发展","publish":true,"cover":"https://pyxis.nymag.com/v1/imgs/230/55f/70192ceeb139eed01ee2d58eb6899342bd-done-guardian-paywall-copy.2x.rhorizontal.w700.jpg","showCover":null,"date":"2025-04-12","category":"other","url":"https://nymag.com/intelligencer/article/how-the-guardian-us-flourishes-without-a-paywall.html","author":"Charlotte Klein","translator":"","tags":["news"],"priority":1},"html":"<hr>"}},{"node":{"frontmatter":{"title":"几年前Android 设备上安装的任何应用程序都可以在未经您许可的情况下看到您手机上的所有其他应用程序","publish":true,"cover":"https://substackcdn.com/image/fetch/w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10e241bb-cc5e-44aa-ab3d-0f8585c6882f_1802x2680.png","showCover":null,"date":"2025-04-12","category":"mobile","url":"https://peabee.substack.com/p/everyone-knows-what-apps-you-use","author":"Pea Bee","translator":"","tags":["android"],"priority":1},"html":"<hr>\n<p>ACTION<em>MAIN,READ</em>SMS</p>"}},{"node":{"frontmatter":{"title":"如何在 CSS 中控制背景图像的透明度","publish":true,"cover":"","showCover":null,"date":"2025-04-12","category":"frontend","url":"https://blog.jim-nielsen.com/2025/background-image-opacity-css/","author":"​Jim Nielsen","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 comment\">/* 如下两个配合 */</span>\n  <span class=\"token property\">background-color</span><span class=\"token punctuation\">:</span> <span class=\"token function\">rgba</span><span class=\"token punctuation\">(</span>255,255,255,0.6<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token property\">background-blend-mode</span><span class=\"token punctuation\">:</span> lighten<span class=\"token punctuation\">;</span></code></pre></div>"}},{"node":{"frontmatter":{"title":"如何在不支持javascript的页面隐藏需要javascript的元素","publish":true,"cover":"","showCover":null,"date":"2025-04-12","category":"frontend","url":"https://0xda.de/blog/2025/04/hiding-elements-that-require-javascript-without-javascript/","author":"Dade","translator":"","tags":["html"],"priority":1},"html":"<hr>\n<p>为所有依赖 JavaScript 的元素添加一个统一的 CSS 类，例如 .d-js-required。​然后，在 <head> 中使用 <noscript> 标签添加一段 CSS，将这些元素在 JavaScript 被禁用时隐藏</p>"}},{"node":{"frontmatter":{"title":"开发者在2025应该知道的javascript特性","publish":true,"cover":"https://waspdev.com/static/images/2025-04-06/js-symbol-2.webp","showCover":null,"date":"2025-04-12","category":"javascript","url":"https://waspdev.com/articles/2025-04-06/features-that-every-js-developer-must-know-in-2025","author":"​Suren Enfiajyan","translator":"","tags":["feature"],"priority":1},"html":"<hr>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token comment\">// 迭代子的类似数组的方法</span>\narr<span class=\"token punctuation\">.</span><span class=\"token function\">values</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">drop</span><span class=\"token punctuation\">(</span><span class=\"token number\">10</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">take</span><span class=\"token punctuation\">(</span><span class=\"token number\">10</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">filter</span><span class=\"token punctuation\">(</span>el <span class=\"token operator\">=></span> el <span class=\"token operator\">&lt;</span> <span class=\"token number\">10</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">map</span><span class=\"token punctuation\">(</span>el <span class=\"token operator\">=></span> el <span class=\"token operator\">+</span> <span class=\"token number\">5</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">toArray</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span>\n\n<span class=\"token comment\">//深克隆</span>\n<span class=\"token keyword\">const</span> clonedObj <span class=\"token operator\">=</span> <span class=\"token function\">structuredClone</span><span class=\"token punctuation\">(</span>obj<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token comment\">// string replaceAll回调</span>\n<span class=\"token keyword\">let</span> counter <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\nconsole<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"NUMBER, NUMBER, NUMBER\"</span><span class=\"token punctuation\">.</span><span class=\"token function\">replaceAll</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"NUMBER\"</span><span class=\"token punctuation\">,</span> <span class=\"token punctuation\">(</span>match<span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> match <span class=\"token operator\">+</span> <span class=\"token string\">\"=\"</span> <span class=\"token operator\">+</span> <span class=\"token punctuation\">(</span><span class=\"token operator\">++</span>counter<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token comment\">// NUMBER=1, NUMBER=2, NUMBER=3</span>\n\n<span class=\"token comment\">// 数值交换</span>\n<span class=\"token keyword\">let</span> a <span class=\"token operator\">=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">,</span> b <span class=\"token operator\">=</span> <span class=\"token number\">2</span><span class=\"token punctuation\">;</span>\nconsole<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span>a<span class=\"token punctuation\">,</span> b<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// 1, 2</span>\n<span class=\"token punctuation\">[</span>a<span class=\"token punctuation\">,</span> b<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span>b<span class=\"token punctuation\">,</span> a<span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\nconsole<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span>a<span class=\"token punctuation\">,</span> b<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// 2, 1</span></code></pre></div>"}},{"node":{"frontmatter":{"title":"并行化 - 第五种优化方式","publish":true,"cover":"","showCover":null,"date":"2025-04-12","category":"other","url":"https://tratt.net/laurie/blog/2025/the_fifth_kind_of_optimisation.html","author":"Laurence Tratt","translator":"","tags":["optimism"],"priority":1},"html":"<hr>\n<p>使用更好的算法。\n使用更好的数据结构。\n使用较低级别的系统。\n接受不太精确的解决方案。</p>"}},{"node":{"frontmatter":{"title":"当前大学学生的阅读和写作能力有所下降","publish":true,"cover":"https://substackcdn.com/image/fetch/w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7bf2e1d-e9da-41fc-b39b-f39291ded07c_700x525.jpeg","showCover":null,"date":"2025-04-12","category":"other","url":"https://hilariusbookbinder.substack.com/p/the-average-college-student-today","author":"Hilarius Bookbinde","translator":"","tags":["college"],"priority":1},"html":"<hr>\n<p>沉迷电子产品，大学当作混文凭走过场</p>"}},{"node":{"frontmatter":{"title":"公共电视台花园","publish":true,"cover":"","showCover":null,"date":"2025-04-12","category":"other","url":"https://tv.garden/","author":"tv.garden","translator":"","tags":["news"],"priority":1},"html":"<hr>"}},{"node":{"frontmatter":{"title":"国外也开始谈卷的经验","publish":true,"cover":"","showCover":null,"date":"2025-04-12","category":"other","url":"https://www.seangoedecke.com/tactical-work-in-the-age-of-layoffs","author":"sean goedecke","translator":"","tags":["career"],"priority":1},"html":"<hr>\n<p>在 2010 年代的辉煌时期，科技公司非常重视员工的工作与生活平衡。那些辉煌的日子已经过去了。有趣的是，科技公司的高管们现在在内部指导他们的员工更努力、更快地工作，而裁员的新威胁增加了该指令的分量。</p>\n<p>不做没有产出的工作，当聚光灯指向你时，拼命表现</p>"}},{"node":{"frontmatter":{"title":"面向 Node.js 开发人员的 Llama Stack 实用指南","publish":true,"cover":"https://developers.redhat.com/sites/default/files/screenshot_from_2025-03-25_17-41-25.png.webp","showCover":null,"date":"2025-04-12","category":"nodejs","url":"https://developers.redhat.com/articles/2025/04/02/practical-guide-llama-stack-nodejs-developers","author":"Michael Dawson","translator":"","tags":["AI"],"priority":2},"html":"<hr>\n<p><a href=\"https://github.com/meta-llama/llama-stack\">llama-stack</a></p>"}}]}}