Archive for December, 2008

macbook pro 暴力退光盘的方法

macbook pro 如果出现光盘退不出来的时,若网上介绍的哪些方法不生效时完全可以暴力把光盘弄出来。如果拿去apple store, 2天时间就苹果公司服务人员浪费了。不如先自己捅,捅坏了去apple store换新的。
以下是我使用的工具:

使用方法,在光盘高速旋转时,用工具卡住光盘底部,向上一抬,光盘就能自动弹出。
用另外一个光盘捅的方法,好像并不能把光盘弄出来。不知道写那篇文章的人自己有没有试验过。第二张光盘只能从第一张光盘上面插进入,这样并不能把一张光盘顶出来,最多把第一张光盘卡停了。而将把笔记本竖的方式也不行。只有将第一盘向上抬时,光盘就能自动弹出,并不需要往外

php 5 与 mysql 5 学习笔记

该书封面

SPL(Standard PHP Library)
使用
print_r(spl_classes());
函数可查看当前可用得spl类

php 的魔法常量
__LINE__
__FILE__
__FUNCTION__
__CLASS__
__METHOD__

字串解析函数strok()
ex.
<?php
$info="wjzhang:test@zhangwenjin.com|1434215";
$tokens = ‘:|@’;
$tokenized = strtok($info, $tokens);
while($tokenized)
{
echo $tokenized, ‘<br />’;
$tokenized = strtok($tokens);
}
?>

strspn() 与strcspn() 查找第一字串中包含了多少第二字串的元素, 一定情况下可替代正则使用
ex.
echo strspn(‘hello’,’oleh’) == 5

checkdate(int month, int day, int year)检查某一天是否存在。

strtotime($str) 可用的参数
now , today, tomoorow, yesterday, Thursday, this Thursday, last Thursday, +2 hours, -1 month, +10minutes, 30 seconds, +2 year – 1 month, [...]

为MAMP安装ImageMagick

总计耗费4个小时的安装流程。
1. 下载imagemagick
wget ftp://ftp.imagemagick.org/pub/ImageMagick/ImageMagick-6.4.6-9.tar.gz
2. 编译安装imagemagick
./configure –prefix=/opt/local/tmp/ImageMagickSo –enable-shared –enable-lzw –with-imagick=/opt/local/tmp/ImageMagick
make && make install
3. 下载MAMP 相同版本的php
wget http://cn2.php.net/get/php-5.2.5.tar.gz/from/cn.php.net/mirro
4. 编译php
./configure –prefix=/opt/local/tmp/php –with-mysql=/Applications/MAMP/Library –with-apxs2=/Applications/MAMP/Library/bin/apxs –with-gd –with-jpeg-dir=/Applications/MAMP/Library –with-png-dir=/Applications/MAMP/Library –with-zlib –with-freetype-dir=/Applications/MAMP/Library –prefix=/Applications/MAMP/bin/php5 –exec-prefix=/Applications/MAMP/bin/php5 –sysconfdir=/Applications/MAMP/conf/php5 –with-soap –with-config-file-path=/Applications/MAMP/conf/php5 –enable-track-vars –enable-bcmath –enable-ftp –enable-gd-native-ttf –with-bz2=/usr –with-ldap –with-mysqli=/Applications/MAMP/Library/bin/mysql_config –with-sqlite –with-ttf –with-t1lib=/Applications/MAMP/Library –enable-mbstring=all –with-curl=/Applications/MAMP/Library –enable-dbx –enable-sockets –enable-bcmath –with-imap=shared,/Applications/MAMP/Library/lib/imap-2006i –enable-soap –with-kerberos –enable-calendar –with-pgsql=shared,/Applications/MAMP/Library/pg –enable-dbase –enable-exif –with-libxml-dir=/Applications/MAMP/Library –with-gettext=shared,/Applications/MAMP/Library –with-xsl=/Applications/MAMP/Library –with-pdo-mysql=shared,/Applications/MAMP/Library –with-pdo-pgsql=shared,/Applications/MAMP/Library/pg [...]

jquery 学习笔记

