2022年终总结

这篇文章总结一下2022年做了啥...

换工作

zhaoolee年初换了份工作,从一家金融公司转到一家互联网公司,金融公司会儿活儿多,互联网公司活儿会儿多。

研究开发桌面端应用

进入新公司,更新了一波技术栈,开始做Electron技术栈的桌面端应用,把已有的Web端应用,扩写为桌面端应用,路由适配,多窗开发,开机启动,托盘信息,日志收集,进程通讯,sdk集成,签名发版,自动更新...

与macOS Windows原生开发相比,Electron优化不够极致,优势是很省人力,一套核心代码打通Web, Windows, macOS, Linux ,目前的腾讯QQ也在切Electron技术栈,人力成本优化真的无处不在

我翻阅了大量Electron开发相关的中文资料,普遍写的很烂,Electron相关的中文书籍也已经过时,水平很一般,废话多,关键地方一笔带过。

zhaoolee打算以一线开发者的身份,写一套实用的Electron开发经验博客,选用Github Wiki作为载体,挖个坑,留给2023年

更新一些树莓派家庭服务以及内网穿透玩法相关的博客

去年10月份zhaoolee开了一个把树莓派变身家庭服务器的开源项目 https://github.com/zhaoolee/pi 目前已经有1K Star, 但写了7篇后,树莓派就变成了理财产品(变得毫无性价比),比显卡价格还坚挺。不过zhaoolee还是保持了项目的更新,目前更到了15篇。

关于内网穿透,树莓派家庭服务器很多玩法都是基于frp内网穿透技术,最近几周,zhaoolee在普通Windows笔记本上,基于frp和v2ray,实现BT种子的双向网络穿透,可以和海外老哥进行硬盘资源的p2p交流

更新受欢迎的开源项目,折腾新的开源项目

较多维护的已有项目:

  • zhaoolee的《Chrome插件英雄榜》和《中国人的表情包》项目在Github依然保持更新;
    zhaoolee-github

  • 用Hexo方式管理WordPress的脚本支持了中文URL(虽然中文URL对SEO不友好,但收到issues后,我还是支持了);

今年又开了一些新坑:

  • 写了一个油猴脚本,可以为任何标准WordPress网站建立一个类似GitBook的目录;

  • 写了一个基于Github Actions的灵感收集库,可以对收录的网站,每天进行连通性测试并展示连接速度,支持HTTPS证书有效期检测(被阮一峰老师推荐了,目前1.5K Star);

为了消除魔幻新闻的的负面影响,玩了一些「后悔没早点玩到」的单机游戏

2022年有很多魔幻新闻,那些新闻总让人觉得很消极,后面我找到一种方法来抵消这种消极,那就是玩单机游戏,很感谢这些游戏,把我暂时拉到了另一个世界去逃避现实

今年把异度神剑2 和 异度神剑3 通关了,也许是对日式RPG情有独钟,目前在玩最终幻想7重置版;

玩游戏其实是一件很奢侈的事,一需要设备,二需要时间,三需要找到自己喜欢的游戏

好的游戏让玩家感觉时间没有虚度,听到异度神剑2的配乐 One Last You 响起,配合大结局的动画,让我后悔没有早点玩到这样的游戏。女神异闻录5的美术风格,让我发出游戏居然可以做成这样的赞许,也理解了P5天下第一这个梗。

p5

2022年是艰难的一年,三国耗尽英雄气 两晋皆是鼠辈出,小丑们粉墨登场,给全国人民演出一场场闹剧,这些小丑其实一直存在,只不过有了互联网,小丑们的荒诞直接呈现在了全国人民面前

控制饮食锻炼身体

今年尝试了5个月左右的过午不食,体重下降到了比较理想的范围,控制饮食和进行锻炼,都有助于体重下降,但实践下来,控制饮食的效果远好于锻炼

