Online Timeplanner with Lectures Plus @ KAIST https://otl.kaist.ac.kr/
- ๊ตฌ๊ธ ๋๋ผ์ด๋ธ (archived): https://drive.google.com/folderview?id=0By2h7PuCHN8ZUmJ6cjQtQlJUNDA&usp=sharing
- ํ์๋ค์ ํํด doc.google.com์ otlplus ๊ณต์ฉ๊ณ์ : [email protected]์ผ๋ก ๋ก๊ทธ์ธํด์ ์ด๋ํ์ค ์๋ ์์ต๋๋ค.
- Notion: https://www.notion.so/sparcs/OTL-Plus-69724cd9c1434d64ac379e8f6590c885
- Slack: #otl, #otl-plus, #otl-notify
- Contact: [email protected]
Invision ํ๋กํ ํ์ (deprecated): https://invis.io/7FATPIZHK๊ตฌ๊ธ ๋๋ผ์ด๋ธ (deprecated): https://drive.google.com/drive/folders/0B7OgXXGKTmCOamtPS0NRNzFXdHc?usp=sharing- XD ํ๋กํ ํ์ : https://xd.adobe.com/view/abb6898c-eff7-42c1-b383-b9518d8c68af-fee5/?fullscreen
- XD ๊ฐ๋ฐ ์ฌ์: https://xd.adobe.com/view/6a2a4884-ac98-4c59-85ea-950e2f3012d6-3f79/
- Docker๊ฐ ์ค์น๋์ด ์์ด์ผ ํฉ๋๋ค.
- Windows์ ๊ฒฝ์ฐ wsl shell์์ ๋ช ๋ น์ด๋ค์ ์คํํด์ผ ํฉ๋๋ค.
- Frontend๋ 3000, Backend๋ 58000, DB๋ 53306 ํฌํธ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ฐ๋ผ์ ์ด ํฌํธ๋ค์ ์ฌ์ฉ๋์ง ์์ ์ํ์ฌ์ผ ํฉ๋๋ค.
git clone https://github.com/sparcs-kaist/otlplus
cd otlplus
DJANGO_SECRET_KEY
๋ ์์์ ๋ฌธ์์ด์ ์ฌ์ฉํด๋ ๋ฌด๊ดํฉ๋๋ค.
mkdir keys && touch ./keys/sso_secret && echo "DJANGO_SECRET_KEY" > ./keys/django_secret
- SPARCS ๊ณ์ ์ผ๋ก sparcssso.kaist.ac.kr ๋ก๊ทธ์ธํ ํ ์๋จ์ Dev Center๋ก ์ ์
- Test Services์ register๋ฅผ ๋๋ฆ ๋๋ค.
- ๋ค์์ ์ ๋ณด๋ฅผ ์ ๋ ฅํ์ฌ Test Service๋ฅผ ์์ฑํฉ๋๋ค.
Alias: (Any name)
Main URL: http://localhost:3000
Login Callback URL: http://localhost:58000/session/login/callback
Unregister URL: http://localhost:58000/session/unregister
Cooltime: 0
- Dev Center ํ์ผ๋ก ๋์๊ฐ ์์ฑ๋ Test Service์ ์์นํ Modify ๋ฒํผ์ ๋๋ฆ ๋๋ค.
- otlplus ํด๋์ ./settings_local.py๋ฅผ ์์ฑํ ํ 4์์ ๋ค์ด๊ฐ ํ์ด์ง์ ์ ํ Name๊ณผ Secret Key๋ฅผ ์ฐธ๊ณ ํ์ฌ ๋ค์์ ํ์์ผ๋ก ์์ฑํฉ๋๋ค.
SSO_IS_BETA = False
SSO_CLIENT_ID = "test0000000000000000" # SSO์ 'Name' (๋๋ 'Client ID') ํ๋
SSO_SECRET_KEY = "00000000000000000000" # SSO์ 'Secret Key' ํ๋
Backend๋ฅผ ์์ํ๊ณ ์ถ๋ค๋ฉด otlplus ํด๋์์ ๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
OTLPLUS_DB_PASSWORD=p@ssw0rd docker compose up
WSL์์ docker ๋ช ๋ น์ด ์์์ผ๋ก ๋ฌ๋ค๋ฉด,
Docker ์คํ ํ settings > resources >wsl integration >enable integration with ~ ๋ฅผ ์ผ์ค๋๋ค.
docker compose up
์ ์คํํ ๋ฐฉ๊ธ ํฐ๋ฏธ๋์ ๊ทธ๋๋ก ๋ก๋๋ค.- ์๋ก์ด ํฐ๋ฏธ๋์ ์ผญ๋๋ค.
- ๋ค์์ ํ ์ค์ฉ ์คํํฉ๋๋ค.
docker exec -it otlplus-back /bin/bash
python manage.py migrate
exit
- ๋ด๋น์์๊ฒ ์์ฒญํด์ dump.sql ํ์ผ์ ๋ค์ด๋ก๋ ๋ฐ์ต๋๋ค.
- otlplus ํด๋ ๊ธฐ์ค ./volumes/dump/dump.sql ๊ฒฝ๋ก๋ก dump.sql์ ์ฎ๊น๋๋ค.
- ๋ค์์ ํ ์ค์ฉ ์คํํฉ๋๋ค.
docker exec -it otlplus-db /bin/bash
mysql -uroot -p'p@ssw0rd' -Dotlplus < /dump/dump.sql
exit
ํ๋ก ํธ์๋ ์ฝ๋๋ otlplus-web ๋ ํฌ์ ์์ต๋๋ค. ์๋ ๋ช ๋ น์ด์ ๊ฐ์ด ์ํ๋ ์์น์ ํด๋น ๋ ํฌ๋ฅผ ํด๋ก ํ ํ ์คํํด ์ฃผ์ธ์.
cd ..
git clone https://github.com/sparcs-kaist/otlplus-web
cd otlplus-web
npm i
npm start
DB ์ ์์ ์ํ๋ ๊ฒฝ์ฐ ๋ค์์ ์ ๋ณด๋ฅผ ์ฌ์ฉํ์ธ์.
host: localhost
port: 53306
user: root
password: p@ssw0rd
name: otlplus
๋ง์ฝ ์คํํ๋ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ ๋ฆฌํ๊ณ ์ถ๋ค๋ฉด ์๋ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํด ์ฃผ์ธ์.
docker compose down
rm -rf ./volumes/db
local window์ clone ํ, wsl shell๋ก ์คํํ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
(local window์ cloneํ๋ฉด user@desktop:mnt/
์์ ์คํ๋ฉ๋๋ค.)
wsl2 shell์ ์คํํ ๋ค, wsl2 shell ์์์ git clone์ ํด์ผ ํฉ๋๋ค.
docker ๋ช ๋ น์ด ์๋ค๋ ์ฝ์์ฐฝ์ด ๋จ๋ฉด ์๋ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ์ฌ wsl version์ด 1์ธ distro๋ฅผ ํ์ธ ํ ๋ค, wsl version 2๋ก ๋ฐ๊พธ์ด์ค๋๋ค.
wsl.exe -l -v
wsl.exe --set-version (distro name) 2
2023.5.5. ๊น์ง ์ฌ์ฉํ๋ Docker Compose ์๋ ๊ฐ๋ฐ ํ๊ฒฝ์ ๋๋ค.
Working directory: PROJECT_ROOT
@sboh1214: [email protected] ๊ณผ [email protected] ์์ ์ ์์๋ ํ์ธํ์์ต๋๋ค. (2023-03-10)
# ๊ฐ์ํ๊ฒฝ ์ค์
$ python3 -m venv env # Python ๋ฒ์ 3.6 ์ด์ ๊ถ์ฅ
$ source env/bin/activate
# ํจํค์ง ์ค์น
$ pip install -r requirements.txt # unixodbc, [email protected] ๋ฑ์ ๋จผ์ ์ค์นํด์ผ ํ ์ ์์ (apt, brew ๋ฑ์ผ๋ก ์ค์น)
# Secret key ์ค์
$ mkdir keys
$ vi keys/django_secret # Random string ์
๋ ฅ, Django SECRET_KEY ๋ช
์ธ ์ฐธ๊ณ
$ touch keys/sso_secret
# DB migrate
$ python manage.py migrate
๋ง์ฝ ํ์ด์ฌ ํจํค์ง ์ค์น๊ฐ ์ ์์ ์ผ๋ก ์ด๋ฃจ์ด์ง์ง ์๋๋ค๋ฉด ์๋ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํด์ฃผ์ธ์.
pip install -r requirements.txt --use-feature=2020-resolver
dump ๋ฐ์ดํฐ๋ PM์๊ฒ ์์ฒญํ์ธ์.
Working directory: PROJECT_ROOT
# Dump ํ์ผ ๋ถ๋ฌ์ค๊ธฐ
$ python manage.py load-dev-data dumps/otldump_DATE_info.json
SSO ์ค์ ๋ฐฉ๋ฒ์ ๋ณ๊ฒฝ๋ ์ ์์ต๋๋ค. SSO ๊ณต์ ์ค์ ๋ฐฉ๋ฒ์ ์ฐธ๊ณ ํ์ธ์.
URL: sparcssso.kaist.ac.kr > Dev Center > Test Services > Register
Alias: (Any name)
Main URL: http://localhost:8000
Login Callback URL: http://localhost:8000/session/login/callback
Unregister URL: http://localhost:8000/session/unregister
Cooltime: 0
Working directory: PROJECT_ROOT
$ vi settings_local.py
File: PROJECT_ROOT/settings_local.py
# ...
SSO_IS_BETA = False
SSO_CLIENT_ID = "test0000000000000000" # SSO์ 'Name' (๋๋ 'Client ID') ํ๋
SSO_SECRET_KEY = "00000000000000000000" # SSO์ 'Secret Key' ํ๋
Working directory: PROJECT_ROOT/react
# ํจํค์ง ์ค์น
$ npm install
# ๊ฐ๋ฐ ์๋ฒ ์คํ
$ npm start
# ํ๋ก์ ํธ ๋น๋
$ npm run build
Working directory: PROJECT_ROOT
$ python manage.py runserver 0.0.0.0:8000
์ด๋ ๋ฐ๋์ ๋ธ๋ผ์ฐ์ ์์ http://localhost:8000
์ผ๋ก ์ ์ํด์ผ ํฉ๋๋ค.
VSCode(Visual Studio Code) ๋ฐ ์๋ ์ค์ ์ ๊ถ์ฅํฉ๋๋ค.
- Extension ์ค์น
- ์ค์
- Command Palatte (๋จ์ถํค: F1) > Python: Select Linter > pylint
์๋ ๋ช ๋ น์ด๋ก python์ ์ ์ฉ๋ sqlite3 ๋ฒ์ ํ์ธ
$ python -c "import sqlite3;print(sqlite3.sqlite_version)"
3.26.0 ์ดํ๋ผ๋ฉด ๋์ ๋ฒ์ ์ python์ผ๋ก ์ฌ์ค์น ํ ์ฒ์๋ถํฐ ์ฌ์ค์
- node-sass ํธํ node.js ๋ฒ์ ์ ํ์ธํด์ ์ ์ ํ ๋ฒ์ ์ ์ฌ์ฉ
gyp: No Xcode or CLT version detected!
๋ผ๋ ๋ฉ์์ง์ ํจ๊ป ์ค์น์ ์คํจํ๋ค๋ฉด ๊ด๋ จ ์ด์์ ์ฝ๋ฉํธ ์ฐธ๊ณ
[email protected] (5.7 ๋ฒ์ ์ด์ด์ผ ํ๋ ์ด์ ) ์ ์ค์น ํ PATH์ ํด๋น ์คํ ํ์ผ ๋๋ ํฐ๋ฆฌ๋ฅผ ์ถ๊ฐํ๋ค. ์๋ฅผ ๋ค๋ฉด (macOS ๊ธฐ์ค),
$ brew install [email protected]
$ export PATH="/opt/homebrew/opt/[email protected]/bin:$PATH" # add this line to ~/.bashrc, .zshrc, etc.
์ผ๋ถ ์กฐ๊ฑด์์ no such column: main_famoushumanityreviewdailyfeed_reviews.review_id
์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์์
Working directory: PROJECT_ROOT
# DB ์ด๊ธฐํ
$ rm db.sqlite3
# DB migrate ์ฌ์คํ
$ python manage.py migrate main 0006
$ python manage.py migrate review 0009
$ python manage.py migrate
์ดํ ๊ฐ๋ฐ์ฉ DB ์ค์ ์ฌ์คํ
/otlplus/include -arch arm64 -I/opt/homebrew/Caskroom/miniconda/base/envs/otlplus/include -arch arm64 -DPYODBC_VERSION=4.0.32 -UMAC_OS_X_VERSION_10_7 -I/opt/homebrew/Caskroom/miniconda/base/envs/otlplus/include/python3.8 -c src/buffer.cpp -o build/temp.macosx-11.1-arm64-3.8/src/buffer.o -Wno-write-strings -Wno-deprecated-declarations
In file included from src/buffer.cpp:12:
src/pyodbc.h:56:10: fatal error: 'sql.h' file not found
#include <sql.h>
^~~~~~~
1 error generated.
error: command '/usr/bin/gcc' failed with exit code 1
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
error: legacy-install-failure
ร Encountered error while trying to install package.
โฐโ> pyodbc
note: This is an issue with the package mentioned above, not pip.
hint: See above for output from the failure.
mkleehammer/pyodbc#846 (comment) ์ฐธ์กฐ
brew install unixodbc
export LDFLAGS="-L/opt/homebrew/lib"
export CFLAGS="-I/opt/homebrew/include"
export CPPFLAGS="-I/opt/homebrew/include"
pip install -r requirements.txt