YOJUHSU's Blog

01.22 全棧營學習紀錄18: 第三次Job Listing

目的:想要fork檔案下來後,在本地資料夾裡面可以直接改名施作,而不需要大包小的資料夾。想要下面第一個圖,而不是第二個。


1.到git hub fork 專案,在這裡是去右上角的綠色'Fork'抄這個-Job Listing
2.在本地終端機視窗下載

git clone git@github.com:XXXXX/job-listing.git
(XXXXX 是你的 github 用户名)
cd job-listing
git checkout -b version-1
cp config/database.yml.example config/database.yml
bundle check
bundle install
rails s

3.在本地按右鍵


4.在自己的git create 新的倉庫

5.把原來的連結去掉,換成這個新的連結

git remote -v
git remote rm origin
git remote -v
git remote add origin git@github.com:你的github用户名/job-listing-7
git push -u origin master

以上感謝小傑同學的筆記

01.21 全棧營學習紀錄17 - 第二次Job Listing

我想要在本地端開始一個新的檔案名稱,因為我就像這個網頁講的,是有強迫症的人。

xxx@xxxde-MBP:~% git clone git@hithub.com:xxx/job-listing.git
fatal: destination path 'job-listing' already exists and is not an empty directory.
xxx@xxxde-MBP:~% git clone git@hithub.com:xxx/job-listing-4.git
Cloning into 'job-listing-4'...
jissh: connect to host hithub.com port 22: Operation timed out
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

但都失敗。

  1. 把本機的job-listing 改成 job-listing-4
  2. git remote set-url origin git@github.com:xxx/job-listing-4.git

北冥乘海生:數據如何變現?

說明:這是『知乎』付費直播的筆記。因為直播實在很長,又不能快轉跟查詢(抱怨很多),所以我做了以下的筆記方便自己未來查詢。從分隔線以下開始,都是用第一人稱的方法說明,但是內容的原創者仍是北冥乘海生(也就是劉鵬,作者介紹跟他的書『計算廣告』由此去)。


目前的數據變現方法就是網路廣告,經過過去十五年的演進,網路廣告有以下五種形式。
前四種都已發展得很成熟了,但最後一種還是比較先進的應用,沒有很好的理論或夠多的範例。換句話說機會在『場景廣告』、『原生廣告』、『跨屏廣告』
未來其他數據變現的領域,劉鵬認為是『保險』跟『醫療』產業。

回到網路廣告的五種形式

一:分眾廣告(人口屬性)

最早期的網路廣告跟電視廣告投放其實沒有兩樣,廣告主購買他們規劃的受眾。例如某地某性別某年齡層。在流量方來說,以上的某、某、某都是一個標籤。這種廣告賣法有兩個問題,
首先當很多人都想買同一組受眾,需要有比價機制,這就需要計算引擎。其次有人說用戶標籤越細越好(不然會有很多浪費:某些受眾沒人想買,某些價格太高)
要解決以上兩種問題,都要超級大量的流量,才能養得起比價引擎,並且切到最小的標籤仍有足夠的數量可以販售。
但即使是早期的大型入口網站雅虎,比價引擎也只能服務幾千個廣告客戶,用戶標籤也只做到3000多個。
這些標籤只有400多個有人買過,常用的只有100多個。細的標籤的流量不好估計,所以根本不好賣。
藉著標籤的分眾化廣告效率很難提升。

二:關鍵字廣告(行為數據)

Google這麼大的事業其實是靠賣關鍵字廣告起家的,透過客戶搜索的關鍵字,推放他們有興趣的廣告,對流量方來說大幅降低買廣告的門檻,讓中小企業也都能買廣告。
不過每個關鍵字的流量都很小,無法再用計劃經濟也就是保證流量的方法銷售。如果只賣『大』流量的關鍵字,像是『遊戲、旅遊』等等行嗎?這樣也不行,因為70%的關鍵字都是小量的長尾關鍵字,不賣的話會喪失非常多的機會。

三:重定向廣告(第一方數據)

想像以下三個場景
1.我使用了某個旅遊網站,假設是H旅遊網好了。接下來去其他新聞網時,會看到這個H旅遊網的廣告
2.我在H旅遊網查詢了櫻花季想去東京的房間。接下來去看部落格的時候,會看到推薦櫻花祭去東京的房間
3.我點進H旅遊網的A飯店,放到購物藍裡面但沒有結帳。接下來在臉書亂晃的時候,會看到櫻花季某飯店只剩下一個房間
以上三個場景,並不是H網站把我的資料賣給新聞網、部落格、或臉書。而是H網站安裝了一個接口,讓流量賣主(例如Google或Facebook)可以根據客戶在H網站內的行為,把客戶在其他網站瀏覽的眼球賣給H網站。
這三種不同的重定向廣告,分別是:針對網站、針對站內搜尋、以及針對個人在站內的購買路徑。
小型電商網站如果要強化曾經造訪過自己網站的客戶黏性,使用重定向廣告做『拉新』會有很好的效果。

