標籤: 雲端

感謝-隄陽休閒露營車,委外開發POS系統(軟體客製化、軟體設計)

    網智數位-軟體開發團隊,今天承接在泰山經營露營車改裝行的委託,開發客製化POS系統,讓客戶可以到店,可以自由在營幕上進行選擇改裝車型,系統根據選擇的車型,線上可以自由選購改裝的項目與金額,並可以快速了解預覽改裝的項目與預算,並進行列印訂單與付款。

IMB00068_IMB00068007

網智數位-開發團隊一直突破開發技術、累積各種產業知識,而且在出版業、室內設計裝潢業、製造業、機電顧問、貿易、地板、窗簾、窗材、拉門、布料業的商業管理軟體投入有特別的領域知識、也在圖控軟體(圖控軟件)、機械手臂、Android APP 、iPhone APP、3D列印 開發一直突破再創新,我們也堅持相信好的軟體可以協助企業,不管在管理營運角度、商品創新、決策分析等都絕對是不可缺少的關鍵因素,如果客戶您有任何軟體開發、程式開發委外需求,請聯繫我們讓我們協助您一起討論如何開發一個好的軟體來協助您。

網智數位-軟體開發(軟件開發)
針對各特殊產業都可以量身定做符合貴公司的需求,別人無法克服的就是我們的挑戰
業務合作、軟體委外開發
業務窗口:allen@netqna.com
聯繫電話:0920-883-870
公司電話:02-55991310
公司地址(業務營運處):台北市中山區錦州街 25 號 5 樓
skype: netqna
line:netqna
微信:netqna
黃先生 Allen
my_qrcode_1519621481105

網智數位-開發團隊成為精誠資訊(股票代號6214)軟體開發合作方

知名台灣資訊服務龍頭商-精誠資訊,與網智數位-軟體開發團隊正式合作,為中部中小企業開發行業領域管理軟體,提升中小企業資訊數字化管理、營運管理流程資訊化,為中小企業主提供及時性、彈性模組化、客製化業績報表查詢、成本利潤損益表、統計圖表。

精誠資訊SYSTEX Corporation (台股代號6214) 成立於1997年,是台灣資訊服務產業龍頭企業,擁有近3,000名員工,位居台灣前一百大服務業,為跨足兩岸三地及東南亞的亞洲區域級資訊服務集團公司,在兩岸三地共設有超過50個營運據點,2018年合併營收約為新台幣195.1億元。

IT帥哥美女 (4)

網智數位-開發團隊一直突破開發技術、累積各種產業知識,而且在窗簾、窗材、拉門、布料業的商業管理軟體投入有特別的領域知識、也在圖控軟體(圖控軟件)、機械手臂、Android APP 、iPhone APP、3D列印 開發一直突破再創新,我們也堅持相信好的軟體可以協助企業,不管在管理營運角度、商品創新、決策分析等都絕對是不可缺少的關鍵因素,如果客戶您有任何軟體開發、程式開發委外需求,請聯繫我們讓我們協助您一起討論如何開發一個好的軟體來協助您。

網智數位-軟體開發(軟件開發)
針對各特殊產業都可以量身定做符合貴公司的需求,別人無法克服的就是我們的挑戰
業務合作、軟體委外開發
業務窗口:allen@netqna.com
聯繫電話:0920-883-870
公司電話:02-55991310
公司地址(業務營運處):台北市中山區錦州街 25 號 5 樓
skype: netqna
line:netqna
微信:netqna
黃先生 Allen
my_qrcode_1519621481105

區塊鏈挖礦-電力、算力監控管理軟體(雲端挖礦平台)

