๐ ํ์ด์ฌ (Python)
-
*๋น๋ฐ๋ฒํธ๋๊ณผ ๋น๋ฐ๋ฒํธ ํ์ธ ๋์ ๋ค๋ฅด๊ฒ ์ ๋ ฅํ์๋ *์๋ฌด๊ฒ๋ ์ ๋ ฅํ์ง ์๊ณ ๋ฑ๋ก ํ์๋ *Admin์์ ๋ฑ๋ก๋ ๋ชฉ๋ก ์ด์ ํฌ์คํ ์์ ์์ฑํ๋ user๋ผ๋ app์ ํ์๊ฐ์ ์ ์ํ ๋ฐ์ดํฐ ์ ์ก ๋ฐ ์ฝ์ ํด๋์ค๋ฅผ ๋ง๋ค์ด์ค๋๋ค. 1. ์ฅ๊ณ ORM์ ์ฌ์ฉํ์ฌ DB ํ ์ด๋ธ ๋ง๋ค๊ธฐ ํ์๊ฐ์ ์์์ ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ ๊ฐ(name, password)๋ฅผ DB์ ์ ์ฅํ๊ธฐ ์ํ models.py ์ ๋๋ค. *userํด๋ - models.py from django.db import models # Create your models here. class User(models.Model): #์ฅ๊ณ ์์ ์ ๊ณตํ๋ models.Model๋ฅผ ์์๋ฐ์์ผํ๋ค. username = models.CharField(max_length=64,ver..
์ฅ๊ณ (Django) - ํ์๊ฐ์ ๊ธฐ๋ฅ ๊ตฌํํ๊ธฐ (MVC)*๋น๋ฐ๋ฒํธ๋๊ณผ ๋น๋ฐ๋ฒํธ ํ์ธ ๋์ ๋ค๋ฅด๊ฒ ์ ๋ ฅํ์๋ *์๋ฌด๊ฒ๋ ์ ๋ ฅํ์ง ์๊ณ ๋ฑ๋ก ํ์๋ *Admin์์ ๋ฑ๋ก๋ ๋ชฉ๋ก ์ด์ ํฌ์คํ ์์ ์์ฑํ๋ user๋ผ๋ app์ ํ์๊ฐ์ ์ ์ํ ๋ฐ์ดํฐ ์ ์ก ๋ฐ ์ฝ์ ํด๋์ค๋ฅผ ๋ง๋ค์ด์ค๋๋ค. 1. ์ฅ๊ณ ORM์ ์ฌ์ฉํ์ฌ DB ํ ์ด๋ธ ๋ง๋ค๊ธฐ ํ์๊ฐ์ ์์์ ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ ๊ฐ(name, password)๋ฅผ DB์ ์ ์ฅํ๊ธฐ ์ํ models.py ์ ๋๋ค. *userํด๋ - models.py from django.db import models # Create your models here. class User(models.Model): #์ฅ๊ณ ์์ ์ ๊ณตํ๋ models.Model๋ฅผ ์์๋ฐ์์ผํ๋ค. username = models.CharField(max_length=64,ver..
2019.12.28 -
*์ฅ๊ณ ์ค์นํ๊ธฐ * pip install django ๋ฅผ ์ ๋ ฅํด ์ฅ๊ณ ๋ฅผ ์ค์นํด์ค๋๋ค. ์ฅ๊ณ ๊ฐ ์ค์น๋๋ฉด, django-admin ์ผ๋ก ์์๋๋ ๋ช ๋ น์ ํ ์ ์์ต๋๋ค. ์ผ๋จ ๊ฐ์ฅ๋จผ์ ํ๋ก์ ํธ๋ฅผ ๋ง๋ค์ด์ค์ผ ํฉ๋๋ค. *ํ๋ก์ ํธ ์์ฑํ๊ธฐ *django-admin startproject "ํ๋ก์ ํธ ์ด๋ฆ" ์ ๋ ฅ์ ํ๊ณ ๋๋ฉด , ํด๋๊ฐ ์๊ธฐ๊ณ , ์์ ์ฌ๋ฌ๊ฐ์ง ํ์ด์ฌ ํ์ผ์ด ์๊น๋๋ค. (์ฅ๊ณ ๋ผ๋ ํ๋ ์์ํฌ๊ฐ ํ๋ก์ ํธ์ ๊ตฌ์ฑ์์๋ฅผ ๋ง๋ค์ด์ค๋๋ค.) ์ ๋ django-admin startproject new_1 ์ผ๋ก ํ๊ธฐ๋๋ฌธ์ new_1์ด๋ผ๋ ํด๋๊ฐ ์๊ฒผ์ต๋๋ค. ๋ค์์ ํ๋ก์ ํธ ์์ ๊ตฌ์ฑํด์ค app ์ ์์ฑํฉ๋๋ค. *app ์์ฑํ๊ธฐ *django-admin startapp "์ฑ ์ด๋ฆ" ๋ง์ฐฌ๊ฐ์ง๋ก ์ฑ์ ์์ฑํ๋ฉด ํด๋๊ฐ ์๊น๋๋ค..
์ฅ๊ณ (Django) - ์ค์น , ํ๋ก์ ํธ ์์ํ๊ธฐ, ์ฑ ๋ง๋ค๊ธฐ , ์ฑ ๋ฑ๋กํ๊ธฐ*์ฅ๊ณ ์ค์นํ๊ธฐ * pip install django ๋ฅผ ์ ๋ ฅํด ์ฅ๊ณ ๋ฅผ ์ค์นํด์ค๋๋ค. ์ฅ๊ณ ๊ฐ ์ค์น๋๋ฉด, django-admin ์ผ๋ก ์์๋๋ ๋ช ๋ น์ ํ ์ ์์ต๋๋ค. ์ผ๋จ ๊ฐ์ฅ๋จผ์ ํ๋ก์ ํธ๋ฅผ ๋ง๋ค์ด์ค์ผ ํฉ๋๋ค. *ํ๋ก์ ํธ ์์ฑํ๊ธฐ *django-admin startproject "ํ๋ก์ ํธ ์ด๋ฆ" ์ ๋ ฅ์ ํ๊ณ ๋๋ฉด , ํด๋๊ฐ ์๊ธฐ๊ณ , ์์ ์ฌ๋ฌ๊ฐ์ง ํ์ด์ฌ ํ์ผ์ด ์๊น๋๋ค. (์ฅ๊ณ ๋ผ๋ ํ๋ ์์ํฌ๊ฐ ํ๋ก์ ํธ์ ๊ตฌ์ฑ์์๋ฅผ ๋ง๋ค์ด์ค๋๋ค.) ์ ๋ django-admin startproject new_1 ์ผ๋ก ํ๊ธฐ๋๋ฌธ์ new_1์ด๋ผ๋ ํด๋๊ฐ ์๊ฒผ์ต๋๋ค. ๋ค์์ ํ๋ก์ ํธ ์์ ๊ตฌ์ฑํด์ค app ์ ์์ฑํฉ๋๋ค. *app ์์ฑํ๊ธฐ *django-admin startapp "์ฑ ์ด๋ฆ" ๋ง์ฐฌ๊ฐ์ง๋ก ์ฑ์ ์์ฑํ๋ฉด ํด๋๊ฐ ์๊น๋๋ค..
2019.12.28 -
*ํ๋์จ์ด Hardware : ๋ฌผ๋ฆฌ์ ์ผ๋ก ๊ตฌ์ฑ๋๋ ๋ชจ๋ ์ฅ์น๋ ๋ถํ. CPU , ๋ฉ๋ชจ๋ฆฌ, ๋ง์ฐ์ค... 1)์ค์ ์ฒ๋ฆฌ ์ฅ์น CPU ํ๋ก๊ทธ๋จ์ ์ ์๋ ๋ชจ๋ ์ผ์ ์ค์ ๋ก ์ํ 2)์ฃผ๊ธฐ์ต์ฅ์น Main Memory ํ๋ก๊ทธ๋จ ์ํ์ ํ์ํ ํ๋ก๊ทธ๋จ ๋ฐ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์์ญ. ์ด ๊ณณ์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ 'ํ๋ฐ์ฑ'์ด๋ค.(์ ์์ด Off๋๋ฉด ๋ฐ์ดํฐ๋ ์ฌ๋ผ์ง๋ค.) 3)๋ณด์กฐ ๊ธฐ์ต ์ฅ์น Secondary storage device ํ๋ ๋์คํฌ์ CD,DVD ๋๋ผ์ด๋ธ๋ฅผ ๋งํ๋ค. ์ ์์ด Off๋์ด๋ ๋ฐ์ดํฐ๋ ์ ์ง๋๋ค. ํ์ง๋ง ์ด๊ณณ์์ ํ๋ก๊ทธ๋จ์ด๋ ๋ฐ์ดํฐ๋ฅผ ์ง์ ์คํ์ ํ ์ ์๋ค. ์ฃผ๊ธฐ์ต์ฅ์น๋ก ์ฎ๊ธด ํ์ ์ํ ๊ฐ๋ฅํ๋ค. 4)์ , ์ถ๋ ฅ ์ฅ์น input, output device ํค๋ณด๋์ ์นด๋ฉ๋ผ, ๋ง์ฐ์ค๋ ์ ๋ ฅ์ฅ์น์ด๋ค. (์ธ๋ถ์ ๋ฐ์ด..
์ปดํจํฐ์ ๋์ ๋ฐฉ์, ํ์ด์ฌ์ ๋์ ๋ฐฉ์ ๊ธฐ๋ณธ ๊ฐ๋ *ํ๋์จ์ด Hardware : ๋ฌผ๋ฆฌ์ ์ผ๋ก ๊ตฌ์ฑ๋๋ ๋ชจ๋ ์ฅ์น๋ ๋ถํ. CPU , ๋ฉ๋ชจ๋ฆฌ, ๋ง์ฐ์ค... 1)์ค์ ์ฒ๋ฆฌ ์ฅ์น CPU ํ๋ก๊ทธ๋จ์ ์ ์๋ ๋ชจ๋ ์ผ์ ์ค์ ๋ก ์ํ 2)์ฃผ๊ธฐ์ต์ฅ์น Main Memory ํ๋ก๊ทธ๋จ ์ํ์ ํ์ํ ํ๋ก๊ทธ๋จ ๋ฐ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์์ญ. ์ด ๊ณณ์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ 'ํ๋ฐ์ฑ'์ด๋ค.(์ ์์ด Off๋๋ฉด ๋ฐ์ดํฐ๋ ์ฌ๋ผ์ง๋ค.) 3)๋ณด์กฐ ๊ธฐ์ต ์ฅ์น Secondary storage device ํ๋ ๋์คํฌ์ CD,DVD ๋๋ผ์ด๋ธ๋ฅผ ๋งํ๋ค. ์ ์์ด Off๋์ด๋ ๋ฐ์ดํฐ๋ ์ ์ง๋๋ค. ํ์ง๋ง ์ด๊ณณ์์ ํ๋ก๊ทธ๋จ์ด๋ ๋ฐ์ดํฐ๋ฅผ ์ง์ ์คํ์ ํ ์ ์๋ค. ์ฃผ๊ธฐ์ต์ฅ์น๋ก ์ฎ๊ธด ํ์ ์ํ ๊ฐ๋ฅํ๋ค. 4)์ , ์ถ๋ ฅ ์ฅ์น input, output device ํค๋ณด๋์ ์นด๋ฉ๋ผ, ๋ง์ฐ์ค๋ ์ ๋ ฅ์ฅ์น์ด๋ค. (์ธ๋ถ์ ๋ฐ์ด..
2019.12.26 -
์ด์ ํฌ์คํ ์์ ์๋ฌ์ ์ข ๋ฅ์ ๋ํด์ ๋ค๋ฃจ์์ต๋๋ค. ํ์ด์ฌ์ EAFP๋ฐฉ์์ ์ฝ๋ฉ์คํ์ผ์ ๊ถ์ฅํ๋ค๊ณ ํฉ๋๋ค. EAFP๋ “It’s Easier to Ask Forgiveness than Permission” “ํ๋ฝ์ ๊ตฌํ๋ ๊ฒ ๋ณด๋ค ์ฉ์๋ฅผ ๊ตฌํ๋ ๊ฒ์ด ์ฝ๋ค. ์๋ฌ์ ์์ ์ผ๋จ ์ํ ์ํค๊ณ (try), ์๋ฌ๊ฐ ๋ฐ์ํ๋ฉด ๊ทธ๋ ์ฒ๋ฆฌํ๋ค(except) ๋ผ๋ ๋ป์ด๋ผ๊ณ ํฉ๋๋ค. *์์ธ์ฒ๋ฆฌ ๊ธฐ๋ณธ๊ตฌ์กฐ try : ์๋ฌ ๋ฐ์ ๊ฐ๋ฅ์ฑ์ด ์๋ ์ฝ๋ ์คํ except : ์๋ฌ๋ช 1 except : ์๋ฌ๋ช 2 else : (for. if . try) ์๋ฌ๊ฐ ๋ฐ์ํ์ง ์์์๋ ์คํ finally : ์๋ฌ์ ๋ฐ์ ์ฌ๋ถ์ ๊ด๊ณ์์ด ํญ์ ์คํ๋๋ ๊ตฌ๋ฌธ *์์ 1 ๊ธฐ๋ณธ ๊ตฌ์กฐ #์์ 1 name = ['nakamura', 'lee','park..
ํ์ด์ฌ(Python) ๊ธฐ์ด (15) EAFP error ์์ธ์ฒ๋ฆฌ Try , except , raise์ด์ ํฌ์คํ ์์ ์๋ฌ์ ์ข ๋ฅ์ ๋ํด์ ๋ค๋ฃจ์์ต๋๋ค. ํ์ด์ฌ์ EAFP๋ฐฉ์์ ์ฝ๋ฉ์คํ์ผ์ ๊ถ์ฅํ๋ค๊ณ ํฉ๋๋ค. EAFP๋ “It’s Easier to Ask Forgiveness than Permission” “ํ๋ฝ์ ๊ตฌํ๋ ๊ฒ ๋ณด๋ค ์ฉ์๋ฅผ ๊ตฌํ๋ ๊ฒ์ด ์ฝ๋ค. ์๋ฌ์ ์์ ์ผ๋จ ์ํ ์ํค๊ณ (try), ์๋ฌ๊ฐ ๋ฐ์ํ๋ฉด ๊ทธ๋ ์ฒ๋ฆฌํ๋ค(except) ๋ผ๋ ๋ป์ด๋ผ๊ณ ํฉ๋๋ค. *์์ธ์ฒ๋ฆฌ ๊ธฐ๋ณธ๊ตฌ์กฐ try : ์๋ฌ ๋ฐ์ ๊ฐ๋ฅ์ฑ์ด ์๋ ์ฝ๋ ์คํ except : ์๋ฌ๋ช 1 except : ์๋ฌ๋ช 2 else : (for. if . try) ์๋ฌ๊ฐ ๋ฐ์ํ์ง ์์์๋ ์คํ finally : ์๋ฌ์ ๋ฐ์ ์ฌ๋ถ์ ๊ด๊ณ์์ด ํญ์ ์คํ๋๋ ๊ตฌ๋ฌธ *์์ 1 ๊ธฐ๋ณธ ๊ตฌ์กฐ #์์ 1 name = ['nakamura', 'lee','park..
2019.12.21 -
tkinter๋ ์คํฌ๋ฆฝํธ์์ฑ์ ํตํด์๋ง ์คํ ๊ฐ๋ฅํ์ง๋ง, PyQt5๋ Designer๋ผ๋ tool๋ ๊ฐ์ด ์ ๊ณต๋์ด ๋ ์์ฑํ๊ธฐ ํธ๋ฆฌํฉ๋๋ค. *PyQt5 Designer ์ ํ๋ฉด์ ํ๋ก๊ทธ๋จ์์ ๋๋๊ทธ๋ฅผ ํตํด ์์ ฏ๊ณผ ๊ธฐ๋ฅ์ ๋ฐฐ์น ๊ฐ๋ฅํฉ๋๋ค. ๊ทธ ํ์ .uiํ์ฅ์๋ฅผ ๊ฐ์ง (XMLํ์ผ)๋ก ์ ์ฅ์ด ๋๋ฉฐ, ํ์ด์ฌ ํฐ๋ฏธ๋์ฐฝ์์ Converter๋ฅผ ์ฌ์ฉํ์ฌ .py ํ์ผ๋ก ๋ณํํ์ฌ ์ฌ์ฉ ๊ฐ๋ฅํฉ๋๋ค. *PyQt5 ์ค์น๋ฐฉ๋ฒ pip install pyqt5 pip install pyqt5-tools (ํด ์ค์น) ๋ค์ ํ์ด์ฌ์ ์ค์น๊ฒฝ๋ก๋ฅผ ์ฐพ์ ๋ค์ด๊ฐ๋ฉด, pyqt-tools\Qt\bin ํด๋์ Designer ์คํํ์ผ์ด ์์ต๋๋ค. ์ ๊ฐ์ ๊ฒฝ์ฐ๋ ๊ฐ์ํ๊ฒฝ ์ฌ์ฉ์ค์ด๋ผ(C:\python_jy\jy\Lib\site-packages\p..
<PyQt5> Python Gui ์ธํฐํ์ด์ค ์์ฑ ์ค์น ๋ฐฉ๋ฒ ๋ฐ ์ฌ์ฉ๋ฒtkinter๋ ์คํฌ๋ฆฝํธ์์ฑ์ ํตํด์๋ง ์คํ ๊ฐ๋ฅํ์ง๋ง, PyQt5๋ Designer๋ผ๋ tool๋ ๊ฐ์ด ์ ๊ณต๋์ด ๋ ์์ฑํ๊ธฐ ํธ๋ฆฌํฉ๋๋ค. *PyQt5 Designer ์ ํ๋ฉด์ ํ๋ก๊ทธ๋จ์์ ๋๋๊ทธ๋ฅผ ํตํด ์์ ฏ๊ณผ ๊ธฐ๋ฅ์ ๋ฐฐ์น ๊ฐ๋ฅํฉ๋๋ค. ๊ทธ ํ์ .uiํ์ฅ์๋ฅผ ๊ฐ์ง (XMLํ์ผ)๋ก ์ ์ฅ์ด ๋๋ฉฐ, ํ์ด์ฌ ํฐ๋ฏธ๋์ฐฝ์์ Converter๋ฅผ ์ฌ์ฉํ์ฌ .py ํ์ผ๋ก ๋ณํํ์ฌ ์ฌ์ฉ ๊ฐ๋ฅํฉ๋๋ค. *PyQt5 ์ค์น๋ฐฉ๋ฒ pip install pyqt5 pip install pyqt5-tools (ํด ์ค์น) ๋ค์ ํ์ด์ฌ์ ์ค์น๊ฒฝ๋ก๋ฅผ ์ฐพ์ ๋ค์ด๊ฐ๋ฉด, pyqt-tools\Qt\bin ํด๋์ Designer ์คํํ์ผ์ด ์์ต๋๋ค. ์ ๊ฐ์ ๊ฒฝ์ฐ๋ ๊ฐ์ํ๊ฒฝ ์ฌ์ฉ์ค์ด๋ผ(C:\python_jy\jy\Lib\site-packages\p..
2019.12.19 -
import sys, os, random from PyQt5 import QtCore from PyQt5.QtWidgets import * import numpy as np from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas from matplotlib.figure import Figure import matplotlib.animation as animation import random class MyMplCanvas(FigureCanvas): def __init__(self, parent=None, width=5, height=4, dpi=100): fig = Figure(figsize=(width, heigh..
<PtQt5> + <matplotlib> ์ค์๊ฐ ๊ทธ๋ํ ๊ทธ๋ฆฌ๊ธฐ.import sys, os, random from PyQt5 import QtCore from PyQt5.QtWidgets import * import numpy as np from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas from matplotlib.figure import Figure import matplotlib.animation as animation import random class MyMplCanvas(FigureCanvas): def __init__(self, parent=None, width=5, height=4, dpi=100): fig = Figure(figsize=(width, heigh..
2019.12.19