Monthly Archives: December 2004

P2P的另类想法

头几天一直在想,怎么让P2P软件可以穿透NAT,一直不知道怎么去实现。刚才突然一个灵感,是不是可以借用第三者的机器(在外网上的)进行假穿透呢?即用户P2P程序可以随机的让一个处于外网上的用户作个一个中介的服务器,通过这个服务器进行转发。不过这个服务器的配置一般都是较低的,而且用户可能运行了很多程序,占用了很多的资源。要么让程序找到资源足够的机器,要么就是找几个机器一起分摊。前者的实现比较难,后者的实现相对要简单很多的。我可以限制连接一个服务器的用户数目,如果超过这个数目,就继续找到下一个服务器。如果这样真可以实现,那么就可以轻松的实现NAT的穿透处理了。不过这个想法好像是pcplayer提过,不知道和我说的是不是一个思路。

Posted in Web应用 | 9 Comments

串口通信的转换方案

今天早上上班的时候突然想起一个问题,就是我做的那个WEB系统怎么方便的嫁接到串口通信上面。原来是想用Python直接实现的,但是看了pyserial之后,发现这个不是很好的方法,因为这个东西封装的是win32all的东西,你要使用还要安装大大的win32的python封装包,比较的麻烦。后来想到,利用C/C++做一个程序,windows下面的和unix下面的差别太大了,干脆就分开做。 该程序一个模块是专门负责串口通信的,另外一个模块负责socket通信,把别的语言通过socket送过来的报文接收,然后通过调用报文解析模块把socket的报文分解,然后按照串口通信的报文进行编码,然后传给串口,完成S(ocket)2S(erial)的转换。这个想法自己认为是不错,不过要先实现了再说。今天已经收集了一些资料,不过主要是串口的,通信的还没有,不过想实现传统的socket的和一个简易的web server,这样可以方便web程序的开发。 不过非windows下面的串口通信没有做过,自己肯定是搞不定了,不知道那个机器人有没有搞过,如果搞过,那就好办很多了,嘎嘎,不过实在没有办法,就只能socket到windows的机器再串口通信了,嘎嘎。

Posted in 外设与移动 | 5 Comments

Mysql数据库特点

1.? 使用核心线程的完全多线程。这意味着它能很容易地利用多CPU(如果有)。 2.? 可运行在不同的平台上。3.? 多种列类型:1、 2、 3、4、和 8 字节长度的有符号/无符号整数(INT)、FLOAT、DOUBLE、CHAR、VARCHAR、TEXT、BLOB、DATE、TIME、DATETIME、 TIMESTAMP、YEAR、SET和ENUM类型。 4.? 利用一个优化的一遍扫描多重联结(one-sweep multi-join)非常快速地进行联结(join)。 5.? 在查询的SELECT和WHERE部分支持全部运算符和函数。6.? 通过一个高度优化的类库实现SQL函数库并且像他们能达到的一样快速,通常在查询初始化后不应该有任何内存分配。 7.? 全面支持SQL的GROUP BY和ORDER BY子句,支持聚合函数( COUNT()、COUNT(DISTINCT)、AVG()、STD()、SUM()、MAX()和MIN() )。 8.? 支持ANSI SQL的LEFT OUTER JOIN和ODBC语法。 9.? 你可以在同一查询中混用来自不同数据库的表。10. 一个非常灵活且安全的权限和口令系统,并且它允许基于主机的认证。口令是安全的,因为当与一个服务器连接时,所有的口令传送被加密。 11. ODBC for Windiws 95。 12. 具备索引压缩的快速B树磁盘表。 13. 每个表允许有16个索引。每个索引可以由1~16个列或列的一部分组成。最大索引长度是 256 … Continue reading

Posted in 数据库 | Leave a comment

mysql的几个常用的命令

