公告版位

目前分類:程式設計 (20)

瀏覽方式: 標題列表 簡短摘要

4/18一個準備發憤圖強的日子,也是一個災難的日子。

4/18原本預計利用一整天的星期天把累積已久的論文進度趕一下,早上9:30起床,開了電腦,發現我的液晶螢幕掛點(Hanns 19吋),這下可好,原本好心情已經去了一半。趕緊把我陳年的17吋Samsung螢幕接上去,確定是螢幕掛點,Hanns印象中保固三年,趕緊上PC-Home採購記錄查看我何時購買的。還真巧,三年零兩個月前買的,現在的IT產品果真保固期滿一定得壞。

用慣了19吋,回去用17吋還真不習慣,看看時間10:30,燦坤應該開門了,趕緊去買一台液晶,到現場挑了一台便宜的Acer H223HQ回來,22吋1080p Full HD才賣4300,馬上刷一臺回來用。

lcjan 發表在 痞客邦 PIXNET 留言(14) 人氣()

在討論區部小心看到一篇發問:『我可以指定我的程式採用多核心處理嗎?』,因此產生研究動機。我也想反過來知道,我們所開發的應用程式與多核心CPU之間的關係。

我做了以下的測試:
利用Delphi撰寫一支超迷你超簡單的『操cpu』程式。這隻程式的目的在一個無窮迴圈中,亂數位置於Form上面繪出中文字(因為中文字叫 耗資源)
接下來,先進行多核心與單核心執行的測試。
1.啟動程式。

lcjan 發表在 痞客邦 PIXNET 留言(0) 人氣()

因昨日公司識別證員工姓名英文譯音又要修改,因此回家花了點時間寫了程式,提供簡易查詢介面。可以用來查詢姓名或地址的各種譯音。 
用法:
    可輸入國字(可多字),查詢各種英(音)譯
    如果遇到國字查不到,或造字,可輸入注音拼音查詢音譯。
 

lcjan 發表在 痞客邦 PIXNET 留言(0) 人氣()

這陣子在研究Windows桌布設定,這對一般人來說沒什麼困難,但是,我們的工作環境中有三四十組的雙螢幕工作環境,甚至4螢幕工作環境,而整個公司的電腦都由資訊單位統一制定桌布,最近某使用單位反應,第二螢幕使用率較低,單桌布上放置有企業LOGO圖樣,長期使用下來,導致螢幕上有烙印(衰減),這現象在CRT或LCD同樣會發生。

就因為這樣,開始研究如何設定多螢幕不同桌布,想要做到主螢幕放置公司LOGO,第二螢幕設定單一色彩。一開始爬了一下文章,多螢幕設定桌布以為很簡單,但是做起來卻不簡單,網路上你能找到的解決方案大概有兩種:第一個是下載雙螢幕桌布,要使用這樣的桌布,必須兩顆螢幕大小與水平位置要一樣,否則會亂掉。第二種解決方案是安裝套裝軟體:UltraMon,這套軟體功能很多,其中一項就是設定每顆螢幕單一桌布,且螢幕大小位置可以任意調整,但是缺點就是要花錢。
使用套裝軟體
UltraMon讓我覺得殺雞用牛刀,我只是想搞個雙螢幕桌布,還得安裝付費軟體,因此經過幾天研究後,自己寫了一套裝螢幕桌布設定工具,功能單純,就是對每顆螢幕設定自己想要的桌布,在此分享多螢幕桌布如何設定。

當你的螢幕大小與水平位置都相同的時候,你要設定雙螢幕桌布需要自行DIY,就把兩張縮放成螢幕大小的桌布合併在一起就行了。
1. 假設雙螢幕大小都為1024 × 1280,水平位置都一樣,如下設定

lcjan 發表在 痞客邦 PIXNET 留言(1) 人氣()

