Emacs 快速指南[Emacs 在带的 Tutorial]

【注意:位于【】之间的内容是译注,比如本行,下同。】

Emacs 键盘命令通常包含 CONTROL 键(有时候以 CTRL 或 CTL 来标示)和META 键(有时候用 EDIT 或 ALT 来标示)。为了避免每次都要写出全名,我们约定使用下述缩写:

 C-<chr>  表示当输入字符 <chr> 时按住 CONTROL 键。
          因此 C-f 就表示:按住 CONTROL 键再输入 f。

 M-<chr>  表示当输入字符 <chr> 时按住 META(或 EDIT 或 ALT)键。
          如果你的键盘上没有 META 、EDIT 或 ALT 键,用下述方法也等效:
          先按一下 ESC 键然后放开,再输入 <chr>。我们用 <ESC> 来表示 ESC 键。

重要提示:要退出 Emacs,请用 C-x C-c(两个连续的组合键)。下文中左边顶行的“>>”字样用来提示你尝试键盘命令。比如:

>> 现在输入 C-v (查看下一屏文字)移动到下一屏。 阅读全文 >>

Emacs 的入门操作

1. 总体说明

M 键的替代,如 M-v,表示按住 META(EDIT 或 ALT 键),再按 v。如果没有 META、EDIT 或 ALT 键,则先按下 ESC 键,然后放开,再输入 v。好在我们的键盘一般都有 ALT 键,那就是 ALT-v 吧。

查看命令帮助的方法:C-h k C-f 就能在下方窗口中看到 C-f 的使用说明

如果一行超过窗口的宽度,换行时会有反斜杠(控制台下),或转弯箭头(图形系统)标示出。

2. C-x 系列操作

这个系列的命令多与 “窗格、文件、缓冲" 的控制操作有关。
后再加

  C-c 退出   C-s(save) 保存

3. 光标的移动

C-v(助记:Move) 下移一屏,M-v 上移一屏,C-l(助记:load/Reload) 重绘屏幕,并将光标置于屏幕中央,也可以用 PageDown 和 PageUp 的滚屏。 阅读全文 >>

Vi 和 Emacs 使用点滴

1. Vi 中执行系统命令

命令模式下用 ! (Shell 命令),如
 
   :! perl test.pl

2. Vi 中拷贝、剪切、粘贴操作

    v(逐字符)或V(逐行)进入可视模式(Visual mode),然后用方向键或hjkl等移动命令就可以选择了.
拷贝: 选择完后按y;剪切: 选择完后按d;粘贴: 移动到合适的地方, 按 p, 也可以用 P

3. 控制台下的 Emacs 支持语法加亮

在 ~/.emacs 文件(没有该文件则新建一个) 中加上

(global-font-lock-mode t)

或者你进一 Emacs 中执行 M-x global-font-lock-mode 也能看到语法加亮的效果

有说在 ~/.emacs 中加上这个定制变量的 阅读全文 >>

Linux下不同文件编码的转换[转]

一、什么是编码。

字符编码(Character Encoding)可以说就是让某一字符序列匹配一个指定集合中的某一东西,常见的例子包括长短电键组合起来表示的摩斯电码(Morse Code)、Baudot code、Unicode和用二进制来表示的ASCII(American Standard Code for Information Interchange)码、这样便能够将文本在计算机中存储和通过通信网络发送出去。

字符表(Character Set)和字符编码(Character Encoding)经常被混淆。实际上Character Set(字符表)只是指一组为特定的Encoding System(编码系统)使用的符号集合,而不包含他们的数字含义或者顺序。而Character Encoding(字符编码)则包括了Character Set(字符表)和每个字符在字符编码集中的表示方法。由于历史的原因,MIME(Multipurpos Internet Mail Extensions)和使用这种编码的系统使用属于“字符集(Charset)”来表示用于将一组字符编码成一系列8位字节数据的整个系统。

