Docker

참고사이트

깃헙같은 것이나 프로젝트 단위가 아닌 운영체제 단위로 작동한다고 보면 됨

Dockerfile을 작성하여 도커를 생성 후 설치해야될 패키지를 작성

FROM			ubuntu:16.04
MAINTAINER	isaccchoi@naver.com
RUN				apt-get update
  • FROM: 사용할 OS
  • MAINTAINER: 소유자의 이메일 주소
  • RUN: 실행할 용어
>>> docker build -t base . -f Dockerfile.base .

Dockerfile.base파일을 이용하여 도커 이미지 생성

>>> docker build -t eb -t Dockerfile

이게 기본 폼이나 해당위치에 Dockerfile이 있을 경우 생락 가능

>>> docker build -t eb .
>>> docker run --rm -it eb /bin/zsh

이미지 생성 완료후 zsh을 이용해 생성된 이미지로 도커 실행

Django

Secret Key 숨기기

django project의 settings.py에 있는 SECRET_KEY를 숨겨야 한다. 이럴 경우 데이터를 외부에 저장해서 불러오도록 변경하는 것이 좋다.

>>> take .config_secret

.config_secret 디렉토리 생성

>>> touch settings_common.json

JSON 파일 생성

{
	"django": {
		"secret_key": "<settings.py의 secretkey>"
	}
}

이렇게 파일을 제작 한다음 settings.py에 들어간다.

# ROOT_DIR 변수 생성
# instagram_project/
ROOT_DIR = os.path.dirname(BASE_DIR)

# CONFIG_SECRET_DIR 변수 생성
# instagram_project/.config_secret/
CONFIG_SECRET_DIR = os.path.join(ROOT_DIR, '.config_secret')

# instagram_project/.config_secret/settings_common.json 파일을 열고 config_secret_common_str 변수에 저장 한다 .
with open(os.path.join(CONFIG_SECRET_DIR, 'settings_common.json')) as f:
    config_secret_common_str = f.read()

# json에서 받아온 문자열을 json.loads 함수를 이용해 dict 형태로 변경한다.
config_secret_common = json.loads(config_secret_common_str)
SECRET_KEY = config_secret_common["django"]["secret_key"]

settings.py의 SECRET_KEY에 받아온 문자열을 딕셔너리 형태로 찾아 넣는다.

SQL Tutorial

https://www.w3schools.com/sql/default.asp

SELECT * FROM Customers;
CustomerID CustomerName ContactName Address City PostalCode Country
1 Alfreds FutterKiste Maria Anders Obere Str. 57 Berlin 12209 Germany
2 Ana Trujillo Emparedados y helados Ana Trujillo Avda. de la Constitucion 2222 Mexico D.F. 05021 Mexico
3 Antronio Moreno Taqyeria Antonio Moreno Mataderos 2312 Mexico D.F. 05023 Mexico
4 Around the Horn Thomas Hardy 120 Hanover Sq. London WA1 1DP UK
5 Berglunds snabbköp Christina Berglund Berguvsvägen 8 Luleå S-958 22 Sweden
  • SELECT - 데이터 베이스에서 추출
  • UPDATE - 데이터 베이스에 데이터를 업데이트
  • DELETE - 데이터 베이스에서 데이터를 삭제
  • INSERT INTO - 데이터 베이스에 데이터를 삽입
  • CREATE DATABASE - 새로운 데이터 베이스를 새성
  • ALTER DATABASE - 데이터베이스를 수정
  • CREATE TABLE - 새로운 테이블 생성
  • ALTER TABLE - 테이블 수정
  • DROP TABLE - 테이블 제거
  • CREATE INDEX - 인덱스를 생성(검색키)
  • DROP INDEX - 인덱스를 삭제

SELECT 문법

SELECT column1, column2, ...
From table_name;

상기 방법으로 추출시 해당 컬럼만 나오게 된다

SELECT CustomerName, City FROM Customer;
CustomerName City
Alfreds FutterKiste Berlin
Ana Trujillo Emparedados y helados Mexico D.F.
Antronio Moreno Taqyeria Mexico D.F.
Around the Horn London

SELECT DISTINCT

해당 문법 사용시 뒤에 작성한 Column에서 겹치지 않는 유일한 값만 찾아낸다(여러개가 있을 경우 한가지만 출력)

WEHRE 문법

조건을 주어 원하는 값을 찾아낼 수 있다.(여러값 가능)

SELECT * FROM Customers
WHERE CustomerID=1;

이 경우 에는 CustomerID가 1인 값만 추출 하며

SELECT * FROM Customers
WHERE Country='Mexico';

이 경우 에는 Country가 Mexico인 값만 추출해준다.

SQL AND, OR and NOT 문법

  • AND - 조건을 모두 만족할 경우에 추출
  • OR - 조건중 한가지를 만족할 경우에 추출
  • NOT - 조건이 아닌 경우만 추출
SELECT column1, column2, ...
FROM tabla_name
WHERE condition1 AND condition2 AND.... ;
SELECT column1, column2, ...
FROM table_name
WHERE codition1 OR condition2 OR ...;
SELECT column1, column2, ...
FROM table_name
WHERE NOT condition;

ORDER BY

정렬을 해주는 문법

  • DESC - 역순
  • ASC - 정순
SELECT column1, column2, ....
FROM table_name
ORDER BY column1, column2, .... ASC|DESC;

INSER INTO

데이터 삽입 맨 마지막에 데이터가 삽입 된다.

INSERT INTO Customers
VALUES ('Cardinal', 'Tom B. Erichsen', 'Skagen 21', 'Stavanger', '4006', 'Norway');

NULL

Where문을 통해 NULL 값을 찾을 수도 있으며 삽입시 넣을수도 있음

UPDATE

기존 데이터 변경 문법

UPDATE Customers
SET ContactName = 'Alfred Schmidt', City = 'Frankfurt'
WHERE CustomerID = 1;

CustomerID 가 1번인 값을 찾아 ContactName과 City를 변경

MVC pattern

Model - View - Controller pattern

- Model: Data
- View: 사용자에게 제공되는 화면(또는 기능)
- Controller: Model과 View사이에서 데이터를 가공하는 역할

장고에서의 MVC == MTV

- Model = Model
- View = Template
- Controllrer = View

순서

  1. 사용자의 요청이 Server에 도달
  2. Server는 해당 요청 URL을 Django에 전달
  3. Controller는 전달 받은 URL을 urlresolver로 분석해서 작업을 처리할 Controller에 연결
  4. Controller는 요청을 받아 사용자에게 제공할 View를 응답으로 리턴
  5. Server는 리턴받은 응답을 사용자에게 전달

파일 다루기

변수 = open(파일명, 모드)

모드의 첫 번째 글자

모드|설명 —|— r|읽기 w|쓰기 (파일이 이미 존재할 경우 덮어쓴다) x|쓰기 (단, 파일이 존재하지 않을 경우에만) a|추가 (파일이 존재할 경우 파일의 끝부터 쓴다)

모드의 두 번째 글자

모드 설명
t 또는 없음 텍스트타입
b 이진데이터 타입