1.Window2000下的安装.???A.安装目录最好(应该是一定要)是C:\, 以前有几次没看清楚说明,安装在D盘,结果启动不了。?? B.安装成为启动服务:mysqld-nt –install?????? 卸载服务:mysqld-nt –uninstall?????? 移除服务:mysqld-nt –remove???????启动服务:net start mysql?????? 停止服务:net stop mysql2.连接以及用户的管理?? A.连接MySql数据库: mysql -h host -u user -p????????比如用root登陆: mysql -h localhost -uroot -p?????????B.断开连接:quit或exit?? C.新建用户(用户名为tom,密码为123):??????? 用root连接到数据库,然后用以下的命令:????????grant all privileges on *.* to ‘tom’@’localhost’ identified by ’123′ with grant option;????????或grant all … Continue reading

Posted in 数据库 | Leave a comment

Python在移动设备上的开发

今天从Python的新闻上得知,目前Nokia的Series 60对Python提供了支持(http://www.forum.nokia.com/main/0,,034-821,00.html),其实这个新闻对我来说已经不兴奋了,因为我在半年前就已经得到了这个消息,而且我的blog还是论坛里面,也帖了当时人家演示的图片。所以python在手机上的应用是迟早的事了,不过对于这次Python公开公布这个信息还是比较高兴的。以后我的西门子手机可能会转到Nokia上面了,原因狠简单,就是因为Python的开发。 其实对移动设备的开发,我一直就想切入了,只是苦于没有机会,不想放弃C/C++和python。自从上次看到了S60的python演示图片之后,我就在往这方面准备,毕竟以后移动设备的开发可能会高过PC的开发了。

Posted in 外设与移动 | 1 Comment

XML-RPC

今天在公司抽时间搞了一下RPCLIB库里面的东西,程序写出来了,而且结果正确,就是XML-RPC好像不支持ASCII以外的字符。就像中文,或者是读二进制文件,想要通过XML-RPC传都是不行的,系统会报错。我最后只好通过base64编码之后才可以进行。不过python的base64编码还是狠简单的,一个函数就搞定了,不过对于那些超大的二进制文件来说,想用这种方法传还是比较麻烦的。因为网络原因,肯定得先压缩(应该是先判断一下是否是压缩文件,如果已经是压缩文件了,就不用再继续压缩了吧:)),然后再base64了,这样对于那些大压缩率的文件来说还是不错的选择。不过今天的测试,我也想到了一些多线程和断点续传的方式了,不过没有测试,主要是公司的是内部网,网速太快了,不容易测试。 剩下一点就是RSS的发布机制了,这个东西没有搞明白啊,还需要仔细研究一下。

Posted in Web应用 | 3 Comments

电信割接

最要命的时候终于来了,阿根廷的800项目数据割接终于开始了,尽管我们已经做好了充足的准备,但是3天的累死累活,发现问题还是狠麻烦啊。主要是对方不配合我们的割接工作,数据库的字段命名不知道什么意思,更不用想知道数据类型了,我们现在全是使用char进行处理。业务处理方式也和我们的方式有天大的区别,由于他们的系统比较早,使用的设计概念还是比较原始的,现在要使用我们的新系统,他们的业务特性与我们的业务特性的转换还是狠麻烦啊,基本是无法对照的。前线工程人员对自己的业务不熟悉,到今天的,居然连自己的系统都没有跑起来,更别说让他们帮忙了。明天还有一天,首批客户就要试运行了,不知道能否成功。 记住头说的话:成功了那是当然的,失败了大家一起完蛋。

Leave a comment

VPN的一些知识

可能要搞一搞VPN网络,罗列一点资料先: http://www.chinaunix.net/jh/50/431042.htmlhttp://www.chinaunix.net/jh/50/431043.htmlhttp://www.chinaunix.net/jh/50/431045.html

1 Comment

Python connect to mysql

