重剑无锋


  • Home

  • Archives

混沌?馄炖?

Posted on 2018-11-28

闲来没事,看了下 gocolly,练手搞一个爬虫,搂了一遍最新的腾讯官网的招聘信息。
这种不需要登陆的网站是最容易爬到的。
很简单,还是给自己小结过一下。

因为无须登陆,所以这条虫子几乎是官网的基础的例子
使用 Chrome 浏览器打开腾讯招聘官网, F12, 随便在搜索框里面输入一点比如 go, 就进入一个分页的搜索结果列表页。定位到招聘的职位那几栏,发现是用的 table 框起来的。找官网的基本例子依样画葫芦。

1
2
3
4
5
6
7
8
9
10
c.OnHTML("#position tbody tr", func(e *colly.HTMLElement) {
writer.Write([]string{
e.ChildText("td:nth-child(1)"),
e.ChildText("td:nth-child(2)"),
e.ChildText("td:nth-child(3)"),
e.ChildText("td:nth-child(4)"),
e.ChildText("td:nth-child(5)"),
e.ChildAttr("a", "href"),
})
})

结果爬取的结果除了想要的那些 tr 行之外,表头和地步的分页的数据也给弄进去了。
这不是我想要的,决定过滤一下。于是改进一下小版本的只搂需要的选项。

1
2
3
4
5
6
7
8
9
10
11
12
13
c.OnHTML("#position tbody tr", func(e *colly.HTMLElement) {
itemClass := e.Attr("class")
if strings.EqualFold(itemClass, "even") || strings.EqualFold(itemClass, "odd") {
writer.Write([]string{
e.ChildText("td:nth-child(1)"),
e.ChildText("td:nth-child(2)"),
e.ChildText("td:nth-child(3)"),
e.ChildText("td:nth-child(4)"),
e.ChildText("td:nth-child(5)"),
e.ChildAttr("a", "href"),
})
}
})

只爬一页不够啊,我需要全部的招聘信息,然后再加一下获取下一页的链接。让它爬完一页之后接着下一页,直到爬完所有的招聘。

1
2
3
4
5
c.OnHTML("#next", func(h *colly.HTMLElement) {
t := donain + h.Attr("href")
log.Printf(t)
c.Visit(t)
})

这样一来就拿到腾讯官网全量的数据了。
还是向 shawjia 学习,多提交一些自己的开源项目, 哪怕是最基本的练手的项目。
今天是个开始,这顿 馄炖 就是个见证。(一直不知道开始的项目应该叫啥名,索性就处在混沌之中吧。)

Emacs as golang IDE

Posted on 2018-11-27

IDE

据我观察,很多程序员们喜欢 IDE 的原因在于工程化全局查询,函数定义, 复制粘贴, 其他的模块化插入代码块,是没有太多吸引力的。

作为 Go 开发 IDE

emacs as golang ide 这里有基本的配置。
godef 安装一下可以解决函数定义的出处查找问题。没事就来一下: C-c C-j, 立马追到底。包括 go/src/ 目录也能追杀到底。
查找使用 Emacs 本身的查找 find-grep 命令快的不行, 老方式: Alt+x find-grep 要查询的关键字 。效果图如下:
emacs-command

从上面的效果途中可以看到很多中查找方式,如果要在当前工程目录找,可以使用 projectle-grep 这个命令。
解决了这几个问题。Emacs 用来写代码不是一般的爽。有一种上瘾的感觉。特别是 spacemacs 兼顾了 VIM 与 Emacs 两者的长处。不多说了,先让代码飞一会儿!

使用org-mode管理自己的日常计划目标

Posted on 2018-11-25

org-mode杂事

使用org-mode有些时日了。整理一下最简单的日常使用方式。

自助服务

因为我是用的是 spacemacs, 所以如果是 org-mode 相关的指令,是可以直接使用 Alt+X 调起这些命令去执行的。或者直接 Ctrl+h org 看下帮助文档。
org-help

GTD

GTD就是Getting Things Done。以目标为导向去完成计划。可以配合番茄闹钟工作,更有疗效。

我的org-mode在干什么

我每天的计划是每天做三件值得做的事,外加一个小结。其中每件事按照A、B、C分三个由高到低的轻重缓急层级,并且设置开始做的时间点和截止时间点,完成时会补录结束之间。Like this:
my-org

