socketref,再见!高德

https://github.com/adoggie

  C++博客 :: 首页 :: 联系 :: 聚合  :: 管理
  246 Posts :: 4 Stories :: 312 Comments :: 0 Trackbacks

常用链接

留言簿(54)

我参与的团队

搜索

  •  

最新评论

阅读排行榜

评论排行榜

#

import xml.dom.minidom
from xml.dom.DOMImplementation import implementation
import xml.sax.writer
import xml.utils

# Create a new document with no namespace uri, qualified name,
# or document type
document = implementation.createDocument(None,None,None)
personnel = document.createElement("personnel")
personnel.setAttribute('number', '5')
document.appendChild(personnel)
sexnode = document.createElement("sex")
sexnode.appendChild(document.createTextNode("male"))

namenode = document.createElement("name")
namenode.appendChild(document.createTextNode("tianbin"))

personnel.appendChild(sexnode)
personnel.appendChild(namenode)

out = open("tianbin.xml", "w")
xml.dom.ext.PrettyPrint(document,out)

posted @ 2011-06-06 23:23 放屁阿狗 阅读(622) | 评论 (0)编辑 收藏

测试使用本地wms渲染引擎,发现openlayers加载tiles速度明显快于openscales,速度几乎要2-3倍

我想这个原因可能在于flash运行时异步请求都是单线程的,openlayers发送ajax httprequest可能是多线程并发请求的(渲染程序都是一致)

** win7下绑定localhost做服务发现响应速度很慢,必须直接写 本地ip地址

openscales请求速度慢可能opensacles代码里面控制了并发请求tile的数量,这个要具体看一下scales的代码,看看能够引出接口来修改一下

