Re: 有关提案 foldcolumn 的一些疑问




Zhang Weiwu wrote:
On Thu, 12 Jun 2014, Chunyang Xu wrote:
2. 你觉得工作量是否偏小?(用两个月写一个 CLI 小工具,叫人提不起劲来。
也许会。

这事CSDN方面也跟我联系过,觉得项目定义得太小。本信就抄送给 CSDN 诸位。

我咨询了当过GSoC导师的朋友,说项目一般都是2个月实现标称功能,但是结果,上游
不能用的。夏令营过去了,好的学生会花半年左右的时间使代码进入上游,这半年做
两项工作,一是整理代码质量,直到上游肯要,二是对需求有更深了解后,有很多不改
不行的地方。当然对于只想在简历上加红花的实习学生,红花已经拿到,这后面半年的
工作就不做啦,结果是GSoC的完成率虽然高,上游接受率却不令人满意。导师有的熟悉
这种情况,但是自己手上事忙,不便微管理,有时候也放任了项目做完却不要的情况。

“所以,如果项目太小,只需要具体化项目需求,把后面半年的工作提前到暑期就可以
了。这样导师也轻松一些,不用置身于要不要擦屁股补完工作的困难决定中。”

我听了这个建议,于是对项目做了一个具体化的需求,就是修改了完成标准。新标准是:

        常见的标准有:比如需要做出测试数据,包含一批特殊的测试情况(特别长的
        输入流),以及良好文档,这里就不多说了。作为 CSDN 2个月实习项目的
        一部分,这里定一个加强的目标:

        完成3个(其它)开源项目的表格输出patch,将patch送到需要它的上游去。

        具体上游收不收的问题,我们将在实习期协同解决,俾使对解决此问题有兴趣
        的项目考虑这些patch,以及学生所协助的项目正好是其感兴趣有希望长期与
        之合作的一些项目。应该需要此类解决方案的其它开源项目清单(不全)如下

        - 数据库工具,比如mysql client,sqlite。经常在命令行上操作数据库的
          DBA, 对于这种SELECT语句输出不能表格内换行的制肘情况是深有体会的。
        - 文件类的命令,比如ls *, wc *, file *. 另外,ftp客户端的ls输出是
          服务器端ftpd实现的,ftpd又可能用的是系统的ls命令, 对于不用系统
          ls命令的ftpd,也有这类需求。smbclient也会用得着它。
        - 压缩包管理命令。比如unrar/unzip经常用于显示包内的文件,各文件
          分别在哪个卷,每个文件的压缩率。
        - 进程管理命令,比如ps, htop, iotop
        - 电子表格软件的“另存为”功能,用于直接存为良好格式化的表格。
        - 操作文件metadata的软件。

我这里解释一下,这个提案制做时,就是为了解决常见的终端表格格式化需求,而非仅
制做一个工具。但是提案草稿原是为了一个较小竞赛准备的,故没有细化这需求。(可
惜的是虽然是简化的需求,在那个小竞赛里竟然无人能做出来。)因为细到这种程度,
就有必要说明这样的需求确实存在。如下是说明:

------------------------------------------------------------------------

对表格类数据在命令行输出,是一项常见的需求,但是实际项目中,遇到这个需求,
无一例外,均是凑合处理的。

最常用的凑合办法,是不管实际终端的行数,硬是按必要的宽阔输出。比如,如果目
录中有一个文件的文件名是1000字符宽,那么ls(1)均按这个宽度输出所有文件名。
或者按最长可能字段来输出,SQL客户端是这样处理的。经常在命令行上操作数据库的
DBA, 对于这种SELECT语句输出不能表格内换行的制肘情况是深有体会的。现在哪个
DBA敢于在命令行直接使用 SELECT * ?即使是表格数据量小,也是不敢的。

其次常见的凑合办法,是剪去超过指定行宽的字符。比如:

$ search music
Reading installed packages...

S | Name                  | Summary                                 | Type
--+-----------------------+-----------------------------------------+-----------
  | asc-music             | Music for Advanced Strategic Command--> | package
  | libmusicbrainz        | Library That Provides Access to the M-> | srcpackage
  | libmusicbrainz-devel  | Include Files and Libraries Mandatory-> | package
  | libmusicbrainz3       | Library That Provides Access to the M-> | srcpackage
  | libmusicbrainz3-6     | Library That Provides Access to the M-> | package
  | libmusicbrainz3-devel | Library That Provides Access to the M-> | package
i | libmusicbrainz4       | Library That Provides Access to the M-> | package
  | texlive-bin-musictex  | MusiXTeX and MusicTeX                   | package
  | texlive-musictex      | MusiXTeX and MusicTeX                   | package

注意剪掉之后,很多行看起来是一样的。虽然可以用--no-abbrev/-A选项避免剪去, 但是会导致输出一团乱。

为什么各种命令行输出表格的需求均没有解决好?两个原因。一是正确换行是一件十
分困难的事,不同语言对于什么地方可以换行各有各的规定,为此必须专门做一个
library 来处理。第二个原因,是因为换行加上表格就更困难了。各项目自有自己要操
心的事,没有理由应对这些麻烦。


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]