분류 전체보기
-
[리팩토링] 챗봇 추가하기Project 2021. 7. 25. 01:45
처음에 오쿠의 채팅방은 거래 성사 이후 생성이 되도록 하는것이 목표였다. 그러나 정작 채팅기능을 만들고나니 첫 화면에 모든 사람들과 채팅을 할 수 있는 방이 생겼다. 원인은, 채팅방(room)의 정의를 productId-userId-userId 로 하였는데, 세가지가 undefined인 경우에 대해 예외처리를 하지 않아서이다. 즉, 아래 채팅방에서 리스트의 목록을 누르지 않은채로 있으면 room은 undefined-undefined-undefined가 되어버리고, 그럴 경우 모든 유저들은 undefined 방에 접속되어 말 그대로 아무나 채팅이 되어버리는 것이었다. 그런대로 나쁘지않은 기능이었지만, 의도하지 않은 기능을 그냥 두는것은 뭔가 .. 휘뚜루 마뚜루 오 됐지 뭐~! 이런 느낌이어서 해당 기능에 ..
-
[리팩토링] 유저 가입 코드 수정Project 2021. 7. 15. 23:34
오쿠 프로젝트의 코드를 리팩토링 중이다. 자바스크립트도 공부하고, CS공부도 하고있는데 배운걸 진짜 그냥 코드에 한번 발라보고싶었다.. 배운건 짧아도 다 써먹어보고싶은것이 자연의 이치이다. 분명 내가 짰는데 동작을 헷갈려서 엉뚱한 코드를 짰다. .... 내가 나 자신에게 당하다니.. 똑같이 userEmail, userNickname의 중복 여부를 체크하는 코드였지만, 하나는 클라이언트쪽에서 입력받자마자 확인할 수 있는 api였고 나머지 하나는 회원가입하면서 밸리데이션하는 코드였다. 그런데 이름을 둘 다 checkEmail,checkNickname으로 해놔서.. 한 번 엉뚱하게 코드를 작성해서 시간 버리기..! 취미이자 특기이다. userController.js파일이 너무 방대해졌다. 그래서 클라이언트쪽에..
-
[OKU] 유효성 검사는 어디에서 발생하는가?Project 2021. 7. 2. 00:34
유효성검사 코드를 조금 수정해놓았다. 기존의 코드는 컨트롤러단에서 검사를 하고 있어서 코드를 보기 어렵다고 판단했다. 문득, 유효성검사 코드를 건드리면서 궁금한 점이 하나 생겼다. 유효성 검사는 어디에서 일어나는걸까. 1. 클라이언트 2. 비즈니스 로직 3. DB단 유효성 검사는 클라이언트, 비즈니스로직, 데이터베이스 등 애플리케이션 전체에 골고루 분포될 수 있다. 하지만 유효성 검사가 여기저기 분포될 수록 코드의 관리가 어려워진다. 검사 조건이 변경될 때 마다 찾아서 변경할 수도 없고, 클라이언트와 데이터베이스간의 유효성 검사 조건 맞추는 것도 일일이 비교대조 해야해서 시간이 꽤 걸렸다. 거기에 잘 작동하는지도 일일이 확인해야했다. 비즈니스 로직에서 추가적으로 유효성 검사를 하면 좀 더 튼튼한 웹사이트..
-
왜 몽고디비를 쓰는가?whatIRead 2021. 6. 28. 23:06
1. 몽고디비는 고성능의 대용량 데이터를 처리할 때 선호된다. 1초에 수천개의 레코드를 삽입할 경우, 몽고디비가 최선의 선택지이다 2. 수평확장(새 열 추가)이 매우 쉬움. RDBMS시스템에서 쉬운 프로세스가 아님 몽고디비를 사용해야하는 장소 전자 상거래 유형의 제품 기반 애플리케이션 블로그 및 콘텐츠 관리 시스템 실시간 고속 로깅, 캐싱 등 위치 현명한 지리 공간 데이터 유지 필요 소셜 및 네트워킹 유형과 관련된 데이터를 유지합니다. 애플리케이션이 느슨하게 결합 된 메커니즘 인 경우-설계는 언제든지 변경 될 수 있습니다. 몽고디비의 장점 스키마가 없는 문서유형 데이터베이스 저장된 데이터에서 데이터를 검색하기위한 필드, 범위 기반 쿼리, 정규식 등을 지원 확장 또는 축소가 매우 쉬움 기본적으로 훨씬 더 ..
-
실행컨텍스트와 클로저TodayILearned/javascript 2021. 6. 25. 17:33
poiemWEB,제로초님의 블로그글을 읽고 공부한 내용을 정리했습니다. 실행컨텍스트 실행 가능한 코드를 형상화하고 구분하는 추상적인 개념 브라우저가 스크립트를 실행하는 순간, 전역 컨텍스트가 생성됨( 모든것을 관리하는 환경) 이후 함수를 호출할 때 마다 함수 컨텍스트가 하나씩 생성된다. 컨텍스트의 네가지 원칙 전역 컨텍스트 생성 후, 함수 호출 시 마다 컨텍스트가 생성 컨텍스트 생성 시 컨텍스트 안에 변수객체(variavle, argument), scope chain, this가 생성됨 컨텍스트 생성 후 함수 실행, 사용되는 변수들을 변수 객체 안에서 찾고 없다면 스코프 체인을 따라 올라가며 찾는다. 함수 실행이 마무리되면 해당 컨텍스트는 사라짐(클로저 제외) 페이지가 종료되면 전역 컨텍스트는 사라짐. ..
-
package-lock.jsonwhatIRead 2021. 6. 25. 10:57
package-lock.json docs npm에서 node_modules, package.json 파일을 수정 할 경우 자동으로 생성되는 파일이다. 이 파일은 파일이 생성된 정확한 트리를 설명하므로, 후속 설치에서 동일한 트리를 생성할 수 있다. 팀원, 배포 및 지속적 통합이 정확히 동일한 의존성을 갖도록 보장한다. nodemodules파일에 대한 커밋 없이도 바로 이전 상태로 돌아갈 수 있도록 한다. 트리변경사항을 시각적으로 확인할 수 있음 npm이 이전에 설치된 패키지에 대해 반복되는 데이터 확인을 건너 뛸 수 있도록하여, 설치 프로세스를 최적화 npm v7부터는 패키지 트리 전체를 얻기위한 충분한 정보가 포함되어 package.json 파일을 읽을 필요가 줄어들었으며, 성능이 크게 향상되었다. 즉..
-
자바스크립트는 싱글스레드인가?TodayILearned/javascript 2021. 6. 24. 17:22
자바스크립트는 싱글스레드 언어이다. 그래서 코드가 위에서부터 아래로 순차적으로 실행된다. 하지만 정작 웹페이지를 만드려고 코딩을 하다보면, 비동기와 같은 단어가 등장한다. 자바스크립트의 작동원리 자바스크립트는 싱글 스레드 언어가 맞다. 메인스레드가 하나이기 때문이다. 그래서 한번에 한개의 작업만을 처리하는데, 이것을 동기적이라고 한다. 이러한 특성 때문에 오래걸리는 작업이 콜스택에 걸리게되면, 유저는 느린 작업을 경험하게 된다. 그러나 자바스크립트의 런타임이 이러한 단점을 보완해준다. 자바스크립트를 실행시키는 엔진은 브라우저마다 다르다. SpiderMonkey : 파이어폭스 / V8 : 크롬 / Webkit : 사파리 / Chakra : 익스플로러, 엣지 자바스크립트 엔진은 변수와 객체에 대한 메모리를 ..
-
The Complete JavaScript Course 2021(2)TodayILearned/javascript 2021. 6. 23. 23:30
2021.06.22 - [TodayILearned/javascript] - The Complete JavaScript Course 2021(1) The Complete JavaScript Course 2021(1) 유데미의 the complete javascript course를 듣고 정리한 내용입니다. 자바스크립트란? 자바스크립트는 고수준 언어이고, 객체 기반의 언어Object-oriented programming (OOP)이며, 멀티 패러다임 언어이다. 자바.. tuigun.tistory.com 이어서 쓰는 글 Function calling other Fucntion, 함수내에서 또다른 함수 호출하기 함수 내에서 또다른 함수를 호출하여 사용이 가능하다. DRY (Don't repeat your sel..