博文

目前显示的是 2017的博文

杭州驾照换证攻略

十年前刚刚拿到驾照的兴奋感还很清晰。如今已经要换证了,却依旧没有摇到车牌。

周五上午参加完小朋友们的毕业典礼,准备下午把换证的事情搞定。当然,事先参考各种网上攻略是必须要做的功课:照片自备;古墩路车管所没有体检服务,要自己去医院体检,查了一下似乎离家近的第七人民医院,省立同德都可以。

先跑到超市的自助拍照机器搞定一寸白底照片。花 30 大洋(支付宝给免了 5 块)虽然贵了点,但是整个过程非常快速舒适。

然后跑到第七人民医院(纯粹因为离家近)准备体检。被告知七院的驾驶员体检不对外(没舍得追问对内是个什么概念,反正人家不给做)。

然后跑到省立同德医院,被告知驾驶员体检只能周一至周五的上午做(最晚大概是十一点半)。

看了看表,已经是下午一点四十。狠了狠心,冲向河坊街 33 号。两点半左右到达河坊街,决策正确,河坊街体检+办证可以一站搞定,但是人山人海宛如假期的火车站。

一楼机器上自助交钱,上二楼体检。像我一样近视但是平时不戴眼镜的,二楼找官方租眼镜,消费 5 块押金 200。

体检排队+检查消耗时间约半小时。然后到 2~10 号窗口排队换证。窗口是通用的,大量排队的人都是驾校报名,考试预约什么的。而且会不停有人尝试插队。插队的套路是比惨,理由不外乎我已经来了第几次了,我从 xx 点就在这里开始排了但是缺个什么材料之类——不要落入跟这类人比惨的圈套,一句话关我屁事即可。

排队花了一个小时,运气还不错:期间挡掉两个尝试插到我前面的妇女;旁边队伍进展缓慢,速度大概是本队的一半;另有比较远的两个队因为插队发生了争执和肢体冲突,保安从人群中拽出去了两个人。

2 张照片+体检单递进去,现有驾照收掉,验证身份证及复印件(外地户口还应该准备暂住证之类),换到 13 号窗口开票,换到 12 号窗口交 10 块,然后在 11 号窗口等着取证(大概 10 分钟证件制作时间,趁这个空挡把眼镜还了)。所幸后面这三个窗口基本不用排队。整个换证流程在手续齐全的情况下一个半小时多一点,主要内容是排队。

提示:

河坊街的体检已经电子化了,不需要提前准备照片。换证窗口所需照片在 2 楼也可以现场解决。但是如果要到其他医院体检的话估计还是要自己提前准备照片。

换证窗口需要 2 张一寸白底证件照,蓝底是不行的(排在我后面的大三同学第一次失败就是因为准备的是蓝底的照片)。

河坊街一站式服务很好很强大,但问题是人…

解决登录卡顿问题一例

ArchLinux,Gnome。有些时候,笔记本从睡眠中醒来,登录 Gnome,会卡好一阵子。经查是因为挂载了网络文件系统的缘故——比如休眠之前通过 gvfs 挂了个 samba,醒来重新登录的时候基本上要等一个超时才能见到桌面。

于是一直都是小心翼翼的在合上笔记本之前把该卸载的都卸载掉。但是这样人肉毕竟不方便。作为一个程序员,如果都不能给自己日常工作增加生产力,实在是羞耻。

于是准备用代码来解决问题。准备工作如下:
suspend 的 hook。翻了翻 wiki,现在什么 acpid、pm-utils 都不用了,hook 可以直接写成 systemd service file 的形式。卸载 fuser 的挂载。linux 的外围存储都是 sshfs 挂上来,在 mount 表里直接可以看到,最容易处理。卸掉 gvfs 的挂载。主要是来自 windows 的外围存储,Gnome 自带的 gvfs 其实还挺好用。但 gvfs 令人讨厌的是挂载行为变化不定,挂载点用 mount -l 是看不到的,之前还在 /run/user/$(id -u)/gvfs 下,而现在的版本则又找不到地方了。搜了一圈下来,看到 gio mount -s 可以直接按类型卸载,还算方便。干掉 vpn 进程。好几次休眠之前开着公司的 vpn,唤醒之后忘了,结果一边是 vpn 在顽强的尝试恢复连接,一边是我一头雾水在看为啥网络不通。 写好 suspend-root.service,实测发现以 root 用户身份执行的 gio mount -s 是有问题的,而且简单的用 su 或者 sudo 换掉身份也不行。gio 依赖 dbus,而 dbus 里面貌似也有 session 的概念,在开发环境即使用 root 都验证过了,放到 suspend hook 里还是会有问题,估计和 session 的生命周期有关,事情越搞越复杂。

好在后续的搜索工作找到了 xss-lock(其实最早 ArchLinux 的 wiki 上就提到过,但是被忽略了),可以越过 systemd 的 hook,让用户进程直接订阅 suspend 事件。于是又搞一个 user space 的 systemd service,用来卸载 gvfs 和 sshfs。

最终方案用到的脚本都在 github 的 toolbox 项目里了,用到的…