2009年10月29日星期四

修改 linux 分区卷标相关命令

修改 linux 分区卷标相关命令
modify filesystem partition labels in linux.

package required
要安装的包
sudo apt-get install e2fsprogs
sudo apt-get install reiserfsprogs
sudo apt-get install xfsprogs
sudo apt-get install jfsutils
sudo apt-get install mtools
sudo apt-get install ntfsprogs

ext2/ext3/ext4
sudo e2label /dev/sdb1 my_label

reiserfs
sudo reiserfstune -l my_label /dev/sdb1

xfs
xfs_admin -l my_label /dev/sdb1

jfs
sudo jfs_tune -L my_label /dev/sdb1

fat16/fat32
sudo mlabel -i /dev/sdb1 ::my_label

ntfs
sudo ntfslabel /dev/sdb1 my_label

man CMD for details.
更详细的说明请看手册页。

Partitions generally need to be unmounted before you can fiddle with them, so unmount the partition of the device you want to change the label for.
卸载要操作的分区先。

2009年10月26日星期一

Emacs 的 Abbrevs 使用

缩写词是可以用于扩展的词,在文本中输入它时,会自动变为预先定义的内容。缩写词和内容需要自己定义,例如,把 foo 定义为串 find outer otter 的缩写词后,通过 f o o SPC 可以插入串 find outer otter。

Emacs 通过词的分界符(空格或标点等)判断输入的是否是一个缩写词。例如,当输入 f o o . 时,foo. 将自动被替换为串“find outer otter.”。当然,只有打开缩写子模式(M-x abbrev-mode)时,这些才有效。

缩写词的定义,可以在编辑的过程中完成。定义和内容保存在文件中,关闭子模式或 Emacs 不会丢失。缩写的定义分为全局的模式相关的两种,可以同时有一个全局定义和几个不同模式的定义。

定义缩写


C-x a g
定义一个全局缩写词,用光标前的一个或多个词作为内容,可以通过前缀参数指定词的个数;
C-x a l
同上,但是当前模式下的;
C-x a i g
和上面的命令相反,光标处的为全局缩写词,通过小缓冲输入内容;
C-x a i l
同上,但是当前模式下的;
M-x define-global-abbrev RET Abbrev RET Content RET
定义全局缩写词 Abbrev,内容为 Content;
M-x define-mode-abbrev RET Abbrev RET Content RET
同上,当前模式下的缩写;
M-x kill-all-abbrevs
删除所有缩写的定义;
一般来说,当出现需要重复输入的内容时,先输入一遍,然后执行 C-x a g 将输入的内容定义为一个缩写。通过前缀参数来设定包含的词的个数。例如,输入 find outer otter 之后,执行M-3 C-x a g foo RET,就定义了缩写词“foo”,内容为“find outer otter”。命令 C-x a l 同上,但都是当前模式下的,只在相同模式下有效。重新定义已存在的词可以覆盖原来内容。

先定义 region(通过设置 Mark),然后 C-u 0 C-x a g 可以将 region 作为缩写词的内容。

在编辑的过程中,如果先输入了缩写词,可以用命令 C-x a i g 为它输入内容。

命令 M-x define-global-abbrevM-x define-mode-abbrev 直接定义一个全局缩写词,通过小缓冲分别输入缩写词和内容。

负的前缀参数用来删除,如 C-u - C-x a g foo RETC-u - C-x a l foo RET 分别删除全局的和当前模式的 foo 定义。 M-x kill-all-abbrevs 删除所有缩写的定义,不论全局与否。

控制缩写的扩展


扩展缩写时的大小写比较有趣,会根据你的输入自动转换,例如:

  • foo -> find outer otter

  • Foo -> Find Outer Otter

  • FOO -> FIND OUTER OTTER 如果 abbrev-all-caps 是 non-nil

  • FOO -> Find Outer Otter 如果 abbrev-all-caps 是 nil


M-'
用于扩展有前缀的缩写词。
有时候可能需要扩展有一个前缀的缩写,例如,当缩写 cnst 扩展为 construction,又想要用来输入 reconstruction 。输入 recnst 不起作用的,因为没定义,在 re 和 cnst 之间用命令 M-' 就可以了。即 r e M-' c n s t SPC

C-x a e
将位点之前的缩写扩展,即使在关闭缩写子模式时也有效。
M-x expand-region-abbrevs
扩展 region 中所有缩写。
如果需要的文本恰恰就是缩写本身,不是其内容,可以用 C-q 抑制扩展,比如 foo C-q , 得到“foo,”。Undo 命令(C-_) 和 M-x unexpand-abbrev 都可以取消扩展,而且 M-x unexpand-abbrev 不会删除其后的标点。

M-x expand-region-abbrevs 用来在 region 中搜索和替换所有缩写,在已经输入了文本,但忘了开启缩写子模式的时候比较有用。

