Language 23

[Typescript] Generics으로 Axios 깔끔하게 사용해보기

사이드 프로젝트를 하면서 여느때와 같이 Axios 인스턴스를 만들어서 사용하고 있다. 칸반 리팩토링을 하면서 Generics을 사용해 서버에서 만들어주는 응답값 인터페이스를 만들고, 각 api 함수를 선언시 Generics에 들어갈 타입을 지정해주도록 수정해서 pr을 올렸었다. // apis/kanban.ts interface IResponse { success: boolean; error: any; data: T; } export const fetchKanbanList = async (): Promise => { const data: IResponse = await goHigerApi.get('/v1/applications/kanban'); return data; }; 첨엔 나름 괜찮은것같다고 생각했지..

Language/Typescript 2024.01.04

[JS] 모듈(Module)

게발하는 애플리케이션의 크기가 커지면서 파일을 여러 개로 분리하게 되는데 이때 분리된 파일 각각을 '모듈(module)'이라고 부릅니다. 모듈은 대개 클래스 하나 혹은 특정한 목적을 가진 복수의 함수로 구성된 라이브러리 하나로 구성됩니다. 스크립트의 크기가 점차 커지고 기능도 복잡해지자 자바스크립트 커뮤니티에서 특별한 라이브러리를 만들어 필요한 모듈을 언제든지 불러올 수 있게 해준다거나 코드를 모듈 단위로 구성해 주는 방법을 만드는 등을 통해 모듈 시스템을 개발하게 되었습니다. AMD - 가장 오래된 모듈 시스템 중 하나로 require.js라는 라이브러리를 통해 처음 개발 CommonJS - node.js 서버를 위해 만들어진 모듈 시스템 UMD - AMD와 CommonJS와 같은 다양한 모듈 시스템을..

Language/javascript 2023.12.12

[JS] Promise.all()

순회 가능한 객체에 주어진 여러 개의 비동기 요청을 병렬적으로 실행시키고, 모든 요청이 처리되면 Promise 결과 값을 반환하는 메서드. 주어진 프로미스 중 하나가 거부하는 경우, 첫 번째로 거절한 프로미스의 이유를 사용해 본인도 바로 거부된다. 주의할 점은 실행 순서가 보장되지 않기 때문에 태스크의 순서가 보장될 필요가 없는 작업일 때 사용해야한다. export async function fetchCardData() { try { const invoiceCountPromise = sql`SELECT COUNT(*) FROM invoices`; const customerCountPromise = sql`SELECT COUNT(*) FROM customers`; const invoiceStatusProm..

Language/javascript 2023.10.31

[JAVA] Map

Map은 Key와 Value를 한 쌍으로 갖는 자료형이다. 1. HashMap.put(key, value) key : value 추가 import java.util.HashMap; public class Sample { public static void main(String[] args) { HashMap map = new HashMap(); map.put("people", "사람"); map.put("baseball", "야구"); } } 2. HashMap.get(key) key에 해당하는 value값 추출 System.out.println(map.get("people")); // "사람" System.out.println(map.getOrDefault("java", "자바")); // "자바" 출력..

Language/JAVA 2023.07.17

[JAVA] Array vs List

리스트와 배열의 가장 큰 차이는 배열은 크기가 정해져 있지만 리스트는 크기가 정해져 있지 않고 동적으로 변한다는 점이다. ArrayList.add(value) - 값 추가 ArrayList.get(index) - 특정 인덱스의 값 추출 ArrayList.size() - ArrayList의 갯수 리턴 ArrayList.contains(value) - 리스트 안에 value가 있는지 판별하여 boolean으로 리턴 ArrayList.remove(value | index) value 삭제 후, 삭제한 결과 boolean으로 리턴 index 삭제 후, 삭제된 항목 리턴 java.util.Arrays 클래스의 asList 메서드를 사용하면 이미 존재하는 문자열 배열로 ArrayList를 생성할 수 있다.

Language/JAVA 2023.07.17

[JAVA] JAVA 기본 구조

클래스명.java /* 클래스 블록 */ public class 클래스명 { /* 메서드 블록 */ [public|private|protected] [static] (리턴자료형|void) 메서드명1(입력자료형 매개변수, ...) { 명령문(statement); ... } /* 메서드 블록 */ [public|private|protected] [static] (리턴자료형|void) 메서드명2(입력자료형 매개변수, ...) { 명령문(statement); ... } ... } 1. 접근제어자 (Access Modifier) 변수나 메서드의 사용 권한은 다음과 같은 접근 제어자를 사용하여 설정할 수 있다. private < default < protected < pulbic 순으로 보다 많은 접근을 허용한다...

Language/JAVA 2023.07.17

[JAVA] JAVA란

1. 간단하다 (Simple) C++에 가깝지만, 고급언어들에 있는 요소들 중 꼭 필요하지 않다고 생각된 부분은 제거했다. 2. 객체 지향 (Obejct-oriented) 숫자(int, float, long 등)나 논리값(true, false)을 제외한 거의 모든 것이 객체로 구성되어 있다. 실제로 자바는 Object 클래스에서 모든 클래스를 파생한다. 자바는 이러한 이유로 int, float, long, true, flase 등을 원시 자료형(primitive type)이라고 한다. 3. 인터프리터 언어 (Interpreted) 정확하게 말하면 컴파일 언어인 동시에 인터프리터 언어이다. 자바는 먼저 텍스트 소스를 컴파일하여 2진 파일(클래스 파일)로 만든 다음 자바 런타임이 클래스 파일을 인터프리트하면..

Language/JAVA 2023.07.17

[python] set hashable

https://docs.python.org/ko/3.7/glossary.html#term-hashable 용어집 — Python 3.7.16 문서 같은 형의 두 인자를 수반하는 연산이 일어나는 동안, 한 형의 인스턴스를 다른 형으로 묵시적으로 변환하는 것. 예를 들어, int(3.15)는 실수를 정수 3으로 변환합니다. 하지만, 3+4.5 에서, 각 인자 docs.python.org python set(집합)의 원소는 해시가능(hashable)해야한다. 해시 가능성은 객체를 딕셔너리의 키나 집합의 멤버로 사용할 수 있게 하는데, 이 자료 구조들이 내부적으로 해시값을 사용하기 때문 리스트나 딕셔너리 같은 가변 컨테이너들은 집합의 멤버로 사용할 수 없다. 튜플이나 frozenset 같은 불변 컨테이너들은 해..

Language/python 2023.06.23

[python] dict.setdefault / collections.defaultdict

python으로 해쉬 알고리즘 문제를 풀다보면 딕셔너리를 사용하게 된다. python colletions에서 제공하는 defaultdict 클래스를 사용하면 모든 키값에 대해 기본값을 설정해줄 수 있다. 1. 일반적인 딕셔너리 기본값 처리 def countLetters(word): counter = {} for w in word: if w not in counter: counter[w] = 0 counter[w] += 1 return counter 2. dict.setdefault 기본값 처리 if절을 쓰지 않고, python의 dict 자료구조에서 제공하는 setdefault를 사용해서 기본값을 처리해줄 수 있다. 더보기 dict.setdefault(key [, default]) - key 가 딕셔너리..

Language/python 2023.04.27