Skip to content

四火的唠叨

一个纯正程序员的啰嗦

Menu
  • 所有文章
  • About Me
  • 关于四火
  • 旅行映像
  • 独立游戏
  • 资源链接
Menu

折腾的快乐

Posted on 01/09/201809/25/2019 by 四火

sde

先讲个故事

公司里有这么一个小小的差事,某一个月,每天都要把 Excel 的某一列的数据根据某种规则换算以后拷贝到另一列去。

DA(数据分析师)看了以后说,就手工完成吧。反正只有一个月,这件事情每天做 3 分钟,也没有多耽误时间。

TPM 看了以后说,这事情每天做做很简单啊,写一张便签贴在屏幕上,每天就不会忘记了。

Dev Manager 看了以后说,衡量一下这个很小的时间成本,用其它的方式来解决是不划算的,还是手工搞定吧。

……

不过地球上还有一种特殊的物种不同意。它门叫做程序员——这么重复性的劳动难道不能用脚本完成吗?

就是,用 geek 的脚趾头想一想,这还用问?

于是写脚本,调试,测试,整合,两个钟头花掉了。没关系,这是一次性的工作。值得。

用了两天发现 bug,某些数据格式没有 cover 到,修复 bug,一个钟头花掉了。没关系,修 bug 是软件的一部分。

又用了两天,发现数据精度的问题,再修,又一个钟头。呃,没事,看来我需要完善一下 UT。

UT 一写才发现,看似简简单单的功能,原来需要考虑的 case 那么多,面条代码看起来很难受,维护起来又费劲,迫切地需要重构代码啊……这一重构,就是一个半天。

接着发现脚本触发的这个行为,或者说是每天用鼠标双击的那一下,其实也应该自动化,要不然忘记了怎么办?于是写 cron task。

搞定以后,忽然想起来,脚本的执行不能保证成功啊,执行是可以 idempotent 的,应该要有一个机制确保每天都执行到。于是开始写一个简单的任务执行系统。

等等,如果一定时间内没有执行,需要告警啊,这个简单的功能怎么能够没有。于是加入告警系统。

单机状况谁也不能保证执行的成功率,如果机器挂掉了,不管是任务执行还是告警都歇菜怎么办,必须要提高可用性。必须要做集群。光说集群还不够,要做到真正的分布式。

好吧,分布式的情况需要考虑中心节点的问题,是有带有 master 节点的设计(Master-Slave?Master-Master?),还是完全去中心化的设计(2PC?Paxos?)呢?

……(此处省略一万行)

越来越荒唐啊。

一个月过去了,Excel 数据拷贝的活也不用干了,折腾以后,手里多了一堆名叫 “脚本” 和 “软件” 的烂摊子。

看起来是个相当讽刺的负面例子呢。

有程序员跳出来说,看起来是花了好多倍的时间,但是只要写一次,以后再有 Excel 的列拷贝问题,不就直接解决了吗?

可问题是,以后会再有这样的问题吗?这似乎是一个很难发生重复的问题,即便有重复,场景可能也千差万别了吧。

所以程序员傻里吧唧地做了一堆无用功,对吗?

……

我觉得未必。

没有折腾的意愿,哪能有那么多有趣的点子,哪能有那么多便捷的软件?提高效率的东西在最开始总是从降低效率开始的,这是一个烟斗模型。

更重要的是,如此的折腾完全源自自愿,折腾是快乐的源泉!

生命不息,折腾不止。

……

好像有点牵强 +_+

在跟自己说 “管他呢” 之前,忽然想起自己身上发生的两个事情:

局域网备份和私有云

老早就想干这个事情了。家里好几台电脑,照片那么多,如果能够从一台机器上备份到另一台该多好啊。硬盘哪天坏掉的时候,也不会丢东西。

最开始我的做法是手动完成,low 爆了对吧,我都不好意思告诉别人;

后来进步一点,写了一点点 bat 脚本,至少强一点了,证明我还不是废物 ✧(≖ ◡ ≖✿);

再后来更进步一点,用一些稍微方便一点的工具,比如微软的 SyncToy。但是无法自动化这一点始终让我很不开心。难道为了实现它,我真要变成上面那个越折腾成本规模越大写脚本的讽刺故事的主人公吗?

