mac osx 下建立 python package 以及在github 上开源项目的操作过程

怎么建立一个 python 包,并且发布到 pypi,有很多文章介绍了。同样,怎么在 github 建立一个开源项目,也不难。

把这两个事情一起做,加上我用 pycharm 来辅助完成 python 包的建立,以及用 source tree 来管理 github 项目,事情可就不少了。

小结一下经验体会:

1 建立 python 包,网上大部分教程没什么问题,如果用 pycharm 会更加容易一些,在菜单 Tools 中,会看到 Create setup.py,pycharm 会做一些目录结构调整、生成最基本的需要的文件,以及输入版本作者之类的事情。

2 文件结构转换为包的形式后,pycharm 很聪明的会在菜单 Tools 中,增加一个 Run setup.py Task。可以节约一些工作量,比如 sdist,这是必须执行的,upload 上传也是必须执行的。不过这里有一个坑,在 sdist 执行好之后,就可以选择 install 命令安装自己的包,然后在程序里面 import 什么都可以了,但是如果这时候你想上传 pypi 可能会报错:

error: no dist file created in earlier command

 

当然,肯定已经在 pypi 注册过用户了,查了不少资料,原来是要先这样操作:

python setup.py sdist upload

 

没有在 pycharm 中找到相应的命令,在终端模式下输入吧。

然后就可以 upload 了。所以,如果你 upload 到 pypi 同样碰到上面的错误,不妨试试看先这样操作一下。

来源这个老外的博客文章,写的很有趣也很清楚。

补充:直接执行上面的命令,应该是连 sdist 和 upload 一起都运行了,这样是最方便的。

running sdist
running check
warning: sdist: manifest template 'MANIFEST.in' does not exist (using default file list)

writing manifest file 'MANIFEST'
creating fish_base-1.0.2
creating fish_base-1.0.2/fish_base
making hard links in fish_base-1.0.2...
hard linking README.txt -> fish_base-1.0.2
hard linking setup.py -> fish_base-1.0.2
hard linking fish_base/__init__.py -> fish_base-1.0.2/fish_base
Creating tar archive
removing 'fish_base-1.0.2' (and everything under it)
running upload
Submitting dist/fish_base-1.0.2.tar.gz to https://pypi.python.org/pypi
HTTP Error 500: Internal Server Error
error: HTTP Error 500: Internal Server Error

 

看这里的操作,当 upload 后,显示了错误的信息,但是到 pypi 上看,已经传上去了,略有奇怪,可能这里的网络不稳定。

3 github 中碰到的问题,就是 https 模式下,用户名密码始终通不过验证,然后换成用 ssh 证书模式,按照 github 上的操作是最靠谱的,并且他们区分了不同操作系统,个人私钥的文件名一定要叫 id_rsa,反正我这里不叫这个就是通不过。
严格按照 github 上的步骤,以及测试 ssh 是否通顺的方法,如果不能通过,肯定是不能用的。

4 在项目的 .git 目录下,有一个 config 文件,可以修改其中的 https 模式到 ssh 模式。

5 osx EI Capitan 在 Finder 中显示隐藏信息的方法和之前版本有所改变:

defaults write com.apple.finder AppleShowAllFiles -bool true
killall Finder  

 

关键是后面那句。

source tree 作为一个免费强大的版本管理软件,没什么好说的,使用起来也很方便。

好了,我要修改代码了,为了试验,所传的项目代码都很烂,需要好好修改一下。

松江某地

2011年,刚到现在公司,大概一个多月,就带领几位同事去松江某宾馆封闭开发。

昨天刚从那里回来,因为又有一个项目在那里封闭开发。见到了当年的那间小小的会议室,如今放了两台跑步机,没有钥匙,不能进去。

不知道我哪里做的不好,当年跟我去封闭开发的同事在之后一年都离开了,且后来知道,当时其实也是暗流涌动。

晚上,跟同事的车到大学城去买夜宵,比起2011年时候,热闹了很多。

