Author: admin

  • Install OS X Sierra on Proxmox

    My Proxmox running on an old Intel i7 has been upgraded to the latest: 4.4-5. When started the Sierra installer prepared following the above guide, the menu bar was stuck at “Language Chooser” which prevent the launch of DiskUtility or Terminal. The issue isn’t new and has its ticket here: https://github.com/kholia/OSX-KVM/issues/26 But I didn’t find…

  • 尝鲜: Amazon Echo Dot

    圣诞节过后, 人们陆续的恢复上班了. 老板从美国给每个员工买了个 Amazon Echo Dot 作为礼物, 而这货还没有在土澳开卖,因此使用起来就有点别扭。 首先不管是 iPhone 还是 Android 手机,Alexa app 都不是可见的,除非账号所在地是在美国。我可以找个闲置的手机或者直接从第三方网站下载一个不受地域限制的 Alexa,但我发现通过浏览器设置并不需要假装在美国。我在浏览器里访问 Alexa.amazon.com,用自己的 Amazon 账号登录后,就可以安装提示设置我的 Echo Dot了,类似 Google Chrome cast 的设置过程。 Echo Dot 能做的事情很多,我就不重复了。目前我发现还不能把土澳的地址输入给它,因此天气预报基本上没法用了。听广播也是一样,貌似只能听美国的,不过美国的广播也还不错。由于家里没什么其他智能设备,例如灯泡,空调什么的,所以智能家居的功能我还没法测试。  希望 Echo Dot 早日正式登录土澳。当然还有 Google Home。

  • 快车道上的2016

    我们的2016年仿佛在快进模式中完成,简单回顾一下吧: 终于我们去了传说中的大洋路和12门徒!景色无比美丽,但苍蝇却着实多,估计是托附近众多农场的福。 工作方面,这是我丰收的一年。首先我完成了TB容量的数据库在线迁移,从美国加州某数据中心的服务器搬到AWS Aurora,让同事们基本上告别了数据库过载造成的麻烦,没用“完全”一词因为 Aurora 有时候也会被放倒。接下来的一个大项目可想而知,把私有云上的所有服务器搬家到AWS EC2。这两个项目就花了几个月,而且是我的前任以及前任的前任都没搞定的事情,因此我小小的有点自豪。有趣的是之前我们要求那个数据中心的工程师搭建一条数据中心到AWS的VPN专线,结果迟迟没有完成,这也是老板跟他们翻船的主要原因。后来我用了半天时间连读文档带执行就完成了AWS到公司局域网的VPN,我为自己的学习能力又稍微的自豪了一把。 另外一个大项目就是大数据仓储。公司之前使用 AWS Redshift,但性价比达不到要求。于是我接受了挑战,试用Google BigQuery,并把现有的为Redshift编写的程序和SQL改写一遍。改写还不算难,困难的是让新程序能把数据处理结果上传到BQ并保证两边的数据一致。比较数据也不难,做diff就是了,但30+TB的就不那么随便了,一旦一个月有那么几天的数据对不上,就要一个个环节的去排查。经过几个星期的排错,最后数据终于完全吻合了,100%吻合。BQ的优势相当明显,特别是对于不规律的大数据计算,用多少就付款多少,不需要评估CPU什么的。 其他琐碎的事情就不提了。 两个孩子各有进步。洋洋自打出院以后就很努力的吃饭和睡觉,体重慢慢接近中等水平了。笑笑的NAPLAN 考试成绩意外的好,因为我们俩关注她学习的时间无可奈何的很少。老婆给笑笑找了美术老师,一切都被她计划的很好,我给她点赞 🙂

  • A Simple Python IO Trick

    I thought using Python’s gzip is quite straight forward, however the IO performance almost doubled with an extra BufferedWriter: import io import gzip def export_to_json_gz(schema): json_file = “test.json.gz” with io.BufferedWriter( gzip.open(temp_dir + json_file, ‘wb’) ) as gzfile: for row in stream_table_data(schema):       ujson.dump(row, gzfile, ensure_ascii=False)       gzfile.write(‘\n’) Now the bottle neck…

  • 再见了,我的单反相机

    今天我把我心爱的Nikon D7000数字单反相机卖了,原因一会儿再说。D7000是我的第二台数字单反,之前为了给笑笑拍照片,我在2009年买了佳能500D,尽管不是很贵但其表现基本上是对不住那价钱,于是我在2011年卖了500D后买D7000,终于如愿以偿把小朋友的眼睫毛拍的很清楚。 给相机装箱打包时,由于我一直保留着原包装盒,感觉就像时光倒流回5年前打开包装的那一瞬间,喜悦和兴奋历历在目。我又想起我的第一台单反相机,早在28年前爸妈买给我的珠江S201,貌似是当时一款minolta的翻版。当初从小学到高中,班上所有重要活动的拍照任务都被我垄断了,估计同学们应该还留有我给拍的照片吧。 然而时过境迁,最近我确切的感觉到了单反相机已经是昨日之花,很多专业人士已经开始抛弃单反拥抱微单了。说到微单,这翻译实在是不敢恭维,英文名字是 mirrorless 就是“无反”,没有了单反标志性的反光镜。翻译成微单似乎能让有单反情结的人容易接受些,但很不厚道。 我准备换 Sony 的 a6000,指标接近准专业,光学传感器和D7000一样大,但整体却轻巧了很多,各种数码新技术例如 WiFi,NFC什么的更方便使用。 总结一下无反的优势: 1,一样或者更多的传感器像素数,体积小巧 2,更快的自动对焦 3,更快的连续拍照速度 4,LED显示屏所见即所得 劣势: 1,镜头的选择范围稍小 2,由于长时间使用LED显示屏取景,更费电

  • 花, 花粉以及花粉过敏

    今年猫本的冬天恐怕是最近几年最阴冷的一个,十天里能有八天在下雨。好在我们一直坚持运动,跑步,打羽毛球,全家人都很健康。好不容易的到了八月,也就是冬天的最后一个月了,我开始出现了些症状,头昏脑胀,黄鼻涕偶尔有血丝,思维也有些混乱。 这肯定不是感冒,于是我开始从最吓人的病症开始对照。鼻癌?没那么严重。脑癌?更不像了。一般来说我坚持一周如果病症不见好转我就崩溃了。后来一个周一的上午,我请假去看GP(类似门诊), 只是为了搞清楚自己的状况. 遗憾的是我貌似一切正常: 体温, 心跳, 血压, 呼吸, 都挺好的. 医生建议我清洗一下鼻窦, 如果情况不见好转, 再服抗生素一类的药物. 之后一次跟邻居闲聊, 邻居问我最近如何? 我就说不怎么样啊, 又是鼻塞又是头疼的, 医生还说不准是什么问题. 邻居大哥指着街边几棵盛开着金黄色小花的, 仿佛超大号菜花的 Wattle 树, 说, “我每年都有可能有类似的症状呢, 我怀疑就是这些树的花粉闹的. 你看起来也是花粉症(Hay Fever), 吃点 Claratyne 就好了.” Claratyne 是土澳药房里很又名的缓解过敏的药物, 不是配方药因此可以自行购买. 超过我的期待值, 这药真的很对路. 自从我每天早上吃一片以后, 过敏状况完全消失了, 脑子也清醒了, 能集中精神思考问题的感觉真是太好了. 体力也似乎恢复了, 我不再感到睡不醒. 和同事聊到 Wattle, 他说, “不会吧, 我到 Wattle 嘉年华也没感到过敏呀.” 我想的却是, 这花还有个自己的活动呢… 仔细一看, Wattle 有嘉年华, 因为它是土澳的国花. 我顿时后悔来到了这个国家, 每每走过金灿灿的…

  • 几个 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…