發表文章

目前顯示的是 十二月, 2011的文章

Vim下使用正規表示法來搜尋文字

Refernece :
1. http://blog.roodo.com/rocksaying/archives/2670695.html
2. http://caterpillar.onlyfun.net/Gossip/JavaGossip-V1/RegularExpression.htm
3. http://en.wikipedia.org/wiki/Regular_expression

        會寫這篇這個文章,主要是常常使用Vim再做搜尋特定文字或字串取代的時候,如果搜尋的Pattern沒有給的很精確的時候,常常會找錯地方或是字串取代不對的地方,所以正規表示法就很重要了,而且正規表示法在很多地方都會用到,值的花時間去學習。

目前寫的東西不夠多,以後有學到更多的話再繼續寫。


P.S.  在vim要做搜尋時請記的在記的先按[ESC]再按/


Metacharacter --------------------------------------------------------------------------------------------
這部份的資訊轉貼至Ref. 2的網站


.符合任一字元
\d等於 [0-9] 數字
\D等於 [^0-9] 非數字
\s等於 [ \t\n\x0B\f\r] 空白字元
\S等於 [^ \t\n\x0B\f\r] 非空白字元
\w等於 [a-zA-Z_0-9] 數字或是英文字
\W等於 [^a-zA-Z_0-9] 非數字與英文字




[abc]             a、b或c
[^abc]             非a、b、c的其它字元
[a-zA-Z]             a到z或A到Z(範圍)
[a-d[m-p]]     a到d或m到p(聯集)
[a-z&&[def]]     d、e或f(交集)
[a-z&&[^bc]]     a到z,除了b與c之外(減集)
[a-z&&[^m-p]]     a到z且沒有m到p(a-lq-z)(減集)
[a | b]                    a 或 b



X                          代表字元或任何pattern
X?                     X出現一次或完全沒…

Ruby with MD5 and SHA1

require 'digest/md5' require 'digest/sha1'

1. 字串 Digest::MD5.hexdigest("I LOVE NBA") $>  "d5aca67f9417c8476a488283d2d64a47"
Digest::SHA1.hexdigest "I LOVE NBA" $> "90cac378955fc7f3afd713b9ea8cab1c438b2283"
2. 檔案 Digest::MD5.hexdigest("/home/ham/test.py") $> "fc76a29fb81a2dd22143ee37ff0d2809"
Digest::SHA1.hexdigest "/home/ham/test.py" $> "08fcf94bc142b4118bb784f107aa9e161090b394"

Ruby我自己常用的小技巧

最近越來越喜歡用Ruby來寫一些小程式,以前要寫很多行的Code,現在都可以用簡單幾行的Code就可以達成了,而且現在愈學愈多程式語言之後,腦袋瓜能記的東西越來越少了,想一想還是把常用的記下來的好。


以下是我會常常用的小技巧。目前只有一點點,之後有學到新的東西會繼續加 。

官方網站的API文件 : http://www.ruby-doc.org/core-1.9.3/


1. 將字串110轉成十進位6

puts "110".to_i(base=2).to_s(base=10)

$>  6

2. 將字串1110轉成16進位E
puts "1110".to_i(base=2).to_s(base=16)
$>  e
3. 數字15傳成二進位1111
puts 15.to_s(base=2)
$> 1111

4.字串搜尋並取代
puts "ABbCD".gsub(/b/,"B")
$> ABBCD

5. 打開檔案並且一個BYTE一個BYTE讀取,並轉進陣列
data = [] f = File.open(FILE_NAME) f.each_byte {|ch| data.push(ch)}
6. 迴圈
(0..7).each { |i| print "Num #{i} "}
$> Num 0 Num 1 Num 2 Num 3 Num 4 Num 5 Num 6 Num 7
3.times {  print "H"} or "H"*3
$> HHH
7. 輸出中文字
如果你的檔案是用UTF8的話,請在檔案的最上頭加上 # -*- coding: UTF-8 -*- 如果你是用ANSI的話,請加上 (通常用Window的筆記本會存成這樣的格式,你也是可以改成utf8) # -*- coding: Big5 -*-
puts "我的最愛"
8. 陣列
data = [1,2,3] puts data.inspect $> [1, 2, 3]
data.push("a") puts data.inspect $> [1, 2, 3,"a&quo…

使用getopt函數來分析命令列參數

Reference:
http://www.gnu.org/s/hello/manual/libc/Getopt.html
http://checko.blogspot.com/2006/02/c-function-getopt.html

       最近想寫個程式來處理一些事情,但這個程式需要有一些選項來讓自己在不同的需求下,只要輸入不同的選項就能處理不同的事。之前再寫的話都是直接抓argv裏面的字串來做判斷,但是想一想還真麻煩,所幸在網路上看到有getopt的function可以用,讓自己可以少寫很多東西。以下是範例:


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 #include <stdio.h> #include <stdlib.h>#include <ctype.h>#include <unistd.h>int main(int argc,char**argv){int c,i;char*optionValue = NULL;while((c = getopt(argc,argv,"a:bc:"))!=-1){switch(c){case'a':                 optionValue = optarg;printf("Option -a\n");printf("Option a value = %s, optind = %d\n",optarg,optind);break;case'b':printf("Option -b\n");printf("optind = %d\n",optind);break;case'c':printf("Option -c\n");                 optionValue