日本拍回來的照片將近一千張,每張都是2048x1536的解晰度,想放到flicker或Picasa 又太佔空間,想到將它們縮到 800x600.不可能一張一張來,找了個批次改變圖檔大小的指令:
find . -iname "*.JPG" | xargs -l -i convert -resize 800x600 {} ../small/{}
執行前要在圖檔所在目錄的同一層先建一個 small 目錄才能讓轉出來的小檔案放到該目錄. 當然,重點是要有 convert 這個 ImageMagick 工具指令檔,它使用 OpenMP 可以同時轉多個檔.速度是很快的,我的CPU 四核心 都用上了!
2010/08/11
2009/03/30
Ubuntu 中可用的原始碼轉html工具
寫部落格有時候寫到一些技術文需要附上程式碼,常常看別人網頁中有語法高亮度顯示(syntax highlight),看起來就很美觀。在 Ubuntu (Linux)中應該也有這類工具才對,使用Synaptic (套件管理程式)搜尋了一下列出了幾個供大家參考:
code2html
最簡單的用法:code2html test1.c test1.html
第一個參數是原始檔名,第二參數是轉換後的 html 檔名,後面再加一個參數 -n 可在每行前面加入行號,如未指定語言,它會自動判斷。
syntax highlighted by Code2HTML, v. 0.9.1
轉換結果會包含完整的 html tag及多幾行不必要的 created by 資料。請自行刪除。
source-highlight
最簡單的用法:source-highlight -i Hello.java -o test1.html
語法: -i 表示 input file 後面跟著要轉換的原始檔名
-o 表示 output file 後面跟著轉換後的 html 檔名
-n 表示 每行前面加入行號(預設為前補0)
webcpp
最簡單用法:webcpp infile outfile
參數一為原始檔名,參數二為輸出 html 檔名,後面可再加一個 -l (line number)
讓每行前面加入行號。
以上三種都支援多種語言。 單獨輸入 -h 可以顯示所有參數用法。
如果要網路線上轉換可以使用 http://tohtml.com/ ,還挺好用的。
code2html
最簡單的用法:code2html test1.c test1.html
第一個參數是原始檔名,第二參數是轉換後的 html 檔名,後面再加一個參數 -n 可在每行前面加入行號,如未指定語言,它會自動判斷。
/* test1.c
*/
#include <stdlib.h>
#include <stdio.h>
int main()
{
printf("Hello, World !\n");
return 0;
}
syntax highlighted by Code2HTML, v. 0.9.1
轉換結果會包含完整的 html tag及多幾行不必要的 created by 資料。請自行刪除。
source-highlight
最簡單的用法:source-highlight -i Hello.java -o test1.html
語法: -i 表示 input file 後面跟著要轉換的原始檔名
-o 表示 output file 後面跟著轉換後的 html 檔名
-n 表示 每行前面加入行號(預設為前補0)
/*轉換後不含 html tag,可以直接貼上使用。
* Hello.java
*/
import java.util.*;
import java.io.*;
public class Hello
{
public void print()
{
System.out.println("Hello");
}
public static void main(String [] argv)
{
Hello hello = new Hello();
System.out.println("Hello ! Java");
hello.print();
}
}
webcpp
最簡單用法:webcpp infile outfile
參數一為原始檔名,參數二為輸出 html 檔名,後面可再加一個 -l (line number)
讓每行前面加入行號。
以上三種都支援多種語言。 單獨輸入 -h 可以顯示所有參數用法。
如果要網路線上轉換可以使用 http://tohtml.com/ ,還挺好用的。
2008/05/31
gdb xxgdb DDD cgdb kdbg Linux debug 除錯工具心得
在Linux 中C語言寫程式,如果要除錯就沒有Windows 平台那麼方便的IDE開發環境可用.其實其它 UNIX like 如 SCO UNIX, AIX, BSD ... 也是差不多的情形. 但至少還有 gdb 可用, 雖然它是命令列工具,但功能強大. 有興趣的人可以參考 jserv 的gdb介紹工具. 以下整理出自己學習的簡單筆記:
編譯出含除錯資訊的執行檔
gcc -g -o gcc1 gcc1.c
使用 gdb 除錯
gdb gcc1 (gcc1 為示範用的執行檔名)
設定中斷點
b main # 表示 breakpoint 在 main()
b 10 # 表示 breakpoint 設在第 10 行
列出程式碼
l # list 的第一個字母 L
執行下一行 (單步執行)
n # next
執行到一下個中斷點或結束
c # continue
單步執行, 如果有函數會進入
s # step
印出變數值
p # print
xxgdb 是gdb 的圖形介面版, 用法一樣 :
xxgdb gcc1
gdb, xxgdb 都中文顯示都沒有問題. 但換成 DDD 就不行. 其實 gdb 就很夠用了. 尤其是擅長使用鍵盤的人.
另外還有一個 cgdb , 可以將它視為文字模式gdb 加強版, 在除錯過程中上半部視窗可以同步顯示正在執行的程式碼.

