標籤: SEO

企業形象設計-網頁設計

     客戶委託我們設計形象網頁,以下是初步設計作品…..

image
image

image

參考網址:
http://pws.pwsworldsystem.com

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

my_qrcode_1519621481105

使用 Task 自行控制非同步任務作業【軟體開發、軟件設計、客製化軟體、軟體設計】

   在之前我寫過兩篇關於使用 Parallel 類別進行多任務的平行作業 ,1.透過 Parallel 類別操控多任務平行作業(一)。 2.透過 Parallel 類別操控多任務平行作業(二)。 , 但因為使用 Parallel 類別雖然方便,因為都被.Net 包裝著很好,各自的執行緒任務獨自運作,如果有時我們想要更進一步的控制每個平行任務任務時,就必須使用  Task<TResult> 與 Task 類,這兩個類別可以有效地自行控制建立非同步任務,可以由程式開發人員決定什麼時候要啟用任務、什麼時候要中斷任務。


(補充)Task<TResult> 類別是從 Task 類別衍生而來,兩者主要差異是,前者是帶一個 泛型參數,也表示任務執行完畢要返回的類型值。


     這邊為了簡單講解 Task 類別的用法,為了好示範講解,一樣透過新增一個 Windows Form 專案,在對應的控制箱事件,撰寫核心程式碼….不過在看實際範例程式碼教學時,我先介紹如何三種使用 Task 任務的技巧:

(1)直接使用 Task.Run()的靜態方法,該方法一旦被呼叫,就會馬上進行非同步化任務,而呼叫也會返回一個 Task 實體物件。


(2)新增一個 Task 物件時,傳遞一個委派方法至建構函數,當建立一個 Task 實體物件時,不會馬上執行非同步任務,而是要手動呼叫 Start() 方法,才會開始執行非同步任務。


(3)Task 與 Task<Result> 類別都有公開一個 Factory 靜態屬性,該屬性返回一個 TaskFactory 或 TaskFactory<Result>類別,我們必須再透過 TaskFactory 對應的方法來啟用非同步任務作業。


(實作過程)


步驟 1:

透過 Visual Studio  2017 來建立一個 Windows Form 專案。

2017-07-12_00-33-55


步驟 2:

