사실 아직 파이썬도 능숙하지 않은데 다른 언어 배울땐가...하고 다른 언어 익히는걸 게을리하고 있었는데 웹쪽에서 일하면서 JS를 피하는덴 한계가 있는 것 같아서 기왕이면 JS의 단점을 많이 보강해주는 TS를 공부해보기로 했다. 처음엔 그냥 바닐라JS하려니까 ES6니 TS등등이 튀어나와서 당황스러웠는데...그냥 TS부터 하다가 모르는 거 있으면 찾아보는 방향으로 전환했다. 도서관 상호대차로 TS책을 신청해두고 서적이 도착하기까진 마침 유데미에 짧은 시간동안 TS를 살펴보는 강의가 있어서 이걸로 시작해보기로 했다. 강의에서 다루는 TS의 특징은 다음과 같다. - Javascript superset - wrapper or layer with more feature - 확장자는 ts - 타입스크립트 컴파일러가 ..
싸이트를 운영하다보면 종종 예상하지 못한 문제가 생긴다. 로컬에서야 이럴때 그냥 프린트문으로 찍어보면서 해결해도 되지만, 실제 프로덕션에서 그러기는 어렵다. 이 때 도움되는 것이 로그 파일인데 장고에서는 로깅하는 것을 자체에서 제공해주고있어 매우 편리하게 적용이 가능하다! 장고의 로깅은 파이썬에 빌트인으로 들어가 있는 로깅 기능을 사용하고 있어 만약 장고 문서에 설명이 부족한 것 같으면 파이썬의 로깅에 대한 설명을 보면 된다. 어쨌건 파이썬의 로깅은 아래의 네 부분으로 이루어져있다. 나름 번역을 했으나 이게 뭔 말인지 모르겠다면 원문을 보는 편이 낫다.... 원문링크 Loggers - 다섯 개의 로그레벨이 있다. DEBUG - INFO - WARNING - ERROR - CRITICAL 순으로 높아진다...
장고는 엔간한건 다 제공해주고 있고, 메일보내는 방법도 제공하고 있긴 하지만, 실질적으로 운영해보면 클라우드 서비스상의 정책 등으로 안되는 경우가 많다. 이런 이유로 인해 메일 보내기 기능을 추가할 때 외부 서비스를 활용하기로 했다. 처음에는 AWS SES를 쓰려고 했는데 웬걸... 해당 서비스는 그냥 바로 쓸수 있는게 아니라 블특정 다수에게 메일을 보내려면 샌드박스에서 탈출해야하는데 이 샌드박스를 나가기 위해선 AWS에 신청한 후 승인을 받아야 한다. 시간이 다소 지체될 것 같아서 그냥 구글꺼를 쓰기로 했다. 구글메일 smtp를 사용할거면 우선 계정의 보안 설정을 건드려야한다. 구글의 계정사진 옆의 점 9개가 있는걸 눌러보면 'Google계정'이 있다. 이걸 누른 다음 '보안'을 클릭하면 해당 페이지에..
장고에서는 기본적으로 제공해주는 어드민이 있다. 처음에 봤을땐 그냥 데이터베이스 직접 보는거랑 이게 뭔 차이인가.. 하는 생각을 했었는데, 문서(Django Document link)를 읽어보니 제법 기능이 많았다. 간편하게 커스터마이징하기 쉬운 것은 아래와 같다. list_display 말 그대로 모델어드민의 리스트 상에서 어떤 목록이 보여질지를 정하는 것이다. 해당 모델의 컬럼 중에서 리스트 상에서 보여줄 컬럼을 정할 수 있다 list_display_links 리스트 상에서 해당 객체의 수정 페이지로 이동하는 링크를 어떤 컬럼에 걸지 정한다. 당연히 여기에서 지정하는 필드는 list_display에도 있어야 한다. list_filter 오른쪽 사이드바에 필터를 활성화하고, 어떤 컬럼값으로 필터링할지 ..
그동안 수많은 알고리즘 강의나 책을 사놓고 그대로 방치해놨는데.... 매주 마감일과 진도가 체크되니까 그래도 좀 하지 않을까 하는 생각에 등록했다. 특화과정의 첫 강의는 Algorithmic Toolbox고 해당 과정에선 탐욕알고리즘, 분할정복, 다이나믹 프로그래밍 등을 다루고 있으며 2주차까진 알고리즘적인 발상을 하는 방법에 대해서 다루고 있다. 첫 주에는 간단한 프로그래밍 문제를 통해 프로그래밍하는 방법에 대해 소개하고 있다. 첫번째 문제는 입력받은 숫자 두 개의 합이다. 이 강의에선 자바, C++, 파이썬 이렇게 세 개의 언어를 지원하고 있으며, 각 언어로 해당 문제에 대한 해답도 제공되어있다. 쉬운 문제이므로 직접 풀어도 되고, 제공된 파일을 그대로 제출해도 첫번째 과제는 통과된다. def sum..
원래 쓰던 테이블에 필드가 하나 더 있는 것이 좋을 것 같아서 필드를 추가하고, 들어온 값의 일부를 사용해서 해당 필드를 채우도록 save를 다음과 같이 오버라이딩했다. def save(self, *args, **kwargs): if not self.extension: self.extension = str(self.file).split(".")[-1] super(File, self).save(*args, *kwargs) 그리고 어드민에서 잘 동작하는 것 같아서 그냥 두고 잊어버리고 있었다. (사실 테스트코드만 있었어도 해결가능하지만......ㅎ) 그러던 와중 앱 테스트 도중에 파일 업로드가 안된다는 얘기를 들었다. 에러 메세지는 다음과 같다. ValueError: Cannot force both inse..

