Life Lab

Life Lab

Thoughts, stories and ideas.

树莓派HiFi
raspberrypi

树莓派HiFi

Updates UPS 工作正常,之前以为不能兼容可能是因为UPS用顶针方式集成树莓派和DAC需要用到的GPIO冲突,和卖家交流了一番觉得可以试试,结果充电后就正常了,电量不足时UPS发出了蜂鸣音。图片已经更新成了带UPS的样子。 Nintendo Switch蓝牙音频 一个通宵捣鼓switch, 因为switch用蓝牙会很方便,不然还得换成2和1的线接到音箱和switch上。为什么需要花一个通宵?大概是某些bug在一起很难弄吧。在我刚刚发文放弃switch的时候,鬼使神差般的尝试了一种办法,竟然可以让switch配对上——就是关闭蓝牙,再打开,然后紧接着配对。在stackoverflow中看到有人提到3分钟问题,文档这样说: Once the discovery stops, devices neither connected to or paired will be automatically removed by bluetoothd within three minutes. 总之我这样做了之后,就能在agent上收到消息是否同意设备加入的提醒了,之前一直遇到的
4 min read
升级了J4125作为主路由
openwrt

升级了J4125作为主路由

双12没忍得住,继续买买买了一堆用不上的网络设备: * 猫棒 * 2.5G光电收发器 * J4125路由器 其实目的也就是突破一下路由器端的千兆速率。原本的R2S能让测速勉强跑到900+,理论速度945没见过,而换了J4125记得最高见过960mbps。在路由器上用speedtest跑,见到了1200+,果然联通千兆给的很足。 猫棒没啥特殊要说明的,买的是ODI(不知道什么牌子)全新,支持GPON和EPON,因为联通是GPON,没机会尝试EPON了,据说是自动识别,但EPON速度据说到楼就是1Gbps,所以也快不到哪去。我这里的联通,只需要输入LOID就可以认证了,不需要其他设置了。 光电收发器有点说头:在正面有个不太容易使用的跳线开关,我拿到后以为是做工问题,很不容易使用,还打开了收发器确认是不是可以向外推一推,结果现在来看,像是故意设计成这样,上面的文字描述也不清楚,我就在拿到后拨到了ON端,以为这样才能用,果然也是能用,只是。。。拨到ON端意思是限制电口速率为1Gbps!现在我也明白了上面标的“1”的含义。这是我在研究了半天J4125和openwrt系统、网卡驱动后
4 min read

Bind multiple ips to a single NIC

我购买DMIT服务的时候另外买了一个网络优化过的IP地址,这样我的VPS就有了2个IP地址,之前问过客服哪个是优化过的地址,结果是那个默认没绑定的IP. 当时修改了netplan的配置,换上了新地址。今天想着是不是可以让两个地址都工作呢,会不会需要再有一个NIC才能用,因为两个IP分别是两个网络,有不同的网关。 搜了下,看到netplan给了多个ip在同一个网卡上的例子,感觉应该可行:https://netplan.io/examples 最终就是按照例子那样,添加上了2个IP, 给了不同的metric。虽然这样,但也许没啥作用,如果我的VPS是一台路由器的话,这样就有了2个下一跳的出口,根据metric可以控制走哪一个出口,比如默认走metric小的那个。但我这是个代理服务器,流量到这里就结束了。 总之,两个IP都可以访问了,另外发现不是网络优化过的IP,延迟更低呢。。。
1 min read

最近耳机购物记录

很久不更,各种不更,活在自己的圈子里。本来今天在外面很累,很热,饭也没食欲,回来后把作业处理完,突然想记录一下最近买耳机的记录。 上一个耳机是小米的半入耳式耳机,可能现在官方买不到了,能买到的半入耳就是黑鲨游戏耳机了。为啥非得是半入耳?入耳式压迫感太强,塞住耳朵很不舒服,也可能是苹果那款半入耳太习惯了吧。不过小米那款戴坏了,终于有这种把东西用坏再买新的的时候了。有时候很多东西,就想买,但不一定用得够多,慢慢也许就被时间淘汰了,于是又在物色下一个。 最近买了铁三角的半入耳,C200IS,有点挂不住,随后退货了,这个话有点长了。一开始打算买一款可以替换小米的耳机,搜了下京东,看到了JBL监听耳机,就想买个监听吧,我又不听歌什么的,监听更适合我啊,但监听耳机无一例外不带麦克风,我是强烈需要麦克风的,于是就考虑买个专业麦克风配监听耳机吧。 想到了很多年前想买的铁三角监听耳机,好像那时候还是M50X旗舰,现在都有M70X了。想着买了铁三角耳机,再买个对应的麦克风吧,于是就看到了ATR2500X,看着支架什么的很帅,加了购物车,又对比了其他麦克风,看了些哔哩哔哩测评,总之那几天花了很多时间。
4 min read
javascript

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 Multilingual Plane (SMP) plane 2: Supplementary Ideographic Plane (SIP) UTF-x UTF-32,使用32个二进制位表示unicode code point,
1 min read
javascript

number in Javascript

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

如何触发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/,记录下来的JSON文件可以通过这里查看 HTTP2 继续深入这个错误就不得不了解一些HTTP2的基础知识
11 min read