月度归档:2008年01月

开源免费的代码编辑器notepad++

一直以来都习惯用EditPlus写代码,后来由于BOM事件的折磨,开始改用功能强大的UltraEdit,但UltraEdit过于庞大,启动较慢,而且需要购买,后来偶然在sourceforge发现了开源且免费的代码编辑器notepad++,试用之后,果然不错。

Notepad++ 是一个免费 开源 小巧的代码编辑器。这个在GPL许可证下的自由软件采用 win32 api 和 STL 以 C++ 语言撰写成,并且选用功能强大的编辑模组 Scintilla。可完美地取代微软视窗的记事本。

下载地址:
可执行代码
源代码
中文语言包

语言包说明:
把下载的中文语言包chineseSimplified.xml重命名为nativeLang.xml放到软件根目录

Notepad++ 的主要功能:

  1. 语法高亮度显示及语法摺叠功能
  2. 支援的程式语言:
    C C++ Java C# XML HTML
    PHP CSS makefile ASCII art (.nfo) doxygen ini file
    batch file Javascript ASP VB/VBS SQL Objective-C
    RC resource file Pascal Perl Python Lua TeX
    TCL Assembler Ruby Lisp Scheme Properties
    Diff Smalltalk Postscript VHDL Ada Caml
    AutoIt KiXtart Matlab Verilog Haskell InnoSetup
    CMake

  3. 列印所见即所得(WYSIWYG)
  4. 如果你有彩色印表机,你可以把你的原始码以多种顏色列印出来。

  5. 用户自定程式语言
  6. 用户可自定程式语言:自定的程式语言不仅有语法高亮度显示功能,而且有语法摺叠功能功能。 註解关键字及运算符号亦可自定。

  7. 字词自动完成功能(Auto-completion)
  8. 用户能做自己的API列表。一旦api档案建立完成且在正确的路径系统,键入Ctrl+Space(你可以修改这个键盘捷径)啟动字词自动完成功能。

  9. 支援同时编辑多重文件
  10. 你可以同时开啟多页面来编辑。

  11. 支援多重视窗同步编辑
  12. 用户可同时有两个视窗对比排列。你不但能开啟两个不同文件在分别两个不同的视窗内 (画面), 并且能开啟一个单独文件在两个不同的视窗内(clone mode)进行同步编辑。同步编辑的成果将在两个的视窗内同时更新。

  13. 支援Regular Expression搜寻及取代
  14. 用户可用Regular Expression来搜寻及取代一个字串。

  15. 完全支援拖曳功能
  16. 你可用拖曳功能来开啟文件。你也可以用拖曳功能来变换开啟文件的位置。 你甚至可拖曳开啟文件从一个视窗到另一个视窗。

  17. 自动侦测开啟档案状态
  18. 如果外部修改(或删除)Notepad++已开啟档案,用户将会被通知更新档案内容(或移除档案)。

  19. 书籤
  20. 用户可用滑鼠点击书籤边行(书籤边行位於列数边行右方)或使用键盘捷径Ctrl+F2来标明或移除书籤。使用键盘捷径F2到下一个书籤或Shift+F2到上一个书籤。如欲清除所有书籤,使用选单 寻找->清除所有书籤。

  21. 高亮度括号及缩排辅助
  22. 当插字游标(caret)移至下列字元{ } [ ] ( )旁侧时, 此字元与远方相对应的字元以及缩排辅助(如果存在的话)将会以高亮度来显示。

  23. 巨集
  24. 内部视窗位置可任意移动
  25. 放大与缩小功能
  26. 支援多国语言

更多详情看这里:
http://notepad-plus.sourceforge.net/tw/download.php

Blog重构完成

第一次用重构这个词是在04年,当时受阿捷的影响,
把一个HTML4.0的站重构成了XHTML1.0,
造成的直接后果就是习惯了手写页面,
以至于拿到最新版的Dreamweaver,已经不知如何使用了……

现在的这次重构,也许称之为开发更为确切,
不同的是,重构这个词让我有一种惬意的感觉,
而开发却总能使我大脑分泌未知激素,
或者产生儿茶酚胺,以至于晚上睡不着觉。

言规正题,程序依然使用WordPress,
模板是重新开发的,配色仿照的265.com,
而且一不小心通过了校验。
开发模板的过程中顺便修改了大量代码,
以更适用我的习惯和这个比较垃圾的服务器。
号称Code is Poetry的WordPress,
在我这个最美是中文的家伙看来,
Code更像是Prolixity,
因为代码里存在大量的判断和查询,
增加了兼容性的同时大大降低了效率,
对于访问量较大的站点简直就是噩梦。

不过话说回来,WordPress的Code写得确实很优秀,
能获得最佳开源社会化网络CMS果然不是一般的强,
正在努力学习中……

好一个BOM,折磨了我3天!

至于什么是BOM,请看这篇文章

1月6日
被要求开发UTF-8的PHP站。
上午: 写了几个页面且测试OK。
下午: 出去Happy没动电脑。
晚上: 惊奇的发现DIV在Firefox下不能居中,
于是很郁闷的睡了一觉…… 😦

