猪哥 的个人资料猪哥的Blog日志列表留言簿 工具 帮助
2008/1/27

猪哥牌TFTP Server出炉

猪哥的TFTP Server终于处于实用状态了,基本上没啥大问题,放出来下载。

为了避免不明用处的人瞎下载,这里说明一下下载对象:
  1. 知道TFTP Server和FTP Server就像牛和马一样是两码事的,且
  2. 经常需要通过TFTP协议往开发板子上面下装程序的,且
  3. TFTP Server通常仅仅跑在自己的机子上自己用,不会被一堆人共同蹂躏的,且
  4. 很讨厌复杂操作,只想要个点开就能跑的Server程序的,且
  5. 除了要求TFTP Server能提供上传下载以外不希望再有其他什么花哨功能的,且
  6. 经常要在最常用的几个root目录之间切换的,且
  7. 对于自己现用的TFTP Server觉得有点不爽的
如果你满足以上所有条件,那么你就可以下载我的TFTP Server试试看了。我的TFTP Server就是以最简界面,最简功能,最简操作的思想设计的。提供的功能如下:
  • 无需配置即可用,运行后即在69端口侦听,默认根目录为程序运行的目录
  • 多路径保存:最多保存8个常用根目录满足通常调试需要。通过Tab快速切换,右键单击Tab可以重命名
  • 双击地址栏可以在资源管理器内打开Server根目录
  • 带有历史记录的地址栏,支持20个历史地址,历史地址输入时支持自动完成
  • 支持最小化到系统托盘,用气泡提示传输开始和结束
  • 彩色的分色服务器Log显示,凸显失败的传输
  • 实时传输进度显示(已传输字节数和百分比),下载时看起来比较有成就感:)
  • 支持多线程上传和下载,支持RFC 1350、RFC 1782、RFC 1783
Megatops TFTP Server界面截图如下:



此处下载
2008/1/16

Megatops ProCoder编程用等宽字体更新

稍微更新了一下,小修订如下:
  • 增加了Vv和Uu的区分度
  • 6、9、@、?字形细微调整
  • 7×14字号j、&细微调整
  • 8×16字号“J”加衬线,粗体“$”字形细微调整
  • ASCII编码显示下部留白边实现纵向分隔
更新方法:
  • 关闭所有正在使用此字体的编辑器
  • 删除Megatops ProCoder 1.0字体。如果发现删除后硬盘开始不停工作那就稍等一下,等到它停了为止。Windows对Raster字体的处理比较特殊和TTF不同
  • 安装新的字体,OK
补充SourceInsight下面的设置方法(看来这垃圾玩意的用户还是不少~~):
  • Document Options->Screen Fonts:Megatops ProCoder 1.0
  • Preferences->Display->Spacing...->去掉Smaller line heights
此处下载
2008/1/15

好文推荐:Real Programmers Don't Use Pascal

这篇相当著名的文章和我的年龄一样大。现在看看第一代老程序员的生活确实是很有意思。文章所处的技术背景可能对只玩过上层web或者应用程序开发的人来说有些困难。至少推荐给我的一个做J2EE的同学以后得到的回答是看不懂(─.─||)。不过如何你是做嵌入式写驱动和内核的,会和这篇老古董产生一定的共鸣。

文章的地址在:http://www.pbm.com/~lindahl/real.programmers.html。作者的语气讽刺幽默也有些偏激。下面摘录一些觉得十分经典的句子:

语言和技术相关:

“If you can't do it in Fortran, do it in assembly language. If you can't do it in assembly language, it isn't worth doing.”

“God forbid-- CP/M, after all, is basically a toy operating system. Even little old ladies and grade school students can understand and use CP/M.”
DOS基本抄袭CP/M,如果哪位还不会用DOS~~那就还不如little old ladies啦哈哈

“People don't do Serious Work on Unix systems: they send jokes around the world on UUCP-net and write Adventure games and research papers.”

“A truly outstanding programmer can find bugs buried in a 6 megabyte core dump without using a hex calculator. (I have actually seen this done.)”
( ̄口 ̄)!! 果然神人

“……EMACS and VI being two. The problem with these editors is that Real Programmers consider "what you see is what you get" to be just as bad a concept in Text Editors as it is in Women. No, the Real Programmer wants a "you asked for it, you got it" text editor-- complicated, cryptic, powerful, unforgiving, dangerous.”

“There are several Real Programmers building video games at Atari, for example. (But not playing them-- a Real Programmer knows how to beat the machine every time: no challenge in that.)”
呃,打游戏我基本靠秘笈 (╯﹏╰)

“College graduates these days are soft-- protected from the realities of programming by source level debuggers, text editors that count parentheses, and "user friendly" operating systems. Worst of all, some of these alleged "computer scientists" manage to get degrees without ever learning Fortran!”
其实我在学校见过用记事本写Java的人……

