很久之前有看了Map這個物件,今天來看看跟Map一樣,也是一個很特別的物件,也就是Set。這種物件也是平常比較少會碰到,但學起來,在某些時刻也會有幫助的物件。今天就來好好認識一下Set的吧!Set是什麼?從MDN的說明內容可以理解到Set是一個object,可以儲存任何型別的唯一值,不論是原始型別或是物件。文科少女寫程式 發表在 痞客邦 留言(1) 人氣(48)
一年轉眼之間又過了,今年也來稍微回顧一下這一年做了什麼事情吧!雖然時間過得很快,但仔細想想,這一年其實也做了不少事情。關於工作關於工作的部分,自己終於在這一年找到了一份需要用React的工作了,雖然近期工作有變動,不過在這份工作中,也獨立負責了一份新專案從0開始的開發,而且也主動向前輩詢問可不可以使用TypeScript開發,所以在這個專案中,用了自己最喜歡的TypeScript。也在這個份專案中,做了一些沒有過的嘗試,像是API handler因為要應對後端的需求,改成會在當下打API才決定用哪組URL的那種api handler,為了把axios的相關設定都寫在同一份檔案裡面,有特別針對這個情境寫了一些判斷,雖然這也不是什麼非常困難的東西,但是自己完成了這個自己沒有寫過的方式,還是覺得很有成就感。除此之外,也嘗試了一些useContext和Redux的用法,這也是我自己很不熟悉的部分,也從內部專案中,學到了一些讓程式碼更好維護及管理的寫法。文科少女寫程式 發表在 痞客邦 留言(0) 人氣(75)
其實通訊協議相關的網路知識是一個很基本的東西,但是身為非本科生的人可能會比較容易忽略掉這部分,這次就來抱個佛腳了解一下這部分吧!另外,會想要好好了解這一塊,其實也是因為原本待的公司有機會碰到MQTT這個應用層的協議,所以就趁這次先花點時間了解最最基礎的部分,再慢慢進階到了解MQTT。
何謂通訊協定?
通訊協定是一種用於規範及標準化系統間數據傳輸方式的系統,它定義了通訊中的規則、格式等,來確保不同設備、系統或應用程式間能有效地交換資料及訊息。通訊協議主要會定義數據傳輸的格式、通訊方式、數據安全的機制、傳輸間出現錯誤的處理方式,以及通訊的流程。
TCP是什麼?
TCP是Transmission Control Protocol的縮寫,中文值翻也就傳輸控制協定,不過比較常直接以TCP來稱呼。TCP是傳輸層transport Layer的協定,它會將傳輸的資料切分小來傳輸,並在接收端將封包組裝在一起,來確保數據傳輸的可靠性及有效性。
TCP & 三次握手與四次揮手
傳說中的網路連線的三次握手及四次揮手是TCP連線中進行的過程。
在建立連線時,會經歷三次握手的階段。
第一次握手:client端向伺服器發送請求。
第二次握手:伺服器收到請求後,會向client端發送回覆。
第三次握手:client端收到回覆後,會進行確認,並告知伺服器端已經連線,伺服器收到消息後,就完成連線。
在結束連線時,則是會經歷四次揮手的階段。
第一次揮手:client端向伺服器發送結束連線的請求。
第二次揮手:伺服器收到請求後,會再向client端發送數據,代表已經接收到client端的請求。
第三次揮手:伺服器準備好結束連線後,會再向client端發送。
第四次揮手:client端收到伺服器的回覆後,會再發送數據給伺服器,代表已經安全關閉連線。
簡單來說所謂的三次握手和四次揮手,就是在確保有正常地連結及結束連線,所以會在client端和伺服器端來回確認連線及結束連線。
TCP的其他工作事項
除了前面連線的握手和結束連線的揮手外,TCP還會進行以下的這幾特工作事項。
流量控制:控制傳輸的流量,避免發送的那一段發送速度過快,造成要傳輸的數據有遺失或堆積的狀況出現。
阻塞控制:當網路阻塞,會透過降低發送速率來避免造成更嚴重的阻塞。
雙向通訊:讓client端和伺服器端在建立連線後,可以同時進行發送和接收。
關於這個部分這次就先簡單地看到這個地方,下次再繼續延伸其他部分。
文科少女寫程式 發表在 痞客邦 留言(0) 人氣(14)
今年很幸運地拿到了一張免費的Modern Web Conference門票 ,所以就請了個假去參加了,以往只參加過假日舉辦的技術研討會,這次是第一次參加在平日舉辦的研討會。也因為以前參加過的經驗,知道不太聰明的自己一定不會馬上就融會貫通,或是馬上學會什麼新東西,所以主要是抱著去聽聽有什麼新知的心態去參加。雖然是以這樣的心態去參加,這次還是想要稍微記錄一下參與的過程中聽到了什麼。主要會分為三個部分,分別是
「聽到什麼關鍵字?」、「看到了什麼自己有接觸但還有獲得新知的技術知識?」,以及「在工作坊學到了什麼?」。
文科少女寫程式 發表在 痞客邦 留言(0) 人氣(24)
別以為只要傻傻地一直做就會得到高薪或爬到管理職,想要讓自己的職涯發展得更順利,及早找到自己的定位和方向,朝著目標前進,才能到達自己所想的目的地。前兩次的月會主題都跟自我成長、學習比較有關係,這次的月會主題則比較不一樣,是跟職涯發展比較有關係的內容,這也是大多數的人會比較迷惘的部分。剛好這週一公司例行的全公司會議上,總經理也有稍微提到「要當躺平族?還是持續努力前進?」,雖然跟月會這個比較明確的主題比,議題範圍又再大一些,不過我覺得每個人還是都很值得好好思考這部分。(不過我想已經躺平的人應該也不會去思考這麼多XD)本次月會主題職涯的進階,該成為 Individual contributor 還是 eng manager?本次月會流程這次月會的流程大致上如下:
船長分享 > 中場Q&A > 航海士分享 > workshop > 船長結語船長分享 - 重點摘要晉升的形式說到晉升這件事,或者更攏統一點說「往上爬、往上成長」這件事,最常見的不外乎就是成為管理職、轉職、去海外工作。
對於我來說,其實從以前就一直沒有很想成為主管職,所以都只有在自己的當下的職務中,透過各種任務突破自己,讓自己獲得成就感,直到轉職前的最後一份工作發現自己沒有辦法再向上突破更多了,才選擇轉換到工程師的跑道。晉升的迷思這個部分我覺得很有趣,因為真的很多都是大多數人對於「晉升」這兩個字的刻板印象。
- 時候到了就會升職?
「戲棚下站久了就是我的了」這句話大家應該都有聽過,但是如果有一天真的是站久了就是你的了,是不是該去思考這樣自然而然發生的結果,自己是否能有能力承擔及勝任。
- 管理者的錢比較多?
的確在大多數的情況下,管理者的錢會比較多,但是還是必須去思考「所以我是為了錢才想要成為管理職?還是我是覺得自己有能力改變現況才想成為管理職?」成為管理職也許薪水會變多,但是要負擔的責任也更大,自己是真的有能力去承擔嗎?如果只是為了想要有更高的薪水,是不是可以透過其他途徑達到?而不只是一昧地為了錢而成為主管職。
- 到老還是工程師會被淘汰?
很多人可能會擔心年紀大了可能就學不動新東西,比不過年輕人了。但是其實只要自己不是把不同的每一天活得像同一天一樣,即使是年紀大的工程師,還是有他的價值,因為他過往累積的經驗是年輕一輩的人沒有的。其實不只工程師這個工作,其他種類的工作也是一樣的,因為時間累積的經驗,甚至是產業知識,並不是教課書上所可以學到的東西。但是回過頭來思考,如何讓自己能因為年紀而成為職場上更有價值的人才,也是需要自己努力的課題。- 能不能只寫程式就好?
這應該也是大多數工程師的疑問吧!當然可以只寫程式就好,但是如果要只寫程式就好,那就得想辦法讓自己程式能力達到一定的程度,甚至是發展為專家等級,才不會被市場淘汰。工程師職涯的兩個方向及方向別的差異大致上可以區分為兩個方向:
- individual contributor(IC)
專注在技術上,提供技術方面的領導和指導。- engineering manager(EM)
不以技術為重點,以團隊資源及人與人之間的互動關係為主,負責帶領和管理一個或多個工程團隊。
我自己覺得這兩個方向都是在公司中,比資深還資深的身份,或者是說像普遍大眾理解的管理職身份,不過關注的點有點不同,IC會把心力放在技術為主,EM則偏向把心力放在人的關係上.也因為如此,他們實際上要做的事情也一些差異。IC需要做的事情主要是技術的領導,以及系統、架構面的規劃,以及內部新手的指導,也需要確保公司專案的技術選擇能與公司的目標一致。另外,還需要對新技術保持一定的敏感度,要常常接收一些技術相關新知,也可能會有機會代表公司去外面參與一些研討會的分享。文科少女寫程式 發表在 痞客邦 留言(0) 人氣(40)
沒錯!擔任前端工程師兩年後,我又再次踏上挑戰新機會的道路。本來的公司很棒,但考慮到現階段公司需要的人與我對於未來發展的目標有所不同,最後還是決定離開本來的公司,還有天使主管和同事們。
這次一樣有經歷了一段時間,才找到自己覺得這個階段比較適合自己的新機會和環境,覺得也許這樣的經歷可以幫助到一些人,所以一樣也寫了一篇面試紀錄:)
文科少女寫程式 發表在 痞客邦 留言(0) 人氣(219)
做一份工作,別只是埋頭苦幹把它做完,而是思考該如何把它做對,這樣才有能力成就出自己在市場上最吸睛的亮點和價值。又到了令人期待的月會時間了,這次的月會內容原本覺得自己因為還太菜,可能無法有太大的收穫,卻意外得還是收穫滿滿!
而且這次的主題也讓我延伸聯想到最近公司內部主管跟大家開會時提到的兩個關於將公司產品成功推銷出去這部分令我印象深刻的內容:
- 想把自家產品順利賣出,最重要的就是要有「有別於市場競品的亮點」。
- 我們家的產品價格的確在市場上偏高,但是並不是我們的產品貴,而是你買不起,因為我們有努力讓產品有值這個價位的品質。
雖然上面這兩段話,主要是在講產品銷售,但仔細想想我們在市場上求職,不也是一種銷售嗎?只是是在推銷自己。
那要怎麼做才能讓自己有能力以高價將自己售出呢?這次月會主題關鍵字「掌握商業價值」,我想就是一個很重要,但是卻常常被忽略的部分!本次月會主題工程師能如何學習掌握商業價值,取得更好的職位與薪酬?本次月會流程文科少女寫程式 發表在 痞客邦 留言(0) 人氣(15)
mutable和immutable是一個很重要的觀念,而且mutable和immutable其實和JavaScript的基本型別和物件型別的傳值(by value)、傳址(by reference)特型有很大的關聯,我們這就從傳值和傳址的部分開始看吧!基本型別的傳值特性所謂傳值(by value)?「傳值by value」白話一點來說的話,就的是「以值為基準,而不是以址為基準,每個值都是獨立的,就算值看起來是相等的,但所佔的記憶體位置都不同」。
可能單單這樣的一句話,還是很難理解,接下來透過一些實際的情境來理解吧!實際的程式碼情境
這一段程式碼,做了幾個動作,以行為單位分別是「宣告變數」、「用既有變數來宣告新的變數(將既有變數值賦予新變數)」、「對變數重新賦值」。
宣告變數
var a = 1;
在宣告變數時,一開始會先將變數指向undefined,再進行賦值的動作。JavaScript會留一個記憶體空間給這個值,在這個情境中,以圖呈現的話,會是以下這個樣子。
(1) 一開始會先指向undefined(如果是用let或const宣告的話,這一步的狀況會有點不同,這部分可以參考之前在學習hoisting特性的筆記文)。