一兩年前,在開發使用者電腦管理軟體,努力的爬文,重複的嘗試,好不容易用Delphi勉強寫了類似Windows工作管理員的程序查詢介面,也能夠去中斷Windwos中的值行程序,程式完成後,高高興性的將系統上線,也向同事炫耀一番。
哪知,上星期不小心看到了一件存在已久的事實,原來,Windows XP早有這樣好用的功能,當然不是GUI介面的工作管理員,而是Command Line的工作管理員,看到這樣的Windows程序管理工具,張大嘴直搖頭,天阿!我是白癡啊,這工具是微軟送的,我居然要自己寫,還寫得很差勁,真是慚愧,也是驚訝。

我驚訝的是,這工具,能力之強大,不容小覷。

Windows Xp的程序管理工具有兩項:
tasklist : 顯示目前電腦中的所有程序

lcjan 發表在 痞客邦 PIXNET 留言(0) 人氣()

這幾天終於得面對逃避已久的問題,自從Windows Vista上市以來,就沒聽說過多少正面風評,由其是軟體開發,這幾天遇到一個需求,就是得把Run在Windows 98/2K/XP 上的軟體丟上VISTA跑看看,看看Vista是否能直接執行Windows XP下執行的應用程式,且我這應用程式使用了大量的Windows API、動態連結檔、註冊檔等資源,因此,測試第一天,當然連執行都有問題。接下來幾天,慢慢把問題找出來,終於讓程式不經修改能跑起來了。在此分享一下心得。



 

目前暫時性的結論:

lcjan 發表在 痞客邦 PIXNET 留言(1) 人氣()

這兩天在找Windows鎖定時間相關資訊,爬文過程又有一番認識,跟大家分享:

是有關於Windows程式計時問題,應用情境例如:自行撰寫計時器,計算某程式或工作執行時間等等
明顯範例:想計算Func_A( )執行時間,我的慣用方法:
Var
  rBeg :Real;

lcjan 發表在 痞客邦 PIXNET 留言(0) 人氣()

以Delphi自行撰寫,Windows 98因不支援某些API,因此無法執行。

http://webhd.xuite.net/_oops/lcjan/m5z


lcjan 發表在 痞客邦 PIXNET 留言(3) 人氣()

接觸資料庫與程式設計已經有5~7年,在我的工作環境中,已經歷經兩代資料庫主機轉換,從IBM-AIX轉換成HP-UNIX,不變的是資料庫與應用程式,我接觸Oracle也寫程式,在這幾年中我看的了一些問題一直圍繞著我們打轉。更換主機並非一件小事,尤其是企業最重要的資料庫主機,更換的理由,並非主機損壞,一方面是原廠保固維護,另一方面則是效能低落問題,但真正陪伴著資訊部同仁每天心驚膽戰的卻是效能問題,因此經過多重評估與考量,跟老闆報告:「編預算,換主機吧!」

在程式設計工作邁入第三年時,有幸被派訓Oracle原廠三個月課程,並取得OCP-8i與OCP-9i,因此對Oracle算是有基本瞭解,雖然現在已經不經手管理資料庫,但OCP的教育訓練對我在系統規劃、開發與問題排除時,確實有不小的幫助。在我們這個軟體自行開發,資料庫能自行管理的環境中,一路走來,「資料庫效能不好」的聲音週期性的會伴隨在耳邊,因為對資料庫、網路、作業系統與應用程式都能有基本瞭解,且能有充分掌握,每次遇到資料庫效能不彰問題時,幾乎都能找到原因與解決方案。

當遇到「資料庫效能不好」的時候會如何?小則電話不斷,大則上級關切,抱怨連連,我們的資料庫一樣有跟廠商簽約維護,當遇到這主資料庫效能問題時,除非你有錢,買更高階更大更快的設備,否則對Oracle的效能調校來講,嚴重的問題從發現到解決可能不是三天兩頭能解決,有時候還必須有更多的準備才能找到一個方向,更慘的是,這方向去執行後不見得是解決問題的答案,而是驗證你必須再找其他方向。

