IT 146

[SI 지식 말하기 연습] DB - 인덱스(Index)

언젠간 갑자기 들이닥치게 될 면접 대비를 위한 말하기 연습 코너입니다. 인덱스란테이블의 검색 속도를 향상시키기 위한 이진 트리 자료구조잘못 사용하면 성능이 오히려 저하됨규모가 작지 않은 테이블에서 사용하면 좋음INSERT, UPDATE, DELETE가 자주 발생하지 않는 컬럼에서 사용하면 좋음 (정렬되어 있기 때문)JOIN, WHERE, ORDER BY에 자주 사용되는 컬럼에서 사용하면 좋음PK는 기본적으로 인덱스가 잡혀있음예시조회가 빈번히 일어나는 지역 검색 테이블에서는 인덱스를 사용하는 것이 좋다.생성, 수정, 삭제가 빈번히 일어나는 게시판 테이블에서는 인덱스를 사용하는 것이 오히려 좋지 않을 수가 있다.

IT/기타 2024.11.24

[React] Clean-up 함수에 대해 (feat. useRef)

useEffect는 컴포넌트가 렌더링된 직후 실행되는 훅이다.그리고 보통 컴포넌트가 언마운트될 때 실행할 동작을 설정하기 위해 useEffect 안에서 Clean-up 함수를 호출한다.useEffect(() => { return () => console.log(state);}, []) Clean-up 함수는 리렌더링 직후 의존성 배열의 state 중 변경된 값이 있다면 클로저에 의해 이전 시점의 state를 기준으로 실행되는 함수이다. 의존성 배열에 state가 들어 있으면 두 가지 경우에 실행된다.컴포넌트가 언마운트될 때해당 state의 값이 변경될 때 Clean-up 함수에서 해당 state를 찍어 보면 state가 변경되기 직전의 값이 출력될 것이다. 아래 코드가 그 예시이다.export co..

IT/React & Next.js 2024.11.22

[Spring Boot] RequestBody 필드에 값이 매핑되지 않는 문제

역직렬화가 안돼요!@RequestBody로 POJO 객체를 받을 때, 특정 필드에 값이 자동 매핑이 안 되는 문제가 가끔 발생한다.즉 프론트에서 분명히 body에 {name: "doringri"} 를 담아 보냈는데 {name: ""} 로 도착하거나 한다는 것이다.이때 boolean 형이라면 false로, int형이라면 0으로 도착할 것이다. (각 자료형의 기본값) 이러한 현상이 일어나면 먼저 필드의 이름이 같은지 다시 한번 확인하고, 컨트롤러에서 파라미터 앞에 @RequestBody 어노테이션을 붙였는지 확인한다.@PostMappingpublic void test(@RequestBody UserInfo userinfo) { ...} 문제가 없다는 것을 확인했다면 매우 높은 확률로 Jackson 문제..

[IT/일상] 엑셀 VBA 페어 매칭 프로그램 후일담 (고도화)

저번에 블로그 포스팅도 했었던 페어 프로그램 말인데 그동안 후기를 안 적었었지만 어떻게 제가 1등을 해서 치킨을 받았습니다. (아래 글 참고)  [IT/일상] 엑셀 VBA 매크로로 페어 매칭 프로그램 만들기계기최근 회사에서 페어 프로그래밍을 주기적으로 하게 됐는데...페어를 짓는 프로그램을 개발부서원들이 직접 개발하는 소소한 대회(?) 가 열렸다.상품은 무려 치킨이기 때문에 도전하지 않을doringri.tistory.com 페어 프로그램 대회에 대해 이야기를 좀 더 하자면 결과는 부서원들의 투표를 통해 정해졌었습니다.그런데 생각도 못한 참신한 결과물들도 있어서 신기했던 경험이었습니다. 이때까지 나온 결과 빈도에 따라 딥러닝마냥 가중치를 두신 분도 있고... (기술점수 ㅇㅈ)한 분은 유니티를 가지고 만드셨..

IT/기타 2024.11.20

[SI 지식 말하기 연습] Promise, Async, Await

언젠간 갑자기 들이닥치게 될 면접 대비를 위한 말하기 연습 코너입니다. Promise란비동기 연산을 처리하는 객체세 가지 상태를 가짐 (초기 상태, 완료된 상태, 실패한 상태)then, catch, finally 메서드를 통해 결과를 처리함Async/Await란Promise를 기반으로 하였으나...비동기 코드를 동기식으로 작성할 수 있게 하여 코드의 가독성 향상async 메소드는 항상 Promise를 반환await는 Promise의 결과 값이 반환될 때까지 함수의 실행을 일시 중단시킴 녹음 결과막히는 부분 없이 잘 대답함 한줄평 : 이대로만 갑시다!