在 Form1 表單,我設計版面與拖拉相關控制項至主畫面,有 一個 Label (用於顯示標題,Text =“輸入一個正整數值:” ; 兩個 TextBox (分別用於讓使用者輸入 一個正整數、與顯示非同步任務執行完畢時,要顯示的結果值);還有一個 Button 控制項(Text =“開始計算任務” , Name =”btnExecTask”) ; 最後還有一個 ProgressBar , 目的是要 Task 執行非同步作業時,可以及時更新進度,通知目前作業進度表給使用者。


主畫面截圖如下:

11


步驟 3 :

在 Button 按鈕的 click 事件撰寫主要的核心程式碼:

private void btnExecTask_Click(object sender, EventArgs e)
  {
      uint calcNum = 0;


     if (!uint.TryParse(this.txtNumValue.Text, out calcNum))
      {
          MessageBox.Show(“請輸入一個正整數數字!!");
          return;
      }


     //進行更新進度表
      IProgress<int> progress = new Progress<int>((p) => progressBar1.Value = p);


     //宣告一個 Task 類型變數
      Task<long> task = new Task<long>(() =>
      {
          long result = 0L;
          for (int i = 1; i <= calcNum; i++)
          {
              //累加值
              result += i;


             //進度值
              double currProgress = Convert.ToDouble(i) / Convert.ToDouble(calcNum) * 100d;


             //向主執行緒 主畫面 進行更新進度條
              progress.Report(Convert.ToInt32(currProgress));
          }


         return result;
      });


     this.txtResult.Text = “目前正在執行計算過程中……";


     //任務 手動啟動
      task.Start();


     //等待任務執行完畢過程中,將按鈕先停用,以防止重複執行
      this.btnExecTask.Enabled = false;


     while (!task.Wait(100))
      {
          //在等待過程,允許程式繼續處理其他佇列訊息
          Application.DoEvents();
      }


     //任務執行完畢,重新啟用按鈕
      this.btnExecTask.Enabled = true;


     //顯示計算結果
      txtResult.Text = “任務執行完畢,計算結果值為:" + task.Result.ToString();

  }

c


PS.主要程式碼解釋,我都寫在程式碼註解,寫得還滿詳細的….


步驟 4:

執行 compile ,進行測試執行吧…

result





參考文章

C#多工作業與平行處理技術講解

1.透過 Thread 類別撰寫多執行緒多工作業。

2.透過 Delegate 委託支援的方法,撰寫非同步任務。

3-1.透過 Parallel 類別操控多任務平行作業(一)。

3-2. 透過 Parallel 類別操控多任務平行作業(二)。

4.使用 Task 自行控制非同步任務作業。
5.在非同步作業時,如何取消非同步任務。

6.多執行緒多任務存取相同變數,但卻各自隔離保留各自任務的值。

7.非同步存取變數的問題。

8.非同步資源鎖定解決方式。







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

針對各特殊產業都可以量身定做符合貴公司的需求,別人無法克服的就是我們的挑戰

業務合作、軟體委外開發

業務窗口: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

SEO 的用途介紹

          在網路常常聽到大家都在談 SEO 這一詞,那麼SEO到底是什麼?又如何把它應用到公司整體的行銷?最簡單的解釋SEO就是利用一些技術手法,來使得公司的網站可以進行優化,進而當網路使用者在各大搜尋引擎進行某些特定的關鍵詞彙查詢所需尋找的內容,可以讓公司或組織單位在搜尋結果可以排序在前面頁次,如果用更專業的術語來解釋,就是透過研究與了解搜尋引擎在搜尋採用的排序索引方式,甚至是可能的內部演算法,來調整公司的網站內部結構,使得搜尋引擎可以更容易收集到貴公司的網站內容到相關分類。

LINE_ALBUM_AI產生圖_240212_646

          再來簡單解釋過後,我想在針對SEO可以帶來個人或企業那些好處呢?
利用 SEO 來獲利
     SEO已經是很成熟的行銷技巧,也幾乎是網路行銷公司幾乎都在強調的,但坦白說厲害的與不厲害的,獲利差別很大,它的獲利方式很多種,有幫人事實SEO行銷服務、或在自己高流量網站放入合適的廣告、甚至許多素人透過認真經營自己的Blog或網站,再搭配大量的SEO合法高超技巧,大大提升知名度,竟而出版書籍,這些都是屢見不鮮的….
1.提供SEO服務
     在台灣有許多提供SEO服務的技術提供者,也是專門實施技術服務來賺取報酬,由於現今網路的普及,使得各行各業都急以想在網路增加自己的曝光度。
     但臺灣作為專業的SEO服務提供商,通常與委託服務者(需求客戶)溝通都是最大的障礙,因為SEO事實上是需要經過數月的經營與優化過程,而往往客戶都急著想要在最短的天數看到效果,而且即使SEO效果做出來了,也可能在一段時間後,關鍵字排名又退步了,進而失去耐心了,這是非常可惜的…SEO是要持續不斷的投入,畢竟你的所有競爭對手事實上也都偷偷再進行,所以你愈晚投入SEO,你所需面對的競爭將會愈大。
2.相關商家合作採取SEO措施
     這是比較特殊的概念,也是一般委託者較少採取的方式,但我想提的是合作就是力量,我在此舉一個案例,某男服裝零售店因為網路服裝銷售太競爭,所以SEO本身就是很不好經營的委託案件,但如果可以結合另一家女服裝店家,更甚至是鞋店店家,一起合作共同經營SEO,網站互相連接,訂單也可以互相補給,這樣不但可以創造給消費者整體一致性服務,也更因為網站合作的數目夠多,SEO的效益比起單打獨鬥當然成效就可以比較出來,當然前提是大家可以彼此互相信任。
3.成立專業網站,來獲得廣告收入
     在現今這模式可以說比比皆是,如專業的部落格作家,在各自的網站討論如美食、音樂、化妝、工作趣事、3C介紹,來達到網站訪問量後,接著在網站擺放各種切合自己本身網站的主題,來獲取大量的廣告收益,但前提下,就是要有大量的網路流量與拜訪率,當然也要投入相對的SEO優化技巧。
4.銷售自己的產品,進而獲利
     在一般傳統零售業、餐飲業、各服務店家,可以透過 SEO 技巧,來讓自己公司的產品或品牌能見度提高,依據統計調查分析數據,現行消費者在購物時,幾乎一定會現在網路搜尋類似的關鍵字,進而影響消費者接下來實際的購買行為,所以如果自己的產品或各種想要快速接近消費者,最好的做法一定是,現在網路上打好基礎,而這一基礎就是讓我們一起做好SEO 搜尋引擎優化…
5.建立個人、企業品牌彰顯度
     在前面我談論了一些內容,很明顯可以知道SEO,確實有一個極大的作用就是建立個人、企業的品牌知名度,以及擴大接觸潛在客戶的能見度,在大多數時候SEO本身並不是讓網站本身的排名有一個很好地表現,而是讓網站的所有頁面的每個關鍵字有一定的排名(分數),例如針對某買鞋子網站,特別針對 “休閒鞋” 、“潮流男”、“洞洞鞋” 來進行關鍵字 SEO 優化,當這些可以產生消費者搜尋的關鍵字出現在 Google 、Yahoo等搜尋結果的前面頁次,那麼後續使用者產生興趣的點閱閱讀的機會比例是相對的高。
     企業在計劃做行銷規劃時,目的是為了建立自己的企業品牌,從而轉變為實際的購買率增加,所以才會需要挪出預算採用電視、廣播、平面雜誌的傳統媒體行銷手法,當然做一定也有它的效益,可是很明顯看到出來缺點就是精確性低,而且費用極高,但採用網絡行銷手法,尤其是SEO 相對來說,所需投入的預算低了很多,況且精確性較高,花的錢比較能命中目標,因為 SEO 採用的是鎖定特地 關鍵字 系列,而這些關鍵字都是潛在消費者實際自己需求而主動式搜尋,來連結到你企業。
網智數位,有多年的企業咨詢案例,對資訊科技在企業的應用與導入,將會陸續把經驗分享,也希望如你有企業商業軟體的需求或客制,都可以與我們聯繫。