** openscales初始化 wmsc图层时只有一个resulutions参数,而有时我采用scale缩放比控制,注意 openscales/*/util/*.as提供了scale到resulutoin的转换
     DPI在openscales里面默认是72 , WGS84 (4326)是默认的,投影也提供接口更改


openscales速度慢的问题找到了,同样启动Ie则没有迟缓的现象,说明还是浏览器的问题,firefox 3.x版本不行,换4.x的看看,如果还是不行,说明flash.ocx for firefox版本不行
posted @ 2011-06-06 12:45 放屁阿狗 阅读(1894) | 评论 (0)编辑 收藏

red5  
http://code.google.com/p/red5/
http://dl.fancycode.com/red5/api/

cpp的流媒体服务器:
http://www.live555.com/

liveencoder只能捕捉pc本地设备音视频信息
http://download.macromedia.com/pub/flashmediaserver/flashmedialiveencoder/installer/flashmedialiveencoder_3.2_wwe_signed.msi
  
posted @ 2011-05-31 09:51 放屁阿狗 阅读(350) | 评论 (0)编辑 收藏

网上下载的openscales代码,demo很少,且演示的不够清晰,云里雾里的,干脆老办法,直接读码。
两年前没有用openlayers时,接触了google的map api,觉得很好,照着功能花了1个月左右时间用as3开发了一个flex的地图显示库,当然只能与自己开发的后端地图服务做接口通信(当初是用wx开发地图渲染,amf+php做webservice端接入,两者之间用 ice for php 实现进程间通信,并由php将tile回传到flex地图库来展示,之后还用wx在wince下做了个地图展示的版本)。想想那个时候是多么的傻,有着wms,wfs等标准不用而自己去做不通用的东西。

SDL用于定义地图Feature对象绘制时的属性参数,有个叫Symbolizer的东东抽象了绘制操作
当然SDL里面处理POINT,LINE,POLYGON之外就是Bitmap了,或者是几种类型的组合。
刚接触SDL的时候是玩Geoserver的时候,看着Geoserver关于SDL的help资料,回顾一下以前公司做导航软件是那些feature的定义是那样的不自然,都是统统写死在代码里面,或者是一个txt的文本文件,或者xml算是最灵活的了,但跟sdl规范来比对的话显得比较弱智。
手工写SDL是很痛苦的事情,有个开源软件叫udig,是个opengis的软件,里面就携带了图形化定义feature产生xml代码的功能,也是玩了玩,之后对geoserver失望之后自己写地图绘制引擎,参照了sdl的规范自己实现了一个准sdl规则来描述feature的symbolizer加入了绘制引擎,灵活性扩展还是不错。
在openscales代码里找FeatureLinede的功能,为了在之后的gis项目中显示移动目标对象路径只用,代码跳跃了几次,呵呵,看到了openscales对SDL的实现版本 ,org.openscales.core/style  里面的stroke,fill,marker,symbolizer真是对sdl实现的很好的参照代码蓝本。如果了解SDL规范的话,这些代码应该不用十分care,因为都比较简单,记住使用接口就可以了
WellKnownMarker支持的类型还真跟SDL规范一样,没新的类型加入(square,circle,triangle,star,cross)

posted @ 2011-05-30 00:38 放屁阿狗 阅读(1454) | 评论 (2)编辑 收藏

decode的作用是将其他编码的字符串转换成unicode编码,如str1.decode('gb2312'),表示将gb2312编码的字符串转换成unicode编码。

encode的作用是将unicode编码转换成其他编码的字符串,如str2.encode('gb2312'),表示将unicode编码的字符串转换成gb2312编码。

posted @ 2011-05-28 16:38 放屁阿狗 阅读(231) | 评论 (0)编辑 收藏

Apache Server Status的启用

Apache的状态管理的模块是LoadModule status_module modules/mod_status.so,所以这个需要有,然后打开下面的配置

ExtendedStatus On

配置Apache Server Status的权限

<location /server-status>

         SetHandler server-status

         Order Deny,Allow

         Deny from all

         Allow from .foo.com

</location>

打开查看的话就使用http:// your.server.name/server-status来访问,注意VHapache要设置在一个VH,不然你分不清是那个地址来查看看这个信息.ExtendedStatus不能放在VH.

 

posted @ 2011-05-27 21:05 放屁阿狗 阅读(368) | 评论 (0)编辑 收藏

webgis地图访问地址 : http://sw2us.com:8520/medias/flex/newgis.html
下载地址: http://sw2us.com:9090/sw2us.webgis.demo.2011.5.26.7z


----------------------------------------
sw2us.webgis 在99年就开始有个做地图引擎的想法,由于忙于公司其他开发项目的事情,一直断断续续进行
在5173的时候开始用geoserver来架构wms服务器,发现配置部署性能都差强人意,所以想着自己做个wms服务
10年的时候也写了个版本,后来用tilecache进行tile 绘制,中国地图1000的比例两台机器绘制了1个月
下半年生病了,到11月份回unistrong上班,工作内容就是写驱动,空闲之余继续写地图渲染代码,以前用wx做的
代码全部用qt写了一遍,优化了一些速度。地图换了两版本,08年的全国图和11年的上海图,用python脚本进行预处理
切割地图进行网格存储。以前的同事多年前就告诉我他们改进4叉树的存储方式来提高访问数据减少数据加载,我也
没好好琢磨过,主要是没有时间和精力,只好做这种傻瓜式的简单网格切分和加载。

demo只是简单实现了地图加载和现实,然后用openlayers,extjs,geoext,django做了个框架页面,里面放了个不跑的汽车图标

这个东西是10年12月完成的,已经准备放弃这个架构的设想,准备采用flex+openscale+django来重做webgis应用,
当然那还是需要花费很多时间和精力

zhangbin
2011.1.20

msn: socketref@hotmail.com
qq: 24509826

==========================================================================================
注意: sw2us.webgis.demo目录必须存放在c:\根目录下,不能更改目录名

安装
=============
1.配置数据库
    安装pgsql, postgresql-8.3.5-2-windows.exe,数据库端口保持为5432 ,设置postgres用户,密码为111111
    安装空间数据库扩展 postgis-pg83-setup-1.5.2-1.exe
    创建 数据库名 newgis,导入数据库文件 newgis.db.backup

2. webserver配置
    运行C:\sw2us.webgis.demo\apache2.2.pack\http-install.bat  安装apache服务,侦听 9090端口
    C:\sw2us.webgis.demo\apache2.2.pack\http-install.bat     启动apache服务
    
3.安装微软雅黑字体
    bin/vistaFont_chs.exe ,安装之后修改系统默认字体为微软雅黑字体

4. 安装vc运行环境 bin\vcredist_x86.exe

运行:
===============
    start-gis.bat     运行django后台服务
    wms_start.bat     运行wms服务器
    tileserver-rpcservice-1.bat/tileserver-rpcservice-2.bat 为后台地图渲染服务,目前配置5001,5002端口
    浏览器录入 http://192.168.14.3:8080/ 即可看到地图界面
    
系统端口说明:
===============
    9090      apache 服务端口
    8080    django 服务端口
    8000    wms 服务端口
    5001,5002 地图渲染服务端口

    
以上端口都被写入了相关服务的配置文件,请确保这些端口没有被占用

--    修改apache端口 C:\sw2us.webgis.demo\apache2.2.pack\Apache2.2\conf\httpd.conf ;
    修改之后必须重新启动apache服务(http-shutdown.bat,http-start.bat)
    修改apache端口之后必须修改对应django的配置 C:\sw2us.webgis.demo\newgis\gis.py(第14行 JSLIB_PATH的webserver指向)
--    django服务端口可以任意修改 start-gis.bat
--    wms服务端口修改 wms_start.bat ,修改之后必须同步C:\sw2us.webgis.demo\newgis\medias\js\gis\gismap.js(第19行)的wms服务器指向
--    地图渲染服务可以根据负荷的情况启动多个服务进程(复制tileserver-rpcservice-1.bat,修改其端口号,比如 5003),在修改或增加渲染
    进程之后必须修改wms服务的配置C:\sw2us.webgis.demo\swmap.demo\GisServer\tileservers.txt
    
demo系统默认都是采用localhost做服务接口,如果要提供网络支持或者分布这些服务进程来提高性能,则需要修改这些不同的端口和ip地址

    
系统描述:
=============
 浏览器firefox 直接访问django端口,django的url.py分派请求到gis.py,gis.py加载pages/mainwindow.html
 mainwindow.html已经是个openlayers+ext的框架界面了,其陆需加载 openlayers,ext等的js脚本,注意:这些js
 脚本并不存在django的目录下,而是存放在apache的web-root目录下,所以必须要修改gis.py和mapgis.js里面的
 主机指向信息。
 当mainwindow.html加载之后,工作就交给了openlayers,openlayers将访问wms服务器(gismap.js 19行),此刻wms服务器
 提供tile数据给浏览器。
 地图渲染服务必须在wms服务之前启动,wms通过tileserver.txt的配置 采用ice 与渲染服务进程通讯并获得图块并返回给
 浏览器。
 渲染服务器、wms服务器、apache和django服务都可以被分隔存储在不同的主机上
 
 好了,demo可以在本机跑起来了,但必须是以 http://locahost:8080方式,如果想以网络方式访问则修改wms服务端口,gis.py,gismap.js及相关.bat配置
 
相关问题
=============
 如果将这些服务主机都配置成localhost,访问速度大大降低 , 应配置成独立的ip地址
 apache已经配置了js压缩输出    
   
posted @ 2011-05-26 10:56 放屁阿狗 阅读(2469) | 评论 (5)编辑 收藏

公司的交易系统bs架构,通过http方式访问备份数据库。开发公司不肯合作的态度,所以每一次必须人工的去登陆网站是手动备份。
每天安排6次备份,这种对于一个程序开发者来讲的话真是一种痛苦和侮辱。

今天空下来就用python开始编写自动备份方案:
1.http自动登录
2.wget断点下载
3.7zip压缩
4.网盘 everbox的同步到服务器

与http server的交互信息用wireshark抓包分析,还蛮灵光的

python代码:
 1 # -*- coding:utf-8 -*-
 2 #auto backup system database 
 3 #自动登录,http下载,压缩之后通过网盘同步到服务器
 4 
 5 import httplib, urllib,sys,os,re,datetime,time,os.path,gzip
 6 
 7 host="192.168.1.106"
 8 sys_user='anyuser'
 9 sys_pass='anypass'
10 
11 html = '''<body><h1>Object Moved</h1>This object may be found <a HREF="shuju.asp?err=
12 ok!&amp;dizhi=../data_backup/zhk0432011-1-26.7055475.mdb">here</a>.</body>
13 '''
14 
15 
16 tasklet=[]
17 backupTimes= 6# in day 每天备份次数
18 
19 
20 
21 def backup(outputfile):
22     params = urllib.urlencode({'login_name':sys_user, 'login_pass': sys_pass, 'submit.x'9,'submit.y':9})
23     conn = httplib.HTTPConnection(host)
24     headers = {"Content-type""application/x-www-form-urlencoded",
25                 "Accept""text/plain"}
26     conn.request("POST","/asp/huiyuan/login_check_gl.asp",params,headers)
27     resp = conn.getresponse()
28     #print resp.status,resp.reason
29     #print resp.getheaders()
30     cookie = resp.getheader('set-cookie')
31     #print resp.read()
32     conn.close()
33 
34     #print 'retry GET /'
35     conn = httplib.HTTPConnection(host)
36     headers = {"Content-type""application/x-www-form-urlencoded",
37                 "Accept""text/plain",'Cookie':cookie}
38 
39     conn.request("GET","/asp/admin/login_check001.asp",'',headers)
40     resp = conn.getresponse()
41 
42     #sys.exit(0)
43     conn = httplib.HTTPConnection(host)
44     headers = {"Content-type""application/x-www-form-urlencoded",
45                 "Accept""text/plain",'Cookie':cookie}
46 
47     conn.request("GET","/asp/admin/backup.asp",'',headers)
48     resp = conn.getresponse()
49     #print resp.status,resp.reason
50     html=  resp.read()
51 
52     m = re.search(".*?/data_backup/(.*?\.mdb).*",html)
53     backupfile = ''
54     if len(m.groups()):
55         backupfile = m.groups()[0]
56         print backupfile
57     else:
58         print 'backup access failed!'
59         return False
60 # -o wget.log
61     downloadurl= "http://%s/asp/data_backup/%s  -O %s "%(host,backupfile,outputfile)
62     #print 'try get %s '%downloadurl
63     cmd = "wget -c -t 0 %s"%downloadurl
64     print cmd
65     os.system(cmd)
66     return True
67 
68 firsttime = datetime.datetime.now()
69 if not os.path.exists('./backup'):
70     os.mkdir('backup')
71     
72 if not os.path.exists('./sync'):
73     os.mkdir('sync')
74     
75 while True:
76     now = datetime.datetime.now()
77     #filename = "backup/%s_%s-%s_%s_%s_%s.bak"%(now.year,now.month,now.day,now.hour,now.minute,now.second)    
78     sync_hour= int(now.hour/int(24/backupTimes)) * int(24/backupTimes)
79     filename = "%s_%s-%s_%s_%s_%s.bak"%(now.year,now.month,now.day,sync_hour,0,0)    
80     try:
81         if not os.path.exists("backup/"+filename):        
82             backup("backup/"+filename)
83             cmd = "7zip\\7z.exe a -t7z  sync\\%s.7z backup\\%s"%(filename,filename)
84             print cmd
85             os.system(cmd)    
86     except:
87         pass
88     time.sleep(10#
89 
90 
91 
92 


posted @ 2011-01-25 16:20 放屁阿狗 阅读(1945) | 评论 (0)编辑 收藏

想到这个问题已经是有一段时间了,目前要启动项目,所以又仔细想了一下。
django框架不同于j2EE,weblogic就是个很好的基于j2ee的应用服务器,里面有很多设施,都是常驻在内存的,这样的服务器还有Tomcat之类的。
但我了解的django同php一样采用平面数据库来记录用户会话,状态等信息,效率上没有直接从内存中读取的要快。而我的项目需求涉及的数据组织方式是树形的嵌套结构的业务数据结构,虽然存放在平面的数据表中,但是在查询的时候每一次都要多次的操作表记录,效果很低。
例如: 会员表字段( 会员编号,介绍人编号,节点人编号),一个成员即可以是会员,也可以是介绍人或者是节点人,所以在一条记录关联到多条记录或者被多次关联,那在查询的时候要列出 (会员名,介绍人名,节点人名),编写的sql将比较繁琐,如果写成一条的话,可以用inner jion或者 select in的方式实现,但是由于数据库内部要创建多个记录缓冲来搜寻,导致效率极低。
不得不考虑在django外部开发独立的应用服务程序,运行时加载会员表中的所有成员信息,并以指针的形式将这个会员拓扑树表现出来,那在查询检索的时候根据id和会员名称做个hash表,根据id直接定位到拓扑树的节点上,这个节点的子几点可以是指向介绍人、节点人节点的地址,那检索的速度可以提高100倍。
就这么决定了,所以想着 django要与外部应用程序交互的问题,当然是想到了ice通信框架。
在mod_python配置参数中有一项:
PythonHandler django.core.handlers.modpython
modpython.py这个代码只要修改了之后mod_python将重新加载,且这个模块将常驻内存,好了,可以把他当做一个入口服务实例了,
ice的初始化就放在modpython.handler()函数内,通过request参数传递到调用的每个模块内,
开心了!

posted @ 2011-01-24 00:06 放屁阿狗 阅读(2126) | 评论 (0)编辑 收藏

第一次遇到这种事情,可能也就存在于Win7 和 XP/2003之间。
今天公司同事打开自己电脑,一切照旧的访问服务器共享(准备开始获取共享文件,开始工作了)
可当同事输入自己的域账号和密码后,死活无法登陆,同事急了,他怀疑我修改了他的域账号密码。
我哪敢啊我。
过去看了下,还的确是,不管是输入服务器的管理员账号密码,还是域账号和密码。
Win7都提示说:“未知的错误用户名和密码,请重新输入”
再一次冒汗。
无奈自己鼓捣一会,确认常规设置都没问题,细想昨天都好好的,怎么今天出这么奇怪问题。
同事见我搞不定,无奈叹气说:“我重装吧,哎”(公司都用2003的,他自己独立用Win7.呵呵,所以不好找茬 O(∩_∩)O~)
我想了下,感觉不是什么大问题,肯定是Win7“独特设置”问题。
所以先百度一下,郁闷的是,百度了一下,我什么都不知道。
无奈,我又谷歌了一下。哈哈,这下全知道了。
我使用的如下第二种办法解决的,可能出现此问题的情况有很多种。大家有类似的,不妨都试试
第一种排除法:
2台装Win7的机器之前一直能访问Win2003的共享,今天突然访问不了,提示密码错,唯一一台跑WinXP的旧电脑却没这问题……重新设置了共 享,还重设了Win2003的管理员密码仍然不行,然后想了想两台Win7的机器和2003的机器这两天我有没有装什么软件或者设置什么的……结果最后发 现:Win2003主机之前由于插头不够,拔了电源今天才装回去,主板电池又用光了,时间成了2006年……立即调回去今天的日期……Win7立刻就能访 问了……。
第二种排除法:
访问一台Windows Server 2003的共享,无论怎么输入都提示密码错误。
解决方法:
1. 首先确认一下控制面板-系统和安全-windows防火墙-允许的程序里打开了“文件和打印机共享”
2. 开始=>运行... =>gpedit.msc=>本地计算机策略=>计算机配置=>Windows设置=>安全设置=>本地策略=>安全选项。找到:“
网络安全:LAN管理器身份验证级别”项,默认值“没有定义”改为“发送LM & NTLM响应”
第三种排除法:
是域问题。打开win7的网络共享中心,关闭密码保护共享就好了。需要注销,或者你直接选择你的网络位置为公用,就能免去输入密码的麻烦事。公用的默认的就是关闭密码保护共享。
(责任编辑:www.itxia.com)
posted @ 2011-01-16 14:59 放屁阿狗 阅读(773) | 评论 (0)编辑 收藏

仅列出标题
共25页: First 5 6 7 8 9 10 11 12 13 Last