Posted on 30-10-2009
Filed Under (技术) by waterlin

在 Windows 下安装好 MinGW 后,不可能不用 GDB 来调试代码吧?

要给 MinGW 配上 GDB 很简单,只要从 MinGW 的下载列表里下载 GDB 的安装文件,安装到 MinGW 的安装目录就可以了。

原创文章,如转载请注明:转载自细节之锤 [ http://blog.WaterLin.org/ ]

Copyright © WaterLin.org. All rights reserved.

(0) Comments    Read More   
Posted on 27-10-2009
Filed Under (技术) by waterlin

项目组如果用 SVN 来管理代码,人一多,谁都可以提交 ( check in) 代码的话,代码很快就会变得混乱不堪,永远也稳定不下来。

这个时候,可以用 SVN 的 patch 功能。我们可以根据自己修改的代码,生成一份和原来代码 diff 后的记录文件,保存下来就成了一个 patch 文件了。代码管理者通过这个 patch 文件,可以很好地观看到修改建议,从而决定是否进行提交。

如果是 TortoiseSVN 的话,要生成 patch 文件很简单,从 TortoiseSVN -> Create patch… 即可生成 patch 文件,保存为以 .patch 或 .diff 结尾的文件即可,如下图所示:

svnpatchCopyright.jpg

代码提交要使用这个 patch,只需要 TortoiseSVN -> Apply Patch… 即可。

详细的信息可以参考 TortoiseSVN 官方文档

原创文章,如转载请注明:转载自细节之锤 [ http://blog.WaterLin.org/ ]

Copyright © WaterLin.org. All rights reserved.

(0) Comments    Read More   
Posted on 23-10-2009
Filed Under (技术) by waterlin

如果使用 Tabbar 而又不喜欢它默认的文档分组功能 ( group ),想自己控制哪些文档应该分成一组、哪些文档应该放到另外一组,可以参考下面的代码,重新定制 Tabbar 的分组规则:

(defun tabbar-buffer-groups (buffer)
  "Define tabbar groups depending on major mode and buffer name"
  (with-current-buffer (get-buffer buffer)
    (cond
     ((or (get-buffer-process (current-buffer))
          (memq major-mode
                '(comint-mode compilation-mode)))
      '("Misc")
      )
     ((eq major-mode 'org-mode)
      '("org")
      )
     ((eq major-mode 'muse-mode)
      '("muse")
      )
     ((memq major-mode
            '(fundamental-mode help-mode apropos-mode Info-mode Man-mode))
      '("Misc")
      )
     ((memq major-mode
            '(c-mode c++-mode))
      '("Cpp")
      )
     ((eq major-mode 'emacs-lisp-mode)
      '("Emacs-lisp")
      )
     ((memq major-mode
            '(php-mode nxml-mode nxhtml-mode))
      '("WebDev")
      )
     ((memq major-mode
            '(tex-mode latex-mode text-mode snippet-mode))
      '("Text")
      )
     ((memq major-mode
            '(rmail-mode
              rmail-edit-mode vm-summary-mode vm-mode mail-mode
              mh-letter-mode mh-show-mode mh-folder-mode
              gnus-summary-mode message-mode gnus-group-mode
              gnus-article-mode score-mode gnus-browse-killed-mode))
      '("Mail")
      )
     ((string-equal "*" (substring (buffer-name) 0 1))
      '("Emacs Buffer")
      )
     (t
      '("Main")
      )
     )))

代码的基本原则就是,根据 mode 来进行分组,比如说把基于 org-mode 的所有文件放到一个组里,把和 Web 开发有关的 mode (如 php-mode,nxml-mode 及 nxhtml-mode)放到一个组里。我觉得这样分组,更加有利于编辑效率的提高。

原创文章,如转载请注明:转载自细节之锤 [ http://blog.WaterLin.org/ ]

Copyright © WaterLin.org. All rights reserved.

(0) Comments    Read More   
Posted on 21-10-2009
Filed Under (技术) by waterlin

根据以前的给Drupal安装所见即所得的编辑工具方法,我们可以给 Drupal 安装一个可视化编辑工具,让发文章更加方便。

不过今天我发现在使用了 Artsy 这个主题 ( theme ) 之后,尽管我的 Wysiwyg 安装正确,可是在发布文章的时候还是显示不出 Wysiwyg 工具栏。但是切换成系统默认的主题后,Wysiwyg 又能正确显现。

就这个问题害得我折腾了一早上!

我硬盘上的 Artsy 文件包是比较旧的版本,好像有一个不支持可视化编辑器的 bug。要么装一个新版本,或用临时的应急办法:在 Drupal 管理后台 Administer >> Site configuration >> Administration theme 里把 Use administration theme for content editing 勾上,并为发布内容专门设置一个支持 Wysiwyg 的 Theme。

特此总结经验:以后要小心留意不同主题的兼容问题,如果发现某个功能按正确步骤安装好了,却不能使用,应该首先考虑把 Drupal 的主题换回默认的主题测试一把。因为大多数的插件并没有在所有的主题下测试,但却一定在系统的默认主题下测试过。

原创文章,如转载请注明:转载自细节之锤 [ http://blog.WaterLin.org/ ]

Copyright © WaterLin.org. All rights reserved.

(0) Comments    Read More   
Posted on 21-10-2009
Filed Under (技术) by waterlin

大部分网页设计者都喜欢用白色来做网页的底色,因为这样容易配色。但是,如果长时间盯着以白色为底色、文字为主的网站,看的时间一久,就会觉得白色很刺眼,太伤眼睛了。在这种情况下,我喜欢用以深色为底、文字颜色为浅绿色的配色方案,对,就像一个 Term 终端的配色一样。

如果是使用 Firefox 浏览器,我们可以用 Stylish 这个插件来重写某个页面的 CSS 样式。Stylish 的语法很简单,基本要点有两个:

  1. 重载当前站点已有的 CSS 样式

    要重载当前站点已有的 CSS 样式,只要找到你想重载的样式的类名 ( Class ) 或是 ID 号,就可以直接在 Stylish 里用 CSS 来重载定义。最重要的是,一定要在结尾加上 !important 这个标记,例如:

    #example { color: blue !important; }
    
  2. 用 -moz-document 规则来指定应用自定义 CSS 样式的网页地址,示例如下:
      @-moz-document domain('images.example.com'), url-prefix('http://example.com/images') {
              /*
                      the code in here only apply to:
                              -pages on the domain images.google.com
                              -pages whose URLs start with http://example.com/images
              */
      }
    

如果运用得好,可以定制出非常漂亮的风格。我就利用 StylishFirebug 定制了一下水木社区的页面风格,现在再也不用盯着水木那白晃晃地页面看导读了。

原创文章,如转载请注明:转载自细节之锤 [ http://blog.WaterLin.org/ ]

Copyright © WaterLin.org. All rights reserved.

(0) Comments    Read More   
Posted on 19-10-2009
Filed Under (技术) by waterlin

很多人用 Drupal 来搭建多博客服务,因此,一个博客远程发布功能必不可少。Drupal 可以通过支持 XML-RPC 的工具来实现远程发布,当然,配置 Drupal 比起 WordPress 之类的专用博客系统要麻烦一些,主要步骤如下:

  1. 在后台管理中勾选 Administer >> Site building >> Modules >> Blog & Blogapi 使博客及其远程发布功能生效;
  2. 在后台管理 Administer >> Site configuration >> Blog API 里,进行远程发布的相关属性设置;
  3. 通过勾选 Administer >> User management >> Roles >> blog module & blogapi module 给帐号所在的角色 ( Role ) 分配远程发布的功能;
  4. 现在你可以在你的远程发布工具里填写下面的 API 的地址来进行远程发布。
      http://YourDomain/xmlrpc.php
    

通过以上几个步骤就能定制 Drupal 最基本的远程发布功能。

原创文章,如转载请注明:转载自细节之锤 [ http://blog.WaterLin.org/ ]

Copyright © WaterLin.org. All rights reserved.

(0) Comments    Read More   
Posted on 19-10-2009
Filed Under (技术) by waterlin

Drupal 的安装很简单,把 Drupal 的源码包解压到你的 Web 路径下,输入这个地址,然后照着提示一步一步做就可以了。但是,这里如果你没有严格按照 Drupal 的要求做,会出一些莫名其秒的错误。

在安装的第一步,Drupal 提示你把

  ./sites/default/default.settings.php

这个文件,复制成一个名为

  ./sites/default/settings.php

的文件。

这个时候,很多人为了省力气,就直接把文件 default.settings.php 的文件名改为 settings.php 了事。如果这样,安装的时候会提示如下的警告信息:

  Warning: fopen(./sites/default/default.settings.php) [function.fopen]: failed to open stream: No such file or directory in C:\xampp\htdocs\drupal\includes\install.inc on line 188

  Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\drupal\includes\install.inc:188) in C:\xampp\htdocs\drupal\includes\install.inc on line 618

  Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\drupal\includes\install.inc:188) in C:\xampp\htdocs\drupal\includes\install.inc on line 619

如果你的 php.ini 配置比较严格,则安装过程会中断。

正确的安装方法应该是要保留 default.settings.php 这个文件。

原创文章,如转载请注明:转载自细节之锤 [ http://blog.WaterLin.org/ ]

Copyright © WaterLin.org. All rights reserved.

(0) Comments    Read More   
Posted on 19-10-2009
Filed Under (技术) by waterlin

最近不知道怎么回事,我机器上的 Firefox 3.X 版本,经常在用 Morning Coffee 或是用新的 Tab 打开网页的时候,一输入地址 Firefox 就要假死一会,或者干脆彻底死掉。最近这么几天,更加变本加厉了,Firefox 频繁地彻底死掉。把 Firefox 升级到 3.5.X 版本,依然会死掉。

仔细查找了一下,在我机器上,导致这一假死现象的原因是 SQLite 数据文件过大。

比如说,urlclassifier3.sqlite 这个文件都已经 40M 了,其它的文件也不小,这样的情况下,Firefox 能快得起来吗?

Mozilla Firefox 开发小组已经在 Firefox 3 里用 SQLite 数据库来存储有关 Cookies,Bookmarks,RSS feeds 以及其它一些相关信息,数据文件以后缀 .sqlite 结尾并且放在 profile 目录下。在 Windows 下,如果你是安装版的 Firefox,此 profile 目录默认是:

  C:\Documents and Settings\water\Application Data\Mozilla\Firefox\Profiles

如果是 Firefox Portable 版,则默认目录是:

  /Data/profile

解决办法有三种:

  1. 把所有的 .sqlite 文件删掉,还你一个干净的 Firefox;
  2. PlacesCleaner 这个 Firefox 插件对你的 .sqlite 进行管理与定时清理,非常优秀的一个插件;
  3. SpeedyFox 优化 Firefox 的配置文件。

如果你的 Firefox 已经出现了假死现象,推荐直接使用第一种方法;而第二种方法则推荐给你起预防作用,防微杜渐。

原创文章,如转载请注明:转载自细节之锤 [ http://blog.WaterLin.org/ ]

Copyright © WaterLin.org. All rights reserved.

(0) Comments    Read More   
Posted on 14-10-2009
Filed Under (技术) by waterlin

在用 Emacs 编辑文档的时候,使用命令时经常会碰到大量的错误信息。但是,默认情况下,对于错误的提示信息不是很详细,我们很难分析究竟是哪里出错了。

这个时候,我们可以试着使用 Emacs 的 debug on error 特性。先用命令

M-x toggle-debug-on-error RET

激活当前缓冲区的 debug on error 功能,然后再运行之前出错的命令,则出错的时候会调用 Lisp 调试器 ( Lisp debugger )显示详细地调试信息,方便进一步地查找出错的真正原因。

这里要注意的是,每次需要 Lisp 调试器去捕捉错误信息的时候,就要用命令 M-x toggle-debug-on-error RET 激活一次,也就是说,该命令成功激活 debug on error 功能后,只有有效地使用一次!

如果你还不能解决问题的话,就把 Messages 缓冲区 ( buffer ) 里的全部内容(而不是一部分),以及 Lisp 调试器里的错误信息,一股脑地拷到新闻组或是论坛里去和别人讨论吧!

原创文章,如转载请注明:转载自细节之锤 [ http://blog.WaterLin.org/ ]

Copyright © WaterLin.org. All rights reserved.

(0) Comments    Read More   
Posted on 14-10-2009
Filed Under (技术) by waterlin

如果你是用 Emacs Muse 来写文档、记笔记的话,直接在 Emacs Muse 里贴代码,会生成很混乱的风格。这个时候,我们需要灵活地使用 Muse 提供的标签 ( tag ) 功能。

  1. Muse 标签的基本语法

    Muse 标签的语法,基本上和 XML 里的差不多,大体上有以下几种情形:

    • 标签有参数的情况,格式如下:

        <tagname arg1="string1" arg2="string2">
      
    • 最简单的使用情形,只有一行的情况下,类似于 XML 里面的标记:
        <tagname arg1="string1" arg2="string2" />
      
    • 标签里有内容,则可以用下面的形式:
        <tagname>Some text</tagname>
      

      或者分成几行:

        <tagname>
        Some text.
        Some more text.
        </tagname>
      
  2. Muse 对代码进行排版与着色

    如果你要对 Muse 里的代码进行排版,则可以在 Muse 里使用 example 标签,基本形式如下:

      <example>
      put code here
      </example>
    

    这样,我们就可以在 CSS 文件里对 .example 类单独定义显示风格,从而这段代码、例子就不会受其他风格属性的影响。

    如果我们需要对代码进行着色,则需要用 src 标签配合 htmlize.el 来对代码进行着色。所有包含在标签 src 里的内容,都会通过 htmlize.el 工具进行着色,我们可以对 CSS 文件里的 pre 进行定义,从而规定 src 生成后的相关属性。下面是一个例子:

      <src lang="perl">
          #!/usr/bin/perl
          use strict;
          use warnings;
    
          my %hash = (frogs => sub {print "Frogs\n"});
          $hash{$frogs}->();
      </src>
    

    我个人习惯用 src 标签来给代码着色,用 example 标签来发布代码运行的结果,并针对这两个区域设置不同的背景颜色,看起来会舒服多了,有兴趣可以看看这个例子

    我们也可以用 div 标签来给某一段内容单独设置 CSS 属性。因为中文的习惯是每段开头空两格,所以,我在 CSS 文件里默认就是每行开头空两格。但是,有一些内容,我不需要开头空两格,怎么办呢?我们可以在 CSS 文件里新建一个名叫 NoIndent 的 id 名称,然后通过 div 来使用这个 CSS 属性:

      <div id="NoIndent">
      put no indent content here
      </div>
    

    我们可以在 CSS 文件里定义这个 NoIndent 的属性、任意定义我们需要的风格。比如说,下面就定义了不同的背景颜色与缩进:

    #NoIndent {
            background-color: #F0F0F0;
            text-indent: 0em;
    }
    #NoIndent p {
            text-indent: 0em;
    }
    

    也可以直接在 div 标签里使用 CSS 属性,例如下面的 div 标签就是让该段文字以 20 磅的黑体居中:

      <div style="text-align:center;font-size:20pt;font-weight: bold;">
          居中的标题
      </div>
    

    在发布文档的时候,有时我们需要在文档里插入一些程序运行的结果,这时可以使用<lisp> <perl> <python> <ruby>等标签。

  3. Muse 里其它常用标签简介

    除了上面提供到有关代码着色等的标签外,我们还经常会使用下面这些标签:

    • <literal>:

      不进行解析,原文是什么内容,就是什么内容,这对于发布包含了大量特殊字符的段落特别有用。

    • <quote>:

      引用标记,可以缩进。

    • <verse>:

      在 Muse 里编辑文档,默认的情况下,如果只有一个换行符,则表明依然还是一段内容;有一个空行才表示是新的段落。用了 verse 后,就能完整保留编辑时的段落格式了。

    • <include>:

      发布时在当前位置插入指定的文件,习惯用法如下所示(当然,需要把”included_file”替换成实际的文件):

        <include file="included_file">
      

如果能灵活地掌握这些标签的用法,我们就可以在 Muse 里进行有效地排版。如果你对使用某个标签发布后的结果不是太有把握,可以在 Firefox 里用 Firebug 来查看发布后的 html 页面代码,从而修订你的 Muse 文件或是 CSS 文件。

原创文章,如转载请注明:转载自细节之锤 [ http://blog.WaterLin.org/ ]

Copyright © WaterLin.org. All rights reserved.

(1) Comment    Read More