工欲善其事,必先利其器

防杠声明Disclaimer 工具不是最重要的,最重要的永远是你的idea、核心逻辑和实现(不局限于编程),除非你的工作就是打磨工具本身 但顺手的工具至少可以让你在实现自己的想法时,不会被无关的事项掣肘,甚至形成瓶颈而半途而废 GUI也很好,但TUI/CLI也有自己的魅力和优势,本文只是强调后者,并不否定前者 为什么使用纯文本+命令行工具 纯文本方便做版本管理,而且很容易按自己的需求进行批量进行格式化/添加删除内容等,不受专有格式的限制(比如markdown/latex vs word,大家如果是用word写自己的学位论文或者什么其他复杂文档的话是不是会存在V1.0、V2.0、V3.0等诸多相似的副本…) 命令行工具,资源占用一般少(主要指前端资源, 现在的跨端应用很多是electron写的,资源占用比较大),且类UNIX系统一般自带,一般也是跨平台的,易脚本化 命令行工具(尤其是通用命令行工具),一般遵循UNIX的“Do one thing and do it well”的设计哲学(见《UNIX编程艺术》),单个工具易于使用(某种程度上可能比一些产品设计不佳的GUI工具认知成本低得多),多个工具之间也容易相互配合(例如著名的使用“管道”连接stdin/stdout) 所以对于我个人,只要不是使用专属工具才能解决的需求场景,在工具的选择上,会比较倾向于可以纯文本配置的命令行工具,另外: 本文也是仅介绍,不介绍深入使用,按需了解,希望起到抛砖引玉的作用。另外像ls/cp/rm/git/…之类的暂时就不提了 虽然工具这个东西比较个人化,但我做这个分享的初衷是,哪怕有一点点帮助到看到本文的读者也值得了 工具介绍 zsh/fish zsh大约是bash的超集,但是有更强的能力(补全/高亮等),mac默认带,配合oh-my-zsh等全家桶体验较好 fish是一个可能更用户友好的shell工具,例如一些oh-my-zsh才有的功能fish都是自带的,且脚本语言更贴近日常使用的编程语言 tldr tldr是一个由社区维护的帮助文档,相比软件自带的help,它旨在提供更“简易”的类cheatsheet式帮助 z / autojump z是用shell编写的“智能跳转”脚本,可以实现自适应的跳转文件夹 autojump是其用更正统的编程语言写的,功能更强的类似软件,但个人的使用场景和z差不多,但是各大包管理器有,所以安装可能更直白,按需使用即可 curl 不多说,超强大的请求发送工具,其实不局限于HTTP/HTTPS,一般我在简易场景下更喜欢用这个而不是Postman之类的图形界面,不是因为curl做不到,而是我懒得查用法了,有ChatGPT或许容易一些🤣 curl is a tool for transferring data from or to a server. It supports these protocols: DICT, FILE, FTP, FTPS, GOPHER, GOPHERS, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, MQTT, POP3, POP3S, RTMP, RTMPS, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET or TFTP. The command is designed to work without user interaction. ...

April 18, 2023 · 1 min · ChaosNyaruko

How can I access host in WSL?

Introduction Just my experience for visiting my host(or the services on my host) in a WSL. Differences between WSL1 and WSL2 My Environment A mac mini as server, 192.168.0.104/48 A windows11 laptop, 192.168.0.105/48 A ubuntu WSL1 on the laptop A debian WSL2 on the laptop WSL1 WSL1 uses a “bridged network apapter”, which means that it will make it bridged to the host Network Interface Card (NIC) resulting in a unique IP address that will change on restart. So you can access your host by localhost. ...

March 12, 2023 · 3 min · ChaosNyaruko

Should I learn vim in 2023?

