惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Help Net Security
Help Net Security
量子位
大猫的无限游戏
大猫的无限游戏
雷峰网
雷峰网
B
Blog RSS Feed
宝玉的分享
宝玉的分享
Security Latest
Security Latest
小众软件
小众软件
P
Proofpoint News Feed
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
月光博客
月光博客
博客园_首页
美团技术团队
T
Tailwind CSS Blog
The Cloudflare Blog
爱范儿
爱范儿
L
LINUX DO - 热门话题
酷 壳 – CoolShell
酷 壳 – CoolShell
T
Threatpost
V
Vulnerabilities – Threatpost
A
Arctic Wolf
C
Cybersecurity and Infrastructure Security Agency CISA
S
Securelist
阮一峰的网络日志
阮一峰的网络日志
T
Tenable Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
J
Java Code Geeks
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
S
Schneier on Security
I
Intezer
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
腾讯CDC
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Scott Helme
Scott Helme
S
SegmentFault 最新的问题
Simon Willison's Weblog
Simon Willison's Weblog
人人都是产品经理
人人都是产品经理
Schneier on Security
Schneier on Security
Jina AI
Jina AI
N
News and Events Feed by Topic
C
Cisco Blogs
L
Lohrmann on Cybersecurity
V
V2EX
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Cisco Talos Blog
Cisco Talos Blog
W
WeLiveSecurity
The Last Watchdog
The Last Watchdog
O
OpenAI News
V
Visual Studio Blog
Apple Machine Learning Research
Apple Machine Learning Research

Nic Lin's Blog

謝明真 - 高效領導力的課後筆記 NFT 開發實戰!基礎智能合約入門 (3) NFT 開發實戰!基礎智能合約入門 (2) NFT 開發實戰!基礎智能合約入門 (1) 如何自我檢測 log4j CVE 漏洞 Rails 如何在資料寫入時記錄來源 IP 位置 如何經營工程師 Youtube 頻道 - Part 8 營收篇 如何經營工程師 Youtube 頻道 - Part 7 酸民文化篇 如何經營工程師 Youtube 頻道 - Part 5 設備器材篇 如何經營工程師 Youtube 頻道 - Part 4 後製剪輯篇 如何經營工程師 Youtube 頻道 - Part 3 文案企劃篇 如何經營工程師 Youtube 頻道 - Part 2 設備器材篇 如何經營工程師 Youtube 頻道 - Part 1 制訂頻道方向篇 如何經營工程師 Youtube 頻道 - Part 0 Rails 中避免 race condition 的最佳實踐(二) Rails 中避免 race condition 的最佳實踐(一) 10 分鐘整合 google sheet 做自動化開發功能週報 經營 Side Project 300 天所帶來的收穫及挑戰 我的 Youtube 影片製作流程 API 設計時必須注意的 HTTP header 底線問題 如何提升你的程式可讀性之實務技巧(三) 如何提升你的程式可讀性之實務技巧(二) 如何提升你的程式可讀性之實務技巧(一) Ruby 中使用 freeze 優化效能的時機 避免 React 中的 useEffect 無限 render 在 Rails 內輕量使用 Vue Component 的最佳實踐 如何在區域網路用 Docker 架設有 SSL 的 Gitlab 從被問到問人,那些我常問的面試問題 [Rails] 如何漂亮寫出可維護的 query (Maintainable Rails Query) 在已知長度情況下優化 slice 的性能 [ReactNative] 如何在 iOS APP 上主動要求用戶評分 Rails 的 scope 為什麼用 lambda? Proc 與 lambda 不同之處 淺談 Active Record 的 Lazy load 特性 Rails 專案搭配 Github Actions 進行 RSpec 自動化測試 JavaScript 中 require, import 的差別及效能 React 效能優化基本招 ES6 箭頭函式 (Arrow functions) 2 個月擁有 6000 用戶 Side project 這樣做(一) 如何讓自己成為失敗的軟體工程師 如何用 Rack::Attack 阻擋 DDOS / 惡意流量 用 OpenSSL 自簽開發用 HTTPS SSL 憑證 為機器加上登入訊息,在 ubuntu 設置登入歡迎詞 Ruby Memoization 性能優化之記憶化 淺談 SSH agent forwarding 和 proxy command 的安全風險與應用 [Rails] Service / Library / Concern 的差異 避免過度的 Defensive Programming 防禦性程式設計 1:1 攪亂器,如何用 Ruby 做可逆推序號 Rails 中的欄位及方法命名原則 [Rails] 用 puma-dev 作為本地開發伺服器 (支援 https 自簽憑證) 將 Rails 專案從手動部屬遷移使用 Capistrano 自動化部屬 工程師提昇自己的教學和簡報技術的方法 [筆記] Rails 3.2 升級 Rails 6.beta 經驗分享 Class method 氾濫帶來什麼問題 RDBMS 課程心得與筆記 常用的 Rails 開發規範 Rest-Client 如何做 Basic Authentication 驗證 [Rails] 何為 tld_lebgth? 遵循 Semantic Versioning 軟體開發語意化版本管理 請直接在 MySQL 裡面直接用 utf8mb4 取代 utf8 如何解決在 awesome print 中遇到 ActionController::Parameters unable to convert unpermitted 如何在 Mac 上升級 PostgreSQL 並遷移資料 如何解決 Mysql2::Error: Incorrect string value 讀書心得 - 「信任因子:信任如何影響大腦運作、激勵員工、達到組織目標」 我是如何寫部落格筆記的 讀書心得 - 「先問,為什麼?:顛覆慣性思考的黃金圈理論,啟動你的感召領導力」 [Rails] 解決 Reset Password 帶來的 token 洩漏問題 我的軟體工程師生涯:如何挑選適合你的公司 Rails 中的 delegate 用法 淺述 SSR SPA 優缺點 Rails 非同步工作請用 Global ID [React] Class Component 傳遞 props 的 2 種方式 好用的隱私權政策 URL 自動生成 Rails 5.1 之後的 tag helper Rails 5.2 Encrypted Credentials 最近面試被給的建議和書單 一般架構需要用到 K8S 嗎 透過 commit SHA 找 github Pull request 從零搭建,如何讓 Rails 跑在 Kubernetes(k8s)(二) React Stateless Functional Components 搞懂 React 中的 state 和 props 物件導向基本原則 SOLID (Ruby Sample) 在以太坊智能合約上是可以預測隨機數的 在台灣租屋必須注意的事 Rails 5 簡單雙向加解密 如何用 ABA 培養自律型員工 不要在 rake task 中定義 method, 請用 RAKE::DSL rails 非hash只想用array輸出page 如何處理陣列裡有重複的值 [Rails] 如何重設你的專案名稱 Ruby on Rails install on Mac 安裝步驟 使用 Friendly_id 與 Babosa 美化你的Rails 網址 Junior Rails 兩個月實戰心得 Devise使用Google實作登入 [iterm2] 如何新增alias 一個新鮮人找尋Rails工作的面試經驗 如何讓兩個資料表建立關聯 routing 的 namespace strong parameter user story 的格式 user story 是什麼?
2 個月擁有 6000 用戶 Side project 這樣做(三)
Nic Lin · 2019-09-18 · via Nic Lin's Blog

