분류 전체보기 477

[Django] 10분이면 읽는 Django 기초 개념 정리 (입문자용)

7월 1주차에 급하게 Django 를 써야할 상황이 생겨서 이틀간 Django를 압축적으로 학습할 일이 생겼다. 그간 학습한 내용들을 간단하게 정리하도록 하겠다. 개인적으로 빠르게 학습하면서 (빠르게라기 보다는 급하게가 맞겠다.) 적은 내용들이라 다소 형식이 올바르지 못하더라도 필요한 내용들만 압축해서 정리해놓았다. 목차: 서버 구동 및 초기 설정 MTV 패턴 view (HTTP request, HTTP resposne) model (클래스 필드에 대하여, CharField, IntegerField, EmailField) DB migration, migrate DB 엔진 설정 (Mysql 연동 방법) Model api 사용법 (장고 기본 지원 ORM 사용법 - insert, select, update, ..

Python3/Django 2022.07.17

[Dev] HTTP에서 PUT과 PATCH의 차이

HTTP요청에서 PUT과 PATCH라는게 존재하는 것을 알고 있었는데 여태 둘이 같은 기능을 한다고 오해하고 있었다.  그러다가 Django를 학습하던 중 이 두가지를 구분해서 사용하는 예제를 보았고 분명 차이가 있다고 생각해서 오늘 찾아보았다.(생각보다 중요한 차이였다. 계속 모르고 있었다면 위험했다.) 우선 둘다 update를 한다는 점에서는 같다.  특정 객체를 디비에 밀어넣을때 내가 전달한 값으로 업데이트를 해서 넣는다는 점에서는 같다.  하지만 이 동작에서의 미묘한 차이가 있다.  PUT의 경우에는 업데이트를 할때 모든 값을 업데이트한다. 즉 모든 필드에 대해서 업데이트를 진행한다는 얘기다.  PATCH는 내가 전달한 값에 대해서만 업데이트한다. 전달한 필드에 대해서만 업데이트를 진행한다.  즉..

개발 정보 2022.07.15

[Django] Django에서 AbstractUser의 password 암호화, User모델 확장

Django를 사용해서 서비스를 개발 중이라고 가정하자. 우리는 보통 서비스를 만들때 User 모델을 정의하게 된다. 사용자 비밀번호, 아이디, 이름, 이메일, 가입날짜 등등을 이 모델안에 정의하게 된다. 그런데 이것만 가지고는 Django의 장점을 활용하기엔 부족하다. 그래서 Django에서는 User모델을 확장할 수 있게 도와준다. 확장을 해야 진짜 Django의 간편함을 누릴 수 있다. 어떻게 확장할까? 바로 상속을 통해서 가능하게 해준다. User모델을 정의하고 나면 우리는 AbstractUser를 상속받게 할 수 있다. 그리고 AbstractUser 안에는 username, password, email 등등의 기본적인 필드들이 존재한다. 미리 정의되어 있다. 그리고 우리는 상속을 통해 그 필드들..

Python3/Django 2022.07.15

[Django] Fatal error in launcher: Unable to create process using 에러 발생

djangorestframework-simplejwt를 install 하려는 와중에 pip에서 계속 문제가 발생했다. Fatal error in launcher: Unable to create process using 한참을 찾아보고 PATH값도 다시 수정해주는 작업을 했지만 소용이 없었다. 그리고 정말 간단한 해답을 찾았다. 내가 하려던건 pip install djangorestframework-simplejwt 였는데 이걸 아래처럼 입력해주면 해결된다. python -m pip install djangorestframework-simplejwt 명령어 앞에 python -m 을 붙여주면 된다. 아마 vscode 혹은 python 설치경로 지정에서 문제가 있엇던듯한데 굳이 그걸 설정을 바꿔가면서 하기보..

Python3/Django 2022.07.14

[스타트업 인턴] 첫 인턴을 시작하기까지의 과정과 고민들

대학생으로 있으면서 주변 사람들이 하나둘 취업하는 것을 보면서 많이 불안했던 것 같다. 나보다 일찍 취업에 성공한 친구들이 있었고 이미 취업에 성공해서 1년차 개발자라는 타이틀을 붙이고 있는 친구들도 있었다. 따라잡기 위해서 많이 노력한것 같다. 코딩테스트라는 것도 처음으로 공부해봤고 풀리지 않는 문제를 붙잡고 끙끙거리는 모습이 마치 수능 준비와 흡사하다는 생각도 들었다. 리트코드에서만 수백문제를 풀다보니 완전 초보적인 수준은 벗어나게 된것 같다. 처음엔 한 문제를 푸는데 한 시간은 붙잡고 있었던 것 같다. 그러면서도 이걸 꼭 해야할까에 대한 고민도 많았다. 그렇게 울며겨자먹기로 코딩테스트를 공부했지만 신기한건 문제풀이라는게 하면 할수록 재밌어졌다. 어째 게임도 잘하면 더 재밌는것처럼 문제도 점점 잘 풀..

코드를 작성하는 행위

최근 알고리즘 문제를 많이 풀었다. 이전에 백준에서 221개의 문제를 풀었고 이번에 leetcode에서 252개의 문제를 풀었다. 다른 사람들에 비하면 많이 부족한 수준이지만 개인적으로 느낀 점들이 많았다. 이것저것 작성해보고 말도 안되는 코드를 적어보기도 하고 끙끙대면서 여러 형태로 만들어보려고 노력했던 것 같다. 코드를 깔끔하게 만들려고 노력했고 더 빠른 코드를 만들 수 있도록 노력했다. 메모리적으로든 속도면에서든 효율적인 코드를 만들기 위해서 많이 고민했다. 이런 고민들을 하면서 느꼈던건 코드 품질이라는게 내가 생각했던 것보다 훨씬 많은 비중을 차지한다는 것이다. 이전부터 중요하다는 것을 인지하고 있었지만 꾸준히 개발을 하다보면 저절로 늘게 되는 능력이라는 생각을 했다. 하지만 이번에 느낀 것은 의..

생각들 2022.07.02

[스타트업 인턴] 첫 스타트업 하계 인턴 최종합격

얼마전에 모 스타트업에서 대면 면접을 봤다. 코딩테스트도 봤었고 이후 면접도 봤었다. 처음 지원한건 자바를 활용한 안드로이드 라이브러리를 개발하는 포지션이었다. 그런데 면접을 진행하면서 안드로이드 개발 대신 기존에 내가 계속 개발해왔던 백엔드 포지션을 제안해주셨다. 구체적으로는 파이썬을 활용한 백엔드 개발 포지션에 대해서 제안해주셨다. 순조롭게 면접이 끝났고 지금까지 쉬고 있었다. 오늘 메일을 받았는데 최종합격이라는 메일을 받았다. 그래서 영어로된 이름과 함께 졸업증명서, 통장사본을 보내달라고 하셨다. 여기까지는 좋은데 고민이 많다. 문제는 기술 스택이다. 내가 연마하고 싶은 기술은 Java 언어였다. 그게 안드로이드 개발로 지원한 이유였다. Java를 활용하면서 언어 활용도가 많이 늘 수 있을 것이라고..

[LeetCode] LeetCoe 1337. The K Weakest Rows in a Matrix - python3

재밌는 문제를 찾았다. 그리고 최근에 느낀거지만 Leetcode 에서 submit 을 하면 성능과 메모리가 어느정도 되는지 나오는데 그걸 줄여보려고 코드를 바꾸려고 했던 적이 많다. 근데 확실해진건 이걸 기준으로 성능, 메모리 최적화를 하긴 어렵다는 것이다. 그 이유는 그 결과가 항상 다르기 때문이다. 즉 그냥 근사치 정도가 아니다. 90퍼센트 효율이 뜨던 코드가 갑자기 10퍼센트 효율이 뜨는 경우도 있다. 그래서 그냥 이런 성능이랑 메모리 효율성을 따지기 보다 그냥 코드만 보기좋게 다듬는 연습을 하는게 더 낫다는 생각이 들었다. 그런데 마침 오늘 꽤 괜찮은 문제를 발견했고 최대한 코드를 줄여보려고 노력을 했는데 list comprehension의 한계에서 막혔다. 즉 list comprehension ..

[Python3] Exception has occurred: TypeError argument should be integer or bytes-like object, not 'str'

최근 새롭게 만들고 있는 프로젝트에서 암호화와 관련된 작업을 하는 와중에 Exception has occurred: TypeError argument should be integer or bytes-like object, not 'str' 라는 예외를 만날 수 있었다. 간단하게 해결할 수 있는 에러이다. 파이썬에서 bytes와 str은 아래와 같은 관계가 성립한다. str -> 디코딩 -> bytes bytes -> 인코딩 -> str 그러므로 encode를 해주던, decode를 해주던 utf-8로 해주면 된다는 소리다. 나 같은 경우는 RSA 키로 만든 public key와 private key가 결과물이 bytes 로 나왔는데 그걸 슬라이싱하려다가 발생한 오류였다. 아래 코드를 보면 알겠지만 exp..

[스타트업 인턴] 첫 스타트업 인턴 면접 후기

처음으로 회사에 직접 가서 인턴 채용 관련 면접을 보았다. 이전에 한번 동아리 면접을 본적이 있었는데 학생들끼리 진행하는 동아리 면접임에도 불구하고 엄청 떨었던 기억이 있다. 동아리 면접에서도 그렇게 떨었는데 왠지 모르게 회사에 가서 보는 대면 면접은 그때보다 마음이 편했다. 한번 동아리 면접에서 떨고나니 면접이라는게 결국은 내가 어떤 사람인지 탐색해보는 과정이라는 생각이 들었기 때문이다. 내가 좋으면 뽑고 별로면 안뽑는거다. 그게 전부다. 당일 회사에 가서 직접 면접을 보았는데 신기하게도 떨지 않았다. 아마 내가 예전보다 조금 나아진것도 있지만 면접관 분들께서 편안한 분위기를 만들어주었고 호응을 많이 해주었기 때문이라는 생각도 들었다. 내가 얘기할 시간도 많이 주셨던 것이 도움이 되었다고 생각한다. 면..

반응형