星期四, 11月 10, 2011

重整程式碼的工具

UniversalIndentGUI
http://universalindent.sourceforge.net/index.php

Uncrustify

http://uncrustify.sourceforge.net/

改天試用看看

星期四, 8月 18, 2011

原文書上的 Foreword , Preface 有什麼不同?

"foreword 是由作者以外的某人或某些人所撰寫,可能是業界的專家學者、同類型書籍的作家或其他人,而 preface 則是由作者本人所撰寫."

ref: http://blog.cybertranslator.idv.tw/archives/3116

星期五, 7月 29, 2011

關於 Qt 的 qconfig.cpp

  在編譯 Comment (一個 pdf annotator) 前, 使用 cmake 來產生 .sln 檔時要需入 Qt 的相關路徑.
輸入完後產生了:

Warning: QT_QMAKE_EXECUTABLE reported QT_INSTALL_LIBS as C:/qt-greenhouse/Trolltech/Code_less_create_more/Trolltech/Code_less_create_more/Troll/4.6/qt/lib

  接著在 Qt 的目錄下找找看有沒有 "qt-greenhouse" 字串, 在 qconfig.cpp 裡有找到. 其中的路徑就是上面訊息所示. 看了一下, 這個應該是由其他的程式來設定.

  在 http://blog.csdn.net/zhudelunalpha/article/details/5841394 這個網頁剛好有提到, qconfig.cpp 是由 Qt 其中一個目錄下 configure.exe 來設定. 這個網頁也提到了他在產生 qconfig.cpp 所遇到的問題.

星期三, 7月 20, 2011

PDF 相關函式庫

ref: http://hi.baidu.com/jrckkyy/blog/item/fb18f1162d9f484121a4e9c8.html

【C++函式庫】

PDF函式庫 PoDoFo
http://podofo.sourceforge.net/
PoDoFo 是一個用來操作 PDF 文件格式的 C++ 函式庫。它還包含一些小工具用來解析、修改和創建 PDF 檔案。

Xpdf
http://www.foolabs.com/xpdf/download.html
Xpdf是一個開放原始碼的PDF檔案瀏覽器,Xpdf 可解碼LZW壓縮格式並閱讀加密的PDF文件。

PDF生成工具 Poppler
http://poppler.freedesktop.org/
Poppler 是一個用來生成 PDF 的C++函式庫,從xpdf 繼承而來。它使用了很多先進的函式庫例如 freetype 和 cairois 來達到更好的輸出效果,同時也提供了一組命令行工具包。

JagPDF
http://www.jagpdf.com/
JagPDF 提供給 C/C++ 和 Python 編程語言用來生成 PDF 檔案的函式庫。

libHaru
http://libharu.org/wiki/Downloads
開源的PDF函式庫

CLibPDF
http://hpux.connect.org.uk/hppd/hpux/Shells/ClibPDF-2.02/
ClibPDF是C函數函式庫,可以直接生成PDF文件, 不需要Adobe Acrobat等工具支持.

------------------------------------------------------------------------

【JAVA函式庫】
PDF操作函式庫 iText
http://www.lowagie.com/iText/
iText是一個能夠快速產生PDF文件的java函式庫。iText的java類對於那些要產生包含文件,表格,圖形的只讀檔案是很有用的。它的函式庫尤其與java Servlet有很好的給合。使用iText與PDF能夠使你正確的控制Servlet的輸出。

PDFBox
http://www.pdfbox.org/
非常強悍的PDF生成和解析Java函式庫

jpedal
http://www.jpedal.org/
jpedal是開源純Java的PDF檔案解析函式庫,可以用來讀取PDF檔案中的文字、圖形。

JasperReports
http://jasperforge.org/plugins/project/project_home.php?group_id=102
JasperReports是一個基於Java的開源報表工具,它可以在Java環境下像其它IDE報表工具一樣來製作報表。JasperReports 支持PDF、HTML、XLS、CSV和XML文件輸出格式。JasperReports是當前Java開發者最常用的報表工具。

Fourfive
http://sourceforge.net/projects/fourfive
Fourfive是一個領先的開源Web報表解決方案,使用XML作為它的配置文件。支持集群、負載平衡、動態發佈、PDF, Excel, LDAP,圖表、過濾器、排序、佈局定製、門戶、JasperReports、Velocity模板、兼容Internet Explorer, Netscape, Mozilla, Opera。

FOP
http://xmlgraphics.apache.org/fop/
FOP是由James Tauber發起的一個開源項目,原先的版本是利用xsl-fo將xml文件轉換成pdf文件。但最新的版本它可以將xml文件轉換成pdf,mif,pcl,txt等多種格式以及直接輸出到印表機,並且支持使用SVG描述圖形。

JFreeReport
http://sourceforge.net/projects/jfreereport/
JFreeReport是一個用來生成報表的Java函式庫。它為Java應用程序提供一個靈活的列印功能並支持輸出到印表機和PDF, Excel, HTML和XHTML, PlainText, XML和CSV文件中。

YaHP
http://www.allcolor.org/YaHPConverter/
YaHP是一個能夠把html檔案轉換成pdf檔案的Java開源包。

PDFjet
http://pdfjet.com/os/edition.html
PDFjet是一個用於動態生成PDF檔案的Java函式庫。支持繪製點、線、方框、圓、貝塞爾曲線(Bezier Curves) 、多邊形、星形、複雜路徑和形狀。支持unicode,文件間距調整,嵌入超鏈接等。它同時有Java和.NET兩個版本。