另外,控制饮食还有一个好处,吃不饱只有一个烦恼,吃饱了会有无数烦恼,保持相对饥饿的状态,能避开很多精神内耗

新一年的计划

  • 持续更新技术博客,树莓派和内网穿透系列会持续更新(Just for fun)
  • 保持身体健康,避免二次感染新冠
  • 开坑Electron实用开发技巧系列博客
  • 能做到以上三点,我就很满足

2022

本文永久更新地址:

https://fangyuanxiaozhan.com/p/2022-12-31-12-18-02-2022-mark/

年青人为什么会变成愤青

初入社会的年轻人,相信奋斗就能改变人生,然而大多数情况下,父母因素的决定性更大。

领导们倡议,给年轻人更多的生存空间,一个个都要一本正经地胡说一通,很享受那种唾星四溅的快感,但又不许年轻人讲话,于是,网络环境越来越扭曲变形。

由于太缺乏改变人生的正常途径,才导致任何可能暴富的东西,都异乎寻常的流行,比如股票,炒房,P2P,传销,互联网金融,加密货币,赌球…

以上套路被年青人探索完成后,毫无收获,就容易变成愤青。有人说,青年是一个国家的希望,准确来讲,愤青才是一个国家的希望

本文永久更新地址:

https://fangyuanxiaozhan.com/p/2022-12-08-19-06-38-young-people/

软件开发随想录

大公司开发的软件普遍很难用,很重要的一个原因是:项目的设想太宏伟了,但是细节的设计没有跟上

小开发团队乐于打磨细节,因为打磨的成本很低,找到开发者,面对面,一杯咖啡的时间就能搞定,低成本高回报

而大团队修改一个细节,需要走一套流程,繁杂的流程足以劝退想要打磨细节的人

当然,以上规则不只适用于大公司的软件开发。

编写一个设计优雅,易于使用的软件产品,其实是很难的。

虽然看到最终成品的时候,你可能会觉得不难做,但实际上是很难的,就好比你在看精彩的相声演出,你觉得演员很轻松,实际上换了你就困难无比。

但毁掉一个优雅的软件产品,却意外的简单,只需要加一些晃动手机触发的开屏广告即可。

当然,以上规则不只适用于软件产品。

程序员们一直崇尚 talk is cheap, show me the code (多说无益,代码拿来)

偏偏很多人就只会 talk,团队越大,talk人的比例越高,小的团队,成员之间优势互补,大的团队,互扯后腿才是常态。

乐于talk的人有个特点,就是喜欢造新词,如果新词只有造词人自己懂,那就是好词,独占了新词解释权,talk什么都是对的。

本文永久更新地址:

https://fangyuanxiaozhan.com/p/2022-12-08-19-00-39-software-dev/

程序员编程能力会自发地退化

今天读了一篇十年前的博客文章,内容是作者对于计算机专业只进行Java教学,而不进行c系指针相关原理教学的担忧。

作者认为计算机专业课,应该使用难的知识筛选学生,淘汰那些没有兴趣编程,或者没有能力编程的学生,让他们不要浪费生命,趁早去读政治学或法学。

十年后,再看这篇文章,我忽然理解,大学java程序设计课老师,对于一些学生连java学起来都费劲的叹息。

校方一般会觉得,学生拿不到学位很可惜,但这部分人真的不适合编程,比较幽默的是,获得计算机学位80%的人,还是主动脱离了编程这个行业,因为真的没能力,写出的程序漏洞百出,真的很煎熬。

最近一个我鸟厂同学讲,某个同事问他「get大key为啥会cpu满,如果是内存读这种操作应该不会需要cpu吧」,同学只能尴尬笑笑「他估计也不知道什么是总线,那些所谓搞机器学习人工智能的,就会改几个参数,张嘴就要源码和论文」

只要降低难度,计算系的淘汰率就降低了,学生人数上升了,经费预算变大了,可谓皆大欢喜,但代价呢?

