月度归档:2021年12月

「作者此处有删节」是一种什么样的体验?

这几日在读贾平凹的《废都》,之前读过《秦腔》和《浮躁》,想着把这名家的代表大作都读了吧,就在微信读书上找了来读,读着读着就感觉不太对了。诸多章节出内容中,直接使用了「此处作者有删节」这样的文字代替了大段的性描写,这倒不是咱们没读过小黄书,想看看这香艳刺激的场面具体是咋描写的,而是这样奇怪地保留作品的完整性而又要符合出版审查制度的自我阉割显得实在是过于行为艺术了。我甚至觉得这是一种反讽,也行是我过度解读了啊,作者兴许只是想让这本书的出版不那么艰难,也能让这么好的作品给更多的普通读者能读到罢了。

至此我的好奇心就被激起来了,我到要看看删节的内容具体都是个啥。于是我就搜索了一下,还真找到了未删节版的 mobi 和 epub 文件,最终选了一个看着还算满意的转换了格式,导入到了朋友送我的 Kindle 里头,自己调整了一下字体大小和行间距,就开始读了起来。

其实我们的贾平凹先生对于这种香艳场面的描写并没有特别出彩和骇人听闻之处,基本上跟我们实际生活中的性行为过程毫无区别嘛,也没有像小黄书那样为了满足读者猎奇的心理,刻意将性过程的描写扭曲和夸大,只是用词非常的准确和直白,在我们这个比较偏爱委婉美和谈性色变的主流文化审美环境中,可生存的空间确实不太大。

不过在对比阅读的过程中,发现了两个还蛮有意思的事就是,微信阅读的基础排版会让人读起来舒服不少,早年间的 epub 电子书基本上跟纯 txt 电子书毫无区别,全然没有任何排版,错别字频出(可能跟早年输入法和录入员的素质有关?或者这就是个盗版的电子式,何谈录入员)。在Z-Library找《废都》的同时,我也搜索了一本自己手上有纸质本和微信读书版本的《贪婪的多巴胺》,想着放到 Kindle 上读起来不费眼睛,将其导入到 Kindle 上一打开,这个排版和字体,完全就是纸质本的翻版啊,读起来舒服得很,相较而言微信读书的版本就是有些差点意思了,微信读书上的排版基本上都是以铺满手机屏幕为主(为了在窄小的手机屏幕上展示足够多的内容这个可以理解,不知道墨水屏版本对于微信读书中的内容是否有区别设计和适配,如果仅仅是简单的按比例放大,那就有点遗憾和不够了),而 Kindle 的排版由于设备尺寸相对固定并且比较接近口袋本的尺寸,所以整体排版还是很有书籍本体的那种边距的变化,段落感也会很明显,尤其对于我这次是先从纸质版开始阅读的,然后微信读书才上架了电子版,最后我又阴差阳错地读了一个 Kindle 版本,还真是不同的载体体验很是不一样呢。

【开发日志-00】给 Flutter Plugin 加一个自己需要的特性

【开发日志-00】给 Flutter Plugin 加一个自己需要的特性

开个坑,公开记录一下填坑的过程,如果烂尾了,也给自己打个脸。往年每次年底做总结的时候,会惨兮兮地发现这一年都白瞎了,啥进步没有,感觉又枉费这美好人间,腆个逼脸在本上写下明年一定要参与一个什么什么开源项目,然后本子都不知道到哪儿去了,到了又一年年底都忘了当时是不是立了啥具体的 Flag,只是依稀记得,好像自己又打了一次自己的脸,立了 Flag 但是没有立住。

虽说这个公开记录在互联网上多如牛毛,咱们这个犄角旮旯也照不进来啥阳光,估计也没啥人能看到,但是至少不会像本子一样最后找不到了(当然如果本子好好保留时长回顾也是很好的),姑且咱们假设这次可能有用吧,谁知道呢,或者到了明年这个时候,我们发现这个小破站也无法访问了,或者压根儿就没人在意,我自己也不把这次打脸当回事呢,是吧。


