dc

unicode in JS

写的是unicode in JS,实际in js的部分不多,更多的是unicode原理。 两个重要概念code point:在Unicode空间中,一个具体的字符所在位置code unit:用来编码一个code point的数量,例如UTF8,使用1-4个code unit来编码一个Unicode code point。Unicode now现在的Unicode共占用21个二进制位,它们被分割成了17个plane,每个plane占用16个二进制位。举例几个plane: plane 0: 0x0000-0xFFFF,Base Multilingual Plane (BMP) plane 1: Supplementary

number in Javascript

最近在看《Impatient JS》,熟悉的地方快快略过,看到了JS中的数字,现在来看有: numberbigintnumbernumber很神奇,可以是整数,也可以是浮点数,所以number的实现,其实是浮点数,而且是double类型的浮点数,范围是64个二进制位,符合IEEE 754……以前在看到float的时候基本都会带出来IEEE 754这个标准。这里面具体讲了什么我完全没看过,但今天在《impatient JS》中,简单了解到了一些。 说是64位,实际可用来表示数字的有53位,这53位中还有1位被用作表示符号(正负号);除了53位,剩下的11位被用作了指数部分(科学计数法),范围-1023~1024。 bigintBigint

如何触发Chrome的ERR_HTTP2_FRAME_SIZE_ERROR

本文的最终目的是构造一个支持HTTP2的webserver, 当使用Chrome访问的时候触发ERR_HTTP2_FRAME_SIZE_ERROR,这比单纯写“对”代码更复杂。 日常使用的工具基本都是高层的语言、库,目的是为了简化开发者的使用体验,这些语言、库经过长时间验证,会自动处理各种异常,尽量避免让开发者出错。但这可能会让我们天然的对某些知识了解不够深入,例如写一个RST攻击Demo所需要的网络知识,就比单纯的能写基于socket的C/S通信要更深入、能写一个让JVM崩溃的Java代码就比单纯会写Java要了解的东西更多等等。 ERR_HTTP2_FRAME_SIZE_ERROR这个错误可以从Chrome的dev tools中的Network或者Console中看到,从名字上可以看出是和HTTP2协议有关的错误,Frame是HTTP2中专属的概念,是Http2通信中的最小单位。 Chrome有一个记录更详细日志的机制:chrome://net-export/

pendo, ga脚本的部分原理和this

这篇文章有2个话题——数据收集技术和this. 数据收集技术主要是解析pendo/ga脚本的部分原理;this,就是javascript中的this, 我感觉每年都会从javascript weekly等newsletter中看到几篇文章讲解this, 而且它们都称作是 the last article about javascript this.

Setup fcitx5 with pinyin

Install fcitx5 group: fcitx5-im sudo pacman -S fcitx5-imAppend /etc/environment with following: GTK_IM_MODULE=fcitx QT_IM_MODULE=fcitx XMODIFIERS=@im=fcitxLogout then Login