调教wordpress页面模板

今晚将博客的主题风格由arjuna-x更换为blocks,虽然说不上华丽,但果然还是清淡的风格更合余心。更换后全部插件都能正常运行,不需要改动代码,但要改代码的工作还是避免不了。首先是备案号,修改footer.php。接着调整评论表情的布局,修改comments.php。接着为引用块<blockquote></blockquote>添加引号图标,并且调整左页边距,这是修改style.css。但这在arjuna-x主题里都修改过,算不上什么新花样。

于是决定弄好归档(archives)、关于(about)、链接(links)、留言本(gbook)四个页面。以前在网上看到的文章说要自己定义模板文件,一直没时间和机会。发现blocks主题里居然有archives和links的模板,页面内容的产生已经解决,大大减轻调教所耗精力。

阅读全文…

13,565 次浏览 | 1 条评论
2010年4月28日 | 归档于 技术

代码物语(九):IPv4/v6动态域名客户端DDNSpod(2009)

在学校里一直开着ftp,但ip是由DHCP分配,每次开机都不一样,所以老早就开始用动态域名,曾用过meibu、花生壳、3322。印象中很多动态域名客户端都是注册为系统服务,包括DNSpod的官方客户端。但事实上有必要吗?个人很不喜欢这点。3322用了很长一段时间,直到遇上DNSpod。

动态域名不算是DNSpod的主业,但应该是其中比较出色的功能之一。这里不是给DNSpod做广告,但允许用户免费将域名转入做解析非常不错。上面的几个动态域名提供商,都是只允许使用它们的二级域名,用自己的域名是要付费的。加上国外有机构提供免费的二级域名,比如co.cc,还允许将免费域名控制权转出,于是估计现在DNSpod上免费解析的此类域名不少,余也有一个。DNSpod提供的ipv6域名解析是另外一个亮点,因此原有域名提供商不支持ipv6解析的同鞋可以选择转出到DNSpod。不过余怀疑DNSpod并没有ipv6线路上的主机,一台完美的DNS服务器,应当具备v4/v6双栈线路,同样的域名,v4的用户请求返回v4的IP,v6的用户请求返回v6的IP,这才是真正的双栈网络DNS服务器。目前DNSpod上的AAAA记录,是用户通过v4网络去获得的。当然正确的IP拿到手,用户就可以访问站点了,用户才不关心是通过v4还是v6网络拿到解析结果。现在教育网的v6用户都是双栈,这种应用方式没有问题。如果是一个纯v6用户,他拿不到解析结果,同样,他也没法动态更新自己的v6 IP。

回到DDNSpod。余不大满意官方的客户端,于是自己写了这个超轻量级程序,代码量不大,使用了TinyXml解析和保存xml文档。目的非常明确,更新本地v4/v6 IP到DNSpod上对应的A/AAAA记录,能开机自动启动,但不是系统服务,多余的功能不想开发了,虽然写的api类已经将所有功能都封装。增加、删除域名记录,修改域名为非本机IP,这些工作还是web登录完成吧。普通用户谁需要开着个后台每时每刻增删改域名呢?

09年8月开始写代码,直到0.3版才比较完善。目前代码在Google code托管。http://code.google.com/p/ddnspod/

阅读全文…

6,475 次浏览 | 1 条评论
2010年4月25日 | 归档于 程序

[ZT]通过FeedBurner把WordPress日志同步到Twitter

原文地址:http://jandy.me/blog/?p=1707

通过FeedBurner把WordPress日志同步到Twitter
作者:Jandy

用Wordpress Twitter Bot这个插件进行同步时,只是把日志标题输出到Twitter上,连个原文链接都没有。后来还是用FeedBurner同步成功了,还不用装插件。步骤如下:

1、到FeedBurner烧制一个feed。
2、在feed管理页面点击“Publicize”标签。
3、在左边栏点击“Socialize”。
4、点击“Add a Twitter account”按钮添加Twitter帐号(需要翻樯)。其他设置不用动,保持默认设置即可。
5、点“Activate”按钮,再点“Save”按钮。
6、在WordPress博客后台“设置——撰写”里加上一个自动ping FeedBurner的xmlrpc地址http://ping.feedburner.com
(备注:启用远程发布,在更新服务添加FeedBurner的ping地址)

