2013年十月的某天

年纪大了就开始回忆,想起2013年10月,差不多是人生最迷茫的时刻了。

我们总是觉得眼前有很多过不去的坎,实际上人生一直在被挑战,就看你是什么心态。有时候觉得如果到了某个level、某个位置、过了某个时间点就好了,其实哪有那么简单。

读大学的时候,觉得读书太无聊了,快点工作,然后结婚生子,肯定就很开心。后来才发现,自己太天真了。

2002年,升职,销售总监,当时意气风发,结果也就9个月,黯然收场。

2013年10月,在古美路的街头,12号地铁还在修,看着宽阔的马路,但是显着杂乱。那一刻,是完全不知道未来会发生什么的。

很难有人相信,这几年经历了什么。之前亏欠太多,花费了太多,无论是心力,还是精力。将生活、工作都慢慢带入正规。然而,身体还是受到一定的影响。

在街头的时候,自己评估了能力,发现写作和编程还是自己最强的能力,其他都不值一提,所以聚焦于此,猛攻之。这几年,出版了两本书,算是自己勤奋的成果,当时自然也不会想到引起了某些同事的巨大惊慌,而我的情商还有很多不足,于是职业生涯也是多多挫折。好在如今的我,还是认为自己能力有限,必须发挥优势。我可以学习python、人工智能、云计算等,还可以继续学习啊,python这两年发展的越来越快,还有继续提升,IT领域的有趣技术层出不穷,不怕没东西研究。和情商高的小人共事,本身是一种磨练。这世界上的每个人都不是好人坏人那么简单的。既然是为了一些自己抱负和理想,也就像这几年所经历的一样,继续放弃,继续淡定。

上周出版社说样书马上寄到,高兴之余,想起六年前的那个下午,那刻,我迷茫无助的思想。吃亏是福,多寿多福!

每天编程:非常好用的 python 路径文件处理库 pathlib

的确,我之前也是习惯用 os.path.join ,倒是也没有觉得有什么不好,直到我看到了 pathlib,应该是 python 3.x 时代引入的新的专门更加优雅的处理比较麻烦的路径拼接、文件是否存在、路径是否存在等操作系统文件路径相关的Python 官方函数。

比如你可以用 path1 / path2 / filename 这样的简单直观的方法来完成路径和文件名的拼接,通过 PurePosixPath 和 PureWindowsPath 的类显式的兼容多操作系统。

原来的 os 库发展太久了,如同 python 的日期时间库一样,在长时间的进化中包和其函数的结构越来越混乱了。从下面的 os 和 pathlib 的函数比较可见一斑:

os and os.pathpathlib
os.path.abspath()Path.resolve()
os.chmod()Path.chmod()
os.mkdir()Path.mkdir()
os.rename()Path.rename()
os.replace()Path.replace()
os.rmdir()Path.rmdir()
os.remove()os.unlink()Path.unlink()
os.getcwd()Path.cwd()
os.path.exists()Path.exists()
os.path.expanduser()Path.expanduser() and Path.home()
os.path.isdir()Path.is_dir()
os.path.isfile()Path.is_file()
os.path.islink()Path.is_symlink()
os.stat()Path.stat()Path.owner(),Path.group()
os.path.isabs()PurePath.is_absolute()
os.path.join()PurePath.joinpath()
os.path.basename()PurePath.name
os.path.dirname()PurePath.parent
os.path.samefile()Path.samefile()
os.path.splitext()PurePath.suffix

Pathlib 非常完美的体现了 Python 的优雅,更多信息可以参考官方文档。打算将 fishbase 中的一些封装的文件处理函数逐步更换为对 Pathlib 的封装,Python 2.7 实在没有必要支持了。

Python 3.6 时代终将结束 迎接 3.7.x

今天看到

“Python 3.6.8 is planned to be the last bugfix release of Python 3.6. Per our support policy, we plan to provide security fixes for Python 3.6 as needed through 2021, five years following its initial release.”

Python 3.6.8 作为 3.6.x 的最后一个错误修订版本了,之后 Python 将全面转向 3.7.x。我觉得影响不是很大,Python 3.7 系列是完全兼容 3.6的,并且很多地方有了提升,一些新特性也不错。

每天编程:jupyter notebook 安装错误问题解决

用新的 wordpress 5.0 的编辑器进行编辑,还有点不习惯,感觉功能很强大的样子。之前还在担心 wordpress 那么多年江郎才尽,完全不需要,就如同我们在思考微信还能玩出什么花样,人家的 7.0 开始玩 vlog,整体界面的设计又更加好看,或者不同了。

jupyter notebook 是我们用来学习和教学 Python 时候非常好的工具,python 这几年的流行推广离不开 jupyter 在背后的功劳,其他语言中都没有看到过这么强大的交互工具,即便 Apple 当年推出 swift 时候的 playground 都略逊一筹。

只是不知道什么时候开始,大约是我在我的笔记本上安装过的 python 版本太多了缘故,不知道什么开始,jupyter nootbook 就不能正常启动了。