Emacs缩写词功能

尝试 Emacs 自带的缩写词功能


打开 minor-mode abbrev-mode 之后,就可以使用缩写词功能了。可以定义全局的缩写词,也可以定义只针对某一个 mode 的缩写词,这会覆盖掉同名的全局缩写词。

定义缩写词


可以分别使用 C-x a gC-x a l 来定义全局和针对某个 mode 的缩写词,他们会从 minibuffer 读取缩写形式,并把当前光标以前的一个或者几个词作为缩写词的扩展形式,可以通过 C-u 来传递一个数值参数告诉他需要使用几个词。例如,要定义“find outer otter”的缩写为“foo”,先输入“find outer otter”,然后键入 C-u 3 C-x a g f o o <RET> 即可。当用 C-u 传入参数零的时候表示使用选中的区域作为要扩展的形式。反过来,你可以先输入“foo”,然后再键入 C-x a i g 或者 C-x a i l ,通过在 minibuffer 输入扩展后的形式的方法来定义缩写词,这样的方法不用费心用 C-u 去传递参数,相比之下要方便一些。

要删除一个缩写词,只需要给 C-x a g 或者 C-x a l 传递一个负参数即可,它会让你输入要删除的缩写词。另外,还可以通过 M-x kill-all-abbrevs 来删除所有的(包括全局和局部的)缩写词。

使用缩写词


缩写词会在你键入一个不能作为单词的内容的字符的时候得到扩展,换句话说,任何可以作为单词内容的字符都可以作为缩写词的内容。

缩写词扩展的时候会保留大小写状态,例如:“foo”会扩展为“find outer otter”,“Foo”会扩展为“Find outer otter”,而根据 abbrev-all-caps 变量的设定,“FOO”会扩展为“FIND OUTER OTTER”或者“Find Outer Otter”。

在没有打开 abbrev-mode 的时候,也可以通过 C-x a e 来手动扩展光标所在出的缩写词。另外,还可以用 M-x expand-region-abbrevs 来在一个区域进行手工扩展。

假如你定义了一个缩写词“cnst”扩展为“construction”,现在你希望输入 “recnst”并让他扩展为“reconstruction”。直接输入“recnst”是不行的,这个时候 M-'(abbrev-prefix-mark) 就起作用了。输入“re”,然后键入 M-' (这个时候会出现一个连字符)接着再输入“cnst”,之后再输入空格之类的,就可以成功扩展为“reconstruction”了。

有时候不希望缩写词被扩展,这个时候只需要使用 C-q 来输入缩写词后面的那个空格或者标点符号即可。

保存缩写词定义


可以分别用 M-x write-abbrev-fileM-x read-abbrev-file 来保存和加载缩写词定义。如果没有提供文件名,他们会使用变量 abbrev-file-name 所提供的文件名,默认是 ~/.abbrev_defs 。另外,如果 save-abbrevs 不为 nil 的话,Emacs 在保存所有文件的时候(例如 C-x s 或者 C-x C-c 的时候)也会把缩写词保存到 abbrev-file-name 所指定的文件中去。

Emacs Abbrevs 缩写词

http://www.gnu.org/software/emacs/manual/html_node/emacs/Abbrevs.html

 http://lifegoo.pluskid.org/wiki/EmacsAbbrev.html#sec5

http://grid.tsinghua.edu.cn/home/liulk/wiki/emacs/EmacsFaq.html#sec-12

Emacs: how to auto-complete word

Both vim and emacs have a function to auto-complete words. For example, in emacs, type "M-/" then it will help you automatically complete the word currently you are typing in. This specially is useful as programming.

Also, I find a good file to compare commands in vim and emacs. In order to avoid the original page is dead, I post it here for reference. The original address is: http://karl-voit.at/vim-emacs-cheatsheet_of_freezing_hell.txt

http://karl-voit.at/vim-emacs-cheatsheet_of_freezing_hell.txt



