軟體開發(軟件開發)

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

雲端VPS虛擬主機租用

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

搜尋引擎最佳化SEO

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

服務宗旨

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

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

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

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

2015年11月28日 星期六

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

此篇文是 Entity Framework 實戰 - 多對多自我關聯 Many to Many , Self Referencing 模型實作 (一)的續篇 , 當我們把基本模型 Product Class 建立好後,我們開始實作一個繼承 DbContext 的子類別,在這邊你可以把 DbContext 當做是資料庫的層次意義角度來看待
新增一個Class 名為 ProductContext.cs
image
然後按【新增】按鈕,並在 ProductContext 宣示繼承 DbContext 類別,如以下程式碼
  1: using System;
  2: using System.Collections.Generic;
  3: using System.Data.Entity;
  4: using System.Linq;
  5: using System.Text;
  6: using System.Threading.Tasks;
  7: 
  8: namespace EF6_ManyToManyAndSelf
  9: {
 10:     public class ProductContext : DbContext
 11:     {
 12: 
 13:     }
 14: }

接著加入 DbSet<Product> 的宣告,用於表示 存放著 Product Table(Class)的集合清單
public DbSet<Product> Products;
然後為了完成透過 Product 本身的 Class 來完成 多對多自身關聯,需要 override OnModelCreating Method , 程式碼如下

   1:   protected override void OnModelCreating(DbModelBuilder modelBuilder)
   2:          {
   3:              base.OnModelCreating(modelBuilder);
   4:   
   5:              modelBuilder.Entity<Product>()
   6:                          .HasMany(p => p.RelatedProducts)
   7:                          .WithMany(p => p.AboveProducts)
   8:                          .Map(m =>
   9:                                    {
  10:                                        m.MapLeftKey("ProductID");
  11:                                        m.MapRightKey("RelatedProductID");
  12:                                        m.ToTable("RelatedProduct");
  13:                                    }
  14:                          );
  15:          }

到這邊基本上已經完成 EntityFramework 的宣告….

然後讓我們在前端界面使用我們實作好的 ProductContext ,來看看如何使用….程式碼如下


   1:  using System;
   2:  using System.Collections.Generic;
   3:  using System.Linq;
   4:  using System.Text;
   5:  using System.Threading.Tasks;
   6:   
   7:  namespace EF6_ManyToManyAndSelf
   8:  {
   9:      class Program
  10:      {
  11:          static void Main(string[] args)
  12:          {
  13:              using (var context = new ProductContext())
  14:              {
  15:                  var product1 = new Product { ProductName = "美容業零售管理系統", Price = 59888M };
  16:                  var product2 = new Product { ProductName = "窗簾業ERP系統", Price = 3500000M };
  17:                  var product3 = new Product { ProductName = "玩具製造業ERP系統", Price = 6700000M };
  18:                  product2.RelatedProducts.Add(product3);
  19:                  product1.RelatedProducts.Add(product2);
  20:                  context.Products.Add(product1);
  21:                  context.SaveChanges();
  22:              }
  23:              using (var context = new ProductContext())
  24:              {
  25:                  var product2 = context.Products.First(p => p.ProductName == "窗簾業ERP系統");
  26:                  Console.WriteLine("Product: {0} ... {1}", product2.ProductName, product2.Price.ToString("C"));
  27:                  Console.WriteLine("Related Products");
  28:                  foreach (var prod in product2.RelatedProducts)
  29:                  {
  30:                      Console.WriteLine("\t{0} ... {1}", prod.ProductName, prod.Price.ToString("C"));
  31:                  }
  32:                  foreach (var prod in product2.AboveProducts)
  33:                  {
  34:                      Console.WriteLine("\t{0} ... {1}", prod.ProductName, prod.Price.ToString("C"));
  35:                  }
  36:              }
  37:   
  38:              Console.ReadKey();
  39:          }
  40:      }
  41:  }


 
 



執行結果為


image





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

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

網智數位-軟體開發

2015年11月18日 星期三

WPF – VisualBrush 劃刷 功能介紹


      在開發公司套裝軟體產品時,在 Windows平台 下公司團隊幾乎都採用 Windows Form 或 WPF兩個技術,今年的專案因為某些原因幾乎全部開始全部採用 WPF技術,當然研發過程也面臨了不同的技術適應期,但隨著專案的開發過程,團隊漸漸越來越喜愛WPF技術,因為不論在繪圖界面呈現,開發速度的產能,效益比逐漸明顯出來,尤其是在 XAML 語法的特性,明顯界面與程式邏輯分離的架構,程式相對乾淨了許多,今年下半年公司也因為某些因素,投入繪圖技術的研究,在WPF的支援下,許多客戶的要求都可以快速的開發因應…
      而今天我也想要分享WPF一個繪圖呈現的一個利器- VisualBrush 畫刷 功能,VisualBrush主要特性是可以複製現有視窗特定的控制箱、元素、容器等區塊的外觀,也就是可以快取下來,好像一面鏡子,然後可以在其他地方顯示,實作方式事實上非常簡單,這邊我就帶大家來看一個範例…
   
  1: <Window x:Class="VisualBrush.MainWindow"
  2:         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  3:         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  4:         xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
  5:         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
  6:         xmlns:local="clr-namespace:VisualBrush"
  7:         mc:Ignorable="d"
  8:         Title="MainWindow" Height="600" Width="800">
  9:     <Grid>
 10:         <Grid.ColumnDefinitions>
 11:             <ColumnDefinition>
 12:             </ColumnDefinition>
 13:             <ColumnDefinition >
 14:             </ColumnDefinition>
 15:         </Grid.ColumnDefinitions>
 16:         <Grid.RowDefinitions>
 17:             <RowDefinition></RowDefinition>
 18:             <RowDefinition></RowDefinition>
 19:         </Grid.RowDefinitions>
 20:         <Button x:Name="btn1" Grid.Column="0" >網智數位-軟體開發 , WPF - VisualBrush </Button>
 21:         <Rectangle  Grid.Column="1"  >
 22:             <Rectangle.Fill>
 23:                 <VisualBrush Visual="{Binding ElementName=btn1}"></VisualBrush>
 24:             </Rectangle.Fill>
 25:         </Rectangle>
 26: 
 27:         <!--<Button x:Name="btn2" Grid.Row="1" Grid.Column="0" Background="Red">網智數位-軟體開發 , WPF - VisualBrush</Button>-->
 28:         <Image Source="gril.png" x:Name="img1" Grid.Column="0" Grid.Row="1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"  Stretch="Fill"></Image>
 29:         <Rectangle  Grid.Column="1" Grid.Row="1" >
 30:             <Rectangle.Fill>
 31:                 <VisualBrush Visual="{Binding ElementName=img1}"></VisualBrush>
 32:             </Rectangle.Fill>
 33:         </Rectangle>
 34:     </Grid>
 35: </Window>
 