網智數位-軟體開發團隊與台灣比特幣挖礦知名團隊-比特空間,可參閱(https://www.facebook.com/btspace/)與非凡新聞強力報導-台灣真行第46集 比特空間https://www.youtube.com/watch?=E8Qssnd_0Kw),該比特幣團隊已經擁有數百臺機器進行挖礦算力運作買賣。

      也因為隨著挖礦機器數量越來越多,需要投入大量人力時間進行監控,所以委託我們開發團隊,進行開發管理數百臺挖礦機,可以得知每臺挖礦算力效益、運作狀態、發送mail通知挖礦機異常、顯示卡效能統計圖表、整合全球最大的算力平台 NiceHash,進行快速呈現每台目前的挖礦算力狀況。

 

客戶挖礦雲端中心

LINE_ALBUM_AI產生圖_240212_617LINE_ALBUM_AI產生圖_240212_619

 

網智數位-軟體開發,專門針對客戶進行量身設計的客製化軟體,已有多年經驗,也在不同產業領域都有實作成功案例。

 

網智數位-軟體開發(軟件開發)
針對各特殊產業都可以量身定做符合貴公司的需求,別人無法克服的就是我們的挑戰
業務合作、軟體委外開發
業務窗口:allen@netqna.com
聯繫電話:0920-883-870
公司電話:02-55991310
公司地址(業務營運處):台北市中山區錦州街 25 號 5 樓
skype: netqna
line:netqna
微信:netqna
黃先生 Allen
my_qrcode_1519621481105

企業數位化轉型所依賴的物聯網平台(軟體開發、軟件開發、物聯網開發、智能設備)

     今天我們都知道物聯網在任何化規模企業的轉型中扮演著重要角色,但如果可以透過實行適當的整合現有的物聯網平台資源,那麼就可以在既有的設備資產和IT基礎設施之間充當一座重要的橋樑,例如一家企業可以充分地利用物聯網來改善供應鏈管理和物料資源規劃(MRP)的效率、甚至SCM(供應鏈管理)、上下游資訊系統、訊息傳遞的整合。

LINE_ALBUM_AI產生圖_240211_216LINE_ALBUM_AI產生圖_240211_260

 

     導入與建置企業一個好的物聯網平台,我們必須好好的從頭規劃、重新深思,如何與現有的企業資源規劃(ERP)、MRP(物料需求計劃)、甚至是已有的商業智慧(BI)等系統統統整合起來,才能真正地有效為制定決策的高階主管來提供最有用的洞察力、戰略儀表板,再來用來實施物聯網戰略與部署一個全面的企業應用軟體整合(EAI)專案是一樣複雜與困難地。

       因為由於企業的物聯網現在都備受關注,眾多平台廠商與系統資訊整合廠商正在大力投資於端到端(P to P)解決方案,而這些平台可幫助企業組織連接設備、採集數據、分析趨勢和管理資產。
下面是你可以考慮為物聯網戰略採用的幾個主要平台。

 

微軟(Microsoft)
微軟是少數幾家提供一整套物聯網解決方案的公司之一。 Windows 10物聯網版本可以安裝到資源有限的設備上。運行Windows 10或其他任何操作系統的這些設備很容易連接到Azure物聯網平台。微軟構建了核心服務,可為物聯網提供必要的功能。連接到物聯網Hub的設備可以通過事件Hub攝取數據。 Stream Analytics和HD Insight為傳感器數據提供了大數據和分析功能。 Azure機器學習很容易整合起來,以便對數據流執行預測分析。 Power BI用於儀表板和可視化。微軟還構建了Azure物聯網套件這款客戶可以部署的交鑰匙解決方案。

在此我也要特別強調,近年來網智數位陸續透過微軟的技術與平台,幫台灣的許多行業的領域廠商如工業馬達製造業、工業風扇設備大廠透過微軟平台建置可以同時管理數萬台風扇、建立數位儀錶板、也踏入越南廠商的合作建置 Power BI 的可視化即時圖表軟體。

 

 

IBM
企業物聯網可謂是IBM Watson平台的基石。 IBM是這個市場的早期先行者之一,它將機器學習和認知計算的威力引入到物聯網。 Watson物聯網與Bluemix緊密整合,擁有一整套廣泛的功能。開發人員可以使用SDK和API,自動將設備導入到平台上。 IBM注重區塊鏈,還將幫助客戶將物聯網與基於HyperLedger的新興分佈式賬本技術集成起來。由於最近投入30億美元,IBM對物聯網、認知技術和機器學習寄予厚望。客戶可以訂購基於雲的物聯網服務,也可以在本地部署平台。


亞馬遜(Amazon)

在過去的十年間,亞馬遜網絡服務(AWS)已添加了基礎設施的關鍵構建模塊,包括計算、存儲和數據庫。由於IaaS達到了穩定狀態,AWS於是調整重心,致力於提供充分利用底層構建模塊服務的平台服務。 2014年,亞馬遜收購了2lemetry,這家物聯網初創公司的業務主攻M2M,後來成為了AWS物聯網服務。 AWS物聯網平台充分利用現有的雲服務來提供高級功能。從設備管理到虛擬化,AWS擁有企業需要的一切服務。其服務包括AWS Lambda、亞馬遜EMR、亞馬遜DynamoDB、亞馬遜Redshift、亞馬遜Kinesis以及最近發布的亞馬遜QuickSight,可以處理數據攝取、存儲、處理和可視化。 AWS的現有客戶很容易將物聯網與其云解決方案整合起來。

思科(Cisco)
思科將整個公司押寶於企業物聯網上。由於在數據中心領域有相當大的實力,思科旨在成為物聯網邊緣設備的首選廠商。思科在大力推行其霧計算(Fog Computing)項目,利用其在企業數據中心的傳統強項發力。該公司針對企業物聯網場景優化網絡設備。思科收購Jasper幫助這家公司向電信公司交付一款白標物聯網平台。該平台非常適合跟踪連接至蜂窩網絡的基於SIM的設備。該公司還與英特爾和微軟結為合作夥伴,大力推動邊緣分析方面的創新。

 

平台技術來源整理
reference:Building a Real-Time Device Management System  & Can Alhas

 

 

 

 

 

網智數位-軟體開發(軟件開發)
針對各特殊產業都可以量身定做符合貴公司的需求,別人無法克服的就是我們的挑戰
業務合作、軟體委外開發
業務窗口:allen@netqna.com
聯繫電話:0920-883-870
公司電話:02-55991310
公司地址(業務營運處):台北市中山區錦州街 25 號 5 樓
skype: netqna
line:netqna
微信:netqna
黃先生 Allen

勒索軟件大規模攻擊微軟的Windows系統

在5月13日的可靠消息,根據各大國內外媒體報導,大規模的勒索軟體攻擊已破壞英格蘭醫院的運作,也感染全球數十個國家的電腦。

wKiom1kWr9zChehWAABHDOkvIiA50.jpeg-wh_651x-s_2026428311_thumb[8]

而微軟今天表示,它的工程師已針對該攻擊加強了檢測和保護。

微軟發言人在聲明中稱,“今天,我們的工程師已針對名為Ransom:Win32.WannaCrypt的新惡意軟件加強了檢測和保護。”它說,公司正與客戶合作提供額外的幫助。
勒索軟件是一種能夠持續阻止計算機正常運作的軟件,除非受害者交出勒索贖金。新的WanaCrypt0r 2.0勒索軟件尤其致命,因為它利用了竊取自美國國家安全局(NSA)的黑客工具。
3月,微軟成功補上了讓該名為EternalBlue的NSA工具能夠運作的安全漏洞。
今天,針對WanaCrypt0r勒索軟件,Windows更新了兩款安全工具——Windows Defender antivirus和Windows Security Essentials。
卡巴斯基實驗室今天發現,全球74個國家共計發生數万起WanaCryt0r攻擊。該攻擊導致英國的醫院系統拒絕病患看病,西班牙電信公司出現大面積的停工,俄羅斯內務部有1000台計算機被感染。

該勒索軟件所使用的EternalBlue工具是一個名為ShadowBrokers的組織所流出的NSA黑客工具,該組織自夏季以來一直在放出這種工具。 EternalBlue於4月放出,就在微軟剛剛填補了安全漏洞之後。

ShadowBrokers一開始曾嘗試拍賣那些工具,隨意流出了至今仍很危險的工具來證明自己擁有其所聲稱的工具。由於不滿報價和其它的貨幣化機制,該組織於1月打消了拍賣計劃。
4月,ShadowBrokers放出一攬子新的工具,稱該舉是為了抗議美國總統特朗普做出中立派決策而非極右翼決策。
專家們認為,及時更新電腦軟件系統對於避免遭受黑客和惡意軟件的攻擊至關重要

目前具體做法與媒體報導,可以參考以下介紹
XP也有救!WannaCry 2.0勒索軟體肆虐,微軟破例再釋Windows XP修補
WannaCry 2.0勒索蠕蟲狠襲全球,上百個國家受駭,台灣也是重災區
勒索病毒爆發 安全專家預警周一上班要小心
中職/系統當機頭一回 尚不確定為勒索病毒
病毒軟體勒索恩主公醫院 病患個資無虞

 

網智數位-軟體開發(軟件開發)
針對各特殊產業都可以量身定做符合貴公司的需求,別人無法克服的就是我們的挑戰
業務合作、軟體委外開發
業務窗口:allen@netqna.com
聯繫電話:0920-883-870
公司電話:02-55991310
公司地址(業務營運處):台北市中山區錦州街 25 號 5 樓
skype: netqna
line:netqna
微信:netqna
黃先生 Allen

軟體公司與網路(互聯網)公司之差異性(軟體開發、客製化軟體、程式設計)

    在現行許多軟體公司與網路(互聯網)公司在客戶面、獲利來源、以及市場區隔性、差異性,讓很多人有點分不清楚,這兩者在本質上是有一定的落差,不論是商業模式、獲利來源、團隊人才取捨,而 Allen 我自2003年進入.NET程式平台開發領域(早起是開發 LAMP,Linux + Apache + MySQL +PHP),這快15年的.Net技術迭代更新,我能跟隨學習的就盡力,當然也犧牲了生活品質質量,我期間經歷過專業的管理軟體公司、網路公司,也有國內上市企業服務、傳統產業擔任資訊部經理,深感其中的差異,撰寫文件分析兩者的聯繫和區別,供其他疑惑者的朋友可以進行思考我的論點(當然不一定是對)。

LINE_ALBUM_AI產生圖_240212_750

IT 技術的選擇差異性

(一)管理軟體公司著重於業務實現、產業領域知識的導入、企業流程的整合,網路公司著重於高並發、高可用、使用者體驗、操作介面友善性等;在企業管理軟體的使用者一般是企業或各工廠各部門行政人員,一個大公司也不過10~300個使用者同時上線,所以相對一定是對與企業的業務流程的實現與整合相對要求高,這樣才可以節省人力、降低人事成本,而不是增加成本,當然有的管理軟體提供了大量的簽核審批的機制、功能,每走一個流程,每確認一個步驟(下訂單,發貨,產生發票,請收款)都要審核,我個人認為這樣的管理軟體是增加使用者的成本,進而降低效率,我們把企業、工廠當成一個合作的整體存在,業務部負責下訂單,生產部負責在規定的時間完成訂單生產,採購負責及時的購買所需要的生產物料,這是一個密不可分的整體化運作,任何一個環節卡住會造成訊息溝通的不流暢,更甚至會導致生產停滯、呆料,我在多年以前,我們在網上註冊一個帳號,輸入帳號、密碼等,提交時提示電子郵件必須輸入,這時我們輸入的密碼也會被清空,對於非常重視使用者經驗的網路公司,勢必一定會考慮到這種案例,系統需要幫忙我們記住之前輸入的密碼,這時只需要輸入電子郵件即可再次發送。

(二)單純的軟體開發公司用的技術相對來說一般是比較老的,穩定的,成熟的技術。比如.WCF、Windows Forms、WPF、Web Forms、ASP.MVC,而網路公司走向一般會追求新的技術,比如Spark、Redis、Micro Servie(所謂的微服務)、Hadoop、Node.js 等。單純軟體公司會使用 SQL Server Analysis Services作為 OLAP 的分析工具,而新的網路公司可能會採用 Spark + Hadoop 等大數據技術來達成實作的可能性,如果工程師在喜歡搞技術創新的管理軟體公司上班,常常會活的比較痛苦。如Linq to SQL出了沒多久,Entity Framework出現,Silverlight,WPF後來也是逐漸從公眾視野中消失。 ASP.NET MVC的出現,大批Web Forms程序員找工作變難了。現在ASP.NET Core 的又出現,不曉得會不會導致ASP.NET MVC 程式設計師的資訊焦慮症候群。

(三)管理軟體公司的技術升級常常來自於內部本身的程式開發人員,而網路公司的技術變更多的來源於客戶、業務需求。正所謂成也蕭何,敗也蕭何;但處於軟體行業頂端的軟體公司創造技術解決問題,提供開發工具維持企業利潤,中小公司則應用技術解決業務問題。軟件業相當頻繁的技術更新,造成了大批老技術程序開發人員失業,從而進一步增加了軟件公司的生存成本,例如現在市場上幾乎找不到或是很少能找到VB6 或 Cobol 程式設計師,還有一些我們沒有聽說過的技術(他們的確存在於現實的公司中、例如 cobol,今年我們就有要評估一個大型系統是 cobol要轉變為.Net平台的評估案),VB6 開發人員要嗎失業,要嗎轉型,那麼軟體公司呢,大量的用Delphi開發人員的,非常優秀的VB6 開發還是需要人員維護,軟體公司面臨兩個選擇:要嗎用新技術重寫,要嗎養幾個老開發人員一直做維護。軟體公司的老闆都是人精,不可能將公司的未來受一兩個程序開發人員控制,所以就用前一種方案,用新技術改寫,這樣的目的主要是好招人,老程式員離職了再招新開發人員,努力將公司的命運控制在自己手中。以前我們公司的C/S(Windows Forms、WPF)程式開發人員常常會擔憂以後找不到工作,當時身為他們的直接主管,常常需要體會他們的這種壓力。技術上要將一些通用的重要的技術方案交給他們做,讓他們建立信心,同時也給他們安排一些熱門技術的培訓課程,作為管理人員,也需要對他們的未來負責,對他們的績效給予一定的相對優質的評定。網路公司的IT技術變更,比如大數據的需求,數據的來源形式和格式多種多樣,原有數據挖掘方案解決不了,迫切需要做技術變更以適應這種變化。於是就有對Hadoop,Spark這種大數據技術的需求,更厲害的網路公司甚至於重建一套大數據平台,以保證一直處於行業領先地位。

團隊組織文化的差異性

(一)軟體公司適合純技術人員生存,網路公司則相對重運維+技術。比如上一節我提到的緩存技術,網路公司將此發揚光大,提供一整套的分散式解決方案(Redis,MongoDB)。程式開發人員不僅僅要會調用API,還需要Deploy部署服務器,理解它們的內部運作機制原理,而在軟體公司,為了增加產品的高可用性,我們提供集群,鏡像,資料庫複寫,資料庫記錄檔(日誌)等技術,我們可以保證系統 7*24 不間斷運作。而網路公司對此要求更高,他們還要求高並發。我們知道資料存在硬碟上,讀取資料或保存資料是一個很合理的操作,管理軟體增刪查詢修改都是這樣模式,但網路公司對此還不滿意,因為多人並發的存在,資料必須要保存在記憶體中才能滿足快速的高並發地需求,當然還有高可擴展性,為了升級管理軟體,我們停止伺服器程式,或者直接重新啟動下機器是很常見的操作,但網路公司對此零容忍,他們要求更新系統時,不能停止服務,或是非常短暫(秒級)的停止服務。後者要求系統可以做到熱插撥,這跟USB接口做到熱插撥並成為業界標準是同一個趨勢,我們知道Oracle升級補丁包時,可以不用停止資料引擎服務,這個特性對網路公司非常重要(SQL Server用鏡像技術也可以達到此目的)。總體來說,管理軟體公司只需要把技術做好,而互聯網公司要求在技術之外,還需要了解運維層面的知識。

( 二)單純的軟體公司的同事頭腦相對固定(當然也聰明,能從事軟體業,相對一定是邏輯思維能力一定不錯),網路公司則靈活一些,它們存在的理由是創新。管理軟體作為一種管理思想的軟體整合實現,應該是一種管理模式,方法和思路與流程的固化,不允許或是少量允許變化。試想一下,規定的流程不跑,數據沒經過運算,自然沒有想要的結果。舉例說明,大部分的ERP軟件約定的流程,客戶下訂單,物控部跑MRP計劃,產生物料採購需求和半成品的加工需求,最後成品完成入庫,向客戶發貨,財務結算等。這是製造業ERP的基本流程,不過貿易公司的ERP則可以不這樣跑,可以直接向供應商下訂單,然後發貨到客戶,自己甚至都不用租賃倉庫,直接提供供應商到用戶的端到端(直運業務)業務模式。這些思路決定了管理軟件不需要創新,按照約定俗成的或是上司規定的流程完成即可。常此在這樣的思路下工作,人會失去創新血液。管理軟件的員工常常會被產品設計人員的思路導向,創新會自食惡果。而網路公司則相對充滿著創新的動力。

(三) 在管理軟體公司是人才培養的搖籃,通常軟體公司規模也偏小,但確實是產生高級工程師的地方。網路公司因為業務變更頻繁,技術更新迭代快,不適合純技術人員生存,常常是技術人員走管理,轉業務銷售的地方,在軟體公司有明確的人才培養方案,一個資深開發人員帶幾個年輕程式設計師,像老母雞帶小雞一樣,一步步教導這個怎麼實現,那個如何設計會更有效率一些,直到新人變老手,初級程序員變中級工程師。比如我們在管理軟體公司學到的,借助於緩存可以提高效率,改善性能,用反射技術可以做成插件式系統,用動態語言可以把系統做成可擴展的,這些技術隨著程序員年歲的增長,慢慢學會並靈活應用。網路公司因為技術變更快,Web 2.0、雲計算、物聯網、車輛網,大數據,技術更新非常頻繁,只有達到壟斷級別的公司才可以生存。我們都是凡人,能進入各個領域的壟斷級別的公司都非常不容易,即使進入,項目迭代周期短,KPI壓力大。 (我這裡說的適合於中小公司,大公司不適合於此小節描述。)

銷售模式與市場競爭差異性

(一)單純軟體公司的人員相對比較起來缺少銷售觀念,而網路公司員工更多的會關注到到商機,常常會考慮把技術轉化為價值,而管理軟體公司的員工則比較缺乏市場的積極性、參與了解動能不足,他們可能還在研究新版本的開發工具有哪些產品特性,期待以拖放的方式就能設計出工作流的軟體廠商,所以如果能把幾年工作的成果抽象提煉出來,形成一些公共的開發類庫,方便以後的開發,這是一個小小的進步。進一步的,能把管理軟體中相同的操作界面和模式總結出來,做出一些相對通用的界面和控制箱,比如資料的輸入Entry,資料的查詢Query,資料的清單 List,設計報表Report,資料查找Lookup,自定義查詢Query等,初步形成一個開發框架。再進一步,我們用自己提煉的開發框架,用自己參與和理解的技術理念,做出一套產品,這也算是一個小小的進步。技術進步的每一個階段都可以為你的職業發展帶來無窮的好處。熟練的程序員再也不擔心找工作沒人要。成為一個領域的資深開發人員,可以為自己贏取技術主管或經理的職位。做出一個領域或行業的產品,如果在合適的時機碰上會做市場的銷售人員,創業也是非常有可能的,記得一句話,夢想是要有的,萬一實現了呢?

(二) 網路公司相對容易產出新概念,新名詞以吸引大眾眼球,以此創造概念經濟,而單純軟體公司相對比較墨守成規,比如我在2006年所經歷的Web 2.0,那時滿大街的都是這種宣傳材料,沒過多久這種概念就過時了。正如現在鼓勵創業氛圍,雲計算服務,物聯網、車聯網、智慧家庭以及大數據等等,相信不久也會從我們的公眾視野中消失,當然也可能產生非常大的市場規模,但我相信市場一定會大洗牌,取而代之的是大批的網路公司、物聯網消失不見,而管理軟體公司則很少會這樣,MRP,ERP還是上世紀90年代的概念,現在仍然適合於企業管理軟體的設計思路。儘管ERP之後還有產生ERP II概念,不過也不怎麼流行。管理軟件公司相對務實,能把物料需求計劃(MRP)跑流暢,基本上公司的信息化水平就上了一個大台階,也不會再去追求管理創新。金融也是一個不適合創新的領域,記得 一個經濟學家說過,我們應該將所有的經濟學家從社會上去除,因為金融改革就是擾亂社會秩序。國際金融炒家索羅斯的至理名言也曾表述,我們就是為了創造一種假象,然後在人們認識到真相前提前退出遊戲。

     在這幾天連假看到網路詢問未來趨勢、以及思考許多資深從業人員後,隨意整理撰寫的文章,希望新的2017年有嶄新的開始,軟體業、網路業、IT技術 我依然熱愛,一生與它為伍。

網智數位-軟體開發(軟件開發)
針對各特殊產業都可以量身定做符合貴公司的需求,別人無法克服的就是我們的挑戰
業務合作、軟體委外開發
業務窗口:allen@netqna.com
聯繫電話:0920-883-870
skype: netqna
line:netqna
微信:netqna
黃先生 Allen

感謝2016年,邁向2017年新目標(軟體開發、客製化軟體、系統設計)

       新的一年2017年的開始,我非常感謝我團隊的付出,去年成績成長了許多,也因此積極擴充了團隊人數(也歡迎相關人才加入我公司團隊),尤其最讓我開心的是委託我們進行軟體客製化服務的幾乎都是該產業領域的佼佼者,例如地板業企業管理軟體、窗簾業ERP、馬達業-產品選型系統、機電顧問業-紅外線與局部放電測試管理軟體、醫療生技上櫃公司、大陸集團清華同方、以及工業冷凍空調設備、全凍式儲冰的領導廠商進行-圖控軟體開發功能擴充專案、還是其他林林總總的進銷存、網頁設計委託案,這都是客戶對網智數位的信任,當然還有許多還必須繼續開發改進的。

LINE_ALBUM_AI產生圖_240211_88

        在這邊我也代表網智數位-軟體開發團隊,感謝客戶的信任,專案開發過程中會有問題的產生、時間的磨合、知識的互相學習,我也期待內部團隊在經歷各種專案壓力下,吸收各客戶的經驗,保持開發一個好的軟體,為客戶帶來實際的效益。

網智數位-軟體開發(軟件開發)
針對各特殊產業都可以量身定做符合貴公司的需求,別人無法克服的就是我們的挑戰
業務合作、軟體委外開發
業務窗口:allen@netqna.com
聯繫電話:0920-883-870
skype: netqna
line:netqna
微信:netqna
黃先生 Allen

繪圖程式-折線圖、區域圖 實作一(軟體設計、軟體開發、程式開發)

        這半年來一直不斷被客戶要求開發相關繪圖功能的程式,礙於現在很多程式開發人員,已經越來越多人只會資料庫的CRUD,對於繪圖程式撰寫掌握度不是很好,甚至基本觀念也沒有,所以大多數程式開發人員都是去找相關的Chart套件,也很少有人示範在 Windows 10 APP 如何開發相關繪圖程式功能(很抱歉目前Windows 10 似乎沒有提供相關繪圖控制箱可以直接使用,所以要真的自己寫繪圖功能),所以我這篇就來教導如何在 Windows Universal APP 開發一個 折線圖功能,折線圖在軟體應用上面常用於股票分析、統計分析、銷售分析、趨勢走向等圖表展現。

(折線圖)

r-data-exploration-and-visualization-line-plot-1

(區域圖)

886d1a27-3744-417b-a3e5-e9b9878e5760

 

折線圖原理其實就是在一個二維的空間(平面)中,利用多個 【X,Y】坐標點透過直線連結起來,所形成的趨勢圖形,通常 X 軸代表一個某種類別例如月份、年份、型別等,而Y軸代表某類別的實際值,例如業績、銷售量、收入、人數等。在折線圖中,X軸都呈現等量(距)的增加。

現在我們知道了簡單的折線圖原理後,在Windows 10 (UWP)平台開發上,是必須使用 Polyline 繪圖技術來進行開發,可以在界面直接選告 XAML 語法,例如底下Code:

<Polyline Stroke=“Blue” StrokThickness="3”Points=”5,10 20,30 25,40 100,120”/>

其中最重要的來自于 Points 屬性 ,5,10 =》代表一個點 [5,10] =>X=5,Y=10

但通常在開發繪圖功能時,都是動態繪圖產生,所以在這邊我也示範如何完全在背後使用程式開發一個折線圖功能,我在界面上我簡單的設計2個按鈕,分別作為繪製 折線圖跟區域圖,前端界面如下

 

image

 

//XAML Code

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
        <Grid.RowDefinitions>
            <RowDefinition Height="100″/>
            <RowDefinition Height="Auto"/>

        </Grid.RowDefinitions>
        <StackPanel  Grid.Row="0″ Orientation="Horizontal">
            <Button Content="折線圖繪製" Click="DrawChart_1″ Margin="12″ Background="AliceBlue"></Button>
            <Button Content="區域圖繪製" Click="DrawChart_2″ Margin="12″ Background="Wheat"></Button>
        </StackPanel>
        <Grid x:Name="gdChartCanvas" Grid.Row="1″ Height="auto" HorizontalAlignment="Center" VerticalAlignment="Center">

        </Grid>
</Grid>

 

 

在後端的程式碼,分別設計了 GetAllPoints()方法、與對應的 DrawChart_1 、DrawChart_2 事件方法

       /// <summary>
       /// 取得所有折線圖、區域圖的 Y值清單
       /// </summary>
       /// <param name="yValues">Y值清單</param>
       /// <param name="perWidth">X等距寬度</param>
       /// <param name="yStartValue">Y起始值</param>
       /// <returns></returns>
       private PointCollection GetAllPoints(List<double> yValues, double perWidth, double yStartValue)
       {
           PointCollection points = new PointCollection();
           double x = 0;

           foreach (double yVal in yValues)
           {
               double y;

               //判斷 Y 值是否小於 Y坐標起始值,因為畫布是從 100 開始
               if (yVal < yStartValue)
               {
                   y = 100;
               }
               else
               {
                   //可以套用自己的公式來設定Y值
                   //y = Math.Floor((500 – (yVal * 200) / 300));
                   y = yVal;
               }

               Point point = new Point(x, y);
               points.Add(point);
               x += perWidth;
           }

           return points;
       }

 

      /// <summary>
      /// 繪製折線圖
      /// </summary>
      /// <param name="sender"></param>
      /// <param name="e"></param>
      private void DrawChart_1(object sender, RoutedEventArgs e)
      {
          //清除畫布
          this.gdChartCanvas.Children.Clear();

          //Y值清單
          List<double> datas = new List<double> { 185, 130, 230, 140, 200, 60, 170, 150, 190, 150, 110, 220, 130, 190, 150 };

          //取得套用公式的Y轉變值
          PointCollection pointCollection = GetAllPoints(datas, 45, 100);

          Polyline polyline = new Polyline { Points = pointCollection, Stroke = new SolidColorBrush(Colors.Red) };

          this.gdChartCanvas.Children.Add(polyline);
      }

 

上述程式撰寫完畢後,就可以直接點選【折線圖繪製】按鈕,畫面馬上呈現折線圖,如下執行結果

image

image

 

 

 

 

網智數位-軟體開發(軟件開發)
針對各特殊產業都可以量身定做符合貴公司的需求,別人無法克服的就是我們的挑戰
業務合作、軟體委外開發
業務窗口:allen@netqna.com
聯繫電話:0920-883-870
skype: netqna
line:netqna
微信:netqna
黃先生 Allen

機電行業-軟體解決方案(紅外線、局部放電、點料表)

        今年我公司針對機電行業領域,開發出一個針對紅外線、局部放電檢測的測試報告,轉為一個獨立的專案管理報告,該管理軟體可以協助將客戶歷年來的紅外線、局部放電的報告資料,如拍攝位置、拍攝盤名、檢測人員、天氣狀況、環境溫度、濕度、相關電流(R、S、T、N)、額定電流、檢測照片、可見光圖片等欄位作有效資料管理。

image

        

 

 

 

 

 

 

 

並且針對每個檢測報告的的【判定結果】也會根據溫度、電流等條件進行結果的系統判定,可以大幅減少人工判定作業的誤差與錯誤,如下圖

image

           在每個報告項目我們都可以指定報告是否有異常原因、異常項目(後續我們的管理軟體,都可以針對所有異常原因、異常項目)進行分析統計趨勢報表,作為管理層級人員的追蹤檢討事項、以及執行面的調整。

image

管理軟體部分統計圖表

image

image

image

image

image

 

以上所有功能皆可匯出 Excel 檔作為報表、提供給客戶,提升機電產業的管理績效,以往我們的客戶在還沒有使用我們的管理軟體時,每次產生一個報告都需要人工在 Excel、Word作業,行政助理到處複製貼上,初步估計人工花費至少超過10天,現在使用我們的軟體,只需要一個按鈕就可以馬上產出給客戶一個完整的報告),而且案子一多根本無法有效作管理,例如想知道目前有設備過熱的地點有哪些、散熱發生的又有哪些;所以使用我們的管理軟體後,可以有效的跟客戶呈現一個即時的報告,作為提升機電產業的競爭性,目前已經有多家新竹大廠導入我們的軟體,如果您有這個需求,可以聯繫我們,我們可以安排時間到現場Demo我們的系統。

 

