20151113

今天先说一些看到的跟Python有关的tips吧, 一点Python的经验。我没有仔细了解
博主是做Python什么开发,应该跟web有关。这里面就讲了一些他在工作中一个Python的小总结,很简单,也比较实用,
可能不仅仅是Python,其他的一些工程也是可以学习的。

首先他讲到返回值,返回值不一致的问题。项目比较大之后,有返回dict,有返回object的,导致调用起来很乱。
博主想了一个很简单的办法,在上层封装一下,提供一个统一的逻辑判断。

1
2
3
4
5
6
7
8
9
10
11
12
13
def fail(msg, err_code=error.ERR_DATA_NOT_EXIST):
return {
'suc': False,
'errmsg': msg,
'code': err_code
}
def suc(data=None):
return {
'suc': True,
'data': data
}

确实这种统一的封装很有必要,虽然简单但很实用。

处理返回值的统一,作者还提到一点我觉得可以借鉴的是,日志打印方式的统一。这个在之前的开发中是注意不到的,
而且这个日志格式也是看作一个习惯,不管什么日志都有一个统一的风格,保持这样的连贯性对开发也是有好处。

大概说这么多吧,接下来可能要尝试一下,multi-classification of network anomaly, 在考虑用bi-direction rnn
应该会用Python在做这件事。倒是可以学一下theano。不过现在还在build dataset。。
现在第一件事儿就是把mawi的tcpdump文件 aggressive 为flow文件吧

1111

双十一、、、剁手啊

Python integer objects implementation

讲的是Python整数对象的实现,来看一个语言是怎么设计的,我觉得可以学到的有两点吧。

  1. When a block of integer objects is allocated by Python, the objects have no value assigned to them yet. We call them free integer objects ready to be used. A value will be assigned to the next free object when a new integer value is used in your program. No memory allocation will be required when a free integer object’s value is set so it will be fast.
    Python 在整数使用前申请一些整数对象的内存, 在给整数对象分配内存块时,直接赋给空闲的整数对象。来提高速度

  2. A specific structure is used to refer small integers and share them so access is fast. It is an array of 262 pointers to integer objects. Those integer objects are allocated during initialization in a block of integer objects we saw above. The small integers range is from -5 to 256. Many Python programs spend a lot of time using integers in that range so this is a smart decision.
    Python做的第二点是提前为一部分小整数分配了空间,以便快速访问

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
>>> a = 256
>>> b = 256
>>> a is b
True
2.
>>> a = 257
>>> b = 257
>>> a is b
False
3.
>>> a, b = 257, 257
>>> a is b
True
4.
>>> a = 257; b = 257
>>> a is b
False

还有一个讲Python 内存管理的,先挖个坑吧,等有时间再看。 再填一个小坑,之前研究生数学建模里面有个题是做分类的,针对流型,今天看到scikit-learn就有专门干这个的 Manifold Learning,这个也用不到,mark一下吧

multiprocessing

这个主要是明白在Python写程序的时候更倾向多进程而不是多线程。具体如何实现,如果要用的时候可以参考这个

Python 爬虫的工具列表 附Github代码下载链接

我只能说这个总结的太全了。。网络、爬虫架构、HTML解析、文本处理、特定格式的处理、自然语言处理、、、

又一个开始

距上次写东西已有半年多了。突然想重新写日志,一来觉得每天看到的一些东西需要做一个整理,二来明年要找工作,是不是有个技术主页会好一些。想把这些东西放在另一台电脑上,那个有机械键盘,敲起来带感。鼓捣了半天也没搞定,现在原来的电脑上写吧。

今天就写这两句话吧,开个头。。唉,能不能在另一个台电脑上搞定。

老老实实的做一件事才靠谱