好吧,应该别的有办法,研究研究……

一种方式是备份到云上。可是我不是很愿意把私有的照片放到公网上去。

另一种是搭建家庭私有云,为此花很多钱买硬件设备来解决就没意思了。

还有别的办法吗?

应该有,研究研究……

最后发现了一个软件,Plex 可以很舒服地解决这个问题,手机上的客户端可以自动同步照片到家里的服务器上。

但是光备份多没意思啊,要是能更好地利用局域网的特点,在电脑上的图片和电影,能够流畅地放到电视上播放观看多好啊。

于是开始折腾下面的部分。

闲置的笔记本

我老婆的旧笔记本不用了,闲置也是浪费。我就把它装到电视柜下面,专门买了 HDMI 的线,再准备了无线鼠标和无线键盘,想的是可以坐在远处操作,可以看电影和 YouTube 视频。电影下载,播放,看起来似乎终于把笔记本变成了视频播放器。

可是三分钟热度以后就不用了。

发现用上面提到的 Plex 可以更有趣地解决这个问题。台式机上面下载电影,存放照片备份,Plex 支持以流媒体的方式在远程的客户端观看视频或者图像。于是在 FireTV 这个小盒子里面下载 Plex 客户端,搞定原来旧笔记本的功能了。而且,不只是盒子,在手机上也可以装客户端。

不过,依旧是三分钟热度。o(╯□╰)o

实际上,还是 FireTV 安装的 YouTube 功能最实用(Google 和 Amazon 因为它图标一类的问题争吵以后,YouTube app 已经不能直接在 FireTV 上使用了,现在需要通过一个中间媒介 app,FireFox,再来使用),或者别的视频软件。

我对自己还是有认知的。

而且,似乎平时只有吃饭的时间会坐在电视前看电视,看电影这样长时间的活动,要么电影院,要么电脑,就是没有端坐在电视机前的习惯……

于是折腾一圈之后,忽然意识到,旧笔记本又闲置下来了。

这回怎么办呢?

好吧,研究了一下,可以把它改装成 ChromeBook 一样的上网本,下载 Chrome OS,拷贝到 U 盘里面,备份数据以后安装到就笔记本上……

太聪明啦!

正高兴呢,兴致勃勃地准备动手。我老婆忽然问我,听起来不错,可是装好以后你会经常去用吗?

呃…… O__O “…

老实说,不会。家里有一个 iPad 上网都很少用,上网的事情还是笔记本或者台式机最实用了……

不过,话说回来……

谁在乎呢?

享受折腾的快乐就好,不是么?

文章未经特殊标明皆为本人原创,未经许可不得用于任何商业用途,转载请保持完整性并注明来源链接 《四火的唠叨》

×Scan to share with WeChat

你可能也喜欢看:

  1. 程序员眼中三种类型的公司
  2. C++程序员和 Java 程序员的差异
  3. 程序员漫画
  4. 再谈程序员学英语
  5. 谈谈月饼事件

3 thoughts on “折腾的快乐”

  1. freemandealer says:
    06/22/2019 at 5:12 PM

    虽然知道折腾很快乐,但是现在开始慢慢质疑自己的 “折腾” 了。
    就像博主一样,总是设想一些很美的应用场景,但是最终三分钟热度后弃之不用。
    快乐是快乐,但觉得很耗时间和眼睛(投入了就忘记休息)。毕竟程序员的 “空闲时间” 都是很珍贵的,觉得是不是应该做些更有意义的事?

    我现在临时的解决方法就是,折腾的想法都记下来酝酿和沉淀,但一个季度只从这些想法中选一个折腾。

    Reply
  2. laixintao says:
    01/10/2018 at 5:14 PM

    小项目的单点执行保证、日志、告警是个痛点,要是有平台来解决这个东西就好了。

    Reply
  3. craneyuan says:
    01/10/2018 at 10:18 AM

    不折腾的时候就是老了,哈哈哈

    Reply

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

订阅·联系

四火,啰嗦的程序员一枚,现居西雅图

