SlideShare a Scribd company logo
1 of 67
Download to read offline
Funliday 新創生活甘苦談
Kewang
Kewang
● 王慕羣 Kewang
● Java / JavaScript
● HBase / PostgreSQL / MongoDB / ElasticSearch
● Git / DevOps
●
熱愛開源
Linkedin
Linkedin kewangtw
kewangtw
SlideShare
SlideShare kewang
kewang
Gmail
Gmail cpckewang
cpckewang
Facebook
Facebook Kewang 的資訊進化論
Kewang 的資訊進化論
devopsday taipei
devopsday taipei '17
'17
hadoopcon
hadoopcon '14 '15
'14 '15
jcconf
jcconf '16 '17 '18
'16 '17 '18
modernweb
modernweb '18 '19 '20
'18 '19 '20
GitHub
GitHub kewang
kewang
Funliday
Funliday kewang
kewang
coscup
coscup '20
'20
mopcon
mopcon '14 '20
'14 '20
4
看一下我平常的工作環境
看 log
監控機器
寫 code
21 個 project
VSCode 愈跑愈慢
13
先來介紹一下團隊成員
14
團隊成員 (13 位 )
● Designer * 1
● PM * 1
● QA * 1
● iOS * 1
● SRE * 1
● Android * 1
● 企劃 * 1
● BD * 1
● 小編 * 1
● Backend * 1
● 行銷 * 1
● Web * 1
● 客服 * 1
15
團隊成員 (13 位 )
● Designer * 1
● PM * 1
● QA * 1
● iOS * 1
● SRE * 1
● Android * 1
● 企劃 * 1
● BD * 1
● 小編 * 1
● Backend * 1
● 行銷 * 1
● Web * 1
● 客服 * 1
16
真.團隊成員 (5 位 )
● Designer * 1
● PM * 1
● QA * 1
● iOS * 1
● SRE * 1
● Android * 1
● 企劃 * 1
● BD * 1
● 小編 * 1
● Backend * 1
● 行銷 * 1
● Web * 1
● 客服 * 1
17
18
真.團隊成員 (5 位 )
● Designer * 1
● PM * 1
● QA * 1
● iOS * 1
● SRE * 1
● Android * 1
● 企劃 * 1
● BD * 1
● 小編 * 1
● Backend * 1
● 行銷 * 1
● Web * 1
● 客服 * 1
19
再來介紹一下五大功能
20
景點瀏覽
21
●
第一個開發的功能
景點瀏覽
22
●
第一個開發的功能
● OpenStreetMap
景點瀏覽
23
●
第一個開發的功能
● OpenStreetMap
● PostgreSQL (PostGIS)
景點瀏覽
24
●
第一個開發的功能
● OpenStreetMap
● PostgreSQL (PostGIS)
● 各種快取策略 (Redis, DB)
景點瀏覽
25
●
第一個開發的功能
● OpenStreetMap
● PostgreSQL (PostGIS)
● 各種快取策略 (Redis, DB)
● Autocomplete
景點瀏覽
26
●
第一個開發的功能
● OpenStreetMap
● PostgreSQL (PostGIS)
● 各種快取策略 (Redis, DB)
● Autocomplete
● Elasticsearch
景點瀏覽
27
●
第一個開發的功能
● OpenStreetMap
● PostgreSQL (PostGIS)
● 各種快取策略 (Redis, DB)
● Autocomplete
● Elasticsearch
– 中文斷詞
景點瀏覽
28
●
第一個開發的功能
● OpenStreetMap
● PostgreSQL (PostGIS)
● 各種快取策略 (Redis, DB)
● Autocomplete
● Elasticsearch
– 中文斷詞
– MultiPolygon
景點瀏覽
29
●
第一個開發的功能
● OpenStreetMap
● PostgreSQL (PostGIS)
● 各種快取策略 (Redis, DB)
● Autocomplete
● Elasticsearch
– 中文斷詞
– MultiPolygon
– Function Score
景點瀏覽
30
旅遊回憶
31
●
行程加圖片
旅遊回憶
32
●
行程加圖片
●
使用者原創內容
旅遊回憶
33
●
行程加圖片
●
使用者原創內容
●
圖片處理
旅遊回憶
34
●
行程加圖片
●
使用者原創內容
●
圖片處理
– S3, CDN
旅遊回憶
35
●
行程加圖片
●
使用者原創內容
●
圖片處理
– S3, CDN
– Image resize
旅遊回憶
36
●
行程加圖片
●
使用者原創內容
●
圖片處理
– S3, CDN
– Image resize
●
開始加入個人化元素
旅遊回憶
37
●
行程加圖片
●
使用者原創內容
●
圖片處理
– S3, CDN
– Image resize
●
開始加入個人化元素
● Social friendly
旅遊回憶
38
●
行程加圖片
●
使用者原創內容
●
圖片處理
– S3, CDN
– Image resize
●
開始加入個人化元素
● Social friendly
– Unified URL
旅遊回憶
39
●
行程加圖片
●
使用者原創內容
●
圖片處理
– S3, CDN
– Image resize
●
開始加入個人化元素
● Social friendly
– Unified URL
– Open Graph
旅遊回憶
40
●
行程加圖片
●
使用者原創內容
●
圖片處理
– S3, CDN
– Image resize
●
開始加入個人化元素
●
Social friendly
– Unified URL
– Open Graph
– Schema.org
旅遊回憶
41
行程編輯
42
● Funliday 的核心功能
行程編輯
43
● Funliday 的核心功能
●
一年後才接手
行程編輯
44
● Funliday 的核心功能
●
一年後才接手
●
花了整整一年重構
行程編輯
45
● Funliday 的核心功能
●
一年後才接手
●
花了整整一年重構
●
重構很重要
行程編輯
46
● Funliday 的核心功能
●
一年後才接手
●
花了整整一年重構
●
重構很重要
●
兩個例子
行程編輯
47
● Funliday 的核心功能
●
一年後才接手
●
花了整整一年重構
●
重構很重要
●
兩個例子
– Notification
行程編輯
48
● Funliday 的核心功能
●
一年後才接手
●
花了整整一年重構
●
重構很重要
●
兩個例子
– Notification
– Middleware
行程編輯
49
探索
50
●
第一版開發上稿非常不靈活
探索
51
●
第一版開發上稿非常不靈活
●
半年後花了一個月打掉重練
探索
52
●
第一版開發上稿非常不靈活
●
半年後花了一個月打掉重練
●
過了六年總算成為首頁
探索
53
●
第一版開發上稿非常不靈活
●
半年後花了一個月打掉重練
●
過了六年總算成為首頁
●
建構各種社群基本元素
探索
54
●
第一版開發上稿非常不靈活
●
半年後花了一個月打掉重練
●
過了六年總算成為首頁
●
建構各種社群基本元素
– 留言
探索
55
●
第一版開發上稿非常不靈活
●
半年後花了一個月打掉重練
●
過了六年總算成為首頁
●
建構各種社群基本元素
– 留言
– 按讚
探索
56
●
第一版開發上稿非常不靈活
●
半年後花了一個月打掉重練
●
過了六年總算成為首頁
●
建構各種社群基本元素
– 留言
– 按讚
– 分享
探索
57
●
第一版開發上稿非常不靈活
●
半年後花了一個月打掉重練
●
過了六年總算成為首頁
●
建構各種社群基本元素
– 留言
– 按讚
– 分享
– 開啟小鈴鐺
探索
58
在地體驗
59
●
開始進入銷售
在地體驗
60
●
開始進入銷售
●
購買後可以加到行程
在地體驗
61
●
開始進入銷售
●
購買後可以加到行程
●
金流串接
在地體驗
62
Summary
63
Summary
●
勇於接受挑戰
64
Summary
●
勇於接受挑戰
●
快速迭代
65
Summary
●
勇於接受挑戰
●
快速迭代
●
每天都是假日,每天也都是平日
66
Summary
●
勇於接受挑戰
●
快速迭代
●
每天都是假日,每天也都是平日
●
技術是為商業所服務
67