IT/기타 2024.11.19

[SI 지식 말하기 연습] 추상 클래스, 인터페이스란?

언젠간 갑자기 들이닥치게 될 면접 대비를 위한 말하기 연습 코너입니다. 추상 클래스란추상 메소드를 포함한 클래스추상 메소드를 오버라이딩한 자손의 인스턴스만 만들 수 있음 인터페이스란추상 클래스의 일종추상 메소드와 상수만을 포함할 수 있음여러 부모로부터 상속받는 다중 상속을 구현할 때 사용됨모든 메소드를 오버라이딩한 자손의 인스턴스만 만들 수 있음 녹음 결과자바의 추상 클래스란 추상 메소드가 포함된? 클래스를 뜻합니다. 상수와 추상 메소드를 가질 수 있는 클래스입니다. (일반 메소드도 가질 수 있음) 독립적으로는 인스턴스를 가질 수 없고, 추상 메소드를 오버라이딩한 자식... 클래스에서만 인스턴스를 만들 수 있습니다. 인터페이스는 추상 클래스의 한 종류입니다. 모든 메소드가 추상 메소드로 이루어져 있다는 ..

IT/기타 2024.11.18

[JavaScript/알고리즘] 의상

프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 이번에도 DFS 상태트리로 완전탐색을 시도하였습니다.function solution(clothes) { // 종류에 따라 의상 분류 const classifiedClothes = {}; for (let cloth of clothes) { if (!classifiedClothes[cloth[1]]) { classifiedClothes[cloth[1]] = []; } classifiedClothes[cloth[1]].push(cloth[0]); } ..

[JavaScript/알고리즘] 전화번호 목록

프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 어떤 문자열이 리스트 내 다른 문자열의 접두어가 되는 경우 false, 그런 경우가 없다면 true를 출력하는 문제.function solution(phone_book) { for (let i=0; i 최소직사각형 문제처럼 답은 맞지만 효율성 테스트에서 시간초과 에러 발생함.  정답 힌트리스트를 사전순으로 정렬한 뒤, 다음 인덱스에 해당하는 요소와 비교하는 것만으로도 해결 가능한 문제.즉, "정렬" 하는 것이 알고리즘 해결에 좋은지 생각하기  정답function solution(phone_book) { phone_book.sort(); ..

[SI 지식 말하기 연습] 동기, 비동기란?

언젠간 갑자기 들이닥치게 될 면접 대비를 위한 말하기 연습 코너입니다. (2일차) 동기 프로그래밍작업이 순차적으로 진행됨한 작업이 끝날 때까지 다른 작업은 대기어떤 작업의 결과가 다음 작업에 필요한 것처럼 순서가 지켜져야 할 때 필요함키워드: 순차적, 대기, 순서  비동기 프로그래밍병렬적으로 여러 작업이 함께 수행됨특정 작업의 완료를 기다리지 않고 다음 작업을 실행함애플리케이션에서 긴 작업을 기다리는 동안 다른 작업이 수행되어 전체적인 성능을 향상시킬 때 필요함키워드: 병렬, 다음 작업 바로 실행, 긴 작업  녹음 결과네, 일단 동기 방식이란... 하고자 하는 작업의 순서가 지켜지는... 일을 뜻합니다.이 동기 방식이 필요한 순간은....... 어떤 작업의 결과가 다음 작업에 필요할 때... 입니다.그리..

IT/기타 2024.11.13

[SI 지식 말하기 연습] HTTP 프로토콜이란?

언젠간 갑자기 들이닥치게 될 면접 대비를 위한 말하기 연습 코너입니다. HTTP 프로토콜이란클라이언트와 서버 간 통신을 위한 규약OSI 모델의 응용 계층 프로토콜사용자가 웹 사이트를 방문하면 브라우저가 웹 서버에 HTTP 요청을 전송, 웹 서버는 HTTP로 응답.서버는 숫자로 지정된 상태 코드 등을 통해 다양한 유형의 응답을 전송기본 포트는 80 키워드통신, 클라이언트, 서버, OSI, 사용자, 브라우저, 웹 서버, 상태코드, 포트  녹음 결과HTTP 통신이란 서버와 클라이언트 사이의 통신을 위한 통신 규약이라고 알고 있습니다.HTTP는... OSI 계층 중 응용 계층에서 동작합니다.만약 사용자가.... 사이트에 접속을 하게 되면 브라우저는..... 웹서버에게 HTTP 요청을 보내고 웹서버는 브라우저에게..

IT/기타 2024.11.12

[JavaScript/알고리즘] 최소직사각형

프로그래머스 Lv.1 "최소직사각형" 문제 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 주어진 여러 사이즈의 명함들의 가로세로 길이를 모두 수납할 수 있는 가장 작은 사이즈의 지갑을 만드는 알고리즘입니다.위 예시에서 2번 명함을 가로로 눕힌다면 80(가로)*40(세로) 크기의 지갑으로 모든 명함을 수납할 수 있습니다. 변명이지만 이 문제는 알고리즘 고득점 kit의 '완전탐색' 으로 분류되어 있었습니다.function solution(sizes) { const ch = []; let res = Infinity; const dfs = (lv) => { if (lv ==..

[mySQL] 종합적인 쿼리 예제 풀어보기 (JOIN, GROUP BY 등)

프로그래머스 Lv.5 "상품을 구매한 회원 비율 구하기" 문제입니다.USER_INFO 테이블과 ONLINE_SALE 테이블에서 2021년에 가입한 전체 회원들 중 상품을 구매한 회원수와 상품을 구매한 회원의 비율(=2021년에 가입한 회원 중 상품을 구매한 회원수 / 2021년에 가입한 전체 회원 수)을 년, 월 별로 출력하는 SQL문을 작성해주세요. 상품을 구매한 회원의 비율은 소수점 두번째자리에서 반올림하고, 전체 결과는 년을 기준으로 오름차순 정렬해주시고 년이 같다면 월을 기준으로 오름차순 정렬해주세요. 문제 전문은 아래 링크에서 볼 수 있습니다.꽤 여러 개념이 포함되어 있어서 풀어볼 만한 문제라고 생각됩니다. Solved-Algorithm/MySQL/프로그래머스/5/131534. 상품을 구매한 회..

IT/SQL 2024.11.06

[SQL] NULL 다루기

프로그래머스 SQL kit의 IS NULL 파트 문제를 풀면서 정리합니다. Null 값 처리 방법 Solved-Algorithm/MySQL/프로그래머스/2/59410. NULL 처리하기 at main · ParkBible/Solved-AlgorithmThis is an auto push repository for Baekjoon Online Judge created with [BaekjoonHub](https://github.com/BaekjoonHub/BaekjoonHub). - ParkBible/Solved-Algorithmgithub.comSELECT IFNULL(컬럼명, "바꿀 값") FROM 테이블; 특정 컬럼에 Null 값이 포함되어 있을 때 다른 값으로 교체하고 싶다면 IFNULL을 이용한다..

IT/SQL 2024.10.31

[React] useReducer 사용하기

state 로직을 reducer로 작성하기 – ReactThe library for web and native user interfacesko.react.dev 위 페이지의 내용을 공부하면서 정리한 글입니다. 언제 쓰나?여러 컴포넌트에서 같은 로직이 반복될 때(ex: 배열 필터링, 배열 요소 삭제 등) 실수를 줄이고 로직을 동시에 변경하기 쉬움로직을 직관적으로 나타내고 싶을 때예를 들어 setState(state => state.push(data)) 대신 dispatch({"add", data}); 로 좀더 직관적으로 나타낼 수 있음  어떻게 쓰나?Redux처럼 state와 action을 파라미터로 하여 Reducer 함수를 만듦.state에는 말 그대로 현재까지의 상태값이 저장되고, action을 통해..

IT/React & Next.js 2024.10.29

[IT/일상] 엑셀 VBA 매크로로 페어 매칭 프로그램 만들기

계기최근 회사에서 페어 프로그래밍을 주기적으로 하게 됐는데...페어를 짓는 프로그램을 개발부서원들이 직접 개발하는 소소한 대회(?) 가 열렸다.상품은 무려 치킨이기 때문에 도전하지 않을 수 없었다. 어떤 플랫폼, 어떤 언어로 하든지 상관이 없어서 그것부터 결정해야 했는데, 엑셀로 하는 게 제일 좋겠다는 결론에 이르렀다. 왜냐하면...결과로 나온 데이터가 저장되었으면 좋겠는데, 작은 프로그램이라서 DB까지 쓰기는 너무 거창하다.적당한 GUI를 쉽게 보여줄 수 있다.프로그램을 공유하기가 쉽고, 엑셀 프로그램만 있다면 별다른 환경 세팅이 필요없다.학교 다닐 때랑 컴활 1급 딸 때 학습했던 VB를 다 까먹어서 복습하고 싶다.이런 이유들이 있었다.  다른 방법 생각해보기하지만 위의 이점 (4번 빼고) 들을 위해 ..

IT/기타 2024.10.19