作者归档:cqqh

shell中$0,$?,$!,$$,$*,$#等特殊变量说明及用法

闲来无事看了下关于<>,看到书上说shell可以获取程序的返回值,故百度一下(google最近太不稳定了),发现shell里还有很多特殊变量没有记住,还是写篇博客记录下,以后也方便查找

变量说明:

$$
Shell本身的PID(进程ID)
$!
Shell最后运行的后台Process的PID
$?
最后运行的命令的结束代码(返回值),可以得到之前运行程序的返回值,可以判断程序是否运行正确(一般程序运行正确返回0)
$-
使用Set命令设定的Flag一览
$*
所有参数列表。如”$*”用「”」括起来的情况、以”$1 $2 … $n”的形式输出所有参数。
$@
所有参数列表。如”$@”用「”」括起来的情况、以”$1″ “$2” … “$n” 的形式输出所有参数。
$#
添加到Shell的参数个数
$0
Shell本身的文件名
$1~$n
添加到Shell的各参数值。$1是第1参数、$2是第2参数…。

我们先写一个简单的脚本,执行以后再解释各个变量的意义
# touch variable
# vi variable
脚本内容如下:
#!/bin/sh
echo “number:$#”
echo “scname:$0”
echo “first :$1”
echo “second:$2”
echo “argume:$@”
保存退出
赋予脚本执行权限
# chmod +x variable
执行脚本
# ./variable aa bb
number:2
scname:./variable
first: aa
second:bb
argume:aa bb
通过显示结果可以看到:
$# 是传给脚本的参数个数
$0 是脚本本身的名字
$1是传递给该shell脚本的第一个参数
$2是传递给该shell脚本的第二个参数
$@ 是传给脚本的所有参数的列表
$?

树莓派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:https://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/ 子衿校园
下半年基本上就做这网站了,做到目前也慢慢有了眉目,估计离盈利不远了 继续阅读