四:Look like廣告(種子客戶的行為)

(自己舉例:最近我在學Ruby on Rails,常常瀏覽教學網站,某日我的臉書推薦就出現Rails教學網站)
仍然是小型電商的例子,如果想要擴大用戶數量。可以選定一些既有用戶,讓流量方追蹤他們的行為,然後找出有類似行為的客人投放廣告。這種『找出跟我的客人有類似行為的客人』就叫做look like模型。
(可以當作是Amazon裡面『買了這本書的人也買過哪本書』的跨網站變化版本。)

五:場景廣告

回到上面的例子,雖然我正想去東京看櫻花,但若是在上班時間跳出櫻花季住房只剩一間的廣告,我其實沒那個心情點選。如果能在根據客戶正在做什麼,投放適當的廣告,是不是效果會更好呢?
為了要做到這件事,必須要再多知道兩組事情:客戶的移動狀況與使用地點,客戶的跨螢幕行為(這個用手機滑臉書的人,跟昨晚用電腦查H旅遊網的是同一個人)
這些資訊的供給、定義乃至銷售都還在發展中。目前理論跟案例的發展都還不多。(如果想要走網路廣告的話,應該朝這個方向努力)

我如何從SQL超級新手到勝任者

我如何從SQL超級新手到勝任者

2年前我工作上有個轉變,公司開了新的部門,周遭主管都從麥肯錫之類的顧問公司出來,整個工作方式都換了,彷彿到新公司上班。

我習以為常的工作方式被大大地挑戰,連跟上討論都十分困難,更別提以往算是駕輕就熟的帶領屬下工作了ㄇ。

我從很多人想跟的聰明主管,因為定義問題的方式轉變,變成連開規格都開不好的笨蛋。我常常覺得自己很快會被開除。

有多新呢?以作分析來說

以前主管會事先做好假設,我們負責確認答案,小老闆是我們的主子跟緩衝。
新老闆逼迫我們自己提假設,不可以躲在小老闆後面,我很高興可以有自己的意見,但也很擔心跟小老闆意見不同會被記上一筆。

以前號稱是在做洞察分析,但其實是在解讀既有的報表。
新老闆重視驗證假設,他會挑戰我們的驗證方式,試圖用既有報表回答像是在找死。

以前最困難的工作就是開新的報表需求給工程師,最快要一個月才能等到答案。
新老闆希望今天傍晚討論的假設,晚上拉資料,第二天早上就看得到結果。


簡單的說,大老闆希望部門每個人都會自己撈資料,自己驗證假設。他說『只有超過五十五歲的人可以不用學,哈哈哈哈哈』當然哈哈哈,他說的就是他自己。

不知道為什麼,屬下們幾乎都會了。九個月後,年紀最大的屬下,也開始學了,還學得不錯。只剩下我了。

我也搞不懂我是不想,還是找不到時間,每天十二小時的工時是常態,還總是覺得做得不夠好。

第四季工作review時,小老闆委婉的問我要不要開始試著自己寫SQL,我想再不開始應該真的會被開除吧。不管有沒有時間,我算是答應了。就當做自我挑戰吧,多學會一件事情很好玩的兒。


我先去問部門內的大師,大師同事叫我去看'SQL語法教學'網站。

雖然這是很多人大推的網站,但他其實是office help功能般的存在,是給使用者查詢使用。或者應該說是辭典。不認識字的人看辭典幹嘛呢?

大師推薦的不適合我,我去問谷歌。

谷歌推薦'SQL Course'是個英文教學網站。 我想說中文的辭典不行,英文教學總可以了吧。

結果這仍然是一個從'What is SQL' 'Table basic'等等基本概念教起的網站。我還是不知道要怎麼在工作上使用。

我乾脆要求屬下把他們的Code 給我看,甚至講給我聽,也許我可以看得懂?

當然我沒看懂。甚至他們一開始講解概念,我就生氣跟分心。完全無法學下去。

而我的工時仍然是十二小時,上班沒時間學,下班也沒力氣學。


有一天我最年輕、最會學東西的屬下,告訴我也許可以從‘code cadamy' ,開始嘗試。

我打開那個網站,上面寫著'Learn SQL',所需時間約三小時。

我想說,就當我被騙,如果三小時還是搞不定就算了。

這個網站的畫面分三段:『教材,操作畫面,結果畫面』

學習的體驗是這樣的:

不管丟什麼進去操作畫面,結果畫面都會立即馬上的顯示結果,不能跳課,成功才能往下走。

一開始的幾門課,可以直接剪下貼上,一直按下一步的感覺實在太好了。

如果做錯了,會有不同的顏色報錯,繼續錯下去,會有提示。

再繼續錯,會有更多的提示。

報錯的英文是外星世界,但我們有谷歌。

如果還是錯,他會問你要不要付19元美金月費找助教。現在的我就付了。但當時的我不甘願,去睡一覺醒來繼續做。

三小時的線上課程上完,我只會三個英文的指令(Select from where),任何書籍或課程五分鐘就會解決的知識,幾乎是任何新手都瞧不起得技能水平。

