# 移动文件
sudo mv pycharm-4.0.5.desktop /usr/share/applications
dpkg -i package_name ( 软件安装 )
dpkg -r package_name ( 软件移除 )
dpkg -x package_name.deb target_dir ( 解 .deb 档案成数个档案 )
dpkg -i --force-overwrite-i package_name ( 强制安装软件 )
dpkg -i --force-all package_name ( 不顾一切的强制安装软件 )
dpkg -r --purge --force-deps package_name ( 强制移除软件 )
dpkg --get-selections ( 列出系统中所有安装的软件 )
dpkg --pending --remove ( 移除多余的软件 )
如果在文档已完成加载后执行 document.write,整个 HTML 页面将被覆盖
要将a.txt里的^M去掉并写入b.txt,则使用如下指令cat a.txt | tr -d "^M" > b.txt http://blog.csdn.net/wjcquking/article/details/6634504
The _imagingft C module is not installed
Error: That port is already in use. #端口号被占用
js中
var pwd0=document.getElementById("ui-password0-text").value; #获取页面上一个有id的元素的值
var pwd0=document.getElementById("ui-password0-text").innerHTML; #获取元素中的内容
jquery中
var new_pwd2 = $("#ui-password2-text").val(); #获取页面上一个有id的元素的值
var new_pwd2 = $("#ui-password2-text").text(); #获取元素中的内容
var new_pwd2 = $("#ui-password2-text").html(); #获取html内容
光标定位到当前的文本框
document.getElementById("文本框的ID").focus();
jQuery 使用 $ 符号作为 jQuery 的简介方式。
某些其他 JavaScript 库中的函数(比如 Prototype)同样使用 $ 符号。
jQuery 使用名为 noConflict() 的方法来解决该问题。
var jq=jQuery.noConflict(),帮助您使用自己的名称(比如 jq)来代替 $ 符号。
$("#hh") #hh为ID属性
$("hh") #hh为name,type属性
除了解决命名冲突和依赖管理,使用 Sea.js 进行模块化开发还可以带来很多好处:
1.模块的版本管理。通过别名等配置,配合构建工具,可以比较轻松地实现模块的版本管理。
2.提高可维护性。模块化可以让每个文件的职责单一,非常有利于代码的维护。Sea.js 还提供了 nocache、debug 等插件,拥有在线调试等功能,能比较明显地提升效率。
3.前端性能优化。Sea.js 通过异步加载模块,这对页面性能非常有益。Sea.js 还提供了 combo、flush 等插件,配合服务端,可以很好地对页面性能进行调优。
4.跨环境共享模块。CMD 模块定义规范与 Node.js 的模块规范非常相近。通过 Sea.js 的 Node.js 版本,可以很方便实现模块的跨服务器和浏览器共享。
var util = require('./util.js');
util.print('我是字符串');
不再需要冗长的命名空间了,也不再需要担心命名的冲突
不需要手动管理 js 文件的依赖,依赖关系写在代码中,SeaJS 会自动处理
根据依赖文件安装依赖
pip install -r requirements.txt
#.so 为共享库,是shared object,用于动态连接的,和dll差不多
#C源码
#include<stdio.h>
int fact(int n)
{
if (n <= 1)
return 1;
else
return n * fact(n - 1);
}
#编译 编译好后生成了hello.so
gcc -o test.so -shared -fPIC hello.c
#python调用
from ctypes import *
dll = cdll.LoadLibrary('./test.so')
ret = dll.fact(4)
print(ret)
ubuntu14.04LTS上装有两个版本的python:python2.7.6与python3.4,默认使用python2.7.6。
可以使用以下命令来修改默认python版本:
sudo cp /usr/bin/python /usr/bin/python_bak #备份
sudo rm /usr/bin/python #删除
sudo ln -s /usr/bin/python3.4 /usr/bin/python #默认设置为python3.4
这样在终端中运行Python时,默认启动的就是3.4版本了
文本框禁止剪切、复制、粘贴
onpaste="return false" oncontextmenu="return false" oncopy="return false" oncut="return false"
http://www.dlmbd.icoc.in
http://dlmbd.faisco.cn/
在线安装nginx
sudo apt-get install nginx
配置文件都在/etc/nginx下,并且每个虚拟主机已经安排在了/etc/nginx/sites-available下
启动程序文件在/usr/sbin/nginx
日志放在了/var/log/nginx中,分别是access.log和error.log
在/etc/init.d/下创建了启动脚本nginx
默认的虚拟主机的目录设置在了/usr/share/nginx/www
源代码安装 下载地址:http://nginx.org/download/
$./configure
$make
$make install
安装成功之后,nginx放置在/usr/local/nginx目录下,主要的配置文件为conf目录下的nginx.conf,nginx的启动文件在sbin目录下的nginx文件。
在线安装的启动过程
$sudo /etc/init.d/nginx start
停止nginx服务
sudo /etc/init.d/nginx stop
源代码安装的启动过程
$cd /usr/local/nginx
$sbin/nginx
Traceback (most recent call last):
File "/home/hjd/.pyenv/versions/apienv/lib/python3.4/site-packages/tornado/web.py", line 1390, in _execute
result = self.prepare()
File "/home/hjd/.pyenv/versions/apienv/lib/python3.4/site-packages/tornado/web.py", line 2103, in prepare
raise HTTPError(self._status_code)
tornado.web.HTTPError: HTTP 404: Not Found
原因:页面没有找到,因为页面本来不存在
api:没有页面\没有状态
xyjadmin
123456
Ctrl+Alt+T #新开一个终端
Ctrl+Shift+T #在已开终端在开一个终端
Ctrl+H #显示/隐藏 隐藏文件
# ubtuntu14.04 添加启动器 后面的注释要删除
sudo gedit /usr/share/applications/Navicat.desktop
[Desktop Entry]
Encoding=UTF-8 # 编码
Name=Navicat # 软件名称
Comment=Navicat Mysql # 软件简介
Exec=/home/hjd/software/navicat111_mysql_cs/start_navicat # 软件启动程序路径
Icon=/home/hjd/software/navicat111_mysql_cs/navicat.jpg # 软件图标路径
Terminal=false
StartupNotify=true
Type=Application
Categories=Application;Development;
API 接口属于一种操作系统或程序接口,GUI接口属于一种图形操作系统。两者都属于直接用户接口。有时公司会将 API 作为其公共开放系统。也就是说,公司制定自己的系统接口标准,当需要执行系统整合、自定义和程序应用等操作时,公司所有成员都可以通过该接口标准调用源代码,该接口标准被称之为开放式API。
# 安装五笔输入法
sudo apt-get install ibus-table-wubi
菜单管理树形插件
numpy科学计数法
tornado用户认证
http://www.cnblogs.com/200911/articles/2388219.html # 程序员的进阶之路
filter(function, sequence):对sequence中的item依次执行function(item),将执行结果为True的item组成一个List/String/Tuple(取决于sequence的类型)
map(function, sequence) :对sequence中的item依次执行function(item),见执行结果组成一个List返回
reduce(function, sequence, starting_value):对sequence中的item顺序迭代调用function,如果有starting_value,还可以作为初始值调用,例如可以用来对List求和:
>>> def add(x,y): return x + y
>>> reduce(add, range(1, 11))
55 (注:1+2+3+4+5+6+7+8+9+10)
>>> reduce(add, range(1, 11), 20)
75 (注:20+1+2+3+4+5+6+7+8+9+10)
# 内部获取access_token
http://localhost:8080/1/token?appid=53Z2b3kB94h32mbYNg&secret=RraXuQRoaoHc1Hk02GGJDT6RqOyIwoW3&grant_type=client_credential
# 两个反斜杠在r模式下才等于一个反斜杠
>>> t = '03\\01\\2016'
>>> t
'03\\01\\2016'
>>> print(t)
03\01\2016
>>> t == '03\01\2016'
False
>>> text1 = '03\\01\\2016'
>>> import re
>>> if re.match(r'\d+\\\d+\\\d+',text1):
... print('yes')
... else:
... print('no')
...
yes
# tornado中文学习文档
http://demo.pythoner.com/itt2zh/index.html
# pycharm快捷键和yeild
http://www.achais.com/
首先,== equality 等同,=== identity 恒等。
==, 两边值类型不同的时候,要先进行类型转换,再比较。
===,不做类型转换,类型不同的一定不等。
下面分别说明:
先说 ===,这个比较简单。下面的规则用来判断两个值是否===相等:
1、如果类型不同,就[不相等]
2、如果两个都是数值,并且是同一个值,那么[相等];(!例外)的是,如果其中至少一个是NaN,那么[不相等]。(判断一个值是否是NaN,只能用isNaN()来判断)
3、如果两个都是字符串,每个位置的字符都一样,那么[相等];否则[不相等]。
4、如果两个值都是true,或者都是false,那么[相等]。
5、如果两个值都引用同一个对象或函数,那么[相等];否则[不相等]。
6、如果两个值都是null,或者都是undefined,那么[相等]。
再说 ==,根据以下规则:
1、如果两个值类型相同,进行 === 比较。
2、如果两个值类型不同,他们可能相等。根据下面规则进行类型转换再比较:
a、如果一个是null、一个是undefined,那么[相等]。
b、如果一个是字符串,一个是数值,把字符串转换成数值再进行比较。
c、如果任一值是 true,把它转换成 1 再比较;如果任一值是 false,把它转换成 0 再比较。
d、如果一个是对象,另一个是数值或字符串,把对象转换成基础类型的值再比较。对象转换成基础类型,利用它的toString或者valueOf方法。
js核心内置类,会尝试valueOf先于toString;例外的是Date,Date利用的是toString转换。非js核心的对象,令说(比较麻烦,我也不大懂)
e、任何其他组合,都[不相等]。
用 == 的时候要有充分的注释
账号:[email protected]密码:yaovipjiaqqun3392400 账号:[email protected]密码:yaovipjiaqqun3392400
账号:[email protected]密码:yaovipjiaqqun3392400 账号:[email protected]密码:yaovipjiaqqun3392400
账号:[email protected]密码:yaovipjiaqqun3392400 账号:[email protected]密码:yaovipjiaqqun3392400
账号:[email protected]密码:yaovipjiaqqun3392400 账号:[email protected]密码:yaovipjiaqqun3392400
账号:[email protected]密码:yaovipjiaqqun3392400 账号:[email protected]密码:yaovipjiaqqun3392400
账号:[email protected]密码:yaovipjiaqqun3392400 账号:[email protected]密码:yaovipjiaqqun3392400
账号:[email protected]密码:yaovipjiaqqun3392400 账号:[email protected]密码:yaovipjiaqqun3392400
账号:[email protected]密码:yaovipjiaqqun3392400 账号:[email protected]密码:yaovipjiaqqun3392400
账号:[email protected]密码:yaovipjiaqqun3392400 账号:[email protected]密码:yaovipjiaqqun3392400
账号:[email protected]密码:yaovipjiaqqun3392400 账号:[email protected]密码:yaovipjiaqqun3392400
账号:[email protected]密码:yaovipjiaqqun3392400 账号:[email protected]密码:yaovipjiaqqun3392400
账号:[email protected]密码:yaovipjiaqqun3392400 账号:[email protected]密码:yaovipjiaqqun3392400
账号:[email protected]密码:yaovipjiaqqun3392400 账号:[email protected]密码:yaovipjiaqqun3392400
账号:[email protected]密码:yaovipjiaqqun3392400 账号:[email protected]密码:yaovipjiaqqun3392400
账号:[email protected]密码:yaovipjiaqqun3392400 账号:[email protected]密码:yaovipjiaqqun3392400
账号:[email protected]密码:yaovipjiaqqun3392400
# 微信公众号邮箱
[email protected]
# 微信开放平台账号
[email protected]
home/hjd/.pyenv/versions/wechatenv/lib/python3.4/site-packages/django/db/backends/sqlite3/base.py
try:
from pysqlite2 import dbapi2 as Database
except ImportError:
from sqlite3 import dbapi2 as Database
home/hjd/.pyenv/versions/3.4.1/lib/python3.4/sqlite3/dbapi2.py
from _sqlite3 import *
解决方法:
: ~$ sudo rm /usr/bin/python
:~$ sudo ln -s /usr/include/python3.2 /usr/bin/python
sqlite3安装失败原因:pyenv 环境中的python要重新安装
L = range(1,101)
L[:10:2] # 前10个数,每两个取一个
L[1::2] # 从下标1开始,每两个取一个
sudo apt-get install fcitx-table-wbpy #安装五笔输入法
ubuntu desktop 14.04 LTS版: http://192.168.0.62/file/ubuntu14.04/ubuntu-14.04.1-desktop-amd64.iso
更新到最新源
sudo apt-get update
sudo apt-get upgrade
#立即生效
nautilus -q
# 安装字体
sudo cp msyh.ttf /usr/share/fonts/
sudo apt-get install libpng12-0=1.2.50-1ubuntu2
sudo apt-get install libfreetype6=2.5.2-1ubuntu2
sudo rm -rf /var/cache/apt/archives/lock
sudo apt-get install libfreetype6-dev
sudo apt-get install libfreetype6
sudo apt-get install libpng12-dev
onmousedown script 当元素上按下鼠标按钮时触发。
onmousemove script 当鼠标指针移动到元素上时触发。
onmouseout script 当鼠标指针移出元素时触发。
onmouseover script 当鼠标指针移动到元素上时触发。
onmouseup script 当在元素上释放鼠标按钮时触发。
# 鼠标移动到图片上,图片放大
<!DOCTYPE html>
<html>
<head>
<script>
function bigImg(x)
{
x.style.height="380px";
x.style.width="380px";
}
function normalImg(x)
{
x.style.height="128px";
x.style.width="128px";
}
</script>
</head>
<body>
<img onmousemove="bigImg(this)" onmouseout="normalImg(this)" border="0" src="/i/eg_tulip.jpg" alt="Smiley" style="height:128px;width:128px;">
</body>
</html>
# mongo数据库操作
import pymongo
connection=pymongo.Connection('192.168.0.62', 27017)
# connection = MongoClient() # 链接默认的host和port
db = connection.ebdb_smartsys
ebc_wechat_oa = {
"appid": appid,
"secret": appsecret,
"wxtoken": token,
"encoding_aes_key": encoding_aes_key,
"pid": pid,
"factory_uid": factory_uid,
"create_date": ,
}
posts = db.ebc_wechat_oa
posts.insert(ebc_wechat_oa)
# mongo数据库操作
import pymongo
connection = pymongo.Connection("192.168.0.62", 27017)
db = connection.ebdb_smartsys
db.authenticate("smartsys", "smartsys.com") #账号为:smartsys密码为:smartsys.com
result = db.ebc_wechat_oa.find_one({'factory_uid': factory_uid})
if result:
return HttpResponse('<html><script type="text/javascript">alert("已经填写过数据"); '
'window.location="setup"</script></html>')
<style>
body
{
text-align: center;
}
.input_class
{
width:350px;
height:30px;
}
.div_wechat_bind
{
margin-left: auto;
margin-right: auto;
line-height:250%;
height: 300px;
width: 800px;
text-align: center;
margin-top: -105px;
margin-left: -107px;
line-height: 50px;
vertical-align:-13px;
position: absolute;
left: 50%;
top: 50%;
}
</style>
netstart -tnlp
×
class控制样式 .
id控制事件 #
<div class="col-xs-3"></div>
col-md-6
$("#").val($.trim($("#").text())); 修改操作从html获取数据填充并去除空格
var a = $trim($("#").val()); js获得值去除空格
$("#").html("输入合法数据")
ajax提交数据
modal_1.modal();
console.log(data); 可以在谷歌浏览器console项查看数据
1.判断非空
2.进一步检验是否合法
if(/^\s*$/gi.test(aaa)) aaa为空为true不为空为false
if(/^[\d\.]+$/.test("12.3"))
if(/^[\d]*(\.{0,1})[\d]+$/.test(aaa))
<span><i></i></span>
正则表达式和语言无关
if re.match(r"^[\d]+(\.{0,1})[\d]+$","")
if re.match(r"^20(\d{12})$","20160316121212")
h十二小时制H二十四小时制
样式不要写死到元素上
脚本一般放在最后
能把多个模板放在一起的话就最好不要分开,不然工作量会比较大
{% ifequal factory_uid "cd396786-579a-11e5-9e88-00a0d1eb6068" %} # 判断两者是否相等
ps x # 列出所有进程
ps x|less #可以按上下键进行翻找,按q退回输入命令
sudo kill 端口号 # 结束进程
You have excluded some files from the active changelist when committing.Would you like remaining changes to be moved to another changelist?
名称填入「百度」(不包括「」,下同),这一项可自定义关键词填入「baidu.com」,这一项为选填,网址填入「http://www.baidu.com/s?wd=%s」
添加搜狗搜索:「搜狗」「sogou.com」「http://www.sogou.com/web?query=%s」
添加必应搜索:「必应 」「cn.bing.com」「http://cn.bing.com/search?q=%s」
添加360搜索:「360搜索」「so.com 」「http://www.so.com/s?q=%s」
添加淘宝搜索:「淘宝搜索 「taobao.com」「http://s.taobao.com/search?q=%s」
__missing__() 方法可以让你定义如何处理缺失的值。
class safesub(dict):
"""防止key找不到"""
def __missing__(self, key):
return '{' + key + '}'
ifconfig:查看ip信息
无法安装'libgtk2.0-0:i386'
解决方法:sudo apt-get install libgtk2.0-0:i386 #把相关依赖都装上,然而我装不上
当一个值刚好在两个边界的中间的时候, round 函数返回离它最近的偶数。 也就是说,对1.5或者2.5的舍入运算都会得到2。
'The value is {:0,.2f},other value {}'.format(x, 23)
'The value is 1,234.57,other value 23'
单次设置vim行号 set nu
永久设置vim行号:进入etc/vim目录,找到vimrc文件(vim的初始化文件),使用cp命令对其进行备份,命令为:cp vimrc vimrc.bak(备份是一种安全机制,要谨记);用管理员权限打开vimrc,命令为:sudo vi vimrc,打开后,在vimrc文件最后加入一行命令:set nu;加完后,写入,退出,重启vim,即可发现有行号的标示。
gedit设置行号:编辑->首选项 或者 编辑->视图
numpy:安装方法:pip install numpy,详细官网网址是: http://www.numpy.org
dateutil:安装方法:pip install python-dateutil
pip install pytz
with open('test.txt', 'rt') as f:
... data = f.read()
... # 读取的是home目录下的test.txt文件
wt:为了写入一个文本文件,使用带有 wt 模式的 open() 函数, 如果之前文件内容存在则清除并覆盖掉。
rt:使用带有 rt 模式的 open() 函数读取文本文件。
at:如果是在已存在文件中添加内容,使用模式为 at 的 open() 函数。
>>> import sys
>>> sys.getdefaultencoding() # 查看系统文件的读写操作默认使用编码
可以使用在 print() 函数中使用 sep 和 end 关键字参数,以你想要的方式输出。比如:
>>> print('ACME', 50, 91.5)
ACME 50 91.5
>>> print('ACME', 50, 91.5, sep=',')
ACME,50,91.5
>>> print('ACME', 50, 91.5, sep=',', end='!!\n')
ACME,50,91.5!!
使用 end 参数也可以在输出中禁止换行,或者在print()后面加个逗号(但这样就会多了一个逗号,可以用\b退格把逗号删除)。比如:
>>> for i in range(5):
... print(i)
...
0
1
2
3
4
>>> for i in range(5):
... print(i, end=' ')
...
0 1 2 3 4 >>>
row = ('ACME', 50, 91.5)
>>> print(row, sep='-')
('ACME', 50, 91.5)
>>> print(*row, sep='-')
ACME-50-91.5
你想像一个文件中写入数据,但是前提必须是这个文件在文件系统上不存在。 也就是不允许覆盖已存在的文件内容。解决方案:可以在 open() 函数中使用 x 模式来代替 w 模式的方法来解决这个问题。比如:
>>> with open('somefile', 'xt') as f:
... f.write('Hello\n')
mkdir 目录名 => 创建一个目录
rmdir 空目录名 => 删除一个空目录
rm 文件名 文件名 => 删除一个文件或多个文件
rm –rf 非空目录名 => 删除一个非空目录下的一切
touch 文件名 => 创建一个空文件
http://python3-cookbook.readthedocs.org/zh_CN/latest/c05/p07_read_write_compressed_datafiles.html
5.7读取压缩文件==>6.13数据的累加与统计操作------未读
# pycharm中文不显示,更换字体就行,比如雅黑等
Appearance & Behavior-->Appearance-->Override default fonts by (not recommended)-->Name:WenQuanYi Micro Hei
# pycharm中文不显示,汉化把resources_cn.jar放到lib目录下
/home/hjd/software/pycharm-4.0.5/lib
# 获取操作者当前ip
x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')
if x_forwarded_for:
ip = x_forwarded_for.split(',')[-1].strip()
else:
# REMOTE_ADDR要先在服务器中部署
ip = request.META.get('REMOTE_ADDR')
clone failed
Failed to start Git process
# 原因是还没安装git,sudo apt-get install git 进行安装即可
装饰器@asynchronous装饰的handler,那么这个http请求就会成为长连接,会一直处于等待状态,直到调用self.finish(),这个请求才会结束
装饰后的函数其实已经是另外一个函数了(函数名等函数属性会发生改变)。这样有时候会对程序造成一些不便,例如想对unittest框架中的一些函数添加自定义的decorator,添加后由于函数名和函数的doc发生了改变,对测试结果有一些影响。所以,Python的functools包中提供了一个叫wraps的decorator来消除这样的副作用。写一个decorator的时候,最好在实现之前加上functools的wrap,它能保留原有函数的名称和docstring。
import functools
@functools.wraps(函数参数)
JSON只是一种数据交换格式。JSON和XML是同一类东西。json.loads是将字符串里描述的JSON对象反序列化为Python对象
# 只往消息板发送文字
http://localhost:8080/1/screen/content?access_token=qH0Bog0fJyMC1zW2Sx9AMHsXkWQ1PfThbaeniSUcHXOMZYxwb52bYU7a2I0O6LEo_c21b4297b80a9b84741098f64f0b9a9b8a7ca54b&type=text&to_user=100000377&TK_PY_ID=863004795&name=消息板文字&sex=1&province=浙江&icon=http://wx.qlogo.cn/mmopen/PiajxSqBRaEIPPtoNv0J9D6iaiaY5icb8ibHicJGd0xIiaO7SMjr9I9ickUQhyM4VGqlKFNJDt6IibLIeibXT2icByl6Q3YsA/0&openid=oYazTshouh3kExbIUt9oAay3Hpe0&Message=消息板文字消息板文字city=杭州&country=中国
# 只往消息板发送图片
http://localhost:8080/1/screen/content?access_token=qH0Bog0fJyMC1zW2Sx9AMHsXkWQ1PfThbaeniSUcHXOMZYxwb52bYU7a2I0O6LEo_c21b4297b80a9b84741098f64f0b9a9b8a7ca54b&type=image&to_user=100000377&TK_PY_ID=863004795&name=消息板图片&sex=1&province=江西&icon=http://wx.qlogo.cn/mmopen/PiajxSqBRaEIPPtoNv0J9D6iaiaY5icb8ibHicJGd0xIiaO7SMjr9I9ickUQhyM4VGqlKFNJDt6IibLIeibXT2icByl6Q3YsA/0&openid=oYazTshouh3kExbIUt9oAay3Hpe0&Message=消息板图片消息板图片&city=南昌&country=中国
# 往微屏和消息板发图片
http://localhost:8080/1/screen/content?access_token=qH0Bog0fJyMC1zW2Sx9AMHsXkWQ1PfThbaeniSUcHXOMZYxwb52bYU7a2I0O6LEo_c21b4297b80a9b84741098f64f0b9a9b8a7ca54b&type=both-image&to_user=100000377&TK_PY_ID=863004795&name=微屏消息板图片&sex=1&province=浙江&icon=http://wx.qlogo.cn/mmopen/PiajxSqBRaEIPPtoNv0J9D6iaiaY5icb8ibHicJGd0xIiaO7SMjr9I9ickUQhyM4VGqlKFNJDt6IibLIeibXT2icByl6Q3YsA/0&openid=oYazTshouh3kExbIUt9oAay3Hpe0&Message=%E5%9B%9E&city=杭州&country=中国&TK_ID=b6eb941e-b00f-42ba-ba33-b8d00207a9ac697&TK_PY_ID=63881257&tk_type=Publish&USER_LOGIN_NAME=0&TK_CREATE_DATE=2016-03-25 14:05:58&CommandType=Picture&CommandValue=http://mmbiz.qpic.cn/mmbiz/KMiaplj6KJexGaexxYfmRwcicfQTjygATl6u2YwA91sLmzIy6ml3iaDgt5G0aER8FCUZOVmzic5J1PicfQZKzkvmSPQ/0?id=38&Pno=38&WxUserHead=http://wx.qlogo.cn/mmopen/PiajxSqBRaEJc499Y0f2zeMe1dy9icoNaSCpfQanRVf9zBpIOKWSbnR2yMtdt89h2iaYfWJS3KEWOqTVuj2zU5ckg/0&WxUserName=提线木偶&OpenId=ocmnEjnRvWg1A-iUHtv-HZ44YRjw
# 只往微屏发图片
http://localhost:8080/1/screen/content?access_token=qH0Bog0fJyMC1zW2Sx9AMHsXkWQ1PfThbaeniSUcHXOMZYxwb52bYU7a2I0O6LEo_c21b4297b80a9b84741098f64f0b9a9b8a7ca54b&type=ds-image&to_user=100000377&TK_PY_ID=863004795&TK_ID=b6eb941e-b00f-42ba-ba33-b8d00207a9ac697&tk_py_id=63881257&tk_type=Publish&USER_LOGIN_NAME=,&TK_CREATE_DATE=2016-03-25 14:05:58&CommandType=Picture&CommandValue=http://mmbiz.qpic.cn/mmbiz/KMiaplj6KJexGaexxYfmRwcicfQTjygATl6u2YwA91sLmzIy6ml3iaDgt5G0aER8FCUZOVmzic5J1PicfQZKzkvmSPQ/0?id=38&Pno=38&WxUserHead=http://wx.qlogo.cn/mmopen/PiajxSqBRaEJc499Y0f2zeMe1dy9icoNaSCpfQanRVf9zBpIOKWSbnR2yMtdt89h2iaYfWJS3KEWOqTVuj2zU5ckg/0&WxUserName=提线木偶&OpenId=ocmnEjnRvWg1A-iUHtv-HZ44YRjw
# 消息格式
http://192.168.0.62/smartsys/_build/html/design/message.html
npm i -g raml2html
raml2html --help
raml2html example.raml > example.html
raml2html -t examples/custom-template-test/template.nunjucks -i example.raml -o example.html
# nodejs升级
sudo npm cache clean -f
sudo npm install -g n
sudo n stable
# 更新raml文档
cd api-raml-doc
raml2html raml/api.raml > index.html