More Related Content

What's hot

Yet another introduction to Git - from the bottom up
Yet another introduction to Git - from the bottom upYet another introduction to Git - from the bottom up
Yet another introduction to Git - from the bottom up
Wen-Tien Chang
 

What's hot (20)

使用 PostgreSQL 及 MongoDB 從零開始建置社群必備的按讚追蹤功能
使用 PostgreSQL 及 MongoDB 從零開始建置社群必備的按讚追蹤功能使用 PostgreSQL 及 MongoDB 從零開始建置社群必備的按讚追蹤功能
使用 PostgreSQL 及 MongoDB 從零開始建置社群必備的按讚追蹤功能
 
Git flow 與團隊合作
Git flow 與團隊合作Git flow 與團隊合作
Git flow 與團隊合作
 
如何與 Git 優雅地在樹上唱歌
如何與 Git 優雅地在樹上唱歌如何與 Git 優雅地在樹上唱歌
如何與 Git 優雅地在樹上唱歌
 
COSCUP 2016 Workshop: 用 Docker 架設班級 git-it 練習環境
COSCUP 2016 Workshop: 用 Docker 架設班級 git-it 練習環境COSCUP 2016 Workshop: 用 Docker 架設班級 git-it 練習環境
COSCUP 2016 Workshop: 用 Docker 架設班級 git-it 練習環境
 
