
编程与IT
文章平均质量分 83
starrow
介绍
展开
-
如何给pdf文件自动添加目录和书签?
想要直接了解步骤的朋友,请跳转到下面的“Evermap公司的AutoBookmark插件“小节。在最近的硬盘灾难中,与积累的大批电子书一起丢失的还有我在这些资料上做的笔记和修改,这其中就包括为pdf文件手工添加的目录书签。浏览和阅读pdf格式的电子书时,目录书签的便利是无可取代的。有些制作精良的pdf文件自带目录书签,没有的就需要读者自己添加。我以前都是读到某个章节或者根据目录跳转到需要阅读的...原创 2019-06-16 10:08:10 · 18062 阅读 · 1 评论 -
谷歌浏览器为什么不能自定义安装路径?
久病成名医。在经历了电脑最近的备份、崩溃和恢复后,我对朝夕相处的Windows又多了几分了解。Windows 7是Windows XP之后微软最成功的操作系统,也是之后Windows 8和10的基础,因此本文介绍的内容都以Windows 7为环境。Windows用户最熟悉的程序安装路径是C盘下的Program Files。在64位操作系统下,多出来了一个区分32位程序的Program File...原创 2019-06-09 16:41:58 · 25229 阅读 · 2 评论 -
谷歌浏览器的同步与Tampermonkey脚本的恢复
在经历了《压垮硬盘的最后一次备份》的灾难后,电脑上的一切都要恢复和重建。上网是工作和娱乐须臾不可离的,浏览器也就成了使用频率最高的软件。在硬盘还未恢复之前,我最先下载和安装的软件大概就是谷歌浏览器Chrome。没有扩展、书签和历史的Chrome看上去那么陌生。就在我有些沮丧时,浏览器右上角的同步提示引起了我的注意。平时并未留意Chrome的同步功能,据它的提示,设置、扩展、书签和历史竟然都可以同步...原创 2019-06-04 11:52:43 · 10434 阅读 · 1 评论 -
压垮硬盘的最后一次备份
《旧制度与大革命》告诉我们一个腐朽的Regime最危险的时候并不是它顽固不变的时候,而是在它改革的时候。我最近发现这条托克维尔定律也适用于硬盘。《如何更改Dropbox的同步文件夹?》讲述了我似乎及时地察觉到两块硬盘状态堪忧,最重要的数据所在的西数硬盘病情尤重,于是先将其上的近200G数据复制到另一块日立硬盘上。大功告成后,本想到解除了迫在眉睫的危险,不料当晚就听到电脑发出间断的咔嗒声,疑心有...原创 2019-06-03 13:41:55 · 1379 阅读 · 0 评论 -
如何更改Dropbox的同步文件夹?
使用Dropbox的朋友,估计很多都有过移动同步文件夹到另一个位置的想法。这本是一个正常的需求,Dropbox也自带该功能,但使用起来失败的可能性却极高。我遇到的错误提示是有些文件无法移动,请将打开这些文件的程序关闭或者选择新的目的文件夹。经过百折不挠的努力,我终于将同步文件夹转移到另一个硬盘上。总结出下列解决办法,希望对遇到同样现象的朋友有帮助。总结遇到某些文件无法移动错误的朋友,采取以...原创 2019-05-26 10:28:00 · 4841 阅读 · 0 评论 -
不想996的程序员不是好老板(上)
世界上有10类人,1类懂二进制,1类不懂。程序员的人生有10种可能,1种在996,1种在ICU。最近爆发了一件让中国的程序猿和攻城狮特别自豪的事情,在全球著名的开源代码托管网站GitHub上,一个由中国人创建的996.ICU的项目已经获得了超过20万个Star,远远超过开源项目的圣殿Linux的7万多个Star。面对程序猿猩球暴动的趋势,国内电商界的两大扛把子,马云和刘强东出面安抚群众...原创 2019-04-13 11:13:20 · 2648 阅读 · 1 评论 -
《JavaScript函数式编程思想》
自序伴随着Web技术的普及,JavaScript已成为应用最广泛的编程语言之一。由于其在Web前端编程中的统治地位、语言本身的表现力、灵活性、开源的本质和ECMAScript标准近年来的快速发展,JavaScript向各个领域渗透的势头仍然强劲。函数式编程的思想和语言原来仅仅在计算机学术圈中流行,近年来它的魅力越来越多地被主流软件开发行业认识到,Scala、Closure等语言的出现,C#、J...原创 2019-01-30 16:54:35 · 7334 阅读 · 1 评论 -
Live软件开发面面谈——权限
第6章 权限闲人莫入、机关重地,非请勿入、日剧中命案现场的立入禁止、神剧里文件袋上的机密绝密标签、物业小区的来访登记,出入示证、政府大院的警卫、女生宿舍楼下的阿姨、公司办公室的门禁……这些美妙的标语和人物都提醒我们世界上有些地方不是任何人都可以进的,有些事情是要有相应的权限才能做的。信息世界是对现实世界的模拟和扩展,自然也有和上述事物对应的概念。一个信息系统的使用只要不是无限制无差别的,就会...原创 2018-09-07 09:43:29 · 1446 阅读 · 0 评论 -
Live软件开发面面谈——数据库
第5章 数据库数据库是为了存储和查询大量现实的或虚拟的数据而建立的软件系统。为此首先要将形形色色的数据对象抽象成统一的模型。使用最广泛的是实体-关系(Entity-Relationship)模型,实体对应的就是日常所说的物体、对象,关系则刻画它们之间的联系。数据库必须以某种形式表达实体和关系,并实现对其的存储和查询。选用不同的形式和相应的理念,就构成数据库不同的模型。长期以来,关系型数据库以...原创 2018-09-06 08:10:20 · 2140 阅读 · 0 评论 -
Live软件开发面面谈——界面
第4章 界面4.7 极简主义至今我还清楚地记得1999年上大二时,开始一项那时刚刚兴起不久的时髦活动——上网。去遍地开花的网吧上一趟网,现在回想起来感觉就像女孩子上街逛一趟商场。点开桌面上蓝色的字母e(IE浏览器),就打开了传说中神秘的四通八达的互联网的大门。对我这样刚熟悉浏览器用法的新人,互联网也就意味着彼时颇为热门的几家大网站,其中之一是雅虎——集门户网站和搜索引擎于一身的网络巨头...原创 2018-09-05 08:05:55 · 1267 阅读 · 0 评论 -
Live软件开发面面谈——MVC
第3章 MVC假如问一群程序员,谁是最有价值厨师?他们大概会在短暂的茫然后给出五花八门的答案,男朋友、老婆、老妈或者某家快餐连锁店的幕后大厨。显然他们对这个概念还不太熟悉,但是如果把它翻译成英文Most Valuable Cook,有些人或许就明白了。假如还不知道,说出它的简称,他们就一定很熟悉——MVC。MVC可谓是图形用户界面软件设计的标准模式。无论采用哪种编程语言,设计的是桌面端、...原创 2018-09-03 10:15:35 · 1217 阅读 · 0 评论 -
Live软件开发面面谈——事件
第2章 事件在计算机科学里,事件指的是系统内发生的某件事或变化,可以被某个程序接收并处理。它可以是用户输入导致的,例如按键、单击鼠标;可以是网络通讯导致的,例如Web服务器接收到一个请求,邮件服务器收到一封邮件;也可以仅仅作为不同对象之间控制流程转移的一种手段,例如我们为程序自定义的事件。所有这些情况都被抽象出一套共同的机制,用以有效地处理事件参与者之间的互动。这个机制包含以下几个组成部分:...原创 2018-09-02 08:58:55 · 1242 阅读 · 0 评论 -
Live软件开发面面谈——接口
第1章 接口在面向对象编程中,我们将问题拆分成一个个对象来实现,每个对象有其负责的功能,多个对象合作才能形成一个有用的系统。合作在代码中就表现为对象之间的引用和方法调用。引用者对被引用者的关系称为依赖。依赖关系意味着被引用者的变化可能影响和破坏引用者原本正常的运行。当系统变得越来越大,对象越来越多,牵涉方越来越广,持续的时间越长时,设计者就希望这样牵一发而动全身的影响尽可能地小。换句话说,...原创 2018-09-01 10:09:49 · 1288 阅读 · 0 评论 -
《软件开发面面谈》
各位兄弟姐妹,平时我们都是以文会友,比武招亲,今天在下要向大家隆重推荐一本奇书。它可谓是居家旅行必备,防暑降温佳品,健身自卫良友……家有儿女读书习字,背一首唐诗,读两页代码,左右脑全面开发,妈妈再也不用担心学习了。出门在外,难免碰上昆山龙哥,本书纸张结实,质量可靠,退可挡,进可拍,正当防卫所向披靡。炎炎夏日清风难觅,用作扇子无异味,有书香。压力山大辗转难眠,读五分钟进入梦乡,无副作用且不做噩梦...原创 2018-08-31 09:35:14 · 5571 阅读 · 0 评论 -
98. 面向对象的LotusScript(十七)之LinkedCollection
面向对象编程经常会用到作为容器的对象,使用LotusScript时因为基本上是和单一的数据对象NotesDocument打交道,用作容器的就是数据库的视图或包含搜索结果的文档集合。但有时也需要某个通用容器来容纳其他自定义的对象。此时一般可考虑用数组,或者像20. 面向对象的LotusScript(三)之NArray介绍的编写一个基于动态数组的容器类。本文给出另一种容器的实现方式,对外的接口也像NAr原创 2015-03-24 14:54:45 · 3395 阅读 · 2 评论 -
97. 在LotusScript中模拟函数式编程
本文将介绍96. 通用字段修改器用到的在LotusScript中模拟函数式编程的技巧。函数式编程函数式编程是一种优美而强大的编程范式。它源于Alonzo Church提出的λ演算(Lambda演算),而某个问题能表示成Lambda演算,按照Church–Turing论题,等价于该问题在数学上是可以有效计算的。粗略地说,用对应于Lambda演算的一门函数式程序语言可以写出任何理论上可计算问题的计算程序原创 2015-03-10 15:33:15 · 3500 阅读 · 0 评论 -
电风扇与铅笔
前段日子在网上看见一篇文章,作者转述他见到的一则故事。一家玩具公司在生产线上将产品自动装盒,由于某些原因总会有个别空盒没有被装入玩具。为了防止这些空盒被出货,公司雇用了一个技术团队,X光扫描、重量感应、金属检测,想尽办法,所费不赀,还未能完美地解决。另一家玩具厂也遇上同样的问题,老板简单粗暴地命令一个年轻的技工一个星期内解决。年轻人想了半天,在装盒完成后的流水线边上放了一台大功率的电风扇,空盒被吹...原创 2015-02-06 12:47:23 · 3656 阅读 · 0 评论 -
纪念userscripts.org
发现一些Firefox的用户脚本不工作和userscripts.org访问不了有挺长一段日子了,心想是哪里出了错也没特意去查。前几天有时间检查脚本,顺便再上久违的userscripts.org看看,却还是不能访问,感觉有些蹊跷,遂在Google上搜索userscripts.org down,还没敲完,提示已经出来了,看来这已是影响普遍的问题,和伟大的防火墙没什么关系。点进链接一看,大吃一惊。原来u...原创 2014-10-10 17:29:40 · 8590 阅读 · 0 评论 -
版本控制、Git和Domino
版本控制一提到版本控制,程序员们就会想到他们工作中用到的各种源代码控制工具,Subversion、Git、Mercurial……实际上源代码之外的许多其他文件也会有版本控制的需要。而版本的想法和对其的管理更是在计算机出现之前的印刷以至手写时代就一直存在。版本是作品生长衍变的徵象。手写和印刷时代的文字作品之还仅是记录它的修改生长。及至计算机和电子文件出现,文件大小、内容复杂程度、版本更新速度都空前增原创 2014-09-06 12:20:42 · 6879 阅读 · 0 评论 -
非典型SOHO的苦与乐
每天睡到自然醒,有车的不用在路上堵,没车的不用在车里挤,干活累了可以看看苍老师或者股市不用担心老板,要认真时不会被同事的聊天或电话烦扰,想放松时可以在位置上吞云吐雾,爱听的音乐能从音箱里放出来享受,有另一半的还可以做饭献献殷勤充实生活……这应该是很多人梦想的工作状态,在家上班。作为一名IT老男人,我过去常常想,写程序是最适合在家干的工种之一,每天费时费力来办公室,一大堆人在空气未必流畅的房间里...原创 2014-09-03 15:27:18 · 7221 阅读 · 11 评论 -
Java Log Viewer日志查看器
工欲善其事必先利其器在投奔怒海——一个Domino老程序员眼里的Java开发我提到目前所做的Java开发中遇到的大量日志之问题。服务器控制台刷屏似地滚动,日志文件飞快地增长,debug的时候相关信息常常被例常日志淹没,在众多Logger滔滔不绝的输出下,要找出错误所在有时都挺费眼。日志的作用无可置疑,大型项目中日志海量产生也不少见。在以前的Domino开发中,Domino服务器在产生日志方面相当节原创 2014-08-15 17:50:29 · 22215 阅读 · 6 评论 -
投奔怒海——一个Domino老程序员眼里的Java开发
这是一个以键盘鼠标为谋生工具已十多年的人初次进行专门的Java开发的体验和感受,对于Java程序员,这些也许早就习以为常,那就把这当成从一个来自不同世界的新人眼里看看他们自己的工作;对于我的Domino同行,这些体验或许将来有更多共鸣的可能。在加入到这个Java产品开发团队之前,我的Java开发经验如下:十几年前跟着一本Java入门书做练习写的几个Applet,Domino项目开发中写的几个读写数原创 2014-07-25 18:25:39 · 11543 阅读 · 14 评论 -
Bug驱动开发(Bug-driven development)
不过根据我最近参与的某国外大型Java产品的经验(也在聊天中得到了朋友的印证),在现实中无论是用什么语言开发什么样的项目,都普遍存在一种方法论,并且还没有得到理论家的重视,被系统总结和提出过。我准备将这种方法命名为“Bug驱动开发”( Bug-driven development)。虽然名字同样高大上,但实际上各位程序员对它都不陌生。简单地说就是发现bug——消除bug——发现新的bug,这样一个不断循环的过程驱动着开发,是谓Bug驱动开发。要运用这种方法论非常简单,只需做到以下若干条中的某一条:原创 2014-07-21 15:00:40 · 3584 阅读 · 4 评论 -
Windows 8之失败,电脑作为娱乐设备VS工作工具
Windows 8面世已经一年多了,褒贬不一。考虑到未来买新电脑替换陪伴了我几年的小伙伴时是否要升级现在的Windows 7,我对Windows 8也研究了一番。记得读小学时有一段时间考试成绩总是一次好,一次坏,交替进行。微软面向个人用户的操作系统自Windows 98以来也遵循着我的成绩规律,成功和失败的版本轮流出现。Windows 98大获成功,Windows ME乏善可陈,Windows ...原创 2014-04-02 17:27:11 · 3612 阅读 · 0 评论 -
浅谈简洁与全面,智能与可配置
我在写上一篇文章Visual Studio Intellisense、Eclipse Content Assist与理念式编程对比Visual Studio和Eclipse时对两个开发环境在功能、界面上的风格差异有些感想,联想思索之下发挥成这篇文章。主要谈的是各种产品设计上体现出的两对趣味相异的理念,可见于机械、电子、软件等各个行业,文中举的例子来自我比较熟悉的软件业。简洁与全面简洁与综合...原创 2014-03-12 10:47:26 · 4307 阅读 · 2 评论 -
Visual Studio Intellisense、Eclipse Content Assist与理念式编程
Visual Studio和Intellisense我一直觉得VisualStudio是微软最了不起的产品之一,也是最智能和直观的语言开发工具之一,虽然它不是我日常主要的开发环境。在其中写程序总会给我轻松愉快的感觉。Intellisense是Visual Studio里的代码提示和完成功能,也是我见过的同类功能中最聪明的。关键字、类型名称、方法名称、类型和方法字段名称、对象初始化代码、注册事件处理原创 2014-03-11 19:03:10 · 8766 阅读 · 9 评论 -
Java、LotusScript和JavaScript中的自定义事件编程
面向对象的LotusScript(六)之为自定义对象模拟事件和面向对象设计与事件两篇文章都提到事件是编程时对很多场景的抽象和解决模式,核心就是在两个对象之间建立一种“提醒”机制,当某件事发生时,作为发布者的对象提醒称为收听者或预订者的对象,后者执行特定的操作。在汽车火车上,一名乘客甲请讬乘务员或者另一乘客乙到某站丙时提醒自己下车,就可以作为以上事件概念在生活中很好的原型。这里汽车到达丙站就是事件,原创 2014-03-03 11:41:34 · 10047 阅读 · 5 评论 -
面向对象设计与事件
面向对象的设计给编程带来很大的便利和好处,在贯彻这种原则的语言中把类作为代码单元似乎也是自然的事情。但是实践中,剥夺了过程的独立生存权有时又会让代码失去过去的灵活和便捷。对事件的编程就是这样的场合。本文通过对比Java和C#里的事件编程说明这一点。原创 2014-02-26 17:02:52 · 8841 阅读 · 3 评论 -
编程语言印象集
小白:听说你会七门语言?王二:是啊,口语听力都没问题。小白:敢问是哪些国家的语言?王二:秦齐楚魏韩赵燕。计算机专业的学生在大学期间就会学习多门编程语言,我不是科班出身,因为工作或兴趣的原因也接触了好几门语言。除了Lotus Notes开发平台的主要编程语言LotusScript外,其他都谈不上有多深的认识。所以下面对各门语言的印象至多算是经验不足的用户的肤浅感受。Fortran:Fort...原创 2014-02-21 10:01:33 · 4132 阅读 · 2 评论 -
莫道君行早更有早来人(三)翻译平台
工作时间久的程序员不少都至少有过辞职单干的想法,或者换个时髦的词语就是“创业”。我也一样。2010年我辞去负荷越来越重的工作,在家休息了一段时间,一度想能否自己做些什么。按照我的性格和能力,“生意”的经营模式越简单越好。自知不喜欢和难胜任大量的业务信息和繁杂的日常管理,最好是只需精心设计规则,搭建一个平台,在其上不过多依赖经营者去处理琐碎的事情。我想到了一个亲戚曾经做过的翻译公司,从客户那里接...原创 2014-02-20 18:01:55 · 4065 阅读 · 0 评论 -
漫谈Web Feed、RSS、原文链接和转贴
Web Feed(网上信息源【注1】)和对应的订阅器(feed reader)是一项在中国和西方境遇大不同的技术,从探讨这样的差别可以得出一些有趣的见解。历史上【注2】网站刚诞生不久,就有人思考以不同的方式来发布信息。传统的模式是网站添加新信息,网民访问网站以浏览和阅读。如果网民感兴趣的是频繁更新的,甚至有时效性的内容,就必须经常访问网站检查是否有更新;或者相反,一个网站或其中的某个主题很少更新,...原创 2014-02-13 12:18:30 · 5877 阅读 · 2 评论 -
莫道君行早更有早来人(二)几点网络技术的想法
接着上篇继续说些我曾有过,后来被证明为“英雄所见略同”的想法,因为是在优快云上写文章,所以选的都是与IT有些关系的想法,或许这些抛砖能引起大家的共鸣和同感。大概在2003年左右,其时继QQ、聊天室、BBS之后网络论坛在中国可谓风头正劲,各种类型和主题的论坛一片繁荣、此起彼伏。我在逛论坛之余,一天晚上突然想到另一种在网上发布内容的形式。论坛都是以话题为中心的,列表显示一个个大家贴出的主题。可以设...原创 2014-02-09 11:39:32 · 3831 阅读 · 0 评论 -
莫道君行早更有早来人(一)黄页
发明、定理、商业模式、观点……从小到大,我每每有一个新想法都会忍不住兴奋一番,以为自己有了前所未有的创造,高潮之后却会逐渐发现经常有两种情况,或者这些想法很难实现(发明:做出实物,定理和猜想:证明,商业模式:运营成功),或者不仅别人早已想到,而且还已经实现了。于是我重新发现了这条定律——一个人在初涉的领域,没有经历过长时间的积累和研究,想出一个别人或前人未曾取得的成果是一个小概率事件。地球上60亿...原创 2014-02-08 10:39:58 · 20334 阅读 · 0 评论 -
79. 视图里的计算属性——从ASP、JSP、JSF到XPages的“钻石”
XPage文件里的几乎所有属性都可以设置公式来计算,这确实给应用程序的视图开发带来了极大的灵活性,不过这在Lotus Domino平台以外并不新鲜。用HTML或XML这样的声明性语言来定义用户界面,再辅以某种简单的表达式语言来设置计算的属性值,以实现动态的界面。首先采用声明性语言定义界面比用命令型语言简洁高效。其次单独的界面定义文件彻底贯彻了界面和业务逻辑分离的原则。最后利用表达式语言和事件绑定既清晰地实现了视图(view)和模型(model)之间的信息传递和控制转换,又保持了两者的独立性。这种良好的架构在原创 2014-01-28 10:31:39 · 4211 阅读 · 0 评论 -
文思海辉编程大赛的初体验
作为一个所学专业和计算机相去十万八千里的人,我对编程题目的印象还基本上停留在十几年前大学里教的Fortran和自己考计算机二级时学的C语言教科书上的习题。归纳起来大致有这么三种。一是做计算机被发明出来做的事——计算,譬如求一个矩阵的逆矩阵。二是和字符串打交道,在屏幕上做符号游戏,比如打印出一个由星形组成的原创 2013-12-19 12:13:08 · 3504 阅读 · 0 评论 -
71. 从Lotus Notes表单到XPage——兼谈程序里的二进制文件和文本文件
本文对比分析了LotusNotes平台上两种视图技术。架构和运转过程的分析特定于Lotus Notes平台,其后的关于二进制文件和文本文件的讨论则具有普遍性。(严格地说,XPages指的是IBM基于Lotus Domino和JSF的快速开发技术,XPage则指单个页面,两者的首两个字母都大写。笔者一直遵守这个拼写上的规则。)架构XPa原创 2013-12-12 15:45:13 · 4009 阅读 · 0 评论 -
67. 表单提交与校验
表单提交绝大部分应用程序都需要从用户获得输入,其中很大部分便是以表单输入的形式。一个表单,从用户输入系统接收到数据处理,会经历几个普遍的阶段。一个完备的表单提交流程具备以下几个不同阶段的功能:限制:根据字段的数据类型,表单对输入控件所接受的字符做限制。例如,文本类型的字段限制长度,数字类型的字段就不接受输入字母字符,日期时间类型的字段如果采取直接输入也可以限制输入的字符类型和格式。转换:系统按各字原创 2013-11-21 17:43:46 · 4874 阅读 · 0 评论 -
62. 全文搜索与条件查询
全文搜索与条件查询在59. XPages自定义控件(二)搜索视图里介绍的搜索视图控件采用的仍然是Lotus Notes系统典型的全文搜索。用户界面和操作都很简洁,只要往一个文本框里输入所要查找的文档包含的词语就可以。这一点和Internet兴起后搜索引擎的方式是一致的。不过在传统的基于关系型数据库的应用系统里,搜索更多地是以精确的条件查询形式存在的。用户在查询界面里指定若干条件,每个条件都是对当前原创 2013-10-28 16:16:44 · 4496 阅读 · 0 评论 -
两种类型的web框架: 基于请求的和基于组件的
概述现在的web框架可以分为基于请求的(request-based)和基于组件的(component-based)两大阵营。前者的代表有Struts和Spring MVC等,后者的成员则有JSF、Tapestry、ASP.NET等等。基于请求的框架较早出现,它用以描述一个web应用程序结构的概念和传统的静态Internet站点一样,是将其机制扩展到动态内容的延伸。对一个提供HTML和图片等静态内容原创 2013-10-22 17:19:21 · 8020 阅读 · 2 评论 -
分类与标签
分类和标签是博客系统的两项功能。分类指用户定义类别并给博文归类。这是很自然地整理文章的方法,所以也成为博客系统的基本功能。后来,互联网上的文章又发展出一种方便友好的特色——标签(Label或Tag)。标签相当于传统文章的关键字和书本的索引,指明的是文章包含的某一点内容或者特色。分类往往是从某一个角度将所有文章讨论的范围分成几个子集。标签则只是反映文章的侧面和特色。两者相互补充,就像一本书既有目录也...原创 2013-03-05 21:14:13 · 5861 阅读 · 0 评论