公司每年都会有若干个项目需要产品、开发、测试、UED等团队一起封闭开发,记得2011年是在松江,2012年我们选在公司附近的汉庭,条件不行,但当时也做出了一个很震撼的产品,至今都影响深远,然后2012和2013年,还在闸北某地的锦江之星搞过几次,2015年两次都在松江。回忆起来,仿佛历历在目。

公司成长了,总是好事情,一个稳定发展的好公司并不多得。

个人也成长了,虽然还是有时候气盛,却不年少了。

松江这个宾馆的景致几乎没有什么变化,而2011年刚去的时候,每天都会拍几张照片,那时是有多么文艺啊。

python 3.x 下载说明以及自带编辑器 IDLE 使用

首先到 python 官网,找到下载链接,目前最新版本是 3.5.1,不建议再使用 2.x 系列了。从 download 链接看到下面这个:

python351_install_start

windows 操作系统只需要下载32位版本即可,对于 python 的学习不会有任何影响,mac 电脑下载对应的最新版本就可以了。

以 windows 操作系统举例,下载后,执行安装程序,如下:

python351_install_start

一般情况下不用做任何修改,几分钟就安装好了,如下:

python351_install_finish

安装好后,在开始菜单找到 python 3.5 程序组,看到其中的 IDLE(Python 3.5 32bit),运行后就会出现下面的 python shell:

python_IDLE

可以在这里输入简单的 python 程序,正确的话,会执行,错误的话,会报错。

python_IDLE_run

不过在这个 shell 里面编辑稍微长一点的 python 程序会比较麻烦,所以,可以在 shell 的 File 菜单里面选择第一项 New File,这时候,一个编辑器窗口就出现了。

在编辑器里可以编写比较长的程序,选择菜单 Run 里面的 Run Module,就可以运行程序,结果会显示在一个 shell 窗口中,就像下面这样,注意在运行程序前是需要保存程序文件的:

python_IDLE_edit

python 作为目前几乎是最流行的脚本语言,有各种各样非常多的开发环境,以及我自己非常喜欢的 juypter(ipython),不过其自带 IDLE 和 python shell 对于初学者来说,已经足够了。

为了一些梦想

今天和一位东方财富网的朋友聊到编程语言,原来他以前也是用 delphi 的,我们都感叹道 delphi 的没落。

如今,我已经是 python 的忠实粉丝了。

一些机缘巧合,现在开始教一些小孩子 python,的确作为入门语言,python 非常不错,相对很容易教。

当然,python 也是入门容易精通难,自己也是觉得越学习越觉得不懂,但是这样的感觉很棒,值得努力,到什么高度是一回事情,只要登高即可。

于是对于 python 的学习,就落实到了两个方面,普及和钻研,会逐渐把自己在教小孩子的过程中整理的讲义、各类举例整理出来,分享给大家。而在公司中,随着 python 也用的越来越多,相对复杂的编程技术。

十多年来,一直努力做着这样 knowlege transfer 的事情,之前的理想空间计划,现在的 python教育,或许这是一个不那么实际的梦想,但是我喜欢,有家人朋友支持,也很开心。

rpgmaker mv 汉化方法和插件

rpgmaker 十几年屹立不倒,最新版本 rpgmaker mv 赫然是 steam 上此类别的冠军。

最近开始重新学习 rpgmaker mv,简单的界面下功能及其强大,特别是支持 javascript,无限可能。

http://rm.66rpg.com/thread-384731-1-1.html 这是界面的汉化版本,虽然介绍说在 mac 版本下也能使用,但是我用下来有点问题。第二次启动会报错,但是重新安装了英文版后,可以读出用汉化版本时候生成的游戏数据文件。windows 版本没有测试。应该可以用。

http://rm.66rpg.com/thread-387573-1-2.html mv 版本最有特色的就是插件了,而且终于选用了比较常规的 js,于是才发行了几个月,就一大堆神一般的插件出来了。这个号称是最强的,且汉化了。对于插件,我目前态度是先用好 mv 版本本身博大精深的功能,至少1-2个小游戏前不考虑用第三方插件,如果能够做出一个游戏了,再依靠迭代升级来优化的时候,就可以发挥插件的强大了。

