목록프로그래밍 언어 (95)
IT 일기장
테이블에 공통적으로 들어가는 아이피 주소를 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..
이 오류는 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..
jsp에서 tld와 java 태그 클래스를 활용해서 동적인 html을 만들어봤다..원래는 jsp 안에 로 java 코드를 넣는 방식으로 처리하려고 했었는데,코드가 점점 지저분해질 것 같아서 태그 클래스를 만들어 보기로 했다.tld를 설정하고, 매개변수를 처리하고, html을 생성하는 과정을 다 만들어야해서 조금 귀찮긴 하지만.. 일단 시행 tld 파일 생성 tld는 예전에 써본 적이 있었지만, 이번엔 매개변수를 여러 개 받는 태그를 만들어야 해서 새로 설계해야 했다.selectBox, radio, checkbox 같은 동적인 html 요소를 태그로 작성하고 싶었다. WEB-INF/tld 경로에 custom.tld 파일을 만들었다. 태그 이름과 사용할 속성을 정의해주는 게 핵심이다. 1.0 cu..
프로젝트 진행 중에 이사님이 만드신 탭 UI가 있다.그 탭 마다 닫기(X) 버튼이 존재하고, 누르면 탭이 닫히고 컨텐츠가 사라지는 형식이다.보자마자 딱 떠오른게 "모두 닫기", "현재 탭 제외하고 닫기" 가 떠올랐는데 모두 닫기부터 구현해봤다. 모두 닫기 화면을 보여주는 형식2가지 정도 생각해볼 수 있었는데.. 하나는 탭에서 오른쪽 클릭을 눌렀을 때, 다른 하나는 버튼 형식으로 화면에 보여주는 형태다.개인적으로 나는 오른쪽 클릭을 많이 쓰기 때문에 오른쪽 클릭을 눌렀을 때로 구현했다. ( 다른 사람들의 의견은 후자의 방법을 선택 ) 나만 편하면 되는 것이 아닌 UI를 이용하는 사람들의 의견이 더 중요하기에 고려할 필요가 있다. 간단한 탭 예제를 만들어 기록용으로 남겨놔야지.. See the Pen..
SI 프로젝트 중간에 투입하면서 가장 곤란한 부분이 파일명과 Java 함수에 대한 명칭 등..제대로 된 명명 규칙이 안 정해져 있을 때이다. 참고할 만한 용어정의서나 문서 같은 것들도 없다면만들던가 아니면 번역기 돌려서 새로 만들던가.. 사소한데 쌓이면 시간을 여간 잡아먹는게 아니다. 어떤 프로젝트를 투입하든 바로바로 쓸 수 있는건.. 그 프로젝트들마다 규칙이 다르기 때문에 욕심이고적어도 현재 프로젝트에서는 사용할 수 있도록 구현.. 이 프로젝트는 Impl를 사용하지 않았다. /*포탈 DB 테이블명과 컬럼명들을 쉼표로 구분해서 입력하면 Controller, Service, Mapper, xml 파일 생성## 입력 예시테이블명을 입력하세요 : bpp_por_test컬럼명을 쉼표(,)로 구분하여 입력하세..
이 글은 input type이 text였을 때가 아닌 number인 상황이었을 때 maxlength가 작동하지 않는 점에 대해 작성했다.text였다면 저 maxlength가 제대로 먹혔을 텐데..아래 GIF 이미지와 같이 number로 설정했을 때 우측에 생기는 화살표로는 max와 min 속성이 제대로 작동하지만사용자가 직접 입력했을 때는 먹히지 않는다.maxlength도 마찬가지였다. 따라서 javascript나 jquery를 이용해서 사용자가 입력했을 때 maxLength 속성을 가져와내가 입력한 길이와 비교해서 입력한 길이가 더 길면 maxLength까지 자르는 방식으로 처리한다. var $fileCountInput = $('input[name="${pageId}ppbFileCount"]'..
중소기업 SI 회사에 다니면서 발생한 일이었다.회사 내 인트라넷에 접속해서 회원정보 목록을 보고 싶어서 메뉴를 클릭했더니자꾸 메인페이지로 튕겨나가는 것이었다.. 개발자 도구로도 좀 보고 싶은데 자꾸 튕기니 찾기도 힘들고메인페이지로 튕겨나가는 이유를 알고 싶어서 대리에게 인트라넷 소스를 확인할 수 있을까 물어봤는데GitLab 내에 인트라넷 소스가 총 5개가 있는데 어떤 게 최신 버전인지는 모른다는 것이다. (무슨 야바위 하는 것도 아니고..) 전 퇴사자에게 인수인계를 받은 게 없었어서 발생한 일 ㅠㅠ항상 느끼는 거지만 회사에서 일이 돌아가야 할 요소 중 인수인계는 정말 중요하다고 생각한다. 그러면 다른 방법으로 운영서버에 FTP로 직접 접근해서 직접 소스를 내려받고문제가 되는 페이지를 찾아서 소스 분석 후..