網智數位-軟體開發(軟件開發)
針對各特殊產業都可以量身定做符合貴公司的需求,別人無法克服的就是我們的挑戰
業務合作、軟體委外開發
業務窗口:allen@netqna.com
聯繫電話:0920-883-870
skype: netqna
line:netqna
微信:netqna
黃先生 Allen

 

Windows 10 的 UDP 與 TCP 網路通訊實作案例二(軟體開發、軟件開發、程式設計、程式開發)

      這篇文章主要是續之前另外一篇文章 UDP 網路通訊處理,這次是繼續講解 TCP 網路通訊處理,與UDP 協定不同的是,TCP協定是更加嚴謹,它是基於確認連接是可靠性的,也就是在發生通訊傳輸前,客戶端(Client)必須確認是連接到伺服器(Server)端,因為 TCP 對數據封包的次序與完整性要求相對嚴格,這樣才能確保數據傳輸過程可以正確無誤地送達目的地,所以 TCP 就常用在 文件的傳送,如Line聊天的檔案傳送、Skype 檔案的傳送等。

LINE_ALBUM_AI產生圖_240211_105

     在 Widnows 10 Universal APP 平台下(UWP ),是透過一個 StreamSocket 類別來提供 TCP 網路通訊傳輸協定的 Socket 功能.