vPDF
http://sourceforge.net/projects/vpdf/
一個將RTF檔案轉成PDF檔案的工具

【.NET組件】
--------------------------------------------------

iTextSharp
http://itextsharp.sourceforge.net/
iTextSharp 是用來生成 PDF 檔案的 C# 組件

PDFsharp
http://www.pdfsharp.com/
PDFsharp is a C# library that easily creates PDF documents on the fly. The same GDI+ like drawing routines can be used to create PDF documents, draw on the screen, or send output to any printer. PDFsharp can also modify, merge, and split existing PDF files or incorporate pages from existing PDF files into new PDF documents.

Report.NET
http://report.sourceforge.net/
Report.NET 是一個功能強大且易用的用來生成 PDF 檔案的 C# 組件
---------------------------------------------------------------------

【PHP】

Php Pdf Factory
http://sourceforge.net/projects/pdf-factory/
一個PHP的PDF操作函式庫。

TCPDF
http://www.tecnick.com/public/code/cp_dpage.php?aiocp_dp=tcpdf
TCPDF是一個用於快速生成PDF文件的PHP5函數包。TCPDF基於FPDF進行擴展和改進。支持UTF-8,Unicode,HTML和XHTML。

HTML2PDF
http://html2fpdf.sourceforge.net/
HTML2PDF能夠把一個HTML文件轉換成一個印表機友好的PDF文件。這個PHP腳本構建在FPDFPHP腳本之上。

cPdfWriter
http://www.palos.ro/index.php?page=opensource_active
cPdfWriter是一個能夠輸出PDF檔案的PHP5 class。基於TCPDF,FPDF和其它相關腳本。

FPDF
http://www.fpdf.org/
FPDF這個PHP Class允許你採用純PHP(更確切地說就是不需要使用PDFlib)來生成PDF文件。它所具有的特點包括:可選擇的unit大小,頁面格式和頁邊 距;頁眉和頁腳管理;自動分頁;自動換行與文件自動對齊;支持JPEG與PNG圖片格式;支持著色和文件超鏈接;支持TrueType,Type1與 encoding;支持頁面壓縮。...

------------------------------------------------------------------------

【Python和Ruby】
Prawn
http://prawn.majesticseacreature.com/
Prawn: 用Ruby生成PDF更簡捷

ReportLab
http://www.reportlab.org/
Reportlab是用python開發的生成pdf的工具包,它是一個開源軟件。

PDF生成工具 pyPdf
PyPDF這是一個用於構建PDF的純Python工具包

星期一, 7月 04, 2011

Exception

今天在 VC 2008 debug 遇到 exception, 當 OnInitDialog( )結束時,
在 ATL::CStringData::Release() Line 107 + 0x3 bytes 發生 exception!
後來在字串的處理上出現一點問題.
原來的 code:

DWORD dwRetVal;
TCHAR pPathBuf[MAX_PATH*2];
TCHAR pSrcFileName[] = _T("abc.txt");


dwRetVal = GetTempPath(sizeof(pPathBuf),pPathBuf);
memcpy(&pPathBuf[dwRetVal],pSrcFileName,sizeof(pSrcFileName));

// 我想是因為是編譯成 unicode 的關係, string 使用 memcpy 去做 append 的動作.

修改後的 code:

DWORD dwRetVal;
TCHAR pPathBuf[MAX_PATH*2];
TCHAR pSrcFileName[] = _T("abc.txt");


dwRetVal = GetTempPath(MAX_PATH*2 - 2,pPathBuf);
_tcscat_s(pPathBuf, _countof(pPathBuf), pSrcFileName);


exception 錯誤消失了!!

星期六, 4月 09, 2011

星期二, 2月 22, 2011

7z (7zip) 壓縮檔案包含路徑的方式

因為想把整個目錄底下的檔案及子目錄都壓縮起來備份. 所以去 google 一下如何把路徑名稱也一併包含在壓縮檔中.
語法:
7z a zipfile_name.7z @ziplistfile.lst

其中 ziplistfile.lst 裡包含了有要壓縮的檔名及路徑.
如果目錄的結構如下:

dir1\1.bin
2.bin
3.prj
a.exe
+--- subdir1\
a.txt
b.txt
c.bin
+--- subdir2\
1.txt
2.doc
3.doc
++---subdir22
20.txt
21.txt

我要把 dir1\a.exe 及 subdir1 及 subdir2 底下的檔案全壓縮. 那麼 ziplistfile.lst 的內容就會像以下這樣:

a.exe
subdir1\
subdir2\

之後把這些寫成 batch file, 存在要壓縮的目錄下, 就可以很容易達成要壓縮的目地了.
batch file 的內容(把檔名加入日期):

setlocal
set hh=%time:~0,2%
if "%time:~0,1%"==" " set hh=0%hh:~1,1%
set yyyymmdd_hhmm=%date:~0,4%%date:~5,2%%date:~8,2%_%hh%%time:~3,2%

7z a backup_%yyyymmdd_hhmm%.7z @backupfilelist.txt
move backup__%yyyymmdd_hhmm%.7z .\backup

這樣就 ok 了.

如果不想把 subdir2\subdir22 給包進去, 再寫一個 exculde file list (exfilelist.txt):

subdir2\subdir22\

接下來把 command 改成:
7z a -x@exfilelist.txt backup_%yyyymmdd_hhmm%.7z @backupfilelist.txt

ok!