顯示具有 日記 標籤的文章。 顯示所有文章
顯示具有 日記 標籤的文章。 顯示所有文章

2025年12月8日 星期一

中文

回頭看自己以前寫的 Blogger,真的很好:版面乾淨、外觀一致、標籤整理得井井有條。
當時寫 blog,只是想把它當成「學習的證據」。但當熱情淡了,它反而變成一種負擔,像做不完的家事一樣。其實「學習」不應該被塞進那麼功利的目的裡。寫下來的文字,應該是記錄自己真正體驗到的人生。

English

When I look back at the Blogger site I made before, it was actually very good — clean layout, consistent style, and well-organized tags.
I used to treat blogging as “proof of learning.” But when the passion faded, it slowly became a burden, like a chore that never ends.
Learning shouldn’t be pushed into such a utilitarian purpose. What I write should simply record the life we truly experience.

2021年1月5日 星期二

面試心得 - Houzz

Job

Company :  Houzz
Job :  Back-End Software Engineer
Source :  Recruiter on LinkedIn
Result :  止步二面

Summary

1. 英文程度不佳 :  純英文溝通 Coding 時的想法及實作方法等相關經驗幾乎為零。
2. 資歷不夠 :  有接受履歷但分數肯定不高。
3. Coding :  沒拿出應有的水準。
4. Q&A 發揮趨近於零 :  除了一面,二面QA都跟啞巴一樣

面試流程及其內容

    共三次,三個面試官 ( 一面 1 個,二面 2 個 )。每次的面試官流程都一樣,大略分三部份,簡短自我介紹->Coding->Q&A。時間大概都 1 小時 10 分左右,可能我 Coding 解太久,因為表定都是 1 小時。
  • 一面 ( Coding Q1 )
    自我介紹: 
    簡短的自我介紹
    
    Coding:
    Coding Question: 3 sum (LeetCode -> Problem -> 0015)
    因為當下解不出 O(n^2),所以沒有第二題。
  • 二面 - 1 ( Coding Q2 )
    自我介紹:
    問了為什麼想應徵這份工作。
    
    Coding 第一題: 
    Design a data schema for google questionnaire
    一份 questionnaire 有很多 question
    每一 question 會秀相關 option 供填問卷者回答
    
    Coding 第二題:
    給一個只包含數字的 string,分割成質數回傳。
    example:
    Input: 11373
    Output:
    ["11", "37", "3"]
    ["113" "7", "3"]
    ["113" "73"]
    ...
  • 二面 - 2
    自我介紹:
    問了近期 Coding challenge or breakthrough。
    因為回答 Regular expression,所以後面問了如何實作。
    
    Coding 第一題: 
    Given an array of letters and an array of dictionary.
    Return WORD if there is a pumutation of all letters can be found in given dictionary 
    The time of any operation on dictionary can be ignored.
    Example: 
    Input: ["E", "H", "L", "O", "L"]
    Dictionary: ["Apple", "Banana", "Hello", "Tree", "Zebra"]
    Output:
    Hello
    (整題完全展現出我英文有多爛,一直跟 Interviewer 雞同鴨講)


2020年5月12日 星期二

心情日記 2019/05/12

好久沒寫日記,整理 tag 才發現我有寫這種東西。

根據勒布朗克法則:待會兒等於永不。即使現在是上班時間我也照寫 ( 其實只是讀 spec 讀到煩躁,想呼吸新鮮空氣 )。



寫 blog 現在對我的生活來說是提神良品,非常適合我這種六日只想待在家的廢才。

即使一開始有一篇沒一篇地寫,如此懶散的頻率,文章數還是來到了三位數。

看著已發表的文章,深深理解 1 > 0 的理論,不是指冠軍戒指,而是 " 累積 "。



我是一個沒啥雄心壯志的人,也沒有一個夢想讓我想灌注一身的努力去實現,除了財富自由。

但我想我開始能接受這樣的自己,沒有夢想的工程師,很廢但依然能享受人生。

2020年1月6日 星期一

讀書心得 - Clean Code - Chapter 5