硬體維修人員對於PC中毒、當機、速度慢等等疑難雜症有一個終極手段:「重灌」,對於資料庫而言,有良心與經驗的廠商會協助你找方向,某些廠商可能會告訴你「主機該換了」。我對Oracle可是又愛又恨,愛的是他的效能與管理的彈性,恨的也是他的效能與彈性。Oracle處理大量資料,效能確實滿優秀的,功能又多,彈性又大,對於備份、備援、高可用度都有許多種架構任由使用者建構,管理人員對於資料庫的掌控度也很高,管理人員能介入調整的部分,相較SQL-SERVER多出許多,因為有強大並複雜的功能,因此,一名專業的DBA就相形重要,持有OCP證照的DBA只能說是知道如何管理與使用Oracle Database,「經驗」才是一名專業DBA最難能可貴的地方。

在多次處理資料庫效能瓶頸的經驗中,有幾點是重要的方向:主機、Storage、作業系統、網路、資料庫、應用程式,有些是因,有些是果,當整體系統效能不彰時,系統工程師可能會去監看主機磁碟、網路、記憶體的使用,可能會得到一個方向是指向資料庫,接著DBA去監看資料庫,從記憶體、效能、連線等資訊的蒐集分析,又可能指向主機記憶體或不足導致SWAP,這樣的結論,看起來是買個記憶體來插上去就行了吧!當然不是,這些都可能是某些原因產生的結果。

lcjan 發表在 痞客邦 PIXNET 留言(5) 人氣()

品需要防呆設計,硬體需要防呆設計,軟體更是需要。在我們的環境中,遇到了單位反應系統錯誤,最常見到的回答有兩種, 一種是使用者操作問題,一種是程式Bug。程式有bug是資訊單位的絕對責任,但不見得只是資訊單位某人得負責任,從最直接的程式負責人到系統規劃系統分析甚至於主管,都有責任,專業不足、經驗不足、需求了解不透徹或粗心大意都會再系統建構的過程中不知覺的埋下定時炸彈,程式的bug對使用者而言,會與資訊單位的「品質」畫上等號,台碩汽車與賓士汽車同樣是車,價格卻有天壤之別,有錢人寧願花大錢買賓士,除了虛榮心外,確實能感受到品質的不同;主管對程式品質也要負責任,建立制度做品管、經驗傳承、教育訓練、建立文化這些都是主管應做的。對品質負責任,並非是要大家消極的去追究bug製造者或清算他(們),更重要的是去找出bug給予修正,從別人的錯誤中學習,提昇自己,訓練自己,如果能做到下次不再犯就是對自己負責也是對組織負責,對歷史抱怨,改變不了任何事情,唯一改變的是別人對你的觀感。
 
「使用者操作問題」,這也是常聽到的錯誤原因。或許我們不會因為特殊使用者的操作特例(極少發生,影響極小)把程式拿起來大刀闊斧修改一番,但如果同一支程式或系統常常聽到「使用者操作問題」所以資料錯了,系統掛了,這樣的問題可能就要好好思考,是不是該找個時間檢視一下程式了。這些常發生「使用者操作問題」錯誤的系統,可能會有一些共同特徵,例如功能清單分類紊亂、操作介面繁瑣、用字遣詞語意不清、程式流程不順暢、過多人工判斷等等,這樣的設計表面上沒有bug,但卻缺乏人性化思考,我們會期望使用者依照我開發出來的介面依序輸入,按照我程式的流程依序操作,如果不這樣做而出現了存檔失敗或交易中斷的錯誤訊息,就會告訴User這是「使用者操作問題」,誰叫你們不照規定輸入,我來操作都不會出錯。
 
無法將程式優化成人性化介面,那只好加入防呆,顏色提示、游標指引、粗體字、精靈對話框、資料格式檢核、提示訊息....這些都是以『防堵』的角度來避免錯誤,以這個角度來進行程式設計,能有效達到避免錯誤發生,但卻可能因為過多的資料檢核與提示,讓原本簡單的操作介面變得複雜,可能讓使用者花了30秒把資料輸入完成,但卻花了2分鐘依照檢核提示訊息把資料改好。良好的程式介面是能避免掉這些錯誤的,繁瑣的操作程序在設計時期加入同理心,以使用者角度去想,化繁為簡,減少錯誤,並能提昇系統滿意度;你能控制程式邏輯,卻無法控制使用者大腦,因此能用程式幫忙做到的,盡量減少人為介入判斷,能用電腦就少用頭腦,良好的程式介面設計可以引導使用者的操作流程,在使用者還沒開始輸入資料時就能以各式的顏色、區塊、分類、說明等等來告訴使用者那些資料是重要的,那些功能是你下一步要處理的,哪一些資料是你現在無法使用的,出發前,就把路徑規劃好,比起先出發再來問路要來的有效率,雖然一樣可以到達目的地,但所花費的時間與成本卻是不相同。