同理,其他提供rss feed的网站也可以使用FeedBurner来发布到Twitter。

——————————
设置完毕,测试之
bot:http://twitter.com/kuyur_bot

4,517 次浏览 | 没有评论
2010年4月24日 | 归档于 技术
标签: ,

办理护照经验囧结

今天下午去办理出国护照,最终跑腿无数遍。欲办理护照,需要户口本原件,欲取户口本,得有学院介绍信,于是余傻乎乎跑去保卫处又只好悻悻的折回学院。在前些天查线路、下申请表时,跟老板聊了下,老板说雍和宫的总中心办理最好,于是坐地铁过去,居然说不受理首次申请,首次申请必须到分中心,啊呜。余出大楼的时候回头望了下那“为人民服务”五个镏金大字,再次体会到它的艺术含量。问门口的大爷,找到最近的东城区分中心的坐车线路。东城区的分中心在六楼,问清楚200块费用是提交申请后就要给,不是网上说的来拿护照才给。钱不够,于是又下到一楼取钱。交30拍照费,拍照后,余傻乎乎的将申请标签贴了上去。先给一位大妈审申请表,大妈说内容不能打印,要手填,杯具啊~打印也是老板推荐的啊。拿了张现场的表,填写后又贴了枚标签,把打印表上的照片揭下贴了上去。提交申请表时,受理的阿姨说你标签怎能自己贴呢,贴的位置也不对,要余去照相处重新拿过新标签,彻底杯具。重回照相处再拍了一次,好在不用再给钱。受理、交钱,完毕。

囧结:
1、北京的总中心不受理首次出国申请
2、户口所在那个区没所谓,18个分中心都能受理
3、拍照需要30块钱,要准备好
4、200块的受理费是现场交,至少东城区分中心是这样
5、拍照后会给三枚标签,千万不能自己贴。这三枚标签一枚用在申请表、一枚用在确认回执(交费后会盖上公章),还有一枚用途不明
6、申请表要手工填写,至少东城区分中心是这样
7、最后一点,不要相信老板的忽悠

网上那些资料净扯蛋,不办理一次压根就不知道真正的注意事项

3,970 次浏览 | 没有评论
2010年4月15日 | 归档于 私语
标签:

代码物语(八):A坛09萌战分组处理(2009)

09年在A坛水区时候发起的萌战,最后沦落为马甲和金钱大战。鸭多(@yaduo)由于强烈的蹭得累属性,被累累晋级,一直杀到决赛。决赛阶段,鸭子企图利用王姨妈(@wym345700960)每蛋疼一次就注册一个马甲积累起来的马甲库将风筝(@yuri_ll)推上萌王宝座,无奈不敌众人+深山(@miyamayukimi)妹兄联盟的金钱攻势,众人一致认为蹭得累的鸭子该骑,以致又引发新一轮的骑动物大赛,最终强弩之末难穿缟素,在用尽姨妈的蛋疼力量后鸭子只好就范,加冕09年度萌王。详情战况可以爬A坛水区。

在对ID进行分组时遇到了点麻烦。最后为了公平性,采取了下面策略:计算ID的哈希值(MD5),对哈希值进行排序,然后按排序结果赋序号,最后对序号模4取余,按余数分成4组。如果手工进行比较累人,而且哈希值的排序不保证不会出错。最终余使用程序进行批处理。还是最熟悉的片刻之内就能写出的asp

代码

