IT
-
[코딩문제_자바스크립트] 실수를 눈치채지 못했다IT/코딩문제 2025. 6. 16. 23:55
프로그래머스 코테를 풀어봤는데, 허무한 실수를 발견하지 못해서 시간을 많이 소요했다. 오랜만에 풀어서 그런지 이런 세세한 것도 눈치채지 못했다. 그래서 오답을 남긴다. [문제]- 직원들은 본인들이 출근 희망 시각을 정해서 +10분까지 출근해야한다.- 7일중 주말(토,일)은 이벤트에서 제외한다.- 이벤트 시작일이 주어지면 그 시작일로 부터 7일간(토,일 제외) 지각안한 직원 수를 추출할 것이다.- 함수의 매개변수는 schedules, timelogs, startday 세가지가 주어진다.- schedules: 직원 n명이 설정한 출근 희망시간을 담은 1차원 배열- timelogs: 직원들이 일주일 동안 출근한 시각을 담은 2차원 정수 배열- startday: 이벤트를 시작한 요일을 의미하는 정수모든 시각은..
-
[React.js] JSX요소를 map안에서 렌더링할 때 주의사항IT/코딩히스토리_FE 2025. 6. 10. 23:38
JSX 요소를 map함수 안에서반복문으로 반복 렌더링이 될 때 안에 반복되는 요소에 key의 값을 지정해야한다. 가끔 index를 key값으로 지정하는 경우가 있는데, 이러면 요소의 순서가 바뀌거나 변경이 일어났을때 key값은 그대로고 표면적인 값만 변경되어 상태가 꼬인다. key는 React가 DOM을 효율적으로 업데이트하는 데 쓰이는 기준이다.React는 리스트를 렌더링할 때 각 자식 요소에 고유한 key 값을 요구한다.그래서 key값은 고유해야 하며 보통 map함수에서 고유한 id값으로 해야한다.
-
[React.JS] useRef()를 사용할 때, state.current와 state.current.value의 차이IT/코딩히스토리_FE 2025. 6. 10. 23:33
useRef의 값을 초기화할때와 사용 방법에는 두가지가 있다.1. DOM 참조2. 상태저장/보전(직접 값을 초기화)1번같은 경우에는 같은 DOM 요소에 같이 참조를 걸면 을 렌더링 시, React가 state.current에 해당 DOM 요소를 넣어준다.그러면 state.current.value 같이 DOM요소에 직접 접근해서 값을 다룰 수 있다.2번같은 경우는 state.current = 1; 이런식으로 원하는 값을 설정해서 초기화하고 사용할떄도state.current으로 가져와서 값을 쓴다.때문에 useRef를 어떤식으로 사용할 건지에 따라서 값을 가져오는 방식이 다르니 주의할 것
-
[ORACLE] SELECT가 너무 느리다면 일단 이걸 확인해보기IT/코딩히스토리_DB 2025. 1. 20. 23:35
데이터를 주고 받는 경우가 많아서 매월, 당월에 발생한 데이터를 추출한다.그런데 데이터가 너무 많이 쌓여서 SELECT가 10분이 넘어도 끝나지 않았다.보통 쿼리 실행계획을 EXPLAIN PLAN을 통해서 확인을 한다는데 해당 쿼리가 다른 DB에서 링크로 여러 테이블을 가져와 조인하는 등 복잡해서 실행계획을 보는게 더 힘들었다.그래서 안에 있는 쿼리부터 차근차근 확인해봤다. 보통 이럴때 약간만 수정해도 쿼리 속도가 현저하게 빨라졌던 경험이 있어서이번에도 똑같이 진행해봤는데10분이 넘어도 실행안되던게 1분안에 결과문이 나왔다. 이런 경우는 아래 3가지를 확인한다.1) IN 사용을 되도록 안하기2) 서브쿼리가 꼭필요한가? 데이터가 많다면 되도록 JOIN을 활용하기3) 인덱스가 없는 경우 전체 행이 작은 테이..
-
[MyBatis] SqlSessionTemplate, 메퍼 인터페이스IT/코딩히스토리_BE 2025. 1. 15. 23:28
Spring에서 mybatis와 mybatis-spring을 사용할때 SqlSessionTemplate을 사용한다. SqlSessionTemplateMyBatis-Spring에서 제공하는 클래스로,Spring 환경에서 SqlSession을 안전하고 효과적으로 사용할 수 있도록 래핑한 구현체Spring의 트랜잭션 관리와 MyBatis를 통합하여, 스레드 안전성과 자원 관리를 자동화한다. 즉, sqlSessionFactory에서 하던SqlSession의 열기와 닫기 작업을자동 처리하여 자원 누수 방지. 개발자가 close()를 호출할 필요가 없다. (SqlSessionTemplate만 호출해서 실행하면 된다)(또 SqlSessionTemplate은 다중 스레드 환경에서 안전하게 사용할 수 있도록 설계되어..
-
[MyBatis] SqlSession, SqlSessionFactory, SqlSessionTemplateIT/코딩히스토리_BE 2025. 1. 12. 23:53
마이바티스는 자바 기반의 SQL 매퍼 프레임워크라고했다. SQL문을 실행해주고 리턴을 받아야 하는데 이때 마이바티스는 SqlSession이라는 객체를 통해서 이를 진행한다. SqlSession이란?MyBatis에서 제공하는 주요 인터페이스로, 데이터베이스와의 연결(Session)을 관리하며 SQL 쿼리 실행, 트랜잭션 관리, 매퍼 호출 등의 역할을 담당MyBatis의 SqlSession은 JDBC의 Connection 객체를 내부적으로 사용하며, 이를 통해 개발자가 SQL 실행과 결과 매핑을 쉽게 처리할 수 있도록 도와준다. 즉, SqlSession은 JDBC의 Connection 객체와 같이SQL을 실행하고 결과를 반환받는 그릇이라고 생각하면 된다. SqlSession 자체도 열고 닫고를 SQL실행마..
-
[MyBatis] MyBatis?IT/코딩히스토리_BE 2025. 1. 12. 16:20
마이바티스는 개발자가 지정한 SQL, 저장프로시저 그리고 몇가지 고급 매핑을 지원하는 퍼시스턴스 프레임워크이다.JDBC로 처리하는 상당부분의 코드와 파라미터 설정및 결과 매핑을 대신해준다. 마이바티스는 데이터베이스 레코드에 원시타입과 Map 인터페이스 그리고 자바 POJO 를 설정해서 매핑하기 위해 XML과 애노테이션을 사용할 수 있다. (마이바티스3 문서: https://mybatis.org/mybatis-3/ko/index.html) 위에 설명은 마이바티스3 문서에서 나온 마이바티스에 대한 설명인데 한마디로 마이바티스라는 프레임워크를 사용하면 JDBC에서 사용했던 불편함을 개선할 수 있는 것이다. 즉, MyBatis는 자바 기반의 SQL 매퍼 프레임워크로, 개발자가 데이터베이스와 상호작용할 때 SQL..
-
[React js] state, useRef(), 로컬변수IT/코딩히스토리_FE 2024. 12. 20. 18:29
리액트에서는 변수를 사용할때 useState를 이용해 상태 관리와 리랜더링을 할 수 있다. 하지만 해당 변수의 값변경이 리랜더링이 필요없을 때는 useState를 이용하는건 불필요하다.특정 이벤트가 동작했을 때 useEffect()를 타도록 개발을 하고 있었다. 그렇기 때문에 의존성 배열에 useState를 통한 변수를 넣을지 , useRef()를 통한 변수를 넣을지 고민하다가문득 로컬변수와 useRef()의 차이점에 대해 정리가 명확하게 되지 않았다. 우선 useRef()는 useState처럼 값이 변경됐을때 리랜더링을 발생시키지 않지만, 동일하게 값을 유지하고 관리할 수 있는 리액트 훅이다.그렇다면 로컬 변수 또한 값이 변경됐을 때 리랜더링을 발생시키지 않는데, 그럼 어떤 상황에서 뭘 써야할까? 차이..