在 Client 端(客戶端)大致我們遵守以下幾個步驟:

1.建立一個 StreamSocket 實體物件。

2.呼叫 StreamSocket.ConnectAsync 方法,來與 Server 端作連接要求。

3.使用 OutputStream 屬性所返回的輸出流(Stream),就可以進行發送資料;

    而 InputStream 屬性則是返回輸入流,是用在接受資料。

4.切記當不再使用 Socket 時,呼叫 Dispose 方法來釋放其所佔用的相關資源。

在 Server 端 (伺服器),我們則需要使用一個 StreamSocketListener 物件,綁定繫結 本機的位址跟Port,來監聽 客戶端(Client)的連接請求服務,而當監聽到客戶發出的請求服務時,會引發另外一個事件 ConnectionReceived 事件,從這個事件的Arg參數,我們可以獲取一個與客戶端進行通訊的 StreamSocket 物件。

上面簡單描述原理,以及程式撰寫大致步驟原理,我一樣習慣來個實際寫作案例來引導,我一樣為了簡單化,我把 Server 端界面與 Client 端界面放在一起,這樣這個範例程式可以充當伺客戶器角色也可以當客戶端角色,在實作案例中 客戶端可以選擇一個圖片已經輸入一些文字內容來描述圖片,最後可以發送圖片跟文字內容給伺服器端,當然伺服器端會馬上監聽到有傳輸服務請求,立即結束資料,並顯示在伺服器端的界面。

