[{"content":"Codex is good.\nIt fixes my blog post issues.\nAnd it\u0026rsquo;s very fast.\n","permalink":"https://anotherbug.com/2026/04/08/test-publish-using-codex/","summary":"\u003cp\u003eCodex is good.\u003c/p\u003e\n\u003cp\u003eIt fixes my blog post issues.\u003c/p\u003e\n\u003cp\u003eAnd it\u0026rsquo;s very fast.\u003c/p\u003e","title":"Test Publish Using Codex"},{"content":" slop: named Merriam-Webster’s word of the year for 2025. It defines: digital content of low quality that is produced usually in quantity by means of AI.\nsyntropy: is the act of creating clarity, coherence, and usable signal out of chaos. It\u0026rsquo;s the opposite of entropy \u0026ndash;the natural slide toward disorder where information gets noisy, dashboards bloat, and decisions degrade.\nthink: “Think” that single word was used by Watson as a guiding principle at IBM beginning in the 1910s–1920s. It appeared on signs, employee materials, and especially on the “THINK” notebooks given to IBM staff.\nThinking is the hardest work there is, which is probably the reason why so few engage in it. - Thomas J. Watson\n","permalink":"https://anotherbug.com/2026/01/04/slop-syntropy-think/","summary":"\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eslop: named Merriam-Webster’s word of the year for 2025. It defines: digital content of low quality that is produced usually in quantity by means of AI.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003esyntropy: is the act of creating clarity, coherence, and usable signal out of chaos. It\u0026rsquo;s the opposite of entropy \u0026ndash;the natural slide toward disorder where information gets noisy, dashboards bloat, and decisions degrade.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ethink: “Think” that single word was used by Watson as a guiding principle at IBM beginning in the 1910s–1920s. It appeared on signs, employee materials, and especially on the “THINK” notebooks given to IBM staff.\u003c/p\u003e","title":"slop, syntropy, and think"},{"content":" 九十年代后期，我上小学的时候，学校资源匮乏，纸都不多。打印机，复印机不是那个年代的东西。\n作业只有练习册，接触到的题目就那么多，想做题海战术都没有，记得到初中的时候好点，有比如「点拔」这样的辅导书。\n三、四年级的时候数学老师给当时班上的前几名「加餐」，额外出一些类似奥赛的数学题。那是写在便签纸上，类似这样的吧。 具体的操作是这样。在便签纸上写之前老师在下面要放上两张便签纸同时每张上面放上复写纸（脱蓝纸），类似这样的吧。通过复写纸达到了复印的效果。但是老师写的时候需要很用力，这样才能保证下面第二层的便签纸上的字能够看见，但又不能太用力，否则会导致书写的纸被划烂掉。 每次放学后老师会把这三份额外的作业题交给三个人。我记得是班长、副班长、和学习委员。每次发题的时候老师都会说一句：「最上面的清楚，最底下的可能有看不清的点，你们相互问一下，你们几个轮流着拿这每一层的纸，这样不会每次都是一位同学拿到最下面的」。在还没有做题之前，老师先给我们上了公平这一课。\n我有几次是拿到了最上面的原版手写纸，上面的题目是什么，我早已记不得了。如今依然萦绕脑海的只有字里行间的笔迹，还有用手托起纸以后纸背面的毛刺扎手的感觉。那新出的题，我还没有抚平纸在上面写答案。\n科技日新月异，有了 Email。\n这个年代，我们把这样看似繁笨的操作简化成了：CC （Carbon Copy）。少了纸张，也少了 CC 的限制。当年可能因为手写复印的限制导致没法复印出更多的题目，这就是那个时代的灰尘掉到了彼时第四名的头上。\n现状就是现在的学生对纸不重视，对题目不重视，更不知道背后出题的老师。因为一切都太多，太快，和与之成对的太少的代价。\nKFK 预言说在未来，由于电子化，纸质的书籍会越来越少。那时候我们现在习以为常的纸张，书本和日常使用都会变成历史，也会是一种享受。\n","permalink":"https://anotherbug.com/2023/12/17/cc/","summary":"\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e九十年代后期，我上小学的时候，学校资源匮乏，纸都不多。打印机，复印机不是那个年代的东西。\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e作业只有练习册，接触到的题目就那么多，想做题海战术都没有，记得到初中的时候好点，有比如「点拔」这样的辅导书。\u003c/p\u003e","title":"CC"},{"content":" 我是 INTJ 性格，为了尝试了解自己，看了些 MBTI (Myers-Briggs Personality Type Indicator) 性格分类法。说说我的理解：\n研究对象：你自己（简称系统） MBTI 16 型性格，每个都是由四个字母构成的，其实就是四个问题的答案。 问题 1: 系统获取能量的方式 （System Source of Energy） Introvert 内向 (I) 从内获取能量 Extravert 外向 (E) 从外获取能量 问题 2: 系统如何认识世界 （System Input） Sensing 感觉 (S) iNtuition 直觉 (N) 问题 3: 系统如何改变世界 （System Output） 思维 Thinking （T) 情感 Feeling (F) 问题 4: 系统常用的工作模式 （System Usage Preference） 判决 Judge (J) 感知 Perceive (P) 就这样，四个问题，每个两种方式（你也看出还是基于二分法），组合成 16 种类型。简单点评：\n问题 1 可以大致理解成性格 问题 4 可以理解成入世以及出世的选择 什么是 INTJ， 喜欢独处，凭借超级直觉，纯理性的一个策划者（入世）\nThat\u0026rsquo;s it.\n","permalink":"https://anotherbug.com/2022/06/19/what-is-intj/","summary":"\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e我是 INTJ 性格，为了尝试了解自己，看了些 MBTI (Myers-Briggs Personality Type Indicator) 性格分类法。说说我的理解：\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e研究对象：你自己（简称系统）\u003c/li\u003e\n\u003cli\u003eMBTI 16 型性格，每个都是由四个字母构成的，其实就是四个问题的答案。\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"问题-1-系统获取能量的方式-system-source-of-energy\"\u003e问题 1: 系统获取能量的方式 （System Source of Energy）\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eIntrovert 内向 (I) 从内获取能量\u003c/li\u003e\n\u003cli\u003eExtravert 外向 (E) 从外获取能量\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"问题-2-系统如何认识世界-system-input\"\u003e问题 2: 系统如何认识世界 （System Input）\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSensing 感觉 (S)\u003c/li\u003e\n\u003cli\u003eiNtuition 直觉 (N)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"问题-3-系统如何改变世界-system-output\"\u003e问题 3: 系统如何改变世界 （System Output）\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e思维 Thinking （T)\u003c/li\u003e\n\u003cli\u003e情感 Feeling (F)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"问题-4-系统常用的工作模式-system-usage-preference\"\u003e问题 4: 系统常用的工作模式 （System Usage Preference）\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e判决 Judge (J)\u003c/li\u003e\n\u003cli\u003e感知 Perceive (P)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e就这样，四个问题，每个两种方式（你也看出还是基于二分法），组合成 16 种类型。简单点评：\u003c/p\u003e","title":"什么是 INTJ 性格"},{"content":"记录所想 2023 As Shakespeare said thru a character, \u0026ldquo;Caesar, beware the ides of March.\u0026rdquo; #Life 3/15/2023 2026 \u0026ldquo;Source code is a liability, not an asset!\u0026rdquo; #Programming 2026-04-08 ","permalink":"https://anotherbug.com/thoughts/","summary":"\u003ch1 id=\"记录所想\"\u003e记录所想\u003c/h1\u003e\n\u003ch2 id=\"2023\"\u003e2023\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAs Shakespeare said thru a character, \u0026ldquo;Caesar, beware the ides of March.\u0026rdquo; #Life 3/15/2023\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"2026\"\u003e2026\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u0026ldquo;Source code is a liability, not an asset!\u0026rdquo; #Programming 2026-04-08\u003c/li\u003e\n\u003c/ul\u003e","title":"Thoughts"},{"content":" Flomo 是一个好的应用，我曾写文章介绍怎么从 Todo 里面把内容导入到 Flomo，\n但是 Flomo 的隐私政策 (Privacy Policy) 让我无法接受，我决定不再使用它。\n另外由于 Flomo 里面的笔记和我 Obsidian 里面的日志无法一起集中起来做搜索，所以我决定也不再使用 Todo。\n本着统一的原则，也使用 Obsidian 来保存笔记。如何把 Flomo 笔记导入 Obsidian。具体是通过 Flomo 的网上导出 HTML 功能，然后写程序解析一下，这里面做了几个事情：\nA. 设计上使用一个大文件，命名为 Scibbles.md，所有笔记内容都在这个文件里面。\nB. 新增一个 #Scribble-edit-later 标签，统一管理无标签笔记，方便后面整理。\nC. 增加了时间属性。笔记的三要素（时间、地点、内容）。地点暂时没有考虑。\nD. 解决了一些格式问题：包括标签无法显示，多行内容简化，增加盘古之白等。\n代码基于 go，如下：\npackage main import ( \u0026#34;bufio\u0026#34; \u0026#34;fmt\u0026#34; \u0026#34;io/ioutil\u0026#34; \u0026#34;os\u0026#34; \u0026#34;regexp\u0026#34; \u0026#34;strings\u0026#34; \u0026#34;github.com/PuerkitoBio/goquery\u0026#34; \u0026#34;github.com/vinta/pangu\u0026#34; ) func check(e error) { if e != nil { panic(e) } } func parseFlomo() { content, err := ioutil.ReadFile(\u0026#34;202109.html\u0026#34;) check(err) doc, err := goquery.NewDocumentFromReader(strings.NewReader(string(content))) check(err) // Find the memo items f, err := os.Create(\u0026#34;09.md\u0026#34;) w := bufio.NewWriter(f) check(err) defer f.Close() doc.Find(\u0026#34;.memos .memo\u0026#34;).Each(func(i int, memo *goquery.Selection) { content := memo.Find(\u0026#34;.content\u0026#34;).Find(\u0026#34;p\u0026#34;).Text() space := regexp.MustCompile(`\\s+`) content = space.ReplaceAllString(content, \u0026#34; \u0026#34;) ts := memo.Find(\u0026#34;.time\u0026#34;).Text() fmt.Printf(\u0026#34;- %s [%s]\\n\u0026#34;, content, ts) // 处理 Tag 1) 如果没有 Tag，增加 #Scribble-edit-later 标签 2) 如果已经有 Tag，在 # 前面加个空格，防止 Obsidian 识别不了。 var formatedScribble string = \u0026#34;\u0026#34; idx := strings.Index(content, \u0026#34;#\u0026#34;) switch idx \u0026gt; 0 { case true: var formatedContent string = \u0026#34;\u0026#34; for i, ch := range content { if string(ch) == \u0026#34;#\u0026#34; { formatedContent = content[:i] + \u0026#34; \u0026#34; + content[i:] break } } formatedScribble = fmt.Sprintf(\u0026#34;- %s [%s]\\n\u0026#34;, formatedContent, ts) case false: formatedScribble = fmt.Sprintf(\u0026#34;- %s #Scribble-edit-later [%s]\\n\u0026#34;, content, ts) } // 恩，在增加 盘古之白 w.WriteString(pangu.SpacingText(formatedScribble)) w.Flush() }) } func main() { parseFlomo() } ","permalink":"https://anotherbug.com/2021/09/12/export-flomo/","summary":"\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFlomo 是一个好的应用，我曾写文章介绍\u003ca href=\"https://anotherbug.com/2021/06/30/import-microsoft-todo-notes-to-flomo/\"\u003e怎么从 Todo 里面把内容导入到 Flomo\u003c/a\u003e，\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e但是 \u003ca href=\"https://help.flomoapp.com/privacy\"\u003eFlomo 的隐私政策 (Privacy Policy)\u003c/a\u003e 让我无法接受，我决定不再使用它。\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e另外由于 Flomo 里面的笔记和我 Obsidian 里面的日志无法一起集中起来做搜索，所以我决定也不再使用 Todo。\u003c/p\u003e","title":"Export Flomo"},{"content":" The future is already here - it\u0026rsquo;s just not evenly distributed. William Gibson 未来已经来临，只是还没有平均分布。 威廉.吉布森，科幻小说作家\nSense SemVer 语义化版本 2.0.0 API 更新时，应该遵循semver 的规范进行更新，使用 X.Y.Z。其中 X 是 Major 版本号 （When you make an incompatible change）， Y 是 Minor 版本号 (When you make backward-compatible enhancement)， Z 是 Patch 版本号 (When you make a backward-compatible bug fix)。 #Programming\n微服务的模式语言 #Programming\n闭包漫谈: 从抽象代数及函数式编程角度 闭包（closure）这个概念在数学界（抽象代数）和编程语言（函数式编程 Functional Programming）里面都有定义。本质上有相通之处。在函数式语言领域对于数学闭包常用的表述是 「如果一个运算的结果仍然能被此运算作用，则这个运算是封闭的」。函数式编程里面闭包的全部就是「如果一个函数返回另一个函数，而被返回函数又需要外层函数的变量时，不会立即释放这个变量，而是允许被返回的函数引用这些变量。支持这种机制的语言称为支持闭包机制，而这个内部函数连同其自由变量就形成了一个闭包。If a function returns another When a function requires a variable of an outer function, the returned function does not immediately release the variable, but allows the returned function to refer to these variables. The language that supports this mechanism is called the closure mechanism, and this internal function together with its free variables forms a closure.」That\u0026rsquo;s it. #Programming\nSolving Problems the Clojure Way - Rafal Dittwald #Videos #Programming\nOLAD 联机分析场景常用到数仓的 view (视图) 和 materialized view （物化视图），它们的区别和使用场景。snowflake 文档 #Programming 。数据库的水实在太深了。\nThe $600 million Poly Network hacker published \u0026ldquo;Q\u0026amp;A\u0026rdquo;: #Crypto\nQ: \u0026ldquo;Why refund, coward?\u0026rdquo; A: whatever :), when you judge others, you don\u0026rsquo;t define them, you define yourself. What tech does China want? #Technology 【转自朋友圈】最近半年来，因为政策因素，中国互联网风浪不小，业界公司的市值已经蒸发了三分之一，一万亿美元。风还在刮，绝大多数人都看不懂，也都在问：这是要搞啥，那谁想咋整？对这个价值”万亿美元“的问题，《经济学人》今天做了些预测，认为D妈的”蓝图“慢慢清晰了。当然揣摩上意这事，自古艰难，所以仅供参考，言简意赅的几点。\n产业板块方面：要发展 「Deep Tech」，尤其是云计算，人工智能，自动驾驶和芯片。我的理解，就是上面希望发展有技术含量的业务，不要净搞那些低门槛的娱乐东东，比如聊天，交友，游戏，拼车，购物，养猪，种白菜等。说白了就是要拼技术含量，比如芯片等，才能不被隔壁那二狗家卡脖子。这方面的政策其实相当明显了，近一年政府就投资了2万多家芯片，3万多家云计算，17万家人工智能公司。 数据方面：突出安全，保护，开放。9月1日《数据安全法》实行，《个人信息保护法》快成型。数据需要共享给其他公司，有利竞争，不能被一个公司独占。 反垄断。一（两）家公司独大的确不好，要求大公司让利和开放发展空间，给谁呢？国内中小公司，给非一线城市，给本公司员工（提高福利待遇）。（反垄断这东西，美国政界也在努力进行，虽然阻力很大） 政府监管和主导会继续加强。这个大家都懂。 Apache Beam(Batch+strEAM) 是一个用于批处理和流式数据处理作业的统一编程模型。（原名 Google DataFlow）是 Google 在 2016 年 2 月份贡献给 Apache 基金会的 Apache 孵化项目，被认为是继 MapReduce，GFS 和 BigQuery 等之后，Google 在大数据处理领域对开源社区的又一个非常大的贡献。 #Programming\n10 JSON Examples to Use in Your Projects 这个统计了 10 个常用的 JSON 返回和不同字段格式。方便你在项目里面测试使用。#Programming\nSensibility 程序员世界里面认可度最高的词应该数 「Hello World」了。它对应的西班牙语是「Hola Mundo」，以后可以不用每次只打 Hello World 了。 #English BAT 基本成立在上个世纪 1998 ~ 1999年，随后的十年被成为互联网的高速发展时期。可以说 2005 ~ 2010 中国互联网是 BAT 时代。中国互联网的新十年（2010-2020）发生了很有意思的事情。现在已经有文章开始写总结了。我看到了 2 篇系列： 林军的 《互联网沸腾新十年：勇敢者的游戏》 中國互聯網十年大戰 zero mailbox 策略：永远保证收信箱是空的，邮件阅读之后，可以删除或者归档，事情看一遍就放手了，如果不能随手处理的事情，建议不要立即开始。 #PKM 鲸落”（Whale Fall）: 当鲸鱼在海洋中死去，它的尸体会最终沉入海底。生物学家赋予这个过程一个名字 —— 鲸落（Whale Fall）。Whale carcasses that sink several miles deep in the ocean feed organisms in the dark for fifteen years. 语出 Gary Snyder 著《The Practice of the Wild（荒野实践）》，“鲸落海深数哩，哺暗界众生十五年”。 所谓 『一鲸现，穹宇惊。一鲸鸣，沧海静。一鲸落，万物生。』，我们应该过什么样的人生，有人说『生当似鹏起，终当如鲸落』。 #Life 「务必回复」：打破等级秩序的口号。必将火起来。 #Quotes 最适合 ESL 使用的英文词典据说是 the Collins COBUILD Advanced Learner’s Dictionary. #English 面试的时候常会被问：「你感觉自己有什么缺点没有？」这是一个对你比较有负面影响（Negative）的问题，我听过一个比较好的答案是：「我比较害怕指出别人的错误。」这个回答把你带到了正面的（Positive）方向。首先你不敢指出别人的错误，说明你会顾及他人感受，也会从对方角度考虑问题，另外也说明你比较心细，有洞察力（可以发现别人错误)，同时当你意识到并说出这个问题的时候也能说明你已经意识到并且可能会改正。所以这个答案可以说是很正面描述自己，这就是话术，或者叫沟通中的「表达于无形」。 #Life 订阅章鱼花园 Substack: https://octg.substack.com ","permalink":"https://anotherbug.com/2021/08/15/octopus-garden-weekly-vol-24/","summary":"\u003cblockquote\u003e\n\u003cp\u003eThe future is already here - it\u0026rsquo;s just not evenly distributed. William Gibson 未来已经来临，只是还没有平均分布。 威廉.吉布森，科幻小说作家\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch4 id=\"sense\"\u003e\u003cem\u003eSense\u003c/em\u003e\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://semver.org/lang/zh-CN/\"\u003eSemVer 语义化版本 2.0.0\u003c/a\u003e  API 更新时，应该遵循semver 的规范进行更新，使用 X.Y.Z。其中 X 是 Major 版本号 （When you make an incompatible change）， Y 是 Minor 版本号 (When you make backward-compatible enhancement)， Z 是 Patch 版本号 (When you make a backward-compatible bug fix)。 #Programming\u003c/p\u003e","title":"章鱼花园 Vol. 24: 生当似鹏起，终当如鲸落"},{"content":"Sense A Post About Nothing #Programming\nWhy end-user programming? #Products #Programming\nend-user programming：什么叫终端用户编程，用时下流行的词讲就是 low-code/no code，低代码或者无代码编程。Ink \u0026amp; Switch 实验室这篇 2019 年的文章试图去思考为什么现在编程实现的系统很难做到可定制化，更开放。 「 Today our computing devices are less programmable and less customizable than ever before.」借鉴了计算机历史上一些好的系统，他们提出了更开放系统需要满足的三个特质： Embodiment (具体化): 编程本身是一个抽象动作，把现实世界抽象成数据模型。Embodiment 要做的就是把这一层抽象在具体化出来，方便 end-user 也是没有经过编程训练（抽象思维）的用户可以来方便快速的使用。Embodiment 可以通过类似拖拽、可视化的手段等等。最难的就在如何找到具体化的方式 Figuring out the right things to embody, and how, is one of the key challenges of end-user programming. 。 Living system (活化的系统): 具体体现在至少如下两个方面： 1) 快速的反馈和响应，让用户参与交互 2）能够不通过复杂操作（比如重启）以飞速的方式 (on the fly) 就可以改变自身特性（比如最简单的改变皮肤，字体，颜色）等，让用户感觉到对系统的开放性以及对其本身的深度可控。 In-place toolchain (现场工具链): 如果让用户去定制这个系统，那么终端用户使用的工具最好是 in-place，也就是随时随地可以拿到的，这中间没用巨大的鸿沟 (chasm). 举个反例， iOS 软件的开发要用到 MacOS 系统这就是不是 in-place toolchina. YDKJS: You Dont Know JS #Programming #Javascript\nImmediately-Invoked Function Expression (IIFE) #Javascript\nGolang - 关于指针与性能 关于Golang 应该使用结构体 (struct) 还是结构体的指针，这位”老“程序员和国外程序员观点不太一致。我觉得”老“程序员比较接地气。 #Programming #Golang\n自己写了一篇博客，关于Windows 下开发环境搭建以及常用工具： #Programming\nChocolate Package Manager 和 Scoop : 包管理器 (类似 Mac 下的 brew，Linux 下的 yum/apt 等) Windows terminal: choco install microsoft-windows-terminal VS Code （remote） + WSL (Windows Subsystem for Linux) 的使用：其实就是借鉴前后端分离的思想，把 Windows 作为 Linux 的 UI，Windows 只充当编辑器的角色。 所以才有一种戏称：Windows 是最好用的 Linux 发行版。 Listary 和 Wox : 文件搜索和快速启动工具（类似 Mac OS 下的 Alfred） Luxury Mechanical Keyboards 超级好看的机械键盘。在机械键盘爱好者中流传着这么一句话：“新手看轴体，大佬看键帽”， 目前的机械键盘中大多采用 ABS 和 PBT 两种材质。PBT 材质具有耐磨、不打油。 IKBC 是中国台湾沃特斯旗下品牌，以优良的做工和低廉的价格闻名， IKBC 的 C87 可以作为入门款，另有 iKBC New Poker II。 #Products #Programming\nSensibility 一句名言「When you assume you make an ASS of U and ME」不要假设，因为这会\u0026quot;让两人都难堪\u0026quot;。解释：单词 ASSUME（假设）构成是 ASS + U + ME. #English\n北部湾事件 :北部湾事件，也作东京湾事件，是1964年8月北越和美国之间在北部湾海上发生的武装冲突。该事件导致美国国会通过针对北越的北部湾决议案，美国接替法国开始直接介入越南战争。 #History\n《以静心看世界，以欢喜的方式过生活》：在一回首间才忽然发现，原来我一生的种种努力，不过只为了周遭的人对我满意而已，为了博得他人的称许与微笑，我战战兢兢的将自己套入，所有的模式所有的桎梏，可走到途中才忽然发现我，只剩下一副模糊的面目和条不能回头的路。- 席慕容 #Life #Quotes\n村上春树说：你要记得那些在黑暗中抱紧你的人，逗你笑的人，陪你彻夜聊天的人，坐车来看望你的人，陪你哭过的人，总是以你为重的人，带着你四处游荡的人和说想念你的人。是这些人组成你生命中一点一滴的温暖，是这些温暖是你远离阴霾，也是这些温暖，使你成为一个善良的人。 #Life #Quotes\n订阅章鱼花园 Substack: https://octg.substack.com ","permalink":"https://anotherbug.com/2021/08/08/octopus-garden-weekly-vol-23/","summary":"\u003ch4 id=\"sense\"\u003e\u003cem\u003eSense\u003c/em\u003e\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"http://oldfashionedsoftware.com/2008/08/20/a-post-about-nothing/\" title=\"Permanent Link: A Post About Nothing\"\u003eA Post About Nothing\u003c/a\u003e #Programming\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://www.inkandswitch.com/end-user-programming.html\"\u003eWhy end-user programming?\u003c/a\u003e #Products #Programming\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eend-user programming：什么叫终端用户编程，用时下流行的词讲就是 low-code/no code，低代码或者无代码编程。Ink \u0026amp; Switch 实验室这篇 2019 年的文章试图去思考为什么现在编程实现的系统很难做到可定制化，更开放。 「 Today our computing devices are less programmable and less customizable than ever before.」借鉴了计算机历史上一些好的系统，他们提出了更开放系统需要满足的三个特质：\u003c/li\u003e\n\u003cli\u003eEmbodiment (具体化): 编程本身是一个抽象动作，把现实世界抽象成数据模型。Embodiment 要做的就是把这一层抽象在具体化出来，方便 end-user 也是没有经过编程训练（抽象思维）的用户可以来方便快速的使用。Embodiment 可以通过类似拖拽、可视化的手段等等。最难的就在如何找到具体化的方式 Figuring out the right things to embody, and how, is one of the key challenges of end-user programming. 。\u003c/li\u003e\n\u003cli\u003eLiving system (活化的系统): 具体体现在至少如下两个方面： 1) 快速的反馈和响应，让用户参与交互 2）能够不通过复杂操作（比如重启）以飞速的方式 (on the fly) 就可以改变自身特性（比如最简单的改变皮肤，字体，颜色）等，让用户感觉到对系统的开放性以及对其本身的深度可控。\u003c/li\u003e\n\u003cli\u003eIn-place toolchain (现场工具链): 如果让用户去定制这个系统，那么终端用户使用的工具最好是 in-place，也就是随时随地可以拿到的，这中间没用巨大的鸿沟 (chasm). 举个反例， iOS 软件的开发要用到 MacOS 系统这就是不是 in-place toolchina.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/getify/You-Dont-Know-JS\"\u003eYDKJS: You Dont Know JS\u003c/a\u003e #Programming #Javascript\u003c/p\u003e","title":"章鱼花园 Vol. 23: 以静心看世界，以欢喜的方式过生活"},{"content":" 我已经有十年 （2010-2020）没有用 Windows 了，这十年来 Windows 也越来越像 Linux 了。所以我打算再次用一下。记录一下 Windows 下的开发环境 常用工具 Chocolate Package Manager 和 Scoop : 包管理器 (类似 Mac 下的 brew，Linux 下的 yum/apt 等)\nWindows terminal: choco install microsoft-windows-terminal\nVS Code （remote） + WSL (Windows Subsystem for Linux) 的使用：其实就是借鉴前后端分离的思想，把 Windows 作为 Linux 的 UI，Windows 只充当编辑器的角色。 所以才有一种戏称：Windows 是最好用的 Linux 发行版。\nListary 和 Wox : 文件搜索和快速启动工具（类似 Mac OS 下的 Alfred） + Everything\n小狼豪输入法 + 小鹤双拼，参考： https://jdhao.github.io/2019/02/18/rime_configuration_intro/\n多环境同步 icloud 同步 Obsidan 笔记\n多 Dropbox 共享各个文件夹\nNotion/Flomo\n还有 Steam !\n","permalink":"https://anotherbug.com/2021/08/07/windows-dev-environment/","summary":"\u003cul\u003e\n\u003cli\u003e我已经有十年 （2010-2020）没有用 Windows 了，这十年来 Windows 也越来越像 Linux 了。所以我打算再次用一下。记录一下 Windows 下的开发环境\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"常用工具\"\u003e常用工具\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eChocolate Package Manager 和 \u003ca href=\"https://scoop.sh/\"\u003eScoop\u003c/a\u003e : 包管理器 (类似 Mac 下的 brew，Linux 下的 yum/apt 等)\u003c/p\u003e","title":"Windows Dev Environment"},{"content":"科技 List of Golang books Go 语言越来越火，未来语言我心中的排名大致是 JavaScript 第一， Go 语言第二。这里有一份书单，可以拿去看看。 #Programming\nThe Greatest Developer Fallacy Or The Wisest Words You’ll Ever Hear? 需要用到的时候再去学习，这到底是真理还是谬论。在这个短平快的时代，所以东西都会过期，所以很多开发人员随口会说 “（这个语言，这个知识点）在我需要用到的时候再去学习”。但是有很多问题在里面，比如 1) You Don’t Know What You Don’t Know 你不知道你不知道的。不知道的东西就没法去搜索，创造。 2) 你真的可以快速学习吗？ Can You Learn It Fast Enough #Programming #Thought-provoking\n开源自行车码表 一位 “技术宅” 自制的自行车码表，据计算总共配件下来价格不到 300 人民币。\nLess is more https://corporate-rebels.com/mies-van-der-rohe/ #Products\ncomplex vs. complicated\nIIRC — if I recall correctly, PTAL Please take a look, NACK/NAK — negative acknowledgement. #Programming\nHow to Leave Google Photos Google Photos 已经不提供永久免费存储了，如何把里面的照片下载下来并且处理一下（之前只是一股脑扔里面根本没有整理）。这篇教程提供了方法和脚本方便你去做照片处理。 #Programming #Life\n人文 How to Speak by Patrick Winston 有人说你一生的成就很大程度上是由这个几个因素决定 1) 你的说话能力 2)你的写作能力 3）以及你的思考创意的质量。并且按照顺序也是按这 3 个来的。所以说话能力太重要。 A must watch video. #Videos #Life 随想 「0 Error(s), 0 Warning(s).」 那天看到一个的签名介绍，一看就是一个程序员签名，而且是个有洁癖的程序员，因为写过程序的人都知道， Error （错误）不可以存在，但是 Warning 很多时候程序还是可以跑，要不要都去掉，很多时候是个人习惯。安迪・格鲁夫说《只有偏执狂才能生存》（Only The Paranoid Survive）那是说大到做事，做企业，小到写程序。 0 Warning(s) 式的工匠精神。可是我想说 0 Warning(s) 的人生不值得活！ #Life 订阅章鱼花园 Substack: https://octg.substack.com ","permalink":"https://anotherbug.com/2021/08/01/octopus-garden-weekly-vol-22/","summary":"\u003ch4 id=\"科技\"\u003e科技\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/dariubs/GoBooks\"\u003eList of Golang books\u003c/a\u003e Go 语言越来越火，未来语言我心中的排名大致是 JavaScript 第一， Go 语言第二。这里有一份书单，可以拿去看看。 #Programming\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://skorks.com/2011/02/the-greatest-developer-fallacy-or-the-wisest-words-youll-ever-hear/\"\u003eThe Greatest Developer Fallacy Or The Wisest Words You’ll Ever Hear?\u003c/a\u003e  需要用到的时候再去学习，这到底是真理还是谬论。在这个短平快的时代，所以东西都会过期，所以很多开发人员随口会说 “（这个语言，这个知识点）在我需要用到的时候再去学习”。但是有很多问题在里面，比如 1)  You Don’t Know What You Don’t Know 你不知道你不知道的。不知道的东西就没法去搜索，创造。 2) 你真的可以快速学习吗？ Can You Learn It Fast Enough #Programming  #Thought-provoking\u003c/p\u003e","title":"章鱼花园 Vol. 22: 0 Error(s), 0 Warning(s). ？！"},{"content":" Fi-Lo-Li: Fight for a just cause; Love your fellow man; Live a good life. - The creators of Filoli Garden.\n科技 Have an Octotastic day! It comes from Github service. The logo of Github is an Octocat(at the picture), and the phrase might be the analogue to \u0026ldquo;Have a good day\u0026rdquo; or \u0026ldquo;have a productive day!\u0026rdquo; #Programming Mackup Keep your application settings in sync. 把你所以的 App 设置同步到 Dropbox 的一个工具，方便多个工作机器之间配置同步。我个人是把输入法（Rime）、Sublime、 aText、1Password 等常用的工具手动同步了，后续考虑使用这个工具再看看，我其实担心的是它是否可以很好的做到冲突管理。 #Tools 0.1 + 0.2 != 0.3 很多程序语言对 0.1 + 0.2 的输出不是0.3，而是 0.30000000000000004。具体原因是因为计算机使用的二进制表示在转换成我们常用的十进制有剩余。 #Programming Hoisting（提升） is JavaScript\u0026rsquo;s default behavior of moving declarations to the top. #Javascript AWS Well-Architected Framework #Technology #Products 框架的五个支柱：卓越运营，安全性，可靠性，性能效率，成本优化。 中文版在这里：AWS 架构完善的框架 人文 We are moving forward without moving on：我们在原地打转，生活仍在继续着 但是伤痛无法终止。 #English\nVAT: VAT is short for \u0026lsquo;Value Added Tax\u0026rsquo;. It\u0026rsquo;s a tax on the sale of most goods and services.\nVAT 和 tax return的区别：VAT is charged and recovered on transactions, both income and expenditure. This is different from your annual tax return which is based upon the declared profits of your business over your accounting year. 美国的 IRS （ Internal Revenue Service），英国的 HMRC （Her Majesty\u0026rsquo;s Revenue and Customs）。 Don\u0026rsquo;t Mess with them. #Tax Money Stuff: Crypto Markets Are Where the Fun Is: Matt Levine has observed that “most of what actually happens with Bitcoin is about rediscovering financial history and re-creating the traditional financial system from scratch.” #Crypto\n加州 Filoli 花园 Filoli （Fi-Lo-Li is short for Fight, Love, Live), a name William Bourn came up with by combining elements of his life\u0026rsquo;s credo: “Fight for a just cause; Love your fellow man; Live a good life.” 正义而战，爱尔同伴，活出美好。 #Life #Quotes\n随想 张国荣的告别演唱会 《风再起时》（1989），Beyond 的《海阔天空》（1993）成为黄家驹的绝唱，梅艳芳告别演唱会穿着婚纱唱的最后一首歌 《夕阳之歌》 （2003）。张国荣永远被称为哥哥，如今只要一起风的时候，歌迷就会想起这首《风再起时》「风再起时 默默地这心 不再计较 与奔驰 我纵要依依带泪 归去也愿意 珍贵岁月里 寻觅我 心中的诗」。《海阔天空》曾经激励了整整的一代人，也还在继续，罗大佑说：“不会再出一个黄家驹了，这样的人降临人世本来就是奇迹，上帝让黄家驹下凡，但是凡人没有珍惜他，反而谩骂他，诅咒他，结果，上帝把黄家驹收回了。上帝不会再派一个音乐天使下凡的。”。梅艳芳这位被称为 Anoita 的“香港的女儿”，如果说张国荣是哥哥，那么这个大姐大永远非她莫属。「斜阳无限 无奈只一息间灿烂 随云霞渐散 逝去的光彩不复还 迟迟年月 难耐这一生的变幻 如浮云聚散 缠结这沧桑的倦颜」，夕阳无限好，只是近黄昏，可是你知道吗？《夕阳之歌》 和 陈慧娴的《千千阙歌》两首歌同曲不同命。Anita 一边低声唱着，一边小心翼翼提着裙边缓缓踱步上铺着红毯的阶梯，还不时转身对观众挥手作别。她大声说着 “拜拜” 二字，已是半生的气力；而那句被剪进结尾字幕的 “多谢”，如今看来更是弥足珍贵。 #Music 订阅章鱼花园 Substack: https://octg.substack.com ","permalink":"https://anotherbug.com/2021/07/25/octopus-garden-weekly-vol-21/","summary":"\u003cblockquote\u003e\n\u003cp\u003eFi-Lo-Li: Fight for a just cause; Love your fellow man; Live a good life.  - The creators of Filoli Garden.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch4 id=\"科技\"\u003e科技\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eHave an Octotastic day\u003c/strong\u003e! It comes from Github service. The logo of Github is an Octocat(at the picture), and the phrase might be the analogue to \u0026ldquo;Have a good day\u0026rdquo; or \u0026ldquo;have a productive day!\u0026rdquo; #Programming\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lra/mackup\"\u003eMackup\u003c/a\u003e Keep your application settings in sync. 把你所以的 App 设置同步到 Dropbox 的一个工具，方便多个工作机器之间配置同步。我个人是把输入法（Rime）、Sublime、 aText、1Password 等常用的工具手动同步了，后续考虑使用这个工具再看看，我其实担心的是它是否可以很好的做到冲突管理。 #Tools\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://0.30000000000000004.com/\"\u003e0.1 + 0.2 != 0.3\u003c/a\u003e 很多程序语言对 0.1 + 0.2 的输出不是0.3，而是 0.30000000000000004。具体原因是因为计算机使用的二进制表示在转换成我们常用的十进制有剩余。 #Programming\u003c/li\u003e\n\u003cli\u003eHoisting（提升） is JavaScript\u0026rsquo;s default behavior of moving declarations to the top. #Javascript\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://wa.aws.amazon.com/index.en.html\"\u003eAWS Well-Architected Framework\u003c/a\u003e #Technology #Products\n\u003cul\u003e\n\u003cli\u003e框架的五个支柱：卓越运营，安全性，可靠性，性能效率，成本优化。\u003c/li\u003e\n\u003cli\u003e中文版在这里：\u003ca href=\"https://wa.aws.amazon.com/index.zh_CN.html\"\u003eAWS 架构完善的框架\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4 id=\"人文\"\u003e人文\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eWe are moving forward without moving on：我们在原地打转，生活仍在继续着 但是伤痛无法终止。 #English\u003c/p\u003e","title":"章鱼花园 Vol. 21: Fi-Lo-Li (Fight, Love, Live)"},{"content":"科技 The dawn of a new space age #Quotes #Thought-provoking I was once a child with a dream looking up to the stars. Now I\u0026rsquo;m an adult in a spaceship looking down to our beautiful Earth. To the next generation of dreamers: if we can do this, just imagine what you can do. - Twitter By Richard Branson OpenTracing 详解 比较老的一篇文章，介绍了 OpenTracing 的基本背景，适合考古。OpenTracing 现在已经和 OpenCensus 合并成 OpenTelemetry. #DevOps 分布式跟踪 （Distributed Tracing）鼻祖是基于 Google 的 Dapper 系统和论文。开源实现包括 Twitter 的 Zipkin (基于 Scala)，Uber 的 Jaeger （已经加入 CNCF），SourceGraph 的 appdash Dapper 的设计理念在于如何精准的定位调用链路，如何从各个分布式系统里面收集数据就是不包含在内。 OpenCensus 为此提供解决方案。 关于 OpenTracing 的集成方式：侵入方式，作者建议采用 Jaeger，在 Trace 的起始处，将 Trace ID 设置为 Request ID。非入侵式可以通过 Service Mesh 方式，比如 Istio Service Mesh 是在网络层面做文章，通过 Sidecar 的方式为 Pod 增加一层代理，通过这层网络代理来实现一些服务治理的功能，因为是工作在网络层面，可以做到跨语言、非入侵。 Hot R.O.D. - Rides on Demand OpenTracing 的官方 Demo. thesephist a writer and software engineer working on and thinking about opportunities in education, technology, and community. #Reading #Life 100 Rabbits Rek is a writer and illustrator, Devine is a programmer and musician, together we operate the Hundred Rabbits research lab, aboard pino, where we do experiments on resilience and self-reliance through low-tech solutions. #Life SoC vs DoD: State of charge (SoC 充电程度) is the level of charge of an electric battery relative to its capacity. The units of SoC are percentage points (0% = empty; 100% = full). An alternative form of the same measure is the **Depth of Discharge (DoD 放电深度) **, the inverse of SoC (100% = empty; 0% = full). SoC is normally used when discussing the current state of a battery in use, while DoD is most often seen when discussing the lifetime of the battery after repeated use. #Technology Open-source alternatives Find open-source alternatives for your favorite apps #Tools 人文 德语：Röstigraben (土豆饼鸿沟)土豆饼鸿沟一词最早出现在第一次世界大战期间，源于瑞士德语区的特色食品瑞士土豆饼（德语：Rösti）。在一战中，由于法德两国交战，中立国瑞士的人民因语言而发生分歧，法语区同情法国，而德语区支持德国。Rösti 是一道传统的德瑞风味菜肴，主要由煎土豆制成，马铃薯作为主要食材，有时还会配以培根、洋葱和奶酪。虽然这条顺着萨林河（Sarine）走向的“鸿沟”并不在地图上，但这条思想的边界还是被居于瑞士的人们从小铭记在心。正如这篇 存在于瑞士的无形语言边界翻译文章所说的「每当谈到“边界”时，我们最常想到的是政治分界线——那个将两个国家分开的冰冷界线，或是一堵墙。除了这种边界，还有更多——文化边界、语言边界、思想的边界。」 #Culture IT 工程师养生指南 #Life 《永隔一江水》—被传唱的经典背后是一个悲凉的爱情故事！ 「知我者谓我心忧，不知我者谓我何求」──《诗经・王风 ・黍离》 #Quotes Hotel Turndown service 酒店开夜床服务：在酒店业，夜床服务（开夜床）是指酒店员工将宾客的床上用品翻开，以备宾客睡眠使用的行为。 在开过夜床的枕头上，一般会放置一些甜点，例如巧克力或薄荷糖。 一些酒店还会提供更精致的夜床服务，例如为孩子提供睡前故事，为年轻夫妇提供鸡尾酒等。 #Life 随想 订阅章鱼花园 Substack: https://octg.substack.com ","permalink":"https://anotherbug.com/2021/07/18/octopus-garden-weekly-vol-20/","summary":"\u003ch4 id=\"科技\"\u003e科技\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://www.space.com/virgin-galactic-richard-branson-unity-22-launch-reaction\"\u003eThe dawn of a new space age\u003c/a\u003e  #Quotes  #Thought-provoking\n\u003cul\u003e\n\u003cli\u003eI was once a child with a dream looking up to the stars. Now I\u0026rsquo;m an adult in a spaceship looking down to our beautiful Earth. To the next generation of dreamers: if we can do this, just imagine what you can do. - \u003ca href=\"https://twitter.com/richardbranson/status/1414289206717865984\"\u003eTwitter By Richard Branson \u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://pjw.io/articles/2018/05/08/opentracing-explanations/\"\u003eOpenTracing 详解\u003c/a\u003e 比较老的一篇文章，介绍了 OpenTracing 的基本背景，适合考古。OpenTracing 现在已经和 \u003ca href=\"https://opencensus.io/\"\u003eOpenCensus\u003c/a\u003e 合并成 \u003ca href=\"https://opencensus.io/\"\u003eOpenTelemetry\u003c/a\u003e. #DevOps\n\u003cul\u003e\n\u003cli\u003e分布式跟踪 （Distributed Tracing）鼻祖是基于 Google 的 Dapper 系统和论文。开源实现包括 Twitter 的 \u003ca href=\"https://github.com/openzipkin/zipkin\"\u003eZipkin\u003c/a\u003e (基于 Scala)，Uber 的 \u003ca href=\"https://github.com/jaegertracing/jaeger\"\u003eJaeger\u003c/a\u003e （已经加入 CNCF），SourceGraph 的 \u003ca href=\"https://github.com/sourcegraph/appdash\"\u003eappdash\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDapper 的设计理念在于如何精准的定位调用链路，如何从各个分布式系统里面收集数据就是不包含在内。 OpenCensus 为此提供解决方案。\u003c/li\u003e\n\u003cli\u003e关于 OpenTracing 的集成方式：侵入方式，作者建议采用 Jaeger，在 Trace 的起始处，将 Trace ID 设置为 Request ID。非入侵式可以通过 Service Mesh 方式，比如 \u003ca href=\"Istio\"\u003eIstio\u003c/a\u003e Service Mesh 是在网络层面做文章，通过 Sidecar 的方式为 Pod 增加一层代理，通过这层网络代理来实现一些服务治理的功能，因为是工作在网络层面，可以做到跨语言、非入侵。\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaegertracing/jaeger/tree/master/examples/hotrod\"\u003eHot R.O.D. - Rides on Demand\u003c/a\u003e  OpenTracing 的官方 Demo.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://thesephist.com/\"\u003ethesephist\u003c/a\u003e a writer and software engineer working on and thinking about opportunities in education, technology, and community. #Reading #Life\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://100r.co/site/about_us.html\"\u003e100 Rabbits\u003c/a\u003e \u003ca href=\"https://kokorobot.ca/\"\u003eRek\u003c/a\u003e is a writer and illustrator, \u003ca href=\"https://xxiivv.com/\"\u003eDevine\u003c/a\u003e is a programmer and musician, together we operate the \u003cstrong\u003eHundred Rabbits\u003c/strong\u003e research lab, aboard \u003ca href=\"https://100r.co/site/pino.html\"\u003epino\u003c/a\u003e, where we do experiments on resilience and self-reliance through low-tech solutions. #Life\u003c/li\u003e\n\u003cli\u003eSoC vs DoD: \u003cstrong\u003eState of charge (SoC 充电程度)\u003c/strong\u003e is the level of charge of an electric battery relative to its capacity. The units of SoC are percentage points (0% = empty; 100% = full). An alternative form of the same measure is the **Depth of Discharge (DoD 放电深度) **, the inverse of SoC (100% = empty; 0% = full). SoC is normally used when discussing the current state of a battery in use, while DoD is most often seen when discussing the lifetime of the battery after repeated use. #Technology\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://opensource.builders/\"\u003eOpen-source alternatives\u003c/a\u003e Find open-source alternatives for your favorite apps #Tools\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4 id=\"人文\"\u003e人文\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://en.wikipedia.org/wiki/R%C3%B6stigraben\"\u003e德语：Röstigraben (土豆饼鸿沟)\u003c/a\u003e土豆饼鸿沟一词最早出现在第一次世界大战期间，源于瑞士德语区的特色食品瑞士土豆饼（德语：Rösti）。在一战中，由于法德两国交战，中立国瑞士的人民因语言而发生分歧，法语区同情法国，而德语区支持德国。Rösti 是一道传统的德瑞风味菜肴，主要由煎土豆制成，马铃薯作为主要食材，有时还会配以培根、洋葱和奶酪。虽然这条顺着萨林河（Sarine）走向的“鸿沟”并不在地图上，但这条思想的边界还是被居于瑞士的人们从小铭记在心。正如这篇 \u003ca href=\"https://keep.moe/2018/04/01/switzerlands-invisible-linguistic-borders/\"\u003e存在于瑞士的无形语言边界\u003c/a\u003e翻译文章所说的「每当谈到“边界”时，我们最常想到的是政治分界线——那个将两个国家分开的冰冷界线，或是一堵墙。除了这种边界，还有更多——文化边界、语言边界、思想的边界。」 #Culture\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://riboseyim.gitbook.io/perf/health\"\u003eIT 工程师养生指南\u003c/a\u003e #Life\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.sohu.com/a/200483644_650497\"\u003e《永隔一江水》—被传唱的经典背后是一个悲凉的爱情故事！\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e「知我者谓我心忧，不知我者谓我何求」──《诗经・王风 ・黍离》 #Quotes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://en.wikipedia.org/wiki/Turndown_service\"\u003eHotel Turndown service\u003c/a\u003e 酒店开夜床服务：在酒店业，夜床服务（开夜床）是指酒店员工将宾客的床上用品翻开，以备宾客睡眠使用的行为。 在开过夜床的枕头上，一般会放置一些甜点，例如巧克力或薄荷糖。 一些酒店还会提供更精致的夜床服务，例如为孩子提供睡前故事，为年轻夫妇提供鸡尾酒等。 #Life\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4 id=\"随想\"\u003e随想\u003c/h4\u003e\n\u003ch3 id=\"订阅章鱼花园\"\u003e订阅章鱼花园\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSubstack: \u003ca href=\"https://octg.substack.com/\"\u003ehttps://octg.substack.com\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e","title":"章鱼花园 Vol. 20: Dream big, the sky is NOT the limit"},{"content":" For He spoke, and it was done; He commanded, and it stood fast. Psalm 33:9 NASB. 因为他说有，就有，命立，就立。诗篇 33:9\n科技 The Inter typeface family 好看的字体 for Google Docs #Programming\nA Mountain of Unknown 作者是一个client-services dev，常常会接到各种问题需要解决。他提到了如何处理问题（难题）以及如何反思而不是被各个问题不停的拖着走。 #Reading\nAmazon Primed Andy Jassy to Be CEO. Can He Keep What Jeff Bezos Built? Andy Jassy 从原先的 AWS 掌门人到接任整个 Aamazon，媒体又在质疑能否胜任。据 WSJ 的报道，Mr. Jassy 是一个非常注重细节（detail-oriented）的人，态度比他的老板 Bezos 好很多，经常邮件回复 Nice! (Bezos 的邮件里面经常用问号，据说搞得收信人很害怕)。多年前乔布斯的接替者 Cook 刚上任大家也有疑问和期待，因为乔布斯的光环实在太多，当然脾气也同样暴躁，Cook 就温文尔雅许多。后来发现他带领 Apple 在商业上也做到还好（当然产品上实在有吐槽的）。管理者把企业交给与自己性格互补的人其实一个比较明智的做法。 #Business\nWhat is a Slug? 前端开发里面经常会用到 \u0026ldquo;slug\u0026rdquo; 这个词，它是指 URL当中独立定位一个资源的标识，类似于 UUID。 A slug is the last part of the url containing a unique string which identifies the resource being served by the web service. In that sense, a slug is a unique identifier for the resource. #Frontend\n[WeChatExtension-ForMac](https://github.com/MustangYM/WeChatExtension-ForMac) 一个令人愉快的微信插件 #Tools\nawesome-status-pages #Products\n人文 麦田艺术 世界名画高清版，很多人拿来做手机或者 iPad 壁纸，比如 雅典学院 。Mac OS 端的壁纸我一直使用 Irvue app，它的图片基于 unsplash。 #Life\nAbracadabra: 这个单词有非常深的历史渊源，可能有上千年了。最早可能来自亚兰文（旧约圣经所用的两种语言之一（另外一种是希伯来文）「avra kehdabra」, meaning \u0026ldquo;I will create as I speak\u0026rdquo;，而它的词源可能真的来自希伯来文， the source is three Hebrew words, ab (father), ben (son), and ruach acadosch (holy spirit). 希伯来里面圣父、圣子、圣灵的词根。所以这个单词确实是有「神力」的。「因为他说有，就有，命立，就立」。诗篇 33:9\n随想 订阅章鱼花园 Substack: https://octg.substack.com ","permalink":"https://anotherbug.com/2021/07/11/octopus-garden-weekly-vol-19/","summary":"\u003cblockquote\u003e\n\u003cp\u003eFor He spoke, and it was done; He commanded, and it stood fast. Psalm 33:9 NASB. 因为他说有，就有，命立，就立。诗篇 33:9\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch4 id=\"科技\"\u003e科技\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://rsms.me/inter/\"\u003eThe Inter typeface family\u003c/a\u003e 好看的字体 for Google Docs #Programming\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://cognition.happycog.com/article/a-mountain-of-unknown\"\u003eA Mountain of Unknown\u003c/a\u003e 作者是一个client-services dev，常常会接到各种问题需要解决。他提到了如何处理问题（难题）以及如何反思而不是被各个问题不停的拖着走。 #Reading\u003c/p\u003e","title":"章鱼花园 Vol. 19: Abracadabra 说有就有，命立就立"},{"content":" carpe diem, quam minimum credula postero, which is often translated as \u0026ldquo;Seize the day, put very little trust in tomorrow (the future)\u0026rdquo; - Horace 贺拉斯，古罗马著名诗人。\n科技 Intercom 网站客服 Bot 解决方案，另外一个是 crisp #Products How I built a SaaS with Next.js in a week作者介绍了如何在 1 周之类搭建了 cusdis 这个评论系统。 cusdis 是现有的评论系统 Disqus 的一个替代版，更加关注隐私和性能。基于 prisma, chakra-ui, next-auth,next-connect 和 react-query。cusdis 代码开源地址#Frontend convertkit 做email marketing的工具 #Tools Web 开发者助手 FeHelper #Frontend flomo 浮墨，我很喜欢浮墨设计和理念，而且一直使用 Microsoft To Do 在做这个事情。不过 To DO 最大的问题是它的 Tag 有 Bug（Obsidian 也是，这也是我最接受不了的）。浮墨暂时的导出只支持 HTML 文件，不支持 JSON。开源版本 neno 是基于 svelte + tailwindcss 构建的 PWA 应用，数据自主可控（可以写到 Github)。关注中。 #Products #Frontend Creating your own implementation of Array 内卷之──使用自己实现的数组 #Javascript 人文 刘延栋的赛博空间 一个博主，喜欢研究历史（讲史记 podcast）、录制视频：忽软忽硬、同时讲几个语言 ，是一个有趣的灵魂 #Videos\n「我曾不远千里奔赴威尼斯，只为追求我心人 —露丝，她用如水般清澈的目光，看着眼前高达三百二十五英尺的圣马可教堂，却不曾把眼神给予我哪怕一秒，我徒手攀登了那座高大教堂，以我的敏捷身手，很快就站在了教堂顶端，此前对我并不在意的露丝，却因目睹了我矫健伸手和果敢，在我被警察抓走的那一刻，为我倾心，我们因攀登结缘。」 《攀登者》\nHow To Build A Desk In A Closet 搭建一个「cloffice」 #Life\nthunk: n. 形实转换程序\n随想 关于开源和创造，最近网上认识了几个同学（有很多值得我学习的地方）。看到这篇文章，挺有感受，不在乎你一下子作出多大多亮的成就，慢慢起步，还是那句话，做一个生产者，而不是消费者。 然而实际上，不管是开源还是 TS，它们其实是渐进的、有层次的，呈现的不是非黑即白，而是一段光谱。 … 你可以随意开源，即便跑不起来，即便没有单元测试，即便你连什么是代码覆盖率都不知道。 你可以去写 TypeScript，即便仅仅是把 .js 后缀改成 .ts。对刚开始的你而言，不改一行代码，你也已足够 TypeScript。 你可以在光谱的最左端停留，这是你的起点。等你变强之后，你可以提升你的项目的完成度和质量，往光谱的右侧移动。 每个人都需要经历起步阶段。所有项目都有希望变得更好，不管当前处于哪个阶段。 … 希望你能成长起来。 订阅章鱼花园 Substack: https://octg.substack.com ","permalink":"https://anotherbug.com/2021/07/04/octopus-garden-weekly-vol-18/","summary":"\u003cblockquote\u003e\n\u003cp\u003ecarpe diem, quam minimum credula postero, which is often translated as \u0026ldquo;Seize the day, put very little trust in tomorrow (the future)\u0026rdquo; - Horace  贺拉斯，古罗马著名诗人。\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch4 id=\"科技\"\u003e科技\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://www.intercom.com/\"\u003eIntercom\u003c/a\u003e 网站客服 Bot 解决方案，另外一个是 \u003ca href=\"https://crisp.chat/en/\"\u003ecrisp\u003c/a\u003e  #Products\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://blog.cusdis.com/build-a-saas-project-with-nextjs-in-a-week/\"\u003eHow I built a SaaS with Next.js in a week\u003c/a\u003e作者介绍了如何在 1 周之类搭建了 cusdis 这个评论系统。 cusdis 是现有的评论系统 Disqus 的一个替代版，更加关注隐私和性能。基于 \u003ca href=\"https://prisma.io/\"\u003eprisma\u003c/a\u003e, \u003ca href=\"https://chakra-ui.com/\"\u003echakra-ui\u003c/a\u003e, \u003ca href=\"https://next-auth.js.org/\"\u003enext-auth\u003c/a\u003e,\u003ca href=\"https://github.com/hoangvvo/next-connect\"\u003enext-connect\u003c/a\u003e 和 \u003ca href=\"https://react-query.tanstack.com/\"\u003ereact-query\u003c/a\u003e。\u003ca href=\"https://github.com/djyde/cusdis\"\u003ecusdis 代码开源地址\u003c/a\u003e#Frontend\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://convertkit.com/\"\u003econvertkit\u003c/a\u003e 做email marketing的工具 #Tools\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.baidufe.com/\"\u003eWeb 开发者助手 FeHelper\u003c/a\u003e #Frontend\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://flomoapp.com/\"\u003eflomo 浮墨\u003c/a\u003e，我很喜欢浮墨设计和理念，而且一直使用 Microsoft To Do 在做这个事情。不过 To DO 最大的问题是它的 Tag 有 Bug（Obsidian 也是，这也是我最接受不了的）。浮墨暂时的导出只支持 HTML 文件，不支持 JSON。开源版本 \u003ca href=\"https://github.com/Mran/neno\"\u003eneno\u003c/a\u003e 是基于 svelte + tailwindcss 构建的 PWA 应用，数据自主可控（可以写到 Github)。关注中。 #Products  #Frontend\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://ui.dev/creating-your-own-array/\"\u003eCreating your own implementation of Array\u003c/a\u003e 内卷之──使用自己实现的数组 #Javascript\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4 id=\"人文\"\u003e人文\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://liuyandong.com/\"\u003e刘延栋的赛博空间\u003c/a\u003e 一个博主，喜欢研究历史（讲史记 podcast）、录制视频：\u003ca href=\"https://www.youtube.com/watch?v=gPHYyqoJnMk\u0026amp;list=PLwO3dBiytzpGH1rlCP-QmOQn295xLgXES\"\u003e忽软忽硬\u003c/a\u003e、\u003ca href=\"https://www.youtube.com/watch?v=jF7HVA4K1yA\u0026amp;list=PLwO3dBiytzpE7QCfjFL-sx8-QDhbfZiEO\"\u003e同时讲几个语言\u003c/a\u003e ，是一个有趣的灵魂 #Videos\u003c/p\u003e","title":"章鱼花园 Vol. 18: carpe diem, quam minimum credula postero"},{"content":" 一直使用 Microsoft To Do 来做一些随手记的东西。不知不觉已经攒了 1200 多条. 用的最多的是基于 Tag （标签）的方式来管理。一直在找替代的东西，因为 To Do 的 Tag 不是很好用。（它的整体产品设计就不是基于这个考虑的）\n最近看到 Flomoapp（浮墨）笔记，设计思想和我想要的很一致：\n基于 Tag 可以回顾 产品设计简单简洁（定位不是一个长篇大论的笔记 app，更不是另外一款 read it later 工具，因为 read it later \u0026ndash;\u0026gt; read it never) 当然缺点也是有的，现阶段主要是日志的导出能力和格式以及开放兼容性。已经有开源版本 neno 是基于 svelte + tailwindcss 构建的 PWA 应用，数据自主可控（可以写到 Github)。\n考虑付费使用，并且把现有的 To Do 记录的东西转过来。自己写个程序通过 API 方式倒腾一下吧。\n去 Microsoft Graph Explorer 拿到你的 access token 浮墨 提供了简单的 POST API （不过每天 100 条限制，不过他们的 rate limiter 好像不是实时的，一次性有几百条记录的话测试是可以导入的） 代码基于 node + axios，没有做任何优化，使用时候记得替换里面的 token 和 flomoUrl：\nconst axios = require(\u0026#39;axios\u0026#39;) const token = \u0026#39;EwCAA=======\u0026#39; const config = { headers: { Authorization: `Bearer ${token}` } }; const taskId = \u0026#39;AQMkA=======\u0026#39; const baseURL = \u0026#39;https://graph.microsoft.com/beta/me/todo/lists/\u0026#39; + taskId + \u0026#39;/tasks\u0026#39; const flomoUrl = \u0026#39;https://flomoapp.com/iwh/MTE2/=======\u0026#39; const getTasks = async (url) =\u0026gt; { try { return await axios.get( url, config ) } catch (error) { console.error(error) } } const getAllTasks = async () =\u0026gt; { const ret = await getTasks(baseURL); ret.data.value.forEach((entry) =\u0026gt; { console.log(entry.title); axios.post(flomoUrl, { \u0026#39;content\u0026#39;: entry.title }) }); nextUrl = ret.data[\u0026#39;@odata.nextLink\u0026#39;] while (nextUrl != undefined) { res = await getTasks(nextUrl) res.data.value.forEach((entry) =\u0026gt; { axios.post(flomoUrl, { \u0026#39;content\u0026#39;: entry.title }) }); nextUrl = res.data[\u0026#39;@odata.nextLink\u0026#39;] } } getAllTasks() ","permalink":"https://anotherbug.com/2021/06/30/import-microsoft-todo-notes-to-flomo/","summary":"\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e一直使用 Microsoft To Do 来做一些随手记的东西。不知不觉已经攒了 1200 多条. 用的最多的是基于 Tag （标签）的方式来管理。一直在找替代的东西，因为 To Do 的 Tag 不是很好用。（它的整体产品设计就不是基于这个考虑的）\u003c/p\u003e","title":"How to import Microsoft To Do Notes to Flomo"},{"content":"科技 How I track my life with Integromat, Airtable, Shortcuts and Timing (et al) #Life 人文 Consume less, create more 这个世界的每个人都是消费者，但不是每个人都是生产者。如果你也希望为这个世界留下点什么，就去创造，别担心你创造的是不是垃圾，只要创造了，是一定会有收获的。所以做这个世界的生产者 #Thought-provoking\n好的东西大家都会私藏，不要说一本书，就算一个公众号，只要内容真得有价值，公众号自己没有传播开，也是没有人会主动分享的，这是一种营销壁垒，人性层面的营销壁垒，导致 的结果就是，网上很多信息满天飞，但不一定有什么营养，反而有营养的，无人问津，只有少数人私藏。我称之为 「黑洞原理」。── 福强老师 #Psychology\n打开好生活的52个快捷键 #Life\n藏不住的崩溃只是伤痕，藏起来的崩溃才是勋章 ── 傅首尔 #Quotes\n随想 订阅章鱼花园 Substack: https://octg.substack.com ","permalink":"https://anotherbug.com/2021/06/27/octopus-garden-weekly-vol-17/","summary":"\u003ch4 id=\"科技\"\u003e科技\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://talk.automators.fm/t/how-i-track-my-life-with-integromat-airtable-shortcuts-and-timing-et-al/5507\"\u003eHow I track my life with Integromat, Airtable, Shortcuts and Timing (et al)\u003c/a\u003e #Life\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4 id=\"人文\"\u003e人文\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://blog.tjcx.me/p/consume-less-create-more\"\u003eConsume less, create more\u003c/a\u003e  这个世界的每个人都是消费者，但不是每个人都是生产者。如果你也希望为这个世界留下点什么，就去创造，别担心你创造的是不是垃圾，只要创造了，是一定会有收获的。所以做这个世界的生产者 #Thought-provoking\u003c/p\u003e","title":"章鱼花园 Vol. 17：那些听不见音乐的人，认为那些跳舞的人疯了"},{"content":"科技 wipiWipi 是一个面向个人的开源的集成文章发表、页面创建、知识小册等功能的 CMS 系统。基于 MySQL + next.js + nest.js 开发 #Frontend\nNext.js 应用开发实践 Next.js 是 React 的框架。React 本质还是只帮你解决了前端的 UI 组件本身，可是这个前端开发，包括全栈开发需要一个框架。 Next.js 可以帮你简化与业务逻辑无关的东西（比如前端构建配置，前后端联合等代码。 #Frontend\nHow to Build a Miniature Network Monitor Device 基于 Logrhythm 搭建一个网络流量监控设备。 #Programming\nAthens 类似 Roam，开源且可以自己搭建。试用中，现在的 Obsidian 还是有不少 Bug，尤其是 Tag 功能不太好用。 #Tools\n面向对象的设计：接口是对行为的抽象， 抽象类的目的主要是代码重用。 Java 由于是单继承，在一些情况下存在特定场景，需要抽象出与具体实现、实例化无关的通用逻辑，或者纯调用关系的逻辑，常用做法是，实现由静态方法组成的工具类（ Utils ) #Programming\n分布式 UUID 生成方案：常用的是 Twitter 开源的 snowflake。另外，国内百度的 uid-generator，腾讯的 seqsvr 以及演变历史。 #Programming\n人文 All Of Gary Halbert’s Boron Letters From Prison (In Order)](https://morgancrozier.com/boron-letters/) Gary Halbert 被誉为史上最佳的文案圣手，当他囚禁于 Boron 监狱的时候，他开始给自己 16 岁的儿子写信。这些信被结集出版，名为 the Boron Letters, 被很多 MBA 课程列为必读书。 #Products\nHow and When to Tuck in Your Shirt Tuck in your shirt 就是把你的衬衣卷在裤子里面。这是一篇发布在2014年的经典教程，告诉你什么衬衣可以卷，该怎么「内」卷 Tuck In. #Life\nTax Planning 101: Buy, Borrow, Die 如何一辈子不交税：买借死三部曲。在美帝，unrealized capital gain 才是王道，W-2 都是韭菜。 #Tax\nGold plating: 镀金，在项目管理里面 \u0026lsquo;gold plating\u0026rsquo; means the addition of any feature not considered in the original scope plan (PMBOK) or product description (PRINCE2) at any point of the project. #English\n随想 订阅章鱼花园 Substack: https://octg.substack.com ","permalink":"https://anotherbug.com/2021/06/20/octopus-garden-weekly-vol-16/","summary":"\u003ch4 id=\"科技\"\u003e科技\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/fantasticit/wipi\"\u003ewipi\u003c/a\u003eWipi 是一个面向个人的开源的集成文章发表、页面创建、知识小册等功能的 CMS 系统。基于 MySQL + next.js + nest.js 开发 #Frontend\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://nextjs-in-action-cn.taonan.lu/\"\u003eNext.js 应用开发实践\u003c/a\u003e  Next.js 是 React 的框架。React 本质还是只帮你解决了前端的 UI 组件本身，可是这个前端开发，包括全栈开发需要一个框架。 Next.js 可以帮你简化与业务逻辑无关的东西（比如前端构建配置，前后端联合等代码。 #Frontend\u003c/p\u003e","title":"章鱼花园 Vol. 16: 我们仍未知道那天所看见的花的名字"},{"content":" 「希望，是我们这个时代像钻石一样珍贵的东西！」 ——《流浪地球》 #Quotes\n科技 Social Tokens: Year In Review #Crypto\nRedis 的彩蛋 LOLWUT。作者将其称为一个艺术品，或者情怀。“数据库命令中的一件艺术品”[LOLWUT: a piece of art inside a database command](http://antirez.com/news/123) #Programming\nLOLWUT 从 5.0 就开始，并且遵从 LOLWUT rule，那就是: It can’t do anything technologically useful. It should be fast at doing what it does, so that it is safe to call LOLWUT on production instances. The output should be entertaining in some way. 我的机器学习笔记 \u0026ndash; By aneasystone #Machine-learning\n实战 Prometheus 搭建监控系统 文章比较老了，介绍了一些 Prometheus 的历史。 #DevOps\nDB-Engines Ranking of Time Series DBMS：其中 Prometheus 排第三，InfluxDB 第一 (截止 June 2021)。 Programmer Competency Matrix 程序员的能力矩阵。 #Programming\nCassandra vs. HBase: twins or just strangers with similar looks? #Programming\nCassandra 和 HBase 在数据模型上比较类似。但是深层次还是不一样。 大体上Cassandra 是 AP 系统，HBase 是 CP 系统，所以在设计上有不同考量。熟悉这两个数据库对理解和设计满足 CAP 原理的系统有很大帮助。 https://www.slideshare.net/DmitriBabaev1/cassnadra-vs-hbase 一款好的 App 本身就少，最可气的是好 App 还经常 EOL，花钱买了也不行。比如 Antenna for Reddit。网上怨声载道的。 #Tools\nPhilip Roberts 《Help I\u0026rsquo;m stuck in an event loop JS的 Event Loop 执行机制，容易理解。 #Javascript\nThe data model behind Notion\u0026rsquo;s flexibility Notion 是一款很好用的工具，因为非常开放和灵活，这篇文章讲了它的灵活到底是怎么实现的。 #Programming\n人文 beefier: 肌肉发达的，我把它翻译成\u0026quot;更牛的\u0026quot;。比如：The justification for data sharding is that, after a certain scale point, it is cheaper and more feasible to scale horizontally by adding more machines than to grow it vertically by adding beefier servers. #English\n个人人际关系管理工具是 Monica，代码开源在 Github。\nThis project is for people who have difficulty remembering details about other people’s lives – especially those they care about. We’ve also received lots of positive feedback from users who suffer from Asperger syndrome, Alzheimer’s disease, or simply introverts who use this application on a daily basis. 我其实之前就相到需要把人际关系管理（PRM）起来。一直时间和工具，也比较懒。 Monica 看似不错，但是感觉使用起来太繁琐。 #Life #Tools 2.0: two point oh\n随想 订阅章鱼花园 Substack: https://octg.substack.com ","permalink":"https://anotherbug.com/2021/06/13/octopus-garden-weekly-vol-15/","summary":"\u003cblockquote\u003e\n\u003cp\u003e「希望，是我们这个时代像钻石一样珍贵的东西！」 ——《流浪地球》 #Quotes\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch4 id=\"科技\"\u003e科技\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://2020inreview.forefront.news/\"\u003eSocial Tokens: Year In Review\u003c/a\u003e #Crypto\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRedis 的彩蛋 LOLWUT。作者将其称为一个艺术品，或者情怀。“数据库命令中的一件艺术品”[\u003ca href=\"http://antirez.com/news/123\"\u003eLOLWUT: a piece of art inside a database command\u003c/a\u003e](\u003ca href=\"http://antirez.com/news/123\"\u003ehttp://antirez.com/news/123\u003c/a\u003e) #Programming\u003c/p\u003e","title":"章鱼花园 Vol. 15: 希望，是这个时代像钻石一样珍贵的东西"},{"content":"科技 Stack Overflow Sold to Tech Giant Prosus for $1.8 Billion 程序员生产力工具 Stack Overflow 18亿美金卖给了 Prosus。 Prosus 是 Tencent，Udemy， Codecademy等的股东。 #Products -Stats： macOS system monitor in your menu bar，开源版本的 iStat Menus. #Tools\nHTTP：4xx错误是指客户端请求相关错误（比如 429 - Too many requests），5xx错误是指服务器端错误。 #Programming\nResilience4j：Resilience4j is a fault tolerance library designed for Java8 and functional programming #Programming\n系统设计的 4S分析法：Scenario \u0026ndash;\u0026gt; Service \u0026ndash;\u0026gt;Storage \u0026ndash;\u0026gt; Scale #Programming\nHow We Bootstrapped a $1M ARR Email Client #Products\nOur story is not one of risk taking, it’s one of consistent work. It’s my belief that the compounding effect of our work will rival the one from VC-backed startups shooting in all directions. Be resilient. The resources and skills to execute on your vision：built it、launch it、promote it。We let VC-backed startups build the market with big advertising spending, and we wait patiently with a better and more affordable product. 人文 分享，自由而克制的表达观点。 #Quotes 王元：一个数学家的荣辱观 #Math 最近 北大扫地僧──韦东奕 上了热搜。我不喜欢媒体炒作说什么数学家很奇怪。已故著名数学家王元院士写过一篇文章，其中谈到，数学家不怪才是正常的！ Why it’s smart to order the second-cheapest wine on the menu #Psychology 餐厅里第二便宜的酒往往是销量最好的。又要有面儿又要性价比。不懂酒的人就点第二便宜的酒。 it’s many people’s go-to order when “you don’t know much about wine, but you do know that you shouldn’t get the cheapest.” 但是这篇文章分析了这类红酒价格其实是虚高的。 it seems that “either the cheapest wine or top end wines are the best buys, in which case the appropriate maxim is, don’t get stuck in the middle!”。 随想 订阅章鱼花园 Substack: https://octg.substack.com ","permalink":"https://anotherbug.com/2021/06/06/octopus-garden-weekly-vol-14/","summary":"\u003ch4 id=\"科技\"\u003e科技\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://www.wsj.com/articles/software-developer-community-stack-overflow-sold-to-tech-giant-prosus-for-1-8-billion-11622648400\"\u003eStack Overflow Sold to Tech Giant Prosus for $1.8 Billion\u003c/a\u003e 程序员生产力工具 Stack Overflow 18亿美金卖给了 Prosus。 Prosus 是 Tencent，Udemy， Codecademy等的股东。 #Products\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e-\u003ca href=\"https://github.com/exelban/stats\"\u003eStats\u003c/a\u003e： macOS system monitor in your menu bar，开源版本的 iStat Menus. #Tools\u003c/p\u003e","title":"章鱼花园 Vol. 14: 把自己交给繁忙，得到的是踏实，却不是真实"},{"content":"科技 Java 并发相关的源码讲解系列视频 #Videos 人文 The Untold Story Behind the Song \u0026ldquo;Don\u0026rsquo;t Cry For Me Argentina\u0026rdquo; #Music\n《家园》－《闯关东》片尾曲\n刘欢的说唱配合宋祖英，绝对经典。 漂泊者的家到底在哪一边，回首故乡遥远抬头前路依旧茫然 #Music 随想 看完《闯关东》，对传武和鲜儿的命运贡献了很多眼泪。在大时代里面的「家」、「命」有了更深的认识。两个努力顺命也挣扎着顺心的人，最后终究还是没能在一起。\n有人说，演到最后老朱家必须要s一个人，因为大的环境实在太惨烈，太多人牺牲了。不s说不过去，不s有违伦常。可是要谁去s呢？最让人唏嘘的就是传武了。\n这是一部谱写普通又不普通的一家人的酸甜苦辣，在特定的历史背景下，这些人用面对命运的生存挣扎和面对家仇国恨的民族大义，谱写了一曲壮丽的历史长歌。\n喜欢片尾曲《家园》，第一次看《闯关东》的人大抵会被人物的经历所吸引，其实冷静下来，每个人都在为家园所奔波，有家园也就可以生存。所以朱开山独闯老金沟也是为了 “置几垧地，建一个家”，在哈尔滨与潘家斗智斗勇也为了维护这个家，甚至离家出走的传武和鲜儿，历尽艰险，最终想要的，不过是在野马湾建一个自己的家。结尾与日本人种种纠葛，乃至以命相搏，为的更是是国家这个大的家园。\n鲜儿是对家渴望最热切的人，她的颠沛和命运却一直残忍地拒绝。她总是和传武说：“姐什么时候才能有个自己的家？听罢泣落。\n要说国内与之类似的恐怕要数 1994 年的那部《 燃情岁月 Legends of the Fall》电影了。讲述了一战之前到 1920 年代美国禁酒期间，蒙大拿州的拉德洛（Ludlow）一家三兄弟的故事。主角也是老二 Tristan Ludlow，也是一个悲剧式人物。\n「我们极度渴望成为这样的人，但我们还要变现出对他的敌对，以向外界证明我们的价值观是没有问题的，对于这样的人物，有时我们也充满矛盾，可能在我们内心的深深深处，深到我们自己都觉察不到的地方，我们极度渴望成为这样的人。但我们还要表现出对他的敌对，以向外界证明我们的价值观是没有问题的。我们崇拜或讨厌这样的人物，是因为我们没法活成他们这样：生命中的险恶没有什么恐怖，生命中的寂寥没有什么悲愤，生命中的放纵没有什么缺憾，生命中的痛苦与埋没无关，关键是，即使在始终无人注目的暗夜中，你可曾动情地燃烧，像那颗不肯安歇的灵魂一样，为了答谢这一段短暂的岁月，或许在这样的电影里，能为依然在乏味的地方苟活的我们，来带些许的慰藉，像是一片阿司匹林一样」\n当你无法安静的时候，听一听《The Ludlows》。 #Music 订阅章鱼花园 Substack: https://octg.substack.com ","permalink":"https://anotherbug.com/2021/05/30/octopus-garden-weekly-vol-13/","summary":"\u003ch4 id=\"科技\"\u003e科技\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://v2ex.com/t/777374\"\u003eJava 并发相关的源码讲解系列视频\u003c/a\u003e #Videos\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4 id=\"人文\"\u003e人文\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://theculturetrip.com/south-america/argentina/articles/the-untold-story-behind-the-song-dont-cry-for-me-argentina/\"\u003eThe Untold Story Behind the Song \u0026ldquo;Don\u0026rsquo;t Cry For Me Argentina\u0026rdquo;\u003c/a\u003e #Music\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://www.youtube.com/watch?v=znI5e1HQyfY\"\u003e《家园》－《闯关东》片尾曲\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e刘欢的说唱配合宋祖英，绝对经典。 \u003cstrong\u003e漂泊者的家到底在哪一边，回首故乡遥远抬头前路依旧茫然\u003c/strong\u003e #Music\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4 id=\"随想\"\u003e随想\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e看完《闯关东》，对传武和鲜儿的命运贡献了很多眼泪。在大时代里面的「家」、「命」有了更深的认识。两个努力顺命也挣扎着顺心的人，最后终究还是没能在一起。\u003c/p\u003e","title":"章鱼花园 Vol. 13: 当你无法安静的时候，听一听《The Ludlows》"},{"content":"科技 《为什么闲鱼把网页版取消了？》 读罢怅然。\n现代处理器结构\nSequel-Ace MacOS 上的 MySQL \u0026amp; MariaDB 客户端工具。基于 Sequel Pro，更新比较及时。\nThat Salesforce outage: Global DNS downfall started by one engineer trying a quick fix Salesforce最近出了一起故障，造成服务长达 5 个多小时不可用，而且连提示服务是否可用的状态页面（status）也不可用。原因是与一名工程师想规避了内部的流程想走一个 quick fix 导致了 DNS 配置出问题。然后触发了系统间的循环依赖，导致问题无法通过工具再去紧急修复。嗯，DNS 的问题一般都是大问题。\n人文 天灾？人祸？失温？失职？，人类越野史上最黑暗的一夜 5/22/2021\n“中国超马第一人” 也未能幸免，这到底是天灾还是人祸 三位越野大神最后的朋友圈 央视还原甘肃马拉松事故：有人从手脚麻木到失去意识只 4 分钟 yyds：永远的神，英语中也有一个对应的词：GOAT, greatest of all time 史上最厉害的人。\n不要问在不在（Don\u0026rsquo;t Say Zai Ma)\n“在吗？” 我觉得完全是一个负情商的表现。 一句 “在吗” 基本算是围堵了接收方所有友善回绝的可能性，而且让提问方会完全掌握聊天节奏。 随想 订阅章鱼花园 Substack: https://octg.substack.com ","permalink":"https://anotherbug.com/2021/05/23/octopus-garden-weekly-vol-12/","summary":"\u003ch4 id=\"科技\"\u003e科技\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://www.zhihu.com/question/323893304/answer/1884411788\"\u003e《为什么闲鱼把网页版取消了？》\u003c/a\u003e 读罢怅然。\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://blog.eastonman.com/blog/2021/05/modern-processor/\"\u003e现代处理器结构\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/Sequel-Ace/Sequel-Ace\"\u003eSequel-Ace\u003c/a\u003e MacOS 上的 MySQL \u0026amp; MariaDB 客户端工具。基于 Sequel Pro，更新比较及时。\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://www.theregister.com/2021/05/19/salesforce_root_cause/\"\u003eThat Salesforce outage: Global DNS downfall started by one engineer trying a quick fix\u003c/a\u003e Salesforce最近出了一起故障，造成服务长达 5 个多小时不可用，而且连提示服务是否可用的状态页面（status）也不可用。原因是与一名工程师想规避了内部的流程想走一个 quick fix 导致了 DNS 配置出问题。然后触发了系统间的循环依赖，导致问题无法通过工具再去紧急修复。嗯，DNS 的问题一般都是大问题。\u003c/p\u003e","title":"章鱼花园 Vol. 12: 人类越野史上最黑暗的一夜"},{"content":"科技 Jargon vs. lingo\nJargon:行话, lingo: 术语。意思类似但是用途不同。Jargon is intentionally offputting, and lingo reminds us how connected we are. Jargon is a place to hide, a chance to show off, a way to disconnect. Lingo, on the other hand, allows us to feel included. 论产品经理的责任。\n微博设计了一个什么什么手机发出来的功能。但正如它一贯的鸡贼，如果你想显示iPhone 12 Pro Max而不是仅仅iPhone的话，是要花钱的。这大概叫双份炫耀。 美团私密住的用意 FABE：feature\u0026ndash;\u0026gt;Advantage\u0026ndash;\u0026gt;Benefit\u0026ndash;\u0026gt;Evidence\n用树莓派打造一个超薄魔镜的简单教程\nLogseq 类似 Roam Research 的卡片式知识管理工具。支持笔记本 github 同步。A local-first, non-linear, outliner notebook for organizing and sharing your personal knowledge base. 开始试用。\n所有的笔记工具目的不是记录知识，而是让知识用起来 另外一款工具是 ROAM EDIT #Tools 笔记软件和写作软件功能点还是不同的：判断一个写作软件好不好用，不一定要亲自去试，这里有一个简单粗暴的标准：如果一个写作软件的视频教程或帮助手册又长又啰嗦，长到你都懒得看，那它多半比较好用；如果一个写作软件至今还在把「markdown、极简、无干扰」之类的概念作为主要卖点，那它多半做得不怎么样。 赋能 vs. 无能：放眼科技行业，近年无数新技术和平台都以「赋能」（empower）为使命，声称自己为用户和创作者提供了亟需的获取和传播信息的能力。然而，支撑着这种赋能叙事的，是一种「无能」的假定：用户没有能力自主找到需要的信息，而是需要算法来推荐和投喂；创作者没有能力自主和受众建立关系，而是需要平台和竞价「优化」来牵线搭桥。相比于「赋能」，用户和创作者更需要的或许是「还能」，夺回他们被复杂技术以「赋能」名义攫取的独立获取或传播信息的能力。\n两万字长文 50+ 张趣图带你领悟网络编程的内功心法\nIndoor Cycling App for Structured Training\n开源版本的 TrainerRoad，不用每个月缴租了。准备尝试一下。 TxStreet 各种blockchain的可视化，很有意思。\n人文 Colma, CA 在旧金山以南16公里的一个小城，当年的淘金热导致加州人口聚集，生存条件和卫生状况导致大量的人失去生命。这座城市当初是为了作为墓地而建，且大多数土地都被规划成墓葬用地，因此该市埋葬的死者数高达 150 多万，甚至比生活于此的在世人口多近千倍，而被称为 “寂静的城市”（The City of the Silent）。现在该市的官方网站也戏称 “在科尔马活着是伟大的”（It\u0026rsquo;s great to be alive in Colma）。\n今天我们不也在淘金吗？cyper space. 5 U.S. Towns with a Crazy History I hate everybody including you\n如果说疫情有带来一点好处的话，那就是我们可以坦然的拒绝各种聚会的邀请。 这篇文章里，作者整理了一系列 The art of saying no 的回复。 Some are tactful and eloquent; others are entirely free of both. All are admirable. 摘取几个好玩的回复: 「I must decline, for secret reasons.」，「Gentlemen, I just don’t belong here.」 Thank you for your letter of 10th January. I would be useless at this debate primarily because I have been dead for 24 years now. Apart from that, I hate scientists and I hate artists. In fact, I hate everybody including you, do tell them that is why I’m not at the debate. Spike Milligan | Letter to Cameron Robson, 1990\nI believe that always, or almost always, in all childhoods and in all the lives that follow them, the mother represents madness. Our mothers always remain the strangest, craziest people we\u0026rsquo;ve ever met. ── Marguerite Duras\n字节跳动的管理哲学\n邮件结尾常常写的「onwards and upwards」什么意思：onwards 向前，前进，upwards 向上，高升。onwards means continous， upwards means going up。直译就是「向前，向上」或者「步步高升」。\n《论语‧子罕》子绝四：毋意，毋必，毋固，毋我。孔子绝对避免四件事，他不主观臆测事情的来龙去脉；也绝不设定必定要实现的期望；也不固执自己的成见；更不会以自我为中心，无视于他人的存在。这是四件人人常犯的毛病。\n随想 订阅章鱼花园 Substack: https://octg.substack.com ","permalink":"https://anotherbug.com/2021/05/16/octopus-garden-weekly-vol-11/","summary":"\u003ch4 id=\"科技\"\u003e科技\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://seths.blog/2021/05/jargon-vs-lingo/\"\u003eJargon vs. lingo\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eJargon:行话, lingo: 术语。意思类似但是用途不同。Jargon is intentionally offputting, and lingo reminds us how connected we are.\u003c/li\u003e\n\u003cli\u003eJargon is a place to hide, a chance to show off, a way to disconnect. Lingo, on the other hand, allows us to feel included.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e论产品经理的责任。\u003c/p\u003e","title":"章鱼花园 Vol. 11: 毋意，毋必，毋固，毋我"},{"content":"科技 LyricsX Spotify 歌词插件。\nTable Editor 在线制作各种表格，包括 markdown table. #Tools\n2021 Berkshire Hathaway Annual Shareholders Meeting\nBuffett 的演讲从 48:20 开始。老巴比较了当前全球市值最高的 20 家公司，以及30年前（1989年）市值最高的 20 家公司。这两个 list 其实是没有一家重合的。如同 Jack Bogle told us: “Don’t look for the needle in the haystack. Just buy the haystack”。 投资的要点是分散（diversify），之前不是有随机买 A 股的实验吗？所以未来 30 （2051年）我们可能无法知道那时市值最高的公司是哪些，But if you own a low-cost, market-cap weighted index fund, you will be guaranteed to own the world’s largest companies in 2051. 对新手来说 stock market investing means trading 25 times a day on Robinhood.不要频繁操作，你需要成为 time billionaire：「Graham Duncan: I was listening to a guy introduced a speaker a while ago. And he was saying people don’t really understand the difference between billionaires and millionaires. He said a million seconds is like 11 days. A billion seconds is 31 years.」 这个世上确定性的东西真的不多，上面可能就是一个了！ Botnet - The Real Zombie Apocalypse\n因为大量的 IoT 存在固件存在安全漏洞，同时固件版本更新不及时，僵尸网络正在逐渐壮大。比如根据猜测 20% of the hashrate of the Monero network could be botnets Botnet 最令人担心的是背后的意图可能暂时不明显，比如自 2018 年首次发现的 \u0026ldquo;Purple Fox\u0026quot;，过去一年（2020）增长了 600%，达到 9 万台设备。对于这种 set-it-and-forget-it 潜伏期的 worm，no one knows what its purpose is yet. Amit Serper from security firm Guardicore says, “We assume that this is laying the groundwork for something in the future.” 可怕。 “内源” 文化优于中台思想\n中台：企业级能力复用平台，又或者是，各类的复用、聚合、协调。想法是避免重复造轮子，实现起来有困难。因为中台违背了一些软件设计的思想，即复制优于复用，组合优于继承。 内源相对于开源，是对内部开源。内源即将开源方法（最佳实践、协作方式、架构模式等）融入到组织的软件构建和发布方式之中，以在组织内构建类似开源的文化。 内源带来的优势：横向虚拟团队 + 内部技术社区 人文 Syd Barrett 是早期 Pink Floyd 乐队的主唱，吉他手和主创作者，也是乐队 Pink Floyd 的命名者。1968 年 4 月离开了乐队因服用毒品而产生精神疾病。后期 PF 有很多歌曲是向这位前辈致敬，比如 《If》，《Wish You Were Here]》和 《Shine On You Crazy Diamond》我都很喜欢。\nYour Life in Weeks\nWhy do we say “Going to the loo”?\n为什么上厕所叫 \u0026ldquo;going to the loo\u0026rdquo;? The most commonly cited reason for our use of the word loo is that it comes from the cry of \u0026ldquo;gardyloo!\u0026rdquo;. This in turn comes from the French term \u0026ldquo;regardez l’eau\u0026rdquo;, which translates literally as \u0026ldquo;watch out for the water\u0026rdquo;. Servants would have shouted this in medieval times when they were emptying chamber pots into the street. This was frequently done from the upstairs windows of buildings, so it was certainly very good advice. 中世纪的仆人们往外倒夜壶（尤其是从楼上往下）时会喊一声「当心有落水」，后来 loo 就和这个「水」联系上了。 比如例句：「If you can touch your door while on the loo, you\u0026rsquo;re probably not rich.」 少用微博\n戈夫曼的《日常生活中的自我呈现》，书名非常直白：我们在日常生活中，要展示自我。这个可以视为“表演”。在社交网络上，我们也展示自我，同样是一种表演，按照今天的话说，就是建人设。但是劝你不用在网络上表演。因为：互联网是有记忆的，观众是不特定的。 The Psychology Behind Not Adding New Things Into Your Life\nEvery purchase or acquisition comes with it hidden costs such as time, attention, and storage. We cannot just chase benefits without factoring in costs as well. The solution to this problem is what Cal Newport calls the craftsman approach to tool selection: adopt a tool only if its positive impacts on these factors substantially outweigh its negative impacts. 随想 《无问》：毛不易\n你问风为什么托着候鸟飞翔\n却又吹的让他慌张\n订阅章鱼花园 Substack: https://octg.substack.com ","permalink":"https://anotherbug.com/2021/05/09/octopus-garden-weekly-vol-10/","summary":"\u003ch4 id=\"科技\"\u003e科技\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/ddddxxx/LyricsX\"\u003eLyricsX\u003c/a\u003e Spotify 歌词插件。\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://truben.no/table/\"\u003eTable Editor\u003c/a\u003e 在线制作各种表格，包括 markdown table. #Tools\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://finance.yahoo.com/brklivestream/\"\u003e2021 Berkshire Hathaway Annual Shareholders Meeting\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eBuffett 的演讲从 48:20 开始。老巴比较了当前全球市值最高的 20 家公司，以及30年前（1989年）市值最高的 20 家公司。这两个 list 其实是没有一家重合的。如同 Jack Bogle told us: “Don’t look for the needle in the haystack. Just buy the haystack”。 投资的要点是分散（diversify），之前不是有随机买 A 股的实验吗？所以未来 30 （2051年）我们可能无法知道那时市值最高的公司是哪些，\u003cstrong\u003eBut if you own a low-cost, market-cap weighted index fund, you will be guaranteed to own the world’s largest companies in 2051.\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003e对新手来说 stock market investing means trading 25 times a day on Robinhood.不要频繁操作，你需要成为 time billionaire：「Graham Duncan: I was listening to a guy introduced a speaker a while ago. And he was saying people don’t really understand the difference between billionaires and millionaires. \u003cstrong\u003eHe said a million seconds is like 11 days. A billion seconds is 31 years.\u003c/strong\u003e」\u003c/li\u003e\n\u003cli\u003e这个世上确定性的东西真的不多，上面可能就是一个了！\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://www.norbert-the-great.com/index.php?entry=Botnet---The-Real-Zombie-Apocalypse\"\u003eBotnet - The Real Zombie Apocalypse\u003c/a\u003e\u003c/p\u003e","title":"章鱼花园 Vol. 10: Happy Mother's Day"},{"content":"科技 我家电视机正在监视所有连网设备\n安全的几点推荐：使用 startpage 作为搜索引擎（搜索质量等同与 Google） 使用 AdGuard 防止追踪，大数据广告远离我的 AdGuard 的规则 url: https://gitee.com/bigdataleaveme/dontcollectme/raw/master/dontcollectme.txt Your TV could be watching you as much as you\u0026rsquo;re watching it, and statistically, it probably is. It may even be clicking on website ads in the background as part of a \u0026ldquo;click farm\u0026rdquo;, sending ad revenue to it\u0026rsquo;s controller. Redux 源码专精，B站学习资源。 #Videos\nBypass Paywalls插件 #Tools\nOpenBMC #Programming\n人文 THE 80% ENERGY PRINCIPLE 80% 的精力原则。 #PKM\n调查发现 Okinawa Island 冲绳岛的居民都很长寿，原因是他们使用了一个被称为 「hara hachi bu」（腹八分目，也作腹八分，字面意思是胃八分满，即饭吃八分饱，是一种日本的饮食健康观念。） 我们的精力也是这样，不可以持续的 max out。作者总结了几个原因 always have have space for a crisis , be able to do better work and helps sustain for longer periods。作者总结 At the buffet （自助餐） of life, we don\u0026rsquo;t need to fill our plate with every opportunity that comes our way. If you leave some space, you\u0026rsquo;ll feel better. Proning During COVID-19 Penn Medicine 的研究，关于 Prone （俯卧）对 ARDS ( Acute respiratory distress syndrome) 呼吸系统病症的帮助。简单讲是人体的构造尤其是肺部在俯卧时对氧气的使用和病人对药物的吸收会存在不同。\nbetter ventilation of the dorsal lung regions threatened by alveolar collapse; 更好的「呼」 improvement in ventilation/perfusion matching; and 更好的「吸」 potentially an improvement in mortality.有助于提高存活率 所以：PRONE, PRONE, PRONE #Life To the Lighthouse - Virginia Woolf #Reading\nLove loves to love love - James Joyce #English\n出处：James Joyce 的小说 Ulysses，大师的一部伟大的「意识流」小说。我非常喜欢的另外一句也是出自这里：「Longest way round is the shortest way home 最逶迤曲折的路才是回家最近的路」常年霸占我的豆瓣签名。 中文翻译：爱其实就是去爱 「爱」 本身。因为中文里的 “爱” 也有两个词性，动词和名词，所以下面的神翻译也是可以的：爱爱爱爱。 LOL 说到意识流，上面的「To the Lighthouse 到灯塔去」是朋友这周分享的，也是一部「意识流」小说。Woolf 和 Joyce 算是两位代表作家。 US Case Reports of Cerebral Venous Sinus Thrombosis With Thrombocytopenia After Ad26.COV2.S Vaccination, March 2 to April 21, 2021\n美国从 3 月 2 号到 4 月 21 号使用强生疫苗出现脑血栓并伴随血小板减少的报告。总计 12 例\nAt the time of the last follow-up, the patient outcomes were death (n = 3), continued ICU care (n = 3), continued non-ICU hospitalization (n = 2), and discharge home (n = 4). 其中 3 例 死亡当中 two were obese; none had other CVST risk factors. Median time from admission to death was 1 day (range, 1-2 days).\n随想 订阅章鱼花园 Substack: https://octg.substack.com ","permalink":"https://anotherbug.com/2021/05/02/octopus-garden-weekly-vol-9/","summary":"\u003ch4 id=\"科技\"\u003e科技\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://www.v2ex.com/t/772523\"\u003e我家电视机正在监视所有连网设备\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e安全的几点推荐：使用 startpage 作为搜索引擎（搜索质量等同与 Google）\u003c/li\u003e\n\u003cli\u003e使用 AdGuard 防止追踪，大数据广告远离我的 AdGuard 的规则 url: \u003ca href=\"https://gitee.com/bigdataleaveme/dontcollectme/raw/master/dontcollectme.txt\"\u003ehttps://gitee.com/bigdataleaveme/dontcollectme/raw/master/dontcollectme.txt\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eYour TV could be watching you as much as you\u0026rsquo;re watching it, and statistically, it probably is. It may even be clicking on website ads in the background as part of a \u0026ldquo;click farm\u0026rdquo;, sending ad revenue to it\u0026rsquo;s controller.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://www.bilibili.com/video/BV1254y1L7UP\"\u003eRedux 源码专精\u003c/a\u003e，B站学习资源。 #Videos\u003c/p\u003e","title":"章鱼花园 Vol. 9: Love loves to love love"},{"content":" RTX 3090 has a terrible VRAM temperature (104C) while mining ~100mh/s. Need to replace the heatsink paste and thermal pad.\nThe heatsink I use is Thermalright TF8 Thermal Compound Paste 13.8 W/mK, Carbon Based High Performance, Heatsink Paste at Amazon: https://amzn.to/3aJpcGp\nThe thermal pad I use is Thermalright Thermal Pad 12.8 W/mK, 85x45x2mm at Amazon: https://amzn.to/3u009pX\n","permalink":"https://anotherbug.com/2021/04/27/rtx-3090-tuning/","summary":"\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRTX 3090 has a terrible VRAM temperature (104C) while mining ~100mh/s. Need to replace the heatsink paste and\nthermal pad.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe heatsink I use is Thermalright TF8 Thermal Compound Paste 13.8 W/mK, Carbon Based High Performance, Heatsink Paste at Amazon: \u003ca href=\"https://amzn.to/3aJpcGp\"\u003ehttps://amzn.to/3aJpcGp\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe thermal pad I use is Thermalright Thermal Pad 12.8 W/mK, 85x45x2mm at Amazon: \u003ca href=\"https://amzn.to/3u009pX\"\u003ehttps://amzn.to/3u009pX\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e","title":"RTX 3090 Tunning"},{"content":" 瑞典作家弗雷德里克·巴克曼在《熊镇》写道：我们守护什么，我们就成为什么。\n科技 笔记本电脑 RTX3060, RTX3070, RXT3080 挖矿的 performance\nCraig Mod 介绍他如何去运作 3 个成功的 newsletter 的分享： How to successfully run a membership program\nMisconceptions on product building #Products\n什么是好的机会（opportunity）：1) number of potential customer 2) how much they spend 3) The frequency at which they buy 4) Their willingness to pay。有人说好的商业创意就是把**「顾客一生一次的买卖变成一生一世的交易」**。 如何找到 demand （或者说挖掘到用户痛点），举了一个咖啡店门口排队的例子。作者也强调 However, my point isn\u0026rsquo;t that you should start a coffee shop. No! My examples are illustrative, not prescriptive. The right opportunity, at the right time, for the right person。天时地利人和。关于「人」的部分。The founder is the surfer，创始人类似 surfer 冲浪者，是永远借助风口浪尖的人。需要 1）Gain relevant skills， 2）Make connections， 3）Build a positive reputation，4）Develop a deep understanding of a market or industry。 Tesla 刹车失灵的 N 种可能。Tesla 的刹车系统是基于 Bosch iBooster 线控刹车系统，线控（也就是电控）是通过检测踏板上车主踩下的力度大小，转换成相应的电信号来告诉线控系统： “ 我要刹车了，刹车力度是 XX ” ，再由线控系统驱动液压系统完成刹车。传统的刹车是机械制动结构就是通过刹车踏板控制液压缸，再通过液压缸推动刹车盘相互摩擦完成刹车。线控是伴随着电动车们能量回收和自动驾驶的需求而诞生的，当然问题（bug）也随之存在，而且可能是一个致命的安全隐患。\n线控刹车系统一个致命的问题：电信号传输的错误、延迟和中断，极有可能带来刹车失灵、突然加速等危险，另外 Tesla 还对 iBooster 系统做了改造。Tesla forum: ibooster braking system logic issue Tesla Regen, Brakes, and Sudden Acceleration 这是 2020发布的一个 66 页的调查报告。P32 页回答了为什么用户刹车的时候会有个突然加速的过程。Why does the single rear drive motor speed increase at exactly the same time as the brakes are being applied? 我看完的第一感受是看不懂，因为这个过程比较复杂，涉及的参数太多。从写程序的角度讲，极有可能出现 bug唉。 物联网安全百科，开源图书，略述万物互联时代攻守之思路，不敢传灯授教，但求燃一星火，以待将来。「至于攻守之道，古来久矣，上窥宇宙方圆之演化，下度红尘万物之百态，大抵皆备攻守之义，攻者，进也，取也，胜也，守者，退也，御也，全也。圣人取之以治天下，所谓不可胜者，守也，可胜者，攻也，守则不足，攻则有余，善守者藏于九地之下，善攻者动于九天之上，故能自保而全胜也。」\n人文 如何使用 Obsidian 来做 Bible Study\ndarn:语气助词。比如 It\u0026rsquo;s not perfect, but it’s darn good enough. #English\n医生揭开癌症治疗黑幕！花更多的钱，遭更大的罪\n都讲「医者仁心」，可是现在的的社会，套用电影《教父》里的一句台词 nothing personal, strict business。没有个人关怀全是生意。 感动我的哥伦比亚大学医学院 Edward L. Trudeau 医生留给这个世界的墓志铭：「To cure sometimes, to relieve often, to comfort always.」 《熊镇》写道：我们守护什么，我们就成为什么。有责任感的人是不自由的。 关于「心理学婚姻观念」的两篇文章，作者 Alain de Botton。\nWhy You Will Marry the Wrong Person When Is One Ready to Get Married? 没结婚的建议打印出来阅读。 随想 《美丽世界的孤儿》汪峰。有一句话说 ── 懂得越多就越像这美丽世界的孤儿，走得越远就越明白世界本是孤儿院。 别哭 我亲爱的人\n我想我们会一起死去\n别哭 夏日的玫瑰\n一切已经过去\n你看车辆穿梭\n远处霓虹闪烁\n这多象我们的梦\n宝贝 看看远处月亮\n从旷野上升起\n求你再抱紧我\n我感觉冷 我感觉疼\n你看车辆穿梭\n好像在寻找什么\n他们就象我们的命运\n啊 别哭 亲爱的人\n我们要坚强 我们要微笑\n因为无论我们怎样\n我们永远是这美丽\n世界 的孤儿\n啊 别哭 亲爱的人\n我们要坚强 我们要微笑\n啊 别哭 亲爱的人\n我们要坚强 我们要微笑\n因为无论我们怎样\n我们永远是这美丽\n世界 的孤儿\n订阅章鱼花园 Substack: https://octg.substack.com ","permalink":"https://anotherbug.com/2021/04/25/octopus-garden-weekly-vol-8/","summary":"\u003cblockquote\u003e\n\u003cp\u003e瑞典作家弗雷德里克·巴克曼在《熊镇》写道：我们守护什么，我们就成为什么。\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch4 id=\"科技\"\u003e科技\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://medium.com/crypto-blog/mining-eth-on-nvidia-rtx-3060-rtx-3070-and-rtx-3080-laptop-gpus-what-to-expect-7b45b1bd7964\"\u003e笔记本电脑 RTX3060, RTX3070, RXT3080 挖矿的 performance\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eCraig Mod 介绍他如何去运作 3 个成功的 newsletter 的分享： \u003ca href=\"https://craigmod.com/essays/successful_memberships/\"\u003eHow to successfully run a membership program\u003c/a\u003e\u003c/p\u003e","title":"章鱼花园 Vol. 8:我们守护什么，我们就成为什么"},{"content":"科技 一个历史：在2013年5月，Node.js 包管理器 npm 的作者 Isaac Z. Schlueter，宣布 Node.js 已经废弃了CommonJS，原因是 CommonJS 只指定标准而与实现和实际需求脱离，这与 Node.js 的目标相背离。同时也反思了「\u0026ldquo;Standardizing\u0026rdquo; before you have implementation is naive, in the most literal sense of showing a lack of experience, wisdom, or judgement.」，同时也指出 Node.js 与其他 SSJS （Server-side JS) platform 之间的竞争与 MSIE and the browser war 的不同，值得一读。Forget CommonJS. It\u0026rsquo;s dead. We are server side JavaScript.\n沙拉查词，一款 Chrome 划词翻译插件，可以配合 ANKI 使用，这是作者的博客。\n当「无可奉告」无可奉告——反思与告别 ：「无可奉告」是交大的匿名 APP 论坛，短暂的持续了一段时间，2020/12/04 - 2021/04/11，视频是创作者们最后的告别。愿为江水，与君重逢。一定要看到最后。\nThe Zen of WKFG 无可奉告之禅 Love is better than hate. 爱胜于恨 Real is better than fake 真实胜过虚假 Beautiful is better than ugly. 美丽胜于丑陋 Friendly is better than aggressive. 友善胜于好斗 Sound is better than reticence. 发声胜于缄默 Equality is better than disparity. 平等胜于差异 Unease is better than comfort. 忧患胜于安乐 Pursue is better than abide. 追求胜于遵守 Respect is better than understand. 尊重胜于理解 Understand is better than ignorance. 理解胜于无知 Ignorance is better than prejudice. 无知胜于偏见 Every voice counts. 每个声音都很重要 Special cases aren\u0026#39;t special enough to break the rules. 特例也不可违背这些规则 Injustices should never pass silently. 不公正绝不能无声无息地过去 Unless, no unless. 没有例外 「无可奉告」2020/12/04 — 2021/04/11 从 DevOps 到 AIOps，一文聊聊面向终态的监控平台建设 ：我总觉得终态也始终是局部终态。「初心」与「终态」可能是解决问题的两个思考切入点。如果重新来设计云计算服务，会有什么不同呢? #Technology 清华大学裴丹 Netman 实验室 智能运维系列 最后，与大家共勉：智能运维落地， 前景是光明的，道路肯定是曲折的。引用一下我原来在AT\u0026amp;T的领导Albert Greenberg在2015年SIGCOMM演讲的时候说的两句名言。他说别人问我：你怎么得了那么多的学术界会议的Test of time奖（十年前发的论文，十年后再评哪篇论文是最好的）的？他说很简单，“论文发表之后再花五年把论文里面的算法变成产品，就证明你这个东西是好的，就自然得这个Test of time奖了”。 他的意思就是你要把好的思路、好的算法在应用中实践出来，并且对工作量有合理的预估。他的另外一句名言是“人们往往高估两年内能完成的成果，同时又往往低估五年内能完成的成果。” 意思是如果你看太短的话，很多事情做不成。但是有足够的耐心，放到四五年的尺度的话，往往能做成很多的事情。 - 清华裴丹\nchia 币 3月19号开始加入主网 Mainnet，全面开启了硬盘挖矿时代。在全球 GPU 显卡出现疯抢之后，下面就要开始是硬盘了吗？中国以及香港市场的 4T-8T 硬盘已经全面涨价。 原理：Chia 币是基于 Proof of space and time 来做共识，或者说你拥有的空间数量。它有两个形式，首先是 plotting 然后是 farming，形象一点就是先耕种 (plot) 然后收获 (farm)。Plot 的过程是会持续的做大量 CPU 运算（sort） 和硬盘读写，最终生成一个 plot 文件（ K32 是 ~101.4GB），第二个阶段是基于你手上的 plot 文件（戏称农民手里的「牌」）等待系统「翻牌」，然后拿到 XCH （chia币） Plot 过程会对硬盘做持续读写，推荐是 datacenter SSD，普通的机械硬盘或者 SSD 可能很快就会挂掉。 XCH （chia币）的价格未知，挖矿的程度已经越来越难。XCH/TiB 的关系（每 1TB 空间每天获得的 XCH 数量）逐天递减。大概 10TB空间10天时间从可以获得 5 XCH (4/5/21) 到现在的 2.3 XCH (4/18/21) 个。 微信上有人说：「我忽然想明白了，加密货币是不是不需要落地场景，只需要共识。因为货币就是共识的产物，币有多贵就是看有多少韭菜的共识。」嗯，而且，最最主要的「傻X的共识也是共识」，你到底要不要做呢？If you can\u0026rsquo;t beat them, join them. 人文 游戏运营的三个生命周期：1）能来玩（新进 come) 2）可以玩 （活跃 play）3）喜欢玩（活跃 stay）。是否也是用户上瘾的模型。 #Products 「识时务者为俊杰」英文翻译：Ones who understand situations and act accordingly, are the elites. 「无力胜之则从之」英文翻译：if you can\u0026rsquo;t beat them join them. 随想 Boilerplate Advice 样板人生的建议。当中提到了 Emerging Adulthood 的几个阶段： 18 - 30 是第一次人生自我独立做主「Get worldly, develop relationships (including with yourself), learn who/what to trust, thread the needle of cynicism vs. motivation. Learn to be kind to yourself.」 Act 1: 30 - 42岁 「Pick risks, battles, commitments, and responsibilities that will make you who you are.」 你的选择定义了你自己。 Act 2: 42 - 54 岁 「Understand your own past, and make your peace with it. Decide what/who to forgive/forget — or not.」 作者毕竟年轻， 55-70 还是TDB，殊不知，几千年前孔子早就告诉我们了：「三十而立，四十而不惑，五十而知天命，六十而耳顺，七十而从心所欲，不逾矩」。 订阅章鱼花园 Substack: https://octg.substack.com ","permalink":"https://anotherbug.com/2021/04/18/octopus-garden-weekly-vol-7/","summary":"\u003ch4 id=\"科技\"\u003e科技\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e一个历史：在2013年5月，Node.js 包管理器 npm 的作者 Isaac Z. Schlueter，宣布 Node.js 已经废弃了CommonJS，原因是 CommonJS 只指定标准而与实现和实际需求脱离，这与 Node.js 的目标相背离。同时也反思了「\u0026ldquo;Standardizing\u0026rdquo; before you have implementation is naive, in the most literal sense of showing a lack of experience, wisdom, or judgement.」，同时也指出 Node.js 与其他 SSJS （Server-side JS) platform 之间的竞争与 MSIE and the browser war 的不同，值得一读。\u003ca href=\"https://github.com/nodejs/node-v0.x-archive/issues/5132#issuecomment-15432598\"\u003eForget CommonJS. It\u0026rsquo;s dead. We are server side JavaScript.\u003c/a\u003e\u003c/p\u003e","title":"章鱼花园 Vol. 7: If you can't beat them, join them."},{"content":"科技 首个火星城市女娲 NÜWA CITY：30万美金的单程车票，提供建造在岩壁内的25-30平房子，提供食物和设施，但是需要签署合同将个人的 60 -80% 时间用于工作。\n80亿美元侵权诉讼的随想 科技业影响深远的一个案例：「考虑到程序员在学习 Java API 上的投资，如果把这个接口本身保护起来，会有害公众利益，因为这会迫使程序员不得不付出额外的努力去适应新的接口。新的创造就会被锁起来，而钥匙掌握在 Oracle 一家手里。这能让 Oracle 获得不菲的利润，但这些利润本来可以流向大量掌握了这些接口的人能创造出的新的应用之中。因此这种锁定是和版权的本意相违背的。」\n自动化开发环境 setup：作者是 Strajk，在 APIFY 工作。\nMac OS 上一个真好用的截图工具 snippaste\n我的第一台手工键盘，以及如何在 macOS 上配置键位 「说机械键盘是“手指马杀鸡”，但我发现只有按照自己喜好亲手打造一支键盘，那种手指+心灵双重抚慰的感觉才是我想要的。」── 杜晨 (Chen Du)\n人文 日晷桥（Sundial Bridge）坐落在Redding的龟背湾探索公园（Turtle Bay Exploration Park），横跨绿树成荫、鳟鱼成群的萨克拉门托河，由著名西班牙 建筑师 Santiago Calatrava 设计，是一座具实际功用的艺术作品。日晷桥跨度 700 英尺/ 213 米，人行道铺着玻璃砖、白色桥塔高耸入天，悬索既能支撑桥梁也是日晷。 Redding城市旅游的介绍网站上关于设计师对这座桥创意的解读这样写道： 「Sundial Bridge also inspires onlookers with it\u0026rsquo;s \u0026ldquo;bird in flight\u0026rdquo; design, symbolizing overcoming adversity. 设计师把它想象成克服逆境的飞翔的鸟。这个意境充满了力量，振奋人心！」\n每颗种子都是一个希望，只要心中怀有希望，日子就不会太难过：「甘露既降，朱草萌芽，心不枯萎，绝处逢生。」──《司藤》\n寻找尸体的人\nHoodmaps：Hoodmaps is a crowdsourced map to divide cities up into hipsters, tourists, rich, normies, suits, and uni areas.\n书籍 《下沉年代》：The Unwinding: An Inner History of the New America「在方圆数英里内荒无人烟的地方，一个崭新的社区可以在一夜之间冒出来，然后以同样快的速度消失不见。一座老城市可能失去工业基础，流失三分之二的人口，它的所有支柱——教堂、政府、商业、慈善团体、工会——都如同公寓楼在强风中垮塌，却几乎没有发出声响。」\n声东击西第 151 期关于这本书的讨论，嘉宾是《下沉年代》译者刘冉： 151 American\u0026rsquo;T ：正在下沉的美国梦 不好的感情让人变成疯子，好的感情让人变成傻子，而最好的感情让人变成孩子。\n随想 这几年一直听到「下沉」这个词，「下沉市场」其实是一种消费的向下的触达。还有一种下沉就是书籍 《下沉年代》：The Unwinding: An Inner History of the New America 里面讲到的这个社会的撕裂和剧变。电影《无依之地》拍了一部分，这本书里面又写出了四个人的一生，四个阶层的剧痛，一代人的失败挽歌。 订阅章鱼花园 Substack: https://octg.substack.com ","permalink":"https://anotherbug.com/2021/04/11/octopus-garden-weekly-vol-6/","summary":"\u003ch4 id=\"科技\"\u003e科技\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://www.popularmechanics.com/science/a35915975/mars-city-nuwa-plans/\"\u003e首个火星城市女娲 NÜWA CITY\u003c/a\u003e：30万美金的单程车票，提供建造在岩壁内的25-30平房子，提供食物和设施，但是需要签署合同将个人的 60 -80% 时间用于工作。\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://mp.weixin.qq.com/s?src=11\u0026amp;timestamp=1617921397\u0026amp;ver=2997\u0026amp;signature=-g2jIUMx00T-XE86Nj0w-xRbNb7A2Ej3knQwM*mIOGTVRSZRcMrHKYZAprQDc-izLyllsrUGBnYWKg5Rku5NaKCF2CtdpFFrw8Dw4yG4EMYYCmzGEkTJf2VNuqCCjZuE\"\u003e80亿美元侵权诉讼的随想\u003c/a\u003e 科技业影响深远的一个案例：「考虑到程序员在学习 Java API 上的投资，如果把这个接口本身保护起来，会有害公众利益，因为这会迫使程序员不得不付出额外的努力去适应新的接口。新的创造就会被锁起来，而钥匙掌握在 Oracle 一家手里。这能让 Oracle 获得不菲的利润，但这些利润本来可以流向大量掌握了这些接口的人能创造出的新的应用之中。因此这种锁定是和版权的本意相违背的。」\u003c/p\u003e","title":"章鱼花园 Vol. 6: The Unwinding 下沉年代"},{"content":"科技 关于 IP 定位的一个万能公式： 「为 xxx 人群，提供 xxx 价格的 xxx 服务，解决 xxx 问题」。带着这种思考方式去定义你的目标。 #Products\n加密货币的安全问题：最近国外一二比特币持用者在 app store 上下载了假的 Trezor app，导致瞬间丢失了 17.1 个比特币（价值约 90 万美金）。在币圈，流行这句话 「Not your keys, not your coins. 不掌握私钥，就不是你的币。」，你的币本质是就是一串随机字母和数字。大家也在讨论 app store 如何让一款假的 app 通过审核并上线的。 #Digital-assets\nES6 入门教程 #Programming #Frontend\nBias–variance tradeoff：The bias-variance tradeoff is a central problem in supervised learning. Ideally, one wants to choose a model that both accurately captures the regularities in its training data, but also generalizes well to unseen data. Unfortunately, it is typically impossible to do both simultaneously. 「准确」是两个概念。准是 bias 小，确是 variance 小。准确是相对概念，因为 bias-variance tradeoff。\n人文 电影《哥斯拉大战金刚 Godzilla vs Kong》：一部快跨越了一个世纪的怪兽大战。解压好去处，没什么逻辑，人类演员演技也不在线，毕竟我们不是看他们的。好莱坞一直炒作这些个 IP，我其实毕竟好奇这两个货是怎么就打起来，有啥历史渊源： #Movies\n大猩猩金刚 1933 年初登银幕，创作者叫梅里安・C・库珀（Merian C. Cooper），是个很能折腾的人，当过记者和空军飞行员，做电影导演和制片人是半路出家。《金刚》的剧情，就是创作者人生历程的阶段性总结。 日本在1933 和1938 年分别跟风拍了两部日本自己的《金刚》，但据说这两部影片的拷贝被广岛、长崎的原子弹所毁，或因其他原因而遗失。日本自己的怪兽电影《哥斯拉》于 1954 年上映。 金刚参考了科莫多巨蜥的单词，即 “Komodo dragon”，再加上 King “王者” 词汇，King Kong 简短又霸气的名字非常好记。在英语里 “大猩猩” 一词是 gorilla，哥斯拉的字母名是 Gojira，哥斯拉的主创就是用 “大猩猩” 和 “鲸鱼” 这两个日文词组合命名了这个原子恐龙。所以这两个 IP 的命名也是千丝万缕。 The Guilt of Not Working More, When We’re Done for the Day 工作停不下来的人应该读一下。另外关于什么时候该停止一天的工作，其实是有个理论的，有人说你遇到困难进行不下去的时候就停下来了，其实不是，按照 GTD 的讲法是你完成了一个小的任务，并且接下来任务比较明晰且相对容易开始的时候停下来。这样你在下次开始的时候可以快速进入所谓的 「心流」状态。\nWhy YKK zippers are the brown M\u0026amp;Ms of product design: look at the little details to judge overall gear quality #Products\n介绍为什么 YKK 拉链能够成功并且占据这个拉链市场 50% 份额，有人说 Yoshida （YKK创始人） was the Steve Jobs of zipper。YKK 的经营哲学「Cycle Of Goodness: no one prospers without rendering benefit to others.」，他们还出了 10 期的卡通漫画 manga 来解释这个。 所以当你做决定是否购买每个一个产品的时候可以通过他的一些细节组件来判定这个产品整体的好坏，就像一件衣服如果是用了 YKK 拉链，那么至少可以判断他们也会有较好的质量。 这就是所谓的 The brown M\u0026amp;M’s principle (the idea that small details can sometimes serve as useful indicators of big issues)。 产品的工匠精神：the quality of the products hone in on the fine details. What’s Your Company Really About? 讲到提供给客户的和你自己商业的真正本质之间的差异。The spine is the deeper intent behind what you’re doing. Not every customer needs to understand the spine to use and enjoy the product, but it’s important for everyone at the company to understand the larger vision. 就像 Tesla 刚推出它的第一辆超级昂贵的 Roadster 时，所有的消费者和投资者可能都没有注意到它的存在，但是 Tesla 的真正商业意图是 「Making transportation sustainable for the planet while being joyful to the consumer.」，这个本质自始至终是没有变的。所以作为商业的领袖，你的 vision 要比普通消费者看得更深更远。 #Products\n关于 Style：什么是写作中的 牛津逗号 Oxford Comma，以及由它引起的一起千万美金诉讼。\nSome things I enjoy: photography, driving on 280, chocolate, films, and the Oxford comma. From Shripriya 故曰：「将不仁，则三军不亲；将不勇，则三军不锐；将不智，则三军大疑；将不明，则三军大倾 ；将不精微，则三军失其机；将不常戒，则三军失其备；将不强力，则三军失其职。故将者，人之司命，三军与之俱治，与之俱乱。得贤将者兵强国昌，不得贤将者兵弱国亡。」──《六韬·龙韬·奇兵》，关于将的责任。\nI mean, if 10 years from now, when you are doing something quick and dirty, you suddenly visualize that I am looking over your shoulders and say to yourself \u0026ldquo;Dijkstra would not have liked this\u0026rdquo;, well, that would be enough immortality for me. 如果十年以后，你以快而脏的方式做什么事的时候，能想象我在你的肩后看着，然后对自己说：「Dijkstra 不会希望这样的。」那么对我来说，这就和永生一样了。 \u0026mdash; Edsger Wybe Dijkstra #Quotes\n关于招聘以及通过什么样的问题快速的了解对方 questions to understand one another。 Hiring for Value\n随想 4月1日是愚人节，愚人节的愿意好像是在提醒着人们好多事情不一定是如同想象的那样，不过现在由于被操控的媒体和扩大了政治分歧，我们似乎每时每刻都在被虚假的，有目的，有偏见的信息所左右。这其实让我很害怕，The first of April was a day when we were supposed to be aware that not everything was as it seemed, that we should be on our guard. And now, exhausting as it is, every day is like that. Show your work. Earn attention and build trust. Every day. 订阅章鱼花园 Substack: https://octg.substack.com ","permalink":"https://anotherbug.com/2021/04/04/octopus-garden-weekly-vol-5/","summary":"\u003ch4 id=\"科技\"\u003e科技\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e关于 IP 定位的一个万能公式： 「为 xxx 人群，提供 xxx 价格的 xxx 服务，解决 xxx 问题」。带着这种思考方式去定义你的目标。 #Products\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e加密货币的安全问题：\u003ca href=\"https://decrypt.co/63508/fake-trezor-iphone-app-scams-user-out-of-600000-in-bitcoin\"\u003e最近国外一二比特币持用者在 app store 上下载了假的 Trezor app，导致瞬间丢失了 17.1 个比特币\u003c/a\u003e（价值约 90 万美金）。在币圈，流行这句话 「Not your keys, not your coins. 不掌握私钥，就不是你的币。」，你的币本质是就是一串随机字母和数字。大家也在讨论 app store 如何让一款假的 app 通过审核并上线的。 #Digital-assets\u003c/p\u003e","title":"章鱼花园 Vol. 5: The Brown M\u0026M's Principle"},{"content":"「我们这至暂至轻的苦楚，要为我们成就极重无比永远的荣耀。原来我们不是顾念所见的，乃是顾念所不见的；因为所见的是暂时的，所不见的是永远的。」 - 圣经《哥林多后书》 4:17-18 For this light momentary affliction is preparing for us an eternal weight of glory beyond all comparison, as we look not to the things that are seen but to the things that are unseen. For the things that are seen are transient, but the things that are unseen are eternal. 2 Corinthians 4:17-18 HAPPY PASSOVER!\n科技 在中文用户的软件中，输入法是最大的安全漏洞（没有之一）\n强烈认同，之前分享过，现在的各种高级输入法可以知道我想输入什么，还每天给我统计我输入了多少个字，你不害怕吗？可是我们又离不了他们，因为输入太方便了，大多数人都是愿意牺牲一点隐私来换取方便的人。在密码这件事情上也是。 作者也是推荐 RIME 输入法。我也用了多年，并且去年开始已经不使用拼音输入法，转用 小鹤双拼。算是我疫情期间培养的最大的技能吧 #Tools 关于排版指南：\nhttps://tingtalk.me/style-guide/ 一款 Chrome 插件以及它的介绍：为什么你们就是不能加个空格呢？ 汉学家称这个空白字元为「盘古之白」，因为它劈开了全形字和半形字之间的混沌。另有研究显示，打字的时候不喜欢在中文和英文之间加空格的人，感情路都走得很辛苦，有七成的比例会在 34 岁的时候跟自己不爱的人结婚，而其馀三成的人最后只能把遗产留给自己的猫。毕竟爱情跟书写都需要适时地留白。 关于密码管理，我之前分享过已经开始基于 Bitwarden。但是如何保证 Bitwarden 自身的单点问题。可以考虑使用硬件的 authenticator，不要用手机短信作为认证凭证，因为通讯服务商很容易拦截短信上的验证码。使用 authenticator 或 fido2 的凭证保护密码管理器。比如 Google Titan： https://store.google.com/product/titan_security_key 要提升网络安全性，也需要投入资源，不要将自己陷在免费服务的陷阱里。使用免费服务，你的数据和你的隐私就成为别人的商品了，免费和安全是天然冲突的观念。 #Technology\n(Price, wants, needs and the perils of urgent) 人性就是给用户以相对较低的价格提供他们所必须（need）的东西。because people are always happy to pay a bit less for something they really need. #Products\n人文 本周是逾越节（3/27/2021 - 4/4/2021)，为期 7 天，是以色列的三大重要节日之一（另外两个是住棚节和五旬节）。纪念以色列人出埃及记 -从埃及的奴役解脱。是最重要的犹太节日之一，这是一个关于奴役、自已与拯救的纪念。 逾越节家宴 Passover Seder Plate. 「Seder」在希伯来文里面的意思「秩序」。逾越节家宴有多达 15 个步骤，当然食物也是重要的部分，并且每种食物都有特别含义。 ![[Passover_Seder_plate,_numbered.jpg]]\nZeroa (shankbone) 羊骨（不可食用），用来纪念那只在圣殿中作为祭品被献上的羔羊 Beitza(roasted hard-boiled egg) 代表生命更新的烤鸡蛋，不会食用，也象征圣殿中的其他献祭。 Maror /Chazeret (horseradish) 辣根 辣根代表了埃及奴役所带来的痛苦 Maror /Chazeret (onion) 苦菜 苦菜代表了埃及奴役所带来的痛苦 Charoset 果酱是一种用水果、坚果和酒制成的食物，象征着犹太人当奴隶时砌砖用的砂浆。 英文里面有一句**「Bricks without straw」**无草做砖指的是必须在没有适当资源的情况下执行的任务。当时以色列人遭受法老的种种虐待可见一斑。 Karpas(parsley) 盐水蔬菜 在晚宴的开头，要把这种蔬菜蘸上盐水吃下。盐水象征着在埃及受奴役的犹太人的泪水。但是没有人知道 Karpas 具体是指什么蔬菜，由此诞生了不同的习俗：有的家庭会吃芹菜，有的会吃土豆，还有的吃欧芹。 陈奕迅的《十年》中 「如果那两个字没有颤抖，我不会发现我难受。」是指哪两个字？。 有人说是再见，有人说是分手，还有说是「彩礼」LOL #Music\n诗和远方：逃离油盐酱醋娃，奔赴山河湖海花 #Quotes\nElon Musk如何在快速学习，他在一次访谈中提到把知识看成一棵大树 “It is important to view knowledge as a sort of semantic tree. Make sure you understand the fundamental principles, i.e., the trunk and big branches before you get into the leaves/details or there is nothing for them to hang on to.”\n其实就是我们常讲的「提纲挈领」，先学主干抓住主线再去深入学习 #Thought-provoking Four Pillars of Retirement: Money, Purpose, People, and Health。关于退休大部分人都只关注在金钱上，其实有足够的钱只是退休的第一部，文章给出了四个支柱，分别是：金钱，有目的的人生，有爱的人和健康。缺一不可 #Life\nMoney: You need enough money to pay for housing, transportation, food, healthcare, and everything sold at Walmart/Target/Amazon/Costco.\nPurpose: You need to feel that you are useful, moving forward, pursuing a goal, and/or making the world a tiny bit better.\nPeople: You need love. Love and social interaction from your life partner, children, family, friends, and/or animal companions.\nHealth: You need to feel physically healthy, or be at peace with your level of health.\n王维的老将行诗写一老将年少勇战，转战沙场，后因 “无功” 被弃，然而他自不服老，在边地烽火重燃时，他壮心复起，仍想为国立功。西方有谚：「Old soldiers never die; they just fade away. －General Douglas MacArthur 」 老兵不死，只是凋零。 －道格拉斯·麦克阿瑟。 #Reading\n老将行 [唐] [王维] 少年十五二十时，步行夺得胡马骑。 射杀山中白额虎，肯数邺下黄须儿！ 一身转战三千里，一剑曾当百万师。 汉兵奋迅如霹雳，虏骑崩腾畏蒺藜。 卫青不败由天幸，李广无功缘数奇。 自从弃置便衰朽，世事蹉跎成白首。 昔时飞箭无全目，今日垂杨生左肘。 路旁时卖故侯瓜，门前学种先生柳。 苍茫古木连穷巷，寥落寒山对虚牖。 誓令疏勒出飞泉，不似颍川空使酒。 贺兰山下阵如云，羽檄交驰日夕闻。 节使三河募年少，诏书五道出将军。 试拂铁衣如雪色，聊持宝剑动星文。 愿得燕弓射大将，耻令越甲鸣吾君。 莫嫌旧日云中守，犹堪一战取功勋。 司藤说：“生而为藤，你以为我喜欢化作人形，把自己塞进这些奇奇怪怪的衣服鞋子里？我长在西南密林，抬首是天，低头是地，风霜雨露，日月精华，想开花就开花，想不开花就不开花，想爱谁就去爱，不爱我我就走，若不是丘山多事，谁想一头扎进人间道，活也活不成，爱也爱不到？” #Quotes 随想 订阅章鱼花园 Substack: https://octg.substack.com ","permalink":"https://anotherbug.com/2021/03/28/octopus-garden-weekly-vol-4/","summary":"\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e「我们这至暂至轻的苦楚，要为我们成就极重无比永远的荣耀。原来我们不是顾念所见的，乃是顾念所不见的；因为所见的是暂时的，所不见的是永远的。」\n\n  - 圣经《哥林多后书》 4:17-18\n\nFor this light momentary affliction is preparing for us an eternal weight of glory beyond all comparison, as we look not to the things that are seen but to the things that are unseen. For the things that are seen are transient, but the things that are unseen are eternal.\n\n2 Corinthians 4:17-18\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eHAPPY PASSOVER!\u003c/p\u003e\n\u003ch4 id=\"科技\"\u003e科技\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://eddyemma.com/blog/2021/03/21/simplens8/\"\u003e在中文用户的软件中，输入法是最大的安全漏洞（没有之一）\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e强烈认同，之前分享过，现在的各种高级输入法可以知道我想输入什么，还每天给我统计我输入了多少个字，你不害怕吗？可是我们又离不了他们，因为输入太方便了，大多数人都是愿意牺牲一点隐私来换取方便的人。在密码这件事情上也是。\u003c/li\u003e\n\u003cli\u003e作者也是推荐 \u003ca href=\"https://rime.im/download/\"\u003eRIME\u003c/a\u003e 输入法。我也用了多年，并且去年开始已经不使用拼音输入法，转用 \u003cstrong\u003e小鹤双拼\u003c/strong\u003e。算是我疫情期间培养的最大的技能吧 #Tools\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e关于排版指南：\u003c/p\u003e","title":"章鱼花园 Vol. 4: 「我们这至暂至轻的苦楚，要为我们成就极重无比永远的荣耀」"},{"content":"Principles 1/ Create alignment (thru empathy) 2/ Tell the truth (transparency) 3/ Don\u0026#39;t take ourselves too seriously (have fun) -- Earnest Capital 科技 战斗民族的新作发表在 preprint 上。：树莓派加上摄像头和激光，然后用图像识别和深度学习来打蚊子，下一步计划基于无人机实现房间内自动巡逻。\nMore than 700 thousand human deaths from mosquito bites are observed annually in the world. It is more than 2 times the number of annual murders in the world. In this regard, the invention of new more effective methods of protection against mosquitoes is necessary. A recommendation is given for the implementation of this device based on a microcontroller for subsequent use as part of an unmanned aerial vehicle. Any harmful insects in the fields can be used as objects for control. Twitter: 他们说区块链不会骗人 但是他们用区块链骗人 \u0026ndash; Hao Chen\n从宇宙大尺度结构到胎心监测，从手机消息推送到物联网大数据处理 – 跨界是创新的主要源泉\n涛思数据的创始人陶建辉，科大物理专业的跨界创新分享。 TDengine 一个数据采集点一张表的创新想法解决大数据处理问题。 Deskreen: Turn any device into a secondary screen for your computer，把你任何的设备变成电脑的第二个显示屏。\nVirtual Display Adapter 也叫 Ghost Adapter，就是给电脑 trick，让它以为自己接上了显示器，可以用在远程桌面链接，挖矿（对，crypto mining 可以防止你的 GPU 休眠）以及 VR 等游戏上。 人文 这些话，不仅鲁迅没说过，连周迅也没说过 #Quotes\n\u0026ldquo;王小峰\u0026quot;的观点：以前我一直觉得中文搜索引擎搜出的东西不可靠，现在发现英文搜索出的结果一样不可靠。往大了想，人类都喜欢自欺欺人，往小了想，人在阅读、写作时都不求甚解。 东方的文化人喜欢把名言按在鲁迅的头上，西方大抵就是放在鲍勃·迪伦身上吧。 “有些人感到了下雨，其他人只是感觉被淋湿了”（Some People Feel the Rain. Others Just Get Wet.） 这句话的出处不是鲍勃·迪伦而是牙买加歌星鲍勃·马利说的 有个网站叫 Quote Investigator https://quoteinvestigator.com/ 微信上转的\n朋友的自我疗愈法则，特别想分享给我心爱的同事们 1.渐渐把 “这种事为什么要发生在我身上” 的想法替换成了 “这种事想教会我什么” 然后发现身边的一切都改变了 。 2.快乐法则：减少期待 戒掉敏感。 3.人在心情愉悦的时候， 心脏会分泌出一种叫缩氨酸的荷尔蒙 它会杀死人体95%的癌细胞. 所以你的笑价值百万.” 4.把“我是一个xxxx（自卑、焦虑、抑郁、痛苦等问题）的人”换成“我是一个人，正在面对xxx（问题），如果我短时间解决不了这个问题，我选择和它和谐相处” 最近工作又搜到 Vamei 的博客。 老早就听过他是一位技术大神，由于抑郁症英年早逝，几年前就记住了他的名字，因为比较特殊，今天看到文章的时候脑海里突然再想不会是他的文章吧，一查果然。 科大空间物理学专业，南洋理工大学 （NTU）博士，最后一份工作是担任睿畜科技的技术官(CTO)，基于 AI 养猪。 关于 Vamei，他的豆瓣介绍：Vamei 是赤道附近一个台风的名字。按照气象规律，台风不常出现在赤道。所以，Vamei 是一个离群的风，无所顾忌地生长，不着边际地游荡。 Vamei 中文译为画眉，是 2001 年的一个台风名字。“画眉”在北纬 1.5 度形成，距离赤道约 160 公里，打破了 1956 年台风莎拉（Sarah）的北纬 2.2 度纪录。因为离赤道太近，缺乏地转偏向力，科学家认为不可能形成台风，但是“画眉”形成了。 网上找的 Vamei 的座右铭：「世代傳承的意志，時代的變遷，人們的夢，只要人們繼續追求自由的答案，這一切的一切都將永不停止！」 随想 一个好的生产力工具太重要了，工作电脑用了快 4 年了，一开 IDE 风扇呼呼想，电池形同虚设，本周终于收到了新版的 Macbook Pro 16，安静的让我不适应。几点感受： MBP 的 touchbar 设计还是让人容易分散注意力，从屏幕不停的要切换到touchbar 用了几次不是特别适应。\n如何无缝在多个环境（不同电脑，操作系统）间切换和共享：我的大部分环境配置（基于 dotfile)，软件设置 (Sublime, aText, Squirrel, Bitwarden，Notion, Obsidian) 都可以自动化在多个环境共享。这周又开始倒腾了 NAS，基于群晖Synology DSM，已经完成了很多，下次分享。\nGood Luck \u0026amp; Have Fun (GLHF)\n订阅章鱼花园 Substack: https://octg.substack.com ","permalink":"https://anotherbug.com/2021/03/21/octopus-garden-weekly-vol-3/","summary":"\u003cpre tabindex=\"0\"\u003e\u003ccode\u003ePrinciples \n1/ Create alignment (thru empathy) \n2/ Tell the truth (transparency) \n3/ Don\u0026#39;t take ourselves too seriously (have fun)\n\n-- Earnest Capital\n\u003c/code\u003e\u003c/pre\u003e\u003ch4 id=\"科技\"\u003e科技\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e战斗民族的新作发表在 \u003ca href=\"https://www.preprints.org/manuscript/202101.0412/v1\"\u003epreprint \u003c/a\u003e上。：树莓派加上摄像头和激光，然后用图像识别和深度学习来打蚊子，下一步计划基于无人机实现房间内自动巡逻。\u003c/p\u003e","title":"章鱼花园 Vol. 3: Some People Feel the Rain. Others Just Get Wet."},{"content":"科技 Individual Contributor Jon Moore 是 Comcast 公司的 Senior Fellow，最近从 Chief Architect 转到了 Individual Contributor (IC)，分享了他带领一个部门的心得，以及从管理到 IC 之间的联系和区别。值得一读。以下是他分享 7 年管理做的比较好的部分 #Technology\nwriting down statements of Mission, Vision, and Values enlisting members of the department, especially non-managers, to help plan (and shape) all-hands meetings, team-building fun activities, and even readouts/discussions of employee surveys running an active rotation program to encourage cross-training and so that staff built relationships beyond their direct team having an all-managers forum to discuss management-related topics regularly, to ensure consistency actively investing in career growth for everyone always putting people and their families first 最近艺术家 Gimes 在 Nifty Gateway 上拍卖了她的 10 份数字作品，前后20分钟，总价格达到了600万美金。Nifty Gateway 上买家最后拿到的是一个 tradable certificate called a non-fungible token or NFT。What they were really paying for was an aura of authenticity – and the ability to one day sell that aura of authenticity to somebody else.\nNFT 早期的使用场合：art，digital collectibles, online gaming (in-game assets) etc 对 NFT 的态度，见仁见智： 有 Seth 大骂这是个大\u0026quot;泡泡\u0026quot;，浪费能源 NFTs are a dangerous trap 也有 A16Z 背书 NFTs and a Thousand True Fans 这是未来 creator 的天堂，即将要实现 Kevin Kelly 的互联网语言。 During unprecedented temperature increases, sea level rise, the total loss of permanent sea ice, widespread species extinction, countless severe weather events, and all the other hallmarks of total climate collapse, this kind of gleeful wastefulness is, and I am not being hyperbolic, a crime against humanity. 章鱼点评：在第一期章鱼花园的结尾其实已经说过，「财富的本质不就是个骗局吗，关键还在于那个共识」。 HERE IS THE ARTICLE YOU CAN SEND TO PEOPLE WHEN THEY SAY “BUT THE ENVIRONMENTAL ISSUES WITH CRYPTOART WILL BE SOLVED SOON, RIGHT?” 这篇文章读完感触很大，值得单独发出来。尤其是读到「If that is the value system we are building, we are doomed.」，「Let this whole horrible chapter of history convince you that money is fake, we can do anything with it we want, and that we do not want cryptoart.」振耳发聩。\n产品经理值得订阅的英文 Newsletter 有哪些？\nBusinesses I Love\n作者列举了很多 niche 市场（比如草坪打理，装修，橱柜制作，刷漆等）The competition is weak. The market is growing. The costs and risks are low. The odds are good. 类似传统零散行业的互联网化思维。 另外这周还读到一个 topic：Million-Dollar, One-Person Businesses.讲到如何基于现有的 on-demand Manufacturing/Computing, membership platform, One-To-Many Channels, Marketplaces, Open Source and APIs 去打造一个单枪匹马的百万级别创业项目。 抖音上听到 郑翔洲 讲资本和商业模式举的一个例子，你在餐馆点了一瓶王老吉，90%的情况下服务员会给你上一瓶加多宝，这说明王老吉品牌做的好，加多宝渠道做到好。 学习加密货币的几个地方：\nhttps://academy.binance.com/zh （中文版） https://blockgeeks.com/ 人文 大名鼎鼎的杭城有两座有名的苏坟。「谁遣名僧伴名妓，西泠桥畔两苏坟」 说的就是一僧苏曼殊，一妓苏小小。 苏曼殊（1884 ─ 1918）是民国时期的一个奇人，他是作家、诗人、画家，也是翻译家，更是一个酒肉和尚，他曾给柳亚子写过一封信，落款竟是“写于红烧牛肉鸡片黄鱼之畔”，哈哈哈。1918 年死于上海，去世时年仅 35 岁（死于贪吃）。后被友人柳亚子移葬西湖孤山北麓。苏曼殊其诗篇十有八九都是合着血泪写成的，绝非无病呻吟。摘录喜欢的 2 首： #Reading 乌舍凌波肌似雪，亲持红叶索题诗。 还卿一钵无情泪，恨不相逢未剃时。 春雨楼头尺八箫，何时归看浙江潮? 芒鞋破钵无人识，踏过樱花第几桥! -- 《本事诗》写给钟爱的日本歌伎百助枫子 契阔死生君莫问， 行云流水一孤僧。 无端狂笑无端哭， 纵有欢肠已似冰。 --1909年写给陈独秀的诗 如何「引流」：荷兰阿姆斯特丹的史基浦 (Schipol) 机场在男厕所引进这种苍蝇后，据说尿外漏的机率竟降低 80%。大幅降低了清洁维护的费用。 #Psychology\n行为经济学大师理察.塞勒(Richard Thaler) 表示他不知道史基浦机场是如何去计算这个80%的外漏量。但他确信这和男人有根深蒂固会想瞄准目标的本能有关。 为什么是苍蝇，其他的昆虫是否可以。 Schiphol，Schip=ship，hol=hole Years of warfare among rival clans causes famine on a biblical scale. 多年来的部落战争造成了史无前例的饥荒。 #English\n电影 《追随 Following》：电影大师诺兰的处女作，70分钟时长，4个演员和一个好故事，不需要过多的成本（6000美金），甚至是黑白片，那又有什么关系呢。有人总结说，验证了一句话\u0026quot;牛X的导演从一开始就牛X\u0026quot;。特别喜欢里面那句「每个人都有个小盒子，里面装着大秘密。」电影里的每人看似都在做自己，都是按照自己的选择在过活，并没有谁强迫谁一定要做什么。为什么不同的人看似自由的选择加起来最终却出现这样的结果，阴谋的最终得逞？谁是谁的棋子，谁被谁利用？操纵这一切的是什么？是人的私心还是窥私欲，值得思考。\n随想 最近在报税，上面有一项 IRS 会问你有没有参与 Virtual Current 的活动。未来的货币和金融正在发生巨大的变化。很多人关注投资（机）的机会，我想每一次的变革也会让人类重新去认知自己和世界的本质吧，比如： 财富的本质，什么是价格和价值 技术上的共识和人与人之间或者政治上的的共识民zhu没什么区别。加密货币共识的 PoW (Proof of Work), PoS (Proof of Stake), dPoS (delegated PoS)。基于 PoW 工作量的是 mine，俗称的挖矿，基于 PoS 和 dPoS 统称为 mint 。这个演进也是让我们看到民zhu决策的过程吧 另外一个也是上面分享的，关于「挖矿」的电力消耗和更大范围的环境问题。单比特币 2018 的耗电量就占据了全球电力的 1%。未来只会越来越多。怎么办， are we doomed? 订阅章鱼花园 Substack: https://octg.substack.com ","permalink":"https://anotherbug.com/2021/03/14/octopus-garden-weekly-vol-2/","summary":"\u003ch4 id=\"科技\"\u003e科技\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://blog.jonm.dev/posts/individual-contributor/\"\u003eIndividual Contributor\u003c/a\u003e Jon Moore 是 Comcast 公司的 Senior Fellow，最近从 Chief Architect 转到了 Individual Contributor (IC)，分享了他带领一个部门的心得，以及从管理到 IC 之间的联系和区别。值得一读。以下是他分享 7 年管理做的比较好的部分 #Technology\u003c/p\u003e","title":"章鱼花园 Vol. 2: 芒鞋破钵无人识，踏过樱花第几桥!"},{"content":"https://www.bilibili.com/video/BV13K4y1J71d/\nhttps://www.youtube.com/watch?v=T-9dlHxMeng\n科技 网上生活已经成为生命里面的一部分，密码的管理和安全是一个头疼的问题。我从 2014 年就开始使用 1Password 至今。这周开始换成 Bitwarden 了。原因是 1Password 的易用性、收费模式、以及不开源等考量。我还会继续用一段时间，直到全部切到 Bitwarden。 #Tools\n随着BTC/ETH价格的飞涨，挖矿又开始有利可图，而 Nvidia 的 RTX 3060 可谓是挖矿神器，ROI超高，根据网上计算扣除电费可以月入 $200刀，搞得连原本的游戏玩家一卡难求。2月18日，Nvidia 开始对它做 Hash Rate Limit 了，如果发现是挖矿，会自动限制把 GPU 性能降到 50%，同时承诺即将发布一版新的 CMP (Cryptocurrency Mining Processor)，用于专业挖矿。GeForce Is Made for Gaming, CMP Is Made to Mine #Digital-assets\n出现了一个新的词语叫 「显卡理财」 10 年没买台式机，这周开始也入了一个 Dell G5 Gaming Desktop（GTX 1660 Ti 卡），希望 10 个月后回本吧 A case against Platform Teams #Technology\nplatform team 不等于 platform thinking，团队的目的不只是为了复用 (re-use)。If platformization has value, then it should be the mindset and strategy for all teams and not the domain on one single team.The purpose of a platform or a generic product is not just reuse, but also to model a domain boundary where organizational expertise is centralized. 跨组织的 platform team 可能演变成一个接收杂七杂八需求的、离客户越来越远的团队。As the number of shared use-cases in a company grows, the platform team becomes the repository of all kinds of unconnected components whose business purpose they are disconnected from. Eventually we end up with a “team” whose team members have no idea what the others are working on as each member ends up specializing in some part or the other. Creating the team is easy, but keeping them business/customer focussed is harder than expected. Some many platform teams are mired in a strange mix of technical arrogance and customer detachment, making them far less powerful than they can be. 关于显示器各种 Panel 的比较。 VA 应该是最好，电视里面对应的是 OLED（LG 出的），三星搞了一个 QLED，本质上还是UHD。OLED 的问题是会烧屏（屏幕随着使用时间的增加不可避免的会出现伪影）。如果要买个显示器兼顾看电影需求的话至少是 32寸，4K 分辨率 VA 屏幕的。\nhttps://www.gamersnexus.net/guides/1890-panel-comparison-tn-ips-pls-va-crt Electron JS 是个很强大的东西，有了它又重复造出了很多个轮子。\n前端越来越包罗万象，最近要和人分享，发现 扶墙老师的分享，挺适合我。前端开发简史(How Frontend Dev. Evolves) #Technology\n人文 《花样年华》 我们越理性就离真爱越远！ #Movies\n我们只有10%是人类 认识主宰你健康与快乐的90%细菌 10% Human: How your body’s microbes hold the key to health and happiness by Alana Collen. #Reading\n关于细菌与心理疾病的一些细节： Gastrointestinal symptoms are common in people with psychological disorders. 患有心理障碍的人士大都有肠胃综合症 Ellen Bolte\u0026rsquo;s son became autistic after multiple rounds of antibiotics. She focussed on his gastrointestinal symptoms and came up with groundbreaking insights into how autism may be caused by microbiome damage/imbalance. Ellen Bolte\u0026rsquo;s theory is that autism is caused by the bacterium C.tetani after it enters the blood directly after the protective microbiome has been damaged by antibiotics (leaky gut). 自闭症可能与抗生素的使用以及肠道菌群的失衡有联系。 漏肠症 LGS （Leaky Gut Syndrome)：简单地说，我们吃进去的食物就在肠胃道裡消化吸收，而食物本身可能带有细菌或毒素等。正常的肠壁是完整的，随著食物进入肠道的细菌或毒素没有机会进到身体内部。当肠道细胞当受到外力伤害、压力、刺激、细菌或毒素攻击，可能造成肠壁本身发炎，原本紧密相连的细胞也出现漏洞。这一漏更造成恶性循环：不但肠壁发炎更严重而出现缝隙，更让菌或毒性物质从缝隙、漏洞跑进血管裡，跟著血流到处流窜，流到哪裡，那裡的器官就受到伤害，慢性发炎、慢性疾病就逐渐出现。 LGS的罪魁祸首：首先是是抗生素，其次则是非类固醇抗炎性药物 (NSAIDs) 电影 「Nomadland 无依之地」，由亚裔赵婷 (Chloé Zhao)执导的独立电影。最近是获了好几个大奖。一是名声大噪，在好莱坞商业片，鼓噪政治正确方向的大环境下，她拍了好莱坞不愿意触碰的美国底层大众的生活。如果说上篇《我很在乎 I Care A Lot》是因，这篇可能就是果了吧。\n关于 Nomad 游民：片中说 Fern 在超市回答她的外甥女说 「I am not homeless, I am houseless。」， home 与 house 大抵就是一个是物理的房子，一个是家。 Fern 说的她的心里一直是在回忆丈夫波的。 Nomad 是一种生活方式，最近被提及最多的是 「digital Nomad 数字游民」，以后可以说说。 面对死亡的态度：「What\u0026rsquo;s remembered, lives」以及 「See you down the road」。最喜欢的一个片段，第一次剪辑出来分享给大家。 Nomadland: see you down the road B站， 油管 Dedicated to the ones who had to depart. See you down the road. 献给不得不上路的人 Chloé Zhao 继母是宋丹丹，Fern 的扮演者 Frances McDormand 可谓是本色出演了，她本人是 Joel Cohen 的老婆。科恩兄弟的电影每部我都喜欢。 随想 今年春晚印象最深的应该是这首张也、周深 \u0026ldquo;神仙\u0026quot;合唱 的《灯火里的中国》。很多人说关注周深的一场成名，受到认可，我的感受。#Music\n歌曲首先是在 2021 新春音乐会上廖昌永首唱，描绘的是大湾区，灯火里的奋发图强和生生不息。看完其实蛮感动和震撼的。 1997年张也用《走进新时代》带我们迎来了改革开放这一新的篇章，同样是起点于大湾区，24 年后用《灯火里的中国》让我们看到了另一番景象。2021「全面脱贫」取得了全面胜利。从心里感到骄傲和自豪。 关于时间和生活最近又有感触：以前住的地方每次早上带娃去吃麦当劳的时候，都会看到一位老大爷坐在麦当劳的同一个位置，点一杯咖啡（这周发现他们家有 senior coffee 的选项）手里捧着本《鹿鼎记》在读。我记忆特别深刻，相比于匆匆忙忙的我，他是那么安详，在他眼里，时间好像是既充裕又有限。好像要抓紧时间认真完成点什么，大概就是老年的状态吧。有时我想起又觉得好笑，一把年纪还读《鹿鼎记》，人老心不老。要是我的话，我可能会读《神雕侠侣》吧。以前我想这就是武侠吧，后来我明白这可能是生活。土木坛子在博客里说一晃开博客十年。 我一查发现我的域名注册也都11年多了，和他写博可能没法比，我一直很懒，但那句「狗日的时间」，我敲个 1。 #Time\n订阅章鱼花园 Substack: https://octg.substack.com ","permalink":"https://anotherbug.com/2021/03/07/octopus-garden-weekly-vol-1/","summary":"\u003cp\u003e\u003ca href=\"https://www.bilibili.com/video/BV13K4y1J71d/\"\u003ehttps://www.bilibili.com/video/BV13K4y1J71d/\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://www.youtube.com/watch?v=T-9dlHxMeng\"\u003ehttps://www.youtube.com/watch?v=T-9dlHxMeng\u003c/a\u003e\u003c/p\u003e\n\u003ch4 id=\"科技\"\u003e科技\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e网上生活已经成为生命里面的一部分，密码的管理和安全是一个头疼的问题。我从 2014 年就开始使用 1Password 至今。这周开始换成 Bitwarden 了。原因是 1Password 的易用性、收费模式、以及不开源等考量。我还会继续用一段时间，直到全部切到 Bitwarden。 #Tools\u003c/p\u003e","title":"章鱼花园 Vol. 1: What's remembered, lives"},{"content":"亲爱的叉子们，\n欢迎来到「章鱼花园」第 0 期。这是一份争取每周更新的文档，记录我每周的所见和思考，主要分为 「科技」、「人文」和「随想」三个部分。 (Vol. 23 开始改成 「Sense」理性 和 「Sensibility」感性两个部分。)\n关于名字： 「章鱼花园」 ，取自 披头士乐队（The Beatles）专辑 《Abbey Road》里面的一首歌 Octopus\u0026rsquo;s Garden。这是一首美丽的歌，也描绘了一个快乐无忧无虑的地方。作者 Ringo Starr 描述有人曾告诉他，章鱼会在海滩上收集一些闪闪发光的东西，它们把这些东西有序地置放在自己的巢穴里。于是巢穴变得炫彩斑斓，就像美丽的花园一样。于是有了灵感，创作了这首歌曲。\nOh what joy For every girl and boy Knowing they\u0026#39;re happy And they\u0026#39;re safe -- Octopus’s Garden 关于称呼：取自英文的翻译 Dear forks, 这是我曾经的犯的一个错误，有一次写邮件把 Dear folks，误写成了 Dear forks，把「亲爱的朋友们」写成了 「亲爱的叉子们」。想来也挺有趣，就经常这么叫了。\n关于初衷： 如同 Ringo 的创作这首歌所受的启发一样，或许我们每个人的内心也都像章鱼一样，喜欢收集生活中的美好和快乐，珍藏于自己的心灵深处，细细地品味，静静地遐思。这也是我开启这样分享的初衷。\n希望亲爱的叉子们能够常来 「章鱼花园」，来摄取你们所看到的「闪闪发光的东西」。一件事情最难做的算是对它的命名了（以后会继续分享）。我们把它做好，这是第一步，也以此作为发刊词介绍吧。\n以下是正文：\n科技 「 在未来，每个人都能成名 15 分钟，每个人都能在 15 分钟内出名。」 ── 安迪·沃霍尔。 #Quotes #Technology\n这段话很好的诠释了今天这样的信息时代的机会。网络一定程度上让所有人有了一定的平等。 \u0026ldquo;平等\u0026quot;的获取信息、发出声音以及被听见和看见的机会。CNBC的主持人 David Faber 今天 (2.24) 和 Jim Cramer 做节的时候也一度感慨，在 25年前他是在无法想象像今天这样可以自由方便的看到大机构的操作。当时 Jim Caramer 手里正拿着木头姐 (Cathie Wood) 的最新的交易记录。 影响的媒介： 文字： 大 V （VIP） 视频，网红 （Influencer） 今天影响这一大批人的衣食住行。 最近很火的 clubhouse，又将在音频领域带出一批 KOL (Key Opinion Leaders)。 在知识变现的大环境里，有一群人自诩自己是 「Infovores 食知动物」 ，他们以记录和获取各种知识为生。很多人误以为存储了知识就是学习到了。这里面的困境在于如何把知识活化，用起来，串起来。 #Tools #PKM\n道的层面： PARA 「Zettelkasten」卡片笔记法，也叫 Slip Box OKR 器的层面：我使用这么几款软件： Notion Obsidian Roam Research Microsoft Todo Joplin Evernote 「The AAAAAAAAAAAAAAAAAAAAAA end of it all」\n一针重复2万亿段代码，我「逆向工程」了辉瑞疫苗！ mRNA 可以重复使用很多次，但在这个过程中，它也会在末端失去一些 A。一旦 A 耗尽，mRNA 就不再起作用而被丢弃。 所以 COVID19 mRNA 疫苗的是一种以「AAAAAAAAAAAAAAAAAAAAAA」的奇特方式结尾。 似乎就连mRNA似乎也受够了这个糟糕的 2020 年！ 这样，「多聚腺苷酸尾（Poly-A Tail）」就可以防止其退化。 #Technology 人文 电影 「United 93」： 2001年911当天，93号班机在宾夕法尼亚州的乡村坠毁，这是唯一一架没有撞到目的的飞机。据推测这架飞机原本是要撞白宫或国会大厦的。电影以类似纪录片的形式还原了当时的情形。现实中一名乘客在最后冲锋时喊出的 「Let\u0026rsquo;s roll」的口号被电话记录了下来，迅速成为全国性标语，并被印在了攻打阿富汗的飞机上。 #Movies\n电影 「我很在乎 I Care A Lot」：当你老了，有一天突然有个陌生人敲开你家的门，然后把你请到老年中心，变卖你的房子，车子和私人财产，并且开始接管了你的人生，你的所有决定。这不是绑架，这是所谓的 legal guardian （合法监护人）。电影里面描述的一个被滥用的合法监护制度。刚开始看的时候觉得年老太可怕，压抑和无力。可越到后面越觉得电影要表达的远不只这些。这可能是我近一年来看过最好的电影之一。 有人说它是美国梦的暗流，也有人说它拨开了资本主义的皮，只是借用 legal guadian 这个「关怀 Care」场景管窥一豹。女主说「我从来不会输 I never lose」，可是我们 「在乎的 Care 」是什么，又带来了什么？不好说，你得细品。 #Movies\n随想 「蜕变时代 The Times They Are a-Changin\u0026rsquo; 」 是鲍勃·迪伦发行在 1964 年的一首歌。动荡的 60 年代，出现了所谓的反主流文化，“垮掉的一代”和“嬉皮士”。这也是一个激情与黑暗，青春与疯狂并行的年代。难能可贵的是 迪伦 在当时就留下了这么有时代印记的文字和声音，因为大多数的我们是 善于遗忘 并对所处的时代浑浑然而不自知的。 #Music\n我们真在经历一场前所未有的流行性疫情，一面又是左右之争， YOLO （You Only Live Once） 和 FIRE （Financial Independence/Retire Early） 之争。币圈又创新高，凭空产生了 ~1.4 万亿的总市值。财富总量看似在急剧的增加，统计上却有一半的年轻人的经济状况比他们父母同时期要差 (The Algebra of Wealth)。谁在为这个时代发声，谁又在为你我忧心忡忡？ #Money\nThe Times They Are a-Changin\u0026#39; By Bob Dylan Come gather around people, wherever you roam And admit that the waters around you have grown And accept it that soon you\u0026#39;ll be drenched to the bone If your time to you is worth savin\u0026#39; Then you better start swimmin\u0026#39; or you\u0026#39;ll sink like a stone For the times they are a-changin\u0026#39; Come writers and critics who prophesize with your pen And keep your eyes wide, the chance won\u0026#39;t come again And don\u0026#39;t speak too soon, for the wheel\u0026#39;s still in spin And there\u0026#39;s no tellin\u0026#39; who that it\u0026#39;s namin\u0026#39; For the loser now will be later to win For the times they are a-changin\u0026#39; Come senators, congressmen, please heed the call Don\u0026#39;t stand in the doorway, don\u0026#39;t block up the hall For he that gets hurt will be he who has stalled The battle outside ragin\u0026#39; Will soon shake your windows and rattle your walls For the times they are a-changin\u0026#39; Come mothers and fathers throughout the land And don\u0026#39;t criticize what you can\u0026#39;t understand Your sons and your daughters are beyond your command Your old road is rapidly aging Please get out of the new one if you can\u0026#39;t lend your hand For the times they are a-changin\u0026#39; The line it is drawn, the curse it is cast The slow one now will later be fast As the present now will later be past The order is rapidly fadin\u0026#39; And the first one now will later be last For the times they are a-changin\u0026#39; 什么是财富？贝版的2020年终总结说，财富本质上就是一个骗局。忽悠的话叫「共识」。价格与价值，关键还在于那个「共识」。只不过是大家相互吹泡泡而已。所以所罗门说：「虚空的虚空，虚空的虚空，凡事都是虚空」。 #Money 订阅章鱼花园 Substack: https://octg.substack.com ","permalink":"https://anotherbug.com/2021/02/28/octopus-garden-weekly-vol-0/","summary":"\u003cp\u003e\u003cstrong\u003e亲爱的叉子们，\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e欢迎来到「章鱼花园」第 0 期。这是一份争取每周更新的文档，记录我每周的所见和思考，\u003cdel\u003e主要分为 「科技」、「人文」和「随想」三个部分。\u003c/del\u003e (Vol. 23 开始改成 「Sense」理性 和 「Sensibility」感性两个部分。)\u003c/p\u003e","title":"章鱼花园 Vol. 0: The Times They Are a-Changin"},{"content":" 要说程序员的必须品，大概也有三大件吧。鼠标、键盘、显示器。个人喜好选择不同，网上讨论和推荐也很多，说说我自己的选择和感受吧。\n显示器： DELLL\n鼠标：Logitech\nMM（MX Master），就像名字一样。大师级的感觉。哈哈，Magic Mouse这种难用的玩意，买了就吃灰吧。 罗技为键鼠支持的软件 logi options，还有一个flow的功能对跨设备使用非常优秀（解决老板要求的在家 ctrl-c，到单位 ctrl-v 的问题 -:) 最主要它是无线接收器和蓝牙两种无线连接模式。省一个USB口。而且超实用的功能是有一个切换按钮，可以当成三个独立的鼠标和三个不同设备配对一键切换。然后就是各种给力的设计了，比如侧滚轮，两种模式的主滚轮。舒适的手感。 键盘：HHKB\n","permalink":"https://anotherbug.com/2020/08/14/programers-essentials/","summary":"\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e要说程序员的必须品，大概也有三大件吧。鼠标、键盘、显示器。个人喜好选择不同，网上讨论和推荐也很多，说说我自己的选择和感受吧。\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e显示器： DELLL\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e鼠标：Logitech\u003c/p\u003e","title":"Programers' Essentials"},{"content":"\n一直很喜欢 We Are the World，它是由 Michael Jackson 和 Lionel Richie 创作的。是一首为 1985 年非洲埃塞俄比亚发生饥荒援助的公益歌曲。整个制作齐聚了45位当红歌星。若干年前我基本是逐帧研究过，尤其是当中 Michael Jackson 一袭白手套，扭动中身体唱出 \u0026ldquo;We are the world, we are the children, we are the ones who make a brighter day, so let\u0026rsquo;s start giving\u0026rdquo; 时，那种震撼如今仍然记忆犹新。\n这周无意中知道，在同一个时间，在台湾，由罗大佑和60位华语歌手共同录唱一首《明天会更好》（Tomorrow will be Better）。让我相见恨晚。同样的要说最让我震撼的非数小哥莫属了。1985年的小哥绝对是个小鲜肉啊，不过声音已经是非常好了。另外一个感受是看到好多歌星当年的面孔，蔡琴，苏芮，潘越云，王芷蕾，黄莺莺，陈淑桦，齐豫。齐秦我看也在里面也是一枚青涩的小鲜肉。\n唱出你的热情 伸出你双手 让我拥抱着你的梦 让我拥有你真心的面孔 让我们的笑容充满着青春的骄傲 为明天献出虔诚的祈祷 直到 2009 年，滚石才公布了当年的高清视频：明天会更好 Tomorrow Will Be Better (Youtube)，明天会更好 Tomorrow Will Be Better (B站)\n音乐是人类情感表达的重要延伸，有做过科学实验，聆听音乐的时候，身体不自觉的会出现非常多的神经反应。悲伤的时候、喜乐的时候、绝望的时候、当灾难来临的时候，音乐都可以安抚我们的心灵。就像今年意大利因为遭到 Coronavirus 的重创，男高音歌唱家安德烈·波切利在米兰大教堂音乐会直播一样。音乐带给人平静、希望和治愈。\n2020 注定是一个不平凡的一年。借用 Queen 的歌词来形容，Is this the real life? Is this just fantasy?，我常常也会疑惑这般一切是现实抑或是梦境。明天会更好吗？我想大概不会，不过好在还有音乐听。\n","permalink":"https://anotherbug.com/2020/08/10/tomorrow-will-be-better/","summary":"\u003cp\u003e\u003cimg alt=\"tomorrow-will-be-better\" loading=\"lazy\" src=\"/assets/images/2020/08/11/tomorrow-will-be-better.jpg\"\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e一直很喜欢 \u003ccode\u003eWe Are the World\u003c/code\u003e，它是由 Michael Jackson 和 Lionel Richie 创作的。是一首为 1985 年非洲埃塞俄比亚发生饥荒援助的公益歌曲。整个制作齐聚了45位当红歌星。若干年前我基本是逐帧研究过，尤其是当中 Michael Jackson 一袭白手套，扭动中身体唱出 \u0026ldquo;We are the world, we are the children, we are the ones who make a brighter day, so let\u0026rsquo;s start giving\u0026rdquo; 时，那种震撼如今仍然记忆犹新。\u003c/p\u003e","title":"Tomorrow Will Be Better"},{"content":" 又开始折腾 Android ROM 了。上次是 7 年前在 Galaxy S3 上基于 CyanogenMod 进行的。这次主要是 Samsung S6 Edge 自带的 Android 7.0 版本太老了。 基本信息 Samsung S6 Edge 的 Model 是 SM-G925F开头，想刷版本 LineageOS 17.1 基于 Android 10。 步骤 确保你的 Windows 电脑已经有了 Samsung S6 Edge 的 USB 驱动，，下载： SAMSUNG_USB_Driver_for_Mobile_Phones_v1.5.25.0-retail.exe。这里会影响后面刷机。\nroot 你的机器，基于 Odin v3.09.zip 软件，下载对应的压缩包 CF-Auto-Root-zerolte-zeroltexx-smg925f.zip，注意型号是含有 zeroltexx-smg925f。\n安装大名鼎鼎的 TWRP (Team Win Recovery Project)。安装版本 twrp-3.3.1-0-zerolte.img.tar，注意我这里踩了一个坑，最开始安装了一个老的版本 twrp-3.1.0-0-zerolte.img.tar 后面刷 ROM 的时候报错。 下载 Samsung S6 Edge 对应的 ROM 和 GApps，分别是 lineage-17.1-20200504-UNOFFICIAL-zeroltexx.zip，open_gapps-arm64-10.0-micro-20200801.zip。注意这里花了不少时间确定版本。如果你的机器和我的不一样，务必在这里先查清楚对应的软件。切记。 boot 进入 TWRP 界面，然后 Install Image，可以同时把 Lineage 17.1 和 open gapps 选中。然后开心刷机。最后 Reboot System。这里不要勾选 更新 TWRP 和另外一个选项。切记，否则 ROM 启动不起来。\n最后就是基于 Android 10 的清爽的 LineageOS 17.1 啦。注意这里有一个冲突，最新的 LineageOS 17.1 的 Launcher Trebuchet 与 Gapps自带的 Pixel Launcher有冲突，导致 trebuchet keeps stopping。暂时切换到默认使用 Pixel Launcher 解决。\n后记 这里仅仅记录一个流程，省略了很对细节，比如如何使用 Odin 来 root 机器，如何进入 TWRP Recovery Mode 等等。你既然都想刷机了，希望这是你的一个必备（可以快速自学）能力，就不赘述了。 新手的感觉会是步骤太多，软件（版本）太多，每一步的目的以及每一个操作的作用需要花时间了解清楚。我也是差不多 7 年前折腾了一会。今天又重新折腾了一下。花了 3-4 个小时，原因是上面说的踩了一些坑，以及学习和查找一些资料花了些时间。 如何查资料是一个重要的能力，尤其是如何在中文，英文环境的网站、教程、论坛帖子以及热心网友们的只言片语中快速定位并且找到重要关键细节然后解决自己遇到的实际问题的能力。这一点的训练相对于简单的折腾更有意义。有空我在分享我两次修车的经历。如何在不提前拆开车，先花几个小时在网上查找和定位根因，最后实际操作只花 10 分钟修好的例子。 再多说一句吧，关于『越狱、折腾与创造』。不管是 Android 也好，iOS 也好，网络上存在大批的资料和组织，美其名曰 「HACK」。大部分人应该只是停留在折腾阶段，使用别人的越狱工具来回折腾，浪费时间和精力。我在学生时期也干过。也建议学生们多做做，可以提高动手能力。但是你要尽早思考和明白 『折腾与创造』 的区别。有空我再写写。 ","permalink":"https://anotherbug.com/2020/07/31/samsung-s6-edge-install-lineage-17/","summary":"\u003cul\u003e\n\u003cli\u003e又开始折腾 Android ROM 了。上次是 7 年前在 \u003ca href=\"https://anotherbug.com/2013/06/11/how-to-install-cyanogenmod-on-galaxy-s3/\"\u003eGalaxy S3 上基于 CyanogenMod\u003c/a\u003e 进行的。这次主要是 Samsung S6 Edge 自带的 Android 7.0 版本太老了。\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cimg alt=\"s6-os\" loading=\"lazy\" src=\"/assets/images/2020/07/s6-original-os.jpg\"\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e基本信息 Samsung S6 Edge 的 Model 是 \u003ccode\u003eSM-G925F\u003c/code\u003e开头，想刷版本 \u003ccode\u003eLineageOS 17.1\u003c/code\u003e 基于 Android 10。\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"步骤\"\u003e步骤\u003c/h3\u003e\n\u003col start=\"0\"\u003e\n\u003cli\u003e\n\u003cp\u003e确保你的 Windows 电脑已经有了 Samsung S6 Edge 的 USB 驱动，，下载： \u003ccode\u003eSAMSUNG_USB_Driver_for_Mobile_Phones_v1.5.25.0-retail.exe\u003c/code\u003e。这里会影响后面刷机。\u003c/p\u003e","title":"Samsung S6 Edge Install Lineage OS 17.1"},{"content":" 最近买了个 SanDisk iXpand Flash Drive，然后发现使用的时候比较反人类，应该是一个比较典型的企业做产品太作然后把自已作死的例子了。分享一下。\nSanDisk 128GB iXpand Flash Drive 的优点是用于给 iPhone/iPad 增加外接存储，而且 SanDisk 本身做存储多年质量口碑还不错，相对于一些其他 动辄 1T 的 iPhone/iPad 外接存储而言，虽然 SanDisk 只有128G (最高到256G)，但是它的传输速度非常快，且设计外观也不错。 所以我也入了一个，但是它的整个软件设计和理念有很大问题：\niXpand Flash Drive 需要和自身配套的 iOS app iXpand Drive 配合使用。其他的一些外置 Hard Driver 基本上也是这个套路，但是 SanDisk 虽然是个大厂，这个 iOS app iXpand Drive 简直是难用到令人发指的程度，这点真的把一个很好的硬件口碑给拉低到了杂牌 Hard Driver 的档次。 iXpand Drive app 第二个令人发指的地方在于它的封闭性，这都是什么年代了，iOS 系统自带的 Files app 这些年一直在开放，甚至连 iOS 系统本身也在朝着 MacOS 方向统一。目的是为了使得 iPhone/iPad 成为更好的生产力工具。 可这个 iXpand Drive app 应该是在系统层面『刻意』做过屏蔽（我测试过）导致 Files app 无法直接读取里面的文件。可以 Bypass，就是把 iXpand Drive app 彻底在后台退出才可以拷贝文件到设备里面。 iXpand Drive app 第三个令人发指的地方在于重要的功能需要额外的 app，比如你想看 mkv格式的电影，抱歉app内不支持，可是iOS app里面可是有无数的app支持 mkv等格式啊，抱歉不记得我第二个令人发指的地方了吗？你用不了，现在的唯一选择 SanDisk TopReel，是个收费软件 $4.99，这个软件我挣扎了半天，结果是没有下载。我想很多人可能有和我一样的挣扎，都花了好几十刀买了 U 盘了，只好再花 $4.99 买这个软件，否则 U 盘 功能无法全部使用。后来我一想 SanDisk 产品设计可能也这么想。这让我觉得这是一个骨子里有着 \u0026ldquo;be evil\u0026rdquo; 基因的产品设计。这里再补充一个发现，因为无法使用三方的 app去播放 mkv 我还特地上网查了下解决方案。iXpand Drive app 在早几年是支持三方软件播放的，网上很多朋友推荐了一些 app，我下载下来发现现在基本都不行了。这更让我相信是 SanDisk 刻意的设计和屏蔽。因为这是一个从支持到不支持的过程，更像是刻意限制了软件能力。不用也罢。 综上 SanDisk iXpand Flash Drive 硬件上是一款 decent 的 U 盘。无奈它的配套软件：1）产品设计太烂； 2）刻意封闭排外，导致使用效率降低；3）刻意封闭排外的目的是变相绑架客户使用自家的 TopReel app，让人觉得有欺负消费者的嫌疑。\n如果你对 SSD 有关注，对 Western Digital (WD) （SanDisk 已经被 WD 收购）前段时间爆出来的 SMR 事件 应该也所了解。西数公布 SMR 硬盘列表：蓝盘、红盘、黑盘雨露均沾。本质上就是对外承诺了大容量，可内部实现是通过降低稳定性来解决的。虽然说技术是要来服务于商业，但绝对不是一条腿走路。商业是要践行提供先进性技术、优质服务和做到尽量降低成本。用技术来偷工减料，就像大家说的，\u0026ldquo;水能载舟，亦可赛艇\u0026rdquo;。我呢还是觉得，永远别作，不要把用户的信任拿在地上摩擦，消费者眼睛是雪亮的。\n正是因为以上原因，让我不吐不快，可能存在偏见，但是是我真实使用下来的感受。\n","permalink":"https://anotherbug.com/2020/07/28/sandisk-ixpand-drive/","summary":"\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e最近买了个 SanDisk iXpand Flash Drive，然后发现使用的时候比较反人类，应该是一个比较典型的企业做产品太作然后把自已作死的例子了。分享一下。\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://amzn.to/2P6YEn0\"\u003eSanDisk 128GB iXpand Flash Drive\u003c/a\u003e 的优点是用于给 iPhone/iPad 增加外接存储，而且 SanDisk 本身做存储多年质量口碑还不错，相对于一些其他 动辄 1T 的 iPhone/iPad 外接存储而言，虽然 SanDisk 只有128G (最高到256G)，但是它的传输速度非常快，且设计外观也不错。 所以我也入了一个，但是它的整个软件设计和理念有很大问题：\u003c/p\u003e","title":"SanDisk iXpand Flash Drive"},{"content":" 最近又开始折腾输入法。在 Mac 下切回 Rime 。\n一来是担心现有输入法的隐私问题。某个输入法每天提醒我输入了多少词汇，我是越看越慎的慌。\n二来 Rime 的定制化能力实在是太强大了，比如 punctuator 预置输入，本着 若无必要，勿增实体的原则，原先的 textExpander 或者 aText 这些辅助输入都可以去掉了。还有诸如自定义词汇等能力，这又是一个一旦入坑可以折腾很久的『神器』。\n最近开始学习 『小鹤双拼』 了，Rime 可以完美支持。这段文字就是用小鹤双拼打的哦 ☺️。\n","permalink":"https://anotherbug.com/2020/05/31/rime-customize-input-method/","summary":"\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e最近又开始折腾输入法。在 Mac 下切回 \u003ca href=\"https://rime.im/\"\u003eRime\u003c/a\u003e 。\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e一来是担心现有输入法的隐私问题。某个输入法每天提醒我输入了多少词汇，我是越看越慎的慌。\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e二来 Rime 的定制化能力实在是太强大了，比如 \u003ccode\u003epunctuator\u003c/code\u003e 预置输入，本着 \u003ccode\u003e若无必要，勿增实体\u003c/code\u003e的原则，原先的 \u003ccode\u003etextExpander\u003c/code\u003e 或者 \u003ccode\u003eaText\u003c/code\u003e 这些辅助输入都可以去掉了。还有诸如自定义词汇等能力，这又是一个一旦入坑可以折腾很久的『神器』。\u003c/p\u003e","title":"Rime 可定制的输入法"},{"content":" 如何出色的完成老板交代的任务 ","permalink":"https://anotherbug.com/2020/05/31/how-to-finish-assigned-work-perfectly/","summary":"\u003cul\u003e\n\u003cli\u003e如何出色的完成老板交代的任务\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cimg alt=\"work\" loading=\"lazy\" src=\"/assets/images/2020/05/work.jpeg\"\u003e\u003c/p\u003e","title":"如何出色的完成老板交代的任务 How to finish assigned work perfectly"},{"content":"关于我 INTJ 性格 关于网名「鼠标土豆」(mousepotato)：从「沙发土豆」(couch potato) 演变而来。 博客域名 anotherbug.com，跟随我至少 10+ 年，可能是程序员的缘故，总是想去找到 bug，算是 Hack 精神的一种吧。 关于写博客 不敢相信自己从开始写博客已经有 10 年了，那为什么博客文章这么少！！？？ 这两句话不冲突，因为长时间不写，回想起来断断续续的过程学到些什么：\n写博客目的：民国黄侃说过类似一句话：30岁前不写字，50岁前不著书\n折腾 vs. 价值创造： 刚开始写博客侧重于写一些技术折腾的文章，比如 Windows 下配置 LDAP 服务器，我自己的博客上已经找不到了，网络上还有一些。 后来发现那些知识很容易过时，如同发 Paper 一样，如果以 10 年这个维度来看的话，这些文章既不系统又有时间相关性。我不反对这样的折腾，如果你明白你在做什么，并且清楚希望通过这样的折腾来沉淀思考问题和解决问题的能力，那倒是挺好的。另外不光是写文字，大部分程序员的「日常折腾」也是类似。道理同样适用，比如 这件事 和 这件事 等。 其实从更长的时间维度（比如 10 年）来看一些事情，你才能看出来哪些是 噪声 哪些是 信号。类似股市上的价值投资。你对自己时间的投入也是类似的，是要浪费在折腾上还是去 building something for decades.\n对时间的感受永远是不成比例的。\n","permalink":"https://anotherbug.com/about/","summary":"\u003ch3 id=\"关于我\"\u003e关于我\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eINTJ 性格\u003c/li\u003e\n\u003cli\u003e关于网名「鼠标土豆」(mousepotato)：从「沙发土豆」(couch potato) 演变而来。\u003c/li\u003e\n\u003cli\u003e博客域名 \u003ccode\u003eanotherbug.com\u003c/code\u003e，跟随我至少 10+ 年，可能是程序员的缘故，总是想去找到 \u003ccode\u003ebug\u003c/code\u003e，算是 \u003ccode\u003eHack\u003c/code\u003e 精神的一种吧。\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"关于写博客\"\u003e关于写博客\u003c/h3\u003e\n\u003cp\u003e不敢相信自己从开始写博客已经有 10 年了，那为什么博客文章这么少！！？？ 这两句话不冲突，因为长时间不写，回想起来断断续续的过程学到些什么：\u003c/p\u003e","title":"About"},{"content":" This is a test post generated using Hugo.\n打算把博客从 Hexo 迁移到 Hugo。原因是因为看到 Hugo 的 Theme 比较好看。又折腾了一下，虽然不常写博客，但是还是保留想写博客的时候有个好看的博客可以写的权利。\n记录一点：我的每个博文格式都是 「yyyy-MM-dd-xxx.md」 的形式，Hugo 的 archetypes 模板里面需要调整一些 title，去掉日期。具体做法： title: \u0026quot;{{ substr (replace .TranslationBaseName \u0026quot;-\u0026quot; \u0026quot; \u0026quot;) 11 | title }}\u0026quot;\n另外新版博客新增了 好物，记录一下自己败家的经历吧。\n","permalink":"https://anotherbug.com/2020/05/18/test-post-using-hugo/","summary":"\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eThis is a test post generated using Hugo.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e打算把博客从 Hexo 迁移到 Hugo。原因是因为看到 Hugo 的 Theme 比较好看。又折腾了一下，虽然不常写博客，但是还是保留想写博客的时候有个好看的博客可以写的权利。\u003c/p\u003e","title":"Test post using Hugo"},{"content":"1. create multiple ssh key ssh-keygen -t rsa -C \u0026quot;your_email@youremail.com\u0026quot; for example, 2 keys create at:\n~/.ssh/id_rsa ~/.ssh/id_rsa_sli_racingwithhorse 2. then, add these two keys as following ssh-add ~/.ssh/id_rsa ssh-add ~/.ssh/id_rsa_sli_racingwithhorse check your saved keys using:\nssh-add -l 3. modify the ssh config cd ~/.ssh/ touch config $==\u0026gt; cat config #gmail.com account Host github.com HostName github.com User git IdentityFile ~/.ssh/id_rsa #racingwithhorse account Host github.com-racingwithhorse HostName github.com User git IdentityFile ~/.ssh/id_rsa_sli_racingwithhorse 4. clone you repo and modify your git config git config user.name \u0026#34;racingwithhorse\u0026#34; git config user.email \u0026#34;xxx@xxx.xxx\u0026#34; then inside the cloned git repository\ncat .git/config [remote \u0026#34;origin\u0026#34;] url = git@github.com-racingwithhorse:racingwithhorse/racingwithhorse.github.io.git fetch = +refs/heads/*:refs/remotes/origin/* That\u0026rsquo;s it!\n","permalink":"https://anotherbug.com/2016/12/13/how-to-setup-multiple-github-ssh-key/","summary":"\u003ch2 id=\"1-create-multiple-ssh-key\"\u003e1. create multiple ssh key\u003c/h2\u003e\n\u003cpre\u003e\u003ccode\u003essh-keygen -t rsa -C \u0026quot;your_email@youremail.com\u0026quot;\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003efor example, 2 keys create at:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e~/.ssh/id_rsa\n~/.ssh/id_rsa_sli_racingwithhorse\n\u003c/code\u003e\u003c/pre\u003e\u003ch2 id=\"2-then-add-these-two-keys-as-following\"\u003e2. then, add these two keys as following\u003c/h2\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003essh-add ~/.ssh/id_rsa\nssh-add ~/.ssh/id_rsa_sli_racingwithhorse\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003echeck your saved keys using:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003essh-add -l\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2 id=\"3-modify-the-ssh-config\"\u003e3. modify the ssh config\u003c/h2\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003ecd ~/.ssh/\ntouch config\n\n$==\u0026gt; cat config\n#gmail.com account\nHost github.com\n    HostName github.com\n    User git\n    IdentityFile ~/.ssh/id_rsa\n\n#racingwithhorse account\nHost github.com-racingwithhorse\n    HostName github.com\n    User git\n    IdentityFile ~/.ssh/id_rsa_sli_racingwithhorse\n\u003c/code\u003e\u003c/pre\u003e\u003ch2 id=\"4-clone-you-repo-and-modify-your-git-config\"\u003e4. clone you repo and modify your git config\u003c/h2\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003egit config user.name \u0026#34;racingwithhorse\u0026#34;\ngit config user.email \u0026#34;xxx@xxx.xxx\u0026#34;\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003ethen inside the cloned git repository\u003c/p\u003e","title":"how to setup multiple github ssh keys"},{"content":"Test hexo blog This is a test\n","permalink":"https://anotherbug.com/2016/12/12/hexo-blog/","summary":"\u003ch1 id=\"test-hexo-blog\"\u003eTest hexo blog\u003c/h1\u003e\n\u003cp\u003eThis is a test\u003c/p\u003e","title":"hexo-blog"},{"content":"Since I will be attending Half Ironman santa cruz 70.3 race, I would love to know something about our atheletes. The online website provides the registered candidates information. So just with a bit hack, you will know something.\n#!/usr/bin/awk -f # # awk -f vis.awk output/clean.csv # BEGIN { FS=\u0026#34;,\u0026#34; F_Count=0 F_60_Plus=0 F_50_to_60=0 F_40_to_50=0 F_30_to_40=0 F_30_Minus=0 M_Count=0 M_60_Plus=0 M_50_to_60=0 M_40_to_50=0 M_30_to_40=0 M_30_Minus=0 Less_than_me=0 Less_than_me_M=0 Less_than_me_F=0 } { if($3 ~ /F/){ # print $0 F_Count++ if ( $4 \u0026gt;= 60){ F_60_Plus++ } else if ($4 \u0026gt;= 50) { F_50_to_60++ } else if ($4 \u0026gt;= 40) { F_40_to_50++ } else if ($4 \u0026gt;= 30) { F_30_to_40++ } else if ($4 \u0026lt; 30) { F_30_Minus++ } } else { M_Count++ if ( $4 \u0026gt;= 60){ M_60_Plus++ } else if ($4 \u0026gt;= 50) { M_50_to_60++ } else if ($4 \u0026gt;= 40) { M_40_to_50++ } else if ($4 \u0026gt;= 30) { M_30_to_40++ } else if ($4 \u0026lt; 30) { M_30_Minus++ } } if ($4 \u0026lt;28) { Less_than_me++ } if ($4\u0026lt;28 \u0026amp;\u0026amp; $3 ~ /F/) { Less_than_me_F++ } if ($4\u0026lt;28 \u0026amp;\u0026amp; $3 ~ /M/) { #print $0 Less_than_me_M++ } } END { print \u0026#34;-------------------------------------\u0026#34; print \u0026#34;Female counts: \u0026#34; F_Count print \u0026#34;Female age \u0026gt;=60: \u0026#34; F_60_Plus print \u0026#34;Female age between 50 to 60: \u0026#34; F_50_to_60 print \u0026#34;Female age between 40 to 50: \u0026#34; F_40_to_50 print \u0026#34;Female age between 30 to 40: \u0026#34; F_30_to_40 print \u0026#34;Female age under 30: \u0026#34; F_30_Minus print \u0026#34;-------------------------------------\u0026#34; print \u0026#34;Male counts: \u0026#34; M_Count print \u0026#34;Male age \u0026gt;=60: \u0026#34; M_60_Plus print \u0026#34;Male age between 50 to 60: \u0026#34; M_50_to_60 print \u0026#34;Male age between 40 to 50: \u0026#34; M_40_to_50 print \u0026#34;Male age between 30 to 40: \u0026#34; M_30_to_40 print \u0026#34;Male age under 30: \u0026#34; M_30_Minus print \u0026#34;-------------------------------------\u0026#34; print \u0026#34;Less than me: \u0026#34; Less_than_me print \u0026#34;Less than me female: \u0026#34; Less_than_me_F print \u0026#34;Less than me male: \u0026#34; Less_than_me_M } The result is\u0026hellip;\nEt voila!!\n","permalink":"https://anotherbug.com/2016/05/18/half-ironman-candidate-statistics/","summary":"\u003cp\u003eSince I will be attending Half Ironman santa cruz 70.3 race, I would love to know something about our atheletes.\nThe online website provides the registered candidates information. So just with a bit hack, you will know something.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-javascript\" data-lang=\"javascript\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"ch\"\u003e#!/usr/bin/awk -f\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"err\"\u003e#\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"err\"\u003e#\u003c/span\u003e \u003cspan class=\"nx\"\u003eawk\u003c/span\u003e \u003cspan class=\"o\"\u003e-\u003c/span\u003e\u003cspan class=\"nx\"\u003ef\u003c/span\u003e \u003cspan class=\"nx\"\u003evis\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"nx\"\u003eawk\u003c/span\u003e \u003cspan class=\"nx\"\u003eoutput\u003c/span\u003e\u003cspan class=\"o\"\u003e/\u003c/span\u003e\u003cspan class=\"nx\"\u003eclean\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"nx\"\u003ecsv\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"err\"\u003e#\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nx\"\u003eBEGIN\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"nx\"\u003eFS\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;,\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"nx\"\u003eF_Count\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"mi\"\u003e0\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"nx\"\u003eF_60_Plus\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"mi\"\u003e0\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"nx\"\u003eF_50_to_60\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"mi\"\u003e0\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"nx\"\u003eF_40_to_50\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"mi\"\u003e0\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"nx\"\u003eF_30_to_40\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"mi\"\u003e0\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"nx\"\u003eF_30_Minus\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"mi\"\u003e0\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"nx\"\u003eM_Count\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"mi\"\u003e0\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"nx\"\u003eM_60_Plus\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"mi\"\u003e0\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"nx\"\u003eM_50_to_60\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"mi\"\u003e0\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"nx\"\u003eM_40_to_50\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"mi\"\u003e0\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"nx\"\u003eM_30_to_40\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"mi\"\u003e0\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"nx\"\u003eM_30_Minus\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"mi\"\u003e0\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"nx\"\u003eLess_than_me\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"mi\"\u003e0\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"nx\"\u003eLess_than_me_M\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"mi\"\u003e0\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"nx\"\u003eLess_than_me_F\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"mi\"\u003e0\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"k\"\u003eif\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"nx\"\u003e$3\u003c/span\u003e \u003cspan class=\"o\"\u003e~\u003c/span\u003e \u003cspan class=\"sr\"\u003e/F/\u003c/span\u003e\u003cspan class=\"p\"\u003e){\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e       \u003cspan class=\"err\"\u003e#\u003c/span\u003e \u003cspan class=\"nx\"\u003eprint\u003c/span\u003e \u003cspan class=\"nx\"\u003e$0\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"nx\"\u003eF_Count\u003c/span\u003e\u003cspan class=\"o\"\u003e++\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e \u003cspan class=\"nx\"\u003e$4\u003c/span\u003e \u003cspan class=\"o\"\u003e\u0026gt;=\u003c/span\u003e \u003cspan class=\"mi\"\u003e60\u003c/span\u003e\u003cspan class=\"p\"\u003e){\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"nx\"\u003eF_60_Plus\u003c/span\u003e\u003cspan class=\"o\"\u003e++\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"p\"\u003e}\u003c/span\u003e \u003cspan class=\"k\"\u003eelse\u003c/span\u003e \u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"nx\"\u003e$4\u003c/span\u003e \u003cspan class=\"o\"\u003e\u0026gt;=\u003c/span\u003e \u003cspan class=\"mi\"\u003e50\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"nx\"\u003eF_50_to_60\u003c/span\u003e\u003cspan class=\"o\"\u003e++\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"p\"\u003e}\u003c/span\u003e \u003cspan class=\"k\"\u003eelse\u003c/span\u003e \u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"nx\"\u003e$4\u003c/span\u003e \u003cspan class=\"o\"\u003e\u0026gt;=\u003c/span\u003e \u003cspan class=\"mi\"\u003e40\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"nx\"\u003eF_40_to_50\u003c/span\u003e\u003cspan class=\"o\"\u003e++\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"p\"\u003e}\u003c/span\u003e \u003cspan class=\"k\"\u003eelse\u003c/span\u003e \u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"nx\"\u003e$4\u003c/span\u003e \u003cspan class=\"o\"\u003e\u0026gt;=\u003c/span\u003e \u003cspan class=\"mi\"\u003e30\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"nx\"\u003eF_30_to_40\u003c/span\u003e\u003cspan class=\"o\"\u003e++\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"p\"\u003e}\u003c/span\u003e \u003cspan class=\"k\"\u003eelse\u003c/span\u003e \u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"nx\"\u003e$4\u003c/span\u003e \u003cspan class=\"o\"\u003e\u0026lt;\u003c/span\u003e \u003cspan class=\"mi\"\u003e30\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"nx\"\u003eF_30_Minus\u003c/span\u003e\u003cspan class=\"o\"\u003e++\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e}\u003c/span\u003e \u003cspan class=\"k\"\u003eelse\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"nx\"\u003eM_Count\u003c/span\u003e\u003cspan class=\"o\"\u003e++\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e \u003cspan class=\"nx\"\u003e$4\u003c/span\u003e \u003cspan class=\"o\"\u003e\u0026gt;=\u003c/span\u003e \u003cspan class=\"mi\"\u003e60\u003c/span\u003e\u003cspan class=\"p\"\u003e){\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"nx\"\u003eM_60_Plus\u003c/span\u003e\u003cspan class=\"o\"\u003e++\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"p\"\u003e}\u003c/span\u003e \u003cspan class=\"k\"\u003eelse\u003c/span\u003e \u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"nx\"\u003e$4\u003c/span\u003e \u003cspan class=\"o\"\u003e\u0026gt;=\u003c/span\u003e \u003cspan class=\"mi\"\u003e50\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"nx\"\u003eM_50_to_60\u003c/span\u003e\u003cspan class=\"o\"\u003e++\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"p\"\u003e}\u003c/span\u003e \u003cspan class=\"k\"\u003eelse\u003c/span\u003e \u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"nx\"\u003e$4\u003c/span\u003e \u003cspan class=\"o\"\u003e\u0026gt;=\u003c/span\u003e \u003cspan class=\"mi\"\u003e40\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"nx\"\u003eM_40_to_50\u003c/span\u003e\u003cspan class=\"o\"\u003e++\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"p\"\u003e}\u003c/span\u003e \u003cspan class=\"k\"\u003eelse\u003c/span\u003e \u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"nx\"\u003e$4\u003c/span\u003e \u003cspan class=\"o\"\u003e\u0026gt;=\u003c/span\u003e \u003cspan class=\"mi\"\u003e30\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"nx\"\u003eM_30_to_40\u003c/span\u003e\u003cspan class=\"o\"\u003e++\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"p\"\u003e}\u003c/span\u003e \u003cspan class=\"k\"\u003eelse\u003c/span\u003e \u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"nx\"\u003e$4\u003c/span\u003e \u003cspan class=\"o\"\u003e\u0026lt;\u003c/span\u003e \u003cspan class=\"mi\"\u003e30\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"nx\"\u003eM_30_Minus\u003c/span\u003e\u003cspan class=\"o\"\u003e++\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"nx\"\u003e$4\u003c/span\u003e \u003cspan class=\"o\"\u003e\u0026lt;\u003c/span\u003e\u003cspan class=\"mi\"\u003e28\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"nx\"\u003eLess_than_me\u003c/span\u003e\u003cspan class=\"o\"\u003e++\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"nx\"\u003e$4\u003c/span\u003e\u003cspan class=\"o\"\u003e\u0026lt;\u003c/span\u003e\u003cspan class=\"mi\"\u003e28\u003c/span\u003e \u003cspan class=\"o\"\u003e\u0026amp;\u0026amp;\u003c/span\u003e \u003cspan class=\"nx\"\u003e$3\u003c/span\u003e \u003cspan class=\"o\"\u003e~\u003c/span\u003e \u003cspan class=\"sr\"\u003e/F/\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"nx\"\u003eLess_than_me_F\u003c/span\u003e\u003cspan class=\"o\"\u003e++\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"nx\"\u003e$4\u003c/span\u003e\u003cspan class=\"o\"\u003e\u0026lt;\u003c/span\u003e\u003cspan class=\"mi\"\u003e28\u003c/span\u003e \u003cspan class=\"o\"\u003e\u0026amp;\u0026amp;\u003c/span\u003e \u003cspan class=\"nx\"\u003e$3\u003c/span\u003e \u003cspan class=\"o\"\u003e~\u003c/span\u003e \u003cspan class=\"sr\"\u003e/M/\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"err\"\u003e#\u003c/span\u003e\u003cspan class=\"nx\"\u003eprint\u003c/span\u003e \u003cspan class=\"nx\"\u003e$0\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"nx\"\u003eLess_than_me_M\u003c/span\u003e\u003cspan class=\"o\"\u003e++\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nx\"\u003eEND\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"nx\"\u003eprint\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;-------------------------------------\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"nx\"\u003eprint\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;Female counts: \u0026#34;\u003c/span\u003e \u003cspan class=\"nx\"\u003eF_Count\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"nx\"\u003eprint\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;Female age \u0026gt;=60: \u0026#34;\u003c/span\u003e \u003cspan class=\"nx\"\u003eF_60_Plus\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"nx\"\u003eprint\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;Female age between 50 to 60: \u0026#34;\u003c/span\u003e \u003cspan class=\"nx\"\u003eF_50_to_60\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"nx\"\u003eprint\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;Female age between 40 to 50: \u0026#34;\u003c/span\u003e \u003cspan class=\"nx\"\u003eF_40_to_50\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"nx\"\u003eprint\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;Female age between 30 to 40: \u0026#34;\u003c/span\u003e \u003cspan class=\"nx\"\u003eF_30_to_40\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"nx\"\u003eprint\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;Female age under 30: \u0026#34;\u003c/span\u003e \u003cspan class=\"nx\"\u003eF_30_Minus\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"nx\"\u003eprint\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;-------------------------------------\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"nx\"\u003eprint\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;Male counts: \u0026#34;\u003c/span\u003e \u003cspan class=\"nx\"\u003eM_Count\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"nx\"\u003eprint\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;Male age \u0026gt;=60: \u0026#34;\u003c/span\u003e \u003cspan class=\"nx\"\u003eM_60_Plus\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"nx\"\u003eprint\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;Male age between 50 to 60: \u0026#34;\u003c/span\u003e \u003cspan class=\"nx\"\u003eM_50_to_60\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"nx\"\u003eprint\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;Male age between 40 to 50: \u0026#34;\u003c/span\u003e \u003cspan class=\"nx\"\u003eM_40_to_50\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"nx\"\u003eprint\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;Male age between 30 to 40: \u0026#34;\u003c/span\u003e \u003cspan class=\"nx\"\u003eM_30_to_40\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"nx\"\u003eprint\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;Male age under 30: \u0026#34;\u003c/span\u003e \u003cspan class=\"nx\"\u003eM_30_Minus\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"nx\"\u003eprint\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;-------------------------------------\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"nx\"\u003eprint\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;Less than me: \u0026#34;\u003c/span\u003e \u003cspan class=\"nx\"\u003eLess_than_me\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"nx\"\u003eprint\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;Less than me female: \u0026#34;\u003c/span\u003e \u003cspan class=\"nx\"\u003eLess_than_me_F\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"nx\"\u003eprint\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;Less than me male: \u0026#34;\u003c/span\u003e \u003cspan class=\"nx\"\u003eLess_than_me_M\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eThe result is\u0026hellip;\u003c/p\u003e","title":"Half Ironman santa cruz 70.3 candidates statistics"},{"content":"设置screen支持长scrollback In ~/.screenrc add or set defscrollback 50000 use 50000 or any number you want\nIn your screen, checking by ctrl + a + i, it will show your current scrollback settings\nTo enter scrollback/copy mode, using ctrl + a + [\nUse ctrl + u, ctrl + d, ctrl + f and ctrl + b for happy scolling\nEt voila!!\n","permalink":"https://anotherbug.com/2016/02/01/screen-scrollback/","summary":"\u003ch2 id=\"设置screen支持长scrollback\"\u003e设置screen支持长scrollback\u003c/h2\u003e\n\u003col\u003e\n\u003cli\u003e\n\u003cp\u003eIn \u003ccode\u003e~/.screenrc\u003c/code\u003e add or set \u003ccode\u003edefscrollback 50000\u003c/code\u003e use 50000 or any number you want\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIn your screen, checking by \u003ccode\u003ectrl + a + i\u003c/code\u003e, it will show your current scrollback settings\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eTo enter scrollback/copy mode, using \u003ccode\u003ectrl + a + [\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUse \u003ccode\u003ectrl + u\u003c/code\u003e, \u003ccode\u003ectrl + d\u003c/code\u003e, \u003ccode\u003ectrl + f\u003c/code\u003e and \u003ccode\u003ectrl + b\u003c/code\u003e for happy scolling\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eEt voila!!\u003c/p\u003e","title":"Screen scrollback"},{"content":"1. 起因：Shell 获取文件名和后缀名 [_posts] ==\u0026gt;\u0026gt; file=\u0026#34;A-Tale-Of-Two-Cities.pdf\u0026#34; [_posts] ==\u0026gt;\u0026gt; echo \u0026#34;${file%.*}\u0026#34; A-Tale-Of-Two-Cities [_posts] ==\u0026gt;\u0026gt; echo \u0026#34;${file##*.}\u0026#34; pdf 2. 基于 Pattern Matching 的子串替换 ${str/$old/$new} 替换第一个。 ${str//$old/$new} 替换所有。\n注意：不能使用正则表达式，只能使用 ?* 的Shell扩展。只能用shell通配符如 *? [list] [!list] [a-z]。\n${str/#$old/$new} 替换开头。如果str以old串开头，则替换。 ${str/%$old/$new} 替换结尾。如果str以old串结尾，则替换。\n[note] #和%一个是替换开头，一个是替换结尾。可以这么记忆。键盘上#在%前面。所以#是替换开头，%是替换结尾。\n[_posts] ==\u0026gt;\u0026gt; str=\u0026#34;Hello World\u0026#34; [_posts] ==\u0026gt;\u0026gt; echo ${str/o/O} HellO World [_posts] ==\u0026gt;\u0026gt; echo ${str//o/O} HellO WOrld [_posts] ==\u0026gt;\u0026gt; str=\u0026#34;Hello World\u0026#34; [_posts] ==\u0026gt;\u0026gt; echo ${str/#He/he} Hello World [_posts] ==\u0026gt;\u0026gt; echo ${str/#o/he} Hello World [_posts] ==\u0026gt;\u0026gt; str=\u0026#34;Hello World\u0026#34; [_posts] ==\u0026gt;\u0026gt; echo ${str/%He/he} Hello World [_posts] ==\u0026gt;\u0026gt; echo ${str/%ld/lD} Hello WorlD 一个例子: 将环境变量PATH的各个目录分开，每行显示一个。就是讲:转换成\\n就可以实现。\n[_posts] ==\u0026gt;\u0026gt; echo -e ${PATH//:/\u0026#34;\\n\u0026#34;} /Library/Frameworks/Python.framework/Versions/3.5/bin /Library/Frameworks/Python.framework/Versions/2.7/bin /usr/local/bin /usr/sbin ... 3. 基于 Pattern Matching 的子串删除 子串删除是一种特殊的替换\n${str/$sub} 将str中第一个sub子串删除 ${str//$sub} 将str中所有sub子串删除 ${str#$prefix} 去头，从开头去除最短匹配前缀 ${str##$prefix} 去头，从开头去除最长匹配前缀 ${str%$suffix} 去尾，从结尾去除最短匹配后缀 ${str%%$suffix} 去尾，从结尾去除最长匹配后缀\n[_posts] ==\u0026gt;\u0026gt; str=\u0026#34;Hello World\u0026#34; [_posts] ==\u0026gt;\u0026gt; echo ${str#He} llo World [_posts] ==\u0026gt;\u0026gt; echo ${str#He*o} World [_posts] ==\u0026gt;\u0026gt; echo ${str##He*o} rld [_posts] ==\u0026gt;\u0026gt; prefix=\u0026#34;*o\u0026#34; [_posts] ==\u0026gt;\u0026gt; echo ${str#$prefix} World [_posts] ==\u0026gt;\u0026gt; echo ${str##$prefix} rld [_posts] ==\u0026gt;\u0026gt; suffix=\u0026#34;o*\u0026#34; [_posts] ==\u0026gt;\u0026gt; echo ${str%$suffix} Hello W [_posts] ==\u0026gt;\u0026gt; echo ${str%%$suffix} Hell 一个例子：获取文件扩展名,如最前面的介绍。\n[_posts] ==\u0026gt;\u0026gt; filename=\u0026#34;A-cat.jpg\u0026#34; [_posts] ==\u0026gt;\u0026gt; echo ${filename##*.} jpg ","permalink":"https://anotherbug.com/2016/01/01/bash-pattern-match/","summary":"\u003ch2 id=\"1-起因shell-获取文件名和后缀名\"\u003e1. 起因：Shell 获取文件名和后缀名\u003c/h2\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"o\"\u003e[\u003c/span\u003e_posts\u003cspan class=\"o\"\u003e]\u003c/span\u003e \u003cspan class=\"o\"\u003e==\u003c/span\u003e\u0026gt;\u0026gt; \u003cspan class=\"nv\"\u003efile\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;A-Tale-Of-Two-Cities.pdf\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"o\"\u003e[\u003c/span\u003e_posts\u003cspan class=\"o\"\u003e]\u003c/span\u003e \u003cspan class=\"o\"\u003e==\u003c/span\u003e\u0026gt;\u0026gt; \u003cspan class=\"nb\"\u003eecho\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\u003cspan class=\"si\"\u003e${\u003c/span\u003e\u003cspan class=\"nv\"\u003efile\u003c/span\u003e\u003cspan class=\"p\"\u003e%.*\u003c/span\u003e\u003cspan class=\"si\"\u003e}\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eA-Tale-Of-Two-Cities\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"o\"\u003e[\u003c/span\u003e_posts\u003cspan class=\"o\"\u003e]\u003c/span\u003e \u003cspan class=\"o\"\u003e==\u003c/span\u003e\u0026gt;\u0026gt; \u003cspan class=\"nb\"\u003eecho\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\u003cspan class=\"si\"\u003e${\u003c/span\u003e\u003cspan class=\"nv\"\u003efile\u003c/span\u003e\u003cspan class=\"p\"\u003e##*.\u003c/span\u003e\u003cspan class=\"si\"\u003e}\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003epdf\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch2 id=\"2-基于-pattern-matching-的子串替换\"\u003e2. 基于 Pattern Matching 的子串替换\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003e${str/$old/$new}\u003c/code\u003e  替换第一个。\n\u003ccode\u003e${str//$old/$new}\u003c/code\u003e 替换所有。\u003c/p\u003e\n\u003cp\u003e注意：不能使用正则表达式，只能使用 ?* 的Shell扩展。只能用shell通配符如 \u003ccode\u003e*?  [list] [!list] [a-z]\u003c/code\u003e。\u003c/p\u003e","title":"Bash pattern match"},{"content":"1. Fitbit HR Fitbit HR 提供了全天候的心率 (heart rate) 数据。HR数据可以反应很多的指标（健康，活动量），甚至是什么时候洗澡或者\u0026hellip;。除了HR数据，还有HRV (Heart Rate Variablity)也很常用。这部分好像Fitbit HR还不支持。需要精确度更好的设备。比如 Garmin HR Run.\n一般通过fitbit app不能够得到每天的HR数据。估计需要付费成为会员才可以看到这部分。好在fitbit提供了API，可以自己获取。\n2. 获取 Fitbit HR 数据 首先去 Fitbit Dev 注册一个app,注意如果你想获取到精确到秒级别心率数据，选择app的类型是 personal, fitbit对这个好像有限制。如前面所说，HR数据能反应太多。。。\n注册以后拿到ClientID, Client_Secret然后就是标准的OAuth 2 的应用验证。推荐 node js开源的包 fitbit-oauth2\n验证通过获取每天精确到秒级别的心率数据的uri是\nhttps://api.fitbit.com/1/user/-/activities/heart/date/today/1d/1sec.json 3. 显示 Fitbit HR 数据 获得了数据以后，怎么用呢？最简单的办法是plot，可以直观的看。这里推荐 Plotly 应用。免费使用，不过作出的图需要公开。注册，获取一个API_KEY。 然后在使用 node js 的 plotly库 plotly-nodej。 Then you are good to go\u0026hellip;\n简单的画图 nodejs 实现:\napp.get(\u0026#39;/plot/:bday\u0026#39;, function(req, res, next) { bday = req.params.bday; fs.readFile(\u0026#39;./bpm/bpm-\u0026#39; + bday + \u0026#39;.json\u0026#39;, \u0026#39;utf8\u0026#39;, function(err, data) { if (err) throw err; // we\u0026#39;ll not consider error handling for now var profile = JSON.parse(data); res.send(\u0026#39;\u0026lt;pre\u0026gt;\u0026#39; + JSON.stringify(profile[ \u0026#39;activities-heart-intraday\u0026#39;], null, 2) + \u0026#39;\u0026lt;/pre\u0026gt;\u0026#39;); // plot here var x = []; var y = []; var plotly = require(\u0026#39;plotly\u0026#39;)(\u0026#39;mouse_potato\u0026#39;, \u0026#39;rmoeisc3m8\u0026#39;); var graphOptions = { fileopt: \u0026#34;overwrite\u0026#34;, filename: \u0026#34;bpm-\u0026#34; + bday }; var intradaydata = profile[\u0026#39;activities-heart-intraday\u0026#39;]; var dataset = intradaydata[\u0026#39;dataset\u0026#39;]; //console.log(dataset.length); for (var i = 0; i \u0026lt; dataset.length; i++) { x.push(dataset[i][\u0026#39;time\u0026#39;]); y.push(dataset[i][\u0026#39;value\u0026#39;]); } var data = [x, y]; plotly.plot(data, graphOptions, function(err, msg) { console.log(msg); }); }); }); 怎么样，想看看我圣诞节那天的心率么？-:) bpm-2015-12-24\n4. One more thing\u0026hellip; 怎么偷懒，实现了一个每天夜里2:30AM 把前天的心率数据读取出来，作好图然后发一封链接邮件到我邮箱。 使用 nodemailer 吧。记得如果使用gmail，需要打开 gmail allow less secure apps Allow less secure apps\n代码是这样，\nvar nodemailer = require(\u0026#39;nodemailer\u0026#39;); // create reusable transporter object using the default SMTP transport // Put your email username and password here var transporter = nodemailer.createTransport( \u0026#39;smtps://MYEMAILUSERNAME%40gmail.com:MYPASSWORD@smtp.gmail.com\u0026#39; ); // setup e-mail data with unicode symbols var mailOptions = { from: \u0026#34;HR Monitoring \u0026lt;xxx@gmail.com\u0026gt;\u0026#34;, to: \u0026#34;myusername@gmail.com\u0026#34;, subject: \u0026#34;Your yesterday\u0026#39;s HR is ready\u0026#34;, text: msg.url, html: \u0026#34;Please click \u0026lt;a href=\u0026#34; + msg.url + \u0026#34;\u0026gt;plot\u0026lt;/a\u0026gt; for the data.\u0026#34; }; // send mail with defined transport object transporter.sendMail(mailOptions, function(error, info) { if (error) { return console.log(error); } console.log(\u0026#39;Message sent: \u0026#39; + info.response); }); 然后建立一个 cron job, 去执行一个 shell 脚本\n#!/bin/bash TODAY=`date +%F` YESTERDAY=$(date --date yesterday \u0026#34;+%F\u0026#34;) ACCESS_TOKEN=$(cat fb-token.json |jq \u0026#34;.access_token\u0026#34;) echo $ACCESS_TOKEN sleep 3 curl -H \u0026#34;Authorization: Bearer $ACCESS_TOKEN\u0026#34; http://yourdomain.com/getbpm/$YESTERDAY sleep 7 curl --ipv4 \u0026#34;http://yourdomain/plot/$YESTERDAY\u0026#34; -v That\u0026rsquo;s it!!!\n","permalink":"https://anotherbug.com/2015/12/31/fitbit-hr-data-monitoring/","summary":"\u003ch2 id=\"1-fitbit-hr\"\u003e1. Fitbit HR\u003c/h2\u003e\n\u003cp\u003eFitbit HR 提供了全天候的心率 (heart rate) 数据。HR数据可以反应很多的指标（健康，活动量），甚至是什么时候洗澡或者\u0026hellip;。除了HR数据，还有HRV (Heart Rate Variablity)也很常用。这部分好像Fitbit HR还不支持。需要精确度更好的设备。比如 Garmin HR Run.\u003c/p\u003e","title":"Fitbit HR heart rate data monitoring"},{"content":"今天实现了新建一个box app并通过Box API读取用户box里面文件的程序。记录如下。\n准备 使用nodejs环境搭建回调服务器 好像没用了。。。。（box账户和developer页面） 实现 box 的api实现了oAuth2标准。所以不难使用。参考了网上已有的nodejs实现。 注意box需要的回调地址是加密的https请求，不支持http。所以需要首先实现一个nodejs的https服务器。网上也有。。。\n代码\nconst crypto = require(\u0026#39;crypto\u0026#39;), fs = require(\u0026#34;fs\u0026#34;), http = require(\u0026#34;http\u0026#34;); var privateKey = fs.readFileSync(\u0026#39;privatekey.pem\u0026#39;).toString(); var certificate = fs.readFileSync(\u0026#39;certificate.pem\u0026#39;).toString(); var credentials = crypto.createCredentials({key: privateKey, cert: certificate}); var handler = function (req, res) { res.writeHead(200, {\u0026#39;Content-Type\u0026#39;: \u0026#39;text/plain\u0026#39;}); res.end(\u0026#39;Hello World\\n\u0026#39;); }; var server = http.createServer(); server.setSecure(credentials); server.addListener(\u0026#34;request\u0026#34;, handler); server.listen(8000); 其中生成privatekey.pem 和 certificate.pem 的方法是:\nopenssl genrsa -out privatekey.pem 1024 openssl req -new -key privatekey.pem -out certrequest.csr openssl x509 -req -in certrequest.csr -signkey privatekey.pem -out certificate.pem 然后就是找到最新版本的 API document去读一下: https://developers.box.com/docs-overview/\n然后去box developer 里面注册一个app，注意选使用content API。然后获取client_id, client_secret, 和 redirect_uri 这里的 redirect_uri我填写的是 https://localhost:3443/boxdemo/redirect (对照后面的代码)\n参考网上实现的代码链接 github: box-api-ex\n","permalink":"https://anotherbug.com/2015/11/15/box-content-apis-example/","summary":"\u003cp\u003e今天实现了新建一个box app并通过Box API读取用户box里面文件的程序。记录如下。\u003c/p\u003e\n\u003ch2 id=\"准备\"\u003e准备\u003c/h2\u003e\n\u003col\u003e\n\u003cli\u003e使用nodejs环境搭建回调服务器\u003c/li\u003e\n\u003cli\u003e好像没用了。。。。（box账户和developer页面）\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch2 id=\"实现\"\u003e实现\u003c/h2\u003e\n\u003cp\u003ebox 的api实现了oAuth2标准。所以不难使用。参考了网上已有的nodejs实现。\n注意box需要的回调地址是加密的https请求，不支持http。所以需要首先实现一个nodejs的https服务器。网上也有。。。\u003c/p\u003e","title":"Box content APIs example"},{"content":"Given a sorted array, remove the duplicates in place such that each element appear only once and return the new length.\nDo not allocate extra space for another array, you must do this in place with constant memory.\nFor example, Given input array A = [1,1,2], Your function should return length = 2, and A is now [1,2]\n写了几次，每一次都有不同的感受。\n版本一：\npublic int removeDuplicates(int [] A){ if (A == null || A.length == 0) { return 0; }\tint i = 0, j = 0; while (j \u0026lt; A.length) { if (A[i] != A[j++]) { A[++i] = A[j]; } } return i + 1; } 这个版本有错误，原因是数组越界，虽然while循环判断数字长度，但是在if判断里面使用了j++，这个其实没事，但是后面的A[++i] = A[j]，要访问A[j]，此时可能导导致IndexOutOfBound。无经验造成的。\n版本二：\npublic int removeDuplicates(int [] A){ if (A == null || A.length == 0) { return 0; } int size = 0; int i = 0; while (i \u0026lt; A.length){ if (A[size] != A[i]) { A[++size] = A[i]; } i++; } return size + 1;\t} 版本二通过测试，也使用了有意义的变量size作为输出。但是这个代码还是反应不出作者的思想和对题目的理解。\n版本三：\npublic int removeDuplicates(int[] A) { if (A == null || A.length == 0) { return 0; } int walker = 0; int runner = 0; while (runner \u0026lt; A.length) { if (A[runner] != A[walker]) { A[++walker] = A[runner]; } runner++; } return walker + 1; } 版本三，变量使用了runner和walker，一看就明白是写代码者理解题目的快慢指针的思想。堪称完美。\n此乃刷题者三种境界，共勉！\n","permalink":"https://anotherbug.com/2015/02/07/leetcode-remove-duplicates-in-sorted-array/","summary":"\u003cp\u003eGiven a sorted array, remove the duplicates in place such that each element appear only once and return the new length.\u003c/p\u003e\n\u003cp\u003eDo not allocate extra space for another array, you must do this in place with constant memory.\u003c/p\u003e\n\u003cp\u003eFor example, Given input array A = [1,1,2], Your function should return length = 2, and A is now [1,2]\u003c/p\u003e\n\u003cp\u003e写了几次，每一次都有不同的感受。\u003c/p\u003e","title":"Leetcode remove duplicates from sorted array"},{"content":"1. 起因 最近看到 网站 fhl.net 上有一系列《圣地旅游》的照片，个人很喜欢，想把它下载下来保存。问题是该网站上有67页，每页有35张照片，也就是总共有2345张照片，同时我还想讲网页上照片的介绍作为照片的名称保存，这样方便以后查看。所以，问题是如何做呢？\n2. 所需 tools 鉴于最近爱上了 Node.js 这一神奇的工具。打算用它试试。\n2.1 用到的插件有\nrequest npm install request 处理http request cheerio npm install cheerio Html DOM 处理 iconv-lite npm install iconv-lite 处理中文字符转码 wget npm install wget 图片下载工具 3. 代码 Code var request = require(\u0026#34;request\u0026#34;); var cheerio = require(\u0026#34;cheerio\u0026#34;); var iconv = require(\u0026#39;iconv-lite\u0026#39;); var wget = require(\u0026#39;wget\u0026#39;); // loop through all 67 html pages for(var i = 1; i \u0026lt; 67; i++){ (function(i){request({ uri: \u0026#34;http://photo.fhl.net/main/holy/\u0026#34;+i+\u0026#34;index.html\u0026#34;, encoding:null }, function(error, response, body) { var str = iconv.decode(new Buffer(body), \u0026#34;big5\u0026#34;); var $ = cheerio.load(str); $(\u0026#39;table a\u0026#39;).each(function() { var link = $(this); var text = link.text(); var href = link.attr(\u0026#34;href\u0026#34;); // href = \u0026#34;holy2351.html\u0026#34; // http://photo.fhl.net/img/holy/2351.jpg // console.log(text + \u0026#34;http://photo.fhl.net/img/holy/\u0026#34; + href.substr(4,4) + \u0026#34;.jpg\u0026#34;); var src = \u0026#34;http://photo.fhl.net/img/holy/\u0026#34; + href.substr(4,4) + \u0026#34;.jpg\u0026#34;; // var output =\u0026#34;/Users/shuangjiang/playpen/holypic/\u0026#34;+text.replace(/\\s+/g,\u0026#34;\u0026#34;); var output =\u0026#34;/Users/shuangjiang/playpen/holypic/\u0026#34;+text+\u0026#34;.jpg\u0026#34;; var download = wget.download(src,output); download.on(\u0026#39;end\u0026#39;, function(output) { console.log(\u0026#34;download all the pics\u0026#34;); }); }); });})(i); // closure } That\u0026rsquo;s it!!\n","permalink":"https://anotherbug.com/2013/11/28/download-web-pictures-using-nodejs/","summary":"\u003ch2 id=\"1-起因\"\u003e1. 起因\u003c/h2\u003e\n\u003cp\u003e最近看到 \u003ca href=\"http://photo.fhl.net/main/holy/index.html\"\u003e网站 fhl.net\u003c/a\u003e 上有一系列《圣地旅游》的照片，个人很喜欢，想把它下载下来保存。问题是该网站上有67页，每页有35张照片，也就是总共有2345张照片，同时我还想讲网页上照片的介绍作为照片的名称保存，这样方便以后查看。所以，问题是如何做呢？\u003c/p\u003e","title":"使用 Node JS 批量下载网站的图片"},{"content":"Linux screen in 5 command lines\n1. 建立一个 screen shell 窗口 screen 2. 退出刚建立的窗口 ctrl+ a d 3. 查看已有 screen 窗口 screen -ls 4. 重新进入已有 screen 窗口 screen -r sessionid sessionid can be found by looking screen -ls\n5. 退出已有 screen 窗口 exit 6. 退出全部 detached sessions screen -ls | grep Detached | cut -d. -f1 | awk '{print $1}' | xargs kill That\u0026rsquo;s it!!!\n","permalink":"https://anotherbug.com/2013/11/25/linux-screen-in-5-commands/","summary":"\u003cp\u003eLinux screen in 5 command lines\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"1-建立一个-screen-shell-窗口\"\u003e1. 建立一个 screen shell 窗口\u003c/h2\u003e\n\u003cpre\u003e\u003ccode\u003escreen\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2 id=\"2-退出刚建立的窗口\"\u003e2. 退出刚建立的窗口\u003c/h2\u003e\n\u003cpre\u003e\u003ccode\u003ectrl+ a d\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2 id=\"3-查看已有-screen-窗口\"\u003e3. 查看已有 screen 窗口\u003c/h2\u003e\n\u003cpre\u003e\u003ccode\u003escreen -ls\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2 id=\"4-重新进入已有-screen-窗口\"\u003e4. 重新进入已有 screen 窗口\u003c/h2\u003e\n\u003cpre\u003e\u003ccode\u003escreen -r sessionid\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e\u003ccode\u003esessionid\u003c/code\u003e can be found by looking \u003ccode\u003escreen -ls\u003c/code\u003e\u003c/p\u003e\n\u003ch2 id=\"5-退出已有-screen-窗口\"\u003e5. 退出已有 screen 窗口\u003c/h2\u003e\n\u003cpre\u003e\u003ccode\u003eexit\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2 id=\"6-退出全部-detached-sessions\"\u003e6. 退出全部 detached sessions\u003c/h2\u003e\n\u003cpre\u003e\u003ccode\u003escreen -ls | grep Detached | cut -d. -f1 | awk '{print $1}' | xargs kill\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThat\u0026rsquo;s it!!!\u003c/p\u003e","title":"Screen 使用之无废话5行命令"},{"content":" 1. Efficiency comes from familiarity and simplicity. 高效来源于熟练，俗语说：“熟能生巧”。同样的，高效来源于简单。简单不意味着更少。 简单是对完美的追求，达到某种圆满 (completeness)，是为高效的上限（upper bound），增一分减一分都会招致破坏。正如 Albert Einstein 所说：\nAny intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius -- and a lot of courage -- to move in the opposite direction.\n2. Admitting your incapabilities, say no to 1000 things. You have to be focus in order to be efficient.\nSee Steve Jobs: Innovation is Saying \u0026ldquo;No\u0026rdquo; to 1,000 things People think focus means saying yes to the thing you've got to focus on. But that's not what it means at all. It means saying no to the hundred other good ideas that there are. You have to pick carefully. I'm actually as proud of the things we haven't done as the things I have done. Innovation is saying \u0026quot;no\u0026quot; to 1,000 things.\nThings you need to always keep in mind like You next GTD plan.\n3.\tBe well organized. By saying organized, I am not meaning to have your stuff in order or a neat table. Organized means that you have a set of well defined living style, systems or architectures or whatever that could help you do every kind of jobs. You have to define them in advance and purify them for life long. See Establish and accumulate your little system.\nThat\u0026rsquo;s it!!\n","permalink":"https://anotherbug.com/2013/10/20/how-to-be-efficient/","summary":"\u003chr\u003e\n\u003ch2 id=\"1-efficiency-comes-from-familiarity-and-simplicity\"\u003e1. Efficiency comes from familiarity and simplicity.\u003c/h2\u003e\n\u003cp\u003e高效来源于熟练，俗语说：“熟能生巧”。同样的，高效来源于简单。简单不意味着更少。 简单是对完美的追求，达到某种圆满 (completeness)，是为高效的上限（upper bound），增一分减一分都会招致破坏。正如 Albert Einstein 所说：\u003c/p\u003e","title":"How to be efficient"},{"content":" 如何将Github的代码回退到某一个指定的提交版本\nHow to revert Github source code to a specific commit\ngit reset --hard \u0026quot;old-commit-id\u0026quot; git push -f ","permalink":"https://anotherbug.com/2013/06/20/how-to-revert-github-source-code-to-a-specific-commit/","summary":"\u003chr\u003e\n\u003cp\u003e如何将Github的代码回退到某一个指定的提交版本\u003c/p\u003e\n\u003cp\u003eHow to revert Github source code to a specific commit\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003egit reset --hard \u0026quot;old-commit-id\u0026quot;\ngit push -f\n\u003c/code\u003e\u003c/pre\u003e","title":"How to revert github source code to a specific commit"},{"content":"Linux查看系统内存信息可以有如下方法：\nfree free -m cat /proc/meminfo 如果要查询详细到RAM规格，DDR2，DDR3可以使用：\nsudo lshw ","permalink":"https://anotherbug.com/2013/06/14/how-to-read-memory-info-under-linux/","summary":"\u003cp\u003eLinux查看系统内存信息可以有如下方法：\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003efree\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efree -m\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ecat /proc/meminfo\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e如果要查询详细到RAM规格，DDR2，DDR3可以使用：\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esudo lshw\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cimg alt=\"meminfo\" loading=\"lazy\" src=\"/assets/images/2013/06/14/meminfo.png\"\u003e\u003c/p\u003e","title":"Linux 下的查看系统内存信息"},{"content":"Linux 下的几个文件\nUnix或者类 Unix系统/dev下有几个很特殊的文件.他们就是:\n1: /dev/null 这个/dev下放的是系统和用户的设备文件. null是个文件名. 被称为 the null device, /dev/null 这个童鞋脾气有点大,听不见别人任何话,所以呢任何话传到他耳朵里都被当成耳旁风了.当然更可恨的是他竟然还假惺惺的点头说听到了.当然他是很诚实地说的.\n/dev/null or the null device is a special file that discards all data written to it, but reports that the write operation succeed.\n所以呢,你心情不好的时候,或者你有个秘密憋的慌想说但是又怕周围人有个big mouth的时候来,可以和这个娃说说. 用程序员的黑话(jargon)说他是个\u0026rsquo;黑洞\u0026rsquo;(black hole)或者\u0026rsquo;位筒\u0026rsquo;(bit bucket).\n知道了这个,下面几个隔行如隔山的话也就好理解了.\nPlease send complaints to /dev/null my mail got archived in /dev/null 几个扩展:\ncat /dev/null \u0026gt; /var/log/db_log (清空日志文件的内容) \u0026gt;/dev/null 2\u0026gt;\u0026amp;1 的理解 \u0026gt; 代表重定向到哪里，比方：echo \u0026quot;123\u0026quot; \u0026gt; /home/123.txt \u0026gt; 输出给这个不听话的娃, /dev/null 2\u0026gt; 表示stderr标准错误 \u0026amp; 表示等同于的意思，2\u0026gt;\u0026amp;1，表示2的输出重定向等同于1 1 表示stdout标准输出，系统默认值是1，所以\u0026gt;/dev/null等同于 1\u0026gt;/dev/null 因此，\u0026gt;/dev/null 2\u0026gt;\u0026amp;1也可以写成1\u0026gt; /dev/null 2\u0026gt;\u0026amp;1\n1\u0026gt;/dev/null：首先表示标准输出重定向到空设备文件，也就是不输出任何信息到终端，说白了就是不显示任何信息。\n2\u0026gt;\u0026amp;1：接着，标准错误输出重定向 到 标准输出，因为之前标准输出已经重定向到了空设备文件，所以标准错误输出也重定向到空设备文件。\n最常见的写法: command \u0026gt; file 2\u0026gt;file 与 command \u0026gt; file 2\u0026gt;\u0026amp;1(这个效率更高点,可以从打开文件的次数角度去分析.)\n2. /dev/full 这个娃天生胃小,整天处于吃饱状态.送啥吃的来都不接受.那你说把这个家伙放在unix里面干嘛.This device is usually used when testing the behaviour of a program when it encounters a disk full error.测试某些程序在磁盘吃饱状态下的错误.\n3. /dev/zero 这哥们有很的0,MS是很有钱.他实际上产生连续不断的null的流（二进制的零流),写入他的东东会丢失不见,然后呢会给你一串的null值,这个一般不好发觉./dev/zero主要的用处是用来创建一个指定长度用于初始化的空文件，就像临时交换文件.\n","permalink":"https://anotherbug.com/2013/06/13/linux-dev-files/","summary":"\u003cp\u003eLinux 下的几个文件\u003c/p\u003e\n\u003cp\u003eUnix或者类 Unix系统/dev下有几个很特殊的文件.他们就是:\u003c/p\u003e\n\u003ch2 id=\"1-devnull\"\u003e1: /dev/null\u003c/h2\u003e\n\u003cp\u003e这个/dev下放的是系统和用户的设备文件. null是个文件名. 被称为 the null device, \u003ccode\u003e/dev/null\u003c/code\u003e 这个童鞋脾气有点大,听不见别人任何话,所以呢任何话传到他耳朵里都被当成耳旁风了.当然更可恨的是他竟然还假惺惺的点头说听到了.当然他是很诚实地说的.\u003c/p\u003e","title":"Linux 下的几个文件"},{"content":"How to make presentation using markdow 如何使用markdown做报告\n1. 安装 Markdown Presenter Markdown Presenter 地址\ngit clone https://github.com/jsakamoto/MarkdownPresenter.git 2. 安装Ubuntu下的WebServer-webfs sudo apt-get install webfs 或者使用python自带的web server\npython -m SimpleHTTPServer 3. 新建或者编辑.md文件 presentation.md This is a slide Blah blah blah ! This is another slide Yada yada yada 4. 将写好的文件放到MarkdownPresenter目录下，然后运行 python -m SimpleHTTPServer 或者运行\nwebfsd -F -p 8888 -r ~/scripts/MarkdownPresenter/ -f Presenter.html 5. 注意事项 The Presenter.html fetches the presentation.md from the server via Ajax, uses Showdown.js to transform it into HTML. 所以.md文件必须命名为 presentation.md，然后 webserver必须打开Presenter.html.\nThat\u0026rsquo;s it!!\n","permalink":"https://anotherbug.com/2013/06/12/how-to-make-presentation-using-markdown/","summary":"\u003cp\u003eHow to make presentation using markdow\n如何使用markdown做报告\u003c/p\u003e\n\u003ch3 id=\"1-安装-markdown-presenter\"\u003e1. 安装 Markdown Presenter\u003c/h3\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/jsakamoto/MarkdownPresenter\"\u003eMarkdown Presenter 地址\u003c/a\u003e\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003egit clone https://github.com/jsakamoto/MarkdownPresenter.git  \n\u003c/code\u003e\u003c/pre\u003e\n\u003ch3 id=\"2-安装ubuntu下的webserver-webfs\"\u003e2. 安装Ubuntu下的WebServer-webfs\u003c/h3\u003e\n\u003cpre\u003e\u003ccode\u003esudo apt-get install webfs  \n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e或者使用python自带的web server\u003c/p\u003e","title":"How to make presentation using markdown"},{"content":" Galaxy S3 安装CyanogenMod\nCyanogenMod是Android上一个开源的固件（ROM）管理和定制软件。玩转Andorid ROM必备。下面介绍如何在Galaxy S3上安装CyanogenMod。\n1. 下载 CyanogenMod 通过这个链接 http://get.cm/?device=i9300下载，分为三个版本：\nnightly (最新版，小白鼠专用) test （测试版本，较稳定） stable （稳定版本） 可以根据自己喜好选择。\n2. 安装 CyanogenMod 将下载好的.zip文件放到S3手机上。有两种方法:\n直接将手机连接电脑上传\n将手机连接电脑通过adb上传\n./adb push ~/Downloads/cm-10.1-20130610-NIGHTLY-i9300.zip /sdcard/0/cmupdater\n3. 将S3重启进入recovery 模式进行安装 同时按住 VolumnUp + Home + Power进入恢复模式 首先必须清除 cache partition和 wipe data/factory reset 之后选择 install zip from sdcard 选择 cm-10.1-20130610-NIGHTLY-i9300.zip 最后选择 Advanced-\u0026gt; fix permissions，然后重启。 4. 安装google play等软件 默认由于版权问题CyanogenMod不自带google play等软件。通过这个连接下载 http://goo.im/gapps 你对应版本的google 软件。将其上传到S3，然后再通过重启到恢复模式选择zip安装。\n5. 如何打开开发者设置( {}develop options) 打开Settings -\u0026gt; About phone-\u0026gt;Build number 狂点build number 几次以后系统提示 develop settings已经开启。 That\u0026rsquo;s it!!\n","permalink":"https://anotherbug.com/2013/06/11/how-to-install-cyanogenmod-on-galaxy-s3/","summary":"\u003chr\u003e\n\u003cp\u003eGalaxy S3 安装CyanogenMod\u003c/p\u003e\n\u003cp\u003eCyanogenMod是Android上一个开源的固件（ROM）管理和定制软件。玩转Andorid ROM必备。下面介绍如何在Galaxy S3上安装CyanogenMod。\u003c/p\u003e","title":"How to install CyanogenMod on Galaxy S3"},{"content":"GTD 下一步行动计划\nA simple pictures shows your GTD plan for next step：\nThat\u0026rsquo;s it!!\n","permalink":"https://anotherbug.com/2013/05/27/what-to-do-next-for-your-gtd-plan/","summary":"\u003cp\u003eGTD 下一步行动计划\u003c/p\u003e\n\u003cp\u003eA simple pictures shows your GTD plan for next step：\u003c/p\u003e\n\u003cp\u003e\u003cimg alt=\"GTD Next\" loading=\"lazy\" src=\"/assets/images/2013/05/27/wtd.png\"\u003e\u003c/p\u003e\n\u003cp\u003eThat\u0026rsquo;s it!!\u003c/p\u003e","title":"What to do next for your GTD plan"},{"content":"如何使用wget下载整个网站的文件夹 How to use wget to donwload the whole web folder\n使用如下命令：\nwget -r -p -E -k -nH -np --cut-dirs=1 -P ~/Downloads/ http://99.198.110.38/Chinese/MP3s/13%E6%97%A7%E7%BA%A6%E8%AE%B2%E9%81%93/ That\u0026rsquo;s it!!\n","permalink":"https://anotherbug.com/2013/05/20/how-to-use-wget-to-download-the-whole-web-folder/","summary":"\u003cp\u003e如何使用wget下载整个网站的文件夹\nHow to use wget to donwload the whole web folder\u003c/p\u003e\n\u003cp\u003e使用如下命令：\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003ewget -r -p -E -k -nH -np --cut-dirs=1 -P ~/Downloads/  http://99.198.110.38/Chinese/MP3s/13%E6%97%A7%E7%BA%A6%E8%AE%B2%E9%81%93/\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThat\u0026rsquo;s it!!\u003c/p\u003e","title":"How to use wget to donwload the whole web folder"},{"content":"如何安装第三方的Beamer theme How to install third party beamer theme\n为了安装Beamer theme 文件不破坏原有的TDS (Tex Directory Structure) ，可以将需要的第三方theme安装到如下目录：\n~/Library/texmf/tex/latex/beamer/ 使用时，比如theme的文件名是 beamerthememy1.sty，那么在tex文件中可以如下引用：\n\\usetheme{my1} 因为所有的beamer theme文件默认以beamertheme 开头。\nThat\u0026rsquo;s it!!\n","permalink":"https://anotherbug.com/2013/05/18/how-to-install-third-party-beamer-theme/","summary":"\u003cp\u003e如何安装第三方的Beamer theme\nHow to install third party beamer theme\u003c/p\u003e\n\u003cp\u003e为了安装\u003ccode\u003eBeamer\u003c/code\u003e theme 文件不破坏原有的TDS (Tex Directory Structure) ，可以将需要的第三方theme安装到如下目录：\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e~/Library/texmf/tex/latex/beamer/\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e使用时，比如theme的文件名是 \u003ccode\u003ebeamerthememy1.sty\u003c/code\u003e，那么在tex文件中可以如下引用：\u003c/p\u003e","title":"How to install third party beamer theme"},{"content":"如何破解master lock的密码\n原委 最近游泳不小心把爱锁丢失，无奈看到地上有一个废弃的master lock，捡了回来，死马当活马医吧。\n破解准备知识 Master lock 密码转盘有40个数字 (0-39)，3个密码，采取暴力的手段是无法破解的。 密码转盘有40个数字 (0-39)可以分为4组 （0-10，11-20，21-30，31-0），明白分组的概念有助于加速破解 了解master lock如何开锁。（已经知道密码的情况下）参看 eHow。具体方法是： 1. 将master lock正面朝向你，不要放反了\n2. 将密码转盘顺时针转3整圈，注意，在第三圈未转完的时候将密码的第一位数字对准锁正上方的红点。\n3. 现在开始逆时针转动转盘，要让密码的第一位数字通过正上方的红点一次，然后让密码的第二位数字停留在红点下方\n4. 现在开始顺时针旋转密码，直接转到密码的第三位数字，将其放在红点下方。\n5. 拉动锁杆，可以开锁了，如何不行的话，在知道正确密码的情况下，重复1-4步骤。\n破解第三位数字 初始化master lock\n顺时针转到密码转盘4-5圈，使锁复位\n将锁盘的数字0正对锁上方的红色小点\n用手用力拉锁杆，顺时针从0开始转动转盘。\n在0-10的数字之间，你能找到在3个数字出，转盘会被卡住，转动很困难，记下这三个数字，如果转盘卡在某两个数字之间，比如6和7之间，就记下6.5\n重复第三个步骤，依次在11-20，21-30，31-0之间各找到三个数字。\n记下这12个数字，这十二个数字有规律的：\n（1）当中会有5个数字是整数，7个小数\n（2）5个整数中会有4个整数结尾数字相同\n（3）找出那个结尾不同的数字，它就是你的密码中的第三位数字！！！\n破解第一位数字 找到密码的第三位数字后，将它除以4取余数，结果会是0，1，2，和3中的一个。比如我的第三位数字是35，那么除以4后余数是3。 这样从余数开始，依次加上4，得到一组数字（比如我的余数是3，那么我得到的一组数字就是：3，7，11，15，19，23，27，31，35，39）注意密码数字的最大只到39. 好的，你已经得到了密码第1位数字的所有可能性了。 破解第二位数字 还记得刚才的那个余数吗？比如我的是3，现在需要将这个余数做一个简单的数学映射。\n0--\u0026gt;2\n1--\u0026gt;3\n2--\u0026gt;0\n3--\u0026gt;1\n比如我的余数是3，那么现在映射后的余数就是1了。\n同样的，用这个新的余数1，依次加上4，得到一组数字共有10个 （1，5，9，13，17，21，25，29，33，37）\n这10个数字就是你密码的第二位数字的所有可能性了。\n尝试找出密码 写下上面步骤的3位密码的所有可能性，一一尝试，因为密码的第一位和第二位各有10个数字，第三位已经确定，所以尝试的可能有100种组合。 一般情况下你要拿着顺序记下一一组合。但是运用工程和心理学原理，以及算法中的二分查找原理，可以从密码第一位数字所有可能性数字的中间开始和第二位密码的所有可能一一组合搜素。 如果不对，再从第一位密码的所有可能性的前半段中间开始，或者后半段的中间开始。 不管按照什么顺序，一定要注意记录，方式混乱或者遗落任何一个密码组合。下图是我的查找示意图（我首先尝试的是23，然后是19，然后是11，最后是7，所以在进行了40多次的尝试后找到了正确的密码）。对应的密码是 7-25-35，哈哈，有锁可以用了！！ That\u0026rsquo;s it!!\n","permalink":"https://anotherbug.com/2013/04/29/how-to-crack-master-lock/","summary":"\u003cp\u003e如何破解master lock的密码\u003c/p\u003e\n\u003ch2 id=\"原委\"\u003e原委\u003c/h2\u003e\n\u003cp\u003e最近游泳不小心把爱锁丢失，无奈看到地上有一个废弃的master lock，捡了回来，死马当活马医吧。\u003c/p\u003e\n\u003cp\u003e\u003cimg alt=\"master lock\" loading=\"lazy\" src=\"/assets/images/2013/04/29/master_lock.png\"\u003e\u003c/p\u003e\n\u003ch2 id=\"破解准备知识\"\u003e破解准备知识\u003c/h2\u003e\n\u003col\u003e\n\u003cli\u003eMaster lock 密码转盘有40个数字 (0-39)，3个密码，采取暴力的手段是无法破解的。\u003c/li\u003e\n\u003cli\u003e密码转盘有40个数字 (0-39)可以分为4组 （0-10，11-20，21-30，31-0），明白分组的概念有助于加速破解\u003c/li\u003e\n\u003cli\u003e了解master lock如何开锁。（已经知道密码的情况下）参看 \u003ca href=\"http://www.ehow.com/how_4810869_open-master-combination-lock.html\"\u003eeHow\u003c/a\u003e。具体方法是：\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e\u003ccode\u003e1. 将master lock正面朝向你，不要放反了\u003c/code\u003e\u003c/p\u003e","title":"How to crack the master lock"},{"content":" 如何用Excel做舒尔特方格\n什么是舒尔特方格 舒尔特方格 (Schulte Grid) 是在一张方形卡片上画上 1cm × 1cm 的 25 个方格，格子内任意填写上阿拉伯数字 1 ~ 25 等共 25 个数字。训练时，要求被测者用手指按 1 ~ 25 的顺序依次指出其位置，同时诵读出声，施测者一旁记录所用时间。数完 25 个数字所用时间越短，注意力水平越高。\n如何用Excel做舒尔特方格 新建一个Excel文件；在sheet2 的A1到A25单元格中输入1-25各数;B1到B25单元格中输入随机数公式：\t=Rand()\n在sheet1的A1到E5单元格中分别用等号引用sheet2 A列中的25个单元格数据；Excel中从一个sheet引用另外一个sheet单元格的方式如下：\n=Sheet2!A1\n在sheet2 中对数据进行排序操作，排序依据为B列，这样在sheet1 中就得到了随机排列的1-25各数。\nThat\u0026rsquo;s it!!\n","permalink":"https://anotherbug.com/2013/04/29/how-to-create-schulte-grid-using-excel/","summary":"\u003chr\u003e\n\u003cp\u003e如何用Excel做舒尔特方格\u003c/p\u003e\n\u003ch2 id=\"什么是舒尔特方格\"\u003e什么是舒尔特方格\u003c/h2\u003e\n\u003cp\u003e舒尔特方格 (Schulte Grid) 是在一张方形卡片上画上 1cm × 1cm 的 25 个方格，格子内任意填写上阿拉伯数字 1 ~ 25 等共 25 个数字。训练时，要求被测者用手指按 1 ~ 25 的顺序依次指出其位置，同时诵读出声，施测者一旁记录所用时间。数完 25 个数字所用时间越短，注意力水平越高。\u003c/p\u003e","title":"How to create Schulte Grid using Excel"},{"content":"如何使用wget下载整个网站同时支持中文命名\nwget 下载整个网站 使用命令：\nwget -r -p -E -k -nH -np --cut-dirs=1 -P /path/to/save/ Website URL 支持中文 vi ~/.wgetrc 添加如下内容：\n--restrict-file-names=nocontrol --trust-server-names=on --content-disposition=on That\u0026rsquo;s it!!\n","permalink":"https://anotherbug.com/2013/04/28/how-to-download-whole-website-using-wget-with-chinese-character-support/","summary":"\u003cp\u003e如何使用wget下载整个网站同时支持中文命名\u003c/p\u003e\n\u003ch2 id=\"wget-下载整个网站\"\u003ewget 下载整个网站\u003c/h2\u003e\n\u003cp\u003e使用命令：\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003ewget -r -p -E -k -nH -np --cut-dirs=1 -P /path/to/save/  Website URL\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2 id=\"支持中文\"\u003e支持中文\u003c/h2\u003e\n\u003cpre\u003e\u003ccode\u003evi ~/.wgetrc\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e添加如下内容：\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e--restrict-file-names=nocontrol\n--trust-server-names=on\n--content-disposition=on\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThat\u0026rsquo;s it!!\u003c/p\u003e","title":"How to download a whole website using wget with chinese character support"},{"content":" netstat -aon|findstr \u0026quot;9050\u0026quot;\nTCP: 127.0.0.1:9050 0.0.0.0 LISTENING 2016\ntasklist|findstr \u0026ldquo;2016\u0026rdquo;\ntor.exe 2016 Console 0 16,064\nctrl+alt+delete 打开任务管理器，找到tor.exe右键end process。\nThat\u0026rsquo;s it!!\n","permalink":"https://anotherbug.com/2012/10/01/shutdown-specific-port-in-windows/","summary":"\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003enetstat -aon|findstr \u0026quot;9050\u0026quot;\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eTCP: 127.0.0.1:9050 0.0.0.0 LISTENING 2016\u003c/p\u003e\n\u003cp\u003etasklist|findstr \u0026ldquo;2016\u0026rdquo;\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003etor.exe 2016 Console 0 16,064\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003ectrl+alt+delete\u003c/code\u003e 打开任务管理器，找到tor.exe右键end process。\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThat\u0026rsquo;s it!!\u003c/p\u003e","title":"Windows 下如何关闭特定端口"},{"content":"Setup a multinode Cassandra using Ubuntu 12.04 and Virtualbox\n1. Setup virtual machines (3 for exmaple) You should first setup one machine using virtualbox, setup JAVA environment, download the Cassandra source code\nUse Virtualbox\u0026rsquo;s virtualmanager function to copy another two ubuntu machines. Make sure to modify the hostname.\nModify the\t/etc/hosts file.\nMachine summary\n192.168.56.101 sjhadoop0 192.168.56.103 sjhadoop1 192.168.56.104 sjhadoop2 2. Config Cassandra Modify /conf/cassandra-env.shfile.\nMAX_HEAP_SIZE=\u0026amp;quot;512M\u0026amp;quot; HEAP_NEWSIZE=\u0026amp;quot;128M\u0026amp;quot; Modify /conf/cassandra.yaml file. For each virtual machine, change listen_address and rpc_addressaccordingly.\nlisten_address: 192.168.1.1 rpc_address: 192.168.1.1 Choose one first machine as seed. Then change seeds to its ip address, make the rest VM pointing to the same seed.\nseeds: - 192.168.1.1 Assign initial_token, using the this python code to generate initial token and modify the initial_token in .yaml file.\n3. Start Cassandra sudo ./bin/cassandra -f That\u0026rsquo;s it!!\n","permalink":"https://anotherbug.com/2012/06/05/setup-a-multinode-cassandra-using-ubuntu-12-04-and-virtualbox/","summary":"\u003cp\u003eSetup a multinode Cassandra using Ubuntu 12.04 and Virtualbox\u003c/p\u003e\n\u003ch3 id=\"1-setup-virtual-machines-3-for-exmaple\"\u003e1. Setup virtual machines (3 for exmaple)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eYou should first setup one machine using virtualbox, \u003ca href=\"http://anotherbug.com/blog/2011/10/ubuntu-11-04_install_java/\"\u003esetup JAVA environment\u003c/a\u003e, download the \u003ca href=\"http://www.apache.org/dyn/closer.cgi?path=/cassandra/1.1.1/apache-cassandra-1.1.1-bin.tar.gz\"\u003eCassandra source code\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUse Virtualbox\u0026rsquo;s virtualmanager function to \u003ca href=\"http://anotherbug.com/blog/2012/05/virtualbox-%E4%BF%AE%E6%94%B9uuid%E5%AE%9E%E7%8E%B0%E7%A1%AC%E7%9B%98%E5%A4%8D%E5%88%B6/\"\u003ecopy another two ubuntu machines\u003c/a\u003e. Make sure to \u003ca href=\"http://anotherbug.com/blog/2012/04/%E5%A6%82%E4%BD%95%E4%BF%AE%E6%94%B9ubuntu%E7%9A%84hostname/\"\u003emodify the hostname\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eModify the\t\u003ccode\u003e/etc/hosts\u003c/code\u003e file.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMachine summary\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e192.168.56.101 sjhadoop0\u003c/li\u003e\n\u003cli\u003e192.168.56.103 sjhadoop1\u003c/li\u003e\n\u003cli\u003e192.168.56.104 sjhadoop2\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"2-config-cassandra\"\u003e2. Config Cassandra\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eModify \u003ccode\u003e/conf/cassandra-env.sh\u003c/code\u003efile.\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e  MAX_HEAP_SIZE=\u0026amp;quot;512M\u0026amp;quot;\n  HEAP_NEWSIZE=\u0026amp;quot;128M\u0026amp;quot;\n\u003c/code\u003e\u003c/pre\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eModify \u003ccode\u003e/conf/cassandra.yaml\u003c/code\u003e file. For each virtual machine, change \u003ccode\u003elisten_address\u003c/code\u003e and \u003ccode\u003erpc_address\u003c/code\u003eaccordingly.\u003c/p\u003e","title":"Setup a multinode Cassandra using Ubuntu 12.04 and Virtualbox"},{"content":" Linksys E1550 刷DD-WRT教程\n将路由器恢复出厂设置并且硬复位 （30/30/30复位）目的是清除nvran里面的记忆\n下载对应E1550的DD-WRTbin文件。注意虽然E1550拥有64M RAM和16M Flash，但是还是先刷mini再刷big。\n刷完就好了。\n","permalink":"https://anotherbug.com/2012/04/30/linksys-e1550-dd-dwr-how-to/","summary":"\u003chr\u003e\n\u003cp\u003eLinksys E1550 刷DD-WRT教程\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\n\u003cp\u003e将路由器恢复出厂设置并且硬复位 （30/30/30复位）目的是清除nvran里面的记忆\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e下载对应E1550的DD-WRTbin文件。注意虽然E1550拥有64M RAM和16M Flash，但是还是先刷mini再刷big。\u003c/p\u003e","title":"Linksys E1550 刷DD-WRT教程"},{"content":"\u003c!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\"\u003e Shuangjiang Li Shuangjiang Li's home page \u0026nbsp; Shuangjiang Li, Ph.D. [my resume] Staff Engineer at the Application and Threat Research Center, Palo Alto Networks Inc. from 2015.06 to 2017.08. My main responsibilities are on the networking protocols as well as security R\u0026D on our next generation firewall (NGFW).\nPrior to joining Palo Alto Networks Inc., I worked as a Teaching and Research Assistant at Advanced Imaging and Collaborative Information Processing (AICIP) Department of Electrical Engineering and Computer Science University of Tennessee, Knoxville under Professor Hairong Qi\nContact Email: sli22 at vols.utk.edu\nMy Google Scholar Page\nEducation Ph.D., Computer Engineering, University of Tennessee, Dec. 2011 \u0026ndash; May 2015\nDissertation: Compressed Sensing in Resource-Constrained Environments: From Sensing Mechanism Design to Recovery Algorithms\nM.Sc., Computer Engineering, University of Tennessee, Aug. 2009 \u0026ndash; Dec. 2011\nThesis: Distributed Data Aggregation for Sparse Recovery in Wireless Sensor Networks\nB.S., Electrical Engineering, University of Science and Technology Beijing, Sept. 2005 \u0026ndash; Jun. 2009\nBachelor thesis: Improving the precision of GPS data using Real Time Kinematic (RTK) algorithm (in Chinese) Research Interests Compressed Sensing (CS recovery: A survey)\nImage/Video Processing, Hyperspectral Imaging, fMRI, and LIBS Spectra Analysis.\nMobile/Urban Sensing (energy efficiency, data processing, sensing applications)\nWireless Sensor Networks (WSNs)\nPattern Recognition \u0026 Big Data Analysis\nComputer Networks and Security\nPublications Shuangjiang, Li and Hairong, Qi, “A Douglas-Rachford splitting approach to Compressed Sensing image recovery using low-rank regularization”, IEEE Transactions on Image Processing, 2015, doi:10.1109/TIP.2015.2459653. \u0026nbsp [2015-image-video-recovery-pub.pdf]\u0026nbsp Shuangjiang, Li and Wei, Wang and Hairong, Qi and Bulent, Ayhan and Chiman, Kwan and Steven, Vance, “Low-rank tensor decomposition based anomaly detection for hyperspectral imagery,” IEEE International Conference on Image Processing (ICIP),Quebec City, Canada, September 27-30, 2015.\u0026nbsp [2015-lowrank-tensor-detection-pub.pdf]\u0026nbsp top 10% recognition among around 1300 accepted papers\nSisi, Xiong and Yanjun, Yao and Shuangjiang, Li and Qing, Cao and Tian, He and Hairong, Qi and Leon, Tolbert and Yilu, Liu, “kBF: Towards approximate and bloom filter based Key-Value storage for cloud computing systems”, IEEE Transactions on Cloud Computing, 2014, doi:10.1109/TCC.2014.2385063.\u0026nbsp [2015-kBF-systems-pub.pdf]\nWei, Wang and Shuangjiang, Li and Hairong, Qi and Bulent, Ayhan and Chiman, Kwan and Steven, Vance, “Identify anomaly component by sparsity and low rank”, IEEE Workshop on Hyperspectral Image and Signal Processing: Evolution in Remote Sensor (WHISPERS), In Press, Tokyo, Japan, June 2-5, 2015.\u0026nbsp [2015-lowrank-anomaly-detection-pub.pdf]\nShuangjiang, Li and Rui, Guo and Li, He and Wei, Gao and Hairong, Qi and Gina, Owens, \u0026ldquo;Demo Abstract: MoodMagician - A Pervasive and Unobtrusive Emotion Sensing System using Mobile Phones for Improving Human Mental Health\u0026rdquo;, 12th ACM Conference on Embedded Networked Sensor Systems (SenSys 2014).\u0026nbsp [2014-emotion-sensing-demo-pub.pdf]\nShuangjiang, Li and Hairong, Qi, \u0026ldquo;Compressed Dictionary Learning for Detecting Activations in fMRI using Double Sparsity\u0026rdquo;, 2nd IEEE Global conference on Signal and Information Processing, 2014.\u0026nbsp [2014-compressed-fMRI-detection-pub.pdf]\u0026nbsp [slides.pdf]\nShuangjiang, Li and Hairong, Qi, \u0026ldquo;Recursive Low-rank and Sparse Recovery of Surveillance Video using Compressed Sensing\u0026rdquo;, 8th ACM/IEEE International Conference on Distributed Smart Cameras, 2014.\u0026nbsp [2014-lowrank-video-pub.pdf]\u0026nbsp [slides.pdf]\nWei, Wang and Shuangjiang, Li and Hairong, Qi, and Bulent, Ayhan and Chiman, Kwan and Steven, Vance, \u0026ldquo;Revisiting the preprocessing procedures for elemental concentration estimation based on chemcam LIBS on mars rover\u0026rdquo;, 6th IEEE GRSS Workshop on Hyperspectral Image and Signal Processing, 2014.\u0026nbsp [2014-spectra-denoising-pub.pdf]\nShuangjiang, Li and Hairong, Qi, \u0026ldquo;Pattern-based compressed phone sensing\u0026rdquo;, 1st IEEE Global conference on Signal and Information Processing, 2013, pages 169–172.\u0026nbsp [2013-pattern-sensing-pub.pdf]\nShuangjiang, Li and Hairong, Qi, \u0026ldquo;Distributed data aggregation for sparse recovery in wireless sensor networks\u0026rdquo;, 9th IEEE international conference on Distributed Computing in Sensor Systems (DCoSS), 2013, pages 62–69.\u0026nbsp [2013-data-aggregation-pub.pdf]\u0026nbsp [slides.pdf]\nRui, Guo and Shuangjiang, Li and Li, He and Wei, Gao and Hairong, Qi and Gina, Owens, \u0026ldquo;Pervasive and unobtrusive emotion sensing for human mental health\u0026rdquo;, 7th International Conference on Pervasive Computing Technologies for Healthcare, 2013, pages 436–439.\u0026nbsp [2013-emotion-sensing-pub.pdf]\nJenson, Yin and Bulent, Ayhan and Chiman, Kwan and Wei, Wang and Shuangjiang, Li and Hairong, Qi and Steven, Vance, \u0026ldquo;Enhancement of JMARS\u0026rdquo;, 44th Lunar and Planetary Science Conference, 2013.\u0026nbsp [2013-enhance-JMARS-pub.pdf]\nShuangjiang, Li and Hairong, Qi, \u0026ldquo;Sparse representation based band selection for hyperspectral images\u0026rdquo;, 18th IEEE International Conference on Image Processing (ICIP), 2011, pages 2693-2696.\u0026nbsp [2011-sparse-band-selection-pub.pdf] Teaching Teaching assistant at University of Tennessee for:\nCS140, Data Structures and Algorithms I, Spring 2013 ECE335, Electronic Devices, Fall 2012\nCS302, Data Structures and Algorithms II, Spring 2012 ECE355, Computer System Fundamentals, Fall 2011\nCS102/ECE206, An Introduction to Computer Science (C ), Spring 2011 CS102/ECE206, An Introduction to Computer Science (C ), Fall 2010\nCS140, Data Structures and Algorithms I, Spring 2010\nCS102/ECE206, An Introduction to Computer Science (C ), Fall 2009\nAwards and Honors Honorable recognition to be \"top 10%\" of accepted papers at The International Conference on Image Processing (ICIP) 2015\nChancellor’s Extraordinary Professional Promise Award, University of Tennessee, 2013\nStudent Senate Travel Award, University of Tennessee, 2013\nPassed doctoral qualify exam with the highest score, 96.88 out of 100, University of Tennessee, 2010\nEECS Department Excellence Fellowship, University of Tennessee, 2009, 2010\nFirst Prize Winner in the China Undergraduate Mathmatical Contest in Modelling (CUMCM) in Beijing, 2007\nAcademic Activities 1. Journal Reviewer (40+ papers in total)\nJournal of Medical and Biological Engineering (JMBE) IEEE Transactions on Vehicular Technology (IEEE-TVT) Journal of Electronic Imaging (SPIE-JEI) Journal of Sensors\nAd Hoc \u0026amp; Sensor Wireless Networks\nIEEE Geoscience and Remote Sensing Magazine (IEEE-GRSM)\nIEEE Transactions on Emerging Telecommunications Technologies (IEEE-ETT)\nElsevier: Pervasive and Mobile Computing (PMC)\nIEEE Transactions on Parallel and Distributed Systems (TPDS) International Journal of Distributed Sensor Networks (IJDSN)\nSpringer: Frontiers of Information Technology \u0026 Electronic Engineering KSII Transactions on Internet and Information Systems (KSII)\nInternational Journal of Ad Hoc and Ubiquitous Computing (IJAHUC)\nChinese Optics Letters (COL)\nIEEE Access\n2. Conference Reviewer (30+ papers in total)\n2017 IEEE Int'l Symposium on Circuits \u0026 Systems (ISCAS)\nSecond International Workshop on Mobile Cloud Computing systems, Management, and Security (MCSMS-2016)\nThe 7th International Conference on Ambient Systems, Networks and Technologies (ANT-2016)\n2016 IEEE Int'l Symposium on Circuits \u0026 Systems (ISCAS)\n2016 IEEE INFOCOM 2015 IEEE Globecom\n2015 IEEE Int'l Symposium on Circuits \u0026 Systems (ISCAS)\n2015 IEEE 82nd Vehicular Technology Conference (VTC)\n4th International Conference on Advances in Computing, Communications and Informatics (ICACCI­ 2015)\nTPC member GLOBECOM 2015 Workshop on Advances in Software Defined Radio Access Networks and Context­aware Cognitive Networks (SDRANCAN­2015)\n34rd IEEE International Performance Computing and Communications Conference (IPCCC 2015) 3. Technical Program Committee/Chair IEEE Smart World Congress IEEE Smart City Innovations 2017 (IEEE SCI 2017)\nGLOBECOM 2015 Workshop on Advances in Software Defined Radio Access Networks and Context­aware Cognitive Networks (TPC)\nUseful Resources Programming\nDo You Use a Comman with Dear, Hello, and Hi?\nPage generated 2017-02-15 00:33:17 PDT, by jemdoc. ","permalink":"https://anotherbug.com/main/","summary":"\u003c!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\"\n  \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\"\u003e\n\u003chtml xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\"\u003e\n\n\u003chead\u003e\n  \u003cmeta name=\"generator\" content=\"jemdoc, see http://jemdoc.jaboc.net/\" /\u003e\n  \u003cmeta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" /\u003e\n  \u003clink rel=\"stylesheet\" href=\"jemdoc.css\" type=\"text/css\" /\u003e\n  \u003clink rel=\"stylesheet\" href=\"person.css\" type=\"text/css\" /\u003e\n  \u003ctitle\u003eShuangjiang Li \u003c/title\u003e\n\u003c/head\u003e\n\n\u003cbody\u003e\n  \u003cdiv id=\"layout-content\"\u003e\n    \u003cdiv id=\"toptitle\"\u003e\n      \u003ch1\u003eShuangjiang Li's home page\u003c/h1\u003e\n    \u003c/div\u003e\n    \u003ctable class=\"imgtable\" frame=vsides\u003e\n      \u003ctr\u003e\n        \u003ctd\u003e\n          \u003cimg src=\"./pics/sli.jpg\" alt=\"sli\" /\u003e\u0026nbsp;\n        \u003c/td\u003e\n        \u003ctd align=\"left\"\u003e\n        \u003ctable\u003e\n          \u003ctr\u003e\n          \u003cp\u003e\u003ca href=\"https://anotherbug.com/main/\"\u003eShuangjiang Li\u003c/a\u003e, Ph.D. \u003ca href=\"#\"\u003e [my resume] \u003c/a\u003e\u003c/p\u003e\n          \u003c/tr\u003e\n          \u003ctr\u003e\n            \u003cp\u003eStaff Engineer at the \u003ca href=\"http://researchcenter.paloaltonetworks.com/\"\u003eApplication and Threat Research Center\u003c/a\u003e, \u003ca href=\"http://www.paloaltonetworks.com/\"\u003ePalo Alto Networks Inc.\u003c/a\u003e from 2015.06 to 2017.08.\n            \u003c/br\u003eMy main responsibilities are on the networking protocols as well as security R\u0026D on our next generation firewall (NGFW).\u003c/p\u003e\n          \u003c/tr\u003e\n           \u003ctr\u003e\n            Prior to joining \u003ca href=\"http://www.paloaltonetworks.com/\"\u003ePalo Alto Networks Inc.\u003c/a\u003e, I worked as a Teaching and Research Assistant at\n            \u003c/br\u003e\n             \u003ca href=\"http://aicip.eecs.utk.edu/wiki/Main_Page\"\u003eAdvanced Imaging and Collaborative Information Processing (AICIP)\u003c/a\u003e\n            \u003c/br\u003e\n            \u003ca href=\"http://www.eecs.utk.edu/\"\u003eDepartment of Electrical Engineering and Computer Science\u003c/a\u003e\n            \u003c/br\u003e\n            \u003ca href=\"http://www.utk.edu/\"\u003eUniversity of Tennessee, Knoxville\u003c/a\u003e under \u003ca href=\"http://www.eecs.utk.edu/people/faculty/fulltime/qi/main\"\u003eProfessor Hairong Qi\u003c/a\u003e\u003c/p\u003e","title":""},{"content":"记录我所使用过的好物。本着如下几个原则：\n「Less is more」 「最省钱的方式是把东西一步买到位」，当然一步买到位也要结合自身的经济条件 「如果你犹豫不决是否要买这样东西，可以先放一个月」，也有一种说法 「如果你犹豫不决是否要买这样东西，那就是不需要」，我觉着后者有点残忍，改了一下。 工作 桌椅 Herman Miller Aeron Chair 椅子 （12 年质保，铁王座，如果条件允许建议直接上 Embody 款）\n升降桌\nUPLIFT Laminate Desktop - Cherry - 72\u0026quot; x 30\u0026quot; Teknion (E223 老款手动升降，好处是不容易坏，坏处是桌子上东西太多每次抬起来比较费力，也是锻炼 :-) 电子产品 Mac mini M1, 2020 16 GB/1TB SSD. 第一台 M1 mini，运行流畅，安静，买完就喜欢了。\nMacbook Pro （16-inch, 2019）\nHHKB Pro 键盘\nHHKB 键盘手托，入了键盘强烈推荐这个 升级了 HHKB HYBRID TYPE-S (WHITE)，选择蓝牙版本纯粹是为了可以在 iPad 上使用，平时电脑都是用 USB-C 连接，不喜欢蓝牙链接（有延迟）。\n鼠标: Logitch MX Master 3S ，也用过 MX Master 3。 3S 是真的安静，值得升级。\nDell U2720Q 4K 显示器\nMetal Aluminum Mouse Pad 鼠标垫\nAirpods 会议利器，一天 4 个小时在线耳朵也不疼\nApple AirPods 使用率最高的工具 准备无脑入手下一版本 Apple AirPods Pro (尝试了 AirPods Pro，耳朵很不舒服，放弃) 生活 咖啡 Breville Espresso Machine, BES870XL 带你改变对咖啡认识的「入门级」产品。 最爱的咖啡豆 List: Philz Coffee Tesora Kicking Horse Coffee 运动 综合类 心率带\nGarmin HRM-Tri Heart Rate Monitor Wahoo TICKR X Heart Rate Monitor 帽子/头巾\nBuff Headbands 可以玩出花来的『神器』，跑步入坑必备。 能量胶\nSis 能量胶，必备，我一般买带咖啡因的。 袜子\nCEP Run Socks 压缩袜子，可以买短的，风骚一点的话再买个 Calf Compression Sleeves ，一定要红色，红色，红色。其实不光是好看，长跑过程中和之后恢复效果真的挺好。 Manduka PRO Yoga Mat 瑜伽垫 排名第一，据说不会坏。\n跑步 这些年用过的 GPS 手表：\nGarmin Forerunner 920XT (Red/White) Garmin Forerunner 935 Stryd 这个用来记录 running dynamics (power, form etc)，因为 Garmin 的室内记录不太准。Stryd 完美搭配 zwift 室内跑步。对于价格敏感型消费者，牺牲一些准确性，可以考虑：\nGarmin Running Dynamics Pod Zwift RunPod 游泳 Garmin Swim，如果有了 Trianthon watch 的话（如 Garmin 935)这个不是必须。\nSpeedo 游泳耳塞 Ergo Ear Plugs，每次多买几个，真的容易掉。\n骑车 Bike 2016 Giant TCR ADVANCED Cervelo P3 Trainer Wahoo Kickr Smart Trainer ·End· ","permalink":"https://anotherbug.com/tools/","summary":"\u003cp\u003e记录我所使用过的好物。本着如下几个原则：\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e「Less is more」\u003c/li\u003e\n\u003cli\u003e「最省钱的方式是把东西一步买到位」，当然一步买到位也要结合自身的经济条件\u003c/li\u003e\n\u003cli\u003e「如果你犹豫不决是否要买这样东西，可以先放一个月」，也有一种说法 「如果你犹豫不决是否要买这样东西，那就是不需要」，我觉着后者有点残忍，改了一下。\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"工作\"\u003e工作\u003c/h2\u003e\n\u003ch3 id=\"桌椅\"\u003e桌椅\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://amzn.to/2XJILXN\"\u003eHerman Miller Aeron Chair 椅子\u003c/a\u003e （12 年质保，铁王座，如果条件允许建议直接上 Embody 款）\u003c/p\u003e","title":""}]