拙劣的手法

替文章想標題不容易,妥協後以手法稱之。

身為公司主管(所謂「經理人」)的角色,有時候為自己的利益所做的某些行動,其實有相對好的方式以避開落人口實。

例子一:
公司於勞退新制後已將薪資制度改為可以看見拿到的就是那十二個月,沒有所謂年終這個名目。每年號稱會檢視該年業績狀況給予業績獎勵,至於標準如何無相關明文規定。
去年某日,員工信箱中收到一只公告,內容為受到公司獎勵的員工名單。而身為公司出資者(老闆,董事長,總經理)名列第一位…

例子二:
公司於週末舉行年度的吃吃喝喝盛會尾牙,老闆因業務因素未出席,也無幾位主管出席。員工最期待主管放送時間,最後只推拖拉了一位高層主管加碼數千元並抽出得主。
隔週上班日,該主管交待財會部門將該加碼獎金,自所謂餐費科目支出(抵扣)。該項報銷後再發給該位得獎員工。

具工作幾年經驗的人都知道這種事情在合理性上皆可執行,而其他?皆可自行判斷之。

只是同標題,手法拙劣與高明程度,抑或是臉皮厚度不同。

括號使用於目錄名稱的問題

最近很少寫一些技術性的東西,剛好這幾天工作上解決一個問題,就順手寫一下。

產品安裝程式用 InstallShield 撰寫,最近發現 32-bit 安裝程式在 64-bit Windows 無法安裝在預設給 32-bit 用的 C:\Program Files (x86) 路徑下面,想當然是安裝程式把括號視為無效的字元給擋住。

修改了判斷用的正則表示式(Regular Expression)重新編譯之後丟上測試機器去安裝。Done!

通常,測試員在測試安裝程式的時候,會在路徑這種欄位輸入一堆有的沒的字元(有效與無效)做測試。其實,Windows 或 Linux 下面使用括號是有效的。

Windows 下頭無效的字元除了 ASCII/Unicode 1~31 編碼字母外還有引號(")、小於(<)、大於(>)、管線(|)、Backspace (\b)、null (\0) 與 tab (\t)(資料來源為 MSDN – Path.GetInvalidPathChars Method (System.IO))。

安裝程式在設計安裝案例時,當然希望使用者輸入比較正常一點的字元,例如只有大小寫、數字以及幾種符號,沒把括號納入。但…當初誰知道 Windows 64-bit 會來個 C:\Program Files (x86) 這樣的設計呢?XD

版本比對用正則表示式

寫這個應該不影響有關機密的事情吧?我想…只是雕蟲小技而已。

收到一個小改的需求,本來產品 P.X 可安裝在伺服器版本 S.X.0.1 上面,現在即將推出 P.X.X 必須裝在伺服器版本 S.X.0.2 上頭,需要修改安裝程式比對伺服器版本的正則表示式(Regular Expression)。為了不每次都編譯,執行安裝程式來測試正則表示式,使用 cygwin 裡頭的 egrep 指令來測試表示式。

首先先準備個測試資料文字檔案 version.txt:

1
2
3
4
5
6
7
8
9
10
S.X.0.0
S.X.0.1
S.X.0.2
S.X.0.3
S.X.0.5
S.X.0.11
S.X.1.0
S.X.1.2
S.X.2.0
S.X.11.2

然後這個是在 cygwin 裡頭下指令測試:

$ egrep --color=auto 'S\.X\.(((0\.[2-9])|(0\.[1-9][0-9]))|([1-9][0-9]*\.[0-9]+))' version.txt

預期的結果是前兩行不會出現,嗯…接著編譯好安裝程式,先在 Windows 平台上頭測試,然後是其他平台,沒問題就 check-in code 嚕~

搞半天是沒寫

週五算準時下班,當時天色未全暗 #

上週解決了一個高一級的臭蟲,沒想到接下來的挑戰更為艱難…Orz

這次遇到的問題是:「這是個特殊的屬性,處理的時候遇到它就轉個彎去做另一件事情,但是當傳入物件值某個值為負的時候卻該值為正時所得到的結果相同。」

查老半天果然是該方法根本沒有處理當值為負的狀況,也就是沒有寫。嗯…沒有寫就把它加進去,把處理值為正的方式倒過來就好。果然事情沒想像中簡單,該方法使用外部 API,而該 API 只有值為正時可用。

想老半天,不過就是資料條件的篩選。那…我把所有資料用那個外部 API 撈出來加在一起減掉值為正時的資料就可以了吧?(完全不考慮效能 # 或記憶體的爛方式)

結果再度證明該方法行不通,某個狀況下該外部 API 撈出來的不是全部資料,而我自己的環境就是這樣…Orz 算有個方向,但有個方向也還沒修好啊! # 進行到這邊已經是昨日晚間,離開辦公室時卻沒有下班的感覺 #

早上上班的時候卻遇到環境怪怪的問題,DB 死很大給我看 #,搞得連伺服器啟動都有問題,工作空間也有問題,螢幕顯示也開始有問題…整個就是不想讓我好好修蟲就是了!*翻桌* 還好順利解決資料庫問題,刪掉 db.lck 檔案就搞定 #

可以正常解決該問題的方式寫好、測試後上傳,然後就可以輕鬆過週末了!Ya~