2011年8月31日星期三

二進位讀寫器 BinaryReader類別 / BinaryWriter類別

.NET Framework提供了BinaryReader與BinaryWriter用來處理二進位資料對資料流的讀寫,以下是用C#寫的範例。

儲存二進位檔案步驟如下:

第一步:引用File類別開啟檔案,引用至FileStream類別


15 Exercises for Learning a new Programming Language

15 Exercises for Learning a new Programming Language by: Prashant N Mhatre

I've working knowledge of a bunch of programming languages but job demands to learn a new language frequently in a short time. Instead of reading hundreds manual/book pages, I quickly read 10-15 pages of tutorial or primer. (As you know google is the best search engine to look for such stuff). I keep printed copy of the language syntax reference card handy. (There are many reference cards available over internet. Type in 'language to learn' + 'reference card' in google.)


First of all, get familiar with Compiler, compiler option, editor shortcuts or integrated
development environment (IDE). Start with a simple 'Hello World' program. Compile it. Use basic functionalities of debugger like setting break points, printing variable values, moving to the next or specific position, stopping debugger etc.


To grasp basics of a new language quickly, here are the exercises I use. Remember some programs may not good for beginners.

2011年8月29日星期一

[轉載]宏達電前執行長卓火土的取捨學

八月三十日,半年報公布,宏達國際電子(簡稱宏達電)以每股稅後盈餘十一‧五四元,打敗上市櫃公司榮登獲利王,股價也創歷史新高,以三百六十九元(九月五日收盤價)打敗茂迪,榮登股王,外資法人甚至看好喊出「五百元」目標價。

成立才八年,宏達電就拿下兩個全球產品第一:PDA(掌上型電腦)與智慧型手機。今年美國《商業週刊》全球科技一百強中,HTC(宏達電英文)這三個字更是打響國際,名列最快速成長第十名,股東權益報酬率更高居第三名,一連串的「世界級」驕傲,「龍頭地位難以取代。」美國《商業週刊》如此註解。

但這家世界級公司的執行長卓火土竟選在亮麗財報公布的這一天,同時宣布退休,消息一傳開,立刻在市場上投下深水炸彈,疑問的水花四起。

五十五歲的卓火土,人生路才走一半,竟然選在事業最高峰轉身下台,淡出自己一手創辦、才滿八歲的公司。

網路通訊大廠斯普林特(Sprint)前任執行長曾說:「至少有四分之一的執行長沒有做好退休的準備,他們不能接受自己不再是最高領導的現實,這種恐懼總是困擾著他們。」權力就像嗎啡,要放棄,談何容易?權力越大,割捨越痛。

然而,對卓火土而言,放下辛苦鑄造的皇冠,換得的卻是他渴望了三十年的自由。

四天後的早上,卓火土不到七點就起床,開著黑色Lexus到新竹的大學上EMBA課。人稱「阿土伯」的他,穿著深藍色POLO衫、戴電子表、拿著黃色紙袋,講話慢條斯理,腳上穿得還是已褪色的休閒鞋,看不出是個股王公司創辦人。上課時,只見他坐在右後方一邊聽著老師上經濟學,一邊低頭勤抄筆記。在休息時間一派輕鬆與同學有說有笑地聊天,完全在風暴之外。

「現在我真的像一隻鳥。」放學後,卓火土坐在教室旁的草地上接受《商業周刊》獨家訪問。他一改平時拘謹形象,難得笑著細數自己的人生。過去的他,太追求完美與細節,就像活在牢籠裡的鳥,空有雙翅卻無法高飛。如今他選擇高點退下,是因為在自由與完美之間,他選擇了前者。

就像所有卓越企業一樣,背後都有一個追求完美的企業家,卓火土能夠成就今日的宏達電,背後驅動力也來自「完美工程師」的性格。

當工程師的阿土伯 深夜在辦公室,點著小燈研究產品

以第一名考進台北工專的他,不太與同學來往,他總是一個人窩在圖書館念書,而且對數學尤其有興趣,常常拿數學題目來考自己。 畢業後,他進入當時全球最大電腦製造商迪吉多,短短七年間,卓火土就從一個維修工程師連跳十六職等,打破紀錄升上處長。「我的方法就是做到最好。」卓火土表示。

過去迪吉多的員工都知道,公司有個卓工程師,常常十一點在一片漆黑的辦公室裡點著小燈,研究產品。有時回家都凌晨兩點,他會先偷看老婆睡了,一個人就躡手躡腳到客廳繼續開盞小燈研究。

