Archive for 技術文章

我的常用 js 函式庫

 

※ 2010-03-02 補充:

Object prototype 改寫會導致 jQuery 出現異常,所以必須將 Object.prototype.isArray 註解或刪掉。
請參考:Prototyping Object in Javascript breaks jQuery? – StackOverflow

整理了一支我常用於網站開發的 js 函式庫,也包含了對字串、日期、陣列物件的 Prototype 增強函數,採 MIT 授權釋出,歡迎任意使用。

源碼:lib.common.js(16 KB)
壓縮:lib.common-min.js(9 KB)

Prototype: String

  1. var url = 'http://essoduke.org/?s=測試';
  2. var x = 'Test 測試';
  3. var y = '<strong>HTML</strong>';
  4. var z = '&;lt;strong&;gt;HTML&lt;/strong&gt;';
  5.  
  6. /* trim: 移除字串前後空白 */
  7. x.trim(); // result: Test
  8.  
  9. /* bytes: 取得字串 bytes 長度 */
  10. x.bytes(); // result: 9
  11.  
  12. /* empty: 是否為空 */
  13. x.empty(); // result: false
  14.  
  15. /* left: 取字串左側 n 個字元 */
  16. x.left(4); // result: Test
  17.  
  18. /* right: 取字串右側 n 個字元 */
  19. x.right(4); //result: t 測試
  20.  
  21. /* HTMLEncode: 編碼 HTML 標籤 */
  22. y.HTMLEncode(); // result: &amp;lt;strong&amp;gt;HTML&amp;lt;/strong&amp;gt;
  23.  
  24. /* HTMLDecode: 還原被編碼的 HTML 字串 */
  25. z.HTMLDecode(); // result: <strong>HTML</strong>
  26.  
  27. /* URLEncode: 進行 URL 編碼 */
  28. url.URLEncode(); // result: http%3A%2F%2Fessoduke.org%2F%3Fs%3D%E6%B8%AC%E8%A9%A6

Prototype: Array

  1. var arr = [1, 2, 2, 3, 4, 4, 5];
  2.  
  3. /* unique: 刪除重複的元素 */
  4. arr.unique(); // result: 1, 2, 3, 4, 5
  5.  
  6. /* remove: 刪除第 n+1 個元素 */
  7. arr.remove(3); // result: 1, 2, 2, 4, 4, 5
  8.  
  9. /* find: 尋找符合內容元素的鍵值 */
  10. arr.find(2); // result: 1, 2

Prototype: Date

  1. var x = new Date();
  2.  
  3. /*
  4. * DateDiff: 計算傳入日期的差異
  5. * @param string cDate : 要比較的日期
  6. * @param string mode: 計算類型 y=年, m=月, w=周, d=日
  7. */
  8. x.DateDiff('2010-01-01', 'd'); // result 56
  9.  
  10. /* DateAdd: 加上或減去指定的日期時間間隔
  11. * @param string interval : 時間間隔單位 y, m, d, w, h, n, s, l
  12. * @param integer numer: 時間間隔單位次數,可為正數或負數
  13. * @param string pattern: 回傳的時間格式(非必要,預設 'yyyy-MM-dd hh:mm:ss')
  14. */
  15. x.DateAdd('d', 100); // result '2010-06-06 11:21:47'
  16.  
  17. /*
  18. * format: 格式化日期
  19. * @param string interval : 引數可參考 http://php.net/manual/en/function.date.php
  20. */ 
  21. x.format('Y m j'); // result '2010-02-26'

Prototype: Object

  1. /* isArray : 判斷是否為陣列 */
  2. var x = [1, 2, 3];
  3. x.isArray() // result 'true'
  4. var x = 'Test';
  5. x.isArray() // result 'false'