Amazon Google Groovy Hadoop Haskell Java JavaScript LeetCode Oracle Spark 互联网 亚马逊 前端 华为 历史 同步 团队 图解笔记 基础设施 工作 工作流 工具 工程师 应用系统 异步 微博 思考 技术 数据库 曼联 测试 生活 眼界 程序员 管理 系统设计 缓存 编程范型 美股 英语 西雅图 设计 问题 面向对象 面试

分类

  • Algorithm and Data Structure (30)
  • Concurrency and Asynchronization (6)
  • System Architecture and Design (43)
  • Distributed System (18)
  • Tools Frameworks and Libs (13)
  • Storage and Data Access (8)
  • Front-end Development (33)
  • Programming Languages and Paradigms (55)
  • Testing and Quality Assurance (4)
  • Network and Communication (6)
  • Authentication and Authorization (6)
  • Automation and Operation Excellence (13)
  • Machine Learning and Artificial Intelligence (6)
  • Product Design (7)
  • Hiring and Interviews (14)
  • Project and Team Management (14)
  • Engineering Culture (17)
  • Critical Thinking (25)
  • Career Growth (57)
  • Life Experience and Thoughts (45)

推荐文章

  • 聊一聊分布式系统中的时间
  • 谈谈分布式锁
  • 常见分布式系统设计图解(汇总)
  • 系统设计中的快速估算技巧
  • 从链表存在环的问题说起
  • 技术面试中,什么样的问题才是好问题?
  • 从物理时钟到逻辑时钟
  • 近期面试观摩的一些思考
  • RSA 背后的算法
  • 谈谈 Ops(汇总 + 最终篇):工具和实践
  • 不要让业务牵着鼻子走
  • 倔强的程序员
  • 谈谈微信的信息流
  • 评审的艺术——谈谈现实中的代码评审
  • Blog 安全问题小记
  • 求第 K 个数的问题
  • 一些前端框架的比较(下)——Ember.js 和 React
  • 一些前端框架的比较(上)——GWT、AngularJS 和 Backbone.js
  • 工作流系统的设计
  • Spark 的性能调优
  • “残酷” 的事实
  • 七年工作,几个故事
  • 从 Java 和 JavaScript 来学习 Haskell 和 Groovy(汇总)
  • 一道随机数题目的求解
  • 层次
  • Dynamo 的实现技术和去中心化
  • 也谈谈全栈工程师
  • 多重继承的演变
  • 编程范型:工具的选择
  • GWT 初体验
  • java.util.concurrent 并发包诸类概览
  • 从 DCL 的对象安全发布谈起
  • 不同团队的困惑
  • 不适合 Hadoop 解决的问题
  • 留心那些潜在的系统设计问题
  • 再谈大楼扔鸡蛋的问题
  • 几种华丽无比的开发方式
  • 我眼中的工程师文化
  • 观点的碰撞
  • 谈谈盗版软件问题
  • 对几个软件开发传统观点的质疑和反驳
  • MVC 框架的映射和解耦
  • 编程的未来
  • DAO 的演进
  • 致那些自嘲码农的苦逼程序员
  • Java 多线程发展简史
  • 珍爱生命,远离微博
  • 网站性能优化的三重境界
  • OSCache 框架源码解析
  • “ 你不适合做程序员”
  • 画圆画方的故事

近期评论

  • Ticket: TRANSACTION 1.922915 BTC. Go to withdrawal >> https://yandex.com/poll/enter/BXidu5Ewa8hnAFoFznqSi9?hs=20bd550f65c6e03103876b28cabc4da6& on 倔强的程序员
  • panshenlian.com on 初涉 ML Workflow 系统:Kubeflow Pipelines、Flyte 和 Metaflow
  • panzhixiang on 关于近期求职的近况和思考
  • Anonymous on 闲聊投资:亲自体验和护城河
  • 四火 on 关于近期求职的近况和思考
  • YC on 关于近期求职的近况和思考
  • mafulong on 常见分布式基础设施系统设计图解(四):分布式工作流系统
  • 四火 on 常见分布式基础设施系统设计图解(八):分布式键值存储系统
  • Anonymous on 我裸辞了
  • https://umlcn.com on 资源链接
© 2025 四火的唠叨 | Powered by Minimalist Blog WordPress Theme