这个网址的Python对Mysql的操作是比较全的:http://www.kitebird.com/articles/pydbapi.html —————————一个完整的例子——————————?? #! /usr/bin/python?? # animal.py – create animal table and?? # retrieve information from it?? import sys?? import MySQLdb?? # connect to the MySQL server?? try:?????? conn = MySQLdb.connect (host = “localhost”, user = “testuser”, passwd = “testpass”, db … Continue reading

Posted in Python, 数据库 | Leave a comment

世界上最小的P2P程序

TinyP2PEd Felten撰写, Alex Halderman提供帮助。TinyP2P是一个仅用15行Python代码来完成的,P2P方式共享文件的程序。我写这个程序主要想说明P2P程序其实并不难写。P2P程序可以非常的简单,任何有点技巧的程序员都可以写出来,因此禁止他们的创新是不可能的(译者注:可能是针对目前的一个P2P的诉讼而描述的吧)。(每行代码少于80个字符。第一行作为说明并没有被电脑计算入内。)我创建这个程序的目的不是想去帮助违反版权法的人。我不会宽恕违反版权法的事情。该程序的最优化设计被用来共享文件之外没有别的事情。程序对于(P2P)概念的接受还是很有帮助的。一个更实用的程序可以更快的运行,更加可靠和更好的错误处理机制。但是那样的话,需要更多的代码。TinyP2P的代码可以在http://www.freedom-to-tinker.com/tinyp2p.py下载。工作方式程序创建了一个小世界网络,它可以被用来在朋友或者是商业上的文件共享。程序在非常大的网络下运行不是很好;不过可以用许多小网络来替代。每个网络都是密码保护的;一个网络尽被知道密码的人才可以访问。(但是网络对于那些会监控流量的攻击者来说并不是安全的。)该程序使用标准的通信协议:HTTP和XML-RPC。HTTP就是通常被用来web浏览获取页面的那个协议,XML-RPC广泛的应用于web服务的提供。本程序可以运行在服务器端或者是客户端中的一种模式下。当作为服务器运行时,程序可以连接到网络中的别的服务器,并且让当前目录下的所有文件被网络用户下载。(文件存放的目录就是用户联入之后可以立即访问的那个目录)运行该程序作为一个服务端,你只要使用如下命令:python tinyp2p.py password server hostname portnum [otherurl]命令行中的password就是访问网络需要的密码,hostname 和 portnum被用来构造服务器的URL(http://hostname:portnum),otherurl(附加的那个)是其它的已经作为网络的一部分运行的服务器的URL。(Otherurl可以被用来使你的服务器挂到网络上。如果你不提供otherurl,程序会认为你的服务器启动了一个新的网络。)将程序运行为一个客户端,你可以使用下面的命令:python tinyp2p.py password client serverurl pattern命令里面的password是访问网络的密码,serverurl是网络内服务器的URL,pattern是一个字符串。该命令看起来好像是每个文件都被网络内的服务器所共享。一个文件被下载后,存放到当前目录中,2个条件:(a)文件名包含子串pattern,(b)当前目录下不存在同名文件。(注意:pattern可以是Python的正则表达式,只要能够被Python的re.search库调用来匹配文件名即可。)注意,如果你在运行服务器端的目录下运行客户端时,客户端下载下来的软件自动的会被服务器端分发。这个要根据情况,不一定是你所想象的。还要注意的是,你可以在一个目录下运行多个服务器来加入不同的网络。—————————————–Code—————————————–# tinyp2p.py 1.0 (documentation at http://freedom-to-tinker.com/tinyp2p.html)import sys, os, SimpleXMLRPCServer, xmlrpclib, re, hmac # (C) 2004, E.W. Feltenar,pw,res = (sys.argv,lambda u:hmac.new(sys.argv[1],u).hexdigest(),re.search)pxy,xs = (xmlrpclib.ServerProxy,SimpleXMLRPCServer.SimpleXMLRPCServer)def ls(p=“”):return filter(lambda … Continue reading

Posted in Web应用 | 2 Comments