30個裝置,每個裝置每秒傳遞文字資料1-2次之無線網路解決方案

蝦米爸爸 wrote:
我同事是PM,不碰程式這一塊
你知道這狀況下程式很難查嗎?
檢查程式碼及測試反覆做了很多遍,邏輯看來都是對的
我們公司用的設備和客戶用的不一樣
在我們公司內追查時,並未"重現"客戶那邊的狀況
但客戶已經上線營業要用,無法讓我們在那邊做大量測試
且客戶認為我們應該就要在我們公司查出來,不應該打擾他們
所以我們只好運用了一些方法
例如在程式中設定多個記錄點,把相關資訊都記錄下來
然後根據這些記錄下來又多又雜的資料進行分析
發現是網路連線中斷所造成的
追查網路連線中斷的原因是客戶所用的高階家用型AP...(恕刪)


雖然這樣說不禮貌,但貴公司程式設計師,功力有待加強啊

寫程式的都知道,有一種東西叫做:例外處理

例外處理,就是事先設想當程式做一些行為時,可能會發生的意外狀況,導致程式無法順利運行時,該如何處理。

尤其是高機率發生的意外狀況,一定要做例外處理。

比方:去讀取一個檔案拿資料,接下去就要檢查讀入的值是否為空值,或數值有否異常,如果有異常就跳到例外處理子程序段。

舉個例子,有些安卓軟體,當網路異常,遠端無法讀入資料時,就會顯示:網路不給力。而不是在那邊圈圈轉不停,或者直接整片白螢幕當在那裡。

任何網路應用軟體,都必須考慮到網路不穩定的異常狀況,而事先預想如何例外處理,比方每次要和遠端收發信息前,就先紀錄時間點,當超過一定時間無法取得正確回傳值,即進行例外處理。

雖然這會增加很多程式碼,讓程式變得很複雜,整體運行速度下降,或軟體稍微肥大,但卻是必要的,不這麼做,只要一個網路異常,軟體運行就GG了。

也可以寫成一個子程序函式,或者物件,每次要處理網路收發時,去呼叫子程序或實體化物件就好,就不必重複撰寫。寫好的子程序或物件,還可以重複利用,給別的軟體專案也用。寫的好,只須設計一遍就行了。


嚴格說起來,這並不是硬體的問題,而是軟體的問題。

一個需透過網路才能運行的應用軟體,如果沒有對網路異常進行例外處理,說實在是有點扯。

網路異常的狀況太多了,也不是只有 client端 網通設備的問題而已,還有 ISP爛、線路老舊、伺服器無回應......等等的問題。

像有些國家網路落後的,可能網路斷斷續續,PING值高,時好時壞什麼的。但軟體作者,哪可能去負責那些。網路異常,就直接告知使用者,網路有問題。至於啥問題,怎麼處理,使用者他家的事情。撇清關係,和軟體沒關係。
fedora wrote:
一個需透過網路才能運行的應用軟體,如果沒有對網路異常進行例外處理,說實在是有點扯。
網路異常的狀況太多了,也不是只有 client端 網通設備的問題而已,還有 ISP爛、線路老舊、伺服器無回應......等等的問題。
像有些國家網路落後的,可能網路斷斷續續,PING值高,時好時壞什麼的。但軟體作者,哪可能去負責那些。網路異常,就直接告知使用者,網路有問題。至於啥問題,怎麼處理,使用者他家的事情。撇清關係,和軟體沒關係。

例外處理,你說的簡單,但做起來不是那麼一回事啊

程式的確有在一開始就設計成檢查網路有沒有通啊
一開始網路就不通的時候,就不會進行更新
然後會嘗試判斷網路是否恢復連線,再進行更新
這些更新是被要求成無人值守時的自動處理
沒人會在此時移動它,也沒人會去盯螢幕

另外就發生機率來看
在公司內部測試時是每一台平板都順利完成
客戶上線後,大部分平板順利完成
但只要有少部分平板有問題,客戶就會抱怨

即使知道更新不全的原因是斷線,但到底是怎麼斷線的?
例如是少部分平板的WiFi模組有問題?
還是OS在資源飽和時會踢掉一些執行緒(正好負責WiFi通訊)?
或是一些其它的因素造成WiFi斷線?
找出造成斷線的原因,也是個花大量時間的工作啊

當然我不否認我們的測試及例外處理做的還不夠"全面、鉅細靡遺"
講更白一點,詳盡的測試及例外處理,還不是都要靠錢跟時間堆砌出來

搞定例外處理要先知道的5件事
https://www.ithome.com.tw/tech/96726
wrote:
有寫過程式的鄉民們大概都會同意,例外處理是一件很困難的工作。但是,有沒有人想過,為什麼例外處理會這麼難?到底難在何處?唯有先了解問題,才有機會找出合適的解決方案。



fedora wrote:
雖然這會增加很多程式碼,讓程式變得很複雜,整體運行速度下降,或軟體稍微肥大,但卻是必要的,不這麼做,只要一個網路異常,軟體運行就GG了。