重點在我用黃色標示起來的程式碼,很簡單透過 Binding 機制,我分別將2個矩形 Rectangle 的內容區域,放入 VisualBrush ,而各分別繫結至為 Button的外觀 和 Image 圖片的外觀,之後這2個 Rectangle矩形就好像2面鏡子分別對應Button跟Image… 
執行結果如下
image_thumb[11] 
 
網智數位-軟體開發 

2015年11月16日 星期一

BOM表管理與設定﹣輔料是否需輸入BOM

    「BOM表」管理 ﹣ 輔料

      上星期公司在跟一個客戶討論產品生產過程與BOM的輸入建置中,輔導客戶如何有效管理 BOM表,剛好這個客戶因為製造過程中,需要用到許多塗料、螺絲等耗材,所以詢問我是否該將「輔料」列如資訊系統作控管呢??額外一提,事實上很公司都一直以為只有製造業系統才需要導入 BOM表管理,事實上我們也幫助幾家貿易商的管理系統,開發導入簡易的BOM表管理,根據BOM表去靈活計算產品的配件、零件成本計算,來有效進行報價管理。



          (何謂BOM呢?BOM英文為(Bill of Material),中文為物料清單,是電腦用來可以識別的產品結構數據文件,也是ERP的主導文件。 BOM使系統識別產品結構,也是聯繫與溝通企業各項業務的紐帶, ERP系統中的BOM的種類主要包括5類:縮排式BOM、匯總的BOM、反查用BOM、成本BOM、計劃BOM。)

          事實上輔料都是作為構成產品的零部件,但卻很少人真正去思考是否跟產品的物料一樣列入BOM表做管理,我們知道輔料它是生產的工序中必備的材料之一,具體來說,輔料是用於切割油、電子管、塗料等,或是以固定工作為目的,用完后就馬上丟棄的耗材等,輔料很明顯的特徵就是它伴隨生產過程同時會逐漸消耗、減少的物料,因為會隨著耗損,補充材物料庫存量,所以在根據訂單下達產品的生產數量時,輔料它事實上也是跟產品、零件、原物料一樣是可以透過MRP物料需求計劃,進行需求量參與計算的...,建議可以參考我之前寫的文章介紹(MRPⅡ/ERP能力需求計劃 、MPS主生產計畫)。

          但在談輔料時,常常許多客戶又會跟另外一個名詞搞混,這個名詞就是"資源"(Resource),"資源"在 MRP系統 與 ERP系統是指生產所需的物料中除了原材物料、訊息以外的其他物料,例如:機械設備、機器操作員、模具、設備工具、電、空氣、等等都是歸屬於資源,因為通常在計算物料需求(MRP)時,都被當做無限庫存來處理使用,但是我們注意觀察一些輔料的材料,例如塗料是附著於產品表明,作為產品的一部份,還有只要我們實際觀察噴塗工序後,我們就會明白,一定量的塗料會隨著部份飛沫或毛邊被丟棄,我們都把這些消耗品成為「輔料」。

          若以庫存管理的角度來看,輔料是屬於 ABC分析法的C類數量,但從它經常平均消耗的特性來考量,以及輔料的單價一般偏低,所以是適合用於「訂購點管理」,綜合以上所述,即使大多數企業、工廠就算沒把輔料列入 BOM表作管理,也沒有感到太多不便的原因。此外,很多時候大宗物料的物品,我們也可以歸為「輔料」來管理,例如小型的螺絲釘,雖然一般來說都被列入「零件」項目,但在實際組裝過程中,即使規定只有20個螺絲需要,實際上使用20~25個也都很普偏,而且螺絲在各種產品可能都通用下,把它採用「輔料」角度來處理事實上是合理可以接受的。


(其他參考文章)
MPS主生產計畫專文介紹(一)
MRPⅡ/ERP 能力需求計畫原理
庫存管理-概念與釐清
庫存管理探討-VMI
真正的庫存量形成探討
庫存管理的中樞控管法則(上)
庫存管理的中樞控管法則(下)
BOM表管理與設定﹣輔料是否需輸入BOM
何謂 進銷存、ERP、WMS?三者差異性【軟體開發、軟件開發、程式設計】
ERP 產品成本管理與計算
庫存量正確性衡量法則
粗能力需求計畫(RCCP) - 專文介紹

如何利用軟體來協助企業銷售統計和分析