keys

Here 有一篇文章教怎么在 Hero 的博客的 source/_post/对应文章路径 中 弄进来一张自定义的图片。

周末

Posted on 2018-11-11

双十一什么的

好像跟我没啥关系, 这一天花了50块钱,周末了,吃饭加水果。想买个Bose QC 35, 要2000+,AirPods 也需要至少1200+, 暂时算了。还没到时候。

写博客的理由

与其说是写博客的理由,还不如说是梳理自己思路的方式吧。不为谁看,谁不看。任凭自己的思路铺展开来,想到哪里,就写到哪里,不必像儿时的语文课作文,不必像高考的证明题,也不像大学毕业设计。总之,我现在想的是什么,就写什么。无需关心点赞,更不用管什么转发量。

近期锻炼侧重

由于脚髁的皮外伤还没有完全好,最近调整了锻炼的侧重比例, 增加了平板支撑的科目。人的身体的中心在腰腹部,所以需要将身体的核心位置练强壮一点。平板支撑锻炼的身体的核心肌肉群, 经过一段时间早晚锻炼,目前单次最长可以支撑到90s了。每日两次,每次三组,加起来一天差不多12分钟。

无惧野狐3段了

一年前,我还是野狐一段水准。9月份开始,对战野狐2段我已经有了超过70%的胜率了。10月份甚至达到过4段, 但是很不稳定,从2段上去,一段时间连胜,一段时间连败,反反复复,很不稳定, 所以还是3段中的水平吧。后来分析了一下,是复盘很少。目前腾讯围棋的绝艺复盘,已经开放给大众了。一天下两盘,可以收获4个积分,5个积分可以申请一次绝艺复盘, 查看了自己的一下胜率分布,发现赢的多数是我逆转的棋。进入了11月份之后,对战3段,已经有了60%的胜率了。但是我现在坚持一天最多下两盘质量局。希望多一点时间发现自己薄弱的环节,比如布局,贴身格斗。争取在年底前,能将棋力提升至4段中上的实力稳定线上。

行走

我个人感觉,自已最有想法的时候,往往是在路上。在行走的路上,一边走,一边由着思绪散开,漂流。任它们游走,旋转,重装,组合,平时工作日里面种种困顿烦扰的问题,随着路途的遥远慢慢蒸发,随着海拔的提升渐渐稀释,随着时间的运转徐徐淡色。我喜欢行走,到目前为止,我人生中的几次重大选择都是在极目远眺的行走时拿定主意的。
五岳中,还有西岳华山,北岳恒山,中岳嵩山没有涉足。年底前找个时间去一趟,看看。有个同事会问我,我看你那么喜欢去爬山,但是你说你,爬完回来也没啥变化啊。是啊,爬一座山,可能真的没啥变化的。但是我能出去看看别的地方的真实的存在,涨涨见识。突然想到以前看到的有个登上喜玛拉雅山顶的人说的:“因为山就在哪里”。“这能长什么见识,爬山就能长见识啊”? 我一时无语。好比看一本书,我很可能读完,会感觉没啥收获啊,那我下次还会不会读书呢?会。为什么?因为无论你觉得或者不觉得,我经历过的事情,会对我的认知,对我的世界观,人生观有一个看不见的作用。没法预料哪一个瞬间,你就想到曾见过的一朵盛开的蓝莲花,也没准哪一个时刻,就会浮现雪山上的石头缝里的一株野草, 也没准某个夜深人静的时候,就勾勒起野营时漫天的繁星。它们已经埋在我的记忆里,根植于我的血脉里。它们告诉我,岁月流逝,生命坚韧,星空浩瀚。而我见识过繁花的一瞬,我手抚过山巅上的流云,我迎过高空的日升日落。这就是我关闭朋友圈半年来, 真实的活过, 思考过。

十月

Posted on 2018-10-31

十月就这样过去了

国庆节期间一双拖鞋,两天,反穿武功山。
还是喜欢以前一边徒步一边记笔记好玩。那样能记录实时的真的感受。现在是拍拍风景照,发发群,吹吹水,就这么过去了。

第一次滑旱冰