1月7日
上午: 以为CSS问题,尝试了各种hack,依然没有解决问题。
下午: 满世界求助,依然无解。
晚上: 自以为见了鬼,
于是很痛苦的睡了一觉…… 😥

1月8日
上午: 决定把问题简单化,
删除了多余的CSS、语句、标签,把.php保存为.html,
最后只剩下一个DIV标签和相应的CSS,竟然还不能居中!
又发现把DIV标签另存为另外的HTML文件,竟然可以居中!
此时看到两个内容一样,显示却不一样的html,好像见到了鬼 👿
快疯了……
下午: 冷静思考,排除CSS问题,继续研究HTML。
晚上: 使用杀手锏,满宇宙求助,经小福猪提醒,原来是BOM惹得祸。
彻底疯了……
我怎么就没想到BOM呢,大概最近劳累过度。不过总算解决了问题。
晚上做梦,梦见自己疯过来疯过去的…… 😆

About BOM

吃一堑,长一智。应该对BOM引起重视。

本文探讨的不是BOM本身,而是怎样解决在UTF-8编码下PHP的BOM问题。

这里指的BOM是Byte Order Mark,不是Bill Of Material,也不是Brower Object Model。
那么BOM具体是什么?官方的解释是这样的:
A byte order mark (BOM) consists of the character code U+FEFF at the beginning of a data stream, where it can be used as a signature defining the byte order and encoding form, primarily of unmarked plaintext files. Under some higher level protocols, use of a BOM may be mandatory (or prohibited) in the Unicode data stream defined in that protocol.

另外,fmdd也给出了解释:
在UCS编码中有一个叫做”ZERO WIDTH NO-BREAK SPACE”的字符,它的编码是FEFF。而FFFE在UCS中是不存在的字符,所以不应该出现在实际传输中。UCS规范建议我们在传输字节流前,先传输字符”ZERO WIDTH NO-BREAK SPACE”。这样如果接收者收到FEFF,就表明这个字节流是Big-Endian的;如果收到FFFE,就表明这个字节流是Little-Endian的。因此字符”ZERO WIDTH NO-BREAK SPACE”又被称作BOM。

简单的说,用Windoes自带的记事本把一个文本文件另存为UTF-8编码,然后用UltraEdit以十六进制打开,就可以看到文件开头的”EF BB BF”,这个就是BOM。程序可以通过BOM来识别文件是否UTF-8编码。对大多数程序来说,这是个很聪明的方法。但遗憾的是,有些程序并不能很好的识别它,例如Win的记事本、Firefox还有PHP。

就UTF-8编码的PHP来说,由于代码必须在<?php code ?>这样的PHP标签中才会执行,而BOM总是在文件头的3个字符中,所以这3个字符会直接输出,在浏览器看到的是乱码或者空行。更严重的是”受COOKIE送出机制的限制,在这些文件开头已经有BOM的文件中,COOKIE无法送出,因为在COOKIE送出前PHP已经送出了文件头。”至于解决方法,很简单,如果只包含英文字符,可以把文件转成ASCII编码,如果包含中文字符,则需要转成没有BOM的UTF-8编码。以UltraEdit_v13为例,打开文件,点击菜单”File”,然后是”Save as”或者直接按快捷键F12,在弹出的对话框中选择”UTF-8-无BOM”即可。不过,您不必那么麻烦,我找到了一款开源免费的轻量级代码编辑器notepad++(点击打开)

写给猫

写给群的第一任管理员——漫画家的猫

1.
31日,青岛,风大,微冷。
我在网络漫无目的的荡。
QQ群里总有些无聊人士发无聊AD。
与往常不同的是,
今天ADer的寿命比较长。
打开群看了下,
原来群里的头号打手管理员消失了!
于是留言、询问,
回复很简单,
几个字,
却让我找不出任何挽留的语言。

窗外的风依然很大,像沈阳的雪,因为有风,雪花才可以在天地间划出至美的曲线。

2.
记得群刚成立之初,
是做为落伍者青岛站长聚会推广的。
几乎每天都有大量加入请求,
群内也充斥着大量AD,
严重影响他人。
而我因为要参加一个保密网络测试,
无暇管理群内秩序。
于是猫成为第一任管理员,
而且把群管理的很有成效。
粗略的计算了一下,
如果按照平均每天3人的加入申请,
3年共审核2300多个加入请求。
在群人数上线不变的情况下,
3年共拒绝请求+踢人2300之多。
汗……
此功绩可谓前无古人,后也恐怕无来者了。
可是现在,猫退出了……

纵使再美再好的雪花,洒落到地上,依然要融化,只是小草还没有发芽。

3.
窗外的风悄悄的小了,
机箱内风扇的噪音却显得更大。
我推开门走出去,
吸气,然后呼出……
风轻柔的吹着,
暖暖的阳光洒落到身上,
让一切都融化,
剩下的,
只有祝福。

文章写完了,您看懂了吗?
那么您想加入本群吗?
^_^
青岛站长联盟 官方QQ群:3747900