Category
实践
跨越所有栏目的「实践」内容,共 14 篇。
我的第一个 AgentSkill
我在 Cambly 和外教上课时,多数时候用的是 Engoo Daily News 中的课程( 网站示例 、 课程示例 )。每节课程对应一篇英文时事新闻,上课的一般流程就是:课前准备 → 文章阅读 → 问题讨论,同时每节课程都标记有难度,从 Intermediate (Level 4-6)、Advanced (Level 7-8) 到 Proficient (Level 9),课程内容难度依次递增,具体体现在词汇难度、句子复杂度、讨论…
两年魔方速拧路,体验优化的艺术
魔方速拧之路 走上魔方速拧路既是机缘巧合,也是冥冥之中天意使然。2022 年 8 月 28 日,我见到郑天晴坐在地上摔打奶奶给她买的玩具魔方,忽然回忆起高中班上有个小伙子能在 3 分钟内复原一个魔方,令同学们既赞叹又羡慕,我心中的少年之火在这一瞬间被点燃,决定也试上一试。于是我找到了博主 LeesRandomVids 制作的保姆级教学视频「 How to Solve a Rubik's Cube, Step by Step Begin…
赤道计划
多数人高估他们一年能做的事,却低估他们十年能的事(Most people overestimate what they can do in one year and underestimate what they can do in ten years)。 大概在两年前,我开始酝酿「赤道计划」:在人生结束之前跑完 40075 公里,这个距离正是赤道的周长。毛主席的「坐地日行八万里,巡天遥看一千河」也来源于它。如果每两天跑一次 5 公里…
我开发的口语跟读练习工具 RAM
平时,我习惯在跑步、散步或通勤时做一些口语跟读练习。散步或通勤时还好,在手机上来回播放、暂停音频即可,但这种方法不适合在跑步中使用。另外,北京入冬后,在室外这么干容易生冻疮。于是我就想:能不能让音频自动地播放一句,停留一段时间让我跟读,然后再播下一句?
纸牌游戏:24
可能是太想排到车号了,最近上下班路上总是盯着过往车辆的号牌。盯着盯着就会下意识地思考:「怎么用上面的数字经过加、减、乘、除得到 24」,比如下面这个车牌:
从 MapReduce 到 SQL
在最近的工作中,为了做数据分析,我开始写一些复杂的 HiveSQL。每次执行 HiveSQL 时,都会看到 Map/Reduce jobs 被调度、执行,直到最后展示出数据。渐渐地我心中多了两个疑问: MapReduce 引擎如何工作? SQL 是如何被翻译成 MapReduce job 的? 为了解决这两个疑问,我用比较熟悉的 Go 语言实现了一个玩具版本的 MapReduce 引擎,然后基于此实现基本的 select,join。 …
一次实验、两种错误、三个直觉
最近,我们在公司内部做了一些 Hacking Growth 方向的探索,我们团队俨然成了增长团队,从用户增长、转化的各个环节上尝试不同的策略,拉新、激活、留存、促活、商业化,整个核心流程是一个大漏斗,不同的阶段和渠道又可以拆分成不同的小漏斗,哪个环节损失大就优化哪个。但无论做何种尝试,都绕不开 A/B 测试。
中小型 Go 语言项目应该如何布局?
每个工程师来到新环境,大概率需要从维护老项目开始切入,逐渐熟悉公司的技术栈和效率工具。这时候,老项目的一些习惯,如命名、布局、错误处理等等,不论好坏,都会不自觉地影响新人,形成路径依赖。在这个过程中,如果没有人主动去思考为什么,这些习惯也将被无理由地继承下去。
从头开始实现 RNN
What I cannot create, I do not understand. -- Richard Feynman Andrej Karpathy 在 2015 年发表了题为 The Unreasonable Effectiveness of Recurrent Neural Networks 的博客,并配套开源了其中实验所用的 char-rnn 代码仓库 ,以及用 numpy 手写的 gist: min-char-rnn ,…
翻译能有多快?在 Mac 上实现一键翻译
因为平时需要阅读大量的英文资料,翻译对我来说是一个高频需求,但我一直没能找到一个足够趁手的工具。对于一个理想的翻译工具,我有三点期望: 翻译准确:翻译的结果与原文贴合不显得尴尬 触发简单:复制到剪贴板后快速触发翻译指令 响应迅速:发起翻译请求到获得结果小于一秒
从头开始构建一个 Pascal 的解释器
前阵子无意中发现了一个系列教程:「 Let's Build A Simple Interpreter 」,简称 lsbasi。本来只是随便翻翻,但刚看完 Part-1 就发现作者 Ruslan Spivak 不仅是一个出色的软件工程师,文笔也相当不错,更难得的是他对学习这件事本身有着很深入的理解,这些见解甚至反馈到了这套教程的设计上。
调用链追踪系统在伴鱼:实践篇
此文同时发表在 伴鱼技术博客 上 在 理论篇 中,我们介绍了伴鱼在调用链追踪领域的调研工作,本篇继续介绍伴鱼的调用链追踪实践。在正式介绍前,简单交代一下背景:2015 年,在伴鱼服务端起步之时,技术团队就做出统一使用 Go 语言的决定。这个决定的影响主要体现在: 内部基础设施无需做跨语言支持 技术选型会有轻微的语言倾向
如何在 Golang 项目中处理好错误
造一辆能跑在路上的车并非难事,但要这辆车能在各种路况、气候和突发事件下安全行驶,事情就不再简单。如果把写程序比喻成造车,构建程序的主要功能就是让车跑起来,而处理好错误就是让车安全地跑。 错误是程序的重要组成部分,能否在程序中处理好错误决定了软件的质量上限 。在这篇博客中,我将介绍个人在 Golang 项目中错误处理的思考。
报警平台的匹配器演进
简介 本文介绍伴鱼内部服务报警平台中匹配器模块的演进,及其利用 Lex 和 Yacc 同类工具构建 DSL 编译器的过程。是我和团队成员在伴鱼的质量工程小组的一小部分工作。