Docker - 도커에 Spring Boot, JSP 배포하기 (feat. JAR & WAR)
·
Docker
개요요즘 Docker를 공부하고 있다. 가이드를 보면서 따라하다가 내 프로젝트를 직접 올려보기로 했다.올려보려는 프로젝트는 사내에서 개발하려는 인사평가시스템을 개발하기 전에 집에서 먼저 개발해 봤던 프로젝트다.회사에서 사용하는 기술에 맞춰 개발하기 위해 Mybatis, JSP를 사용해서 개발을 했다. 이 JSP 때문에 Docker에 올리는 작업이 골치 아팠다. 개발 환경Java 8Spring 2.7MybatisJSPGradleJar -> War 변경IntelliJ Docker에 올려보기1. Dockerfile 작성Dockerfile은 도커 이미지를 생성하기 위한 레시피같은 역할을 한다. Dockerfile을 통해 이미지 생성부터 실행까지의 과정을 문서화하고 자동화할 수 있다.Dockerfile은 프로젝트..
Docker - 도커 기본 명령어
·
Docker
도커 버전 확인도커가 제대로 설치되었는지 확인하는 명령어$ docker --versionDocker version 27.3.1, build ce12230 이미지 다운로드도커 이미지를 다운로드하는 명령어$ docker pull ubuntuUsing default tag: latestlatest: Pulling from library/ubuntud1fbec07a2e5: Pull completeDigest: sha256:ab64a8382e935382638764d8719362bb50ee418d944c1f3d26e0c99fae49a345Status: Downloaded newer image for ubuntu:latestdocker.io/library/ubuntu:latest 이미지 목록 확인다운로드한 이미지 목..
디자인 패턴 - 템플릿 콜백 패턴(Template Callback Pattern)
·
Design Pattern
템플릿 콜백 패턴이란?템플릿 콜백 패턴은 전략 패턴의 변형으로, 개발의 유연성과 재사용성을 높이는 디자인 패턴이다. 특히, Java에서 비동기 프로그래밍이나 이벤트 기반 프로그래밍을 구현할 때 유용하게 사용된다.Spring의 JdbcTemplate, RedisTemplate, TransactionTemplate 등에서 템플릿 콜백 패턴이 사용되고 있다.  특징변하지 않는 기능(템플릿)과 변하는 기능(콜백)을 분리한다.전략 패턴과 유사하지만 콜백을 템플릿 메서드의 파라미터로 전달한다.콜백은 주로 단일 메소드를 가진 인터페이스(함수형 인터페이스)를 사용한다.익명 클래스나 람다 표현식을 사용해서 콜백을 전달할 수 있다.  패턴 흐름Client가 템플릿 메서드를 호출하여 콜백을 전달한다.템플릿 메서드는 정해진 ..
Git - 깃허브 누락된 잔디 한 번에 복구하기 (feat. 잃어버린 잔디를 찾아서)
·
Git
개요열심히 개발해서 푸쉬를 했는데 잔디가 안심어져있다면 얼마나 화가 날까?바로 내가 그랬다. 몇개월 전 진행했던 프로젝트의 모든 커밋의 잔디가 안심어졌던걸 뒤늦게 발견했던 것이다. 원인잔디가 누락되는 원인으로는 여러가지가 있겠지만, 나같은 경우는 제일 흔하게 보이는 유형인 Github에 등록된 이메일 계정과 커밋할 때의 로컬 이메일 계정일 불일치해서 발생했던 문제였다.커밋이 잔디로 심어지기 위해서는 커밋에 포함된 유저 정보인 이메일이 Github에 연결되어 있어야 한다. Github에 등록되어 있는 이메일과 다르면 잔디로 심어지지 않는다.나는 개인 작업도 하고 재택도 했기 때문에 토이 프로젝트를 하는 동안 회사 계정으로 사용하는 이메일로 커밋해왔던 것.. 해결1. 로컬 유저 정보 수정우선 앞으로 커밋들은..
React - react_dom_client__WEBPACK_IMPORTED_MODULE_1__.render is not a function 원인과 해결 방법
·
나의 에러 일지
개요React 강의를 따라서 간단한 문구를 출력하는 컴포넌트를 만들고 실행했는데, 화면에 아무 내용도 노출되지 않았다.import React from 'react';import ReactDOM from 'react-dom/client';import './index.css';import reportWebVitals from './reportWebVitals';import Library from './chapter03/Library';ReactDOM.render( );reportWebVitals(); 콘솔을 확인해보니 아래와 같은 에러 문구가 출력되었다.react-dom/client 모듈을 제대로 import하지 못하고 있거나 render 메서드를 잘못 사용하고 있는 것이다.Uncaught Ty..
티스토리 - hELLO 스킨 '카테고리의 다른 글' 2중 노출 되는 문제 해결 방법
·
etc
개요여러 블로그를 돌고 돌아 티스토리에 정착하면서 hELLO 스킨을 처음부터 사용했다. (hELLO 스킨을 개발해주신 정상우님 감사합니다.)혹시 hELLO 스킨에 관심 있으신 분은 링크 타고 들어가보시길.어느 때처럼 잘 사용하다가 '카테고리의 다른 글' 항목이 2중으로 노출되고 있는걸 발견했다. 하나는 CSS도 적용되지 않은채로 노출되고 있었다.스킨을 확인해보니 최신 버전은 해당 이슈가 없는 것으로 보였다. 나처럼 예전 버전을 사용하고 있는 분들은 동일한 이슈가 있을 것으로 보인다. 해결 방안1 - 코드 직접 수정하기티스토리에는 스킨 편집으로 스킨의 html, css 코드를 입맛에 맞게 수정할 수 있다.나도 한 번도 해본적 없는 기능이지만 이번에 해보기로 했다. 1. 개발자 모드로 문제가 되는 항목의 h..
QA - Test Case를 통한 QA 테스트
·
etc
개요이번에 회사에서 진행하던 프로젝트가 마지막 단계에 왔다. 이제 배포를 하기 전에 QA를 진행해야 했다. 하지만 우리 조직에는 체계화 및 구조적으로 QA를 진행하는 문화가 없었다. 당연히 QA 조직도 없다. 그래서 직접 QA 테스트를 진행하기로 했다. 본 글에 내가 QA테스트를 작성했던 내용을 남겨둔다. 부족한 부분이나 잘못된 내용이 있다면 언제든 댓글을 남겨주세요! QA 테스트(Quality Assurance)라고 하면 제조업 분야에서 기계 성능을 테스트하는 QA를 생각할 수 있다. IT에서의 QA는 서비스 기획 단계부터 참여하여 개발, 테스트 그리고 출시까지의 모든 과정에서 잠재적인 품질 리스크를 프로젝트 참여자들과 공유하고 해당 서비스가 사용자의 요구사항에 충족하는지에 대한 관리하는 활동이라고 볼..
ibatis/Mybatis - 동적 쿼리에서 발생하는 java.sql.SQLException : 부적한 열 이름 오류 원인과 해결 방법
·
나의 에러 일지
개발 환경Java 8Spring 2.xMavenOracleMybatisIntelliJ 개요Mybatis, ibatis에서는 동적으로 쿼리를 작성할 수 있는 Dynamic Tag 기능을 제공한다.동적 쿼리란 조건에 따라 쿼리를 동적으로 생성하는 것을 말한다. 이를 통해 하나의 쿼리로 다양한 조건을 처리할 수 있다. SELECT * FROM users WHERE 1 = 1 AND name = #{name} AND age = #{age}  위 쿼리는 조건에 따라 아래와 같은 쿼리들을 생성할 수 있다.SELECT * FROM usersSELECT * FROM usersWHERE 1 = 1AND name = '김찬빈'SELECT * FROM users..
Mybatis - SAXParseException: The content of elements must consist of well-formed character data or markup 원인과 해결법
·
Java
개요Mybatis로 작성한 쿼리문에서 발생한 에러이다. 내용을 해석해보면 다음과 같다. SAXParseException : 내용은 올바른 형식의 문자 데이터 또는 마크업으로 구성되어야 합니다. 아래는 SAXParseException 에러가 발생한 쿼리 예시이다. 쿼리로서만 보면 문제 있어 보이지 않는다. 그럼 어떤게 문제였을까?SELECT NAMEFROM USERSGROUP BY NAMEHAVING SUM(CASE WHEN SEX = 'M' THEN 1 ELSE 0 END)  개발 환경Java 8Spring 2.xMavenOracleMybatisIntelliJ 원인우선 SAX를 알아보자 SAX는 "Simple API for XML"의 약자로 이벤트 기반 XML 파싱해주는 기능을 한다.SAXParseExc..
Linux - 새로운 환경에서 SSHPASS 접속 안될 때
·
OS
개요오랜만에 데스크탑을 새로 장만했다. 재택근무를 하기 위해서 다시 개발 환경을 세팅하는 과정에서 sshpass로 서버 접속이 되지 않았던 경험을 남겨본다. (진짜 별거 아닌 문제였다.) 문제 상황이전에 sshpass 접속 내용을 alias로 등록해서 간편하게 접속했었기 때문에 해당 내용을 그대로 지금 PC에도 등록했다. 그런데 sshpass를 실행해도 특별한 문구가 나오는 것도 아니고 아무 반응도 없었다.$ sshpass -p [비번] ssh [계정]@[주소]# 반응 없음.. 원인과 해결 방안ssh를 처음 접속하게 될 경우 새로운 호스트의 SSH 키를 확인하고, 이를 사용자의 known_hosts 파일에 저장한다. 아마 처음 ssh로 접속해봤다면 아래와 같은 내용을 본 적이 있을 것이다.$ ssh [계..
Cold Bean
'분류 전체보기' 카테고리의 글 목록 (3 Page)