728x90

1. 코딩스타일

1-1. 읽기 쉬운 코드를 만드는것이 왜 중요한가

- 코드의 특서은 한번 작성되면 여러번 읽힌다. 몇 분에서 몇십년 뒤까지 재활용될수가 있는데 이것을 이곳저곳 막 만들어두면 언젠가 이를 참고하고 수정하기는 더더욱 어려워지기 대문에 처음 코드를 만들때 읽기 쉬운 코드를 만들어야한다.

-어떻게 읽기 쉽게 만드는가?

- 축약적이거나 함축적인 변수명은 피한다.

- 함수 인자의 이름들은 꼭 써준다.

- 클래스와 메서드를 문서화한다.

- 코드에 주석은 꼭 달도록 한다.

- 여러 함수 내에서 반복되는 코드들을 리팩토링해서 반복을 최소화한다.

- 함수와 메서드는 가능한한 작은 크기를 유지한다.

 

1-2. PEP8

- 파이썬 공식 스타일 가이드은 PEP8을 여러번 읽어보며 스타일을 맞추기 위해 최대한 노력한다.

- 만약 이미 다른 관례를 따르고 있는 프로젝트는 함부로 바꾸지 않도록 해야한다.

 

1-3. import *은 피하자

- 우리의 코드 대부분은 각 모듈을 개별적으로 임포트해야한다.

from django.forms import *
from django.db.models import *

- 위와 같이 모두를 임포트하지 말고 개별적으로 함수나 클래스를 임포트해야한다.

- 이외에도 표준 PEP8에 임포트 관련한 내용은 많으니 꼭 참고하길 바란다!

 

1-4. 장고 코딩 스타일

- URL 패턴 이름에는 대시(-) 대신 밑줄(_)을 사용한다.

# 잘못된 예시
patterns = [
	url('corin/', index, name='home-index')
]

# 좋은 예시
patterns = [
	url('corin/', index, name='home_index')
]

- 여기서 유의할껀 패턴이름은 엔드포인트 주소가 아닌 django의 name부분이라것이다.

- rest를 따르는 엔드포인트에서는 밑줄이 아닌 대시를 사용하여 명시하여야한다 -> parser renderer와 관련되어 보안이슈가 있었다고 한다.

 

2. 최적화된 장고 환경 꾸미기

2-1. 같은 데이터베이스를 이용해라

- 일반적으로 개발환경은 sqlite3, 배포 즉 실서버환경은 postgresql를 이용하는 경우가 많다.

- 이는 굉장히 위험한 방식으로 물론 sqlite3가 편하긴 하겠지만 다른 종류의 데이터베이스 사이에는 다른 성격의 필드 타입과 제약 조건이 존재한다. 이를 굳이 편하다는 이유만으로 다르게 유지하면 안된다. 반드시 실서버에서 사용하는 데이터베이스를 개발환경에서도 동일하게 사용해줘야한다.

- django orm은 강력하지만 무적이 아니다. 

 

2-2. pip와 virtualenv 사용하기

- 사실상, 현재는 pip와 virtualenv는 관행처럼 사용되고 있다.

- pip는 그렇다치고 virtualenv같은경우, 다른 대안또한 많이 있다 -> 여기서 말하는것을 바로 가상환경을 사용하라는것이다. 가끔가다 로컬 전역에 설치를 해버리는 경우가 있는데 이는 추후 다른 프로젝트를 진행할때 버전관리가 굉장히 꼬여 개발시작전부터 어려움을 겪게 될테니 각프로젝트별 가상환경 및 requirements.txt를 사용하여 사용 라이브러리 버전을 맞춰줘야한다!

728x90
728x90

전날 목표

GETIT 프로젝트

  • 댓글 -> 대댓글 기능 구현
  • 이미지 -> 다중이미지로 기능 구현

