现在的一切便是最好的

一直有写博客的习惯。还在学校的时候,经常会查一些资料,过了一段时间需要再用的时候,发现找不到了。后来学会了用浏览器的收藏夹,最后又发现收藏的网址越来越多,也越来越乱,而且很多网址最后几乎都没再去打开过。于是,才打算自己写博客。最开始的目的只是想做个备份,把别人的文章复制过来粘贴上,文末标上原文链接。 每个人对同一个问题的看法,或者描述都会有不一样。所以,后来我发现对于同一个问题很多别人写的博客文章都值得参考,但总不能一一把它们都 copy 过来吧,这样未免有些麻烦。嗯,我打算进行一下归纳和总结,不在直接复制了。这样一来,对于一个问题,我会先查阅很多资料,然后梳理思路,思考,最后按照...

阅读更多

Git 多平台换行符问题(LF or CRLF)

自从工作以后,基本上没有接触过 Windows 系统,偶尔使用 Windows 也是因为要写文档,Linux 下勉强可以用 WPS Office,但是格式与同事的不兼容,也算是迫不得已。而对我自己来说,大部分的文档都用 Mardown 来搞定。在很长一段时间里,我是很鄙视 Windows 的。 使用 Windows 系统时的诸多体验是让人讨厌的。感觉其大部分软件都很笨重,软件装得多了,磁盘就不够用了。不喜欢安装一个软件时捆绑安装一大堆无用的软件。不喜欢一些软件时不时的广告弹窗。 一些人说,玩 Linux 大部分时间都花在了折腾上,是的,的确是这样。首先是,Linux 的桌面不尽如人意...

阅读更多

Python 如何处理模块和包有相同名字的情况

在编程开发中,个人觉得,只要按照规范去做,很少会出问题。刚开始学习一门技术时,的确会遇到很多的坑。踩的坑多了,这是好事,会学到更多东西,也会越来越觉得按照规范做的重要性,规范的制定就是用来规避问题的。有时候确实应该听听有经验人的建议,不要一意孤行。这好像不是本文的重点,其实我重点是想表达,尽量按规范做事,这样会少走很多弯路。 我现在使用的主力编程语言是 Python,在接触 Python 至今,我感觉我踩的坑还是极少的,基本上没有遇到什么奇怪的问题。实际上,这并不是一件好事,不踩坑,很多躺在暗处的知识点你不会了解,所以也很难成长。幸好,有一些会踩坑的同事。 一同事问我,在 Pytho...

阅读更多

一个命令行 Python 工具 -- Pythonpy

Pythonpy 是一个可以在命令行直接执行简单 Python 表达式的工具。 安装: pip install pythonpy 使用: $ py --help usage: py [-x] [-l] [-c PRE_CMD] [-C POST_CMD] [-V] [-h] [expression] positional arguments: expression e.g. py '2 ** 32' Options: -x treat each row of stdin as x -l treat list...

阅读更多

Python 模块简介 -- collections

Python 的内置数据数据类型包括 str, int, list, tuple, set, dict 等,有时候这些数据类型可能满足不了我们的需求。不过标准库的 collections 模块在这些内置数据类型的基础上,提供了几个额外的数据类型: 类型 说明 备注 namedtuple 命名元组,使用名字访问元素 New in version 2.6. deque 双端队列,可以快速的从头/尾两端添加或删除元素 New in version 2.4. Counter 计数器,用于对某项数据进行计数 New in version 2.7. OrderedDict 有...

阅读更多

Python 内层名字空间访问外层名字空间中的变量

某天,一位新来的同事问我,在 Python 的函数中,怎么定义一个像 C 语言中的 static 变量。就像这样: void foo(void) { static int a = 0; ... } 已经抛弃 C 好长时间了,现在工作和业余都在使用 Python,也习惯用 Python 去思考。被问到这个问题时,我一时还真不知道怎么回答,因为在使用 Python 的这么长时间里,我还真没有遇到过这样的需求。当然,Python 自身也不直接支持类似的语法,所以也不会这样去思考。 实际上,他是想要在函数中保持一个变量的状态。经过短暂的思考,我回答他,你可以定义一个全局变量...

阅读更多

Python 解码 Unicode 转义字符串

其实,这里要讨论的内容是针对 Python2 的,实际上也是 Python2 中让人头疼的编码问题,而 Python3 则好处理得多。 先来看看例子: >>> s = "我正在学Python" >>> s '\xe6\x88\x91\xe6\xad\xa3\xe5\x9c\xa8\xe5\xad\xa6Python' >>> s_u = u"我正在学Python" >>> s_u u'\u6211\u6b63\u5728\u5b66Python' >>> print s 我正在学Python &g...

阅读更多

受限的 bash -- rbash

rbash(restricted bash),即受限制的 bash。其可以用作中转服务器,或者仅使用 ssh 来访问网页等等。 实际上 rbash 只是 bash 的一个软连接: $ ls -l `which rbash` lrwxrwxrwx 1 root root 4 Oct 8 2014 /bin/rbash -> bash 如果 bash 以 rbash 为程序名启动或者命令行参数有 -r 选项,则启动的这个 shell 会在某些功能上受限制: 通过 cd 来改变工作目录 设置或取消环境变量: SHELL, PATH, ENV, BASH_ENV 命令名中不能包...

阅读更多