长期来看,我们会失去有能力编写操作系统内核的程序员,我们会像刘慈欣笔下的上帝文明一样,拥有极其先进的技术,而驱动这些先进技术的底层技术是核聚变产生的能量,但对于巅峰时期的上帝文明而言,核聚变就像钻木取火一般简单,所以没有任何记录,过了很多年后,上帝文明需要修复日渐老化的飞船时,竟发现无计可施。

美国1969年的阿波罗登月计划,让整个人类文明为之震撼,但到了2019年,美国再次期望登月时,却发现缺乏人才,一度延期到2025年…

当代,我们拥有不断优化操作系统的程序员,但随着时间推移,计算机系学生们,可能连Python都写不了就能毕业,无法从事改参数以外的工作,那时,人们望着没能力修改的系统内核代码,只能留下时代的眼泪…

本文永久更新地址:

https://fangyuanxiaozhan.com/p/2022-11-21-22-09-03-p/

人一生用几年时间学会讲话,但要用几十年时间学会不讲

见人说人话,见鬼说鬼话是一种才能,因为它能让沟通变得顺畅。

但说话要分场合,有些场合无论讲什么都会出问题, 缄口不言反而是最优解。

人一生用几年时间学会讲话,但要用几十年时间学会不讲 (省流版:两年学说话,一生学闭嘴)。

本文永久更新地址:

https://fangyuanxiaozhan.com/p/2022-11-08-22-23-36-talk/

言路

言路,是世界上最宽阔而又最狭窄,最通达又最崎岖的路。

本文永久更新地址:

https://fangyuanxiaozhan.com/p/2022-10-30-15-49-42-road/

趁着10月24日「程序员节」还没变成「情人购物节」,聊聊开源精神

二的十次方为1024,10月24日被一些人定为程序员节,不幸的是,今天并没有给程序员放假,幸运的是,截止2022年,10月24日还没有被扭曲为「情人节」或「购物节」。

程序员是一个中性的称呼,好听一些是「工程师」,难听一些是「码农」。但我还是喜欢「开发者(Developer)」这个称谓。连Google翻译都会给Developer 这个单词加个小标识

Developer

已审核

「开发者」这个词并不常用,我是学编程看文档时,才见到「开发者」这个词,脑中第一印象是「开荒者」,深入无人之境,荒漠变绿洲。后面又读了Linux系统作者Linus的「Just for fun(只是为了好玩)」,自由软件之父理查德的「Free as in freedom(若为自由故)」电子书开源地址 https://github.com/lifanxi/free-as-in-freedom-zh-cn/tree/master ,以及 互联网之子亚伦·斯沃茨 (Aaron Swartz) 的一些第三方传记,才感受到原来「开发者」是如此武德充沛! 可以凭借强力的技术与号召力与大公司掰手腕,可谓是以一当百的无双猛男。

linus-eff-you

Richard_Matthew_Stallman

Aaron

在软件领域,开源精神一般与开源软件一同出现,开放源代码不止意味着可以访问代码。开源软件的分发需要服从以下准则(以下选自维基百科):

  1. 自由再分发 许可证不应该限制其他方出售或者分发该软件,当该软件作为包含多个不同源码程序的集成软件的一部分。许可证不应该要求专利费或其他销售费用。
  2. 源代码 程序必须包含源代码,需要有完整的源代码和可编译的形式。程序的某一部分如果不是来自这份源代码,那必须有一个不需要费时费财的公共方式获得源代码或者从网络上下载过来。源代码需要以易修改的形式呈现。不能故意模糊源代码,也不能只发布预处理器或编译器的输出文件。
  3. 衍生作业 许可证必须允许修改和衍生作业,需要像原来的许可证那样发布。
  4. 作者源代码的完整性 仅当许可证允许使用源代码分发“补丁文件”以便在构建时修改程序时,许可证才可以限制源代码以修改的形式分发。 许可证必须明确允许分发由修改后的源代码构建的软件。许可证可能要求派生作品带有与原始软件不同的名称或版本号。
  5. 不歧视个人或团体 许可证不能歧视任何个人或团体。
  6. 不歧视领域 许可证不能限制任何人将程序用在某个特定的领域。例如,不能要求人们不可以把程序用在商业领域或者基因研究。
  7. 许可证的分发 该程序所附带的权利必须适用于该程序再分配的所有人,而无需由分配方执行额外的许可。
  8. 许可证不能对一个产品特化 附加到程序的权利不得取决于程序是特定软件分发的一部分。如果程序是从该分发中提取并在程序许可的条款中使用或分发的,则程序重新分发的所有各方应具有与原始软件分发相同的权限。
  9. 许可证不能限制其他软件 许可证不得对与许可软件一起分发的其他软件施加限制。例如,许可证不得坚持在同一介质上分发的所有其他程序必须是开源软件。
  10. 许可证必须是技术中立的 许可证的提供不得基于任何单独的技术或界面风格。

