본문 바로가기

전체 글112

#2. django 모델 및 뷰 작성 이번에는 모델과 뷰를 작성해볼 것이다. 일단 모델과 뷰가 무엇인지 간단하게 이해해보자. Spring을 한 사람이라면 MVC (Model, View, Controller)라는 개념을 알 것이다. 여기에 django는 MTV (Model, Template, View)가 대응한다. 모델은 데이터베이스의 스키마를 정의하는 것이고, 뷰는 사용자의 요청에 따라 어떻게 처리할 것인지를 로직으로 구현한 부분이라고 생각하면 쉽다. 우선 우리는 두 가지의 모델(데이터베이스 테이블의 스키마)을 정의할 것이다. polls/models.pyimport datetime from django.db import models from django.utils import timezone # Create your models here. .. 2020. 12. 28.
#2. 데코레이터 패턴 (Decorator Pattern) 데코레이터 패턴은 기능을 동적으로 확장할 때 유용한 패턴이다. 예를 들어보자. A라는 기본기능과 B, C, D라는 추가 기능을 조합할 경우, 경우의 수는 A A + B A + C A + D A + B + C A + B + D A + C + D A + B + C + D 8가지의 경우가 나온다. 그럼 무식하게 메소드만을 활용하여 (상속을 통해) 8가지의 클래스를 정의해서 사용할 것인가? 최악의 경우를 생각해보자. 추가 기능이 1억개면? 답이 없다.. 그래서 메소드가 아닌 인스턴스의 조합을 활용하면 어떨까? 라는 생각에서 나온것이 데코레이터 패턴이다. 첨언을 하자면, DefaultBehavior 클래스는 기본기능이라고 생각하자. public abstract class Base { public abstract .. 2020. 12. 28.
#3. pickle 모듈 직장에서 PyQt 작업하는 도중 QTableWidget에 들어있는 데이터를 복사해야 하는 경우가 생겼다. 필자는 데이터를 꺼내서 옮겨 붙여넣는 과정이 매우 번거롭다고 생각했다. 그래서 QTableWidget 객체 자체를 복사하면 어떨까? 라는 의문을 가졌다. 그리고 처음으로 시도한 것은 copy 모듈을 사용하여 객체를 깊은 복사(deep copy)를 시도했다. 그러나, Can't Pickle 이라는 문구와 함께 복사가 되지 않았다. Pickle? 먹는 피클이 왜 나오지? 라는 궁금증과 함께 바로 구글링을 시도했다. QTableWidget과 같은 클래스는 model-view programming?으로 이루어져 있기 때문에 복사가 불가능하다는 글을 본 것 같다. 이 부분에 대해서는 추후에 따로 공부해야겠다... 2020. 12. 18.
#2. 접근제한자 (Access Modifier) 오늘은 파이썬의 접근제한자에 대해 다뤄보겠다. 파이썬을 사용하며 익숙해질때쯔음.. 무언가 이상한 점을 느꼈다. 왜 파이썬에서는 public, protected, private이라는 키워드를 본적이 없지? 궁금해진 필자는 쏜살같이 구글링을 하며 찾은 내용들을 여기다가 정리한다. 일단 결론부터 얘기하면 파이썬에 접근제한자에 대한 키워드는 없다. 그럼 어떡함? 이라는 의문이 들것이다. 정답은 명명규칙에 있었다. 멤버(함수, 변수)명 앞에 _를 한 번 쓰면 protected 멤버(함수, 변수)명 앞에 _를 두 번 쓰면 private 주의할 점은 멤버명 뒤에 _를 두 번 쓰면 다시 public이 된다. public member, member__, _member__, __member__ protected _memb.. 2020. 12. 14.
#1. django 서버 구동 및 관리자 페이지 탐방 이번에는 django 서버를 구동 및 관리자 페이지에 대해서 보겠다. 서버를 구동하기 위해서는 역시나 manage.py를 통해 구동한다. 루트 디렉터리에서 다음과 같이 명령어를 입력해보자. python manage.py runserver [IP주소]:[PORT] 옵션으로 IP주소와 포트 번호를 입력하면 구동 위치가 바뀐다. 필자는 기본으로 진행을 하겠다. 성공적으로 구동되었다면 체크된 url을 브라우저에서 실행시켰을 때 축하한다는 문구가 출력될 것이다. 그렇다면 이제 관리자 페이지에 접속하기 위한 준비를 해보자. python manage.py migrate 위의 명령어는 생성된 마이그레이션을 적용하는 명령어이다. 이 부분에 대해서는 뒤에서 자세하게 다룰 예정이니 일단 이 명령어를 실행하도록 한다. (최초.. 2020. 12. 14.
#1. 싱글턴 패턴 (Singletone Pattern) 짧지만... 첫 직장에서 Unity를 개발했다. 생전 처음으로 Unity를 접해본 나는 Component, GameObject등 다양한 타입의 객체들이 있었는데 무작정 작동을 하는데에만 신경을 쓴 나머지 같은 객체의 생성자를 불필요하게 남발한 적이 있다. 그리고, 필자는 책임님한테 무지하게 혼났다능..ㅠㅠ 그리고 디자인패턴에 관심을 가지게 되어 처음으로 공부한 패턴이다. 이 글을 보는 분은 나같은 화를 당하지 않았으면 하는 마음이다.. 각설하고, 싱글턴 패턴은 위에서 쓴 강조표시 그대로 객체의 생성을 단 한번만 하는게 초점이라고 생각한다. 그럼 코드를 보기 전에 상상해보자. "단 한번"이라는 조건이 붙어있기 때문에 해당 객체가 존재한다면? 생성자를 호출하지 않고, 존재하지 않을때에만 즉, 메모리상에 해당.. 2020. 12. 10.