但已經夠了。

我發現自己可以開始拉資料了,開開心心的拉了好多東西出來,我可以開始看用戶年紀消費金額所在地區等等等等。簡直是樂得飛上天。

但這開心很短暫,我很快又遇到障礙了,三小時的訓練不夠使用。而且這次比不會還慘:

以前大家體諒我不會,現在好像有點會了,屬下們就想要用對待高級新手的方式教我,但我還是一整個矇,完全聽不懂啊。有多慘呢?
他們說要這樣那樣Joint table 或者是 case when ,我聽了照做卻無法顯示我要的結果。

我螢幕上的報錯畫面,他們也沒空幫我改。一直叫我讓他們做好了,我回去做主管的工作吧。


我不想這麼快放棄,開始試著把我想解的問題,想解的方式,先用手寫下來。在白紙上畫出我倒底想要怎麼解答我自己提出的假設。

說也奇怪,用鍵盤打Code的時候,感覺十二萬分困難,一但用寫的,就可以開始冷靜的拆解到底有什麼問題,哪些是我現在已經會的,哪些是我聽過可以這樣做,但其實不會的。

我開始從會寫的開始寫,留下一點點不會的小問題,請屬下幫我。他們幫了我幾次後,我覺得可以繼續上進階新手的課程了。

回去上intermediate的過程其實滿挫折:紅字更多了,沒有線上助教,只能邊讀邊猜。就算好不容易學會,教學版跟公司用的版本又不盡相同。

我覺得自己似乎有一點點懂,但好像更蒙了。

總之是,童話故事好像沒有那麼美好的結局。我沒有那麼快從超級新手到高級新手。只好找更多的例子來寫,或者看同事的Code,持續三四個月後,我忽然發現自己沒有那麼菜:

不但可以獨立解題,也可以指導同事,甚至能夠拿到題目就知道難度跟坑各在哪裡。

如果有人分析花費的時間比我慢很多,那他應該是遇到嚴重的障礙需要換方法。

我好像終於變成高級新手了。人生翻過了一頁。

這個過程,大約花費三個月左右。我還是常常覺得自己這裡不會那裡不會,但至少拉資料已經不再是我工作上的難題,甚至我還可以指導別的部門同事如何有效率的學習寫SQL做分析。


後記:我的學習過程算是有『剛需』,無可改變的需求。但我有剛需很長的時間,直到開始使用這個網站,才真正學會。就我看來,而這個網站的優點在於:

學程有預期時間,而且實際需要的時間通常比預期時間短。
不講結構,不講緣起,只提供很簡單的故事跟練習。
練習題做錯了就會有提示,各種提示
有大小進度條,想放棄時我就會去看一下,看看自己還有多久才能完成。
每一課最多十幾個小節,撐一下就會有『我完成一點東西』的成就感

這網站上面也有其他資料分析小學程,例如Python,我的屬下最近自修Python後做預測模型,效果跟穩定度都不輸給昂貴的SAS軟體。我不久後應該會開始自修Python,如果有人有興趣的話,也歡迎一起來學喔。
2年前我工作上有個轉變,公司開了新的部門,周遭主管都從麥肯錫之類的顧問公司出來,整個工作方式都換了,彷彿到新公司上班。

我習以為常的工作方式被大大地挑戰,連跟上討論都十分困難,更別提以往算是駕輕就熟的帶領屬下工作了ㄇ。

我從很多人想跟的聰明主管,因為定義問題的方式轉變,變成連開規格都開不好的笨蛋。我常常覺得自己很快會被開除。

有多新呢?以作分析來說

以前主管會事先做好假設,我們負責確認答案,小老闆是我們的主子跟緩衝。
新老闆逼迫我們自己提假設,不可以躲在小老闆後面,我很高興可以有自己的意見,但也很擔心跟小老闆意見不同會被記上一筆。

以前號稱是在做洞察分析,但其實是在解讀既有的報表。
新老闆重視驗證假設,他會挑戰我們的驗證方式,試圖用既有報表回答像是在找死。

以前最困難的工作就是開新的報表需求給工程師,最快要一個月才能等到答案。
新老闆希望今天傍晚討論的假設,晚上拉資料,第二天早上就看得到結果。


簡單的說,大老闆希望部門每個人都會自己撈資料,自己驗證假設。他說『只有超過五十五歲的人可以不用學,哈哈哈哈哈』當然哈哈哈,他說的就是他自己。

不知道為什麼,屬下們幾乎都會了。九個月後,年紀最大的屬下,也開始學了,還學得不錯。只剩下我了。

我也搞不懂我是不想,還是找不到時間,每天十二小時的工時是常態,還總是覺得做得不夠好。

第四季工作review時,小老闆委婉的問我要不要開始試著自己寫SQL,我想再不開始應該真的會被開除吧。不管有沒有時間,我算是答應了。就當做自我挑戰吧,多學會一件事情很好玩的兒。