Chapter 5 - 編排

報紙的啟發


    希望原始檔要跟報紙一樣,從上而下閱讀。上方會有頭條的敘述,讓你理解這段報導在談論些什麼,讓你可以決定如何閱讀。第一段通常會是整篇報導的概要,細節資訊會被隱藏。然後你在持續往下閱讀才會發現所有細節。

    然後報紙本身也不會太長,所以原始檔盡量維持最多 200 ~ 500 行。
    垂直空白區隔
    每一個空白行會對眼睛下一個提示,讓其注意空白行後的第一行。通常用在一個概念接續另新的概念。
    垂直密度
    相依的函式盡量緊靠。
    垂直順序
    跟報紙一樣,應該是高層模組到低層模組。
    水平的空白間隔
    水平空白去強調運算子,下面是用空白強調加減法,以及乘法有較高的優先權所以沒有空白。
     public class Quadratic {
          public static double root1(double a, double b, double c) {
               double determinant = determinant(a, b , c);
               return (-b + Math.sqrt(determinant)) / (2*a);
          }
  
          public static double root2(double a, double b, double c) {
               double determinant = determinant(a, b , c);
               return (-b - Math.sqrt(determinant)) / (2*a);
          }
  
          private static double determinant(double a, double b, double c) {
               return b*b - 4*a*c;
          }
     }

上一篇:
讀書心得 - Clean Code - Chapter 4

2019年12月4日 星期三

讀書心得 - Clean Code - Chapter 4

Chapter 4 - 註解

不要替糟糕的程式碼寫註解 - 重寫它


    註解為必要之惡,用來彌補我們用程式碼表達意圖失敗的狀況。註解在絕大多數的情況無法跟著程式演進,導致過時且偏離當初的程式碼解釋。最後的真相只會存於程式碼。

有益的註解

    法律型的註解
    // Copyright 2011-2019 The Bootstrap Authors
    // Copyright 2011-2019 Twitter, Inc.
    資訊型註解
    資訊型註解提供一些基本資訊,但還是很容易被好的程式碼命名給取代
     // Returns an instance of the Responder being tested.
     protected abstract Responder responderInstance();
    對意圖的解釋
     // This is our best attempt to get a race condition
     // by creating large number of threads.
    對後果的告誡
     // Don't run unless you
     // have some time to kill

     // SimpleDateFormat is not thread safe,
     // so we need to create each instance independently

上一篇:
讀書心得 - Clean Code - Chapter 3 (2)
下一篇:
讀書心得 - Clean Code - Chapter 5

2019年12月3日 星期二

讀書心得 - Clean Code - Chapter 3 (2)

Chapter 3 - 函式 - 2

使用具描述能力的名稱


    不要害怕名字過長,若取了有性質的函式名稱就較能符合「當每個你看到的函式,執行結果都與你想的差不多代表為 Clean Code」

函式的參數


    函式的參數越少越好,因為參數的存在也會影響著你對函式的預期,所以最理想的情況為 0 參數。
    一個參數
  1. 與這個參數有關的問題  - boolean fileExits("Myfile")
  2. 對這個參數做某種操作,然後回傳 - InputStream fileOpen("Myfile")
  3. 事件,利用參數去修改系統狀態 - passwordAttemptFailedNtimes(int attempts)
    第三種命名要特別小心,要明確的表示出此函式為事件。若參數為 flag 那你要知道此為很爛的作法,flag 就代表 True 要做一件事,False 要做一件事,違反了只做一件事的原則。
    兩 ~ 三個參數
    兩個參數影響函式的預期就更多,所以可以轉成一個參數就好好利用。
    物件型態的參數、參數串列
    利用物件型態或陣列去減少參數個數是不錯的方法
    Circle makeCircle(double x, double y, double radius);
    Circle makeCircle(point center, double radius);

指令和查詢的分離


    如果函式除了做某件事情後,還回傳了某個問題的答案,就等於做兩件事
    public boolean set(String attribute, String value);
    if(set("username", "unclebob"))...
    所以讀者看到此段 if 會容易產生誤解且疑惑,所以要將查詢與指令分開
    if(attributeExists("username")){
        setAttribute("username", "unclebob");
        ...
    }
    利用例外處理取代回傳錯誤碼
    錯誤處理本身就是一件事

