import org.apache.commons.codec.DecoderException;
import org.apache.commons.codec.binary.Hex;
public class Test {
public static void main(String[] args) {
String hexString = "123 abc [0xea][0xb0][0x80][0xeb][0x82][0x98] [0xeb][0x8b][0xa4][0xeb][0x9d][0xbc]";
do {
hexString = hexToString(hexString); // output : 123 abc 가나 다라
} while (hexString.indexOf("[0x") > -1);
System.out.println("en : " + hexString);
}
private static String hexToString(String s) {
try {
int idx = s.indexOf("[0x");
if (idx > -1) {
String t = s.substring(idx, idx + 18);
String c = new String(Hex.decodeHex(t.replaceAll("\\[0x", "").replaceAll("\\]", "").toCharArray()));
s = s.replace(t, c);
}
} catch (DecoderException e) {
throw new RuntimeException(e);
}
return s;
}
}
분류 전체보기
- [java] 헥사 16진수 문자열 변환(hexadecimal) 2022.05.10
- [docker] podman sonatype nexus 2 설치 2022.04.21
- [GNOME] 사용중인 extensions 리스트 2022.04.19
- [GIT] dev 브랜치에 master 업데이트 후 dev commit 합쳐 master 반영하기 - 2021.12.11
- [java/tls] HttpClient, UrlConnection 사용 시 javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX... 2021.10.04
- [jenkins] slave agent install 실패 - Launch failed - cleaning up connection 2020.11.25
- [podman] Permission denied 2020.11.25
- [shell] Tomcat 버전 체크 2020.07.17
- Linux Mint(ubuntu) sh 아이콘 만들기 2020.03.11
- [Fedora] Linux GNOME, Cinnamon, KDE Plasma 단축키 IntelliJ IDEA 충돌 조정 2020.02.15
[java] 헥사 16진수 문자열 변환(hexadecimal)
2022. 5. 10. 15:13
[docker] podman sonatype nexus 2 설치
2022. 4. 21. 10:51
groupadd -g 200 nexus
useradd -g 200 -u 200 nexus
yum install -y podman java-1.8.0-openjdk-devel.x86_64
mkdir /data/nexus2-data
podman load -i docker_image_nexus_2.15.1-02.tar
podman run -d -p 8088:8081 --name nexus2 -v /data/nexus2-data:/sonatype-work --privileged=true registry.hub.docker.com/sonatype/nexus:2.15.1-02
podman logs -f $(podman ps -a -q -f name=nexus2)
#podman rm --force $(podman ps -a -q -f name=nexus2)
mkdir /root/.m2
cat << EOF > /root/.m2/settings.xml
<settings>
<mirrors>
<mirror>
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<url>http://localhost:8088/nexus/content/groups/public</url>
</mirror>
</mirrors>
</settings>
EOF
[GNOME] 사용중인 extensions 리스트
2022. 4. 19. 10:00
https://extensions.gnome.org/#
- Dash to Panel
- 실행한 창이 하단 TaskBar 에 표시
- 빠른 단축 아이콘 설정
- 설치 에러 시 42.46 버전 설치(Fedora 37 에서..)
- GSConnect
- AATWS(Advanced Alt+Tab Window Switcher)
- 듀멀 모니터일때 개별적으로 동작
- Dash to Dock - Dash to Panel과 유사 하지만 맥 같은 스타일
- Window List
- 실행한 창이 하단 TaskBar 에 표시(Dash To Panel 사용하기 전에 사용 했었음)
- Launch new instance
- 실행 아이콘을 클랙 했을때 새로운 창이 열림(예로 브라우저 클릭 시 이미 실행 되어 있을때도 빈 창이 열림)
- Applications Menu
- 메뉴에 프로그램 드롭다운 버튼 생김
- Places Status Indicator
- 메뉴에 탐색기의 기본 메뉴 처럼 드롭다운 버튼 생김
- Extenstion List
- 메뉴에 확장 드롭다운 버튼 생김
- Allow Locked Remote Desktop
- 화면 잠금 시에도 원격 RDP 접속 허용
[GIT] dev 브랜치에 master 업데이트 후 dev commit 합쳐 master 반영하기 -
2021. 12. 11. 13:38
IntellJ 를 이용하기
- Rebase Current onto Selected
- Merge into Selected
- Rebase --interactive (fixup)
시나리오
- 개인 개발 브랜치에서 커밋 내용에 신경 쓰지 않고 저장을 목적으로 커밋한다.
- master 브랜치에 다른 사람들이 반영 내용이 주기적으로 반영된다.
- 개인 개발 브랜치에 master 에 반영된 내용도 함께 업데이트되어 테스트 해야 한다.
시나리오 예
타임라인 순
- 00:00 master 반영 v1
- 01:00 master dev 브랜치 checkout
- 01:10 dev 쓰기 기능 커밋
- 01:20 dev 쓰기 기능 이래저래 막 커밋1
- 02:00 master 반영 v2
- 03:10 dev 쓰기 기능 이래저래 막 커밋2
- 03:20 dev 쓰기 기능 이래저래 막 커밋3
- 04:00 master 내용 dev 브랜치에 반영 ("20:00 master 반영 v2" 내용이 rebase 01:00 시점 이후에 들어옴)
dev 브랜치에서 "Rebase Current onto Selected"
- 04:10 dev 쓰기 기능 이래저래 막 커밋4
- 04:20 dev 쓰기 기능 이래저래 막 커밋5
05:00 dev 쓰기 기능 1~5번 커밋 내용 합쳐 master 에 머지하기
Master 브랜치로 이동
[java/tls] HttpClient, UrlConnection 사용 시 javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX...
2021. 10. 4. 17:52
방법
- HttpClient 등 모듈에서 유효한 인증서를 체크하는 로직을 예외 시키는 방법
- certificate 인증서를 저장하여 호출하는 서버의 keystore 에 등록해주는 방법
방법 1에 대한 방법
## HttpClient 4.x
SSLContextBuilder builder = new SSLContextBuilder();
builder.loadTrustMaterial(null, (certificate, authType) -> true);
SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(
builder.build(),
NoopHostnameVerifier.INSTANCE);
httpClientBuilder.setSSLSocketFactory(sslsf);
방법 2에 대한 방법
- 크롬에서 아래와 같이 test1.cer 파일로 저장 (이름 무관)
- keytool -import -alias test1 -keystore $JAVA_HOME/lib/security/cacerts -file test1.cer -storepass changeit (alias 기존과 겹치지 않는 적당한 명칭, pass는 적당하게)
- 해당 파일만 가져와서 하드코딩으로 지정 할때
System.setProperty("javax.net.ssl.trustStore", "$JAVA_HOME/lib/security/cacerts");
- 해당 파일만 가져와서 하드코딩으로 지정 할때
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1946)
at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:316)
at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:310)
at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1639)
at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:223)
at sun.security.ssl.Handshaker.processLoop(Handshaker.java:1037)
at sun.security.ssl.Handshaker.process_record(Handshaker.java:965)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1064)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1367)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1395)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1379)
at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:559)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1564)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1492)
at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:480)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:347)
at UrlConTest.main(UrlConTest.java:15)
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:397)
at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:302)
at sun.security.validator.Validator.validate(Validator.java:262)
at sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:324)
at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:229)
at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:124)
at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1621)
... 14 more
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.provider.certpath.SunCertPathBuilder.build(SunCertPathBuilder.java:141)
at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:126)
at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:280)
at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:392)
... 20 more
[jenkins] slave agent install 실패 - Launch failed - cleaning up connection
2020. 11. 25. 19:36
인증 정상으로 됐으나 에러 날때 vi ~/.bashrc 에서 실행되는 항목 있는지 체크
우선 agent 설치 전에 주석
[] Launch failed - cleaning up connection
[] [SSH] Connection closed.
[podman] Permission denied
2020. 11. 25. 19:32
Centos 7
$ sudo podman run -it centos:7 /bin/bash
[root@c0f41f59555f /]# ls
ls: cannot open directory .: Permission denied
/etc/selinux/config
SELINUX=disabled 확인
[shell] Tomcat 버전 체크
2020. 7. 17. 13:08
function maxVersion {
FILE_FIND=$1
START_STR=$2
END_STR=$3
FILES=$(ls $FILE_FIND)
MAX_VERSION=-1
for FILE in $FILES ; do
FILE="$(basename -- $FILE)"
VERSION=`echo $FILE | grep -o -P "(?<=$START_STR).*(?=$END_STR)"`
if [ -n "$VERSION" ] ; then
IFS='.' read -ra arr <<< "$VERSION"
VERSION=${arr[2]}
if [ $VERSION -gt $MAX_VERSION ]; then
MAX_VERSION=$VERSION
fi
fi
done
echo $MAX_VERSION
}
CATALINA_HOME=/data/tomcat/apache-tomcat-9.0.7
PATCH_VERSION=$(maxVersion "/data/tomcat/apache-tomcat-*.zip" "tomcat-" ".zip")
echo "PATCH_VERSION: $PATCH_VERSION"
NOW_VERSION=`echo "$CATALINA_HOME" | grep -o -P '(?<=tomcat-).*(?=$)'`
IFS='.' read -ra arr <<< "$NOW_VERSION"
PATCHED_VERSION=${arr[2]}
echo "PATCHED_VERSION: $PATCHED_VERSION"
if [ $PATCH_VERSION -gt $PATCHED_VERSION ]; then
echo "패치 파일 있음. 현재: $NOW_VERSION, 패치 버전: $PATCH_VERSION"
fi
Linux Mint(ubuntu) sh 아이콘 만들기
2020. 3. 11. 09:59
vi /home/ddakker/.local/share/applications/idea.desktop
[Desktop Entry]
Version=1.0
Type=Application
Name=IntelliJ IDEA Ultimate Edition
Icon=/apps/idea-IU-193.6494.35/bin/idea.svg
Exec="/apps/idea-IU-193.6494.35/bin/idea.sh" %f
Comment=Capable and Ergonomic IDE for JVM
Categories=Development;IDE;
Terminal=false
StartupWMClass=jetbrains-idea
[Fedora] Linux GNOME, Cinnamon, KDE Plasma 단축키 IntelliJ IDEA 충돌 조정
2020. 2. 15. 00:29
키맵(단축키) 옵션은 Windows 로 설정했음
GNOME 40
[Konsole 설치]
dnf install konsole
단축키 - 복사 -> Ctrl + Insert 추가
[단축키] - 설정 > 키보드 > 바로가기 사용자 설정
창
창 옮기기 - Alt + F7 제거
현재 활동 보이기 - Disable (idea와 충돌)
창 전환 - Alt + Tab (프로그램 전환이 되어 있으면 동일 애플리케이션이 그룹핑됨)
-> AATWS(advanced alt tab window switcher) 함께 사용 - 듀얼 모니터
조종
모든 일반 창 감추가 - Super + D
창 전환 - Alt-Tab (안 하면 동일 프로그램 합쳐진 기능으로 됨)
오른쪽 작업 공간으로 옮기기 - Ctrl + Super + -> (idea 와 충돌)
왼쪽 작업 공간으로 옮기기 - Ctrl + Super + -< (idea 와 충돌)
에플리케이션 메뉴 열기 - Alt + F1
## 본인 계정에서 실행
gsettings set org.gnome.shell.extensions.apps-menu apps-menu-toggle-menu "[]"
설정 -> 다중작업 -> 구석 누르기(Hot Corner) -> OFF
## 명령어 실행 - IBus 기본설정
$ ibus-setup
에모지 -> 바로 가기 키
에모지 주석 - Ctrl + Shift + e 제거
유니코드 코드 값 - Ctrl + Shift + u 제거 (idea 대소문자 변경 충돌)
Cinnamon
[키보드 단축키 설정]
Alt + F1
설정 -> 키보드 -> 일반 -> 작업 공간 선택 화면 보기
재부팅 후 원복 된다면...
~/.config/plasma-org.kde.plasma.desktop-appletsrc
Alt + F1 부분 주석
Ctrl + Alt + <-
설정 -> 키보드 -> 작업 공간 -> 왼쪽 작업 공간으로 이동
Ctrl + Alt + ->
설정 -> 키보드 -> 작업 공간 -> 오른쪽 작업 공간으로 이동
Ctrl + Alt + T
설정 -> 키보드 -> 런처 -> 터미널 실행
[창]
Alt + Mouse Drag
설정 -> 창 -> 동작 -> 창을 이동할 때 사용할 특수 키
Alt + F7
설정 -> 창 -> 위치 -> 창 이동
[한글 설정(IBUS)]
Ctrl + Shift + U
Emoji -> Unicode code point
[터미널]
Copy, Past 단축키 변경
기본 Ctl + Shift C, V 라서 일반적은 Ctl + Insert, Shift + Insert 로 변경
KDE Plasma
1. 터미널 konsole 복사/붙여넣기
konsole - 키보드 단축키 설정
복사 - 대체키에 Ctrl + Ins
2. 터미널 열기 - konsole
Ctrl + Alt + t
단축키 - 전역 단축키 - 시스템 설정 - Launch Konsole
3. 잠금
Ctrl + Alt + l
단축키 - 전역 단축키 - ksmserver - 세션 잠금
4. 메뉴 열기
Alt + F1
단축키 - 전역 단축키 - Plasma - 프로그램 위젯 활성화하기
Plasma 6: 단축키 -> plasmashell -> Activate Application Launcher
5. Alt + Mouse Drag
창관리 - 창 동작 - 창 내부,제목 표시줄 및 프레임 동작 - 수정자 키(D): Alt - 왼쪽 클릭(E):
아무것도 하지 않음
6. Ctrl + F9
단축키 - 전역 단축키 - KWin - 보이는 창 바꾸기(현재 데스크톱)
KDE Plasma 6 한글 전환 이슈
오른쪽 Alt 키 누르면 프로그램 파일 메뉴 열리는 이슈
시스템 설정 -> 키보드 -> 오른쪽 위 Key Bindings -> Configure keyboard options -> 한국어 한/영,한자 키 -> 오른쪽 Alt 키를 한/영 키로 만들기 체크