我先去問部門內的大師,大師同事叫我去看'SQL語法教學'網站。

雖然這是很多人大推的網站,但他其實是office help功能般的存在,是給使用者查詢使用。或者應該說是辭典。不認識字的人看辭典幹嘛呢?

大師推薦的不適合我,我去問谷歌。

谷歌推薦'SQL Course'是個英文教學網站。 我想說中文的辭典不行,英文教學總可以了吧。

結果這仍然是一個從'What is SQL' 'Table basic'等等基本概念教起的網站。我還是不知道要怎麼在工作上使用。

我乾脆要求屬下把他們的Code 給我看,甚至講給我聽,也許我可以看得懂?

當然我沒看懂。甚至他們一開始講解概念,我就生氣跟分心。完全無法學下去。

而我的工時仍然是十二小時,上班沒時間學,下班也沒力氣學。


有一天我最年輕、最會學東西的屬下,告訴我也許可以從‘code cadamy' ,開始嘗試。

我打開那個網站,上面寫著'Learn SQL',所需時間約三小時。

我想說,就當我被騙,如果三小時還是搞不定就算了。

這個網站的畫面分三段:『教材,操作畫面,結果畫面』

學習的體驗是這樣的:

不管丟什麼進去操作畫面,結果畫面都會立即馬上的顯示結果,不能跳課,成功才能往下走。

一開始的幾門課,可以直接剪下貼上,一直按下一步的感覺實在太好了。

如果做錯了,會有不同的顏色報錯,繼續錯下去,會有提示。

再繼續錯,會有更多的提示。

報錯的英文是外星世界,但我們有谷歌。

如果還是錯,他會問你要不要付19元美金月費找助教。現在的我就付了。但當時的我不甘願,去睡一覺醒來繼續做。

三小時的線上課程上完,我只會三個英文的指令(Select from where),任何書籍或課程五分鐘就會解決的知識,幾乎是任何新手都瞧不起得技能水平。

但已經夠了。

我發現自己可以開始拉資料了,開開心心的拉了好多東西出來,我可以開始看用戶年紀消費金額所在地區等等等等。簡直是樂得飛上天。

但這開心很短暫,我很快又遇到障礙了,三小時的訓練不夠使用。而且這次比不會還慘:

以前大家體諒我不會,現在好像有點會了,屬下們就想要用對待高級新手的方式教我,但我還是一整個矇,完全聽不懂啊。有多慘呢?
他們說要這樣那樣Joint table 或者是 case when ,我聽了照做卻無法顯示我要的結果。

我螢幕上的報錯畫面,他們也沒空幫我改。一直叫我讓他們做好了,我回去做主管的工作吧。


我不想這麼快放棄,開始試著把我想解的問題,想解的方式,先用手寫下來。在白紙上畫出我倒底想要怎麼解答我自己提出的假設。

說也奇怪,用鍵盤打Code的時候,感覺十二萬分困難,一但用寫的,就可以開始冷靜的拆解到底有什麼問題,哪些是我現在已經會的,哪些是我聽過可以這樣做,但其實不會的。

我開始從會寫的開始寫,留下一點點不會的小問題,請屬下幫我。他們幫了我幾次後,我覺得可以繼續上進階新手的課程了。

回去上intermediate的過程其實滿挫折:紅字更多了,沒有線上助教,只能邊讀邊猜。就算好不容易學會,教學版跟公司用的版本又不盡相同。

我覺得自己似乎有一點點懂,但好像更蒙了。

總之是,童話故事好像沒有那麼美好的結局。我沒有那麼快從超級新手到高級新手。只好找更多的例子來寫,或者看同事的Code,持續三四個月後,我忽然發現自己沒有那麼菜:

不但可以獨立解題,也可以指導同事,甚至能夠拿到題目就知道難度跟坑各在哪裡。

如果有人分析花費的時間比我慢很多,那他應該是遇到嚴重的障礙需要換方法。

我好像終於變成高級新手了。人生翻過了一頁。

這個過程,大約花費三個月左右。我還是常常覺得自己這裡不會那裡不會,但至少拉資料已經不再是我工作上的難題,甚至我還可以指導別的部門同事如何有效率的學習寫SQL做分析。

01.09 XDite 全棧營編程進階之路-二

附註:通常我不喜歡寫逐字稿,如果不小心寫了逐字稿會盡可能再重寫一次摘要。可是這篇摘要寫太好了,有興趣看摘要的人可以直接看Maple's blog

Game VS Work

遊戲為什麼比工作好?人們為什麼傾向去遊戲,而不是工作。這是我在『遊戲化實戰』看到的理論。
1. 明確的目標:例如打死怪獸
2. 更好的計分系統:打死怪獸有幾分,技能升級有感
3. 更多的反饋:我知道我的跑位有沒有變好,配裝有沒有厲害,是不是豬隊友
4. 更多自己偏好的工作法:工作需要用老闆指定的方法,但遊戲可以用自己喜歡的方法,讓你感到自由受到尊重。
5. 時常得到指導:系統或公會會發現你卡住了,會指導你突破。你不會感受到挫折。