Introduction Vim is one of the most well-known editors(the other one is Emacs), maybe “infamous” for its steep learning curve. . Nowadays there are lots of good editors/IDEs(VS/VSCode/Atom/SublimeText/Jetbrains-series/…) for programmers, so one might ask, should I learn the ancient editor in 2023? TL;DR It depends on your workflow and habits. In general, if you “have to” or “like to” use command-line tools in your workflow, then “yes, you should learn at least basic vi usage”. If not, learning vim may not be that helpful, but personally I still recommend you to do that. ...

March 5, 2023 · 3 min · ChaosNyaruko

Start I have tried several completion schemes in vim/neovim, here is my experience. Some cons may due to my lack of familiarity, and have solutions. I’m glad to have your feedback. YouCompleteMe Pros Almost IDE-like, shipped with many useful funtionalities. YCM also provides semantic IDE-like features in a number of languages, including: displaying signature help (argument hints) when entering the arguments to a function call (Vim only) finding declarations, definitions, usages, etc. of identifiers, and an interactive symbol finder displaying type information for classes, variables, functions etc., displaying documentation for methods, members, etc. in the preview window, or in a popup next to the cursor (Vim only) fixing common coding errors, like missing semi-colons, typos, etc., semantic renaming of variables across files, formatting code, removing unused imports, sorting imports, etc. Cons Almost perfect, but still have some problems, just for me, for now. ...

February 24, 2023 · 2 min · ChaosNyaruko

“差生文具多”还是“工欲善其事必先利其器”?