cgdb 的缺點是中文會有亂碼. 使用 gdb 配合 -tui 參數有異曲同工之妙.
gdb -tui gcc1
最後壓軸上場的是 kdbg , 不再多說 看圖 :

以上這些除錯工具只有 Kdbg 安裝完會出現在 Ubuntu 應用程式>軟體開發 選單中, 其它的似乎在選單都找不到, 只好到終端機下自行下指令 gdb, ddd, cgdb, xxgdb 了. 其實, 這些工具的源頭還是gdb, 它們只是前端文字或圖形介面. 簡單一點的用 gdb, 喜歡可同步看source code 選 cgdb, 圖形介面的選 kdbg.
回想起十年前在 SCO UNIX 上寫 C 程式只能用 printf 寫 standard output 或是寫到檔案, 執行完再用 log 檔除錯. 那真是件沒效率的事, 如果能有 gdb 就好了.
編譯出含除錯資訊的執行檔
gcc -g -o gcc1 gcc1.c
使用 gdb 除錯
gdb gcc1 (gcc1 為示範用的執行檔名)
設定中斷點
b main # 表示 breakpoint 在 main()
b 10 # 表示 breakpoint 設在第 10 行
列出程式碼
l # list 的第一個字母 L
執行下一行 (單步執行)
n # next
執行到一下個中斷點或結束
c # continue
單步執行, 如果有函數會進入
s # step
印出變數值
p # print
xxgdb 是gdb 的圖形介面版, 用法一樣 :
xxgdb gcc1
gdb, xxgdb 都中文顯示都沒有問題. 但換成 DDD 就不行. 其實 gdb 就很夠用了. 尤其是擅長使用鍵盤的人.
另外還有一個 cgdb , 可以將它視為文字模式gdb 加強版, 在除錯過程中上半部視窗可以同步顯示正在執行的程式碼.

cgdb 的缺點是中文會有亂碼. 使用 gdb 配合 -tui 參數有異曲同工之妙.
gdb -tui gcc1
最後壓軸上場的是 kdbg , 不再多說 看圖 :

以上這些除錯工具只有 Kdbg 安裝完會出現在 Ubuntu 應用程式>軟體開發 選單中, 其它的似乎在選單都找不到, 只好到終端機下自行下指令 gdb, ddd, cgdb, xxgdb 了. 其實, 這些工具的源頭還是gdb, 它們只是前端文字或圖形介面. 簡單一點的用 gdb, 喜歡可同步看source code 選 cgdb, 圖形介面的選 kdbg.
回想起十年前在 SCO UNIX 上寫 C 程式只能用 printf 寫 standard output 或是寫到檔案, 執行完再用 log 檔除錯. 那真是件沒效率的事, 如果能有 gdb 就好了.
2008/02/17
shell 中運用date 指令取得日期字串
工作上會在SunOS 上寫一些shell script 來進行系統維運.常覺得如果要計算日期或取得前一天日期字串很不方便,當然可以運用Perl ,但是寫出來的script 會變得不簡潔.但在 Linux 中的 GNU 版 date 指令卻可以達成.試了幾個好用的參數與用法,記錄起來以後就用得到.
取得今天的日期與時間字串 (這是最常用的方法,單引號可以省略)
date '+%Y%m%d'
執行結果:20080217
取得時間:
date '+%H:%M:%S'
執行結果:17:50:49
取得昨天日期
date -d '-1 day' 或是 date -d '1 day ago'
配合格式變成 date +%Y%m%d -d '-1 day'
取得前天日期
date -d '-2 days ago' 也可以用 date -d '-2 day' 比較簡潔
取得明天日期
date -d '1 day'
取得上個月日期
date -d '-1 month'
取得上週同一天(七天前)日期
date -d '-1 week'
年月日的參數可以類推.
真的比SunOS 的版本好用太多.這些用法其實在 man page 中也找不到.可以改用 info date 查詢.info 中有詳細的說明.
2008/02/14
sort 排序目錄下的檔案大小
今天為了工作上將檔案較大的log file找出來竟然浪費不少時間,請了Google 大神一找其實指令很簡單:
ls -l | sort -n -k 5
先用 ls -l 將檔案大小列出來,再丟給 sort 指令將第五個欄位視為數字排序, -k 5 代表第五個資料欄位, -n 表示視為數字排序.sort 指令預設是由小至大排序,如果要改由大至小再加一個參數 -r .也就是 reverse 反向的意思.以上指令變成如下:
ls -l | sort -n -r -k 5
配合 du (disk usage) 可以找出檔案佔用的空間大小
du | sort -n -r -k 1
ls -l | sort -n -k 5
先用 ls -l 將檔案大小列出來,再丟給 sort 指令將第五個欄位視為數字排序, -k 5 代表第五個資料欄位, -n 表示視為數字排序.sort 指令預設是由小至大排序,如果要改由大至小再加一個參數 -r .也就是 reverse 反向的意思.以上指令變成如下:
ls -l | sort -n -r -k 5
配合 du (disk usage) 可以找出檔案佔用的空間大小
du | sort -n -r -k 1
訂閱:
文章 (Atom)