Yet another introduction to Git - from the bottom up
Yet another introduction to Git - from the bottom upYet another introduction to Git - from the bottom up
Yet another introduction to Git - from the bottom up
 
Continuous Delivery Workshop with Ansible x GitLab CI (5th)
 Continuous Delivery Workshop with Ansible x GitLab CI (5th) Continuous Delivery Workshop with Ansible x GitLab CI (5th)
Continuous Delivery Workshop with Ansible x GitLab CI (5th)
 
[PHP 也有 Day #64] PHP 升級指南
[PHP 也有 Day #64] PHP 升級指南[PHP 也有 Day #64] PHP 升級指南
[PHP 也有 Day #64] PHP 升級指南
 
從軟體開發角度
談 Docker 的應用
從軟體開發角度
談 Docker 的應用從軟體開發角度
談 Docker 的應用
從軟體開發角度
談 Docker 的應用
 
Git 經驗分享
Git 經驗分享Git 經驗分享
Git 經驗分享
 
用 Docker 改善團隊合作模式
用 Docker 改善團隊合作模式用 Docker 改善團隊合作模式
用 Docker 改善團隊合作模式
 
Visual Studio Code 快速上手指南
Visual Studio Code 快速上手指南Visual Studio Code 快速上手指南
Visual Studio Code 快速上手指南
 
Continuous Delivery Workshop with Ansible x GitLab CI (3rd)
Continuous Delivery Workshop with Ansible x GitLab CI (3rd)Continuous Delivery Workshop with Ansible x GitLab CI (3rd)
Continuous Delivery Workshop with Ansible x GitLab CI (3rd)
 
My DevOps Tour 0.1
My DevOps Tour 0.1My DevOps Tour 0.1
My DevOps Tour 0.1
 
用 Drone 打造 輕量級容器持續交付平台
用 Drone 打造輕量級容器持續交付平台用 Drone 打造輕量級容器持續交付平台
用 Drone 打造 輕量級容器持續交付平台
 
Introduction to git
Introduction to gitIntroduction to git
Introduction to git
 
運用 Docker 整合 Laravel 提升團隊開發效率
運用 Docker 整合 Laravel 提升團隊開發效率運用 Docker 整合 Laravel 提升團隊開發效率
運用 Docker 整合 Laravel 提升團隊開發效率
 
Introduction to Golang final
Introduction to Golang final Introduction to Golang final
Introduction to Golang final
 
Git in a nutshell
Git in a nutshellGit in a nutshell
Git in a nutshell
 
Ian 20150515 grunt
Ian 20150515 gruntIan 20150515 grunt
Ian 20150515 grunt
 
Go 語言基礎簡介
Go 語言基礎簡介Go 語言基礎簡介
Go 語言基礎簡介
 

Similar to Funliday 新創生活甘苦談

20121115 Slides
20121115 Slides20121115 Slides
20121115 Slides
Tonyq Wang
 
HTML5 实战 WebApp 阅读应用– Shiu
HTML5 实战 WebApp 阅读应用– ShiuHTML5 实战 WebApp 阅读应用– Shiu
HTML5 实战 WebApp 阅读应用– Shiu
Jingchao Di
 
Background processing after android O ft. WorkManager
Background processing after android O ft. WorkManagerBackground processing after android O ft. WorkManager
Background processing after android O ft. WorkManager
Carter Chen
 
前端也能變全端
前端也能變全端前端也能變全端
前端也能變全端
ericpi Bi
 
这年头,你只需要懂Node webkit
这年头,你只需要懂Node webkit这年头,你只需要懂Node webkit
这年头,你只需要懂Node webkit
LainZQ
 

Similar to Funliday 新創生活甘苦談 (20)

20121115 Slides
20121115 Slides20121115 Slides
20121115 Slides
 
如何在有限資源下實現十年的後端服務演進
如何在有限資源下實現十年的後端服務演進如何在有限資源下實現十年的後端服務演進
如何在有限資源下實現十年的後端服務演進
 
HTML5 实战 WebApp 阅读应用– Shiu
HTML5 实战 WebApp 阅读应用– ShiuHTML5 实战 WebApp 阅读应用– Shiu
HTML5 实战 WebApp 阅读应用– Shiu
 
Background processing after android O ft. WorkManager
Background processing after android O ft. WorkManagerBackground processing after android O ft. WorkManager
Background processing after android O ft. WorkManager
 
前端也能變全端
前端也能變全端前端也能變全端
前端也能變全端
 
Git 可以做到的事
Git 可以做到的事Git 可以做到的事
Git 可以做到的事
 
[JCConf 2022] Compose for Desktop - 開發桌面軟體的新選擇
[JCConf 2022] Compose for Desktop - 開發桌面軟體的新選擇[JCConf 2022] Compose for Desktop - 開發桌面軟體的新選擇
[JCConf 2022] Compose for Desktop - 開發桌面軟體的新選擇
 
Grails敏捷项目开发
Grails敏捷项目开发Grails敏捷项目开发
Grails敏捷项目开发
 
React.js what do you really mean?
React.js what do you really mean?React.js what do you really mean?
React.js what do you really mean?
 
React native 開發快速上手 20171106
React native 開發快速上手 20171106React native 開發快速上手 20171106
React native 開發快速上手 20171106
 
Github初上手教學
Github初上手教學Github初上手教學
Github初上手教學
 
这年头,你只需要懂Node webkit
这年头,你只需要懂Node webkit这年头,你只需要懂Node webkit
这年头,你只需要懂Node webkit
 
Grpc go-in-php
Grpc go-in-phpGrpc go-in-php
Grpc go-in-php
 
Web view on the way
Web view on the wayWeb view on the way
Web view on the way
 
COSCUP 2019 國際開放原始碼專案經營 - 從失敗中學習
COSCUP 2019 國際開放原始碼專案經營 - 從失敗中學習COSCUP 2019 國際開放原始碼專案經營 - 從失敗中學習
COSCUP 2019 國際開放原始碼專案經營 - 從失敗中學習
 
AtticTV and NodeJS
AtticTV and NodeJSAtticTV and NodeJS
AtticTV and NodeJS
 
极速 Angular 开发:效能调校技巧 (ngChina 2019)
极速 Angular 开发:效能调校技巧 (ngChina 2019)极速 Angular 开发:效能调校技巧 (ngChina 2019)
极速 Angular 开发:效能调校技巧 (ngChina 2019)
 
Go for web
Go for webGo for web
Go for web
 
開源協作地圖OpenStreetMap
開源協作地圖OpenStreetMap開源協作地圖OpenStreetMap
開源協作地圖OpenStreetMap
 
Python网络抓取小试
Python网络抓取小试Python网络抓取小试
Python网络抓取小试
 

More from Mu Chun Wang

Firebase introduction
Firebase introductionFirebase introduction
Firebase introduction
Mu Chun Wang
 

More from Mu Chun Wang (17)

深入淺出 autocomplete
深入淺出 autocomplete深入淺出 autocomplete
深入淺出 autocomplete
 
大解密!用 PostgreSQL 提升 350 倍的 Funliday 推薦景點計算速度
大解密!用 PostgreSQL 提升 350 倍的 Funliday 推薦景點計算速度大解密!用 PostgreSQL 提升 350 倍的 Funliday 推薦景點計算速度
大解密!用 PostgreSQL 提升 350 倍的 Funliday 推薦景點計算速度
 
如何使用 iframe 製作一個易於更新及更安全的前端套件
如何使用 iframe 製作一個易於更新及更安全的前端套件如何使用 iframe 製作一個易於更新及更安全的前端套件
如何使用 iframe 製作一個易於更新及更安全的前端套件
 
pppr - 解決 JavaScript 無法被搜尋引擎正確索引的問題
pppr - 解決 JavaScript 無法被搜尋引擎正確索引的問題pppr - 解決 JavaScript 無法被搜尋引擎正確索引的問題
pppr - 解決 JavaScript 無法被搜尋引擎正確索引的問題
 
API Blueprint - API 文件規範的三大領頭之一
API Blueprint - API 文件規範的三大領頭之一API Blueprint - API 文件規範的三大領頭之一
API Blueprint - API 文件規範的三大領頭之一
 
團體共同協作與版本管理 - 01認識共同協作
團體共同協作與版本管理 - 01認識共同協作團體共同協作與版本管理 - 01認識共同協作
團體共同協作與版本管理 - 01認識共同協作
 
手把手教你如何串接 Log 到各種網路服務
手把手教你如何串接 Log 到各種網路服務手把手教你如何串接 Log 到各種網路服務
手把手教你如何串接 Log 到各種網路服務
 
你有想過畢業九年後的你會變什麼樣子嗎?
你有想過畢業九年後的你會變什麼樣子嗎?你有想過畢業九年後的你會變什麼樣子嗎?
你有想過畢業九年後的你會變什麼樣子嗎?
 
HR Search - 輕鬆管理面試者
HR Search - 輕鬆管理面試者HR Search - 輕鬆管理面試者
HR Search - 輕鬆管理面試者
 
Hedis - GET HBase via Redis
Hedis - GET HBase via RedisHedis - GET HBase via Redis
Hedis - GET HBase via Redis
 
104學年度行動裝置程式設計課程說明
104學年度行動裝置程式設計課程說明104學年度行動裝置程式設計課程說明
104學年度行動裝置程式設計課程說明
 
Webduino introduction
Webduino introductionWebduino introduction
Webduino introduction
 
Lightning Hedis
Lightning HedisLightning Hedis
Lightning Hedis
 
職涯之路
職涯之路職涯之路
職涯之路
 
Firebase introduction
Firebase introductionFirebase introduction
Firebase introduction
 
How to build a scalable SNS via Polling & Push
How to build a scalable SNS via Polling & PushHow to build a scalable SNS via Polling & Push
How to build a scalable SNS via Polling & Push
 
How to build a scalable SNS using HBase
How to build a scalable SNS using HBaseHow to build a scalable SNS using HBase
How to build a scalable SNS using HBase
 

Funliday 新創生活甘苦談