第二屏:智能手機
第三屏:pad平板
第四屏:互聯網電視
第五屏:互聯網汽車屏幕
第六屏:互聯網眼睛
生命本就是一次凄美的漂流,記憶中放不下的,永遠是孩提時代的那一份浪漫與純真!
Posted by 王淮Harry
最近和幾家公司聊到了初創公司找人的問題。
我一直強調,過了concept proof的公司,馬上要把招人放到最重要的位置上。一個靠譜的CEO,他最重要的需要attention to details的就兩件事 – 產品和招人。
但初創公司招人絕對不容易。
拼錢,拼不過TABLES這幾大巨頭。他們基本上把國內頂端的幾所大學的畢業生出路買斷了。手段非常粗魯。一個研究生畢業生,沒有20萬的offer都不好意思回家過年。
工作幾年還行的就更貴了。
怎么辦?
幾點供參考:
出門靠朋友,創業更是。一開始,就那么幾個人,幾只槍,跟著你的,只能是兄弟姐妹幾個。這一點,在美國也是。看看Yahoo, Google, Apple, Facebook等等等等。
同學絕對是創業伙伴(founding team)最好的來源渠道。價廉物美,互相不欺。
同事也不錯。以前的小弟,以前的大哥。一起吃過盒飯,一起罵過老板(或被罵過)。
一起跋山涉水,燈紅酒綠的腐敗愛好分子也挺好。拓詞就是從爬山社的一群人爬著爬著就起來了。
還有在活動上碰上,一直念念不忘,偶爾討論點東西,經常勾搭一下的geek男們。
這種人才能在一起打天下之前能夠耐得住寂寞,因為之前擁有的很多經歷,才有了創業必須的信任和堅持。
“哥們,幫我把話傳出去,我要找前鋒”
朋友在乎你,會時常幫你惦記著這事;已經加入你的隊伍更是不在話下。碰上靠譜的人選,把你們撮合到一起。Facebook早年的20、30個人中好多都是你拉我,我拉你拉過來的。
因為拉人的和被拉的中間有一個可以被信任的朋友,這事好辦多了。
去學校招人,基本上一創業公司,開不了有競爭力的薪資,只靠畫大餅找到最好的人,基本上很難。
Facebook,還在被稱為Thefacebook的時候,當年直接在Stanford Google的人才招聘會上擺了一張桌子,寫著why working for google, come to thefacebook之類的話,基本上還是吸引來了一些實習生。
沒錯,基本只能吸引實習生。
那這是非常好的一個起點。因為,當中好幾個轉成全職后是后來很牛逼的工程師。
在別人了解你之前,畫餅是沒用的。來了之后,天天洗腦,夜夜畫餅,然后真誠的出動公司里的男女老少獸(別誤會,我對堆糖收養的幾只可愛的小貓念念不忘)來吸引一個好的人。這個時候,你的10萬年薪,加上產品愿景,團隊魅力和公司期權的魔法增強,完全可以對坑別人霸道的20萬。
各種創業活動其實給很多有心想招人的初創團隊一些機會去找到合頻的人。
什么叫合頻的人。
創業是一種life style。經常參加創業活動,但身在大公司的很多人,他們的心已經入了創業的界內。有了這份心加上足夠的聰明和努力,培養,獲得創業公司需要的能力不難。
但要把一個有能力的人,卻已習慣并享受大公司生活的人,訓練成創業的人才,非常難,非常難。
在幾次講座中,我都提到,多和一起來聽講座的左鄰右舍聊幾句,說不定,這人以后就成了你的同事,創業伙伴。當年,好幾位就是通過這種方式認識被我拉到Facebook里面。
創業其實是很孤獨的事。在這個圈子里面徘徊的都是有理想的人。這些人都非常值得尊重(原諒我沒辦法一一認識,實在個人時間有限)。經常互相幫助,說不定哪天大家就合作了,或者合并了。
是的,合并了。Storm8, 一家2011年就值10億美金的手游公司,是我們原來組的同事Perry Tam和幾個同事出來創辦的。后來我們組的另外一個香港人William也離職了,創業。Perry給他提供了免費的辦公室,來吧,先在我這干著吧。半年后,原本鐵了心創業的William加入了Storm8。
都不行,那就到處貼小廣告吧。一很牛逼的創業者就和我講過一個他寫了一個英雄帖貼了很多論壇然后面試了上百人的事跡。究竟性價比如何無可置評,一腔熱血可圈可點。
我以為,創業,最難的是兩點,產品和招人。招人,不能拼錢財,那是大公司的游戲。拼的是你的餅。這不僅取決于餅要畫的好,也取決于對畫餅人,畫餅的團隊的信任。
The key to hiring for startup, is to find or build the trust.
本文列舉了是十個免費工具,可以用來進行Web的負載/壓力測試的。這樣你就可以知道你的服務器以及你的WEB應用能夠扛得住多少的并發量,以及網站性能。
1. Grinder – Grinder是一個開源的JVM負載測試框架,它通過很多負載注射器來為分布式測試提供了便利。 支持用于執行測試腳本的Jython腳本引擎HTTP測試可通過HTTP代理進行管理。根據項目網站的說法,Grinder的 主要目標用戶是“理解他們所測代碼的人——Grinder不僅僅是帶有一組相關響應時間的‘黑盒’測試。由于測試過程可以進行編碼——而不是簡單地腳本 化,所以程序員能測試應用中內部的各個層次,而不僅僅是通過用戶界面測試響應時間。
2. Pylot -Pylot是一款開源的測試web service性能和擴展性的工具,它運行HTTP 負載測試,這對容量計劃,確定基準點,分析以及系統調優都很有用處。Pylot產生并發負載(HTTP Requests),檢驗服務器響應,以及產生帶有metrics的報表。通過GUI或者shell/console來執行和監視test suites。
2. Web Capacity Analysis Tool (WCAT) – 這是一種輕量級負載生成實用工具,不僅能夠重現對 Web 服務器(或負載平衡服務器場)的腳本 HTTP 請求,同時還可以收集性能統計數據供日后分析之用。WCAT 是多線程應用程序,并且支持從單個源控制多個負載測試客戶端,因此您可以模擬數千個并發用戶。該實用工具利用您的舊機器作為測試客戶端,其中每個測試客戶端又可以產生多個虛擬客戶端(最大數量取決于客戶端機器的網絡適配器和其他硬件)。您可以選擇使用 HTTP 1.0 還是 HTTP 1.1 請求,以及是否使用 SSL。并且,如果測試方案需要,您還可以使用腳本執行的基本或 NTLM 身份驗證來訪問站點的受限部分。(如果您的站點使用 cookie、表單或基于會話的身份驗證,那您可以創建正確的 GET 或 POST 請求來對測試用戶進行身份驗證。)WCAT 還可管理您站點可能設置的任何 cookie,所以配置文件和會話信息將永久保存。
3. fwptt – fwptt 也是一個用來進行WEB應用負載測試的工具。它可以記錄一般的請求,也可以記錄Ajax請求。它可以用來測試 asp.net, jsp, php 或是其它的Web應用。
4. JCrawler – JCrawler是一個開源( CPL) 的WEB應用壓力測試工具。通過其名字,你就可以知道這是一個用Java寫的像網頁爬蟲一樣的工具。只要你給其幾個URL,它就可以開始爬過去了,它用一種特殊的方式來產生你WEB應用的負載。這個工具可以用來測試搜索引擎對你站點產生的負載。當然,其還有另一功能,你可以建立你的網站地圖和再點擊一下,將自動提交Sitemap給前5名的搜索引擎!
5. Apache JMeter – Apache JMeter是一個專門為運行和服務器裝載測試而設計的、100%的純Java桌面運行程序。原先它是為Web/HTTP測試而設計的,但是它已經擴展以支持各種各樣的測試模塊。它和用于HTTP和SQL數據庫(使用JDBC)的模塊一起運送。它可以用來測試靜止資料庫或者活動資料庫中的服務器的運行情況,可以用來模擬對服務器或者網絡系統加以重負荷以測試它的抵抗力,或者用來分析不同負荷類型下的所有運行情況。它也提供了一個可替換的界面用來定制數據顯示,測試同步及測試的創建和執行。
6. Siege -Siege(英文意思是圍攻)是一個壓力測試和評測工具,設計用于WEB開發這評估應用在壓力下的承受能力:可以根據配置對一個WEB站點進行多用戶的并發訪問,記錄每個用戶所有請求過程的相應時間,并在一定數量的并發訪問下重復進行。 Siege 支持基本的認證,cookies, HTTP 和 HTTPS 協議。
7. http_load – http_load 以并行復用的方式運行,用以測試web服務器的吞吐量與負載。但是它不同于大多數壓力測試工具,它可以以一個單一的進程運行,一般不會把客戶機搞死。可以可以測試HTTPS類的網站請求。
8. Web Polygraph – Web Polygraph這個軟件也是一個用于測試WEB性能的工具,這個工具是很多公司的標準測試工具,包括微軟在分析其軟件性能的時候,也是使用這個工具做為基準工具的。很多招聘測試員的廣告中都注明需要熟練掌握這個測試工具。
9. OpenSTA – OpenSTA是一個免費的、開放源代碼的web性能測試工具,能錄制功能非常強大的腳本過程,執行性能測試。例如虛擬多個不同的用戶同時登陸被測試網站。其還能對錄制的測試腳本進行,按指定的語法進行編輯。在錄制完測試腳本后,可以對測試腳本進行編輯,以便進行特定的性能指標分析。其較為豐富的圖形化測試結果大大提高了測試報告的可閱讀性。OpenSTA 基于CORBA 的結構體系,它通過虛擬一個proxy,使用其專用的腳本控制語言,記錄通過proxy 的一切HTTP/S traffic。通過分析OpenSTA的性能指標收集器收集的各項性能指標,以及HTTP 數據,對系統的性能進行分析。
介紹20個非常有用的PHP類庫,相信一定可以為你的WEB開發提供更好和更為快速的方法。
下面的類庫可以讓你很簡的創建復雜的圖表和圖片。當然,它們需要GD庫的支持。
pChart – 一個可以創建統計圖的庫。
Libchart – 這也是一個簡單的統計圖庫。
JpGraph – 一個面向對象的圖片創建類。
Open Flash Chart – 這是一個基于Flash的統計圖。
phpThumb – 功能很強大,如何強大還是自己去體會吧。
你的網站需要處理支付方面的事情?需要一個和支付網關的程序?下面這個程序可以幫到你。
PHP Payment Library – 支持Paypal, Authorize.net 和2Checkout (2CO)
解釋RSS并是一件很單調的事情,不過幸好你有下面的類庫可以幫助你方便地讀取RSS的Feed。
MagpieRSS – 開源的PHP版RSS解析器,據說功能強大,未驗證。
SimplePie – 這是一個非常快速,而且易用的RSS和Atom 解析庫。
PHP-OpenID – 支持OpenID的一個PHP庫。OpenID是幫助你使用相同的用戶名和口令登錄不同的網站的一種解決方案。如果你對OpenID不熟悉的話,你可以到這里看看:http://openid.net.cn/
FPDF – 這量一個可以讓你生成PDF的純PHP類庫。
你的站點需要生成Excel?沒有問題,下面這兩個類庫可以讓你輕松做到這一點。
php-excel – 這是一個非常簡單的Excel文件生成類。
PHP Excel Reader – 可以解析并讀取XLS文件中的數據。
不喜歡PHP的mail函數?覺得不夠強大?下面的PHP郵件相關的庫絕對不會讓你失望。
Swift Mailer – 免費的超多功能的PHP郵件庫。
PHPMailer - 超強大的郵件發送類。
ADOdb – 數據庫抽象
Doctrine – 對象關系映射Object relational mapper (ORM) ,需要 PHP 5.2.3+ 版本,一個非常強大的database abstraction layer (DBAL).
Propel – 對象關系映射框架- PHP5
Outlet – 也是關于對象關系映射的一個工具。
注:對象關系映射(Object Relational Mapping,簡稱ORM)是一種為了解決面向對象與關系數據庫存在的互不匹配的現象的技術。 簡單的說,ORM是通過使用描述對象和數據庫之間映射的元數據,將程序中的對象自動持久化到關系數據庫中。本質上就是將數據從一種形式轉換到另外一種形式。 這也同時暗示者額外的執行開銷;然而,如果ORM作為一種中間件實現,則會有很多機會做優化,而這些在手寫的持久層并不存在。 更重要的是用于控制轉換的元數據需要提供和管理;但是同樣,這些花費要比維護手寫的方案要少;而且就算是遵守ODMG規范的對象數據庫依然需要類級別的元數據。
如果你在使用測試驅動的方法開發你的程序,下面的類庫和框架絕你能幫助你的開發。
SimpleTest – 一個PHP的單元測試和網頁測試的框架。
PHPUnit – 來自xUnit 家族,提供一個框架可以讓你方便地進行單元測試的案例開發。并可非常容易地分析其測試結果。
感謝西的投遞
我一直還記得在《軟件開發如同越獄》這篇文章的第一句話“如果說這世界上還有另外一種東西太多了,那就是對軟件開發的類比……”,如果你記性好的話,你應該對“如果編程語言是….”這種模式的標題很眼熟,沒錯,那你是一定看過了《 如果編程語言是一條船…》 這篇文章。今天的這篇文章又是模仿這個套路,但相似并不是相同,正如桔子和橙子各有味道一樣,主要是過年了,讓大家樂一樂。
我本想在下面每個評述的后面都 配一張圖,但由于有些描述很抽象,不知道配什么樣的圖合適,如果有朋友能給出推薦,請把圖片地址寫在評論里,我會把合適的圖片補充到下面的文章里,謝謝。
Ada語言是輛坦克。一輛笨重丑陋但絕不會在路上拋錨的坦克。如果你告訴別人你開的是坦克,人們可能會笑彎腰,但事實上,如果上戰場,你愿意開一輛跑車在陣地上跑嗎?
匯編語言只是一臺發動機;你需要自己用它造出這部車,而且在跑起來時你還需要手工給它供給汽油,但是,如果你能足夠用心,它能跑的像一個飛向天際的火箭。
Basic是一輛簡單的車,你可以把它當成短距離的交通工具,比如去附近的超市購物。它曾經在駕車新手中風靡一時,但最近被一個大制造商給拆解的剩下一個殼,重新改造成了新的樣式,新款的車能跑更遠的路,與最初的款型相比只是在外觀上看起來相似罷了。
C語言是一部跑的極快的賽車,但每50公里都要修理一次。
C++是C型賽車的加強版,增添了很多額外的功能,現在只是每250公里才熄火一次,但問題是,一旦熄火了,沒有人知道是什么原因。
Cobol語言號稱是一輛車,但沒看到過有自尊的人承認駕駛過它。
C#是一款很有競爭力的商務旅行車。一旦用上這種車,你就再也沒有機會去用其它廠家的同類車。
Eiffel是一款預先配備了陪駕的轎車,但這個陪駕有明顯的法國口音。他能幫助你快速的發現駕駛中犯的錯誤,并從中吸取教訓,但千萬不要和他爭執,否則他會對你動粗,把你拋出車外。
Erlang是一個車隊,它們齊心合力把你送到你想去的地方。你需要經驗來掌控這么多車下的每個輪子,但一旦你學會了,它能讓你跑在其它方法無法到達的地形上。除此之外,因為你是在駕駛一大群車,所以,即使有一些車途中拋錨熄火了也不要緊。
Forth是一輛你自己用小器械組裝的車。你的車子在外觀上或在開動方式上的確沒有必要和別人的車保持一致。然而,Forth是一輛只能倒著跑的車。
Fortran是一輛非常簡單的車,它能跑的很快,但條件是你必須沿著一條非常直的路開。很多人都相信,一旦學會了開Fortran車,你就不可能再學會開其它類型的車。
Java是一款商務旅行車。它很容易駕駛,跑的不是很快,也不會讓你傷著自己。
Haskell是 款設計的非常優雅、外觀驚艷的車,傳言她能在地形極其特殊的地方行駛。你第一次試圖駕駛它,它可能不會沿著路走,事 實上,它是一步步的復制自己腳下的路而后在上面復制自己,這樣復制路——復制自己,自己也就前進一段。理論上你是可以按常規的方式來駕駛它前進的,只是你 沒有足夠的數學知識來做到這些。
Lisp 看起來像是部車,但如果能搗鼓,有足夠的耐心,你能把它編程一架有相當戰斗力的飛機或潛艇。[來自 Paul Tanimoto:]Lisp: 起初看起來它完全不像一部車,但時不時你會在街上看到有人駕駛這樣的車。于是你決定學一下如何駕駛它,你發現它確實是輛車,而且它能變出很多車。你把這事 告訴你的朋友,但他們都笑你,說這車的樣子也太古怪了。你仍然在車庫里放著這樣一部車,期望有朝一日大街小巷跑的都是這樣的車。
Mathematica是一輛精心設計的車,借鑒了很多Lisp車上的思想,但沒有向Lisp表示過基本的感謝。它能通過方程式來判斷走哪條路上捷徑,但這是有成本的。
Matlab是一款為初學者設計的車,它能跑不是很長的路程,跑在類似Mathematica車能跑到那種地形上。在這種地形上它駕駛起來很舒適,但絕對不能跑偏,否則你很難控制。正因為如此,勢利小人甚至拒絕承認它是一部車。
Ocaml是一部非常性感的歐版車。它沒有C車那樣快,但它從來不出故障,所以,最終還是它用了最短的時間到達目的地。然而,因為它是法式的,沒有一個控制桿/按鈕是安放在通常的位置上的。
Perl被認為是一款很酷的車,但駕駛手冊不完備。還有,即使你能知道如何駕駛這輛Perl車,你未必就知道如何駕駛其它的Perl車。
PHP是那種美國Oscar Mayer公司的熱狗車(Wienermobile),它樣子古怪,不好開,但每個人仍然都想駕駛它。
Prolog是一款配備有獨特的反復試驗式的GPS系統的車。它能邊跑邊尋找你的目的地,如果在路的盡頭沒有找到目的地,它會返回來嘗試另外一條路,直到把你送到要去的地方。
Python是一款絕佳的新手來開的車,開它你可以不要駕駛證。除非你想跑的特別快或想跑在未知的險惡地形上,你基本上不需要其它的車。
Smalltalk是 一部很小的車,最初是為一些想學開車的人設計的,但因為它設計的很出色,即使有經驗的駕駛員也喜歡它。它跑的不 是很快,但你可以把它上面的任何一個部件換下來,改成你想要的。更奇怪的是,你事實上不是在駕駛它,你向它發送一個消息,告訴它去什么地方,它要么照做, 要么告訴你不理解你在說什么。
Ruby車 誕生于Perl車、Python車和Smalltalk車在一個三岔路口相撞的事故中。一個日本機械師發現了相撞后的碎 片,把它們拼裝成了一部車,很多司機認為這一個比之前的三個的總和都好。而另外一些人卻抱怨說,Ruby車里的很多控制部件都是功能重復的,而且這些看似 功能相同的部件在某些特殊環境下又會稍微有些不同,這使得本該很好用的車變得很難駕駛。傳說重新設計的一版正在開發中。
Visual Basic,這種車不是你開它,而是它開你。
js進行函數調用時,除了指定的參數外,還創建一個隱含的對象——arguments。
一、arguments可以用arguments[index]這樣的語法取值,擁有長度屬性length。arguments對象存儲的是實際傳遞給函數的參數,而不局限于函數聲明所定義的參數列表,例如:
alert(a);
alert(b);
for(var i=0;i<arguments.length;i++){
}
func(1,2,3,4);
代碼運行時會依次顯示:1,2,1,2,3,4。函數定義了兩個參數,但是在調用的時候傳遞了4個參數。
二、arguments的callee屬性
它表示對函數對象本身的引用,這有利于實現無名函數的遞歸或者保證函數的封裝性。例如:用遞歸來計算1到n的自然數之和:
<script> 在javascript函數體內,標識符arguments具有特殊含義。它是調用對象的一個特殊屬性,用來引用Arguments對象。 Arugments對象就像數組,注意這里只是像并不是哈。 javascript函數體內,arguments像數組(并不是真的數組,是一個Arguments對象, 再次強調)一樣,有length屬性,可以代表傳給函數的參數的個數。 引用一個形式參數可以用參數名,也可以用arguments[]數組形式,其中arguments[0]表示第一個參數。 所以,javascript中Arguments對象是函數的實際參數,下面,我們一起來進入這神奇的國度,一窺究竟。 js不會主動為你判斷你到底給函數傳了多少個參數,如果你多傳了,多余的部分就沒有被使用,如果你少傳了,那么沒傳的參數值就是undefined 所以我們可以借助arguments的length屬性來檢測調用函數時是否使用了正確數目的實際參數,因為javascript是不會為你做這些 事的 arguments還為我們提供了這樣一種可能,就是為一個函數傳任意數目的實際參數: 比如說,我想判斷你傳給我的一些數字的大小,取出最大的那個,對,沒錯,你傳多少參數都行,但是前提是你要傳數字,因為我在函數內部懶得判斷了。 呵。 怎么樣?這個方法很巧妙吧?呵呵。 說明一下arguments與真正傳的形式參數是一致的: 比如,你給函數傳了一個叫param的參數,并且只有這一個參數,那么param與arguments[0]都是對這個參數值的引用, 改變其中一個值,即改變了二者所有的值 arguments的callee屬性: arguments的callee屬性是用來引用當前正在執行的函數,這對未命名的函數調用自身非常有好處。 現在用arguments的這個callee同樣可以簡單的實現 在最后提醒大家一點,既然這個arguments這么厲害,那么我們就不要為變量命名為arguments 了,事實上arguments是javascript的保留字之一。嗯。
}
alert(sum(100));
</script>
arguments.length屬性:
{
}
{
}
{
}
var result =function(x){
};