距上次写东西过去了快两个月,想想自己除了背单词还算是坚持,别的就找不到什么了。恩?今天的主题是什么呢,我觉得可以是有关工作的一些新年计划。

  • 坚持学英语吧,好像现在已经坚持了140多天,可以做到95%以上的打卡率,将近半年的时间,没有从一个实质的角度发觉自己的英文有什么长进,不过能这样坚持的做一个长周期的事儿觉得还挺自豪的。
  • Coursera,记得去年也有这样信誓旦旦的计划,结果呢?一个课也没坚持下来,也许今年有个好的开头,Stanford 的Mining Massive Dadasets已经坚持完成了一半,尽管里面的一些作业自己没有搞懂,我想先开了这头吧。
  • 在上一篇中也提到了一个长期一些的计划,当时思考了很久还是打算做一个基于aiml的chatbot,使用aiml的最大好处是可以做到context-aware,但基于aiml就需要大量的template,英文的数据还比较多,但中文的就比较蛋疼了。当时还考虑调用google translator的api 快速完成大量的中文语料,这个不是不可行,但是看到那么多模板自己又慌了。。。思来想去,还是觉得做QA吧,借mentor的一些思路和方法,觉得这个东西还是可以做的。Web-QA吧,至少可以相对稳定的爬虫。具体的方案还在想。但觉得这段时间稳定下来真的可以着手做一做了。

晚来天欲雪,能饮一杯无

Rainy Mood是个好东西,做BGM时间一长真的以为天在下雨,我回到了4楼向南的小屋子,趴在窗台上看着窗外绵绵不绝的雨。回不到小时候。。。

上一篇本来想写写一个关于自然语言处理、搜索引擎的发展,或是说一说互联网对传统行业的冲击,但可惜现在静不下心,了了草草糊弄了别人更是糊弄自己。还是有很多话可以扯的,可能有时候真是要写了,反而语塞了。看到之前一本本的日记,全篇都是为赋新词强说愁,想想现在,尽管没有识尽愁滋味,但那份静下心来写东西的感觉没有了。

也许不止是写东西,包括读东西,当然专业的书籍还是不时的看一看,但“文艺”的书好像跟我就无缘了。前两天,在CJJ意外看到一本东野奎吾的《解忧杂货店》,随手翻一翻本以为是本推理小说,却在扉页告诉我,这不是一本推理小说却胜似一本推理小说。可能东野奎吾那句话是最好的概述:“如今回顾写作过程,我发现自己始终在思考一个问题:站在人生的岔路口,人究竟应该怎么做?我希望读者能在掩卷时喃喃自语:我从未读过这样的小说。”站在人生的岔路口,我该如何选择。。。

很长一段时间了,先自己长时间维护一个自然语言处理有个的项目,也是前前后后想了很久,断断续续试过Alice、藏头诗啥的,也想过做一套中文的knowledge graph,这就像一个点,可以是个偏技术的点,可以偏工程,应该打算慢慢做,还是想做一个有点意思的,偏技术一点的东西。就像做SA,或者说做IR,真正想要做好就得一个一个case的debug,只有这样才有一点点的提高,而不是一个方法,一个方法的去试,这种方法可以试得快,但真正提高结果还是一个苦活,累活。

新的一年了,人总要立一些计划,就像去年还信誓旦旦的立了一个又一个目标,现在看看硬指标一个都没有做到,那样怎么样呢。Just so so。。。有这样的豁达,才能开开心心开始新一年的计划。具体的新年计划还需要再想想,但决定还是好好看看aiml,用aiml做一个中文的chatbot。相对于藏头诗自动生成,这个至少大众一些,相对SA,Summary这个显得更有意思,不需要考虑Evaluation,也不需要做的太学术。相对于knowledge base,KB更多的是做mining,而mining一来是比较低端,而且KB重要的质量,准确性,即便做到这些,KB怎么用也是一个问题,做QA还是Entity Linking,这一个个的都是坑啊。所以想过来想过去,还是做chatbot,然后还是用aiml,还有点意思,如果做EQnA或者Web QA一方面还是要做mining,现在自己来干这种苦活,还不如写点中文的aiml脚本有意思。就这么愉快的决定了~~奔跑吧,骚年~