2020年8月31日 星期一

參加IT鐵人賽

 在八月的時候一時興起想用R為主題參加,但是想著想著自己似乎內容太少了

很難撐過30天,在經過一個月後內心的掙扎還是參加了我想我的內容規劃會大至以下為主題

  1. 緒論先稱第一天把
  2. 以鐵達尼很簡單的方式共七題分為兩天
  3. 在以CAR Dimaon比較複雜分為三天會提到dplyr
  4. 依之前所學在鐵人賽所學使用自己的測資我看可以撐七天
  5. 在以論文的基本分析為一天
  6. 論文的內部信度為一天
  7. 論文的效度分析為一天
  8. 在用shinny來執行後面的20天
所以還有17天我想使用shinny來作論文的網路版,把自先前的想法做出來

看這一個月從論文的資料分析到網路用R作出來,我不想用使用Model作主題

其實這個活動其實也沒甚麼,但內心總是翻來覆去,我想不在團隊了心也比較鬆了

對一些事情有時間反覆的思考及斟酌,若我的論文可以作前測的話時間會比較緊

當然我也看到一些要連續30天都要PO文章,一些人還是無法完成,其實主要為內容的部分

的規劃有時做到都沒內容,要不就是每天很累要想內容,又要花時間又要作描述

其實是一件不簡單的事,所以我在想就用這個部落格將一些文章先行寫,作為文章的庫存

另外規劃像鐵人賽的商用R分析把一些測資先規劃,在者對於論文的問卷測資作一些規劃

最後事shinny的網路版的一些內容,當然在板型上可以撐個兩天,我想就這樣把!

物件導向4-物件使用的方法

 其實在學習物件導向的過程中,發現在封裝也就是Class的使用就很抽象,所以在學習的過程中在

Class這一關就卡住,所以我們小結一下前面的關念

  1. 封裝其是Class的稱呼,將相同的事情歸類,歸類以欄位或屬性及方法來形容歸納出的描述。
  2. 系統中有數個Class組成,若類別相依性過重造成維護性的困難,所以會設定類別的能見度。
  3. 類別由物件組成如欄位或方法,當物件使用時為電腦的記憶體,存著該類別的相關資料。
  4. 當系統中建立數個類別時,如何區別類別就是使用命名空間。
  從上面就是前面斯篇文章要帶出物件導向的觀念,而都還沒提到繼承及多型,僅在封裝的階段

中,而後續類別如何實作以.NET的語法而言分為一般方法、靜態方法、建構式,而這三者的不同

先暫時不提,先以靜態方法為主,在還學程式實就看過static  也經常看過

public static class StaticClass,老實說我根本就不知道她是甚麼鬼!就是這樣用啊!當接觸的系統愈來

愈多時開始發現他的重要性,當你使用靜態方法時你的所有的物件記憶就會自動存在,你也不

用new來啟用物件,很方便!但就占住記憶體,小系統還好若是大系統使用靜態方法所占住的記

憶體就很可觀,所以在前面文章有提到系統開個三天或一星期就需要重開機,使用太多靜態方

法是因素之一,在可想像若是寫contect使用靜態方法哪可以想像記憶體占用的恐怖。而使用new

當使用完後記憶體隨即釋放,當然靜態方法不是毒蛇猛獸都不要用,而是依據你的專案及需求

進行規畫你的靜態方法。

2020年8月30日 星期日

物件導向3-物件與類別的關係

   物件導向程式設計大家琅琅上口甚麼是物件?如何形成?系統中板演甚麼腳色?

老實說以前在學時這些觀念真的搞得我不要!不要!

其實簡單講物件就是電腦的記憶體,他記載了資料及動作。

而Class在上一篇提到簡單講就是一群相似的物件組成。

而Class與物件有甚麼關係?簡單講Class決定物件的樣子,當物件形成時就是一組記憶體。

上面這句話有點玄Class決定物件的樣子,我們用物件導向最愛舉的例子貓是一類,犬是一類

若以Class來講貓友他的形狀、體型、叫聲(欄位),方法有進食的方式(方法),而這一些'組成成貓

的Class也是貓這個物件的樣子,當使用該物件會使用new(Net)形成一組記憶體。

  當我們進入實際專案中我們一定會下去需求訪談、需求定義、系統分析,此時依需求規劃該系統

的Class,最後由數個Class來組成系統,也是前面文章提到由數個模組組成,當在實作時可由會

程式中建立規劃中的類別,以我來講是使用.NET就會使用using,事先宣告程式碼中需要參考的

命名空間,如此一來,在程式中使用類別定義的時候,就不需要使用完整名稱 。

在.Net專案中加入類別定義時,會自動設定專案名稱為預設的命名空間名稱,甚麼是命名空間

記得以前為了瞭解.NET的命名空間將微軟相關文件K了一遍,還是不懂甚麼是命名空間,

其實一個例子就可解釋命名空間,一個班上有兩叫小明當老師喊小明時兩個會同答有,但老師

叫李小明時只有一個人答有,是的,命名空間就是姓氏的概念來區別眾多的類別。

物件導向2-封裝

 在物件導向的世界就是大家所熟知的封裝、繼承、多型,這三個組成物件導向的世界,

而這三個是有順序性有封裝才會有繼承彆且有多型,其實這是個很重要的概念,這個概念傳達

了並不是獨立,想我當初在學時就認為三個是獨立並無關連,獨立出來思考但這是錯造成

很多觀念無法銜接,首先先看封裝他是撰寫物件的一開始幾乎都從封裝開始,而甚麼是封裝?

就是將系統內程式模組之間關聯性降到最低,程式部會改一下鳩牽一髮動全身,還記得物件