四十七歲時,因為迪吉多陸續賣掉獲利的部門,身為總工程師,帶領著三百人的卓火土決定離開迪吉多,另闢天空創立宏達電。從他的第一份工作維修工程師做起,到頭髮花白離開迪吉多,卓火土二十年來只做一件事:「工程師」,而且,做得如魚得水。

也因完美工程師的血液,使宏達電初試啼聲就能迅速竄起。一九九五年,整個PDA市場九成以上是Palm系統,微軟的Win CE介面的Pocket PC才剛起步。但卓火土大膽預言未來Win CE會大紅,不顧當時其他雜音反對,全心投入研發。

然而看對市場之餘,若沒有卓火土巨細靡遺貫徹執行力,成事也難。那時,產品零件超過一千種,還要整合軟體,等於重新打地基。就像黑白手機進入彩色手機時帶動的市場震撼,宏達電是市場上首家推出彩色PDA的廠商。在一片黑白的PDA與低解析度單色面板產品堆裡,宏達電生產的PDA直接挑戰彩度與解析度最高的LCD螢幕。

要新處理器、新電池和新的面板全都結合在一起,解決上千個軟硬體加總數十萬個衝突點。這難度如一個羽量級選手的處女秀就直接挑戰世界拳王。但每一個細項零件都是卓火土帶領工程師挑燈夜戰研發出來,當時台灣PDA的供應鏈不完整,為了做出參展的產品,卓火土還親自帶隊翻遍國內找適合的模具廠配合,甚至還自己親自用縫衣針把產品裝好。

終於在一九九七年十一月,公司成立半年後製作出第一個Pocket PC,產品一參展,立刻驚豔市場,甚至贏得微軟總裁比爾‧蓋茲的稱讚。

當時最令微軟最感動的是,幾乎所有電子大廠如惠普、飛利浦等都曾誇下海口說要做Win CE產品,派出全球上千位菁英,但最後都敗給窩在台北小辦公室的十多名宏達電員工,從此,宏達電取得微軟大廠的支援,一夕成名。

當老闆的阿土伯 客戶看不出的瑕疵,也要回收重做

這四年來,宏達電研發工程師從三百人變成目前千人的規模,許多新進工程師都有一個共同的感嘆:「那些連客戶都不見得會發現的瑕疵,若在老東家一定正常出貨賣掉,宏達電卻要拿回來重做!」這就是卓火土的完美精神。

任何產品只要抓到一個瑕疵(bug),不論多細微都不能賣給客戶,因為在他的字典裡,每個演出都要做到完美。一個經典例子,有一次整批貨已經送到中正機場,準備報關上飛機了,因為在液晶顯示螢幕上發現一個連肉眼都看不出來的刮痕,卓火土當場一通電話要求整批貨撤回工廠,向客戶報告延遲出貨。「當時我們公司的同仁就花了四十天,每個每個拆開重新檢查才弄好。」宏達電經理陳美真回憶,卓火土寧願賠款也要堅持品質。

別人的完美只要一百分就夠,「對我而言要一百二十分,多二十分才完美。」卓火土認為,這樣才有競爭力。即使是最細微末節,與他無直接關係的領域也要全盤了解。換言之,一%的失誤之於他都像千倍般巨大。就連平常與人說話,卓火土也要思考很久,到底要怎麼說才最適當!他是這麼深怕說錯一個字,也因此,給人口拙的印象。

2011年8月23日星期二

[轉貼] Ruby On Rails 網站開發感悟

原帖地址:http://dev.csdn.net/author/koalant/9cb229dc3f3c41d7828f0a9b9cb41b57.html