대댓글을 구현할때 뭐가 필요할까? 라는 생각을 했는데 다른것없이 그저 comment 모델내부에서 comment pk를 참조할 필드하나만 있으면 될것이라 생각했다. 클라이언트와 함께 작업하며 느낀것이 첫번째가 DB의 중요성 그와 동시에 DB는 별것 없이 내가 나중에 봤을때 이렇구나 라고 저장되게만 느끼면 되게 설계해두면 된다라는것이다(물론, 생각한대로 확실하게 구현되어야한다는건 기본이며 내가봤을때라는건 개인플젝때만 해당ㅎㅎ). 두번째가 client개발자와의 대화이다. 서버개발자는 그저 서비스가 잘돌아가게 뒤에서 묵묵히 로직을 개발하면 되지만 클라이언트는 실 서비스 사용자가에게 보여질 화면과 로직을 개발하기 때문에 작업량이 상당하고 그만큼 스트레스가 이만저만 아닐것이라는 생각이 들었다. 그렇기 때문에 나는 협업을 할때 서버의 입장도 중요하지만 무엇보다 클라이언트개발자의 요구를 최대한 맞춰주기위해 노력한다ㅎㅎ(자기자랑 타임) 암튼 대댓글은 별것없고

parent = models.ForeignKey('self', on_delete=models.CASCADE, null=True, blank=True)

comment 모델에 위 한줄이면끝이다 물론 serializer에 parent필드를 추가하는건 빼먹으면 안된다. 일반 댓글의 경우, parent필드는 null, 대댓글의 경우 대댓글단 댓글의 pk값이 parent필드의 값이 되어 클라이언트입장에서 그것에 맞춰 화면을 구성해주면 된다.

 

이미지필드는 그냥 참고한 블로그 첨부한다.

 

drf 다중 이미지 full url 삽질 기록

삽질 기록 - 다중 이미지

velog.io

항상 느끼지만 나도 스스로 열심히 살아간다 느끼는데 나보다 더뛰어난 사람들이 정말 많다ㅎ.. 열심히 해야겠다. 그리고 nest 학습도 대학교2학년때부터 친하게 지냈던 형과 공부중인데 하면할수록 느끼는것이 django, drf정말 좋다. 너무너무 좋다 django개발자 되고싶다.. 그런데 왜이리 취업시장에서 힘이없누!!!!!!!

 

인턴

  • SQLITE - PYTHON DB 연동 테스트
  • 시작 프로그램 - script.bat 구현

결론 부터 말하자면,내가왜 어제 일찍자고 오늘 일찍일어났냐? 위의 목표량을 채우지 못했다.. 오늘 리드님과 프로젝트 회의하는 날인데 빠르게 해야겠다. 하하.. 핑계를 대자면 기존에 접속 안되던 서버를 인프라팀에서 해결해줘서 해야할 작업이 갑자기 생겨버렸고 막상 서버 접속하고 나니 오류가 한두가지가 아니게 많이 떳다.... 서버팀, 보안팀, QA팀에 문의를 수십번드리고 리드님과 사수님에게 바보같은 질문만 드리다 하루 8시간이 슥 사라졌다. 이건내일 TIL쓸때 완성되있을꺼다..?아마도..

 

오늘의 목표

GETIT 프로젝트

  • 기존 8000포트 테스트서버 -> nginx - gunicorn - django - docker 활용하여 80번포트 배포

인턴

  • SQLITE - PYTHON DB 연동 테스트
  • 시작 프로그램 - script.bat 구현

getit프로젝트 목표량의 경우 지난번에 실패한 작업이다. 통신에는 성공했지만 무엇이 문제인지 jwt토큰을 도메인으로 set_cookie로 전달해주는데 이부분이 먹통이다, stackoverflow에서 검색하며 이작업저작업해봤지만 문제 해결이 안되서 일단 임시방편으로 프로젝트를 시작한지 2달이 되어가는 지금까지 python manage.py runserver 0:8000으로 백그라운드에서 빌드하여 배포중이다. 오늘 꼭 해결해봐야겠다.

 

그러고보니 프로젝트할때 2주간 jwt를 통한 소셜로그인에 대해서 drf 레퍼런스가 없어서 정말 고생했는데 한번 공유할겸 이번주에 작성해보려한다. 이거 조회수 10000나오는거 아니야?

728x90
728x90

인턴 110일차


