본문 바로가기

분류 전체보기

(83)
TypeScript - TS to JS 강의 링크 Node.js는 ts를 이해하지 못하기 때문에 일반적인 JS 코드로 컴파일하는 작업이 필요하다. 이하 코드에는 ""가 없지만 실제 코드를 칠 때 "를 넣어 쳐야 되고, "를 짝 맞게 치면 사라졌다. 뭐가 문제인지.... 일단 코드 실행은 정상. tsconfig.json { compilerOptions: { module: commonjs, target: ES2015, sourceMap: true, }, include: [index.ts], exclude: [node_modules] } module에 넣은 commonjs는 다양한 걸 import, export하기 위함. target은 어떤 버전의 JS로 컴파일 하고 싶은지 sourceMap 처리를 하고 싶은지 include 어떤 파일이 컴파일 과..
소셜로그인 - kakao API Kakao API를 활용하는 소셜 로그인 기능에서 프론트가 하는 부분에 대해서 다 이해하진 못하지만, 백엔드 개발자도 전체적인 통신이 어떤 단계를 거쳐서 이루어지는지를 공식 문서를 통해 파악하고 코드 외적인 설정에는 어떤 게 있는지를 알고 있어야 된다고 생각한다. 구현 코드는 링크를 참고했고 이 글에서는 데이터의 형태가 어떤지, 자잘하게 놓친 점은 어떤 게 있었는지 기록했다. 프론트엔드 개발자가 하는 부분이지만, kakao login 기능을 사용하기 전 필요한 절차이다. 1. kakao developers에 로그인 한 뒤 앱을 생성한다. 2. 이 앱 메뉴에서 kakao login에 들어간 뒤 state를 ON으로 설정한다. Platform 부분에 redirect URI를 준다. 3. consent ite..
Django 속이기 - migration 파일 직접 수정 models.py를 수정한 뒤 makemigration을 했을 때 이런 메세지가 뜰 수도 있다. You are trying to add a non-nullable field to without a default; we can't do that 어쩌구 이미 있는 model class에 non-nullable인 필드를 추가하면 이런 일이 생긴다. datetime 필드를 추가한 뒤 나왔던 메세지와는 조금 다르다. 그 때는 기존에 존재하는 데이터에게 어떤 시간을 채워넣을까 하는 메세지였는데, 이건 데이터베이스를 이미 삭제한 뒤여도 나온다. 동기들에게서 들은, default를 안 주고 해결하는 방법은 두가지였다. 1. null=True를 주고 만들고, not nullable한 필드를 만들고 싶다면 기존 데이터의 ..
JS는 왜 이래요? JS는 세달 전 한 일주일 정도 맛만 본 게 다인데 Node를 쓰려고 급하게 다시 공부중이다. 예전에는 강의를 보고 코드를 따라 치기 급급했는데, 기초 개념면에서 파이썬과 다른 점을 좀 짚고 들어가려 한다. 머릿속에 물음표가 뜨는 일이 좀 많다. 제목을 왜 이래요?라고 쓰긴 했지만 이유를 뜯어보는 건 아니고 그냥 받아들이는 수 밖에 없다. 외우기. 정현님께서 추천해주신 강의 링크. 영상이 짤막하게 많고(한글 cc 없음) 중간중간에 퀴즈 있다. 신규가입자는 할인 받아서 15000원. 브라우저 콘솔 쓸 때 변수 선언 직후 바로 아랫줄에 undefined가 뜨는게 뭔가 이상한 게 아니고 변수명 찍어보면 그제서야 넣어준 값이 보인다. 정상임. primitive types number, boolean, strin..
Git 속이기 - rebase $ git log로 이제껏 남겨둔 commit을 볼 수 있다. branch들이 각기 origin/main에서 언제 분화되어 나오고 거기서 얼마나 멀리, 몇 commit이나 떨어졌는지도 알 수 있다. 이렇게 쌓아둔 commit 중에는 무언가 중요한 변화가 담겨있는 것도 있고, branch를 옮겨다니느라 대충 남긴 것도 있다. 이걸 그대로 merge하면 이 기록이 전부 남는다. 여러 branch를 받아들이는 main의 이력이 특히 엄청 지저분해진다. rebase를 쓰면 이 이력을 원하는 대로 조작할 수 있다. 여러번의 commit을 마치 한 번의 commit에 해낸 것처럼 합쳐 넣을 수 있고, 한참 전에 파생된 branch지만 최신 main의 상태를 따와 만든 것처럼 히스토리를 바꿀 수 있다. 기능이 센 만..
RESTful API 처음에는 RESTful API를 백엔드 입장에서의 사용자(프론트엔드 개발자)가 API를 사용할 때 엔드포인드 url과 용도를 명확하게 인지할 수 있도록 깔끔하게 만든 API라고만 생각했다. REST가 무엇인지에 대해 더 찾아보니 이게 많은 목적 중 일부라는 걸 알았다. 프립 사이트의 URI를 예시로 이해한 바를 정리했다. REST Representational State Transfer의 약자로, 아키텍쳐 디자인 가이드이다. REST의 6가지 조건(constraints) 옆에 붙인 설명은 내가 이해한 대로 쓴 표현이라 추후 더 공부하다보면 틀린 점이 나올 수도 있겠다. 1. client-server: 서버, 클라이언트가 각자의 자세한 사항에 대해 신경쓸 필요가 없다. 2. steteless: 서버측에서 ..
DateTimeField를 추가할 때 데이터의 생성 일시와 수정 일시를 저장할 땐 대개 아래 두가지를 사용한다. auto_now_add는 최초로 생성할 시에만 들어가고, auto_now는 저장될 때마다 업데이트 된다. 둘 다 직접적으로 건드릴 수 없다.(editable=False) created_at = DateTimeField(auto_now_add=True) updated_at = DateTimeField(auto_now=True) 이런 column은 당장 사용하지 않더라도 확장성을 고려하여 나중에 필요할 법한 곳에 미리 추가해두는 게 좋다. DB에 이미 저장되어 있는 데이터가 있는데 DateTimeField를 추가하고자 한다면 이 column에 값을 채워넣어야 되기 때문에 아래와 같은 메세지가 나온다. 3을 선택해서 나간 뒤 model..
DB에 csv로 초기 데이터 넣기 장고 프로젝트의 settings.py에 들어가는 데이터베이스 정보는 자신의 로컬 DB에 대한 정보이다. AWS에 DB서버를 올려두고 쓰는 환경이 아닌 이상 팀원들이 가지고 있는 DB는 다 다른 것이고, 안에 들어있는 정보도 다르다. 로직을 테스트하기 위해서라면 방드시 같은 정보일 필요는 없지만, 텅 빈 DB에 새로 데이터를 손수 채워넣는 건 매우 귀찮다. 특히 레퍼런스 테이블이 존재하거나 이리저리 fk가 얽혀있는 모델에 데이터를 넣으려면 어디에 무얼 먼저 넣어야 되는지 신경쓸 게 많다. csv파일로 미리 만들어 둔 데이터를 공유하고 이를 각자 DB에 넣으면 이런 불편이 상당부분 해소된다. 한 사람의 DB에 데이터를 쳐넣고 이를 백업 떠서 sqldump 파일을 공유하는 방법도 있겠지만, 처음 데이터를 넣는..
TypeError: Object of type JsonResponse is not JSON serializable 장고를 사용하여 스타일쉐어 클론 프로젝트를 할 때 리팩토링을 하면서 냈던 에러다. 에러 메세지가 내가 예상하는 순서대로 나지 않는다는 걸 상기했다. 그리고 디버깅시 값 뿐만 아니라 타입도 찍어봐야 겠다는 생각을 하게 되었다. 응답에 정보를 담아 프론트로 보낼 때 JsonResponse로 보내는데, exception 처리 코드를 이리저리 붙여보고 가독성을 위해 리팩토링을 하다 이전에 테스트를 할 때는 나지 않았던 에러가 발생했다. JsonResponse 안에 들어있는 키-값 쌍 하나하나를 주석처리를 해보며 문제가 있는 라인을 찾았다. get_current_user_id는 사용자가 로그인을 한 상태라면 users 테이블 상의 id를, 아니라면 0을 반환하는 함수다. 에러가 났을 당시에는 바로 찾지 못했지만,..
Style We 프로젝트 이미지 2 user 17명의 게시글 이미지 unsplash.com/ 학습 목적으로 사용 중 user1 feed1 feed2 - onverse sneakers 1 feed3 feed4 user2 feed1 - onverse high top 1 feed2 - onverse high top 2 feed3 feed4 user3 feed1 feed2 feed3 feed4 - onverse high top 1 user4 feed1 feed2 feed3 - cike high top 1 feed4 user5 feed1 feed2 - cike sneakers 1 feed3 user6 feed1 - naddidas sneakers 1 feed2 feed3 - naddidas sneakers 1 feed4 user7 feed1 fee..