“If you ignore the fact that it's "structured", even 'C' programming can be appreciated by the Real Programmer: after all, there's no type checking, variable names are seven (ten? eight?) characters long, and the added bonus of the Pointer data type is thrown in-- like having the best parts of Fortran and assembly language in one place. (Not to mention some of the more creative uses for #define.)”
喔耶~~幸好我最终用的是C (# ̄▽ ̄#)。可惜初一的时候学的第一门语言还是Pascal,属于“Quiche Eaters”出身 (╥﹏╥)

性格和生活相关:

“At a party, the Real Programmers are the ones in the corner talking about operating system security and how to get around it.”

“At the beach, the Real Programmer is the one drawing flowcharts in the sand.”

“The Real Programmer is capable of working 30, 40, even 50 hours at a stretch, under intense pressure. In fact, he prefers it that way. Bad response time doesn't bother the Real Programmer-- it gives him a chance to catch a little sleep between compiles.”

“No Real Programmer works 9 to 5. (Unless it's the ones at night.)”
这个……会被老板fire的 (⊙﹏⊙)

“Real Programmers don't wear neckties.”
Yahh~~长这么大还真是没有戴过~~

“Real Programmers arrive at work in time for lunch.”
鬼佬是几点吃午饭来着的?怎么和前面的时间对不上?

“A Real Programmer might or might not know his wife's name. He does, however, know the entire ASCII (or EBCDIC) code table.”

“Real Programmers don't know how to cook. Grocery stores aren't open at three in the morning. Real Programmers survive on Twinkies and coffee.”
关于这个传说中的Twinkies,大家可以去Answers.com查查~~看起来不怎么好吃的样子(─.─||)
2008/1/12

史上最无聊的Slickedit宏:What I'm Coding……

一个编辑器的扩展宏能无聊到什么程度?为了冲刺无聊的极限,我花了半个晚上做了个应该是可以提名为史上最无聊SE扩展的“What I'm Coding”功能。

这个功能很简单:和现在各种音乐播放器一样,能够让前无古人后无来者史上最强之代码编辑器Slickedit自动在MSN Messenger的What I'm listening to区域内显示当前你正在编辑的文件名。无聊,BT,有个性!



功能扩展由两部分组成。一个是Slick-C编写的宏,利用Slickedit强大的回调接口监视文件buffer的切换情况,实时更新文件信息。SE的这些callback真是很无敌,只要你够BT,够无聊,总能利用它开发点什么另类功能来。另一部分是一个控制台小程序,唯一的作用就是通过Win API来设置MSN Messenger的当前播放信息。因为Slick-C好像没有办法直接调用Win API。

使用的时候,要先把“SetMyListeningLite.exe”程序拷贝到你SE的配置目录内(通常是$My Documents$\My SlickEdit Config\12.0.3),然后加载“what_i_am_coding.e”宏即可。

加载后此功能默认是关闭的,通过“what-i-am-coding”命令进行开关;此处下载
2008/1/7

无耻的SourceInsight中文网站

今天朋友提到说在SourceInsight网站看到上面挂了个中文处理的宏很像我以前写的那个SuperBackspace。遂好奇上去看了看。结果发现还真是,唯一不同的是把我原来放在注释内的作者信息给删除了。其余部分一点不落全贴在上面,我在代码中的两句骂SourceInsight是stupid & buggy还有idiot的牢骚竟然也还在!后面还跟着不知是哪位从我的宏里面mod来的另外几个宏,也是一律没有作者信息。

虽然我这个处理中文删除时半个汉字问题的宏是以GPL发表的。但是在原封不动转用的时候删除人家的作者信息也实在是很不厚道,至少说明人品很有问题。再看SI中文网站挂出来的另外几篇技巧文章,相同的特点就是统统没有标明出处和原作者,并且我能发现至少有两篇绝对是别人写的和SI官方没有任何关系!实在是令人唾弃的卑鄙行为。盗亦有道,私自转载就算了连作者名字也擦掉,实在是做得太过分了。

另外提醒一下,似乎在SI出了3.5.0.35版本之后我原来那个宏似乎跑起来有问题。当时简单跟踪的结果是SI莫名其妙地修改了一个函数的处理行为,而且文档也没有提及这个修改。不过后来我也没有再跟踪,因为SourceInsight在装了最新Slickedit之后变成纯属多余的垃圾,所以在去年的一次系统重装后这玩意就从我的本子里面消失了。现在也一直懒得去跟踪这个问题。

说到SourceInsight不免还想多牢骚几句。除了它长久以来不思进取死不更新以外,还有一点觉得它相当烂的就是它的macro机制。做得真是太垃圾了,功能极其有限。和Slickedit的Slick-C与Emacs的LISP根本毫无可比性,简直是没有什么二次开发能力。宏弱智也就算了,也没有提供一套插件机制来允许扩展,实在是难用至极。
2008/1/4

Megatops ProCoder字体发布

这个专用于编写代码的字体很早就做好了,我用了有两个月。现在觉得1是没有原则性大问题,2是我自己已经懒得再修改了。所以现在作为正式版发布出来。

这个字体是一个完全的点阵字体,有清晰锐利的显示效果。我之所以不喜欢用TTF字体编程是因为:1.没有打开Cleartype支持的TTF字体实在是太丑陋了;2.打开了Cleartype的TTF在使用深色背景浅色前景的时候显示效果实在是太糟糕了。在试用了几乎所有能找到的等宽字体编程以后我发现至少对我个人来说,最适合长时间阅读的还是边缘分明的点阵字。TTF+Cleartype虽然用在界面上很美丽,但是看久了常常有眼睛模糊的感觉。尤其是在连续工作10小时以后……

字体效果预览:

Megatops ProCoder Font 1.0 7x14



Megatops ProCoder Font 1.0 8x16



字体的主要特点是:
  1. 严格等宽,并且支持粗体。字体的粗体版本的宽度和正常版本是完全相同的。所以你可以放心打开编辑器的粗体显示关键字功能,而不用担心会损坏你完美的代码排版。实际上XP和之前版本的Windows自带的字体里面,仅有Courier New字体才能做到支持粗体等宽。其他诸如Terminal、Fixedsys、新宋体、Lucida Console这些“等宽”字体都是不完全等宽,只要打开粗体混显就露馅了。Vista内增加了Consolas,这个是很好的全等宽字体,也是我目前觉得最美观的一套TTF等宽字体。我在用超大字号(18pt以上)看RFC文档的时候就是用它。但是Consolas小字号非粗体的效果实在是有点难受,看久了很累。
  2. 和汉字也保持严格等宽:每个字符的高度严格为宽度的2倍。这样配合点阵汉字显示的时候也能保证绝对的等宽对齐。在使用Courier New或者Consolas时看到被拉扁的汉字实际上就是因为这些字体宽高比不是1:2的缘故。和汉字等宽是我设计这套字体的主要目的之一,因为能和汉字等宽又支持粗体等宽的字体很罕见。
  3. 有7×14,8×16两个大小(对应宋体的10pt和12pt)。8×16适合在现在主流的1280*1024以上分辨率的显示器上作为编码字体(这也是点阵汉字能支持的最大字号),而7*14适合于显示上下文窗口等希望能显示多行的地方。至于6*12(对应9pt宋体),考虑了很久以后发现是无法实现粗体等宽支持的,制作了也没有价值。况且对于高分辨率的显示起来说这个字号也太小了。
  4. 对易混字符有高区分度:“1Ili”和“0Oo”都有区分。对比常常被误以为是编程字体的Courier New和新宋体:它们在这上面就做得很不好:0O等难以分辨,以编程字体的要求来看这些都不能算作是编程字体。相比起来Fixedsys就要好得多。
  5. 非可见字符显示为字符的ASCII码值。这样在出现乱码的时候,起码能看出比黑块多一些的信息来。以下是使用我的ProCoder字体和用Fixedsys字体看乱码的对比:
    Fixedsys:

    Megatops ProCoder 1.0:

除了主要特点以外,还有一些可能很多人觉得是鸡毛蒜皮的考虑:
  1. 针对C/C++程序的特点,凸显了分号和逗点等符号。这点做得最差的可能是新宋体了:新宋体的分号是我所见过的最丑陋最不醒目的。
  2. 尖括号<>是90°角的。我不喜欢太尖的尖括号,太尖的话在写诸如p_struct->member的时候会让“->”显得不好看。Linux下面常用的Bitstream Vesa Sans Mono字体里面觉得比较不爽的也就是太短的减号和太尖的尖括号的搭配。
  3. “#”是横平竖直不是斜的。很多字体的“#”是斜体,弄得我每次在写宏定义的时候都觉得很怪。
  4. 星号“*”和字符的中线平齐。绝大多数的字体的“*”都是高高在上的,在写四则运算算式的时候会觉得乘号难看极了:所有的符号都是和数字中线平齐,唯独乘号冒出来破坏整齐的美感。已有的字体中只有新宋体和Fixedsys的乘号是居中的,其他都不同程度的偏上,觉得比较奇怪是不是老美的习惯问题。
  5. 波浪线“~”也是居中,理由同上。
没有实现也绝不会打算做的:
  1. 6x12支持:理由前面已经说了;
  2. 8x16以上的大字体:这个字号以外已经脱离了点阵中文字体的地盘,在没有点阵中文支持的情况下~~还是用TTF+Cleartype吧。大号点阵字体的效果远不如平滑的矢量字体来的好看;
  3. 斜体支持,我厌恶看起来支离破碎的点阵斜体;
  4. TTF支持:把点阵字体弄成内嵌点阵的伪TTF字体可能只有在那些不支持点阵字体的Java写的如jEdit之类的编辑器上才有价值。但是1.我基本不会去用慢得要死的基于Java的编辑器,2.Eclipse是支持使用点阵字体的。

【点此下载】