Don't Repeat Yourself


   n 個重複的程式碼,代表修改要花 n 倍時間。

上一篇:
讀書心得 - Clean Code - Chapter 3 (1)
下一篇:
讀書心得 - Clean Code - Chapter 4

2019年12月2日 星期一

讀書心得 - Clean Code - Chapter 3 (1)

Chapter 3 - 函式 - 1

首要準則 - 簡短!!


    即使現今編輯器能讓你在一行塞入 150 個英文字母,現今螢幕能讓你顯示 100 行,你也不該塞好塞滿。越短越好,3 ~ 4 行,每個函式都透漏著本身的意圖且帶領著你至下個函式。
    區塊 ( Blocks ) 和縮排 ( Indenting )
    If、else、while 都應該只有 1 行,而那行通常會是個命名不錯的函式。

只做一件事


    只做一件事很難下定義,以下提出兩種
  1. 透過觀察函式中進而提煉出一個新的函式來
  2. 函式裡有明顯的段落 ( 宣告區、初始區、過濾區... )

只有一層抽象概念


    為了確保只做一件事,就必須確保函式裡都是同一層次的概念。
  • getHtml()      - 高層次
  • parsePath()    - 中層次
  • .append("\n")  - 低層次
    降階準則
    閱讀程式碼通常都是由上而下,所以層次也該從上到下

Switch 敘述


    switch 要簡短很困難且很容易跟上述規則牴觸,作者這裡是利用 Polymorphism ( 多型 ) 將 switch 壓到低的層次且不會被重複利用。

2019年11月11日 星期一

讀書心得 - Clean Code - Chapter 2

Chapter 2 - 有意義的命名

使之名符其實

     選一個好的名稱很花時間,但省下的時間更多。
    // 沒命名
    public List<int[]> getThem(){
        List<int[]> list1 = new ArrayList<int[]>();
        for (int[] x : theList)
            if (x[0] == 4)
                list1.add(x);
        return list1;
    }
    // 有命名
    public List<int[]> getFlaggedCells(){
        List<int[]> flaggedCells = new ArrayList<int[]>();
        for (int[] cell : gameBoard)
            if (cell[STATUS_VALUE] == FLAGGED)
                flaggedCells.add(cell);
        return flaggedCells;
    }
     有命名的參數也比較好找,STATUS_VALUE 和 FLAGGED。

類別的命名

     使用名詞或名詞片語
  • Account
  • AddressParser
  • Customer
  • WikiPage
     避免以下之命名
  • Manager
  • Data
  • Info

方法的命名

     使用動詞或動詞片語
  • deletePage()
  • save()
  • 取出器 - getXX()
  • 修改器 - setXX()
  • 判定器 - isXX()

2019年11月6日 星期三

讀書心得 - Clean Code - Chapter 1

Chapter 1 - 無暇程式碼

