“作坊”目录存档

发一个小工具:WYM+

2007年07月7号,星期六

个多月前写的一个小东西,因为笔记本硬盘崩溃打乱了生活节奏,现在才发上来。

WYMeditor 就是传说中的“所见即所想”之HTML编辑器。用来写东西很舒服,不用担心格式的问题,又不像LaTEX那样有上手门槛。俺深受吸引,一时兴起就给它写了一个增强——

WYM+: WYMeditor之PHP驱动兼功能增强“插件”

  • 程序名称:WYM+ (What You Mean Plus)
  • 版权许可:和WYMeditor一样
  • 使用方法:将所有文件拷入WYMeditor 0.2.* 之根目录
  • 功能与属性:
    1. 存储
      • PHP驱动,文本存储
      • 存储无刷新(类AJAX)
      • 支持快捷键CTRL+S
      • 定时自动保存(默认10秒钟)
    2. 增强快捷键(CTRL+)
      • B: 加粗
      • I: 斜体
      • U: 下划线
      • S: 保存
      • 1~6: 一号至六号heading(h1~h6)
    3. 兼容性
      • 可用于 WYMeditor 0.2.* 版本
      • 完美兼容Firefox 2.0.0.3
      • IE 6.0 下不能自动判断内容是否有更改,建议延长定时保存的时间
      • 其它环境尚未测试
  • 程序文件:
    • index.php 主界面
    • liuxun.js 存储驱动及功能增强之Javascript
    • liuxun.txt 存储所用文本文档
    • liuxun_save.php 存储驱动
    • liuxun_readme.txt 说明文档
  • 演示地址:http://liuxun.net/w/
  • WYMeditor下载地址:http://www.wymeditor.org/en/download/

下载:WYM+

发布wordpress插件:Grapheed

2007年05月4号,星期五

我也不知道这算不算严格意义上的“插件”,因为它暂时没有办法用wordpress的“插件管理器”来管理:)

其实是N久以前在校内发过的老东西。现在改成的代码,略做细微修改就可以用于所有blog程序,只要空间支持php,而且有iconv和gd函数库。

Plugin Name: Grapheed
Plugin URI: http://blog.liuxun.net/?p=22
Description: 可以将http://your-blog-url/wp-grapheed.php当作图片引用,在论坛签名档或xiaonei.com涂鸦板上显示自己的最新网志
Version: 1.0
Date: 2007/05/04
Author: 刘寻
Author URI: http://liuxun.net

=== 安装步骤 ===
1.从 http://www.ugia.cn/?p=82 下载点阵字库包(fontfun.rar),将包里的simsun12.fon上传至wordpress根目录(simsun是非自由字体,请自行解决版权问题)
2.将 wp-grapheed.php 上传至wordpress根目录。即可使用。

=== 版权声明 ===
本程序部分代码(详见注释)参考自ugia.cn,版权属于ugia.cn

其余部分,放弃所有版权,可以自由使用

点这里下载

发布wordpress主题:cathayan-style

2007年04月11号,星期三

由来:
一直想找一个看起来最最没有个性,而且干净,而且单屏信息量充足、节约滚屏时间的主题。久觅不得,遂看上了cathayan的blog,起了将其移植到wordpress平台的念头。

下载:
本地下载,或者到Theme viewer下载

安装:

  1. 下载解压到wp-content/themes/ 。
  2. 打开解压后目录里的压缩包 random-quotes-chinese.zip,解压里面的random-quotes-chinese.php到wp-content/plugins/ (然后可以删掉random-quotes-chinese.zip)。
  3. 去wordpress后台启用模板”Cathayan Style”和插件”Random Quotes (Chinese)”。