到項1的文章提到把BUG修好而原本好的功能卻壞了,其實這就是封裝沒有做好,系統內的

程式模組彼此互相依賴的程度過高。

  所以從上面可以得知封裝對於系統的穩定度及後續的維護是如此的重要,

而我們在定義更清楚一點甚麼是封裝,其實˙將系統依專案的需求或客戶的需求,將程式

切割多個模組(該模組處理相同的作業且相關資料的產出,可歸類為模組),而在物件導向

的世界不叫模組而叫class,換言之class就是封裝的結果,其實就怎麼簡單。

  以前在學時被封裝這個名詞搞得七葷八素,被一些電腦書籍愈講愈模糊,而class長成如何ㄋ


從上至下為class名稱為AppliocationCase,至下為欄位和屬性(以此案例只有欄位沒有出現屬性)

最下為方法,其實這就是一個class也是封裝的結果,而在上面有提到每一個模組與模組要降低

每個模組的關聯性,又要如何設定每個Class的關聯性,就是能見度在上面的例子有看到+號和-

號就是能見度+號為public所有程式都可存取,因此你的Class的欄位值可能有被其他的Class中的

方法修改造成原本好的功能修改後卻變成壞的,相對-號為private私有只有自己Class的類別可以

存取,當然若是能見度設的太緊在開發中是很痛苦的,若是能見度設的太鬆導致每個Class互相

依賴太高不好維護,所以Class能見度的設定沒有一定的標準,要依專案的需求仰賴系統分析

或PM,有些公司是程式設計師全包在分析時的決定。

  上述就是封裝主要的功能及所呈現的方式,而在封裝再深究下去可以有欄位和屬性,一般通常

欄為我們都會社私有就是-號,所有的過程皆使用方法來存取,以達到資訊隱藏性及安全性。





2020年8月27日 星期四

物件導向-1

 物件導向設計這一句話已經聽了大概有20年之久

也歷經很多的專案及看了很多相關書籍

也看過很多的程式設計師對於物件導向的認知

漸漸的沉澱專案回想過去在救專案的過程

不外乎錯誤修正好了  但原本好的功能卻壞了

要不系統執行一個功能很慢

要不多人上線後隔一個禮拜或三天就要重新開機

要不系統架構是A模式  但後面在A模式上疊了很多不知所謂的程式及架構

要不完全沒有架構可言  依直覺寫程式

在這不考慮系統分析和設計  就算分析好了程式還是一樣

當然如此之說有些偏頗  但是台灣的專案經理及程式設計師素質好嗎?

想當年自己用UML畫了類別圖  先不說畫的對不對

程式設計師根本看不懂  叫我用講要他們幹麼?

多年後當了主管手底下有些專案經理  我不敢請它們畫UML怕他們會發瘋

請他們依需規格及需求訪談後  規劃出功能架構圖(是很老的規劃方式)

大概歷經12個專案經理  都在大公司待過  結果只有兩個畫得出來

有時都覺得心很累  但還要聽他們抱怨公司資源不夠  程式設計師素質不好

但這些專案經理都不會說自己不足  總是千錯萬錯都是別人的錯

我會犯錯都是別人害我來犯錯  說來說去我就是沒有錯!

在多年人生的歷練也漸漸可以體會這些專案經理的難  混口飯吃嗎?

當我承認錯時在公司怎麼混!老闆怎麼看我!主管怎麼看我!程式設計師怎麼看我!

所以咬住我就是沒有錯!唉......造成管理上的困難!

再說程式設計師遇底子好的  可以馬上上線更是可遇不可求  

很多程式設計師都需要一年半載的培養  方能堪用

本來要寫物件導向確寫成抱怨文  不過換一個角度來看  

鑑古至今看到以前的問題  才知道應該學習甚麼東西或觀念

來避免同樣的錯誤


2020年8月26日 星期三

.Net WebForm界接Json資料-總結

 其實總結使用.Net WebForms來進行Json資料介接,看似簡單的東西卻花了5篇

之篇幅做說明,當然裡面掄入很多細節中,往往看不到真正的真諦

其實將所過程及邏輯用一張流程圖作為表達,如下圖


  1. 將主程式寫在Page_Lad的原因,該程式一執行及自動進行介接的動作。
  2. 與取得資料網址設為一個變數存放,並執行函數GetJsonContent。
  3. Json反序列化將原始Jsonson資料對應至Data Class。
  4. 取得資料標題並進行字串串接。
  5. 進行判斷標題字元大於35加入詳情限制為35字元,否則標題完整成呈現。
  6. 結束。
就是這樣!但這些過程中到底是哪裡難!以邏輯而言並不是很難,為甚麼寫起來總是哪麼燒腦

原因我個人覺得語法及Web端處理的命名空間,我相信每種語法都有他處理的方式

相對.NET也不例外因為我們不會把所有的命名空間全部讀一遍,就算讀完一遍也不知道怎麼用

因此必須尋找很多的資料進行參考,導致簡單邏輯造成很多的不確定性,也形成問題的模糊性

因為我不知道該用甚麼語法來處理,所以就需大量尋找相關資料來尋求靈感,以致造成問題

複雜性,不確定、模糊性、複雜性三者的加總形成簡單邏輯卻如此燒腦。

但我該如何破這些盲點ㄋ?老實說我也不知道!

無現金支付的反思!

  **購物經歷** - 作者花費大量時間尋找立燈,最終在IKEA購買了一個649元的立燈 - 在IKEA附近停車場遇到只接受無現金支付的情況,被迫註冊並使用Line Pay **無現金支付的觀察** - 作者認為Line Pay作為前端介面,有助於提高停車場付費效率 - 作者預...