lcjan 發表在 痞客邦 PIXNET 留言(0) 人氣()

工作環境資訊安全考量,需管制隨身碟使用,因此早在兩年前就開始尋覓禁用隨身碟技術文件,陸陸續續做了許多管制程式與機制,但始終不盡理想,終於在這星期,連續花了三天爬了很多網站,程式終於寫好了!

真是令人痛哭流涕,終於完成。程式不大,功能簡單,重點是"我自己寫的SourceCode",有完整程式碼,想怎麼改,想怎麼用都行,這才能未後續其他軟體的發展鋪路。

爬網站的過程中,我找到了一些相關工具,對禁用隨身碟這方面而言真的很棒,需要的人可以去下載:

USBDeview:
寫的功能非常完整,真的很厲害,能出報表,能接受外部命令

lcjan 發表在 痞客邦 PIXNET 留言(4) 人氣()

  話說我找管控USB隨身碟的技術已經找了一年多,一直沒找到滿意的解決方式,直到昨天,有些許進展,從阿兜仔的網站找到阿陸仔的網站,漸漸感受到,程式越寫越來越接近微軟。
 
昨天好不容易找的許多片段的Code,修修改改,從Delphi 6的Code改成Delphi 5可以Run,改了好久,終於Compile....Run!  哇終於!跑起來,正高高興的時候,進行第一次Debug分段執行:
TTT001.JPG 
在跑迴圈跑時F8(下一步)...F8(下一步)...F8(下一步)...一次一次按著

lcjan 發表在 痞客邦 PIXNET 留言(0) 人氣()

緣由
    出自一個奇怪的想法:「當磁碟代號被用完,插入一支隨身碟會如何?」。一直想找禁用隨身碟的原始碼,一直遍尋不著,今天瀏覽網站時突然有一個想法:『禁不了,就讓你沒磁碟機用!』,因此進行簡單實驗去驗證。
 
做法
    有兩個指令可以創造磁碟:Subst與Net 。

lcjan 發表在 痞客邦 PIXNET 留言(0) 人氣()

緣由:  
人事課每天需要操作刷卡鐘收取資料動作,藉由操作刷卡鐘廠商寫的程式把兩院區四台刷卡鐘的資料轉到文字檔中,但次動作必須由人工操作(開啟程式-->選擇刷卡結轉功能-->按下結轉扭),逢連續假日或人事課人員忘操作接收資料時,會導致刷卡中爆滿無法刷卡,因此請資訊室想辦法。

想法:   
1. 刷卡鐘廠商寫的程式是沒有SourceCode的。   
2. 想辦法要看看SourceCode(希望渺茫)。   

lcjan 發表在 痞客邦 PIXNET 留言(3) 人氣()

某天,在使用Word 2003時突然發現,微軟居然對我比較好,給了我兩個一樣的功能表,居然還運作正常,怪怪!

word 


lcjan 發表在 痞客邦 PIXNET 留言(0) 人氣()

   在程式設計的經驗中,我時常遇到一些資訊系統的問題,這些問題時常耗費一堆人的時間來除錯,寫程式的人應該常遇到這些問題,但遇到時又時常束手無策。

1. Windows藍底白字:
        


