LogStash的调试

在用LogStash做日志处理的时候,几乎都需要进行许多的调试,主要是针对Filter。而LogStash是运行在Jvm上,意味着每一次的启动都需要耗费大量的时间,许多教程文章都说推荐使用stdin/stdout,从 command line 输入,然后将输出打印到控制台来输出。LogStash也提供了配置文件重载功能,期望场景是:从命令行输入,然后观察输出是否符合预期,如不符合则修改DSL的配置,然后再重复前步骤。但问题是,stdin方式不支持配置重载。

GitLab Shell如何通过SSH工作

GitLab访问Git仓库

首先回顾GitLab的Git仓库四种访问方式:

  1. git pull over http -> gitlab-rails (Authorization) -> accept or decline -> execute git command
  2. git push over http -> gitlab-rails (git command is not executed yet) -> execute git command -> gitlab-shell pre-receive hook -> API call to gitlab-rails (authorization) -> accept or decline push
  3. git pull over ssh -> gitlab-shell -> API call to gitlab-rails (Authorization) -> accept or decline -> execute git command
  4. git push over ssh -> gitlab-shell (git command is not executed yet) -> execute git command -> gitlab-shell pre-receive hook -> API call to gitlab-rails (authorization) -> accept or decline push

四种方式都有GitLab Shell的参与,但不同过程GitLab Shell发挥了不同的作用,并且它并不是一个整体的服务,而是由一些子命令组合而成。HTTP方式的Git操作,经gitlab workhorse直接交由Rails应用处理,然后通过HTTP协议交换数据,对于git的操作有三条路径:Gem包Rugged、Raw Git命令或者Gitaly,push/pull一般只跟后两种有关,GitLab Shell充当的作用仅仅是git hook的作用。

Python打开类

Ruby可以直接打开一个已定义的类(模块),打开与定义与其他语句没有本质区别,第二次使用class关键字之后,之后的语句就是进入这个类的封闭作用域内进行一些操作。

在Python中,类只允许一次有效定义,每使用一次class关键字,都作为一个独立的定义类操作。

荒原

前几天把域名又续费了一年,算算有博客已经许多年了,可能我这里应该要有一些什么感慨,但是我想不出有什么可以感慨的。

时间真是个可怕的东西,博客也好,其他的什么事物也好,消亡或者破落都可能只是生命中的一部分。有时候遗忘是一个好选择,有时候留下是一个好选择。留下的是什么,遗忘的又是什么呢?其实最后,发现最初坚持留下的东西可能就是一个瘤,腐烂在生活。