2015年11月30日 星期一

N旋翼飛行器初次接觸

N旋翼飛行器初次接觸


《道德經》裡嘗言道:「合抱之木生於毫末,九層之台起於累土,千里之行始於足下。」



架構飛行 之上的遙控監控自動化及影像情報蒐集

圖形操作介面

系統狀態動態模擬

即時影像和錄影

警報處理

資料擷取與記錄

資料分析

報表輸出
飛行穩定器,有自穩模式與飛行模式兩種,自穩模式就是放了搖桿會自己回中平穩,飛行模式就跟直升機一樣,推了搖桿機體就朝一個方向傾斜,搖桿回中也不會自動回穩GPS定位系統提供準確的定位、測速和高精度的時間標準氣壓計採用數位精度約10公分.
非常注重的是安全飛行觀念運用機器本身自動的技術預留,機身感度,反饋感度,定高感度低電壓設定值,這些您幾乎不用調整,除非您更改馬達,螺旋槳飛控板PC電腦調試軟體飛控板專用的韌升級器. 更安全,就是人與機器的定義軸飛走了且不受控制: 1.GPS飄移; 2.程序本身沒寫好或其它因素影響CPU,數據牽動或丟失; 3.磁場矯正並不完整,磁場,GPS與飛控本身程序混亂

這我們是利用GPS飛行, 絕不是相信天上的GPS百分百沒問題..
我們在穩定CPU得前提下, 以更多的經驗值避免數據丟失,也在預防GPS的前提下疊加人為操控高於機器自控.
授與機器在自返時,機器會自升一個安全高度,並行自返與自降動作,GPS產生疑慮時,我們可以隨時操控機器,機器會回歸人為控制,當放開搖桿時機器會繼續執行未完成指令,當然人為控制時,就可以關閉自返行為.相信大家都知道此等疊加程序是更加困難的. 我們也看到其他公司產品,後來也加入手控開關,但卻有時手控時,機器還是不受控. 至於第三項,在起飛時就能感受機器穩定度不佳(尤其是城市內大廈旁,此時磁場最易受干擾),可以及時矯正磁力計與陀螺儀就可以.精湛的操控性: 四軸做穩容易,但要做到手感反饋一體,實在是不容易.若是飛過Butterfly且又有跟其他公司產品作比較的,大概就能體認這一點. 除程序外,我們的遙控器可以調整靈敏度,你可以調30%也可以100%.陀螺儀板主要是精密mens,尤其是氣壓計最怕潮,一般非專業的工程師光是焊槍的松香就幾乎100%損壞.其他mens就易受靜電損壞,尤其我們的手.


軟體平台 

      TBD

2015年11月29日 星期日

駭客

駭客

駭客激進主義(Hacktivism)
駭客激進主義是一種駭客攻擊行為,藉由破壞某個組織的伺服器,或是竊取某些機密資料,進而激起社會性或政治性的效果,而展開這類駭客行為的人物便稱為激進駭客(Hacktivist)。

黑帽駭客(Black Hat),懷著惡意入侵他人伺服器的駭客。

白帽駭客(White Hat),又叫道德駭客。泛指在客戶的許可下,對網站或軟體進行安全性測試的駭客。



節錄:

駭客後的駭客人生

駭客擁有強悍的電腦技能,許多人以為駭客是電腦人才,是資安公司與網路公司爭相網羅的對象,然而事實卻完全不是這麼一回事。犯罪紀錄將會烙印在駭客的履歷上,幾乎沒有任何組織願意錄用資歷不良的駭客。無論駭客闖出多偉大的名堂,懷著多崇高的願景,只要帶著犯罪紀錄,就等於與常態就職徹底絕緣。


2015年11月17日 星期二



讀書心得 (二) Continued:

在組織開發團隊制定開發流程時,就要將測試整合到團隊開發所使用的模型中,如瀑布、遞迴、敏捷⋯等。因為不同的開發模型施行測試之時機不同,人力配置也有差異。以瀑布式為例,大多集中在開發接近完成時,若採用遞迴開發,則變成週期性的測試,而敏捷模式則為時時刻刻開發與測試混著進行(關於敏捷開發 下的測試可參考本書《第2章:談Visual Studio與敏捷測試》)。

如何規劃開發團隊的資源以及何時施行測試,其設備與人力的配置於專案初始即有腹案,專案經理應在驗收規格載明要通過的測試類型與標準。非到專案快結束時,才由甲、乙雙方專案經理自己,或是指派工程師或使用者隨意測試。團隊中最好要有專業的測試人員。初階的測試人員或許僅執行手動測試,但資深的測試人員要熟悉程式語言,需規劃測試平台與架構,讓測試自動化,精準而有效率。最好不要由開發者兼任測試者,因為測試者和開發者完成工作的方式不同,測試者代表使用者來測情境,開發者則測試程式碼單元。測試者思考使用者如何工作,開發者思考程式碼如何工作。測試者愛找蟲,開發者不願找到蟲。

在《約耳趣談軟體》一書中,作者就明言沒有專職測試者的壞處,例如:再優秀的開發者都有盲點,他自身可能永遠忽略了不自覺犯下的錯誤,需由測試者來發現。且若由資深的開發工程師來測試自己開發的程式,則優秀的開發人力無法進行開發,卻要將心力耗在測試上,豈不本末倒置?唯有優秀的測試人員才能在短期間找到大量的錯誤。

整體而言,最好在分析時期,即同步撰寫如何測試的程式案例,以確認是否符 合使用者需求的文件4。在設計時期,要提出模組與架構之間整合測試的方式, 以確認架構與介面定義的正確性。並在開發時期,同時撰寫單元測試(Unit Test),以驗證個別程式碼的正確性。待稍具功能之後,便能展開手動測試,以 及其後一連串用途不同的測試。同時,說明文件的正確性也要一併測試,讓V&V (Verification and Validation)的精神貫穿整個開發過程,時時驗證(Verification) 是在做使用者需要的產品,並確認(Validation)事情做對了。

除了上述開發流程中的配套作業之外,測試目的尚有針對架構的整合、安全、壓力、容錯⋯等測試。廣義而言,整個軟體生命週期充滿了各式各樣的測試,例 如:導入新技術前的POC(Proof Of Concept)。上線之前,你還需要測試使用 者的專業能力(使用者的無知很可能是系統損毀、安全疑慮的最大來源);上 線之後,週期性地測試系統災難復原的能力,乃至於隨著軟硬體Hot fix、service pack、迭代更新版本的相容性測試⋯等等。

你可以依照當下的需求,選擇規劃上述某個面向的系列測試。此外,在建立測試計畫時,需涵蓋測試平台、工具、案例管理、環境、資料收集、結果分析等項目的規劃。由於測試是周而復始的執行,所以在規劃時應儘量提升週期性、自動化之能力。
在規劃與施行某項測試之前,應當為個別的測試撰寫測試案例5,其內容須包含右列項目:

案例編號、名稱、說明、區域、擁有人、優先權、狀態、系統環境、應執行的情境與頻率。
驗證功能,包含少見的使用情境,以達到最大程式碼的涵蓋範圍。
動作步驟:步驟完備、說明簡單、可執行。
預期結果:可明確判讀。
實際結果:完整、明確。

測試案例的內容必須簡單易懂,讓任何人都可執行,換句話說,儘量避免專有名詞,不要夾雜開發人員的術語,且測試案例要可累積、易管理。待假以時日,一個專案或產品可能有成百上千個測試案例。若沒有規範,將很難讓需求、實作、 測試、bug、修正、回歸測試等資訊串起來,如同一掛粽子,從任何一個點都可 以追溯到所有其他的來龍去脈。