天道酬勤

朋友从美国回来,于是我开始了第三个 mac 笔记本的使用。2005年,ibook,当时是惊艳的,记得有一次一个人去北京,在上海机场的餐厅一边吃面,一边用 ibook 看着 NCIS。然后2009年入手了 macbook pro,当时选的是 13寸的,后来内存加到了 8G,7200转硬盘,到现在,六年多了,这台电脑还是可以用一个外接显示器,作为我工作上的主力,应付一般邮件、微信、网站浏览、OFFICE 软件基本足够,从这一点上非常佩服 apple 的质量。

喜欢这些 it 设备,就像有些女人喜欢名牌包一样。所以 2016年,入手了 macbook pro 15存,当然要现在的顶配,来支持我的编程研究和娱乐等等。功能上,其实也就那样,但是那种使用上的愉悦让自己很满足。开心就好。

不知不觉,公司部门里的编程训练,已经做了断断续续三年了,迎来送往,我自己也提高了很多能力,特别是组织 workshop 的能力,不是什么天生的,也是要勤于练习的。

最近开始教一些小孩子 python,很有趣的体验。

看着其中一些稚嫩但是聪明的面孔,想起自己当年,就是这样踏上了编程、计算机的道路,这一路其实艰辛坎坷,有着外人不知道的种种苦痛。但是这一刻,好像什么都是值得的,生活的确不是眼前的苟且,想想我从十多岁开始就给自己规划了远方,始终爱好,不离不弃。在没有双休日规定的少时,完成也很多很难的功课之后,周日去半天少科站的日子,中午在旁边的小路买二两锅贴,当时觉得好贵好坑人,只是喜欢电脑,神奇的世界,不知道以后自己的路会怎么走,事实上也迷茫过好几年,终究还是寻回了初心。

谨以此纪念那些和我在80年代末一起纯粹因为喜欢电脑而耗费(浪费)了很多时间的小伙伴和指导老师,希望大家一切安好,继续有梦想。

祝自己快乐

体重从9字头到了8字头,相对的早睡早起和吃的少些,加上平均每天几公里的快走,看来还是有一点用处的。

过去的一年,重新买房装修,然后种种事情,这一年发生了不少,有开心,也有担忧,好在此刻,我还是可以祝自己快乐!

写blog最大的好处就是可以用来回忆过去所想所感,现在好像都流行公众号了,没有了 google reader 之后,其他人的 blog 也不看了,感觉写的人少了很多,崇尚快速的年代,大部分人用微信朋友圈来分享和感怀吧!

果然,慢慢的很多事情也就释怀了,时间和经历治愈很多,无暇是不可能,有些许重生的感受。

什么是 Hadoop ?

今夜我们聊聊大数据之四

Google 提出了其用于自身数据处理的三篇论文,但是这个是 Google 的命根子,并没有开源,当时甚至连对外的应用都没有。

如同Linux 对于 Unix,聪明的程序员们总有办法克隆。

Yahoo 公司彼时还如日中天(如今,2016年3月,看到的新闻已经是 Yahoo 在寻找卖家了),其中的道格·卡汀,这位神一般的人物,在 Yahoo 组织开发了 Hadoop。而 Hadoop 这个单词就是以他儿子的一只大象绒毛玩具命名的。(这位仁兄后来创建了基于 Hadoop 的 Cloudera,几乎可以说是 Hadoop大数据实际应用领域最牛的软件公司。某种程度上回答一下开源软件不要钱,那么写开源软件的人怎么活下来的问题,软件还是需要实施和服务的,且每个公司的应用场景都不一样,所以这个还是可以赚钱的。)

hadoop

有据可查的 Hadoop 是在 2006年1月,在 Apache 上建立,包括使用了邮件列表、 Jira 和 wiki。到2015年6月,最新的 Hadoop 版本是 2.7。