Functions

  1. var web = new COMMON();
  2.  
  3. /* regexp: 驗證常用欄位 account, password, email, url, ip, date, time, number, twid 台灣身份證 */
  4. web.regexp('i.am@god.com', 'email'); // 驗證電子郵件
  5. web.regexp('http://test.com', 'url'); // 驗證網址
  6. web.regexp('10.10.10.10', 'ip'); // 驗證 IP
  7.  
  8. /* timestamp2time: 將 timestamp 轉為時間日期格式 */
  9. web.timestamp2time(1267155821); // result 'Fri Feb 26 2010 11:46:30 GMT+0800 (Taipei Standard Time)'
  10.  
  11. /* timestamp: 取得 timestamp */
  12. web.timestamp();
  13.  
  14. /* leftPad: 字串左邊補零 */
  15. web.leftPad('100', 6); // result '000100'
  16.  
  17. /* ie: 檢查是否為 IE */
  18. web.ie();
  19.  
  20. /*
  21. * benchmark: 效能測試
  22. */
  23. web.benchmark.start(); // 開始計算
  24. [.....]
  25. web.benchmark.stop(); // 結束計算並返回執行秒數
  26.  
  27. /*
  28. * cookie: cookie 操作
  29. */
  30. web.cookie.get('index'); // 取得 cookie[index] 內容
  31. web.cookie.set('index', '100'); //設置 cookie[index] 為 100
  32. web.cookie.remove('index'); // 移除 cookie[index]
  33.  
  34. /*
  35. * debug: inline 方式顯示傳入變數內容或列舉子物件
  36. * ※此方法需使用 <a href="http://jquery.com/">jQuery Library</a>,建議 1.3.2 以上版本
  37. */
  38. var x = 'String';
  39. web.debug(jQuery); // 列舉 jQuery 所有內容
  40. web.debug(x); //顯示 x 變數內容

解決 TeamSpeak 3 中文化後字體過小的問題

如果在安裝 TeamSpeak 客戶端中文化後發生字體變成「標楷體」以及過小的問題,可以下載這個檔案解決:

default.qss(1KB 右鍵另存)

或是將下列文字加入「X:\Teamspeak Client\style\default.qss」,若熟悉 CSS 語法也可以自行更改。

  1. QAbstractScrollArea, QCheckBox, QComboBox, QDockWidget, QFrame,
  2. QGroupBox, QHeaderView, QLineEdit, QListView, QMainWindow, QMenu,
  3. QMenuBar, QProgressBar, QPushButton, QRadioButton, QScrollBar,
  4. QSizeGrip, QSlider, QSpinBox, QSplitter, QStatusBar, QTabWidget,
  5. QTabBar, QTableView, QToolBar, QToolBox, QToolButton, QToolTip, QTreeView {
  6.     font:normal 12px PMingLiu;
  7. }

說明:這個檔案為預設佈景主題的樣式檔,改寫各個元素所使用的字型及大小為 12px 新細明體。

另外補上目前最完整的正體中文化(戰地秘境版已停止更新):
下載:Teamspeak 3 Client 正體中文語系(ZIP 98KB 右鍵另存)

Tesseract Win32 VC++ Rebuild Tutorial

Tesseract OCR 原本是 HP 實驗室所發展的 OCR 引擎,2006 年釋出為開放原始碼專案,目前由 Google 維護發展。

這兩天因為有某專案需要使用文字辨識功能,原本打算使用 PHP 進行,不過效率不彰,所以投奔到 Tesseract 的懷抱,但是原始檔案中缺少 libtiff 的支援,這時候就需要自己動手編譯了。

所需軟體

步驟

下載 Tiff for Windows Complete package, except sources 並安裝。

開啟 tesseract.sln 專案

點選「工具 » 選項 » 專案和方案 » VC++ 目錄」右側的顯示目錄分別新增 Include 及 程式庫檔 並個別指向 Tiff for Windows 的 Include 及 Lib 資料夾。


在左側「方案總管」中,針對每個專案點選右鍵選擇「屬性 » 組態屬性 » C/C++ » 前置處理器」,右側的「前置處理器定義」加上 HAVE_LIBTIFF。

接著在「屬性 » 組態屬性 » 連接器 » 輸入」,右側的「其他相依性」加上 libtiff.lib。

設置完成後即可進行建置編譯。

這裡也有我編譯好的版本下載:Tesseract 2.04 Win32 Rebuild(2.40 MB)
SHA256: 02ade58c75542b5a69b13c9932ae8d921656bfb86fd839ec806a2022d48c24e0
內含:bbTesseract 可編輯學習檔、tessdata English、tessconfig

問題

Q: 執行 tesseract.exe 會提示「找不到 jpeg62.dll」
A: 將 C:\Program Files\GNUWin32\bin\jpeg62.dll 複製到 tesseract 目錄

Q: 執行 tesseract.exe 會提示「找不到 zlib1.dll」
A: 將 C:\Program Files\GNUWin32\bin\zlib1.dll 複製到 tesseract 目錄

延伸閱讀:

tinyMap – 自訂個人 Google Map 的 jQuery 擴充套件

這個擴充套件可以輕鬆建立自訂的 Google Map,舉凡尺寸、地圖類型和縮放控制、縮放等級,更能加入設定好的標記地點並填上說明。

下載位址

