Welcome to

快雪Tang

全新的,从头来过,永未竭止,惶恐地

blog重新有效

最近一段时间,blog遇到很多问题,一面是服务器不对了,要换, 实际上一直不满意wp也想换,但又没精力 然后是服务器上的配置一直不对, 然后是SSL证书不对 再有备份和同步不对 不过这些都过去了。 跑起来了。 如果有可能,会一直跑下去的吧。 以后还是会写点,或者收集点的不。

Read More

新年第一天

新年的第一天,起的很早,昨晚睡的也早,没有的熬夜的兴趣,早上的司机说,一把岁数了没兴趣熬夜了,半夜有业务也懒去做,于是笑骂之,原来这样突出年纪的也是一种罪过。 不管怎么说,照例立下志愿吧。……。但是倒也不能说在这里。 反正去年的计划,勉强算是完成了。什么事情都要量力而行,不可能一来立个志向说我要出人头地,然后就能了,那就是搞笑了。 完成了,实际上心里面非常的高兴,有人说,此时找不到朋友分享的人的人生是悲哀的,我想我并不至于悲哀。有人说的,我向来也并不感兴趣。  

Read More

shell redirects

strip stdout output, and redirect the stderr output to stdout: openssl s_client -showcerts -connect example.com:443 </dev/null 2>&1 1>/dev/null merge stderr to stdout, and strip all of them: openssl s_client -showcerts -connect example.com:443 </dev/null 1>/dev/null 2>&1    

Read More

考虑更换这个blog

  • Post By:
  • Date:
  • Category: 技术

考虑去掉wp,这个blog或者换成别的工具或者平台来写底层,采用Markdown语法,实在是受够了wp的编辑器了。

Read More

Input 字体,程序员专用,自定义

  • Post By:
  • Date:
  • Category: 技术

http://input.fontbureau.com/download/ 这个字体可以自定义,所以最推荐。 然而不支持 Ligature 算是很遗憾了的。

Read More

Vagrant 扩容虚拟机硬盘

这是个老问题,而且也并不限于Vagrant box环境,实际上对于Virtualbox环境来讲是通用的。 针对Vagrant – Ubuntu 环境 最简单的办法适用于Ubuntu虚拟机。Virtualbox – Ubuntu虚拟环境在这方面最为省心。下面用Vagrant box的序列来讲解如果超简便地随心所欲扩容。 假定你已经创建了Vagrant下的Ubuntu虚拟机实例: vagrant init ubuntu/xenial vagrant up vagrant ssh 当虚拟机启动时,你会查看到ubuntu的box所带来的是一个10GB的系统盘,现在我们要扩容它到40GB,首先还是进到Vagrantfile所在的目录用 vagrant halt 关机,然后在virtualbox app的界面中选中对应的虚拟机,进入设置-存储页面,找到vmdk磁盘镜像文件所在的位置,然后用命令行进入那个文件夹,例如:`$HOME/VirtualBox VMs/demovm_osdd_1496389870606_49381/ubuntu-xenial-16.04-cloudimg.vdi` ,现在我们开始调整镜像文件: VBoxManage clonehd ubuntu-xenial-16.04-cloudimg.vmdk ubuntu-xenial-16.04-cloudimg.vdi -format VDI VBoxManage modifyhd ubuntu-xenial-16.04-cloudimg.vdi –resize 40000 现在我们建立了一个原镜像文件的副本,但是是vdi格式,并且调整了镜像的尺寸,整个过程耗时不多,非常有效。 下面就是在virtualbox中该虚拟机的设置-存储页面中,用新的vdi副本替换vmdk的镜像文件就行了。 然后就可以vagrant up && […]

Read More

vagrant 网络配置

