摘要:
【shell-array】Creating Array:1 $ names=("Bob" "Peter" "$USER" "Big Bad John")2 $ names=([0]="Bob" [1]="Peter" [20]="$USER" [21]="Big Bad John")3 # or...4 $ names[0]="Bob"You can get the number of elements of an
阅读全文
posted @ 2013-12-06 14:11
Tekkaman
阅读(317)
推荐(0)
摘要:
[bash's parameter expansion] #: find first from left, remove-left ##: find last from left, remove left %: find first from right, remove right %%: find last from right, remove right example 1:1 parameter result2 ----------- ------------------------------3 ${NAME} polish.ostrich.racing.cha...
阅读全文
posted @ 2013-12-06 14:05
Tekkaman
阅读(303)
推荐(0)
摘要:
[bash's [ command & [[ keyword][ (test) command: bash中的条件测试語句, [ condition ], 并不是一个語句, 而是一个命令, 命令的名字是 [ , 这个命令期待最后一个参数是 ] . 在terminal中键入 whereis [, 可以看到[ 命令被放在系统中的哪个地方. [[ keyword: [[是[的扩展, 是bash中的keyword,提供比[更强大的功能, 更方便的使用方法. Special primitives that[[is defined to have, but[may be lacking (
阅读全文
posted @ 2013-12-04 10:02
Tekkaman
阅读(259)
推荐(0)
摘要:
[python's fnmatch&glob&os.listdir]fnmatch: fnmatch只有4种special character,用于提供和shell中一样的文件名的匹配. For a literal match, wrap the meta-characters in brackets. For example,'[?]'matches the character'?'. 主要函数有: fnmatch.fnmatch(), fnmatch.fnmatchcase(), fnmatch.filter(), fnmatch.t
阅读全文
posted @ 2013-12-03 14:15
Tekkaman
阅读(932)
推荐(0)
摘要:
【python's unittest】 unittestsupports some important concepts: 从上图可以看到,unittest中的test-case、test-suit概念和一般的unittest中的内容没有区别。 下面给出编写单元测试的示例: 编写要点: 1、继承自unittest.TestCase。 2、setUp、tearDown就是所谓的fixture。 3、测试函数以test开头。 开启测试: TheTestCaseclass provides a number of methods to check f...
阅读全文
posted @ 2013-12-02 23:11
Tekkaman
阅读(217)
推荐(0)
摘要:
[python 文件的读取&更新] 任务抽象: 读取一个文件, 更新内容后, 重新写入文件. 实际应用: 磁盘上的一个配置文件, 读入内存后为一个dict, 对dict更新后重新写入磁盘. demo: 关键应用在于读取文件后,使用seek&truncate把文件给清空, 然后再写入.参考:http://docs.python.org/2.7/library/stdtypes.html#file-objects
阅读全文
posted @ 2013-12-02 18:42
Tekkaman
阅读(2820)
推荐(0)
摘要:
[linux fg&bg]Linux 提供了 fg 和 bg 命令,让我们调度正在运行的任务。假设你发现前台运行的一个程序需要很长的时间,但是需要干其他的事情,你就可以用 Ctrl-Z ,挂起这个程序,然后可以看到系统提示(方括号中的是作业号): [1]+ Stopped /root/bin/rsync.sh然后我们可以把程序调度到后台执行:(bg 后面的数字为作业号) #bg 1 [1]+ /root/bin/rsync.sh &用 jobs 命令查看正在运行的任务: #jobs [1]+ Running /root/bin/rsync.sh &如果想把它调回到前台运
阅读全文
posted @ 2013-12-02 15:10
Tekkaman
阅读(779)
推荐(0)
摘要:
【python's metaclass】 和objc中类似,metaclass用于创建一个类对象,但与objc不同的是,objc中每个类对象有各自不同的metaclass,而python中的metaclass主要用于创建class object。 首先,type可以像这样工作: __metaclass__属性 那么在__metaclass__中放置些什么代码呢? This allows classes or functions to be written which monitor or alter the class creation process.参考: 1...
阅读全文
posted @ 2013-12-01 23:41
Tekkaman
阅读(263)
推荐(0)
摘要:
【python's descriptor】1、实现了以下三个方法任意一个的,且作为成员变量存在的对象,就是descriptor。 1)object.__get__(self,instance,owner):instance是实例的引用,owner是类对象的引用。 2)object.__set__...
阅读全文
posted @ 2013-12-01 22:03
Tekkaman
阅读(286)
推荐(0)
摘要:
【__str__&__repr__】 object.__str__(self): Called by the str() built-in function and by the print statement to compute the “informal” string representat
阅读全文
posted @ 2013-12-01 20:17
Tekkaman
阅读(319)
推荐(0)
摘要:
【python要点之III】1、实现交换。 在C/C++中,交换两个变量,需要2个变量,tmp=x;x=y;y=tmp;。 在python中,交换两个变量可以这么写:x,y=y,x。2、is&is not操作符用于测试两个变量是否指向同一个对象。 a is b 等价于 id(a)==id(b)。3、//是地板除运算符。4、[::x]是步长切片,例如:s='abcdefgh',则s[::2]的结果是'aceg'。5、__dict__内部cpython实现使用了hash_table,非常耗内存,为了节省内存,可以在定义属性时使用__slots__,__slo
阅读全文
posted @ 2013-12-01 19:52
Tekkaman
阅读(309)
推荐(0)
摘要:
【python's is&==区别】 通常我们写: 1 if foo is None: pass 这个写法与以下的写法有何区别呢? 1 if foo == None: pass is当比较的是相同的对象实例时总是返回True。而==则完全决定于__eq__()方法的实现。例如:1 >>> class foo(object):2 def __eq__(self, other):3 return True4 5 >>> f = foo()6 >>> f == None7 True8 >>> f is None9
阅读全文
posted @ 2013-12-01 17:48
Tekkaman
阅读(342)
推荐(0)
摘要:
[python's decorator&wrapper] decorator A function returning another function, usually applied as a function transformation using the @wrapper syntax.
阅读全文
posted @ 2013-11-29 18:32
Tekkaman
阅读(477)
推荐(0)
摘要:
[objects & values & types] 1、Every object has an identity, a type and a value. An object’s identity never changes once it has been created; you may th
阅读全文
posted @ 2013-11-29 15:23
Tekkaman
阅读(448)
推荐(0)
摘要:
[linux sort命令]sort的-t选项和-k选项如果有一个文件的内容是这样:[rocrocket@rocrocket programming]$ cat facebook.txtbanana:30:5.5apple:10:2.5pear:90:2.3orange:20:3.4这个文件有三列,列与列之间用冒号隔开了,第一列表示水果类型,第二列表示水果数量,第三列表示水果价格。那么我想以水果数量来排序,也就是以第二列来排序,如何利用sort实现?幸好,sort提供了-t选项,后面可以设定间隔符。(是不是想起了cut和paste的-d选项,共鸣~~)指定了间隔符之后,就可以用-k来指定列数了
阅读全文
posted @ 2013-11-28 18:58
Tekkaman
阅读(500)
推荐(0)
摘要:
[partial function] functools.partial(func[,*args][, **keywords]) Return a newpartialobject which when called will behave likefunccalled with the positional argumentsargsand keyword argumentskeywords. If more arguments are supplied to the call, they are appended toargs. If additional keyword argume..
阅读全文
posted @ 2013-11-28 16:07
Tekkaman
阅读(538)
推荐(0)
摘要:
[proc文件系统]/proc --- 一个虚拟文件系统/proc 文件系统是一种内核和内核模块用来向进程 (process) 发送信息的机制 (所以叫做 /proc)。这个伪文件系统让你可以和内核内部数据结构进行交互,获取 有关进程的有用信息,在运行中 (on the fly) 改变设置 (通过改变内核参数)。 与其他文件系统不同,/proc 存在于内存之中而不是硬盘上。/proc 由内核控制,没有承载 /proc 的设备。因为 /proc 主要存放由内核控制 的状态信息,所以大部分这些信息的逻辑位置位于内核控制的内存。对 /proc 进行 一次 'ls -l' 可以看到大部
阅读全文
posted @ 2013-11-28 13:59
Tekkaman
阅读(340)
推荐(0)
摘要:
[readlink 获取当前进程对应proc/self/exe] shell中readlink/proc/self/exeREADLINK(2)NAMEreadlink-readvalueofasymboliclinkSYNOPSIS#includessize_treadlink(constchar*path,char*buf,size_tbufsiz);参考:http://hi.baidu.com/liujtm/item/e04202de560908f693a97414
阅读全文
posted @ 2013-11-28 13:23
Tekkaman
阅读(5701)
推荐(0)
摘要:
【工作组 Work Group】 在一个网络内,可能有成百上千台电脑,如果这些电脑不进行分组,都列在“网上邻居”内,可想而知会有多么乱。为了解决这一问题,Windows 9x/NT/2000就引用了“工作组”这个概念,将不同的电脑一般按功能分别列入不同的组中,如财务部的电脑都列入“财务部”工作组中,人事部的电脑都列入“人事部”工作组中。你要访问某个部门的资源,就在“网上邻居”里找到那个部门的工作组名,双击就可以看到那个部门的电脑了。 那么怎么加入工作组呢?其实很简单,你只需要右击你的Windows桌面上的“网上邻居”,在弹出的菜单出选择“属性”,点击“标识”,在“计算机名”一栏中添入你想好..
阅读全文
posted @ 2013-11-20 22:06
Tekkaman
阅读(874)
推荐(0)
摘要:
[python传值&值引用] 和其他语言不一样,传递参数的时候,python不允许程序员选择采用传值还是传引用。Python参数传递采用的肯定是“传对象引用”的方式。实际上,这种方式相当于传值和传引用的一种综合。如果函数收到的是一个可变对象(比如字典或者列表)的引用,就能修改对象的原始值--相当于通过“传引用”来传递对象。如果函数收到的是一个不可变对象(比如数字、字符或者元组)的引用,就不能直接修改原始对象--相当于通过“传值'来传递对象。 python一般内部赋值变量的话,都是传个引用变量,和C语言的传地址的概念差不多。可以用id()来查询内存地址.如果a=b的话, a和b的
阅读全文
posted @ 2013-11-20 17:31
Tekkaman
阅读(466)
推荐(0)
摘要:
[Unpacking Argument Lists] The reverse situation occurs when the arguments are already in a list or tuple but need to be unpacked for a function call requiring separate positional arguments. For instance, the built-inrange()function expects separatestartandstoparguments. If they are not available s.
阅读全文
posted @ 2013-11-20 17:26
Tekkaman
阅读(335)
推荐(0)
摘要:
【Function Names as Strings】GCC provides three magic variables that hold the name of the current function, as a string. The first of these is__func__, which is part of the C99 standard(old):The identifier__func__is implicitly declared by the translator as if, immediately following the opening brace o
阅读全文
posted @ 2013-11-19 22:32
Tekkaman
阅读(370)
推荐(0)
摘要:
【linux主机名】 1、查看主机名 主机名即是一台主机的名字,在终端窗口中输入命令:hostname或uname –n,均可以查看到当前主机的主机名。2、临时修改主机名 命令行下运行命令:“hostname 新主机名”,不过采用这种方式,新主机名并不保存在系统中,重启系统后主机名将恢复为原先的主机名称。 例子:hostname ubuntu-temp 这样主机名字就临时被修改为ubuntu-temp,但是终端下不会立即显示生效后的主机名,重开一个终端窗口(通过ssh连接的终端需要重新连接才可以);3、永久修改主机名 在Ubuntu系统中永久修改主机名也比较简单。主机名存放在/et...
阅读全文
posted @ 2013-11-19 22:18
Tekkaman
阅读(517)
推荐(0)
摘要:
【how to deal with EINTR fault】 EINTR:interupted error。是指一个调用被信号给中断,对于同步的耗时调用来说,这个操作常见,譬如select、read、write。SocketServer.py中有一个_eintr_retry()函数提供了解决此种问...
阅读全文
posted @ 2013-11-10 15:46
Tekkaman
阅读(305)
推荐(0)
摘要:
【python's try&except&else】 python的try&catch有个好用的东西,else,即try&except&else可以共用,else用于当无异常时执行。socket.getfqdn就是一个教科书般的例子。 except元组:对于 except ValueError, e,这并不会产生一个元组,而是ValueError as e。【自定义异常】 exceptinos是python内置的一个module,一些常用的标准异常也被内置,其中BaseException是所有内置异常的基类,Exception也继承于BaseEx
阅读全文
posted @ 2013-11-09 22:43
Tekkaman
阅读(1101)
推荐(0)
摘要:
[python's output redirect]fin = open("xx.txt", 'r');print >>fin, "hello world", 12;fin.close();
阅读全文
posted @ 2013-11-08 17:06
Tekkaman
阅读(330)
推荐(0)
摘要:
[Daylight Saving Time] 夏时制,又称日光节约时制、日光節約時間(英语:Daylight saving time)或夏令时间(英语:Summer time),是一种为节约能源而人为规定地方时间的制度,在这一制度实行期间所采用的统一时间称为“夏令时间”。一般在天亮早的夏季人为将时间提前一小时,可以使人早起早睡,减少照明量,以充分利用光照资源,从而节约照明用电。各个采纳夏时制的國家具体规定不同。目前全世界有近110个国家每年要实行夏令时。 具体作法是:每年从四月中旬第一个星期日的凌晨2时整(北京时间),将时钟拨快一小时,即将表针由2时拨至3时,夏令时开始;到九月中旬第一个...
阅读全文
posted @ 2013-11-08 12:20
Tekkaman
阅读(926)
推荐(0)
摘要:
[python's os.system&os.spawn] os.system会新建一个子shell,在子shell中执行传入的sh脚本。os.spawn用于执行一个bin,产生一个子进程。所以这2个东西表面看来是不一样的。 不过通过精心构造的sh脚本,也可以通过os.system实现os.spawn的功能,但是麻烦。 参考:http://docs.python.org/2.7/library/os.html
阅读全文
posted @ 2013-11-08 11:17
Tekkaman
阅读(3318)
推荐(0)
摘要:
[python's default parameter] 对于值类型(int、double)的default函数参数,函数不会保存对默认类型的修改。对于mutable objectd类型的默认参数,会有累积效应。 参考:http://docs.python.org/2.7/tutorial/controlflow.html
阅读全文
posted @ 2013-11-08 10:11
Tekkaman
阅读(465)
推荐(0)
摘要:
【protobuf's custom-options】 protobuf可以设置属性,就像__attribute__可以给函数设置属性一样,protobuf更牛的是可以设置自定义属性。实际就是属性对象,用于描述一个属性。 protobuf可设置的属性如下: 需按如下方式使用: 代码中需要按如下方式来获取值。 参考:https://developers.google.com/protocol-buffers/docs/proto#options
阅读全文
posted @ 2013-11-07 23:02
Tekkaman
阅读(960)
推荐(0)
摘要:
【protobuf's extension】 extension允许第三方扩展协议,开发方需要像下面这样定义: 扩展方需要像下面这样扩展: 使用的时候必须用SetExtension方法: 参考:https://developers.google.com/protocol-buffers/docs/proto#extensions
阅读全文
posted @ 2013-11-07 22:46
Tekkaman
阅读(1026)
推荐(0)
摘要:
[the difference between fopen&open] fopen是C标准API,open是linux系统调用,层次上fopen基于open,在其之上。fopen有缓存,open无缓存,对于顺序读取,fopen更高效。 参考:http://www.cnblogs.com/joeblackzqq/archive/2011/04/11/2013010.html
阅读全文
posted @ 2013-11-07 18:48
Tekkaman
阅读(243)
推荐(0)
摘要:
[why inline functions must be put in header files?] 编译中有2个过程:compile、link。先进行compile,compile中把源代码编译成目标代码(.obj),然后是link,把目标代码(obj)中的外部符号替换为真实的地址。 inline函数的作用是减少函数调用而直接使用函数内部内容,显示是发生在compile阶段。所以如果把inline函数放在cc文件中,则compile过程中无法实现inline效果,连接器将给出 “unresolved external” 。 事实上,inline一个函数,也意味着给该函数加上了stat...
阅读全文
posted @ 2013-11-07 18:41
Tekkaman
阅读(380)
推荐(0)
摘要:
[sed] sed 用于多文本行处理,使用规则与vi中的类似,vi适用于单一文本的处理,sed适用于多文本。 参考:http://man.lupaworld.com/content/manage/ringkee/sed.htm
阅读全文
posted @ 2013-11-07 11:23
Tekkaman
阅读(230)
推荐(0)
摘要:
[多文件文本替换] 用grep可以在多文件中查找到需要查找的字符,但是想要替换这些查找到的字符呢?vi中可以通过:s/src/dst/g方法来替换,但只能针对一个文件。多文件场景的替换需要使用sed。sed -i "s/oldstring/newstring/g" `grep oldstring -rl yourdir`批量处理通过grep搜索出来的所有文档,将这些文档中所有的oldstring用newstring替换(-i参数表示直接对目标文件操作, -l表示只输出文件路径)sed更詳細用法请参考:http://www.cnblogs.com/shineshqw/arti
阅读全文
posted @ 2013-11-05 18:30
Tekkaman
阅读(423)
推荐(0)
摘要:
【Website蝴蝶结构】 网页的其正向链接连结在一起表现为一种蝴蝶结结构。 1、蝴蝶结中部(SCC, Strongly Connected Componnet) 这种网页彼此相连。 2、蝴蝶结左部(IN) 导航页居多,通过这类网页,可以正向链接到SCC。 3、蝴蝶结右部(OUT) 权威性网页,因为大多数SCC都链接向了这些站点。 4、蝴蝶结的须脚(Tendrils) 无论采用何种方法都只能遍历有限的网页。 所以,scrawler尽量选择IN部分的网页,另外可以看出,正向链接远大于反向链接的网页,就是权威网页。【Website直径】 从网页A链接到网页...
阅读全文
posted @ 2013-10-27 13:08
Tekkaman
阅读(1200)
推荐(0)
摘要:
【Information Retrieval II】 搜索引擎分类: 1、目录式搜索引擎。 2、全文搜索引擎。 3、元搜索引擎(Meta-Search Engine)。 搜索引擎的4个阶段:下载(crawl) -> 分析(segment & pagerank)-> 索引(indexing)-> 查询(retrieval)。 crawler,也就是传说中的爬虫,或者蜘蛛。 下载、分析、索引被称为“离线部分”(offline part),也叫做在线系统;查询部分被称为“在线部分“(online part),也叫做离线系统。在线系统需要毫秒级的访问速度,而离线系统无时间..
阅读全文
posted @ 2013-10-27 00:10
Tekkaman
阅读(264)
推荐(0)
摘要:
【epoll】 epoll是一个比select模型更高效的异步模型,select一次查询需要O(N),epoll需要O(1),因为epoll可以直接获得结果,而select需要用所有当前的fd去readable fd set中检察。epoll很简单,推荐使用libevent,epoll只在linux下有效,libevent提供了统一的接口,内部使用各个平台独有的设施来完成功能。int epoll_create(int size);int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event);EPOLL_CTL_ADD ..
阅读全文
posted @ 2013-10-25 21:29
Tekkaman
阅读(385)
推荐(1)
摘要:
【hash_map】 STL中的std::map内部使用的是红黑树,红黑树有序,每次操作的复杂度稳定在logN。在中,还有一个__gnu_cxx::hash_map,内部使用的是hash,在hash函数恰当的情况下,可以提供更快的查询速度O(1),如果hash函数很烂,使用hash_map,将会是一个灾难,操作复杂度最坏将到O(N)。 内部原理就是“Hash函数映射 + list解决Conflict”。更多可参考:http://blog.csdn.net/sdhongjun/article/details/4517325 我比较好奇的是 这个vector成员,它的默认大小是多少?以及...
阅读全文
posted @ 2013-10-24 23:01
Tekkaman
阅读(1925)
推荐(0)
摘要:
[BloomFilter] 错误率估计、最优哗哈希函数个数、位数组的大小 尚未细看。以看补上。 参考:http://blog.csdn.net/jiaomeng/article/details/1495500
阅读全文
posted @ 2013-10-24 17:01
Tekkaman
阅读(214)
推荐(0)