Time of Update: 2018-12-08
下面的文字,有的來自自己微博上的記錄,有的來自散寫的文章,但總的來看都是自身這些年來的一些思考。也許對喜歡思考的人有點意思,所以匯總下。但也正因為時間跨度和來源比較雜,就沒什麼體系性了。 關於編程1.和世界格局一樣,軟體開發裡也是多維力量(商業、公司政治、技術等)在衝突,單純地鬥爭和避讓其實都不太行。 2.很多時候人們爭論是因為都不清楚問題自身。比如:軟體工廠可能嗎?軟體和工廠都是巨大且模糊的概念,A或B的理解中又為之注入了各自色彩,所以即使討論激烈,卻可能說的根本不是一個東西。這對腦子轉數快
Time of Update: 2018-12-08
讀代碼這事,先要分是精讀還是泛讀。從學習的目的來看,一定要精讀一定量的經典代碼。而精讀是指每行都讀懂,不看代碼腦子裡就能勾畫出程式的基本結構。這裡有個很形象的狀態,精讀代碼時會滿腦子都是代碼,放不下,甚至睡覺前腦子裡也是代碼。但這一篇裡主要不是關注如何精讀代碼的,而是關於如何在工作中掌握既有代碼的,等價於泛讀。 現存的很多系統往往很大,幾十萬行的可能也只算普通。這時候一旦加入了這樣一個項目,那麼如何去讀代碼?下面說點個人體會。 讀這類代碼前,先得把規格大致弄清楚,而不能上來就讀,比如:對於應用型
Time of Update: 2018-12-08
平庸是程式員的最大忌諱。大家可以看看最近出來的軟體開發人員薪資調查報告(http://www.programmer.com.cn/14918/)。讀過之後每個人的認知可能不同,有的人感覺我怎麼賺這麼少得跳槽,有的人感覺自己還可以,我個人的感覺就是上面那句話:平庸是程式員的大忌。在一個還不算老的行業裡,在一個相對較高收入佔比在20%~30%的行業中,沒有什麼比平庸更可怕的了。反倒是程式設計語言,資料庫這類影響因素並沒有想的那麼重。 這也就意味著當一個人紮到某個行業或方向中之後,如果確實這個方向值得
Time of Update: 2018-12-08
注釋是很重要的,特別在一些大公司裡,對於注釋的要求特別高,看一個程式員的水平高低,一般看他的注釋就能看出來,所以平常養成寫注釋的好習慣對應程式員來說是很重要的。一般注釋和原始碼的比例是1:1,甚至1:2或者1:3。
Time of Update: 2018-12-08
最近要用到Intel的media SDK播放H264視頻,發現intel的SDK轉碼出來的幀緩衝是NV12像素格式的,需要自己轉換成RGB32格式。雖然這種代碼網上找找一大堆,但還是自己動動手吧。google了一下轉換公式:C = Y - 16D = U - 128E = V - 128R = clip(round(1.164383 * C + 1.596027 * E))G = clip(round(1.164383 * C - (0.391762 * D) - (0.812968 * E))
Time of Update: 2018-12-08
說起GacUI(http://www.gaclib.net/,gac.codeplex.com),其實這個想法在我還在上大三的時候就已經有了。但是由於經驗不足,在當時並沒能夠把這個東西給做出來,直到去年(2011)的國慶節為止。想想到現在也做了快一年了,GacUI也可以用來寫一些不是特別殘暴的C++GUI程式了。前幾天有人問道,為什麼在PC都快完蛋了並且大部分GUI都已經用C#來做的時候,我還要做這個東西呢?其實,這有兩個原因:第一個我喜歡折騰C++;第二個C++好像也沒什麼特別好的GUI,因此
Time of Update: 2018-12-08
現象剛出道的朋友,特別是剛踏入社會的學生,總是希望今後幹活用的一定是自己熟悉的語言,當領導安排做其它的不同技術性活的時候,對於語言上的不同,心理上很排斥。對此,大可不必,年輕人多學幾門技術並不是壞事。不要想著在一門語言、一種技術上弔死。你可以精通一門語言,同時,你也可以熟悉更多的語言,與電腦世界做更親密的接觸。 我的起點我的編程起點從C++開始。大學做過一些比賽的軟體,也給外面的公司開發過產品。這一切都是基於Windows平台、基於MFC,那時,也學過linux,但覺得與自己很遠。作為學生時代的
Time of Update: 2018-12-08
近日拜讀了陳碩大牛的文章C++
Time of Update: 2018-12-08
大師曾說過, “Every game programmer has a engine”。沒聽過?好吧,是我說的。但我相信每個遊戲或者圖形程式的心中都有一個引擎,他也許從未能把它做完,甚至從未開始過,但是在他的心中總有一塊地方為此保留,在那編織他的夢想之翼,希望有一天能飛出曾經是他的夢想卻又令他感到乏味的生活,到達他的榮耀之地。即使他總是感覺力不從心,即使他知道也許永遠也沒法完成,但是他從未想過放棄。
Time of Update: 2018-12-08
經常在網站上看到有人抱怨:“微軟的技術怎麼更新這麼快,.Net2.0、3.0、3.5、4.0、4.5,我的媽呀,都跟不上微軟的步伐了!”“還沒學會Silverlight3.0,Silverlight4.0就出來了,Silverlight4.0還沒學會,5.0都出來了!好吧,我學了半天,聽說微軟要放棄Silverlight了,微軟你妹呀!”“微軟你能不能把技術搞成熟點,WebForm我剛掌握了,你出了個ASP.Net
Time of Update: 2018-12-08
對於動態分配記憶體,C裡使用malloc和free,C++裡使用new和delete,這兩個操作的主要區別在於new和delete能夠自動調用類裡的建構函式和解構函式.現在主要講new出來的對象記憶體,釋放記憶體使用量delete的格式. 學過C++的都知道,如果new一個單一的對象,如int * pInt = new int;釋放時要使用delete pInt 格式,不能使用delete [] pInt;而對於new多個對象記憶體時,如 int *pV =
Time of Update: 2018-12-08
“對這些重要檔案*注1的修改將立即被ASP.NET運行庫檢測到,並導致所有頁面被重新編譯。”——《精通ASP.NET程式設計 Programming Microsoft ASP.NET》第12章如上面所述,我們在修改設定檔Web.config時,因為所有頁面都會重新編譯,會導致短暫的服務中斷。這裡有一個方法可以避免: 將常用且有可能發生改變的配置都放在appSetting節中,如:Code highlighting produced by Actipro CodeHighlighter
Time of Update: 2018-12-08
前幾天同一個朋友閑聊,他說了個很有意思的觀點:我們不招北大清華的。 因為大家都經過高考的折磨,所以心裡對考上北大清華的都還是有點敬畏的,因此就追問了下原因。他的回答很簡單:我們得承認這兩所學校的人非常優秀,但跑到二線城市來的大部分都不能踏實做事,招了也不能用。 他說的踏實做事這點比較能引起我的共鳴,可能也有一定的代表性。 學校本身提供了一個起點,證明的也是過去,畢業後想證明自己還是得用事實說話。但確實有些人陷在過去的光環裡出不來,潛意識裡認為自己天生就是幹大事的,結果手裡的工作做不好,也就沒有了
Time of Update: 2018-12-08
上一篇主要談了一些基本理念,本篇將談談我個人總結的一些IOCP編程技巧。 網路遊戲前端伺服器的需求和設計 首先介紹一下這個伺服器的技術背景。在分布式網路遊戲伺服器中,前端串連伺服器是一種很常見的設計。他的職責主要有: 1. 為用戶端和後端的遊戲邏輯伺服器提供一個軟體路由 —— 用戶端一旦和前端伺服器建立TCP串連以後就可以通過這個串連和後端的遊戲伺服器進行通訊,而不再需要和後端的伺服器再建立新的串連。 2. 承擔來自用戶端的IO壓力 —— 一組典型的網路遊戲伺服器需要服務少則幾千多則上萬(
Time of Update: 2018-12-08
我們的網頁遊戲伺服器上線2個月了,一直運行平穩,沒出什麼重大BUG。前兩天剛更新了一個版本,結果今天早上GM報過來一個BUG,讓我折騰了整整一天。事情是這樣的,早上GM報告說某台伺服器上有玩家抱怨線上時間獎勵無法領取,用戶端上顯示線上時間已經到了,點擊領取伺服器卻報錯說線上時間不足。一開始懷疑是否用戶端計時和伺服器是否不同步,但很快排除了這個可能性。反覆實驗後發現是伺服器上的玩家線上時間一直沒有更新。查閱了一下伺服器代碼,玩家的線上時間變數是每隔60秒加1,這裡判斷時間間隔是用的系統的tick
Time of Update: 2018-12-08
前段時間接手了一個網路遊戲前端串連伺服器的開發工作,由於伺服器需要在windows平台上部署,並且需要處理大量的用戶端串連,因此採用IOCP來做為伺服器端的編程模型就成了不二選擇。雖然我對伺服器開發並不陌生,但我一直以來對IOCP抱著不屑一顧的態度,感覺這個編程模型太過複雜,並不是一個良好的系統設計,所以一直沒有用過。這回重新拿起來研究了一下,經過一個多月的研究和開發,目前伺服器已經基本完成,即將著手進行壓力測試。在研究的過程中,從網路上搜尋了IOCP的相關文章和教程不下幾十篇,開源的IOCP伺
Time of Update: 2018-12-08
乍暖還寒的春風正在撕裂我的臉蛋,天上飛來一張報紙。上面寫著:微軟發布了Silverlight 4 RC,沒有意外的話正式版將和2010在4月中旬發布。XBOX 360 通過XNA 4.0支援Silverlight,就是說大家可以在電視上看到Silverlight。Moonlight在Linux和Unix/X11系統上支援Silverlight,已經完成了2.0版本,可以運行QuakeLight。就是說大家可以在絕大多數電腦上看到Silverlight。 Windows Phone
Time of Update: 2018-12-08
好吧標題的第一個字應該改成我。我得回想下弄過幾個技術部落格,2個嗎,不對是3個,等等,好像還有忘了地址的。為什麼每個技術部落格總是弄了幾篇就不了了之了呢?而在mtime上的電影部落格則要長久的多,這個問題似乎值得我好好反思下。我想原因可能有如下幾點: 1.技術的發展,技術部落格的確是很容易過時的,因為技術本身是容易過時的,牛頓的話也就正確了兩百年就被發現是狹義的了。你信心勃勃的建立了《未來A世界》,可是A技術很快就風光不再了。這個部落格當然就悲劇了。
Time of Update: 2018-12-08
把一個把字串分解成命令列參數是很常見的操作,一直很納悶為什麼.net沒有提供相關的功能,自己寫一個又覺得麻煩。幸好windows提供了一個API來幹這個事情。不過這個API調用起來頗為麻煩,google了一下才找到方法。代碼貼上來,方便後來人使用。 代碼如下:Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->using System;using
Time of Update: 2018-12-08