목록전체 글 (108)
컴퓨터를 공부하고자 마음먹은지 N일차
Reference 📕 SQL 첫걸음 / 아사이아츠시 물리삭제와 논리삭제 물리삭제와 논리삭제는 sql이나 데이터베이스 명령 그 자체라기보단, 아키텍쳐에 가깝다. 물리냐 논리냐를 판단하는건 데이터베이스 매니저가 설정을 해주는게 아닌, 만든사람이 용도에 따라 어떻게 구조하느냐에 따라 다르다. 물리삭제 물리삭제는 아예 해당 테이블에서 지워버리는것이다. DELETE FROM Friends WHERE id=3 위와같이 지우려는 데이터를 데이터베이스에서 아예 삭제해버리는것이다. 논리삭제 반면 논리삭제는 삭제여부를 나타내는 칼럼을 추가해서 그 칼럼의 값으로 삭제됐는지 판단을 하는것이다. UPDATE Friends SET isDeleted=1 WHERE ID=2; 데이터베이스 상에서는 삭제되지 않았지만, 해당 테이블을 ..
closure함수? closure를 MDN에서 설명하기를 함수와 함수가 선언된 어휘적 환경의 조합이라고 설명한다. 클로져 함수는 쉽게 말해서 외부환경을 기억하고 참조하는 내부함수라고 대답할수 있겠다. 어떻게 함수는 외부환경을 참조할까? 함수가 실행될때 일어나는일 실행컨텍스트가 만들어진다. 함수가 실행이 된다면 즉시 자기 몸속(?)에 있는 코드들을 실행시킬 환경을 생성한다. 활성객체와 스코프체인 이 만들어진다. 실행 컨텍스트가 생겨 난 후 자신이 받은 인자와 , 지역변수등을 담아놓는 활성객체를 생성한다. 그와 동시에 스코프체인을 만든다. 스코프 체인은 유효범위의 정보들을 연결리스트로 담아놓는다. (외부컨텍스트를 참조할 때 활용함) 그 안에 내부 함수가 실행되면서 내부 함수 또한 스코프체인에 현재 실행컨텍스..
Reference 로우 레벨로 살펴보는 Node.js 이벤트 루프 Node.js 동작원리 nodejs의 이벤트루프 얼마 전 nodejs는 완전한 싱글스레드가 아니란걸 깨달았고,(그냥 싱글스레드라고 맘편히 생각하자) 이벤트루프라는 녀석이 싱글스레드라는걸 알게됐다. 그런데 이 이벤트루프가 있는곳이 js를 실행시키는 엔진에 있는게 아니다 실제로 이벤트루프가 실행되는 곳은 Nodejs에서는 libuv에서 실행이되는데,(브라우저도 이벤트루프를 실행시키는곳은 따로존재함) 이 이벤트루프라는걸 통해 main.js 라는 스크립트를 어떤 과정으로 실행하고 비동기 작업을 처리하는지 살펴보자. 이벤트 루프가 활성 상태인지 알아본다. 즉 이벤트루프를 통해 해야할 작업이 있는지 확인한다. 만약 이벤트 루프를 돌릴 필요가 없다면 ..
nodejs로 서버앱을 개발했을 때 장점 nodejs는 정말 쉽고 간편하게 REST API를 만들수 있게 한다. 가볍고 큰 규약이 없으며, express를 만나면 더 간결하고 쉽게 서버앱을 만들 수 있다. nodejs는 출시후 10년동안 개발의 패러다임을 바꿔놓을 정도로 많은 각광을 받았다. 쉽고 간편한것 이외에 성능적인 면이나 기타 다른부분에서 장점은 없을까? 논 블록킹 I/O Node.js가 "논 블록킹"이며 효율적으로 I/O를 처리한다는것은 한번쯤은 들어봤을것이다. 논블로킹이란 이전 작업이 끝날때 까지, 기다리지 않고, 다음작업을 동작하는 패러다임이다. 시간이 걸릴만한 작업들을 뒤로빼놓고, 다음코드를 먼저 실행시키는것으로 이해하면된다. 그리고 싱글스레드이지만 비동기I/O작업을 통해 요청들을 서로 블..
nodejs환경과 브라우저환경은 어떤 차이가 있을까? nodejs와 브라우저의 js는 모두 똑같은 v8엔진이라는 런타임을 통해 돌아간다. 또한 둘 다 공식 자바스크립트 명세(ECMA)를 따른다. 단순히 서버사이드와 클라이언트사이드의 차이가 아닌 어떤 차이가 있을까? 전역 객체의 차이 nodejs의 전역객체는 위와같이 global을 가리킨다. 파일을 실행시키는 거라면 Module을 가리키고있을것이다. 반면 브라우저는 Window라는 객체를 가리킨다. window객체에는 브라우저 dom을 활용할때 쓰는 document객체 등등 볼 수 있는데 node에서는 그런게 있을리 없다. 그러나, 브라우저에서는 node에서 활용할 수 있는 내장모듈인 fs모듈(파일관리)을 활용 할 수 없다. 모듈 시스템의 차이 nodej..
RESTful API란? REST RESTful API를 알려면 REST의 정의부터 알아야 한다. Representational State Transfer 의 약자이다. URI 로 자원(resource)을 특정하고 해당 자원의 상태를 주고받는 것이다. 위와 같이 url을 통해 자원(sale)을 구분하고, http메소드를 통해 행위를 구분한다. 규칙 REST는 그 기반의 규칙들이 있다. URI는 자원을 표시 동사보다는 명사를 사용해야 하고, 행위에 대한 표현이 들어가면 안된다. 규모가 큰 서비스를 하다보면 피치 못하게 행위를 Uri로 넣는 경우도 있다고 하더라. 예를 들면 배달의 민족에서 배달 시작이라는 API를 피치못하게 Post메소드를 활용해서, URI에 행위를 넣었다고 한다. 행위는 HTTP 메소드로..
쿠키와 세션의 차이 우선 쿠키는 브라우저에 저장이 된다. 세션은 서버의 세션저장소 라는 곳에 저장이 된다. express에서는 위와같이 req.session 의 각 키값에 할당을 해주는 방식으로 저장한다. 그렇다면, 사용자 A가 접속을 해도 userId로 가져오고 사용자 B가 접속을 해도 userId로 가져오는데, 어떻게 서버에서는 서로 다른값을 받을 수 있을까? 사용자의 쿠키에 담긴 세션 아이디를 통해 구분한다. 내가 자주 사용하는 Imgur이라는 사이트에서는 sessiondata라는 쿠키로 세션아이디를 저장한다. 이 사용자마다 다른 세션아이디를 통해 서로 다른 사용자를 구분한다.
소개 깃헙레포: link 배포링크: yeongn.com 이 세상에 무쓸모는 없다! 라는 모토로 만들어진 프로젝트이다. 오래된 책들, 과거의 추억이 있는 물건, 집안 대대로 전해져 오는 가보 그리고 자신만 가지고 있는 신기한 물건, 나만 알고 있는 정보 등 어떠한 것들도 감정을 받을 수 있는 커뮤니티 성향이 강한 앱이다. 더 궁금하다면 배포링크로 들어가서 한번 이용해보자! 기획단계 우선 배경을 설명하자면, 우리 팀원들은 이전 프로젝트를 함께 했었고, 심지어 합숙도 한번 했다. 그때 너무 하하호호 즐겁게 소통하면서 했기에, 팀원중 한명이 기똥찬 아이디어를 하나 내길래 바로 다음 프로젝트는 그걸로 하자고 그랬다. 그렇게 기획단계가 순조롭게 흘러가나 싶었는데.. 진짜 기획을 진행하다가 하다가 보니까, 너무너무너..