很多時候你要面對的世界沒有像遊戲一樣好玩,遊戲是設計過的,會讓你保持一直在情緒高漲的狀態。為什麼我會常常保持高漲的狀態?我無時無刻讓整個人保持很像遊戲的狀態。

我做事或學東西,會設定目標,設定計分系統,會盡快發表東西得到回饋,甚至有時候我不在乎人家罵我言論錯,那就表示我有機會去成長,再來是我一直學更好的方式,當我卡住的時候我就去看很多書,獲得更多的指導。

各位如果在學習的時候遇到困難,如果你時常卡住,要如何保持自已的熱情?我們全棧營是有進度的。各位有明確的目標,不要對自己的狀態害怕,只要看這兩個星期的短期明確小目標,接下來可以開始對自己的完成程度,做第一遍跟第二遍的速度是不是有明確的進步,紅評變少。發表ORID讓人家提供意見。另外教是最好的學,是會讓各位保持最好的記憶。


什麼是全棧?

與不同時期的自我協作

什麼是全棧?我會了之後是不是一個人就會所有的活,為何要搞這麼多的社交活動還要跟他人分享。全棧是跟不同時期的自己的協作,我們教各位的方法就是讓各位養成開發者的好習慣,不僅你受益,你同事也會受益。通常我們程序員最討厭的就是你亂寫一通,一個月後自己完全看不懂或者改不動自己寫的東西,之前遇到的BUG現在再遇到,如果有筆記的話就可以直接用。全棧是為了讓你與不同時期的自己協作。

殺掉豬隊友

不是指你的爛同事,而是有時候你會不小心變成爛同事,藉由不斷修煉改進自己,把一個個的爛自己幹掉。以後你自己就是一個高效團隊。
這些是開發者成長的不錯概念,希望對各位會有很好的幫助。


查理同學:還是沒辦法自己從零開始把網站架起來,還是得看解答,除了CRUD之外,有其他要背嗎?
XDite: CRUD一定要背,其他可以逐漸理解。例如HTML的erb, %跟%=的差別,建議各位弄清楚,而且要做成博客。你發現自己會絆倒的點,寫成博客。弄不懂也沒關係,而且現在你要從零開始還太難。根據各位現在的進度至少要等到過完年才有可能。你現在最好的進度也不過是看完User Story,把CRUD寫出來。如果你要把自己點子寫出來,可能是班上前三十名。

范同學:目前為止還是跟著打,不懂就背起來是對的嗎?還是需要主動去理解或者有學習的框架。
XDite: 建議採取比較的方式,比較跟之前有哪些不同,去看部分不同到底是哪裡不同。

Shockxxx: 管理者的權限,最終到底會架到幾層?
XDite: 不用現在理解,我們是用角色的方式架構而非幾層。各位現在千萬不要用心智圖學習代碼,心智圖是利用現有的知識,在框架不動的狀況下學習脈絡,可是編程世界不是這樣的。

姚同學:Java 有高頻小套路嗎?算法怎樣掌握?
XDite: 假設一本書這麼厚,百分之九十以上都是基礎內容,只有十趴是高頻或低頻小套路。從套路開始學,不懂再回去翻就好了。如果整本都是理論就不用看了。只有高級新手才會教你要打基礎,高級或神等級的會教你就直接用。

YoYo同學:很多的Bug會耗費比較多時間,但耗費的時間太多會趕不上進度,求助助教會很快消滅掉,但就不懂。該怎麼求平衡?
XDite: 先求助助教,把答案寫下來,然後衝完進度。等寫完後會來看ORID的時候,回來看助教的提示,要弄懂,弄不懂的話也要知道輸出跟輸入,下次不會再犯這個錯。

詹同學:ORID不懂
XDITE: Objective觀察到的,Interpretive:理解到的。

詹同學:請問怎麼平衡打字速度與正確率的問題?
XDite:我小時候是用一隻手指頭打鍵盤,慢慢慢慢才學會打字。所有大神的代碼都非常漂亮,但都是從一隻手指頭開始的。跟你怎樣打字沒有關係。

I love the world:為什麼建議線下組隊?
XDite:因為大家會互相幫助,而且會看到好多Bug。讓你感受到進步。最重要是你找到人可以讓你大幅進行提取練習,用講話的方式可以讓你記憶深刻。畢竟你如果講給家人聽,他不知道你是正確還是錯誤的,線上組隊的方式會比線上找助教,會比線上快五倍以上。如果實在找不到同城,也可以約視訊。

Megan:我很想離開現在的工作專心學編程,但擔心有幾個月沒收入。請給我當頭棒喝。
XDite:我以前學過一個概念,這也是我如何變成一個果決的人。我以前在一本書學到恐怖箱的概念,綜藝節目中主持人邀請女明星上節目,她看不到裡面是什麼,但觀眾看得到,主持人會邀請他去摸摸裡面是什麼。裡面放的東西是設計過的,例如放麵條,滑溜溜的感覺,他就會害怕尖叫觀眾就會覺得好笑。