从 19 年 6 月开始,我就开始做 Flutter 开发的相关工作了,到现在也已经 2 年半时间了。由于我们做的项目是在线直播相亲业务,很多直播间类型都是强交互的,经常调试的时候会同时连接多台设备,分别调试不同的角色在直播间的行为,例如主播端、连麦用户端、观众端。开发调试的过程中,经常改了一些 UI 布局和逻辑代码后,想着利用 Flutter Hot Reload 或 Hot Restart 的特性来快速调整验证,但是当我想在特定的某一台设备上执行 Flutter Hot Reload 的动作时,却总是找不到合适的方法来快速实施,最终我只能通过 IDEA 底部的 Tool Window Run 或者 Tool Window Debug 中侧边栏的重载按钮在每台连接的设备上都执行一遍,然后通过日志输出中的 Launching lib/main.dart on PDPT00 in debug mode... 的设备名称来区分当前是在那台设备上执行的。这让我觉得一点都不酷,也不知道众多 Flutter 开发者平时是否有更好的其他小妙招之类的,兴许这个插件的开发人员们平时很少会有连接多台设备同时调试的需求吧,既然我有这个需求,而且一直都蛮强烈的,那么我就自己尝试开个坑自己填吧。

由于我自己常用的 IDE 是 JetBrains 的 Intellij IDEA,所以我自己首选的先是解决我自己的问题,从 Flutter Plugin for IntelliJ 入手吧。

我直接打开了 Github,搜索 Flutter Plugin for IntelliJ 找到了官方的仓库 https://github.com/flutter/flutter-intellij 顺手到了自己的仓库下,然后先 clone 下来。在等待仓库 clone 的过程中,我就开始阅读这个项目的 README 了,出人意料的是,我完全没有想到这么多人每天都在用的插件的官方 repo 的 README 中竟然没有关于如何编译和开发这项目的任何文档,最终我是通过这个 repo 的 issue tracker 中的 contributing guidelines 文档才找到了相关的指引文档。但是坦白讲,折腾经验还算丰富的我,按照文档一步步执行下来,最终还是败下阵来了——Gradle Build失败了。按照失败的各种错误提示,各种 Google + Stackoverflow + 官方的 issue tracker 还是没能解决我的问题,索性那么我们就把这个当个长期坑来看吧,先学习一下如何开发 IntelliJ 的插件,然后再看如何改这个 Flutter Plugin for IntelliJ 吧。


刚好再重看了一遍这个 repo 中的 README 中的 Getting Started with IntelliJ 文档,刚好看到了其中关于 Running and debugging 的内容,如下图:

所以,我把我刚刚说的无法快速在某台指定设备上执行 Flutter Hot Reload 行为的胡话收回,说明我原来用的姿势不对,确实没有发现这么简单和常用的功能(当然实际上我肯定是用过的,只是这个操作区域跟我时常需要关注的 IDE 底部的 Console 离得太远了,所以慢慢地就忽略了这个入口了,更多的时候是直接使用了 Tool Window Run/Debug 中顶部的 Flutter Hot Reload 和 Flutter Hot Restart 按钮来实现的,对了 Flutter Hot Restart 只在底部的 Tool Window Run/Debug 中才有哦),由于平时经常需要关注 Console 中输出的日志信息,所以养成了关注底部窗口的相关,操作也一贯是在这个窗口上执行的,但是这个 Window 中只显示了一个 main.dart 的标题,如下图:

如果能在这个标题上加上一个当前执行的设备的名称,是否会更直观一些呢,例如显示 main.dart on V2057A 或者 main.dart@V2057A 这样是不是就更好了呢。嗯哼,这就是我想做的事情了。

坑已开,等着填。我要开始学习了,IntelliJ Platform SDK 会是我们的第一站,我会一点点记录学习过程中所得的。