Monday, 2. March 2009, 02:02:18
JavaScript
通常情况下,javascript 下批量替换字符串都用正则表达式,如:
sText = sText.replace(/str1/g, 'str2');
或者
sText = sText.replace(new RegExp('str1', 'g'), 'str2');
问题是,如果要替换的字符串是变量,以上方法反倒不好用。
其实,给String增加一个简单的方法即可实现字符串的批量替换:
String.prototype.replaceAll = function(sSearch, sReplace){
return this.split(sSearch).join(sReplace);
};
测试:
alert("s1 and s1".replaceAll('s1', 's2'));
Friday, 27. February 2009, 05:28:46
MySQL
两步走:
CREATE TABLE new_table LIKE original_table;
INSERT INTO new_table SELECT * FROM original_table;
这样做的好处是同时复制表格的主键等。
如果只是复制数据:
CREATE TABLE new_table AS SELECT * FROM original_table;
即可。
Friday, 20. February 2009, 07:00:01
Encode, JavaScript
javascript 的函数
escape(), encodeURI(), encodeURIComponent(),功能都是对 HTML 的一部分字符进行加密。至于哪些字符被加密那些字符不被加密,容易搞混,因此做一个简单的测试和总结。
测试对象范围: %20(半角空格) 〜 %7E (波浪字符~)
元数据 !"#$%&'()*+,-./
0123456789
:;<=>?@
ABCDEFGHIJKLMNOPQRSTUVWXYZ
[\]^_`
abcdefghijklmnopqrstuvwxyz
{|}~
escape() %20%21%22%23%24%25%26%27%28%29*+%2C-./
0123456789
%3A%3B%3C%3D%3E%3F@
ABCDEFGHIJKLMNOPQRSTUVWXYZ
%5B%5C%5D%5E_%60
abcdefghijklmnopqrstuvwxyz
%7B%7C%7D%7E%7F
encodeURI() %20!%22#$%25&'()*+,-./
0123456789
:;%3C=%3E?@
ABCDEFGHIJKLMNOPQRSTUVWXYZ
%5B%5C%5D%5E_%60
abcdefghijklmnopqrstuvwxyz
%7B%7C%7D~%7F
encodeURIComponent() %20!%22%23%24%25%26'()*%2B%2C-.%2F
0123456789
%3A%3B%3C%3D%3E%3F%40
ABCDEFGHIJKLMNOPQRSTUVWXYZ
%5B%5C%5D%5E_%60
abcdefghijklmnopqrstuvwxyz
%7B%7C%7D~%7F
总结
- 以上函数对 [0-9A-Za-z] 都不作变换。
- escape() 不变换的字符是 *+-./@_ 。
- encodeURI() 不变换的字符是 !#$'()*+,-./:;=?@_~ 。
- encodeURIComponent() 不变换的字符只有 !'()*-._~ 。
- 对于多字节代码,比如 UTF-8 编码的「啊」,escape() 变换的结果是 %u554A,encodeURL() 以及 encodeURIComponent() 的变换结果是 %E5%95%8A
以上三个函数的逆变换函数分别是
unescape(), decodeURI(), decodeURIComponent()。
※以上资料翻译整理自
groundwalker.com 。
Thursday, 5. February 2009, 11:31:58
Regex, PHP
这东西太常用,有时候又记不住,每次上Google查询,太费事,所以贴一个在这儿。
.(句点) 匹配所有单个字符
^(脱字符号) 匹配出现在行或字符串开头的空字符串
$(美元符号) 匹配出现在行尾的空字符串
A 匹配大写字母 A
a 匹配小写字母 a
\d 匹配所有一位数字
\D 匹配所有单个非数字字符
\w 匹配所有单个字母或数字字符;同义词是 [:alnum:]
[A-E] 匹配所有大写的 A、B、C、D 或 E
[^A-E] 匹配除大写 A、B、C、D 或 E 之外的任何字符
X? 匹配出现零次或一次的大写字母 X
X* 匹配零个或多个大写字母 X
X+ 匹配一个或多个大写字母 X
X{n} 精确匹配 n 个大写字母 X
X{n,m} 至少匹配 n 个且不多于 m 个大写字母 X;如果忽略 m,则表达式将尝试匹配至少 n 个 X
(abc|def)+ 匹配一连串的(最少一个)abc 和 def;abc 和 def 将匹配
Thursday, 15. January 2009, 06:58:00
jQuery, JavaScript
闲来无事,打开 jQuery 的主页看了一下,发现,下载链接下面的当前版本已经变成 1.3。仔细一看,新版本的 jQuery 已经于 1月 14 日发布。
和前一版本 1.2.6 相比,jQuery 1.3 的主要改进如下:
1. 集成 Sizzle 引擎Sizzle 是一个独立的 CSS 查询引擎,同样出自 jQuery 的作者
John Resig 。
2. 增加 .live() 和 .die() 方法。这两个方法用来实现网页上新追加元素的事件自动绑定和解除。
3. 彻底检修事件处理的代码完全重新布置,简化了事件处理。
4. 重写了动态插入 HTML 的代码比如 append, prepend, before 和 after 等方法,重写之后速度快了很多。
5. 重写了偏移计算的代码元素定位的偏移计算方法超级快速。
6. 不再增加新浏览器的探测增加 jQuery.support 属性,jQuery.browser 保留但不推荐使用。
Tuesday, 13. January 2009, 05:34:47
Framework, 框架, 要点
看了一篇文章《
Key Points for Choosing the Best framework》,说的是选择开发框架的时候应该考虑的要点,尽管这篇文章提到的框架都是 Java 的,然而所列举的几个要点也完全适用于其他的语言,因此具有一定的参考价值。
我把几个要点粗略翻译了一下,刨去了其中提到的几个框架名字。如下:
流行度(Popularity)有助于快速上手。
市场(Market)更容易找到工作。
方便性(Convenience)最好不要有太长的学习曲线。
实现时间(Time to implement )尽量快速完成任务。
适用范围(Scope)最好能与其他框架协同工作。
文档(Documentation)如果没有这东西,你很容易被卡住。
论坛(Forums)社区越大,你的工作越容易完成。
Bug 跟踪(Bug tracking)如果你有意深入,框架需提供问题报告功能。
参考书(Reference Books)在线查询会花费你大量时间,因此书本亦不可缺少。
轻量(Light weight)如果你用到的功能不多,过于复杂的框架反而不好。
健壮(Robust)起码在您想实现的功能当中,不能存在已知的缺陷。
特点(Features)某个强项或许会让你觉得时间过得轻松愉快。
Wednesday, 7. January 2009, 06:16:14
Framework, Yii, PHP
这些天一直在
挖掘轻量级 PHP Framework,找来找去,突然发现一个叫
Yii 的 Framework,这个框架让我眼前一亮。
看了一些介绍,目前我所了解到的信息如下:
1. Yii 的程序是身在美国的中国人写的。(主要开发者叫薛强)
2. Yii 的开发者原先是 Prado 项目的主要成员。
3. Yii 的主要卖点是速度,一个字——快。
4. Yii 刚刚出道,目前版本是 1.0.1, 已经有不少人关注这个框架,包括一些有 CakePHP 或其他框架的开发经验的老手。
5. Yii 很注重 AJAX 的支持,尤其是基于 jQuery 的应用。
Monday, 29. December 2008, 04:21:52
MVC, Framework, PHP
提起 PHP Framework,总是会想到
CakePHP,
Zend Framework,
Symfony,
CodeIgnitor 等大名鼎鼎的框架,这些框架基本都提供一整套的东西,个头也比较大,运行效率不太令人满意,还有就是比较复杂,不容易掌握。
这些天在网上找轻量级的 PHP Framework,只考虑 MVC 模式的框架。 网上公开的 PHP 开发框架多如牛毛,能看入眼的却不多,选几个自己认为不错的如下:
1.
LightVC看了一下代码结构,觉得比较清爽。这个框架把 MVC 中的 M 暂时丢开,用这个框架的人可以自己选择 Model 功能的实现方法。该框架的作者同时还做了一个叫
CoughPHP 的项目,单独实现了 Model 的功能,因此两个合起来使用应该配合很好。当然你也可以使用
Propel 或是
Doctrine 或是
Outlet。
2.
TinyMVC这个框架看起来是 Smarty 的作者写的,基本上只是搭了一个框架,具体的功能看起还得自己添加不少代码,数据库部分的功能用 PDO 来实现(这个选择个人觉得挺不错),奇怪的是,框架的 View 部分默认没有使用 Smarty,要用 Smarty 还得自己改代码去实现。
3.
Adroit其实这是以前就发现的,现在又把它找了出来。看看代码稍微有些杂乱,不是很清爽,操作数据库的代码尤其不让人满意,连最基本的字段值 quote(引号变换) 都没做,作者提供几个生成诸如生成 Controller、Model 的 PHP Script,个人感觉可有可无。
4.
Pluf用 PHP5 来实现 Python 下著名框架
Django 的功能,内容比较齐全,既熟悉Django的人又熟悉PHP的人或许会喜欢它。
5.
Simplemvc一篇介绍怎么用 PHP 写 MVC 框架的文章,我下载了文章后面附加的代码,看了一下觉得还可以,至少不难懂。如果想自己写框架,相信这是个不错的模板。
Wednesday, 24. December 2008, 08:40:22
Subversion, Linux
1. 下载wget
http://subversion.tigris.org/downloads/subversion-1.5.5.tar.bz2wget
http://subversion.tigris.org/downloads/subversion-deps-1.5.5.tar.bz22. 编译安装tar -zxvf subversion-1.5.5.tar.bz2
tar -zxvf subversion-deps-1.5.5.tar.bz2
cd subversion-1.5.5
./configure
make
报警:没有 Berkley DB出错:
/usr/include/openssl/kssl.h:72:18: krb5.h: No such file or directory
... ...3. 安装 OpenSSL 最新版wget
http://www.openssl.org/source/openssl-0.9.8i.tar.gztar -zxvf openssl-0.9.8i.tar.gz
cd openssl-0.9.8i
make
make install
4. 安装 Berkley DB下载 db-4.7.25.tar.gz (不能直接 wget,具体怎么做不再赘述)
tar -zxvf db-4.7.25.tar.gz
cd db-4.7.25
../dist/configure --prefix=/usr/local/berkeley-db --enable-compat185
make
make install
5. 排错经查证,文件 krb5.h 在 /usr/kerberos/include/ 下面,网上有介绍说在 Makefile 里面加上这个路径就可以,于是在 Makefile 中追加:
-I//usr/kerberos/include
再次编译,仍然出错。
最后只有用文件链接的土办法来解决:
ln -s /usr/kerberos/include/krb5.h /usr/include/krb5.h
ln -s /usr/kerberos/include/profile.h /usr/include/profile.h
ln -s /usr/kerberos/include/com_err.h /usr/include/com_err.h
重新配置和编译
./configure --with-ssl --with-berkeley-db=/usr/local/berkeley-db
make
还是出错,说是找不到 libdb-4.1.la 和 libexpat.la。
上网找解决办法,说是加 --disable-shared 即可解决。
6. 再次编译安装cd subversion-1.5.5
./configure --with-ssl --with-berkeley-db=/usr/local/berkeley-db --disable-shared
make
make install
忙活半天,终于装上。
为了给后人省时间,记录一下安装过程。
Monday, 22. December 2008, 10:36:06
Postfix, Linux, Mail
用一个命令组合即可删除 Postfix 邮件队列中的特定邮件。
例:
# mailq | awk '/bad_address@bad_domain/ {print $1}' | tr -d '*' | xargs -n 1 postsuper -d
其中 bad_address@bad_domain 这个字符串根据实际情况修改。
这个命令用到了 awk,tr, xargs 这些命令,很有代表性,因此记录一下。
Showing posts 41 -
50 of 418.