蘑菇房的博客

数字转换成中文

把数字转换成中文,在网上能找到很多。找了找发现都不太适合。结果感觉还是直接自己搞个还比找快。实现效率还行100w次在375左右的消耗,分享给大家实现的方法。欢迎多多光临我的小站蘑菇房 moguf.com

基本需求

能把12345 转换成 一万二千三百四十五10转换成,不要一十。最大值不会超过兆。就这么简单。

基本思路

转换分两部分,整数部分和小数部分。小数部分比较简单,直接转换每位小数值都是一一对应。整数部分比较特殊,需要有十百千万亿兆的单位。稍微有些复杂。

简单位数分析
个十百千万十万百万千万亿十亿百亿千亿万亿

上面的单位是有一定规律上去的,到万级后会有两个单位,并且会和前面小的单位结合。如万级会用个十百千作为前部单位,亿比万多一个,依次类推。

按照上面的分析可以得出基本结构数据,最长有三级,第一级为数字,第二级和第三级为单位。

1、中文数字 0~9
2、一级单位 个十百千万亿兆...
3、二级单位 万亿兆...

python3的flask工程数据库从SQLite迁移到MySQL

SQLite数据量比较小的时候确实蛮不错的,不过网站的话MySQL还是比较好。SQLAlchemy 数据库引擎能保证工程可以快速切换数据库源。 只要切换一下数据库链接就能完成切换,狗书上如是说。

既然说那么简单,开始动工切换数据库之旅!

环境:
debian 7.5 (x86)
python 3.5

实例工程是OReilly出版的《flask web 开发:基于Python的Web应用开发实战》。书中的环境是应该是以python2为基础的,python3也能正常使用。

工程获取: https://github.com/miguelgrinberg/flasky

按照书中的描述只要把数据库链接替换。

虚拟环境中python包的维护

在flask开发中如果经常在不同环境下切换开发,如平常用windows,测试或生产服务器用liunx。这种情况,开发中加一个包有时会忘记在其它环境中加。

通过python的pip包管理命令,生成和恢复环境还是比较方便的。

快速生成和恢复依赖包

pip freeze >common.txt
pip install -r common.txt

上述这两个命令就能生成和恢复环境。

命令说明:
1、生成依赖包列表到 common.txt 文件中
2、从common.txt文件中恢复环境依赖包

Debian下使用Nginx+uWSGI部署Flask应用

这段时间准备做网站的应用。没有做过这方面的内容,选型比较困难。最终选了较为简单的Flask框架作为起点。

Flask框架有本OReilly动物系列的《Flask Web开发》俗称 狗书。对于未接触过网站开发的人,想叩开网络开发大门的人呢来说值得一看。涵盖的内容和基础都有了,后续想要再升入就比较容易。

部署环境:
1、Debian 7.5 32位
2、Nginx 1.6.2(系统自带)
3、Python 3.5.1 (Stable)
4、uWSGI 2.0.13.1(Stable/LTS)

Server IP:192.168.1.7 (内部测试服务器地址,后面会直接用这个地址测试)
部署目录: /home/abc/blog/

系统自带的是Python2的版本,这里使用的是Py3。不影响部署。

安装Python3版本可以参考《Debian安装 python 3.5.1》

部署的程序是狗书上的Blog实例,使用SQLite作为数据库。

如想使用MySQL作为数据库,参考《python3的flask工程数据库从SQLite迁移到MySQL》

使用SSH key设置Putty自动登录远程服务器

这段时间一直在使用liunx。每次登录都要输入用户名和密码,登录的次数多了就会感觉比较麻烦。为了解决每次输用户名和密码的麻烦,配置SSH Key直接连接服务器。

设置方法:
1、首先的有个自己的密钥
2、在服务器当前用户.sshauthorized_keys2 文件中加入自己的公钥

环境:
client: win 7 pro
server: debian 7.5

[转]开源软件授权协议浅谈

开源在今天的软件业已经很普遍,但开源是否意味着使用者可以对开源后的代码为所欲为呢? 答案是否定的。

开源运动同样有自己的游戏规则和道德准则。

不遵行这些规则不但损害开源运动的健康发展,也会对违规者造成名誉和市场上的损失,更可能陷入法律纠纷和赔偿。

现今存在的开源协议很多,而经过Open Source Initiative组织通过批准的开源协议目前有58种。

我们在常见的开源协议如BSD、GPL、LGPL、MIT等都是OSI批准的协议。

如果要开源自己的代码,最好也是选择这些被批准的开源协议。

工程脚本插件方案 - c集成Python基础篇

序: 为什么要集成脚本,怎么在工程中集成Python脚本。

在做比较大型的工程时,一般都会分核心层和业务层。核心层要求实现高效和稳定的基础功能,并提供调用接口供业务层调用的一种标准的框架划分。在实际中根据需求会拆分的更细。

外部的表现形式就是一个核心动态库,带着一堆业务业务动态库。通过一个调度程序把这些链接起来,外加一堆配置文件,就形成一个完成的项目。

这种模式在一个团队开发中,工作职责比较容易划分。制定API接口后,开发工作基本可以并行实现,包括后期的功能测试(白盒、黑盒)。不管工程使用什么语言,基本都是如此。

c语言无疑是很强大而又灵活的,但是开发比较复杂,开发工期比较长。全部使用c/c++ 进行开发的话,编译调试整合发布,就需要大量时间,包括运营维护的话,呵呵~ 。整个产品的生命周期需要投入大量的人力来维持这个产品。特别是对做定制的最终用户的话,那就可能就是一场旷日持久战。

咖啡生活-享受慵懒的午后时光

一张椅子一本书再来杯自己烹煮的咖啡。在这繁忙的工作生活之余,闻着弥散在空气中咖啡的芬芳享受午后幽懒时光。

来吧忘掉一切,来杯做杯咖啡吧!准备一把摩卡壶,咖啡豆!

debian完整部署 Nginx + uWSGI + Django

手工部署一个Django服务器真心不容易,需要安装很多东西。从头开始搭建服务器,主要是为了梳理一下后续开发中一般为碰到的平台部署。对后续问题的解决有一定帮助。

通常部署有2中方式:

  • 一种是使用现成提供的服务器包用apt-get这种方式安装的。这种方式比较简单,但没有新版本。
  • 另外就是使用源代码自己编译安装,这种比较繁琐,但能选择适合的版本安装。

这里介绍的是第二种,使用源代码编译的版本进行安装部署。

部署测试环境:

  • windows 7 Pro (client)
  • VM VirtualBox 5.0
  • debian 7.5 (实际服务器用的版本)
  • 虚拟机IP 192.168.10.14(测试服务器地址,根据实际情况确定)

服务器环境:

  • Nginx 1.9.12
  • python 3.5.1
  • uWSGI (默认最新版)
  • Django (默认最新版)

Debian安装 python 3.5.1

Debian7自带的python是2.7.3, 附带安装包中并没有最新版本,要使用最新版本必须从官网上下载编译安装。

使用 dpkg 命令可以查看所有已安装的包,可以看到没有最新python3.5.1

$ python --version     #查看当前python使用的版本

$ sudo apt-get update 
$ dpkg -l python*      # 可以看到所有python包,(没有最新的包)

基本流程:
1、下载安装包
2、解压
3、configure
4、make,make install
5、设置python3为系统默认