Yukang's Page

使用 exercism 来练手学语言

有时候我们想学一门编程语言,但是光看看书和代码用例总是找不到感觉,这时候我们应该尝试写点不短不长的程序片段,可能是一个函数,或者是实现一个简单的算法。最近我发现这个叫做exercism.io的网站不错,自己也在闲余时间在上面看看。 这里支持30多种编程语言,每种语言大概有80个左右的小问 .....
阅读全文

从 Jekyll换成Hexo

昨天看到自己的 Blog 在移动端显示丑死了,所以想着优化一下,找一个 mobile first 的风格试试。顺便把 blog 从 jekyll 换成了 Hexo。最后找到这个 hexo 的主题非常顺眼,便拿来用了,感谢yanm1ng为大家提供如此优秀的主题。回想起自己之前用过搜狐博客, .....
阅读全文

Kong源码分析: 事件

Kong的缓存更新很多依赖于事件,而事件看起来是相对来说比较复杂、也是最有趣的一部分。 worker模型假设我们对Kong做了一个更改的请求,这个请求通常是通过admin_api这个路由处理的。也就是说最终执行数据库操作的动作是在一个Nginx worker进程里。因为操作了数据库所以我 .....
阅读全文

Kong源码分析: 缓存

Nginx里的缓存使用在Kong里面我们缓存的内容大部分是配置,不管是API本身的配置还是插件相关的配置,缓存之后就存储在内存中。 Kong里的缓存基础代码在tools/database_cache.lua文件里面。这里又分两种类型的缓存,一种是shared dict, 一种是使用lua .....
阅读全文

Kong源码分析: 插件

插件的强大之处在我自己使用 Kong 的过程中,最方便的还是在于 Kong 的强大的插件机制。 Nginx 本身提供了提供模块开发机制,但是相对来说更底层一些,并且需要使用 C/C++ 来开发,对于很多开发人员来说 Nginx 仍为一个黑盒。OpenResty 集成了很多好用插件,并提供 .....
阅读全文

Kong源码分析: 启动

Kong的初始化过程安装好Kong之后我们是用命令sudo ./bin/kong start -c kong.conf -vv来启动。其中kong.conf为配置文件,-vv选项打印出一些重要信息展示出来,方便发现问题。 可以看到./bin/kong是一个脚本,是用的#!/usr/loc .....
阅读全文

Kong源码分析

缘由最近在工作上接触了Kong这个开源项目,因为我们内部做微服务化重构,所以导致系统相互间通信比较复杂,如果想做一些涉及各个系统的功能就很困难。比如我们前段时间实现的灰度系统就把人折腾得很惨。因为我们的设计中有一些http header 需要在各个系统之间传递。每个项目的 Nginx 里 .....
阅读全文

小说推荐

之前我用过一段时间 Kindle,因为没有使用保护套导致在书包里面被压坏。而后一两年用 IPad 看了一些电子书,始终觉得稍微有些笨重,而且看久了眼睛不舒服。前段时间在 z.cn 上瞎逛又有了买个 Kindle 的欲望,拿到手后又好好找了一些电子书比较多的网站。目前使用最舒服的还是 h .....
阅读全文

OpenResty使用总结

OpenResty最近用OpenResty比较多,除了一些业务逻辑的实现也做了AB组灰度相关的实现。OpenResty是在Nginx基础上做的扩展,应该算是国人开源项目中很成功的一个。在做的过程中写了不少Lua代码,写Lua代码的体验就是库好少,语言好简单。 OpenResty lua编 .....
阅读全文

rubytt 续

前段时间继续做了 rubytt 这个小项目,遇到一些问题。 我想做一个自动检测未定义变量的功能,发现如果只是做静态分析,是很难做出来的。还有涉及到各种 gem 包的分析,这些工作量较大。可以看出在这个PR里我甚至用上了一些硬编码。 然后我想做一个自动分析代码复杂度的功能,比如某些函数太长 .....
阅读全文
Prev Next