본문 바로가기

전체 글12

[항공 예약 챗봇 개발] 2. ec2 인스턴스에 개발용 환경 설정 로컬에 공간이 부족하고, django를 사용할 일이 거의 없기 때문에 ec2 인스턴스에 개발용 환경도 설정하여 작업하기로 결심했다.[EC2 인스턴스] ├── A: 서비스 돌고 있는 현재 디렉토리 (백엔드 서버) └── B: 동일 인스턴스에 다른 디렉토리로 깃 클론해서 개발용[깃 저장소] └── 수정사항 push하면 GitHub Actions로 EC2 서버 업데이트 1. ssh clone하기2. 환경 설정하기나는 기존 프로젝트를 fork 해온 후 그 기반으로 작업하고 있다.기존 프로젝트에서 local 실행은 venv에서 실행하도록 했기 때문에, ec2에도 venv를 설치해줬다. ec2에서 아래와 같이 실행하면 당연히 브라우저에서 접속이 불가하다.아래 명령어는 127.0.0.0에서 서버가 .. 2025. 4. 22.
[React] UseState는 렌더링 될 때 state를 변경해준다 js는 모든 코드가 기본적으로 비동기적으로 작동한다. 그래서 서버에서 데이터를 가져올 때 항상 async랑 await를 사용해서 비동기적으로 작동하도록 코드를 작성해야 한다. 어떤 라인에 await를 붙이면 그 아래 라인들은 이 라인이 실행될 때까지 기다렸다가 작동하게 된다. 그런데 await가 무용지물인 곳이 있었는데..! 그것이 바로 UseState이다. await를 사용하면 동기적으로 코드가 실행되는 것은 맞다. await setState()를 사용하면 setState가 실행된 후 아래 라인이 실행되긴 한다. 문제는 setState가 실행되는 것과, 실제로 state가 변경되는 것은 별개의 사건이라는 것이다. setState는 실행되는 순간 state를 바꿔야겠다! 하고 메모만 해둔다. 그리고 실제.. 2024. 1. 6.
[React] Shallow Comparison 어떤 배열을 업데이트한 후, 그걸 화면에 그대로 출력하려고 했는데 계속 안됐다. 새로운 원소를 추가하는건 잘 됐는데, 원소를 삭제하거나 기존 원소의 속성을 바꾸는건 되지 않았다. 그 이유는 React는 shallow comparsion을 사용하기 때문이다. 아마 객체를 비교할 때 원본 객체가 아닌, 그 복사본을 가지고 비교하는 듯 하다. 새 원소가 추가될 때는 다시 원본 객체의 복사본을 생성하지만, 삭제하거나 수정할 때는 기존의 레퍼런스를 그대로 사용하기 때문에 새로운 값이 화면에 나타나지 않는다. 아래 코드와 같이 새로운 배열 newnodes를 만든 후 nodes의 값을 그대로 복사해왔다. 그리고 newnodes에서 수정하고 싶은 원소를 삭제한 후, 수정본으로 새 원소를 만들어 다시 삽입해줬다. let.. 2023. 8. 25.
[Spring Security] JWT로그인 구현 - 2. JWT 필터, TokenProvider JWT 로그인을 구현하면서 이해한 내용을 정리해보았다. 인프런에서 제공하는 아래 무료 강의를 보고 작성한 코드이다. https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8-%EC%8B%9C%ED%81%90%EB%A6%AC%ED%8B%B0# [무료] 스프링부트 시큐리티 & JWT 강의 - 인프런 | 강의 스프링부트 시큐리티에 대한 개념이 잡힙니다., 스프링부트 시큐리티,제가 공부했던 걸 쉽게 설명드릴게요 🙂 스프링부트 시큐리티 github https://github.com/codingspecialist/-Springboot-Security-OAuth2.0-V3 htt www.inflearn.com 나는 프론트엔드 부분을 추.. 2023. 8. 13.