比开源软件更开放的是自由软件,自由软件,代码应该自由自在地让人取用。软件不应该拿来做为相互倾轧、剥削的工具,自由软件可谓是理想主义开发者的诗和远方。

我认为,一个普通的开发者可以写两类代码,一类是用来赚钱养活自己的代码,用代码换money;一类是自由的代码,代码开源且允许别人更改。决定一个开发者职业生涯广度与深度的,往往是那类自由的代码,因为自由的代码既可以用于社交,又可以帮助开发者开发成长,甚至可以影响更多的开发者,让整个开源生态变得更好。

开发软件会遇到各种各样的报错,开发者们也很乐于分享各类报错的解决方案,这些解决方案可能只需要几句话,也可能是一篇图文详尽的博客。这其实也是一种开源精神,将自己宝贵的经验分享给他人,让后人少走弯路,给永远比拿快乐。但抄袭的行为无法获得别人的尊重,重复的内容,无法创造价值,只会浪费互联网带宽,以及求问者宝贵的时间。

截止2022年,我已经在Github耗费了上千小时的时间,收获了很多star, 也从开源项目中获得大量的编程知识,这是一个相当好的状态,不太满意的是,写「自由代码」的时间越来越少,深圳这破地方真是太卷了,不愧是特色社会主义先行示范区。

最近在写一个开源RSS桌面端提醒程序,订阅的每个RSS更新都可以像好友消息一样,进行消息提醒,软件用女神异闻录5的UI配色,今年应该会发alpha版,程序当然也是开源的~

GaRSS

图标

本文永久更新地址:

https://fangyuanxiaozhan.com/p/2022-10-24-18-10-07-1024/

玩主机游戏需要学习,并不比学编程更简单

最近玩了一些主机游戏,包括异度神剑,火焰纹章,女神异闻录等~

作为一个技术水平不高的玩家,以上几款主机游戏,我要查很多攻略,才能顺利玩下去。

我在查攻略的过程中发现,除了一下游戏社区官方级的攻略,大多数图文攻略其实写的很粗糙,类似技术社区的水文,你抄我,我抄你,水印叠了一层又一层。或许程序员是最适合玩主机游戏的群体,他们面对卡关的心态会更好,也能接受游戏程序存在bug的事实。

在游戏中卡关,类似于编程过程中的修bug,最快的解决方法是上网找资料,游戏本身也是一款程序,程序员与玩家的不同点在于,程序员是生产者,玩家是消费者,如果生产者水平高,消费者就能少遇到一些bug。

玩主机游戏需要学习,并不比学编程更简单,主机游戏的规则一般比大众网游更复杂,玩家要抱着学习的心态才能把游戏玩好,不断练习,不断调整通关技巧,可能是本身职业的原因,我玩游戏查攻略会有一种给程序解bug的感觉。

本文永久更新地址:

https://fangyuanxiaozhan.com/p/2022-10-23-23-45-42-game/