解决方法试了很多种,如果你得到的报错结果也是诸如 image not found,并且是从 zmq 这里出问题的话,删除你安装的 pyzmq 和 zmq,然后重新安装,就可以了。如果万一还没有好,所有相关 python 目录,比如你是用 anaconda 安装的话,就把不同的 python 环境下的这些包都删除,再重新安装。

从 WordPress 5.0 已经发布开始遐想

其实记不清是从 WordPress 哪个版本开始使用的,这么多年来,WordPress 也像 Office 一样,其实功能够用了,加上其无比强大的插件体系。可是 WordPress 依然在努力的改进和更新。

未必是看到自己的不足,却看到更好的未来。

这样的大局观,让我很钦佩。

最近几年一直在做一些技术创新,很艰难,很多时候选择了放弃,很多时候不得不放弃。现在想想,却不必自怨自艾。很多事情要坚持,总不会太差。

智商和情商以及种种,在职业上已经让我很难突破,但是谁都不可以阻碍我对电脑技术的热爱。2015年,学习 Python,为了考验自己的 Python 能力,先是2016 年做了一年业余的 Python 老师,然后2017年和同事一起写了 Python 的书;2017年年底开始接触阿里云的技术,顿感惊讶,仿佛看到另外一个世界,于是2018年的半年多业余时间,又是奋笔疾书,能力不够就靠勤奋来补,这本“冲上云霄”2019年年初应该可以付梓吧。而今年,在工作实践中,几方面的探索都让我倍感欣慰,DevOps 的实践探索,开发管理的精细化,Python 的进击,复杂 IT 项目的管理艺术。

这样想想,也很开心。虽然怀念在天目路上海银行的时候,并无人管我具体技术工作,一个人可以开开心心的研究各类开发项目。现在,背负的责任重了很多,很多无奈,很多无法平衡的平衡,但是,舞台却更大了。

舞台大了,心也需要更大。

明年要不要继续写作的节奏,是浸淫多年的 IT 项目管理,还是 DevOps ?哈哈!人生需要一些疯狂。

PyCharm 2018.1 新版本发布

PyCharm 2018.1 新版本如期而至。

对于 Python 3.7 的支持,比如 dataclasses。

更加智能的代码提示。

对单元测试更好的边栏支持。

科学研究模式可以运行部分指定的代码。

通过 conda 环境来支持建立一个科学数据研究项目。

Flask CLI 的支持。(Flask 在目前版本支持 Click 的命令行功能,现在 PyCharm 直接支持 Flask CLI 的调试了)

对于 TypeScript 2.7 的完整支持。

版本管理支持部分提交、更好的 rebase 支持。

远程开发方面支持更容易配置的基于 SSH 的 Python 调试器,提高了对于 Docker Compose 3.3 的支持。

PyCharm 包含了 JetBrainstorm DataGrip 的所有功能。

一直感觉,PyCharm 已经是非常完美的工具,甚至觉得它的功能太多了,已经复杂的很,没想到,依然继续提升,继续跟进所有的技术开发潮流。佩服!

Python 机器学习实战 终于出版

更新:京东购买本书的链接: https://item.jd.com/12289823.html


经过了半年的折腾,书终于出版了,因为春节缘故影响物流,京东等要购买的话需要到3月初。

自己再看写的内容,实在有点惭愧,感觉很多问题没有说清楚,有些可以写得更好。整个目录结构也不尽合理。有机会出第二版再修订吧。

总的来说,还算不容易,完成了一个小小的梦想。

Lazarus 1.8.0 发布

基于 freepascal 3.0.4 的 Lazarus 1.8.0 在12月初发布了。比较了 Delphi 之后的 GUI 开发工具,特别是在用 Python 的时候,也很不死心的想看看怎么样用 Python 来开发桌面应用,不管是基于 Qt,或者 Python 自带的 Tk,都一般吧。或许 Delphi 曾经太强大,已经超过了同时代的所有产品。VB 我已经要二十年不使用了,不知道如何,dotnet 架构现在应该也可以运行在 OSX 下了。

虽然 gdb 的安装还是很奔溃,Borland 当年的 Turbo C 2.0 横空问世现在想想是一件很恐怖的事情,在差不多20年前的电脑上,Delphi 可以几乎几秒就完成一个程序的编译。如果没有 IDE 的话,我们要耗费多少时间在安装、配置以及每次冗长的编译过程。其实 Delphi 还是占据了当前开发市场不小的份额,不过,太贵了。

偶尔如果需要写一些跨平台的小工具,那么 Lazarus 或许是不错的选择,Lazarus 的风格还是像一个增强版的 Delphi 7,不过也的确够用了。

最关键还是配合 Lazarus 和 FreePascal 背后的这些程序员、项目组织者,很不容易,坚持这么多年,逐步完善。

Flake8 Rules

The standardization of writing in programming languages is very important, good programming practices can prevent a lot of bugs.

Python is a language with more freely formatting, so it’s important to follow the famous flake8 rules.

The following article explains in detail every rule of the Flake8, it’s worth learning.

The Big Ol’ List of Rules

I like Pycharm because it can automate monitoring of these rules, so we can write the elegant Python program.