170408_TIL

|

오늘 할 일 (계획)

  • 패스트캠퍼스 컴퓨터공학 입문 수업 강의노트 정리하기
  • django 사진 업로드 기능 공부하기 (인프런)

오늘 한 일 (회고)

  • 오늘은 가족들과 밖에서 맛있는 밥을 먹고 오랫동안 산길을 걸었다.
  • 컴퓨터 공학 강의 노트는 내일 꼭 정리해야겠다.
  • 인프런 django 강의를 오랜만에 들었다. 3번째 실습 프로젝트에서는 사진을 업로드하는 기능을 구현하기 때문에 재미있을 것 같다. 잘 배워서 영어공부 사이트에 사진업로드 기능을 추가해야겠다.

내일 할 일

  • 생활코딩 git 원격저장소 수업 듣기
  • 패스트캠퍼스 컴퓨터공학 입문 복습하고 강의노트 정리하기
  • django 사진 업로드 방법 공부하기

170407_TIL

|

오늘 할 일 (계획)

  • 패스트캠퍼스 컴퓨터공학 입문 수업 참여 및 강의노트 정리하기
  • 생활코딩 git 원격저장소 수업 듣기
  • 영어공부 게시판 회원가입 기능 추가 (동작 단위별로 git 추가하면서 작업하기!)

오늘 한 일 (회고)

  • 컴퓨터공학 입문 수업을 들었다. oop 관련하여 많은 내용을 배웠는데 강의노트는 내일 정리해야겠다.
    • 상속
    • is-a, has-a
    • 객체합성
    • 캡슐화
    • 함수 오버로딩, 오버라이딩
  • AskDjango 파이썬 문법 수업을 듣기 시작했다. range()와 같은 generator의 용법이라던지 iterable 객체를 클래스로 직접 만드는 것 처럼, 기본적인 문법 이외에 좀 더 깊이 파이썬에 대해서 알 수 있어서 좋은 것 같다. 이를 통해서 장고 프레임워크를 더 잘 이해할 수 있지 않을까 기대한다.
    • iterable, Iterator, Generator 참고
  • 영어공부 게시판에 회원가입 기능을 추가했다.
    • 내장 UserCreationForm 을 사용
    • forms.py에서 각 필드 커스터마이징
    • views.py에서 회원가입 후 자동 로그인 처리

내일 할 일

  • 생활코딩 git 원격저장소 수업 듣기
  • 패스트캠퍼스 컴퓨터공학 입문 복습하고 강의노트 정리하기
  • django 사진 업로드 방법 공부하기
  • 영어공부 게시판 사진 업로드 기능 추가 (동작 단위별로 git 추가하면서 작업하기!)

강의노트 08. [객체지향] property (getter, setter)

|

패스트캠퍼스 컴퓨터공학 입문 수업을 듣고 중요한 내용을 정리했습니다. 개인공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있습니다.

property

  • 인스턴스 생성시 제한을 걸어두려고 할 때 유용하게 사용된다.
  • 사용하는 데코레이터 : @property, @메소드이름.setter
  • (참고) 클래스변수는 생성자 오버로딩시 유용하게 사용된다.

예시 1

  • Person 클래스의 인스턴스 생성시 음수의 money 설정을 제한
class Person:
    def __init__(self, name, mon):
        self.name = name
        self.money = mon # property 메소드 money에 mon 할당

    #getter 함수 - 멤버변수 _money에 접근
    @property
    def money(self):
        print("getter 실행!")
        return self._money # 클래스의 ._money 변수값 리턴

    #setter 함수 - 멤버변수 _money 설정 및 변경
    @money.setter
    def money(self, how_much):
        print("setter 실행!")
        if how_much < 0:
            self._money = 0 # 클래스의 ._money 변수값 할당
        else:
            self._money = how_much # 클래스의 ._money 변수값 할당

    def __str__(self):
        return "name : {}, money : {}".format(self.name, self._money)

#인스턴스 생성
p1 = Person('monkey', -500)

p1.money # getter 실행! 0
p1._money # 0

p1.money = 50 # setter 실행!

p1.money # getter 실행! 50
p1._money # 50

예시 2

  • rainbow 클래스의 인스턴스 생성시 특정 색 이외의 colors 설정을 제한
  • 속성(성질)에 대한 좀 더 명확한 정의를 property를 통해서 생성
# 클래스 정의
class rainbow:
    def __init__(self):
        self.COLORS = ['빨', '주', '노', '초', '파', '남', '보']
        self._colors = self.COLORS

    @property
    def colors(self):
        print("getter 실행!")
        return self._colors

    @colors.setter
    def colors(self, color_set_list):
        print("setter 실행!")
        self._colors = [color for color in color_set_list if color in self.COLORS]

# 인스턴스 생성
my_rainbow = rainbow()

my_rainbow._colors # ['빨', '주', '노', '초', '파', '남', '보']
my_rainbow.colors # getter 실행! ['빨', '주', '노', '초', '파', '남', '보']

my_rainbow.colors = ['흰', '검', '빨', '주', '노'] # setter 실행!


