时隔六年, 我怎么又在修 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

使用 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

远程部署一个通过 B 站直播分发的实验室集群监控系统

突发奇想在 debian 上装了个 obs. linux 下 obs 可以直接 capture audio output 了, 于是可以在直播里放音乐了, 非常赞. 但是我的笔记本的这个 HD 6400 实在是支持不太了 obs 这种繁重的负载, 于是想到了利用实验室的台式机作为直播前端. 首先要解决的问题是如何连上台式机并使用 gui. 正好发现 teamviewer 可以用命令行启动. $ sudo teamviewer daemon start $ sudo teamviewer info $ sudo teamviewer passwd <your passwd> 就这么就能获得远端的账号密码了, 就能用了, 非常开心. (虽然 daemon 获得号码可能要等一会儿, restart 若干次) 然后发现 obs 没法 window capture, 所有 window title 都是 unknown. 经过一翻搜索发现原因是 obs 的 locale 不对. 于是设了一下 LC_ALL 就能看到了. 然而 konsole 窗口是黑的一坨, 这和我手上的 debian 不太一样啊!...

June 19, 2020 · 1 min · laekov

一篇暗藏玄机的 Base64 简介

Base64 是一种常用的二进制到文本的编码方式, 应用非常广泛. 考虑这么一种场景, 两人之间现只能发送文字信息, 但他们要发送一张 jpeg 格式的图片. 如果尝试用文本编辑软件打开 jpeg, 将会发现是一大堆乱码. 原因是 jpeg 是二进制文件, 每个字节表示的东西几乎都不是给人看的字符, 自然没法解析出来. 而如果想把这些东西强行复制出来, 那更是一种灾难. 里面会有各种各样神奇的比如换行符, 甚至是\0 (文件结束符) 这种迷惑的东西. 自然是没法很好地以文本的方式传输的. 于是就有了这么一种把任意二进制文件都转化成没有奇怪特殊字符的方法. 首先把二进制文件或者任意字符串写成一串 01. 然后把相邻的 6 位合起来, 用 A-Za-z0-9+/ 一共 (64=2^6) 个字符来表示. 最后可能省下 2 个或者 4 个空位, 则用 0 补齐, 然后放一堆等号上去. 这样就可以把任意的文件, 比如文字, 图片, 视频都转换成肉眼可见, 易于复制和通过 http 之类的协议以及 json 之类的格式来传输的数据了. 下面是一些例子 hello world => aGVsbG8gd29ybGQ= 我不知道 base64 是什么 => 5oiR5LiN55+l6YGTIGJhc2U2NCDmmK/ku4DkuYg= 宝宝在这里给宝宝藏了一张小纸条: 6KaB5LiN6KaB5Y6755yL55yL5a6d5a6d55qE572R5piT5LqR6Z+z5LmQ5q2M5Y2V6YeM5aSa5LqG5LuA5LmI6L+35oOR55qE5Lic6KW/Pw== я говорю по русский плохо => 0Y8g0LPQvtCy0L7RgNGOINC/0L4g0YDRg9GB0YHQutC40Lkg0L/Qu9C+0YXQvg==...

February 13, 2020 · 1 min · laekov

Ubuntu 发行版更新记录

就在刚刚运行着本网站的阿里云 ecs 经历了一次升级, 从 ubuntu 16.04 lts 升级到了 18.04 lts. 升级过程平稳, 但升级后发现这个 php 做的网站变成了源码. 目测是 php 跪了, 于是尝试修 php. php5 仿佛已经不被支持, 于是换用 php7. 直接暴力 apt remove 再 install 就可以了, 配置会被保留. 然后发现 mysqli not found. 解决方法是在 /etc/php/7.2/apache2/php.ini 里面将 extension=mysqli 一行给 uncomment 掉. 然后就完事了.

January 21, 2020 · 1 min · laekov

在若干不同机器上安装 Debian 并修了一些锅的记录

最近因为各种神奇的移动, 在不同的3台电脑上装了 debian, 并踩了不同的坑. 开一个文章来记录一下各种神奇的坑. 0 一台 2013 年的联想 ideapad 笔记本, 配备了 AMD HD 6400M 独显. 因为突然想起了 bios 的管理密码所以激活了独显. 于是想用独显来跑 opencl 之类的. 然而老的 amd crystal 驱动好像不是很支持? 时间有点久, 忘记了踩了什么坑. 总之 apt 瞎搞最后就装上了. 1 实验室师兄的 i7 + GTX 1070 + 4k 屏. 装 nvidia 驱动并 disable nouveau 是常规操作. 然后遇到的问题是 4k 屏对 gtk 的程序好像不是很友好. chrome 的地址栏和 ibus 之类的东西会变得非常小, 瞎眼. 解决方案是用 GTK_SCALE=2 这个环境变量. 但问题是这个环境变量不应该在开窗口的时候再设, 而是要放到 profile.d 里面. 然后就解决了问题. 然后 ibus 冥顽不化地占据了我的输入法. 然后发现 apt remove 之后就能愉快地使用 fcitx 了....