獨自一人花費了將近三個月的時間來做一個音樂網站(http://www.likenote.com ), 這對任何一個有過幾年Web開發經驗的人來說都不是件什麼太難的事。雖然我也做了 4 年J2EE開發,但還是頭一次使用全新技術來製作一個網站,這其中的辛苦卻有點出乎我的意料之外。我大部分編程經驗在 Windows 平台上,而這之前經過一番考察確定的技術方案,從操作系統,數據庫,Web 服務器,到後台技術都是我不熟悉的。

只裝過幾次 Redhat Linux 我突然要去管理一個 Unix 服務器,還要作性能優化,編譯內核,學習防火牆技術。
只使用過 Windows 版本的 Mysql 的我要去管理一個從未使用過的開源數據庫。
只裝過 Windows 版本的 Apache 的我要去配置一個完全陌生的 Web 服務器。
只撰寫過一篇 Ruby on rails 文章的我(RoR 的經驗僅僅限於那篇 Oreily 的教程),要使用它去開發一個完整網站。

雖然這並非很困難的事情,但是需要的是時間,我定下的開發時間是兩個月,結果超出了一個月,實際花費在 ROR 開發上的時間只有3個多星期(RoR 的開發效率可見一斑),大部分時間在學習,學習上述的各種知識,它們對我來說都是陌生的,其中花費在學習服務器管理的時間就有一個多月,Rails 的學習花費了半個月(當然是讀那本 Rails Book, 還有 Rails Recipes),還有 web 服務器和數據庫也花費了一點時間。雖然網站的雛形已經出來,而且已經上線,但是我感覺真正的工作才開始。這將近三個月的學習和開發,自己總結了一些經驗, 對於那些打算獨自開發 Web 項目的人可能有些借鑑作用。

1:首先也是最重要的一點:
做一件事情的熱情遠比完成它所需要的技術更加重要。
如果沒有熱情,就算是碰到一點小困難,你也會放棄,相反,就算是再大的困難你也能克服。

2:儘量不要到國內的任何技術論壇去提問,這既浪費自己的時間,也浪費別人的。
因為通常簡單的問題搜索網絡就能找到,反倒會招來嘲笑;複雜的問題也不會有人給你解決,通常論壇上也可能解決不了。最好的方式是自己從 Google 上搜索。(這是經驗談)

3:CSDN 上的這篇文章非常好,雖然是轉載自國外的。
http://java.csdn.net/n/20060710/92484.html

其中我對第 6,11,15 條的感觸最深。引用如下

15. "Build, learn, and make mistakes as you go--you'll know more about what you're doing as you're doing it, instead of before you do it." - Jason Fried, 37 Signals, advocating iterative development


「一邊做,一邊建造、學習和犯錯誤——對你正在做的事情,你只有做了才會懂得更多,而不是事前空想。」——37Signals的Jason Fried鼓吹反覆前進



註解:

國內程序員之間喜歡談論技術的人多,真正悶頭做事的人太少;各種論壇上相互爭吵,辯論的多,寫代碼的人少。我也曾經是這樣的人,很多東西都是停留在 想法上,開始對 RoR 的顧慮也很多,性能啊,擴展啊。在網上搜索到很多這樣的辯論,曾經動搖過我使用 ROR 的決心, 但是最終開發效率這一點最終佔了上風。 其實仔細想想,你如果不喜歡一個東西,會找出有很多原因,如果喜歡它,一條理由就足夠了。邊學習邊做的確是個好的方式,應該算是 Agile 的工作方式吧。那些考察討論再三再開始做事的方式道像是 RUP 了。


11. "I like Google the best, they're the cleanest. Others are trying to take your attention away from what you're trying to focus on so it's counter productive to go to those sites." - Sasha, age 18, explains why it's smart to adapt to your customers instead of forcing them to adapt to you


「我最喜歡Google,因為他們最乾淨。其他的網站則試圖把你的注意力從你想要關注的東西移開。去那些網站不會有任何收穫。」——18歲的Sasha指出,適應用戶的習慣比起強迫用戶去適應你的習慣要聰明得多

6. "Traditionally, people think more is better. More may work, but it's painful, expensive, very cold-war. Think about one-downing people, underdoing your competitors." - Fried coins some new verbs


「傳統上,人們認為多就是好。多也許能行,但它是費力的和昂貴的,充斥著冷戰思維。想想看,可不可以向用戶少提供些功能,比競爭對手更簡單一點。」——Fried創造了一些新提法

這兩條的理念是相同的,所以放在一起註解
註解:
這點的確很重要,我在開來始做網站的時候,界面設計選用了很複雜的頁面模板,想到各 種花哨的技術來堆砌它。後來覺得人家來你網站無非是推薦音樂,聽音樂,評論,搜索,真正經常操作的就是這麼一些簡單功能,鼓搗花哨概念和技術的想法可能從 最開始就是在遠離你的用戶。這的確是應該儘量避免的,如果不是讀到這條,我可能也不會中途改版。


3:Ajax 看上去很美,但是它應該限制在某些特定功能的網站上(比如 Gmail, Google Map),整個網站採用它應該是不合適的。而且瀏覽器之間兼容的問題的確還是存在的。RoR 提供了非常簡單的 Ajax 使用方式,有時候你會忍不住去採用它(Rails Recipes 這本書上充滿了各種「奇技淫巧」),但是在做之前千萬要考慮一下,這樣做是否會給你的頁面帶來複雜性和服務器性能上的問題。在開發這個網站的開始,我也試 驗了很多 RoR 的Ajax 技術,但是後來都取消了,只保留了一個最簡單的首頁「最新留言」的動態顯示功能。因為這個功能的確很有用。我將網站定位為一個多媒體的應用,所以採用 Flash RIA 來製作前端可能會更好, 整個網站採用 Flash 做前台比整個網站採用 Ajax 做前台更合理。原因如下:
1:Flash 比 Ajax 更成熟
2:Flash 有組件

4:如果你一個人製作整個網站,那麼採用 RoR 是非常好的選擇,原因當然是開發效率。整個網站從最開始有想法,到最終完成花費了三個月,其中學習時間佔據了大部分,那麼幾個星期的開發時間就相當緊張 了,如果採用 Java 可能根本無法想像。 其實搭建這麼個音樂網站的想法,早在2001年就有了,我先後在論壇上推薦了四年的音樂,兩年在博客上寫音樂推薦。這期間我不是沒有自己開發一個網站的想 法,但是用 Java 實現起來太麻煩,我很多想法只是停留在腦海中,大部分時間用在考慮實現了,再加上我是個極為懶惰之人,看到那麼麻煩的事情就不做了,直到 RoR 的出現,才使得這個網站得以完成。RoR 的好處在於:如果你有什麼想法,你總是能很快的實現,只要你掌握了基本的技術,你就可以發揮你的想像來建設你的網站。 首頁上泡泡框顯示訪客留言摘要的功能是我在一天早上5點醒來的時候想到的,爬起來用了兩個小時就完成了它,很多人反映這個東西很好玩。

5:Web 2.0 的網站現在實在是太多,已經把整個市場搞壞了,前幾天一個以前公司的朋友和幾個人一起開了個公司,也是做 web 2.0 網站的,興高采烈地把剛剛上線的網站地址給我,我一看,又是這種似曾相識的模板,似曾相識的應用。這種 Web2.0 站點的趨勢就是:早期的ewb2.0國內站點抄襲國外的知名站點,後來的新進者抄襲國內已經成名的web2.0站點。如果這樣的網站也有人投資那才叫怪 了。 本來我也有開發網站尋找投資的想法,但是實在是想不出什麼贏利模式,我也做不來這些寫計劃書的事情,還是自己憑興趣做的好玩。朋友都說我的網站頁面不適合 商業站點,讓我趕緊換了,我心裡很清楚什麼是他們說的商業頁面模板,但是他們都說好,可我偏不喜歡。沒法,還是按照我的想法來改造它吧。只要自己上班找個 工作養活這個網站,或者更好的情況是,它能自己維持自己,這我就心滿意足了。

6:現在的 RoR 實在是太火了,大有大家同上一條船的架式,搞 RoR 的人以它為榮,以搞 Java 為恥,估計也能寫出個八榮八恥。但是它只是一種技術,眾多後台技術中的一種,網站的訪問者並不會因為你使用了 RoR 就給你掏錢,甚至是留下個好印象。網站的內容是主要的,掌握了它並不意為著能製作一個好網站。常言說:擁有鎯頭並不意為著你就是個建築師 ,也不能讓滿地都是釘子。要麼你去給人敲釘子為生,或者指導別人如何敲釘子,再或者找到一個好木場自己建個房子。「去 RoR 化」可能是我要做的下一個工作,把前台用 Flash 重建,採用 RoR 的 builder view 技術來傳遞信息。我個人感覺這個音樂網站有個好的想法,不管它是否能掙錢。首先是音樂推薦的確能給人帶來快樂,做這樣的網站才有趣。技術應該是實現你想法 的工具,如果網站成為技術的試驗品,對我來說就沒有什麼意思了。

2011年8月22日星期一

C#的WebSocket Client Implementation

隨着HTML5的興起和普,WebSocket在網絡上也愈來愈重要,以下是一些C#的WebSocket Client推介:

2011年8月21日星期日

Python vs Ruby

Both Python and Ruby are supported by .NET. People may frustrated which one should be learn. Here are some differences between the two.

1) Ruby has blocks; Python does not.

