軟體開發(軟件開發)

網智數位主要提供套裝及客製化的軟體系統解決方案,專為客戶量身訂做客製化的軟體,達成客製化、智慧化及網路化的管理功能。

室內設計、裝潢、窗簾報價估算軟體

網智數位主要提供套裝及客製化的軟體系統解決方案,針對室內設計師、木工、裝潢業產業,量身訂做客製化的軟體,達成客製化、智慧化及網路化的商用軟體。

商用軟體-客製化設計

網智數位主要提供套裝及客製化的軟體系統解決方案,專為客戶量身訂做客製化的軟體,達成客製化、智慧化及網路化的管理功能。

IOT 物聯網-系統開發

根據客戶實際狀況,結合雲端與載具進行客製化物聯網IOT導入與軟體開發

雲端VPS虛擬主機租用

我們的雲端VPS虛擬主機是採用雲端(虛擬化)技術所開發之全新雲端伺服器服務,可以選擇多種作業系統(Windows、Linux等),客戶可載入自訂的應用環境,執行自己所要提供的網路服務,我們的雲端服務可為您的網站提供最完美的解決方案。

ERP軟體客製化導入

ERP軟體客製化導入,室內設計、營造業、裝潢、木作工程、系統櫃工程、會計系統,全面提升公司管理營運效率。

搜尋引擎最佳化SEO

搜尋引擎最佳化(SEO)不僅能提高網站在搜尋結果的排名,更能帶來大量對我們產品或服務真正有需求的訪客。SEO 最棒的特質之一就是不像廣告一樣亂槍打鳥而導致用戶的反感,反而更能提升點閱率跟成交率喔。

服務宗旨

網智數位主要提供套裝及客製化的軟體系統解決方案,專為客戶量身訂做客製化的軟體,達成客製化、智慧化及網路化的管理功能。

我們的成立宗旨就是要以最猛的IT技術讓這個世界更Smart,在我們貫徹我們裡想的同時,我們希望可以把我們所開發的系統帶給台灣的中小企業,除了要推薦好的東西之外,我們也希望做點改變,所以我們的第一目標就是要使用最好用的系統再加上您寶貴的創意,不僅僅可以節省你大量的荷包,還可以有一個像樣的網站。我們可以幫你做的有

企業管理
  • 策略管理
  • 目標管理
  • 行銷管理
  • 財會管理
  • ERP導入
  • 企業流程自訂
資訊管理
  • 網站架設
  • 虛擬化/雲端架設
  • 主機代管
  • 私有雲建制與導入
軟體開發
  • UML設計
  • 版本控管
  • 企業軟體開發
  • APP開發
  • 網頁設計
資訊安全
  • 網頁弱點掃描
  • 主機弱點掃描
  • 木馬檢測
  • 資安鑑識
  • 設計網路架構
  • 資安監控
行銷
  • 關鍵字SEO
  • 社群網路行銷
  • 部落格行銷
  • FaceBook 粉絲團
其他
  • 協助企業申請Google Email
好玩工具開發

講出你的創意吧!沒有甚麼是資訊辦不到的

顯示具有 開發 標籤的文章。 顯示所有文章
顯示具有 開發 標籤的文章。 顯示所有文章

2016年8月18日 星期四

Windows Server 2016 七大 Hyper-V 功能 (網智數位﹣軟體開發﹣程式開發)

      雖然目前雲端技術正在不斷流行、成熟化,可是事實上仍有大量工作負載需求是企業內部必須依靠虛擬伺服器作為服務載體。
images
所以下面我整理了其中的各項windows server 2016 hypber-v 全新功能或者經過突破改進的特性功能:
1.分立設備配置(又稱DDA)。
使用者用戶在PC當中中接入部分PCIe設備,並将其直接交付虚拟机使用。这项性能强化机制允许各虛擬主機直接存取 PCI 設備,即绕过虚拟化堆栈。与该功能相关的两大关键性PCI设备类型包括GPU与NVMe SSD控制器。
2.主機資源保護:
常常有时候,虛擬機器之前就是會為了自身顺畅运行而拒绝彼此共享資源服務。而在這個時候有一個新功能的支持下,各虛擬機器將只能夠使用自身被分配到的資源分配額度。如果某套虚拟机被发现擅自占用大量资源,则其资源配额会进行下调以防止其影响其它虛擬機器的效能。

3.
虛擬網絡適配器(Adapter)的記憶體“熱”變更:
這些功能允許大家隨意添加或者移除適配器(僅適用於Gen 2 虛擬機),而无需进行关闭以及重启。另外,大家也可以随意对尚未启用的动态内存进行调整(同时适用于Gen 1與第2代虛擬機)。

4.嵌套虛擬化:
大家在子虛擬機器内运行Hyper-V,從而可以其作為主機伺服器來進行使用。如此一来,大家将能够在一套Hyper-V服務器之上運行的Hyper-V Server,從而進行開發、測試与教育訓練工作——不過目前還很難想象是否其可用於真的生產環境中(Online)。
生產型虛擬機檢查點:与快照功能非常類似,上代版本中的检查点能夠為虛擬機器的當前狀態保存了快照(SnapShot),從而用於開發/測試復原。不過這些“標準”的檢查點并未使用陰影複製服務(又簡稱VSS),因為它并不適合用來作為實際生產環境下的備份(Backup)的用途。新的線上型檢查點完美整合了VSS,因此完全能夠適應線上作業環境的實際需求。 


5.PowerShell Direct: 允許管理者在遠程方式管理運行在視窗10或者在Windows Server 2016之上的虛擬機器。大家可经由VMBus利用PowerShell命令进行操控,而无需亲手对主机或者虚拟机进行网络配置或者远程管理设置。这项新功能相信会受到PowerShell脚本語法愛用者粉絲的支持。

6.虛擬TPM与屏蔽虛擬機
受信平台模組(簡稱TPM)允许大家利用微軟(Microsoft)的 BitLocker 技術,來進行加密動作,其具體方式與使用物理TPM保護實體磁碟槽一樣。屏蔽虛擬機同樣是利用虛擬TPM由BitLocker(或者其它加密工具)實現加密。

所以在這2種情況下虛擬機器能够利用TPM預防惡意有心人士對設備的不當存取訪問。


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

2016年8月4日 星期四

2016年6月份最新資料庫流行排名

看統計圖表與去年同期來相比較,明顯的是 Elasticsearch 和 Teradata 的分數增加,而SAP Adaptive Server 與 Solr 的分數略有所下降。

以下圖表是最新的 2016年6月份前20名排行榜:

13133528_5912

 

上面統計數字的排名主要根據 5個因素來進行統計:Google以及Bing搜索引擎的關鍵字搜索數量、Google Trends的搜索數量、Indeed網站中的職位搜索量、LinkedIn中提到關鍵字的個人資料數以及Stackoverflow上相關的問題和關注者數量。

 

 

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

2016年8月3日 星期三

成衣廠、服裝業 ERP 管理系統經驗談 【軟體開發、程式開發】

       這星期跟南部一個經營成衣廠超過40年的第二代老闆,聊了很久關於成衣、服裝生產、批發在管理遇到的瓶頸,而 Allen 我也曾經在台灣最大的成衣廠上市公司服務過,因此整理了一些針對關於成衣、服裝、布料等領域在企業管理系統的選擇、流程、觀念,做個簡單的概要整理。      

       在成衣與服裝行業領域中,好的ERP管理系統至少要能支持接單式生產、存貨式生產等多種生產方式,同時,能否有效的管理站牌式生產模式。貼牌生產模式是生產企業非常頭疼的問題,因其關係到多方面的關係,稍有不謹慎,就有可能導致混亂。





 
首先,要支持多種生產方式。服裝行業的ERP至少要支持接單式生產、存貨式生產等多種生產方式,同時,能否有效的管理帖牌式生產模式。貼牌生產模式是生產企業非常頭疼的問題,因其關係到多方面的關係,稍有不謹慎,就有可能導致混亂。因此,能否實現有效的貼牌管理,在選型時,要作為必要的功能的考量。
 
同時,一定也要能夠支持插單生產,因為由於市場的變化,如氣候的反常等,生產企業接到客戶的臨時插單,已經是家常便飯再不能過的事情,至於如何解決插單帶來的生產計劃、採購計劃、原物料庫存計劃的變動等問題,如何在不影響重要客戶或者重要生產計劃的前提下,合理的安排臨時急單的生產,是服裝型ERP要能夠解決的問題。因為其插單與其他行業比起來,要多的多,若其靠手工來處理急單,那工作量要大的嚇人。所以,是否能合理的處理插單,企業要根據自身的實際情況,把這作為考核ERP的主要指標之一。
 
另外還有針對邊角料等特殊情況的處理方式跟準則,服裝行業還有個非常常見的特殊業務,就是邊角料如何處理。一塊布料裁了一個袖子,剩下的布料如何處理?庫存如何計算?下次要用到改布料時,如何領料?這些業務,基本上每批產品,都要遇到類似的問題。這就是通常所說的邊角料問題,一般情況下,服裝行業會專門設計一個功能來解決此類問題。在實際選型時,企業要特別注意這個功能是否完善,拿一塊佈出來,讓諮詢顧問實際操作一下,看看是否符合公司的需求。
 
