标题太长不太能完全显示耶

Maphilius12/14/2017, 12:10:04 PM

这可以单方面发帖很不错,有种贴吧的感觉。

keyboard_arrow_down
爱情是什么?标题为啥至少10个字?

Nicekingwei12/14/2017, 9:00:48 PM

爱情是什么?你们体验过爱情吗?单方面的喜欢算爱情吗?爱情的本质,是反馈调节吗?

keyboard_arrow_down
意见反馈发在哪 /没有专门的地方 委屈巴巴

Amethyts12/15/2017, 8:16:23 AM

就是文章阅读时,单词标红之后鼠标移动上去不是会有单词释义吗。1.好像很多单词没有释义。2.由于单词释义的小方框出现在鼠标(单词)右下方,在最下面的单词释义就会被浏览器边框挡住看不到啦~

keyboard_arrow_down
听说站长想让我帮忙推广社区?

ice100012/14/2017, 5:14:45 AM

听说站长想让我帮忙推广社区? 把它写在我博客的about页面好了。

keyboard_arrow_down
你们觉得 Rust 是如何解决 C++ 的哪些问题的?

Colliot12/15/2017, 9:27:56 AM

你们能得到 Rust 的精髓吗?

keyboard_arrow_down
测试 commutative diagram

Colliot12/16/2017, 4:24:01 AM

\require{AMScd} \begin{CD} (X) @>{ch}>> H(X;\mathbb Q);\ VVV @VVV \ (Y) @>{ch}>> H(Y;\mathbb Q); end{CD} \begin{CD} A @>>> B @>{\text{very long label}}>> C \ @. @AAA @| \ D @= E @<<< F end{CD}

keyboard_arrow_down
同构渲染遇到的一些问题和解决方案

Colliot12/16/2017, 1:48:16 AM

从最初部署开始就用了 Angular Universal 来做同构渲染,不过效果是渐进的。最初的时候,连服务器端语言切换都没有实现,就是说,无论你的 URL 是 /en 还是 /zh 打头的,渲染出来的 HTML 都是英文。目前我还不知道原因是啥,不过把语言从普通的 service 的成员,用 angular-redux 改造为 observable 之后,语言的问题暂时解决了。(其实还有部分页面有问题) 这种状态维持了很久,直到今天早上进行了第二阶段改造。这次把 API 调用也挪到服务器上了。其实本来就应该是在服务器上的,不过一直没有配 CORS,导致每次都调用失败。改造当中还有一个副产品,就是发现了跨域请求的 OPTIONS 会阻塞真正的请求,相当于延迟 * 2 了,延迟一大体验就十分糟糕,所以我把 API 代理到同一域名了。 第三阶段就是继续优化。首屏可以在服务器渲染全部内容之后,又有一个新的问题,就是闪烁问题。它的原因是,在服务器填充了内容,在本地页面初始化的时候,又重新去加载 API,这时候就进入了「加载中」的状态,加载完之后又会变回原来的样子,这就是「闪烁」。 理想中的思路很简单,要是能把服务器的状态延续到桌面端就好了。我的加载是订阅的路由变化,所以想像中如果路由状态能延续,就可以避免重新加载了。我在这里查到有个配置叫 RouterModule.forRoot(routes, {initialNavigation: 'enabled'}),可以把第一次加载的路径直接作为 app 的路径,而不是从 baseUrl 跳转过来的。可惜用了之后我的加载事件还是被触发了,原因正在研究中。 所以我又退而求其次,能不能转移一些别的状态,比如 apollo client 的缓存。Angular 专门有个叫 TransferState 的模块做这个,简单的可以参考这篇。利用 TransferState,我们可以把 apollo client 的缓存、redux 的 store 都序列化之后再在本地回复,理想情况下就不会闪烁了。但我做了之后还是闪。 这是为什么呢?因为我当时针对 apollo client 的 refetch 有时候不能正常工作的问题,自己造了一套缓存失效标记的系统——简而言之就是给每个请求加上一个叫 cacheKey 的参数,如果 cacheKey 不同,apollo client 自然就不缓存了。再用一个唯一的键去识别一个请求,如果它需要缓存失效,就把这个键标记为 true,每次请求的时候去找自己对应的键的值,看是不是失效了,失效了就重新生成一个随机的 cacheKey,没失效就用原来存起来的 cacheKey。而我这个缓存系统同样需要状态转移。等我转移好之后,确实就不闪烁了。 转移的时候还遇到一个问题。我的系统本来是 Map 而不是普通 object,结果遇到了Map 序列化的问题。折腾了半天 Map 的序列化搞不定(因为我是多层的,而且为了类型安全,用了 tagged union,导致有 Map 套 object 套 Map),最终还是暴力把 Map 迁移到 object 了(暴力在为了减少代码更改,在 Object.prototype 上定义一些类似 get, set 的方法……) 现在工作是正常了,但还有一个隐患——生成的 HTML 太大了。这些 store 都以 json 的形式保存在了 HTML 中,本来可能接近 100 KB 的页面,暴涨到 250 KB 左右。现在我正在寻求这个问题的解决方案。可能用 GraphQL 的时候要克制一点了,不要贪图方便,而加入无关的 field。

keyboard_arrow_down
如何把 ES6 Map 序列化、反序列化?

Colliot12/15/2017, 11:35:28 PM

没有想像的那么简单。感觉可以从理论的角度分析一番……

keyboard_arrow_down
我感觉苹果系都对单页应用不友好……

Colliot12/14/2017, 10:32:23 PM

用苹果的人(包括我)习惯滑动后退,但这样似乎无法触发 SPA 式的后退,页面还是被重新加载了一遍,真是太遗憾了…… 不知道有没有什么解决方法。

keyboard_arrow_down
我终于找到 API 很慢的原因了……

Colliot12/15/2017, 7:53:24 PM

我在这里说到「这个 API 很卡」,现在我终于知道本质原因了,猜猜是因为啥? 跨域 QAQ 我一开始以为是服务器质量的问题,后来查了发现确实质量下降了,本来有 CN2 的现在没了,延迟从 150ms 上升到 250ms。搬迁到另一个(目前还是)CN2 的机房之后,延迟又回到了 150ms,然而还是感觉很慢。 看着调试工具里一堆 http 请求的时候,我终于想明白了,因为跨域会先发一个 OPTIONS 请求,这个请求虽然不大,但会阻塞住第二次真正的请求……这么一来延迟其实是 300ms,难怪这么慢。 于是我把 api 代理到了同一个域名下,现在看来效果应该好多了。

keyboard_arrow_down

Latest Replies

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

如果允许 void <T>addName(T&& name) { names_.push_back(forward(name)); 就应该允许 void <T>addName(T&& /_unnamed_/) { 而形如A < B > C (D, E)的代码可能产生很大的歧义

Colliot replied to 随机过程应该怎么学?

一个有限集合的子集,就是从原集合中选取一些元素构成的。对于每一个元素,无非是选或不选两种可能。对于 n 个元素,就是 2^n 种可能,每种可能对应一个子集,所以一共有 2^n 种。

Colliot replied to 随机过程应该怎么学?

A subset B 真的成立吗?为什么会觉得成立呢?A 的元素 1 也在 B 中吗?

Colliot replied to 随机过程应该怎么学?

我感觉需要一点基本常识,比如 对无限集合的感觉 对不可数无限集合的感觉 当我们在谈论一个被定义出来的对象的时候,我们并不一定是要完全描绘出这个对象。我们可能只是谈论关于这个对象的某些命题,比如当我们在谈论集合 A 的时候: 我们可能只想知道,对于给定的 x,是否有 x in A——也许我们并不想,也不能枚举出 A d 所有元素。 我们可能想知道,对于给定的 x in A, y in A,对 x, y 进行某种操作之后得到的结果 z 是否还属于 A。 对满足某一性质的「最小」集合的存在性的感知。理论上这依赖 Zorn 引理,但直觉上这并不是很难接受的。 只有熟稔了这些常识,才可以知道 sigma-代数是什么,或者,更本质地,就知道了我们为什么要定义 sigma-代数、 sigma-代数的定义为什么会是这样的。 尽管现代数学的定义粗看起来艰涩而反直觉,但它背后其实有着跟其他易懂的概念一样精妙的直觉——我们上面提到的这些常识,就是这些「直觉」和艰涩的「公理化定义」互相转换的关键。

Gagaxi replied to 随机过程应该怎么学?

1.为为什么?qaq .P(D)={∅,{1},{2},{1,2}} .2^5 个

Gagaxi replied to 随机过程应该怎么学?

1.A⊂C 不成立 .A⊂B 成立 .A的子集:∅,{1},{2},{3},{1,2},{2,3},{1,3},{1,2,3}

Colliot replied to 随机过程应该怎么学?

也许我们需要先来回顾一些集合论的概念 什么是一个集合呢?也许我们不需要了解得非常深刻。我们只需要确保自己能看到诸如 A={1, 2, 3} 或是 B={ a, b, c, d, e } 的简单记号——它们都是集合,A 有三个「元素」或者叫「成员」,B 有五个。 同时我们还需要看懂, 1 in A 这样的记号。这表示 1 「属于」 A。这应当都是不超过高中水平的直觉。 应当相信,可以有集合的集合,比如 C = {A, B } 就是集合的集合。展开 A, B,也可以把 C 写作为 { {1, 2, 3}, { a, b, c, d, e } }。 除了「属于」记号 in,常用的还有「子集」记号 subset,比如对 D = {1, 2} 就有 D subset A 。我们还没有解释这个记号,但你应当已经猜到了—— D 的每一个元素同时也在 A 中,所以 D 是 A 的「子集」。 下面请回答几个问题: A subset C 成立吗?为什么? A subset B 成立吗?为什么? A 有哪些「子集」?(非必答) 对于集合 A,我们可以枚举它的所有子集: 0 个元素的,只有一个,是所谓「空集」,通常记作 emptyset,它是唯一的,并且是所有集合的子集 1 个元素的,有三个——{1}, {2}, {3} 2 个元素的,有三个——{1, 2}, {2, 3}, {1, 3} 3 个元素的,有一个——{1, 2, 3} 以它们为元素,我们构成一个集合 mathcal{P}(A) = { emptyset, {1}, {2}, {3}, {1, 2}, {2, 3}, {1, 3}, {1, 2, 3} },这称为 A 的幂集(power set)。 为什么叫它幂集呢?注意到 A 有三个元素,而它的幂集有八个元素,8 = 2 ^ 3——幂集的元素个数,正好是以原集合元素个数为指数的 2 的幂。这是有原因的,你能想明白吗? 请回答以下问题: 为什么幂集的元素个数满足这样的规律呢? 集合 D 的幂集是什么?写出它的具体表示。 集合 B 的幂集有多少个元素?

Gagaxi replied to 随机过程应该怎么学?

那么虎老师,什么是 σ-algebra, 什么是Borel σ-algebra。

Colliot replied to 随机过程应该怎么学?

我们需要一些基本的习题,来熟悉诸如 sigma-algebra 这样的基本概念。 我们甚至要复习概率论的基础概念,比如随机变量/随机元。

Colliot replied to 如何让人入门理解抽象的数学语言?

这是一条被编辑掉的评论。

Home

Babel

Knowledge

Epistemology

Settings