ZDDHUB 的博客

读过很多书,看过很多电影,也解决过很多问题,回头想想却发现什么都不记得,因此有了写博客的习惯。这个网站的所有源代码开源在 Github 上,具体可以查看这个仓库

下面是近期的一些文章:


  • 独孤九剑(0x05) - 终端篇

    据说一个合格的程序员看终端的时间会比看女友的时间还多。 想开发一个受 类*nux 程序员普遍欢迎的程序,你就需要增加对终端的友好支持,包括良好的帮助文档、提示、颜色和自动补全。

  • Gem-based Jekyll theme 开发小记

    Github pages 和 Jekyll 搭配,让一大批静态博客火了起来,方便了不少人,用 markdown 写文章也非常优雅。

  • Miscellaneous

    这里记录一些小技巧

  • 前端手记 TodoMVC 之 Redux 篇

    React 将应用程序分解成不同的 component,每个 component 单独完成事件响应或者数据展示。把只负责数据展示的 component 叫做 Presentational Component,易复用。把与业务逻辑/业务处理密切相关的 component 叫做 Container Component,极难复用,通常作为 Presentational Component 的父 component 存在,比如我实现的 TodoMVC 中的 TodoApp。

  • 前端手记 TodoMVC 之 Server 篇

    在上一篇 前端手记 TodoMVC 之 React 篇 中实现了单页应用 TodoMVC,直接把数据存在前端,当刷新或者重新打开网站时,所有数据都会丢失。虽然对于 TodoMVC 这种应用,把数据缓存在前端是一个不错的选择,但以练习为目的,我还是打算特意为之,实现一个简单的 Server,提供 RESTful API,把 TodoMVC 相关的数据存储在后台。

  • 前端手记 TodoMVC 之 React 篇

    保持专注越来越难了,感觉我的注意力也上了年纪,变的花心多了,很容易被打断。能有心情、有时间静坐下来,学学 Todo list 的内容,感觉是最幸福的了。 前端的框架很多,我先从 React 开始。

  • 前端手记 TodoMVC 之 CSS 篇

    我一直以后端程序员自居,从不轻易涉足前端。有人说过,一个人最热爱的就是他所擅长的事。我没有设计师的品味和 UX 的眼力,对前端有着莫名的恐惧。这次由于工作原因,需要系统地学习前端知识,对我来说也是不小的挑战。

  • 独孤九剑(0x04) - 测试篇

    《南皮县志·风土志下·歌谣》:“兵马不动,粮草先行”。作战时兵马还没出动,军用粮草的运输要先行一步。在开发新功能之前,先编写测试代码,然后只编写使测试通过的功能代码,这种以测试驱动开发的开发模式是我非常推荐的。 对 Dit 的贡献要求需要通过单元测试,编写 Dit 的任意模块,都需要一并编写测试用例。本文先简述一下 Go 对测试的支持,后续会陆续提供 Dit 的测试方案和测试报告。

  • 独孤九剑(0x03) - 缓存篇

    每个人都会变成自己讨厌的人 Git 通过二进制文件 .git/index 来缓存当前目录,实现工作目录和仓库数据的快速交换。Git 的缓存却保存在 index 文件里,为什么不是 cache,很奇怪。

  • 英语小抄

    这里记录一些有用的单词,句子

  • LLDB debug Golang

    除了 GDB,还可以使用 LLDB debug go code 熟练调试工具是程序员的必备技能,lldb 的发展势头,大有取缔 gdb 的趋势,因此需要把 lldb 加入到自己的工具箱里。 LLDB 命令 LLDB 的所有命令都遵从以下格式: <noun> <verb> [-options [option-value]] [argument [argument...]] 对于常用命令,可设置别名,降低输入负担。(可通过别名设置和 GDB 相同的语法,降低记忆负担)。

  • Make mistakes

    Do you want to know the difference between a master and a beginner? The master has failed more times than the beginner has tried. We need to think about failure differently. Most people think mistakes are a necessary evil. Mistakes are not necessary evil, they aren't evil at all. They are an inevitable(不可避免的) consequence of doing something new and as such should be seen as valuable.

  • 大牛俱乐部上线啦

    如果说我比别人看得更远些,那是因为我站在了巨人的肩上 号外!号外!大牛俱乐部 上线啦,欢迎戳 这里 查看 Go 和 Swift 方面的干货,让你站在巨人的肩上,看的更远!更有好看的妹子,陶冶情操,启迪智慧。 如果你也想加入编辑的行列,欢迎微信搜 zddhub,直接骚扰。

  • 独孤九剑(0x02) - 数据结构篇

    穷则独善其身,达则兼济天下。一个人一旦能够喂饱自己并有个安身之所,剩下的就是该别人做点什么了。我现在所做的一切,还都是为了自己。 Dit 和 Git 使用相同的设计思路和数据结构,在表述上会优先使用 Git,当出现差别时会特别说明。以下说明两种最基本的数据结构:仓库和对象。

  • 独孤九剑(0x01) - 总决

    总诀:“归妹趋无妄,无妄趋同人,同人趋大有。甲转丙,丙转庚,庚转癸。子丑之交,辰巳之交,午未之交。风雷是一变,山泽是一变,水火是一变。乾坤相激,震兑相激,离巽相激。三增而成五,五增而成九……” —— 金庸 独孤九剑讲究料敌先机,无招胜有招。在程序世界里,需要根据不同的需求不断的迭代。系统不能像剑一样随手变更,往往需要花费无数个人月「最近体会到可以把变化做成接口,留给用户,来应对一部分需求变更」。程序=算法+数据结构, 很少有像 TeX 那样,算法和数据结构都趋近完美,Donald 独自完成了 99.99%,甚至连 bug,都少到了惊人的地步。我认为程序设计最重要的是数据结构,深刻理解数据结构,使用最合适的算法,以不变应万变,才能抓住程序的本质,解决用户的痛点,做到在需求变化或者转型时,改变最小。

  • 独孤九剑(0x00) - 我为什么要做 Dit

    又挖了一个坑!不是没事专坑自己,只是想在无聊的时光里,找个乐子,找点事做。 小时候,最令人着迷的就是邻家 DVD 里播放的功夫电影。三五个小伙伴,从中午看到下午,再从下午看到傍晚,从不缺席。印象中的男主角除了爱上师父的女儿外,一般都会经历三个人生阶段: 被虐->上山学艺->下山报仇。

  • 零值强制类型转换的使用

    这可能是最最基础的内容了,可是我却从来没在项目中用过。有一句话是对的,永远不能说精通哪一门语言。 零值可被强制转化为任意类型,转化出的结果,不能被直接访问,可获取相应域的偏移量,通过对应域推算外层类型的地址。

  • 终端颜色输出重定向

    在用printf输出时,可加上颜色显示,让输出信息更加友好。

  • Go语法简略 - 正则表达式

    正则表达式Regular Expression(简写regexp或者RE)使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。用法灵活,设计完善,是值得研究的一门技术。多数流行的语言,都支持正则表达式,且用法类似。像这种一处学习,处处可用的东西,值得大家深入研究。然而对我来说,需要的时候查查就行了。 对于像Duck这种Web框架来说,灵活的处理URL是基本需求,这种场景,使用正则表达式再合适不过了。

  • Makefile

    每次到写Makefile的时候,都是Google一段代码,基本就能实现自己的需求,过后就忘(发现越来越容易忘记一些事情)。今天终于被要求解释Makefile中的特殊变量,直接就蒙逼了,被狠狠地鄙视了一回,那么还是做个备忘吧。之后涉及到Makefile的问题,我都指着这篇活了。

  • Go语法简略 - Duck框架探索

    这个周末,《奔跑吧,兄弟》没有了,《那时那你》看完了,《万万没想到》剧组也没有新的项目,挠人的《花千骨》也要等到周日才更新,这是一个剧荒的周末,没办法,只能看看代码了。 本文打算参考Martini进一步实现我的[Duck框架]。

  • Go语法简略 - 依赖注入

    通过对web应用框架背后原理的探索,引入了依赖注入的概念。如果你需要读懂或者写一个框架的话,依赖注入的思想绝对能帮到你。本文记录对依赖注入的探索。

  • Go语法简略 - web应用框架

    Martini是目前最流行的基于Go的web应用框架,借鉴了express和sinatra。其内核类非常简洁小巧,值得研究。 本文探索Go对web编程的支持。

  • Go语法简略 - 反射

    反射是指计算机程序在运行时(Run time)可以访问、检测和修改它本身状态或行为的一种能力。 一般来说,静态语言都会经过源码—>编译->运行的过程,reflect反其道而行,在运行时访问、 检测或修改源码的行为。 本文主要记录Go的反射语法,方便查询。

  • Go语法简略 - 面向对象

    优秀的程序员应该不限于只用一两种语言,对各种语言都要有猎涉,这样才能在合适的应用下选择最合适的语言。但优秀的程序员至少需要精通一到两种语言,在众多的编程语言中,我选择Go和Swift作为自己之后20年内的主要编程语言。 本文主要记录Go面向对象的语法,方便查询。

  • Go语法简略 - goroutine

    优秀的程序员应该不限于只用一两种语言,对各种语言都要有猎涉,这样才能在合适的应用下选择最合适的语言。但优秀的程序员至少需要精通一到两种语言,在众多的编程语言中,我选择Go和Swift作为自己之后20年内的主要编程语言,并力争达到精通的境地。 本文主要记录 Go 并行相关语法,方便查询。

  • Go语法简略 - 方法和接口

    优秀的程序员应该不限于只用一两种语言,对各种语言都要有猎涉,这样才能在合适的应用下选择最合适的语言。但优秀的程序员至少需要精通一到两种语言,在众多的编程语言中,我选择 Go 和 Swift 作为自己之后20年内的主要编程语言,并力争达到精通的境地。 本文主要记录 Go 方法和接口语法,方便查询。

  • Go语法简略 - 基础篇

    优秀的程序员应该不限于只用一两种语言,对各种语言都要有猎涉,这样才能在合适的应用下选择最合适的语言。但优秀的程序员至少需要精通一到两种语言,在众多的编程语言中,我选择 Go 和 Swift 作为自己之后20年内的主要编程语言。 本文主要记录 Go 的基础语法,方便查询。

  • 大牛 | 轻松科研

    如果说我比别人看得更远些,那是因为我站在了巨人的肩上 最近无聊,做了“大牛|轻松科研”的网站。 明天我妹妹就要高考了,我希望她能金榜题名, 并且能用得上这个网站。

  • 未来这几年

    我也来展望一下未来几年科技的发展,如果不能为将来吹牛添加资本,至少可为做为笑料自嘲一下自己。 一直认为微软是一个缺乏创新的公司,从 win8 开始改变看法。在 xbox 大卖的时候,我曾经告诉朋友,世界那么大,我们不应该挤进小屏幕里面,而且那么扁,看看都觉得难受。

  • 为 Android Studio 创建图标

    当你在Ubuntu上满心欢喜的安装了最新版的Android Studio正准备大干一场的时候,却发现只能从命令行打开,是不是很郁闷呢? 其实做法很简单,Ubuntu上的应用图标配置放在/usr/share/applications目录下。复制其中任意一个文件到android-studio.desktop,修改对应的参数即可。

  • Shell

    这里记录我容易忘记的 shell 代码片段

  • Git

    这里记录我容易忘记的Git命令

  • Vim

    这里记录我容易忘记的vim命令

  • 金庸答百问

    这次,趁着春节,补看了《越女剑》、《白马啸西风》和《鸳鸯刀》,《金庸全集》总算一部不落的读完了。记得第一本读的金庸小说是《神雕侠侣》,从此欲罢不能。这次又重读了一部分《笑傲江湖》,常想着,金庸那匠心独运的构思,是先想好了再写,还是边写边想,终于在金庸答百问里找到了答案:

  • 论拖延症

    现在就干,立刻!马上!

  • Flex, A fast scanner generator

    One size does not fit all Flex is a tool for generating scanners: programs which recognized lexical patterns in text. flex reads the given input files, or its standard input if no file names are given, for a description of a scanner to generate.

  • 有理想的人

    理想是一定要有的,万一实现了呢? 豆豆 看完《天幕红尘》,又把《遥远的救世主》重温了一遍。相比来说更喜欢后者,或许是我对政治压根就不感兴趣,或许是丁元英的这首自嘲诗,真真的刺中了我,无地自容。 本是后山人, 偶做前堂客。 醉舞经阁半卷书, 坐井说天阔。 大志戏功名, 海斗量福祸。 论到囊中羞涩时, 怒指乾坤错。 豆豆是一个有理想的人。很显然, 像丁元英和叶子农这样心思缜密,又智慧过人的男人是很吸引豆豆的,也许现实中很难找到这样的人,所以,他们要么走了,要么死了,留下的只是一段美丽的传奇。

  • 从虚拟到现实

    假如你吃了鸡蛋觉得不错,何必认识那只下蛋的母鸡呢?我是一个想弄清楚下蛋过程的人。 获悉Mathias创办(co-found)了 DISDAR,真心希望他能做出改变世界的产品来。优秀的工作总是令人着迷,在第一次看了SIGGRAPH上的演示视频后,我就告诉自己,我要知道它的全部。大约两年之后,我才实现了 Mathias 论文里的算法流程,并开源了草图检索引擎OpenSSE。这是一个基础的框架,目前只对外提供了一种特征提取算法。希望草图检索不再神秘,更希望感兴趣的朋友能不断的改进,一起把它做成产品。

  • 常用视频转接口

    求知若饥,虚心若愚 (Stay Hungry, Stay Foolish) 作为一个资深的月光族+剁手党,终于在双十一(光棍节)的最后一分钟,花光所有存款,入手了一台U2412M,光荣地为571亿尽了绵薄之力。今天快递哥哥就以惊人的速度将其送到了我手上,令人抓狂的是,自带的线没有一根是能用的。于是百科了一下,记录在此,献给和我一样写了好多年程序,也装过很多台电脑,却叫不上接口名称的人(有图有真相哦)。

  • Recognizer configuration on CentOS

    I usually forget some things. Today, I reinstall my centos system and configure recognizer on it (Recognizer is my online version demo, powered by OpenSSE v1.10. You can get an offline version on my Github). This work actually took me two hours, it’s unbearable thing! So, I decide to record.

  • 整个世界清静了

    除了兴趣,做什么事情都需要一个理由。

  • 《Python源码剖析》读书笔记

    从Python开始,向动态语言迈进。