這種場景跟我們做重大決定,你終於邁出第一步後,會覺得自己怎麼這麼蠢。這是因為我們對未知的東西感到恐慌。

我知道這件事情後,就問自己最糟狀況是怎樣?假設是幾個月沒收入,如果最多是五個月,那就是五個月的工資。如果不知道多久沒收入,你就去借,借五個月到七個月的工資。這是大概你一年打工可以還得起的錢。

我如果無法決定,就用可能的最大損失再乘以一點二倍,看看金額。如果失敗可不可以在一年內東山再起。你有個出場機制,就會心安。

這就是我來這邊辦全棧營的考慮過程,我當初考慮萬一笑來老師坑我,或我做不起來,我最大的損失是怎樣。我就給自己一個期限、一筆錢,給員工生活費,發現是我有辦法承擔的,就馬上過來了。

當你遇到重大問題沒有辦法往前進的時候,就可以用這個方法。鼓勵大家可以在本週的ORID寫這個東錫。

某某問:微信小程序對程序員會有什麼影響?
XDite:微信小程序大部分是H5,運行在微信裡面,對iOS、Android的程序員有影響。對web程序員有巨大的優勢,因為你不用再學iOS或Android,而搭API最快的就是RAILS。前端需求可能降低,但後端的需求大幅增加。矽谷超缺。

ZONJ同學:前台記不得,怎樣學HTML跟CSS呢?
XDITE:常常用就覺得很簡單,壁紙的原理你會記嗎?先用了再說。他比RUBY RAILS還好學。因為把別人的貼來,就可以看結果了。下週我們有招聘網站比賽,請大家趕快完成第二部分。做完之後就可以開始幫網站上漆。

烏龍明月:我們需要一邊抄教材一邊學習邏輯嗎?
XDITE:背起來就可以了。

JASON: 做壞怎麼辦?
XDITE:萬念俱灰就廢了就隔天再做。

姚同學:除了編程,老師人生還有什麼事情也用ORID嗎?
XDITE: 我每天洗澡都用這個方法思考,之前有本書叫做『師傅』就是在說人不可以重複一直自殺。如果我遇到重複的挫折不會讓他重複三次。我每天晚上會問自己,今天的高點低點,下定決心不讓自己再犯傻逼的錯誤。ORID是人類自然的提取方式。

K同學:速度很慢怎麼辦?
XDITE:人世間有三週定律,堅持三週後,到第二第三週你就知道如何調配自己的時間並且有上癮的感覺。

時間支配以及跟不上課程怎麼辦?
XDite:你沒有把這個當成剛需,是不是把其他東西放在之前或者並列。學全棧營我需要你全部的注意力,不然時間會他媽的不夠用。學習編程是特別需要注意力的方式。

什麼時候看基礎知識合適呢?
XDite:每週四YY會講基礎知識,你可以週一聽雞湯,週四看基礎知識,週六日寫ORID以及分享會。

01.16 XDite直播:MVP、PMF、NPS

這是回應林明璋老師的『如何找到對個客戶進行MVP以及PMF』

做產品不需要做大產品,每個人對產品或議題都會有洞見,但洞見不代表可以賣給每個人。

我做Growth Hack本來是要賣給RD的,但他們覺得銷售是魔道。我的講座有一部分太難,一部分太簡單。後來決定做淺的東西,因為很多人連網站都沒有,做生意做三四年都不知道自己在做什麼。我觀察一下發現很多人要從商業原理開始講。

MVP(Minimum Viable Product):你對商品的insight,洞見,完成品

PMF(Product Market Fit):,你有個Product,你知道哪裡是Market,要讓他們Fit。但通常你想到的market都不是真的那個market。最近我幾個成功的產品都不是打到我要打的地方。

NPS(Net Promotor Score):重要的就是你run NPS。怎麼做就不多講了,所有的公開班老師,你們的NPS都做錯了。請不要把10分放在左邊,1分放在右邊,必須把1分放在左邊,10分放在左邊。前者會很高分,後者會很低分。前者是快樂表。這樣的高分是沒有屁用的。因為你的NPS70或90分,人家也不會覺得是神課。如果一個人寫10分,但不寫為什麼。那不是十分,那是七分或八分。正確的十分會還有一堆溢美之詞。你要用NPS把正確的對象,行業篩選出來。

大家在企業內訓需要把分數做到很高,但是在公開班,你需要了解自己的真實市場在哪裡。用NPS給分,哪些行業的人愛死你了,哪些覺得普普。你要在正確的族群上拉到viral,拉到七十分九十分,表示你的產品無懈可擊。這樣你才會Product Market FIT。這樣再擴大市場的時候,才會順利。

各位講師的NPS如果非常高,但是沒有形成Viral的結果,那你要想想是不是用錯了NPS。

我建議所有有做企業內訓又有做公開班的講師,把表改回來。


