2009年7月22日 00:41
上次在《Linux下的几个操作中,记录备忘》中,转载了网友的方法,写一个脚本cc.sh来解决iconv不能主动识别现有文件编码的问题。
但每次要用时都把cc.sh代码复制下来,也不方便。
搜索了一下,有个更好的工具叫做enca,可以自己识别源文件的编码,如果编码已经相同了,就不转换,也不会象iconv一样报错。可我试用了一下,有问题,估计作者没在中文下仔细测试,我的GB2312文件中的"不"变成"上","名"变成"吊",添乱啊!作者从2005年1.9发布至今,就不曾更新过。
无奈,自己想办法,双管齐下。enca负责识别文件编码,iconv负责转换,gawk架座桥梁。
当前目录下的php文件,比如a.php是UTF-8编码的,复制一份为a.php.u,其他的编码的文件,则转换编码为UTF-8,另为a.php.u。
现在,如果源文件不需要了,删掉吧,并且把转换好编码的文件去掉最后的.u,就像下面这样做:
enca -i *.php | gawk -F ": " '{print $2~/^UTF-8/ ? "cp "$1" "$1".u" : "iconv -f "$2" -t UTF-8 "$1" > "$1".u"}' | sh
rm *.php
rename .php.u .php *.php
enca总是猜错,还是用Linux系统自带的file --mime-encoding 命令吧
Tags: iconv enca gawk bash
Posted in 未分类 | 0 Comments
2009年7月22日 00:38
这是一个MySQL数据库备份的Bash脚本,就是代替手工输入命令。并不是自动备份,如果你不把它做成定时任务。
#!/bin/bash
DBUSER=root
DBPASS=toor
DBNAME=testdb
DATE=`date %Y%m%d-%H%M`
mysqldump -u $DBUSER -p$DBPASS --default-character-set=utf8 $DBNAME > db.$DBNAME-$DATE.sql
echo 'MySQL backup is finish!'
如果需要压缩备份文件,这是很必要的,备份文件很耗空间。追加以下部分到脚本。
tar cjvf db.$DBNAME-$DATE.tar.bz2 db.$DBNAME-$DATE.sql
rm db.$DBNAME-$DATE.sql
echo 'Tar compress is finish!'
Tags:
Posted in 未分类 | 0 Comments
2009年7月22日 00:38
4月中旬,Google开放注册Google App Engine时,我没有赶上(才10K个名额)。今天看 [url=http://www.williamlong.info/archives/1357.html]月光博客[/url] 说Google把GAE放开了,就赶紧注册了一个,谁叫我对Python这么熟呢![emot]grin[/emot]
注册时得填手机号码接收验证码,我填了一个,发现验证码是腾讯发出的。
手机号码要带国际区号,格式类似下面 86 135********
你的GAE网址是 http://****.appspot.com 不上传程序,什么都不会有,Google也没有提供默认首页
Tags:
Posted in 未分类 | 0 Comments
2009年7月22日 00:38
没有去系统的看Awk的文档,到要用的时候才知道那一点皮毛远远不够,赶紧恶补。
[quote]变量名 含义
ARGC 命令行变元个数
ARGV 命令行变元数组
FILENAME 当前输入文件名
FNR 当前文件中的记录号
FS 输入域分隔符,默认为一个空格
RS 输入记录分隔符
NF 当前记录里域个数
NR 到目前为止记录数
OFS 输出域分隔符
ORS 输出记录分隔符[/quote]
大家到这里看完整的吧 [url=http://www.xiaojb.com/archives/it/awk.shtml]awk用法小结[/url]
更详细的教程 [url=http://unix-cd.com/unixcd12/article_5817.html] Awk 实例(一)[/url]
以后我再贴个自己的例子上来。
Tags:
Posted in 未分类 | 0 Comments
2009年7月22日 00:38
今天看了师兄刀刀的一篇博客 [url=http://www.foolpig.com/2008/05/19/impudicity-thunder/]《无耻的迅雷》[/url]。马上打开自己电脑 C:\Windows\system32\ 目录,果然有cid_store.dat文件。用记事本打开,虽说有一小半是乱码(二进制),但大部分都是字符串,正是我之前用迅雷下载的文件在本机存放的路径。二话不说,先删掉这个文件。
早几年就听说迅雷爱盗链,引起国内软件下载站的极大不满,有的网站就拒绝用户使用迅雷下载。没想到它到处做手脚,连个人电脑也要侵占,你愿意自己的电脑让别人作主吗!
Tags:
Posted in 未分类 | 0 Comments
2009年7月22日 00:38
今天在南山书城发现一本好书《程序设计实践 双语版》,作者是Brian W.Kernighan和Rob Pike,由裘宗燕翻译。
在CSDN上找到这本书,可以在线阅读两个章节,其实全书总共才六章左右。 [url=http://book.csdn.net/bookfiles/549/]在线阅读《程序设计实践 双语版》[/url]
我在书城仔细把3.1、3.2读了一遍,关于马尔可夫链算法的内容。
Tags:
Posted in 未分类 | 0 Comments
2009年7月22日 00:38
今天看一篇英文博客 [url=http://porteightyeight.com/archives/151-9-PHP-Debugging-Techniques-You-Should-Be-Using.html]9 PHP Debugging Techniques You Should Be Using[/url] ——《你应当会用的九种PHP调试技术》。在最后一条,也提到了简单的代码一般更健壮。对于PHP,写简单代码的方法是:
[quote]Keep Things Simple:
1. [b]Keep an eye on functions that are growing[/b]. You may find that you can split the code into several smaller functions.
2. [b]Functions that are only called in one place may be too specific[/b]. You can either bring the ...
Tags:
Posted in 未分类 | 0 Comments
2009年7月22日 00:38
同样的选择加载配置文件的问题,在Python下如何解决?
[quote]假设我们有三台机器:办公用的机器装Windows;局域网的测试机是Linux,机器名local-test;互联网上的服务器也是Linux。对应三个配置文件settings_win.py、settings_test.py、settings_remote.py。[/quote]
使用Python的os.environ。注意Windows下os.environ没有'HOSTNAME'。
import os
if "Windows_NT" == os.environ.get("OS",""):
from settings_win import *
elif "local-test" == os.environ.get("HOSTNAME",""):
from settings_test import *
else:
from settings_remote import *
Tags:
Posted in 未分类 | 0 Comments
2009年7月22日 00:38
这里有关于 [url=http://blog.chinaunix.net/u/21041/showart_338744.html]PHP中$_SERVER的详细用法[/url]
我把它用作由机器名调用相应的配置文件。
假设我们有三台机器:办公用的机器装Windows;局域网的测试机是Linux,机器名local-test;互联网上的服务器也是Linux。对应三个配置文件config.win.php、config.test.php、config.remote.php。
在导入配置文件时,这样写(第一个分支未测试):
if('localhost' == $_SERVER['SERVER_NAME'])
require_once('config.win.php');
else if('local-test' == $_SERVER['SERVER_NAME'])
require_once('config.test.php');
else
require_once('config.remote.php');
全文引用 《PHP中$_SERVER的详细用法》
[quote]$_SERVER['PHP_SELF'] #当前正在执行脚本的文件名,与 document root相关。
$_SERVER['argv'] #传递给该脚本的参数。
$_SERVER['argc'] #包含传递给程序的命令行参数的个数(如果运行在命令行模式)。
$_SERVER['GATEWAY_INTERFACE'] #服务器使用的 CGI 规范的版本。例如,“CGI/1.1”。
$_SERVER['SERVER_NAME'] #当前运行脚本所在服务器主机的名称。
$_SERVER['SERVER_SOFTWARE'] #服务器标识的字串,在响应请求时的头部中给出。
$_SERVER['SERVER_PROTOCOL'] #请求页面时通信协议的名称和版本。例如,“HTTP/1.0”。
$_SERVER['REQUEST_METHOD'] #访问页面时的请求方法。例如:“GET”、“HEAD”,“POST”,“PUT”。
$_SERVER['QUERY_STRING'] #查询(query)的字符串。
$_SERVER['DOCUMENT_ROOT'] #当前运行脚本所在的文档根目录。在服务器配置文件中定义。
$_SERVER['HTTP_ACCEPT'] #当前请求的 Accept: 头部的内容。
$_SERVER['HTTP_ACCEPT_CHARSET'] #当前请求的 Accept-Charset: 头部的内容。例如:“iso-8859-1,*,utf-8”。
$_SERVER['HTTP_ACCEPT_ENCODING'] #当前请求的 Accept-Encoding: 头部的内容。例如:“gzip”。
$_SERVER['HTTP_ACCEPT_LANGUAGE']#当前请求的 Accept-Language: 头部的内容。例如:“en”。
$_SERVER['HTTP_CONNECTION'] #当前请求的 Connection: 头部的内容。例如:“Keep-Alive”。
$_SERVER['HTTP_HOST'] #当前请求的 Host: ...
Tags:
Posted in 未分类 | 0 Comments
2009年7月22日 00:38
看到一篇让人很有启发的文章,给个链接 [url=http://www.i170.com/article/21433]代码设计的探索[/url]
我最喜欢里面的这句话 [quote]如果你拥有的唯一工具就是一把锤子,不要把整个世界都当作一个钉子。[/quote]
Tags:
Posted in 未分类 | 0 Comments