两个问题:

  • 字体大小:被迫使用px
    本来觉得用像素值(px)设定字体大小,使IE用户没法调整字号,实在不够人性化。但在谷歌N遍,看完N篇文章之后,终于被迫放弃其它所有支持IE调整大小的设定方法,原因如下:

    1. firefox和IE的默认字体大小不一样,然而用相对单位时,字体大小的差距会被放大,没有办法保证界面的大概的一致
    2. 用normal,small,large,x-small…的定义方法,差距同样相当大(参考http://blog.cathayan.org在firefox和IE下的效果)
    3. 在国内,绝大多数网站在IE下是不可调整字体大小的,因此绝大多数人已经事实上地失去了调整字体的习惯;只有对浏览体验比较敏感的人才会注意到字体调整功能;而——
    4. 我相信,这样的朋友一定不会错过极度优秀、开放源码的Firefox浏览器:)。(我一直使用,强烈推荐)

    目前看到唯一不使用绝对字体大小而还过得去的模式是像Web4C一样,直接使用默认大小,在两种浏览器中分别显示为15和16像素–可惜这个大小显然不适合现在的cathayan-style。

  • 用表格实现多行文字在容器里上下居中。本来cathayan 在Email里介绍了个非常牛的div实现方法
    http://realazy.org/lab/div-valign/),可惜我人品有限,调试时冒出了一些短时间内搞不定的诡异问题,只好作罢。

版权:
设计是cathayan的(其授权是“Public domain都行吧”),里面的插件“Random Quotes (Chinese)”是(修改自)xinple同学的(其授权是“没关系,随便发布 :) 加不加链接也无所谓的,能方便其他用户就好。”),呵呵,所以本Theme的版权是——Public Domain(“公共财产”)。

spam留言如火如荼,难道我只有出绝招了?

2006年09月29号,星期五

1355comments,一月断网回来,洋鬼子的机器人已经把我这当乐园了。
现在我连留名框内容框都没有设为必填(我考虑这样的话,不是特别聪明的动物界朋友也许会偶然碰到Enter键,告诉我它们的光临),显然是不可能因此加图片验证或小学算术之类的障碍。这儿能来一两个自然生物,已经很难得了。

现有一绝招,能够在对留言界面和过程99.7%无影响的情况下基本禁绝这些spammer机器。过两天用上。

update9.30 13:32:绝招已启用,需要提醒的是,如果您待人如此地细致,心性如此地舒宁,以至于从您打开blog的单独显示页到提交一条优雅的留言,时针已经两次划过12点的位置,那么在提交之前您最好对页面做一下刷新。(而如果中间太阳已经两次从东方升起,这将意味着如果不刷新页面,留言将肯定不能抵达数据库)

发布RaN - 基于XUL的阅读/书写工具

2006年06月25号,星期天

历经两个多月的碎打零敲,现在终于隆重发布 RaN 0.1beta版。

详细文档在此

演示在此

功能已经完整,可以投入社会主义知识生产、为劳动人民造福了。lx同学2006年度对国际先进技术 XUL(以及JavaScript、XML……Ajax) 的广泛、细致、深入的研究工作就此告于段落。

喜爱阅读的人有福了;喜爱书写的人有福了;感受得到命令行温情的人,如今有福了。

RaN,我的孩子,今天为父就带你上路,把一切故事说与你听。

firefox中,javascript的行为先后问题

2006年04月15号,星期六

在firefox中,Ctrl-S的功能是“网页另存为”。而我一直很想给blog实现这个功能:写日志时按Ctrl+S即可提交表单内容,同时(最关键的是)不弹出网页另存为的对话框。
要阻止“另存为”对话框,自然只能是在javascript中使用return false。而要实现提交表单功能,又必须捕获键盘事件Ctrl-S,使其有所执行。
我第一版的代码是:

