1. 外貿商城系統哪個好,開源和閉源是什麼呀
開源商城系統與閉源最大的區別就於兩者的開放性,雖然開源的系統在國內起步要晚,不過由於開源商城系統公開性,源碼可以被公眾使用的軟體,並且這個系統的使用、修改與發行都不受到許可證的限制,所以很多個人開發者可以參與進來,不斷地完善系統,很快發展成為了業內的主流網店系統。不過需要注意的是,源代碼公開並不代表免費,獲取商城系統的源代碼是需要一定費用的。
閉源商城系統與開源的正好相反,源代碼不對外公開,費用問題由軟體商掌握,不一定免費,閉源的意思是指商城系統軟體商關閉商城系統的源代碼。開源商城系統在國內起步晚,那麼相對閉源網店系統來說,在國內使用得更加廣泛。開源和閉源商城網站系統是商家們花時間和金錢開發出來的產品,有企業反映閉源的商城系統反而更讓他們放心。
2. 開源im軟體
oracle資料庫是免費的嗎?
開源就是免費,它用到的資料庫一般也是免費的,比如mySQL。
3. web下的IM聊天用php做
可以參考NextIM的架構,NextIM是國內最成熟的社區網站WebIM。
4. 現在最好的,im即時聊天軟體,開源的是哪個
你可以看看觸點通,觸點通可以與第三方系統集成
5. 現有幾個開源IM框架
開發網路爬蟲應該選擇Nutch、Crawler4j、WebMagic、scrapy、WebCollector還是其他的?這里按照我的經驗隨便扯淡一下:上面說的爬蟲,基本可以分3類:1.分布式爬蟲:Nutch
2.JAVA單機爬蟲:Crawler4j、WebMagic、WebCollector
3. 非JAVA單機爬蟲:scrapy
第一類:分布式爬蟲
爬蟲使用分布式,主要是解決兩個問題:
1)海量URL管理
2)網速
現在比較流行的分布式爬蟲,是Apache的Nutch。但是對於大多數用戶來說,Nutch是這幾類爬蟲里,最不好的選擇,理由如下:
1)Nutch是為搜索引擎設計的爬蟲,大多數用戶是需要一個做精準數據爬取(精抽取)的爬蟲。Nutch運行的一套流程里,有三分之二是為了搜索引擎而設計的。對精抽取沒有太大的意義。也就是說,用Nutch做數據抽取,會浪費很多的時間在不必要的計算上。而且如果你試圖通過對Nutch進行二次開發,來使得它適用於精抽取的業務,基本上就要破壞Nutch的框架,把Nutch改的面目全非,有修改Nutch的能力,真的不如自己重新寫一個分布式爬蟲框架了。
6. 開源軟體的測試和傳統軟體的不同
互聯網行業的人有意無意的把非互聯網的軟體都稱為傳統軟體,也就是說我們這種都是從傳統行業,好吧,傳統軟體行業轉過來的。也許在有些人眼裡這個帶有一些自詡的成分,當然更多人是為了區分。就像我們做IT的把其他比較實體的行業稱為傳統行業一樣,似乎有某種優越感。這里不爭論這些稱謂,意義不大,有沒有價值讓市場去決定。如果把一件事情說得玄乎,那麼主要有兩種可能,沒有搞明白,或者裝高深。這兩種都不太好,所以還不如看看到底有什麼不同。
如果真要用傳統軟體行業這個詞,那麼這里是指的那種需要用戶去安裝客戶端,或者需要客戶的管理員在機房去部署的那種軟體,放在光碟里也好,放到硬體里一起賣也好,又或者是為某客戶量身訂做的一套系統。
變和不變總是永恆的主題。先說說我看到的不一樣的地方。互聯網行業和傳統軟體的區別:
1. 最大的不同就是互聯網的產品很多都是自己來部署和運營,用戶只要用一個瘦客戶端就能使用。
這里的瘦客戶端是一個瀏覽器,一個App,或者一個需要安裝的client,但是核心的數據和業務邏輯主要在互聯網公司的機房裡面,在IDC,在雲端。這里和以前的C/S,
B/S架構的企業系統的主要區別在於為多大范圍的人來服務以及誰來運營和運維這樣的系統。所以自然的,就多了很多的這方面的工作。
縮小范圍到測試這個方面,就需要考慮生產環境的問題。比如有下面的這些方面:
a. 如何來監控生產環境功能的可用性。
這個需要和運維一起來做,但是運維針對的是比較通用的部分,比如機器的資源使用情況、流量和帶寬的情況,但是偏產品業務層面的,比如哪些功能是否可用,可能就
需要業務測試人員來設計和開發自動化的系統來監控了。
b. 如何來發布功能到正式運行環境(生產環境)
測試完了一般直接就發布了,所以不像傳統的軟體有那麼長的測試周期,包括internal beta,externalbeta等過程,而且我了解到的情況,很多基於的互聯網產品平均一天
有多個發布,可大可小。所以發布可能就成了測試人員的工作,當然有相關的系統的支持。這里還需要考慮的問題是常見的基於各種條件的灰度發布,先讓部分用戶用起來。
發布完了之後還要做生產環境的驗證。
c. 如何來保證或者驗證測試環境和生產環境是同步的
一旦是互聯網的這種模式,測試環境的問題就會變得比較突出,因為常常牽涉的系統比較多,有些和外部系統的介面可能很難以自己搭建或者用mock。另一方面如果保證測試環境是好的,到生產環境也是好的。需要相應的機制和工具來驗證和同步。
縮小到開發這個方面。要考慮到一些互聯網的特性,比如有以下這些方面:
a 如何快速定位,問題在哪個模塊或著需求設計哪幾個模塊,以及給出解決方案。
一般來講,新增加的功能或者模塊,比較容易像一個傳統項目的一樣,制定計劃,軟體設計,到開發,測試。但是如果是生產環境中出現的問題,則需要對原來業務以及軟體架構非常熟悉,能夠快速定位到問題所在的頁面和涉及的頁面。在一個從傳統軟體轉過來的互聯網工程師來看,其實web程序,是一堆軟體的集合。每一個web頁面都是一個獨立小程序。它們或者十分獨立,只是通過一個鏈接跳轉,或者一組頁面組成一個程序集合,實現特定的一個功能。終究是多個dll獨立的存在。所以,從傳統軟體工程師的角度出發,應該是以一個管理程序集合的概念來管理一個web程序。具體怎麼做呢?首先負責開發技術人員分成3類,一類是高級coder,最好是原有的模塊開發者。它們對模塊的需求,和設計實現架構非常了解,但他們只對反饋過來CR做需求分析。屏蔽一些不合理的修改意見,對要修改的需求,進行定位分析,設計好修改方式,以及判斷修改涉及的范圍。二類是 中級coder,中級coder只和高級coder溝通,對高級coder的設想落地,把他的設計思路實現。 三類是初級coder 負責和高級coder溝通需求以及了解判斷修改的范圍。對中級coder的修改做開發者的自我測試,完成相關文檔,由高級coder審核。
b 如何判斷開發好的功能OK了。
在高級coder的審核,通過三類coder的文檔,來確認coder實現是否符合原來設計,當然,設計時,最好事先就和二類coder一起溝通。隨著小分隊的不斷默契,可以是初級coder很快掌握,業務邏輯,和自測方法,同時可以熟悉,開發者所使用的工具。不斷成長,繼而成為中級coder。同事中級coder,在不斷實現設計的同時不斷成長,到可以勝任需求分析和軟體設計的工作,成為高級coder,這樣整個小團隊就非常厲害了,這個方式類似於抗倭名將戚繼光的鴛鴦陣,專門對付,個體比較強大,武藝高強的倭寇。
c 如何保證生產環境的web程序的穩定性
減少發布次數是保證web程序的穩定性的最有效措施,但是如果是緊急的問題,可以當天發布。例如,我們是給美國那邊做技術支持,中午可以作為測試截至時間,中午2點測試通過的當天下班5點鍾發布,如果2點沒有通過測試的,即推遲到後一天。
2. 互聯網產品的節奏都很快
不像傳統的一個客戶端或者伺服器的軟體產品,可能周期是半年,一年,甚至更長。這樣有比較充足的時間來做項目計劃,需求評審,然後是概要/詳細設計,進而有測試設計測試用例,然後有不同的測試cycle,同時也可以有很多的時間來准備測試環境和自動化測試。
就目前來看,互聯網的產品這樣做不太現實。這樣對測試人員也是很大的挑戰,可能看到一個需求過幾天就要開測了,用例是臨時開出來的,根本來不及自動化,也沒有很多的時間來做測試設計,然後測兩天這個功能就上線了。不是切身的感受很難體會到這種速度帶來的差異。所以如何在這么短的時間裡面來保證測試的覆蓋度和質量,如果減少遺漏?這是現實的問題,或者說是要求,有一些措施,但是其實也沒有很好的答案。
3. 有更多的人參與到測試裡面來
互聯網公司裡面,測試vs開發的比例都很低,1:6,1:7都是很常見的,甚至更高,在這樣的配比的情況下,如果來保證質量?必須有更多的方法。比如
a. 開發人員的自測。
測試耗費更多時間很多時候是因為代碼的質量不夠好,有很多,有很多討論,很多的拉代碼的次數。所以提高開發提交的代碼質量就是一個很重要的方面。有些公司是通過開發
人員的強制的單元測試來保證的,有些是通過功能級別的自測來保證的。這些可以藉助一些數據來反映,比如同一個版本拉代碼的次數,或者測試用例的通過率等等。
b. 產品或者運營人員的體驗。
很多互聯網的產品不像傳統軟體產品,不是一個產品經理來提所有的需求。產品,或者稱為產品經理,是一個團隊,每人負責一塊來提出需求。另外很多需求可能是來自於運營團隊,和business相關,或者是不同系統的打通。每個產品經理或者運營,需要在開發人員實現了相應的功能之後到體驗環境裡面來試用產品,就是所謂的體驗,看這些功能是不是他們想要的。這樣就可以在測試人員測試之前保證沒有明顯的需求理解的問題,避免浪費測試的人力和時間。
c. 發布之前的評審。
不同的角色進來看對於一個已經測完的工作還有沒有問題,以及發布的時候需要注意的問題,環境的問題,配置的問題,數據的問題等等。上面的一些做法可能都有幫助,但是如何來推動,如果來檢驗都是需要流程和工具來支撐。
4. 有一些是免測試的
不是所有發布到生產環境的東西都需要測試,有些改動是不需要測試的。這個沒有一定的標准,取決於具體發布的情況,以及產品和團隊的成熟度等因素。比如一些臨時活動的頁面,一些小的圖片或者樣式的改動,一些小的修復等等。只需發布完了之後到外網去驗證。
有哪些可以走免測,這其實是一個很復雜的問題,當然風險也是有的,但是因此而帶來的效率的提高也是很明顯。
5. 海量的用戶帶來的挑戰
其實有很多,這里列舉幾個:
a. 如何來保證或者驗證性能
傳統軟體的性能測試相對要單純一些,可以比較容易搭建一套環境,流量也比較容易模擬。而互聯網的一個產品可能有幾百上千台甚至更多的伺服器,多地多層部署,受到各種因素的影響,比如廣告促銷活動,一下子流量可以沖到很高。所以這方面的做法也會有所不同,全量的模擬不太現實,而且如上面所說,發布非常快,也沒有那麼多的時間去反復的做性能測試。所以如何來做比較輕量級的性能測試也是一個很大的課題。
b. 瀏覽器的兼容性。
用戶使用的瀏覽器種類可能非常多,包括大家都在罵的IE6,還有IE9的n種模式,版本更新速度火箭一般的Chrome和Firefox,以及很多種國產的瀏覽器。要一一覆蓋是一個很大的挑戰,其實不可能,但是產品團隊肯定希望測試能夠覆蓋更多。對於一些企業級的產品可以宣稱就支持很少的幾種,但是互聯網產品很難這樣做,那就等於放棄一些用戶。如何來設計策略?有沒有技術手段?
c.改好的東西,沒有輸入限制,任意操作,如何保證健壯性。
一個小的改動引起的問題可以影響到無數的用戶,而且很多時候馬上會被發現,那個壓力還是非常大的。整個修復的過程也是帶電操作,沒有那麼多環境和時間來在內部慢慢調整,如何來保證修復的質量?
6. 問題的修復
互聯網的產品相比傳統的產品的一個優勢或者說是特性就是問題的修復比較快,因為很快就可以影響到用戶,而不需要等用戶一個個去打hotfix或者patch,甚至安裝新版本。有很多時候,這種問題的發生到修復的時間很短,真是絕大部分用戶都沒有感知。有時候這個也會成為quick &dirty的一個借口,不過一般都會把
生產環境的問題列為一個考核的指標。而且有些問題不是小問題,會構成事故。其實對於這樣的產品,測試人員對於漏測的壓力就更大了。
7. 測試工具和技術選擇上的差別
大概是因為互聯網自身產品的一些特點,各大公司都在大量的使用開源的,以及內部開發的平台和系統。相應的,測試方面用到的平台和工具主要也是這兩種,要麼是開源的工具(也可能做一些改造),要麼是內部自己開發的工具。相比而言,傳統軟體行業更會去購買一些商業的測試工具,比如用於性能測試、覆蓋率或者代碼檢查的工具,還有就是測試用例和缺陷的管理平台。
目前我了解到的情況,國內幾大互聯網公司都是改造和自研的比較多,所以在簡歷裡面列一堆大的工具的使用經驗不一定有多大優勢。而對於新人來說需要花不少時間來學習和熟悉這些平台。
以上列舉了一些相比傳統軟體行業的不同的地方吧,但是對測試人員來說,互聯網行業和傳統軟體的相似處:
1. 一樣的需要非常了解產品和業務
對於測試人員來說,如果不了解產品和業務,測試工作很難開展,因為連最基本的對錯(是不是bug)都很難判斷,當然除了一些明顯的錯誤,比如js出錯這樣的信息,這種缺陷產品體驗的時候就能夠發現或者等到被用戶發現了。所以我們還是需要花很多的時間和精力來熟悉產品業務。從這個角度看,沒有很大的變化,只是換了一個不同的領域而已,這個差別是不同的產品帶來的,而不是因為傳統軟體或者互聯網的差別帶來的。
2. 一樣的需要了解產品的技術
這個其實和上面有點類似,測試人員需要去了解產品開發用到的技術,這對深度的測試,甚至和很多測試技術和工具的應用有很大的關於,比如性能分析,內存泄露的發現,覆蓋率的分析等等。不去學習和了解這些,很多工作沒有辦法開展。從方向上來看沒有變化,我們也要去學習和實踐這些東西才能更好的了解。但是具體的技術可能有所不同,比如互聯網web的產品可能會常用到JS,PHP,Java,C++等語言,還有各種web伺服器,cache,代理等等。
3. 具體的測試技術
上面說到了一些產品開發的技術,其實還有一塊是測試方面的技術,其實這一塊細化來看和傳統的軟體開發有很多相似甚至相同的地方。比如如果來做靜態代碼的掃描、局部的性能測試方法和工具、覆蓋率的工具、自動化的一些工具和框架、一些監控的工具等等。
從這個角度來看,技術的差異並沒有很大,當然互聯網有一些特別,比如很多基於web的系統、分布式的、多層的,會對工具提出一些要求,這個差別其實倒不是很大,因為很多傳統的伺服器軟體也是這樣。
4. 測試設計的方法
上面提到,因為產品發布節奏的差異,使得整個流程必須更輕更快,但是針對於一個具體功能的測試的時候,用例的設計和執行上需要考慮的問題其實和傳統的沒有太大的差別。因為這個時候大家面臨的問題是一樣的,如何測這個軟體的這個功能。所以一些思路和方法還是能用得上。
綜合以上來看,局部的差異反而比較小,但是涉及到大的形態和流程方面的差異就會比較大。
也可能正是因為這樣的原因,很多從傳統軟體到互聯網的人也很快就能夠融入並開始發揮作用,而且退回幾年來看,現在各大互聯網公司裡面的人大部分也都是來自於所謂的傳統軟體企業。
我相信不同的領域的發展速度和機會是不一樣的,這也是這幾年很多人投身到互聯網行業的原因之一,這個就好比經濟學上所謂的市場對於資源配置的驅動力一樣,很正常。但是另一個方面,會讓人有一種錯覺,以為換到一個快速發展的行業,自己立馬變強了。其實冷靜的來看,並不會如此,只是趕了個浪潮,真正的技術和能力不會因為你換了一個領域或者行業就變得強大或者高深了,要獲得這樣的提高一定是因為更多的學習,實踐和思考,以及和別人的交流而慢慢得到的。
上面提到了互聯網產品,其實有些時候,這是一個偽命題,因為在各大互聯網公司都有傳統軟體,比如騰訊網路阿里都有客戶端的產品,而且數量還不少,有些還有C/S架構的產品,國外的google也有chrome,picasa這種桌面的產品,facebook也出了IM客戶端。所以在很大程度上,還是非常的需要比如GUI產品的開發和測試技術,伺服器類似企業級產品的方法和能力。當然,這些產品背後是連到互聯網的,所以也有差異的部分,但是沒有想像的那麼大。
另外一個問題,有些時候大家在借互聯網軟體這個名字來逃避一些東西,比如一些不嚴謹,或者混亂的地方,就全部歸結到這是互聯網的特性,這個是一個「度」的問題,要自己去分辨。
另一個問題,對於初入互聯網測試的人有什麼建議呢?下面這些也是自勉。
1. 正視這種差異帶來的改變,上面說的一些東西真的也是很大的不同,所以要積極的學習和了解。
2. 努力的去學習產品相關的知識,包括相關的開發技術,這樣才能更好的開展工作。
3. 要經常反思,之前在一個環境下對一個東西研究得很清楚了,但是換個環境之後可能老的經驗和知識並不完全適用。所以少說我們以前是怎麼樣的?絕不生搬硬套,而是了解了情況,理解了問題之後看哪些做法是可以借鑒的?局部的借鑒可能更靠譜。
7. 最好的IM開源軟體是哪個
我可以對這個問題給你一些意見參考
8. php開發即時通訊使用的什麼原理
最簡單的說,就是ajax定時刷新,比如間隔10秒。有新數據,就反饋到前台,沒新數據就等待下一次刷新。
但是真正在應用中需要考慮到消息及時性、伺服器壓力等等。
可以用comet進行設計
node.js
、socket
反正當你真的要自己開發一個im系統應用到自己的項目中的話,是一個很大的工程