lcjan 發表在 痞客邦 PIXNET 留言(0) 人氣()

    若擔心程式碼跳出錯誤訊息而導致程式運作停止, 必須由人工去檢視與處裡錯誤訊息, 確實是會大大影響一線作業人員, 但不跳訊息的代價是什麼?就是凡出事就call 程式負責人, 要不自打開程式(系統組可能不行), 要不call 主管,不管誰來處理, 總是有人得開啟程式來追蹤錯誤, 不然請大家回答我"存檔失敗"背後所代表的原因為何, 錯誤又該如何解決? 光憑這四個字,要解決問題,只有燒香拜拜的份。

    大家有沒有仔細想想,微軟的Windows藍底白字那些Code是秀給誰看的?你高高興興的寫完了作業,在按下存檔的那一刻前,Windows給你一個"藍底白字",這會讓你很生氣,很無奈,也影響你的作業,也影響微軟在消費者心中的品質,微軟工程師大可不Show,他可以這樣做:Windows凡是遇到錯誤,就直接Reset,如果Reset不成功,則把畫面關閉。使用者一問,只要回答硬體不支援、主機板問題、顯示卡問題之類的話。當然微軟不是這樣做的,他們也想從客戶的是用習慣那邊會得一些未被微軟程式設計師察覺的錯誤,因此藍底白字雖然讓消費者生氣,但至少微軟工程師是有跡可尋的,因此Windows的Patch才能有很快的更新(尤其是安全問題)。因此軟體的使用者也必須支援軟體開發者來除錯,大家都是為了更好的軟體品質與更好的作業流程而努力。

        一線作業人所使用的系統順暢度非常重要,只要是程式設計在使用Try時遇到Exception,如果能不顯示錯誤,處理錯誤,那是不是代表這錯誤無關緊要,如果真無關緊要,那確實不要顯示,直接讓程式跑完,出現"存檔完成"不就皆大歡喜。但往往事情都沒那麼理想,既然是程式Exception,大部分都是嚴重錯誤,無法或不應該繼續執行才對,否則往往造成資料不一致、衍生更多Exception,甚至因為資料的錯誤導致其他系統更嚴重的問題。

     有沒有不能跳出錯誤訊息的程式呢?有的,無人操作,不能中斷的程式,大家熟悉的Broker程式就是典型。因為"無人"操作,Show訊息反而會導致程式執行停止,如果程式設計師的除錯方式是將程式跑起來,眼睛盯著看,從早看到晚,到下班前都沒錯誤,ok上線,一回家會發現,馬上被Call,因為Broker程式掛了。這又會有兩個原因:1. 程式設計師將錯誤攔截下來,把訊息Show在畫面上。2. 程式設計師沒有處理錯誤的程序,微軟替你把錯誤Show出來。那該如何處理呢?寫Broker的程式設計師如何除錯?
我的作法:
 

lcjan 發表在 痞客邦 PIXNET 留言(0) 人氣()

/////////////////// 更新技巧及注意事項//////////////
// 當Windows 98有用到造字時或開啟造字程式時會佔住EUDC.TTE ,故更新前必須想辦法欺騙Windows
// 1. 修改註冊檔: HKEY_CURRENT_USER\EUDC\950\SystemDefaultEUDCFont 之造字檔路徑與名稱
// 2. 開啟TrueType造字程式, 讓造字程式依照上述機碼找不到造字檔而自行產生新的, 如此Windows就會對EUDC.TTE解除鎖定
// 3  關閉造字程式

lcjan 發表在 痞客邦 PIXNET 留言(2) 人氣()

    上週因為某User電腦使用檔案交換,只要是該台電腦建立的資料匣在其他電腦都無法正常讀取資料,經查程式後發現應為日期轉換問題,也就是Delphi常用的日期轉換函示。原本用的很習慣的日期轉字串函示,有可能再使用者調整Windows日期格式選項後會造成程式誤判。
 
今日提供簡單測試給大家參考:
 
【WinXP預設狀況】

lcjan 發表在 痞客邦 PIXNET 留言(1) 人氣()

.如何知道Client端的Oracle版本:
    (1) 開啟CMD
    (2) 執行SQL-Plus 檢查版本
    (3) 如圖:
       

lcjan 發表在 痞客邦 PIXNET 留言(0) 人氣()

找更多相關文章與討論