虎哥这网站现在要怎么看问题列表?

ice10009/23/2020, 12:39:58 PM

如题。

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

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

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

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

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

@Nicekingwei 你知道吗?

keyboard_arrow_down
我是如何解决 Angular 上用 MathJax 的一些问题的

Colliot12/14/2017, 5:20:31 AM

话说我本来是倾向于 KaTeX 的,因为我感觉他很快,而且 MathJax 似乎很难配。但是大家表示对缺少功能的 KaTeX 并无好感,给我提供了一些钻研 MathJax 的动力。 其实也不算钻研,因为实际上 MathJax 很简单,调用 MathJax.Hub.Queue(['Typeset', MathJax.Hub, this.element.nativeElement]); 就可以渲染一个元素(这个 this.element.nativeElement 是从 Angular 中调用它 DOM 的语法),这个 .Queue 实际上是 MathJax 自己实现的回调格式,语法非常清奇,参数个数不定,每个都是数组,代表一个回调,顺序执行。比如这个 ['Typeset', MathJax.Hub, this.element.nativeElement],第一个元素是方法名,第二个元素是 this,之后的元素都是参数…… 我们可以看到这个就相当于执行 MathJax.Hub.Typeset(this.element.nativeElement),那为啥不执行这个?因为这方法是同步的,会导致页面十分卡。于是 MathJax 就自己封装了一个异步队列(它的 API 可能几百年没改了) 我们说回 Angular。因为要用 markdown,我的思路是用 marked 封装一个 directive。那么我们就应该在 marked 渲染完成之后用 MathJax 去 Typeset 这个组件。但真的这样做了,却产生了奇妙的效果——切换页面之后,要等将近一分钟才开始渲染。我在它的队列里放了几个 log,发现每个元素都被 queue 了 4 次,几十个元素,难怪要一分钟才开始渲染下一页的内容,即使大部分 markdown 里面根本没有数学。 这时候我开始灰心了,这个问题就没有解决办法了吗?绝望之时,我想到能不能直接 Typeset document,结果是可以的,而且十分快。所以渲染并不慢,可能是渲染的初始化过程比较慢。那么这时候方案就出来了,我们可以尽量减少渲染次数,同时只渲染 document。只要这个渲染还在进行,那么有再多的元素 queue 上来,我们也只当作 queue 了一次。 于是我就写了这么个 service: @Injectable() xport class MathjaxService {

public isQueued = false; public isRunning = false; window: any;

constructor(@Inject(PLATFORM_ID) private platformId: Object) { if (isPlatformBrowser(this.platformId)) { this.window = window as any; } }

finishRunning() { this.isRunning = false; if (this.isQueued) { this.queueChange(); } }

queueChange() { if (this.isRunning) { this.isQueued = true; } else { this.isQueued = false; this.isRunning = true; if (isPlatformBrowser(this.platformId)) { if (this.window.MathJax) { this.window.MathJax.Hub.Config({ messageStyle: 'none', tex2jax: { // preview: 'none', inlineMath: [['', '']], processEscapes: true } }); this.window.MathJax.Hub.Queue(['log', console, 'start'], ['Typeset', this.window.MathJax.Hub, document], ['log', console, 'end'], ['finishRunning', this]); } } else { this.finishRunning(); } } } 事实证明,它能圆满完成任务,它也就是现在运行在这个网站上的代码。

keyboard_arrow_down
Rust 相比 C++ 有什么决定性的好处吗?

Colliot3/18/2020, 5:28:39 AM

我们为什么要使用 Rust 而不是 C++?

keyboard_arrow_down
有多个 inline 子元素的容器的高度是如何决定的?

Colliot3/25/2020, 11:35:10 AM

为什么计算出来的高度会比最高的 inline 子元素都高?

keyboard_arrow_down
新版的 WebStorm/JetBrains 系 IDE 的 zsh 历史,跟单独打开 terminal 的历史不同步

Colliot3/23/2020, 2:47:20 AM

这是为什么呢?似乎形成了两个独立的系统 是因为 macOS Catalina 新引入的更严格的权限管理机制导致的吗?

keyboard_arrow_down
为什么需要 reduced homology?

Colliot3/23/2020, 10:24:50 AM

reduce homology 解决了什么问题?当时怎么知道它应该是这样的,从而可以解决那些问题的?

keyboard_arrow_down
如何接入 GitHub 登陆认证?

Colliot3/20/2020, 5:45:16 AM

keyboard_arrow_down

Latest Replies

Colliot replied to 我是如何解决 Angular 上用 MathJax 的一些问题的

是的,所以我们需要写一个结合了数学和 markdown 的 parser。

hereIsMyNickname replied to Rust 相比 C++ 有什么决定性的好处吗?

Rust能给世界带来love,you never have loved enough

Colliot replied to 新版的 WebStorm/JetBrains 系 IDE 的 zsh 历史,跟单独打开 terminal 的历史不同步

根据 zsh history not preserved in Terminal,似乎是一项叫 Shell integration 的设置导致了 HISTFILE 这个环境变量被改成了 IDE 自己的路径(在这个 .app 包里),而这个环境变量正是指定了 zsh 读取历史记录的地方。 里面说了一个绕过的方法是,手动在 .zshrc 里指定 HISTFILE 这个环境变量为默认的 ~/.zsh_history。

Colliot replied to 如何接入 GitHub 登陆认证?

需要我自己的服务端做什么吗?

Colliot replied to 网站搜索的最佳解决方案是什么?

Elasticsearch 的主要问题是不是太吃内存了,不适合单机部署,只能组内网?

hardfist replied to Git 如何 pull --force?

git fetch --all && git reset --hard origin/xxx

hardfist replied to lerna 和 yarn workspace 有什么关系?

yarn的workspace好像是脱胎于lerna,后来lerna又反过来支持了yarn workspace