좋은 API URI 설계하기01 February, 2022#http#api개요 요즘은 웹 애플리케이션 뿐만 아니라 안드로이드나, iOS 애플리케이션 까지 모두 HTTP API 을 이용하여 데이터를 통신합니다. 이렇게 많이 쓰이는 API의 URI를 보다 잘 설계할수 있는 방법을 알아 보겠습니다. HTTP API 회원 정보 관리 API 회원 목록 조회 /read-member-list 회원 조회 /read-member-by-id 회…
HTTP의 상태코드의 종류와 의미31 January, 2022#http개요 HTTP 에는 다양한 상태코드가 있습니다. 상태코드별로 어떠한 의미를 가지고 있는지 확인 해보도록 하겠습니다. http 상태코드 1xx (Informational): 요청이 수신되어 처리중 2xx (Successful): 요청 정상 처리 3xx (Redirection): 요청을 완료하려면 추가 행동이 필요 4xx (Client Error): 클라이언…
macOS 한영 전환 단축키 변경하기 (M1)23 January, 2022#mac개요 M1 Mac에서 한영전환키는 Capslock키 입니다. Capslock키는 대소문자와 한영전환을 모두 수행하는 키라서 전환에 딜레이가 발생해서 매끄럽게 작동하지 않습니다. 그렇기 때문에 키를 변경 해 보도록 하겠습니다. HammerSpoon? Mac에서의 키매핑하는 방법은 여러가지가 있습니다. com.apple.symbolichotkeys.plist…
백준 문제풀이 세팅 (Node.js)28 November, 2021#algorithm#node개요 프로그래머스와 LeetCode와는 다르게 백준에서의 알고리즘 문제 풀이는 입력까지 모두 사용자가 구현해야 합니다. JavaScript로 문제를 풀이할 것이기 때문에 Node 세팅을 해보겠습니다. 설치 아래의 형식과 같이 프로젝트를 생성해 줍니다. 백준은 dev의 stdin파일에 입력 파일이 존재합니다. 해당 파일을 읽어와 코드를 실행할 수 있도록 해…
유클리드 호제법22 November, 2021#algorithm유클리드 호제법이란? 유클리드 호제법이란 2개의 자연수로 최대공약수를 구하는 알고리즘입니다. 호제법이란 말은 두 수가 서로 상대방의 수를 나누어 결국 원하는 수를 얻는 알고리즘을 말합니다. 최대공약수 2개의 자연수 a, b에 대하여 a를 b로 나눈 나머지를 r이라고 하면(단, a > b) a와 b의 최대공약수는 b와 r의 최대공약수와 같습니다. 이 성질에…
이차원 배열 행과 열 바꾸기22 November, 2021#algorithmPython zip 파이썬의 내장 함수 중 zip을 이용한다면 행열을 쉽게 바꾸어 줄 수 있습니다. 이러한 방식을 자바스크립트에서도 사용해 보겠습니다. 참고 [javascript] Python의 zip 함수와 동등한 Javascript
지연된 평가를 병렬적으로 평가하기22 November, 2021#javascript#functional지연된 함수열을 병렬적으로 평가하기 자바스크립트는 비동기 IO 동작을 합니다. 이는 하나의 쓰레드에서 IO작업을 효율적으로 처리할 수 있도록 하기 위함입니다. 하지만 데이터베이스 같은 외부에 IO 작업을 요청하는 경우에는 그저 명령을 전달 후 완료 시점을 대기하는 상황이기 때문에 자바스크립트에서도 병렬적인 작업이 필요합니다. 지연된 함수의 평가 명령을 요…
Hexo를 이용하여 깃허브 블로그 만들기11 November, 2021#hexo#blog깃허브 블로그 만들기 개발 공부한 내용들을 정리할 기술 블로그가 필요하게 되었습니다. 편하고 많이들 사용하는 tistory, velog, brunch, notion 등 있지만, Hexo 이용하여 직접 개발 블로그를 작성한 데는 몇 가지 이유가 있습니다. 장점 커스터마이징의 자유 hexo.io 사이트에서 테마를 골라 빠르게 시작할 수도 있고 직접 만들 수도…
Nodemon 모니터링 파일 설정하기11 November, 2021#node개요 테스트 환경에서 사용하는 Nodemon을 사용하다 보면 모니터링하는 파일을 직접 설정할 필요가 있습니다. 그럴 경우 설정 파일을 작성하면 해당 파일이 변경될 때만 감사하도록 설정할 수 있습니다. 설정 참고 NPM - nodemon
비동기 상황에서 잘 작동하는 함수08 November, 2021#javascript#functional비동기 상황이란? 비동기는 동시에 일어나지 않는다를 의미합니다. 따라서 요청한 결과가 동시에 일어나지 않는다는 것입니다. 이전에 작성한 함수들을 비동기 상황에서도 잘 작동할 수 있도록 수정해 보겠습니다. 비동기 작업을 처리하는 go1 기존의 작성하였던 go함수에 비동기 상황이 발생하도록 코드를 만들어 보겠습니다. 중간의 비동기 상황이 발생 시에 의도하지 …
비동기를 값으로 다루는 Promise27 October, 2021#javascriptPromise란? Promise 객체는 비동기 작업이 맞이할 미래의 완료 또는 실패와 그 결괏값을 나타냅니다. MDN ES6에서 추가된 Promise는 비동기 연산을 하기 위한 객체이며 기존의 callback 함괏의 단점들을 보완한 함수입니다. Promise는 다음 중 하나의 상태를 가집니다. 대기(pending): 이행하거나 거부되지 않은 상태 이행(f…
제너레이터를 이용하여 함수의 지연평가05 October, 2021#javascript#functional지연 평가란? 컴퓨터 프로그래밍에서 느긋한 계산법(Lazy evaluation)은 계산의 결과 값이 필요할 때까지 계산을 늦추는 기법이다. 위키피디아 지연 평가를 이용하면, 불필요한 계산을 하지 않게 되어 성능상의 이점이 있으며, 무한의 자료구조를 사용할 수 있습니다. ES6에서 추가된 이터레이터와 제너레이터를 이용하여 지연 평가되는 함수를 작성해 보겠습…
VSCode에서 vim 설치 및 IM 세팅하기30 September, 2021#vscode#vimvim이란? Vim은 유닉스 환경에서 사용되는 텍스트 편집기 중에 하나인 vi에 독자적으로 다양한 기능들을 추가해 편의를 돕고 있는 편집기입니다. Vim의 설명은 다른 곳에서도 많이 설명이 되어있으니 바로 VSCODE에 Vim을 적용해 보겠습니다. 설치 VSCode VS Code의 익스텐션에서 vim을 검색하여 설치해 줍니다. VS Code에서 해당 익스…
이터레이터를 이용한 높은 다형성을 가진 함수26 September, 2021#javascript#functional다형성(polymorphism)이란? 프로그램 언어의 다형성은 그 프로그래밍 언어의 자료형 체계의 성질을 나타내는 것으로, 프로그램 언어의 각 요소들(상수, 변수, 식, 오브젝트, 함수, 메서드 등)이 다양한 자료형(type)에 속하는 것이 허가되는 성질을 가리킨다. 반대말은 단형성으로, 프로그램 언어의 각 요소가 한 가지 형태만 가지는 성질을 가리킨다.…
일급함수란 무엇인가?25 September, 2021#javascript일급함수란? 함수를 다른 변수와 동일하게 다루는 언어는 일급 함수를 가졌다고 표현합니다. 예를 들어, 일급 함수를 가진 언어에서는 함수를 다른 함수에 매개변수로 제공하거나, 함수가 함수를 반환할 수 있으며, 변수에도 할당할 수 있습니다. JavaScript의 일급함수 함수 할당 익명 함수를 변수에 할당하여 호출할 수 있습니다. 또한 매개변수의 값이 하나라…
️이터레이터와 제너레이터25 September, 2021#javascript#es6+이터레이터와 제너레이터 ES6에서 추가된 이터레이터(iterator)와 제너레이터(generator)를 많이 들어 보았는데 어떻게 쓸 수 있는지 알아보도록 하겠습니다. 이터레이터 이터러블 객체의 Symbol.iterator 메서드를 호출하면 반환되는 이터레이터는 반복을 위해 설계된 인터페이스 객체이며 {value, done}을 가지며 next의 메서드를 …
JavaScript의 Array.Prototype22 September, 2021#javascript#prototypeArray.prototype 모든 Array 인스턴스는 Array.prototype으로부터 메서드와 프로퍼티를 상속받습니다. 이렇게 상속받은 Array.prototype 메서드는 크게 다음과 같이 구분할 수 있습니다. 원본 배열을 변경하는 메서드 원본 배열은 변경하지 않고 참조만 하는 메서드 원본 배열을 반복적으로 참조하는 메서드 원본 배열을 변경하는 메…
React의 종류14 September, 2021#reactFunction? Class? 리액트는 함수형 컴포넌트(Functional Component)와 클래스형 컴포넌트(Class Component)로 나누어집니다. 함수형 컴포넌트로 작성 시에 코드가 매우 짧아지게 되는데, 알아보도록 하겠습니다. 클래스형 컴포넌트 state기능 및 라이프사이클 기능을 사용할 수 있고 임의 메서드를 정의할 수 있다. rende…
Spring에서 JSON사용하기23 July, 2021#spring#jquery원인 스프링 프레임워크를 사용 시에 json 객채의 경우에는 string 타입으로 변환되어 전달이 되지만 배열 객체의 경우 전달이 되지 않습니다. http 통신은 원래 문자열만 전송할 수 있기 때문에 객체의 배열의 경우 직렬화를 하여 문자열 형태로 보내주어야 합니다. 해결 방법 ajax jquery을 이용하여 ajax로 객채 배열을 직렬화 시켜 Strin…
️Linux Apache2 + Tomcat9 연동 설치10 June, 2021#linux#web#wasapache2 설치 apache2를 설치합니다. ufw 사용하도록 설정 후 80 포트 추가, 추가된 포트를 확인합니다. 정상적으로 설치되었는지 웹페이지에 localhost & ip를 입력하여 확인합니다. tomcat9 설치 tomcat9를 설치합니다. ufw 사용하도록 설정 후 8080 포트 추가, 추가된 포트를 확인합니다. 정상적으로 설치되었는지 웹페이…
MySQL에서 한글 깨짐04 June, 2021#spring#gradle원인 characterset UTF-8로 되어있지 않아서 발생하는 문제입니다. 데이터베이스 생성 시 기본적으로 utf-8 형식으로 만들어지도록 수정해 보겠습니다. mysqld.cnf 수정합니다.
Gradle으로 Spring 프로젝트 생성하기 04 June, 2021#spring#gradleGradle 프로젝트 Gradle 설치 후 진행합니다. Spring.io 에서 스프링 프레임워크 퀵스타트를 이용하여 Gradle 프로젝트를 다운로드합니다. Spring initalizr Project -> Gradle Project Language -> java Packaging -> War Project Metadata는 자신의 프로젝트에 맞게 수정해서…
Linux MSSQL 2019 설치19 May, 2021#linux#databaseMSSQL 설치 MSSQL은 메모리가 최소 2G가 넘어야 설치할 수 있습니다. 공용 리포지토리 GPG 키를 가져옵니다. Microsoft SQL Server Ubuntu 리포지토리를 등록합니다. apt-get을 업데이트한 후 SQL Server를 설치합니다. mssql-conf setup을 실행합니다. Enter your edition(1-8) : 특별히…
Linux MySQL 5.7 설치15 May, 2021#linux#databaseMySQL 설치 apt-get을 업데이트한 후 MySQL을 설치합니다. 부팅 시 MySQL이 시작되도록 설정합니다. 기본 보안 세팅합니다. VALIDATE PASSWORD plugin? : 테스트 환경이라 활성화하지 않았습니다. (n) New password: : 초기 비밀번호를 설정해줍니다. Remove anonymous users? : 익명의 사용자를…
Windows Tomcat 배치파일 한글 깨짐25 April, 2021#windows#tomcat원인 Windows 환경에서 톰캣 배치파일 실행 시에 한글이 깨지는 이유는 톰캣 콘솔 코드 페이지가 ANSI/OEM으로 설정되어 있어서 한글이 깨져서 출력됩니다. 해결 방법 CMD에서 해당 명령어를 입력하면 콘솔 페이지가 UTF-8 형식으로 변경됩니다. 참고 톰캣(Tomcat) cmd 실행시 한글 깨짐 현상 해결