除了邊腳料,就是尺寸顏色等問題如何處理。同一款衣服有不同的尺寸,不同的顏色,若都一一重新編碼,那麼物料編碼會呈幾何級別上升。不同尺寸、不同顏色的同款衣服編碼該如何編,系統提供何種處理方法,該處理方法能否解決實際問題。有些軟件通過屬性集解決,有些通過客戶化解決,無論何種解決方式,只要能幫企業解決問題,就是好的解決方式。總之,企業在選型時,不要聽軟件提供商顧問在台上天馬行空的闡述,要把問題提出來,要在系統裡進行實際模擬,看能否真正的解決問題。
 
最後,好的系統必須能夠準確的銷售預測,縮短生產週期。服裝企業還有一個特點,就是大部分按照市場部門的銷售預測來生產,特別是有自主品牌的企業。市場部門的預測直接影響到庫存,若預測不准,跟實際誤差較大,則會導致庫存積壓,而這些積壓的產品,以後只能折價銷售。所以,ERP系統要能夠提供一些銷售預測的使用工具,甚至一些智能化的商業分析工具和模型,以提高企業預測的準確度。

       
網智數位-軟體開發團隊 堅持專業技術與企業的領域知識不斷的深入了解客戶的實際需求,量身定做符合客戶的IT整體規劃,不論你有軟體客製化、APP開發、網路行銷、美工設計,我們團隊皆有服務,也感謝舊客戶以及新客戶給我們網智數位每個服務機會。

 

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

2016年7月31日 星期日

VR 虛擬實境 程式開發合作案 【軟體開發(軟件開發)】

        非常感謝 清華同方集團電腦科技大廠在評估多家軟體公司開發經驗與團隊技術下,決定委託網智數位開發團隊進行程式開發 VR虛擬實境、Android APP軟體委外開發案、Windows 桌面應用軟體、智能設備遠端控制 一系列的專案委託案。




 

       我們一直突破開發技術、累積各種產業知識,而且在窗簾、窗材、拉門、布料業的商業管理軟體投入有特別的領域知識、也在圖控軟體(圖控軟件)、機械手臂、Android APP 、iPhone APP、3D列印 開發一直突破再創新,我們也堅持相信好的軟體可以協助企業,不管在管理營運角度、商品創新、決策分析等都絕對是不可缺少的關鍵因素,如果客戶您有任何軟體開發、程式開發委外需求,請聯繫我們讓我們協助您一起討論如何開發一個好的軟體來協助您。
     
網智數位-軟體開發(軟件開發)
針對各特殊產業都可以量身定做符合貴公司的需求,別人無法克服的就是我們的挑戰
業務合作、軟體委外開發
業務窗口:allen@netqna.com
聯繫電話:0920-883-870
skype: netqna
line:netqna
微信:netqna
黃先生 Allen

2016年7月20日 星期三

HTML CSS 動畫教學–【軟體開發(軟件開發)】

 今天 Allen 我想教大家如何在設計網頁時,透過簡單的 CSS 語法,來做到簡易的動畫效果,而且過程完全用不到 Java Script 語法….
下載
  這邊我們是直接使用 CSS Animation Level 1 所定義的 CSS 規則,而想學習更詳細的功能定義,可以花時間閱讀 http://www.w3.org/TR/css3-animations/ .. 這邊我只簡單列舉我們常會用到的屬性列表,列表如下:
在 animation 相關屬性的部份,可以使用的 CSS 屬性有:
CSS 屬性    說明
animation-delay    設定網頁元素在被載入之後到開始播放動畫之間的等待時間。
animation-direction    設定網頁元素在動畫播放完之後,是否要以相反方向的方式播放,或是從頭開始以原來的方向重複播放。
animation-duration    設定整個動畫播放一次的時間長度。
animation-iteration-count    設定動畫播放的次數,若要不斷重複播放,則可設為 infinite。
animation-name    設定 @keyframes at-rule 所使用的動畫名稱。
animation-play-state    這個屬性可用來暫停或繼續動畫播放。
animation-timing-function    透過加速曲線(acceleration curves),設定動畫播放的速度。
animation-fill-mode    設定動畫元素在播放前與播放後,如何套用 CSS 的樣式。


在開始實作 HTML CSS 動畫前,我們必須把握 3 個主要步驟,
1. 我們必須使用 @keyframes 來定義與建立我們所需要的動畫。
@keyframes 是讓我們用來定義與建立動畫的內容,換句話說就是用來指定動畫的畫格(frame)是如何轉變。
使用關鍵影格定義動畫流程
  在你設定了動畫的時間資訊之後,你必須要設定動畫漸變的過程。這可以藉由建造兩個或更多的關鍵影格來達到目的 (使用 @keyframes )。關鍵影格描述了該元素在漸變過程中的外觀。
  因為動畫漸變時間已經在 CSS style 中被定義,所以關鍵影格使用 percentage 來指出他們會在整個漸變流程中的哪個時間點出現。 0% 代表他是整個動畫的起點,而 100% 指出他是整個動畫的結束點。這兩個特殊時間點一定要被定義,如此一來瀏覽器材知道該如何產生你的動畫。也因為他們是如此重要,所以這兩個時間點有特殊的別名: from 和 to。
2.在 HTML 的 Style 設定好我們要套用的 css animations 屬性以及屬性值。
3.思考我們要實作的動畫,會需要影響那些 HTML 支援的屬性,例如 背景顏色 (background-color)、img元素的Url 圖片變更、某個HTML 元素位置轉移(top、left、position) 等等。

開始動手實作:
1.我們首先在 Head 的 <style> 裡宣告以下語法:
  @keyframes moving {
            from { background-position: 0% }
         
            to   { background-position: 100% }
        }
/*這段語法,是宣告一個動畫名稱為 moving ,它將從背景圖位置 0% 到 100 %,就是從左到右移動。*/
2.宣告 <body> 的元素內容,如下語法:
body {
           background-image : url(media/ironman.jpg);
            background-repeat : no-repeat;
            background-position: center center; 
            height: 500px;
            
            animation: moving 30s linear infinite;         }
重點語法,我把它標示為藍色字體,第一行~第三行 分別只是簡單的設定,背景圖為那個位置,這邊是存放在 media/ironman.jpg,最重要的動畫語法為 animation: moving 30s linear infinite;
就是設定在 body 元素裡,我們要套用 CSS 動畫,而 moving 就是我們步驟 1 @keyframes moving 
設定的動畫名稱。
完成上述很簡單的語法,我們連 Java Script 程式碼,一行都沒寫,就可以完成簡易動畫了,執行結果如下圖
image


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


2016年7月14日 星期四

南部大廠能源領導廠商、新竹竹北機電大廠-啟洋科技,對我們的肯定-軟體開發(軟件開發)

         後半年網智數位-軟體開發團隊,企業的軟體委託案,已經非常明顯比以往成長許多,也是Allen我對內部團隊的付出,非常感謝的時候,今年我們承包了以往我們非常熟析有經驗的商用軟體外,陸續因為以往完成專案,客戶滿意後的介紹,我們跨越了商用軟體的範疇(我們非常熟析企業內部管理系統開發 ex.CRM、MRP、ERP、MES、會計系統等),從去年年初我們承包了完全量身定做南部綠能產業的大廠的圖控軟體 委外軟體設計開發案,這個也是許多軟體公司根本沒辦法開發的繪圖技術、跟影像辨識技術 ,突破許多軟體、網頁設計公司,單單的電商購物車、RWD製作,該圖控軟體都是美國廠商設計開發,我們完全設計演算法、圖片辨識、人機界面設計,原本一年南部科技廠一年要花費的金額是高達千萬以上,每年固定支出,藉由我們團隊熬夜研發,雖然過程客戶的需求,中途產生很多技術瓶頸,但我們都一關一關克服了。

image
image
image
image

image
           再來還要特別展示我們另外開發的影像測試報告軟體委託案 ,這是另外客戶極度滿意的合作案,該機電大廠因為有許多紅外線影像、放電測試,溫度、電力、等相關檢查報告,長期人工處理,每個月花費超過2個星期工作天,以及許多人力去跑統計數字、檢測數據、在手動用 Excel 跑折線圖、曲線圖等,找了 Allen 我多次希望我們可以協助處理,我進行了分析並委託團隊資深工程師,全力協助開發,以後他們只要輸入測試數據,所有統計數據、報告是否通過、統計圖表、歷史記錄分析,都完全藉由系統就可以進行運算與輸出Excel圖表、PDF圖表,導入以後評估效益就是輸入數據後,任何數據報表,只要 3 分鐘(未導入是需要花費大量人工超過7天去做數據分析),就可以看到任何客戶他們想要結果,這就是導入資訊系統、委外軟體開發(軟件開發)的效益,所以企業真的可以評估透過軟體委外設計與開發,來達成管理效益。

圖控軟體部分截取圖
image
image


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

2016年6月28日 星期二

業務擴展,辦公室地址遷移

親愛的客戶,因為業績的成長,公司辦公司地址遷移可以容納團隊更多人數的座位,目前正在陸續遷移至辦公室新地址,如果客戶您來訪時,請來至新辦公地址。

新公司地址:104 台北市中山區錦州街 25 號 5 樓


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

2016年5月31日 星期二

好的管理軟體絕對可以協作企業與店家提升管理績效

        網智數位-軟體開發團隊,累積了超過10年開發中小企業的管理軟體(軟件)委外案,有超過 8 成比例都是完全從無到有,量身訂做去了解客戶的營運流程、現行文件(例如 Excel、Word、PDF)、紙上紙本,大量收集後,跟業主不斷的溝通了解,並給出適當的系統開發建議,目的就是協助客戶從繁雜的作業流程、人工作賬、紙上作業、傳真文件等,開發客戶合適的管理軟體。
