韩磊@当下

一份特别的生日礼物

我给自己五十岁生日的礼物是用Cursor+claude-3.5/3.7+deepseek+gpt 4o写了个blog系统,并且将基于WordPress的旧blog迁移过来。

整个过程用了大概不到5个小时,我几乎一行代码都没有写。大多数时间用于测试运行、得到(错误的或不够好的)结果、反馈给AI,再测试AI重写的代码。我顺手改了极少数代码,因为这样要比告诉AI要求再得到修改后的代码快得多。多数时候,我就像苛刻的甲方,不停让AI改这改那。

虽然这只是很小规模的编程实践,但AI表现出来的能力与专业度已经令我刮目相看。另一方面,它偶尔冒的错误也非常愚蠢。在这次小小编程实践中,这种愚蠢往往出现在AI没有正确理解我的意思。更进一步说,当我提出两个或两个以上互有关联的要求时,就有被误解的可能。对于有经验的程序员,很容易发现这类问题,但太过依赖AI的话,就会不看AI给出的代码,直接accept all,一键部署到测试环境,结果当然是出错,时间浪费在了验证结果以及和AI沟通来沟通去上。

阅读全文 »

《程序员的7个创新秘诀》(The Creative Programmer)译者序

创造力早已是重要的科学课题。它不是巫术,也不是成功学,更加不是少数人才能拥有的天赋才能。几十年以来的研究表明,创造力可以通过后天努力获得,同时也与时间、空间及人的因素紧密相关。

每天通过写代码改变世界的程序员群体是最需要创造力的群体。可惜的是,过去许多年以来,教育界和产业界都致力于培养程序员的编程技能(包括工程技能)。对软技能的重视虽然已有体现,但将“创造力”作为独立话题和各种软硬技能的汇总点来讲述,还不多见。在这样的背景下,《程序员的7个创新秘诀》就尤其显得难能可贵。

这本书基于作者及其团队的研究成果,围绕创造力七大主题(技术知识、制约条件、批判性思维、好奇心、创造性心境、沟通和创新技巧)展开阐述,点出有效获得和发展创造力的关键路径与方法。由于作者的研究对象是程序员群体,本书的主题不可避免地归结到程序员身上。然而,这七大主题可以说几乎放之四海而皆准,不独对程序员有效。原书标题The Creative Programmer可以说稍微有点谦虚了。

阅读全文 »

《整洁代码的艺术》译者序

这是一本讲述常识的书。

如果你已经有多年职业经验,读到书中内容,不免会觉得都是老生常谈。然而,常识之所以需要被一遍又一遍地普及,正是由于人们总以为自己已经掌握了常识。殊不知我们常常混淆“掌握”与“知道”,拿知道当掌握,不免一遍又一遍地违背常识、吃够苦头。

这是一本讲述编程领域常识的书。自从有软件以来,技术专才们对它的研究和实践产出了各种方法论和流派。最近十来年,“整洁代码”成为其中一支主要思想派别,也成了软件界的主流常识。罗伯特·C·马丁(鲍勃大叔)的“整洁”系列著作被奉为圭臬,拿知道当掌握的戏码又一次上演。我们继续违背常识,写着并不整洁的代码,吃够苦头。

阅读全文 »

Clean Craftsmanship译者序

2021年2月,老朋友张春雨(侠少)在微博上给我发私信,问我有没有兴趣翻译Robert C. Martin(Uncle Bob)的新书。我和侠少平时联系不多,但常常收到他安排寄来的赠书。赠书收得多了,总觉得欠着人情,该用什么方式还一还才好。

这个“什么方式”,也许是几顿酒饭、几杯咖啡,但绝对不是翻译一本书。算起来,截至2020年,我已经有十年没做图书翻译工作。去年翻了一本小书,眼睛和腰椎颈椎都有点不舒服。一定赔本但不一定赚吆喝的事,还是不干为好。

侠少对我了解甚深,他只说了一句话,就成功说服我接下任务。他说,“这是(Bob)大叔的封山作。第一本和最后一本,有始有终,一段佳话!”一下子就勾起我翻译《代码整洁之道(Clean Code)》的回忆。当时我在北京工作,个人能力提升和职业发展都遇到瓶颈,同时还需要考虑家庭常驻地问题。《代码整洁之道》不但带给我关于整洁代码的知识,还令我悟到许多做人做事的道理。对我来说,那是一本优秀技术书,更是一本关于价值观的好书。

