전체 글116 [면접복기 24.09.25] 까먹기 전에 복기하기2 (useState의 동작원리?) const MyReact = (function () { let _val; return { render(Component) { const Comp = Component(); Comp.render(); return Comp; }, useState(initialValue) { _val = _val || initialValue; function setState(newVal) { _val = newVal; } return [_val, setState]; }, };})();function Counter() { const [count, setCount] = MyReact.useState(0); const [tex.. 2024. 9. 25. [면접복기 24.09.25] 까먹기 전에 복기하기 (feat. closure, useState, primitive type, deep copy, shallow copy) function useState(initialValue) { var _val = initialValue; function setState(newVal) { _val = newVal; } return [_val, setState];}const [foo, setFoo] = useState(0);console.log(foo);setFoo(1);console.log(foo);해당 코드는 useState hook을 구현한 것.해당 코드에서 foo라는 상태의 초기 값은 0이고 setFoo에 1의 값으로 상태를 변경하면?나는 1이 나올거라고 생각하고 답했다. 하지만 틀린 답이었고 추가적으로 위의 코드를 어떻게 수정해야할까라는 질문을 받았다.나는 var 키워드의 문제로 함수 레벨 스코프의 문제인거 같다고 .. 2024. 9. 25. [emotional] 고도화 작업 중 기존 이모셔널은 회원가입 기능 없이 그냥 바로 사용 가능한 서비스였다.새 프로젝트를 하기 보단 고도화를 해보자는 생각에 간단한 서버를 만들었고,그걸 이용해서 고도화 작업에 들어갔다.회원가입과 로그인 폼을 만들었고, 하나의 라우터에서 해쉬를 사용해서 signin과 signup을 구분하고 있다.자세한 내용은 고도화 작업이 얼추 되는데로 기술하겠다. 2024. 9. 12. [emotional server] 엔드포인트 변경, HTTPS 적용, CI/CD 확인 express + mysql + aws rds를 사용해서 서버를 만들었고,남은 과제로 elastic beanstalk에서 제공하는 임의의 엔드포인트가 아닌 도메인을 연결해서 엔드포인트를 만들었다. 그리고 Certificate Manager를 이용해서 SSL 인증을 통해 HTTPS 적용하고, Github Action을 사용해서 repository와 beanstalk CI/CD 파이프라인을 구축했다. 먼저 기존 emotional.today 도메인이 호스팅 되어있어서 엔드포인트 연결 자체는 route53에서 api로 사용할 도메인만 레코드 생성해서 진행했다.Elastic BeansTalk에서 로드밸런싱이 설정되어있지 않다면 사용할 애플리케이션 환경의 구성에 들어간다.구성을 클릭하면 위 스크린샷과 같은 탭을.. 2024. 9. 7. [express + mysql + aws rds] 드디어 배포까지 완료 express mysql aws rds를 사용했고 배포는 aws elastic beanstalk로 완료.원래는 ec2로 배포하였으나, elastic beanstalk를 사용해보기로 하였음.ec2로 배포해도 테스트 해본 결과 아주 잘됨!아직 자동 배포가 안되긴 하지만 추후에 ci/cd도 업데이트 예정.포스트맨으로 로그인하면 로그인 성공했다고 나온다. 그리고 아래 스크린샷에도 로그인 관련 기록도 db에 남는데 정상적으로 기록이 된다.이걸로 emotional 프로젝트 고도화 작업 밑거름 세팅은 된거 같다.간단한 회원가입, 로그인, 로그아웃 기능만 있지만 조금씩 추가해나가면서 고도화는 계속 될 예정.elastic beanstalk를 쓰면서 겪은 에러 사항이나 사용법은 추후에 업로드 할 예정.추가 해야할 것들 C.. 2024. 9. 6. [MySQL] Workbench 사용해보기 express + mysql + aws rds를 사용해서 간단한 회원가입 로그인 로그아웃을 만들어보려고 하는데express에서 테이블을 만드는 로직을 써서 테이블을 만들고 하는건 알겠는데, 내가 작업할 프로젝트에서 테이블을 만드는 로직을 썼다가 지웠다가 하는건 아닌거 같아서 테이블을 생성하는 방법을 찾아봤다.뭐 ORM이니 하는 것들이 있지만 일단 MySQL Workbench를 사용해보기로 했다.좀 더 시각적으로 직관적이게 다가오는 느낌이 들어서.먼저 Workbench를 검색해서 다운로드를 받는다.설치를 하고 난 다음에 실행시긴다.화면 상단에 빨간 박스로 되어있는 Database 탭을 클릭한다.파란색으로 칠해져있는 Manage Connections 클릭.여기에 Hostname에 RDS 엔드포인트를 넣고 P.. 2024. 9. 5. [SQL] Prepared Statements 뭐라고 읽어야할까 미리 준비된 구문? Prepared Statements를 사용하면 입력 값을 파라미터로 전달해서 SQL문을 동적으로 생성하는 대신, 미리 정의된 SQL 쿼리에 값을 채워넣을 수 있는데, 사용자 입력이 SQL코드로 해석되는 것을 방지할 수 있다고 한다.왜 사용자의 입력이 SQL코드로 해석되는 것을 방지해야할까?SQL 인젝션(Injection)이라는 보안 취약점 때문이라고 하는 데, SQL 인젝션은 공격자가 사용자의 입력을 악의적으로 조작해, 데이터베이스에 임의의 SQL 쿼리를 실행시킬 수 있게 만드는 공격 기법이라고 한다.이로 인해 공격자는 데이터베이스를 조작하거나 민감한 데이터에 접근할 수 있고, 시스템에 손상을 입힐 수 있다.1. 데이터 유출 - 공격자는 SQL 인젝션을 통해 데이터베.. 2024. 9. 4. [Poke api] 나도 이제 오픈소스 컨트리뷰터 포케허브 프로젝트를 하면서 한국어 데이터가 누락된 부분이 너무 불편해서 누락된 부분은 구글링해서 박박 긁어모아서 상수 데이터로 만들어서 썼는데, 프로젝트가 끝나면 기여하겠다는게 이때까지 질질 끌다가 새벽에 pr을 날려 오늘 merge가 되었다.데이터를 추가하는거 뿐이었지만 Poke api readme에 적혀있는 내용대로 도커 환경에서 db를 빌드해서 테스트를 하고 일본어 데이터가 한국어에 있는 부분도 수정하고, 여러 포켓몬의 누락된 종족 정보에 대해서나 새롭게 추가된 포켓몬의 한국어 데이터를 추가하여 로컬 환경과 기존 환경의 비교 스크린샷을 찍고 상세 내용을 적어서 pr을 날렸더니 하루만에 merge를 시켜줬다.기존 이슈에서는 데이터 변경에 대해서는 veekun이라는 개발자의 관련 레포지토리를 포크해서 .. 2024. 8. 31. 이전 1 2 3 4 5 ··· 15 다음