image
     
       上圖就是新竹與台南某廠商客戶,因為長期以來被大量客戶的文件測試報告、檢驗報告,各種客戶所該維護的專案、委託案、以及該專案需派工的檢驗人員、檢驗統計數字、是否需要複查等各種作業模式所困擾,以往光單單人工作業、紙本查詢可能就需要花上人力成本超過5~10天,而現在經過 網智數位-軟體開發團隊,進入分析與建議並開發該作業模式的管理系統軟體(軟件),該軟體可以協助客戶,進行企業的客戶管理(CRM)、以及迅速通知那些專案目前有發生需要追蹤、系統跑出各種統計圖表、歷年的專案報告匯出和匯入,案子的各式圖片管理等,迅速達到委託我們開發軟體的客戶管理績效,所以好的軟體管理系統是可以迅速提升企業的效率與效益。


(其他參考文章)
MPS主生產計畫專文介紹(一)
MRPⅡ/ERP 能力需求計畫原理
庫存管理-概念與釐清
庫存管理探討-VMI
真正的庫存量形成探討
庫存管理的中樞控管法則(上)
庫存管理的中樞控管法則(下)
庫存目標6大範疇(程式開發、程式設計、軟體開發、系統開發)
BOM表管理與設定﹣輔料是否需輸入BOM
何謂 進銷存、ERP、WMS?三者差異性【軟體開發、軟件開發、程式設計】
ERP 產品成本管理與計算
庫存量正確性衡量法則
粗能力需求計畫(RCCP) - 專文介紹
如何利用軟體來協助企業銷售統計和分析
開發進銷存、ERP、PDM,物料欄位收集與建立重要性(ERP開發、軟體開發、進銷存)
ERP 各種計劃階段的差異
ERP 系統的淺談與優勢




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

2016年5月18日 星期三

機械手臂 - 軟體開發(軟件開發)

          近來公司在中南部陸續成功洽談了幾個關於 Arduino、嵌入式工業的軟體開發合作案,幾乎都是針對生產線透過 機械手臂 的運用,來協助生產線更有效率、以及以往人工的耗時的作業模式,現階段越來越多客戶、廠商透過電腦、嵌入式系統、Arduino、樹莓機開發輔助系統….而我公司團隊也有許多非常有經驗工程師、顧問協助企業完成客製需求。







      
      下面影片為我團隊的顧問,在南港展覽館的機械手臂展示影片,如果您有任何嵌入式系統、機械手臂、Arduino的合作需求、開發需求,非常歡迎與 網智數位-軟體開發團隊,進一步聯繫…




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

2016年5月9日 星期一

十條可以提升效率的jQuery程式準則

       jQuery是開源軟體,使用MIT授權條款授權。[5] jQuery的語法設計使得許多操作變得容易,如操作文件(document)、選擇文件物件模型(DOM)元素、建立動畫效果、處理事件、以及開發Ajax程式。jQuery也提供了給開發人員在其上建立外掛模組的能力。這使開發人員可以對底層互動與動畫、高階效果和高階主題化的元件進行抽象化。模組化的方式使jQuery函式庫能夠建立功能強大的動態網頁以及網路應用程式
下載
微軟諾基亞已宣布在他們的平台上繫結jQuery。[6]微軟最初在Visual Studio中整合了jQuery[7]以便在微軟自己的ASP.NET AJAX框架和ASP.NET MVC Framework中使用,而諾基亞則在他的Web執行時元件開發平台中整合了jQuery[8]MediaWiki自從1.16版本後也開始使用jQuery[9]
jQuery 1.3版以後,引入全新的層疊樣式表(CSS)選擇器引擎Sizzle。[10] 同時不再提供Packed版本,因為解壓縮的消耗的時間,遠大於所節省的下載時間,且不利於除錯,且已有Google AJAX Libraries API等公開站台提供jQuery的js的參照服務,故Packed版本原本的優點已蕩然無存。
JQuery 是繼prototype之後又一個優秀的Javascript庫,而 jQuery 它是輕量級的js庫,它兼容CSS3,還兼容各種瀏覽器(IE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.0+),jQuery2.0及後續版本將不再支持IE6/7 /8瀏覽器。 jQuery使用者可以更方便地進行處理HTML(標准通用標記語言下的一個應用)、events、實現動畫效果,並且方便地為網站提供AJAX交互。 jQuery還有一個比較大的優勢是,它的文檔說明很全,而且各種應用也說得很詳細,同時還有許多成熟的插件可供選擇。 jQuery能夠使用戶的html頁面保持代碼和html內容分離,也就是說,不用再在html裡面插入一堆js來調用命令了,只需要定義id即可。
以下十項jQuery範例可以有效幫助大家的Web設計項目順利實現效率提升。
(一)檢測 IE 瀏覽器(Browser)

在進行CSS設計時,IE瀏覽器對開發者及設計師而言無疑是個麻煩。儘管IE6的黑暗時代已經過去,IE瀏覽器家族的人氣亦在不斷下滑,但我們仍然有必要對其進行檢測。當然,以下片段亦可用於檢測其它瀏覽器。

640
(二)平滑滾動至頁面頂部
以下是jQuery最為常見的一種實現效果:點擊一條鏈接以平滑滾動至頁面頂部。雖然沒什麼新鮮感可言,但每位開發者幾乎都用得上。

640
(三)保持始終處於頂部
以下程式碼例子是用來允許某一元素始終處於頁面頂部。可以想的到,其非常適合處理導航功能表、工具欄或者其它重要訊息。

640-2

(四)替換 HTML Element  標籤 Tag
jQuery能夠非常輕鬆地實現html標籤替換,而這也將為我們帶來更多新的可能。
640-3


(五)檢測屏幕寬度
現在移動設備的人氣幾乎已經超過了傳統電腦設備,因此對小型屏幕的尺寸進行檢測就變得非常重要。幸運的是,我們可以利用jQuery輕鬆實現這項功能。




640-4
(六)自動修復損壞圖片
如果大家的站點非常龐大而且已經上線數年,那麼其中或多或少會出現圖片損壞的情況。這項功能可以檢測損壞圖片並根據我們的選擇加以替換。
640-5


(七)檢測複製、貼上與剪下的鍵盤操作
利用jQuery,大家可以非常輕鬆地檢測到選定元素的複製、貼上與剪下的鍵盤操作。
640-6


(八)自動為外部超鏈結增加 Target=“blank” 的屬性
在鏈接至外部站點時,大家可能希望使用target="blank"屬性以確保在新的選項卡中打開頁面。問題在於,target="blank"屬性並未經過W3C認證。 jQuery能夠幫上大忙:以下片段能夠檢測當前鏈接是否指向外部,如果是則自動為其添加target="blank"屬性。
640-7


(九)懸停時淡入/淡出
又是另一項“經典”效果,大家可以利用以下片段隨時加以運用。
640-7



(十)停用文字框/密碼輸入中的空格



無論是電子郵件、用戶名還是密碼,很多常見字段都不需要使用空格。以下代碼能夠輕鬆禁用選定輸入內容中的全部空格。
640-8

參考原文網址:http://www.catswhocode.com/blog/10-jquery-snippets-for-efficient-web-development
 


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

2016年4月27日 星期三

優秀聰明的程式設計師必備的 5 種條件

       作為一個軟體開發人員在任何專案開發的系統架構與設計上起著非常關鍵的作用,而目前當前的現代化架構的開發趨勢下是需要更聰明、更有智慧的開發人員,這些開發人員具備了各種務實的技術能力。
下載
那麼究竟我們該如何定義這些聰明、有智慧的程式開發者呢?可以歸納有這樣 5 個主要關鍵因素:

1.有良好的專注力以及依目標為導向

      開始反思和規劃你的職業生涯。對你的程式碼,你比較也應該要實施如下:
保持模組化——個性化,專業化——這兩個方面都需要好好考慮,並且你的待辦事項需要定期整理。
保持清潔並遵守規則——我們需要遵循程式編碼規則以及自己制定的規則習慣,並且保持目標的乾淨和可衡量。
保持鬆耦合——不要將很多目標耦合到一起——保持簡單和靈活才能獨立地變化。
保持可衡量——保持目標基於SLA,並且每兩週/每月/每季度/每年衡量,越頻繁越好。

2.積極地推廣和行銷你的想法(Idea)

        這是最被忽略的一方面,也是最困難的一部分。你的想法需要告知他人才能被執行,而要實現這些目標,首要的是你必須將你的想法推廣和行銷給他人。
講故事是一個眾所周知的用一種每個人都可以理解的方法傳達思想的手段。
SapientNitro重新定義Storytelling到Storyscaping,這是一種新的講故事的方式,它連接了體驗(用於市場營銷)。這也可以用於普通的講故事中。

3.時時刻刻地提高工作效率

        不斷努力的思維過程以便於想出新的、好的可以改進的做事方式。一個簡單的例子就是——通過檢測早期問題,Jmeter腳本來做單位級別的性能測試和降低質量成本。
與團隊分享你的知識(博客或網絡會議的形式)。這有助於提高整個團隊的工作效率,也有機會得到別人的反饋。

4.通過學習跟上時代的腳步


