💻 프로그래밍
-
Django 비즈니스 로직을 분리하는 4가지 방법💻 프로그래밍/Django 2021. 2. 13. 06:07
안녕하세요! 오늘은 Django에서 비즈니스 로직을 분리하는 방법들에 대해 말해보려고 합니다! 최근에 개발을 하면서 비지니스로직에 대한 고찰을 해보게 되었고. 여러 블로그들을 참고하면서 그 블로그들을 통해 배운 내용들과 제 생각들을 함께 정리해보겠습니다. 0. 들어가기전 Django 는 완벽한(?) MVC 패턴의 프레임워크입니다. Model, View, Controller 로 나누어져 있으며 정확히는 Model, Template(View), View(Controller) 입니다. (살짝 용어가 다름) MVC 패턴 덕분에 Django 뿐만 아니라 여러 프레임워크에서 코드 재사용, 프로젝트 구조 파악 등을 쉽게 할 수 있습니다.(이하 MTV) 간단히 Django의 MTV에 대해 설명해보면 Model: 데이터..
-
[Gunicorn] SystemExit 1💻 프로그래밍/네트워크 2021. 1. 25. 00:10
토이프로젝트를 진행하면서 API 테스트를 하는데 Sentry에 이런 메세지가 떴다... 그리고 포스트맨(postman)에는 502(Bad Gateway) 오류가 떴다. 보통 502하면 커넥션이 끊어지거나 하는이유였고, 센트리 오류로는 사실 최근에 회사 센트리로 미리 접해본 오류였다. 일단 상세한 내용을 위해 센트리를 들어가서 오류가 난 부분을 확인해보았다. 센트리를 보면 이부분에서 오류가 났다고 한다. 일단 경험 + 감으로 커넥션 오류가 Gunicorn 에서 난것 같은데, 정확한 내용을 확인하기 위해 구글링을 해보았다 ㅋㅋㅋㅋ 구글링 결과 이경우 Gunicorn TimeOut 보다 커넥션 시간이 길어져서 끊긴 경우라고 한다. 현재 진행하고 있는 토이프로젝트 서비스 특성상 꽤 많은 응답시간이 걸리는 경우가..
-
Django, Nginx CORS 설정💻 프로그래밍/Django 2021. 1. 17. 21:51
친구와 토이프로젝트를 진행하던 도중 CORS문제를 만났다. Web에서 서버로 API를 호출했는데 아래와 같은 오류를 만났다. Access to XMLHttpRequest at '{target url}' from origin '{current url}' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. 아마 웹개발을 하는 사람들이라면 종종 마주친 오류였을 것이다. 간단히 말하자면 CORS 정책을 지키지 않았기 때문에 api호출이 금지 되었다는 것이다. 오류를 보면 Access-Control-Allow-Origin 가 헤더에 업기 때문에 CORS 정책에 의해 B..
-
update_or_create()하는데 갑자기 Dead Lock 너는 왜나오냐?! (feat. transaction)💻 프로그래밍/Django 2020. 10. 26. 20:01
안녕하세요! 운동하는 개발자 제이입니다! 오늘은 Dead Lock과 Transaction에 대해서 알아보려고 합니다! 회사에서 종종 위 이미지와 같은 센트리 리포팅을 볼 수 있었는데, Deadlock (교착상태)에 대해서 개념은 알고 있었지만 실제로 코드상에서 왜 Deadlock이 나는지 정확한 이유를 알진 못했습니다. 시니어 개발자분께서 transacion log를 보여주시면서 설명은 해주셨는데, 그냥 그렇구나 하고 넘어갔던 것 같아요(이러면 안 됩니다 여러분 ㅎㅎ) 최근에 DB에 대해서 좀 더 관심이 생겨서 이 Deadlock에 대해서 실제 django orm을 보면서 알아보려고 해요. 1. Dead-lock 그리고 Transaction 일단 간단히 Deadlock이 뭔지 transaction이 뭔지..
-
filter() + lambda VS list comprehension💻 프로그래밍/Python 2020. 8. 10. 19:39
안녕하세요! 운동하는 개발자 Jay입니다!! 오늘은 list의 내용을 필터링해서 새로운 list로 반환하는 두 가지 방법에 대해서 알아보겠습니다! 1. filter, lambda 함수를 이용 filter함수와 lambda 함수로 list를 입력받아 조건으로 필터링하는 간단한 코드를 보겠습니다. # python2.x test_list = [1, 2, 3, 4, 5] filter(lambda a : a > 2, test_list) filter(lambda 값 : 조건문, 리스트) 문법은 굉장히 간단합니다. lambda 함수를 정의하고 filter로 감싸주면 됩니다. 결과를 확인해 보겠습니다. 오 상당히 쉽습니다. 하지만 이렇게 쉽게 끝나면 글을 쓰지 않았겠죠? filter함수의 return값이 python3..
-
[개념] Django는 Web Server가 아니라구요!!💻 프로그래밍/Django 2020. 8. 10. 19:38
안녕하세요! 운동하는 개발자 Jay입니다. 오늘은 Django, Nginx, WSGI, gunicorn의 개념적인 내용을 간단히 다뤄보려고 합니다. 사실 웹 개발자로서 처음 커리어를 시작했을때, 많이 헷갈렸던 부분이었습니다. "우리 회사 웹 서버는 Django를 사용해!" 개발자 친구들을 만나면 이렇게 설명 했던 것 같습니다.ㅎㅎㅎ 근데 사실 정확히 따지자면, 틀린 말이죠! (창피함😱) 아마, 저 처럼 처음 웹 개발자로서 커리어를 시작하시는 분들도 이런 개념에 헷갈리셨을 수도 있을 것 같아요! (나만 그런 건가 hoxy?) 1. Django의 역할이 그래서 정확히 뭔데?? 네! 그래서 Django의 역할은 도대체 뭘까요? 이미 다들 알고 계신텐데 Django는 Web Server가 아니라 Web Appl..
-
[Node.JS] Express 로 api 서버 만들기💻 프로그래밍/node 2020. 7. 28. 10:00
안녕하세요! 운동하는 개발자 제이입니다! 오늘은 Django가 아닌 Node.js로 api 서버를 만들어 보려고 합니다!! 정확히는 Node기반으로 된 Express라는 웹 프레임워크로 api 서버를 만들어 볼 거예요! (참고 : 이 글에서는 npm, node에 대해 직접적인 설명과 React에 대한 설명은 하지 않습니다.) 1. React 프로젝트 만들기 프로젝트 생성 후 npm start 명령어를 실행하면 오른쪽 이미지와 같이 리액트 기본 페이지가 나오는 것을 확인할 수 있습니다. 여기까지 되었다면, 기본적인 준비가 끝난 거예요! 📌npm vs npx npm : Node.js의 의존성과 패키지 관리를 위한 패키지 매니저. npm install을 명령어로 pacakge.json에 있는 패키지를 설치. ..
-
[RxPy] 디버깅, 오류 처리하기💻 프로그래밍/Python 2020. 7. 15. 17:52
안녕하세요! 운동하는 개발자 Jay입니다! 오늘은 RxPy의 디버깅과 오류 처리에 대해서 알아보겠습니다. 1. do() 연산자로 디버깅하기 🐛 RxPy의 유틸리티 연산자 중 do_action()이 있습니다. do_action()은 rx.core.operators.do에 _do_action()을 wrapping 하고 있죠! rx.core.operators.do 에는 do 관련된 함수들이 모여있습니다. 왜 다른 do 함수들은 wrapping이 안되어 있는지 모르겠네요ㅎㅎ - 개인적인 생각으로는 do_action()으로 다른 do 함수들의 동작을 다 할 수 있어서 그런 것 같아요. 어떤 함수들이 있는지 한 번 봐볼까요? _do_action() : on_next, on_error, on_complted 호출 후..