中文维基百科对于 Hadoop 的定义非常清楚:” Hadoop框架透明地为应用提供可靠性和数据移动。它实现了名为MapReduce的编程范式:应用程序被分区成许多小部分,而每个部分都能在集群中的任意节点上运行或重新运行。此外,Hadoop还提供了分布式文件系统,用以存储所有计算节点的数据。MapReduce和分布式文件系统的设计,使得整个框架能够自动处理节点故障。它使应用程序与成千上万的独立计算的电脑和PB级的数据。现在普遍认为整个Apache Hadoop“平台”包括Hadoop内核、MapReduce、Hadoop分布式文件系统(HDFS)以及一些相关项目,有Apache Hive和Apache HBase等等。”

这段话要说解释,估计还要几万字。我们先把里面最基本的概念解释一下,之后各个击破,在以后的文字中介绍。

框架:在编程领域里面,框架一般指一套开发方法,包括开发项目的方法、各类工具、各类基础的程序函数、测试方法、服务器或应用的部署等。遵循某种框架可以既不失灵活性,又享受成熟的基础概念带来的好处。

MapReduce:这是Hadoop 的灵魂之一,形象的说就是把要一个人干十天的事情,转化为十个人用一天做。怎么把事情分解、然后再汇聚在一起,还要协调十个人的关系,这就是 MapReduce 要做的。Map 就是分解, Reduce 则是汇聚。理解了MapReduce ,就能明白为什么大数据的应用有很多泡沫、这两年横空出世的 Spark 为何又大大提高了运算速度等大数据领域中的爱恨情仇。

分布式文件系统:在 Hadoop 里面,一般称为 HDFS,我们的500G 的笔记本上找一个文件有时候都会觉得很慢,在windows 系统下要等好久,那么海量数据在服务器上怎么存储、怎么查找、怎么保证数据不坏等,这些是大数据应用的基石。

Hive、Hbase:在 Hadoop里面,有很多这样的名词,绝大多数都是为了传统数据库的使用者便于转换到 Hadoop 平台而诞生的项目,比如 Hive 可以理解为用 SQL 语句来搜索, Hbase可以按照字面理解为基于 Hadoop 文件系统的一种数据库。

对于 Hadoop 做了简单的名词解释,之后再聊聊大数据到底能做什么,和传统的非大数据有什么区别,大数据的理念如何应用。

其实,生活99.99% 都是残酷的

看电影 “我是路人甲”,讲述很多在横店的小人物,如何奋斗,如何失败。

每个人都有梦想,所谓横漂,北漂,演艺圈如此。哪里又不是这样?

听到过一些奋斗的故事,大多数却逐渐平淡了,梦想只能忘却了。

即便有些似乎还不错的,却在周围人的眼光中感觉,也变了。为了所谓成功,富贵,抛弃了太多。充满了戾气。

人生不如意十有八九。

生活除了早起晚睡,一日三餐,朝九晚五,还有很多我们不可控制,努力了也没用。生活在大多数时候就是残酷的。

如果我说,失败发生比例远远大于同样标准的成功,虽然很多人不服,不想做分母。

其实,路人甲又有什么不好呢?

情怀

这两年,最用情怀作为卖点的就是锤子了。

有时候想想自己,说来有趣,我从小最计较的情怀就是编程,在很长的时间里,这个几乎就是我的第一爱好了。

除了一开始工作的几年,其实我的工作也基本上可以不编程序,但是总舍不得这个情怀。

rpgmaker mv

从盗版用到正版,其实也不在乎真的靠这个赚钱之类,这就是一种情怀吧,

去年开始学习 python,其实也是放弃了跟随多年的 delphi,这个过程其实也挺难受的,如人生,有舍有得,那么多东西装在心里,怎么容得下新事物呢。

虽然有时候选择的过程是有点痛苦的,也还是充满了未知。

好在,这几年明白,世界是多元化的,人生不是只有左右。