2) Python has functions; Ruby does not. In Python, you can take any function or method and pass it to another function. In Ruby, everything is a method, and methods can't be directly passed. Instead, you have to wrap them in Proc's to pass them.

3) Ruby and Python both support closures, but in different ways. In Python, you can define a function inside another function. The inner function has read access to variables from the outer function, but not write access. In Ruby, you define closures using blocks. The closures have full read and write access to variables from the outer scope.

4) Python has list comprehensions, which are pretty expressive. For example, if you have a list of numbers, you can write


2011年8月19日星期五

ASP.NET 防駭指南

雖然ASP.NET比ASP安全,但依然有比駭的機會
Run PC上有一篇不錯的文章講如何防避

2011年8月18日星期四

PHP的HTTP Header

PHP的header() Function:

// See related links for more status codes

// Use this header instruction to fix 404 headers
// produced by url rewriting...
header('HTTP/1.1 200 OK');

// Page was not found:
header('HTTP/1.1 404 Not Found');

// Access forbidden:
header('HTTP/1.1 403 Forbidden');

// The page moved permanently should be used for
// all redrictions, because search engines know
// what's going on and can easily update their urls.
header('HTTP/1.1 301 Moved Permanently');

// Server error
header('HTTP/1.1 500 Internal Server Error');