月底时,部门组织的活动,人生中的第一次滑旱冰。摔了差不多十个狗吃屎。还把脚踝外部磨破了一块皮。搞得好几天没结痂。连游泳跑步也不行了。还是保护自己不周到, 以后得注意了。

定投

10月11号开始定投。开始管理自己的工资了。以前从来没有投资过,这次长期定投预计是2-3年。目前累计收益6.82%, 午餐可以加几个鸡蛋了。定投需要耐心,买到指数基金。买的是趋势,买的是国运。

开发业务

加班太多,领导找去谈话了。其实我完全没必要加班的。但是白天处理的杂事太多,而且需要#bug修复的多,主干开发白天时间严重不够。另外就是白天来得早啊,晚上7,8点回去,都记加班到10小时,11小时了, 这个怎么算了。

年底前定个小目标吧

年点前,开发一款能平台通用的应用产品并上线。
名字还没想好。初步采用 weex 来写。

记一个API20倍性能优化

Posted on 2018-09-24

同步

我接手的其中一个项目中,有一个核心的业务是提供用户信息同步功能。这个同步API后头还连着其他关联业务,比如创建账号,查询信息,下载信息等。

历史问题

这个业务历史悠久,主要是为各产品部门调用该接口,上传用户信息, 提供线上服务做支撑。而这个同步接口,从上线到目前为止,已经优化了35个版本!目前性能为: 同步26000个用户信息,耗时45分钟左右。调用方也是经常用到心里发毛。所以现在交到我手上了。

动手

  • 了解需求 沟通, 游走各个关口。 读源码, 画流程图。
  • 调查问题瓶颈, 监控系统(prometheus)分析响应时间,耗时。 断点设置,日志,数据库统计耗时。
  • 开会讨论, 讨论痛点,下决心,职责划分,争论方案。
  • 开会讨论, 下决心, 职责划分,争论方案。
  • 开会讨论, 定方案, 开发周期,拉一个架构师和技术副总监一起过。
  • 边写测试单例,边构思。
  • 开会, 了解进度,方案可行性。
  • 完成本地批量测试, 模拟客户端访问。引入 golang 自带的 pprof 工具。
  • 重构数据库, 优化表结构,加索引等。
  • 重构分支流程, 码代码。
  • 开发集中。中间又出几个问题,又来了几次会议,不断切遇到的问题,以及之前问题的盲点,逐一条出解决方案。
  • 合并
  • 单元测试
  • 压测

优化点

  • 数据库表调整,添加索引。
  • 同步阶段,断开一个占用耗时将近1/3的外部接口,将外部接口交互流程滞后执行。
  • 批量处理,单个用户的信息,批次查询,然后本地计算,最后批量入库。
  • 合理地利用goroutine。
  • 等。

效果

部署到测试环境, 26000个用户月50s内同步完。优化后版本同步速度获得约20倍质的提升!暂时做个笔记吧。这个版本部分工作,是在“山竹”台风到达那天完成的。还好人没事,凌晨从公司回到了家。
线上的性能,待我上线确认之后再更新。

小结

遇到问题,找到病因,对症下药,合理使用开源工具(比如 prometheus 和 pprof 在分析瓶颈中发挥重要的作用)。每一个解决掉的问题,都是我下一步前进的动力。

泰山观日出

Posted on 2018-08-27

出发

我愿追随自己年轻时的血气方刚,再来几次出发,远行。

半夜闹钟

上周六2018-08-25,怕半夜赶不上车,弄了3:00,3:30,4:00的闹钟。好在及时在第一波闹钟的提醒里起来。赶在4:20到了机场。

飞机

在这个城市四年了,我是第一次到这个机场。一开始我以为自己时间还是挺多的。但是只是好奇了几下这里候机的来来往往的人,心里暗暗感叹了一会机场的穹顶,一路从安检走到登机口,感觉绕过过了两个操场。
早上6:10的飞机。
头一次总飞机。那个心情真的是, 好爽啊。特别是一面忐忑着,一面又极其激动地坐着飞机,轰隆隆地在跑道上奔着,地面的草向后面越来越快的划退,奔着奔着,后背一靠,前头拔高,脚底感觉有一股厚实的板顶着,飞起来了!要上天了!

济南的夏天

热。

泰安的小饭馆

香,实惠的小菜。

泰山

泰山北斗,可不是比衡山难爬嘛! 十八盘。。。。。。, 给我多来几盘。

日出

山顶扎一小帐篷,租一军大衣。本以为可以好好地在石板地上睡到第二天至少4点吧。。。。。。, 谁知道凌晨1点之后,陆续地帐篷周边热闹起来,压根睡不着觉。打游戏的,聊天的,嬉戏的,吃东西的,喊冷的,哼小曲的,小孩哭闹的。。。。。。许多观日出的人不远万里的,赶来等日出的好日子。4点起来,想找个位置,附近的所有能站人的石头面,都被人占着了。。。。。。后来绕树丛里,钻爬到一处人少的稍险的高台上。占着。
5点半左右,出来了!
日出时,天际的云海光影和初生的圆盘, 真的是不可阻挡, 那种透射出来的光芒柔韧而坚实。三个山头的人禁不住齐齐呐喊一阵。各种手机姿势抬着,留下在泰山上的非凡的金色映像中。

趵突泉

三个大泉眼。

老舍纪念馆

那个老舍的房子好封闭!”济南的冬天”就是在这样的院子里写出来的吗?好怀念那个时代的人对天地人的感受。

在路上

不断行走,在路上。

衡山

Posted on 2018-08-19

衡山我来了

初次听说衡山,是初二时学地理, 要考试,背书,弄了个顺口溜:”东西南北中,秦华衡恒嵩”。而且,这五座自古为游人津津乐道的心目中的憧憬,到底是晚来得太久了。
这次跑往衡山来爬。并不是想扎人堆,而是想出来散散心, 走走,舒展舒展筋骨。

太庙

入乡随俗,上山前,到太庙烧一炷香,拜一扣佛。

南天门

西面大风夹着云雾沿着南天门的山脊,扇吹过来,将衡山一分为二。

祝融峰

到顶了。

累了

到过,这是起点。
过了,不想写了。

holiday

Posted on 2018-06-18

澳门半天(2018-06-16)

平日锁在一个笼子一样的办公室,今日看了半天书,心里烦闷,翻箱倒柜中,发现港澳通行证还要次数。于是买个 14:30 的船票一路从蛇口出发,往澳门去了。目标是观光塔。一路中有几件事蛮有意思的。记一下。

第一件, 奇怪的身边船客。

本来我的船票是二楼第二排靠窗的,结果有个穿厚外套的老者先到,坐到我的位置去了。等我上去示意他坐了我的舱位时,他说他想坐舷窗,要和我换。我想着照顾老人,那算了。原本我也想靠外坐,看海景方便些。后来他就一直用手机看信息去了。直到我中间拿出《区块链原理、设计与应用》的书看上一段时间。他趁我翻页时,要借书看看封面和目录,随手翻了下。然后眼睛一亮,说道:“这本书可不可以借我一分钟拍个照”?我有点楞,但马上回过神来:“行,你要想看,你先拿去看吧。没事,我回去可以接着看的”。他赶紧解释:“哦,那倒不用,我想借来拍几张”。“可以,可以。给”。我就看他那眼睛像瞄上一个猎物一样。拿着这书,快速翻着,拍了几张。然后按下一个语音按钮,对着手机发起语音来:“张秘书,我刚才给你发一本书的图片过去,你去下个单,……另外,调研一下,是否还有没有同类的书,照着订几套,。。。。。。先订10套,xxx级别以下的都让他们先学习学习。好吧。。。。。。”。有些其他的话就记不清了。总之,可以听出来,我后边舷窗的这位,可不是一个平常的游客!而且,仅凭船上一个游客看的书,他怎么就马上叫人下单去?这让我百思不得其解。可见这个人,对前沿技术或者对市场有着某种嗅觉。这个有点令我感到意外。

第二件,233米高空漫步。