일단 지난번에 밤을새며 고생했던 일은 결국 기한을 지키는데 성공을 하였다. 하지만 또다시 난관... 서버망이전 작업에 있어 인프라팀과 대화를 많이 나누고 있는데 분명 방화벽 포트 개방까지 했지만 원격접속이 안되고 있어 난항을 겪는중이다. VSPHERE 환경에서 인턴기간동안 프로젝트 하나를 개발하게 되었는데 장고를 사용하여 웹서버를 만들기회가 생겨 설레는 맘으로 임하고 있지만 역시나 기획할때 술술 풀어내던것들이 막상 개발하면 탁탁막힌다 막혀.. 이번 회사 프로젝트를 완성하게 되면 엄청난 경험이 될것이라 믿어의심치 않으며 진행할것이다~

TIL 유형 변화


공부한걸 적어내는 TIL은 아무래도 쓰기전부터 양이 워낙많다보니 부담이 되는부분이있어 계속해서 미루게 된다. 그래서 앞으로 TIL은 하루의 시작전 오늘내가할 분량을 미리 적고 간단하게 한줄평식으로 리뷰하는 유형으로 변화시키려한다. 인턴 업무의 경우, 보안상 적기 힘든부분이 있으니 진행하는 프로젝트에서 목표량을 적을것이다.

목표


GETIT 프로젝트

  • 댓글 -> 대댓글 기능 구현
  • 이미지 -> 다중이미지로 기능 구현

인턴

  • SQLITE - PYTHON DB 연동 테스트
  • 시작 프로그램 - script.bat 구현
728x90
728x90

인턴 100일차


거의 3개월만의 TIL을 작성한다.... 인턴 일과 CS공부, 프로젝트라는 3가지 동시진행이 생각보다 모두 쉽지가 않았다. 회사자체의 워라벨은 굉장히 좋다. 업무시간을 제외하고는 절대 일을 안하게 하시려는 좋은 리드님과 질문드리면 친절하게 답해주시는 팀원분들이 있어 너무좋다. 하지만 평생 일은 잘할것이라 생각했던 나의 생각과는 다르게 뭐든 하나 배우는데 쉽지가 않았다... 처음접해보는 환경에 개발관련이라면 구글링으로 모두 해결될것이라 생각했었지만 현재 맡은업무자체가 구글링이 아닌 전에 나와 같은 작업을 하셨던 분들이 이슈가 있을때마다 적어놓은 문서에서 찾아서 해야하고 발생되는 오류들또한 기록되있는것이 수두룩하다보니 매번 질문드리는 사람이 된것 같다.. 물론 현재는 업무자체에 어느정도 훈련이 되어있어서 충분히 가능하지만 결국 이번에 큰사고를 친거같다ㅠ.. 회사의 서버이전작업에따라 잦은 오류가 발생되었었고 12일까지 끝내야하는 업무가 있지만 그업무또한 기한을 못지키게 되었다. 나름 매번 밤새가며 기한에 안밀리기위해 작업하고 했지만 이번엔 일이 좀커진것 같아 마음이 안좋다...후.. 일요일에 리드님에게 업무관련해서 연락을드리고 조마조마한 마음으로 기다리고있는중이다. 인턴을 진행하며 느낀점은 크게 3가지 인것같다.

  • 나에게 주어진업무는 다른사람의 업무를 도와주는것이 아닌 내가 담당한 업무이기때문에 책임감을 가져야한다.
    • 업무를 진행할때 사실 내가 업무를 제대로 진행되지 않으면 당연히 다른분들이 도와줄것이라 생각하고 안일하게 생각했던것 같다. 그리고 업무자체에 있어 뭔가 다른분들은 중대한 업무를 진행하는데 내업무는 그런업무가 아니라고 생각해서 뭔가 다알고 있는것처럼 말하는게 조금은 창피하다고 생각했었는데 이런 자세는 앞으로 내 인생에 있어서 정말 안좋은 자세라는걸 느끼고 있고 뭐든 책임감을 가지고 임해야한다.
  • 업무가 잘되든 안되든 현재 내 진행사항에 관해 다른 팀원분들께 공유가 되야한다.
    • 업무를 나혼자 끝냈다고 끝이 아닌 팀원분들께 공유드리고 문제가 있다면 한가지 문제에 대해 하루종일 메달리기보단 현재의 이슈를 공유하고 같이 논의 해보는것이 중요하다. 물론, 현재 발생한 문제에 대해 잠깐 알아보고 문의 드리라는 말이 아닌 충분히 연구해보고 해결이 안됐을때 공유를 드려야한다. 회사는 이런것들을 업무일지를 통해 일감을 생성하고 생성된 일감 코멘트를 작성하여 진행률을 공유하는 중이다.
  • 다른팀에 문의를 드리게 되었을때 두세번 말씀드리는걸 잊지 말아야한다.
    • 우리팀같은경우 매일같이 업무공유를하기때문에 업무를 누락하지 않겠지만 다른팀원분들같은경우 특히 서버나 인프라 쪽은 많은 업무요청을 받는다. 그렇기 때문에 내가 요청드린 업무를 누락하시고 잊는 경우가 있는데 처음엔 무한정 기다렸지만 그렇게 될경우, 업무자체가 딜레이 되기 때문에 눈치 보지 말고 시간이 지체되었다고 느끼면 바로 다시 문의드려야한다. 정당한 업무 요청에 대해서는 그누구도 부정하지 않으시는데 괜히 주눅이 들어 있던것 같다.