文科少女寫程式 發表在 痞客邦 留言(0) 人氣(18)
你是否也只把關注點放在如何解決問題(How),而沒有再多去想想為什麼要這樣解決(why)?
你是否只關心結果,而忽略過程?這次很榮幸有機會可以成為曼陀號領航計畫的成員,其實之前早就想要參加,但是在知道曼陀號的時候,剛好自己也還沒有什麼實務經驗,覺得報名可能比較沒有幫助,所以就沒有報名。但是現在的自己已經有一點點經驗,覺得是時候報名看看,就付出行動了,也很幸運地有入選,而且這次的船長又是一位自己一直都覺得很優秀的大大,也就是關鍵評論網集團整合長Richard,真的覺得很開心!
而且第一次月會其實就有好多好多收穫,怕自己忘記自己到底從中吸收到什麼,就來簡單做個心得紀錄吧!本次月會主題如何提升專業技能實力?要追求廣度還是深度?本次月會流程文科少女寫程式 發表在 痞客邦 留言(0) 人氣(16)
這次碰到的問題其實是一個在任何開發情況下都有可能撞到的問題,仔細想想好像以前也曾撞到過一次,但是自己當時卻沒有那麼深刻的印象,為了避免自己再次撞到,所以想說把它給記錄下來。排除異常錯誤問題實作情境這次是在替換元件的時候,碰到這個問題。我們自己有把包一個元件在專案內做使用,主要是在做emoji-picker的元件替換(這個元件是使用emoji-mart結合material-ui的元件組合成我們專案要的樣子和操作方式),用舊版的元件不會有問題,但是換成新版的元件卻會跳出錯誤(如下圖),且點擊後無法顯示應該要顯示的emoji popper。除錯過程1. 確認是否是新版元件應該帶入的props沒帶或帶錯。
2. 我這裡還有嘗試先把emoji-picker內的emoji的部分拿掉,替換成一般的文字,發現不會跳錯,popper也可以正常顯示,確認到更emoji-mart有關。
3. 近一步確認emoji-mart使用上有沒有錯誤,還是沒排查確切的問題點。最終問題排除方式最後發現原來是版本撞到,舊元件使用的emoji-mart版本是3.X.X,新元件使用的是5.X.X,使用的專案內已經有安裝的emoji-mart版本則為3.X.X,所以在使用舊元件的時候不會有問題,替換成新元件時則出現跳錯和無法開啟的狀況。最後把使用專案內的emoji-mart移除掉,單純使用打包好元件內的emoji-mart,才排除了這個問題。
雖然這次是在替換元件的時候發生,但感覺在其他不同但有點類似的情境中,可能也會撞到這個問題,所以當該檢查的方向都檢查過確認無誤時,也許可以往版本是否有衝突的方向下去排查。
貼心小提醒!!因為是亂亂寫筆記,真的就是純紀錄之前實作時,如何解決曾經卡住過的問題,所以主要都是解決問題的方式為主,不會有太多詳細說明。 文科少女寫程式 發表在 痞客邦 留言(0) 人氣(45)