// Redirect to a new location:
header('Location: http://www.example.org/');

// Redriect with a delay:
header('Refresh: 10; url=http://www.example.org/');
print 'You will be redirected in 10 seconds';

// you can also use the HTML syntax:
// header('Content-Transfer-Encoding: binary');
// load the file to send:
readfile('example.zip');

// Disable caching of the current document:
header('Cache-Control: no-cache, no-store, max-age=0, must-revalidate');
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past
header('Pragma: no-cache');

// set content type:
header('Content-Type: text/html; charset=iso-8859-1');
header('Content-Type: text/html; charset=utf-8');
header('Content-Type: text/plain'); // plain text file
header('Content-Type: image/jpeg'); // JPG picture
header('Content-Type: application/zip'); // ZIP file
header('Content-Type: application/pdf'); // PDF file
header('Content-Type: audio/mpeg'); // Audio MPEG (MP3,...) file
header('Content-Type: application/x-shockwave-flash'); // Flash animation

// show sign in box
header('HTTP/1.1 401 Unauthorized');
header('WWW-Authenticate: Basic realm="Top Secret"');
print 'Text that will be displayed if the user hits cancel or ';
print 'enters wrong login data';

[轉]做HP-UX技術多年的感悟:IT人士之成功之6大步驟

序言:經過UNIX多年的洗禮,認識了這裡這麼多的JJMMGGDD,前幾天剛得到移民簽證,
無限感慨。
面對未來,我也不知道我31歲如何發展,尤其是我現在在北京還算過的去,各種機會都紛至沓來。
無論如何,我相信,世界上各種事物都有他們自己的原因,也結合自己在北京接近8年的感悟,寫一個總結,我相信,世界上只要有人,無論是什麼皮膚,總有人性可以探索,人作為「天生的政治動物」的本性,都是有規律可以總結的。
關於我的公司,背景,大家也不用猜測,我只是一個普通的IT技術人員
希望大家可以從我寫了幾天的文章裡獲得共鳴,希望愛好技術,喜歡哲學,喜歡思考的哥們多交談,認識幾個好哥們的價值要比認識幾個美女強100倍啊

[轉]IT人士 不能一輩子靠技術生存

來源於網絡,僅作自娛自樂之用,不可大信,淡定的繼續開發程序...