如果你參與過商用軟體的開發
就會知道大部分真實的情況是要跟deadline搶時間
要求軟體僅可能也在效能不好的機器上順利執行....等等

同樣的道理
每一家AP廠商寫韌體(或設計硬體)的時候
到底是下足功夫在做?還是只求帳面上的規格功能好看就行?


你可以說說看你以前"實測"小米WiFi放大器1代時
是怎麼測試的嗎?
我對於這樣的測試結果感到很好奇
https://www.mobile01.com/topicdetail.php?f=110&t=5250079&p=2#66093276
雖然這樣說不禮貌,但你做的"實測",有可能是"虛測"啊
蝦米爸爸 wrote:
你可以說說看你以前"實測"小米WiFi放大器1代時
是怎麼測試的嗎?..(恕刪)


家裡廁所和廚房等信號微弱的地方,各插一支中繼信號,可以 WIFI 滑手機上網,測的時候,只有我一台手機在用而已

speedtest 跑 60~70M (規格是 150M,WDS 中繼掉一半速度,外網 VDSL 100M/40M)。再普通不過,這樣會很神奇嗎...

一個中繼器,如果連一台裝置都應付不了,不就假貨,連用都不能用的。當然是至少可以應付一台裝置連線的,最多可以到多少,這個我倒是不曉得。

一般人家裡應該也不會做什麼大事業,幾十台手機/平板這樣連線?這樣的家族未免也太龐大了吧。

小家庭頂多也就 5台以下無線裝置要同時連線而已(我電腦是插有線 1G 的)。

難道還要去買"好幾千、上萬"的設備。一支 250元的放大器,真的很好用了。當然放大器無法獨立運作的,源頭還要一台 AP。家用 AP 也是買 500元的就很好用了。

贊助經濟發展,也不是這麼個贊助法啊,量力而為,自身都窮人了,還贊助別人經濟發展。況且贊助別人經濟發展,這算做公益嗎?不是吧。


我前面也沒推薦樓主買小米放大器啊,只說可以用無線中繼,為什麼你會提到這個?

中繼器那麼多廠牌,包括你說的那些昂貴品牌也都有賣中繼器的啊。

不過我心底確實認為小米放大器就可以了,但不是1代,最少也買 2代 或 PRO。1代已經停產淘汰了。

然而我並沒說出來,也沒貼在回文裡,怎能假設別人在心裡想什麼,就說那是他說的話,壓根就沒說過,莫須有罪名。


蝦米爸爸 wrote:
如果你參與過商用軟體的開發
就會知道大部分真實的情況是要跟deadline搶時間
要求軟體僅可能也在效能不好的機器上順利執行....等等

同樣的道理
每一家AP廠商寫韌體(或設計硬體)的時候
到底是下足功夫在做?還是只求帳面上的規格功能好看就行?
..(恕刪)


說一個例子:

幾乎大部分線上遊戲,都有所謂的 "防外掛盾",比如韓系網遊很常見的 xingcode3。

而這個東西很好笑的是,專門刁難手動玩家的,導致各種 lag,遊戲無法啟動。對於用付費外掛自動練功,或巨集滑鼠的人,完全擋不了。

遊戲中各種外掛橫行,防外掛盾形同虛設,玩家有眼睛的都看得到,只有營運商官方看不到。甚至有人懷疑收費外掛就是官方私底下做的生意。

即便如此,防外掛盾也是沒有卸除,依然是附在遊戲中無法避過,繼續刁難著手動玩家。至少它是防的住鍵盤精靈那一類軟體式巨集腳本的。

官方明知道這個東西,就是導致遊戲 lag 的元兇之一,為何還要在遊戲中放這個東西。因為如果不用的話,外掛氾濫會更嚴重,且對外無法假裝官方是杜絕外掛態度的。


需要網路連線的應用軟體,設置偵測到網路異常時的例外處理,那是必須的。即使會稍微拖慢運行速度,也非做不可。沒有做就不是合格的軟體。

因為你無法保證每個使用者的網路環境都是完美的。

假如使用者或客戶的網路環境,不是那麼完美,軟體沒有例外處理,那運行一定會出錯,出錯又沒有顯示任何錯誤訊息,使用者肯定怪罪到軟體頭上。

像線上遊戲,不是都有 ping 值,ping值若爆表,使用者就不能把 lag 怪罪到遊戲軟體本身。


雖然可能會想,客戶網路環境不完美,關我什麼事,為何我還特地寫程式碼去例外處理。

因為就是會有"奧客",什麼都不懂,亂冠莫須有罪名,所以要為軟體品質避責。

就像前面你說的小米放大器的例子,我明明就沒說過要樓主買那個,你卻說的好像我有推薦樓主買那個,莫須有罪名,這樣子。

這樣的人可多囉,是不是,立馬就有個例子。所以軟體怎能不做例外處理,明明是 使用者/客戶 爛網路,結果卻全怪罪到軟體上。可以預測的麻煩,就要事先避免,避責。

再說多做那個例外處理,能耗多少性能,我不認為。