安裝

  1. <!-- Include Google Map API --> 
  2. <script type="text/javascript" src="http://maps.google.com/maps?file=api&v=2&sensor=false&key=<em>YOUR_API_KEY"></script> 
  3. <script type="text/javascript" src="jquery.tinymap-1.0.js"></script>

參數說明

  • width: 地圖寬度 (Number) /* 預設:640px */
  • height: 地圖高度 (Number) /* 預設:480px */
  • latlng: 地圖置中的座標或地址,若為座標請使用 [x, y],地址則直接輸入。
  • control: 顯示地圖類型選單 (Boolean) /* 預設:true */
  • zoom: 顯示地圖縮放選單 (Boolean) /* 預設:true */
  • zoomLevel: 預設地圖縮放等級 (Number) /* 預設:13 */
  • mapType: 預設地圖類型 (String) /* 選項:default, hybrid(混合), satellite(衛星) 預設:default */
  • marker: 標記群組 (JSON):

    [{addr:'標記地址或座標', text:'標記說明', icon:[圖示寬度, 圖示高度, 圖示位址]}]

範例:顯示高雄市政府地圖

若無法顯示 Object Frame 內容,請使用 IE 以外的瀏覽器。

  1. $(function(){
  2.  
  3.   var set1 = {
  4.     width: 639,
  5.     height: 359,
  6.     latlng: '高雄市苓雅區四維三路2號',
  7.     zoomLevel: 1˙
  8.   };
  9.  
  10.   $('#map1').tinymap( set1 );
  11.  
  12. });

範例:以衛星地圖及自訂圖示標示多個地點

若無法顯示 Object Frame 內容,請使用 IE 以外的瀏覽器。

  1. $(function(){
  2.  
  3.   var set1 = {
  4.     width: 639,
  5.     height: 359,
  6.     latlng: [22.638610116646756, 120.30184864997864],
  7.     mapType: 'satellite',
  8.     zoomLevel: 12,
  9.     marker: [
  10.       {addr:'高雄市鼓山區萬壽路350號', text:'<strong>壽山動物園</strong><br />高雄市鼓山區萬壽路 350 號', icon:[24, 24, '2.png']},
  11.       {addr:'高雄市左營區翠華路1435號', text:'<strong>蓮池潭</strong><br />高雄市左營區翠華路 1435 號', icon:[24, 24, '3.png']},
  12.       {addr:'高雄市苓雅區自強三路5號', text:'<strong>東帝士 85 大樓</strong><br />高雄市苓雅區自強三路 5 號', icon:[24, 24, '4.png']},
  13.       {addr:'高雄市左營區高鐵路105號', text:'<strong>台灣高鐵左營站</strong><br />高雄市左營區高鐵路 105 號', icon:[24, 24, '5.png']},
  14.       {addr:'高雄市三民區建國二路318號', text:'<strong>台鐵高雄車站</strong><br />高雄市三民區建國二路 318 號<br /><a href="http://service.tra.gov.tw/Kaohsiung/StationTimeTable/index.aspx">台鐵高雄車站</a>', icon:[24, 24, '6.png']}
  15.     ]
  16.   };
  17.  
  18.   $('#map1').tinymap( set1 );
  19.  
  20. });

更多範例請參考:tinyMap – 自訂個人 Google Map 的 jQuery 擴充套件

jQuery 台灣郵遞區號外掛 v1.1 update

這次更新主要是改寫了原有的結構變得更簡潔、效能更好,並修改下列幾項:

  • 可不需先建立 HTML 表單,由程式直接產生並直接指定表單元件名稱。
  • 加入 Css 的支援

參數說明

  • countyName: 指定縣市下拉清單名稱 (String) /* 若不指定則預設名稱為 zip_county[] */
  • areaName: 指定鄉鎮市區下拉清單名稱 (String) /* 若不指定則預設名稱為 zip_area[] */
  • zipName: 指定郵遞區號輸入框名稱 (String) /* 若不指定則預設名稱為 zip_code[] */
  • countySel: 縣市預設值 (String)
  • areaSel: 鄉鎮市區預設值 (String)
  • css: ['County ClassName', 'Area ClassName', 'Zip ClassName'] (Array)

自訂元件名稱範例

  1. // Javascript
  2. $('#container').twzipcode({
  3.   countyName: 'county',
  4.   areaName: 'area',
  5.   zipName: 'zip'
  6. });
  7.  
  8. // HTML
  9. <div id="container"></div>

完整範例請參考:jQuery 台灣郵遞區號外掛

Pages: 1 2 3 4 5 6 7 8 Next

Powered by WordPress with GimpStyle Theme design by Horacio Bella.
Entries and comments feeds. Valid XHTML and CSS.