이렇게 총3가지이다. 후... 핑계가 많이 는것 같은데 이번일 잘해결되면 다시 열심히 임해봐야겠다.

 

프로젝트


이부분은 매우 긍정적이다. 그저 django만 사용해서 배포도 혼자 로컬에서만 진행할줄 알았던 지난 3개월전과는 다르게 내가 팀장으로서 팀원을 구하고 매번 회의를 거쳐 순탄하게 진행중이다. 웹클라이언트(react)와의 작업에 있어서 어떻게 연결하는지, 그리고 aws서버에 어떻게 호스팅하는지, docker는 어떻게 사용하는지, 소셜로그인은 어떻게하는지, drf(djangorestframework)는 무엇이고 restapi사용은 어떻게 하는지, 앱(ios, android)와의 작업까지 전체적으로 진행중이며 2주내로 서비스 배포까지 완료할것 같다. 프로젝트를 진행하며 많은것을 배울수 있었고 이부분에서도 가장중요한것이 소통이라는걸 알수 있었다. 관련해서 알게된 내용같은것들은 조만간 하나씩 적어나갈것이다.

cs, 알고리즘


취업을 위해서라면 아니 개발자라면 cs와 알고리즘은 기본이다. 매일같이 해야한다. 하지만 그러고 있지못하고 있다..ㅎ... 이제 취업준비를 해야하는데 인턴이 끝나고 하나씩 지원하려는 마음이 있지만 아직 기본도 못하고 있으니 이래저래 걱정이긴한다. 그래도 뭐... 할수 있을것이다ㅎ...

 

총평


인턴 힘들다.. 생각보다 많이.. 모르는것들 투성이고 약간 windows, linux와 같은 os쪽 업무다보니 생소하기도 하고 내가 기본지식이 많이 부족하다는것을 매우 강하게 느끼고 있다. 암튼 뭐든 열심히해서 발전하는 내가되야겠다..

728x90
728x90

TODAY I LEARNED


- python 스터디(일명 pajang)

https://github.com/leeceo97/pajang

위의 링크에 문제풀이 한게 삽입되었다. for문관련문제 였는데 난이도가 그닥 높진 않아서 그냥 넘어가야할것같다. 쉬운문제여도 매일매일 강제로 풀게 되는거 나쁘지 않은것 같다. 이번주가 마지막 파이썬스터디인데 암튼 정확하게 푸는 연습을 해야겠다.

 

-pinterest: django프로젝트

 

leeceo97/pinterest

Contribute to leeceo97/pinterest development by creating an account on GitHub.

github.com

차후 관련 글 업로드 예정이다. 매번 미루기만하게 되는데 이부분도 빠르게 업로드 해야겠다.... 일단 오늘은 프론트엔드부분 기초적인 부분을 다뤘다. 아직 초반 단계라 적을께 없기도하다..?(변명ㅎ)

 

인턴 3일차


