본문 바로가기

분류 전체보기

(170)
getter,setter getter: 객체의 속성(property)값을 반환하는 메서드 setter: 객체의 속성(property)값을 설정, 변경하는 메서드 const user = { name: 'cho', age: 30, getName() { return user.name; }, setName(value) { //value -> kim user.name = value; } } console.log(user.getName()); // cho user.setName('kim'); 사용이유? 1. 객체 내부 속성에 직접 접근하지 않아서 정보 은닉에 좋다( 보안강화, 코드 안전성 ) 2. 옳지 않은 값을 사전에 방지할 수 있다. -> if문을 사용해서 값을 필터링 할 수 있다.(아래 예시처럼) const user = { name:..
정적언어 & 동적언어 정적타입언어(statically typed language) : 컴파일 시 변수의 타입이 결정되는 언어 따라서, 변수에 들어갈 값의 형태에 따라 직접 변수의 타입을 명시해줘야한다. String name = "cho" int num = 123 위의 예시와 같이 '타입' 즉 자료형을 컴파일 시에 결정하는 것이다. 컴파일 시에 자료형에 맞지 않는 값이 들어있으면 컴파일 에러가 발생함. 정적언어 예) Java, C++ , Pascal 등이 있다. 동적타입언어(dynamically typed language) : 런타임 시 자료형을 결정 , 타입 없이 변수만 선언하여 값을 지정할 수 있다. name = "cho"; num = 123; 지금 변수에서는 문자열, 숫자 상관이 다 선언이 가능하다. 장점) - 유연성이 ..
회원기능 [과정] 1. 회원가입은 DB에 아이디랑 비번을 저장해놓는다. 2. 유저가 아이디 / 비번을 server에 보낸다. 3. 서버는 DB와 일치하는지 확인한다. 4. 맞다면 입장권(토근,session)을 유저한테 발급해준다. 5. 유저는 데이터를 요청할때마다 자동으로 입장권을 서버에 보낸다. 6. 입장권을 확인하고 server는 요청하는 데이터를 보내준다. **입장권은 유저에서 관리하면 안되므로 쿠키저장소에 숨겨놓는다. [입장권을 만들때] 1. session방식 : 입장권에 sessionID(랜덤한 문자열)이 포함되어 있다. 이 입장권을 가지고 유저는 데이터를 요청하고 받을 수 있다. 대신 요청할때마다 DB에서 데이터를 요청해야하므로 부담이 될 수 있다. ex)redis라는 보관용 DB을 사용할 수 있다. ..
서버로 데이터 전송 1. 수정하기 - 기존의 글쓰기와 같지만 대신 input에는 그 전에 썼던 글이 들어가있어야한다. 그래서 input 속성에 defaultValue를 주고 그 전의 데이터들을 넣어주었다. - 서버에서는 기존의 값들을 update해주기 위해 id가 필요하다. (input에다가 id를 같이 담아보내준다. display:none을 통해 브라우저에서는 나타나지 않는다.) //edit API let newList = { title: req.body.title, content: req.body.content, }; let result = await db .collection('post') .updateOne({ _id: new ObjectId(req.body._id) }, { $set: newList }); 수정한 ..
Queue 자료구조 Q. 1~8번까지의 번호가 있다. 여기서 3번째에 해당하는 숫자는 삭제되고 마지막으로 남는 번호는? 예를 들어, 3이 삭제되고 나면 4번이 1번이 되며 세번째에 해당하는 6번이 삭제된다. A. 큐 자료구조를 사용한다. 먼저 1~8번을 배열에 넣어주고, 1,2번과 같이 삭제되지 않아도 되는 데이터들을 배열의 마지막부분에 넣어준다. arr=[1,2,3,4,5,6,7,8]를 arr=[4,5,6,7,8,1,2] 이런식으로! function solution(n, k) { let answer; let queue = Array.from({ length: n }, (v, i) => i + 1); //1~8번까지 배열 만들어주기 while (queue.length > 0) { for (let i = 1; i < k; i..
next.js server DB에 위험을 낮추기 위해서 바로 DB로 데이터를 전송하지 않고 서버에 저장하고 나서 DB에 넣는다. next는 자동 라우팅 기능이 있어서 쉽게 서버를 다룰 수 있다. (즉, 누군가가 api/test로 데이터를 GET/POST/...등을 요청하면 파일안의 코드를 실행해준다.) 파일부터 생성하자. 사용자가 요청하면 데이터를 보여줄 서버가 필요하다. src파일 아래 page/api/test.js파일을 만들어 준다.(기존에 생성된 api파일 아래 만들어도 된다.) DBmongo를 사용하고 있으므로 거기에 맞게 데이터를 요청해야한다. 먼저 html, 글 불러오기 // action URL로 POST를 한다. (GET,POST)만 가능하다. 버튼 /api/test로 데이터를 GET요청 한다. import { con..
스택자료구조 사용한 후위식 Q. 3*(5+2)-9 을 후위연산식으로 표현하면 352+*9- 로 표현되며 결과값은 12이다. 결과 값을 나오도록 해보자. A. 숫자는 순차적으로 나열되며 만약 3+5라면 35+라고 표현이 된다. 스택이라고 지정해놓은 배열에 숫자들을 넣고 연산자를 만날때마다 연산을 한 결과값을 다시 스택에 넣어주기로 함. **stack의 경우 위에 있는 값 부터 나오므로 순차적으로 rt,lt순으로 선언/할당해준다. function solution(s) { let answer = 0; let stack = []; for (let x of s) { if (!isNaN(x)) { //숫자라면 stack.push(Number(x)); //스트링을 숫자로 바꿔서 스택에 push } else { let rt = stack.pop..
Redux의 상태관리의 주요 개념, 상태관리 비교 redux의 주요 개념 store 저장소, 즉 전역상태를 저장하는 공간. 자바스크립트 객체 형태로 저장되어 있으며 오직 Reducer를 통해서만 접근 가능하다. 보통은 최상단의 index.js에 정의하며 여러개의 context를 만들 수 있는 ContextAPI와 다르게 redux의 store은 1개만 존재한다. Action reducer에게 보내는 Store에 대한 행동을 정의하는 객체이다. 상태에 어떠한 변화가 필요할 때 액션을 발생시키며 "이렇게 상태를 변경해줘"라고하는 주문서의 역할을 한다고 보면 이해하기 좋다. Action을 reducer에게 전달하기 위해서는 dispatch메소드를 사용해야한다. dispatch는 store의 내장함수 중 하나인데, 액션 객체를 넘겨줘서 상태를 업데이트 한다. ..