作者归档:cqqh

树莓派raspbian系统下USB无线网配置

最近准备用树莓派做个 wifi小车,为了驱动问题 专门还买了 tp-link的usb无线网卡,没想到买回来就是驱动不了。。。废话就不说了直接上解决办法了

没想到买的是TP-LINK WN725N V2无线网卡,网上查找了一下Raspberry Pi(树莓派)是支持这个网卡v1版本的,没想到他v2版本芯片升级了。

最开始网上搜,需要自己编译,结果慢慢发现直接下载一个 .ko的文件就直接可以用。但这个 8188eu.ko还要分系统的版本。我是装的目前为止最新的 raspbian系统,用的就是 8188eu.ko & firmware (Compiled in 2014-01) 继续阅读

MySQL数据库里面InnoDB与Myisam的对比区别

最近一段时间有点小忙,做了关于支付的东西。
因为支付方面的业务很严谨,所以看到代码里面用了 MYSQL的事务功能,抽空自己也弄了一下,才发现MyISAM根本就不支持 事务,InnoDB支持事务。
然后百度了一下 MyISAM和InnoDB 区别。找到以下表格,贴出来以免忘了 继续阅读

用CORS(跨域源资源共享)解决跨域问题

前几天比较厉害的一位前端的同事说了一下跨域的问题,提供了一些比较好的解决办法。最后推荐的方法就是CORS(跨来源资源共享)。不过这方法好像 百度出来的东西挺少的,所以自己测试了一下。还是比较好用,不过这方法有些比较老的浏览器不支持,IE8据说是支持的,不过有点麻烦。具体支持情况可以查看 维基百科 http://zh.wikipedia.org/wiki/CORS

