Disclaimer The original post was written by Andrew Gerrand on 13 July, 2010. I’m reposting it not because it’s “absolutely” correct, it just offers another perspective of concurrent programming, and in SOME case, it might be more suitable than “sharing memory” or “mutex stuff”. It may also help you appreciate some design philosophy of Go, and provide you with some inspiration when dealing with concurrency or other problems. Again I’m not saying it’s BETTER, it’s just another another way of thinking and designing. ...

August 30, 2024 · 5 min · ChaosNyaruko

How to measure execution time of function in golang, excluding waiting time

Two ways from StackOverflow Builtin Way Using “syscall” func GetCPU() int64 { usage := new(syscall.Rusage) syscall.Getrusage(syscall.RUSAGE_SELF, usage) return usage.Utime.Nano() + usage.Stime.Nano() } Explanation Utime: user CPU time Stime: system CPU time RUSAGE_SELF: means it’s measuring the “calling” process man 2 getrusage for more information NOTE: The documentation for syscall.Timeval suggests that Nano() returns the time in nanoseconds since the Unix epoch, but in my tests and looking at the implementation it appears actually to return just the CPU time in nanoseconds, not in nanoseconds since the Unix epoch. ...

August 30, 2024 · 2 min · ChaosNyaruko

模糊搜索工具FZF的介绍与个人实践

前言 本文是什么 终端工具FZF的简单介绍和入门 「个人」对此工具的使用和实践,尤其是一些扩展使用方式 【矫情】由小及大,怎么联想到一些其他的东西的 本文不是什么 不是“最佳实践” 「最佳实践」是指在特定领域内经过实践检验并证明具有卓越效果的技术、方法、流程、活动或机制。它们之所以被称为「最佳」,是因为这些实践能够在提高效率、降低成本、提升质量、确保安全、增强客户满意度等方面展现出超越平均水平或现有做法的优势。 这篇文章显然配不上这个称谓 不是系统性的使用教程,更不是使用手册 RTFM 😊 Wiki FZF是什么 基于终端和命令行的工具(CLI) 提供「模糊」搜索的功能(Fuzzy Search) 提供一个简单但直观的TUI (Integrated with Other Tools) 基础用法 查找文件:直接使用 你可以直接在命令行下面输入对应的命令,-m表示多选,默认行为是列出当前文件夹下的所有文件,选中后按回车会把路径/文件名显示在命令行上 fzf fzf -m vim $(fzf -m) 还可以通过环境变量配置预览效果、窗口大小、快捷键等。 因为是环境变量,所以如果在Shell配置文件里将其export,让它被子进程继承,那么所有的相关配置无需重复配置,便可以在子进程(例如Vim中)生效,后面将在Vim集成章节中稍稍展示一下。 典型例子如下(具体含义请参见官方文档): FZF_DEFAULT_COMMAND FZF_DEFAULT_OPTS FZF_DEFAULT_OPTS_FILE 简单语法 fzf支持一套语法(丐版正则),让你能在fuzzy的过程中,还是有一定的搜索效率,以下仅列出部分,更多请参考官方文档 Token Match type Description sbtrkt fuzzy-match Items that match sbtrkt 'wild exact-match (quoted) Items that include wild ^music prefix-exact-match Items that start with music .mp3$ suffix-exact-match Items that end with .mp3 !fire inverse-exact-match Items that do not include fire !^music inverse-prefix-exact-match Items that do not start with music !.mp3$ inverse-suffix-exact-match Items that do not end with .mp3 与Shell集成 查看Shell命令历史 使用快捷键Ctrl+R查看Shell命令历史,如果你使用的是原始的bash或者zsh的话,基本可以替换原来的功能,使用起来友好得多;如果你和我一样,主要使用fish,那可能不一定用得上,但我由于个人使用习惯,目前仍然在使用fzf的这个功能,而不是fish自带的那个也蛮好用的历史记录。 ...

July 27, 2024 · 2 min · ChaosNyaruko

Lisp之根源

