這是幫班上的同學代發的心得文,這次抽中第三題還能堅持到最後並取得證照,實在優秀,更優秀的是100天的課程沒有請過假,全勤到底,從純文組的背景在一百天的課程中成為可以熟悉並靈活運用程式語言的工程師,下的工夫絕對是超出想象且值得學習的。
——————————————————————–以下正文—————————————————————————–
乙級術科解題心得
一、 總論
大致上,我自己做每一題都至少會做三遍以上,而且每次練習我都會盡力去做並且”計時”,因為這樣才能知道自己有沒有進步,自己嘗試的方法有沒有效果,我覺得這是很重要的,而且盡量同一個時間專注在一題就好,雖然同一題做很多遍
可能會有點煩躁,但是我會專注在可以提升速度的改變上,專注去思考可以更快的方法上,如果能夠想出來,那就是有很成就感的一件事。
每一題做三遍的過程中,第一遍通常是熟悉題目的要求和功能,也熟悉網站的架構和流程,所以第一遍通常會花比較多的時間(像是第一題我花了8小時、第三題花了3天…),但這是一切的基礎,所以不要怕麻煩,要去了解每一個細節;再寫第二遍之前,我會在第一遍的基礎上,按照自己的想法來精簡流程和架構,想出自己覺得更快的作法,然後一樣進行第二次的計時練習。第二次練習的目的,就在於驗證自己的想法,確認自己想出來的解決方案是符合要求和時間。
同樣的,再第三遍開始以前,我會把第二遍做的過程和最後的結果,進行一個檢視和調整的作業,把過程當中不夠順暢、不夠簡潔的地方都再一次修改,最後同樣是抱著通過4小時的心情來驗證自己的程式碼…。不用害怕做很多遍,第一題我不熟悉的時候做了5遍,但是有時候想不到好方法的時候,也不用一直鑽牛角尖,可以嘗試看看別人的東西,多接觸不同的想法,或許就會有更好的靈感產生,所以交流真的是很重要的!!
最後要提醒的是,練習的過程其實不是無腦的練習,對我來說,除了熟悉流程架構、驗證自己想法以外,我還會不斷思考有沒有重複出現的形式(pattern),如果有,那就是可以簡化的部分,像是第一題,第一次做的時候覺得東西很多、很繁雜,所以直覺就是需要一個SOP來簡化流程、確保過程不要遺漏;後來不斷練習之後,覺得第一題後台的東西,也不過就是簡單的增刪改查,(這就是一種pattern,要掌握相同、反覆出現的部分來加以簡化),會變化的也只是樣式或類型而已,再更進一步說,其實後台就兩種類型,一種是檔案上傳的類型,另一種是一般文字的類型,所以我的流程規劃就會是相同類型的檔案一起做(先做檔案上傳類型,再做文字類型的),這樣可以避免腦袋打結和混淆;再來又發現,其實他們的欄位都很相似,所以我就從欄位的設計下手,把他們的欄位做相同的命名,有變化的只是他們的前綴,所以像是圖片就會是:pic_name、pic_text;文字就會是:word_name等等,這樣命名的好處就是,後台各功能的增刪改查的語法其實都差不多,有差別的也只是table名稱和欄位名稱不同而已,所以我就想如果要更快的話,就可以利用「搜尋和取代」的功能,來迅速地替換程式碼不同的地方,只是這有個前提,那就是命名一定要有個規則來處理他,這樣在取代的過程中,才不會自亂陣腳,不會不清楚自己到底有沒有取代成功,或是不清楚自己取代到了什麼…。
以上分享就是在說明我發現pattern、簡化程式碼、簡化流程的一個過程,這當中其實需要很多的思考和設計的,這都是息息相關的,所以我很能體會林老師上課提到的,跟客戶要先確認架構和功能,還有修改的範圍和次數,否則我架構、db都設計好了,客戶來個大修,那我豈不是要全部從頭思考一遍?
總之,我想說明的就是,大家在練習的時候,不要只是無腦的練習,其實要注意有哪些地方是反覆出現的,那就是可以簡化的部分,如果自己對於程式語法、相關技術有一定了解,那能夠運用的技巧或技術又更多了,所以不管是劉大哥或解題影片的方法,都是把增刪改查的方法包裝成一個api或function,然後透過傳值、傳參數的方法來實現功能,這也是很棒的方式,同樣都是把相同的過程提煉出來,但是每個人可以有不同的解決方式,我覺得這是很棒的地方,大家相互交流就能學到新東西!!
其實我鼓勵大家跳脫考試的框框,對我來說,我自己也很討厭重複做一樣的題目,但是大部分的時候我沒有把他當成考試題目,我把它當成一個挑戰,因為考試是一時的,但是我學到的技術就是跟著我的,所以當我能夠把學到的技術整合應用在考試上,然後真的把流程更簡化,那開心的感覺是不可言喻的,心裡會更踏實,因為知道自己又成長了。老實說,我覺得考試要能提升速度,關鍵不在打字速度,關鍵在自己的思維能力、邏輯能力,程式碼的架構和流程更簡單了、更直覺了,那自然寫程式的速度也就快了,大家不要覺得自己不行,其實這是可以透過訓練來達成的,還記得我說過我第三題花了三天嗎?!那時的我也覺得第三題很難啊,我也覺得自己才能不夠用啊,但是當我慢慢消化、一點一點理出頭緒,雖然很緩慢,但是我慢慢就看到希望了。其實碰到這種問題才是好的,難的題目才能學到東西,因此當我第三題多做幾遍之後,再回過頭來看第一第二題,怎麼看都覺得變得很簡單,因為第一二題跟第三題的速度是不一樣的,雖然都是增刪改查,但是在經歷第三題操過幾遍之後,就會深深覺得第一二題東西真的少很多,這時候就會知道自己的能力提升了。
當然,有時候我也深深自覺自己的能力不足,所以除了上課以外,我自己也會在網路上找更多的影片或資源來學習,因為我想學到更多的技術,想解決更多的問題。勉勵大家一起努力,真的想走這條路,就要下一定的決心,付出一定的真功夫。
二、 第一題
其實第一題上面已經講了差不多了…。這邊大概補充一下就好,基本上,第一題後台的部分我大概會花2.5小時,前台的部分大概1小時。後台的部分如上所述,我會分成兩個部分,一個是檔案上傳的類型(包括標題圖片、動畫圖片、校園映像圖片等),另一個是文字類型(就是其他的功能了)。基本上,不管哪個類型,其實只要把各類型第一個樣板做好,之後就只是複製取代而已。我覺得需要注意的就是命名要清楚,這樣取代的時候才不會有問題。(這邊是以複製取代的作法而言,如果有其他方法請自行掌握)
至於前台的部分,其實素材檔把前台控制的js或樣式都寫得滿完整的了,需要做的功課就是要先了解js的功能和設計,這樣才能進行套用,如果了解它運作的架構之後,套用起來就非常容易了,所以我說前台1個小時完成不是說說而已,是絕對可以的。但是!!一定要徹底了解他的js原理和樣式喔!!不要只學怎麼套用,這樣一點幫助也沒有!!
三、 第二題
第二題感覺沒什麼特別的耶…,我覺得可以用來練習jQuery,把本來可以用js寫的部分用jQuery來操作。然後這題有些地方我會用URL參數來處理,這樣我覺得比較直覺又簡單,像是分類網誌、投票,然後再搭配table欄位的安排,其實就能有效的簡化一些流程了。
其實有時候方法沒有很難,簡單的技術一樣有功效,只是懂不懂的運用而已,方法沒有高下,只是有沒有效而已。
(我稍微修改了一下register驗證,還有logout的地方)
四、 第三題
第三題相對其他題目是比較複雜的,這裡我只會以考試方法來說,至於更細節的程式部分,請再自行看我的雲端(點我看連結)。
後台的部分,比較花時間的就是電影的新增和修改,所以在考試的時候我會直接放棄(總共才10分而已),直接建立db和檔案資料夾(movie),把影片(記得要先轉檔,用adobe的media encoder轉成mp4,考試的時候,環境設定的90分鐘就已經有素材檔了,可以在那段時間裡面先轉檔!)和圖片先複製到movie的資料夾,然後我會更名成簡單的數字(像是:1.mp4、2.png,可以利用F2和tab來快速改名),最後再db先鍵入一筆資料,再用phpmyadmin的複製功能讓資料快速增加,最後再修改資料,像是:預告片和圖片、電影名稱等等,目的是讓他們呈現在前台的時候有差異性,至於一些不太重要的導演、簡介等等,我個人覺得沒差,大家自己斟酌。
後台大部分沒有太多的困難,只是有點雜亂而已,想清楚自己的架構、流程和程式碼,要掌握應該不難。(後台全部差不多要1.5個小時左右)
前台的部分,動畫其實很好掌握,只要熟悉jQuery的動畫,還有一些相關語法,基本上就不會被扣到分數了,大家仔細看題目就會發現很好拿分。這部分我覺得比較重要的是練習樣式的調整,首先一定要能調整出大小圖的比例和位置,這部分只能靠大家自己練習了。基本上,我考試不會去背這些調整的參數,我都是靠平常練習和臨場反應的,這部分記得要多用F12來檢視和調整(雖然樣式有時候不好理解,但是基本上他都是有邏輯的,只要理解他的邏輯和用法,掌握上就不難了;如果不了解的話,那就自己多嘗試、多實驗!!)。(這部分做的熟悉,應該可以在20分鐘內搞定!!)
前台訂票的部分,這部分也是前台比較花時間的部分,不過這部分主要還是考驗邏輯,至於前台顯示的部分到還其次。我會說考驗邏輯,主要是在api的部分,這部份是硬功夫,但是只要邏輯能夠通,就會變得很容易。大家可以照著流程來思考,像是:一進畫面電影就會有預設值,這時候就要接續跑出相對應的日期,那日期的部分要怎麼做?日期部分搞定之後,那場次怎麼出來?有了場次之後,如何跳頁、叫出座位表?座位表先不要管有沒有定位的問題,先處理樣式,能夠正確顯示之後再做checkbox的驗證(不超過4筆),最後在處理有無定位的顯示問題;做完之後,要怎麼在table新增資料、跳頁顯示訂單。這部分大家不要著急,一步一步完成就可以了,愈踏實就愈快完成。(詳細的說明可以看我的程式碼)(這部分差不多要花1.5~2小時)
五、 第四題
這題因為我練習的還不夠熟,所以只能提供一點方向和建議。這題主要會分成三大部分,一是前台購物車,二是後台的商品分類、商品管理和訂單管理,第三就是剩下的其他功能和顯示。因為畢竟這題還是以購物車為主,所以考試的時候,我會很快的解決第三部分,那時候練習的速度大約是需要1.5小時(我的目標是設定在1小時)。
再來第二部分,因為會放棄商品管理的新增和修改部分,所以後台預計是1.5小時左右;第一部分,前台顯示商品和購物車這部分預計是1.5小時。
這題其實也挺雜亂的,大家最好花一點時間整理好架構和流程,而且他很多不同型態的表格,所以要訓練自己快速地把表格生出來;還有就是增刪改查的功能也在很多地方出現,像這種資料重複出現、形式重複出現的地方,都是可以思考簡化的地方,大家可以善用api和session。
後要提醒的就是,他的購物車其實沒有什麼功能,只是顯示用而已,這說明只要好好掌握這部分,其實這裡是可省時間的地方。具體來說就是,只要表格用好、session放對位置、用jQ切換顯示、最後api寫入db,這一連串其實跟第三題的訂票根本大同小異,但是應該更簡單一點,這裡只要熟悉session和陣列就ok了,如果多練一段時間,這部分應該可以節省不少時間。
六、 最後提醒
以考試來說,我還是覺得最好的程式碼就是自己看得懂的、又最直覺的,因為不用背是最簡單的方式,所以很多函式、樣式設定、參數我都不會刻意去背,因此每次我的樣式都會不太一樣。對我來說,只要掌握關鍵邏輯就好,剩下的就靠平常多練習而已,尤其是樣式的部分,其實平常多調整就會有經驗了,不用還要刻意去背,這樣會太累。
其實考前,我大部分都只是把流程、架構、邏輯順過一遍,像一二題比較簡單,我平常都練了五遍以上,那考前我就只會自己在腦中想一下流程、看一下題目,還有看一下平常容易出現bug的地方或是有不太熟的地方;我會把更多的時間放在第三第四題,如果還有時間的話,我會把網站打開,配合題目和程式碼一起把流程和邏輯順過一遍,也會把關鍵的程式碼印下來,如果有空還可以複習。雖然我到最後還是沒什麼看…。(其實放鬆心情比較重要,保持腦袋清醒和靈活就可以了!!)
留言