전체 글 190

내일배움캠프 Team Harmony 1차 프로젝트 회고

- KEEP(이번 프로젝트에서 잘 된 것 -> 유지하고 싶은 것) - PROBLEM(문제점 + 해결방안) - TRY(다음 프로젝트를 위해 해야할 노력, 시도해보고 싶은 것) 1. KEEP - MVC패턴 적용해서 파일들 잘 분리한 것이 좋았다. - git action 배포 별 문제 없이 잘 된 것. - 미니 프로젝트 할 때 보다 팀끼리 커뮤니케이션이 더 원활하게 돼서 좋았다. - 미니 프로젝트 때 개선할 점으로 나왔던 MVP 방식으로 프로젝트를 완성할 수 있었던 점 - 이번 프로젝트만으로 완성된 하나의 포트폴리오를 만들 수 있었다. - 미니 프로젝트 때보다 실용적인 프론트엔드(CSS)영역을 완성할 수 있었다. - 각자 기능 분배가 잘 됐고 모두 맡은 기능을 완성도 높게 마무리 할 수 있었다. - 새롭게 합..

'22.05.12 Today I Learned

- 댓글 삭제 시 자바스크립트 confirm 함수 이용해보기 - 자기가 쓴 댓글에만 삭제 버튼 보이게 하기 1. 댓글 삭제 시 자바스크립트 confirm 함수 이용해보기 기존에는 댓글에서 삭제 버튼을 누르면 바로 alert 창이 뜨면서 확인을 누르면 댓글을 삭제할 수 있었다. 그런데 팀원 한 분이 한 번 더 물어보면 좋을 것 같다고 해서 기능 변경을 시도해봤다. 자바스크립트에는 confirm 함수가 있다. alert 함수처럼 기본으로 쓸 수 있는 함수다. confirm 함수를 쓰면 아래 처럼 나온다. 이걸 쓰는 방법은 간단하다. if(confirm("표시될 문구"){ // 확인 눌렀을 때 실행할 내용 } else { // 취소 눌렀을 때 실행할 내용 } 이런 식으로 써주면 된다. 이걸 알아내고 처음에는 ..

'22.05.10 Today I Learned

- 댓글 삭제 기능 구현 성공 - 프로젝트에 MVC 패턴 개념 적용 연습 1. 댓글 삭제 기능 구현 성공 어제 구현하는데 실패했던 댓글 삭제 기능을 드디어 구현하는데 성공했다. 오랜 시간 걸려서 성공해서 그런지 굉장히 뿌듯하기도 했고 엄청난 삽질을 하다가 성공했기 때문에 배운 것도 많았던 것 같다. 삭제를 할 때 제일 중요한 것은 '식별'을 하는 것이다. 어떤 것을 삭제할 지 명확하게 식별해서 특정을 해줘야 원하는 것을 정확하게 삭제할 수 있기 때문이다. 나는 이걸 총 세 가지 종류의 방법으로 시도했었다. 1. 몽고디비가 자동으로 생성해주는 ObjectId 첫번째로 시도했던 방법은 몽고디비에 데이터를 저장하면 모든 document는 자동으로 _id 필드에 ObjectId를 갖는다. 처음에 이것을 사용하려..

'22.05.10 Today I Learned

댓글 삭제 기능 만들기 시도 중 팀 프로젝트를 진행하면서 내가 맡은 기능이 댓글을 작성하는 기능과 그 작성한 댓글을 삭제시킬 수 있는 기능이었다. 현재 댓글 작성 기능은 완성했는데 삭제 기능을 구현하느라 애를 먹고 있다. 삭제가 왜 이렇게 어려운지 모르겠다. 어려운 이유는 지금 댓글의 특정한 아이디 값을 가져와서 지워야 하는데 DB에서 데이터를 그걸 어떻게 갖고 올 것이며 또 몽고디비에서 찾을 때 어떻게 찾을 것인지 등등 전반적으로 DB와 관련해서 어려움이 많은 것 같다. 일단 계속 시도해봐야겠다. (뭔가 오늘은 기능 하나를 오래 붙잡고 있었고 아직 구현하는데 성공하지 못 해서 TIL에 쓸 게 많이 없는 것 같다ㅜㅜ)

'22.05.09 Today I Learned

- AttributeError: module 'jwt' has no attribute 'encode' 에러 해결 - flask에서 render_template의 파라미터로 준 변수를 외부 javascript 파일에서 사용하는 법 - net::ERR_ABORTED 404 (Not Found) 에러 해결 1. AttributeError: module 'jwt' has no attribute 'encode' 에러 해결 프로젝트를 진행하는 중이다. JWT를 이용해서 토큰을 만들고 로그인 할 때 사용 중인데 원래는 파이썬 라이브러리 중에서 pyJWT를 사용 중이었다. 그런데 다른 팀원 한 분이 그냥 jwt 라이브러리도 추가를 해주셨는데 이걸 merge하고 내 로컬에 가져오니 로그인을 할 때마다 제목과 같은 에러가..

'22.05.02 ~ '22.05.06 (내일배움캠프 3주차) Weekly I Learned

How to record Weekly I Learned ? => 4F What is 4F? Fact : 이번주 있었던 일, 내가 한 일 Feeling : 나의 감정적인 반응, 느낌 Finding : 그 상황으로부터 내가 배운 것, 얻은 것 Future : 배운 것을 미래에 어떻게 적용할 것인가 1. Fact - 웹 개발 심화 동영상 강의 수강 - 본격적인 팀 프로젝트 시작 2. Feeling & Finding - 웹 개발 심화 동영상 강의 수강 수요일까지는 웹 개발 심화 강의를 동영상 강의로 수강했다. 확실히 기본 강의에서 배운 것보다 어려운 기능도 많고 복잡해지는 것도 많은 것 같다. 여기서 배우는 기능이 CRUD 기능 같은데 백엔드의 가장 기본이 되는 것 같다. 프론트엔드만 찔끔찔끔 공부하다가 갑자기..

Team Harmony (A-2) 1차 프로젝트 S.A

1. 프로젝트 제목 할머니는 다 들어주셔 2. 프로젝트 간단한 설명 저희 프로젝트의 메인 테마는 게시판입니다. 다양한 커뮤니티 기능들을 중점으로 유저가 능동적으로 이용할 수 있는 게시판을 만드는 것을 목표로 하고 있습니다. 이번 1차 프로젝트에선 네이버 스포츠 뉴스의 댓글 기능이 막힌 것에 대한 아쉬움을 극복하는 것을 목표로 네이버 스포츠 뉴스를 스크래핑 해 와서 각 뉴스 카드를 클릭하면 뉴스의 요약본을 보여주고 그것에 대한 의견을 댓글로 남길 수 있는 기능을 만드는 것을 과제로 삼고 있습니다. 3. 와이어 프레임 (1) 인덱스 페이지 (2) 상세 페이지 (3) 마이 페이지 (4) 프로필 수정 (5) 회원가입 (6) 로그인 4. 개발해야되는 기능 번호 api 역할 Methods URL request re..

'22.05.06 Today I Learned

AWS ElasticBeanstalk + github Actions 사용해서 CI/CD 환경 만들어보기 오늘은 하루종일 AWS와 github Actions에 고통받는 하루였다. 아직도 인프라는 나랑 친해질 생각이 없는 것 같다. 새롭게 팀 프로젝트를 시작해야돼서 CI/CD 인프라를 만들어놓고 하려고 했더니 뭐가 문제인지 계속해서 안 됐다. 문제 상황은 다음과 같았다. 1. 팀 레포지토리에 push조차 안 됨 => 토큰 로그인 방식으로 파이참에서 계정 연동 방식을 수정하고 나니 해결됐음 2. push까진 됐으나 배포가 되지 않음 이 두 번째 문제로 인해 오늘 거의 하루종일 고통받았다. EB에 배포가 되질 않아서 뭐가 문제인지 한참 해맸다. 계속해서 EB 상태가 심각함이 나오면서 배포가 최종적으로 실패했다...

'22.05.04 Today I Learned

- 강의 들었던 것 복습 - flask 프레임워크 쓸 때 static 디렉토리에 있는 CSS가 적용이 안 되는 문제 해결법 1. 강의 들었던 것 복습 오늘은 특별히 강의 진도를 나가지 않고 지금까지 들었던 강의 중에서 내가 잘 이해가 안 됐던 것들을 복습을 했다. 강의를 들으면서 나름 잘 봤다고 생각했던 코드들도 다시 보니까 굉장히 새로웠다. 스파르타의 강의 방식은 주로 코드 스니펫에 미리 올려진 코드를 복사/붙여넣기 하면서 진행되는데 장단점이 있는 것 같다. 강의 전체의 흐름을 따라가고 기능 구현에 필요한 코드를 알 수 있다는 장점도 있지만 한편으로는 직접 코드를 치면서 하는게 아니라 기억이 금방 휘발되는 것도 있는 것 같다. 이 부분을 보완하기 위해서는 코드를 더 꼼꼼히 읽어보고 왜 그렇게 코드를 쓴..

'22.05.03 Today I Learned

로그인과 회원가입 1. 회원가입 회원가입을 할 때 오늘 처음 배운 것은 hash함수라는 것이다. hash함수가 필요한 이유는 암호화 때문이다. 사용자가 회원가입할 때 pw를 입력했는데 그걸 개발자나 관리자가 볼 수 있으면 보안상 문제가 생기기 때문에 개발자나 관리자조차 알 수 없도록 암호화 할 때 hash 함수를 사용한다. hash함수에는 종류가 여러 개가 있는데 오늘 배운 것은 SHA256이었다. 이걸 사용하면 2의 256제곱만큼 경우의 수가 생성되어 무작위 입력으로는 절대 비밀번호를 풀 수 없을 수준이 된다고 한다. (어마어마하다) 파이썬에는 hash함수 라이브러리가 내장되어있기 때문에 사용하고 싶을 때 바로 import hashlib 을 해주면 사용할 수 있다. password_hash = hash..