Pulpcode

捕获,搅碎,拼接,吞咽

0%

名词解释:

野路子:口语,指的是非科班出身的,非正规的。

暴力的调试:

很多人一开始跟我一样,喜欢用这样的方式调试程序:

1
2
3
4
print "*****************"
print somevalue
print type(somevalue)
print "*****************"

别小看这几行代码,两边的*号,方便自己一眼就能看到想打印的值,之后的代码不但打印了值,还打印了类型,对于调试python这样的动态语言再好不过了。

之后我们使用二分查找的方法,逐步逼近问题。。。还自我感觉很聪明。

阅读全文 »

场景还原

为了能够清楚的描述这个问题,我们写一个简单的服务,语言使用python,框架使用tornado,数据库使用mysql,数据库连接使用MySQLdb。

在数据库里有这样一张表:

1
2
3
4
5
drop table if exists singers;
CREATE TABLE singers(
id int PRIMARY KEY AUTO_INCREMENT,
name char(20) NOT NULL
);

而我们的服务器代码也是很简单的,根本没什么服务可言,就是收到访问,就读取id为1的歌手姓名,并打印:

阅读全文 »

cookbook

如何添加一个用户,并将数据库中所有表的权限赐予此用户:

1
2
3
CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'test623';

GRANT ALL ON testdb.* TO 'testuser'@'localhost';

关于一些修改表结构的语法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
-- 修改一个字段属性
alter table table_name modify column column_name attribute;

-- 修改表名
rename table table_name1 to table_name2;


-- 重命名字段
alter table table_name change column_old_name column_new_name attribute;

-- 在某个字段的后面添加一个新的字段
alter table table_name add new_column_name attribute after old_column_name;

-- 创建一个联合唯一索引
create unique index index_name on table_name(column1, column2);

阅读全文 »

初学tornado的我,曾经一直好奇tornado到底适合什么样的开发,stackoverflow的一个提问曾经给了我解答。

问题部分:

Ok, Tornado is non-blocking and quite fast and it can handle a lot of standing requests easily.

好吧,tornado是一个非阻塞的而且可以快速的处理大量并发请求。

But I guess it’s not a silver bullet and if we just blindly run Django-based or any other site with Tornado it won’t give any performance boost.

但是我猜测它并非银弹,并且如果我们把其他的web站点,类似django这样的运行在tornado上,并不会提升效率

I couldn’t find comprehensive explanation of this, so I’m asking it here:

我不能得到一个全面的解释,所以我在这里这样提问。

阅读全文 »

这里记录自己在python编程中遇到的一些小坑,不断更新中。

关于tornado的handler终结

一开始我一直以为tornado在调用write之后就表示此handler终结了,后来我发现错了。

首先,我发现write方法可以被调用两次:

1
2
self.write("hello")
self.write("world!")

即使是finsh方法,后面的代码也会继续执行。

而且self.finish()是用来主动与客户端断开连接的,一般也是因为@tornado.web.asynchronous装饰器会一直保持连接而配合使用。

所以还是要加return:

1
2
self.write("give me five")
return
阅读全文 »

首先明确一点,此博客讨论的非对称秘钥只限于RSA,而非DSA。

基础概念

如果我们不谈公钥和私钥,仅仅谈非对称秘钥:假如你用一个算法,生成了两把key,key1和key2。那么key1加密的数据,只有key2能解开,而key2加密的数据只有key1能解开。

当然我思考过如果把公钥当私钥使用,私钥当公钥使用会怎样的问题,讨论请看这里:传送门

简单的来说,通过私钥推算出公钥是非常容易的。

公钥加密,私钥解密:

此处是为了安全性,比如对称加密,那就只有一种钥匙,那么传播传播着,大家就都知道了。而如果是非对称加密,我将自己的公钥公开,而只有私钥才能打开,这样我维护好自己的私钥不让别人知道,就一定可以保证数据的安全性。

阅读全文 »

大学的时候想过做c,c++和底层,因为书上说c++很难。还想过实现自己的梦想,做游戏。也研究过些算法,还写过些android程序,打算做手机app。也跟着学校做jsp开发。

不知不觉已经毕业快两年,也明白自己的许多。所以在这里规划自己的学习路线和发展方向。

web方向

我的web方向,不是以流程业务为主的web开发,此类开发java和c#,php的开发较多,大多外包企业做管理系统。这方面我最多可能也就用django。

我主要做的是面向协议接口的web开发。这些用python开发居多,比如tornado,或者flask。这些web主要提供某些专一的服务,比如支付相关的url-api。

这里的技术要点,还要能够处理大量的连接请求。能够高效的使用数据库。这就需要掌握,python语言本身,保证代码易扩展易维护,关注于web框架,web服务器本身。

阅读全文 »