杂货间 类目

存放杂物的地方,默认文章分类目录

光棍节闯关游戏第9关

感谢@t.k.同学指正

你不能给第八关的地址,建议给第七关的地址,因为进入第七关的key是google出来的,应该是一个定值。在我的电脑上就不能进入你的第八关链接。

第七关到第八关的Key就是页面中直接给出让你试试的key,这个key是会变化的,正如t.k.童鞋据说的。打开第八关的地址,然后把表单的method从get修改为post即可进入第9关。第9关的页面是这样的:

查看全文

谈谈正则表达式

最近京东图书在搞活动,就兴起买了几本书,包括余晟老师的《正则指引》,Unix经典书籍《Linux/Unix设计思想》等。我没有看过对《正则指引》这本书的评价,而是因为几个月前无意间在InfoQ上看到余晟老师发表的一篇文章《Linux/Unix工具与正则表达式的POSIX规范》,觉得总结概括的非常好,也解了我平时不少的疑惑,我也向几位朋友推荐过这篇文章。

有些人可能对正则表达式嗤之以鼻,认为它不易维护,晦涩难懂。事实上,他们会有这样的想法是因为对正则不了解(或者其它)。我一直坚信存在就是合理的,正则表达式的出现,并且在众多编程语言和许多工具中都得到支持,必然有它独具魅力的一面。假设你想检查一个邮箱地址是否合法,如果不用正则表达式,请问你会用什么来处理呢?自己编写一段复杂的字符串匹配的代码吗?若已用好的工具,何必再推倒重头再来,站在巨人的肩膀上,可以走得更远。

正则表达式是处理文本和字符串的利器,不过武器虽锋利,但是还是需要人用得好。我觉得正则表达式的长度不应该过长,短小则精悍,用《Linux/Unix设计思想》中的一条原则来说,则是“小即是美”。过长的正则表达式才真得会让人晦涩难懂,我估计即使写出这些正则表达式的人过段时间后也不见得能够解释清楚。例如针对URL地址的匹配,可以在网上找到很多人给出的正则表达式。其中,有些为了严格遵循标准定义的URL规范,给出的正则往往如天书般。我记得曾经看到过一个更加长的表达式,不过忘记地址了。相信看到这种表达式,大家都没有复制的兴趣了吧,有时候必须在功能和性能(或者可用性,可维护性)之间做出选择的。

回头继续说正则表达式,我一直对脚本编程非常感兴趣,而脚本语言往往对正则的支持比较好,例如Perl、Python等。因此,很早就接触了正则表达式。而今,因为工作的需要(运维),往往有更多机会用到正则表达式,这样可以节省我非常多的时间,并且得到的效果也是很好的。正则表达式发展到现在,事实上流派已经很多了。不同的语言不同的工具对正则的支持实现都不一样。我所接触过的,JavaScript中的正则相对比较弱,Python中的正则已经比较完善了,而像Linux下面的一些工具,例如sed、grep、vim等,它们所提供的正则一般和编程语言中的不大一样,即使工具之间也会有很多区别。

查看全文

Windows右键添加新建项

有时候写代码的时候,要新建一个文件,假如是.py。那么首先我们得新建一个文本文件(.txt),然后再重命名成xxx.py,因为改变文件扩展名的缘故,还会弹出一个确认的对话框。非常烦,那么有适合懒人的方法吗?答案是肯定的,只要你肯去找,网上的方法非常多。

Windows下一些定制或者或少要去修改注册表,说实话,对Windows的注册表真得不是非常感冒,但是Windows许多神秘的东西都隐藏在这里。

首先创建一个文本文件,改名为add_item_in_new_context.reg(注册表文件是以.reg为扩展名的)。然后将以下内容写到该文件中:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\.py\ShellNew]
"FileName"="sample.py"
"NullFile"=""

该文件的目的是在HKEY_CLASSES_ROOT\.py路径下创建一个项ShellNew,并在该项下创建一些键值。ShellNew就是对应于右键新建菜单,换句话说,如果要删除不要的新建项目,也可以在注册表中删除对应的ShellNew项。而FileName这个键的目的是,在新建的时候使用一个模板文件来创建,有时候代码都是需要在文件开始处放一些注释和说明的,那么可以写一个sample.py:

#!/bin/env python
# coding=utf-8

'''A simple sentence to describe the function of this module.

Add detailed description here if need.

Eample:
    # python ./sample.py -t
    # ...
'''

# Can be 'Prototype', 'Development', 'Product'
__status__ = 'Development'
__author__ = 'yourname <yourname @example.com>'

# Add your code here
# Delete the description when you start coding.

def usage():
    '''Show script help information.'''
    pass

def main():
    '''The main entry.'''
    pass

if __name__ == '__main__':
    main()

# vim: set expandtab smarttab shiftwidth=4 tabstop=4:

然后把sample.py放到C:\Windows\ShellNew目录,现在再试试右键新建,会出现Python文件。

不过我并没有用这种方法,让.sh文件也成功,有空再研究下。