-
几个 Linux 小工具
最近很忙, 有几个月没写 blog 了. 顺便写一下最近用到的很顺手的几个小工具, 当然, 都是跟 Linux 相关的. Mutt 是个 CLI 界面的邮件工具, 我主要用它从程序里发邮件. 安装 mutt 很简单, 直接 apt-get install mutt 即可. mutt 的设置可以写在当前用户的”家”里: cat ~/.mutt/muttrc set smtp=”smtp://my.server.com:25/” set from=”No reply <[email protected]>” 发送邮件的命令相当简单, 很容易和其他软件”串”到一起: echo “This is the message” |mutt -s “This is the subject” -c “[email protected]” -a /tmp/attachment.txt /tmp/att2.txt — [email protected] Httpie 是手工调试 HTTP…
-
Distribute cron jobs to hours/minutes with Ansible
This is a handy trick to run a batch of cron jobs on different hour/minute combination so they won’t collide with each other and cause some pressure on the server. The key is to use `with_indexed_items` and Jinja2 math: – name: ansible daily cronjob {{ item.1 }} cron: user=ansible name=ansible-daily-{{ item.1 }} hour={{ item.0…
-
MySQL/ Aurora to Google BigQuery
Google BigQuery(BQ) is Google’s column storage, it’s super fast when you need to query over many gigabytes of data. BQ defaults to utf8, so it makes sense the tables in MySQL/ Aurora are also utf8 encoded. I use Python and SQL Alchemy to load data to BQ. It’s a waste for SA’s ORM features but…
-
Change Ganeti's Network Configuration
“Ganeti is a cluster virtual server management software tool built on top of existing virtualization technologies such as Xen or KVM and other open source software. ” This is how I changed the secondary network configuration using Ganeti command line tools. 1, First, say I need to change the network from 10.0.0.0/24 to 10.1.0.0/16, I…
-
望子成龙
貌似我只是一名很普通的家长,随着笑笑渐渐长大,我也不自觉的开始有各种期望:希望她学习好,希望我们感兴趣的事情她也一样感兴趣,希望我没做到的事情她将来能够做到,等等。 有了期望,就难免有失望。因为总要有一些优秀的“别人家的孩子”,让家长们不安和恐惧。这个我也不例外,偶尔会给笑笑施加压力,让她更“努力”。有一天,我看到了Linkin Park的歌曲 Numb(麻木)的MTV,故事里的女孩子喜欢哥特风格,酷爱绘画,在数学课上偷着画画结果被老师训斥,然后在家里她的妈妈不停的向她抱怨。我很容易就对号入座了,因为笑笑也很喜欢绘画,很可能她也会在数学课上偷偷画画,因为她的算术一直不是很好。很难说我没有抱怨甚至训斥过笑笑。 也许这就是本能吧。然而本能都是对的吗?如果是的,那教育也就没必要存在了,不是吗? 希望在将来的日子里,我们能有一个平和的心态,多鼓励,少训斥。我们做的不好的方面,很可能我们的孩子也不会很强。如果一个酒鬼爸爸训斥儿子酗酒,那是不是很理智呢? 至于成功,我当然希望孩子是成功的。但成功的标准是什么?身心健康又功成名就自然最好,若是没这个天份,只能选择其一的话,那还是身心健康吧。
-
小试 Amazon Aurora
一晃儿在新公司工作了3个月了, 忙的时候时间就过的好快! 刚开始工作时第一个挑战是将核心数据库迁移到 Amazon Aurora 平台上。当时我除了知道 Aurora 号称 MySQL 的替代品,对其没有更深入的了解。现在回顾一下迁移过程当中遇到的困难已经解决办法。 首先,Aurora 是AWS管理的数据库服务,也就是说你没有机会 SSH 登录进去窥探一番,甚至连 ping 都不行。你可以通过 AWS 管理界面对 Aurora 进行设置。你想用 root 用户,那更不可能了。如果你偷懒,在MySQL 上全用 root 账号,那在迁移之前必须改为普通用户账号。Aurora 会提供一个 master 账号,但那也远远不是 root。相信这一点会让很多人不习惯。 AWS 提供一个数据迁移工具叫做 migration tool,奇葩的是居然是Windows 系统 + Java(后台)+ Flash 界面。貌似是面对那些只喜欢点击不敲命令的用户的。这东东搬运些小数据还可以,太大的表例如我要搬的一个4亿条记录的它就搞不定。 由于没有 root 账号,所以更改配置文件 my.cnf 和在线修改系统变量都不要想了。在 AWS 管理界面上有 Parameter Groups,可以看作前者的替代品,很方便,但貌似对系统变量的修改不是实时生效的,即便勾选了“modify immediately”也不是。不知道是不是个瑕疵。 还有很多 root 专有的特权,例如“kill”也要用 call rds.mysql_kill 来替代。 多了这么多局限,自然也是有原因的,对于在…
-
再见 2015
过去的这一年是经历丰富的一年,不像2014一帆风顺,2015是难忘的。我已经记录了二宝住院的事,所以就不重复了。其他值得一提的是工作上的变动。 二宝生病以后,我的生活完全乱了:每天忙碌,焦虑,并感到无能为力,最后一点也是最糟糕的。而这一切也不可避免的影响了工作上的表现。在二宝临近手术的几天里,我照看的服务器凑热闹的出了问题。公司上任不到一年的总经理对这次事故的态度让我很受伤,本来就承受压力的我突然觉得这一切不再是我想要的了。 巧合的是在我熬过一个上午的工作会议之后,曾经有过联系的一个猎头打来电话,问我想不想换个工作。我犹豫了一秒钟,肯定的答复了他。就好像谚语说的,一扇门对你关闭,另一扇门会对你打开,几天后我获得电话面试的机会,然后是正式面试,然后就拿到 offer,似乎是计划好的一样顺利。 前技术团队的其他几个哥们也前前后后的跳槽了,所以我的不快经历貌似不是个案。那位经理人可以反省一下自己了。 新工作在CBD,再想开车上下班就有些奢侈了,不过正好体验公共交通了,按照时间表安排出行,我发现不比开车慢很多,而且路上可以看书,当然不是每天都有精神头看的。最好的是开车到车站只有7公里,加油一次能开一个多月,更绿色出行了。 回顾这一年,自己欠了很多技术债,一些新技术都还不了解。新的一年有的忙了。 🙂
-
感谢父母
我父母在我这住了差不多一年,前些时已返回国内。这一年里他们休闲的时候并不多,老爸老妈在后院实施了很多基础建设项目,菜园,花坛,草坪等等。临回国之前,老妈更是恨不得把未来几年的菜都种上了。 二宝住院期间,老婆陪住那是必须的,我则工作半天再去医院陪护半天。天黑后才到家的我,庆幸父母在身边帮忙,笑笑有人接送上下学,我还能吃到现成的饭菜。 万幸的是二宝赶在父母回国之前出院了,否则我估计就根本无法工作了。 虽然现在不必担心孩子闹会吵到父母休息,但很多事情就只能我们自己做了。一开始我们还真有点乱了阵脚,上班,家务,两个孩子,一切靠我们自己了。当初笑笑出生后,我们有她外公外婆帮忙,所以现在是我们真正做到自己带孩子的时候了,累,但也是珍贵的体验。我们因此才能够体会4位父母受过的累。 祝爸爸妈妈新年快乐!