,----
| emacs-stamp: Time-stamp: <2006-11-07 23:40:22 karl>
| vim-stamp: Latest change: Wed Oct 15 09:43:51 CEST 2008 (,L)
| .... whichever comes last *ggg*
|
| Title: vim7-emacs21-cheatsheet of freezing hell
| ... tries to combine the two editors of choice
|
| Author: Karl Voit
| Purpose: learning emacs21 _and_ vim (for myself)
| License: Creative Commons http://creativecommons.org/licenses/by/2.5/
| Status: constantly modified, updated, and expanded
`----

================================================================================
Editor shortcuts: Emacs and vim vim emacs21
================================================================================

exit :q C-x C-c
save :w :w! C-x C-s
save as :w

save and exit :wq (or: ZZ)
exit without saving :q! (or: ZQ)

open file :e(dit) file C-x C-f
open file read only C-x C-r
re-read file (discard changes) :e(dit)!

edit file under cursor gf (goto file)

undo last changes u (or: C-_) C-_
undo one change :u(ndo)
undo latest changes on current line U
redo C-r

repeat last change .

append text after cursor a
append text after EOL A

insert text after cursor i
insert text before first non-whitesp. I

insert line below cursor and insert o
insert line above cursor and insert O

join current line and next line J

mark char begin v (column: C-v|C-q) C-Space
mark line begin V

restore last selection gv

copy marked part y M-w
paste marked part p C-y "yank"
cut marked part c C-w
delete marked part d

delete char x DEL
delete line dd (or: :d)
copy current line yy (or: Y)
delete to end of word cw (change word) M-d
delete current word caw
delete to EOL D C-k

toggle overwrite/insert mode INS (or: R) M-x overwrite-mode
replace current char with r

repeat next X times X C-u X

complete word M-/
complete word backward C-P M-/
complete word forward C-N M-/

cancel C-c C-g

redraw C-l

file info C-g
file info (verbose) g C-g

set auto indent :set ai M-x auto-fill-mode
:set textwidth=0

execute shell code :r(ead) !

show whitespaces :set list

insert :r(ead) M-x insert-file

--------------------------------------------------------------------------- Help

show help of cmd XY :help XY
show man-page of current word K
grep help :helpg foobar

------------------------------------------------------------------------ Buffers

close buffer C-w c :clo(se) C-x k
close all buffers but current C-w o :on(ly)

open file for writing C-x C-f
open file for reading C-x C-r

change to previous buffer C-^ C-6 C-x b
change to buffer number <12> <12> C-^ <12> C-6 C-x b
:b <12>
split vertically C-w s :sp(lit)
split horizontally C-w v :vs(split)

duplicate buffer :new

change to (upper) high buffer C-w h
change to lower buffer C-w l

list buffers :ls

edit in new tab :tabe(dit) fileA
change to next tab gt
change to previous tab gT


--------------------------------------------------------------------- Navigation

goto line <12> <12>G M-x goto-line <12>

up k C-p
Cursor movements left right h l C-f C-f
down j C-n

buffer begin 1G gg M-<
buffer end G M->

line begin ... end 0 ... $ C-a ... C-e
line begin (first non-whitespace) ^

word next w M-f
word last b M-b

sentence previous ( M-a
sentence next ) M-e

paragraph begin { M-{
paragraph end } M-}

goto last place C-o
goto next place (if any) C-i

goto begin of last marked part '<
goto end of last marked part '>

page up C-b M-v
page down C-f C-v

1/2 page up C-u
1/2 page down C-d

scroll one line down (keep cursor) C-e
scroll one line up (keep cursor) C-y

remember position (as p) m p C-x r m
jump to position (p) ` p C-x r b
jump to last marked position ``
jump to last place edited `.
list all marked positions :marks

place current line in the center z. C-l "locate"

------------------------------------------------------------ Search and replace

current line: goto character X fC
current line: goto character X backw. FC
current line: go before character X tC
current line: go before char. X backw.TC

activate incremental search :set incsearch
search incremental (if activated) / C-s
search incremental backwards (if activated) ? C-r
repeat search n C-s or C-r
repeat search in other direction N

replace s/foo/bar(/gci) M-%

search word under cursor *
search word under cursor backward #
search local variable under cursor gd
search buffer variable under cursor gD

search correspondent brace/bracker/.. %

unhighlight the search patterns :noh

search for regular expressions /REG C-M-s
repeat search for reg. expr. n C-M-s
search in other directory for reg.ex. N C-M-r

----------------------------------------------------------------------- Spelling

activate spell checking :set spell
change spelling dictionary :set spelllang=de
search for next misspelled word ]s
show correction proposals z=
add as correct word zg
add as incorrect word zf

--------------------------------------------------------------------- Formatting

lowercase current word :map l viwuW M-l
capitalize current word :map c viwu~W M-c
uppercase current word :map u viwUW M-u
toggle case of current word :map t viw~W
toggle case of char under cursor ~

quote text C-c C-q
format line
format paragraph gqap M-q
format whole document gggqG

shift marked lines to left <<
shift marked lines to right >>
set shiftwidth :set shiftwidth=4


------------------------------------------------------------------------- Macros

begin recording (name: foo) qfoo C-x (
end recording q C-x )

execute macro foo @foo C-x e
repeat macro execution @@

edit macro "ap
end edit macro

save macro

------------------------------------------------------------------------ Columns

mark column begin C-v (Windows: C-q) C-space

set width mark to longest line $

copy column(s) "*y
paste column(s) p C-x r y "yank"
cut column(s) d C-x r k "kill"

insert column text (foo) (visual:) Ifoo ESC C-x r t foo

-------------------------------------------------------------- Folding / Outline

hide all zC C-c C-t
show all zO C-c C-a
toggle hide/show all zi

hide this zc C-c C-d
show this zo C-c C-s

goto previous zk C-c C-p
goto next zj C-c C-n

------------------------------------------------------------- Special Characters

enter carriage return C-q ENTER C-q ENTER
enter newline C-q C-j C-q C-j
enter spoiler character ^L C-q C-l C-q C-l

------------------------------------------------------ Compare/merge differences

start file A and B in compare mode vimdiff A B emerge A B

emacs: goto fast-mode (C-c C-c doesn't have to be used) C-c C-c f
emacs: goto edit-mode e

next difference ]c (C-c C-c) n
previous difference [c (C-c C-c) p
goto difference X C-u X j

change to left file (higher) C-w h
change to right file (lower) C-w l

take this version :[range]diffpu(t) dp
take other version :[range]diffg(et) do

take A-version (C-c C-c) a
take B-version (C-c C-c) b

quit without saving the merge C-]
recenter buffers l

emacs: http://www.cs.cmu.edu/cgi-bin/info2www?(emacs)Merge%20Commands

---------------------------------------------------------------- Version Systems

vim: install vcsnursery from http://www.vim.org/scripts/script.php?script_id=1898

commit changes :VCSCommit C-x v v
show differences between versions :VCSVimDiff C-x v =
show log of current file :VCSLog C-x v l
revert changes to most recent version :VCSRevert C-x v u
update current file from repos :VCSUpdate

add file to repos :VCSAdd C-x v i
show annotations :VCSAnnotate
delete file (incl. from repos) :VCSDelete
show difference to previous version :VCSDiff
view a certain version :VCSReview 42 C-x v r
show detailed infos :VCSStatus


================================================================================
vim specific shortcuts:
================================================================================


================================================================================
Own vim macros
================================================================================

" move line before boxquote into title field of boxquote
map ,vkbqt kDj6lp0

" remove/delete trailing whitespace:
nmap ;tr :%s/\s\+$//
vmap ;tr :s/\s\+$//

"kill quoted sig
map ,kqs G?^> -- $d}

" change subject (Subjectaenderung) (Source: Michael Prokop)
map ,vkcs :set nohlsearch
\:1,/^Subject: /g//s/^\(Subject: \)\(Re: \)\=\(.*\)$/
\\1 (was: \3)/9i

" simple quote (insert quote after this line)
map ,vksq 0jikki

" quote between line (insert quote in between the line)
map ,vkqbl i0kxkkxjxi

" update timestamp (make sure that "set paste" is NOT set
iab Tue Jul 31 13:03:52 CEST 2007 =strftime("%a %b %d %T %Z %Y")
" map ,L 1G/Latest change:\s*/e+1CYDATE
map ,L 1G/Latest change:\s*/e CYDATE

" voit 20070306:
" ESC-c ... capitalize current word (and goto next word)
map c viwu~W
" ESC-l ... lowercase current word (and goto next word)
map l viwuW
" ESC-u ... uppercase current word (and goto next word)
map u viwUW



FIXXME: Bereichsangaben

" Using (g)vim to colorize sourcecode (from: http://barnson.org/node/295#comment-26758)
" used here: Visual Basic syntax
:cal SetSyn("vb")
:syntax on
:set background=light
:runtime! syntax/2html.vim
ggVG (to select all in this top frame)
"+y (to copy to clipboard)


...................................................................
...................................................................
...................................................................
...................................................................
...................................................................
N O T E S F O L L O W I N G
...................................................................
...................................................................
...................................................................
...................................................................
...................................................................

Svens Vortrag:
------------------------------------------------------------------------- Suchen


------------------------------------------------------ Eingabe von Sonderzeichen

Eingabe über ASCII-Nummer:
ß 223 ä 228 ö 246 ü 252

Zwei-Zeichen-Kombination:
Digraph Input! a + : -> ä

automatische Einrücken (indenting)
Clipboards/Register
Markieren von Text
von Position bis Position
zeilenweise (block)
als Rechteck -> Tabelle

Zeile? DOS/Windows, Unix, oder Mac?
Automatische Erkennung
Beliebige Wahl

%page
Anzeige - Grundlegend

Aktuelle Position des Cursors (Lineal,ruler)

%pause
ASCII-Wert von Zeichen

%pause
Sichtbarmachung von speziellen Zeichen
(TABs, trailing spaces)
:set list -> schon oben drinnen

%pause
geteilte Fenster (horizontal,vertikal)
-> TextKopieren, Vergleiche

%page
Anzeige - Fortgeschritten

Syntax Coloring / Highlighting
%pause
Achtung: ersetzt keinen Parser!

%pause
Struktur der Datei anzeigen - Baumstruktur
Text verstecken
Syntax dependant
Kommandos zum Einklappen und Verstecken

%page
Abkürzungen - Abbreviations

%pause
einfache Wortexpansion:
LS -> Leutheuser-Schnarrenberger

%pause
mehrere Worte:
LT -> Linux-Tag Chemnitz

%pause
mehr als nur Buchstaben:
function_mit_viel_bedeutung(*par1,par2)
* = neue Cursorposition

%pause
mehrzeilige Floskeln:

Sehr geehrter Herr Spammer..
..Aufnahme ins Killfile..
Gründe: [Liste]
Mit freundlichen Grüßen

%page
Goodies

Autosave
Backup files
Compiler
Filtering
Sessionfile
Syntax Input

%page
Grenzen - Limits

Endlicher Speicher -> Grenzen

Dateigröße
Dateinamenlänge
Displaybreite

Zeilenlänge
Zeilenanzahl

Bufferanzahl
Registergröße

,----
| 2do
`----