January 13, 2020 · 1 min · laekov

Minimon: A minimal surveillance system based on buildroot for RaspberryPi

因为发现助教给炼丹任务提供了 64 张图片作为训练集, 64 张图片作为验证集, 所以果断放弃了炼丹任务. (update: 发现还是炼丹任务好做) 打算用 buildroot 从底向上 build 一个能跑起 python-gpio 的 linux. 另开一文记录一下坑们. (补充) 计划 先不管镜像大小, 用 buildroot 搞出一个能跑的系统. (好像 buildroot 部分差不多了.) 实时性补丁 进一步裁剪内核. (即使不栽应该也比 raspbian 小很多了. 毕竟老师那边 raspbian 裁剪纪录是 200M, 而 buildroot 现在才不到 150.) build 使用了默认配置 $ make raspberrypi3_defconfig 节省了很多自己摸索的时间. 配置静态 ip 的时候发现可能是由于 networking 的版本问题, 必需要在 interfaces 配置文件里把 netmask 写在 address 上面, 否则不 work. 另外选装上了 openssh 以支持 ssh 登录. 在折腾了半天之后终于能 ssh 上树莓派上的系统了. 然后发现它有一个轻量级的 dropbear 作为 sshd....

November 27, 2019 · 4 min · laekov

SCC@SC'19 笔记

好的 scc@sc'19 终于没有拿亚军 记个流水账 Benchmarking 好像没啥特别的. 一个新的发现是 HPL 的功耗飘可能是因为 GPU 功耗上升而不是计算 pattern? 回头仔细看看..? 内核的奇怪的锅 导致 idle 状态下 ssh 上一台机器就能跳 200w 的功耗 spike. 通过更新内核版本解决了该问题. IB 卡烧掉了??? benchmark 本来早晨很早就交了而且数也还行. 然而中午玩着玩着发现 ib 卡没了. 尝试 pci hot reenable 失败之后重启并重新跑了 benchmark. 后来发现是 ib 卡在 gpu 风道里, 而我们给没插卡的节点的 gpu 风扇拔了一半的线, 另一半还是最低速运转的, 于是把 ib 给热傻了… SST 人脑挖矿 + 无脑跑 SST 第一个部分是给定 cpu 核心数, l1/l2 cache 的不同搭配之类的总共乘起来 5760 种选择, 让用 SST 搞出一种性能最好且不超过5000块钱的配置. 人脑挖矿 vs 暴力. 测算发现暴力应该能跑完所有点, 于是就暴力了一下. 听说别的队有试图人脑的…...

November 23, 2019 · 1 min · laekov

Raspberry Pi 折腾记录

获得一个生日礼物 raspberry pi 已将近一年, 然而因为它只有四个核所以被嫌弃地闲置了很久. 近期因为上了嵌入式的课, 所以又开始了一轮折腾. 把一些有趣的事记录一下. 网络连接配置 老师说让我们先插上显示器配wifi, 之前我也是这么干的, 于是照做了. 然后想拿回家用, 家里没显示器, wifi 密码输入错误, 失联 ovo 后来想起直接给有线网口配个静态ip 就完事了. 和电脑直接对插就能访问 ovo. 延迟测试 发了一个示波器很好玩, 然而只有 windows 的 pc 端驱动差评. GPIO 管脚控制居然是 python, 严重怀疑效率. 实验本身倒是很简单. 接下来是给 kernel 打实时性补丁. (中断响应优先级? 时间步大小? 感觉 很有趣) 视频流 网上看到一个例子是把 raspivid 的输出用 nc 接起来到 host 上用 mplayer / vlc 播放. 非常有趣就试了一下. cvlc 转发延迟略高. 直接 mplayer 放 h264 格式的视频非常流畅. Modius NN 计算棒 去 intel 上找到了 openvino 作为 myriad 计算棒的驱动....

November 3, 2019 · 1 min · laekov

Graph Processing Systems

GridGraph 师兄的文章. 主要 idea 是把邻接矩阵切成块 (p*p) 放到磁盘上顺序读来提升 io 性能. 单机. GraphChi disk-based, parallel sliding windows, single consumer-level computer. metis 不 work (???) 解决出入边都要考虑和写的问题. 按出边分块 shard. 入边按序存放, 在每个 shard 中为连续一段. 可加载进来. 解决了一些比较麻烦的问题比如数三角形.

September 25, 2019 · 1 min · laekov