终于等到你,还好我没放弃! 机械键盘入坑太久,无法自拔。
先后体验过的机械键盘有茶轴、青轴、红轴。
第一把,樱桃cherry G80-3000茶轴,传说中的入门神器!无图,请自行脑补。
第二把,KBT race2青轴,话说玩机械键盘都不体验下青轴啪啪啪的声音,都不好意思行走机械键盘界。
不得不说,外观真是漂亮,大小适中!服役了不到一年,手指酸痛受不了了。
后来在知乎上看到大神推荐只玩红轴,瞬间走火入魔,神经向往,最终,购入现在的红轴键盘!
终于等到你,还好我没放弃! 机械键盘入坑太久,无法自拔。
先后体验过的机械键盘有茶轴、青轴、红轴。
第一把,樱桃cherry G80-3000茶轴,传说中的入门神器!无图,请自行脑补。
第二把,KBT race2青轴,话说玩机械键盘都不体验下青轴啪啪啪的声音,都不好意思行走机械键盘界。
不得不说,外观真是漂亮,大小适中!服役了不到一年,手指酸痛受不了了。
后来在知乎上看到大神推荐只玩红轴,瞬间走火入魔,神经向往,最终,购入现在的红轴键盘!
该来的总会来的,MacBook、iPad mini在手中已久,唯一差的就是iPhone了,最近被哥们刺激到后,一激动就入手了,这比预计来的要早一些。
iPhone6s上手已有小半个月,各项体验都还不错。由于从长久的安卓阵营转到iOS麾下,有些地方还有些不太适应,当然,大部分的体验还是很满意的,这篇文章就说一说其优点顺便吐槽下吧。
先交代下背景,之前用的是一台小米4,3G内存版,MIUI7开发版操作系统。
较常用的几点比较如下:
由于之前一直在做爬虫采集相关的开发,这个过程那肯定少不了跟「代理 IP」打交道,这篇文章就来记录一下,如何实现一个爬虫代理服务,本篇文章主要以讲解思路为主。
做过爬虫的人应该都知道,抓的网站和数据多了,如果爬虫抓取速度过快,免不了触发网站的防爬机制。而这些网站应对爬虫的办法,几乎用的同一招就是封 IP 。
那么我们还想稳定、持续地抓取这些网站的数据,如何解决呢?一般解决方案有2个:
第一种方案牺牲的是时间和速度,但是一般情况下我们的时间是很宝贵的,理想情况下是,用最短的时间获取最多的数据。所以第二种方案是推荐的,那么从哪里可以找到这么多代理 IP 呢?
最直接地,使用搜索引擎去检索。
例如使用 Google、Bing、百度,输入关键字:免费代理 IP,前几页几乎都是提供代理 IP 的网站,逐个打开后观察可以发现,几乎都是一个列表页,这个列表页展示的代理 IP 少则几十个、多则几百个。
但是仔细观察你就会发现,每个网站提供的免费 IP 是有限的,而且拿来用之后你就会发现,有的也已经失效了。毕竟,人家更倾向于你购买他们的付费代理 IP。
身为狡猾的程序猿,当然不能因为这点困难就退缩了。仔细想一下,既然搜索引擎能搜到这么多提供代理的网站,每个网站提供几十或几百个代理 IP,假如有 10 家代理网站,那加在一起也有几百到几千个了。
那么很简单,你要做的事情就是,把这些提供代理 IP 的网站收集起来,写一个采集程序把这些免费代理 IP 抓过来就好了,想想是不是很简单?
好了,通过刚才的思路,你可以编写一个采集代理 IP 的程序,然后就可以拿到成百上千的代理 IP 了。当然,收集的代理网站越多,采集到的代理 IP 也就越多,所以我们尽量多收集一些代理网站,越多越好。
等等,这么多代理 IP ,难道别人真的就免费送给你了吗?
当然不是,前面也提到过,这些代理中,有很大一部分已经是失效的了。那怎么办?如何知道哪些代理是有效,哪些是不可用的呢?
很简单,写一个 HTTP 程序,挂上这些代理,访问某一个稳定的网站,然后看是否能正常访问,如果可以正常访问,那么代理 IP 就是可用的,访问失败则说明代理 IP 已失效。
最简单地,我们可以使用 curl
命令就可以测试一个代理是否真的可用:
1 | # 使用代理 48.139.133.93:3128 访问 网易首页 |
当然,这种方式只是为了演示方便,实际最好的方式是:编写一个多线程的代理测试程序,然后分别使用这些代理去访问某个网站,根据访问的结果,最终就可以输出一批可用的代理 IP。
可能是上天对我的眷顾吧,在一个偶然的机会有幸得到一台
Mac
,从此Mac
探索之路一发不可收拾。
记得刚刚使用Mac
时,完全小白一枚,但作为程序员应该发挥本职业必备的职业技能,从学习OSX
系统、操作技巧到使用各种效率工具,这每一步都源于Blog、知乎、Google的学习。
一个偶然的机会,在学习Mac
技巧时,看到一篇Blog,再然后关注了作者的微信公众号,然后到每天关注其推送的内容,然后就在今天,入手了作者的一本书——《MacTalk人生元编程》,在这里也向大家推荐一下。
这本书汇集了:Mac技巧、编程、科技人文、人物、工具、职场等内容,不管你是正在使用的Mac
用户,或是正在coding
之路的程序猿君,都可读来看看。个人由于更加喜欢科技与人文
一词,便以此为题名。
此刻我已成为Mac
大军中的一员,Pro
与mini
都已具备,唯一差的武器就是爱疯,预计今年会入手一台,便也无憾了。
尤为喜欢书序中的那句话:
泰山崩于前,我依然沐浴更衣焚香沏茶,诚心正意,手起键落:Hello World!
最近使用
python
的ORM框架peewee
开发项目,遇到一个问题就是:在插入数据后,获取不到数据库生成的自增主键值,然后分析源码后得到解决方案,以此记录。
首先,定义model
:
class User(Model):
id = IntegerField(primary_key=True)
username = CharField()
class Meta:
database = db
db_table = "user"
其中主键id
是整型自增类型。
根据peewee
官方文档介绍,插入数据时使用如下:
user = User(username='admin')
user.save()
或
user = User.create(username='admin')
或
id = User.insert(username='admin).execute()
但是获取user.id
或id
结果却为None
。
于是乎开始看peewee
的源码,看到底发生了什么?
首先看Moel
的create
方法:
@classmethod
def create(cls, **query):
inst = cls(**query)
inst.save(force_insert=True) # 还是调用本类的save方法
inst._prepare_instance()
return inst
发现create
方法还是调用本类中得save
方法,那么好办了,来看save
方法做了些什么?
每个开发人员必备的技能,就是如何使用搜索引擎来获取自己最需要的知识,这篇文章介绍使用搜索引擎的一些技巧,注:主要针对
百度
是用来卖萌的。
最简单地搜索,即输入搜索词,确认,等待返回结果,例如输入“北京什么地方好玩”,结果如下:
但是这个结果是搜索引擎智能帮你分词后的结果,其中一些是你认为不想看到的,那么精准搜索就派上用场了,很简单,在搜索词两边加上英文格式双引号
即可,再看结果,是不是明朗很多:
好了,学习了刚才的技巧之后,突然觉得有些范围的内容完全不是自己想要的,例如不想看到关于与百度相关的内容,那么就可以这样用:关键词 -排除关键字
,注意,横杠+排除关键字前必须有空格
,否则无效。
解析页面肯定是写爬虫遇到的最常见的工作,但不要小看这个这个过程,有时它也会令你抓狂。这次写一下关于
curl
工具的使用,主要介绍一下平时很常用的几项。
curl
是利用URL
语法在命令行方式下工作的开源文件传输工具,使用这个工具,就能在命令行发起请求,获得响应,而且其命令简单且强大,非常适合用作写爬虫时,解析页面前的模拟工作。
# 发起HTTP请求,并把返回的网页内容显示在屏幕
curl "http://www.example.com"
# 发起HTTP请求,并把返回的网页内容输出到文件
curl "http://www.example.com" > test.html
# 或者用命令-o参数也可达到同样的效果
curl -o test.html "http://www.example.com"
注意:URL地址带上双引号是比较好的习惯,防止URL中带有特殊符号,导致不能解析报错情况。
有时curl
直接访问页面,会得到与浏览器打开不同的结果,所以此时就要伪装头信息,来模拟浏览器的行为,这样返回的数据就跟浏览器看到的一样了。
# 使用-A参数定义User-Agent,模拟浏览器行为
curl -A "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36" "http://www.example.com"
# 使用-e参数定义Referer,表示从哪个页面跳过来的,解决防盗链问题
curl -e "http://www.example.com" "http://detail.example.com"
# 或者使用-H参数自定义头信息,也可定义User-Agent、Referer、Content-Type等信息
curl -H "my-header:xxxxx" "http://www.example.com"
或者你用程序频繁访问某个网站,结果人家把你IP
封禁了,这时就可以用代理
来进行访问。
# 使用-x参数使用代理访问
curl -x "123.45.67.89:8102" "http://www.example.com"
作为屌丝IT程序员,日常生活中看文档是必须的,自然看英文文档也是肯定的。但遇到不认识的单词是灰常头疼的。基于此原因,所以有了这个基于命令行快速翻译的工具。
在遇到上面说的这种情况时,解决方案:
我是偏向第二种方式的,因为在大多数有程序洁癖的码农来讲,装一款软件而且只用到其5%
的功能不到,自己总会觉得很亏心,我也是如此,所以在线翻译便成了我的最佳选择,简单,快速,即开即用。
程序员都是喜新厌旧的,什么东西用久了,都会觉得腻,甚至会感觉效率越来越低下。在线翻译用的久了,慢慢也感觉有一些问题出现,例如:首先打开某在线翻译网站,当然,你可以保存书签,但开发过程中,浏览器开N多个标签调试是常有的事情,一不留神就会把这个翻译标签页关掉,或者说开的太多了,机器变得越来越卡,cmd + w
,连续按下数十次,整个世界都清静了。
综合上述原因,所以开发了一个基于命令行的快速翻译工具,主要优点如下:
linux
上使用vim
,而且linux
终端的标签开N多个也很容易切换,不会卡顿;终端
,这样来用,可能会显的逼格很高;最近公司办公室兴起了“键盘风”,同事一个接一个买了机械键盘,不过听着噼里啪啦的键盘声,也与程序员这个职业相符吧。这次写一下作为屌丝程序员,拥有的那些装备。
你还在用蜗牛电脑开发么?内存8G是最低配,上不封顶。有能力必须上SSD,电脑秒开或者扣盖子就走,一个月不关机无压力。当然最好还是配台Mac
,不是air
,是pro
,自从用上Mac
的触摸板,鼠标基本可以抛弃了。开发爽到爆。做开发的越早买Mac越好。如果买不起,win本的话我推荐:Thinkpad T系列
,自从用了键盘中间的小红点,其他牌子的笔记本基本就不考虑了。我自己有一台Macbook Pro 13
,公司配的是Thinkpad T440P
。
最近一直没有更新博客了,主要忙什么?一言难尽,相信北漂的IT屌丝们,都会遇到这个问题,那就是找房子!
房子到期,加上种种原因,决定撤离待了一年之久的小窝,不过也没什么特别值得留恋的,北漂就这样,工作、找房子、租房子。。
找了半个多月的房子,房源信息包括豆瓣、58、搜房网等,看了不下十几家房子,感想只有一个字:找合适的真特么难!不过就在昨天,终于将这件头疼的事情尘埃落定!
对于IT屌丝,当然是充分利用网络资源,但是网上例如58,赶集充斥了太多的中介信息,恶心的要命。最后在锁定在豆瓣租房小组中寻找。
但豆瓣最坑爹的是竟然没有搜索相关功能,别人发帖后,你只能用肉眼一个个寻找自己所需的信息,不能忍了。
最后决定自己写一个爬虫工具,时时监控豆瓣租房小组,抓下所有的信息,然后自己搞个页面,搜索、排序,OK,够用了!
用了3个晚上的时间,写出了这个爬虫,也比较简单,主要就是配置需要抓取的页面,分析所需信息,入库等等。
然后做个前台页面,加上搜索排序等功能,齐活!
效果如下: