Time of Update: 2018-12-07
這個項目是我為正在寫的新書所做的第一個例子,今天剛在Codeplex發布,希望大家多提意見項目的地址 http://www.codeplex.com/Dbscript 因為新書正在趕稿的緣故所以每日編譯改為每周編譯,我會在每周一將收集到的Bug做一次新的Release,等新書完成在添加新功能。如果對此項目感興趣歡迎聯絡我並加入這個Project這個項目主要的目的就是更加自然的操作資料,不要為了OO而OO。對Many to One,One To Many,Many to
Time of Update: 2018-12-07
這是手把手系列的第一篇,希望能夠開門紅,高手們可以離開了,菜鳥們請繼續這裡準備把一個類似ibaties的半自動ORM的設計和實現過程一步步地剖析出來,供菜鳥參考,功能很簡單,甚至我只能用簡陋來形容了,不過把一些關鍵點破後,希望後浪們不用再花功夫摸索了。為什麼我們要重複發明輪子?因為不親自經曆一遍發明輪子的過程就無法發明出風火輪^_^準備知識:首先要會用C#,如果不會請先去書店買書。要熟悉ADO.NET,我們不會去重頭設計oledb,所以所有的操作最終都是ADO.NET去完成的起碼知道什麼是XML
Time of Update: 2018-12-07
最近在做一個代碼產生工具,在製作的過程中,掌握了擷取資料來源的架構資訊,擷取資料來源的架構資訊是代碼產生工具的基礎。 擷取資料來源的架構資訊,網上有不同的方法,但我覺得都太複雜了,其實在.Net上,要擷取資料來源的架構資訊是件非常容易的事情,只要使用Connection對象的GetSchema方法就可以了。下面以SqlConnection為例,使用的是Northwind資料庫。Code highlighting produced by Actipro CodeHighlighter
Time of Update: 2018-12-07
此文完全有感而發,在網上看到很多介紹各類模板引擎的文章,但是我卻越來越感覺到很多時候我們所做的事情是在捨近求遠。什麼是模板引擎?說白了就是能夠自動替換預留位置的替換引擎。原理上也就是兩個步驟,找到-》替換。但是替換不是簡單的替換,包括:簡單變數替換();複雜變數替換();物件變數替換();索引值類型替換();自訂集合替換();同時顯示多個變數();模板調用();給調用模板傳參數();值模板();簡單迴圈();交差迴圈顯示();通過模板交差迴圈();條件判斷();從檔案中建立模板();常用的模板引
Time of Update: 2018-12-07
上次炮轟過了MVC,今次又來炮轟三層架構,感覺自己像是在到處貼大字報的紅衛兵^_^,不過理不辨不明,希望我的磚頭能引來更加精闢的闡述。
Time of Update: 2018-12-07
昨夜一夜未睡,本來以為下班回家能倒下就打呼嚕的,結果吃了晚飯後反而清醒起來了,於是決定把本打算明天寫的部分提前。半夜三更不睡覺幹嘛?出來假扮王祖賢阿根據前面的需求,我們發現需要將設定檔抽象出一個組件出來,緩衝需要一個單獨的組件,為了適應不同的資料庫需要做成一個外掛程式架構的,為不同資料庫插入不同的處理組件,為了降低反射的成本還需要一個組件用來包含介面定義,主類就是一個Loader為資料處理組件提供一個載入啟動的環境。這樣子我們定義程式結構如下主專案Yourname.db配置Yourname.db
Time of Update: 2018-12-07
之前的Post掀起掀然大波,砸磚者紛至遝來好不熱鬧。之前的Post觀點不夠明確,準確,先say
Time of Update: 2018-12-07
之前有同學翻譯了使用BuildProvider產生DAL的文章,又在網上搜尋了一下,感覺這是個很有意思的功能,最近在做點東西用到這個,的確讓我省了不少的事情。 其實Build
Time of Update: 2018-12-07
在我買車之前,早在還在用單車上班的時候,我就和電動車卯上了。在兩年前我騎單車,大清早穿梭於馬路和行人路間,這個時候電動車在我身邊呼嘯而過,這個時候我悲哀的發現,在下窄的道路上騎單車和電動車搶道是極不明智的行為,而且從那個時候起電動車有向大型化,重型化的方向發展,我一百四十多斤,顯然不是其對手。在我買車之後,我以為可以揚眉吐氣了,結果發現不過是作繭自縛,雖然塊頭佔優勢了,但是我不敢撞他了......於是在早上上班的堵車洪流中,電動車依然在我身邊呼嘯而過。更加悲哀的是,我不去撞他,他反而要撞我...
Time of Update: 2018-12-07
早上在用StringTemplate轉化一個html檔案的時候出錯,轉換出來一片空白,後來仔細一看,原來檔案裡引入了jQuery.jQuery使用了$而StringTemplate也使用了$作為關鍵字來定位變數,結果二位大神打架,我就遭了殃。我並沒有去仔細研究StringTemplate的原始碼,但是用一個單個關鍵字作為定位的依據卻是有點說不過去,這樣你的模板裡絕對不能出現$(專跟錢過不去)這一點不改似乎會嚴重製約StringTemplate的發展。其實都不用加$,直接在檔案開頭部分引入jQue
Time of Update: 2018-12-07
最近從項目組單離出來開始在公司實施過程化管理,整個QA
Time of Update: 2018-12-07
請DuDu允許我放半天首頁,以期有在微軟工作的大能放出StyleCop的下載的Url。此工具據稱是微軟內部使用,因為在MsBuild裡找到了她的芳蹤,但是到處都找不到下載。所以又在微軟工作的大賢,請幫忙放出這個工具。我們需要的是Source Code 的Check工具,而不是Assembly的Check工具。FxCop是很大能,但是對我們並不適用。如果大家對組態管理和代碼規範以及CodeReview有所心得,也請不吝賜教。
Time of Update: 2018-12-07
在商業上有一個虹吸效應,而且國人都有紮堆的習性,所以雖然想把自己的網站發揚光大,無奈三天打魚兩天晒網故而不見收成,看這裡人多我便也來佔個坑位。人懶,事多,故不能天天更新,但是希望能多多交流偷懶少寫代碼的技巧,雖然本人現在的主要工作不是寫代碼,不過就算是業餘愛好也不能為了該死的重複勞動耗費時間是不是,浪費時間是可恥的,我覺得程式員們應該努力少寫代碼從而把更多的事件投入到神聖的泡妹妹事業中去。
Time of Update: 2018-12-07
程式員和駭客有種天生地說不完道不盡的恩怨糾纏,很多計數很高超的駭客同時也都是技術高超的程式員,但是大多數程式員卻在同駭客做著生死抗爭,特別是編寫在公網上啟動並執行業務系統的程式員,更是步步小心.但是與駭客相比,程式員的制肘更多一些,駭客往往只需要一個漏洞就可以逍遙了,但是程式員卻要步提防,因為一個小漏洞就可能讓自己陷入麻煩.程式是一個有機的整體,並不是所有的代碼都無懈可擊了的時候就能高枕無憂了,很多時候看來安全的系統卻是到處都是口子,我們來看一個例子.
Time of Update: 2018-12-07
今天薑同學發表了http://www.cnblogs.com/ASPNET2008/archive/2008/08/13/1266942.html 這篇POST表達了對通過分層設計的概念無法解決系統耦合的問題。在之後andytao同學回複了對薑敏朋友的回複 一文作為回應我在看回複的時候感覺說得不太透,所以忍不住發此文從另外一個角度來試著為薑同學做一次解答。首先是從薑同學的疑慮開始。薑同學對分層主要是擔心增加了工作量缺起不到消除系統耦合的目的。所以我們首先就來談談耦合。------------
Time of Update: 2018-12-07
此文寫給所有還在迷茫中的初學者並歡迎高手進來討論。
Time of Update: 2018-12-07
這是很久前寫好的文字,閑得無聊就發上來,幾個月前的感想,上午一個群裡的朋友的發問讓我有了衝動把他發上來,雖然知道這裡藏龍臥虎,但是直覺似乎觀戰的小菜更多,於是就老一次臉皮吧。說架構師那是和鹵豆腐乾一般越老的越香,歸納歸納無非於薑是老的辣,老辣的設計處處體現二字,中庸,附贈二字,和諧,很多朋友在開始做設計的時候喜歡用先進技術,於是才學會了3層架構於是就開始忙不跌的,4層,5層,直到某日在一群驚聞7層,開始以為在討論網路問題,後來才發現某君在炫耀其精巧架構,大有不作成千層餅不罷休之勢。第二個例子是外
Time of Update: 2018-12-07
關於分詞得研究由來已久,最近看到部落格園裡類似文章不斷,於是想說說自己的看法。 對於分詞演算法,首先我覺得是一個數學和文學的問題而非編程技術的問題,肯到很多同學不厭其煩的孜孜不倦的追求最完美的分詞程式,其實我看大可不必,當然對於編程技術的完美追求是好的,不過應該是力氣用錯了地方。 最先看到的是《天書般的ICTCLAS分詞系統代碼(一)
Time of Update: 2018-12-07
最近有訊息說韓國電信已經在新的3G
Time of Update: 2018-12-07
為了新書寫了這個東西,費了4個晚上的時間來弄,代碼很亂,所以暫不放出代碼,在release beta版本的時候放出原始碼 主要是喜歡SubSonic的方便,又想能夠和ibaties一樣能夠自己控制Sql,所以主要是綜合,還有就是SubSonic需要資料庫連接,這裡只需要Create的指令碼就行了,同樣加入了Cache機制。 放出來是希望有興趣的朋友幫我測試測試,如果喜歡的朋友比較多我下周會架設一個SVN來共用代碼,也希望有時間的高手能提供自己的代碼。 下載:http:/