一个重大的消息——本站的 Angular 版本不再继续开发,将会用 React 「重新」开发

Colliot5/12/2018, 8:08:01 AM

因为我实在无法忍受使用 Angular 这当孙子一般的体验了。

keyboard_arrow_down
阿里巴巴数学竞赛选错赛道了

Colliot6/18/2023, 4:03:05 PM

鬼使神差副赛道选了概率与组合……明明应该选分析的,看到题目就后悔了 看来是有种无形的力量想让我学概率。 第一题目测跟停时有关,可惜我不会…… def\R{\mathbb{R}} Suppose B_t is a bidirectional Brownian motion, i.e. (B_t){t\ge 0} and (B{-t})_{t\ge 0} are two independent 1-dimensional standard Brownian motion and B_0 = 0. For t \in \R, write X_t = B_t - |t|. Denote \tau the (almost always) unique time s.t. X_{\tau} = \max_{t\in \R} X_t. Prove that (X_{\tau + t}){t \ge 0} and (X{\tau - t})_{t \ge 0} are of the same distribution.

keyboard_arrow_down
看了 `typegraphql-prisma` 之后被深深地震撼了

Colliot6/21/2023, 1:53:37 AM

所以说 codegen 才是正道吗?看了 typegraphql 的文档之后,感觉我之前自制的 GraphQL/sequelize decorator 系统就是一坨翔。 我设想的方案是写一些 TS def,设计一套 decorator,然后基于这套 decorator 生成 sequelize schema 和 GraphQL schema。这种内存中生成 schema 的缺陷在于有 bug 不好调试,因为你不知道生成出来的是什么东西。此外就是 runtime 生成会带来一些奇怪的循环依赖问题,我花了很多时间和精力处理这些东西,若可以绕过则是极好的。 Codegen 没有这些问题。它的根本优势在于预编译自由得多,可以做各种处理(不像运行时编译只能基于有限的且不可靠的 type metadata 做),而且生成的内容是固定的、可见的,甚至可以(也应该)check in 到 repo 里。这对于大型项目开发无疑是重要的。 而且几年不写前端,现在的方案(指 typegraphql-prisma)已经可以进化到这么好用、这么细粒度了。可以自定义 expose 哪些 field 就不说了,甚至可以细化到某个 method 的权限管理,真是颇有点当年 rails 框架 conventional over configuration 的风范了,只不过这一次更牛,是 type safe 的。 说到这里更不得不佩服 TypeScript 的远见卓识。有 TypeScript 无敌类型系统的加持,这样的方案才得以运行,其他语言则只能望洋兴叹了。

keyboard_arrow_down
系统设计的根本原理是什么?

Colliot6/20/2023, 7:41:31 PM

就像牛顿三定律或者光速不变那样,系统设计存在一个能推导出一切的出发点吗?

keyboard_arrow_down
这次的 Leetcode 周赛 (350) 第四题还挺巧妙的

hugify6/19/2023, 7:59:42 PM

https://leetcode.com/contest/weekly-contest-350/problems/painting-the-walls/ 说白了就是:Given two integer arrays cost and time of size n. Choose m <= n indices M from {0, 1, ..., n-1}, s.t. \sum_{i \in M} \mathrm{time}i + m >= n, while minimizing \sum{i \in M} \mathrm{cost}i. 其中 \sum{i \in M} \mathrm{time}i + m >= n 这个约束,第二项是 m 个 paid painter 的贡献,第一项是在这些 paid painter 工作期间,free painter 可以做的贡献。容易想到它可转化为 \sum{i \in M} (\mathrm{time}_i + 1) >= n,那么把 time 的每个元素 + 1,就化为了原版的「有容量下界限制的背包问题」。

keyboard_arrow_down
为什么不能对 C++ 的语法进行简化?

Colliot9/18/2019, 12:49:35 AM

比如 template<typename T> oid addName(T&& name) { names_.push_back(std::forward<T>(name)); 直接简化成 void <T>addName(T&& name) { names_.push_back(forward(name)); 不好吗?

keyboard_arrow_down
Voevodsky 当年错误的地方是什么?

Colliot12/16/2017, 4:49:32 PM

@Nicekingwei 你知道吗?

keyboard_arrow_down
净土还活着吗zsbd

zjuwyd8/12/2021, 4:29:59 AM

keyboard_arrow_down
偷偷写日记......

Reiko2/2/2021, 6:14:41 PM

keyboard_arrow_down

Latest Replies

ice1000 replied to 一个重大的消息——本站的 Angular 版本不再继续开发,将会用 React 「重新」开发

我们需要看合订本,是吗? https://colliot.org/zh/2018/01/%e7%94%a8-angular-%e5%bc%84%e4%ba%86%e4%b8%80%e4%b8%aa%e8%83%8c%e5%8d%95%e8%af%8d%e7%9a%84%e7%bd%91%e7%ab%99-eliseos-org/ 虎哥名人名言: 整个弄下来的感想就是,Angular 是真的好用,Angular 生态是真的不错,universal 完全按官方走一遍就活了,现在线上运行的版本就是 universal 的,右键查看源码可以看到是渲染好的页面发过来的。angular cli 一路可以 generate 到底,基于 NgModule 的路由懒加载也是开箱即用,不需要任何配置,非常美妙。

fjcfff replied to 阿里巴巴数学竞赛选错赛道了

给定标准布朗运动 Bt 假设 s 是个停时,那么 B′t={Bt2Bs−Btif t≤sif t>s 是标准布朗运动。

Colliot replied to 阿里巴巴数学竞赛选错赛道了

弱反射原理 mathbb{P}{M_t ge a} = 2mathbb{P}{B_t ge a},其中 M_t = sup_{sin[0,t]}B_s 是布朗运动 B_t 在 [0,t] 内达到的最大值。 它可以写作mathbb{P}{B_t ge a}=dfrac{1}{2}mathbb{P}{M_t ge a},这个在直观上很容易理解,因为 B_t ge a 必然有 M_t ge a,而 M_t 第一次到达 a 之后,后续任何点大于或小于 a 的概率都是 1/2。 强反射原理 给定标准布朗运动 B_t,假设 s 是个停时,那么

begin{equation} B'_t= begin{cases} B_t & text{if } t le s 2B_s-B_t & text{if } t > s end{cases} end{equation}

仍是标准布朗运动。 这实际上就是「第一次到达 a 之后,后续任何点大于或小于 a 的概率都是 1/2」的严格表述。所以后者可以推出前者。

hugify replied to 阿里巴巴数学竞赛选错赛道了

感觉跟 Brownian motion 或者说 Wiener process 的 reflection principle 有关?

hugify replied to 用类型系统描述实数的精髓是什么?

找到了相关文章 Formalising Real Numbers in Homotopy Type Theory,让我来看一看。

hugify replied to 用类型系统描述实数的精髓是什么?

怎么用类型系统表述戴德金分割呢?

ice1000 replied to 用类型系统描述实数的精髓是什么?

我现在懂了,就是戴德金分割

ice1000 replied to 为什么不能对 C++ 的语法进行简化?

不成立。现在的语法也有这样的歧义