흑... 다 처음 접해보는것이다.. 일단 학교랑은 다르게 과제가 주어지는게 아니고 내가 배워야할걸 내가 물어서 하고 내가 오늘 해야할 일을 알아서 찾아야 하는거다 보니깐 이것 자체도 어렵다. 당장 처리해야 할 업무는 폐쇄망 검증이라는 업무인데 putty로 서버에 접속하고 원격접속으로 클라이언트에 접속한후 파일을 업로드하고(폐쇄망에 올리는게 굉장히 귀찮은 작업이많다..) 업로드 한걸 각각의 버전os들에 접속해서 업데이트한후 찍힌 로그와 DB자료를 토대로 검증하는 업무이다. 다행히 사수님이 내가 질문폭탄을 던지는데도 바로바로 잘답을 해줘서 너무 감사한게 위안이된다. 암튼 새로운 협업방식, 문서작성, 원격접속등이 3일밖에 안되었는데도 쉽게 느껴지기 시작했다는게 신기할 따름이긴 하다ㅎㅎ 

 

1. port번호 적용

오늘 port번호를 적용한 방식은 2가지가 있었다. putty, 윈도우에서 지원하는 원격접속방식이렇게다.

그전에! 포트란? 간단히 말해 외부에서 다른 장비를 사용할때 위치를 나타내기 위해 ip와 같이 사용되는 주소라고 보자

자세한건 아래 블로그를 참조하자!

 

포트[PORT]에 대하여

안녕하세요~* 오랜만에 돌아온 소우주입니다~ 이번 시간에는 PORT(포트)에 대하여 알아보는 시간을 가질까 합니다. 1.    PORT(포트), 넌 누구니? 먼저, 위키 백과에 나온 정의를 한 번 볼까요? 포트

run-it.tistory.com

 

-putty란?

PuTTY(이하 푸티)는 가상 단말기 프로그램입니다.

 

서버는 물리적으로 떨어져 있어도 단말 장비를 통해서 원격으로 접속하여 작업할 필요가 있는데

이때 윈도우같은 개인 pc 운영체제에서도 서버로 접속할 수 있도록 물리적인 단말장비가 아닌 논리적인 가상 단말기를 제공합니다.

 

간단히 말해 개인 pc운영체제 라도 서버에 접속할수 있도록 도와주는 무료 프로그램이라는 것이다. 이건 aws와 같은 배포때에도 많이 사용된다. 

 

푸티 같은경우, 포트 번호를 넣기 쉽다. 아래와 같이 제공된 공간에 포트번호를 넣어주기만 하면된다.

- 윈도우를 통한 원격접속 방법

시작 검색창에 'mstsc'를 검색하면 나온다.

위의 표시한곳에 ip주소를 적어주면되는데 연결된 내부pc망을 통해 연결할때는 ip와 port번호를 적어주면 되지만 그렇지 않고 연결되지 않은 외부 pc망을 연결할때는 VPN과 같은 인증을 거친후 연결해야 한다. 

 

암튼 위의 표시한 공간에 예를들어 12.123.12.123이란 ip주소, 1234란 포트번호가 주어지면 12.123.12.123:1234라고 입력하고 연결을 해야한다. 

 

2. 리눅스 명령어(파일 권한 계정 부여)

chown test_user:test_group test

test 파일에 test_user라는 계정, test_group라는 그룹에게 파일을 관리할 권한을 부여할때 사용된다. 

 

후기


6시 퇴근 -> 운동 하고나면 9시가 넘는다. 깃허브 커밋이야 꾸준히 진행하는건 맞지만 TIL은 하루씩 밀려서 작성해야겠다. TIL 시간맞추려다 하려는 공부 끊고 쓰게 되는건 나쁜 버릇이다. 하지만 이렇게 되면 결국 매일매일 작성하는건 똑같겠군.... 암튼 인턴 3일차인데 그래도 희망적이다 희희~

728x90

'개발 life > 셀프 부트캠프(WIL)' 카테고리의 다른 글

TIL 7일차-2021.7.7  (0) 2021.07.08
TIL 6일차-2021.7.6  (0) 2021.07.07
TIL 4일차-2021.7.4  (0) 2021.07.04
TIL 3일차-2021.7.3  (0) 2021.07.03
TIL 2일차-2021.7.2(feat. VirtualBox에서 iso파일)  (0) 2021.07.02

+ Recent posts