哆啦比猫的技术瞎扯 - Arch Linux · ドラえもん · 实时绘制
修复 LineageOS 能发送但是不能接收短信的问题
前几天心血来潮打算升级一下我那老旧的 CyanogenMod 13 的手机,经过一番折腾(CM13 → CM14.1 → LineageOS 14.1 experimental (for migration only) → LineageOS 14.1 nightly → LineageOS 16.0 nightly),终于在不丢数据的情况下完成了升级。今天因为需要短信验证码发现好像收不到短信,于是试试自己给自己发了个短信,果然收不到。
Rust 编译到 Web 平台
本文简单介绍如何把 Rust 程序编译到 WebAssembly,从而在浏览器里运行。网上虽然有一些类似的文章,但都是基于 macOS 命令行的。macOS 就是喜欢把简单的事情搞复杂(果然正统 UNIX 都是垃圾)。本文以 Arch Linux 为中心介绍如何配置环境。
2015 夏休总结
编程
项目:
-
makeless(
Perl5
):无需配置即可使用的单文件 C++ 构建系统(build system),用makeless -h
可以出文档。 -
renay 和 remate(
Perl5
):摸索服务器编程,实现了一个多客户端的 UDP 中继 renay,以及基于 renay + mosh + tmux 实现的终端共享 remate (名字和功能 inspired by tmate)。 -
font-render(
C++
):探索 OpenGL 文字渲染,距离场字体的生成,实现了 fontconfig 的 C++ 封装(文档)。- TODO:实现字体管理/缓存
- TODO:做成完整的字体渲染引擎
-
gnome-extensions(
GNOME JavaScript
):我制作或维护的 GNOME Shell 扩展(一个扩展一个分支)。现在用的第三方扩展几乎全部换成自己实现的啦:-
iso-clock:GNOME 本身的时钟太挫了,尤其是在
en_US.UTF-8
环境下,居然拒绝按照 ISO 8601 格式(YYYY-MM-DD
)显示日期,必须换掉。-
- 彩色显示周次、日期、时间
- 周日到周六分别用 ⊗①②③④⑤⊙ 表示(工作日用带圈数字,周末用非数字)
- netspeed-ng:netspeed 改造的,显示网速的一个插件,目前只改了一个地方:所有文字都纵向居中了(我 OCD 快被这个插件折磨死了)。
-
maximus-ng:去掉最大化窗口的标题栏。比 maximus 代码简化很多,抽象很多。而且干掉了两个 bug:
- 有时会出现需要鼠标选择窗口的交互的 bug:弹出新窗口的时候,整个画面卡着,就等你用鼠标随便点一下。
- 创建时就最大化的窗口顶部有很厚的黑边的 bug:原来的标题栏的地方变成了黑色。
- capslip、capslip@repeat、capslip@shrink:大小写锁定键状态指示,在屏幕左边中间泛起涟漪。解决 ThinkPad 键盘无指示灯的坑。我原来用的插件是在切换大小写时发送一个消息,消息从顶上弹出,挡住各种重要的地方,而且鼠标还能碰到。现在显示在左侧,动态的,透明的,可以看到但是鼠标碰不到,great。感觉挺中二就不上 gif 了。三个分支,三种动画。
-
rotten-tray:左下角 legacy tray 太恶心了,缩起来还要露出个头,轻碰就会弹出,有时还会抽搐,作为 OCD 简直无法忍受。以前的 GNOME Shell 底栏的设计多好,用力推才会显示,平时完全可以忽略它的存在。所以这个插件就是要让左下角彻底隐藏,用力推才显示。
-
-
top-fence:替代我以前写的 top-struggle,用来阻止鼠标指针从下方穿过 y = 14 这条直线,只有很用力的推才能穿过。之前用的是一种 dirty hack 方法(等待鼠标移动,检测鼠标指针是否 y < 14,过线则用 libxdo 把鼠标拉回来,etc),现在终于找到正确实现的方法了,即 XFIXES 5 Pointer Barriers(X 的一个扩展,GNOME Shell 已大量使用,可以阻止鼠标从某个方向穿过某个横着或竖着的线段,只阻止不放行),GNOME 扩展里面可以用 Mutter 的 MetaBarrier(在看 GNOME Shell 源代码时发现的我会乱说)。虽然 GNOME Shell 提供了
PressureBarrier
实现了用力推就放行,不过感觉手感太渣,所以还是自己实现了一个。
-
iso-clock:GNOME 本身的时钟太挫了,尤其是在
-
vimlight 0.19(
C++
,Lua
,VimScript
):Vim 里的 C 和 C++ 语义高亮插件,基于 clang 实现。新版本改进的地方见发行注记吧。 -
我的 VPS 流量统计页面(
HTML
,CSS
):学习 responsive design 页面的制作。
OpenGL 实现的距离场渲染器试验
距离场渲染(多材质),伪雾,反射,伪折射,天空(日),光晕,HDR,FXAA抗锯齿,OpenGL 3.3 core profile,SDL,可执行文件不足8KB(没能力做成 4K intro,只能当作 8K 了)
C++ 全局单例封装 C 语言库
C 语言的很多库都需要在程序开头初始化,程序结束时释放资源。在 C++ 中常规的封装方法是:
module.hh 1 namespace module 2 { 3 // life time management 4 void init(); 5 void free(); 6 7 // operations 8 void foo(); 9 void bar(int baz); 10 }
这样的 API可以和 C 语言中的对应起来,但是这种 API 极易出错,比如,有可能会在 init
前调用了 foo
,也可能在 free
后调用了 bar
,可能 init
了多次,也可能忘了 free
等等。本文将讨论这种类型的 API 在 C++ 中该怎样设计才能更安全、更 fool-proof。
「译」 C++ 五大谣言(及辟谣),第1部分
译者注:本文于 2014年12月9日 由 C++ 之父 Bjarne Stroustrup 发表于 C++ 官方网站上 https://isocpp.org/blog/2014/12/myths-1
「为了您在冬季能享受阅读的快乐,我们很高兴地推出了这个由 Bjarne Stroustrup 写的三部分系列文章。本文是第一部分,第二和第三部分将会在接下来的两个星期一发表,届时正好是圣诞节。Enjoy. ——小编」
简介
在这个由三个部分构成的系列文章中,我将会探索并破解以下五大 C++ 谣言:
- “要理解 C++,你必须先学会 C”
- “C++ 是面向对象语言”
- “要写可靠的软件,你需要垃圾回收机制”
- “为了软件运行的效率(efficiency),你必须写底层代码”
- “C++ 只适合大型、复杂的程序”
用 vlc 看优酷等网络视频的脚本(简洁版)
自然是借助于 flvcd.com 的力量了。用 vlc 看的好处么,可以不需要 flash 了,而且没广告,最重要的是可以变速,上 MOOC 看惯了加速的视频,看普通速度的就有点受不鸟了。网上有相关的脚本,不但长,而且还用不了(应该是太久没更新了吧)。现在来一个简洁的版本:
rtl8188ce 无线网不稳定终极解决方案
先容我废话
据说 realtek 的无线网卡就这个系列问题多多。以前连接不太稳定,但不会频繁掉线就凑活用了。自从不知哪次升级以来,掉线越来越频繁,最后已经发展到 10秒必掉 了,以至于要上网就得拼命到终端里重连网络。网上也有各种解决方法,装官方驱动,关闭省电功能等等,全部试过,都不成功。(前者网上传言无法编译,后者没有效果,等等)
lua 序列化(serialization)
序
学习就是自己发明轮子的过程。lua 里序列化的库有很多(这里有一堆),要用的话可以直接选一个,但是一个成熟的库学习起来会有一定难度,所以干脆自己设计实现一个。
考虑比较常用的数据类型,以及实现的难度,决定实现以下类型的序列化:nil,number,string,boolean,table(with cycles 带环)。(带环的表其实挺常见的,像各种树结构,一般每个节点都要保存孩子和父亲)。
评论系统换 disqus 了……
以前的评论应该就消失了……不知道要怎么导入……