tabs (vim7)

retab + ersetzen:
:set tabstop=4
:set expandtab
:%retab

^M herauslöschen

align-current


query option value :set OPTION?

folding + examples (emacs-2do-list and vim-2do-list)

[email protected] ~ % grep boxes .vimrc
" 040420 introduced history 8-) and slightly modified 'boxes'-stuff
" 030219 VBlockquote.vim - like the tool "boxes" works ;-)
" 030219 Call boxes - with some funny box-styles ;o)
map ;0 :'<,'>!boxes
map ;1 :'<,'>!boxes -d boxquote
map ;2 :'<,'>!boxes -d peek -a c -s 40x5
map ;3 :'<,'>!boxes -d c-cmt
map ;4 :'<,'>!boxes -d dog -a c
map ;5 :'<,'>!boxes -d simple -a
jr
map ;6 :'<,'>!boxes -d headline
--> Test! (FIXXME)
--> boxes = extra-tool!

"boxing" text C-c q
title of box C-c w

Snippets einfügen wie zB :
:he :iabbrev
:he mapmode-i
(Vim7: C-x C-o)

Ranges: . .+3 % ,. .,$


.........................................................

,----
| notes from a former talk:
`----
:set tw=50 ... set texxt width
map gqip ... macro setzen
:set ft=html
:set paste ... Einfuegen ohne Umformatierung
:set nopaste ...
:set sw ... Option vervollstaendigen lassen
:set sw= ... Option plus Wert vervollstaendigen lassen
:set listchars=tab:»·,trail:·,,eol:$ ... wie sollen list-Elemente usw visualisiert werden?
:w datei:.neu ... Kopie mit Anhaengsel ".neu" erstellen, Buffer bleibt bei "datei"
:!ls -l % ... shell-Kommando ls aufrufen (%=aktueller Buffername)
:! ... letzter Befehl, der mit "!" begonnen hat
C-w n ... C-w=Fensterbefehl, n=new
C-w C-r ... unterster Buffer oben einfuegen (rotate)
:help C-v C-w ... show help on windows-commands (C-v nur um C-w einzugeben)

vimdiff
:diffget ... Aenderungen in den Buffer uebernehmen

%%% vim: ft=mgp ai noet ts=2

------------------------------------------
Emacs und ispell:

;; User-Dictionary ohne Nachfrage speichern
(setq ispell-silently-savep t)
(autoload 'flyspell-mode "flyspell" "On-the-fly spelling checking" t)
(autoload 'flyspell-mode "flyspell" "On-the-fly ispell." t)
(setq ispell-program-name "aspell")

;; Initialize spell checking
(setq-default ispell-program-name "aspell")
(set-default 'ispell-change-directory "ndeutsch8-15")
(set-default 'ispell-local-dictionary "ndeutsch8-15")
;; ========================
;; ISPELL
;; ========================
(require 'ispell)
(add-to-list 'ispell-dictionary-alist
'("ndeutsch8-15"
"[a-zA-Z\304\326\334\344\366\337\374]"
"[^a-zA-Z\304\326\334\344\366\337\374]"
"[']" t
("-C" "-d" "german")
"~latin1" iso-8859-15))

;; ========================
;; ISPELL End
;; ========================

;; ========================
;; FLYSPELL
;; ========================
(add-hook 'flyspell-mode-hook
(function (lambda ()
(setq ispell-local-dictionary "ndeutsch8-15")
)))


M-X change-ispell-dictionary

-----------------------------------------------------------
emacs und LaTeX

Added in file c:\.emacs

(require 'tex-site)
(setq tex-dvi-view-command "C:\texmf\miktex\bin\yap.exe")
(custom-set-variables
;; custom-set-variables was added by Custom -- don't edit or cut/paste it!
;; Your init file should contain only one such instance.
'(TeX-output-view-style (quote (("^dvi$" "^pstricks$\\|^pst-\\|^psfrag$" "%(o?)dvips %d -o && gv %f") ("^dvi$" "^a4\\(?:dutch\\|paper\\|wide\\)?\\|sem-a4$" "%(o?)xdvi %dS -paper a4 %d") ("^dvi$" ("^a5\\(?:comb\\|paper\\)?$" "^landscape$") "%(o?)xdvi %dS -paper a5r -s 0 %d") ("^dvi$" "^a5\\(?:comb\\|paper\\)?$" "%(o?)xdvi %dS -paper a5 %d") ("^dvi$" "^b5paper$" "%(o?)xdvi %dS -paper b5 %d") ("^dvi$" ("^landscape$" "^pstricks$\\|^psfrag$") "%(o?)dvips -t landscape %d -o && gv %f") ("^dvi$" "^letterpaper$" "%(o?)xdvi %dS -paper us %d") ("^dvi$" "^legalpaper$" "%(o?)xdvi %dS -paper legal %d") ("^dvi$" "^executivepaper$" "%(o?)xdvi %dS -paper 7.25x10.5in %d") ("^dvi$" "^landscape$" "%(o?)xdvi %dS -paper a4r -s 0 %d") ("^dvi$" "." "%(o?)xdvi %dS %d") ("^pdf$" "." "\"c:\\Programme\\Adobe\\Acrobat 6.0\\Reader\\AcroRd32.exe\" %o") ("^html?$" "." "netscape %o")))))
(custom-set-faces
;; custom-set-faces was added by Custom -- don't edit or cut/paste it!
;; Your init file should contain only one such instance.
)


Change target to PDFLaTeX: C-c C-t C-p
Compiled using C-c C-c


=== [ ENDE ] === ------------------------------------------------------------------------------
%%% Local Variables:
%%% mode: outline
%%% outline-regexp: "\\(\\[\\([1-2][0-9][0-9][0-9][0-1][0-9][0-3][0-9]\\)?\\]\\[\\([1-2][0-9][0-9][0-9][0-1][0-9][0-3][0-9]\\)?\\]\\(\\[.+\\]\\)? .*\\)\\|\\(^=== \\[ .* \\] ===.*\\)"
%%% eval: (auto-fill-mode -1)
%%% eval: (flyspell-mode -1)
%%% eval: (end-of-buffer)
%%% eval: (hide-body)
%%% emerge-set-combine-versions-template: "%a\n%b\n"
%%% End:
%%% OLD-outline-regexp: "\\(\\[\\([1-2][0-9][0-9][0-9][0-1][0-9][0-3][0-9]\\)?\\]\\[\\([1-2][0-9][0-9][0-9][0-1][0-9][0-3][0-9]\\)?\\]\\(\\[\\(maggie\\|lisa\\)\\]\\)? .*\\)"
%%% OLD-outline-regexp nur "[][] Text": "\\(\\[\\([1-2][0-9][0-9][0-9][0-1][0-9][0-3][0-9]\\)?\\]\\[\\([1-2][0-9][0-9][0-9][0-1][0-9][0-3][0-9]\\)?\\] .*\\)"
%%% OLD-outline-regexp inkl. Sterne als Items: "\\(\\[\\([1-2][0-9][0-9][0-9][0-1][0-9][0-3][0-9]\\)?\\]\\[\\([1-2][0-9][0-9][0-9][0-1][0-9][0-3][0-9]\\)?\\] .*\\)\\|\\(*+ \\)"

Linux工具箱之 使用 md5sum, uniq 查找重复文件

硬盘越来越大,应用越来越多,数据浪费也越来越严重
或者当合并数据的时候,是不是有重复的资源呢?人工查,太累了吧!

总结了几个命令,就可以轻易找到重复的文件,呵呵

例如:
查找当前目录里重复的,大于10K的文件

# find . -size +10k \! -type d -exec md5sum '{}' ';' | sort | uniq -D -w 32

解释一下:
第一个关键点是md5sum, 它可以计算每个文件的唯一校验码,这样就不像iTunes那么傻,根据文件名来识别重复文件。
uniq是个很好的对重复行剔除和显示的工具,也是另外一个关键点

引申一下:
挂载别的计算机共享文件分区,然后再查找相同文件
#mount -t smbfs -o codepage=cp936,iocharset=utf8,username=帐户,password=密码 //192.168.0.2/D$ /mnt/d

利用Cygwin实现在Windows相同功能

WordPress 新手入门: 优化 WordPress 设置

现在你已经安装好了 WordPress ,最棒的博客平台之一,现在还需要有一些事情需要进行设置和修改,以达到最好的效果。

我现在开始这个叫做“WordPress 新手入门”的新系列,主要帮助新来的网友,如何优化他们的 WordPress 。尽管我想覆盖尽可能多地内容,但仍然难免有所纰漏,因此如果你有任何建议,请不吝赐教。

这个指南是基于 WordPress 2.8 版本,因此如果你用的之前的版本,内容或许有所差异。

在本文中,我主要讲一些 WordPress 安装完成之后,需要修改的内容。
安装之后:修改管理员密码

初始的管理员密码是随机生成的,因此你可能会想要修改一个容易记忆的密码。
创建一个具有管理员权限的用户

尽管并非必要,但创建一个具有管理员权限的新用户总是好的。再说强调,这并非必须的。但我总是不喜欢用 admin 用户撰写博客。
修改博客名称和副标题

你的博客是独一无二的,或许你会想要设置一个好的名称和副标题。在【Settings(设置)】->【General(常规)】 里进行更新。
禁止任何人注册

除非你打算允许别人在你的站点注册,一般不需要这个功能。在 【Settings(设置)】->【General(常规)】里,取消“Anyone Can Register(任何人均可注册)”,并保存。
保存你的时区,日期和时间格式

同样在常规设置页,设置你的国家的时区,并保存适合你的日期时间格式。
配置撰写设置

在 【Options(选项)】->【Writing(写作)】选项里,配置撰写博客的面板,以及其他相关的字符转换和修正无效的 XHTML 等。

如果你准备通过桌面软件或者其他编辑器来撰写博客,你应该设置允许远程发布,否则你无法通过外部的工具和设备来发布博客。

如果你准备通过 email 发布博客,你也可以在此页面进行设置。
添加 Ping 服务器

当你撰写一篇新的博客之后,很多服务并不能自动获知。然而,WordPress 允许用户写好文章后使用自动 ping 这些服务。

在 【Setting(设置)】->【Writing(撰写)】选项页,你可以输入 ping 服务列表,WordPress 会在你发布新的文章后自动去 ping 。这里可以获取 WordPress 自动更新服务的列表。
设置阅读选项

默认的情况下,WordPress 会在你的主页显示最新的文章。不过,你也可以设置首页显示一篇静态页面。要在【Setting(设置)】->【Reading(阅读)】里修改显示给访问者的默认页面。

在这个页面里,你还可以修改博客每页显示的文章数,以及在 RSS feed 里输出的文章数。

你还可以在这里确定 feeds 里输出的是全文还是摘要,我的建议是输出全文。
评论,引用,跟踪以及其他

当你写一篇新文章的时候,有时候要包含其它网站的链接。WordPress 允许你以 trackback(引用通知) 或 pingback(跟踪通知) 的形式自动通知外部博客。

此外,如果其他的博客连接到你,WordPress 允许别人向你的博客发送引用通知和跟踪通知。

如果你不允许别人向你发送此类消息,可以在【Settings(设置)】->【Discussions(讨论)】中禁用此功能。

你还可以设置是否允许别人进行评论、评论显示的相关设置,以及评论者的头像等信息。
设置图片媒体选项

当你在博客中上传图片的时候,WordPress 会自动调整图片尺寸以正确显示。如果你想要修改缩略图和其他图片的尺寸,可以通过【Settings(设置)】->【Media(媒体)】设置。
隐私,禁止搜索引擎抓取你的博客

如果你想将博客作为私人空间,不打算被搜索引擎所抓取,WordPress 提供了一个选项可以帮你做到。在【Settings(设置)】->【Privacy(隐私)】里可以修改相关设置。
设置永久链接

WordPress 是个非常棒的博客平台,它允许用户设置博客链接 URL 的形式。

优化过的链接 URL 有利于搜索引擎优化,如果你想要修改你的博客的永久链接形式,可以在【Settings(设置)】->【Permalinks(永久链接)】里进行修改。

除了可供选择的链接形式,你还可一是用标签自定义永久链接结构,你可以izai这里找到永久链接结构里可以使用的标签参数:WordPress Codex document for custom tags.
图片上传位置和网址

一个经常被忽视的设置是在【Settings(设置)】->【Miscellaneous(杂项)】页面里,在这个页面里可以设置默认的图片上传位置,以及图片的网址。

比如,我使用 cache.techie-buzz.com 来代替 techie-buzz.com 作为图片的网址,就是在这里进行设置。

http://wpchina.org/optimizing-wordpress-settings-547/

切尔诺贝利核事故20周年纪念

http://news.sohu.com/s2006/06qenbl/

  1986年4月26日凌晨1时23分,切尔诺贝利核电站4号反应堆发生爆炸。8吨多强辐射物质混合着炙热的石墨残片和核燃料碎片喷涌而出。据估算,核泄漏事故后产生的放射污染相当于日本广岛原子弹爆炸产生的放射污染的100倍。
  消防队比尔昆回忆说,赶到核反应堆附近时,他们看到的只有火光。““反应堆的顶部已经被炸翻,里面的沥青、混凝土以及石墨都被炸了出来,”比尔昆说,“石墨落到哪个地方,它就把那里烧成火海。”

  核泄漏过程持续了10天,核反应堆泄漏出的大量锶、铯、钚等放射性物质散到乌克兰、白俄罗斯、俄罗斯以及其他欧洲国家。事故发生20天后,核反应堆中心的温度仍然高达摄氏270度。
  “绿色和平”组织本月18日说,20年前的苏联切尔诺贝利核电站事故造成致癌死亡人数10倍于联合国作出的官方估计,全球共有20亿人口受切尔诺贝利事故影响,27万人因此患上癌症,其中致死9.3万人…

  进入隔离区,死气沉沉的感觉越发强烈。竖着大烟囱的核反应堆像停泊在船坞的笨重汽船,毫无生机;市政大院游泳池上时钟的指针已冻结了20年,这里的时间在1986年4月26日凌晨1:23凝固了;废墟上时不时能看到生锈的铁牌,上面“为了下一代保护环境”的字样还清晰可见。
  这里早已成为一座“死亡之城”,只有每晚仍会忠实站岗的街灯带来一点温暖,昏黄的灯光静谧的街道,诉说着幽幽的故事…

  当柳德米拉终于赶到医院,她被眼前看到的景象吓住了。“那完全不是我的丈夫,是个肿胀的脓包,”身为护士的柳德米拉心里很清楚,丈夫的病已没有希望了。
  核泄漏事故发生5小时后,弗拉基米尔死亡。两天后,弗拉基米尔被埋在切尔诺贝利附近的一处公墓。一年之后,切尔诺贝利核泄漏事故中最先遇难的核电站工作人员和消防员被转移在莫斯科一处公墓内,安葬他们用的是特制的铅棺材…

  切尔诺贝利给人的第一印象是令人心动的美景:乌克兰北部清晨的薄雾中,一抹晨光穿透茂密的森林。银色的白桦树亭亭玉立,树叶正渐渐变成金黄;一排排松树郁郁葱葱,本该是采蘑菇的人流连忘返的天堂。
  但这个村子却没有房屋,远远看去,只有一些超出地面少许的土墩,就像一个规模庞大的墓地。但这不是人类的墓地,而是房屋的坟场。

  在核发电站附近,一个受到核辐射的池塘里,超过两米长的鲇鱼正在黄色的池水中游动,巨大的身躯看上去就像是一架潜水艇。记者从桥上丢下了大块大块的面包,它们游上来很快一抢而光,样子很是吓人。

  在切尔诺贝利附近,随处可见红艳艳的野生苹果,普利佩雅特的中心也一样,树下的落果给这里铺上了一条深红的地毯。核辐射,就像白雪公主那个可恶的后妈,给这里所有的苹果都下了毒。如果谁把这里的苹果咬上一口,就会比白雪公主睡得更久,可能3万年也醒不过来。

  事故发生之后,有300多人偷偷跑回了自己的家园。这种行为是违法的,但政府对此睁一只眼闭一只眼,甚至还为他们开通了公共汽车,以方便他们去购物、看医生。

  切尔诺贝利核电站的“石棺”是在当时发生爆炸后,为防止核泄漏继续蔓延而用水泥浇铸成的,切尔诺贝利核电站4号反应堆的融化内核完全被包裹在“石棺”里。“石棺”设计寿命长达50年,但自进入上世纪90年代初便出现种种问题,专家们不得不将这个预期降低为20年。

  乌克兰官员称,他们即将启动一项工程———“新安全封闭”计划,取代当时建造的权宜掩体。乌克兰官员称,该项目计划于明年启动。这个耗资11亿美元的加固型装置其实是建造一个巨大钢棚—————高108米、宽250米、长150米,建成后的这个钢棚可以将整个4号反应堆包裹。据称,这样一来,该地区可以安全度过100年。

  拱形建筑物将在距离“石棺”比较远的地方进行组装,旨在最大程度减少工作人员遭遇核辐射的危险。当这两个半拱形建筑物合在一起时,有望达到“天衣无缝”的效果,这样最终会为切尔诺贝利核电站附近的居民提供最为安全的保障。
  “方舟”不仅可以继续“捂住”放射性物质,防止其“四处逃逸”长达百年时间,还在更大程度上有利于研究人员拆除封存在“石棺”之下的核原料,然后将其转移至更为安全的地带进行可靠性处理,预计这样的转移过程将耗时半个世纪。

结语:切尔诺贝利是全球公共议程的重要符号。因为核电站不出问题则已,一出问题就足以造成大规模毁灭性伤害。尽管核泄漏的危机难以排除,但人类从来没有停止发展核技术的步伐。关键的问题是我们如何防范此类事故的再度发生,并且对降低核事故的伤害展开研究。