my_rainbow._colors # ['빨', '주', '노']
my_rainbow.colors # getter 실행! ['빨', '주', '노']

170406_TIL

|

오늘 할 일 (계획)

오늘 한 일 (회고)

  • Swift3 & iOS10 수업을 들었다. 아직 기초부분이지만 아이폰 앱개발 수업을 들으면서 Javascript로 웹브라우저를 동적으로 제어하는 것과 비슷하다는 생각이 든다.
    • 미니 웹 브라우저 만들기
    • 항공권 검색 UI 만들기
  • 컴퓨터공학 입문 수업내용을 블로그에 정리했다.
    • 파이썬 property
    • oop - 클래스와 인스턴스 변수의 차이, 클래스와 인스턴스 메소드의 차이, static 메소드
  • 생활코딩 git 수업을 들었다.
    • git stash, git stash apply, git stash pop

내일 할 일

  • 생활코딩 git 원격저장소 수업 듣기
  • 패스트캠퍼스 컴퓨터공학 입문 강의 참여
  • AskDjango 수업 듣기
  • 영어공부 게시판 회원가입 기능 추가 (동작 단위별로 git 추가하면서 작업하기!)

생활코딩 git 06 - git stash, git stash apply, git stash pop

|

생활코딩-git 수업을 듣고 중요 내용을 정리합니다.

git stash

다른 브랜치로 checkout을 해야 하는데 아직 현재 브랜치에서 작업이 끝나지 않은 경우는 커밋을 하기가 애매합니다. 이런 경우 stash를 이용하면 작업중이던 파일을 임시로 저장해두고 현재 브랜치의 상태를 마지막 커밋의 상태로 초기화 할 수 있습니다. 그 후에 다른 브랜치로 이동하고 작업을 끝낸 후에 작업 중이던 브랜치로 복귀한 후에 이전에 작업하던 내용을 복원할 수 있습니다. 여기서는 이 기능에 대해서 알아봅니다.

git stash 의 기능

  • stash : 감추다, 숨겨두다
  • branch를 이용하여 활발하게 작업을 하다보면, branch 작업이 완료되지 않은 상태에서 다른 branch 로 checkout 해야 하는 상황이 발생한다.
  • 이럴때 아직 작업중인 파일을 commit을 하기도 곤란하고, commit을 하지 않으면 checkout이 어려운 상황이 발생한다.
  • 그런 경우에 stash를 사용하여 작업중인 파일을 숨겨둘 수 있다.

예시 1 - 문제상황

# master 브랜치
❯ vim f1.txt # 파일 내용 수정
❯ git add f1.txt
❯ git commit -m 1

# exp 브랜치
❯ git checkout -b exp # exp 브랜치를 만들고 체크아웃
❯ vim f1.txt # 파일 내용 수정후, add commit을 진행하지 않고 master로 체크아웃

# master 브랜치
❯ git checkout master
❯ git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

	modified:   f1.txt # exp 브랜치에서 수정중인 내용이 master에도 영향을 미침

예시 2 - git stash 활용

  • 아직 파일의 수정이 끝나지 않아서 commit 하기가 곤란하고, 다른 branch로 checkout을 하기도 곤란한 상황을 처리할 때 git stash를 사용
  • git stash 명령은 최소한 버전관리가 되고 있는 파일에 대해서만 수행이 가능하다. (= git add를 통해서 트래킹 중인 파일)
  • WIP(working in process)
# exp 브랜치
❯ git stash
Saved working directory and index state WIP on exp: ba5adba 1
HEAD is now at ba5adba 1

❯ git status
On branch exp
nothing to commit, working tree clean

# master 브랜치
❯ git checkout master
❯ git status
On branch master
nothing to commit, working tree clean

예시 3 - git stash apply 활용

  • git stash 를 통해서 숨겼던 수정중 파일의 상태를 원상태로 복구
❯ git stash apply
On branch exp
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

	modified:   f1.txt

no changes added to commit (use "git add" and/or "git commit -a")
  • git reset –hard를 통해서 가장 최신 commit 상태로 working space 상태를 변경한다. (commit 하지 않은 수정중인 파일 내용을 삭제)
  • git stash apply 를 통해서 수정 내용을 복구할 수 있다.
  • stash list에 나오는 리스트는 명시적으로 삭제하지 않는 이상, 항상 살아있다.
  • git stash drop을 통해 최신 stash 삭제가 가능하다.
❯ git reset --hard HEAD # 최신 commit으로 reset (변경중인 파일 내용 삭제)

❯ git stash list
stash@{0}: WIP on exp: ba5adba 1 # 가장 최신의 stash 내용
stash@{1}: WIP on exp: ba5adba 1
stash@{2}: WIP on exp: ba5adba 1

❯ git stash apply # 가장 최신의 stash 내용으로 다시 복원
On branch exp
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

	modified:   f1.txt

❯ git stash drop # 가장 최신 stash 삭제
❯ git stash apply; git stash drop; # stash 복원 및 삭제
❯ git stash pop # stash 복원 및 삭제 (상기명령 동일)