另外也推薦各位去上Alex Cheng的談判課,我學到最厲害的一招就是
『一直聽別人講,只要引誘別人一直講就可以聽到我的條件他都自己答應了』

速食遊戲(電影)很棒

關鍵少數(電影),平庸的終結(書):美國早期的程序員都是厲害的數學家去學程序語言。後來電腦跟廣告開始才會男性跑進來。社會上毫無理由的仇恨川普、資本家的時候你要思考這是不是一個系統性的謊言,或者偏見。

社會要把你洗成相信你是笨蛋,但我覺得要相信自己是天才。我相信自己是天才。

過年後來講The end of average。

01.15 全棧營學習紀錄16 -- 魔改大賽

12:15 原本打算放棄了,但剛剛忽然發現比賽截止日期是01/23 又燃起熊熊鬥志。而且,終於可以睡了~

我打算做個『台鐵便當訂購網』,但是還沒學到電子商務,所以先來個陽春版的。

1.這個是User story,打X的部分是確認我還不會做的功能。

2.確認需要增加以下幾個功能:
a. 文章要有相片欄位:使用教材,搭配Atom裡面的find功能,把我要取代掉的欄位(upper-bound, lower-bound, contact-mail)都改成我要的了

b. 貼文章的時候可以上傳相片:
嘗試使用attachemnt 的功能,建立上傳照片。結果失敗(如下),決定到回前一步,這時候才發現沒有建立新的分支,要跳回兩步,失敗。

git add .
git commit -m "xxx"
git checkout 前一個步驟
git branch -D 不要的步驟
git checkout -b 新的步驟

rake db:drop
rake db:create
rake db:migrate

重新註冊帳號
rails c
u = User.first
u.is_admin = true
u.save
exit

c. 上傳後的相片會被顯示
d. 要訂購的時候啟用'mail to'功能
我希望今天可以完成以上功能


因為前面錯誤太恐怖了,我上網找了教材,打算照著做。並且一步步紀錄我做了什麼

User story: 使用者在增加新工作時,可以增加照片
以下藍字是原作者,紅字是我的



Step1:
安裝跟其他gem一樣,在Gemfile新增兩行

gem 'carrierwave'
gem 'mini_magick'

再執行

$ bundle install

然後新增一個Uploader,命名為image(舉例說明,可依需求命名)

$ rails generate uploader image


Step 2: 設定model與建立關係
產生一個model, photo用來存放照片

$ rails g model photo product_id:integer image:string
# product_id 是foreign_key, image則是之後給mount_uploader的欄位


$ rails g model photo title:integer image:string
我沒有product_id, 猜測foreign_key是job, image則是之後給mount_uploader的欄位

跑migration

$ rake db:migrate
接著Photo中加入關係與mount_uploader
photo.rb
class Photo < ActiveRecord::Base
  belongs_to :product

  mount_uploader :image, ImageUploader
end


Photo.rb

class Photo < ActiveRecord::Base
    belongs_to :job
mount_uploader :image, ImageUploader
end



把prodoct 改成job


在Product中也做相關宣告

product.rb
class Product < ActiveRecord::Base
  has_many :photos, dependent: :destroy

  accepts_nested_attributes_for :photos  
  #之後我們要做nested form,先在這邊設定接受變更Photo底下的attributes

end


job.rb

class Job < ApplicationRecord

  scope :published, ->{where(is_hidden: false)}
  scope :recent, -> {order('created_at DESC')}

has_many :resumes
has_many :photos, dependent: :destroy

accepts_nested_attributes_for :photos

def publish!
  self.is_hidden = false
  self.save
end

def hide!
  self.is_hidden = true
  self.save
end

  validates :wage_upper_bound, presence: true
    validates :wage_lower_bound, presence: true
    validates :wage_lower_bound, numericality: { greater_than: 0}
end

Step3. 在Rails console確認關係

首先需要修正無法在 rails c 讀取到 uploader.rb 的問題:

config/appliaction.rb

module Artstore
  class Application < Rails::Application
   …(略)
    config.active_record.raise_in_transactional_callbacks = true
