背景:【总理到访中关村创业大街 问“你们都用什么手机啊?”】今日,总理李克强到访中关村创业大街,众多员工都拿出手机拍照,总理见状,询问众人“你们都用什么手机啊?”“苹果”、“三星”、“小米”、“中兴”、“华为”,众人争相回答。李克强感慨了一句“还是苹果跟三星的多啊。”是不是挺有深意的!
回顾历史,假如潘金莲家里有一部国产手机:
假如潘金莲家里有手机,她在家里就不会闷,会在家安安静静的玩手机,也不会开窗吹风。那么就不会遇到西门庆,不遇到西门庆金莲就不会出轨,不出轨,武松就不会被逼上梁山,武松不上梁山,方腊就不会被擒,可取得大宋江山,就不会有靖康之耻,也没有金兵入关,更不会有大清朝,不会闭关锁国,不会有鸦片战争八国联军。中国将是世界上唯一的超级大国!总而言之,原来有手机真的是太重要了!
如果潘金莲家里有手机
首先得有移动通信网络和电网
移动通信是起源于战争的技术
也就是说那时候中国不仅已经进行了工业革命还打过大型战争
领先世界几百年有了电子技术
本来就已经是超级大国了
于是就会变成一排宋军拿着重机枪在长城上扫射蒙古骑兵
回顾历史,假如潘金莲家里有一部国产手机:
假如潘金莲家里有手机,她在家里就不会闷,会在家安安静静的玩手机,也不会开窗吹风。那么就不会遇到西门庆,不遇到西门庆金莲就不会出轨,不出轨,武松就不会被逼上梁山,武松不上梁山,方腊就不会被擒,可取得大宋江山,就不会有靖康之耻,也没有金兵入关,更不会有大清朝,不会闭关锁国,不会有鸦片战争八国联军。中国将是世界上唯一的超级大国!总而言之,原来有手机真的是太重要了!
如果潘金莲家里有手机
首先得有移动通信网络和电网
移动通信是起源于战争的技术
也就是说那时候中国不仅已经进行了工业革命还打过大型战争
领先世界几百年有了电子技术
本来就已经是超级大国了
于是就会变成一排宋军拿着重机枪在长城上扫射蒙古骑兵
来自:https://www.cnblogs.com/Eivll0m/p/4921829.html
一)他怎么知道缓存在那个目录呢?
You can add a line in wp-config.php like below:
define( 'RT_WP_NGINX_HELPER_CACHE_PATH','/var/run/nginx-cache');
root@101.200.228.135:/data/htdocs/jackxiang.com# grep -r "RT_WP_NGINX_HELPER_CACHE_PATH" ./
./wp-content/plugins/nginx-helper/nginx-helper.php: define('RT_WP_NGINX_HELPER_CACHE_PATH', '/var/run/nginx-cache');
./wp-content/plugins/nginx-helper/purger.php: if (!defined('RT_WP_NGINX_HELPER_CACHE_PATH')) {
./wp-content/plugins/nginx-helper/readme.txt:`define('RT_WP_NGINX_HELPER_CACHE_PATH','/var/run/nginx-cache/');`
vim打开上面文件替换:
%s/\/var\/run\/nginx-cache/\/data\/cache\/ngx_fcgi_cache2/g
二)总配置:/conf/nginx.conf
三)分配置:/conf/vhost/jackxiang.conf
阅读全文
一)他怎么知道缓存在那个目录呢?
You can add a line in wp-config.php like below:
define( 'RT_WP_NGINX_HELPER_CACHE_PATH','/var/run/nginx-cache');
root@101.200.228.135:/data/htdocs/jackxiang.com# grep -r "RT_WP_NGINX_HELPER_CACHE_PATH" ./
./wp-content/plugins/nginx-helper/nginx-helper.php: define('RT_WP_NGINX_HELPER_CACHE_PATH', '/var/run/nginx-cache');
./wp-content/plugins/nginx-helper/purger.php: if (!defined('RT_WP_NGINX_HELPER_CACHE_PATH')) {
./wp-content/plugins/nginx-helper/readme.txt:`define('RT_WP_NGINX_HELPER_CACHE_PATH','/var/run/nginx-cache/');`
vim打开上面文件替换:
%s/\/var\/run\/nginx-cache/\/data\/cache\/ngx_fcgi_cache2/g
二)总配置:/conf/nginx.conf
三)分配置:/conf/vhost/jackxiang.conf
阅读全文
PHP Deprecated: Comments starting with '#' are deprecated in *.ini 警告解决办法
Php/Js/Shell/Go jack 2015-5-7 17:20
背景:Newest 'owncloud' Questions - Stack Overflow Track down PHP error “Comments starting with '#' are deprecated in Unknown on line 1 at Unknown#0” I've just set up a RPi 2 with the latest ...
PHP Deprecated: Comments starting with '#' are deprecated in *.ini 警告解决办法
新装的CentOS7 64系统,使用新立得装的PHP 版本,但是每次我在命令行下执行php脚本时都会出如下的警告信息:
PHP Deprecated: Comments starting with '#' are deprecated in /etc/php5/cli/conf.d/mcrypt.ini on line 1 in Unknown on line 0
上网查了一下,原来是新版本的PHP不赞成用'#'号作为注释符号,需要用分号';'。打开这个文件,把里面的#替换成;号,问题解决!
摘自:http://blog.csdn.net/rainday0310/article/details/6330115
Shell脚本风格的单行注释
这种注释方式使用"#"的形式实现,它的用法与C++语言风格注释方式相似。使用Shell脚本风格进行单行注释的PHP示例代码如下:
参考:http://jackxiang.com/post/6532/
PHP Deprecated: Comments starting with '#' are deprecated in *.ini 警告解决办法
新装的CentOS7 64系统,使用新立得装的PHP 版本,但是每次我在命令行下执行php脚本时都会出如下的警告信息:
PHP Deprecated: Comments starting with '#' are deprecated in /etc/php5/cli/conf.d/mcrypt.ini on line 1 in Unknown on line 0
上网查了一下,原来是新版本的PHP不赞成用'#'号作为注释符号,需要用分号';'。打开这个文件,把里面的#替换成;号,问题解决!
摘自:http://blog.csdn.net/rainday0310/article/details/6330115
Shell脚本风格的单行注释
这种注释方式使用"#"的形式实现,它的用法与C++语言风格注释方式相似。使用Shell脚本风格进行单行注释的PHP示例代码如下:
参考:http://jackxiang.com/post/6532/
[实践OK]CentOS7下编译apache的依赖链接库时解决编译libiconv时的'gets' undeclared here错误
Unix/LinuxC技术 jack 2015-5-7 16:56
wget -c http://www.itkb.ro/userfiles/file/libiconv-glibc-2.16.patch.gz
cd libiconv-1.14/srclib
patch -p1 stdio.in.h
俺运行patch后好久都没有反应 :( 最后人肉修改
这个补丁的内容如上,用unzip包解压后rz上CentOS7上去,修改成下面这样:
/data/software/libiconv-1.14/srclib/stdio.in.h
参考来自:http://forum.z27315.com/topic/15662-%E8%A7%A3%E5%86%B3%E7%BC%96%E8%AF%91libiconv%E6%97%B6%E7%9A%84gets-undeclared-here%E9%94%99%E8%AF%AF/
cd libiconv-1.14/srclib
patch -p1 stdio.in.h
俺运行patch后好久都没有反应 :( 最后人肉修改
这个补丁的内容如上,用unzip包解压后rz上CentOS7上去,修改成下面这样:
/data/software/libiconv-1.14/srclib/stdio.in.h
参考来自:http://forum.z27315.com/topic/15662-%E8%A7%A3%E5%86%B3%E7%BC%96%E8%AF%91libiconv%E6%97%B6%E7%9A%84gets-undeclared-here%E9%94%99%E8%AF%AF/
背景:整了一把hhvm,发现其对wordpress支持还不错,对bo-blog也还成,但是bo-blog里的验证码好像就不行了,对owncloud直接就歇菜了出现内部服务器错误。那就还回常规的php吧,出现:
[root@jackxiang vhost]# service nginx start
Starting nginx... Enter PEM pass phrase:
Enter PEM pass phrase:
Enter PEM pass phrase:
nginx: [alert] mmap(MAP_ANON|MAP_SHARED, 134217728) failed (12: Cannot allocate memory)
——————————————————————————————————————————————————
按照以往的设置,直接设定fastcgi_cache:
fastcgi_cache_path /data/nginx/fastcgi_cache levels=1:2 keys_zone=ngx_fcgi_cache:150m inactive=1d max_size=40g;
但是,出现错误:
nginx: [alert] mmap(MAP_ANON|MAP_SHARED, 536870912) failed (12: Cannot allocate memory)
原因是共享内存空间设置过大,系统已没有足够的内存分配,导致无法启动nginx,可以将上面的keys_zone=ngx_fcgi_cache:150m,设置小一些,例如keys_zone=ngx_fcgi_cache:50m,即可。
最后,
为何没有足够的内存分配?是因为我在虚拟机里面又装了一个virtual box,里面装了一个windows 2003,它里面装了一个Rtx Server,于是没啥内存了。
后记,
有兄弟建议:HHVM对GD支持OK么,现在研究hhvm。。不如耐心等10月phpng。
我的回复是:不清楚呢,我也是昨天才安成功了hhvm,用的群里兄弟贴的链接地址。
提前体验一下,这块我觉得这块是智能化还是傻瓜化:
我发现这个hhvm某个链接访问后,一段时间再访问好像又重新编译了。
但如果访问频率很快呢,就会发现性能的确还不错...这块新版PHP得规避。
[root@jackxiang vhost]# service nginx start
Starting nginx... Enter PEM pass phrase:
Enter PEM pass phrase:
Enter PEM pass phrase:
nginx: [alert] mmap(MAP_ANON|MAP_SHARED, 134217728) failed (12: Cannot allocate memory)
——————————————————————————————————————————————————
按照以往的设置,直接设定fastcgi_cache:
fastcgi_cache_path /data/nginx/fastcgi_cache levels=1:2 keys_zone=ngx_fcgi_cache:150m inactive=1d max_size=40g;
但是,出现错误:
nginx: [alert] mmap(MAP_ANON|MAP_SHARED, 536870912) failed (12: Cannot allocate memory)
原因是共享内存空间设置过大,系统已没有足够的内存分配,导致无法启动nginx,可以将上面的keys_zone=ngx_fcgi_cache:150m,设置小一些,例如keys_zone=ngx_fcgi_cache:50m,即可。
最后,
为何没有足够的内存分配?是因为我在虚拟机里面又装了一个virtual box,里面装了一个windows 2003,它里面装了一个Rtx Server,于是没啥内存了。
后记,
有兄弟建议:HHVM对GD支持OK么,现在研究hhvm。。不如耐心等10月phpng。
我的回复是:不清楚呢,我也是昨天才安成功了hhvm,用的群里兄弟贴的链接地址。
提前体验一下,这块我觉得这块是智能化还是傻瓜化:
我发现这个hhvm某个链接访问后,一段时间再访问好像又重新编译了。
但如果访问频率很快呢,就会发现性能的确还不错...这块新版PHP得规避。
http://jingyan.baidu.com/article/4b52d70250e7f5fc5d774b7d.html
2015年web应用漏洞解析培训的安全技术课程笔记
Unix/LinuxC技术 jack 2015-5-5 11:47
背景:开发web程序来讲,凡是用户输入都不可信的原则,加强web应用的安全性培训笔记,主要是有这个安全的意识至关重要,形成梯队、纵深、层层防御体系至关重要。
1=1注入,主要是输入过滤:
数字型:?ID=120 and 1=1
字符型:单引号保障其完整性,闭合,形成完整查询。
搜索型:模糊搜索,like,test=adb%abc%。
信息泄漏
拖库
执行恶意代码获取administrator。
如何杜绝sql inject:参数化,检测非法字符,安全api。
身份认证,会话管理(放服务器验证别放前台)。
提升用户不存在,密码错误(弱密码)。撞库。
验证码饶过:网站回退,验证码名称和图片名一致;把验证码放session验证。
xss攻击:网站用户。输入js代码盗取cookie。javascript 尖括号过滤。跨站脚本主要是对用户的攻击,对服务器没有用。
越权漏洞:我可以修改你的资料。
春秋航空,update?id=xxx xxx变yyy。
垂直越权:访问更高级别的用户权限。
test 访问到了管理界面,发现按钮是灰色,F12 直接修改去disable,可点击,后没添加按钮,div disable=none,打开后就可以修改了(输入必填项),成功后再次登录,成功越权。
不安全的直接对象引用(xia z):
任意文件引用~下载路径:.. 上一路径。
查看到系统的路径,网站源码。修复:只让输入.xml的,下源码%00终结符号:password=a.php%00download.xml
Ngnix在遇到%00空字节时与后端FastCGI处理不一致,导致可以在图片中嵌入PHP代码然后通过访问xxx.jpg%00.php来执行其中的代码
影响版本:
nginx 0.5.*
nginx 0.6.*
nginx 0.7 <= 0.7.65
nginx 0.8 <= 0.8.37
而新漏洞的利用方式是:
/test.jpg%00.php
对应fastcgi_script_name的匹配正则,我们会发现是匹不到这个漏洞的,所以非常杯具,以前被老nginx漏洞黑过的肉鸡还能被重新黑一次。
一般这个漏洞需要在能够上传文件的应用中才能被利用,所以论坛首当其冲,象discuz论坛的两个文件就能非常方便的识别这个漏洞。
解决方法:升级Nginx
摘录自:http://www.unhonker.com/bug/153.html
——————————————————————————————————————————————————————————————————
重定向漏洞:
redirect 检验refer。
上传漏洞:
只前台校验后缀。
可以用工具干掉那块校验的js,截包工具,fiddler2,再查查。传shell啥的,控制主机。
未验证的访问重定向:
?url=http://api.开放平台网址.cn/gettoken?code=xxxx 对跳转地址输入处(浏览器参数)做验证(用户填写的申请的网站回调获取code的url地址),其它地址不让他跳转。
1=1注入,主要是输入过滤:
数字型:?ID=120 and 1=1
字符型:单引号保障其完整性,闭合,形成完整查询。
搜索型:模糊搜索,like,test=adb%abc%。
信息泄漏
拖库
执行恶意代码获取administrator。
如何杜绝sql inject:参数化,检测非法字符,安全api。
身份认证,会话管理(放服务器验证别放前台)。
提升用户不存在,密码错误(弱密码)。撞库。
验证码饶过:网站回退,验证码名称和图片名一致;把验证码放session验证。
xss攻击:网站用户。输入js代码盗取cookie。javascript 尖括号过滤。跨站脚本主要是对用户的攻击,对服务器没有用。
越权漏洞:我可以修改你的资料。
春秋航空,update?id=xxx xxx变yyy。
垂直越权:访问更高级别的用户权限。
test 访问到了管理界面,发现按钮是灰色,F12 直接修改去disable,可点击,后没添加按钮,div disable=none,打开后就可以修改了(输入必填项),成功后再次登录,成功越权。
不安全的直接对象引用(xia z):
任意文件引用~下载路径:.. 上一路径。
查看到系统的路径,网站源码。修复:只让输入.xml的,下源码%00终结符号:password=a.php%00download.xml
Ngnix在遇到%00空字节时与后端FastCGI处理不一致,导致可以在图片中嵌入PHP代码然后通过访问xxx.jpg%00.php来执行其中的代码
影响版本:
nginx 0.5.*
nginx 0.6.*
nginx 0.7 <= 0.7.65
nginx 0.8 <= 0.8.37
而新漏洞的利用方式是:
/test.jpg%00.php
对应fastcgi_script_name的匹配正则,我们会发现是匹不到这个漏洞的,所以非常杯具,以前被老nginx漏洞黑过的肉鸡还能被重新黑一次。
一般这个漏洞需要在能够上传文件的应用中才能被利用,所以论坛首当其冲,象discuz论坛的两个文件就能非常方便的识别这个漏洞。
解决方法:升级Nginx
摘录自:http://www.unhonker.com/bug/153.html
——————————————————————————————————————————————————————————————————
重定向漏洞:
redirect 检验refer。
上传漏洞:
只前台校验后缀。
可以用工具干掉那块校验的js,截包工具,fiddler2,再查查。传shell啥的,控制主机。
未验证的访问重定向:
?url=http://api.开放平台网址.cn/gettoken?code=xxxx 对跳转地址输入处(浏览器参数)做验证(用户填写的申请的网站回调获取code的url地址),其它地址不让他跳转。
借来GPRS模块试了一下,http.get方法还是很容易的,估计POST也简单,就不试了.
查了一下,貌似没有任何资料有关SIM900a模块HTTP 1.1长链接的事情,如果不支持长链接,需要上位机给下位机实时发消息,就只能用TCP了。。
正常的话 返回200
来自:http://www.ysgh.net/archives/601
查了一下,貌似没有任何资料有关SIM900a模块HTTP 1.1长链接的事情,如果不支持长链接,需要上位机给下位机实时发消息,就只能用TCP了。。
正常的话 返回200
来自:http://www.ysgh.net/archives/601
CodeIgniter用ChromePHP來debug[PHP]
Php/Js/Shell/Go jack 2015-5-4 23:13
背景:写PHP时特别是调试页面时,不想有额外输出,于是相应的的调试插件出现了。
以前寫PHP都用var_dump來debug
現在改用ChromePHP來debug
ChromePHP是Chrome上的套件
在Firefox上也有Firephp
ChromePHP使用上也非常簡單
先到chrome web store
安裝ChromePHP套件
在去ChromePHP官網下載ChromePhp.php檔案
chromephp官網:http://www.chromephp.com/
接著只有在需要用的時後
include 'ChromePhp.php';
ChromePhp::log('需要輸出的var');
這樣一來就可以在Chrome控制台上的console看到輸出的訊息
如果要在CodeIgniter上使用
需要修改一下ChromePhp.php
把用本的private function __construct()
修改為public function __construct()
$this->load->library('ChromePhp');
$this->chromephp->log('需要輸出的var');
来自:http://blog.ipushs.com/codeigniter%E7%94%A8chromephp%E4%BE%86debugphp/?replytocom=78
以前寫PHP都用var_dump來debug
現在改用ChromePHP來debug
ChromePHP是Chrome上的套件
在Firefox上也有Firephp
ChromePHP使用上也非常簡單
先到chrome web store
安裝ChromePHP套件
在去ChromePHP官網下載ChromePhp.php檔案
chromephp官網:http://www.chromephp.com/
接著只有在需要用的時後
include 'ChromePhp.php';
ChromePhp::log('需要輸出的var');
這樣一來就可以在Chrome控制台上的console看到輸出的訊息
如果要在CodeIgniter上使用
需要修改一下ChromePhp.php
把用本的private function __construct()
修改為public function __construct()
$this->load->library('ChromePhp');
$this->chromephp->log('需要輸出的var');
来自:http://blog.ipushs.com/codeigniter%E7%94%A8chromephp%E4%BE%86debugphp/?replytocom=78
php open_basedir的性能影响
Php/Js/Shell/Go jack 2015-5-4 17:54
最近研究安全性时,偶尔发现php.ini上并没有开启open_basedir,于是搜索了下,有人说开启后有性能影响,于是测试了一下。
首先,交代一下环境:centos + nginx + php-fpm + php + mysql,典型的lnmp了。
测试代码如下:
Php代码 收藏代码
执行100次,实测结果是未开启open_basedir时大约是0.00001秒。
开启后:0.001秒。
性能相差100倍。
在安全性和性能上,该怎么取舍呢。。。还是安全性吧?哈哈。。。
来自:http://exvision.iteye.com/blog/830506
首先,交代一下环境:centos + nginx + php-fpm + php + mysql,典型的lnmp了。
测试代码如下:
Php代码 收藏代码
执行100次,实测结果是未开启open_basedir时大约是0.00001秒。
开启后:0.001秒。
性能相差100倍。
在安全性和性能上,该怎么取舍呢。。。还是安全性吧?哈哈。。。
来自:http://exvision.iteye.com/blog/830506
[转载]Linux下 input/output error(原创)
Unix/LinuxC技术 jack 2015-5-4 09:55
背景:今天一链接测试机,执行ls时出现:Input/output error,-bash: /bin/df: Input/output error,-bash: /usr/bin/uptime: Input/output error......
今天在linux下执行umount时无意用了远程目录而不是本地目录,结果悲剧了,当前用户出错,直接进入bash,不管输入什么命令都提示:input/output error。-bash: /home/myhome/.bash_profile: Input/output error
-bash-3.2$
用root账户进去,发现自己的目录变成这样:
d????????? ? ? ? ? ? myhome
在网上一搜都说可能是硬盘错误,一身汗~~
最后想起之前umount命令好像有问题,在root下重新执行:
# umount /home/myhome
unmount error 16 = Device or resource busy
Refer to the umount.cifs(8) manual page (man 8 umount.cifs)
unmount error 16 = Device or resource busy
Refer to the umount.cifs(8) manual page (man 8 umount.cifs)
以前也经常出现" Device or resource busy"这种问题,到网上再搜,查到一段话:
“有些时候,可能某些设备(通常是 CD-ROM)正忙或无法响应。此时,大多数用户的解决办法是重新启动计算机。我们大可不必这么做。例如,如果 umount /dev/hdc 失败的话,您可以试试“lazy” umount。语法十分简单:
umount -l <挂载点|设备>
此命令将会断开设备并关闭打开该设备的全部句柄。通常,您可以使用 eject <挂载点|设备>命令弹出碟片。所以,如果 eject 命令失效而您又不想重新启动,请使用 lazy umount。”
再次执行后搞定,谢天谢地!!记下以备忘!
转:http://bbs.c114.net/thread-564376-1-1.html
今天在linux下执行umount时无意用了远程目录而不是本地目录,结果悲剧了,当前用户出错,直接进入bash,不管输入什么命令都提示:input/output error。-bash: /home/myhome/.bash_profile: Input/output error
-bash-3.2$
用root账户进去,发现自己的目录变成这样:
d????????? ? ? ? ? ? myhome
在网上一搜都说可能是硬盘错误,一身汗~~
最后想起之前umount命令好像有问题,在root下重新执行:
# umount /home/myhome
unmount error 16 = Device or resource busy
Refer to the umount.cifs(8) manual page (man 8 umount.cifs)
unmount error 16 = Device or resource busy
Refer to the umount.cifs(8) manual page (man 8 umount.cifs)
以前也经常出现" Device or resource busy"这种问题,到网上再搜,查到一段话:
“有些时候,可能某些设备(通常是 CD-ROM)正忙或无法响应。此时,大多数用户的解决办法是重新启动计算机。我们大可不必这么做。例如,如果 umount /dev/hdc 失败的话,您可以试试“lazy” umount。语法十分简单:
umount -l <挂载点|设备>
此命令将会断开设备并关闭打开该设备的全部句柄。通常,您可以使用 eject <挂载点|设备>命令弹出碟片。所以,如果 eject 命令失效而您又不想重新启动,请使用 lazy umount。”
再次执行后搞定,谢天谢地!!记下以备忘!
转:http://bbs.c114.net/thread-564376-1-1.html
背景:想在树莓派上插上Arduion Uno的串口,进而两者进行通讯,后根据数据进一步判断并通过另一个Raspberry Pi的usb接口接上SIM900打电话的功能。
实践OK,如下:
输入minicom后,想退出怎么办,帮助:Ctrl+a,退出:x(eXit and reset.....X ),清屏:c(Clear Screen.......C)
用c语言读取的代码如下:
http://jackxiang.com/post/8003/
1.安装python(安装过的请跳到下一步): sudo aptitude install python-dev
2.安装python的GPIO模块,用于控制LED、电机等(安装过的请跳到下一步)
命令行下 输入(一行一个命令)
wget http://raspberry-gpio-python.googlecode.com/files/RPi.GPIO-0.3.1a.tar.gz (下载GPIO库)
tar xvzf RPi.GPIO-0.3.1a.tar.gz (tar解压)
cd RPi.GPIO-0.3.1a (进入解压后的文件夹)
sudo python setup.py install (安装GPIO库文件)
复制代码 要是看不懂上面的两点请移步到这http://www.shumeipai.net/forum.php?mod=viewthread&tid=939
3.安装serial,用于串口通信及USB通信:
sudo apt-get install python-serial
复制代码 4.当然你要是想在树莓派装串口调试工具就装:
sudo apt-get install minicom
配置minicom:
sudo minicom -s
启动出现配置菜单:选serial port setup
进入串口配置
输入A 配置串口驱动为/dev/ttyAMA0
输入E 配置速率为9600 8N1
输入F 将 Hardware Flow Control 设 为 NO
回车 退出
由于我们使用minicom作为超级终端控制路由器等设备, 而不是控制modem, 所以需要修改Modem and dialing, 将Init string, Reset string, Hang-up string设置为空. 设置完成后选择Save setup as dfl将当前设置保存为默认设置. 在配置菜单 选Save setup as df1保存(一定要记得这一步) 选Exit退出下次在输入minicon 即可直接进入。
命令minicom是进入串口超级终端画面,而minicom -s为配置minicom。说明/dev/ttyAMA0 对应为串口0 为你连接开发板的端口
。(如何更详细使用说明移步到这http://www.shumeipai.net/forum.php?mod=viewthread&tid=550)
接下来测一下环境是否都OK
sudo nano test.py
或用xwindow下用python IDE打开一个空的文件
输入内容
import serial
import RPi.GPIO
保存退出,
然后运行代码:
python test.py
(如果没有报错那就说明RPi.GPIO与serial两个库安装成功)上面环境说完了,重点部份来了
USB对接方式:
1.插上两个Arduion Uno与树莓派 的USB 然后 在树莓派输入:
ls /dev/tty*
查看有没有ttyACM0 这个文件(注只有在两个硬件USB互连的情况下才会有这个。如果两者没有连接是不会有的) 最新的系统一般都会自动生成。看到ttyACMO就说明二者可以通讯了 接下来上测试代码
Arduino代码:
byte number = 0;
void setup(){
Serial.begin(9600);
}
void loop(){
if (Serial.available()) {
number = Serial.read();
Serial.print("character recieved: ");
Serial.println(number, DEC);
}
}
先把上面的代码下载的Arduino上然后再把两者USB互接
树莓派python代码:
import serial
ser = serial.Serial('/dev/ttyACM0', 9600, timeout=1)
ser.open()
ser.write("testing")
try:
while 1:
response = ser.readline()
print response
except KeyboardInterrupt:
ser.close()
保存xxx.py 退出
注:树莓派下的serial与GPIO库都要在root帐户下才能运行
Python脚本报错AttributeError: ‘module’ object has no attribute’xxx’解决方法:
http://lovesoo.org/python-script-error-attributeerror-module-object-has-no-attribute-solve-method.html
然后运行树莓派代码 python xxx.py(这里的xxx就是你保存的树莓派代码)看到
character recieved: 116
character recieved: 101
character recieved: 115
...
character recieved: 103
说明两者USB通迅成功了
摘自:http://forum.eepw.com.cn/thread/258770/1
实践OK,如下:
输入minicom后,想退出怎么办,帮助:Ctrl+a,退出:x(eXit and reset.....X ),清屏:c(Clear Screen.......C)
用c语言读取的代码如下:
http://jackxiang.com/post/8003/
1.安装python(安装过的请跳到下一步): sudo aptitude install python-dev
2.安装python的GPIO模块,用于控制LED、电机等(安装过的请跳到下一步)
命令行下 输入(一行一个命令)
wget http://raspberry-gpio-python.googlecode.com/files/RPi.GPIO-0.3.1a.tar.gz (下载GPIO库)
tar xvzf RPi.GPIO-0.3.1a.tar.gz (tar解压)
cd RPi.GPIO-0.3.1a (进入解压后的文件夹)
sudo python setup.py install (安装GPIO库文件)
复制代码 要是看不懂上面的两点请移步到这http://www.shumeipai.net/forum.php?mod=viewthread&tid=939
3.安装serial,用于串口通信及USB通信:
sudo apt-get install python-serial
复制代码 4.当然你要是想在树莓派装串口调试工具就装:
sudo apt-get install minicom
配置minicom:
sudo minicom -s
启动出现配置菜单:选serial port setup
进入串口配置
输入A 配置串口驱动为/dev/ttyAMA0
输入E 配置速率为9600 8N1
输入F 将 Hardware Flow Control 设 为 NO
回车 退出
由于我们使用minicom作为超级终端控制路由器等设备, 而不是控制modem, 所以需要修改Modem and dialing, 将Init string, Reset string, Hang-up string设置为空. 设置完成后选择Save setup as dfl将当前设置保存为默认设置. 在配置菜单 选Save setup as df1保存(一定要记得这一步) 选Exit退出下次在输入minicon 即可直接进入。
命令minicom是进入串口超级终端画面,而minicom -s为配置minicom。说明/dev/ttyAMA0 对应为串口0 为你连接开发板的端口
。(如何更详细使用说明移步到这http://www.shumeipai.net/forum.php?mod=viewthread&tid=550)
接下来测一下环境是否都OK
sudo nano test.py
或用xwindow下用python IDE打开一个空的文件
输入内容
import serial
import RPi.GPIO
保存退出,
然后运行代码:
python test.py
(如果没有报错那就说明RPi.GPIO与serial两个库安装成功)上面环境说完了,重点部份来了
USB对接方式:
1.插上两个Arduion Uno与树莓派 的USB 然后 在树莓派输入:
ls /dev/tty*
查看有没有ttyACM0 这个文件(注只有在两个硬件USB互连的情况下才会有这个。如果两者没有连接是不会有的) 最新的系统一般都会自动生成。看到ttyACMO就说明二者可以通讯了 接下来上测试代码
Arduino代码:
byte number = 0;
void setup(){
Serial.begin(9600);
}
void loop(){
if (Serial.available()) {
number = Serial.read();
Serial.print("character recieved: ");
Serial.println(number, DEC);
}
}
先把上面的代码下载的Arduino上然后再把两者USB互接
树莓派python代码:
import serial
ser = serial.Serial('/dev/ttyACM0', 9600, timeout=1)
ser.open()
ser.write("testing")
try:
while 1:
response = ser.readline()
print response
except KeyboardInterrupt:
ser.close()
保存xxx.py 退出
注:树莓派下的serial与GPIO库都要在root帐户下才能运行
Python脚本报错AttributeError: ‘module’ object has no attribute’xxx’解决方法:
http://lovesoo.org/python-script-error-attributeerror-module-object-has-no-attribute-solve-method.html
然后运行树莓派代码 python xxx.py(这里的xxx就是你保存的树莓派代码)看到
character recieved: 116
character recieved: 101
character recieved: 115
...
character recieved: 103
说明两者USB通迅成功了
摘自:http://forum.eepw.com.cn/thread/258770/1
摘自:http://www.arduino123.com/a/jiaocheng/jichu/2013/0817/26398.html
Arduino的扩展库:
http://wenku.baidu.com/link?url=g1ilpiUc7MRP6sJ69J1oFCkk5JMH9JthfzzClH482SsiYcMn2hIpdzGd0mJc_7QdQZuUXMZIwZdaxPta_XL5QvSUYoqHkXNUUG6gL9WJYEa
http://www.arduino.cn/thread-1009-1-1.html
C:\Users\Administrator\Documents\Arduino\libraries\tsic/tsic.h:17:22: fatal error: WProgram.h: No such file or directory
Arduino1.0无法使用以前的库文件(WProgram.h) :
查看原文:http://elitezhe.sinaapp.com/wprogram-loss/
刚才使用自己以前编写的一个库文件,总是编译不通过,在0021上就没有问题。仔细看了看这个问题,发现原因是Arduino+1.0的版本里面没有了WProgram.h文件。
我找到的解决办法是把文件中的WProgram.h替换为Arduino.h
这个问题真心是坑爹,困扰好久.官网上居然也不给解释!!!
串口发数据调试:
Arduino不但有14个数字接口和6个模拟接口外,还有1个更为常用的串口接口。在实际应用中串口以只需要少量的几根线就能和其他串口设备通讯优势被广应用。
串行接口按标准被分为RS-232、RS-422、RS-485。RS-232是在1962年发布的,也是目前PC机与通信工业中应用最广泛的一种串行接口,RS-232采取不平衡传输方式,即所谓单端通讯。典型的RS-232信号在正负电平之间摆动,在发送数据时,发送端驱动器输出正电平在+5~+15V,负电平在-5~-15V电平。我们的单片机使用的是TTL电平的串行协议,因此单片机与pc通讯时需要进行RS-232电平和TTL电平的转换,单片机与单片机通讯时则可以直接连接。
USB版本的Arduino则是通过USB转成TTL串口下载程序的,数字接口0和1就是TTL串口RX和TX。
串口通讯中最重要的一点就的通讯协议,一般串口通讯协议都会有波特率、数据位、停止位、校验位等参数。大家不会设置也不用怕,Arduino语言中Serial.begin()函数就能使大家轻松完成设置,我们只需要改变该函数的参数即可,例如Serial.begin(9600),则表示波特率为9600bit/s(每秒比特数bps),其余参数默认即可。
Arduino语言中还提供了Serial.available() 判断串口缓冲器状态、Serial.read()读串口、Serial.print()串口发送及Serial.println()带换行符串口发送四个函数。
下面我们用一段代码来演示这些函数的用途。实验无须外围电路,只需要将下载的USB线连接即可。
————————————————————————————————————————
摘自:http://blog.csdn.net/daditao/article/details/20408949
Arduino 串口通讯:
http://blog.sina.com.cn/s/blog_624e2b450100l7p8.html
http://www.geekfans.com/thread-57780-1-1.html
核心:由于我们将使用arduino自带的USB转串口,因此我们必须给raspberry pi安装其驱动,而驱动就在arduino提供的软件上。所以我们必须在 raspberry pi安装arduino软件。
阅读全文
阅读全文
https://www.mockplus.cn/blog/post/73
Linux系统,使用C语言如何产生UUID
Unix/LinuxC技术 jack 2015-4-28 15:52
背景:生成唯一编码的uuid值,标识一个资源是很有必要的。
1.执行uuidgen命令,可以生成一个uuid数
2.sudo apt-get install uuid-dev,调用uuid_generate函数
来自:http://blog.csdn.net/sruru/article/details/8137871
Linux & Windows上生成UUID/GUID:
http://blog.csdn.net/ghlfllz/article/details/17128393
1.执行uuidgen命令,可以生成一个uuid数
2.sudo apt-get install uuid-dev,调用uuid_generate函数
来自:http://blog.csdn.net/sruru/article/details/8137871
Linux & Windows上生成UUID/GUID:
http://blog.csdn.net/ghlfllz/article/details/17128393




