20 Matching Annotations
  1. Sep 2024
    1. ISR enables you to load only the most recent pages at build-time and more pages are cached ahead of a user's request.

      所以 是哪里可以控制的? 

  2. Jul 2024
    1. To show how to implement a personalization strategy using Edge Functions, we will create a prototype of an e-commerce website that offers products of two categories: Sportswear and Elegant. The website has a home page, and catalog pages where items of each category are displayed. It also has a "general" catalog page, showing all the items from all the categories. After a visitor of the website goes to one particular category catalog page, we will assume that the person is interested in that kind of product. So, after the first visit, the website will start showing exclusive content related to the category selected on the home page.

      我们要创建一个简单的电商网站原型,主要有两类产品:运动服和正装。这个网站有以下几个页面:

      首页 运动服目录页 正装目录页 通用目录页(展示所有产品)

      网站的个性化策略是这样的:

      当访客第一次浏览某个特定类别的目录页(比如运动服)时,我们就假设这个访客对这类产品感兴趣。 之后,当这个访客再次访问首页时,我们会在首页上显示一些与他们之前浏览的类别(运动服)相关的特别内容。

      这种策略的目的是为每个访客提供更加个性化的体验,展示他们可能更感兴趣的内容。 这个概念涉及使用Edge Functions(边缘函数)来实现,这是一种在离用户较近的服务器上运行的轻量级代码,可以快速响应并提供个性化内容。

  3. Mar 2024
  4. Jan 2024
    1. In the future, RTK Query may be able to receive data fetched on the server via React Server Components, but that is a future capability that will require changes to both React and RTK Query.

      现在不支持的话,如果为了使用RSCs就需要单独写一套逻辑吗?

  5. Dec 2023
    1. builder.addMatcher

      这里可以作为DDD的policy ???

      感觉不太行。。。这里感觉只能修改本slice的state,无法再生成一个event ?或者调用dispatch ?  An automation policy that triggers the “Ship Order” command when the “Shipment Approved” event is observed 理论上 回调的方法 就应该作为一个 command

      感觉这个是弱化的 listen , 因为最佳的做法是 我监听到了event ,我这个command是会做很多操作的,比如异步请求,或者再调别人的command,但是这里这出是局限于 本slice的修改

      这个API暴露的挺不好的,可能就是为了适配没有listen吧

    1. Typing for the create.asyncThunk works in the same way as createAsyncThunk, with one key difference.A type for state and/or dispatch cannot be provided as part of the ThunkApiConfig, as this would cause circular types.

      看不懂 ?感觉是可以拿到类型的呀

    2. The main benefit of this is that you can create async thunks as part of your slice (though for bundle size reasons, you need a bit of setup for this). Types are also slightly simplified for prepared reducers.

      其实这样就可以把全部 Command 都收拢起来了

    1. extraReducers: (builder) => { builder.addCase(fetchUsers.fulfilled, usersAdapter.upsertMany) builder.addCase(updateUser.fulfilled, (state, { payload }) => { const { id, ...changes } = payload usersAdapter.updateOne(state, { id, changes }) }) },

      那这里其实已经实现了类似 listen 的效果了呀

    2. const rootReducer = combineReducers({ users: usersReducer, posts: postsReducer,})

      Reducer 有点类似 domain service ? 里面有entiry 也有 业务逻辑(command/query)

    1. ingested or indexed spans

      根据文档的内容和上下文,这里 ingested, indexed 这两个词语是在描述 trace 数据的状态,表示该 trace 数据被系统处理的不同阶段:

      ingested:表示 trace 数据被 Datadog 系统“摄取/采集”了。简单说就是这个 trace 已经被 Datadog 接收和存储了下来。

      indexed:表示 trace 数据被“索引”。索引是一个搜索和查询机制。在 Datadog 中把 trace 数据索引一下,就是通过分析其内容,提取关键信息建立起可搜索和查找的结构。这样可以方便后续的查询和过滤。

      trace:就是一条完整的分布式追踪数据。从一个用户请求开始,记录了整个调用链中所有服务组件的执行信息。

      所以 ingested 和 indexed 描述的是一个 trace 数据被采集和处理的不同阶段,ingested 表示已经被系统采集,indexed 表示被进一步分析处理好支持搜索和查询。这样用户就可以方便地在 Trace Explorer 中查看和分析这些 trace 数据了。

    2. Trace

      trace 在分布式链路跟踪(Distributed Tracing)的概念中有特定的含义:

      trace 指的是一整个分布式系统处理一个请求所经过的代码路径。从接收用户请求开始,该请求可能被转发给不同的服务,中间涉及多个组件的处理,trace 就是整个这条调用链的路径。

      具体来说,一个 trace 包括:

      1. 一个唯一的 trace ID 标识这整个调用链

      2. 多个 span(基本工作单元) ,每个 span 表示调用链中一个工作单元的执行,如服务的处理函数、数据库的读写等。每个 span 通过同一个 trace ID 关联起来。

      3. 每个 span 都有自己的操作名称、开始时间和持续时间等信息。

      4. spans 之间有父子关系,反映了调用链中的逻辑流转。

      所以,trace 在分布式跟踪系统中,作为一个关键概念,用于描述一个端到端的分布式调用过程,并有明确的数据模型与之对应。分析 trace 数据可以还原分布式处理的整个流程,帮助定位系统性能和故障。

      Datadog 的 Trace Explorer 通过收集和可视化 trace 数据,来达到监控和优化复杂分布式系统的目的。

  6. Sep 2023
    1. ship

      在软件开发和敏捷项目管理的上下文中,"ship" 通常指的是将软件或项目的特定版本或功能部署、交付给最终用户或客户,使其可以使用。在给定的句子中,"ship" 表示你的目标是开发并交付一些工作或功能,以便用户能够使用它。这意味着你计划开发一组用户故事,并将它们推向生产环境,以便用户能够受益于它们。"ship" 在这里强调了项目管理中的最终目标,即将功能引入实际使用环境中,而不仅仅是开发或构建它们。这是一个常见的敏捷开发原则,强调将价值快速交付给客户。

  7. Aug 2023
  8. Jun 2023
    1. Out-of-stock threshold

      当商家在某些情况下选择设置 "Out-of-stock threshold" 时,可能考虑以下因素:

      1. 销售策略和需求管理:商家可能有特定的销售策略,例如限量销售、限时促销等。在这种情况下,商家可能希望在库存接近耗尽时,提前将商品标记为无货状态,以控制销售数量,并为顾客创造一种稀缺感。

      2. 供应链稳定性:尽管技术团队解决了超卖问题,但供应链仍然可能面临一些不确定性和延迟。商家可能希望在库存降到一定阈值以下时,标记商品为无货状态,以留出一些余量来应对供应链延迟或不稳定的情况。

      3. 顾客满意度和购物体验:商家可能希望为顾客提供更好的购物体验。当库存接近耗尽时,将商品标记为无货状态可以让顾客更明确地知道商品的可用性,避免他们下订单后发现无法及时购买到商品的情况。这有助于避免顾客的不满和失望,提升顾客满意度。

      举个例子来说,假设某家电商在推出限量商品时,它的库存管理系统已经解决了超卖问题。然而,为了营造一种稀缺感并控制销售数量,商家可能选择在库存降到一定阈值以下时,将商品标记为无货状态。这样,顾客在浏览商品时能够明确看到商品的可用性,并知道剩余数量有限,从而激发他们更快地下单。

      总之,商家在设置 "Out-of-stock threshold" 时会考虑多个因素,包括销售策略、供应链控制和顾客满意度等。具体的情况会根据每个商家的业务模式、产品类型和销售策略而有所不同。

    2. Back orders

      当产品缺货时,商家可以选择使用 "back order"(预订)的方式来处理订单。"Back order" 是指商家允许顾客继续下订单并支付,即使产品当前缺货,但商家承诺将在以后的某个时间补货并履行订单。

      以下是 back order 的一些关键点和作用:

      1. 订单接受和支付:使用 back order 的方式,顾客可以在产品缺货时继续下订单并进行支付。这样可以确保商家收到订单,并在补货后尽快履行订单。

      2. 延迟交付:由于产品缺货,商家无法立即交付订单。当商家补货到货后,他们会尽快将产品发送给顾客,并完成订单交付。

      3. 顾客沟通和透明度:商家使用 back order 时,通常会向顾客提供相应的信息和透明度。他们会告知顾客产品的缺货状态以及预计补货时间,以便顾客做出相应的决策。

      使用 back order 的优点包括:

      • 销售机会:商家可以继续接受订单并保留销售机会,即使产品暂时缺货。这可以防止顾客转向竞争对手,并确保商家在补货后仍能满足需求。

      • 顾客满意度:通过允许顾客下 back order,商家传递了对顾客的关注和承诺。顾客可以选择等待产品补货,而不必寻找其他替代品或购买渠道。

      • 库存管理:使用 back order 的方式,商家可以更好地控制库存和需求之间的平衡。他们可以根据顾客下的 back order 数量,调整补货量和补货时间,以满足市场需求。

      需要注意的是,使用 back order 也存在一些潜在的缺点和挑战。例如,可能会出现补货延迟或无法补货的情况,这可能导致顾客的不满和订单取消。此外,商家需要确保及时沟通并更新顾客关于补货时间和订单状态的信息,以保持透明度和顾客满意度。

      总而言之,back order 是一种商家处理缺货情况的方式,允许顾客下订单并支付,商家承诺在补货后履行订单。它提供了销售机会和顾客满意度,并帮助商家更好地管理库存和需求之间的平衡。

  9. Oct 2022
    1. However, by design, A/B testing delays rendering to figure out which experiment needs to be active. JavaScript is often used to check if any of your users belong to an A/B test experiment and then enable the correct variant. This pattern can lead to 100% of your users being sent down large, costly script even if they don’t belong to the sample receiving the experiment.A good alternative in this case is to send A/B testing scripts for only a subset of your user base (e.g 10% vs 100%), ideally attempting to decide whether they belong in a test sample on the server-side. This improves the loading experience for the majority of users while still making split-testing possible.

      如果真的无法避免 我们也可以进行抽样

    1. 额外知识:状态机复制状态机 有一个特性:任何初始状态一样的状态机,如果执行的命令序列一样,则最终达到的状态也一样。如果将此特性应用在多参与者进行协商共识上,可以理解为系统中存在多个具有完全相同的状态机(参与者),这些状态机能最终保持一致的关键就是起始状态完全一致和执行命令序列完全一致。

      状态机