开始 古人云“工欲善其事,必先利其器”,这是啥意思我就不科普了,想必大家都知道。然而现在也有个说法,叫做“差生文具多”,适用的场景包括但不局限于: “字面意思”, 上学时成绩一般的学生却有着很多高档或者花里胡哨的文具(这里没有贬低这些同学的意思,成绩说明不了很多问题,只是说明有时存在这个现象) 篮球场上的装备党,戴最拉网的装备,挨最重的打🤣 “立志”于培养自身某个习惯而购买了大量装备,却没有注重于事情本身,例如立志于培养健身习惯的人买了很多装备,像速干衣、专业跑步鞋、办健身卡等,却只有第一次;又例如有的人买了Kindle等电子设备想培养自己的阅读习惯,结果却沦为泡面盖等等。(同样这里可能有用花费来激励自己的结果,有很多人也确实养成了习惯,这里只是提一种典型的现象而已,无冒犯之意) … 其实在很多场景下都有类似的现象,而作为一个菜鸟程序员,自然也在编程或者说计算机工程这个领域中,随着自己经验的增加和深入思考,发现自己或者同行或多或少都有着类似的现象。因此在这里写下自己的一些思考和观点,用以劝诫自己,也欢迎友好的交流。对于我的观点中读者可能不同意的部分,可以在评论区交流,但不接受抬杠和秀优越感,你杠就是你对:) 如何看待 本节的阐述会主要辅以编程领域的经典流量密码“最好的编辑器”话题,对我的一些观点进行说法。这个话题其实很有意思,我并不想自诩是一个非常牛逼的程序员,但我认为在这个话题相当一部分的口水都是由那些对各大编辑器的特性不了解的人挑起的,有的甚至都不了解他们观点对立的编辑器特点,就开始各种攻击。虽然这个争论本身并不是本文的重点,但下面以Vim作为主要角色的辅助阐述可能或多或少会涉及到这一点,如果和你的观点不同,希望能够求同存异。 要辩证这个问题,不要二极管 这里想说的是“适度”/“中庸”/…,或者很多其他类似的词汇,也是最核心的观点。 Vim以其超强的扩展性而闻名,在这一点在Emacs也是,甚至更甚,但要将他们配置成适合开发一个真实项目的顺手的环境,可能需要自定义很多配置项,而Vim/Emacs所具备的扩展能力其实足够让他们通过配置具备现代IDE的80%甚至全部的功能。 但就我个人而言,我虽然用Vim,但是并没有像很多教程一样,把它配置成一个从界面到功能都和现代IDE相似的环境,因为那在很多场景下不是我想要的,而且要花出非常多的精力,想达到现代IDE的功能可能需要折腾很久,还有很大的维护成本,体验可能还比不上,如果折腾工具并不没有给自己的生产效率带来足够的提升,那大概就是所谓的“差生文具多”了。但 而另一方面Vim/Emacs甚至VSCode的扩展能力和生态是又让我相当热衷于维护一套自己的配置,打磨自己的开发环境和工具,因为这样我就不用因为IDE的更换、开发商的“喂屎”等各种因素,而让自己被迫去记住另一套快捷键,去熟悉另一套操作生态,而这个打磨的过程便是所谓的“工欲善其事,必先利其器”了,也就是我“砍柴”之前所磨的“刀”,只要把握好这个度,不要让磨刀耽误了砍柴,或许便达到了平衡。 不要本末倒置,也不要嘲讽你不能理解/和你不致的事情 对于一些人来说,不要光磨刀,不砍柴,比如大多数的程序员,折腾编辑器或许可以取代玩游戏,但最好不要耽误本职工作与正经事儿 每个人都自己的想法和追求,不要觉得和你不一样的人就是傻逼/装逼犯,也许他们的工作就不是砍柴,磨刀就是他们的工作,而磨好的刀可以帮助他们做出更好砍柴的工具。有人折腾编程工具是因为他们的乐趣就是这个,或者说他们是为其他程序员提供更棒的工具的人,没有必要说“编程用XXX IDE不香吗,用Vim/Emacs装什么逼呢”,有没有想过你手上所谓好用的IDE正是通过不断的折腾和体验才有目前的形态的吗?退一万步讲,人家就是装逼怎么了,装逼就是能提供情绪价值,在一些场景上甚至因为这个提高生产价值,抨击别人装逼请拿出你自己不装逼的产物,无意义的攻击带不来任务东西,哪怕是满足感 合适的场景使用合适的工具 工具是用来提高生产效率的 登录远程机器你还有IDE可以用吗,修改配置文件等你可能不得不使用一些看起来很古老很不易于使用的工具,vi/vim/nano等等,或者退而求其次使用vscode的remote-ssh功能,但你能确定你的所有环境都能使用吗,例如树莓派、或者能力更弱甚至没有网络环境的嵌入式开发板?vi/vim可能就是你唯一可能的工具,适当“利其器”哪怕只是很基础的设置可能也足够了 写Java,据我所知,idea仍然是体验最好的工具 数据挖掘/分析,jupyter notebook就是能提供很好的体验 … 适度折腾,均摊风险 使用Vim这类编辑器,你可以自定义一些东西,虽然人的习惯和适应能力很强,但有适配的自由度仍然是很重要的,因为很多默认设置就是很别扭,怎么也习惯不了 “自由”非常重要,具体可以参考《自由软件,自由社会》这本书,厂商不是慈善家,虽然听起来很不友好,但如果你没有使用自由软件的能力,在被厂商喂屎时就很被动,包括但不局限于免费变收费、涨价、功能阉割、后门等等,你可能因为过高的迁移成本而不得不选择强行吃屎,因此商业软件虽然方便,但我仍然建议保留使用自由软件能力和倾向,尽管多数情况下自由或者开源(开源不等于自由)软件需要更多的折腾。 纯文本的力量 这是个题外话,很多商业软件并不提供纯文本的配置方式,这导致了配置同步很多程度上只能依赖于厂商,而纯本文的配置文件,你完全可以使用任何同步方式(私有云/Git等),管理自己不同设备内的对应配置,很方便,通用性也很强 备注 可能后续会出Vim系列的视频教程,虽然我个人主力使用Vim是在不久之前,使用时间并不长,但确实体会到了这个古老的编辑器所具备的魅力,也希望了解更多技巧,开坑的话我会补充对应的视频链接。 我的配置文件可以参考ChaosNyaruko dotfiles,更多是我个人使用,组织得可能不是很好,废配置也比较多😒,有空再整理吧

February 11, 2023 · 1 min · ChaosNyaruko