軟體開發(軟件開發)

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

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

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

商用軟體-客製化設計

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

IOT 物聯網-系統開發

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

雲端VPS虛擬主機租用

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

ERP軟體客製化導入

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

搜尋引擎最佳化SEO

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

服務宗旨

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

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

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

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

顯示具有 軟體 標籤的文章。 顯示所有文章
顯示具有 軟體 標籤的文章。 顯示所有文章

2016年10月12日 星期三

Windows APP 截取網頁內容轉存圖片檔(程式設計、程式開發、軟體開發)

今天早上在跟客戶開會時,客戶提到有個需求,就是客戶的員工需要常常瀏覽購物平台網頁商品、資訊,但必須及時截取畫面拍照,所以 Allen 我就開發一個小工具,可以讓使用者瀏覽網頁時,進行截取網頁畫面並轉成圖片檔。

(圖示1)


而這個程式我用目前最新的平台(Windows Universal Platform)開發,因為是用短短 1小時的時間進行程式撰寫,所以功能比較陽春,但可以當做教學跟小工具使用,所以我就拿出來分享。

       一開始在上方的 網址 輸入,你要瀏覽的網頁,例如 http://tw.yahoo.com , 然後在點選瀏覽,就會載入 Yahoo 的網頁,此時你可以按左邊(中間偏下一點)有個按鈕【截取畫面】,執行後就會截取現在瀏覽的網頁“畫面”,

(圖示 2)

02

(圖示 3)

03

如果想要把網頁快照轉成圖片,我也寫了一個小功能的按鈕【將畫面存成圖片】,就可以存成實際的圖片。

05

    這樣就可以把網頁畫面及時拍照存檔,這個是個小範例,但是這個技術在知名的電子商務平台,例如 PCHome、Yahoo、淘寶等,都有類似的機制,就是你在訂購商品那瞬間,程式會把當時的產品訂購頁面存成及時圖片,以防止未來買賣有發生爭議時,可以作為交易的依據。

同時,我也把安裝程式放在 DropBox,因為我開發的平台為 Windows Universal APP,所以安裝方式請打開 powershell 直接把 Add-AppDevPackage.ps1 檔案拖拉到powershell 畫面,再按 Enter 鍵即可。

螢幕快照 2016-10-12 上午3.04.26

ddd

aaaaa

螢幕快照 2016-10-12 上午3.21.26

程式下載點

https://www.dropbox.com/s/673eet6odd4gyyk/NetQna_1.0.5.0_Debug_Test.rar?dl=0

下一篇,我會講解核心程式碼技巧(待續)

 

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

2016年9月30日 星期五

何謂 進銷存、ERP、WMS?三者差異性【軟體開發、軟件開發、程式設計】

       現在企業公司行號幾乎多少都會導入管理軟體(不論是是買現成的套裝軟體、請軟體顧問公司導入系統、企業內部自行研發)的手段來提升企業營運管理水平、降低作業成本、提高客戶滿意度或企業市場競爭力,當然因為透過軟體提升的價值,已受到越來越多的企業認可。



    企業業務資料管理軟體,主要有以下三大分類:倉庫管理軟件(WMS)、進銷存管理系統、ERP(企業資源規劃),那麼到底它們有什麼區別和關聯性呢?在這裡我想根據個人從業經驗做個簡單的總結歸納: 

  一、功能上的共性
      WMS、ERP、進銷存軟體都包含倉庫管理模塊,這是這三個軟件的最大共性。
      倉儲管理(包括原料、半成品、成品管理)又恰恰是多數企業內部管理中最重要的部分:採購、生產、銷售都是以庫存管理為連接點,庫存也是生產企業的最重要的成本。這也是三大管理軟體讓人產生混淆的原因。


  二、功能上的區別 
     1、ERP:
        (1)支持財務會計的精細化管理。通常起源於財務系統,所以對財務會計有精細化的支持,很多ERP中的財務模塊都經過了國家財務部門的認證。
        (2)產品結構管理(BOM)。 ERP參與銷售計劃、採購計劃、生產計劃的管理,BOM就成為物料需求計劃的基礎。
        (3)物料需求計劃(MRP)。由成品銷售計劃,生成原材料的採購計劃和半成品、成品的生產計劃。除了BOM的計算外,還涉及到採購在途、半成品庫存、成品庫存、   生產在途、外協在途等所謂“8大量”複雜參與計算。


       2、進銷存管理軟體:
         可以理解為減少了BOM和MRP功能的ERP。
         BOM和MRP是ERP的精髓,但是在國內多數企業中,物料需求因為企業內部、外部的諸多原因,不能“計算”出來(比如原材料的採購計劃,和供應商的供應週期很大關係,也涉及到企業對外部市場的分析,例如:加大緊俏物質的採購量等),所以BOM和MRP成為“看上去很美”的功能,在很多企業的ERP項目實施中,其實都沒有使用到這個功能,實際上只是一個進銷存系統而已。


       3、WMS:
       和進銷存管理系統(軟體)比較,專業的WMS有以下功能變化:

      (1)加入了更多的作業策略管理和精細化作業
具體的說,進銷存軟體是對企業的業務數據進行“事後記錄”,有貨品出入庫時,在進銷存軟件中進行登記和單據打印。而WMS需要在業務實際發生前做出操作指引,比如說上架建議、揀貨策略等等,根據軟體設定的規則做智能化的分析,形成倉管員的最優化的操作指引。軟件的操作記錄,也更能反應實際情況,比如進銷存軟件往往不能支持一種物料入庫時擺放到多個倉儲位的情形,只簡單給一個倉儲位(WMS是在物料入庫前,就自動分析出需要擺放多個倉儲位和具體的、最優化的推薦倉儲位)。


      (2)弱化了價格和財務管理功能
       專業的WMS往往應用在第三方物流企業,所以物料進倉時不必關注採購價格,而是關注倉租費等物流費用的計算,所以WMS弱化了價格和財務管理。當然wms也會應用到製造企業。因為價格和財務管理在很多製造企業中是獨立運作的,加上財務管理本身的規範性和財務軟件的標準化,所以很多中型的製造企業採用的是“倉庫管理軟體+財務管理軟體“的模式進行管理。


      (3)增加了“計費引擎”模塊
WMS增加了獨有的“計費引擎”模塊,為物流計費提供支持。物流行業的計費規則往往非常複雜,比如倉儲企業的倉租費用就包括:包倉、重量、托盤數、體積、物料屬性、入庫時間、期間天數等多個條件的排列組合,同時在加打折、分級價格等等因素,計費引擎的技術含量不亞於ERP的MRP計算。在製造企業中,計費引擎也可以幫助企業進行成本分析,計算倉庫的使用成本。




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

(作者其他參考文章)
MPS主生產計畫專文介紹(一)
MRPⅡ/ERP 能力需求計畫原理
庫存管理-概念與釐清
庫存管理探討-VMI
真正的庫存量形成探討
庫存管理的中樞控管法則(上)
庫存管理的中樞控管法則(下)
庫存目標6大範疇(程式開發、程式設計、軟體開發、系統開發)
BOM表管理與設定﹣輔料是否需輸入BOM
何謂 進銷存、ERP、WMS?三者差異性【軟體開發、軟件開發、程式設計】
ERP 產品成本管理與計算
庫存量正確性衡量法則
粗能力需求計畫(RCCP) - 專文介紹
如何利用軟體來協助企業銷售統計和分析
開發進銷存、ERP、PDM,物料欄位收集與建立重要性(ERP開發、軟體開發、進銷存)
ERP 各種計劃階段的差異
ERP 系統的淺談與優勢
ERP 系統在中小企業如何有效利用條碼與QRCode
[ ERP/MRP 系統 ] - 專案導入深入剖析
ERP 導入的投資報酬評估(ERP客製化、進銷存軟體)
ERP 與 CRM 整合對企業的重要性(軟體開發、ERP客製化)
ERP思維突破:啟動企業智能革命,引領未來行銷新浪潮
AI時代的ERP:釋放企業潛能的新革命



網智數位-開發團隊

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






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




2016年9月29日 星期四

恭賀!2016年台北國際發明暨技術交易展- 聲控避障智慧導盲系統(軟體開發、軟件開發、程式開發、程序開發)

        今天網智數位高苑科技大學雙方在【2016年台北國際發明暨技術交易展】簽訂合作簽約儀式,在技術研發創新多個隊伍下,得到最高獎項- 聲控避障智慧導盲系統,該「聲控避障智慧感應系統」研發技術可以運用「顏色導盲」,能讓視障者接受系統語音導盲走在正確的人行道上;搭配使用特製的智慧導盲拐杖或鞋子,能用超音波感測模組感測前方障礙物;行動 App 則可定時播報當前時間、視障者位置與紅綠燈訊號,用以提醒視障者。 
57268


57272


97177
上圖從右邊依序為 網智數位執行長 Allen、高苑科技大學 謝金原(教授)、台灣雲創營運長(Kevin)

         目前這個專利技術系統,也陸續導入盲人協會、醫院盲人引導路線、政府機構積極合作中,我們希望造福更多行動不方便的視障者,真正能用最少的預算建置輔助系統。

Voice-guide-system

Voice-guide-system-1


台北國際技術交易展:多樣技術整合,共同打造智慧生活
活動時間:105 年 9 月 29 日(星期四)~10 月 1 日(星期六)(三天)
活動地點:台北世界貿易中心展覽大樓一樓展場 A、B、D 區(臺北市信義路五段五號)



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

2016年9月22日 星期四

企業營運管理軟體-需求永遠就是缺少那麼一點點程式功能【軟體開發、程式開發、程式設計】

      公司在承包專案、量身定做開發客戶的企業軟體多年,在接案驗收過程中,10件有8件專案,客戶的使用者總是想要再多增加那個功能、這個功能,好像沒有導入系統軟體是都沒有需求,但導入後,期待需求越來越多…當然在我們、以及客戶來說,都是成本的增加(不過總是有些客戶….認為預算無法增加,功能要無止境增加,客官….軟體開發真的是很辛苦的….XD)





      就是因為系統功能是靜態的不變的,該有幾支程式功能就是那幾支程式功能在那裡,可是企業的經營是動態的、不斷地與時俱進,所以企業組織會改變,明天老闆、主管要的報表會不一樣,後天可能要刮風或下雨各種突發原因,企業就是這樣一直動態的向前進。組織改變可以重新設定部門組織檔,流程改變可以調整系統參數,但是老闆要的報表是天天在變,天天寫報表也不是辦法!
 
為了因應這樣的狀況,市場上出現了BI (Business Intelligence,商業智慧)的軟體,還有報表產生器(例如Crystal Report)…等等的軟體、以及各種大數據分析平台,這些都是很好的商用軟體與工具,但是這些軟體很顯然的有下列幾項要求:
1.這些軟體是提供給IT人員設定、維護,再提供給User使用的。
2.需要額外投資一筆軟體建置費用。
3.艱深如BI的軟體,還需要龐大的顧問導入費用。
4.需要具有一定專業技術的人才。

所以對於這樣單次性、個別性、或變化性高的報表,使用者的內在需求往往是,我只是要把畫面上的資料可以轉到EXCEL上,再讓我加工處理就好了。在BI、數據分析軟體建置之前,在IT人員設計開發報表之前,這麼簡單的需求難道我還需要等嗎?
 
      歷經多年的IT打滾經驗後,我遇到客戶的使用者提出這樣的要求,常常有時候,我只能告訴他,這樣吧,我把Table schema給你,再教你寫些簡單的SQL Select的statement;我跟當年創造SQL指令的宗旨一樣的天真,認為這樣就應該已經解決他的問題了。事實上這樣的工作,對於非專業的IT人員來說,是非常非常的困難;對於IT人員來說,又是一件非常非常無趣的工作,因為他從來不知道他做這件事情的意義。

假如,你的ERP可以很彈性的把畫面上的資料轉到EXCEL,是不是就解決掉ERP系統『永遠缺少的那一支程式』的問題,最好可以做到下列幾項要求:
1.可以指定要轉出的資料條件(Records);可以指定要轉出的資料項(Fields)。
2.可以用List的方式轉出,以便統計分析,例如銷售明細月報表。
3.可以用Report的方式轉出,以便套印單據,例如Invoice、Packing List、…。
4.最好可以套用EXCEL範本,把資料轉到已事先做好的樞紐分析表、或Invoice格式之中,


這樣就可以不用每次轉出後都要再加工一次。

PS.Excel 真的也是事後梳理資料的好工具….但絕對是要先有好的流程企業管理軟體,在各種單位部門、流程控管整合所有表單單據、系統累積了營運管理數據,就可以真正達到【數字管理】目標了。

 

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

系統分割 - 無法刪除 使用 diskpart 指令 (軟體開發、軟件開發、程式開發)

 今天 Allen 我在整理公司機房的機器設備,也把多年專案開發的系統要做備份,順道買了一個行動硬碟 4 T的容量,但在 MAC Pro 先進行格式化後,再插入回 Windows 作業系統環境後,使用磁碟管理發現該顆硬碟最前面出現200MB的EFI磁碟分割,而磁碟管理圖形界面無法進行刪除該多餘磁碟分割,雖然才 200 M,但就覺得浪費了空間,所以忽然想到使用 DiskPart 指令,以下就是簡單的指令操作步驟教學… 