<!--#include file="md5code.asp"-->
<%
  'dim Conn
  Const AccessFile="list.mdb"
  set Conn=Server.CreateObject("ADODB.Connection")
  Conn.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(AccessFile)
  On Error Resume Next
  Conn.Open
  If Err Then
     err.Clear
     Set Conn = Nothing
     Response.Write "数据库连接出错,请检查连接字串。"
     Response.End
  End If
  set rs=Server.CreateObject("ADODB.Recordset")
  set rs.ActiveConnection=Conn
  rs.CursorType=3
  rs.open"select * from List order by ID_bbs"

  dim ID_bbs
  dim str_md5
  rs.movefirst
  for i=1 to rs.recordcount
     ID_bbs=rs.fields("ID_bbs").value
     str_md5=md5(ID_bbs)
     conn.execute("update List SET md5='"&str_md5&"' where ID_bbs='"&ID_bbs&"'")
     rs.movenext
  next
  rs.close

  rs.open"select * from List order By md5"
  rs.movefirst
  for i=1 to rs.recordcount
     if (i mod 4)=0 then
         group_char="A"
     elseif (i mod 4) =1 then
         group_char="B"
     elseif (i mod 4) =2 then
         group_char="C"
     elseif (i mod 4) =3 then
         group_char="D"
     End if
     str_md5=rs.fields("md5").value
     conn.execute("update List SET ID_sortbyMD5="&i&",group_byMD5='"&group_char&"' where md5='"&str_md5&"'")
     rs.movenext
  Next
  rs.close
  conn.close
  set rs=nothing
  set conn=nothing
  response.write("done!")
%>

阅读全文…

7,088 次浏览 | 没有评论
2010年4月13日 | 归档于 程序
标签: ,

tinyXml输出utf-8文档

TiXmlDocument虽然能读取utf-8的xml文件,但读入后在内存中是以多字节存储。如果新建一个TiXmlDocument,即使定义头为utf-8编码,直接调用SaveFile方法保存的文档仍然是Ansi(windows在CP936下为GBK)。TiXmlDocument不支持直接输出utf-8文档。

网上搜代码遍寻不着,自己摸索出来一个。
这里的编码转换过程是Ansi->Unicode->UTF-8。
Ansi:TiXmlDocument输出到TiXmlPrinter,调用TiXmlPrinter.CStr(),数据类型是char*
Unicode:数据类型WCHAR或CStringW
UTF-8:注意UTF-8的数据类型是char*,或者CStringA

CFile写入文件的方法Write需要两个参数,待写入数据的在内存的起始地址和要写入的字节数
windows平台utf-8文本的前三个字节是EF BB BF,也即BOM(Byte order mark)标记

代码:

XmlEntityTree=new TiXmlDocument;
TiXmlDeclaration *dec=new TiXmlDeclaration("1.0","utf-8","");
XmlEntityTree->LinkEndChild(dec);
TiXmlElement *pRoot=new TiXmlElement("test");
pRoot->SetAttribute("name","名字");
XmlEntityTree->LinkEndChild(pRoot);
TiXmlPrinter printer;
XmlEntityTree->Accept(&printer);

const CStringW UnicodeStr(printer.CStr());
const CStringA UTF8Str=CW2A(UnicodeStr,CP_UTF8);
char UTF8BOM[3]={'\xEF','\xBB','\xBF'};

CFile theFile;
theFile.Open(_T("test.xml"),CFile::modeCreate|CFile::modeWrite);
theFile.Write(&UTF8BOM,3);
theFile.Write((LPCSTR)UTF8Str,UTF8Str.GetLength());
theFile.Close();
7,621 次浏览 | 没有评论
2010年4月8日 | 归档于 程序

愉悦的小机器人调教经历(六):拷屏

