목록전체 글 (169)
IT 일기장
시작 계기 개발을 하다 보면 select, radio, checkbox 같은 폼 태그를 반복해서 작성해야 할 때가 많다.특히 데이터베이스(DB) 값이나 공통 코드(CMMN)로 옵션을 불러오는 경우, HTML을 매번 직접 작성하는 것은 굉장히 비효율적이라 생각하여 공통 유틸을 만들고자 생각했다."태그 유형별로 적절히 생성해 주고, 필요한 옵션만 넘기면 알아서 만들어주는 유틸리티가 있으면 좋지 않을까?"하는 생각에서 HtmlObjUtil을 만들게 되었다.HtmlObjUtil은 JSP에서 태그 하나로 select, radio, checkbox, toggle 형태를 자동으로 출력해 주는 공통 모듈이다. 기본 입력 폼을 깔끔하고 일관성 있게 관리하고자 설계했다. CSS는 bootStrap5를 사용했다. 구조 ..

어떤 언어든 메모리 체크는 필수 불가결이다.브라우저 단에서 메모리 확인은 어떻게 하는지 궁금했었는데전 회사에서 다니면서 수행했던 프로젝트의 감리 기관에서 수석님이 알려주셨던 lighthouse그리고 내가 발견해서 써본 힙 스냅샷이다. 사용법 사용법은 쉽다. 1. 먼저 크롬 브라우저를 키고 내가 작업하고 있는 곳에 개발자 도구를 열고 메모리 탭을 연다. 그러면 힙 스냅샷이라는게 보인다.2. 내가 원하는 해당 페이지에서 javascript 객체 및 관련 dom 노드의 메모리 분포가 궁금하다면 하단에 스냅샷 촬영을 누르면 된다. 그러면 이 페이지에서 할당된 메모리의 크기를 알 수 있다. 활용 사례 1. 처음에 탭이 있었을때 메모리는 35.8MB2. 탭을 닫은 후에 메모리는 32.1MB3. 그리..
시작 계기 개발하면서 키 값과 기업명의 상관관계를 :와 ,로 연결해서 데이터를 불러오자고 정의했던게 있었다.데이터를 넣었을때는 단일로 넣었지만 불러올때는 간편하게 :와 ,로 연결해서 데이터를 불러오고 싶었는데for문과 forEach문으로 충분히 해결은 가능하지만 불필요한 코드도 줄이고 싶고 성능을 높이고자 시작하게 됐다. 람다식이란? 별도의 명칭을 지정할 필요 없이 이름 없이 그 내용물만 정의한 개념이다.Java 8 버전 이후 부터 가능하며, 실무적인 장점으로 코드가 간결해진다. 불필요한 루프문의 삭제가 가능하고 동일한 함수를 재활용할 수 있는 여지가 많아지고 필요한 정보만을 사용하는 방식으로 인해 퍼포먼스가 향상된다. 예를 들면for문은 "1부터 100까지 순차적으로 증가하면서 이 코드를 순차적으로 ..
개발 환경 Spring Boot 3.2JDK 17TOMCAT 10 (내장 톰캣)Maven 시작 계기 스타트업에서 프로젝트를 진행하면서 초기 단계에서 만들었던 공통으로 쓰고자 했던 방법이다.사실 Spring MVC 패턴으로 개발하는게 가장 쉽고 효율적이나,React처럼 Component와 SPA 개념을 활용하여 UI로 기초 설계를 해놓은 임원진 분들의 시작으로 인해진행하게 되었다. 기초 설계 기초 설계는 다음과 같이 구성하고 정의했다. 1. 공통으로 사용할 함수명은 selectListApi 로 정의2. 매개변수는 url, params, successCallBack, errorCallBack으로 구성3. 데이터 타입은 json과 post 방식으로 고정 ** url은 컨트롤러 주소** params는 json..
테이블에 공통적으로 들어가는 아이피 주소를 ipv4 버전 데이터로 넣으려다가ipv6 버전 데이터도 고려해 VARCHAR(15) 에서 VARCHAR(45)로 변경하고 싶다. 그럴려면 컬럼을 변경해야되는데.. 테이블도 많고 하니 일괄로 변경하고 싶다.그래서 프로시저를 사용했다. 우선 조건에 맞는 컬럼들을 검색하는 CURSOR를 정의해준다.나 같은 경우에는 컬럼명이 모두 Ip로 끝나고 데이터 타입이 VARCHAR, 그리고 길이가 15인 컬럼만 조회하는 쿼리를 짰다. 그 다음 조회한 결과의 테이블명과 컬럼명을 FETCH 한 뒤에 컬럼 변경 쿼리를 LOOP로 돌렸다. CREATE PROCEDURE UpdateDateType()BEGIN DECLARE done INT DEFAULT FALSE; DECLA..
날짜 데이터 저장 방식은 회사의 사용 목적과 시스템의 요구 사항에 따라 다르다.날짜를 저장하는 내가 아는 방법은 2가지가 있었는데 1. DATETIME 타입으로 사용 (년/월/일 시:분:초 통째로 저장)2. CHAR 또는 INT 타입으로 사용 (년,월,일 시,분,초 각각 따로 저장) 어떤 방법이 개발에 유리할까?일반적으로는 DATETIME 타입으로 사용하는 것이 더 유리하다. 그 이유는 아래에서 두 가지 방식의 장단점을 비교해본다. DATETIME의 장점 하나의 필드로 날짜와 시간을 모두 저장하기 때문에 구조가 간단하고 관리가 편리날짜와 시간의 형식이 DB에서 자동으로 관리되므로 입력 및 처리에서 실수 방지날짜와 시간을 기준으로 쉽게 정렬하거나 비교할 수 있음-- 날짜와 시간을 기준으로 비교SE..

사무용 로지텍 키보드를 잘 사용하다가 키보드가 멈추면서 잘 안써지는 경우 때문에 화가난 적이 있다.그 이유를 구글링 해보니 다음과 같이 해결했다. 지금은 문제 없이 잘 사용하는 중이다.제어판 - 전원 옵션 검색 전원 관리 옵션 설정 편집 클릭 - 고급 전원 관리 옵션 설정 변경 클릭 USB 설정 - USB 선택적 절전 모드 설정 - 사용 안 함 클릭 - 적용 후 확인
이 오류는 MySQL에서 발생하는 전형적인 외래 키 제약 조건 위반이다. 보통 외래 키 제약 조건을 가진 테이블에서 부모 테이블의 데이터를 삭제하거나 수정하려고 할 때 자식(참조하는) 테이블에 여전히 연결된 데이터가 있을 경우 이 오류가 발생한다. 이 오류를 해결할 수 있는 가장 빠른 방법은 자식 테이블에서 어떤 데이터가 부모 데이터를 참조하고 있는지 조회하는 것이다. MySQL의 INFORMATION_SCHEMA를 활용해 외래 키 관계를 확인할 수 있다. SELECT TABLE_NAME AS child_table, COLUMN_NAME AS child_column, CONSTRAINT_NAME AS constraint_name, REFERENCED_TABLE_NAME AS pare..