软件开发随想录

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

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

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

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

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

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

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

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

程序员们一直崇尚 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/

深圳2022年10月份疫情有感

最近三个月,我搬砖的办公楼,要求 24 小时核酸,看到路上越来越多的女外卖员,感受到广大人民确实承受了最多的代价,自费隔离,没有补
贴;城市发的所谓消费券,不如百亿补贴 pdd来的实在。

深圳三个月来总有新增,新增的溯源工作,总是不了了之,办公室老哥说的很实在:香港是你爹,你能管你爹么?wo kao.(此处省略发不出来的内容)

每天都要尝一口棉签的滋味并不好受,每次被棉签戳,总让我联想到,诸葛孔明给司马懿兵书页脚加慢性药的骚操作,长期啃棉签不是长远之计。在2022年10月12日,河南郑州某高新区,开始一日两检,科学的核酸检测变得越来越不科学。

上层出一套指导精神,下层如果无法获利,要么打个折扣,要么过度执行,当人民受不了开始骂街的时候,无论指导精神初衷如何,都无法长期执行。

特定时代的中国人,总要被迫学会一些具有时代特色的技能,即使记性再差,肉体也能记住(肌肉记忆)。

比如,如何张嘴被棉签戳最规范?如何扫区域健康码成功率最高?如何写文章才能发布成功?(删除最想说的话,敏感词用拼音代替)

以上技能在「下个世代的人」看来,会非常奇妙,就像当代年轻人看「大妈们热衷一大早抢菜」「大叔们喜欢炒房」一样奇妙,归根到底,都是时代特色..

希望「下个世代的人」,关注的是「科技」气「工业革命」,而不是「炒房」与「每日核酸」。

本文永久更新地址:

https://fangyuanxiaozhan.com/p/2022-10-13-12-45-29-%e6%b7%b1%e5%9c%b32022%e5%b9%b410%e6%9c%88%e4%bb%bd%e7%96%ab%e6%83%85%e6%9c%89%e6%84%9f/

取消Apple Music 订阅的糟糕体验

如果安卓手机经常开启或关闭科学上网软件,Apple music 很容易断网,解决方法就是重启Apple music,但听歌被打断很不爽。

Apple music个人订阅无法多设备同时听歌,如果A设备在听歌,然后打开B设备听歌,那A设备就会被中断,解决方案很简单,多交钱升级为家庭会员...

Ps5版的apple music 很干净,由于国内网不好,Ps5 一般运行在科学上网路由器下,apple music经常会抽风性断流,打开一首歌没问题,播到不到两分钟的位置,就会报网络错误,此时马上切一首新歌,又会顺利播放,但播到两分钟不到,又会网络错误,搞得像是盗版开挂用户被系统剔除,但我明明是交了钱的!

Apple music 取消订阅也难搞,我平时用微信支付自动续费,正常的解除合约,只需前往微信支付,从列表选择「自动续费」服务,解除即可,但在微信支付设置中,「自动续费」与「Apple 服务续费」是并列的选项,而「Apple 服务续费」并没有子列表,我必须前往app store 去手动解除续费,而app store把解除apple music 续费隐藏到了三级菜单中,用户至少需要六步操作才能到达解除合约的页面。

好不容易按照网上教程,找到apple music解除合约的按钮,点一下,没反应,然后按钮不会变成loading态,而是激活态,我又点了一下,还是没反应,于是我点了10几次(被垃圾用户体验气到了),才出现一个二次确认弹框,点击确认,然后更糟的体验来了,我前面的10几次点击,触发了10几个连续的弹窗,每确认一个弹窗后,两秒钟就会出现下一个一模一样的弹窗,强制我进行点击确认,我点了五六次后失去耐心,打算关机,但app store 强制不允许关机,于是我长按电脑开机键,强制关机,结束了这糟糕的体验。

我在网上查取消apple music取消订阅时,发现一个有意思的点,以前是可以通过music.apple.com网页直接取消订阅的,但现在没有这个功能了。

apple强推订阅制,让取消订阅变得困难,确实提升了apple 开发者的收入,也提升了app store的收入,可谓双赢,但消费者麻了两次,apple 并不会真的在乎用户体验,不使用type-c充电口,强制下架老的app,拉高用户更换iPhone的成本,如果以后我换iPhone,一定不会说「我买了个iPhone」,而是说「我租了个iPhone...」

本文永久更新地址:

https://fangyuanxiaozhan.com/p/2022-08-07-19-41-25-apple-music/