MacOS를 사용하자 자바스크립트는 오픈소스 , 특히 npm을 기반으로 발전해 왔습니다. 이 오픈소스들은 개발자들이 스스로 계쏙해서 발전시켜서 성장해왔는데 문제는 이 환경들이 macOS사용자위주로 구성되어있다. 윈도우가 문제가 될만한 이유 node.js 버전관
웹브라우저 사용하고있다 = 자바스크립트 런타임 이다.!!런타임이란 프로그래밍 언어가 구동되는 환경 ? (프로그래밍언어가 돌아가는 동안 아니였나..)쉽게 말해서 환경은 프로그램이다.런타임이란 어떤 프로그래밍 언어가 동작할수있는 프로그램이다.원래 우리가 JS를 실행할수 있
나는 보통 GUI로 등록한거같은데 기억이 가물가물하다.터미널을 열어서$ git config --list 를 해보면등록된 사용자 정보를 확인할수 있다.각각의 프로젝트파일에도 gitconfig가 등록될수있는데 이는 개별적인 사용자로서 사용되는것이고\--global의 경우
Git Flow Fork 내가 하려고하는 작업을 서로 포크떠서 자신의 리포지터리를 복사한다. Clone 각자의 로컬로 가져온다. 페어의 Repo와 나의 Repo연결하기 $git remote add pair $git remote -v 로 서로 pair라는 이
node.js는 서버를 만드는환경node.js는 백엔드 환경둘다 아니다. 전혀아니다.!!node.js를 통해 웹서버를 만들수 있고, 이 내요이 대중적으로 퍼졌기 때문에 생긴 오해이다.node.js에는 DOM이 존재하지 않는다!!window,document 같은 객체가
npm 모듈을 활용하기 위해 해당 모듈에 대한 정보를 담은 파일즉 프로젝트 전반에 관한 정보가 들어있다.node.js생태계의 패키지 매니저pakage.json에 적핀 모듈을 다운받는다.node.modules파일에 저장된다.프로그램 실행과 관계없느 오로지 개발을 위해 필
원래 안적으려고 했는데기본적으로많은내용을 알고있다고 생각했다. TIL 이니까 아는것은 넘어가도 되지않나 했지만.클로저와 화살표가 찰떡궁합이여서클로저로 사용한 예는 또 새롭게 다가와서 다시 정리해보았다.이런식의 클로저 함수가 있다 치자.에로우펑션으로 바꾸면 가독성이 눈에
CommonJS는 웹 브라우저 밖의 자바스크립트를 위한 모듈 생태계의 규칙을 설립하기 위한 프로젝트이다로 정의된다.일단브라우저와 다르게 node.js의 특징 중 하나는, 다양한 내장 모듈이 존재한다는것이다.브라우저는 다른스크립트 파일 불러올때 html에서 <scr
⚠️ 메소드 호출 방식을 이용할 때에는 화살표 함수를 쓰지 않습니다. 그 이유는 "this 키워드" 항목에서 다룹니다.이러한 하나의 객체만을 사용할수있는것을singleton 패턴이라고 부릅니다.
Object Oriented JavaScript객체지향 ?하나의 모델이 되는 청사진(blueprint)를 만들고 => class그 청사진을 바탕으로 한 객체(object)를 만드는 프로그래밍 패턴 => instance최근에는 ES6문법을 주로 사용합니다.prot
class 나 객체지향적 마인드에서보면this는 해당 인스턴스 그 자체를 가리킨다.함수의 매서드인 call,apply,bind가 왜나온것일까쉽게 생각해보자.크롬 개발자도구를 켜서해보자.무엇이나오는가 ?window객체 자체가 나온다. (윈도우객체는 전역변수,함수들을 담는
초기의 프로그래밍 언어는 일반적으로 절차적 언어라고 불렀다. C언어 ,포트란? 등등..절차적 언어는 순차적인 명령의 조합"클래스"라고 부르는 데이터 모델의 청사진을 사용해 코드 작성현대의 언어들은 대부분 객체지향의 특징을 갖고 있음( 대표적으로 java,C++,c- j
프로토타입 체인이 뭐지?\_\_proto\_\_이것으로 접근하는게 프로토타입 체인이다.생성자.prototype===인스턴스.\_\_proto\_\_Student.prototype = Object.create(Human.prototype);이런방법으로 상속시킬수도 있다.
스택은 쌓다, 쌓이다, 포개지다 와 같은 뜻을 가지고 있다.직역 그대로 자료(data)를 쌓는 자료구조 이다.먼저들어간것이 나중에 나오고나중에들어간것이 먼저 나온다.LIFO 혹은 FILO라고 한다.Last in First Out / First in Last Out브라
Queue는 줄을서서 기다리다, 대기 행렬 이라는 뜻이다.스택과는 반대되는 개념으로먼저들어간 자료가 먼저 나오는 FIFO , LILO의 특성을 가지고 있다. First in First Out / Last in Last Out 티켓을 사려고 줄을 서서 기다리는 모습과 흡
그래프?그래프가 뭐지딱 정의하면여러개의 점들이 서로 복잡하게 연결되어 있는 관계를 표현한 자료구조. 점은 정점(vertex)이라고 표현하고, 선은 간선(edge) 이라고 표현한다. 포털 사이트의 검색 엔진, SNS, 네비게이션 (길찾기) 등에서 사용하는 자료구조가 바
그래프의 여러 구조중에서 일방향? 단방향? 그래프의 한 구조다.그 모습이 너무 나무와 닮아 있어서 트리 구조라는 이름이 붙어졌다.하나의 뿌리로부터 가지가 사방으로 뻗은 형태를 띄우고 있다.마치 가계도와 흡사해 보이는 이 트리구조를 간략하게 정의하면데이터가 바로 아래에
트리는 편리한 구조를 전시하는것 외에 효율적인 탐색을 위해 사용하기도한다.효율적인 탐색 을 위해 많은 지성인들이 각각의 특징을 추가하여 새로운 트리의 모습을 만드는 등 치열한 노력을 쏟았다.그렇기 때문에 특징에 따라 여러가지 이름으로 불리고있다.가장 많이 사용하는것이이
트리를 순회하는방법은 세가지로 나눌수있다.전위순회 (preOrder) / Root -> Left -> Right1 - 2 - 4 - 5 - 3중위순회 (inOrder) / Left -> Root -> Right4 - 2 - 5 - 1 - 3후위순회 (post
알고리즘?사람마다 정의가 다 다르지만 결국엔"문제를 어떤 식으로 푸는 것이 최선인가" 로 정의될 수 있다.그렇다면 최선인 경우의 수는?컴퓨터는 많은 방법을 시도할 수 있다.수없이 많은 경우의 수를 하나씩 비교해서 그 중 최선을 골라내거나하나씩 비교하지 않더라도 가장 좋
이것보다 더 효율적인 방법은 없을까 , 이게 제일 좋은 방법이 맞나효율적인 방법을 고민한다는것은 시간 복잡도를 고민한다는 것과 같다.이번에는 시간 복잡도와 Big-O 표기법에 대해서 다뤄보겠습니다.알고리즘에 대한 로직을 작성할 때 , 시간복잡도를 고려한다는 것은 무슨
Greedy? 사전적 의미로는 "탐욕스러운, 욕심 많은" 이라는 뜻이다.말 그대로 탐욕 알고리즘은 결정의 순간마다 당장 눈앞에 보이는 최적의 상황만을 탐욕적으로 쫒아 최종적인 해답에 도달하는 방법이다. 이러한 탐욕 알고리즘의 문제 해결법을 보다 단계적으로 나누어 본다면
앞서 배운 탐욕 알고리즘과 늘 함께 언급되는 Dynamic Programming ( 동적 계획법 ) 이 있다.탐욕알고리즘 , 다이나믹 프로그래밍 모두 작은문제에서 출발한다는 점은 같지만, 탐욕 알고리즘이 순간의 최적을 찾는 방식이라면 , 다이나믹프로그래밍은 모든경우의
수학은 프로그래밍에 많은 도움이된다.(컴퓨터가 계산기 이기때문에, 기본적으로 컴퓨터과학과 수학은 통하는부분이 있다.)알고리즘 문제를 풀때 가장먼저 해야할 것은 무엇인가?문제를 이해하고 어떻게 풀 것인지 전략을 세우는 것이다.전략을 세우지 않는다면 어떤 자료구조를 사용할
이메일 유효성검사핸드폰번호 유효성검사문자열 str이 주어질때 길이가 5또는 7 이면서 숫자로만 구성되어 있는지 확인하는함수결과는 Boolean이런식으로 정규표현식을 알아두면 문자열을 다룰때 코드를 간결하게 줄일수 있는 유리한 상황이 있다.정규표현식은 두가지 방법이있다.
^는 문자열의 처음을 의미하며, 문자열에서 ^뒤에 붙은 단어로 시작하는부분을 찾는다. 일치하는 부분이 있더라도, 그 부분이 문자열의 시작부분이 아니면 null을 리턴.$는 문자열의 끝을 의미하며, 문자열에서 $앞에 표현식으로 끝나는 부분을 찾는다. ^와 비슷하지만 ^는
비동기
쇼핑몰앱 -> 인터넷연결이없으면 작동하지않는다.만약판매하는 상품정보가 전부 앱안에 들어있다면 ?새로운 상품목록을 받으려면 앱자체를 업데이트해야함 ; 너무별론데리소스가 존재하는곳 과 리소스를 사용하는 앱을 분리시킨것을 2-Tier 아키텍처 , 다른말로는 클라이언트-서버
근본적인이유는 ?(여러가지 이유가 있겠지만)Javascript를 구동하기때문에그럼 왜? 자바스크립트가 문젠데 ?자바스크립트로 할수있는것들이 많아서 그렇다!ajax call다이나믹 DOM인증을 브라우저에 저장 (session ?..)인증을 불러온다. Authenticat
packag.json 을 먼저 생각해보면npm으로 어떤 특정 모듈을 다운받을때그 프로젝트의 의존성으로 dev와 dependancy? 로 나눌수있다.dev는 설치할때 --dev 를 주면 package.json에 devdepandancy로 갈것이며\--save 옵션으로 p
내가 사전에 알아야할 내용상식선에서 HTTP요청이 어떻게 동작하는지 알고있어야한다.Node.js의 EventEmitters와 Streams에도 어느정도 익숙해야 한다. ( 익숙하지 않다면 관련 API문서를 미리 훑어보는편이 좋다.)EventEmitters 에 대해서는h
그냥 node.js http로 서버를 구현하면생각보다 고생하거나, 코드가 난해해진다.추가로 미들웨어를 쓸길이 눈에 보이지않는다.미들웨어란 ??즉 중간에 받아서 처리해준다.계속 끼워넣을수 있는것이다.내가 사용해본 미들웨어는유명하고 자주사용되는것을 해보았는데POST요청 등
컴포넌트 단위의 개발의 장점을 이해할 수 있다.JSX와 같이 선언적인 형태의 문법을 사용하는 것의 장점을 이해할 수 있다.함수 컴포넌트와 클래스 컴포넌트를 만드는 방법과 차이를 이해할 수 있다.props의 특징과 규칙을 이해할 수 있다.props와 state와의 차이점
백엔드 모집공고에 자주 등장한다.REpresentational State Transfer직역 : 표현상태 전달뭘 표현하고 어떤상태를? 어떻게전달해 ?웹서비스를 만드는데 사용되는 제약(constraint)모음Roy T.Fielding (라는사람이 박사과정 논문에썻다)"w
상태란 무엇인가?UI에 동적으로 표현될 데이터Side Effect란 무엇인가?함수(또는 컴포넌트)의 입력 외에도 함수의 결과에 영향을 미치는 요인대표적인 예 : 네트워크요청 (백엔드 API요청)Side Effect를 최대한 배제하고 컴포넌트를 만들어라!React의 주요
리덕스가 뭐고?리덕스는 왜 필요할까 ??React에서는 상태와 속성(props)을 이용한 컴포넌트 단위 개발 아키텍처를 배웟다.리덕스에서는 컴포넌트와 상태를 분리하는 패턴을 배운다.앞서 리덕스를 사용하기 전에는동작,상태를 다루기위해서 상태변경로직이 복잡하기 얽혀있는경우
SQL 처음엔 Search Query Language 인줄 알고 썻는데 나중가니까 structured Query Language 였다. 구조화된 쿼리 언어 쿼리는 질의문 이라는것. 라ㅇ언브ㄹ지 알바때매 살짝 공부했던적이있어서 쿼리가 너무 싫.다. 물론 알바
데이터베이스에서 무언가 하나를 처리하는데 필요한트랜젝션을 위한 성질이다.예시 : 계좌이체내가 -> A라는 사람에게 계좌이체를한다.내 계좌에서 10만원 를 빼고 A에게 10만원을 추가한다.만약내 계좌에서는 돈이빠져나간 흔적이있는데A의 계좌에 돈이 들어오지않았다면 ?돈은
스키마가 무엇인가.스키마(Schema)는 데이터베이스에서 데이터가 구성되는 방식과 서로 다른 엔티티 간의 관계에 대한 설명이다.즉 " 데이터베이스의 청사진 " 과 같다.수강신청기능을 구현할때 데이터베이스 구조를 생각해보면이런 구조들이 있고 각각 테이블들을entities
react의 단방향데이터흐름이라던가, Redux의 Flux패턴역시 디자인 패턴중 하나이다.Model, View, Controller 로그중에서 Model과 Controller 사이그리고 Model이 DB와 어떤 방식으로 연결되는지알아보자.그중 ORM이란 Model을 기
지난번 RDBMS에 대해서 배웟고ORM을 이용한 node환경에서 얼마나 편하게 다룰수있는지 사용및 공부해봣다, 이번엔 NoSQL을 사용,공부 해보면서 CRUD를 구현해보자.나는 관계형 데이터가 NOSQL보다 더 좋은 Db라고 생각했지만그렇지않다. 서비스에따라서 데이터베
HTTPS암호화를 통해서 보안성이 향상되었다.HTTP 는 중간에 끼어들어서 데이터를 다 볼수있엇다.HTTPS는 중간에 암호화를 하기때문에중간에 암호화를풀 KEY가 없다면 읽을수없다.데이터 제공자 신원 보장도메인 종속응답 객체의 도메인과인증서의 도메인이 같다면 믿을수있다
해싱? 암호화의 기본모든 값에 대해서 해시 값을 계산하는데 오래걸리지 않아야한다.최대한 해시 값을 피해야하며, 모든값은 고유한 해시 값을 가진다.아주 작은 단위의 변경이라도 완전히 다른 해시값을 가져야한다.대표적인 해시알고리즘은 SHA1 ,SH256이 요즘 핫하다.암호
쇼핑몰에서 장바구니가 유지되는것..HTTP는 무상태성(stateless)인데 어떻게 가능하지 ?서버가 웹브라우저에 정보를저장하고 불러올수있는 수단해당 도메인에 대해 쿠키가 존재하면, 웹브라우저는 도메인에게 http요청시 쿠키를 함께 전달어떤걸 쿠키해야할까쿠키의 특성은장
쿠키는 클라이언트에 저장한다.세션은 서버에 저장한다.세션도 결국 쿠키에 정보를 전달한다.세션ID = 신분증 처럼 쓴다.
Web Application Security개발자들이 웹사이트 모바일 어블 , 웹 api등을 만들때 해커들의 공격을 막기위해서 보안은 필수사항SQL injectionXSSCSRFCross Site Request Forgery다른 오리진(cross-site)에서 유저가
토큰.. 뭔가 동전 이먼저 떠오른다.동전.. 코인.. 음 -> 입장권 ?자 내가 만든 토큰이 있다.나만 이 토큰의 진면목을 알수있다.그 토큰을 내친구한테 주고우리집에 올때 그 토큰을 보여주면 들여보내 줄께.그러면 앞으로 우리집에 올때는 그 토큰이 입장권 이된다.사설이였
Deploy 란. > 배포 라는 뜻이다. 배포 즉 남에게 준다. 내가 웹사이트(웹페이지가 모인것)를 남에게 주려면 그걸 무언가 공용네트워크에 올려야할것이다. 쉽게생각하면 내가 홈클라우드 시스템을 구현하려고했을때 우리집 공유기 ip 를주고 또 그때 파일업로드,