通過閱讀來自於領先的高科技公司的博客(Netflix Tech Blog,Oracle OTN,AWS Blogs,IBM Emerging Tech Blog,DZone,TechGig,TechCrunch)
瀏覽高科技公司的開發者網站(如Facebook for Developers,Twitter Developers,Amazon AWS)
在問答網站提出問題(如Quora,Stackoverflow)
在MOOC網站(Coursera,Udemy等)或YouTube頻道學習
最後,通過以下關鍵技術人物/公司在社交媒體上的渠道(Twitter,LinkedIn等)。

5.必須維持好健康的頭腦、身體和心靈


這是最重要的一點,因為它能保持一個人的精氣神,確保我們有樂觀和健康的心態來應對任何挑戰,想出創新方法來做事情。
總而言之,這 5 個關鍵技能因素絕對可以協助我們在當前動態以及快速變化的資訊科技的技術中獲得更多的成功。

參考文章:5 Skills a Software Developer Should Have to Be a Smart Developer




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

2016年4月14日 星期四

Android 實作教學 - 隨機驗證碼(軟體開發)

一、問題描述
熟悉web開發中高手們都知道為了防止惡意破解、惡意提交、刷票等我們在提交表單資料時,都會使用隨機驗證碼功能。在Android應用中我們同樣需要這一功能,該如何實現呢,下面我們就自定義一個隨機驗證碼View控件實現這一需求,並且具備通用性,需要的時候在界面中直接加入這個View組件即可。

下載
二、案例介紹
案例運行效果
案例所涉及組件
1、CheckView 自定義的驗證碼控件,主要重寫onDraw方法實現圖形繪製
2、Config:用於對驗證碼控件參數的配置,像畫點點數、劃線數、背景顏色的設置
3、CheckUtil:驗證碼相關工具類,實現例如隨機的點坐標、隨機線段起始和結束點坐標、驗證碼校驗等功能
4、MainActivity:測試應用
三、功能實現
1、撰寫 Config 組件
/*** 功能:用於對驗證碼控件參數的配置
* */public class Config
{ // 驗證碼更新時間 public static final int PTEDE_TIME = 1200;
  // 點數設置 public static final int POINT_NUM = 100;
  // 線段數設置 public static final int LINE_NUM = 2;
  //設置背景顏色 public static final int COLOR=Color.BLUE; //隨機數據長度 public static int TEXT_LENGTH=4;
  //設置驗證碼字體大小 public static int TEXT_SIZE=30;
  }

2、CheckUtil組件
/*** 功能:驗證碼相關工具類
* */public class CheckUtil
{ /** * 產生隨機數字 * @return
*/ public static int [] getCheckNum()
{ int [] tempCheckNum = new int[Config.TEXT_LENGTH];
   for(int i = 0; i < Config.TEXT_LENGTH; i++)
{ tempCheckNum[i] = (int) (Math.random() * 10);
   }
  return tempCheckNum; }
/**
* 隨機產生劃線的起始點坐標和結束點坐標
* @param height 傳入CheckView的高度值
* @param width 傳入CheckView的寬度值
* @return 起始點坐標和結束點坐標
*/ public static int[] getLine(int height, int width)
{ int [] tempCheckNum = {0,0,0,0};
  for(int i = 0; i < 4; i+=2)
{ tempCheckNum[i] = (int) (Math.random() * width); tempCheckNum[i + 1] = (int) (Math.random() * height); }
return tempCheckNum; }
/**
* 隨機產生點的圓心點坐標
* @param height 傳入CheckView的高度值
* @param width 傳入CheckView的寬度值
* @return
*/ public static int[] getPoint(int height, int width)
{ int [] tempCheckNum = {0,0,0,0}; tempCheckNum[0] = (int) (Math.random() * width); tempCheckNum[1] = (int) (Math.random() * height ); return tempCheckNum; }
/**
* 驗證是否正確
* @param userCheck 用戶輸入的驗證碼
* @param checkNum 驗證控件產生的隨機數
* @return
*/ public static boolean checkNum(String userCheck, int[] checkNum){ if(userCheck.length() != 4 )
{
      return false; } String checkString = "";
  for (int i = 0; i < 4; i++)
{ checkString += checkNum[i]; }
  if(userCheck.equals(checkString))
{ return true; }
  else { return false; }
}
/**
* 計算驗證碼的繪製y點位置
* @param height 傳入CheckView的高度值
* @return
*/ public static int getPositon(int height)
{ int tempPositoin = (int) (Math.random() * height);
   if(tempPositoin < 20){ tempPositoin += 20; }
  return tempPositoin; }
}

3、自定義驗證碼控件CheckView
public class CheckView extends View
{

  Context mContext;
int [] CheckNum = null;
Paint mTempPaint = new Paint();
 
// 驗證碼
public CheckView(Context context, AttributeSet attrs)
{
super(context, attrs);
mContext = context; mTempPaint.setAntiAlias​​(true);
mTempPaint.setTextSize(Config.TEXT_SIZE);
mTempPaint.setStrokeWidth(3);
}

public void onDraw(Canvas canvas)
{
canvas.drawColor(Config.COLOR);
final int height = getHeight();

//獲得CheckView控件的高度
final int width = getWidth();
//獲得CheckView控件的寬度
int dx = 40;
for(int i = 0; i < 4; i ++)
{
//繪製驗證控件上的文本
canvas.drawText("" + CheckNum[i], dx, CheckUtil.getPositon(height), mTempPaint);
dx += width/ 5;
}

int [] line;

for(int i = 0; i < Config.LINE_NUM; i ++)
{
//劃線
line = CheckUtil.getLine(height, width);
canvas.drawLine(line[0], line[1], line[2], line[3], mTempPaint); }
 
// 繪製小圓點 int [] point; for(int i = 0; i < Config.POINT_NUM; i ++)
{
//畫點
point=CheckUtil.getPoint(height, width);
canvas.drawCircle(point[0], point[1], 1, mTempPaint);
}
}

public void setCheckNum(int [] chenckNum)
{
//設置驗證碼
CheckNum = chenckNum;
}
public int[] getCheckNum()
{
    //獲得驗證碼
    return CheckNum;
}
public void invaliChenkNum()
{
 
invalidate(); }
}


4、編寫MainActivity測試代碼
public class MainActivity extends Activity implements View.OnClickListener
{
private CheckAction mCheckView ;
private TextView mShowPassViwe;
private EditText mEditPass;
private Button mSubmit;
private Button mRef;

// 驗證碼:
private int [] checkNum =null;

public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
    initView(); initCheckNum();
}

public void initView()
{
mCheckView = (CheckView) findViewById(R.id.checkView);
mShowPassViwe = (TextView) findViewById(R.id.checkpass);
mEditPass = (EditText) findViewById(R.id.checkTest);
mSubmit = (Button) findViewById(R.id.submit);
mRef = (Button) findViewById(R.id.ref);
mSubmit.setOnClickListener(this);
mRef.setOnClickListener(this);
}

// 初始化驗證碼並且刷新界面
public void initCheckNum()
{
checkNum = CheckUtil.getCheckNum();
mCheckView.setCheckNum(checkNum);
mCheckView.invaliChenkNum();
}

public void onClick(View v)
{

switch (v.getId())
{
    case R.id.submit:
    String erInput = mEditPass.getText().toString();
if(CheckUtil.checkNum(userInput, checkNum))
{
setPassString("通過");
Toast.makeText(this, "通過", 1200 ).show();
}
else
{
setPassString("未通過");
Toast.makeText(this, "未通過", 1200).show();
}
break;
case R.id.ref: initCheckNum();
break;
default: break;
}

}

public void setPassString(String passString)
{
mShowPassViwe.setText(passString);
}

}


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

2016年4月12日 星期二

.NET C# 7 語法 新特性 快速預覽 (軟體開發)

目前最新的 Visual Studio 15 發表的預覽版中,我們可以看出來,微軟決定為眾多的 .NET C# 開發人員,而新增了下列的 C# 7 語法新功能特色 。

元組值類型
.NET 提供了一個元組(Tuple)類型,但具體在 C# 中使用時卻存在著各種各樣的問題。由於元組類型是一個引用類型(Reference),而也因此在一些對於性能相當敏感的程式碼行中,開發者很可能會避免因使用它而造成 GC(Garbage Collection) 的開銷成本。同時,元組類型是不可變的,雖然這使跨線程( Thread) 共享變得更安全,但也意味著每次進行變更都必須分配一個新的對象。
下載

為了應對這一問題,C# 7 將提供一個值類型(Value)的元組。這是一個可變類型,對那些重視性能的程式碼來說,這種方式將更為高效。同時,作為值類型,它在每次進行分配時都會生成一個拷貝,因此幾乎沒有產生多線程(Multi-Thread) 問題的風險。
程式開發人員現在可以透過下列語法創建一個元組:
var result = (6, 20);
你也可以選擇對元組中的值進行命名,這一點並不是必須的,只是讓程式碼具有更好的可讀性。
var result = (count: 6 sum: 20);

你可能會想,“很棒的特性,但我自己也能寫得出來”。但下一個特性才是重頭戲。
多返回值,在類C風格的語言中,要在一個函數中返回兩個值始終是一件麻煩事。你只能選擇將結果封裝成某種結構,或是使用輸出參數。與許多函數式編程語言一樣,C#選擇了第一種方式為你提供這一特性:
(int, int) Tally (IEnumerable<int> list)

可以看到,在這裡使用泛用的元組有一個基本問題:我們將無從得知每個字段的作用。因此,C#選擇通過一個編譯器花招對結果進行命名:
(int Count, int Sum) Tally (IEnumerable<int> list)