我現在是自己做,但我此前有多年在從事軟件開發工作,當回過頭來想一想自己,覺得特別想對那些初學JAVA/DOT.NET技術的朋友說點心裡話,希望你們能從我們的體會中,多少受點啟發(也許我說的不好,你不讚同但看在我真心的份上別扔磚頭啊)。

  一。 在中國你千萬不要因為學習技術就可以換來穩定的生活和高的薪水待遇,你千萬更不要認為哪些從事 市場開發,跑腿的人,沒有前途。

  不知道你是不是知道,咱們中國有相當大的一部分軟件公司,他們的軟件開發團隊都小的可憐,甚至只有1-3個人,連一個項目小組都算不上,而這樣 的團隊卻要承擔一個軟件公司所有的軟件開發任務,在軟件上線和開發的關鍵階段需要團隊的成員沒日沒夜的加班,還需要為測試出的BUG和不能按時提交的軟件 模塊功能而心懷忐忑,有的時候如果你不幸加入現場開發的團隊你則需要背井離鄉告別你的女友,進行封閉開發,你平時除了編碼之外就是吃飯和睡覺(有錢的公司 甚至請個保姆為你做飯,以讓你節省出更多的時間來投入到工作中,讓你一直在那種累了就休息,不累就立即工作的狀態)

  更可怕的是,會讓你接觸的人際關係非常單一,除了有限的技術人員之外你幾乎見不到做其他行業工作和職位的人,你的朋友圈子小且單一,甚至破壞你原有的愛情(想像一下,你在外地做現場開發2個月以上,卻從沒跟女友見過一面的話,你的女友是不是會對你呲牙裂嘴)。

  也許你拿到了所謂的白領的工資,但你卻從此失去享受生活的自由,如果你想做技術人員尤其是開發人員,我想你很快就會理解,你多麼想在一個地方長期待一段時間,認識一些朋友,多一些生活時間的願望。

  比之於我們的生活和人際關係及工作,那些從事售前和市場開發的朋友,卻有比我們多的多的工作之外的時間,甚至他們工作的時間有的時候是和生活的 時間是可以兼顧的,他們可以通過市場開發,認識各個行業的人士,可以認識各種各樣的朋友,他們比我們坦率說更有發財和發展的機會,只要他們跟我們一樣勤 奮。(有一種勤奮的普通人,如果給他換個地方,他馬上會成為一個勤奮且出眾的人。)

  二。在學習技術的時候千萬不要認為如果做到技術最強,就可以成為100%受尊重的人。

  有一次一個人在面試項目經理的時候說了這麼一段話:我只用最聽話的人,按照我的要求做只要是聽話就要,如果不聽話不管他技術再好也不要。隨後這個人得到了試用機會,如果沒意外的話,他一定會是下一個項目經理的繼任者。

  朋友們你知道嗎?不管你技術有多強,你也不可能自由的騰出時間像別人那樣研究一下LINUX源碼,甚至寫一個LINUX樣的傑作來表現你的才 能。你需要做的就是按照要求寫代碼,寫代碼的含義就是都規定好,你按照規定寫,你很快就會發現你昨天寫的代碼,跟今天寫的代碼有很多類似,等你寫過一段時 間的代碼,你將領略:複製,拷貝,粘貼那樣的技術對你來說是何等重要。(如果你沒有做過1年以上的真正意義上的開發不要反駁我)。

  如果你幸運的能夠聽到市場人員的談話,或是領導們的談話,你會隱約覺得他們都在把技術人員當作編碼的機器來看,你的價值並沒有你想像的那麼重 要。而在你所在的團隊內部,你可能正在為一個技術問題的討論再跟同事搞內耗,因為他不服你,你也不服他,你們都認為自己的對,其實你們兩個都對,而爭論的 目的就是為了在關鍵場合證明一下自己比對方技術好,比對方強。(在一個項目開發中,沒有人願意長期聽別人的,總想換個位置領導別人。)

  三。你更不要認為,如果我技術夠好,我就自己創業,自己有創業的資本,因為自己是搞技術的。

  如果你那樣認為,真的是大錯特錯了,你可以做個調查在非技術人群中,沒有幾個人知道C#與JAVA的,更談不上來欣賞你的技術是好還是不好。一 句話,技術僅僅是一個工具,善於運用這個工具為別人幹活的人,卻往往不太擅長用這個工具來為自己創業,因為這是兩個概念,訓練的技能也是完全不同的。

  創業最開始的時候,你的人際關係,你處理人際關係的能力,你對社會潛規則的認識,還有你明白不明白別人的心,你會不會說讓人喜歡的話,還有你對 自己所提供的服務的策劃和推銷等等,也許有一萬,一百萬個值得我們重視的問題,但你會發現技術卻很少有可能包含在這一萬或一百萬之內,如果你創業到了一個 快成功的階段,你會這樣告訴自己:我幹嗎要親自做技術,我聘一個人不就行了,這時候你才真正會理解技術的作用,和你以前做技術人員的作用。

 

Everyone knows that Google Adsense is the no:1 contextual advertising network in the Online Advertising field. A lot of people are making thousands of dollars each day from Google Advertisements mainly because they’re following the Adsense guidelines perfectly. However, there are a few people unknowingly neglect the Adsense ToS and will be banned by Google from the Adsense.

This is where the question “Best Google Adsense Alternatives” arise.Webmasters or bloggers actually opt for Google Adsense for two reasons.

  • Banned from Google Adsense
  • Earn additional income apart from Google Ads

Whatever may be the reason, I am listing here the best adsense alternatives that pay high (based on my personal experience and a few inputs from other publishers).

2011年8月17日星期三

[轉載] Mixing .NET and native code

