第一屏:pc
          第二屏:智能手機
          第三屏:pad平板
          第四屏:互聯網電視
          第五屏:互聯網汽車屏幕
          第六屏:互聯網眼睛
          posted @ 2013-02-22 15:58 小馬歌 閱讀(306) | 評論 (0)編輯 收藏
           

          from:http://www.nonoidea.com/2013/02/21/%E6%8B%9B%E4%BA%BA%E7%9A%84%E5%9B%B0%E5%A2%83/

          Posted by 王淮Harry

          最近和幾家公司聊到了初創公司找人的問題。

          我一直強調,過了concept proof的公司,馬上要把招人放到最重要的位置上。一個靠譜的CEO,他最重要的需要attention to details的就兩件事 – 產品和招人。

          但初創公司招人絕對不容易。

          拼錢,拼不過TABLES這幾大巨頭。他們基本上把國內頂端的幾所大學的畢業生出路買斷了。手段非常粗魯。一個研究生畢業生,沒有20萬的offer都不好意思回家過年。

          工作幾年還行的就更貴了。

          怎么辦?

          幾點供參考:


          朋友

          出門靠朋友,創業更是。一開始,就那么幾個人,幾只槍,跟著你的,只能是兄弟姐妹幾個。這一點,在美國也是。看看Yahoo, Google, Apple, Facebook等等等等。

          同學絕對是創業伙伴(founding team)最好的來源渠道。價廉物美,互相不欺。

          同事也不錯。以前的小弟,以前的大哥。一起吃過盒飯,一起罵過老板(或被罵過)。

          一起跋山涉水,燈紅酒綠的腐敗愛好分子也挺好。拓詞就是從爬山社的一群人爬著爬著就起來了。

          還有在活動上碰上,一直念念不忘,偶爾討論點東西,經常勾搭一下的geek男們。

          這種人才能在一起打天下之前能夠耐得住寂寞,因為之前擁有的很多經歷,才有了創業必須的信任和堅持。


          朋友的朋友

          “哥們,幫我把話傳出去,我要找前鋒”

          朋友在乎你,會時常幫你惦記著這事;已經加入你的隊伍更是不在話下。碰上靠譜的人選,把你們撮合到一起。Facebook早年的20、30個人中好多都是你拉我,我拉你拉過來的。

          因為拉人的和被拉的中間有一個可以被信任的朋友,這事好辦多了。


          internship

          去學校招人,基本上一創業公司,開不了有競爭力的薪資,只靠畫大餅找到最好的人,基本上很難。

          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.

          posted @ 2013-02-22 10:28 小馬歌 閱讀(282) | 評論 (0)編輯 收藏
           

          本文列舉了是十個免費工具,可以用來進行Web的負載/壓力測試的。這樣你就可以知道你的服務器以及你的WEB應用能夠扛得住多少的并發量,以及網站性能。

          1. Grinder –  Grinder是一個開源的JVM負載測試框架,它通過很多負載注射器來為分布式測試提供了便利。 支持用于執行測試腳本的Jython腳本引擎HTTP測試可通過HTTP代理進行管理。根據項目網站的說法,Grinder的 主要目標用戶是“理解他們所測代碼的人——Grinder不僅僅是帶有一組相關響應時間的‘黑盒’測試。由于測試過程可以進行編碼——而不是簡單地腳本 化,所以程序員能測試應用中內部的各個層次,而不僅僅是通過用戶界面測試響應時間。

          The Grinder

          2. Pylot -Pylot是一款開源的測試web service性能和擴展性的工具,它運行HTTP 負載測試,這對容量計劃,確定基準點,分析以及系統調優都很有用處。Pylot產生并發負載(HTTP Requests),檢驗服務器響應,以及產生帶有metrics的報表。通過GUI或者shell/console來執行和監視test suites。

          Pylot Main Logo

          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 數據,對系統的性能進行分析。

          來源:10 Free Tools to Load/Stress Test Your Web Applications

          posted @ 2013-02-21 16:27 小馬歌 閱讀(306) | 評論 (0)編輯 收藏
           
               摘要: 過去就連一個鏡像站點,我們都依靠大量的開發人員和程序員進行維護。得益于CSS和它的靈活性使得樣式能夠從代碼中被獨立抽離出來,從而讓一個只具備基本CSS理論的初學者都能夠輕易地改變網站的樣式。  不論你是對用CSS建站感興趣還是僅僅拿它讓你的博客更有feel,打好基礎才能蓋高樓。下面讓我們來看看一些對于初學者實用的CSS常識: 1、使用reset.css  火狐和IE這兩種不同的瀏覽器,在繪制CSS...  閱讀全文
          posted @ 2013-02-21 16:12 小馬歌 閱讀(246) | 評論 (0)編輯 收藏
           

          介紹20個非常有用的PHP類庫,相信一定可以為你的WEB開發提供更好和更為快速的方法。

          圖表庫

          下面的類庫可以讓你很簡的創建復雜的圖表和圖片。當然,它們需要GD庫的支持。

          pChart – 一個可以創建統計圖的庫。

          Libchart – 這也是一個簡單的統計圖庫。

          JpGraph – 一個面向對象的圖片創建類。

          Open Flash Chart – 這是一個基于Flash的統計圖。

          縮略圖生成

          phpThumb – 功能很強大,如何強大還是自己去體會吧。

          支付

          你的網站需要處理支付方面的事情?需要一個和支付網關的程序?下面這個程序可以幫到你。

          PHP Payment Library – 支持Paypal, Authorize.net 和2Checkout (2CO)

          RSS 解析

          解釋RSS并是一件很單調的事情,不過幸好你有下面的類庫可以幫助你方便地讀取RSS的Feed。

          MagpieRSS – 開源的PHP版RSS解析器,據說功能強大,未驗證。

          SimplePie – 這是一個非常快速,而且易用的RSS和Atom 解析庫。

          OpenID

          PHP-OpenID – 支持OpenID的一個PHP庫。OpenID是幫助你使用相同的用戶名和口令登錄不同的網站的一種解決方案。如果你對OpenID不熟悉的話,你可以到這里看看:http://openid.net.cn/

          PDF 生成器

          FPDF – 這量一個可以讓你生成PDF的純PHP類庫。

          Excel 相關

          你的站點需要生成Excel?沒有問題,下面這兩個類庫可以讓你輕松做到這一點。

          php-excel – 這是一個非常簡單的Excel文件生成類。

          PHP Excel Reader – 可以解析并讀取XLS文件中的數據。

          E-Mail 相關

          不喜歡PHP的mail函數?覺得不夠強大?下面的PHP郵件相關的庫絕對不會讓你失望。

          Swift Mailer – 免費的超多功能的PHP郵件庫。

          PHPMailer - 超強大的郵件發送類。

          數據為抽象/對象關系映射ORM

          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 家族,提供一個框架可以讓你方便地進行單元測試的案例開發。并可非常容易地分析其測試結果。

          posted @ 2013-02-21 16:09 小馬歌 閱讀(184) | 評論 (0)編輯 收藏
           
           手機應用內支付包支付文檔

          https://b.alipay.com/order/productDetail.htm?productId=2012120700377310&tabId=4#ps-tabinfo-hash

          下載地址:
          http://download.alipay.com/public/api/base/WS_SECURE_PAY.zip 
          posted @ 2013-02-21 16:08 小馬歌 閱讀(274) | 評論 (0)編輯 收藏
           

          感謝西的投遞
          我一直還記得在《軟件開發如同越獄》這篇文章的第一句話“如果說這世界上還有另外一種東西太多了,那就是對軟件開發的類比……”,如果你記性好的話,你應該對“如果編程語言是….”這種模式的標題很眼熟,沒錯,那你是一定看過了《 如果編程語言是一條船…》 這篇文章。今天的這篇文章又是模仿這個套路,但相似并不是相同,正如桔子和橙子各有味道一樣,主要是過年了,讓大家樂一樂。

          賽車總動員

          我本想在下面每個評述的后面都 配一張圖,但由于有些描述很抽象,不知道配什么樣的圖合適,如果有朋友能給出推薦,請把圖片地址寫在評論里,我會把合適的圖片補充到下面的文章里,謝謝。

          Ada

          Ada語言是輛坦克。一輛笨重丑陋但絕不會在路上拋錨的坦克。如果你告訴別人你開的是坦克,人們可能會笑彎腰,但事實上,如果上戰場,你愿意開一輛跑車在陣地上跑嗎?

          Assembly

          匯編語言只是一臺發動機;你需要自己用它造出這部車,而且在跑起來時你還需要手工給它供給汽油,但是,如果你能足夠用心,它能跑的像一個飛向天際的火箭。

          Basic

          Basic是一輛簡單的車,你可以把它當成短距離的交通工具,比如去附近的超市購物。它曾經在駕車新手中風靡一時,但最近被一個大制造商給拆解的剩下一個殼,重新改造成了新的樣式,新款的車能跑更遠的路,與最初的款型相比只是在外觀上看起來相似罷了。

          c

          C語言是一部跑的極快的賽車,但每50公里都要修理一次。

          C++

          C++是C型賽車的加強版,增添了很多額外的功能,現在只是每250公里才熄火一次,但問題是,一旦熄火了,沒有人知道是什么原因。

          Cobol

          Cobol語言號稱是一輛車,但沒看到過有自尊的人承認駕駛過它。

          C#

          C#是一款很有競爭力的商務旅行車。一旦用上這種車,你就再也沒有機會去用其它廠家的同類車。

          Eiffel

          Eiffel是一款預先配備了陪駕的轎車,但這個陪駕有明顯的法國口音。他能幫助你快速的發現駕駛中犯的錯誤,并從中吸取教訓,但千萬不要和他爭執,否則他會對你動粗,把你拋出車外。

          Erlang

          Erlang是一個車隊,它們齊心合力把你送到你想去的地方。你需要經驗來掌控這么多車下的每個輪子,但一旦你學會了,它能讓你跑在其它方法無法到達的地形上。除此之外,因為你是在駕駛一大群車,所以,即使有一些車途中拋錨熄火了也不要緊。

          Forth

          Forth是一輛你自己用小器械組裝的車。你的車子在外觀上或在開動方式上的確沒有必要和別人的車保持一致。然而,Forth是一輛只能倒著跑的車。

          Fortran

          Fortran是一輛非常簡單的車,它能跑的很快,但條件是你必須沿著一條非常直的路開。很多人都相信,一旦學會了開Fortran車,你就不可能再學會開其它類型的車。

          Java

          Java是一款商務旅行車。它很容易駕駛,跑的不是很快,也不會讓你傷著自己。

          Haskell

          Haskell是 款設計的非常優雅、外觀驚艷的車,傳言她能在地形極其特殊的地方行駛。你第一次試圖駕駛它,它可能不會沿著路走,事 實上,它是一步步的復制自己腳下的路而后在上面復制自己,這樣復制路——復制自己,自己也就前進一段。理論上你是可以按常規的方式來駕駛它前進的,只是你 沒有足夠的數學知識來做到這些。

          Lisp

          Lisp 看起來像是部車,但如果能搗鼓,有足夠的耐心,你能把它編程一架有相當戰斗力的飛機或潛艇。[來自 Paul Tanimoto:]Lisp: 起初看起來它完全不像一部車,但時不時你會在街上看到有人駕駛這樣的車。于是你決定學一下如何駕駛它,你發現它確實是輛車,而且它能變出很多車。你把這事 告訴你的朋友,但他們都笑你,說這車的樣子也太古怪了。你仍然在車庫里放著這樣一部車,期望有朝一日大街小巷跑的都是這樣的車。

          Mathematica是一輛精心設計的車,借鑒了很多Lisp車上的思想,但沒有向Lisp表示過基本的感謝。它能通過方程式來判斷走哪條路上捷徑,但這是有成本的。

          Matlab

          Matlab是一款為初學者設計的車,它能跑不是很長的路程,跑在類似Mathematica車能跑到那種地形上。在這種地形上它駕駛起來很舒適,但絕對不能跑偏,否則你很難控制。正因為如此,勢利小人甚至拒絕承認它是一部車。

          Ocaml

          Ocaml是一部非常性感的歐版車。它沒有C車那樣快,但它從來不出故障,所以,最終還是它用了最短的時間到達目的地。然而,因為它是法式的,沒有一個控制桿/按鈕是安放在通常的位置上的。

          Perl

          Perl被認為是一款很酷的車,但駕駛手冊不完備。還有,即使你能知道如何駕駛這輛Perl車,你未必就知道如何駕駛其它的Perl車。

          PHP

          PHP是那種美國Oscar Mayer公司的熱狗車(Wienermobile),它樣子古怪,不好開,但每個人仍然都想駕駛它。

          Prolog

          Prolog是一款配備有獨特的反復試驗式的GPS系統的車。它能邊跑邊尋找你的目的地,如果在路的盡頭沒有找到目的地,它會返回來嘗試另外一條路,直到把你送到要去的地方。

          Python

          Python是一款絕佳的新手來開的車,開它你可以不要駕駛證。除非你想跑的特別快或想跑在未知的險惡地形上,你基本上不需要其它的車。

          smalltalk

          Smalltalk是 一部很小的車,最初是為一些想學開車的人設計的,但因為它設計的很出色,即使有經驗的駕駛員也喜歡它。它跑的不 是很快,但你可以把它上面的任何一個部件換下來,改成你想要的。更奇怪的是,你事實上不是在駕駛它,你向它發送一個消息,告訴它去什么地方,它要么照做, 要么告訴你不理解你在說什么。

          Ruby

          Ruby車 誕生于Perl車、Python車和Smalltalk車在一個三岔路口相撞的事故中。一個日本機械師發現了相撞后的碎 片,把它們拼裝成了一部車,很多司機認為這一個比之前的三個的總和都好。而另外一些人卻抱怨說,Ruby車里的很多控制部件都是功能重復的,而且這些看似 功能相同的部件在某些特殊環境下又會稍微有些不同,這使得本該很好用的車變得很難駕駛。傳說重新設計的一版正在開發中。

          Visual Basic

          Visual Basic,這種車不是你開它,而是它開你。

          posted @ 2013-02-06 13:52 小馬歌 閱讀(259) | 評論 (0)編輯 收藏
           

          js進行函數調用時,除了指定的參數外,還創建一個隱含的對象——arguments。

          一、arguments可以用arguments[index]這樣的語法取值,擁有長度屬性length。arguments對象存儲的是實際傳遞給函數的參數,而不局限于函數聲明所定義的參數列表,例如:

            <script>
            function func(a,b){
            alert(a);
            alert(b);
            for(var i=0;i<arguments.length;i++){
                alert(arguments[i]);
            }
            }
           func(1,2,3,4);
            </script>

          代碼運行時會依次顯示:1,2,1,2,3,4。函數定義了兩個參數,但是在調用的時候傳遞了4個參數。

           

          二、arguments的callee屬性

          它表示對函數對象本身的引用,這有利于實現無名函數的遞歸或者保證函數的封裝性。例如:用遞歸來計算1到n的自然數之和:

          <script>
             var sum=function(n){
              if(1==n) {
                 return 1;
              } else {
                 return n + arguments.callee(n-1);
               }
            }
            alert(sum(100));
          </script>



          在javascript函數體內,標識符arguments具有特殊含義。它是調用對象的一個特殊屬性,用來引用Arguments對象。 Arugments對象就像數組,注意這里只是像并不是哈。

          javascript函數體內,arguments像數組(并不是真的數組,是一個Arguments對象, 再次強調)一樣,有length屬性,可以代表傳給函數的參數的個數。

          引用一個形式參數可以用參數名,也可以用arguments[]數組形式,其中arguments[0]表示第一個參數。

          所以,javascript中Arguments對象是函數的實際參數,下面,我們一起來進入這神奇的國度,一窺究竟。

          arguments.length屬性:

          js不會主動為你判斷你到底給函數傳了多少個參數,如果你多傳了,多余的部分就沒有被使用,如果你少傳了,那么沒傳的參數值就是undefined

          所以我們可以借助arguments的length屬性來檢測調用函數時是否使用了正確數目的實際參數,因為javascript是不會為你做這些 事的

          function f(x,y,z)
          {
             //首先檢查傳遞的參數數量是否正確
             if(arguments.length!=3)
             {
                 thrownew Error("function f called with "+ arguments.length+"arguments ,but it not 3 arguments.");
             }
             //下面運行真正的函數
          }

          arguments還為我們提供了這樣一種可能,就是為一個函數傳任意數目的實際參數:

          比如說,我想判斷你傳給我的一些數字的大小,取出最大的那個,對,沒錯,你傳多少參數都行,但是前提是你要傳數字,因為我在函數內部懶得判斷了。 呵。

          function max()
          {
             //根據我上一篇日志,這已經是JavaScript內最小的數字了
             var m = Number.NEGATIVE_INFINITY;
             for(var i =0; i < arguments.length; i++)
             {
                 //只要有任何一個參數比m大,那么m就變成了這個參數的值
                 if(arguments[i]> m)
                      m = arguments[i];
             }
             return m;
          }

          怎么樣?這個方法很巧妙吧?呵呵。

          說明一下arguments與真正傳的形式參數是一致的:

          比如,你給函數傳了一個叫param的參數,并且只有這一個參數,那么param與arguments[0]都是對這個參數值的引用,

          改變其中一個值,即改變了二者所有的值

          function change(param)
          {
             //比如我傳的param為simaopig,那么alert就是simaopig,
             //如果啥也沒傳就會alert undefined
             alert(param);
             //用arguments[0]改變了這個參數的值
              arguments[0]='xiaoxiaozi';
             //沒錯,這個值變成了xiaoxiaozi
             alert(param);
          }

          arguments的callee屬性:

          arguments的callee屬性是用來引用當前正在執行的函數,這對未命名的函數調用自身非常有好處。

          現在用arguments的這個callee同樣可以簡單的實現

          //用函數直接量,采用arguments.callee屬性實現遞歸函數
          var result =function(x){
             if(x<=1)return1;
             return x*arguments.callee(x-1);
          };

          在最后提醒大家一點,既然這個arguments這么厲害,那么我們就不要為變量命名為arguments 了,事實上arguments是javascript的保留字之一。嗯。

          posted @ 2013-02-01 14:45 小馬歌 閱讀(387) | 評論 (0)編輯 收藏
           
          Jsunit 就是 Junit 的javascript 版本,下載并解壓Jsunit zip,大部分的核心文件都在 jsunit/app 目錄下,
          兩個最基本的文件:
          . jsUnitCore.js -- 每個測試文件都要引用它
          . testRunner.html -- 用來運行具體的jsunit 測試

          (1) 起步例子:
          在Jsunit解壓后的同級目錄下建立兩個文件,目錄結構:
          |-- jsunit
          |-- simple.js
          |-- simple_test.html

          寫完后運行 jsunit/testRunner.html,在頁面中選擇simple_test.html, 點擊run,可以看到測試結果信息。

          // simple.js 被測試的javascript文件
          function addTwoNumbers(value1, value2){
              return parseInt(value1) + parseInt(value2);
          }

          // simple_test.html 測試文件
          <!DOCTYPE HTML PUBLIC 
          "-//W3C//DTD HTML 4.0 Transitional//EN">
          <HTML>
          <HEAD>
          <TITLE> New Document </TITLE>
          <script language="JavaScript" 
          src="jsunit/app/jsUnitCore.js"></script>
          <script language="JavaScript" 
          src="simple.js"></script>
          <script language="JavaScript">
          function testValidArgs()
          {
              assertEquals("2 + 2 is 4", 
              4, addTwoNumbers(2, 2));
          }
          function testWithNegativeNumbers()
          {
              assertEquals("-2 + -2 is -4", 
              -4, addTwoNumbers(-2, -2));
          }
          function exposeTestFunctionNames()
          {
              var tests = new Array(2);
              tests[0] = "testValidArgs";
              tests[1] = "testWithNegativeNumbers";
              return tests;
          }
          </script>
          </HEAD>

          <BODY>
          test page for addTwoNumbers(value1, value2);
          </BODY>
          </HTML>

          通常以"test"開頭的測試函數會被自動發現,但如果沒有發現,就需要我們用exposeTestFunctionNames 函數來顯示指定測試函數。

          (2) setUpPage()

          jsunit 包含了一次性啟動方法,setUpPage() 只對每個測試頁調用一次,即在所有測試函數調用之前調用,適于做預處理,但要注意在setUpPage()最后一行要把 setUpPageStatus 變量設置為 “complete”, 如:

          var arg1;
          var arg2;

          function setUpPage(){
              arg1 = 2;
              arg2 = 2;
              setUpPageStatus = "complete";
          }

          (3) 測試集

          測試集把不同的測試頁分組組織,其中包含測試頁或其他測試集,他們會按照順序執行。
          注意點:
          . 測試集中不能包含任何測試函數
          . 必須包含一個返回 jsUnitTestSuite 對象的 suite 函數
          . 有兩個方法添加測試頁:addTestPage(testPage) addTestSuite(testSuite), 在添加測試頁時要注意路徑,應是相對于testRunner.html 的

          例子:

          <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
          <HTML>
          <HEAD>
          <TITLE> New Document </TITLE>
          <script language="JavaScript" 
          src="jsunit/app/jsUnitCore.js"></script>
          <script language="JavaScript" 
          src="simple.js"></script>
          <script language="JavaScript">
          function sampleSuite()
          {
          var sampleSuite = new top.jsUnitTestSuite();
          sampleSuite.addTestPage("../simple_test.html");
          return sampleSuite;
          }
          function suite()
          {
          var testSuite = new top.jsUnitTestSuite();
          testSuite.addTestSuite(sampleSuite());
          testSuite.addTestPage("../simple_test.html");
          return testSuite;
          }
          </script>
          </HEAD>

          <BODY>
          </BODY>
          </HTML>

          (4) 日志和跟蹤

          運行testRunner.html時會發現他有 Trace level 項,用于現實我們在測試方法中的日志信息,包含3個函數:
          warn(message, [value])
          inform(message, [value])
          debug(message, [value])

          原文出處:http://www.zhuoda.org/irini/83098.html
          JsUnit下載地址:http://sourceforge.net/projects/jsunit/
          posted @ 2013-02-01 11:24 小馬歌 閱讀(712) | 評論 (0)編輯 收藏
           
               摘要: Google JS Test是一個運行于V8 JavaScript引擎下的Javascript單元測試框架,其在Google內部負責對Chrome的快速JS執行速度進行測試,現在Google以開源工程開放大家使用。Google JS Test主要特性:超快的啟動速度和執行時間,不需要在瀏覽器里運行清爽而具有可讀性的輸出內容也有一個可選的基于瀏覽器的測試器,可在JS修改的時候刷新其樣式和語義跟Goo...  閱讀全文
          posted @ 2013-02-01 11:24 小馬歌 閱讀(371) | 評論 (0)編輯 收藏
          僅列出標題
          共95頁: First 上一頁 29 30 31 32 33 34 35 36 37 下一頁 Last 
           
          主站蜘蛛池模板: 扎赉特旗| 甘德县| 宾川县| 隆回县| 葵青区| 巴塘县| 黎平县| 密山市| 河池市| 买车| 平原县| 甘孜县| 克东县| 贵溪市| 衡南县| 会理县| 衡阳县| 拜城县| 夏河县| 麦盖提县| 昌邑市| 丰城市| 兴和县| 新巴尔虎右旗| 鄯善县| 门头沟区| 榆中县| 黄平县| 建平县| 陕西省| 汪清县| 丰顺县| 婺源县| 蓝田县| 诸暨市| 攀枝花市| 黔西| 新巴尔虎左旗| 乡城县| 禄劝| 彭阳县|