實質上鼓勵一下吧

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

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

網頁標準化的風潮使得懂用CSS美化網頁的人越來越多,基本網頁的輸出越來越簡化,美化的工作幾乎都交給了CSS來處理。當然每一家公司都有自己的標準,有了標準就是好的,遵循它就是了。我要說的是不要太過執著于網頁標準化。

相信大家都看過這樣的例子:

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

開發系統難免會需要使用到虛擬主機,我選用了visualbox這個免費軟體,用起來還蠻簡單的,而且直接支援虛擬DVD的功能,要裝軟體只要準備好iso檔就好了。裝好一個虛擬機器沒有甚麼問題,一切都很直覺兩下子就裝起來了,對外連線也不會有問題,不過卻會碰到你的主機連接不到虛擬機器的情況。

網路上有使用兩個IP和虛擬兩個網卡的方式,不過這樣非常麻煩,如果是在辦公室,你還需要跟網管去要可以用的IP。

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

在高階程式語言裏面的函數宣告,參數都可以用byval byref來將參數設定為傳值或傳位(也有人說是傳址,反正就是傳入參數的位址啦)。但javascript是個死硬派,堅持所有的參數都是傳值,只有物件才是傳位(事實上是物件這個變數裏面只保留了物件的位址,而我們拿的時候因為是物件所以直接就變成物件了,根本上還是傳值啦)。那麼有甚麼方法可以讓javascript傳回多個值呢?

第一種方法,使用全域變數,這個方法是簡單,但是很呆,如果這樣的東西一多,你的全域變數就滿街跑了。應該不用寫範例吧。

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

網頁的多國語文一直是個頭痛的問題,如果用程式碼硬幹,不外乎兩種策略,一個是使用資源檔,另一個是在資料庫中動手腳,用語文夾雜在欄位名稱上,然後根據所選語文挑選對應的欄位。不過這兩種做法都會讓原始碼變得難以閱讀。

不過這也都只是針對網頁上的固定文字進行多國語文的方案,對於內容是真的就很難。

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

我們在寫一些程式的時候,偶爾會遇到因為不同選項需要使用不同的程式,例如說需要設計給不同客戶的程式,主程式不變,但是處理的程序不同,以前的做法就是直接使用switch的方式來設計,但是一旦選項多起來,程式就非常的難以維護。

雖然這個方法在C++裏面是很普通的方式,但是如果不是一直研究程式寫法的話,往往不知道怎麼寫這樣的程式碼,只好用傳統的方法一直痛苦下去。

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

枚舉很好用,他可以讓我們寫程式更加的方便,不過在實際應用至輸出的時候,直接輸出值也不對,使用者看不懂,輸出對應的名字,又是英文而且還是個奇怪的變數型英文,也是看沒有。這時候就會想到寫一個轉換函數來對應它,但總覺得不是那麼的直覺。

   1: public enum ItemCreateType {
   2:     Porduction = 0,
   3:     Crossover = 1,
   4:     Mutation = 2,
   5:     Explosion = 3
   6: }

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

在開發程式的過程中,可能為了除錯方便,需要將執行的過程記錄到LOG檔案中,這樣的東西應該是大家所共有的方法。而且這樣的動作在每個地方都會發生,所以應該寫一個公用的物件來處理這件事情。

   1: public static class EventLog {
   2:     public static string FilePath { get; set; }
   3:  
   4:     public static void Write(string format, params object[] arg) {
   5:         Write(string.Format(format, arg));
   6:     }
   7:  
   8:     public static void Write(string message) {
   9:         if (string.IsNullOrEmpty(FilePath)) {
  10:             FilePath = Directory.GetCurrentDirectory();
  11:         }
  12:         string filename = FilePath + 
  13:             string.Format("\\{0:yyyy}\\{0:MM}\\{0:yyyy-MM-dd}.txt", DateTime.Now);
  14:         FileInfo finfo = new FileInfo(filename);
  15:         if (finfo.Directory.Exists == false) {
  16:             finfo.Directory.Create();
  17:         }
  18:         string writeString = string.Format("{0:yyyy/MM/dd HH:mm:ss} {1}", 
  19:             DateTime.Now, message) + Environment.NewLine;
  20:         File.AppendAllText(filename, writeString, Encoding.Unicode);
  21:     }
  22: }

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

在dotNET環境下要產生隨機亂數可以使用簡單的方法,但是當你在多執行緒環境時,產生出來的亂數始終不會很亂,似乎在同一個時間裏面所產生出來的亂數都是一樣的。

在網路上找了些解決方法,然後經過實做的改進,演變出一個可以重複使用的亂數產生器,這個原理是利用Guid.NewGuid()每一次所產生出來的結果都是不同的,在用它產生雜湊碼來當成亂數產生器的種子,這樣所產生出來的亂數就真的很亂了。

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

最近重新檢視一些程式,物件一多起來越寫越覺得心虛,總覺得程式變得有點混亂。整理的過程中發現一些特殊的方法,慢慢的釋出已經定案的。

以前在用[VB.NET實現多執行緒]這篇文章裏面描述了多執行緒的寫法,如果只是一個那也就直接利用就好了,複製貼上還是蠻簡單的,在整理類神經網路時,試著使用多執行緒去實現它,速度的確提高不少,但程式碼就是覺得不漂亮,於是發明了這個類別。

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

