| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- webpack
- ESlint
- 인증/인가
- app router
- TS
- 무한 스크롤
- 반공변성
- 투포인터
- autosize
- 태그된 유니온
- 타입 좁히기
- Jest
- map
- 호이스팅
- MSA
- CORS
- 인터섹션
- SSR
- RTK Query
- 공변성
- dfs
- 결정 알고리즘
- useAppDispatch
- React
- recoil
- Promise
- async/await
- 리터럴 타입
- CI/CD
- tailwind
- Today
- Total
목록분류 전체보기 (524)
짧은코딩
ARP(Address Resolution Protocol) 컴퓨터는 IP 주소에서 ARP를 통해 MAC 주소를 찾아 MAC를 기반으로 통신한다. 즉 ARP는 IP 주소로부터 MAC 주소를 구하는IP와 MAC 주소의 다리 역할을 하는 프로토콜이다. ARP: 가상 주소인 IP -> 실제 주소인 MAC로 변환 RARP: 실제 주소인 MAC -> 가상 주소인 IP 주소로 변환 -ARP의 주소 찾기 ARP Request 브로드캐스트를 보냄 -> 원하는 IP 주소를 가진 장치를 찾음 -> 찾아진 장치에서 APR reply 유니캐스트를 이용해 MAC 주소를 반환 -> 원하는 MAC 주소 얻음 브로드캐스트: 송신 호스트가 전송한 데이터가 네트워크에 연결된 모든 호스트에 전송되는 방식 유니캐스트: 고유 주소로 식별된 하..
제네릭 -틀린 예시 function add(x: string | number, y: string | number): string | number { return x + y; } add(1, 2); // 3 add("1", "2"); // '12' add(1, '2') // '12' add('1', 2) // '12' 타입을 이렇게 정하면 아래 2줄 같은 경우 때문에 에러가 난다. -제네릭 틀린 예시 function add(x: T, y: T): T { return x + y; } add(1, 2); // 3 add("1", "2"); // '12' add(true, false); add(1, "2"); // '12' add("1", 2); // '12' T는 다 같은 타입이라는 의미이다. 하지만 add(..
트랜잭션 트랜잭션은 DB에서 하나의 논리적 기능을 수행하기 위한 작업 단위이다. 즉 DB에 접근하는 방법은 쿼리라서 이 여러 개의 쿼리를 하나로 묶는 단위이다. ACID 특징이 있고 원자성, 일관성, 독립성, 지속성을 의미한다. 원자성(atomicity) 원자성은 "all or nothing"이다. 즉 모두 수행되었거나 되지 않았거나이다. 따라서 트랜잭션을 커밋했는데 문제가 발생하면 롤백을 해 아무것도 수행되지 않는다. -예시 강아지 잔고: 500만원, 고양이 잔고 0원, 이 때 강아지가 고양이에게 300만원을 보낸다. 강아지 잔고 조회 -> 강아지 잔고 -300만원 -> 고양이 잔고 +300만원 이 경우에 작업을 취소하면 다시 강아지는 500만원, 고양이는 0원을 가져야 한다. 그렇기에 모든 작업을 실..
해결법 -내 풀이 나는 몇 개가 중복되는지 체크하는 count 변수, 가장 최근에 어떤 문자가 나왔는지 저장하는 now 변수를 두고 문제를 풀었다. for 문으로 돌면서 만약 count가 0이면 answer에 문자를 추가하고 count, now를 갱신했다. 그리고 count가 0이 아니고 현재 문자가 가장 최근 문자와 같으면 count++를 했다. count가 1 초과면 또 다시 now, count, answer을 갱신했다. 마지막 if문을 안하면 'aaa'라는 문자를 입력했을 때, a만 나오기 때문에 이렇게 해줬다. 내 코드 강사님 해결법 우선 입력한 문자열 맨 뒤에 공백 문자를 추가한다. 그리고 처음 문자부터 (전체 길이 - 1)까지 반복한다. 왜냐하면 공백 문자를 추가했기 때문이다. 이러고 지금 문..
line-height line-height: 2.5; 글의 줄 간격을 조절할 수 있다. letter-spacing letter-spacing: 2px; 글자 사이의 간격을 조절할 수 있다. 한 개의 클래스 제외하고 다 선택하는 법 body > *:not(.footer) { padding: 0px 140px; } 이렇게하면 footer이란 클래스를 가진 박스 말고 다 선택된다.
타입 가드 function numOrStr(a:number|string) { a.toFixed(1); } numOrStr('123'); numOrStr(1); 이렇게 하면 ts는 모든 가능성을 열어두기 때문에 오류가 난다. 왜냐하면 toFixed는 number에서만 사용할 수 있기 때문이다. toFixed는 매개변수 숫자만큼 소수점이 생긴다. function numOrStr(a: number | string) { if (typeof a === "number") { a.toFixed(1); } else { a.charAt(3); } } numOrStr("123"); numOrStr(1); 따라서 이렇게 표시하면 number인 것이 확실해서 오류가 발생하지 않는다. 그리고 else 문으로 가면 string인..
설치하기 $ npm i @fortawesome/fontawesome-svg-core $ npm i @fortawesome/free-solid-svg-icons @fortawesome/free-regular-svg-icons @fortawesome/free-brands-svg-icons $ npm i @fortawesome/react-fontawesome 우선 이 명령어를 이용해서 다 설치한다. 적용하기 -적용할 아이콘 fontawesome에서 이 아이콘을 적용해보는 예시이다. -import import { faCaretUp } from '@fortawesome/free-solid-svg-icons'; 이렇게 사용할 폰트를 import 한다. 위 사진에서는 "fa-caret-up"으로 나와있다. 하지만 리..
내 해결법 나는 indexOf를 이용해서 t의 위치를 다 구해줬다. 그리고 이중 반복문을 사용해서 거리를 구했다. 비효율적이라고 생각한다. 내 코드 강사님 풀이 큰 값을 하나두고 t값이 나오기 전까지 +1을 하다가 t값이 나오면 그 큰 값을 0으로 만든다. 그리고 이것을 오름차순, 내림차순으로 for문을 2번 사용하면 자연스럽게 가까운 값이 구해진다. 이때 2번째 for문에서는 둘 중에서 작은 값을 선택하면 된다. 강사님 코드 이렇게 p를 문자 최대 길이보다 크게 두고 문제를 해결하면 된다.
해결법 isNaN 함수를 활용해야한다. 반복문을 돌면서 isNaN 함수에 문자를 넣었을 때 false가 나오면 숫자이다. 따라서 ! 연산자를 이용해서 숫자를 answer에 넣어주면 된다. 코드
해결법 -내 생각(비효율적 + 틀림) 나는 문자를 반으로 잘라서 뒤에 자른 문자는 다시 뒤집어서 푸는걸 생각했다. 틀렸지만 여러 함수를 배웠으니 정리하려고 한다. 내 코드 정규 표현식을 사용했다. 그리고 문자열을 배열로 만들려면 Array.from(s) 이렇게 사용해야 한다. 해결법 -강사님 풀이 이걸 통째로 뒤집어서 원본과 비교한다. 내 풀이에 비해서 굉장이 단순하다. 강사님 풀이 정규 표현식은 a-z가 아닌 문자를 다 없앤다는 의미이다. 그리고 문자열에서 배열로 만든는 것도 split로 간단하게 했다.