系統畫面如下圖

(Server 端)

image

(Client 端)

image

下面是相關的界面 XAML Code:

<Pivot>
<PivotItem Header="伺服器(Server 端模擬)">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition />
</Grid.RowDefinitions>
<StackPanel>
<TextBlock Text="Server IP Address:" Height="30″ Margin="0,0,-0.333,0″/>
<TextBlock x:Name="tbSvIP" FontSize="24″ IsTextSelectionEnabled="True" Height="30″ Margin="0,0,-0.333,0″/>
</StackPanel>
<ListBox Name="lbItems" Grid.Row="1″ Margin="6,15,6,5″>
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Image Width="50″ Height="50″ Stretch="UniformToFill" Source="{Binding Path=Image}"/>
<TextBlock Grid.Column="1″ TextWrapping="Wrap" FontSize="18″ Text="{Binding Path=Text}" Margin="15,0,0,0″/>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
</PivotItem>
<PivotItem Header="客戶端(Client 端模擬)">
<StackPanel>
<TextBox Name="txtServerIp" Header="伺服器IP:"/>
<Image Name="img" Width="150″ Height="150″ HorizontalAlignment="Left"/>
<Button Content="挑選圖片…" Click="OnPickImagFile"/>
<TextBox Name="txtContent" Header="圖片描述:" Height="120″/>
<Button Content="傳送資料" HorizontalAlignment="Stretch" Click="OnSend"/>
</StackPanel>
</PivotItem>
</Pivot>

