PolicyServer
最近做一个项目需要用到websocket,但是目前ie9及之前的版本都不支持,github上面出现了用flash模拟websocket的开源项目,由于使用flash时,flash是有权限限制的(这应该是为了安全性考虑),xmlsocket://会先访问843端口,获取授权文件。于是自己用python写了个,该程序依赖tornado库。http://inote.github.com/PolicyServer/
最近做一个项目需要用到websocket,但是目前ie9及之前的版本都不支持,github上面出现了用flash模拟websocket的开源项目,由于使用flash时,flash是有权限限制的(这应该是为了安全性考虑),xmlsocket://会先访问843端口,获取授权文件。于是自己用python写了个,该程序依赖tornado库。http://inote.github.com/PolicyServer/
# 查看内核是否支持inotify机制
grep INOTIFY_USER /boot/config-$(uname -r)
# https://github.com/rvoicilas/inotify-tools/
wget ...
tar zxf ...
# 若是没有configure文件,先运行
# ./autogen.sh
./configure --prefix=/usr/local/inotify
make && make install
inotifywait -rme modify,attrib,move,close_write,create,delete,delete_self /etc/asterisk
做项目时遇到两次,就纪录下来。(仅在chrome下出现此bug)
在chrome下测试发现,绝对定位的元素只显示一部分,但是稍微滚动滚动条或者改变窗口大小后又正常了。
个人觉得:跟浏览器渲染,在点击页面内锚点时触发了默认的跳转锚点的动作和绑定的click事件,两个同时执行后绝对定位元素渲染出bug
// 获取所有php和txt文件,必须指定第二个参数为GLOB_BRACE才能使用{}
$files = glob('*.{php,txt}', GLOB_BRACE);
// 按照文件的修改时间排序
usort($files, create_function('$a,$b', 'return filemtime($a) - filemtime($b);'));
// 深度遍历文件夹
$path = realpath('/etc');
$objects = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path), RecursiveIteratorIterator::SELF_FIRST);
foreach($objects as $name => $object){
echo $name . PHP_EOL;
}
将localhost改成127.0.0.1
来自:链接
SmartMarkdown是Sublime Text2的一个插件,该插件提供了smart table的功能,该功能在只有ascii字符的时候很完美,但当内容中出现中文,中文标点的时候就会产生错位,这是因为中文在屏幕上的显示占了两倍的英文所占有的位置。
由于该插件里面计算的时候是按照字符的长度来计算的,所以他把中文字符串的长度也是计算为1的。我们要做的就是把非ascii字符串替换为两个占位字符,然后计算长度。找到插件目录下的table.py
# 21行添加
NONE_ASCII_PATTERN = re.compile(r'[^\x00-\xff]')
# 124行修改为
new_row.append(col + " " * (cols_length[i] - len(NONE_ASCII_PATTERN.sub(' ',col))))
# 163行修改为
col_len = len(NONE_ASCII_PATTERN.sub(' ', col))
修改过的文件:下载
大概三个月前,在公司做了个系统管理的程序(时间设置,网卡设置,系统时间设置,等等),现在记录下这些文件的路径,备忘。
# 网络默认参数
/etc/sysconfig/network
# dns
/etc/resolv.conf
# 单个网卡
/etc/sysconfig/network-scripts/ifcfg-eth*
# 登录系统时的提示信息
/etc/issue
# 登陆后的提示信息
/etc/motd
# 系统版本
/etc/redhat-release
# 时区
/etc/localtime
/usr/share/zoneinfo/*
/etc/sysconfig/clock
利用安装后的ip.exe导出txt文件,由于python处理gbk中文的时候会有些问题,所以我们直接选个编辑器打开之后,再以utf-8的编码保存就可以了。
由于我们需要通过百度地图的API一个地址一个地址的查询,所以去除重复的地址可以减少我们的查询量。
# coding: utf-8
# python的去重方法很多,这里我们选用set类型
with open('ipdata.txt', 'r', encoding='utf-8') as handle:
regex = re.compile(' +')
addrs = set([])
for line in handle:
if line.strip() != '':
address = regex.split(line.strip())[2]
addrs.add(address)
# addrs 就是我们过滤之后的所有地址了
上面我们已经过滤出所有的地址了,接下来就是使用百度的API来拆解这些地址。
import re, urllib, time, json
from urllib import parse, request
with open('ipdata.txt', 'r', encoding='utf-8') as handle:
regex = re.compile(' +')
addrs = set([])
for line in handle:
if line.strip() != '':
address = regex.split(line.strip())[2]
addrs.add(address)
url = 'http://api.map.baidu.com/geocoder?output=json&key=你的API key'
wh = open('address/list.txt', 'w', encoding="utf-8")
for addr in addrs:
addr_x = ''
url_x = url + '&address=' + parse.quote(addr)
# time.sleep(3)
req = request.urlopen(url_x)
res = req.read().decode()
data = json.loads(res)
if data['result']:
location = str(data['result']['location']['lat']) + ', ' + str(data['result']['location']['lng'])
url_x = url + '&location=' + parse.quote(location)
req = request.urlopen(url_x)
res = req.read().decode()
data = json.loads(res)
if data['result']:
component = data['result']['addressComponent']
addr_x = component['province'] + ' ' + component['city'] + ' ' + component['district']
wh.write(addr + '\t' + addr_x + '\n')
wh.close()
未完待续...
学习wxpython的练手软件,写的比较简单,名为扫描,实际上每次只能扫描一个端口。
PS:py2exe打包的程序伤不起啊,小小的一个程序,依赖库什么放进去竟有20多M。
setup里面设置的icon_resources居然没成功,不知道是不是哪儿写错了。
源码:下载