大致思路:弄個迴圈,收發遠端資料,檢查資料正確性(是否空值,或正規表示法分析格式),若資料不正確 sleep 1秒,繼續迴圈,計數迴圈,約5次(5秒後)跳出,顯示網路異常。若資料正確,跳回主程序。

"稍微"影響運行速度,但影響微乎其微,幾乎可忽略影響。
fedora wrote:
speedtest 跑 60~70M (規格是 150M,WDS 中繼掉一半速度,外網 VDSL 100M/40M)。再普通不過,這樣會很神奇嗎...

超神奇的啊
網路上爬文,規格速度是一回事
但別人所做的測試顯示,實際速度是另一回事
150Mbps 802.11n的實際速度大約落在7.6MB,算76Mb好了
這是"沒有中繼"的情況下所測出來的速度



中繼"減一半"速度
所以算起來150Mbps 802.11n的中繼器
中繼後若能有38Mbps的表現就算很不錯了

然後我再找了別人有關小米WiFi放大器的相關文章
https://read01.com/zh-tw/nM5a68.html
原本該作者沒用小米WiFi放大器時,有30~40Mbps的速度
小米WiFi放大器無法維持住這速度,會掉大約10~15M,變成20~25M

所以你家的小米WiFi放大器1代竟然可以跑出60~70M的中繼速度
還真是比別人的強很多啊
講白一點就是你說的那個中繼速度是一件不太可能的事

補充說明:
實際最大速度是規格速度打六折(或減半)
是因為運作時有太多因素會下修有效值
中繼減半是因為中繼器等於同時跟兩個裝置連線
一方面要跟AP接收資料,另一方面把資料傳送給手機
同樣訊號經由同一頻道重複(Repeating)兩次,所以速率減半


fedora wrote:
就像前面你說的小米放大器的例子,我明明就沒說過要樓主買那個,你卻說的好像我有推薦樓主買那個,莫須有罪名,這樣子。

我說的是對你的"實測"結果有興趣
什麼時候變成說你在推薦樓主買那個?


fedora wrote:
再說多做那個例外處理,能耗多少性能,我不認為。
大致思路:弄個迴圈,收發遠端資料,檢查資料正確性(是否空值,或正規表示法分析格式),若資料不正確 sleep 1秒,繼續迴圈,計數迴圈,約5次(5秒後)跳出,顯示網路異常。若資料正確,跳回主程序。
"稍微"影響運行速度,但影響微乎其微,幾乎可忽略影響。

你是用我提到的問題,來反推要做這"一個"東西
但實際開發軟體時,要做的功能大大小小有上百個或更多的情況時
你怎麼在"事前"知道是"哪一個"會出問題?
所以當大大小小一堆的功能要做的時候
進行詳盡測試和例外處理,所累積下來的開發時間可是不少啊
還是老話一句,要做到這些,都要靠錢跟時間堆砌出來

也許你會說,反正把相關資訊全都記錄下來不就好了
但事情沒那麼簡單,我們也曾試著把很多資訊給記錄下來
結果後遺症之一是,只要兩天,平板的儲存空間就被塞滿了
另一種偶發的後遺症是,某個process lock了某個檔卻不動作了
導致其它process要把資訊寫入某個檔時在等待,造成系統壅塞
總之,要考慮的眉眉角角有很多,只見樹不見林是行不通的
都偏離主題了吧 -_-


重申一次樓主的問題就是 30台裝置傳輸無線資料 範圍10平方公尺 (看似應無水泥牆等阻隔


所以整理一下討論的方案

1.Unfiap
2.居易292xN +AP9xx
3.一般AP x 3

價格比較
2>1>3


風險性比較
3>2>1


如果樓主只是單一次活動使用 有沒有考慮跟我租 A_A
貓老闆
youyouyou wrote:
因執行專案需要,在...(恕刪)


UniFi 2.4G 一般環境使用下都能帶30個USER以上了,更何況你的IOT裝置流量那麼的小.

去弄一台UniFi AC lite 夠你用了.


下次經過捷運站時抬頭看下,都可以發現這個飛碟!😂😂😂


哈哈哈,有沒有大家推薦的unifi可以便宜賣給我

youyouyou wrote:
哈哈哈,有沒有大家推...(恕刪)


你還是掏寶找吧

打UBNT 或者UnifiAP

我看到最低價的802.11N 300M的 大概不到台幣八百元

不過這poe電源都要自己買 pchome24上有 但要注意規格


所以整個買起來應該不用到兩千


建議是從掏寶一次買兩顆ap 畢竟是二手的

掏寶退貨困難 雖然我買了超過十顆沒出過問題

但避免風險 便宜的話還是一次多買幾顆A_A
貓老闆
哥,一定要POE這東西嗎?沒有像一般網路AP變壓器,然後一孔WAN可以插之類的嗎?

kahnmao wrote:
你還是掏寶找吧打UBNT...(恕刪)
樓主可以找三十六樓的YAWPYNG大問看看!‍‍‍‍‍
人品是做人最好的底牌.
文章分享
評分
評分
複製連結

今日熱門文章 網友點擊推薦!