본문 바로가기

분류 전체보기

(39)
npm package 버전관리 npm으로 모듈들을 설치하고 한참 시간이 지나면, 오래전에 설치한 모듈의 경우 최신 문법이나 메서드가 반영이 안 되는 경우가 있다. 나의 경우 리덕스에서 얼마전부터 공식 지원하고 있는 훅스가 react-redux 모듈의 버전이 낮아서 사용할 수 없었다. 이를 해결하기 위해 모듈들을 어떻게 한번에 업데이트해야 하는지 알아보았다. 검색 결과 npm-check-updates와 npm-check 두 가지의 라이브러리를 발견할 수 있었다. 두 개 모두 업데이트를 해주는 것은 동일하지만 과정에 있어서 약간의 차이가 있었다. 밑에는 스택오버플로우에서 긁어온 답변이다. npm-check-updates will only modify your package.json file. Once you've run that comm..
[DFS] 프로그래머스 네트워크 Javascript 풀이 문제 설명 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있을 때 컴퓨터 A와 컴퓨터 C도 간접적으로 연결되어 정보를 교환할 수 있습니다. 따라서 컴퓨터 A, B, C는 모두 같은 네트워크 상에 있다고 할 수 있습니다. 컴퓨터의 개수 n, 연결에 대한 정보가 담긴 2차원 배열 computers가 매개변수로 주어질 때, 네트워크의 개수를 return 하도록 solution 함수를 작성하시오. 제한사항 컴퓨터의 개수 n은 1 이상 200 이하인 자연수입니다. 각 컴퓨터는 0부터 n-1인 정수로 표현합니다. i번 컴퓨터와 j번 컴퓨터가 연결되어 있으면 computers[..
코드그라운드 개구리 뛰기 1년전 쯤 풀었던 코드그라운드 개구리 뛰기 문제입니다. 지금도 코드그라운드 사이트가 있는지 모르겠습니다만 알고리즘을 공유하는 차원에서 포스팅합니다. 코드그라운드 사이트 특징 1. 내가 제출한 문제의 득점을 확인할 수 있다. 예를 들어 아래 코드의 경우에는 100점으로 통과하였지만 통과 전까지 20, 40 점의 득점을 거쳐서 완성된 코스이다. 어디에서 잘못되었는지는 알려주지 않지만 다시 코드를 검토해보면서 완벽을 만들어가는 재미가 있다. 2. 다른 사람들이 제출한 코드를 확인할 수 있다. - 실력향상을 위해서라면 미리 보지 않는 것을 추천한다. 3. 정답을 맞히면 포인 트까 쌓여서 랭킹을 확인할 수 있다. - 학교별 랭킹 순위가 제공된다. *** 아래는 내가 최근에 풀었던 코드 그라운드 spsc예선 문제 ..
자바스크립트 이터레이터란 자바스크립트 이터레이터를 구글에 검색해 보면 다음과 같은 정의가 나온다. "이터레이터는 ECMA2015부터 반영된 자바스크립트 반복기이다." 반복기..? 반복기가 도대체 뭐지..? 뭘 돌리는 기계 같은데.. 전혀 이해가 안 갔다. 나뿐만 아니라 많은 사람들도 헷갈리는 표현이라는 생각이 들었다. 그래서 이터레이터를이터레이터를 다음과 같이 더 쉽게 표현해보고자 한다. 이터레이터를 쉽게 풀어서 한 문장으로 정의하자면, 이터레이터란,모든 순회할 수 있는 객체(대표적으로 배열, 스트링)의 원소에 하나하나에 접근할 수 있는 능력을 가진 객체이다. 다만, 개별 원소에 접근하는 방식에는 일정한 규칙을 따라야지 이터레이터이다. 여기서 말하는 일정한 규칙이란 이터레이터 프로토콜이다. 즉 접근하는 방법이 객체마다 다르지 않..
리액트 웹팩 기본 설정하기 웹팩 설정의 큰 흐름 1. 엔트리 파일을 설정한다. 2. 엔트리 파일에 모듈의 옵션을 적용한다. 3. 추가적으로 플러그인까지 적용한다. 4. 아웃풋으로 나온다. 이와 같이 큰 흐름을 알고 접근하면 웹팩설정을 이해하기 쉽다. ​ 설치 모듈 npm i -D webpack webpack-cli npm i -D babel-loader @babel/core npm i -D @babel/preset-env // 옛날 브라우저에서도 사용 가능한 코드로 변환 npm i -D @babel/preset-react //jsx사용 가능하게 변환 webpack.config.js const path = require('path') module.exports = { name: 'word-relay-setting', mode: 'd..
[BFS] 백준 미로탐색 자바스크립트(Node.JS) 버전 자바스크립트(node.js)로 이루어진 알고리즘 풀이가 구글검색 결과에 거의 없는것 같습니다. 이 포스트가 자바스크립트로 알고리즘을 공부하시는 분들께 도움이 되면 좋겠습니다. BFS의 원리 BFS탐색기법에서는 큐(Queue)가 핵심입니다. 큐를 활용하여서 BFS를 구현할 수 있기 때문입니다. 큐가 BFS를 구현할 수 있는 원리는 선입선출(FIFO _ first in first out) 구조이기 때문입니다. 구체적으로 설명하자면, 한 노드와 연결되어 있는 자식 노드(하위레빌)가 일단 큐에 들어가게 되고 그 자식노드와 연결되어 있는 자식노드(하위레벨)는 큐의 맨 뒤로 들어가게 되는 것입니다. 그리하여 상위레벨의 탐색이 먼저 이루어지고 난 뒤 자식노드로의 접근이 이루어 지게 되는 것입니다. BFS는 어떻게 최..
암호화에서 해시(hash)란 무엇인가? 해시(hash) 란 무엇인가? 해시란 원형문자(plaintext)가 해시함수(해시 엔진)를 통과하여 암호화되어 나온 결과물을 뜻한다. 그리고 해시함수(해시엔진)를 통과하는 과정을 해싱(hashing)이라고 한다. 13 곱하기 29 가 무엇인지 누가 물으면 377이라는 것을 금방 알 수 있다. 하지만 반대로 몇과 몇을 곱하면 377이 나오냐라고 물어보면 무수히 많은 경우의 수가 있다. 이것이 해싱의 기본원리이다. 실제 사용자가 입력한 비밀번호가 해시함수를 통과하여 해시가 된다. 이 해시의 원형을 알아 내려면 많은 경우의 수가 필요하여 복호화(암호해독)가 어렵다. 이것이 해싱을 통한 비밀번호 암호와의 기본원리이다. 다만 해싱에도 단점이 있는데 비밀번호가 같으면 해시가 무조건 같다. 예를들어 md5라는 해시 ..
자바스크립트 클로저와 호이스팅 클로저란 함수와 스코프 사이의 폐쇄적 관계이다. 좀 더 구체적으로 다음과 같이 정의해 보았다. 정의 1. 클로저란 독립된 스코프를 참조하는 함수다. 정의 2. 클로저란 내부함수에서 외부함수의 렉시컬 스코프를 참조하는 관계다. 굉장히 추상적이기에 실제코드와 사전개념을 학습해야 이해가 쉽다. 사전 개념으로서 스코프와 호이스팅을 먼저 이해해야 한다. 스코프란 스코프는 영어 뜻 그대로 범위이며, 자바스크립트는 함수레벨 스코프 var를 갖는게 특징이다. 함수레벨 스코프란 함수내에서 해당 변수의 범위가 미치는 것을 말한다. 즉, 함수내에서 var i = 10이 생성 된다면 함수 내에 중괄호가 있던 없던 어디에서든 var i 를 참조할 수 있는 것이다. 자바와 같은 언어에서는 블록레벨 스코프(중괄호 안에서 변수의 범..