写好商务文书的9 tips

工作中写商务文书是必不可少的,如报告、文档、请求、邮件等等。 而搞技术出身的人,写作能力一般都很差,写出来的东西别人看不懂。 这篇文章 提出了写好商务文书的九个要点,也许能给广大搞技术的人作为参考吧。

写好文章当然不是要求你写出人人都说好的文章,那需要相当深厚的文字功底, 咱搞技术的也没那么多时间。所以降低一点标准,至少要写出没人说不好的文章来。 那么要点是什么呢?

  1. 写明观点
  2. 写明理由
  3. 按照结构化层次来书写
  4. 概要和详细内容分开写
  5. 一句话说明
  6. 不要抽象,要具体
  7. 不要随意省略
  8. 事实和意见分开写
  9. 明确论点

具体内容请点开看。

(Read More)

Solaris安装memo

今天开始安装Solaris 10,跟Linux的差别挺多,真是不习惯啊。

(Read More)

如何reset VSS的工作目录

有些人没有设置工作目录的习惯,而是想checkout哪个文件时就顺手设置一个,久而久之VSS中各个文件的工作目录设到哪儿的都有。想整理整理吧,但又不知道怎么删,甚至把整个数据库连接都删了重建也不行。

原来……真没想到vss居然把工作目录这个完全属于客户端的信息保存到了服务器上。打开服务器上的 ‘‘users/你的用户名/ss.ini’‘,看看最后那部分吧,工作目录的设置都在这儿呢。全删了,再重新设就行了。

(Read More)

[GreaseMonkey]如何hook已有函数

GreaseMonkey这个插件大家都早已熟悉了。最近我遇到一个问题:需要让页面在调用完某个函数之后自动执行我的函数。 其实这个并不难,写个函数替换原有的函数即可:

function hook() {
  var f = unsafeWindow.foo;         // 保存旧函数
  unsafeWindow.foo = function() {   // 定义新函数
    alert("Hello!");                // 先执行我们的处理
    f();                            // 再执行旧函数
  }
}

然后加载到页面上:

setTimeout(hook, 1000);

这样,页面再执行foo函数时,就会先执行我们的alert("Hello!")了。

不过这个函数还有很大的问题。比如,原有函数的参数不能正确传给foo,返回值无法取出来,无法应用到对象中的方法,通用性不好等。 下面来一个个解决。

(Read More)

DocBook使用笔记

xsltproc的常用参数

xsltproc有许多实用的参数。有两种方法指定参数。一是在执行xsltproc时通过–stringparam参数来设置,如:

xsltproc --stringparam html.stylesheet "style.css" -o index.html chunk.xsl index.xml

另外一种方法就是写到XSL文件中,格式如下:

<xsl:param name="chunker.output.encoding" select="'UTF-8'"/>

常用参数有:

  • html.stylesheet,设置生成的网页所用的CSS样式表。
  • section.autolabel,设置为1可以对章节标题自动编号
  • section.label.includes.component.label,默认情况下节的编号中不包括章的编号,如“第二章->1->1.1”,将此项设置为1,即可让节编号中包含章编号,如“第二章->2.1->2.1.1”。
  • section.autolabel.max.depth,设置章节标题自动编号的深度
  • chunker.output.encoding,设置chunk输出时使用的字符编码

(Read More)

如何在下载文件名中使用UTF-8编码

通过把Content-Type设置为application/octet-stream, 可以把动态生成的内容当作文件来下载,相信这个大家都会。 那么用Content-Disposition设置下载的文件名, 这个也有不少人知道吧。 基本上,下载程序都是这么写的:

<?php
$filename = "document.txt";
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename=' . $filename);

print "Hello!";
?>

这样用浏览器打开之后,就可以下载document.doc。

但是,如果$filename是UTF-8编码的,有些浏览器就无法正常处理了。 比如把上面那个程序稍稍改一下:

<?php
$filename = "中文 文件名.txt";
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename=' . $filename);

print "Hello!";
?>

把程序保存成UTF-8编码再访问,IE6下载的文件名就会乱码。 FF3下下载的文件名就只有“中文”两个字。Opera 9下一切正常。

(Read More)

Windows XP优化技巧大全

这一系列的文章参考了这个专题。 我从其中找出一些比较实用的,用中文总结一下,并加上一些我的想法。 懂日文的同学就直接去原文看吧。

(Read More)

用VC写抓图程序

最近想用VC写一个抓图程序。好久没用VC了,绝大部分知识都忘得一干二净了。 经过查阅无数资料之后终于得出一个差不多像样的程序来。 在这里说说基本思路吧。代码就不上了。

(Read More)

diff命令的好用功能

GNU diff有很多功能平时我们不常用到,但若知道,在急需时还真能派得上用场。

最常用的功能莫过于生成patch文件了:

diff -urN old/ new/ > mysoft.patch

参数 -u 表示使用 unified 格式,-r 表示比较目录,-N 表示将不存在的文件当作空文件处理, 这样新添加的文件也会出现在patch文件中。

然后在需要应用patch的地方使用下述命令即可:

patch -p0 < mysoft.patch

diff的 -y 命令(长格式为--side-by-side)可以将屏幕分成左右两部分,来比较两个文件之间的差异。 许多图形化的比较工具都有这个功能,但如果只能使用命令行,这个参数就相当有用了。 如果要改变左右各部分的宽度,可以通过 -W--width)参数来指定。 (这条技巧来自于bkブログ,谢谢)

此外,--strip-trailing-cr 参数可以去除行尾的换行,这样DOS格式和Unix格式的文件互相比较时, 就不至于因为换行符不一致而出现大量的差异。

(Read More)

[Perl]文件测试符-C的用法

在Perl的各种文件测试运算符中,最有用的运算符之一就是 -C 了。 它返回的是文件的ctime到程序启动的那一时刻经过的天数。 如果不是整数天,返回值就带有小数。

这个运算符经常用来检测文件是否过期,比如判断文件距离上次修改是否超过了3天, 如果超过就将其删除。但是,你是否真正理解 -C 的工作原理呢?

(Read More)