The ORIGINAL post Abstract 约翰麦卡锡于1960年发表了一篇非凡的论文,他在这篇论文中对编程的贡献有如 欧几里德对几何的贡献.1 他向我们展示了,在只给定几个简单的操作符和一个 表示函数的记号的基础上, 如何构造出一个完整的编程语言. 麦卡锡称这种语 言为Lisp, 意为List Processing, 因为他的主要思想之一是用一种简单的数据 结构表(list)来代表代码和数据. 值得注意的是,麦卡锡所作的发现,不仅是计算机史上划时代的大事, 而且是一种 在我们这个时代编程越来越趋向的模式.我认为目前为止只有两种真正干净利落, 始终如一的编程模式:C语言模式和Lisp语言模式.此二者就象两座高地, 在它们 中间是尤如沼泽的低地.随着计算机变得越来越强大,新开发的语言一直在坚定地 趋向于Lisp模式. 二十年来,开发新编程语言的一个流行的秘决是,取C语言的计 算模式,逐渐地往上加Lisp模式的特性,例如运行时类型和无用单元收集. 在这篇文章中我尽可能用最简单的术语来解释约翰麦卡锡所做的发现. 关键是我 们不仅要学习某个人四十年前得出的有趣理论结果, 而且展示编程语言的发展方 向. Lisp的不同寻常之处–也就是它优质的定义–是它能够自己来编写自己. 为了理解约翰麦卡锡所表述的这个特点,我们将追溯他的步伐,并将他的数学标记 转换成能够运行的Common Lisp代码. Addendum Paul Graham原文

June 21, 2024 · 1 min · ChaosNyaruko

如何学习"学习新技术"?

简介 主要面向计算机技术新手(甚至是简中限定),分享一下我对 如何拓宽技术视野 如何找到自己想要的东西 的一些建议和体会,希望能帮助到一些朋友,随手一写,随时更新。 免责声明: 仅为个人体会,无任何权威性,我也是一个时常陷入迷茫的普通人,请酌情食用。 正文 保持【好奇心】与对计算机科学/工程的【热情】,多【思考】 最好是有科学上网的能力 -> 你如果自己搭的话,这个过程甚至就已经是延伸视野的起点之一了 学好英语,具备基本的读写能力,最好是能有一定的听说能力 系统性学习,比如读经典书籍,相信“正确”事情的长期价值。我个人是不太相信“碎片化”学习的,它只适用于一定特定的场景。 不要认为“折腾”是完全浪费时间。“折腾”重要的是过程,不是结果。 摸鱼是第一生产力,这个行业确实变化很快,勤奋可能会让你挣钱,并不完全能让你的能力提升(如果你的目的只是挣钱,那可能就无所谓了),一般来说【懒】的牛人会推动技术进步), 如果你在工作 ,你要做的是在下班后完全放下工作、甚至工作时间间歇性地放下工作。工作能带给你提升,但不会一直给你提升 如果你还是学生,那么恭喜你,你有远超工作党们的折腾时间,请不要局限于课堂,甚至不要当老师眼里的好学生。大多数老师不会为你的未来负责,为自己的未来负责的只有你自己 常逛GitHub或优质的技术论坛,技术视野多是交流出来的(但简中互联网优质资源确实相对少) Google/ChatGPT GitHub: awesome-xxxx telegram/discord的相关群组 如果没法翻墙,可以考虑一些“卖课”的课程,但要仔细甄别,少被割韭菜。免费的话B站有很多还不错的资源(这点上我还是喜欢B站的),包括一些课程,或者是优质的UP主的分享 ….. 向周围(或者网络公众人物)优秀的人学习,你认为他在某个方面值得你学习,去学就是了,但不要把自己饭圈化了,人无完人,小心人家割你韭菜(当然你如果真的愿意,那就不是被割) 对于绝大多数人来说,计算机是工程学科,动手去做,螺旋上升,learn by projects … 举例 我是怎么接触到vim/nvim的,怎么“学会”vim/nvim的 怎么找到我视频里那些“教程”的 missing-semster 反面例子:AI知识学习🥲,战略上懒惰啦 … 结尾 我不是一个推崇方法论的人,任何方法论都有其适用和不适用的点(此处似乎有方法论悖论🤣)。很多人懂得很多道理,却仍然过不好这一辈子(包括我自己)。正所谓“学而不思则罔,思而不学而殆”。 我只能说多实践、多思考:光思考(“思”)可能会变成满口方法论但却眼高手低的人,光实践(“学”)可能会让自己迷失在一条路上,用战术上的勤奋掩盖战略上的懒惰。 大家共勉,Peace.

April 13, 2024 · 1 min · ChaosNyaruko