搭建 NPM Proxy

工欲善其事,必先利其器

背景是公司内部服务器是网络隔离的, 但是要做自动化构建、测试等,通常都需要从外部拉取依赖。所以,我又要搭建内部的镜像源了。(为什么说又呢。。。)

毫无疑问,是要用到一个服务器专门做镜像源的服务器,它有特殊的网络策略,内网的服务器可以和它连通,用作内外网的转发,以下假设使用 Nginx 做反向代理。

美区Apple ID终于绑定PayPal成功

此文作记录,可以参考。不是教程。

一开始以为自己的PayPal是美区的(因为是在贝宝出现之前注册的)绑定了招行MasterCard,然后直接绑iTunes,卒!

  1. 解绑招行MasterCard,新注册了美区PayPal,绑定卡,然后去绑定iTunes,卒。
  2. 尝试购买gift card,卒!(估计是同一张卡,更骚的是,两个账号我用一样的密码,美区PP的账号是用的国区解绑下来的邮箱)
  3. 发了邮件给PayPal,估计石沉大海,没有任何回应。

  1. 隔了几天登录PayPal,说我账号安全风险,然后改了密码(这回和国区不一样了)
  2. 然后发现 https://www.paypal.com/mem-number 这里还能验证一遍信用卡,于是验证。按照网页提示操作,然后PayPal会发起交易$1.95,看到银行的交易提醒信息交易商户为 PP*0000CODE...0000 就是认证码。
  3. 然后去绑定Itunes,提示需要电话或短信验证,实际上两个都会提示“Sorry, we couldn ’ t confirm it ’ s you”。
  4. 然后维基百科 了$1,过了一会儿,再尝试绑定,成功了!

前后过程一周多。

无可奈何的页面增强方案

如果有一个大型的 Web 程序,需要对其进行一些使用上的改进,但有时候又需要跟踪上游的更新;需要保持其稳定性,不能频繁地部署;更重要的是,没有足够的时间、人员资源去进行二次开发。 如果说只是更改页面的样式或者体验性增强,可以通过浏览器插件来做到类似客户端的效果,而且有更大的权限去做更多的事情,但是可能没有办法去令到每个人安装这样的插件,特别是Chrome收紧了安全策略之后。 该怎么做呢?

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的作用。