在前面兩篇文章從零到有的 Side project 心路歷程,這篇內容主要是分享一些想法以及技術、人員、花費的資源細節。

本系列文章的篇幅主要會分成三部分

  1. 讓想法成為產品的第一步
  2. 讓產品從「好」到「更好」
  3. Side project 給我的收穫、反思以及資源盤點 <– 本篇

本系列其他文章

能解決問題的產品

Beiyi APP 上線時數據

在做 Side project 時你會發現,技術並不一定是全部,整個過程中更需要瞭解用戶需求和產品層面的思考,所以單單只會前端或後端其中一邊往往沒辦法做出一個真正好的產品。

對你而言,好的產品定義是什麼?

就我的主觀認知,我認為好的產品是能夠「解決問題,讓用戶成為想要的自己」。

然而,在做產品之前,我們要怎麼找到需求?

我覺得與大的需求相比,小的需求可以從自身的需求出發,看看是否也有一小部分的群體有相同的需求,在這個案例你可以看到,「Beiyi 北宜」解決了一小部分群體的需求,就是從我自身的需求出發的,畢竟不是每個人都喜歡騎摩托車、暢遊山路。

在這整個過程中,你會發現技術只是實現的方式,會有更多部分著墨在技術層面之上,包含產品思考、行銷、專案管理、需求管理等等。

當然,也有技術型產品,既可以練技術也可以做產品,讓自己的成長收益加倍,這就要看你當初訂的目標是什麼而決定了。

推廣行銷的反思

我在同一個臉書社團發文了兩次。

第一次是推廣 Web,第二次就是推廣 APP。

在第二次發佈完之後,我認為兩個版本都有發佈啊,用戶應該都看到了,有來註冊的應該就是想用的吧,然後就傻傻的以為這樣的用戶量應該已經是極限。

沒想到有趣的是,你貼的文,用戶不會「剛好」都看到,也就是說,以這個社團 15 萬用戶來說,不會在你發佈文章後,所有人都看到。

