测试Movable Type的预约发布功能
不知道行不行,如果你们可以看到这篇日志那就是可以。
% crontab -e
%
0 */2 * * * cd /path/to/mt/; ./tools/run-periodic-tasks
% chmod 755 /path/to/mt/tools/run-periodic-tasks
也可以用cPanel的时钟守护作业来预约,我是选2小时一次,减少系统开销
注意要将 path/to/mt/tools/下的run-periodic-tasks文件权限改为755。
安装Movable Type 4.25中文化包
下载地址:http://www.thinkjam.org/zoptuno/archives/2009/05/mtos425-zh-package.html
作者:Just 平生一笑
安装很简单,对应覆盖即可。然后登陆后台设置语言即可,管理即是中文的啦。
但是有一个问题就是当前的blog重新发布后仍然是英文的,如果中文化之后新建的blog就没有这个问题。怎么解决呢?
方法是:设计 -> 模板 -> 刷新Blog模板 -> 重置到初始状态 -> 重新发布
注意:如果你有修改模板的要再改一遍,然后再重选风格,再重新发布
感谢Just的翻译,速度很快啊!
IE的innerHTML对pre标签不友好!
IE的pre标签使用innerHTML会使white-space不正常,基本上就是pre标签跟div标签一样了。
要注意!可以用div来模拟pre。
obj.style.backgroundColor为什么取不到值?
obj.style.backgroundColor只能赋值,不能取值,取值要用getComputedStyle或者currentStyle。看下例函数:
function getRealStyle(id, styleName){
var element = document.getElementById(id);
var realStyle = null;
if(element.currentStyle){
realStyle = element.currentStyle[styleName];
}else if(window.getComputedStyle){
realStyle = window.getComputedStyle(element, null)[styleName];
}
return realStyle;
}
用onmousemove做拖拽时要注意iframe。
用onmousemove做拖拽时要注意iframe,在鼠标经过iframe时,鼠标就会失去控制。
解决方法是:写个position:absolute层在onmousedown时遮盖页面,onmouseup时隐藏。还要注意在IE下该层要添加一个透明的背景图片,不然还是遮不住iframe。
拖拽需要三个方法,onmousedown,document.onmousemove,document.onmouseup。
Yahoo的OpenID登陆
前两次写了Windows Live ID当作OpenID使用的方法和Google的OpenID的登陆,这次写Yahoo的OpenID的实现方法。
先说一下Yahoo的OpenID仅有Plaxo等几个网站可以获取用户属性,所以暂时不要考虑这个东西吧。
而且Yahoo还会出现了下面这段警告:
Warning: This website has not confirmed its identity with Yahoo! and might be fraudulent. Do not share any personal information with this website unless you are certain it is legitimate.
你是不是很郁闷呢?其实解决方法很简单,请参考:http://tihualong.javaeye.com/blog/309246
…
因为其他的OpenID提供者同时支持OpenID1.1与OpenID2.0协议,但是Yahoo的程序员像我们一样不喜欢考虑兼容性的问题。只支持OpenID2.0协议标准。
那么OpenID2.0协议标准有什么特殊的地方呢?
OpenID2.0中提出了一个新的东西叫做OpenID Relying Party discovery的,我们的问题就出在这个OpenID Relying Party discovery上。
先解释一下这个OpenID Relying Party discovery是什么东西。
当你重定向到OpenID提供者站点去请求认证的时候,OpenID提供者会使用这个叫做OpenID Relying Party discovery的机制自动验证return_to的URL处于指定的范围内,并且与OP通过realm参数获取到的XRDS文档中获取到的return_to的URL相同。
我是这么理解的:我的Consumer程序告诉了OP我的return_to地址是什么,但是OP不信任我,要通过我的realm参数(注意:这个地方是OP向RP发出的请求,所以要求你realm参数的url必须是外网的ip地址或者能通过外部的DNS查找到的域名)查找一个基于yadis协议的XRDS文档中的return_to地址,两个return_to地址相比较,如果相同,好,我相信你了,放行。(不知道这样理解有没有问题,我觉得应该没问题吧)
好,原理理解了。下面我们要做的就是:
1、 编写一个XRDS文档保存到你的网站上,存放成什么扩展名的没什么关系,但是你要保证Yahoo或者其他OP获取到这个文档的Content-Type是” application/xrds+xml”,不然他们会认为这个文档不是他们要找的文档。
2、 将你第一步编写的XRDS文档的地址公布在你网站的首页,或者你的openid.realm参数指定的页面上(建议)
我们先来编写XRDS文档:(起名xrds.php)
<?php
header(‘Content-type: application/xrds+xml’);
?>
<?xml version=”1.0″ encoding=”UTF-8″?>
<xrds:XRDS
xmlns:xrds=”xri://$xrds”
xmlns:openid=”http://openid.net/xmlns/1.0″
xmlns=”xri://$xrd*($v*2.0)”>
<XRD>
<Service priority=”1″>
<Type>http://specs.openid.net/auth/2.0/return_to</Type>
<URI>改成你的return_url地址</URI>
</Service>
</XRD>
</xrds:XRDS>将你编写的XRDS文档的地址公布在openid.realm指定的页面,建议单独写一个页面维护,然后设置openid.realm参数为你创建的这个页面
<?php
header(‘X-XRDS-Location: 改成你的xrds.php地址’);
?>
<html>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″>
<meta http-equiv=”X-XRDS-Location” content=”改成你的xrds.php地址”/>
</head>
<body>
网页内容
</body>
</html>
if(empty($_REQUEST[‘openid_mode’])){
$openid_server = ‘https://open.login.yahooapis.com/openid/op/auth’;
$data[‘openid.ns’] = ‘http://specs.openid.net/auth/2.0’;
$data[‘openid.mode’] = ‘associate’;
$data[‘openid.assoc_type’] = ‘HMAC-SHA1’;
$data[‘openid.session_type’] = ‘no-encryption’;
$AssocHandle = getAssociationHandle($openid_server.’?’.http_build_query($data));
setcookie(‘cookieAssocHandle’, $AssocHandle);
unset($data);
$data[‘openid.assoc_handle’] = $AssocHandle;
$data[‘openid.ax.mode’] = ‘fetch_request’;
$data[‘openid.ax.required’] = ‘attr1,attr2,attr3,attr4,attr5’;
$data[‘openid.ax.type.attr1’] = ‘http://axschema.org/contact/email’;
$data[‘openid.ax.type.attr2’] = ‘http://axschema.org/namePerson/first’;
$data[‘openid.ax.type.attr3’] = ‘http://axschema.org/namePerson/last’;
$data[‘openid.ax.type.attr4’] = ‘http://axschema.org/contact/country/home’;
$data[‘openid.ax.type.attr5’] = ‘http://axschema.org/pref/language’;
$data[‘openid.claimed_id’] = ‘http://specs.openid.net/auth/2.0/identifier_select’;
$data[‘openid.identity’] = ‘http://specs.openid.net/auth/2.0/identifier_select’;
$data[‘openid.mode’] = ‘checkid_setup’;
$data[‘openid.ns’] = ‘http://specs.openid.net/auth/2.0’;
$data[‘openid.ns.ax’] = ‘http://openid.net/srv/ax/1.0’;
$data[‘openid.ns.sreg’] = ‘http://openid.net/extensions/sreg/1.1’;
$data[‘openid.realm’] = $RealmUrl;
$data[‘openid.return_to’] = $AuthUrl;
$data[‘openid.sreg.optional’] = ‘nickname,email,fullname,dob,gender,postcode,country,language,timezone’;
$data[‘openid.sreg.policy_url’] = $PolicyUrl;
$data[‘openid.sreg.required’] = ’email’;
$data[‘openid.trust_root’] = $RealmUrl;
//$data[‘xopenid_lang_pref’] = ‘tw’;
$LocationUrl = $openid_server.’?’.http_build_query($data);
}else{
if(‘id_res’ == $_REQUEST[‘openid_mode’]
&& $AssocHandle == $_REQUEST[‘openid_assoc_handle’]){
$openid = !empty($_REQUEST[‘openid_identity’]) ? formUrl($_REQUEST[‘openid_identity’]) : formUrl($_REQUEST[‘openid_claimed_id’]);
$email = $_REQUEST[‘openid_sreg_email’];
$fullname = $_REQUEST[‘openid_sreg_fullname’];
$nickname = $_REQUEST[‘openid_sreg_nickname’];
$timezone = $_REQUEST[‘openid_sreg_timezone’];
}
echo(‘<pre>’);
echo(“<a href=$LoginUrl>BACK</a>\n\n”);
print_r($_REQUEST);
echo(‘</pre>’);
}
注意:有部分函数和变量有遗漏,请参考Windows Live ID当作OpenID使用的方法和Google的OpenID的登陆。
操
事实上,陈书伟的公益行动得到了社会和行业主管部门的认可。2006年年末,以陈书伟为首发起的”万人诉讼维权活动”,披露了电信运营商”霸王条款”等侵害消费者权益的问题,得到国务院的高度重视,温家宝总理为此批示”严肃整顿通信市场”,随即国家对通信市场进行全面整顿,为此,”万人诉讼维权活动”被检察日报评为2006年全国十大公益活动之一。
转移域名到name.com【图解】
为什么要转移域名到国外呢?原因很简单,因为电信疯了,终于全部都疯掉了!我不想疯,而且我感觉国内的域名提供商很垃圾,就拿我的域名转出前的提供商厦门百优科技来说吧,修改DNS、修改注册信息居然还要通过客服来操作,太垃圾了吧。
下面就说说如何转移域名到name.com。
第一步:跟域名提供商要转移码和解锁,必须要求解锁,因为那帮人比较猪,必须要提醒它们的每一步操作。
第二步:登录name.com,没有帐号请注册。
第三步:点击下方的Transfer Domain Names。
第四部:提交你的域名和转移码。Domain Name填写域名,注意domain.com就可以了,不要加www等二级域名。Auth Code填写转移码。Submit提交,如果转移码错误会提交失败。
第五步:结帐。提交你的域名和转移码完毕后,点击Checkout结帐。这一步就不图解了,如果账户有钱就从账户扣,不然就用信用卡刷(要支持美元,如果是中行的卡要开通全球漫游,20元每月,也是比较垃圾)。
第六步:点击顶部的Account,然后点击右侧的View Registrar Transfers,进入域名转移管理。
第七步:在域名转移管理列表,绿色的代表转移成功,橙色的代表正在转移中。点击show details可以查看该域名的转移信息。点击display查看详情,点击hidden隐藏详情。几小时后name.com会发送确认转移的邮件给要在注册域名的Email,注意确认。
第八步:大约七天时间转移就会成功,下面各个阶段的Progress(进展)。6/6代表完成,4/6代表就在转移过程中了,4/6的时间比较长。
注意:转移完成后,name.com不会邮件提醒你。如果Progress(进展)一直在3/6,基本上是原域名提供商没有解锁。
FreeBSD 7.2-RELEASE发行了,速度真快!
去年这个时候还是7.0-RELEASE,几年5月2日就7.2-RELEASE,更新速度够可以的。
7.2-RELEASE修正了下列安全公告所指明的问题:
- lukemftpd 中的跨站请求伪造问题。
- OpenSSL 对格式不正确的签名检查存在问题。
- ntpd 密码学签名绕过问题。
- BIND DNSSEC 对格式不对的签名检查存在问题。
- telnetd 任意代码执行问题。
- 本地特权提升问题。
- db 中的信息泄露问题。
- OpenSSL 远程可触发的崩溃问题。
7.2-RELEASE对内核的改动:
- 内核调试器 ddb 新增了 show mount 子命令。
- FreeBSD DTrace 子系统新增了对于进程执行的探测点 (probe) 支持。
- [amd64] FreeBSD 内核虚拟地址空间增加到了 6GB。
- 对 jail(8) 子系统进行了更新。
- kld 支持从内核模块为 FreeBSD 系统调用翻译层安装 32-位 系统调用了。
- ktr 新增了 KTR_CALLOUT class 的 KTR 跟踪点, 用以描述 callout 回调完成执行。
- 用以对已经分配的 System V 共享内存进行记账的变量由 int 改为了 size_t。
- sysctl 叶节点新增了一个表示其为 MPSAFE 的标志。
- FreeBSD 32-位 系统调用翻译层新增了为 VFS_AIO 安装 32-位系统调用的支持。
- [amd64, i386] FreeBSD 虚拟内存子系统新增了针对应用程序的透明 superpages 支持; 应用程序的内存页会根据使用情况动态地升级为 superpage, 或反之降级为普通内存页, 而无须对程序代码进行任何修改。
详见:http://www.freebsd.org/zh_CN/releases/7.2R/relnotes-detailed.html