在定出軟體測試的流程之後,若沒有功能完備、整合軟體開發各個環節、易上手且自動化的工具程式、方便準備與重用的測試環境⋯等,則推廣的結果可能流於空談。畢竟測試是重複的流程,還需詳述測試環境與測試方法,並填寫大部分內容近似的報告或電子郵件。一再進行相同的事情會變得枯燥、輕忽。然而,測試者應專注於找bug,而非耗在重複執行與撰寫測試報告。測試者應有 技巧、富創意、高效率地尋找潛在的bug,讓「獵蟲」的樂趣令測試者有源源不 絕的動力。此外還需強調一點,當今大量的測試皆以手動完成,這並不代表測試者沒有好的自動化測試工具;而是手動測試的過程可以讓測試者察覺以往未考慮到的測試案例或情境。若僅以完成測試案例自動化為實作測試重點,測試者將僅有很少時間使用待測產品,而是把時間花在製作與維護自動化測試。

自動化應該用在重複性工作,而非替代手動測試。自動化測試可能導致虛假的安 全感,尤其是當測試結果和涵蓋範圍不對稱時,因此,測試的涵蓋面要高,又要易於維護,還要不停找出新的測試方式,這需要有好的工具輔助。

到底要進行哪些測試呢?當我們在談論測試的類型時,可用來分類的面向如下:
功能面:使用者需求。
架構面:效能、負載、安全、易用性、管理、整合相容性。
測試層級:單元、元件、模組、整合、系統。
測試施行方式:黑箱、白箱、灰箱

end.

2015年11月16日 星期一

讀書心得 (一)

Proof of Concept (POC)

將設計概念實作出雛形 ( prototype ) 品,以供客戶或評鑑單位檢驗。

為了推銷產品,廠商往往把產品說得無所不能,然而天花亂墜的說詞背後,可能隱藏許多誇大不實的成分,為避免導入後才發現產品名不副實,可要求廠商POC(Proof Of Concept)以檢驗真實度。POC的意思是請廠商證明他們的說法,多數廠商針對潛在客戶均同意試用一段時間,以確認符合需求。


軟體測試

軟體生命週期中,大致有分析、設計、開發、測試、上線、維護、更版等階段,任何階段的工作與產出皆有可能犯錯。越晚發現問題,修正錯誤所付出的代價就 越大,甚至可能演變成無法解決的錯誤。因此,Agile方法論中的「以測試驅動開發(Test-Driven Development;TDD)」提倡:在分析的初始,就應該先撰寫測試案例(Test Case)程式碼,測試程式碼寫不出來了,而後再寫實做功能的程式 碼;接著又回去寫測試程式碼,直到執行測試沒有錯誤,使用者需求功能也都完成為止。

換句話說,無法測試的功能不用寫;亦即以測試來驗證對需求的了解程度,同時驗證程式碼的正確性。在如何開發與如何驗證的雙向思辨下,會更了解問題,並規範接下去的設計與開發不至於偏離。

現今絕大部分的軟體開發雖未採用TDD,但隨著系統越來越大,在開發流程中, 測試的時程也越來越提前,以防範在前述的需求、設計、開發、部署等過程之中所隱含的錯誤。若能早期發現,解決成本也將較低。很多的想法與設計必須經過測試的驗證,方能修正至可行。尤其對於系統架構,如:安全、可用性、效能、容量、擴充、易用性、整合、重用性⋯等,各個架構面的設計往往彼此衝突。舉例而言,若徹底要求安全可能傷及效能、易用、整合⋯等,若強調使用介面友善易用、未來的擴充彈性等,也可能損傷效能。

