2016/11/07

[Python] VS2013 預設的 Django 專案修改紀錄

剛開始用VS2013玩 Django Web專案, 才發現開啟了一連串的災難, 為避免忘記, 還是做個紀錄好了.

環境說明:
1. 因原本電腦就裝了 Python3.4版, 所以一開始建環境時選的就是 Python3.4.
2. 建立完 Virtual Environment後, 顯示 Django 1.10.3 版, pip 1.5.6 版, setuptools 2.1 版.

2016/02/25

[Regex][C#] Pattern 比對的順序

假設要拆解 (A,B),C,(D,E,F),G 這樣的字串, 成為如下的結果:
(A,B)
C
(D,E,F)
G

第一個想到的會是用逗號(,)做分隔符號試試, 但得到的結果如下:
(A
B)
C
(D
E
F)
G

2015/04/10

[C#][Java] jni4net 基本使用 - Java呼叫C# 函式庫

首先, 到 jni4net 官方網站下載此套件. (我下載的是0.8.8版)
解壓縮後, 會得到三個資料夾:
  • bin: 內有 proxygen.exe 執行檔, 用來產生Java與C#程式間溝通用的Proxy.
  • lib: 包含將來執行時要用到的 .dll 與 .jar 檔.
  • samples: 顧名思義, 放的是 jni4net 的範例程式碼.
使用情境: 撰寫一個 C# 的函式庫, 讓 Java 程式可透過 jni4net 套件執行該 C# 函式庫.
Step 1: 利用 Visual Studio 建立一個名為 CSharpLib 的 C# 函式庫專案, 並簡單寫一個MainTable.cs 程式如下:

2014/10/02

[Regex]加入數字的千分位(thousands separator)

因為Javascript的Regex沒有lookbehind, 所以一般在處理為數字加上千分位的作法會受到一些限制.
以下先說明數字加上千分位的規則:
  1. 數字的整數部分每3位數插入一個逗號(,), ex: 123456 –> 123,456
  2. 小數點後不加入千分位, ex: 123456.1234 –> 123,456.1234

2014/09/24

[C#] Dynamic change log4net connectionString

因為遇到資料庫連線字串是要從另一個系統取得, 所以研究了一下 log4net 如何動態設定資料庫連線.

2014/06/05

[C# & Java] .Net 壓縮(GZipStream) VS. Java解壓縮

簡單說明需求:

  1. 利用 .Net 程式將一個 PDF 檔案壓縮, 並將其轉為BASE64字串.
  2. 呼叫一個 Java 的 Web Service, 將此 BASE64 字串傳送到另一端.
  3. Java 程式要轉換此 BASE64 字串, 並回存成 PDF 檔案.




這邊省略掉 Web Service 的傳輸說明, 僅說明 .Net 程式的壓縮與轉換 BASE64, 以及 Java 程式的 BASE64 轉換與解壓縮.

2014/02/18

[Regex]Match Overlaping Pattern

情境: 將字串 1 < 20 < 5 < 3 分解成
1 < 20
20 < 5
5 < 3
當利用Regex做字串比對時, 會發現比對是一連串的字串消化行為.
所以若試著使用 (\d+\s*[<>=]+\s*\d+) 這樣的Pattern作比對時, 會發現只能比對到如下的結果:
1 < 20
5 < 3

2013/03/12

[ASP.Net] Chrome找不到favicon.ico時會產生新Session

先前認為 ASP.Net 網站加入 Global.asax 檔, 就可正確地建立 Session.
(參考: Session.IsNewSession 與 Session.SessionID)
不過沒想到 Chrome 瀏覽器很奇怪地會去存取網站的 /favicon.ico, 並在此 .ico 檔不存在時, 建立新的 Session, 導致 Session 的使用與預期不符.
還好解決方案還算簡單:

  1. 為網站加入 favicon.ico 檔, 以避免 Chrome 因為該檔案產生 404 Error 而造成 Session 的重新建立.
  2. 在 MVC 專案中, 可在 router中加入一項 favicon.ico 的過濾.
    routes.IgnoreRoute("favicon.ico");
    

2013/01/21

[C#] Windows 目錄的長路徑與短路徑轉換

因為 Windows 的目錄/檔名允許空白字元, 所以造成寫命令列指令(ex: java)時往往要用雙引號(")包裝路徑, 以避免空白字元分隔了參數.
不過最近用了一個 SVG 轉圖的 Java 套件(SVG Rasterizer), 卻不接受雙引號框住的路徑. 反而要將路徑轉為無空白字元的短路徑才行.

2012/11/19

[ASP.Net] MVC3 專案升級至 MVC4

前置作業:
1. 透過 Microsoft Web Platform Installer 安裝 MVC4 開發套件.
2. 備份既有的 MVC 3 專案.

2012/06/17

[SQL Server] Trigger的資料異動紀錄(part2)

有時候我們會在資料表都建立後, 才想到要另外加個欄位(UpdateTime)記錄修改時間. 但欄位建了, 程式卻可能因為種種原因無法配合修改. 所以此時可透過 trigger 來幫助完成這項功能.
不過, 假如在 TableA 中加入了一個 AFTER UPDATE 的 trigger(TableA_UptTrigger) 去修改 TableA 的資料, 很顯然地可能會導致迴圈的產生. 此時, 有以下兩種選擇:

2012/03/15

[ASP.Net] 在IIS7中架設 Highcharts 的 Exporting 網站

Highcharts 預設的圖片下載是透過 http://export.highcharts.com/ 網站提供的服務來達到,且官網也有提供 Export module 供有需要的人自行架設。本文主要是在說明如何在 IIS7中架設此匯出圖片的網站,且該網站可使用整合式的 .Net Framwork v4 應用程式集區。

2012/03/13

[JavaScript] 以固定長度的方式為字串加入分隔符號

例: 以 CD-Key 的格式而言, 大致像 12345-67890-ABCDE-FGHIJ
但有時會為了方便使用者輸入, 會允許使用者輸入無分隔符號的字串, 此時就會想要簡單地依長度來分割字串, 並加入分隔符號.

2011/11/08

[SQL Server] 利用 Trigger 進行資料異動的備份

在系統開發過程, 我們往往沒事先規劃在一些重要資料修改過程中進行備份. 使得系統上線後又要改程式, 將程式中有進行修改 / 刪除的行為, 加入備份的程式碼 (例如將欲修改的資料寫一份到 log 表格). 但也許在經過工程師來來去去後, 新的工程師又忘了加入備份的程式碼, 導致最後又要重新檢視所有程式進行修改.
為了避免上述的情況不段重演, 所以考慮在不動到程式的情況下進行資料備份, 也就是利用 trigger, 在指定表格修改或刪除的時候將資料備一份到 Log 表格.

2011/11/03

[Java] 讀取 Google Android Market 的 Sales Report

參考資料: http://code.google.com/intl/zh-TW/apis/checkout/developer/index.html
POST URL: https://checkout.google.com/api/checkout/v2/reports/Merchant/{merchantID}
在抓取 Report 前, 先說明如何找到後面程式需要的 Merchant ID 和 Merchant Key.

2011/11/01

[Java] 讀取 App Store 的 Sales and Trends Report

參考文件: iTunes Connect Sales and Trends Guide (PDF)
在第三章 [Downloading, Reading and Understanding Sales and Trends Data] 有提到一個 Auto-Ingest Tool.
因為此 class 可在網路上找到 Source Code, 所以就能瞭解此程式到 App Store 抓 Report 的做法.
此程式的關鍵就在於 Apple 有放出一個 URL (https://reportingitc.apple.com/autoingestion.tft) 讓需要的人可透過簡單的 HTTP POST 來取得一個 .gz 檔.
取得此 .gz 檔後, 可再自行解壓縮以得到一個 .txt 的 CSV 資料檔, 最後再將此 CSV 格式檔匯入資料庫中.

2011/09/07

[Others] 新版的 Microsoft Download Manager

以前下載 MSDN 的軟體時, 會自動啟動 File Transfer Manager (FTM).
不過這兩天要下載時, FTM都不會被啟動, 而是直接透過瀏覽器進行下載. (應該是因為我用了 IE9)
且由於檔案動輒幾 G 的大小, 常常斷線又沒續傳, 實在是頗傷腦筋.
後來查到 Microsoft 出了一版新的 Download Manager. (http://www.microsoft.com/download/en/details.aspx?id=26214)

2011/08/18

[Java] Apache 的 Commons Configuration 入門

2011/04/06

[C#][XPath] 模擬 XPath 的 max 與 min

在 XPath 中, 有兩個函式感覺會很常用, 但 C# 中卻沒 support. 那就是 max() 和 min().
少了這兩個函式, 每次想找 xml 資料中的最大/最小值, 就只能用 Linq 或是 Select 出所有標籤後, 在程式中去一個個比對.
其實 XPath 只要轉個彎, 就能做出類似的功能.

2011/03/29

[BIRT] BIRT 的 Runtime Connection 設定 (proxool)

BIRT(Business Intelligence and Reporting Tools) 這套 Java 的報表套件其實還蠻好用的. 不過報表設計工具只有整合在 Eclipse.
有用過這一套的人大概都知道, 設計完一個報表後會產生一個 .rptdesign 的檔案.
而一般在程式中呼叫此報表檔, 並繫結資料的程式碼大致如下:
IReportRunnable design = this.birtReportEngine.openReportDesign("test_report.rptdesign");
IRunAndRenderTask task = this.birtReportEngine
                .createRunAndRenderTask(design);
// set report parameters
task.setParameterValue("startTime", "2010-09-01");
task.setParameterValue("endTime", "2010-12-01");
// set output format
HTMLRenderOption options = new HTMLRenderOption();
options.setOutputFormat(HTMLRenderOption.OUTPUT_FORMAT_HTML);
options.setOutputStream(response.getOutputStream());
task.setRenderOption(options);
// run the report
task.run();
task.close();