vagrant 使用一个 ruby 语法的配置文件:Vagrantfile。 这个配置文件可以通过默认启动的方式自动生成一个。通常的教程会这么讲: # 新建并切换到一个工作目录 mkdir /dev && cd /dev # 拉回box镜像(略) vagrant box add ubuntu/trusty64 # 使用想要的box进行工作目录的初始化,这个过程中将会创建出一个新的Vagrantfile,并且你可以在启动虚拟机前修改它。 # 同时,如果box尚未存在,这一过程中也会尝试去拉取box;不过大陆还是省了吧,具体我不介绍了。 vagrant init ubuntu/trusty64 # 启动虚拟机 vagrant up # 进入虚拟机 vagrant ssh 通过上面的缺省步骤,你可以新建一个ubuntu 14的虚拟机,并且具有NAT网络配置,所以进入虚拟机后不仅能够正常上网,也能访问宿主机(IP)。 Vagrant所支持的网络模型实际上是依赖于Provider的,多数情况下采用Virtualbox作为provider时自然也就是支持virtualbox的典型网络模型:NAT,Hostonly,Bridge以及Internal。 下面摘抄Ubuntu论坛中的帖子关于这些网络模型的表述: 第一种 NAT模式 解释: […]

Read More

今天发了一个consul tags工具

缘由 因为consul都已经0.8.0了,还是没有动态修改tags的功能(这是一个老生常谈的问题了,不过consul很坚持,哪怕PR都已经做好了,只等着动动拇指了,也还是不行)参见修订,通过api去做的话,又会超级繁琐和比较没办法,所以做了一个工具去处理tags的添加、删除;进一步的,提供一个翻转的功能。 consul service能够带有一组tags,consul的编程接口和API都能够通过tags来筛选services,因此我们通常会将一个服务的实例集群的角色也提供在tags中,例如 role=master,type=disk,rw=readwrite,等等。这时候 LoadBalancer 就能够通过筛选tags来获得可用列表。 例如向 redis 服务发出 rw=readwrite 筛选条件后得到的可用实例表经过 LoadBalancer 处理后对业务层可用,这样业务层就可以写入键值;反过来筛选 rw=readonly 得到的实例表,业务层就可以读取键值,通过 LoadBalancer 附着一个 ReadWriteSpliiter 的架构设计,业务层实质上可以透明地获得负载均衡后的 redis 服务,并且该服务内部隐含地完成了读写分离的 devops 架构。 类似的,DB也可以采用这样的设计方案。 话说回来,也不必鄙视consul坚决不提供tags修改功能或者在service definition中附着一个子K/V,两者各有各的问题,而集中使用单一一个全局的K/V事实上也是相当正确的做法。然而不符合直觉啊,为什么大家总是要想reload一个新tag,而不愿意使用K/V呢,甚至愿意放弃分布锁也要改tag?这是个很严肃的问题。 key+问题 无论如何,回到我们描述的那种策略中,那么这里就存在一个问题了,consul很难动态修改tags,这样的架构设计就难以落地了。 consul确实准许重新注册相同id的实例并能够在这个场景中正确的设置到新tags集合。但那是针对string,而不是key=value。 这时要简单地把key-value应用进去就不那么便利了。不过还是可以有方法。 一种方法是对该设计进行一点点微调,采用 consul 的 KV Store 来保存服务实例的角色,并在高可用切换场景下更新该key。 这个方法成本低廉,而且实际上利用ZooKeeper,Etcd来做服务发现的案子,谁又不是这么做的呢?所谓的成本低廉,是因为 consul v0.6+ […]

Read More

gitlab-ce + ci runner meets wildcard ssl cert and unknown authorities

升级到新版gitlab-ce后,所有runner都失效了,于是升级runners后再次register,此时,由于刚刚为gitlab-ce服务器启用了我们的通配符证书(就等8.17出来后的pages功能了),于是runner们都注册不了了: # gitlab-ci-multi-runner register Running in system-mode.                                                                   […]

Read More

Slack webhook integration and gitlab event notifications, bulk enable them

在设置了全局的 Service Templates 之后,有的 webhook 插件并不能自动应用到每个项目,需要你在相应项目的service templates中去添加一次和启用。例如 SlackService 就无法在每个项目有pipeline或tag时发出通知。 为了自动使能这样的 Service Template 到任一项目,需要登录SSH到gitlab服务器,然后直接操作 pgsql 数据库: Chris Schmidt 是这么提供这一hack方案的: Open a shell on the gitlab server, and execute the following command (note, you must be logged in as a user who has […]

Read More