最近弄了部新電腦四核+SSD的硬體,由於我使用電腦主要是用來開發軟體,因此對於系統的環境有比較多的要求。原本以為SSD應該可以讓系統整體效能提高,的確再開機還有啟動軟體的時候速度快了非常多,但是瀏覽網頁量多了以後,明顯感覺速度被拖慢了,硬碟的燈不停的在閃,猜測是SSD的讀取速度很快,但是寫入速度太慢所造成的,因此開始研究這方面的訊息。

1.裝好Windows 7,主機板顯示卡等驅動

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

在寫多執行緒的時候,通常最大的問題就是除錯困難,可以利用#if的語法將除錯模式(debug)和發佈模式(Release)分開,例如:

   1: #if DEBUG
Technorati 的標籤:

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

物件導向程式寫作聖經上面都會說,寫屬性的時候你不應該直接宣告public變數,還是應該用標準的屬性宣告寫法。但是很多明明就是很簡單的一個訊息類,也因為要符合這個規則弄得整個程式變成很大隻,反而失去了容易閱讀與維護的目的。這個時候你可以使用簡單的方法來宣告屬性。

Technorati 的標籤:

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

每個程式設計師都會有一套自己的程式庫,爲了叫用方便通常都是寫成static class,這樣就可以不用建立一個類別庫實體就可以直接使用它的方法。而其中有些方法(其實只是函數,因為通常跟這個類的命名關係不大,反正就是全部丟在一起)是用來擴充原來.NET所提供的類別。以台灣人來說,最常見的就是轉換成民國年。

   1: public static string ToROCDateString(this DateTime value, string separator) {
   2:     int yy = value.Year - 1911;
   3:     return string.Format("{0}/{1:00}/{2:00}", yy, value.Month, value.Day);
   4: }

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

在現在的應用程式開發中,經常會使用到樹狀結構,但是因為樹狀結構有許多種形態,而C#內建的物件又似乎找不到這樣的類別,每一次都要重寫很是麻煩,於是發起想寫一個的念頭。

   1: public interface ITreeNode {
   2:     void AddChild(ITreeNode newChild);
   3:     void Remove();
   4: }
   5:  
   6: public class TreeNode: ITreeNode {
   7:     public ITreeNode ParentNode = null;
   8:     public List<ITreeNode> Childs = new List<ITreeNode>();
   9:  
  10:     public void AddChild(ITreeNode newChild) {
  11:         ((TreeNode)newChild).ParentNode = this;
  12:         this.Childs.Add(newChild);
  13:     }
  14:  
  15:     public void Remove() {
  16:         foreach (ITreeNode childNode in this.Childs) {
  17:             childNode.Remove();
  18:         }
  19:         ((TreeNode)this.ParentNode).Childs.Remove(this);
  20:     }
  21: }

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

雖然HTML發展到現在已經好幾代了,但是對於日期輸入還是沒有什麼好方法,很多網站都是採用下拉輸入盒來表現,表面上看起來似乎很不錯,不會有輸入錯誤的狀況發生,但是卻讓使用者必須眼鏡盯緊下拉盒看,實在不是什麼值得推薦的方法。

以前我曾經包裝javascript、文字輸入盒、圖形按鈕變成一個Asp.Net Server Control,確實可以節省很多的開發時間,其實還有很多類似的在頁面上經常使用的動作或元件,需要進行進一步的包裝,當數量多起來真的是蠻痛苦的。

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

幾乎所有會寫網頁的人都能夠寫上幾行的javascript,讓按鈕或鏈接按下去之後做點小動作成了網頁設計的基本功。漠哥由於在專案角色上的關係,通常要寫一些公用程式讓大家來使用,而由於物件導向程式寫法的優點,在寫javascript程式時也儘量的使用物件導向方法。由於以往javascript使用物件方法撰寫程式的人並不多,能夠參考的文件非常有限。我也就局限在寫個類別,加點屬性和方法,但是寫出來的程式已經讓很多人看不懂。

最近jQuery突然爆紅,除了它能夠讓我們更容易的撰寫功能更加強大的javascript以外,它更揭示出javascript使用物件導向方法撰寫程式的各種方法,深入研究jQuery的程式寫法或許是提升自身程式設計功力的另一個重要途徑。

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

最近在改寫一些常用的工具,讓他成為server control以加快程式的開發,順便檢視以前所寫的程式。

首先改寫常用的document.getElementById(object_id)改成jQuery習慣的,$(id_name),可以讓整個程式看起來簡潔很多。

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

這類的文章很多,在visual studio裏面的每日新聞找到的,由於蠻經典的,先收錄起來

改善網頁下載時間的最佳做法

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

使用Visual Studio建立專案應該是個再簡單不過的事情了,但是簡單的事情裏面也會有些小技巧。如果你只是拿Visual Studio來玩玩,寫點小程式,那麼按照一般書上的說明去做沒有什麼問題,一旦專案的數量變多了,那麼建立專案就有點技巧需要去考慮。

 建立專案1

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

既然會寫到事件,自然就是程式已經到了大量使用物件導向方式設計的情況,但是在.NET的開發環境底下,事件實際上是沒有辦法被繼承,也沒有辦法由被繼承的物件所觸發的,也就是說,新衍生出來的物件,並沒有辦法對基類的事件做動作。

但是在實際設計程式的時候,偶爾就會有這樣的需求。這樣的需求是有一個標準的做法的,這一篇文章用C#來做例子解釋,實際上VB也是差不多的原理。

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

找更多相關文章與討論