diskpart-list-volume

我們要如何刪除多餘的EFI磁碟分割呢?

此時選擇[開始] -> [執行], 執行"cmd"出現終端機視窗

此時輸入 diskpart 指令並按[Enter]鍵

DISKPART> list disk

磁碟###   狀態         大小        可用     Dyn  Gpt
--------      ----------   -------     -------   ---    ---
磁碟 0       連線         1000 GB   0 B
磁碟 1       沒有媒體   0 B         0 B
磁碟 2       沒有媒體   0 B         0 B
磁碟 3       連線         37 GB     37 GB   *


DISKPART> select disk 3

磁碟 3 是所選擇的磁碟。

DISKPART> list partition

磁碟分割 ###   類型                大小         位移
----------------   ----------------  -------       -------

磁碟分割 1        系統                200 MB    20 KB

DISKPART> clean

DiskPart 成功地清理了磁碟。

DISKPART> exit

最後再使用 clean 指令清除磁碟時務必確定選擇的磁碟是否正確。




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

2016年8月29日 星期一

感謝客戶委外網頁程式設計開發、虛擬主機租賃

     感謝客戶 高治機械 委託我們進行網站修改、虛擬主機租賃服務。

客戶網址 http://www.loyal-tec.com/
image


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

2016年8月21日 星期日

物聯網 IOT 台灣微軟影片介紹–(軟體開發、程式開發、軟件開發)

       這1~2年來從雲端的夯議題到現在幾乎每天都會談到的物聯網(IOT),除了我常被客戶詢問相關合作機會跟也常被詢問何謂物聯網,今天看到台灣微軟的教學影片,它詳細介紹了相關技術已經微軟的物聯網與Azure雲端平台的運用介紹。
網智數位在物聯網的軟體開發有相關的技術團隊,可以量身訂做為客戶設計各種感應器的數據分析、以及雲端平台的整合應用,我們目前也正在開發了瓦斯安全裝置的物聯網應用、無人櫃檯的旅館結帳系統等。
               

       以下就是微軟的教學影片,有興趣的真的可以花一些時間觀看。(影片來自微軟 Chanel 9)物聯網世代已勢在必行!有了 Microsoft Azure 物聯網服務,您就可以監控資產來提升效率、提高營運效能來推動創新,利用進階資料分析,透過新的商業模式和收入來源讓您的公司轉型~~
https://www.youtube.com/watch?v=yF2S7nLVz9I&feature=youtu.be


網智數位-軟體開發(軟件開發)
針對各特殊產業都可以量身定做符合貴公司的需求,別人無法克服的就是我們的挑戰
業務合作、軟體委外開發
業務窗口: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月20日 星期三

網咖控制程式 - 軟體開發(軟件開發)

          近來陸續在談一個合作案,需要類似的網咖系統開發經驗,剛好我團隊有這方面豐富的經驗,因此也積極爭取合作的可能性,我團隊在軟體開發上面幾乎都是量身定做,尤其在商業軟體上在各特殊產業都是量身定做,並且投入相當大的分析能力,了解企業的領域知識、產品知識、企業流程,事實上這是極度花費腦力的過程,就連最簡單的企業報價與成本計算,常常我們遇到就需要分析很多零件、採購、人力知識,而這些都不是一般套裝軟體可以克服以及考慮到的,不過我團隊的深入了解需求、討論再討論,做到客戶喜歡用的軟體….

13690575_10206378717780023_5745537522239199354_n

13718698_10206378717860025_7464869737724020489_n

13754233_10206378717820024_2884354579424784502_n

           上圖軟體部分截圖,是我團隊開發的網咖程式,我們這方面的經驗可以協助客戶,集中式管理使用者的電腦,可以用在 AR/VR、飯店式管理系統應用等產業領域,如果有這方面需求,歡迎與我們聯繫。


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

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日 星期四

陽明大學-全球健康協會-RWD網頁設計委託案

         screencapture-file-Users-Chris-Desktop-themes-cpts_8_ec-index-html-1468421565753

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

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

         後半年網智數位-軟體開發團隊,企業的軟體委託案,已經非常明顯比以往成長許多,也是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