+    config.autoload_paths += %W(#{config.root}/app/uploaders)
  end
end


我的是這樣

module JobListing
  class Application < Rails::Application
    ...
    config.active_record.raise_in_transactional_callbacks = true
    config.autoload_paths += %W(#{config.root}/app/uploaders)

  end
end

接下來在Rails c輸入Product.first.photos應該就可以確認結果,如下結果就是成功,但因為目前我們還沒上傳任何圖片,回傳的是[ ],而到目前為止圖片上傳功能的Model端設定已經OK。


我輸入了Job.first.photos
jobs.first.photos 都失敗了

學習技巧分享:筆記

從去年底開始,每次XDite 直播我都試著紀錄。一開始是為了讓自己聽的時候專注點、後來發現還有事後搜尋方便以及可以跟其他人分享的優點。就繼續紀錄下去了,還很不要臉的要求某群網友叫我筆記王。正好有朋友問我如何練成筆記王。我回憶了一下,也不過就是三四個月的事情:
1. 有個綱要:
我是靠樊登解讀的 高效演講,『TED TALKS演講的力量』,這兩本書作為解析演講架構的基礎。時間久了,我只記得每場演講都會有三大部分五大章節:開場、論點一、論點二、論點三、結尾。要順著『坡道,主軸,甜點』的結構講的概念還是剛剛翻書才又想起來的。其他各種技巧,四個月後都忘光光了:p
2. 做簡單的練習:先練習解析樊登講書的結構。
方法是聽完後試著寫下剛剛的『開頭、論點一二三、結尾』個別是什麼,回想裡面是哪點讓我覺得有說服力。解析了大概快十本。一開始聽完後寫得零零落落的,七八次後可以聽完就寫得差不多,還有餘力思考裡面最有說服力的地方在哪裡。甚至有餘力自己翻書,看看為什麼他講的比我讀的還要多。
3. 加深練習難度:練習寫沒有文本的演講結構。
TED自然是最佳練習對象,為了虛榮心,我還選英文版的。一開始找書裡面推薦過的演講或者有字幕的,後來不看螢幕用聽的。聽的時期,為了避免自己想要邊聽邊滑手機,我採取邊散步或邊跑步邊聽,大腦的注意力自然很集中。對台灣人來說,美國口音的英文比較容易上手,我大概聽個五六次就能寫出結構了(一次18分鐘,六次也不過就兩小時)。
4. 再加深練習難度:練習一次寫下兩三篇文章的結構。
正好『得到APP』的專欄暴增,咬牙訂了一堆,有一兩週時間我訓練自己每天每篇都看,而且每篇都回想到底講了什麼。以訂閱五個每日更新的專欄(萬維綱、劉潤、李笑來、吳軍、何帆)來說,每天早上大約要花二十分鐘專心看。下班後看一眼標題考考自己還記得多少。
5. 再加深練習難度:練習聽打直播
有了前面的練習後,對結構好的演講吸收力變得好很多。因此中國一堆牛人直播,就可以邊聽邊紀錄。正好這時候XDite開始比較大量的臉書直播,想說試試看紀錄能力如何,紀錄了一個月之後覺得又有一點點進步。
6. 開到寶箱:筆記對陌生人有用
XDite 是很好的放大器,她會不定期分享學生或是網友寫得好的東西,就會有意想不到的陌生人來看,看得人多就有一種自我肯定的感覺。感覺自己好像對別人有點幫助,會輕飄飄的。寫XDite的幾篇直播筆記,如果被分享的話會吸到三百個左右的網友按讚
7. 不斷有厲害的牛人刺激:
一開始是樊登在某次講座裡面提到,他準備講稿的時間大約是一到兩天:一天讀書,邊讀邊畫心智圖;一天看著心智圖講。我那時候讀一本書都要搞一個月,讀完還不見得知道自己在搞什麼,看到人家可以這麼牛氣,當然很想挑戰看看。
12/29MJ林明璋在讀書會的時候,何飛鵬社長蒞臨,MJ老師現場做筆記的神功力(感謝徐聖媛以及許斐茜兩位的協助提供連結 )

結論:有框架、刻意練習、多種類的練習、偶爾開到寶箱、有高標準的牛人在前面。就可以一直進步了。

01.15 全棧營學習紀錄 15 -- Meet up

第一次Meet Up 紀錄
時間:1400-1600。參與人:我、Pearl Huang、小傑。地點:台北公館某咖啡廳,有無線網路跟每個座位都有插座。

小技巧分享:我找學長姐git的方法

  1. 用專案名稱,例如人才火箭,專案名稱:talent-rocket
  2. 丟到git hub 的首頁裡的搜尋對話匡,如果只跑出一個就按那個,如果有很多個,就用時間、語法、國籍資訊判斷是不是學長姐。第一期的四組學長姐的網頁,我找到三個很可能是的。


今日的學習
1. brackets ,看起來不輸給Atom
2. mac 的觸控板,重壓就是點選(微軟手不習慣啊)(用不習慣的工具覺得自己像白痴)
3. 又一個漂亮的圖片網

今日的收獲
1. 本以為可以直接複製第一期學長姐的網頁,搭配我寫好的user story,結果失敗
2. Pearl 很聰明地提醒我可以用原有的Job Listing 修改,重新檢視後發現應該刪掉兩三個功能(用User Story的好處:直接刪票,劃XX)
3. 聚焦:只要增加兩個新功能就是最小可用網站

今日的低點
1. 餐廳的桌椅高度不適合工作,脖子好痛
2. 沒有帶滑鼠,覺得自己笨上加笨
3. 找到學長姐的git可以複製時,本來覺得我是天才(噢噎),但pulling 完後發現我沒找到想找的,頓時失望。。。

下次的計畫
1. 要帶滑鼠,開始工作前要確定椅子的高度
2. 像今天一樣,帶寫到一半的作業去,可以問人
3. 記得先吃飯,公館的食物不合胃口。。。桌上放著食物很令人分心