實作系統功能面的技巧與技術也日益繁雜,不管是程式語言的Framework、物件導向設計、平行執行架構/多執行緒、Web 技術、Mobile 平台、使用者介面、資料庫功能、伺服器平台、雲端運算⋯等,要整合新舊想法與技術,本身就包含了許多不成熟與不穩定的因素。諸此種種,每一項架構規劃其底線為何,設計與施行的方式是否符合需求且不牴觸其他的架構設計、是否有實作上的缺陷等,往往需要有詳盡完善的測試來驗證與矯治。

To Be continued  (Next)


2015年11月12日 星期四


802.1x的認證機制

IEEE802.1X涉及三角色: Supplicant、Authenticator、Authentication Server

論語為政三:  道之以政,齊之以刑,民免於無恥。道之以德,齊之以禮,有恥且格。



Station Join到AP之後,對於認證方式傳統上都是透過一台AP本身去執行的。在802.1x機制上,提供Authentication Server(即AS),AS可以同時服務許多台AP,並且提供認證與記帳等機制(AAA)。利用架設802.1x相關環境來瞭解802.1x運作的方式,以及透過Ethereal抓取EAP與Radius封包來瞭解運作流程。EAP有多種身分認證方式,其中包括EAP-MD5、EAP-TLS、EAP-PEAP。....



Authentication Server:採用Free RADIUS
Authenticator:採用Host AP Daemon
Supplicant:採用windows內建的802.1X verification function方案

Ethereal:抓EAP與RADIUS封包

HOSTAP 分三部分:

1.HOSTAP driver for prism (2/2.5/3)
此為特別的driver,會將無線網路卡以AP的模式驅動
本driver可設定無線網卡成為AP模式

2.HOSTAPD
主要負責802.1x的部分,可以利用hostapd.conf簡單設定AP的認證機制

3.HOSTAP utility
主要是一些公用程式可以把參數傳給hostap-driver,以方便作一些測試或者其他用途


筆記型電腦:需有無線網卡
電腦兩台(Linux FC14)
n一台接上有線網路當作RADIUS Server使用

n一台架設hostap,需有兩張網卡用作bridge

2015年11月11日 星期三

MM player  system
web server 
media server (must, streaming many kind of media files to transport streams and send to APPs, and more, store the downloading media files via cloud server )
Third-party APP server for C2DM (Android Push Notification )

media player (must, a APP with GCM-enabled Android application for “Push VOD”)


C2DM(Android Push Notification )考量:
大部分行動裝置從internet更新或獲取資料一種方法是定期詢問(poll)server, 當在沒有新資料的週期, 就浪費網路頻寬與手機的電.
另一種方法是當server知道有資料更新了,才去接觸行動app. 當資料不常常更新,這是比較好的方法.
C2DM(Cloud to device messaging )
The service to push information to an Android app is called Cloud to Device messaging or short C2DM.
In a C2DM you have three involved parties. The application server which wants to push messages to the Android device, Googles C2DM servers and the Android app. The program on the application server can be written in any programming language, e.g. Java, PHP, Python, etc.
When the application server needs to push a message to the Android application, it sends the message via an HTTP POST to Google’s C2DM servers.
The C2DM servers route the message to the device. If the device is not online, the message will be delivered once the device is available. Once the message is received, an Broadcast Intent is created. The mobile app has registered an Intent Receiver for this Broadcast. The app is started and processes the message via the defined Intent Receiver.
C2DM messages are limited in size to 1024 bytes and are intended to inform the device about new data not to transfer it. The typical workflow is that Googles C2DM servers notify the Android app that new data is available. Afterwards the Android app fetches the data from a different server.
Android devices maintain an connection to the Android Play server. C2DM uses this existing connections to the Google servers. This connection is highly optimize to minimize bandwidth and battery consumption.
C2DM is currently still in beta and you need to apply to use it. C2DM applies a limit of approximately 200 000 messages per sender per day and is currently free of charge.


 
Media player --- VLS, MPlayer
which can stream MPEG-1, MPEG-2 and MPEG-4 files, DVDs, digital satellite channels, digital terrestial television channels and live videos on the network in unicast or multicast. Most of the VLS functionality can now be found VLC. Usage of VLC instead of VLS is advised.
MPlayer can play files from the network, using the HTTP, FTP, MMS or RTSP/RTP protocol.
can receive and play standards-compliant RTP audio/video streams, using the "LIVE555 Streaming Media" source code libraries – VLC, and MPlayer
Candidates:  (Open source)
1. VLC - cross-platform multimedia player and framework that plays most multimedia files as well as DVDs, Audio CDs, VCDs, and various streaming protocols. VLC plays most codecs (MPEG-2, DivX, H.264, MKV, WebM, WMV, MP3, etc.) so no codec packs are needed.
2. Mplayer
General Function:
RTSP Streaming Protocol, HTTP Streaming Protocol
Support Video Server: live555
Plays everything: Files, Discs, Webcams, Devices and Streams.
plays most codecs with no codec packs needed:
MPEG-2, DivX, H.264, MKV, WebM, WMV, MP3...
Completely Free, no spyware, no ads and no user tracking.
Video On Demand
Video Format : MP4
Playback : Pause, Play, Resume, Forward/Backward Seek
Menu Bar for Movie Category
Automatic and Real-Time Movie Category Update
Ref: http://vlc-media-player.en.softonic.com/android