我們在此需要強調一點:C#並沒有生成一個新的匿名類型,你所獲得的仍舊是一個元組,但編譯器將假設它的屬性為 Count 和 Sum,而不是 Item1 和 Item2。所以,以下程式碼行的作用都是等價的:

var result = Tally (list);
Console.WriteLine (result.Item1);
Console.WriteLine (result.Count);

請注意一點,我們現在還不具備多賦值語法,如果這種語法最終實現,那麼它的用法可能是這樣的:
(count, sum) = Tally (list);

除了提供簡單的功能性函數之外,多返回值的實用性還體現在非同步的程式碼的編寫上,因為在 async 函數中是不允許使用 out 參數的。
模式匹配:改進的 Switch 語法塊
VB 與函數式程序員對於 C# 抱怨得最多的一點就是 C# 中的 switch 語句功能十分有限。 VB 開發者希望能夠進行範圍匹配,而習慣了F#或 Haskell 的開發者則希望能夠使用分解式的模式匹配。 C#打算同時提供這兩種特性。

在對類型進行模式匹配時,你可以創建一個變量以保存轉型的結果。舉例來說,在對一個 System.Object 使用 switch 語句時,你可以編寫以下程式碼:
case int x:
如果該對像是數值類型,則變量x將得以賦值。否則的話,程序將按從上至下的順序檢查下一個 case 語句塊。如果你想更具體地進行匹配,還可以使用範圍檢查:
case int x when x > 0:
case int y:
在這個示例中,如果該對像是正整數,則x程式碼塊將被執行。如果對像是 0 或負整數,而y程式碼塊將被執行。
如果需要檢查 null 值,則只需使用以下語法:
case null;

模式匹配:分解
目前為止,我們僅僅展示了某種對 VB 中已有的特性所做的增量式改進,而模式匹配真正的強大之處在於分解,它可以將某個對象完全拆開,考慮一下以下語法:
if (person is Professor ​​{Subject is var s, FirstName is "Scott"})
這段程式碼完成了兩件事:
它創建了一個本地變量s,將其賦值為((Professor) person) .Subject。
它執行了一次相等性檢查 ((Professor) person) .FirstName == "Scott"。
如果將其用C# 6 程式碼改寫則是這樣:

var temp = person as Professor;
if (temp != null && temp.F​​irstName == "Scott")
{
    var s = temp.Subject

在最終發布中,我們預計能夠同時看到對 switch 語句塊的這兩種改進。
引用返回對於大數據結構進行引用傳遞比起值傳遞要快得多,因為後者需要對整個結構進行拷貝。與之類似,返回一個大數據結構的引用一樣能夠提升速度。
在類似於C這樣的語言中,可以通過指針返回某個結構的引用。這種方式會帶來一個常見的問題,即指針所指向的內存可能會因為某種原因而已經被回收了。
C#通過使用引用的方式迴避這一問題,引用本身是一個附加了規則的指針。最重要的一條規則是,你不能夠返回某個本地變量的引用。如果你嘗試這樣做,那麼該變量所引用的棧信息在函數返回時就已經變得不可訪問了。

在微軟的展示程式碼中,它所返回的引用指向一個數組中的某個結構。由於它實質上是指向數組中某個元素的指針,因此隨後可以對數組本身進行修改。舉例來說:

var x = ref FirstElement (myArray)
x = 5; //MyArray[0] now equals 5

這一語法的用例是對性能高度敏感的程式碼,在大多數應用中都無需使用這一特性。
二進製字面值(Binary Literals)
此次發布還引入了一個小特性,即二進製字面值。這一語法只是一個簡單的前綴而已,例如 5 可以表示為“0b0101”。這一特性的主要用例是設置基於 flag 的枚舉,以及創建位掩碼(bitmask),以用於與C風格語言的互操作。
本地函數
本地函數是指在另一個函數中所定義的函數。第一眼看來,本地函數似乎只是比匿名函數稍好的一種語法。但它實際上還存在幾個優點:
首先,你無需為其分配一個委託以保存該函數。這不僅減少了內存壓力,同時還允許編譯器對該函數進行內聯操作。
其次,在創建閉包時,也無需為其分配一個對象,因為它能夠直接訪問本地變量。這一點同樣能夠改善性能,因為它也減少了 GC 的壓力。
按照第二條規則推算,你將無法創建一個指向本地函數的委託。這一點對於程式碼的組織其實是一個優點,因為你無需創建獨立的函數,並且將現有函數的狀態作為顯式的參數進行傳遞。
部分類的改進
最後演示的特性是一種處理部分類的新方式。在過去,部分類的應用是基於程式碼生成優先的概念而出現的。所生成的會程式碼將包含一系列部分方法,開發者可以選擇實現這些方法,以調整類的行為。
通過新的“replace”語法,開發者就多了一種新選擇,能夠以最直接的方式編寫程式碼,隨後再引入程式碼生成器,並重寫這些方法。以下將通過一個簡單的示例表現開發者的程式碼編寫方式:
public string FirstName {get; set;}
簡單又清晰,但完全不符合 XAML 風格應用的寫法。因此,程式碼生成器將生成如下程式碼:
private string m_FirstName;
static readonly PropertyChangedEventArgs s_FirstName_EventArgs =new PropertyChangedEventArgs ("FirstName")
 
replace public string FirstName {
    get {
        return m_FirstName;
    }
    set {
        if (m_FirstName == value)
            return;
    m_FirstName = value;
    PropertyChanged?.Invoke (this, m_FirstName_EventArg);
}

通過“replace”關鍵字,所生成的程式碼將直接替換手寫的程式碼,添加所缺失的功能。在這個示例中,我們甚至還能夠處理一些開發者經常會忽略的麻煩的部分,例如對 EventArgs 對象進行緩存。
雖然這個官方示例僅用於屬性變更通知,但這一技術還可用於各種“面向切面編程(AOP)”的場景,例如在程式碼中的日誌記錄、安全檢查、參數校驗以及其他各種繁瑣的樣板式程式碼。

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

2016年4月10日 星期日

將 JSON, XML, CSV 格式文件導入 MySQL 【軟體開發】

      讓我們從外部資料(Data)導入(import)資料庫是在資料庫程式開發應用中一個很常見的場景,其實這就是在資料庫的管理和操作中的ETL (Extract, transform, load)的L (Load)部分,也就是說,我們將特定結構(structure)或者格式(format)的資料數據導入某個目的地(比如資料庫,在這裡我們討論與示範的資料庫類型為 MySQL )。
   640
這篇文章我們要討論的內容,是如何方​​便地將多種格式(JSON, Text, XML, CSV)的數據導入MySQL資料庫裡。
1. 將Text文件(包括CSV文​​件)導入MySQL
這裡我們的討論是基於一個假定,Text file和CSV file是有著比較規範的格式的(properly formatted),比如說每行的每個數據域(field)之間是由一個共同的分隔符(比如tab : \t)分隔的。
那麼首先,你需要根據你的資料的格式(有哪些域),來設計好資料庫的對應的表 (的Schema)。
舉個例子,要處理的Text文件或者CSV文件是以\t作為分隔符的,每行有id, name, balance這麼三個數據域,那麼首先我們需要在資料庫中新增這個表(TABLE):
CREATE TABLE sometable(id INT, name VARCHAR(255), balance DECIMAL(8,4));
在我們新增成功以後就可以導入了。操作方式很簡單:
LOAD DATA LOCAL INFILE '你的文件路徑(如~/file.csv)' INTO TABLE sometable FIELDS TERMINATED BY '\t' [ENCLOSED BY '"'(可選)] LINES TERMINATED BY '\n' (id, name , balance)
這裡要注意的是,我們需要開啟local-infile這個MySQL的配置參數,才能夠成功導入。究其原因,從MySQL的Manual中可以看到這麼一段話:
LOCAL works only if your server and your client both have been configured to permit it. For example, if mysqld was started with --local-infile=0, LOCAL does not work. See Section 6.1.6, “Security Issues with LOAD DATA LOCAL”.
這是MySQL出於安全考慮的默認配置。因此,我們需要在配置文件my.cnf中(以Debian發行版的Linux, 如Ubuntu為例, 即是在/etc/my.cnf中),確保:
local-infile=1
抑或是在命令行啟動MySQL時加上--local-infile這一項:
mysql --local-infile -uroot -pyourpwd yourdbname
此外,我們也可以使用MySQL的一個官方導入程序 mysqlimport,這個程序本質上就是為LOAD DATA FILE提供了一個命令行的interface,很容易理解,我們這裡就不再詳述。
2. 將XML文件導入MySQL
這件事的完成方式,與我們的XML的形式有著很大的關係。
舉個例子說,當你的XML數據文件有著很非常規範的格式,比如:
<?xml version="1.0"?>
  <row>
    <field name="id">1</field>
    <field name="name">Free</field>
    <field name="balance">2333.3333</field>
   </row>
  <row>
    <field name="id">2</field>
    <field name="name">Niki</field>
    <field name="balance">1289.2333</field>
  </row>
或者
<row column1="value1" column2="value2" .../>
我們就可以很方便使用LOAD XML來導入,這裡可以參見MySQL的官方手冊--LOAD XML Syntax。
然而我們可能有另外一些需求,比如說,我們可能會想要將XML文件的域映射到不同名字的列(TABLE COLUMN)之中。這裡要注意,MySQL v5.0.7以後,MySQL的Stored Procedure中不能再運行LOAD XML INFILE 或者LOAD DATA INFILE。所以轉換的程序(procedure)的編寫方式與在此之前有所不同。這裡,我們需要使用 Load_File()和ExtractValue()這兩個函數。
以下是一個示例XML文件和程序:
文件:
<?xml version="1.0"?>
<some_list>
  <someone id="1" fname="Rob" lname="Gravelle"/>
  <someone id="2" fname="Al" lname="Bundy"/>
  <someone id="3" fname="Little" lname="Richard"/>
</some_list>
程序:
DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `import_some_xml`(path varchar(255), node varchar(255))
BEGIN
    declare xml_content text;
    declare v_row_index int unsigned default 0;
    declare v_row_count int unsigned;
    declare v_xpath_row varchar(255);
 
    set xml_content = load_file(path);
 
    -- calculate the number of ro​​w elements.
    set v_row_count = extractValue(xml_content, concat('count(', node, ')'));
    
    -- loop through all the row elements
    while v_row_index < v_row_count do
        set v_row_index = v_row_index + 1;
        set v_xpath_row = concat(node​​, '[', v_row_index, ']/@*');
        insert into applicants values​​ (
            extractValue(xml_content, concat(v_xpath_row, '[1]')),
            extractValue(xml_content, concat(v_xpath_row, '[2]')),
            extractValue(xml_content, concat(v_xpath_row, '[3]'))
        );
    end while;
END
在MySQL中,使用它進行導入:
call import_some_xml('你的XML文件路徑', '/some_list/someone');
程序相當的直白,只要了解一下MySQL的腳本編寫即可。
這裡提一下DELIMITER $$。我們知道MySQL的命令分隔符默認為分號,然而腳本中很顯然是有分號的,但是我們並不希望立即執行,所以我們需要臨時更改分隔符。
3. 將JSON文件導入MySQL
如何將JSON文件導入MySQL中,是一個很有趣的話題。 JSON是一種現在相當常用的文件結構,所以掌握它的導入具有比較廣泛的意義。
很多時候,我們處理的JSON數據是以如下形式出現的:
{"name":"Julia","gender":"female"}
{"name":"Alice","gender":"female"}
{"name":"Bob","gender":"male"}
{"name":"Julian","gender":"male"}
而並不是規整的[{},{},{},{}](一些NoSQL數據庫的Export)。
這樣的形勢對於載入有一個好處:因為每一行是一個JSON Object,所以我們便可以按行處理此文件,而不需要因為JSON的嚴格結構將整個文件(比如一個許多G的.json文件)全部載入。
方式一 使用common-schema
common-schema是一個應用很廣泛的MySQL的框架,它有著很豐富的功能和詳細的文檔。我們可以使用它的JSON解析的功能。 (它還具有JSON轉換成XML等等方便的功能)
具體說來,將common-schema導入之後,使用它的extract_json_value函數即可。源碼中:
create function extract_json_value(
    json_text text charset utf8,
    xpath text charset utf8
) returns text charset utf8
該函數接受兩個參數,一個是json_text,表示json文件的內容,另一個是xpath,表示數據的結構(這裡可以類比XML文件的處理)。很多讀者應該知道,XPath是用來對XML中的元素進行定位的,這裡也可以作一樣的理解。
以本段開始的幾行JSON為例,這裡common-schema的使用如下例:
select common_schema.extract_json_value(f.event_data,'/name') as name, common_schema.extract_json_value(f.event_data,'/gender') as gender, sum(f.event_count) as event_count from json_event_fact f group by name, gender;
關於event_data,我們需要先理解LOAD DATA INFILE是一個event,不同的event type對應不同的event data。這部分知識可以參看Event Data for Specific Event Types
如果感興趣,可以參看其源碼。參看一個受到廣泛使用的項目的源碼,對於自身成長是很有益的。
當然了,我們也可以像之前處理XML文件導入一樣,自己編寫程序。這里便不再給出實例程序,有興趣的讀者可以自行編寫或者跟筆者交流。
方式二 使用mysqljsonimport
這是Anders Karlsson的一個完成度很高的作品。這一份程序由C寫成。它依賴於一個JSON Parser,Jansson。他們都有著比較好的維護和文檔,所以使用上體驗很好。
mysqljsonimport的下載在SourceForge上。具體使用參照其文檔即可。
為了方便不熟悉源碼安裝的朋友,筆者在這裡提一下安裝流程和注意事項。
安裝命令順序如下:
$ wget http://sourceforge.net/projects/mysqljson/files/myjsonimport_1.6/mysqljsonimport-1.6.tar.gz
$ tar xvfz mysqljsonimport-1.6.tar.gz
$ cd mysqljsonimport-1.6
$ ./configure –-with-mysql=/xxx/mysql
$ make
$ make check
$ sudo make install
--with-mysql這一步不是必要的,只要你安裝的mysql的路徑是系統的默認路徑。很關鍵的,而且很容易被不熟悉的朋友忽略的是,這一個C程序要成功編譯和運行,是需要MySQL的C API的,所以需要安裝的依賴,除了jansson,還有libmysqlclient-dev。
jansson的安裝就是簡單的源碼安裝,libmysqlclient-dev則可以使用包管理工具(比如ubuntu中使用apt-get即可;編譯和安裝前,建議先sudo apt-get update以避免不必要的麻煩)。
導入命令:
$ ./mysqljsonimport –-database test –-table tablename jsonfilename
還有一個parser,作者是Kazuho,感興趣的讀者可以參看一下,他的相關博文是mysql_json - a MySQL UDF for parsing JSON ,github項目是mysql_json。
4. 使用MySQL workbench
Workbench這個工具對於許多不熟悉SQL語言或者命令行的朋友還是很方便和友好的。利用它,可以方便地導入和導出CSV和JSON文件。
具體操作圖例參見MySQL官方手冊即可:Table Data Export and Import Wizard,這裡不再贅述。

總結
本文介紹了將不同格式(JSON, Text, XML, CSV)的文件導入MySQL數據庫的一些詳細手段,並進行了一些分析,目的在於幫助讀者掃除一些導入的障礙,理清一些概念。之所以沒有討論導出,是因為導出是一個MySQL到外的操作,是以MySQL本身為轉移的,只要參考MySQL本身的機理即可。
真正對於大量數據的導入導出,需要思考的問題會很多(比如說在導入時,如何考慮Sharding),這需要另開一篇討論了。

來源:goo.gl/ttDJkh



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

2016年3月30日 星期三

微軟收購 Xamarin 了,未來透過 Visual Studio 開發 Android & IOS APP

       微軟剛​​剛收購了一家熱門初創企業 Xamarin,這家初創企業主要幫助開發者編寫應用並將開發者編寫的作品投放到任何智能手機或操作系統之中。
      下載
       對微軟而言,收購Xamarin 有著重要的意義,因為在最近幾年中,微軟一直努力將更多的應用引入自己的Windows Store 應用市場之中——這也是微軟大力推行Windows 10 系統的重要舉措之一。
諸如 JetBlue 和 Coca-Cola Bottling 之類的客戶都使用 Xamarin 來節省大量的時間和金錢。開發者也不需要學雜費時間來為 iPhone、Android 或其它的任何系統重新編寫相同的應用,這些應用一旦編寫完成之後,往往都具有更大的生產效率。
微軟在將更多的 iPhone 和 Android 應用引入 Windows 10 方面面臨著較大的挑戰,為了解決這些問題,微軟已經大力投資技術,以此幫助開發者更加無縫地將他們的應用引入 Windows 之中。
Xamarin-Microsoft-1
Xamarin 當然非常支持微軟的這些舉措,同時也能夠讓微軟支持的大量開發者更加容易地利用他們的 .​​NET 和 C# 標準編寫程序代碼,並將他們的應用引入諸如 Android 和 iPhone 等平台之中。
微軟與 Xamarin 的歷史較為久遠,但雙方之間的關係曾經也飄忽不定:雙方曾經是長期的合作夥伴,與聯合客戶合作,並幫助他們打造應用,同時也給這些應用提供支撐。但是,曾有一段時間,微軟被認為是 Xamarin 業務的秘密投資方,因而早在 2014 年就有過一段傳聞,宣稱這一併購交易即將進行。
針對這一交易,微軟雲業務主管斯科特·古斯瑞(Scott Guthrie)表示,“通過今天宣布這一收購交易,我們將進一步推動這一工作,以便讓我們世界級的開發者工具和服務更好地進行深度整合,從而為開發者帶來無縫的移動應用開發體驗。”
2015 年底,Xamarin 與甲骨文簽署了一份協議,以此將開發者引入甲骨文云業務(Oracle Cloud)之中,而甲骨文云業務與微軟的 Azure 雲平台之間存在競爭關係。 Xamarin 與甲骨文的這份協議,或許是刺激微軟最終採取措施並完全收購 Xamarin 的重要原因。
從 Xamarin 的角度來看,該公司是一個非常成功的初創型企業,宣稱在全球擁有 1.5 萬家客戶。最近,BI 還將 Xamarin 定義為秘密運行互聯網的 9 家初創型企業之一。
與此同時,微軟在吸引開發者以便為全新的 Windows 10 操作系統打造應用方面也一直存在困難。通過收購 Xamarin,微軟如今也能夠為客戶提供全新且更加便捷的方式,從而更好地為 Windows 編寫應用,並通過微軟的 Azure 雲業務來支持這些應用。總而言之,對微軟而且,這一交易是一個非常重要的舉措。
另外,Xamarin 也提供所謂的測試雲產品,這一產品能夠讓開發者查看應用在各種設備的運行表現——包括在 Android、iPhone 和 BlackBerry 等設備上。如今,所有的這些業務都將整合到微軟的業務之中,這樣或將更能夠引開發者。
對微軟而言,最終的一大目標就是打造更大規模和更具吸引力的雲產品。隨著微軟與亞馬遜都在爭著吸引更多的客戶,因此,從這個角度而言,收購 Xamarin 對微軟將起著重要作用。另外,此次交易還將對 Windows 10 的應用戰略起到巨大的支撐作用。由此看來,收購 Xamarin 的確是微軟的一個明智抉擇。
來源:goo.gl/KUWbEQ1

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

2016年3月28日 星期一

新技術、新科技、ERP的重要性將是更重要

        我們現在會不斷的定期常聽到關於最新的技術方面,尤其到現在幾乎都在談雲端計算,公司在實施 IT 功能部署時,可以不需購買硬體設備、只需要使用雲端系統,儘管我們面臨著很多的喧嘩與騷動,大多數 IT 企業仍然將他們大多數的時間和金錢花費在更現實的應用開發上,ERP系統就是最大的開發成果之一。雲端技術的支持者特別提出了一個看似更加令人信服的理由,那就是大型的系統,就像ERP正在面臨著滅亡,正在被雲應用程序所替代,因為雲應用程序可以快速部署和集成。當你發現他需要昂貴的升級和持續性的維護時,你可能會想,ERP在這一點上是否仍然重要。





        思考為何要導入ERP的“關鍵因素”
在考慮任何重大的IT投資時,關鍵的因素就是要非常明白它可以解決哪些企業與業務流程問題,對於ERP來說,“為什麼”,通常歸結為幾個關鍵領域的組合:處理日益複雜的企業流程,對於集中和整合企業資料,進而幫助制定決策,從“燃燒”的平台過渡,緩和順從性或法律方面的問題。 ERP實施中最合法的“原因”應該是整合資料,以便更好的製定決策。而其他的擔憂是合法性問題,在雲計算和商品應用的時代,集中的,一體化的基本業務應用是一個關鍵項目,它可以使ERP保持相關性和高價值。

規模的問題
部分ERP問題的答案是貴公司的規模和復雜性。幾十年來的主要ERP使用者都一直在推動著中型和小型業務市場的發展,按照市場的規模對他們的主流包裝按比例縮小版本。而像微軟這樣的公司在這個空間內已經很好的完成,更大和更複雜的系統(我正在審視的是SAP和Oracle)一直不太成功。
記得曾經有一個相當明顯的“臨界點”,其中一家公司的規模和復雜性推動其進入到SAP或Oracle的懷抱,這一條線已模糊不清,因為中間層的應用者都提高了他們的能力,像Salesforce這樣的雲服務提供商都已經合法進入到曾經是內部軟體的專屬領域。假設,ERP的關鍵資產是一個綜合性的平台,它提高您的決策,如果您的公司在沒有ERP的情況下,有正確的數據來支持其決策的進程,那麼我們就沒有必要投入巨大的投資,除非其他的辦法都已經用盡。

進行大檢查
雖然新安裝的一個主要的ERP系統的原因已經減少,但是這一點上,建議CIO們放棄現有的ERP安裝是一種目光短淺的行為。在許多的ERP部署中,初始部署工作的困難是,在進行部署時,已經付出了巨大的代價,因此我們不能為了取得一點點的提高而在很大程度上忽略了ERP。在進行初始部署時,只要我們執行了“大檢查”,就應該採用ERP,放棄ERP是一種完全錯誤的做法,因為額外的改進提高相比而言是非常廉價的。努力優化和普遍有效的ERP安裝可能會收穫未使用的數據,並能支持更有效的決策和分析。如果我必須確定的話,我猜大多數企業使用的ERP的功能少於30%,基本上是把大部分的投資都擱置不用了。

是什麼徹底變了嗎?
記得從ERP的鼎盛時期以來,在技術方面都有很多重大變化,這些變化影響到了決策的製定決策過程,決定是否要安裝一個新的ERP,或進行主要增強,比如添加一個新的核心模塊。儘管人們進行了​​大肆的炒作,我們可以相信考慮放棄現有的ERP,並建議尋找那些可以用最少的投資來提高報告,分析和資料採集的領域,這是不成熟的觀點。畢竟,ERP的集成應用程序和資料的核心承諾仍然是一項雲計算解決方案的資產,一些新興技術還不能複制。


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


2016年3月11日 星期五

印刷行業、飾品業 軟體解決方案

          昨天有個客戶聯繫我,該客戶是個傳統的印刷業,因為在製程上面以及原物料、人力管控一直處於混亂,也用過其他知名的ERP、套裝管理軟體系統,但始終無法很好適用該公司的內部作業流程,因此聯繫我,想深入了解合作的可能性。
SNAGHTML954cd62
           我才思考過,我們曾經開發一個印刷、飾品業的ERP系統,因此特別約了時間 Demo 以前的解決方案,但我相信該行業一定很多要客製化,這也是 網智數位-軟體開發 團隊的優勢,可以從無到有,從各部門分析作業流程跟客製化軟體。
          好的軟體,不論是管理上、成本管控上、人力資源上,我相信一定都是長期的投資,


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

2015年12月25日 星期五

[ ERP/MRP 系統 ] - 專案導入深入剖析

       資訊化/e化數位管理的重要性在當今科技興邦時代,對企業經營管理來說有著舉足輕重的作用。根據以往經驗,企業對資訊化管理ERP管理軟件的選擇產品品牌與軟體開發商以及顧問實施在不同的企業領域間都有著不同的特點,然而有些企業能夠有效地很好的實施運作ERP來管理企業提升企業經營效益,而有些企業卻無法運作起來,甚至企業管理效益呈現減分效果,讓我從根本上分析與說明,我們可以非常清楚地看到以下幾個方面來看台灣中小型企業如何成功導入ERP管理軟體、以及量身訂做的系統軟體。





 
       首先從實施ERP專案項目的公司自身特點來剖析。業界流傳很廣的一句話是“三分技能,七分管理,十二分數據”,假如公司輸入體系的是廢物,輸出的也必定是廢物。由此可見,基礎資料數據對ERP體系的重要性。數據如人體的血液,是體系運轉的支撐和條件,根底數據則是體系訊息的根本源頭,由此構築一致的訊息同享管道。但是,根底數據處理是導入實施過程中條理最多、工作量最大、耗時最長、涉及面最廣、最容易犯錯的地方。能夠說,形成專案項目的延期,體係不能順暢切換,或體系用不起來,多半是由於基礎數據源頭不精確、或者不完整。
 
        第二,公司ERP專案項目負責人的知識水平和管理水平層次不齊,流動性過大。 ERP專案總負責人通常由公司“一把手”或主管公司資訊化的高階主管(如總經理、副總、協理等級)或廠長、副廠長來負責擔任,這也是保證ERP導入實施成功的關鍵成功因素,可是假如該負責人僅僅曉得公司需要資訊化而不明白如何有效資訊化,從各種管道都能夠曉得ERP體系卻不曉得如何通過ERP體系在本公司實施,就會使公司在資訊花的導入過程上犯頭痛醫頭,腳痛醫腳的假象,使之擬定的資訊化推行方針與方案沒有連續性,更不會立足本公司的環境做出體系科學的IT實施計劃和實施方法。並且一旦ERP專案項目負責人離任或退休,取而代之的是一個對資訊化持對立觀點的領導者,這樣一來,ERP專案項目就會流失,即便項目現已正常運轉,也會由於某種原因而停止運作。
 
       第三,公司ERP專案項目技術維護人員的流失,我們眾所周知,技術維護人員的流失在導入實施ERP的公司中已是普遍存在的現象,也是許多公司最為煩惱也百般無奈的工作,因而,一個公司導入實施ERP管理系統後,假如不能夠及時提高ERP管理體系技術維護人員的待遇或對他們進行必要的關心,這些人員就會流失到軟體廠商或IT顧問管理公司中去,而一套正運轉良好的ERP管理軟體(軟件)系統,能夠由於公司ERP技術維護人員的流失而宣告失敗。因而,防止ERP管理過程與運作發生錯亂及技術維護人才的流失,才是真正公司必須要面臨的新課題和重要使命,所以不止導入軟體(軟件),人力發展與提升、留才激勵都是系統成功與失敗的關鍵因子。



(其他參考文章)MPS主生產計畫專文介紹(一)MRPⅡ/ERP 能力需求計畫原理庫存管理-概念與釐清庫存管理探討-VMI真正的庫存量形成探討庫存管理的中樞控管法則(上)庫存管理的中樞控管法則(下)庫存目標6大範疇(程式開發、程式設計、軟體開發、系統開發)BOM表管理與設定﹣輔料是否需輸入BOM何謂 進銷存、ERP、WMS?三者差異性【軟體開發、軟件開發、程式設計】ERP 產品成本管理與計算庫存量正確性衡量法則粗能力需求計畫(RCCP) - 專文介紹如何利用軟體來協助企業銷售統計和分析開發進銷存、ERP、PDM,物料欄位收集與建立重要性(ERP開發、軟體開發、進銷存)ERP 各種計劃階段的差異ERP 系統的淺談與優勢[ ERP/MRP 系統 ] - 專案導入深入剖析




     網智數位-軟體開發(軟件開發)

2015年11月28日 星期六

Entity Framework 實戰 - 多對多自我關聯 Many to Many , Self Referencing 模型實作 (一)

在我們軟體開發過程中,我們會遇到一種特殊模型實體關係,例如一個線上商品系統,會有產品資料表(Product Table),以及記錄產品的【相關產品】和該產品本身可以被關聯的上層【相關產品】,感覺很繞口,下圖我截取一個 ER-D 示例圖:
image
上圖ERD 關聯存在所謂的多對多關係 (Many to Many)而且又是自我關聯(自身關聯,Self Referencing),本身的主要邏輯是 RelatedProduct 這個Table,擔任一個用來記錄多對多關聯記錄的中繼Table,RelatedProduct Table包含了2個欄位(ProductID、RelatedProductID),2個欄位都是參考(Referencing)到 Product Table的 ProductID 主鍵值 ( Primary Key ),透過這樣的技巧可以表達一個產品可以關聯多個相關產品,反之也可以表達一個產品可以被多少產品有所關聯….
但現在我要教大家實作一個只需要在 Entity Framework 建立一個 Product Model (POCO),然後透過一些程式寫法技巧,來達成 這種商業資料模型  - 》 多對多自我關聯 Many to Many , Self Referencing 。
首先讓我們用 Visual Studio 開發工具來先新增一個程式專案,在此我程式專案命名為 EF6_ManyToManyAndSelf,然後按確定。
image
接下來,我們需要透過 NuGet來安裝 EntityFramework ,
image
image
在上圖執行安裝按鈕後,後續 NuGet 就會開始安裝 EntityFramewok , 目前 Allen 裝的版本為 6.1.3 穩定版,安裝過程可能會等候一點點時間,裝完後,你會發現專案的參考對了2個參考項目
image
確定沒問題後,接下來我們來新增一個 Product Class ,用來代表 Product table 的對應,完整程式碼如下:
image
   1:  using System;
   2:  using System.Collections.Generic;
   3:  using System.ComponentModel.DataAnnotations;
   4:  using System.ComponentModel.DataAnnotations.Schema;
   5:  using System.Linq;
   6:  using System.Text;
   7:  using System.Threading.Tasks;
   8:   
   9:  namespace EF6_ManyToManyAndSelf
  10:  {
  11:      [Table("Product", Schema = "dbo")]
  12:      public class Product
  13:      {
  14:          public Product()
  15:          {
  16:              RelatedProducts = new HashSet<Product>();
  17:              AboveProducts = new HashSet<Product>();
  18:          }
  19:   
  20:          [Key]
  21:          [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
  22:          public int ProductID { get; set; }
  23:   
  24:          public string ProductName { get; set; }
  25:   
  26:          public decimal Price { get; set; }
  27:   
  28:          /// <summary>
  29:          /// 記錄此產品的多個相關的產品
  30:          /// </summary>
  31:          public virtual ICollection<Product> RelatedProducts { get; set; }
  32:   
  33:          /// <summary>
  34:          /// 記錄此產品被那些上層產品標示為相關的產品
  35:          /// </summary>
  36:          public virtual ICollection<Product> AboveProducts { get; set; }
  37:   
  38:      }
  39:  }
 

    實作到這邊已經把基本的 EntityFramework 安裝進來,也把產品模型寫成一個POCO Class ,後續是更進階的 程式技巧已經背後運作解釋,請繼續參閱我撰寫  Entity Framework 實戰 - 多對多自我關聯 Many to Many , Self Referencing 模型實作 (二) 的介紹。



網智數位-軟體開發 (軟件開發)

2015年11月20日 星期五

微軟實際行動回歸開發者為中心擁抱全平台開發者

      微軟在今日舉辦的年度開發者大會上宣布了大量新款和升級後的開發者工具,包括了Visual Studio雲訂閱和全新Azure Service Fabric的預覽。為了賦予開發者更大的權力,微軟還介紹了全新免費且已即時上線的Visual Studio Dev Essentials項目。通過這項技術,開發者們將能夠在其喜歡的任何設備和任意系統上打造應用,從而減少其額外的投資成本。全程無尿點,全是亮點,就連開場都是一大亮點霍金的開場如同美國大片,使用面部表情控制電腦,進行交流,使用Visual studio 為霍金提供的全新交互方式:微軟在今日舉辦的年度開發者大會上宣布了大量新款和升級後的開發者工具,包括了Visual Studio雲訂閱和全新Azure Service Fabric的預覽。為了賦予開發者更大的權力,微軟還介紹了全新免費且已即時上線的Visual Studio Dev Essentials項目。通過這項技術,開發者們將能夠在其喜歡的任何設備和任意系統上打造應用,從而減少其額外的投資成本。全程無尿點,全是亮點,就連開場都是一大亮點霍金的開場如同美國大片,使用面部表情控制電腦,進行交流,使用Visual studio 為霍金提供的全新交互方式:






一、發布.NET Core RC和 ASP.Net RC
一年前的2014年11月,Connect(); 為開源開發者開啟了一段新的旅程- 宣布了.NET Core開源,以及可以在Linux, Mac OS 以及Windows 操作系統上運行的Visual Studio Code,這也標誌著微軟在開放和開源的道路上邁出了堅實的一步。昨晚微軟同時升級了.Net Core 和ASP.Net,開發者可以開始在生產環境使用微軟開源的.Net Core 跨平台框架和ASP.Net Web 平台。
微軟發布了.Net Core 5 和ASP.Net 5 的RC 版本,支持Linux,Windows 和Mac OS X 平台,這兩個軟件在一年前就已經開源了。 .Net Core 現在主要是從數據中心擴展到觸摸屏設備,添加了CoreCLR runtime 和CoreFX 庫,主要是由ASP.Net 工作流驅動。
最重要的是.NET Core 和ASP.Net 添加'go live' 協議,允許用戶在生長環境部署,可以反饋在生產環境是如何運作的。並且,現在.Net Core 已經完全支持Mac,Linux 和Windows 三個平台,特性都已完整。 .Net Core 還新增了大量APIs,包括key ones for localization 和networking。 ASP.Net v5 修改了hosting model,所以可以持續跨平台,支持Mac,Linux 和Windows。
自從開源了.Net Core,微軟還提供了其他開源的技術,包括CLR 和NuGet 包技術,還包括之前開源的Roslyn 編譯器項目。上個月微軟還宣布了與Red Hat 的合作,這些都說明,微軟已經走上了全新的開源之路!
二、開源Visual Studio Code 跨平台編輯器
微軟今天正式開源Visual Studio Code 跨平台編輯器,支持Mac,Linux 和Windows 平台。微軟同時還發布了VS Code v0.10.1 Beta 版本,最重要的是Visual Studio Code 支持擴展/插件(圖庫擴展,SDK 擴展,示例擴展)。

程式碼現已託管到GitHub:https://github.com/microsoft/vscode

Visual Studio Code 編輯器部分代碼來自GitHub Atom,但是有一些Atom 編輯器沒有的功能,比如智能感應。
Anders這位大神演示VS Code上開發AngularJS,他介紹了Google如何使用VS Code和TypeScript來開發AngularJS的下一版本

AngularJS團隊現場演示推薦AngularJS用戶使用VS Code。
三、微軟送大禮Visual Studio Dev Essentials
全新免費且已即時上線的Visual Studio Dev Essentials項目。通過這項技術,開發者們將能夠在其喜歡的任何設備和任意系統上打造應用,從而減少其額外的投資成本。


參與該項目的開發者們可訪問Visual Studio社群、程式碼和團隊服務、Parallells Desktop等工具和資源,以及在Pluralsight、Wintellect和Xamarin上培訓(明年年初上線,可選$25美元的Azure credit)。

微軟還介紹了按月或按年付費的Visual Studio專業版與企業版的雲訂閱服務。為了讓開發者的生活更加輕鬆,該公司還向所有人開放了其Microsoft Graph API(只需通過單一授權即可訪問)。

免費獲取成套的開發資源,包含下列內容:
開發工具
Visual Studio Community*
Visual Studio Code
Visual Studio Express
Team Foundation Server Express
學習資料
Pluralsight (為期 3 個月的訂閱)*
WintellectNOW (為期 3 個月的訂閱)*
Microsoft 虛擬學院、
HackHands Live Programming 幫助(25 美元信用)*
優先級論壇支持*
雲端資源
Azure 信用25 美元/月,提供12 個月)*
供五名用戶使用的Visual Studio Team Services 帳戶*
App Service 免費層
PowerBI 免費層
HockeyApp 免費層
Application Insights 免費層
跨平台開發資源
Parallels Desktop® for Mac Pro Edition (為期3 個月的訂閱)*
Parallels® Access (為期3 個月的訂閱)*
Windows 10 Enterprise VHD (為期 60 天)
Office Online 應用
獲取地址:https://www.visualstudio.com/free-developer-offers-vs
四、Visual Studio安卓模擬器可以運行在Mac上
Visual Studio 2015中提供了一個獨立的安卓模擬器,這個模擬器的運行速度是Google模擬器的3-5倍,佔用內存僅有不到1/3,對於移動應用開發者來說是非常好用的武器。現在這個模擬機也可以運行在Mac OSX上了。這個模擬器可以獨立安裝,獨立運行,即使你不使用Visual Studio進行開發,也可以使用這個模擬器作為你的安卓開發環境的一部分。
下載地址: https://www.visualstudio.com/zh-cn/features/msft-android-emulator-vs.aspx
昨晚的直播除了上面這些還有非常多的亮點,可以通過https://channel9.msdn.com/ 上觀看回顧。
內文來源為:tinyurl.com/pdpzvav

網智數位-軟體開發