推荐书籍 
Learning jQuery Better Interaction Design and Web Development with Simple Javascript Technigues
author Jonathan chaffer & Karl Swedberg
 
 
选择语法
$(‘#goods_category dd’) or $(‘#goods_category dd:not(.red)’)
$(‘a:odd’).addClass(‘red’) or $(‘a:even’).addClass(‘green’)
$(‘a’).filter(‘:odd’).addClass(‘red’);
 
获取某个dom元素 
alert($(‘#goods_category dd:not(.red)’).get(0).tagName) or alert($(‘#goods_category dd:not(.red)’)[0].tagName);
 
事件绑定
.bind() and unbind()
.bind(‘click’ function(event){}) = .click(function(event){})
.toggle()   .toggleClass() 切换
 
事件传播与默认操作
.StopPropagation()
.preventDefault()
如果处理事件函数返回 false 将同时执行两着
 
事件只绑定后只使用一次使用
.one()
 
模仿用户行为
.trigger(‘click’) = .click()
 
数据的批量提交
.find(‘input’).serialize() 需要hack一下,当多选项时有问题,可以自己修正一下
 
jquery 1.4版本以后增加
.slice()
你可能在javascript数组里见过这个方法–这对你来说太幸运了,因为他们的所产生的行为是一样的。这个方法用来从匹配的jQuery对象中分离出一部分jQuery对象的再好不过了。下面是调用slice()方法的一些正确方式:
 
JavaScript代码
$(“div”).slice(0,1); // 第一个 div   
$(“div”).slice(-1); // 最后一个 div   
$(“div”).slice(1,-1); // 除第一个最后一个的所有 div
$(“div”).slice(1,3); // 第二个和第三个 div
$(“div”).slice(7,8); [...]

php5 的魔法方法

__construct()初始化函数
__destruct()析构函数
__set() 当设置一个不存在的变量时调用
__get() 当获取一个不存在的变量时调用
__call() 当调用一个不存在的方法时调用
__sleep()
__wakeup()
__autoload() 当使用的类不存在时自动调用
__toString() 当echo对象时调用

php正则表达式整理

POSIX风格的正则表达式的字符类有:
[[:alnum:]],文字数字字符;= [a-zA-Z0-9]
[[:alpha:]],字母字符;= [a-zA-Z]
[[:lower:]],小写字母;= [a-z]
[[:upper:]],大写字母;= [A-Z]
[[:digit:]],小数;= [0-9]
[[:xdigit:]],十六进制数字;
[[:punct:]],标点符号;
[[:blank:]],制表符和空格;
[[:space:]],空白字符;
[[:cntrl:]],控制符;
[[:print:]],所有可打印的字符;
[[:graph:]],除空格外所有可打印的字符。
反斜杠指定的预定义字符集
\d [0-9]
\D [^0-9]
\s 任意一个空白字符(空格、换行、换页、回车、水平制表符等)
\S 任意一个非空字符
\w [a-zA-Z0-9]
\W 任意一个非单词字符
反斜杠指定的断言预定义字符集
\b 单词分界符号
\B 非单词分界序列
还有\A \G \z \Z 我一直没搞懂什么意思。
反向引用
以下两个例子只能匹配span里的内容
$str = "<span>kkk</span><st>uu</kt>";
preg_match_all("/<(\w+)>\w+<\/\\1>/", $str, $match);
preg_match_all("/<(?P<name>\w+)>\w+<\/(?P=name)>/", $str, $match);
正则表达式中的环视(预查)
(?=) (?!)不占位置
$str = "windows2000";
preg_match_all("/windows(?=2000)/", $str, $match);
$str = "windows3000";
preg_match_all("/windows(?!2000)/", $str, $match);
模式修饰符号
/kkk/i 忽略大小写
/kkk/M 多行模式
/kkk/s 单行模式
/kkk/X 忽略空白模式
/kkk/e 可执行模式,在preg_replace时可用。(感谢xuanyan帮助)
正则非贪婪模式 .+?(感谢唐晓良的帮助)
$str = "<b>aaa</b><i>ccc</i>";
preg_match_all("/>.+?</", $str, $match);
使用.+?能匹配到最近的两个>……

不需要密码登录的ssh

该文章是转载文章。原文链接 http://mineral.javaeye.com/blog/134103
感谢邓威同学的帮助。
1.配置openSSH为允许PubkeyAuthentication认证
编辑sshd_config配置文件
#vim /etc/ssh/sshd_config
找到#PubkeyAuthentication yes并把注释去掉
找到#AuthorizedKeysFile ~/.ssh/authorized_keys,去掉注释
#找到useDNS yes
改为useDNS no
不改的话ssh客户端连接的时候会很慢。
这两行的意思是打开Pubkey认证方式,把pubkey放在~/.ssh/authorized_keys ,在我的机器上对应的是/root/.ssh/authorized_keys
2.生成登录用的key,就是登录时用到的公钥和私钥
#ssh-keygen -t dsa
会有提示,直接按回车就行了;
在提示输入passwdphrase的时候,你可以输入一个密码,如果使用空密码也行,直接按回车即可。
这样,会在/root/.ssh/下生成两个文件   id_dsa 和id_dsa.pub   .pub是公钥文件
3.把公钥加入到authorized_keys中,以让服务端认识你的公钥
#cd ~/.ssh
#cat id_dsa.pub >> authorized_keys
4.重启sshd服务
#/etc/init.d/sshd restart
再把id_dsa和id_dsa.pub 通过scp或者其它支持sftp的客户端ssh软件,下载到本地
5.客户端使用测试连接性
以SecureCRT这个ssh的客户端为例,我是Windows XP.
在QuickConnect的连接对话框里,认证方式里勾选 PublicKey,并且往上挪到第一个,在Properties里选择刚才下载到id_dsa私钥文件,然后”OK”,再点”Connect”,是不是登录进去了,很方便吧。再也不用你输密码了。
6.其它选项
为了安全起见,如果你的主机只有你一两个人需要登录主机,可以禁用掉其它的Passord认证方式。方法是:sshd_config配置文件里。
# To disable tunneled clear text passwords, change to no here!
#PasswordAuthentication yes    #======》这里把注释去掉,并改成no
# Change to no to disable s/key passwords
#ChallengeResponseAuthentication yes #========>把注释去掉,并改成no
另外最好把id_dsa和id_dsa.pub备份一下。服务器端生成后就删除掉,以免后患。