現在來看主要核心程式碼

一開始我宣告 一個 LISTEN_PORT=“1688”,作為 Server 端監聽的端口。

然後也宣告一個 StreamSocketListener 類別的 listener 欄位。

相關程式我也詳細註解了,主要是在 Loaded事件時,建立對應的監聽事件 ConnectionReceived 、以及使用 BindServiceNameAsync 方法指定監聽的Port。

image

接下來重點在 ConnectionReceived 事件,專門用於接受到 Client 端發出的請求數據。

private async void listener_ConnectionReceived(StreamSocketListener sender, StreamSocketListenerConnectionReceivedEventArgs args)
{
string text = string.Empty;
IRandomAccessStream imgStream = new InMemoryRandomAccessStream();

           // 處理從 Client 端接受到的訊息
using (StreamSocket socket = args.Socket)
{
using (DataReader reader = new DataReader(socket.InputStream))
{
try
{
// 讀出第一個數字,表示文件的長度
await reader.LoadAsync(sizeof(uint));
uint len = reader.ReadUInt32();
await reader.LoadAsync(len);
IBuffer buffer = reader.ReadBuffer(len);
// 寫入 Stream
await imgStream.WriteAsync(buffer);
await reader.LoadAsync(sizeof(uint));
// 再次讀入字串長度
len = reader.ReadUInt32();
// 讀出字串的內容
if (len > 0)
{
await reader.LoadAsync(len);
text = reader.ReadString(len);
}
}
catch (Exception ex)
{
DisplayErrMessage(ex.Message);
}
}
}

           // 顯示接受到的客戶端訊息內容
await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
{
BitmapImage bmp = new BitmapImage();
bmp.DecodePixelWidth = 50;
imgStream.Seek(0);
bmp.SetSource(imgStream);
imgStream.Dispose();
lbItems.Items.Add(new { Image = bmp, Text = text });
});
}

