Heroku 部署 SOP

步驟僅供參考,因為我其實沒有照著這步驟跑過 QQ,都是事後才整理的,不過要做的事情大概就這些,基本上應該不會錯?

1. 註冊 Heroku 帳號,並且填好信用卡資訊:傳送門
2. 建立一個新的資料夾,把寫好的作業複製一份到裡面,然後新建 .gitignore,與 package.json

.gitignore:
/node_modules
npm-debug.log
.DS_Store
/*.env

 

package.json:
{
  "name": "herukodraw-example",
  "version": "1.0.0",
  "description": "This example is so cool.",
  "main": "index.js",
  "scripts": {
    // 要執行 db:migrate 才會建起資料庫
    "db:migrate": "npx sequelize-cli db:migrate",
    // push 上 Heroku 時會執行 npm run start, 
    // 所以要寫好這個指令, 建立 DB 與 執行 index.js
    "start": "npm run db:migrate && node index.js", 
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [
    "example",
    "heroku"
  ],
  "author": "jane-doe",
  "license": "MIT",
  "dependencies": {
    // 確認好自己用了哪些模組
    "bcrypt": "^5.0.0",
    "body-parser": "^1.19.0",
    "connect-flash": "^0.1.1",
    "ejs": "^3.1.5",
    "express": "^4.17.1",
    "express-session": "^1.17.1",
    "jquery": "^3.5.1",
    "mysql": "^2.18.1",
    "mysql2": "^2.2.5",
    "sequelize": "^6.3.5",
    "sequelize-cli": "^6.2.0"
  },
  "devDependencies": {
    "sequelize-cli": "^6.2.0"
  },
  // 寫給 Heroku 的伺服器看, 他才知道要用什麼執行環境
  "engines": {
    "node": "10.x"
  }
}

3.改寫 index.js 的 PORT

const express = require('express');
const bodyParser = require('body-parser');
const session = require('express-session');
const flash = require('connect-flash');
const prizeController = require('./controllers/prizeController')
const adminController = require('./controllers/adminController')
const app = express();
// 要設定 port 讀取環境變數
const port = process.env.PORT || 3000;
 

 4. 進入 Heroku 官網建立 APP,取好名字就按 Create app:

5. 進入 app 管理頁面,點 Resources 標籤,搜尋 ClearDB,按 Submit Order Form(需要填好信用卡付款資訊,不然不給用)

6. 安裝好 Heroku CLI

7. 開啟 Terminal 輸入 heroku login

8. 輸入 heroku create,這邊會順便設定好 Heroku 遠端 git


9. 輸入 heroku addons:create cleardb:ignite 建立起資料庫

10. 改寫 config.json,這裡要在 production 加一個 use_env_variable,他的值會對應到你的資料庫,像我不小心建了兩個資料庫,所以會是 CLEARDB_RED_URL:

{
  "development": {
    "username": "root",
    "password": null,
    "database": "pool",
    "host": "localhost",
    "dialect": "mysql"
  },
  "test": {
    "username": "root",
    "password": null,
    "database": "database_test",
    "host": "127.0.0.1",
    "dialect": "mysql"
  },
  "production": {
    "username": "root",
    "password": null,
    "database": "database_production",
    "host": "127.0.0.1",
    "dialect": "mysql",
    "use_env_variable": "CLEARDB_RED_URL"
  }
}

11. 在本機完成 commit 

可以在 Terminal 輸入 heroku logs --tail 來看出了什麼錯
例如,沒改好 PORT,出現錯誤的 PORT 訊息:

 

READ MORE
[讀書日]不要看 30 秒掌握不了的文章

來源:李天豪臉書

在網路上寫文章、發影片想紅有個秘訣:「你只能領先讀者半步!」

換句話說,我們大多數人只能理解比自己多半步的知識,一但越過那條界線,文章將會艱深無比,文章硬度成指數型倍增。

我的 medium 後台數據

其中除了存檔洗洗睡乾淨程式碼,其他三篇我都往我的 FB 丟,想看看有什麼反應。結果最沒營養的廢文點閱率最高,我認真寫了一整天的爬蟲反而沒什麼人想看,你可能會心想:應該是客群不同吧,發去程式相關社團也許就會有人想看了吧?說的沒錯,先不管其他可能影響點閱的因素,因為讀者所掌握的知識領域不同的關係,所能夠理解的就只有多半步的東西,在多就上一頁返回或是根本不會點進來了,什麼奇怪的網路爬蟲我的朋友圈裡應該沒幾個有興趣,主題就很詭異了,內文更是不知道幹嘛,只有一堆噁心的外星符號(去年剛起步的我看程式類文章就是這麼想)。
相較之下發日常廢文大家都看得懂,越廢越獵奇越好,我也很喜歡看廢文,平常工作夠累了,下班當然需要些麻痺身心的網路廢文舒壓舒壓。

來源:反正我很閒,最近很喜歡的 Youtube 頻道。

反過來想,我如果要學一樣新技能找了很多課程、文章來看,同樣也只能吸收比我目前所掌握的知識多一些些難的東西,再深的話對學習就沒太大幫助了,就會變成死背硬記,沒辦法真正理解。
所以在我的原則就是:

不要看 30 秒內掌握不了的文章

「30 秒」是我亂掰的,沒有任何根據,反正不要花太多時間;
「掌握」與否也是很主觀,不過沒耐心看下去的通常就是掌握不了。

如果遇到感覺很重要只是現在看不懂的文章,我會加進書籤等長大再看

 

READ MORE
[PHP] CRUD

今天的目標是用 PHP 連接 MySQL ,做出簡單的 CRUD 功能。
我對 PHP 依舊蠻陌生的,所以找了完整的範本來研究:
PHP CRUD (Create, Update, Delete) with MySQL on a single page

東西是做出來了,但光是照著打都有點困難 XD,更不要說從零開始寫,還在完全不行的階段。雖然之前學 JavaScript 已經有基本的變數、迴圈、函式、物件…之類的概念,可是語法換了之後突然就不會用了、或是看不出來某段程式碼其實在做我早就很熟悉的東西:

* 盯著一段程式碼 *
OS:這到底在幹嘛
*花半小時查了一堆資料*
OS:原來就類似 forEach() 的概念…

可能還需要一點時間習慣吧。

晚上在看 Termsoup 的「文科生如何自學程式」的直播,讓我不禁回想起這一年來的種種經歷,有時間來整理一下心得。

READ MORE
第 1 頁
1
Top