1. media file format
2. max players can receive the transport stream from the server
3. how activate :
Play, playback,pause,fast forward, fast reverse,stop
PLAY
客户端發出播放請求:
PLAY rtsp://192.168.20.136:5000/xxx666 RTSP/1.0
CSeq: 4
Session: 6310936469860791894
Range: npt=0.000- //设置播放时间的范围
User-Agent: VLC media player (LIVE555 Streaming Media v2005.11.10)
器回信息:
RTSP/1.0 200 OK Server: UServer 0.9.7_rc1 Cseq: 4 Session: 6310936469860791894 Range: npt=0.000000- RTP-Info: url=trackID=0;seq=17040;rtptime=1467265309 //seq rtptime 都是 rtp 包中的信息
OPTION
目的是得到服务器提供的可用方法:
OPTIONS rtsp://192.168.20.136:5000/xxx666 RTSP/1.0
CSeq: 1 //每个消息都有序号来标记,第一个包通常是option请求消息
User-Agent: VLC media player (LIVE555 Streaming Media v2005.11.10)
服务器的回应信息包括提供的一些方法,例如:
RTSP/1.0 200 OK
Server: UServer 0.9.7_rc1
Cseq: 1 //每个回应消息的cseq数值和请求消息的cseq相对应
Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, SCALE,
GET_PARAMETER //服务器提供的可用的方法
PAUSE
客户端发起暂停请求:
PAUSE rtsp://192.168.20.136:5000/xxx666 RTSP/1.0
Cseq: 5
Session: 6310936469860791894
服务器回应:
RTSP/1.0 200 OK
Server: UServer 0.9.7_rc1
Cseq: 5
Session: 6310936469860791894

TEARDOWN
客户端发起关闭请求:
TEARDOWN rtsp://192.168.20.136:5000/xxx666 RTSP/1.0
CSeq: 6
Session: 6310936469860791894
User-Agent: VLC media player (LIVE555 Streaming Media v2005.11.10)
服务器回应:
RTSP/1.0 200 OK
Server: UServer 0.9.7_rc1
Cseq: 6
Session: 6310936469860791894
Connection: Close