<body onkeydown=”submitForm(event);return false;”>结果发现文本框不能输入英文字符。显然的,它把所有的键盘输入都return false了。另据实际经验,return false写在函数判断里面是无用的。我想到在submitform函数里做一个“转发器”,专事将键盘输入的东西还原为字符写入到文本框内。先做测试,有第二版代码:
<body onkeydown=”test(’我发送了表单,还把其它键盘输入转发了,耶。’);return false;”>结果发现,“Ctrl-S调出另存为对话框”这个行为几乎是优先于所有js函数调用和输出的。也就是说,只要return false前面有函数调用和输出,那对话框必然先被调出;而把函数调用和输出写在后面又显然无效。问题相当严重。幸好没有着急写“转发器”。
谷歌”了一下,看到有洋人曰(http://www.codingforums.com/showthread.php?t=69761):

Any key combinations with special meanings to either the operating system or the browser are NOT passed to the web page and therefore cannot be handled using Javascript. To be able to process Ctrl-G in Javascript you would have to disable that option in your browser first. For it to work for your visitors they would have to disable it in their browser.

顿觉心灰意冷。但又确实知道writely已经实现了对Ctrl-S的“劫持”。遂坚定信心,多次尝试,终于得到正解:

<body onkeydown=”if(event.ctrlKey && event.keyCode==83){document.forms['write'].submit();return false;}”>原来唯独表单提交这一动作可以赶在“另存为”框弹出之前完成。至此问题暂时解决。
方法缺陷是——如果把正解中onkeydown的值包装成一个函数调用,则return false无效。因此无法实现代码结构化,难以扩展快捷键操作的功能。

(不知道这篇帖子怎么会招来那么多 online poker 的spam留言,被迫关掉回复: if(!empty($p_logid) && $p_logid!=185){//提交留言})

代码写作随手记

2005年12月9号,星期五

今天想起来用php给自己写一个blog系统。过程中遇到的问题先记录下来。

  1. IE对css注释的问题:
    发现注释的末尾不能为汉字。也就是说如果是中文,要写成
    /*这副模样 */
    即要在末尾加上一个半角字符,才不至于使整个css文件对IE失效。真是奇怪。
  2. firefox中h1和h2会受Arial字体的影响,鼠标经过(hover)时显示出粗的下划线;IE没有这个现象。
  3. 中文变量名:
    看到php手册里这句:$i站点is = ‘mansikka’; // 合法变量名;可以用中文

    于是突然间起了给变量中文命名的热情。我把$myConn说成“$有”,把$strSql说成“$求”,把$result说成“$得”;把数据库里的文本叫做“$记忆”,把要输出的代码叫做“$表述”……
    中文命名没有导致任何运行不稳定或者代码混乱的后果(update:似乎不允许跨文件赋取值)。相反,写出来的代码感觉挺漂亮。

    可惜中英文输入法之间的切换是个麻烦的问题。我不得不以极高的频率按shift切换输入法,稍不注意就要忙中按错……

    思想斗争半天,终于还是推倒重来,全部用回英文名了。

  4. 关于时间:如果写入数据库是用time()函数(返回时间戳)的话,在mysql里定义数据类型为timestamp反而会搞砸。应该用int(10)。

邮箱登陆口

2004年02月1号,星期天

折腾了半天……
实现了下面的东西……

居然终于还是用了iframe……调用这个页面: mail.html (对里面的“@”点右键查属性就可以看出)
实在想不出/实现不了更好的办法。

没地方好放,只好放Login里头…… 拥挤得有点难看,为了方便,也就忍一忍了。

以下为程序代码:

//查看mail.163.com的源代码,里面有个大javascript,有用的一段如下:
window.document.login163.action=http:/
/reg.163.com/in.jsp?url=http:/ /mscan2.163.com/Unicom.jsp?language%3D0%26style%3D1;

/*163.com邮箱的郁闷之处在于,它竟然进行了三次转向!用的是meta标签里的http-equiv=refresh。
这样就有理由怀疑,在系统有点小毛病的、对refresh支持不很好的机器(比如我那台式机)上,
163.com邮箱就根本无法正常登陆;要登陆只有重复数次查源文件,拷贝网址,查,拷贝……

  • 它是这样过来的:*/
  • http:/ /reg.163.com/in.jsp?url=http:/ /mscan2.163.com/Unicom.jsp?language%3D-1%26style%3D-1
    http:/ /mscan2.163.com/Unicom.jsp?language=-1&style=-1&username=yourname
    http:/ /fm163.163.com/cgi/ntesdoor2?&style=-1&language=-1

    //一般的网站在用到refresh时,都会有类似“如果不能正常跳转,请点击这里”这样的补救提示,而网
    //易邮箱简直……

    //经过仔细比较推断以及反复测试,最终确定了现在在mail.html里的写法:

    163.com
    //仅仅是免去了对语言和界面风格的判断。因为三个页面分属三个不同的服务器,所以要解决跳转的问
    //题似乎是很不现实的。。

    //注:由于非注释符号的双斜杠不能正常显示,所以只好如上在中间加个空格。。