在路上就很期待此次行程有所心理突破的。233米,我是奔着那个蹦极来的。车从桥上横渡海岸时,就远远看着这个观光塔了。塔身是个多变型,塔尖下方有一个圆环型观光台。有一侧斜拉着两条锁绳。坐电梯上去,透过玻璃门,看到地面逐渐下沉,心里开始打鼓了。到了58层时,靠着玻璃窗户,站在那些透明的板上,看着西面的车那么小,人影那么小。生怕自己掉下去了。蹦极的人,从上面双手伸展,打个十字,嘶喊着前倾倒下来,58层的人群围拢起来,一起探头出去看。哈哈,我的心里想:这些人啊。。。。。。
61层。正是各种活动的入口。拿来一张价格表。好贵!那个蹦极要4000多澳元!只有一个太空漫步是三位数的。780澳元。(出门如果没兑换,到了景点一律是 1:1 汇率兑换,略亏)
囊中羞涩,最后,只玩了一个太空漫步。夕阳西下,233米高空跨出边沿往下看,还是有些怕。多看了几次之后,坐了一些动作。就坐在边沿上看往下探。深呼吸几次。终于不怕了。哈哈哈哈。蛮有趣!
中间有个插曲,是东西存放柜子时,发现只能用 30 港元,结果只能去兑换。刚兑换完,然后一个长的很清秀的妹子没带现金,正要找那些开发票的人沟通,说是票买了,但是没有现金无法开柜存包,结果开发票的给建议向我借点,然后转给我。我说我们直接用一个箱子放得了。我手机快没电了,向她借了充电宝。然后她就去蹦极去了!真会玩。胆儿也太肥了!
高空漫步结束后,坐上面又看了十几页《区块链原理、设计与应用》。等她跳完回来时,瞄了她一眼,很平静。那一刻,感觉那个妹子好漂亮啊。然后,就把箱子的东西还她。互相道谢之后,各自奔自己的行程去了。因为超时了,她要转账,我说当充电费了。然后,就没然后了。

珠海海洋王国一天(2018-06-17)

在珠海休正,一大早就去深圳最大的两个公园山顶看了。感觉珠海是个宜居不宜游的城市,不知道是放假还是人口本来就少,感觉这里的压力,应该比深圳小很多。行人走路都那么悠闲。
坐公交往珠海最南端出发。那里是长隆。
坐过深圳的木质过山车,这里的过山车,全程没太大感觉。甚至失重感也不是那么强烈。可能和前一天的澳门高空漫步有点关系。
海豚和白鲸剧场表演,让人感叹,动物很奇妙。
各种海底生态中才有的动物,在这里看到了。最震惊的还是水母。追逐光ppppp的神奇动物。
我在想,为啥这里的馆能做到那么大,那些生态怎么维持?那么多海底动物在里面,怎么维持平衡?怎么喂食所有的动物呢?水的循环做的很好。水质很干净。
然后,今天还碰到了昨天和我存放一柜子背包的那个妹子。她和她男朋友一块儿也到这里游玩来了。太巧了。

小结

旅途中,最重要的就是接触来自不同世界,说着不同语言的人。不少有着奇幻之旅的游客,不远万里,汇到一起,然后又散去。
然后,在路上,遇到妹子的概率比宅在家里,要高很多。
世界很大, 不可思议的事情,不同寻常的人很多,很多。
常出去走走。
应该像以前去西藏一样,将路上所有的所思所想都记录下来。很有意思。

最近

Posted on 2018-06-05

变动

过去半年,经历了不少新的东西。
遇到不少问题。不过都已经过去,都一一过去了。
这半年的工作遇到的问题,比去年加起来都多。主要是因为工作变动,原先从事 php 和 python 开发转到 golang 上面。然后是工作环境从 ubuntu 切到 windows 上。谁说开发工具不重要的,真的到一个团队里面去的时候,周围的工具链还是很影响效率的。

无题

和 golang 相匹配的工具链一大坨,docker, elk, beego, k8s 都需要时间消化,然后自己还要对基础进行补课(数据结构和算法依然是短板), 对于网络协议的理解还是粗浅, 对mysql, redis 的使用还不够深熟。这些还只是闲暇时间的事情。日常工作中又常是各种旧的系统留下的 bug, 排查日志,定位问题,运维修复。一边还得和别的部门打交道,交接沟通头痛的需求,“过堂”……

小成

不过这半年过得还是蛮充实的。处理的问题多了,慢慢地也就心里有点数了。对于某些事情的轻重缓急有了划分,渐渐抽出时间实现一些认为更有价值的东西去。
而且每迈过一道坎,就信心更增加了一些。后面遇到问题,就不至于那么慌了。

强者需要面对更多的困难。

123…6

Gitvim

55 posts
18 tags
RSS
© 2019 Gitvim