阅读全文 »

《Unix传奇》中“消失”的链接

我2020年翻译了Brian W. Kernighan的Unix: A History and a Memoir一书,中文版书名是《Unix传奇:历史与回忆》。原版中有一些网页链接,根据我国公开出版物相关规范,中文版删掉了这些链接。

我把这些“消失”的链接整理如下,供读者参考:

P46 丹尼斯·里奇介绍肯·汤普森对电脑游戏的贡献的短文:www.bell-labs.com/usr/dmr/www/ken-games.html

阅读全文 »

桐先生午夜故事之报应

本市头号报纸的总编辑莫喻快要急疯了。

事情要从昨天说起。

昨天早上,我出了地铁口,像往常一样,在写字楼旁的咖啡档要一杯拿铁外带,顺便买一份日报。现今手机上什么消息都有,没几个人看报,除了摊派订阅那部分,卖不了多少。好在喉舌的作用还未被否定,每年有固定拨款下来,局面也算维持得下去。

阅读全文 »

桐先生午夜故事之对赌

我将瓶中深褐色的烈性啤酒倒进杯子,一厘米厚的泡沫刚好在杯口露头。雷琛跟我碰了碰杯,一饮而尽,对我说:“那天喝断片儿了,就记得你送我去酒店,谢谢啊。”

“举手之劳,”我也干杯,“不过你这身膘是该减减了,司机、俩保安加上我,生拉硬拽才把你送进房间。”

那是两天前的事。

阅读全文 »

迁移Blog平台

实在受不了Community Server的弱智垃圾评论处理手段,因为它不开源,自己修改也很麻烦,所以决定迁移到Word Press。由于hanlei.name原来用的数据库服务器只对内网开放,故WP提供的直接迁移手段用不了。折腾半天后,终于找到近乎完美的解决方案:

1、用Keyvan Nayyeri编写的Community Server 2.1 BlogML Converter,格式导出CommunityServer的数据(BlogML格式)。过程很简单,按压缩包中的文档指示,把文件传到CS相应目录下,到后台访问SyndicationOptions.aspx(“RSS设置”),在BlogML那个位置点“Export”,就会在新窗口打开导出后的XML文档。

2、用Aaron Lerch编写的WordPress BlogML Import工具在WP后台导入BlogML数据。Wayne John修改了这个工具,修正了一些小问题。Wayne John版本在这里下载

阅读全文 »

Flickr for LiveWriter和谐版

我一直用微软的Windows Live Writer写Blog。最近,由于大家知道的原因,Flickr!图片不能访问,所以LiveWriter的Flickr!引用插件也运行不正常。

后来装了伊朗人的Firefox插件,在Firefox里面倒是可以看到图片,但LiveWriter还是用不了Flickr的图片。我查看了Firefox插件的代码,对照里面给出的替换URL,照葫芦画瓢修改Flickr for LiveWriter插件的代码。没花什么功夫,就简单粗暴替换了一下URL地址。方法虽然烂,能用就行。

如果你也用LiveWriter写Blog,并且需要在LiveWriter里面引用Flickr的图片,可以使用这个修改好的和谐版插件。下载地址是:http://download.csdn.net/source/264275。压缩包里面有源代码和编译好的DLL(根目录的bin目录下)。把该DLL放到LiveWriter的Plugins目录下就可以了。有闲心的同学,不妨把它改得更灵活些,把硬编码的部分干掉。

阅读全文 »

《Beginning C# Objects中文版》勘误

有热心读者在Dearbook上贴出这本书中的一些错误,我一一作了回复,整理转贴如下:

对于使用C#的OO出学者来说,这确实是难得的好书。我是抱着重新梳理一下OO知识的心态来看的,虽然到目前(刚看完第五章)还没遇到什么特别精彩的文字,但是层层推进的写作风格和出色的翻译还是把该讲到的知识点都讲到了,而且还对易混淆的地方做了重点解释,比如override和overload。

  但是今天看书的过程并不是太愉快,因为发现了几处比较严重的错误(严重=颠倒了事实,对初学者很不利),在这里贴出来,有些也可能是我理解错了,还请译者和读者甄别:

阅读全文 »