HiDPI on XFCE4, Chromebook

由于众所不知的原因 laekov 在一处办公环境使用自己的 chromebook 进行办公. 之前的博客提到 laekov 的 chromebook 具有一块 3200x1800 的高分(瞎眼)屏. 而 laekov 在办公室开心地借来了一块和实验室那块看起来一样的 34 寸的带鱼屏, 然而插上之后才发现它的分辨率竟然是 2560x1080, 完全被 13 寸的笔记本屏幕给包含了. 本着屏幕 dpi 不重要, 面积才是王道的思路, laekov 十分容易地 disable 了笔记本的屏幕, 单独使用一整块 34 寸屏幕来进行工作. laekov 在经历了 chromeos 的 ro rootfs 各种无语之后, 终于决心使用 crouton 的 xfce 环境作为自己的主力工作环境, 并配上了 i3lock 锁屏和熟悉的 urxvt. 然后问题来了: laekov 要抱着 chromebook 去开会! 当 laekov 拔掉 type-c dock, 看向 13 寸小屏幕的时候, 多年前在 laekov 的 (已经死掉的) mbp 上装 kde 之后出现的神奇一幕又出现了! 所有东西变得奇小无比, 需要配合放大镜才能分辨出屏幕上的字是 1 还是 l....

February 3, 2021 · 1 min · laekov

Chrome book 初体验

不久之前听说可能要出去背锅, 然而自从 macbook 死亡之后就一直在用实验室的台式机/宿舍买的新的游戏本. 都不太适合背着去干活, 于是考虑买一台轻薄的工作笔记本. 看了一些 ryzen 4 代的轻薄本, 比如 x13, 战x, 灵耀14, 什么的. 然而因为贵所以买不起没买. 后来某天逛闲鱼的时候发现了 chromebook 很便宜, 于是一番研究之后买了个二手 hp g1 chromebook, 1k 块不到. 转身围观一下这台本子,深灰色金属壳还挺高端。最厚的地方只有 12mm,几乎满足了我对薄本的所有想象,但是拿在手里挺沉,可能是压扁了的重型本。 cpu 是六代 m5 skx, 四个物理核默认只开了两个,8 GB mem + 32 GB ssd, 多开几个 chrome 窗口应该都挺好的。最惊人的是居配了一块 3200x1800 的屏幕,观感很不错。 然而还是有一些问题的。屏幕边框宽到跑马车,毕竟是便宜本,键盘键程短到手指疼,只能轻轻打字。触摸板比较小,而且可能由于前任主人用得比较多,所以油油的,而且有点松。考虑之后买个触摸板膜。接口方面带了一个 usb a 两个 usb c包括充电,还有耳机口。考虑到现在 typec 的本子到处飞,转接头很普遍,这也还ok。这个 cpu 最高支持到 4k 屏幕,想要外接显示器也没有问题,赞。 软件方面自然是 chrome os,费了一番力来搞开开发者模式用 crounton 装了一个 debian, 和搞上 play store. 比较无语的是 play store 并不用 chrome os 里面设置的 socks5 代理,于是只好临时搞了一个二层的有隧道的网关,才成功搞开了 play store, 然后立即在里面下了一个 android 版本的 ss, 然后用它就能给 android app 供应网络了。...

January 7, 2021 · 1 min · laekov

在 ThinRouter 上开发网络(原理课)硬件测试仪软件部分的记录和一些经验