讓開發速度變快唯一方法


     寫爛程式碼去趕截止日期並不會加快開發,只會越來越慢。唯一方法就是隨時隨地使程式碼保持潔淨。想說寫爛程式碼先應急後來再回頭改的,勒布朗克法則 ( LeBlanc's law ) : 待會兒等於永不。( 深感認同... )

大師們的 Clean Code

  • 優雅又有效率,邏輯直接了當,程式相依性低                         -     Bjarne Stroustrup
  • 像一篇優美的散文,不會掩蓋設計者的意圖                             -     Grady Booch
  • 包含單元測試與驗收程式,使用有意義的名稱                         -     Dave Thomas
  • 一定是由某位重視且照料的人所撰寫                                         -     Micheal Feathers
  • 當程式碼讓程式語言看起來就像是為了解決問題而存在的     -     Ward Cunningham

我們是作者


     「 有作者,就有讀者 」,要與讀者有良好的溝通是作者的責任。

童子軍規則


     離開營地前,讓營地比使用前更乾淨。

下一篇:
讀書心得 - Clean Code - Chapter 2

2019年10月31日 星期四

讀書心得 - 大腦衝浪 - 第二十八講

第二十八講

接受自己的優勢性格


欣賞美麗比較像我的嚮往,暗戀的對象也有欣賞美麗能力,被欣賞是很幸福的。欣賞美麗者的世界似乎比原本世界擁有的色彩還要豐富。欣賞美麗者擁有像小孩一樣的清澈眼神,Precious ,這或許也是讓我喜歡上的理由,想要被欣賞想要人生色彩豐富。

寬恕比較像我會設身處地去思考,只要對方有羞恥心,通常會比責罵來得好。比較像我擁有的技巧,但我的耐心不足,接觸久的反而不怎麼原諒。

判斷力,其實我一直知道做什麼是好的。只要跟著我的判斷走通常結局都是好的。缺的是執行力與意志力。所以我應該多做些尤里西斯的約定。耍廢就找朋友汲取動力,顆顆。

Sounds like plan.

2019年10月30日 星期三

讀書心得 - 大腦衝浪 - 第二十七講

第二十七講

發覺自己的優勢

做了書中的心理測驗,自以為的性格還在前段,但第一項跟第二項優勢特質還真的沒想到,因為壓根不覺得是優勢。

第一個優勢 - 欣賞美麗與卓越

看不出來有啥優勢,連利用都不行。只能讓自己開心,取樂自己我真的一把罩。

第二個優勢 - 寬恕與慈悲

這更慘,我覺得我最常寬恕的是自己,導致現在這種廢材樣。



常認為自己需要壓力逼迫自己努力上進,看這兩優勢我看是沒緣了。大概就是現實肥宅,精神高富帥。一輩子不會自殺,不會難過,努力過及格邊緣的平凡人生。真的不適合做奔三的我的夢。

我認為這兩優勢是在利用一點資源達到大大的滿足,但還是消耗資源。獲得資源還是我最煩惱的。

2019年10月23日 星期三

讀書心得 - 大腦衝浪 - 第二十三講

第二十三講

障礙預報

我想睡眠是最大的障礙預報,曾設過鬧鐘規定時間去睡覺但一點效都沒,我的潛意識裡認為晚上10點還早,但其實過了 10 才在做一天收尾已經算晚了,所以設定晚上 9:30。

但懶惰的狀況總是發生,我想要折衷,出發是必須即使只有 1 %的 CP 值,因為 1 > 0,1 還可以累加。

2019年10月22日 星期二

讀書心得 - 大腦衝浪 - 第二十一講

第二十一講

正向幻想

我想應該是像叔叔一樣的生活吧,靠著投資為主本業為輔的生活,我想當個打打程式且不被薪水跟進度摧殘的程式設計師,百分之百的享受寫程式帶來的成就感而不因是主要收入來源而討厭。

想著清晨  6:30 起床,吃著早餐看本書到 7:30,運動到 9:00 並回家洗澡,10:00上班 ~ 17:00 下班吃飯,參加著某個社團活動到 21:00 回家,23:00 就寢。

六日在家的話,同樣行程到 10:00 便睡到中午吃中餐,下午出門找朋友,不在家的話就用心地玩。

2019年10月18日 星期五

讀書心得 - 大腦衝浪 - 第十六講

 第十六講

對的時間,做對的事

說實在這很難,我通常晚上狀態最好,所以沉住氣不要回家通常都會很充實。但到了家發現耍廢的時間不夠,影響到睡眠 => 隔天 => 早上 => 晚上又好了...

我想要先拓展對的時間,所以還是制定個早睡早起的習慣

2019年10月17日 星期四

讀書心得 - 大腦衝浪 - 第十三講

第十三講

尤利西斯合約

尤利西斯在打贏特洛伊戰爭後,在返鄉的路上發現自己會經過 Siren 海妖的地盤,傳說海妖幽美的歌聲會迷惑水手,並讓其自行觸礁沈船。尤利西斯很想聽看看那歌聲,所以命令水手把他綁在甲板的桅杆上,並讓自己的手下用蠟堵住耳朵,拼命划不要理他的叫喊。

我想簽下未來的強制合約似乎有點用,目前最想改的是起床划手機的惡習。

2019年10月15日 星期二

讀書心得 - 大腦衝浪 - 第十一講

第十一講

騰出生活的空間

我想我有一狗票東西得丟了,舊的不去新的不來。
留東西前先問自己三遍,愛它嗎 ? 能幹嘛 ? 確定嗎 ?

目標 :

一輩不會再打開的書

沒開過的海報

沒穿過的鞋子

掛到發霉的衣服

擺到發霉的褲子

抽屜裡的廢物

當兵的雜物

沒用的箱子

沒用的袋子

2019年10月8日 星期二

讀書心得 - 大腦衝浪 - 第十講

第十講

仔細聆聽身邊的故事,思考背後動機

書上寫近一個禮拜的故事,但我是臭宅男兼大嘴巴,所以都是我在講話。但我都是抱怨而已。所以我想到 Daryl Morey。

火箭總管 Morey 在 2019/10/5 在 Twitter 上轉發了 Fight For Freedom. Stand with Hong Kong.
老實說那就是一張圖,而且很快就刪推,加上NBA火箭隊的中國球迷最多,很難想像 Morey 是在深思熟慮後發推,我猜想不經過思考就發的推機率很高。

也許美國人對自由發聲是家常便飯,但顯然他們從沒真正認識過中國人。這顯然跟2016年初那位台灣女孩的事情有異曲同工之妙。對於本人理所當然的事卻觸犯了中國共產黨的底線。動機單純。

好玩的事,中國共產黨應該最不想川普連任才對,但對這件事沒有制止,反而還讓央視做出帶頭抵制的動作,簡直就是川普的助選員。反觀當初台灣女孩央視還出來澄清。動機不明。

2019年10月7日 星期一

讀書心得 - 大腦衝浪 - 第八講

第八講

用自己最光榮的事情鼓勵別人
用自己最挫敗的事情鼓勵別人

也許我總用最光榮的事情來檢視,而忽略用最挫敗的。回首想想,我的過往好像只有100分跟0分,但我不是天才,沒有所有事情的100分規劃,所以才一直拿0分。從那些不該拿的0分,我理解了,即使是20分的規劃也勝過0分。出了社會發現,評分標準更複雜了,一百分似乎更不存在。但我可以先做20分,因為20分比0分好太多太多。

2019年10月4日 星期五

讀書心得 - 大腦衝浪 - 第七講

第七講

人生的故事

我是這麼認為的,我的人生無聊又充滿後悔,要我選最光榮的時刻還真的很難。

我的人生高峰大概就是 2017 元旦吧。凌晨三點醒來的我沒絲毫倦意,把眼睛睜得大大看著同袍弟兄,準備迎接 2017 第一個總統府升旗典禮。雖然如臨大敵但絲毫不緊張,因為我把一切交給肌肉,而大腦則慢慢地享受迎來榮耀的時間到數。結束後我只記得最後的"向右轉",因為我知道那是屬於完美結束的標誌動作。

2019年10月3日 星期四

讀書心得 - 大腦衝浪 - 第四講

第四講

主要講的是 ABCDE

A : 指事件

B : 指內心的想法 ( 該 或 不該 )

C : 照著內心想法的後果

ABC 是我常見的思考模型,一想到後果 (C) 反而讓我止步不前,直到下個 (A) 發生,又卡死在 (C),越來越討厭自己。例如我朝思暮想的換工作,(A) 大概是看到自己對現今工作厭惡的地方,(B) 則是老套的精進自己但沒方向,(C) 則是沒救時間慢慢過去。

D : 把 (B) 的"該"改成"不該" ( "不該"則改"該" )

E : 想個理由去支持 (D)

依我的情況就是不該為了厭惡而去精進自己,好的工作可遇不可求,把時時刻刻精進自己的重擔壓在身上只會更想逃避,走入 (C)。也許我該先嘗試著喜愛,慢慢累積,慢慢累積。

Popular Posts