CodeProject 上一篇講說明混用Native C++, Managed C++ 以及pure Managed code的文章
http://www.codeproject.com/KB/mcpp/mixnetnative.aspx

HTTP 繼傳原理

在HTTP協議中,可以在請求報文頭中加入Range段,來表示客戶機希望從何處繼續下載。
比如說從第1024字節開始下載,請求報文如下:


GET /image/index_r4_c1.jpg HTTP/1.1
Accept: */*
Referer: http://192.168.3.120:8080
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.0.3705)
Host: 192.168.3.120:8080
Range:bytes=1024-
Connection: Keep-Alive



2011年8月16日星期二

[轉載]用C#實現木馬程序(分析)[2]

服務端的開發:
    要實現木馬服務的程序,主要實現以下幾個功能:後台的運行(隱藏技術),控制碼的接收與註冊表的修改,下面對這三方面做介紹:
1.在VC#中,建立一個後台服務程序是很容易的,先建立一個新的C#的Windows應用程序,項目名稱自定(不過為了隱藏可使用與系統相近的名稱),將窗體屬性「ShowInTaskbar」屬性設為false,讓它運行時不會在任務欄中顯示,並將屬性「Windowstate」屬性設為Mininized即可,這樣窗體就可以隱藏運行了。當然你也可以在InitializeComponent()設置,此函數起初始化的作用,在窗體顯示前運行,代碼如下:

[轉載]用C#實現木馬程序(分析)[1]

前一段時間我寫了一個關於用C#木馬的程序(程序見前),抱歉沒有寫分析,讓大家難過了,現在補上:)。
  前言:
  我的技術不是很好,如果你是為了學習木馬技術也許沒有什麼啟發,這篇文章為了給學習C#的朋友。
  木馬的介紹:(參照黑客防線2000-2001精華本中的木馬原理揭秘)
   因為本程序是木馬程序,所以在介紹之前有一些木馬構成的基本知識事先說明,因為下面很多地方會提到這些內容。一個完整的木馬系統由硬件部分,軟件部分和具體連接部分組成。這裡主要對軟件部分介紹,它主要有控制端程序、木馬程序(後台服務程序)、木馬配製程序組成。控制端用以遠程控制服務端的程序;木馬程序是潛入服務端內部,獲取其操作權限的程序;木馬配製程序是設置木馬程序的端口號,觸發條件,木馬名稱等,使其在服務端藏的更隱蔽的程序。


[轉載]JAVA語言學校的危險性


JAVA語言學校的危險性
作者:Joel Spolsky
譯者:阮一峰


如今的孩子變懶了。
多吃一點苦,又會怎麼樣呢?
我一定是變老了,才會這樣喋喋不休地抱怨和感嘆「如今的孩子」。為什麼他們不再願意、或者說不再能夠做艱苦的工作呢。
當我還是孩子的時候,學習編程需要用到穿孔卡片(punched cards)。那時可沒有任何類似「退格」鍵(Backspace key)這樣的現代化功能,如果你出錯了,就沒有辦法更正,只好扔掉出錯的卡片,從頭再來。
回想1991年,我開始面試程序員的時候。我一般會出一些編程題,允許用任何編程語言解題。在99%的情況下,面試者選擇C語言。
如今,面試者一般會選擇Java語言。
說到這裡,不要誤會我的意思。Java語言本身作為一種開發工具,並沒有什麼錯。
等一等,我要做個更正。我只是在本篇特定的文章中,不會提到Java語言作為一種開發工具,有什麼不好的地方。事實上,它有許許多多不好的地方,不過這些只有另找時間來談了。
我在這篇文章中,真正想要說的是,總的來看,Java不是一種非常難的編程語言,無法用來區分優秀程序員和普通程序員。它可能很適合用來完成工作,但是這個不是今天的主題。我甚至想說,Java語言不夠難,其實是它的特色,不能算缺點。但是不管怎樣,它就是有這個問題。
如果我聽上去像是妄下論斷,那麼我想說一點我自己的微不足道的經歷。大學計算機系的課程裡,傳統上有兩個知識點,許多人從來都沒有真正搞懂過的,那就是指針(pointers)和遞歸(recursion)。
你進大學後,一開始總要上一門「數據結構」課(data structure), 然後會有線性鏈表(linked list)、哈希表(hash table),以及其他諸如此類的課程。這些課會大量使用「指針」。它們經常起到一種優勝劣汰的作用。因為這些課程非常難,那些學不會的人,就表明他們的 能力不足以達到計算機科學學士學位的要求,只能選擇放棄這個專業。這是一件好事,因為如果你連指針很覺得很難,那麼等學到後面,要你證明不動點定理 (fixed point theory)的時候,你該怎麼辦呢?

打破平庸(Beating The Averages)

原文地址:http://www.paulgraham.com/avg.html
作者:Paul Graham

原文:http://paulgraham.com/avg.html
翻譯:Schemer.HW

(文章取自2001年在 Franz 開發者大會的一篇演講)

1995年夏天,朋友Rober Morris和我創辦了Viaweb,我們計劃寫一個可以讓最終用戶建立在線商店的軟件。當時而言,有革命意義的是,該軟件運行在我們的服務器上,通過網頁給用戶提供接口。

當然,可能很多人當時也有同樣的想法。但是就我所知,Viaweb是第一個完全基於服務器架構的。我們的這個軟件是通過網頁運行的(worked via the Web),不是運行在個人電腦上,所以我們公司也取名為:Viaweb。

軟件另一點不同尋常的地方是,它主要使用一個叫做Lisp的語言編寫。這是第一個用Lisp寫出的大型最終用戶軟件,在此之前,Lisp主要用在大學和研究室裡。[1]


很有意義的兩句Quotation

“Most software today is very much like an Egyptian pyramid with millions of bricks piled on top of each other, with no structural integrity, but just done by brute force and thousands of slaves” - Alan Kay


“PHP is a minor evil perpetrated and created by incompetent amateurs, whereas Perl is a great and insidious evil perpetrated by skilled but perverted professionals.” - Jon Ribbens

HTML Agility Pack:簡單好用的快速 HTML Parser

[ 網址:http://msdn.microsoft.com/zh-tw/ee787055]

解析 HTML:Web 開發人員心中的痛

自從 Web 應用程式自 1993 年 W3C 設立以來就開始發展,而且 HTML 也歷經了數個版本的演化(1.0 – 2.0 – 3.0 – 3.2 – 4.0 – 4.01),現在也已經成為Web網頁或應用程式的最基礎,想要學習如何設計 Web 網頁或開發 Web 應用程式,這已經是絕對必須要學的東西了,就算是方便的控制項充斥(例如 ASP.NET),但 HTML 仍然有學習它的必要性,因此如果不會 HTML,就等於沒學過 Web 網頁般。
拜 HTML 與 Web 瀏覽器蓬勃發展之賜,各式各樣的應用都在網路上迅速發展,舉凡電子商務、企業入口、線上下單、企業間協同應用等,乃至於社群、個人化、Web 2.0 等商務與組織運用等能力,而在資訊爆炸的時代,很多資訊整合的應用也隨之出爐,而這些資訊整合的應用程式都會連接到不同的網站下載其資訊,並且在重重的 HTML 中剖析出想要的資料(例如每股價格、漲跌幅、成交量等)。
但是 HTML 本身並不是一個結構嚴謹的語言,它允許標籤(tag)可以在不 close 的情況下繼續使用。這也是因為瀏覽器設計的高容錯性(Fault Tolerance)所致,如此一來,想要依照規則來剖析 HTML 文件幾乎變得不可能,而且對方的網站的 HTML 結構也可能會隨時變化,在這種情況下,剖析 HTML 變得非常辛苦,雖然 W3C 有另外推展 XHTML(遵守 XML 嚴謹格式的 HTML),但使用它來設計網頁的案例仍為少數,大多數的網站仍然是使用 HTML。因此我們會需要一個工具,能夠有方法快速的解析 HTML 以取出我們需要的資料。

[轉][筆記]在文章裡顯示優質的程式碼區

原網址:http://klcintw4.blogspot.com/2006/11/blog-post_03.html


1 加上CSS:

CODE {
display: block; /* fixes a strange ie margin bug */
font-family: Courier New;
font-size: 8pt;
overflow:auto;
background: #f0f0f0 url(http://klcintw.images.googlepages.com/Code_BG.gif) left top repeat-y;
border: 1px solid #ccc;
padding: 10px 10px 10px 21px;
max-height:200px;
height:200px; // for IE6
line-height: 1.2em;
}



2.在文章中將程式碼置於
<code></code>區塊中即可,如:
<code>.comment-body-author {<br /> margin:0;<br /> padding:0 0 0 20px;<br />
background-color:#C0C0C0;<br /> }</code


效果:
.comment-body-author {
margin:0;
padding:0 0 0 20px;
background-color:#C0C0C0;

ASP.NET的ViewState Decoder

http://ignatu.co.uk/ViewStateDecoder.aspx