SETUP
客户端提醒服务器建立会话,并确定传输模式:
SETUP rtsp://192.168.20.136:5000/xxx666/trackID=0 RTSP/1.0
CSeq: 3
Transport: RTP/AVP/TCP;unicast;interleaved=0-1
User-Agent: VLC media player (LIVE555 Streaming Media v2005.11.10)
uri中带有trackID0,表示对该通道进行设置。Transport参数设置了传输模式,包
的结构。接下来的数据包头部第二个字节位置就是interleaved,它的值是每个通道都
不同的,trackID0interleaved值有两个010表示rtp包,1表示rtcp包,接受端
根据interleaved的值来区别是哪种数据包。
服务器回应信息:
RTSP/1.0 200 OK
Server: UServer 0.9.7_rc1
Cseq: 3
Session: 6310936469860791894 //服务器回应的会话标识符
Cache-Control: no-cache
Transport: RTP/AVP/TCP;unicast;interleaved=0-1;ssrc=6B8B4567

RTSP点播消息流程实例
客户端:VLC
RTSP服务器:LIVE555 Media Server
1)C(Client)-> M(Media Server)
OPTIONS rtsp://192.168.1.109/1.mpg RTSP/1.0
CSeq: 1
user-Agent: VLC media player(LIVE555 Streaming Media v2007.02.20)
1)M -> C
RTSP/1.0 200 OK
CSeq: 1
Date: wed, Feb 20 2008 07:13:24 GMT
Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE
2)C -> M
DESCRIBE rtsp://192.168.1.109/1.mpg RTSP/1.0
CSeq: 2
Accept: application/sdp
User-Agent: VLC media player(LIVE555 Streaming Media v2007.02.20)
2)M -> C
RTSP/1.0 200 OK
CSeq: 2
Date: wed, Feb 20 2008 07:13:25 GMT
Content-Base: rtsp://192.168.1.109/1.mpg/
Content-type: application/sdp
Content-length: 447
v=0
o =- 2284269756 1 IN IP4 192.168.1.109
s=MPEG-1 or 2 program Stream, streamed by the LIVE555 Media Server
i=1.mpg
t=0 0
a=tool:LIVE555 Streaming Media v2008.02.08
a=type:broadcast
a=control:*
a=range:npt=0-66.181
a=x-qt-text-nam:MPEG-1 or Program Stream, streamed by the LIVE555 Media Server
a=x-qt-text-inf:1.mpg
m=video 0 RTP/AVP 32
c=IN IP4 0.0.0.0
a=control:track1
m=audio 0 RTP/AVP 14
c=IN IP4 0.0.0.0
a=control:track2
3)C -> M
SETUP rtsp://192.168.1.109/1.mpg/track1 RTSP/1.0
CSeq: 3
Transport: RTP/AVP; unicast;client_port=1112-1113
User-Agent: VLC media player(LIVE555 Streaming Media v2007.02.20)
3)M -> C
RTSP/1.0 200 OK
CSeq: 3
Date: wed, Feb 20 2008 07:13:25 GMT
Transport: RTP/AVP;unicast;destination=192.168.1.222;source=192.168.1.109;client_port=1112-1113;server_port=6970-6971
Session: 3
4)C -> M
SETUP rtsp://192.168.1.109/1.mpg/track2 RTSP/1.0
CSeq: 4
Transport: RTP/AVP; unicast;client_port=1114-1115
Session: 3
User-Agent: VLC media player(LIVE555 Streaming Media v2007.02.20)
4)M -> C
RTSP/1.0 200 OK
CSeq: 4
Date: wed, Feb 20 2008 07:13:25 GMT
Transport: RTP/AVP;unicast;destination=192.168.1.222;source=192.168.1.109;client_port=1114-1115;server_port=6972-6973
Session: 3
5)C -> M
PLAY rtsp://192.168.1.109/1.mpg/ RTSP/1.0
CSeq: 5
Session: 3
Range: npt=0.000-
User-Agent: VLC media player(LIVE555 Streaming Media v2007.02.20)
5)M -> C
RTSP/1.0 200 OK
CSeq: 5
Range: npt=0.000-
Session: 3
RTP-Info: url=rtsp://192.168.1.109/1.mpg/track1;seq=9200;rtptime=214793785,url=rtsp://192.168.1.109/1.mpg/track2;seq=12770;rtptime=31721