목록DEV&OPS (278)
삶 가운데 남긴 기록 AACII.TISTORY.COM
세상에는 여러 시스템이 있고 한글 인코딩 방식은 많습니다. 개발자에게 한글 인코딩 문제는 생각보다 자주 마주치는 문제입니다. 자바 애플리케이션이 실행되는 런타임 환경에서 인코딩을 지정할 수 있는 옵션이 있었으니... 바로 -Dfile.encoding=utf-8 되시겠습니다. 애플리케이션 실행 시 아래와 같이 옵션을 추가해주시면 자바 런타임 인코딩 방식이 지정됩니다. java -Dfile.encoding -jar example.jar args0, args1, ... WAS인 tomcat도 실행시 자바 런타임에서 실행되기 때문에 tomcat의 start 스크립트에도 인코딩 옵션을 추가할 수 있습니다. 운영체제 기본 인코딩과 무관하게 JVM을 통해 실행시 옵션으로 인코딩을 지정하기 때문에 편리합니다. 다음은 ..
이번에는 재귀 호출을 이용하여 특정 폴더의 내용을 모두 삭제하는 예제를 구현해봤습니다. import java.io.File; public class DeleteDirectoryExample { public static void main(String[] args) { String directoryPath = "C:/Temp"; // 윈도우 실행 기준 File directory = new File(directoryPath); // 디렉토리가 존재하면 삭제 수행 if (directory.exists()) { deleteDirectory(directory); System.out.println("디렉토리 및 하위 경로가 삭제되었습니다."); } else { System.out.println("디렉토리가 존재하지 ..
자바로 텍스트 파일을 생성해서 자장할 때 FileWriter(arg1, arg2) 메서드의 arg2 두번째 인수가 false냐 true냐에 따라 기존 파일을 overwrite할지 append 할지 결정 할 수있습니다. import java.io.FileWriter; import java.io.IOException; public class FileWriterExample { public static void main(String[] args) { // 파일 경로 및 파일명 설정(윈도우 기준) String filePath = "C:/예제 파일이름.txt"; try { // FileWriter 객체 생성 //두 번째 매개변수로 false를 전달하면 기존 파일이 있으면 내용을 덮어씀(overwrite) //tr..
날짜 및 시간을 지정한 형식 yyyyMMddHHmmss( 년도월일시분초)으로 출력하는 예제 입니다. import java.text.SimpleDateFormat; import java.util.Date; public class CurrentDateTimeExample { public static void main(String[] args) { // 현재 날짜 및 시간 가져오기 Date currentDate = new Date(); // 원하는 형식으로 날짜 및 시간 포맷팅 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss"); String formattedDateTime = dateFormat.format(currentDate); //..
자바에서 String을 치환할 때 보통 replace()와 replaceAll()을 사용합니다. 결론부터 말하자면 replaceAll()은 정규식이 올 수 있다는 것이 차이입니다. 일반적인 문자열을 치환할 때 속도가 빠른 replace() 사용하고 보다 복잡한 치환을 할 때는 정규식을 지원하는 replaceAll()을 사용합니다. 아래 예제에서 보면 replaceAll()은 . 이나 대괄호가 있으면 정규식으로 인식하여 replace()와 다른 결과가 나온다는 것을 알 수 있습니다. package test; public class ReplaceTest { public static void main(String[] args) { String sampleText = "co.kr//123-abcd//[/]-aa..
한글(UTF-8)설정 인텔리제이 설치 폴더\bin\idea64.exe.vmoptions 해당 파일의 마지막 줄에 아래와 같이 추가 합니다. -Dfile.encoding=UTF-8 프로젝트 SDK(JDK) 설정 인텔리제이 File > Project Structure 메뉴 Project Settings > Project 항목의 Project SDK 항목에서 프로젝트에 맞는 JDK를 선택합니다. Project Settings > Project 항목의 Project language level도 맞는 JDK 버전을 선택합니다. Project Settings > Modules 항목의 Language level도 맞는 JDK 버전을 선택합니다. Gradle 빌드 환경 설정 인텔리제이 File > Settings > ..
https://www.postgresql.org/download/linux/redhat/ PostgreSQL: Linux downloads (Red Hat family) Linux downloads (Red Hat family) The Red Hat family of distributions includes: Red Hat Enterprise Linux Rocky Linux AlmaLinux CentOS (7 and 6 only) Fedora Oracle Linux and others. PostgreSQL is available on these platforms by default. However, each version www.postgresql.org 에 방문하면 자신의 환경에 맞는 설치 스크립트를 ..
1. host name 등록 sudo vi /etc/hosts ip와 호스트 네임 등록 후 저장합니다. 2. 라이센스 발급 Technet 효율적인 시스템 관리를 위한 기술 전문 포탈, 테크넷서비스 technet.tmaxsoft.com 티맥스 소프트 가입 후 로그인 데모라이선스 신청 버튼 클릭 JEUS Version 5fix#19 or Later 을 선택 후 제출하기 버튼 클릭 그러면 이메일로 라이센스 파일이 첨부되어 옵니다. 리눅스용 라이센스 license.dat 파일을 license 으로 파일명 변경 3. 설치파일 다운로드 https://technet.tmaxsoft.com/ko/front/download/findDownloadList.do?cmProductCode=0101 TmaxSoft Techni..
CATALINA_HOME과 CATALINA_BASE를 분리 Tomcat 하나에서 여러 web application 을 context root를 분리해서 구동시킬 수 있습니다. 그런데 $CATALINA_HOME과 $CATALINA_BASE를 분리해서 하나의 Tomcat으로 여러개의 인스턴스를 각각 다른 포트 번호로 구동할 수도 있습니다. 여러 인스턴스로 구동하게 되면 각각의 구동 환경을 분리해서 webapp을 구동시킬 수 있습니다. 이렇게 하면 tomcat을 업데이트 할 때 인스턴스는 그대로 두고 tomcat만 교체하면 되기 때문에 편리합니다. server.xml 파일 하나에 여러 호스트 정보를 등록해서 관리 할 수도 있는데 이런 경우 Tomcat 재구동시 모든 서비스들이 재시작되므로 추천하지 않습니다. ..
설치 가능한 JDK 확인 sudo yum list java*jdk-devel 설치 가능한 JDK 리스트가 출력됩니다. openjdk11 설치 sudo 나 root계정이 필요합니다. sudo yum install java-11-openjdk-devel.x86_64 JAVA_HOME 설정 .bashrc는 세션이 시작될 때 자동으로 환경 변수가 등록되며 .bash_profile 은 1회용 환경변수이므로 세션이 달라지면 사라집니다. 우선 jdk의 경로를 확인합니다. find / -name "javac" 2>/dev/null 여기서는 로그인한 계정의 홈 디렉토리에있는 .bashrc를 수정하도록 하겠습니다. vi ~/.bashrc 여기서의 JAVA_HOME 경로는 위에서 설치한 jdk의 경로를 지정해둡니다. 만약 ..
gitlab 설치 시에 기본 port가 8080 입니다. 그런데 8080은 흔히 WAS에서 사용하는 포트기 때문에 보통 gitlab의 포트를 8080 포트가 아닌 다른 포트로 변경해서 설치합니다. (external_url 설정으로...) 그런데 gitlab을 구동했을 때 8080 포트가 사용중인 경우가 있습니다. 깃랩 서비스가 시작된 후 사용 중인 포트를 조사해보면 sudo netstat -nltp puma가 8080 포트를 점유중인것을 알 수 있습니다. puma 구글에서 검색해보면 unicorn 설정이 많이 나오지만 gitlab 14.0 부터는 unicorn 의 지원을 제외한다고 합니다. 그런데 puma 가 8080 포트를 기본 값으로 사용하고 있어서 tomcat같은 was를 사용할 때 8080 포트가..
100 : 현재 데이터를 서버가 받은 상태 200 : 에러없는 정상 처리 204 : 정상처리되었지만 서버에서 응답 데이터가 없음 301 : 요청 페이지가 새 URL로 변경되었음 304 : 기존 데이터와 변경된 것이 없음 400 : Request에 문제가 있어서 서버가 인식 할 수 없음 403 : 서버에서 허락되지 않음 404 : URL에서 자원을 찾을 수 없음 406 : 전송 방식(method)가 허락되지 않음 500 : 서버 처리시 문제 발생 502 : 게이트웨이나 프록시 상태 문제(과부하) 503 : 일시적 과부하 혹은 서비스 중단 504 : 서비스가 타임 아웃 되어 처리되지 못함.
JDK 설치 오라클 사이트에서 JDK를 다운받아서 설치합니다. 여기서는 JDK11을 기준으로 합니다. 설치한 후에는 환경 변수에서 JAVA_HOME 을 등록하고 JDK가 설치된 경로를 지정해줍니다. 환경변수의 PATH에는 %JAVA_HOME%bin 으로 저장합니다. 설정이 완료된 뒤에는 명령프롬프트(cmd)에서 javac 명령어를 입력해서 컴파일러가 정상 실행되는지 확인합니다. 이클립스(STS, 전자정부프레임워크) 설정 Lombok 라이브러리의 안정성 때문에 이클립스를 JRE환경이 아닌 JDK환경에서 구동되도록 설정을 변경합니다. eclipse.ini(혹은 sts.ini) 파일의 상단에 아래와 같은 내용을 추가합니다. (윈도우 경로 기준) -vm JDK설치경로\bin\javaw.exe 이클립스 한글 인코..
MySQL 8 이상 MySQL 8은 기본 character set 과 collation 이 utf8mb4와 utf8mb4_0900_ai_ci 이므로 별도 utf8설정이 필요하지 않습니다. MySQL의 utf8은 3byte 문자 밖에 표시하지 못하므로 utf8mb4 즉, 4byte 인코딩을 사용할 것을 권장합니다. (MySQL 5.5.3 이상 필요) MySQL 5.7 MySQL 5.7 이하는 명시적으로 설정하지 않으면 latin1 이 기본 캐릭터 셋입니다. mysql 콘솔에 접속 후 mysql -u root -p status으로 server characterset 등을 확인할 수 있습니다. status; Charaterset 설정 CentOS 설정 파일: /etc/my.cnf Ubuntu 설정 파일: /e..
RAID(Redundant Array of Independent Disks) 여러개의 디스크를 하나의 디스크 처럼 사용하는 방식 Linear RAID 2개 이상의 디스크를 1개의 볼륨으로 사용합니다. 첫 번째 디스크부터 데이터를 저장한 후 꽉차면 두번째 디스크에 데이터를 저장하는 방식입니다. 그래서 각 디스크의 용량이 달라도 문제없이 사용할 수 있습니다. RAID 0 Linear RAID와는 다르게 데이터를 각 디스크에 분할하여 동시에 저장하는 방식입니다. 동시에 저장하기 때문에 저장 속도가 획기적으로 향상됩니다. 단점은, 여러개의 디스크 중에서 한개가 고장나면 모든 데이터를 잃어버린다는 점입니다. 그래서 속도는 빨라야하지만 잃어버려도 큰 문제가 없는 데이터를 저장할 때 적절한 방식입니다. RAID 1 ..