如何用MacBook的优秀屏幕随时玩1080P主机模式Switch

搞好的Switch的桌面

用NS Pro手柄直接玩游戏

  • 这是被激活主机模式的Switch,NS可以放包里只要漏出一根线即可

底座加超低延迟U盘采集卡

  • 相关的所有设备

合照

我采购了一款海备思熊猫配色的Switch底座,连接Switch负责充电,激活Switch主机模式,官网 http://cn.hagibis.com.cn/

然后又采购了一款Genki的U盘大小的超低延迟采集卡(超低延迟是卖点), 负责将画面输出给MacBook, 官网 https://www.genkithings.com/

采集卡

U盘采集卡输出的画面,可以通过免费开源软件OBS,直接全屏输出到屏幕上。

以上这套组合有什么优势?

  • 体验好,拿着手柄,用MacBook大屏玩1080P Switch,肯定比玩掌机模式的720P Switch要舒服很多。(对于一个日常背着笔记本的人)
  • MacBook可以长时间录屏,可以为未来制作游戏视频录制素材。
  • MacBook可以快速处理录好的素材,无论是分享,还是投稿视频网站都极其方便。
  • Switch可以时刻保持满电状态。
  • 这套组合非常通用,如果你玩Steam Deck,或者其它Windows掌机,也可以套用这套组合。

本文永久更新地址:

https://fangyuanxiaozhan.com/p/2022-10-20-19-53-29-ns-mac/

安卓折叠屏手机为什么不好搞?

前段时间,见了老领导,右手大拇指绑着固定器,我问了下缘由,老领导回答说,去年换了某品牌的折叠屏手机,有半斤重,大屏虽然看的舒服,但大拇指要一直压着手机保持平衡,而大拇指压着屏幕的力学结构,本身是个费力杠杆,时间久了,大拇指长期压力大,就有点腱鞘炎了,看过医生,最后加了个固定器...

目前,折叠屏都是安卓手机厂商在做,而且是冲高端的卖点。

安卓平板生态不好,卖的不如iPad,安卓厂商做折叠屏是想赚平板的钱,但适配大屏的生态始终是绕不过的,现在折叠屏手机狂吹硬件如何如何,比如铰链能实现多少度悬停,屏幕万次折叠有多平整,各种所谓的评测媒体也在疯狂带节奏,把菜鸡互啄演绎成龙虎风云会,手机厂商,对App 大屏使用体验这种重中之重的东西,总是一句带过。

既要绕过最难的问题,又要原本赚不到的钱,结果就是,大多数消费者还是不会买账。

一分研发投入,才会有一分市场收益;折叠屏手机在PPT上可以打败任何对手,但出货量才是真实的实力,读金庸小说长大的一批人,年龄上,已经算各行业的大佬,但如果大佬们,总想有什么奇遇,获得武功秘籍,大杀四方,总想着万事皆有例外,皆有后门,不去啃最硬的骨头,安卓大屏生态很难迎来春天。

如果果子想做折叠屏,iOS生态还是有碾压优势,但果子平板电脑卖的很好,就没必要左右互搏,或许随着柔性屏技术的进步,果子会出柔性屏平板电脑,iPhone的体积,iPad的体验,那时iOS设备的出货量,估计又能迈上一个新台阶;当然以果子的刀法,以上设计,保守要切六刀,然后分三年买。

安卓用折叠屏冲高端,是很奇怪的追求,做体验最好的手机操作系统,才是正常的追求,如果某厂商的用户体验能碾压其它品牌,那高端自然成了。

本文永久更新地址:

https://fangyuanxiaozhan.com/p/2022-10-13-19-46-57-%e5%ae%89%e5%8d%93%e6%8a%98%e5%8f%a0%e5%b1%8f%e6%89%8b%e6%9c%ba%e4%b8%ba%e4%bb%80%e4%b9%88%e4%b8%8d%e5%a5%bd%e6%90%9e/