有的用戶可能偶而才進來看一次、有的可能假日才來看、有的可能剛好其他社團參與的比較積極,所以演算法不推他這篇文。

就在我推廣了第三次之後,發現竟然又多了將近 1000 人註冊,也就是說你每次都有可能打到不同的用戶,也許有的用戶是在觀望階段,直到你越來越常出現,好像有其他人在用,他才決定要試試看。

所以在這部分我瞭解到,要行銷你的產品,必須要拿捏好一個頻率,不能太常出現讓人反感,又不能只出現一次。

但毋庸置疑的是,你必須得替自己宣傳推廣,而且用力的。

超乎預期的收穫

在整個開發過程中其實都不是以利益為第一考量,所以我也沒有去研究掛廣告收益之類的事情,但其實我不覺得可惜。

因為對我來說,能夠幫助到一些人,也能讓自己成長,這樣的收穫對我而言是難能可貴的經驗。

  • 設計師女友獲得了一個完整設計 APP 的經驗和能夠放在作品集上的作品
  • 朋友 Stan 實戰了完整的 API 開發和測試撰寫
  • 我學會完整從 0 到 1 的 React native 開發含上架
  • 我和我的用戶們出門前都不需要再開 3 個 APP 了

總花費

  • iOS 一年開發者費用約 3400 NTD
  • Android 永久開發者費用約 700 NTD
  • Linode 150 NTD/月
  • 做了刀膜貼紙 2000 NTD

喔對,我覺得 Logo 設計得很可愛,於是就自己做了個貼紙,打算之後發給其他車友和讀者之類的 XD

北宜貼紙

資源不怕少,就怕沒弄好

總用戶數已經有 6000 人,但通常車友都是假日出門居多,後台數據在週末時的日活量大約會到 1000 人左右。

機器沒有做特別的調整,但 CPU 使用率一直都是在 10% 以下,這種小型的專案沒有太複雜的技術,基本上都是資訊的讀取,有一些基本觀念應當就不會做到倒站或是出現資源不夠用的情況。

這是我在專案裡面有做到的部分

  • 天氣資訊打 cache,這個不需要經常更新
  • 避免 S3 讀取圖片流量,在 Client 對圖片做緩存
  • 常用的時間區間從 Datatime 欄位換成 Integer,用 unix time stamp

可能不全然是必須做的,但是基本都是不會花太多時間可以提升的部分。

資源總覽

技術部分

  • Web: Ruby on Rails 6.1.0.alpha
  • API: Grape API
  • APP: React Nativce 0.59
  • Server: Linode (1 CPU, 25GB Storage, 1GB RAM)
  • Domain: GoDaddy
  • Git Hosting: Github private
  • Storage: AWS S3
  • Error Monitoring: Rollbar
  • Database Perfromance: pghero
  • Analytics: Firebase / Google analytics
  • Push Notification: OneSignal

人員部分

  • Nic Lin(我): 專案管理、Web 第一版開發、APP 開發
  • Doris Lin: ICON、LOGO、介面設計、使用者體驗優化、周邊設計
  • Stan Chen: Web / API 實作,Server 優化、自動化部署、備份

總結

很多人總覺得厲害的 Side project 都是高手在做的,但你也要知道,大神也是從新手開始。

以這個專案來說,Rails 部分的 CRUD 新手看 Rails 101 應該也做的出來,沒有什麼高深的技術層面,但卻是把每一個「簡單」拼湊起來,變成一個真正的產品。

在這個 Side project 之前,我寫了很多爛尾的 Side project,大概就是有想法就開個專案寫一點,可能過陣子就覺得這個問題好像其實也沒這麼擊中自己的痛點,所以我不是一次就做出這個有真實用戶的專案。

每做一次 Side project 都會有不同的感受,可能是技術的成長、可能是產品思維的成長,真要說有什麼缺點的話,大概就是像我這種對進度有要求的執著會很難受,自己都不讓自己假日出去玩也要把東西做完的缺點吧。

另外,和做公司專案不一樣的地方,就像是你給了自己一大幅圖畫紙跟無限的色筆,你可以盡情的揮灑創意,就算把紙都劃破了,也不會有人罵你,然而創意總是蘊藏在日常生活中,如果找不到創意的身影,也許是考慮的太多或是工作真的太忙碌。

我相信很多人都有自己的想法,可能缺少了一點讓想法成為事實的動力或方法,我希望這些文章能夠激發你一些靈感或勇氣,如果你依然沒有人可以問、可以幫忙,也許你可以留言或是從社交媒體訊息給我,我會盡可能的以我的經驗給你一些建議。

你也有想做或沒做完的 Side Project 嗎?

不要讓老的時候沒有回憶可以聊,現在就開始吧!