主要是在服务器端申明一下支持 CORS就行了。。。
header(“Access-Control-Allow-Origin:http://phpquan.com”);
这是比较安全的,意思是只接受 phpquan.com 跨域来的请求。这样就可以很简单的使用jQuery里面的ajax方法请求。
百度了很多,一般解决方法是最省事的一句 header(“Access-Control-Allow-Origin:*”); 继续阅读

NetBeans风格化

经常在QQ群看到别人的截图,代码背景是黑色的,有种不明觉厉的感觉。问了一下是用的什么IDE,回答用的是 VI。
这几天发现NetBeans也可以风格化,做成像VI的样子。可能很多人都早就知道这东西了,不过我的确这几天才发现,虽然可能晚了点但还是分享一下,如图:
Uploaded-Monokai

继续阅读

MySQL的保留关键字,使用时尽量避免

mysql保留字

今天用phpmyadmin时,注意到一个提示:
列名 ‘update’ 是一个MySQL 保留关键字。

突然意识到还是应该尽量避免这些保留关键字,也百度了一下。找到了这些关键字,列出来下
使用mysql时一定要注意,不要使用它的保留字作为表名或者列名,否则会出现莫名其妙的错误。

从网上找了一个mysql的保留字列表,仅供参考。
ADD ALL ALTER
ANALYZE AND AS
ASC ASENSITIVE BEFORE
BETWEEN BIGINT BINARY
BLOB BOTH BY
CALL CASCADE CASE
CHANGE CHAR CHARACTER
CHECK COLLATE COLUMN
CONDITION CONNECTION CONSTRAINT
CONTINUE CONVERT CREATE
CROSS CURRENT_DATE CURRENT_TIME
CURRENT_TIMESTAMP CURRENT_USER CURSOR
DATABASE DATABASES DAY_HOUR
DAY_MICROSECOND DAY_MINUTE DAY_SECOND
DEC DECIMAL DECLARE
DEFAULT DELAYED DELETE
DESC DESCRIBE DETERMINISTIC
DISTINCT DISTINCTROW DIV
DOUBLE DROP DUAL
EACH ELSE ELSEIF
ENCLOSED ESCAPED EXISTS
EXIT EXPLAIN FALSE
FETCH FLOAT FLOAT4
FLOAT8 FOR FORCE
FOREIGN FROM FULLTEXT
GOTO GRANT GROUP
HAVING HIGH_PRIORITY HOUR_MICROSECOND
HOUR_MINUTE HOUR_SECOND IF
IGNORE IN INDEX
INFILE INNER INOUT
INSENSITIVE INSERT INT
INT1 INT2 INT3
INT4 INT8 INTEGER
INTERVAL INTO IS
ITERATE JOIN KEY
KEYS KILL LABEL
LEADING LEAVE LEFT
LIKE LIMIT LINEAR
LINES LOAD LOCALTIME
LOCALTIMESTAMP LOCK LONG
LONGBLOB LONGTEXT LOOP
LOW_PRIORITY MATCH MEDIUMBLOB
MEDIUMINT MEDIUMTEXT MIDDLEINT
MINUTE_MICROSECOND MINUTE_SECOND MOD
MODIFIES NATURAL NOT
NO_WRITE_TO_BINLOG NULL NUMERIC
ON OPTIMIZE OPTION
OPTIONALLY OR ORDER
OUT OUTER OUTFILE
PRECISION PRIMARY PROCEDURE
PURGE RAID0 RANGE
READ READS REAL
REFERENCES REGEXP RELEASE
RENAME REPEAT REPLACE
REQUIRE RESTRICT RETURN
REVOKE RIGHT RLIKE
SCHEMA SCHEMAS SECOND_MICROSECOND
SELECT SENSITIVE SEPARATOR
SET SHOW SMALLINT
SPATIAL SPECIFIC SQL
SQLEXCEPTION SQLSTATE SQLWARNING
SQL_BIG_RESULT SQL_CALC_FOUND_ROWS SQL_SMALL_RESULT
SSL STARTING STRAIGHT_JOIN
TABLE TERMINATED THEN
TINYBLOB TINYINT TINYTEXT
TO TRAILING TRIGGER
TRUE UNDO UNION
UNIQUE UNLOCK UNSIGNED
UPDATE USAGE USE
USING UTC_DATE UTC_TIME
UTC_TIMESTAMP VALUES VARBINARY
VARCHAR VARCHARACTER VARYING
WHEN WHERE WHILE
WITH WRITE X509
XOR YEAR_MONTH ZEROFILL

注:MySQL允许部分关键字用做未引起来的识别符,因为许多人以前曾使用过它们。如:ACTION、BIT、DATE、ENUM、NO、TEXT、TIME、TIMESTAMP

利用jquery-qrcode在线生成二维码

现在二维码越来越流行,很多网页都会有个二维码,扫描后可通过手机浏览。
以前做类似的项目一般是在网页上生成图片,然后把图片插入到网页。
这样做 不能每个页面都生成二维码

现在发现有javascript直接二维码的 jquery扩展jquery-qrcode jquery-qrcode,这个开源的三方库(可以从https://github.com/jeromeetienne/jquery-qrcode 获取)

qrcode.js 是实现二维码数据计算的核心类,
jquery.qrcode.js 是把它用jquery方式封装起来的,用它来实现图形渲染,其实就是画图(支持canvas和table两种方式)

text : “https://github.com/jeromeetienne/jquery-qrcode” //设置二维码内容
render : “canvas”,//设置渲染方式
width : 256, //设置宽度
height : 256, //设置高度
typeNumber : -1, //计算模式
correctLevel : QRErrorCorrectLevel.H,//纠错等级
background : “#ffffff”,//背景颜色
foreground : “#000000” //前景颜色

jQuery(‘#output’).qrcode({width:200,height:200,correctLevel:0,text:content});

其实上面的js有一个小小的缺点,就是默认不支持中文。

这跟js的机制有关系,jquery-qrcode这个库是采用 charCodeAt() 这个方式进行编码转换的,

而这个方法默认会获取它的 Unicode 编码,一般的解码器都是采用UTF-8, ISO-8859-1等方式,

英文是没有问题,如果是中文,一般情况下Unicode是UTF-16实现,长度2位,而UTF-8编码是3位,这样二维码的编解码就不匹配了。

解决方式当然是,在二维码编码前把字符串转换成UTF-8,具体代码如下:

function utf16to8(str) {
    var out, i, len, c;
    out = "";
    len = str.length;
    for(i = 0; i < len; i++) { 	c = str.charCodeAt(i); 	if ((c >= 0x0001) && (c <= 0x007F)) { 	    out += str.charAt(i); 	} else if (c > 0x07FF) {
	    out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F));
	    out += String.fromCharCode(0x80 | ((c >>  6) & 0x3F));
	    out += String.fromCharCode(0x80 | ((c >>  0) & 0x3F));
	} else {
	    out += String.fromCharCode(0xC0 | ((c >>  6) & 0x1F));
	    out += String.fromCharCode(0x80 | ((c >>  0) & 0x3F));
	}
    }
    return out;
}

Linux下进程前后台的切换(fg、bg、jobs)

假设你发现前台运行的一个程序需要很长的时间,但是需要干其他的事情,你就可以用 Ctrl-Z ,终止这个程序,然后可以看到系统提示:
[1]+ Stopped /root/bin/rsync.sh
如果没有此提示,则用 jobs 命令查看任务:
#jobs
[1]+ suspended /root/bin/rsync.sh &
然后我们可以把程序调度到后台执行:(bg 后面的数字为作业号)
#bg 1
[1]+ /root/bin/rsync.sh &
用 jobs 命令查看正在运行的任务:
#jobs
[1]+ Running /root/bin/rsync.sh &
如果想把它调回到前台运行,可以用
#fg 1
/root/bin/rsync.sh
这样,你在控制台上就只能等待这个任务完成了。 继续阅读

年终总结之这一年做的一些网站

很久没写博客了,又要过年了。还记得开年的时候 有计划要做个 to do list,一拖就拖到尾了。
这次先总结一下这一年做的那些网站,也算是对自己今年工作的总结吧。
总结完了就写to do list

http://www.fm955.com.cn/ 重庆交通广播网
这年大部分时间都在做这个了,这网站也做了差不多一年的时间,现在好像已经换成 ThinkPHP框架了,感觉比以前速度快些了。
网站已经集中全力做活动了,有在重庆准备自驾玩的上这网站还是不错的,技术底子够

http://www.zjcampus.com/ 子衿校园
下半年基本上就做这网站了,做到目前也慢慢有了眉目,估计离盈利不远了 继续阅读

PHP防注入小论,目前觉得htmlspecialchars挺好

好久没写博客了,也证明好久都没写代码了。
最近不忙,写代码时可停下来试试每个函数的不同和特性。 之前写PHP对于防注入一直不太注意,这次专门对 htmlspecialchars 、htmlentities、addslashes 几个函数使用了一下。。。

htmlspecialchars 将特殊字符转成 HTML 格式,具体的说,函数会转化以下字符:
& (和号) 成为 &amp;
” (双引号) 成为 &quot;
‘ (单引号) 成为 &#039;
< (小于) 成为 &lt;
> (大于) 成为 &gt;

对应的反编码函数为 htmlspecialchars_decode

htmlentities,将所有的字元都转成 HTML 字串
对应的反编码函数 html_entity_decode

注意 :htmlspecialchars最多只能处理4个html标记,htmlentities是转化全部字符,包括中文。

addslashes是使用反斜线引用字符串,该函数一般都是数据库查询之前就需要处理的必要步骤,该字符串为了数据库查询语句等的需要在某些字符前加上了反斜线。这些字符是单引号(’)、双引号(”)、反斜线(\)与 NULL(NULL 字符)
对应的反编码函数为stripslashes是还原addslashes引用的字符串。

所以这里一般文本输入输出的话使用 htmlspecialchars和htmlspecialchars_decode,有些文本里面有中文的话,又不支持html的话使用 htmlspecialchars 比较实用。
字段查询可能还是使用 addslashes

ThinkPHP3.1修改X-Powered-By信息

最近发现 ThinkPHP 框架里面把头文件信息里面的 X-Powered-By 改了,这样很明显让人知道是使用的ThinkPHP框架,有个危险的地方就是 万一 ThinkPHP曝出漏洞的话,这是个很明显的目标。所以找了一下修改 X-Powered-By的方法。其实也很简单。。

找到这个文件
ThinkPHP/Lib/Core/View.class.php

里面搜索 ‘header’,能看到有一个是 header(‘X-Powered-By:ThinkPHP’) 只要把这句注释掉,或者修改成其他的就行。