City Background
  • Article cover

    聊聊自动化 PDF 渲染方案

    自动化 PDF 是一个我从上大学开始就一直在关注的领域。考研的时候有背单词的需求。为了能根据背诵情况生成小测试卷,我在那时曾经研究过很多方案。作为一名「开源圣战士」(我曾经是能捏着鼻子坚持用 GIMP 和 Open Office 的猛男),因为这事竟然屈辱吞下了用闭源解决方案的结果,可见当年的解决方案有多糟糕。

    不过时至今日,typst 和各种开源工具链的出现极大降低了整件事情的开发难度。因为这些年来一直在关注这个领域的发展,所以写篇文章讲讲目前我所发现的各种解决方案,以及它们的优缺点。

    考虑到「报告自动生成」是一个在 OA 系统开发当中广为存在的一个需求,而时至今日依旧没有一个「银弹」可以解决大多数方案,所以写一篇文章记录一下我这些年对整个话题的探索,本文亦会记录我最后找到适合自己的「标准答案」。

  • Article cover

    Alice Run 结案报告:一次对数字健康与体感媒体的探索

    趁着五一假期,我又开始折腾一些奇奇怪怪的东西了。这次做的是一个由 Joy-Con 和 PC 驱动的体感视觉小说系统。

    实际上这个项目始于两年前,我玩过很多 Switch 上的「体感游戏」,它们都很好玩。但是没有一款达到了我对理想「可控有氧运动」的需求,于是便想着要么自己做一个。实际上在我的人生中有过一次非常成功的「减重经验」。

    在一个初中的寒假的时间,一个完全做不了任何运动的小胖子,成功的把凸出来的肚子抹平变成了一个名副其实的「瘦猴」。做法也非常简单,一边看电视一边原地跑,每天跑一个小时,就这么跑了一个月,开学穿衣服的时候我发现自己身上的「肥肉」竟然被消灭光了。

    一切只始于我和同学在家里打赌,原地跑一次跑一个小时看看谁先累趴下。事实上这个过程完全不累,只是单纯的大量流汗。这大概是我人生当中第一次通过运动激发了内啡肽的分泌,获得了「快乐」的感觉。因为没什么「气喘吁吁」的难受感觉,后面就坚持下来了。

  • Article cover

    【免费试读】为什么我无法专注:了解 ADHD

    对于学生来讲,容易分心、上课不能专注是一个非常要命的事。眼睛一闭一睁,老师讲的知识就从 1+1 等于 2 变成了「火箭发射的轨迹设计」。回家可能要花好长时间才能自己搞明白,有时甚至需要靠补习班才能重新把知识学会。但在课后班又会不会分心呢?这就是另外一个故事了。

    这个问题的原因可能有两方面,一方面是心理层面上的原因,像是生活压力大,最近发生了重大的生活事件,或者是一些心理疾病;而另一方面,则可能是患上了「注意力缺陷过动障碍」,简称 ADHD,俗称「过动症」。

    从传统的视角来看,似乎容易分心是一种「人格上的缺陷」,它代表着一个人傲慢、自大、不尊重人,但实际上真的是这样吗?当然不是!

    如果是心理性的因素,需要透过心理咨询来解决。而如果是 ADHD,则需要专业的精神科医师一起参与。针对这两类问题,本章我们会共同讨论具体的解决方法。

  • Article cover

    通过 GeckoView 内核统一 Android 平台下 Ionic App 的用户体验

    使用 Web 技术栈绘制 GUI 基本上已经成为公认的、成本效益最为平衡的一种解决方案。无论是桌面端、移动端,甚至是你在使用的操作系统也充斥着大量的 WebView。从十年前(掰手指——)我还是大学生的时候这股「妖风」就刮了起来,Intel 造了个叫做 XDK 的东西, IBM 甚至还自己裁切了一个叫做 CrossWalk 的嵌入式 WebView 引擎(虽然现在已经没人维护了)。

    经历了这么多年的发展,在移动端用 Web 技术栈开发混合程序依然是一个非常麻烦的事情。造成这一景象的原因有两方面,一方面是 Chromium 本身与 Android 系统高度耦合(Android 里有些 API 是专门给 Chromium 做的)、内部工程实践混乱、剪裁难度极大,另外一方面,Android 本身碎片化非常严重,各中「发展中国家」「自研」的「OS」还会用各种方式作妖,比如之前臭名昭著的 MIUI ,内置浏览器虽然看起来规矩,但是会假装自己是高版本浏览器,还有一些民间 ROM 会裁掉一些浏览器的 API,也不知道是为了什么。

  • Article cover

    姑且能用:XREAL Air 2 Pro 使用体验

    收到了节前的第一笔工资之后,要做的第一件事情当然就是把它败光。之前吵得火热的 AR 眼镜类产品自然就成了非常不错的败家对象。于是下单,心心念念的期待 doki doki 的次世代影音体验。

    结果因为地址填错,尊贵的京东大会员发动了特权卡,中间改了次地址,于是京东的快件路由重新绕回了库房,第二天才把设备送到家。于是,我的 VR 之旅开始咯 (ヘ( ゚v ゚)ノ)!

    现在产品已经到手一周,经历了各种折腾、调教和体验,算是对这个最新款的 XREAL AR 眼镜有了一些基本的认知和感受,于是撰篇文章记录一下这段时间折腾它的故事。

  • Article cover

    我对盗版的态度

    2023 年 12 月 21 日,我正式发表了自己撰写的第一本书籍《当代学生生存手册》,此书于 2024 年 1 月 23 日,我发现自己的书被盗版。盗版出现的速度快到难以置信,令人错愕。

    在图书出版的前夕,我曾在自己的「电子日记」中阐述过自己对于各个电子书平台的看法、对 DRM 系统的看法。并放出「豪言」如果我的书被盗版了,那我会正大光明的把盗版书的地址贴到自己的地盘上,作为一种宣誓,展现出独立作者的态度和姿态。现在我来「还愿」了。

    对于独立出版作品来讲,一本书 45 元并不是昂贵的价格(特别是这本书里面有大量手工的成分,像是书封的折叠、签字和盖章),但我能理解目前这些书城在支付流程、阅读体验上的缺陷可能会让很多读者无法接受。因此我个人并不介意盗版的存在。但我依然认为自己有必要说些什么,于是就有了这篇文章。

  • Article cover

    介于一般和糟糕之间:文石 Tab Ultra C Pro 测评

    在电子墨水阅读器这个领域,文石的品牌口碑一直都很不错。趁着帅哥张老师最近要从新加坡回国,我便厚着脸皮求他帮我扛回来一个国际板的 Tab Ultra C Pro(中国版为 Tab 10 C Pro)。

    国际版的价格比中国版贵了不少,涨价幅度达到了上千元。我选择当「盘子」购买国际版的原因主要是两个方面:一方面,国际版允许用户选择数据中心的位置,如存储数据于欧洲或美国,而国行版只能选择中国数据中心,考虑到欧盟这种「干啥啥不行,立法第一名」的调性,隐私保证方面可能会更靠谱一些;另一方面,我期望国际版的系统相对更为干净,没有太多预装软件。

    现在设备买回来已经用了一周多,遂执笔分享一下我的使用感受。

  • Article cover

    为 Safari 提供 OGG 格式支持

    这两天做了一个需要媒体播放的项目。基本上每次我做这种东西的时候都会去翻看一下浏览器的格式兼容列表有没有什么变化,但每次都会被 Safari 的弱智操作气到。在所有主流浏览器当中只有 Safari 是不支持 OGG 容器的。但很吊诡的是,它却支持 OPUS 编码,这种编码只能被塞到 CAF 容器里。

    这个操作非常苹果。事实上 CAF 是苹果私有的封装容器,你几乎在其他平台上很难看到这种格式的踪影。而且苹果对它的支持很有限,哪怕是在 Safari 浏览器当中,它也仅实现了一部分的 CAF 标准,而非全部。要知道 CAF 容器的格式标准可是苹果自己制订的。

    是的,这是一个充满阿婆公司风味的奇妙操作。iPod 年代要把音频往设备里面折腾的恐怖回忆又开始攻击我了,不过这一次我打算直面这件事情,从技术面解决这个问题。

  • Article cover

    第一次做灯就上手!基于 WLED 的夜灯制作教程!

    作为一名阴森的吸血鬼,我曾不止一次在博客中提及我有多喜欢黑暗的环境,因为它不仅可以阻止我不停的受到阳光的伤害疯狂掉血,黑暗的环境本身也是一种很好的介质,能够让我用各式各样的灯光改变房间的分为。每当夜幕降临的时候,打开我家里各式各样的 RGB 灯光都会让人觉得非常惬意。

    直到有一天,我的室友听闻我喜欢灯具之后,便送了我一个手工剪纸灯,但可惜的是这个灯并没有办法接入我的智能家居系统,于是乎强迫症发作的我决定自己购买元器件,把这个手工作品变成五彩斑斓的黑的智能灯具。其实过程并不困难,而且做了一次就会上瘾,后来我陆陆续续把家里的各种小废物都做成了各种灯具,着实好玩。借着今天这个机会我决定把先前的经验整理一下,做一个笔记,如果各位也想做自己的灯具的话,不妨亲自试试。

    提到自己做小家电(?)初心者可能会觉得很忐忑,但因为我们这词用的都是低压电做操作,所以过程是相当安全的,需要的元器件只有 LED 灯带、ESP8266 等各种不会放出魔法烟雾的组件,所以我们可以放心大胆的做喔!

  • Article cover

    关于英语:一种以测评成绩驱动的结构化学习方法

    这篇文章始于群友的一个问题:「英语不好,很焦虑怎么办?」遇到这个问题时我有点困惑,于是继续发问:「For what?留学?移民?还是大学四六级?」「idk,只是焦虑,想学点什么。」「额……那,试试刷个英语考试?」

    今天我们要讨论的话题非常有争议:语言考试和语言能力的问题。事实上,在许多场合我都提到了这样一个观点:如果你在非英语环境中学习语言,最高效的方式实际上是策略地进行结构化学习,而不是浪漫地沉浸在英语环境中。