这个事情的 motivation 是被 harry 拉去上了一门叫 “高等计算机网络“ 的课, 而 harry 和 gyc 是本科生网络原理课的助教, 于是大作业的内容就是抱着 harry 的大腿给小朋友们做的硬件实验做一个测试平台. (harry: 你的老本行, 造 oj) 因为 laekov 的硬件水平四舍五入等于没有 (gg) 所以负责写前端. VUE + ChartJS = gg laekov 多年没写过前端了, 没想到 angular 都已经 gg 了. 在 “尽量轻量化, 以后烧进 flash” 的指导思想 (还有 harry 的 push) 下选择了 vue. 功能里有一个重要的需求是画一张同学们的路由器带宽-帧大小的曲线. 要是有 matplotlib 就好了, 然而既然是在写 web 就只能搞 js 的轮子了. 然而 chartjs 需要给它一个生的 canvas DOM object. 但是 vue 的制造者似乎就是非常不喜欢开发者拿生的 DOM, 甚至把 document 对象都给屏蔽了. (?...

December 22, 2020 · 3 min · laekov

如何修改 htop 中一列的宽度

最近在某个公用集群上手工编译了 htop 给小伙伴们用. 然后发现大家的用户名都是学号, htop 并不能把用户名显示全, 于是追责麻烦. 然而 htop 似乎并不支持改列宽, 于是就自己去看代码改列宽了. 以下基于 htop 的 2.2.0 release 版本. 表项的宽度在 Process.c 里的 474 行. 这玩意是 hard coded 的 sprintf 的位宽. 表头在 linux/LinuxProcess.c 里的 205 行, 修改方法是在 title="USER " 后面再加几个空格. (hard coding 真是让人崩溃啊) 然后可能会编译的时候说 struct Process has no member isKernelThread. 修的方法是在这个 c 文件的 146 行加括号. 注意不能改 .h 文件, 因为 .h 是在 make 的时候从 c 代码里抽取出来生成的 (什么鬼玩意)

November 30, 2020 · 1 min · laekov

RIO 各种口味品尝 log

这件事情的起因是双 11 的时候买了一箱 18 瓶不同口味的 rio. 然后一直觉得打乱这箱 rio 有点逼死强迫症. 直到今天终于决定开始喝它们. 然后又想到每种口味只有一瓶, 喝完之后就并不能复现实验来 rewind 某一种口味到底怎么样. 于是灵机一动决定写篇 blog 把每种味道都记录一下. 后来又购买了更多新的 rio, 于是持续更新中。 无糖系列 拿到四种口味 (准确说这不属于那 18 瓶) 因为无糖所以都不好喝. 一股不快乐的阿斯巴甜味. 白桃: 海星 葡萄: 比白桃难喝一点 柠檬: 酸 橙子: 酸 有糖普通系列 这个系列通常是纯色背景,度数在 3 度左右。 白桃接骨木花: 虽然是赠品但是似乎还不错 是甜的 玫瑰荔枝白兰地: 玫瑰香味+荔枝甜味 没啥酒味 挺好喝 白桃白兰地: (组合数学???) 比较常见的口味. 桃子味浓, 甜! 香槟: 有一点迷惑的水果甜味, 香槟味不是很浓. 但是甜啊! 乐橘乌龙: 闻起来有点橘子的酸酸味, 喝起来倒是偏甜, 比较清爽. 还挺好喝. 百香果伏特加: 果味纯正, 伏特加有一丢丢苦. 菠萝伏特加:菠萝味!超好喝。甜甜的。 芒果伏特加:闻/喝起来是那种没熟的青芒果的味。不太喜欢。 白葡萄味:连酒名都不标了?真的是果味汽水,类似于水晶葡萄。 白桃接骨木花:又一个没有酒名的汽水。花香味还挺好喝的。 黄金奇异果味:汽水,弥猴桃味有点冲。 香草冰淇淋风味:超好喝!!! 香香甜甜的...

November 29, 2020 · 1 min · laekov

时隔六年, 我怎么又在修 fcitx 了

在宿舍买了一台新显示器, 2k. 发现 3337u 和 6400m 都不支持 2k 输出, 于是愉快地买了个 windows 游戏本当前端用. 因为有 rtx 2060 而且想打游戏, 所以只能用 windows 了, 最近又很不喜欢双系统 (因为要重启很麻烦) 于是找到了解决方案: 在 3337u 上开个 vnc server, 在 windows 里连过去. 虽然内网是千兆但是破笔记本迷之降速到了百兆, 于是网络也并不快. 要命的是 super 键会被 windows 吃掉从而无法使用 kde 里面炫酷的窗口搬移特技. 想起了陈年老相好 dwm. 于是又在这台 ideapad 上用上了 dwm, 并愉快地自己修改代码配置了 colorscheme 和各种神奇的热键. 然后用得好好的 fcitx 就跪了. ctrl + 空格打死也加载不出来输入法. 尝试了各种重启重装 fcitx-configure 和删配置文件, 都没用. 一脸茫然. 各种搜索尝试之后发现管用的是在 vnc 的 xstartup 里面加上 export GTK_IM_MODULE="fcitx" export QT_IM_MODULE="fcitx" export XMODIFIERS="@im=fcitx" 然后就能解决问题了....

November 18, 2020 · 1 min · laekov

Pipedream

% Pipedream - Generalized Pipeline Parallelism for DNN Training % Authors from MSR + CMU + Stanford; Presentation & Interpretation by laekov % July 14 DNN Training 的三种并行模式 Data Parallel (DP) 沿 batch 维度进行切分 通信: 同步 weight Model Parallel (MP) 沿 weight 维度进行切分 通信: feature tensor 的求和或者拼装 Pipeline Parallel (PP) Inter-layer partition 通信: 切口处的 feature tensor 及它们的梯度 (在部分模型中通信更少) Overlap 通信和计算 (DP 的 lazy update 也算 pipeline 的一种) Inter-batch Parallelism 无并行的 pipeline 分摊 weight 所需显存 支持不同规格加速器混用 在 homogeneous 环境下毫无加速 GPipe 并行: 批处理模式 Pipedream 并行 多发射 forward 和 backwoard 交错进行 可填满流水线 计算通信 overlap 由 pytorch 框架实现....

July 14, 2020 · 2 min · laekov

JAX Reading Log

% JAX: Autograd and XLA % Jiaao Ho % July 9, 2020 功能和组成 Autograd: 自动求导, numpy 自动求导 JIT: 把 numpy 运算移植到 GPU 和 TPU 上 vmap: 自动 vectorize pmap: 自动 SPMD 自动求导和训练 使用 grad 函数实现 from jax import grad import jax.numpy as np def tanh(x): # Define a function y = np.exp(-2.0 * x) return (1.0 - y) / (1.0 + y) grad_tanh = grad(tanh) # Obtain its gradient function print(grad_tanh(1....

July 13, 2020 · 2 min · laekov

使用 Shortcuts 让 linux desktop 与 iOS 间获得 airdrop 般的体验

laekov 在研究如何用手机远程开关家里的台灯的时候发现了 ios 里 shortcuts 这个神奇而好用(功能上) 的东西. 于是寻思着可以用 shortcut 解决手机/iPad 和 linux 桌面机之间文件和文字传输的问题, 于是进行了一些尝试. 为什么要上 AirDrop 因为它香啊. 可以在不同设备之间快速地传输文件. 比起开个微信传 / slack 传 / telegram 传这种还要让数据去地球另一端绕一圈的传数据方法, airdrop 它不用开聊天软件, 而且速度更快. 但是 AirDrop 的局限在于只能在 apple 设备之间使用. 对于桌面工作环境, laekov 还是更喜欢 linux (debian) + KDE, 用起来更爽一些. 所以每次在 desktop 和手机之间传输消息就成了一件非常麻烦的事. 如果是台式机, 不同的台式机, 台式机和笔记本, laekov 惯用 scp 进行文件传输. 但是 ios 下不存在一个好用没广告不收钱的 scp 软件. 但是 shotcuts 支持 run script over ssh, 就可以解决这个问题了. Run script over ssh Shortcuts 提供的非常好的一项功能叫 run script over ssh....

July 9, 2020 · 2 min · laekov

一篇理论上存在的本科毕业留念长文

这是一篇关于 laekov 在贵系本科四年的碎片式回忆. 关于学习 没学好的基础课 laekov 高三的时候文化课成绩似乎还可以, 但是上大学之后从线性代数A的线性空间部分开始崩溃, 到微积分B半期挂科伏地膜, 再到大雾B险些挂科. 大一大二的时候一方面选了很多课, 另一方面除了课程之外还找了很多事情干, 所以并没有好好地学习这些基础的课程. 显而易见地, 成绩也非常惨淡. 事实证明线性代数这样的课程还是非常必要的. 例如在写 Prague 的论文的时候就遇到了一个线性代数的证明, 然而不会证, 这种情况就十分惨惨. 再比如大雾里的量子物理, 热学之类的东西, 虽然凭当时的直觉觉得没啥用, 但是真的做科研的时候发现量子计算这条路想走也会更艰辛一些, 然后就会想要是当时花了更多的时间把量子搞得更懂一些该多好. 并不划算的抢先学 laekov 在年轻的时候天真地想空出一整学期没有课 (后来几乎就做到了), 所以一直在抢先选高年级的课, 并将这个战略一直贯彻到了大三. 然而事实证明这并不是一个非常合算的战略. laekov 在大一下的时候就先上了 OS 课, 原因是时间不冲突 + 对 os 比较感兴趣. 然而当时对 CPU 什么的完全没有正确的了解, 虽然在上完 OS 之后反倒对 CPU 的功能有了一定的认知. 然后大二上的时候就造了 CPU, 大二下才上数字电路设计. 这相当于把贵系的 “数电 - CPU - OS” 这个知识链完全反过来上了. 虽然 laekov 没有挂科, 但是中间有很多不懂的知识, 会错过很多深入探究的机会. 例如在造 CPU 的时候由于缺乏数设知识, 所以对电路的延迟和流水线设计都没有太多概念. 整个 CPU 造出来也是以 “造出来” 为目标的, 而且为了这个目标也花费了很多的心血, 而进一步的性能调优和适配更多的功能就完全无能为力了, 所以最后得分相对来说比较低....

June 23, 2020 · 12 min · laekov