새로운 프로젝트를 맡아서 api 서버개발을 했다. 회사에 서버개발하는 사람이 나밖에 없어서 서버구축 - api 설계 - 코드 작성 - 배포 다 나 혼자 한다....리뷰도 셀프^^ ... 아무튼 django restframework로 api 개발을 마치고, 이 블로그를 참조하여 docker-compose를 사용해서 nginx, gunicorn을 사용하는 컨테이너를 만들었다. 테스트해보니까 로컬에선 venv + runserver 혹은 docker-compose up로 서버 띄워서 테스트시 양쪽 다 내가 의도한대로 잘 돌아가길래 이제 배포만 하면 되겠구나! 하고 배포했다. 배포의 경우엔 AWS ec2에 저장소 코드를 올리고, 여기에 어플리케이션 로드밸런서를 붙인 후, route53에서 이미 생성되어있는 호스팅..
에듀캐스트에서 이진석님의 강좌 '리액트와 함께 장고 시작하기 Complete'를 다 들었는데 막상 정리를 안 해놔서 강좌 내용을 바탕으로 장고 이론을 정리해보기로 했다. ORM이란? Object-Relational-Mapper의 약자로 프로그래밍언어의 OOP 스타일로 쿼리를 작성할 수 있게 해주는 것. 장: 어떤 디비를 사용하든지 이미 잘 알고있는 언어를 사용해 디비를 조작할 수 있으므로 매우 편리하다. 단: ORM을 사용함으로서 오버헤드가 발생하며, SQL을 통해 튜닝하는 것이 ORM을 통해서는 불가능할 경우가 많다. Django Models 장고 ORM은 RDB만 지원한다. (따라서 MongoDB 등의 NoSQL을 쓴다면 장고보다는 다른 파이썬 프레임워크를 쓰는 것이..) 상황에 따라 다르겠지만 되도..
웹사이트를 만들때 페이지마다 허용되는 유저가 같으면 곤란한 일이 많이 발생할 것이다. 예를 들어 관리자 페이지인데 일반 유저가 들어간다던가, 아니면 유료로만 이용이 가능한 페이지인데 로그인도 안한 유저가 사용한다던가 하는 경우 말이다. 이런 일을 방지하기 위해서 Django View 상에서 동작하기 전에 무조건 유저를 검사해주도록 하기 위해 장고 뷰의 기본 메서드중 dispatch와 데코레이터를 활용해보기로 했다. 우선 기본 뷰의 메서드 중에는 dispatch라는 녀석이 있다. 이 녀석이 뭐냐면 request와 기타 argument를 입력받고 HTTP Response를 리턴하는 놈인데, HTTP 메서드를 검사하고 해당 메서드와 일치하는 메서드로 연결을 해주는 녀석이다. GET은 get()으로, POST는..
사실 당연하게도 서버에 있는 데이터베이스를 가지고 테스트를 하진 않을거고, DEV서버가 따로 있겠지만 완전히 혼자서 갖고 놀 수 있게 로컬에 DB를 만들고 싶을때가 있다. 그럴 때를 대비해 작성해놓는 포스트. 일단 postgresql을 설치하자. - sudo apt-get install postgresql postgresql-contrib psql 서버를 시작한다 - sudo service postgresql start postgres의 경우에는 자동적으로 생성되는 유저이므로 이 계정으로 변경해보자. - sudo -u postgres -i 그 다음 postgresql로 접속! - psql 여기서 현재 상태를 확인해볼 수 있다. 대표적인 명령어는 아래의 것들이 있다. \du : 유저목록확인 \l : 데이터..
- Total
- Today
- Yesterday
- askcompany
- 혼자공부하는얄팍한코딩지식
- 나는리뷰어다2022
- 동남아
- 나는리뷰어다
- SQL기초구문
- 개발자리뷰어
- 유데미강의
- 싱가폴여행
- Singapore
- 한빛출판사
- 리액트와함께장고시작하기
- 파고다후기
- Python
- 싱가포르
- SRE를위한시스템설계와구축
- 다시미분적분
- 길벗출판사
- 머신러닝파워드애플리케이션
- 파고다갓생후기챌린지
- 아토믹코틀린
- Docker
- BookDiscussion
- 한빛미디어
- 파고다강남후기
- 그래프QL인액션
- 싱가폴
- udemy
- django
- 해외여행
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |