일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 코딩테스트
- 백준 javascript
- 월간코드챌린지
- Kotlin
- GoingBus
- 코테
- 카카오
- 연습문제
- map
- 반복문
- 백준 java
- 스프링 컨테이너
- 리눅스마스터 1급 정리
- 리눅스마스터1급
- 명령어
- Linux
- 리눅스마스터 3과목
- 문자열
- 고잉버스
- 자바스크립트 코딩의 기술
- 스프링 빈
- 프로그래머스
- Memoir
- 자바
- 개발자 회고록
- java 백준 1차원 배열
- 리눅스
- Java
- toCharArray
- JavaScript
- Today
- Total
목록 전체 글 (223)
hoon's bLog
3장 특수한 컬렉션을 이용해 코드 명료성을 극대화하라 tip14. 맵과 펼침 연산자로 키-값 데이터를 순회하라 객체는 순회하기가 번거롭다. 그나마 for ...in문을 사용할 수 있지만 키 외에는 접근할 수 없다. const filters = { color: 'black', breed: 'Retriever' }; function getAppliedFilters(filters) { const keys = Object.keys(filters); const applied = []; for (const key of keys) { applied.push(`${key}:${filters[key]}`); } return `선택한 조건은 ${applied.join(',')} 입니다.`; } Object.keys()로 ..
3장 특수한 컬렉션을 이용해 코드 명료성을 극대화하라 tip10. 객체를 이용해 정적인 키-값을 탐색해라 원칙적으로 객체는 변화가 없고 구조화된 키-값 데이터를 다루는 경우에 유용하다. "."을 통해 직접 참조하거나 배열처럼 접근이 가능하다. 이처럼 객체는 단순하여 정적인 정보를 다룰 때 훌륭하다. 하지만 계속해서 갱신, 반복, 대체, 정렬해야 하는 정보에는 그닥 비추!.. 단, 기존의 객체를 조작하는 것이 아니라 각각의 함수에서 새로운 객체를 생성하면 조작없이 사용 가능하다. const colors = { red: '#d10202', green: '#19d836', blue: '#0e33d8' } 위와 같이, 데이터가 변경될 가능성이 없는 색상 컬렉션을 공유하는 경우에는 객체를 선택하는 것이 좋다. 중..
Error 발생 경로 에러는 다음과 같다. 현재 상황은 SQL tool Dbeaver에서 "tb_external_server" 테이블을 삭제하려던 도중, sequence인 seq_tb_external_server_pk가 테이블에 종속되어 있으므로 삭제할 수 없다는 에러가 발생한 상황이다. 쉽게 말해, 테이블에 종속된 sequence를 삭제 하기 위해서는 CASCADE 구문을 이용해야 한다는 것!! 해결 DROP TABLE 테이블명 IF EXISTS 시퀀스명 CASCADE; 결론 테이블을 생성/삭제를 하다보면 이렇게 종속되어 있는 sequence 같은 값들을 놓칠 때가 있다. 또한, 테이블을 먼저 삭제하고 sequence만 남아 있는 경우, 나중에 같은 이름으로 생성하지 못하는 경우도 발생한다. 때문에 꼭..
2장 배열로 데이터 컬렉션을 관리하라 tip7. 펼침(Spread) 연산자로 배열을 본떠라 책에서는 펼침 연산자라고 지칭하지만 스프레드 연산자로 정리하겠다.(너무 번역투....) 스프레드 연산자는 마침표 세 개...로 표시하며 자바스크립트에서 아주 중요한 연산자이다. 배열뿐만 아니라 Map Collection이나 Generator를 이용하는 데이터 구조 등에서도 사용할 수 있다. 또한 스프레드 연산자는 단독으로 사용할 수 없고 어떤 곳 안에 정보를 펼쳐 넣어야 한다. 반복문이 늘어날수록 코드는 복잡해지기 때문에 스프레드 연산자를 잘 활용하는 것이 중요하다. 또한 원본 데이터에 영향을 주지 않고 새로운 데이터를 생성할 수 있어 데이터 불변성 유지에 좋다. function selectBook(title, a..
2장 배열로 데이터 컬렉션을 관리하라 tip5. 배열로 유연한 컬렉션을 생성하라 이전 자바스크립트에서는 데이터 컬렉션을 다루는 구조로 배열과 객체 만 있었으나, 모던 자바스크립트에 Map, Set, WeakMap, WeakSet, 객체, 배열 을 사용할 수 있다. 컬렉션을 선택할 때는 정보로 어떤 작업을 할지 먼저 생각 해야한다. 이터러블(iterable)이란 컬렉션의 현재 위치를 알고 있는 상태에서 컬렉션의 항목을 한 번에 하나씩 처리하는 방법을 의미한다. 배열은 이터러블(iterable)이 내장되어 있어 다양한 메소드를 활용할 수 있다. 문자열처럼 자체적으로 이터러블이 존재하거나 이터러블로 변환할 수 있는 데이터 형식이면 배열에 사용하는 모든 작업을 동일하게 실행할 수 있다. 아래 코드는 team 배..
1장 변수 할당으로 의도를 표현하라 tip3. 블록 유효 범위 변수로 정보를 격리하라 var로 변수를 선언한 경우에는 함수 내부 어디서든 접근이 가능하다. 호이스팅(hoisting) 컴파일 과정을 통해 변수가 선언되기도 전에 접근이 가능하다. 예제코드를 통해 확인해 보자! 클릭하면 0 기대 클릭하면 1 기대 클릭하면 2 기대 line 3부터 클릭 시, 순서대로 0, 1, 2가 아닌 3, 3, 3 alert를 확인할 수 있다. var로 할당한 변수는 함수 유효 범위를 따르기 때문에 함수 내에서 마지막으로 할당한 값을 참조한다. 따라서 i를 선언한 시점이 아닌, 코드를 호출한 시점의 i를 반환하게 되는데, i=2 일 때 반복문을 실행하고 나서, 후위 연산자에 의해 i에 +1이 미리 연산되어 할당된 후 i=3..
1장 변수 할당으로 의도를 표현하라 tip1. const로 변하지 않는 값을 표현하라 const는 블록 문맥 내에서 재할당할 수 없는 변수 선언이지만 불변값이 되는 것은 아니다. 자바스크립트에서는 기본적으로 const를 이용해서 변수를 할당하는 것이 좋다. 이는 확실히 변하지 않는 값임을 알기에 디버깅이 비교적 쉬워지기 때문이다! 예제코드를 통해 확인해보도록 하자! function getTotal() { const taxRate = 0.1; const total = 100 + (100 * taxRate); // 중간 코드 생략 return `금액은 ${total}입니다.`; } taxRate와 total값이 const로 선언되었다. 누가봐도 상수로 선언된 값이기에 중간 코드가 무엇이 있든 간에 total..
호출 스택자바스크립트는 단일 스레드 프로그래밍 언어이므로, 단일 호출 스택이 있다.단일 호출 스택이 있다는 뜻은 한 번에 하나의 일(Task)만 처리할 수 있다는 뜻이다.호출 스택이란 프로그램에서 우리가 어디에 있는지를 기본적으로 기록하는 데이터 구조로 동작 방식은 다음과 같다.function first(){ second(); console.log('첫 번째');}function second(){ third(); console.log('두 번째');}function third(){ console.log('세 번째');}first();위와 같은 코드가 있다고 가정해 보자.과연 호출 순서는 어떻게 될까?정답은 세 번째 → 두 번째 → 첫 번째가 된다!! 오잉 어떻게 된 것일까?An..
Error 발생 경로 [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() methods instead. (Use `node --trace-deprecation ...` to show where the warning was created) 번역해 보자면 Buffer()는 보안 및 유용성 문제로 인해 더 이상 사용되지 않으니, Buffer.alloc(), Buffer.allocUnsafe() 또는 Buffer.from() 메서드를 사용하라는 뜻! 그리고 문제가 되었던 코드 부..
노드(Node)란? Node.jsⓇ는 크롬 V8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임을 말한다. 노드는 V8과 libuv를 내부적으로 포함하고 있다. V8 엔진: 오픈 소스 자바스크립트 엔진 → 속도 문제 개선 libuv: 노드의 특성인 이벤트 기반, 논블로킹 I/O 모델을 구현한 라이브러리로 내부구조는 아래 그림과 같다. 런타임(runtime): 특정 언어로 만든 프로그램들을 실행할 수 있게 해주는 가상 머신(크롬의 V8 엔진 사용)의 상태 다른 런타임으로는 웹 브라우저(크롬, 엣지, 사파리, 파이어폭스 등)가 있음 노드의 역할 자바스크립트로 만든 프로그램들을 실행할 수 있게 해 준다! 자바스크립트 런타임으로 서버의 역할도 수행할 수 있다! 서버 실행을 위해 필요한 http/https/htt..