这里介绍的是使用windows上的工具对android进行拷屏,并不是android系统上的软件自拷屏(android上的自拷屏软件ms不是很成熟

首先去官网下载Android SDK,现在是第五版。如果想进行开发,环境配置比较繁琐,但如果我们仅仅使用里面的工具,那就简单多了。只安装jre运行库余不太清楚能不能运行tools,但安装JDK肯定可以。仅需要解压Android SDK压缩包,不需要运行安装程序。

将tattoo连上电脑,选取HTC Sync连接方式,运行tools目录中的ddms.bat。程序启动完毕后,按下Ctrl+s或者点击菜单Device -> Screen capture

拷屏就这么简单。但这工具绝不止截图这点功能,事实上它可以监控android的所有消息,查看cpu负载、内存使用、查看进程、查看文件系统和进行一系列调试监视工作。以后在小机器人上搞开发可能要严重依赖这工具

6,161 次浏览 | 没有评论
2010年4月7日 | 归档于 android
标签: , , , ,

燕郊新城游记(伪)

前天去了同学家玩,他应该是余本科同学中第一个买房的。帝都的房价已经炒上了天,五道口一个150平的二手房都卖出了500W。

同学的房子已经在河北三河,沿着京哈高速过潮白河出了北京界就是。这片住宅区离三河市区远着,紧挨着北京于是号称燕郊新城,应该是三河市也想来分一杯羹专门开发。交通其实不是很方便,如果在北京北部如上地上班,要花两个小时,如果在朝阳区还好。因此余同学在霍营还合租一套房子(有钱银呐)

房子应该是09年早些时候买下来的,10W首付,月供两千,供三十年,最近才装修好。

还缺一台电视机嗯

整个燕郊新城有几个大型楼盘,不过入住率还非常低,还有一个别墅区,貌似烂尾中。附近基本没什么大型菜市场,我们跑去一个小市场,菜贼贵

中午饭吃到了三点多。之后下楼在潮白河的河床上逛了圈。潮白河断流状态,只有几处水坑。

从潮白河上遥拍同学家,余都不知在哪一栋

逛完潮白河我们就滚回去了。路上看到很多很雷的广告标语

买一铺富三代

即买即盈利

最搞笑的是另外的一个楼盘,叫东方夏威夷,同学说是因为里面有个大池塘

(伪)游记完了

楼下的不知什么花也终于要开了,经过漫长的冬季,春天终于来了

G4的成像太不行,也是遗憾点之一,等有米还得换掉

4,020 次浏览 | 没有评论
2010年4月5日 | 归档于 私语
标签:

代码物语(七):船舶工程英汉汉英词汇检索(2008)

这是一个很有趣的小应用,核心的代码不过70行。

烟酒僧时的课题差点就和船舶打交道了,在最后关头转向另外一个领域。在查阅一些船舶资料时,深深被那些专业词汇所困扰。后来在网上找到一个Excel文件,也就是下面提供的代码包里的“船舶工程英汉词典.xls”,打开后立即感到可以做成一个web检索版。

使用最熟悉的asp,不过两个文件即实现。其中find.asp是检索入口,实际上不承担检索任务,只负责将参数传递给查找页面,基本没有动态代码。核心的检索页面返回的结果是xml文本。下面两句代码很重要,它让asp返回一个utf-8编码的xml文本:

Response.ContentType="text/xml"
Response.Charset="utf-8"

英文关键字采用的前缀匹配,MSSQL使用PATINDEX(在Acess中采用InStr来代替)返回的位置值来判断

rs.open("select id,EN,CH from Dict where PATINDEX('%"&queryword&"%',EN)=1")  '前缀匹配,MSSQL
rs.open("select id,EN,CH from Dict where InStr(EN,'"&queryword&"')=1")  '前缀匹配,Access

中文采用关键字匹配。啥都没输入点击查询可以查到全部词条

阅读全文…

4,921 次浏览 | 1 条评论
2010年4月2日 | 归档于 程序
标签: , ,

2010重回珠海

05年时候离开珠海,之前在珠海学习生活了两年。虽然学校在唐家这边,但由于家教等原因,去市中心也是挺频繁的。很多景点如圆明新园梦幻水城之类余一直很抵触,没觉得有去的必要。余很喜欢爬山,05年在离开之前,抽空去爬了石景山和板樟山。

此次重回珠海,借的是实习的机会。这个实习是学校和珠海方面联系,学生自主报名参加。以前听说去西安的实习简直就是旅行团,不过我们好歹还真实一点。余报的是金山公司的游戏开发部门即西山居,星期一到五都要按公司的时间上班,周六日还要接受集体安排,最后发现自己想随心所欲去玩的时间实在不多。

余比同学晚了两天出发,1月29日早上到达广州,立刻乘坐大巴下珠海。路上下起小雨,好在到达香洲车站时停止了,否则拖着个大箱子又没有雨伞可非常糟糕。到达金山公司将近11点,西山居苗MM接待了余。中午就在公司食堂用餐,傍晚将箱子拖回附近的如家,晚上参加了西山居的年饭。

金山公司

阅读全文…

7,117 次浏览 | 1 条评论
2010年3月27日 | 归档于 私语
标签: