通知设置 新通知
阻挡黑客的最原始最暴力的方法 ---用胶带粘住你的摄像头
网络安全 • 李魔佛 发表了文章 • 0 个评论 • 5251 次浏览 • 2016-06-23 22:15
扎克为什么要把摄像头蒙住呢?这得先说一下 Ratting(Remote Access Trojan)这种行为。所谓的 Ratting,是指黑客通过植入木马远程控制受害用户设备的行为,而进行这种行为的黑客一般叫做 ratter。除了窃取设备的敏感数据以外,激活用户摄像头和麦克风偷拍视频也是 ratter 常干的事情。
不过扎克伯格这么专业的人也把摄像头蒙起来究竟是偏执狂还是好做法呢?安全专家认为是后者,原因有三:
一是扎克伯格是一个高价值的攻击目标。无论是情报机构还是为了罪犯无疑都会对扎克伯格的资料虎视眈眈,而对于那些为了证明自己黑客功力的人来说,扎克也是一个很理想的目标。所以采取预防措施是很自然的事情。
二是把采集音视频的入口盖住是一种成本低廉且基本的安全防护办法。如果想窃听安全会议,有经验的黑客一般都会先数数哪些设备没有遮住摄像头然后再确定下手的目标。
三是扎克未必就不会被攻破。事实上本月初就爆出了黑客袭击扎克伯格部分社交网络,盗取了他的 Twitter、Pinterest、LinkedIn 帐号的消息。把这两件事联系在一起,更容易解释他的那台 Macbook 上面的胶带。
事实上,采取这种做法的人并不止扎克一个。就连 FBI 局长 James Comey 也把自己的笔记本摄像头蒙上了胶带—原因很简单,因为他看到一个比他更聪明的人也这么干。所以你要不要也蒙上呢? 查看全部
扎克为什么要把摄像头蒙住呢?这得先说一下 Ratting(Remote Access Trojan)这种行为。所谓的 Ratting,是指黑客通过植入木马远程控制受害用户设备的行为,而进行这种行为的黑客一般叫做 ratter。除了窃取设备的敏感数据以外,激活用户摄像头和麦克风偷拍视频也是 ratter 常干的事情。
不过扎克伯格这么专业的人也把摄像头蒙起来究竟是偏执狂还是好做法呢?安全专家认为是后者,原因有三:
一是扎克伯格是一个高价值的攻击目标。无论是情报机构还是为了罪犯无疑都会对扎克伯格的资料虎视眈眈,而对于那些为了证明自己黑客功力的人来说,扎克也是一个很理想的目标。所以采取预防措施是很自然的事情。
二是把采集音视频的入口盖住是一种成本低廉且基本的安全防护办法。如果想窃听安全会议,有经验的黑客一般都会先数数哪些设备没有遮住摄像头然后再确定下手的目标。
三是扎克未必就不会被攻破。事实上本月初就爆出了黑客袭击扎克伯格部分社交网络,盗取了他的 Twitter、Pinterest、LinkedIn 帐号的消息。把这两件事联系在一起,更容易解释他的那台 Macbook 上面的胶带。
事实上,采取这种做法的人并不止扎克一个。就连 FBI 局长 James Comey 也把自己的笔记本摄像头蒙上了胶带—原因很简单,因为他看到一个比他更聪明的人也这么干。所以你要不要也蒙上呢?
python使用lxml加载 html---xpath
python • 李魔佛 发表了文章 • 0 个评论 • 3413 次浏览 • 2016-06-23 22:09
然后按照以下代码去使用
#-*-coding=utf-8-*-
__author__ = 'rocchen'
from lxml import html
from lxml import etree
import urllib2
def lxml_test():
url="http://www.caixunzz.com"
req=urllib2.Request(url=url)
resp=urllib2.urlopen(req)
#print resp.read()
tree=etree.HTML(resp.read())
href=tree.xpath('//a[@class="label"]/@href')
#print href.tag
for i in href:
#print html.tostring(i)
#print type(i)
print i
print type(href)
lxml_test()
使用urllib2读取了网页内容,然后导入到lxml,为的就是使用xpath这个方便的函数。 比单纯使用beautifulsoup要方便的多。(个人认为) 查看全部
然后按照以下代码去使用
#-*-coding=utf-8-*-
__author__ = 'rocchen'
from lxml import html
from lxml import etree
import urllib2
def lxml_test():
url="http://www.caixunzz.com"
req=urllib2.Request(url=url)
resp=urllib2.urlopen(req)
#print resp.read()
tree=etree.HTML(resp.read())
href=tree.xpath('//a[@class="label"]/@href')
#print href.tag
for i in href:
#print html.tostring(i)
#print type(i)
print i
print type(href)
lxml_test()
使用urllib2读取了网页内容,然后导入到lxml,为的就是使用xpath这个方便的函数。 比单纯使用beautifulsoup要方便的多。(个人认为)
win7下 设置 sourcetree full/fetch github文件
Linux • 李魔佛 发表了文章 • 0 个评论 • 4293 次浏览 • 2016-06-23 16:48
因为之前win7系统安装的github使用的openssh来管理github的文件推送,所以在sourcetree中修改成openssh就可以了。
在Tool-> option, 在菜单下,把ssh key改成 openssh就可以了。 查看全部
因为之前win7系统安装的github使用的openssh来管理github的文件推送,所以在sourcetree中修改成openssh就可以了。
在Tool-> option, 在菜单下,把ssh key改成 openssh就可以了。
mac os x 下 git gui 好用的图形工具
Linux • 李魔佛 发表了文章 • 0 个评论 • 6124 次浏览 • 2016-06-22 17:10
试了几个工具,最好用的还是sourcetree。 跨平台,win和mac都可以用,而且注册账号后还可以在云上同步。
https://www.sourcetreeapp.com/download/ 查看全部
试了几个工具,最好用的还是sourcetree。 跨平台,win和mac都可以用,而且注册账号后还可以在云上同步。


https://www.sourcetreeapp.com/download/
雪人股份 后续分析 6月22日
股票 • 李魔佛 发表了文章 • 0 个评论 • 4255 次浏览 • 2016-06-22 12:38
在上一篇 文章中,雪人股份 大宗交易分析 寻找主力痕迹 我们找到了该股接盘的营业部----福州五一路。
今天龙虎榜上:
没有出现任何的福州的营业部,所以该游资对雪人股份进行了锁仓处理。 而且 溧阳路 还进来了,所以后来会有一波洗盘以及拉升。 (鉴于溧阳路的风格)
查看全部
在上一篇 文章中,雪人股份 大宗交易分析 寻找主力痕迹 我们找到了该股接盘的营业部----福州五一路。
今天龙虎榜上:
没有出现任何的福州的营业部,所以该游资对雪人股份进行了锁仓处理。 而且 溧阳路 还进来了,所以后来会有一波洗盘以及拉升。 (鉴于溧阳路的风格)
浙江世宝的十大股东之一,柳青
股票 • 李魔佛 发表了文章 • 0 个评论 • 3859 次浏览 • 2016-06-21 23:39
所以这里的柳青很有可能是柳传志之女柳青,滴滴公司的总裁。
百度百科的资料
柳青
(柳传志之女,滴滴出行总裁)
编辑柳青, 1978年出生于北京,毕业于北京大学和哈佛大学,现任滴滴出行总裁。
2000年,柳青毕业于北京大学计算机系毕业,随后进入哈佛大学学习。2002年获哈佛大学硕士学位,同年入职高盛(亚洲)有限责任公司。2008年晋升为高盛(亚洲)有限责任公司执行董事,凭借努力,逐步晋升为高盛亚洲区董事总经理,成为这家百年投行历史上最年轻的董事总经理。
2014年,柳青加盟滴滴出任首席运营官,2015年2月升任滴滴总裁。柳青与程维成为搭档后,主导了滴滴打车与快的打车的合并[1] 。2015年柳青与滴滴出行董事长程维同时登上财富全球四十精英榜榜首[2] 。同年,世界经济论坛也授予柳青“全球青年领袖”称号[3] 。2015 年柳青入选财富“中国最具影响力的 25 位商界女性” [4] ;2013和2014年,两次被《中国企业家》评选为“中国最有影响力商界女性” [5] 。柳青是北京青联委员、哈佛大学研究生院校友会理事[6] ,壹基金理事会理事[7] 。 查看全部
所以这里的柳青很有可能是柳传志之女柳青,滴滴公司的总裁。
百度百科的资料
柳青
(柳传志之女,滴滴出行总裁)
编辑柳青, 1978年出生于北京,毕业于北京大学和哈佛大学,现任滴滴出行总裁。
2000年,柳青毕业于北京大学计算机系毕业,随后进入哈佛大学学习。2002年获哈佛大学硕士学位,同年入职高盛(亚洲)有限责任公司。2008年晋升为高盛(亚洲)有限责任公司执行董事,凭借努力,逐步晋升为高盛亚洲区董事总经理,成为这家百年投行历史上最年轻的董事总经理。
2014年,柳青加盟滴滴出任首席运营官,2015年2月升任滴滴总裁。柳青与程维成为搭档后,主导了滴滴打车与快的打车的合并[1] 。2015年柳青与滴滴出行董事长程维同时登上财富全球四十精英榜榜首[2] 。同年,世界经济论坛也授予柳青“全球青年领袖”称号[3] 。2015 年柳青入选财富“中国最具影响力的 25 位商界女性” [4] ;2013和2014年,两次被《中国企业家》评选为“中国最有影响力商界女性” [5] 。柳青是北京青联委员、哈佛大学研究生院校友会理事[6] ,壹基金理事会理事[7] 。
爆裂之股的雪球访谈的一问一答 合集
股票 • 李魔佛 发表了文章 • 0 个评论 • 3641 次浏览 • 2016-06-21 18:31
如何判断某个题材即将爆发,判定依据是?
首选你要明白,大资金的想法,他建仓后肯定需要高位派发才能赚钱,这个时候就需要风口配合,风口如何来呢?首选是行业面的变化,比如这次物联网,是因为一个标准的建立,使这个行业面产生变化。而聪明的产业资金会悄悄潜伏,而跟风的游资也会看到券商研报的第二天竞价抢筹。而大部分散户都是复盘后,才明白是怎么回事后,导致第二天激情追高。我觉得像这种大题材,肯定会有第二波,大家耐心布局第二波就好,缩量低吸,放量加仓,净量大绿等待,净量翻红建仓,反正你的买点的落脚点一定那个转折点,不确定是否转折时,买几手玩玩就好。
您平时经常关注哪些网站和软件发的消息呢?
查个股研报,有很多种途径,比如雪球,同花顺app,东方财富app,查某个券商的研报去东方财富官网就好。资讯就太多了,主流资讯比如四大证券报,新闻联播,财经纪新闻都是影响比较大的公众媒体。还有腾讯新闻这种的科技数码板块都是可以看的
如何用比较短的时间来熟悉个股的基本面呢?有时都不知道那个股是什么来的。还有就是上车的时间,有时看好是热点,上车的时间不对一直横盘,当你走了他就开始拉升。
我觉得选股应该自上而下的选股,单独看一只个股无意义的,游资是否拉他,要么他是龙头,要么就是跟风龙头。这个时候你要判断板块的热度,理清个股的关系。这个关系分的越细致越好。很多时候,个股的龙头也会因事件性而改变。比如和而泰跟东软载波,都是智能家居,但是和而泰因事件性的高送转,变成了龙一,所以东软就成了跟风。买股,死也要死在龙一上面,这是大概率原则,靠强势你才能赚钱,所以买强势股反抽胜算要你买弱势股超跌还好。
如果该概念板块大涨,其中某个股当日涨停,从哪些方面来判断明日是否要买进呢?也就是说如何判断是上车还是陷阱呢?
如果你确定这个题材是中线题材,那么劝你不要激情追涨,因为一只股成妖,主力肯定有个建仓的过程,不经过洗盘的股肯定走不长远。所以主力没有建仓完毕,肯定不会连续拉升让散户跟着吃肉。这个时候我们耐心布局第二波就好。这里面布局的时候有个原则,观察量,观察分时走势,主力介入的是否深入,通过放量与净量的关系,可以大致判断。还有就是低吸,尽量选在尾盘收盘前几分钟,这样当日很难吃亏,你赌的第二日继续强势。
说如何把握题材股的第二波上车机会,老司机,带带吧:
盯着第一波龙头的调整情况,他调整完毕,就会带起第二波高潮,通常第二波高潮需要一些消息面的配合。比如,这波的宜通,耐心等他缩量再放量转折点介入就好,最好有净量翻红的配合。消息面呢,据说这月底标准定稿,所以关注消息面的变化。还有就是关注产业消息,有无NB-IOT芯片上市等,成品也需要关注,比如三川的NB-IOT标准的智能水表啥时候上市。
您好!请问如何通过盘面,来发现市场选择的风口呢?
板块指数,板块内龙头个股的表现,板块内涨停个股的数量,这些都是判断市场选择板块热度的方法。板块越热买上龙头最安全,板块越弱,买上跟风最危险。
新能源版块和半导体版块的行情是不是接近尾声了?
下一个风口会在哪里?
新能源的产业链太大了,而且也是包罗万象,比如光伏,核电也是新能源。而通常大家说的新能源汽车,目前并未普及,所以行情远未结束,你至少等公路上跑的汽车至少一半啥是电动车时再考虑行情结束的问题。如果你觉得锂电池太高,不敢买,可以买一些下游的整车,或者零配件的细分细分龙头。总之汽车电子也好,消费电子也好,大发展都需要集成电路半导体大发展,所以这一块还有很长的路要走。
MEMS传感器这题材如何?
这是物联网,消费电子的基础,不过这个板块大涨,最好是有卓越的产品量产,有业绩预期才更好,就怕市场创新不足,没有量产的东西、业绩也就无法爆发了。
炒风口,啥时候就该撤了,看图大阴线?
龙头股领跌的时候
下一个热点是什么,工业4.0会吗
继续看好物联网,OLED,集成电路半导体。
请问用什么软件看版块指数,通达信的版块指数太杂,噪音太多,而且很多股票特别是新概念的版块划分也不准确
我用同花顺看板块,他的概念板块更新很快,交易目前切换到东方财富了,因为服务器比较快
如果接下来有中级反弹,你认为现在应该潜伏布局哪个板块?谢谢
锂电池为什么会成为大盘的结构性灵魂,因为业绩。很多板块,为什么没有持续表现被证伪了,还是因为业绩。所以我们就关注哪个板块业绩爆发,我们就布局哪个板块。马上中报密集披露了,关注一下业绩大增的是哪些板块。
查看全部
次新股强势就代表大盘弱势,次新股都跳水,大盘就跳水了
如何判断某个题材即将爆发,判定依据是?
首选你要明白,大资金的想法,他建仓后肯定需要高位派发才能赚钱,这个时候就需要风口配合,风口如何来呢?首选是行业面的变化,比如这次物联网,是因为一个标准的建立,使这个行业面产生变化。而聪明的产业资金会悄悄潜伏,而跟风的游资也会看到券商研报的第二天竞价抢筹。而大部分散户都是复盘后,才明白是怎么回事后,导致第二天激情追高。我觉得像这种大题材,肯定会有第二波,大家耐心布局第二波就好,缩量低吸,放量加仓,净量大绿等待,净量翻红建仓,反正你的买点的落脚点一定那个转折点,不确定是否转折时,买几手玩玩就好。
您平时经常关注哪些网站和软件发的消息呢?
查个股研报,有很多种途径,比如雪球,同花顺app,东方财富app,查某个券商的研报去东方财富官网就好。资讯就太多了,主流资讯比如四大证券报,新闻联播,财经纪新闻都是影响比较大的公众媒体。还有腾讯新闻这种的科技数码板块都是可以看的
如何用比较短的时间来熟悉个股的基本面呢?有时都不知道那个股是什么来的。还有就是上车的时间,有时看好是热点,上车的时间不对一直横盘,当你走了他就开始拉升。
我觉得选股应该自上而下的选股,单独看一只个股无意义的,游资是否拉他,要么他是龙头,要么就是跟风龙头。这个时候你要判断板块的热度,理清个股的关系。这个关系分的越细致越好。很多时候,个股的龙头也会因事件性而改变。比如和而泰跟东软载波,都是智能家居,但是和而泰因事件性的高送转,变成了龙一,所以东软就成了跟风。买股,死也要死在龙一上面,这是大概率原则,靠强势你才能赚钱,所以买强势股反抽胜算要你买弱势股超跌还好。
如果该概念板块大涨,其中某个股当日涨停,从哪些方面来判断明日是否要买进呢?也就是说如何判断是上车还是陷阱呢?
如果你确定这个题材是中线题材,那么劝你不要激情追涨,因为一只股成妖,主力肯定有个建仓的过程,不经过洗盘的股肯定走不长远。所以主力没有建仓完毕,肯定不会连续拉升让散户跟着吃肉。这个时候我们耐心布局第二波就好。这里面布局的时候有个原则,观察量,观察分时走势,主力介入的是否深入,通过放量与净量的关系,可以大致判断。还有就是低吸,尽量选在尾盘收盘前几分钟,这样当日很难吃亏,你赌的第二日继续强势。
说如何把握题材股的第二波上车机会,老司机,带带吧:
盯着第一波龙头的调整情况,他调整完毕,就会带起第二波高潮,通常第二波高潮需要一些消息面的配合。比如,这波的宜通,耐心等他缩量再放量转折点介入就好,最好有净量翻红的配合。消息面呢,据说这月底标准定稿,所以关注消息面的变化。还有就是关注产业消息,有无NB-IOT芯片上市等,成品也需要关注,比如三川的NB-IOT标准的智能水表啥时候上市。
您好!请问如何通过盘面,来发现市场选择的风口呢?
板块指数,板块内龙头个股的表现,板块内涨停个股的数量,这些都是判断市场选择板块热度的方法。板块越热买上龙头最安全,板块越弱,买上跟风最危险。
新能源版块和半导体版块的行情是不是接近尾声了?
下一个风口会在哪里?
新能源的产业链太大了,而且也是包罗万象,比如光伏,核电也是新能源。而通常大家说的新能源汽车,目前并未普及,所以行情远未结束,你至少等公路上跑的汽车至少一半啥是电动车时再考虑行情结束的问题。如果你觉得锂电池太高,不敢买,可以买一些下游的整车,或者零配件的细分细分龙头。总之汽车电子也好,消费电子也好,大发展都需要集成电路半导体大发展,所以这一块还有很长的路要走。
MEMS传感器这题材如何?
这是物联网,消费电子的基础,不过这个板块大涨,最好是有卓越的产品量产,有业绩预期才更好,就怕市场创新不足,没有量产的东西、业绩也就无法爆发了。
炒风口,啥时候就该撤了,看图大阴线?
龙头股领跌的时候
下一个热点是什么,工业4.0会吗
继续看好物联网,OLED,集成电路半导体。
请问用什么软件看版块指数,通达信的版块指数太杂,噪音太多,而且很多股票特别是新概念的版块划分也不准确
我用同花顺看板块,他的概念板块更新很快,交易目前切换到东方财富了,因为服务器比较快
如果接下来有中级反弹,你认为现在应该潜伏布局哪个板块?谢谢
锂电池为什么会成为大盘的结构性灵魂,因为业绩。很多板块,为什么没有持续表现被证伪了,还是因为业绩。所以我们就关注哪个板块业绩爆发,我们就布局哪个板块。马上中报密集披露了,关注一下业绩大增的是哪些板块。
雪人股份 大宗交易分析 寻找主力痕迹
股票 • 李魔佛 发表了文章 • 0 个评论 • 4415 次浏览 • 2016-06-21 08:57
而最近大宗交易频繁。
在6.6日大股东进行减持,接盘的是 东北证券股份有限公司福州五一中路证券营业部 和 长城国瑞证券有限公司福州五一北路证券营业部,中信建投证券股份有限公司北京太阳宫中路证券营业部
买入了约1.5亿。
前两者都是福州五一路。而今天公告说员工计划持股完毕,大宗交易里头再次出现 了福州五一路,可是卖出方里也是福州五一路。 但是成交价却比6.6日的还低,说明6.20日雪人股份进行了对倒。 大宗交易上看明显就是同一伙人在左手倒右手。
以后主力应该就是福州五一路。
查看全部
scrapy 爬虫执行之前 如何运行自定义的函数来初始化一些数据?
回复python • 低调的哥哥 回复了问题 • 2 人关注 • 1 个回复 • 11234 次浏览 • 2016-06-20 18:25
ubuntu git 彩色显示
Linux • 李魔佛 发表了文章 • 0 个评论 • 4271 次浏览 • 2016-06-20 11:01
可以在终端里敲入以下命令
alec@PC$ git config --global color.status auto
alec@PC$ git config --global color.diff auto
alec@PC$ git config --global color.branch auto
alec@PC$ git config --global color.interactive auto 查看全部
可以在终端里敲入以下命令
alec@PC$ git config --global color.status auto
alec@PC$ git config --global color.diff auto
alec@PC$ git config --global color.branch auto
alec@PC$ git config --global color.interactive auto
python中字典赋值常见错误
python • 李魔佛 发表了文章 • 0 个评论 • 4411 次浏览 • 2016-06-19 11:39
算例一:>>> x = { }
>>> y = x
>>> x = { 'a' : 'b' }
>>> y
>>> { }
算例二:>>> x = { }
>>> y = x
>>> x['a'] = 'b'
>>> y
>>> { 'a' : 'b' }
疑问:为什么算例一中,给x赋值后,y没变(还是空字典),而算例二中,对x进行添加项的操作后,y就会同步变化。
解答:
y = x 那么x,y 是对同一个对象的引用。
算例一
中x = { 'a' : 'b' } x引用了一个新的字典对象
所以出现你说的情况。
算例二:修改y,x 引用的同一字典,所以出现你说的情况。
可以加id(x), id(y) ,如果id() 函数的返回值相同,表示是对同一个对象的引用。
查看全部
算例一:
>>> x = { }
>>> y = x
>>> x = { 'a' : 'b' }
>>> y
>>> { }算例二:
>>> x = { }
>>> y = x
>>> x['a'] = 'b'
>>> y
>>> { 'a' : 'b' }疑问:为什么算例一中,给x赋值后,y没变(还是空字典),而算例二中,对x进行添加项的操作后,y就会同步变化。
解答:
y = x 那么x,y 是对同一个对象的引用。
算例一
中x = { 'a' : 'b' } x引用了一个新的字典对象
所以出现你说的情况。
算例二:修改y,x 引用的同一字典,所以出现你说的情况。
可以加id(x), id(y) ,如果id() 函数的返回值相同,表示是对同一个对象的引用。
深圳是一个移民城市,且是一个排外的移民城市
量化交易 • 李魔佛 发表了文章 • 0 个评论 • 5782 次浏览 • 2016-06-18 07:53
目前省内已经有71家医院支持这一政策。
一线城市的深圳,只有可怜的一家,而且还是一家在龙岗的医院,关外的偏远地方的某家名不经传的医院。
2. 摇号
大量的混动车,丰田的,雷克萨斯的,统统被限制了,只能BYD的混动才能上,真的日了狗了了。 查看全部
linux目录跳转利器 z.sh
Linux • 李魔佛 发表了文章 • 0 个评论 • 8082 次浏览 • 2016-06-17 17:32
浪费时间且效率低下。
推荐大家使用一个小脚本,可以快速切换目录,不需要经常cd了。
拷贝下面的代码,保存为z.sh,放在用户目录下,/home/xxxx, xxx为用户名, 然后 给予 777权限, chmod 777 z.sh
然后 修改 .bashrc 文件, vim ~/.bashrc
在文件的最后添加一句 source ~/z.sh
然后保存.bashrc
然后运行 source ~./bashrc , 然后就马上生效了。
然后你进入到某一个目录,比如 /home/user/build/data/bin/hello/, 运行 z
系统会纪录你的hello目录一次,
下一次在其他目录比如在/etc/apt/,如果要跳转到 /home/user/build/data/bin/hello/,
直接运行 z hello 就可以了。# Copyright (c) 2009 rupa deadwyler under the WTFPL license
# maintains a jump-list of the directories you actually use
#
# INSTALL:
# * put something like this in your .bashrc/.zshrc:
# . /path/to/z.sh
# * cd around for a while to build up the db
# * PROFIT!!
# * optionally:
# set $_Z_CMD in .bashrc/.zshrc to change the command (default z).
# set $_Z_DATA in .bashrc/.zshrc to change the datafile (default ~/.z).
# set $_Z_NO_RESOLVE_SYMLINKS to prevent symlink resolution.
# set $_Z_NO_PROMPT_COMMAND if you're handling PROMPT_COMMAND yourself.
# set $_Z_EXCLUDE_DIRS to an array of directories to exclude.
# set $_Z_OWNER to your username if you want use z while sudo with $HOME kept
#
# USE:
# * z foo # cd to most frecent dir matching foo
# * z foo bar # cd to most frecent dir matching foo and bar
# * z -r foo # cd to highest ranked dir matching foo
# * z -t foo # cd to most recently accessed dir matching foo
# * z -l foo # list matches instead of cd
# * z -c foo # restrict matches to subdirs of $PWD
[ -d "${_Z_DATA:-$HOME/.z}" ] && {
echo "ERROR: z.sh's datafile (${_Z_DATA:-$HOME/.z}) is a directory."
}
_z() {
local datafile="${_Z_DATA:-$HOME/.z}"
# bail if we don't own ~/.z and $_Z_OWNER not set
[ -z "$_Z_OWNER" -a -f "$datafile" -a ! -O "$datafile" ] && return
# add entries
if [ "$1" = "--add" ]; then
shift
# $HOME isn't worth matching
[ "$*" = "$HOME" ] && return
# don't track excluded directory trees
local exclude
for exclude in "${_Z_EXCLUDE_DIRS[@]}"; do
case "$*" in "$exclude*") return;; esac
done
# maintain the data file
local tempfile="$datafile.$RANDOM"
while read line; do
# only count directories
[ -d "${line%%\|*}" ] && echo $line
done < "$datafile" | awk -v path="$*" -v now="$(date +%s)" -F"|" '
BEGIN {
rank[path] = 1
time[path] = now
}
$2 >= 1 {
# drop ranks below 1
if( $1 == path ) {
rank[$1] = $2 + 1
time[$1] = now
} else {
rank[$1] = $2
time[$1] = $3
}
count += $2
}
END {
if( count > 9000 ) {
# aging
for( x in rank ) print x "|" 0.99*rank[x] "|" time[x]
} else for( x in rank ) print x "|" rank[x] "|" time[x]
}
' 2>/dev/null >| "$tempfile"
# do our best to avoid clobbering the datafile in a race condition
if [ $? -ne 0 -a -f "$datafile" ]; then
env rm -f "$tempfile"
else
[ "$_Z_OWNER" ] && chown $_Z_OWNER:$(id -ng $_Z_OWNER) "$tempfile"
env mv -f "$tempfile" "$datafile" || env rm -f "$tempfile"
fi
# tab completion
elif [ "$1" = "--complete" -a -s "$datafile" ]; then
while read line; do
[ -d "${line%%\|*}" ] && echo $line
done < "$datafile" | awk -v q="$2" -F"|" '
BEGIN {
if( q == tolower(q) ) imatch = 1
q = substr(q, 3)
gsub(" ", ".*", q)
}
{
if( imatch ) {
if( tolower($1) ~ tolower(q) ) print $1
} else if( $1 ~ q ) print $1
}
' 2>/dev/null
else
# list/go
while [ "$1" ]; do case "$1" in
--) while [ "$1" ]; do shift; local fnd="$fnd${fnd:+ }$1";done;;
-*) local opt=${1:1}; while [ "$opt" ]; do case ${opt:0:1} in
c) local fnd="^$PWD $fnd";;
h) echo "${_Z_CMD:-z} [-chlrtx] args" >&2; return;;
x) sed -i -e "\:^${PWD}|.*:d" "$datafile";;
l) local list=1;;
r) local typ="rank";;
t) local typ="recent";;
esac; opt=${opt:1}; done;;
*) local fnd="$fnd${fnd:+ }$1";;
esac; local last=$1; [ "$#" -gt 0 ] && shift; done
[ "$fnd" -a "$fnd" != "^$PWD " ] || local list=1
# if we hit enter on a completion just go there
case "$last" in
# completions will always start with /
/*) [ -z "$list" -a -d "$last" ] && cd "$last" && return;;
esac
# no file yet
[ -f "$datafile" ] || return
local cd
cd="$(while read line; do
[ -d "${line%%\|*}" ] && echo $line
done < "$datafile" | awk -v t="$(date +%s)" -v list="$list" -v typ="$typ" -v q="$fnd" -F"|" '
function frecent(rank, time) {
# relate frequency and time
dx = t - time
if( dx < 3600 ) return rank * 4
if( dx < 86400 ) return rank * 2
if( dx < 604800 ) return rank / 2
return rank / 4
}
function output(files, out, common) {
# list or return the desired directory
if( list ) {
cmd = "sort -n >&2"
for( x in files ) {
if( files[x] ) printf "%-10s %s\n", files[x], x | cmd
}
if( common ) {
printf "%-10s %s\n", "common:", common > "/dev/stderr"
}
} else {
if( common ) out = common
print out
}
}
function common(matches) {
# find the common root of a list of matches, if it exists
for( x in matches ) {
if( matches[x] && (!short || length(x) < length(short)) ) {
short = x
}
}
if( short == "/" ) return
# use a copy to escape special characters, as we want to return
# the original. yeah, this escaping is awful.
clean_short = short
gsub(/\[\(\)\[\]\|\]/, "\\\\&", clean_short)
for( x in matches ) if( matches[x] && x !~ clean_short ) return
return short
}
BEGIN {
gsub(" ", ".*", q)
hi_rank = ihi_rank = -9999999999
}
{
if( typ == "rank" ) {
rank = $2
} else if( typ == "recent" ) {
rank = $3 - t
} else rank = frecent($2, $3)
if( $1 ~ q ) {
matches[$1] = rank
} else if( tolower($1) ~ tolower(q) ) imatches[$1] = rank
if( matches[$1] && matches[$1] > hi_rank ) {
best_match = $1
hi_rank = matches[$1]
} else if( imatches[$1] && imatches[$1] > ihi_rank ) {
ibest_match = $1
ihi_rank = imatches[$1]
}
}
END {
# prefer case sensitive
if( best_match ) {
output(matches, best_match, common(matches))
} else if( ibest_match ) {
output(imatches, ibest_match, common(imatches))
}
}
')"
[ $? -gt 0 ] && return
[ "$cd" ] && cd "$cd"
fi
}
alias ${_Z_CMD:-z}='_z 2>&1'
[ "$_Z_NO_RESOLVE_SYMLINKS" ] || _Z_RESOLVE_SYMLINKS="-P"
if type compctl >/dev/null 2>&1; then
# zsh
[ "$_Z_NO_PROMPT_COMMAND" ] || {
# populate directory list, avoid clobbering any other precmds.
if [ "$_Z_NO_RESOLVE_SYMLINKS" ]; then
_z_precmd() {
_z --add "${PWD:a}"
}
else
_z_precmd() {
_z --add "${PWD:A}"
}
fi
[[ -n "${precmd_functions[(r)_z_precmd]}" ]] || {
precmd_functions[$(($#precmd_functions+1))]=_z_precmd
}
}
_z_zsh_tab_completion() {
# tab completion
local compl
read -l compl
reply=(${(f)"$(_z --complete "$compl")"})
}
compctl -U -K _z_zsh_tab_completion _z
elif type complete >/dev/null 2>&1; then
# bash
# tab completion
complete -o filenames -C '_z --complete "$COMP_LINE"' ${_Z_CMD:-z}
[ "$_Z_NO_PROMPT_COMMAND" ] || {
# populate directory list. avoid clobbering other PROMPT_COMMANDs.
grep "_z --add" <<< "$PROMPT_COMMAND" >/dev/null || {
PROMPT_COMMAND="$PROMPT_COMMAND"$'\n''_z --add "$(command pwd '$_Z_RESOLVE_SYMLINKS' 2>/dev/null)" 2>/dev/null;'
}
}
fi 查看全部
浪费时间且效率低下。
推荐大家使用一个小脚本,可以快速切换目录,不需要经常cd了。
拷贝下面的代码,保存为z.sh,放在用户目录下,/home/xxxx, xxx为用户名, 然后 给予 777权限, chmod 777 z.sh
然后 修改 .bashrc 文件, vim ~/.bashrc
在文件的最后添加一句 source ~/z.sh
然后保存.bashrc
然后运行 source ~./bashrc , 然后就马上生效了。
然后你进入到某一个目录,比如 /home/user/build/data/bin/hello/, 运行 z
系统会纪录你的hello目录一次,
下一次在其他目录比如在/etc/apt/,如果要跳转到 /home/user/build/data/bin/hello/,
直接运行 z hello 就可以了。
# Copyright (c) 2009 rupa deadwyler under the WTFPL license
# maintains a jump-list of the directories you actually use
#
# INSTALL:
# * put something like this in your .bashrc/.zshrc:
# . /path/to/z.sh
# * cd around for a while to build up the db
# * PROFIT!!
# * optionally:
# set $_Z_CMD in .bashrc/.zshrc to change the command (default z).
# set $_Z_DATA in .bashrc/.zshrc to change the datafile (default ~/.z).
# set $_Z_NO_RESOLVE_SYMLINKS to prevent symlink resolution.
# set $_Z_NO_PROMPT_COMMAND if you're handling PROMPT_COMMAND yourself.
# set $_Z_EXCLUDE_DIRS to an array of directories to exclude.
# set $_Z_OWNER to your username if you want use z while sudo with $HOME kept
#
# USE:
# * z foo # cd to most frecent dir matching foo
# * z foo bar # cd to most frecent dir matching foo and bar
# * z -r foo # cd to highest ranked dir matching foo
# * z -t foo # cd to most recently accessed dir matching foo
# * z -l foo # list matches instead of cd
# * z -c foo # restrict matches to subdirs of $PWD
[ -d "${_Z_DATA:-$HOME/.z}" ] && {
echo "ERROR: z.sh's datafile (${_Z_DATA:-$HOME/.z}) is a directory."
}
_z() {
local datafile="${_Z_DATA:-$HOME/.z}"
# bail if we don't own ~/.z and $_Z_OWNER not set
[ -z "$_Z_OWNER" -a -f "$datafile" -a ! -O "$datafile" ] && return
# add entries
if [ "$1" = "--add" ]; then
shift
# $HOME isn't worth matching
[ "$*" = "$HOME" ] && return
# don't track excluded directory trees
local exclude
for exclude in "${_Z_EXCLUDE_DIRS[@]}"; do
case "$*" in "$exclude*") return;; esac
done
# maintain the data file
local tempfile="$datafile.$RANDOM"
while read line; do
# only count directories
[ -d "${line%%\|*}" ] && echo $line
done < "$datafile" | awk -v path="$*" -v now="$(date +%s)" -F"|" '
BEGIN {
rank[path] = 1
time[path] = now
}
$2 >= 1 {
# drop ranks below 1
if( $1 == path ) {
rank[$1] = $2 + 1
time[$1] = now
} else {
rank[$1] = $2
time[$1] = $3
}
count += $2
}
END {
if( count > 9000 ) {
# aging
for( x in rank ) print x "|" 0.99*rank[x] "|" time[x]
} else for( x in rank ) print x "|" rank[x] "|" time[x]
}
' 2>/dev/null >| "$tempfile"
# do our best to avoid clobbering the datafile in a race condition
if [ $? -ne 0 -a -f "$datafile" ]; then
env rm -f "$tempfile"
else
[ "$_Z_OWNER" ] && chown $_Z_OWNER:$(id -ng $_Z_OWNER) "$tempfile"
env mv -f "$tempfile" "$datafile" || env rm -f "$tempfile"
fi
# tab completion
elif [ "$1" = "--complete" -a -s "$datafile" ]; then
while read line; do
[ -d "${line%%\|*}" ] && echo $line
done < "$datafile" | awk -v q="$2" -F"|" '
BEGIN {
if( q == tolower(q) ) imatch = 1
q = substr(q, 3)
gsub(" ", ".*", q)
}
{
if( imatch ) {
if( tolower($1) ~ tolower(q) ) print $1
} else if( $1 ~ q ) print $1
}
' 2>/dev/null
else
# list/go
while [ "$1" ]; do case "$1" in
--) while [ "$1" ]; do shift; local fnd="$fnd${fnd:+ }$1";done;;
-*) local opt=${1:1}; while [ "$opt" ]; do case ${opt:0:1} in
c) local fnd="^$PWD $fnd";;
h) echo "${_Z_CMD:-z} [-chlrtx] args" >&2; return;;
x) sed -i -e "\:^${PWD}|.*:d" "$datafile";;
l) local list=1;;
r) local typ="rank";;
t) local typ="recent";;
esac; opt=${opt:1}; done;;
*) local fnd="$fnd${fnd:+ }$1";;
esac; local last=$1; [ "$#" -gt 0 ] && shift; done
[ "$fnd" -a "$fnd" != "^$PWD " ] || local list=1
# if we hit enter on a completion just go there
case "$last" in
# completions will always start with /
/*) [ -z "$list" -a -d "$last" ] && cd "$last" && return;;
esac
# no file yet
[ -f "$datafile" ] || return
local cd
cd="$(while read line; do
[ -d "${line%%\|*}" ] && echo $line
done < "$datafile" | awk -v t="$(date +%s)" -v list="$list" -v typ="$typ" -v q="$fnd" -F"|" '
function frecent(rank, time) {
# relate frequency and time
dx = t - time
if( dx < 3600 ) return rank * 4
if( dx < 86400 ) return rank * 2
if( dx < 604800 ) return rank / 2
return rank / 4
}
function output(files, out, common) {
# list or return the desired directory
if( list ) {
cmd = "sort -n >&2"
for( x in files ) {
if( files[x] ) printf "%-10s %s\n", files[x], x | cmd
}
if( common ) {
printf "%-10s %s\n", "common:", common > "/dev/stderr"
}
} else {
if( common ) out = common
print out
}
}
function common(matches) {
# find the common root of a list of matches, if it exists
for( x in matches ) {
if( matches[x] && (!short || length(x) < length(short)) ) {
short = x
}
}
if( short == "/" ) return
# use a copy to escape special characters, as we want to return
# the original. yeah, this escaping is awful.
clean_short = short
gsub(/\[\(\)\[\]\|\]/, "\\\\&", clean_short)
for( x in matches ) if( matches[x] && x !~ clean_short ) return
return short
}
BEGIN {
gsub(" ", ".*", q)
hi_rank = ihi_rank = -9999999999
}
{
if( typ == "rank" ) {
rank = $2
} else if( typ == "recent" ) {
rank = $3 - t
} else rank = frecent($2, $3)
if( $1 ~ q ) {
matches[$1] = rank
} else if( tolower($1) ~ tolower(q) ) imatches[$1] = rank
if( matches[$1] && matches[$1] > hi_rank ) {
best_match = $1
hi_rank = matches[$1]
} else if( imatches[$1] && imatches[$1] > ihi_rank ) {
ibest_match = $1
ihi_rank = imatches[$1]
}
}
END {
# prefer case sensitive
if( best_match ) {
output(matches, best_match, common(matches))
} else if( ibest_match ) {
output(imatches, ibest_match, common(imatches))
}
}
')"
[ $? -gt 0 ] && return
[ "$cd" ] && cd "$cd"
fi
}
alias ${_Z_CMD:-z}='_z 2>&1'
[ "$_Z_NO_RESOLVE_SYMLINKS" ] || _Z_RESOLVE_SYMLINKS="-P"
if type compctl >/dev/null 2>&1; then
# zsh
[ "$_Z_NO_PROMPT_COMMAND" ] || {
# populate directory list, avoid clobbering any other precmds.
if [ "$_Z_NO_RESOLVE_SYMLINKS" ]; then
_z_precmd() {
_z --add "${PWD:a}"
}
else
_z_precmd() {
_z --add "${PWD:A}"
}
fi
[[ -n "${precmd_functions[(r)_z_precmd]}" ]] || {
precmd_functions[$(($#precmd_functions+1))]=_z_precmd
}
}
_z_zsh_tab_completion() {
# tab completion
local compl
read -l compl
reply=(${(f)"$(_z --complete "$compl")"})
}
compctl -U -K _z_zsh_tab_completion _z
elif type complete >/dev/null 2>&1; then
# bash
# tab completion
complete -o filenames -C '_z --complete "$COMP_LINE"' ${_Z_CMD:-z}
[ "$_Z_NO_PROMPT_COMMAND" ] || {
# populate directory list. avoid clobbering other PROMPT_COMMANDs.
grep "_z --add" <<< "$PROMPT_COMMAND" >/dev/null || {
PROMPT_COMMAND="$PROMPT_COMMAND"$'\n''_z --add "$(command pwd '$_Z_RESOLVE_SYMLINKS' 2>/dev/null)" 2>/dev/null;'
}
}
fi
ubuntu12.04 安装 scrapy 爬虫模块 一系列问题与解决办法
回复python • 李魔佛 发起了问题 • 1 人关注 • 0 个回复 • 6702 次浏览 • 2016-06-16 16:18
Useful Link
默认分类 • 李魔佛 发表了文章 • 0 个评论 • 4093 次浏览 • 2016-06-15 13:43
如果你要处理的是文件而不是字符串,你可以使用 json.dump() 和 json.load() 来编码和解码JSON数据
亲测: ubuntu安装scrapy 避免了很多的依赖关系
http://www.cnblogs.com/FreeAqu ... .html 查看全部
如果你要处理的是文件而不是字符串,你可以使用 json.dump() 和 json.load() 来编码和解码JSON数据
亲测: ubuntu安装scrapy 避免了很多的依赖关系
http://www.cnblogs.com/FreeAqu ... .html
ubnutu 14.04 windows VNC Viewer不能连接 到ubuntu
回复网络 • 李魔佛 回复了问题 • 1 人关注 • 1 个回复 • 6893 次浏览 • 2016-06-14 16:04
ubuntu的一条高危命令:sudo apt-get install -f
Linux • 李魔佛 发表了文章 • 0 个评论 • 4252 次浏览 • 2016-06-14 13:16
本来这一条
本来这一条
Notepad
默认分类 • 李魔佛 发表了文章 • 0 个评论 • 3882 次浏览 • 2016-06-12 18:56
2016.6.12 --Done
subprocess communicate
http://www.linuxidc.com/Linux/2013-02/79117.htm
使用文件替代:
http://www.aikaiyuan.com/4705.html 查看全部
2016.6.12 --Done
subprocess communicate
http://www.linuxidc.com/Linux/2013-02/79117.htm
使用文件替代:
http://www.aikaiyuan.com/4705.html
subprocess popen 使用PIPE 阻塞进程,导致程序无法继续运行
python • 李魔佛 发表了文章 • 0 个评论 • 10137 次浏览 • 2016-06-12 18:31
subprocess用于在python内部创建一个子进程,比如调用shell脚本等。
举例:p = subprocess.Popen(cmd, stdout = subprocess.PIPE, stdin = subprocess.PIPE, shell = True)
p.wait()
// hang here
print "finished"
在python的官方文档中对这个进行了解释:http://docs.python.org/2/library/subprocess.html
原因是stdout产生的内容太多,超过了系统的buffer
解决方法是使用communicate()方法。p = subprocess.Popen(cmd, stdout = subprocess.PIPE, stdin = subprocess.PIPE, shell = True)
stdout, stderr = p.communicate()
p.wait()
print "Finsih" 查看全部
subprocess用于在python内部创建一个子进程,比如调用shell脚本等。
举例:
p = subprocess.Popen(cmd, stdout = subprocess.PIPE, stdin = subprocess.PIPE, shell = True)
p.wait()
// hang here
print "finished"
在python的官方文档中对这个进行了解释:http://docs.python.org/2/library/subprocess.html
原因是stdout产生的内容太多,超过了系统的buffer
解决方法是使用communicate()方法。
p = subprocess.Popen(cmd, stdout = subprocess.PIPE, stdin = subprocess.PIPE, shell = True)
stdout, stderr = p.communicate()
p.wait()
print "Finsih"
抓取 知乎日报 中的 大误 系类文章,生成电子书推送到kindle
python爬虫 • 李魔佛 发表了文章 • 0 个评论 • 10746 次浏览 • 2016-06-12 08:52
所以写了下面的python脚本,一劳永逸。 脚本抓取大误从开始到现在的所有文章,并推送到你自己的kindle账号。
# -*- coding=utf-8 -*-
__author__ = 'rocky @ www.30daydo.com'
import urllib2, re, os, codecs,sys,datetime
from bs4 import BeautifulSoup
# example https://zhhrb.sinaapp.com/index.php?date=20160610
from mail_template import MailAtt
reload(sys)
sys.setdefaultencoding('utf-8')
def save2file(filename, content):
filename = filename + ".txt"
f = codecs.open(filename, 'a', encoding='utf-8')
f.write(content)
f.close()
def getPost(date_time, filter_p):
url = 'https://zhhrb.sinaapp.com/index.php?date=' + date_time
user_agent = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"
header = {"User-Agent": user_agent}
req = urllib2.Request(url, headers=header)
resp = urllib2.urlopen(req)
content = resp.read()
p = re.compile('<h2 class="question-title">(.*)</h2></br></a>')
result = re.findall(p, content)
count = -1
row = -1
for i in result:
#print i
return_content = re.findall(filter_p, i)
if return_content:
row = count
break
#print return_content[0]
count = count + 1
#print row
if row == -1:
return 0
link_p = re.compile('<a href="(.*)" target="_blank" rel="nofollow">')
link_result = re.findall(link_p, content)[row + 1]
print link_result
result_req = urllib2.Request(link_result, headers=header)
result_resp = urllib2.urlopen(result_req)
#result_content= result_resp.read()
#print result_content
bs = BeautifulSoup(result_resp, "html.parser")
title = bs.title.string.strip()
#print title
filename = re.sub('[\/:*?"<>|]', '-', title)
print filename
print date_time
save2file(filename, title)
save2file(filename, "\n\n\n\n--------------------%s Detail----------------------\n\n" %date_time)
detail_content = bs.find_all('div', class_='content')
for i in detail_content:
#print i
save2file(filename,"\n\n-------------------------answer -------------------------\n\n")
for j in i.strings:
save2file(filename, j)
smtp_server = 'smtp.126.com'
from_mail = sys.argv[1]
password = sys.argv[2]
to_mail = 'xxxxx@kindle.cn'
send_kindle = MailAtt(smtp_server, from_mail, password, to_mail)
send_kindle.send_txt(filename)
def main():
sub_folder = os.path.join(os.getcwd(), "content")
if not os.path.exists(sub_folder):
os.mkdir(sub_folder)
os.chdir(sub_folder)
date_time = '20160611'
filter_p = re.compile('大误.*')
ori_day=datetime.date(datetime.date.today().year,01,01)
t=datetime.date(datetime.date.today().year,datetime.date.today().month,datetime.date.today().day)
delta=(t-ori_day).days
print delta
for i in range(delta):
day=datetime.date(datetime.date.today().year,01,01)+datetime.timedelta(i)
getPost(day.strftime("%Y%m%d"),filter_p)
#getPost(date_time, filter_p)
if __name__ == "__main__":
main()
github: https://github.com/Rockyzsu/zhihu_daily__kindle
上面的代码可以稍作修改,就可以抓取瞎扯或者深夜食堂的系列文章。
附福利:
http://pan.baidu.com/s/1kVewz59
所有的知乎日报的大误文章。(截止2016/6/12日) 查看全部
所以写了下面的python脚本,一劳永逸。 脚本抓取大误从开始到现在的所有文章,并推送到你自己的kindle账号。
# -*- coding=utf-8 -*-
__author__ = 'rocky @ www.30daydo.com'
import urllib2, re, os, codecs,sys,datetime
from bs4 import BeautifulSoup
# example https://zhhrb.sinaapp.com/index.php?date=20160610
from mail_template import MailAtt
reload(sys)
sys.setdefaultencoding('utf-8')
def save2file(filename, content):
filename = filename + ".txt"
f = codecs.open(filename, 'a', encoding='utf-8')
f.write(content)
f.close()
def getPost(date_time, filter_p):
url = 'https://zhhrb.sinaapp.com/index.php?date=' + date_time
user_agent = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"
header = {"User-Agent": user_agent}
req = urllib2.Request(url, headers=header)
resp = urllib2.urlopen(req)
content = resp.read()
p = re.compile('<h2 class="question-title">(.*)</h2></br></a>')
result = re.findall(p, content)
count = -1
row = -1
for i in result:
#print i
return_content = re.findall(filter_p, i)
if return_content:
row = count
break
#print return_content[0]
count = count + 1
#print row
if row == -1:
return 0
link_p = re.compile('<a href="(.*)" target="_blank" rel="nofollow">')
link_result = re.findall(link_p, content)[row + 1]
print link_result
result_req = urllib2.Request(link_result, headers=header)
result_resp = urllib2.urlopen(result_req)
#result_content= result_resp.read()
#print result_content
bs = BeautifulSoup(result_resp, "html.parser")
title = bs.title.string.strip()
#print title
filename = re.sub('[\/:*?"<>|]', '-', title)
print filename
print date_time
save2file(filename, title)
save2file(filename, "\n\n\n\n--------------------%s Detail----------------------\n\n" %date_time)
detail_content = bs.find_all('div', class_='content')
for i in detail_content:
#print i
save2file(filename,"\n\n-------------------------answer -------------------------\n\n")
for j in i.strings:
save2file(filename, j)
smtp_server = 'smtp.126.com'
from_mail = sys.argv[1]
password = sys.argv[2]
to_mail = 'xxxxx@kindle.cn'
send_kindle = MailAtt(smtp_server, from_mail, password, to_mail)
send_kindle.send_txt(filename)
def main():
sub_folder = os.path.join(os.getcwd(), "content")
if not os.path.exists(sub_folder):
os.mkdir(sub_folder)
os.chdir(sub_folder)
date_time = '20160611'
filter_p = re.compile('大误.*')
ori_day=datetime.date(datetime.date.today().year,01,01)
t=datetime.date(datetime.date.today().year,datetime.date.today().month,datetime.date.today().day)
delta=(t-ori_day).days
print delta
for i in range(delta):
day=datetime.date(datetime.date.today().year,01,01)+datetime.timedelta(i)
getPost(day.strftime("%Y%m%d"),filter_p)
#getPost(date_time, filter_p)
if __name__ == "__main__":
main()
github: https://github.com/Rockyzsu/zhihu_daily__kindle
上面的代码可以稍作修改,就可以抓取瞎扯或者深夜食堂的系列文章。
附福利:
http://pan.baidu.com/s/1kVewz59
所有的知乎日报的大误文章。(截止2016/6/12日)
金山快盘6月30日停止服务,论坛也被恶意被爆
网络 • 李魔佛 发表了文章 • 0 个评论 • 4397 次浏览 • 2016-06-12 06:49
因为安装了快盘客户端,所以遇到有部分文件同步问题,所以今天上去快盘的论坛去查查是什么问题。
上到论坛吃了一惊,怎么这么多小姐服务广告? 满屏都是。
而且发帖人居然还是版主 !!!
其实那些广告贴应该都是假的,因为里面的电话都是同一个人的, 不同地方服务电话都是用同一个人的? 很明显就是想黑电话的机主。(感觉该机主很可能是迅雷的某人,产品经理之类,电话机主是深圳联通用户,有兴趣的人可以继续深入去扒一扒)
查看全部
python 爆解zip压缩文件密码
python • 李魔佛 发表了文章 • 0 个评论 • 10248 次浏览 • 2016-06-09 21:43
抱怨归抱怨,由于现在金山快盘,新浪尾盘都关闭了,速度稍微快点的就只有百度网盘了。 所以我会把文件事先压缩好,加个密码然后上传。
可是有时候下载下来却忘记了解压密码,实在蛋疼。 所以需要自己逐一验证密码。 所以就写了这个小脚本。 很简单,没啥技术含量。
代码就用图片吧,大家可以上机自己敲敲代码也好。 ctrl+v 代码 其实会养成一种惰性。
github: https://github.com/Rockyzsu/zip_crash
查看全部
抱怨归抱怨,由于现在金山快盘,新浪尾盘都关闭了,速度稍微快点的就只有百度网盘了。 所以我会把文件事先压缩好,加个密码然后上传。
可是有时候下载下来却忘记了解压密码,实在蛋疼。 所以需要自己逐一验证密码。 所以就写了这个小脚本。 很简单,没啥技术含量。
代码就用图片吧,大家可以上机自己敲敲代码也好。 ctrl+v 代码 其实会养成一种惰性。
github: https://github.com/Rockyzsu/zip_crash
股市相关书籍
股票 • 李魔佛 发表了文章 • 2 个评论 • 4103 次浏览 • 2016-06-09 01:48
毕竟股市是人与人的博弈的产物。 是一个互道SB的市场。
推荐几本很不错的书,顺便附上电子书下载资源吧。
股市心理操控术
PDF 电子书
窥探市场上不同的交易心态,交易市场的本质。 所谓的庄家,不过是资金稍微大一点的散户罢了。
下载地址: http://pan.baidu.com/s/1slSUUk9 密码:ig63 查看全部
毕竟股市是人与人的博弈的产物。 是一个互道SB的市场。
推荐几本很不错的书,顺便附上电子书下载资源吧。
股市心理操控术
PDF 电子书
窥探市场上不同的交易心态,交易市场的本质。 所谓的庄家,不过是资金稍微大一点的散户罢了。
下载地址: http://pan.baidu.com/s/1slSUUk9 密码:ig63
批量删除某个目录下所有子目录的指定后缀的文件
python • 李魔佛 发表了文章 • 0 个评论 • 4843 次浏览 • 2016-06-07 17:51
日积月累,硬盘空间告急,所以写了下面的脚本用来删除指定的解压文件,但是源解压文件不能够删除,因为后续可能会要继续用这个tgz文件的时候(需要再解压然后刷机)。 如果手动去操作,需要进入每一个文件夹,然后选中tgz,然后反选,然后删除。 很费劲。
import os
def isContain(des_str,ori_str):
for i in des_str:
if ori_str == i:
return True
return False
path=os.getcwd()
print path
des_str=['img','cfg','bct','bin','sh','dtb','txt','mk','pem','mk','pk8','xml','lib','pl','blob','dat']
for fpath,dirs,fname in os.walk(path):
#print fname
if fname:
for i in fname:
#print i
name=i.split('.')
if len(name)>=2:
#print name[1]
if isContain(des_str,name[1]):
filepath=os.path.join(fpath,i)
print "delete file %s" %filepath
os.remove(filepath)
github: https://github.com/Rockyzsu/RmFile
查看全部
日积月累,硬盘空间告急,所以写了下面的脚本用来删除指定的解压文件,但是源解压文件不能够删除,因为后续可能会要继续用这个tgz文件的时候(需要再解压然后刷机)。 如果手动去操作,需要进入每一个文件夹,然后选中tgz,然后反选,然后删除。 很费劲。
import os
def isContain(des_str,ori_str):
for i in des_str:
if ori_str == i:
return True
return False
path=os.getcwd()
print path
des_str=['img','cfg','bct','bin','sh','dtb','txt','mk','pem','mk','pk8','xml','lib','pl','blob','dat']
for fpath,dirs,fname in os.walk(path):
#print fname
if fname:
for i in fname:
#print i
name=i.split('.')
if len(name)>=2:
#print name[1]
if isContain(des_str,name[1]):
filepath=os.path.join(fpath,i)
print "delete file %s" %filepath
os.remove(filepath)
github: https://github.com/Rockyzsu/RmFile
买强势股永远是最有效的赚钱绝招
股票 • 李魔佛 发表了文章 • 0 个评论 • 4040 次浏览 • 2016-06-07 09:10
跟进强势股需要勇气
很多强势股在涨了50%甚至100%以后,大部分投资者都以为应该调整了,可是它却一直上涨,根本没有掉头向下的打算,甚至在达到了200%的涨幅后,还敢向300%迈进!。因此,介入这样的强势股需要足够的勇气和胆量。当然介入有一个前提,即强势股在涨到一定程度时,没有出现放巨量的情况。上涨过程中放巨量说明机构在出货,它不管涨了多少,从来都没有出现过巨量的情况。所以,当我们介入一只强势股后,只要没有放出巨量,就可以一直持有。
强势股上涨大致有两种形态:一、沿着5日均线往上爬升;二、沿着10均线或20日、30日均线往上爬升。根据我沪深股市实战经验,原来沿着5日均线上升的股票,大幅上涨后,又跌破5日均线,或原来沿着10日、20日、30日均线上升的股票,大幅上涨后。又跌破10日20日、30日均线的股票,后市大都不妙。下跌和再次上涨的比例为3:1,而且这类强势股下跌并不一定要放量。下跌时不放量,是因为庄家在前期股价拉升时,边拉边撤,已经抛掉了很多筹码,等到下跌时,庄家留着这些筹码,主要也是为了砸盘之用,而跌时散户大多又不肯割肉。这就造成下跌时成交量不大或无量下跌的想象。
掐对强势股的七寸
对付强势庄家的办法:原来沿着5日均线上升的股票(10日、30日均线也一样),只要5日均线不破就可以继续持股,一旦某天5日均线被击穿(收盘价售在5日均线下方,下影线不算),就不能再继续看多,第二日应减磅操作(至少抛掉一半以上筹码),如果日后几天股价重心下移,就全部抛空离场。 查看全部
跟进强势股需要勇气
很多强势股在涨了50%甚至100%以后,大部分投资者都以为应该调整了,可是它却一直上涨,根本没有掉头向下的打算,甚至在达到了200%的涨幅后,还敢向300%迈进!。因此,介入这样的强势股需要足够的勇气和胆量。当然介入有一个前提,即强势股在涨到一定程度时,没有出现放巨量的情况。上涨过程中放巨量说明机构在出货,它不管涨了多少,从来都没有出现过巨量的情况。所以,当我们介入一只强势股后,只要没有放出巨量,就可以一直持有。
强势股上涨大致有两种形态:一、沿着5日均线往上爬升;二、沿着10均线或20日、30日均线往上爬升。根据我沪深股市实战经验,原来沿着5日均线上升的股票,大幅上涨后,又跌破5日均线,或原来沿着10日、20日、30日均线上升的股票,大幅上涨后。又跌破10日20日、30日均线的股票,后市大都不妙。下跌和再次上涨的比例为3:1,而且这类强势股下跌并不一定要放量。下跌时不放量,是因为庄家在前期股价拉升时,边拉边撤,已经抛掉了很多筹码,等到下跌时,庄家留着这些筹码,主要也是为了砸盘之用,而跌时散户大多又不肯割肉。这就造成下跌时成交量不大或无量下跌的想象。
掐对强势股的七寸
对付强势庄家的办法:原来沿着5日均线上升的股票(10日、30日均线也一样),只要5日均线不破就可以继续持股,一旦某天5日均线被击穿(收盘价售在5日均线下方,下影线不算),就不能再继续看多,第二日应减磅操作(至少抛掉一半以上筹码),如果日后几天股价重心下移,就全部抛空离场。