摩斯电码(Morse Code)发明于1840年,用来编码字母、数字和拉丁字符,都用长短组合的电键来表示。
ASCII码发明与1963年,是由7位(7-bit)的二进制代码表示字符、数字、符号和固定长度的设备控制代码。同年,IBM使用8位(8-bit)的编码机制实现了ASCII的扩展EBCDIC(IBM's Extended Binary Coded Decimal Interchange Code)。 阅读全文 >>

Ubuntu (Linux Mint 7)下安装 IE (ies4linux)

 我安装的 Linux 是 Linux Mint 7,它是基于 Ubuntu 9.04 的发行版,它提供一种更开箱即用的用户体验。如去除了顶端的任务栏,安装后即包括了浏览器插件(如 Flash),多媒体解码器,对 DVD 播放的支持,Java 和其他组件等。它与 Ubuntu 软件仓库完全兼容。

免去游戏方面,Linux 基本能应付得了日常事物的。可偏偏有些网站与 IE 结缘太深,更不争气的还就是 BlogJava,它的编辑器在非 IE 浏览器上处理 <textarea> 不能正常,所以我要考虑装个 IE 在 Linux 上。

所用的软件是 ies4linux,复数的,可以同时安装多个版本的 IE。它用样是由 wine 来模拟运行的,所以必须先安装 wine,你可以用新立得软件包管理器来安装 wine,也可以直接用 apt-get 来安装 wine。

然后是 ie24linux 的安装,安装步骤如下: 阅读全文 >>

WAS5.x 下使用 Log4j 为何没有日志输出的详细分析及解决办法

经常碰到有人使用了 Log4j 的项目在别处运行的好好的,一放到 WAS 下发现不能输出日志了:控制台文件 SystemOut.log 中没有 Log4j 本应输出的内容,要么就只见磁盘上有一个设定的日志文件,却总是空空如也。

本文就来以一个实际的例子分析为什么会出现这样的情况,以及告诉你应如何解决。这其中也是因为 ClassLoader 在作祟。通常我们会在通用日志框架 jakarta-commons-logging 之下使用 Log4j,这也是合情理的,因为 Struts、Hibernate 等众多框架就是这么干的,然而这却是一方面的根源。分析的过程应用了前面一篇介绍的 Eclipse 远程调试 WebSphere Application Server (WAS) 方法。

测试环境和工具是:WAS 5.1+Eclipse 3.3.2+MyEclipse 6.0.1,在 Eclipse 中建立 Web  项目 testlog(此处可下载:testlog.zip),其中所用到的 jar 包只有 commons-logging.jar(V1.0.3)、log4j-1.2.11.jar。再有为了知道是哪个 ClassLoader 加载了某个类,参考了:利用 JWhich 掌握类路径,确定类路径中的什么类将被载入阅读全文 >>

Apache Commons Logging 是如何决定使用哪个日志实现类的

Apache Commons Logging 像 SLF4J 一样,是个通用日志框架,广泛应用在各个开源组件中。说其通用,是因为它本身只提供了简单的日志输出的实现(org.apache.commons.logging.impl.SimpleLog和org.apache.commons.logging.impl.NoOpLog),主要是为你统一使用其他专业日志实现(Log4j、jdk1.4 Logger、aavalon-Logkit)的方式,让你在程序中看不到具体日志实现的代码,以配置方式解藕。

那么 commons-logging 是怎么决定程序执行时该使用哪个具体的日志实现呢?这里 commons-logging 有两个步骤要做:

1. 定位 org.apache.commons.logging.LogFactory 的实现类(这一步是关键)
2. 定位到的 LogFactory 实现类决定使用哪个 org.apache.commons.logging.Log 实现

那现在我们把注意力主要集中在 commons-logging 如何定位 LogFactory 实现类上来。org.apche.commons.logging.LogFactory 是一个抽象类,所以需要一个 LogFactory 具体类。 阅读全文 >>

了解 Java ClassLoader -- 为便于阅读整理做成了一个 CHM 文件

Java 程序员还是应该对 Java ClassLoader 有所了解,曾经问过一个做 Java 的 JVM  是什么?结果是:没听过。汗颜了吧,但也不少写 JSP 的甚至是 Java 代码的真的可能不了解 ClassLoader,所以对 Classpath 仍然费解。JRE 本身就有一个 ClassLoader 层次,更别说在各种应用服务器中因为 ClassLoader 层次的因素产生了莫名其妙的问题。例如,数据库驱动有时候应该放在哪个目录中,怎么应用却加载了一个旧版的 Jar 包等等。

本篇的 Understand Java ClassLoader.chm 文件是我根据 IBM 开发者网站上的 https://www6.software.ibm.com/developerworks/cn/education/java/j-classloader/tutorial 整理而成的。以前是用 Visual CHM 工具来制作 CHM 文件,而这个呢是用 FAR 生成的,感觉 FAR 的功能要强大些。 阅读全文 >>

Eclipse 远程调试 WebSphere Application Server (WAS)

我们用 Eclipse 开发 Web 项目时,多会用某个插件(如 MyEclipse) 来对 Tomcat 中的应用进行单步调试。而要调试 WAS 下的应用,MyEclipse 也是可以的,但在 MyEclipse 中启动 WAS 比较慢,且需要在本地安装一个 WAS。再有便捷点的方法是用 WSAD (Websphere Studio Application Developer) 或它的升级版 RAD (Rational Application Developer),它们内置了对 WAS 很好的支持,不过也需要本机安装了 WAS,WSAD/RAD 肥大的身躯自是不必说。若要让 WSAD/RAD 进行远程调试,似乎还得在Server 上安装个 IBM Agent Controller。

实际上 WAS 就支持远程调试的设置,打开它,你只需要用 Eclipse Debug 中的 Remote Java Application 功能连接到服务器上相应端口即行。设置很简单,这样的办法你甚至可以在闲时偷偷的调试一下生产环境的 WAS 应用以验证测试环境难以/无法重现的问题。具体做法如下(WAS 5.x 和 6.x 下的操作基本相同):  阅读全文 >>

Oracle 中使用 fetch bulk collect into 批量效率的读取游标数据

通常我们获取游标数据是用 fetch some_cursor into var1, var2 的形式,当游标中的记录数不多时不打紧。然而自 Oracle 8i 起,Oracle 为我们提供了 fetch bulk collect 来批量取游标中的数据,存中即是合理的。它能在读取游标中大量数据的时候提升效率,就像 SNMP 协议中,V2 版比 V1 版新加了 GET-BULK PDU 一样,也是用来更高效的批量取设备上的节点值(原来做过网管软件开发,故联想到此)。

fetch bulk collect into 的使用格式是:fetch some_cursor collect into col1, col2 limit xxx。col1、col2 是声明的集合类型变量,xxx 为每次取数据块的大小(记录数),相当于缓冲区的大小,可以不指定 limit xxx 大小。下面以实际的例子来说明它的使用,并与逐条取记录的 fetch into 执行效率上进行比较。测试环境是 Oracle 10g  10.2.1.0,查询的联系人表 sr_contacts 中有记录数 1802983 条,游标中以 rownum 限定返回的记录数。 阅读全文 >>