再來 Client 端,主要是選好圖片內容、以及輸入文字描述後,執行【傳送資料】按鈕,而對應的程式碼,如下,我也寫上對應的註解

private async void OnSend(object sender, RoutedEventArgs e)
{
if (txtServerIp.Text.Length == 0)
{
DisplayErrMessage(“請輸入伺服器服的IP位置");
return;
}
IBuffer bufferImg = img.Tag as IBuffer;
if (bufferImg == null)
{
DisplayErrMessage(“請選擇圖像");
return;
}
Button b = sender as Button;
b.IsEnabled = false;

           using (StreamSocket socket = new StreamSocket())
{
try
{
// 發出連線請求
await socket.ConnectAsync(new HostName(txtServerIp.Text), LISTEN_PORT);
// 準備傳送資料(圖片跟文字)
using (DataWriter writer = new DataWriter(socket.OutputStream))
{
// 首先寫入圖片
uint len = bufferImg.Length;
writer.WriteUInt32(len); //長度
writer.WriteBuffer(bufferImg);
// 寫入文字內容
if (txtContent.Text.Length == 0)
{
writer.WriteUInt32(0);
}
else
{
len = writer.MeasureString(txtContent.Text);
writer.WriteUInt32(len); //長度
writer.WriteString(txtContent.Text);
}
// 正式提交
await writer.StoreAsync();
}
txtContent.Text = “";
}
catch (Exception ex)
{
DisplayMessage(ex.Message);
}
}
b.IsEnabled = true;
}

整個程式執行結果畫面

(客戶端)

image

(伺服器端)

image

網智數位-軟體開發(軟件開發)
針對各特殊產業都可以量身定做符合貴公司的需求,別人無法克服的就是我們的挑戰
業務合作、軟體委外開發
業務窗口:
allen@netqna.com
聯繫電話:0920-883-870
skype: netqna
line:netqna
微信:netqna
黃先生 Allen