분류 전체보기 388

[인프콘] INFCON 2022 을 기다리며

https://infcon.day/ 벌써 일년 2021년 8월 4일에 개발자로서 첫 직장에 출근을 시작했으니 내일이면 드디어 만 1년차 개발자가 됩니다. 1년동안 근무하며 참 많은 일이 있었지만 지금까지도 최대 관심사 중 하나는 개발자로서의 성장 입니다. 회사에서 맡고 있는 프로젝트에 진심으로 임하고, 기능 하나를 추가하더라도 너무 오버스펙으로 넣는거 아니냐는 소리를 들을 정도로 항상 사용자분들을 생각하며 최선을 다하고는 있지만 영양소의 섭취가 그러하듯 주어진 일 만 해서는 금새 성장에 정체기가 올거라고 생각했습니다. 정말 감사하게도 재직중인 회사에서는, 따로 진행하는 자체 교육 프로그램은 없지만 구성원들의 성장을 적극 장려하기 위해 인프런을 통한 교육을 지원 하고 있습니다. 그 덕에 관심있는 강의를 큰..

Development/DevLife 2022.08.02

[MacOS] M1 맥북 도커로 ORACLE DB 실행하기

Intro M1 맥북을 구입 한 이후로 약 1년 반동안, 오라클 데이터베이스를 띄우기 위해 참 많은 노력을 했습니다. 많은 고민과 시도 끝에 결국 오라클 클라우드에 DB를 띄워놓고 사용하는 방법 으로 해결을 해 왔는데요, 난이도가 높은건 둘째 치더라도 인터넷이 안되는 환경에서는 이용할 수 없었습니다. 인터넷이 안되면 사실 개발을 못하는게 맞지않나..?! 하지만 이제는 더이상 그럴 필요가 없어졌습니다. 오픈 소스 컨테이너 런타임인 Colima를 사용해 oci-oracle-xe 이미지를 x86/64 환경으로 띄운다면 M1 맥북에서 오라클 데이터베이스를 로컬에서도 띄울 수 있습니다. 아래의 내용을 차근 차근 진행해주시면 마침내 localhost:1521 를 얻으실거에요. 설치 colima 설치 Colima는 ..

IT Computer/Mac 2022.08.02

MacOS 에서 Windows11 설치 USB 만들기

Intro 집에 새로운 노트북이 생겼습니다. 사실 저랑 와이프는 둘다 맥북을 사용하고 있고, 회사에서는 리눅스 (우분투) 환경에서 개발을 하고 있다 보니, 일년에 한번정도 있을 법한 아주 가끔씩 윈도우가 필요할 때는 제법 곤란한 상황에 놓이곤 했습니다. 예전에는 집에 남던 노트북 하나가 있었지만, 약 1년 전부터 우분투 서버를 설치해두고 홈 서버로 운영을 하고있다보니 어쩌다 저희 집은 Windows Free Zone 이 되어 있었습니다. 새로 생긴 노트북에 또 우분투를 올려서 서브 컴퓨터로 쓸지, 우분투 서버를 올려서 여분의 서버로 쓸지 고민했는데 그러기에는 새로 온 컴퓨터의 성능이 너무 좋기 때문에 일단 윈도우를 올려 사용 해 보기로 했습니다. 예전에는 항상 윈도우 설치하는 USB도 필통에 넣고 다녔었..

IT Computer/Mac 2022.07.27

Netdata 를 활용한 시스템 모니터링

Intro https://github.com/netdata/netdata Netdata는 특별한 설정이 필요 없이 실시간 분산 모니터링을 제공해주는 오픈소스 모니터링 도구 입니다. 시스템, 하드웨어, 컨테이너, 어플리케이션들로부터 수천개의 데이터를 실시간으로 수집하며 물리/ 가상 서버 및 컨테이너, 클라우드 환경, IOT 장비등 에서 영구적으로 동작 합니다. 대부분의 Linux 배포판 뿐만 아니라 Kubernetes나 Docker 등의 컨테이너 플랫폼 및 MacOS 등에서도 sudo 권한 없이 설치 할 수 있습니다. Netdata는 아래와 같은 특징들을 가지고 있습니다. 설정이 필요없음 관리가 필요없음 최소한의 Disk I/O 및 메모리 사용. 싱글코어 1% 만의 CPU 점유 빠르고 인터렉티브 한 시각화..

Development/DevOps 2022.07.27

[POSTGRES] 전체 테이블, 컬럼 정보 조회

Intro 여러가지 산출물 작업을 해야 하는데, 데이터베이스에 대한 내용들은 이미 워낙 방대하기 때문에 도저히 손으로 작업 할 엄두가 나지 않았습니다. 필요에 의해 쿼리를 작성 했으나 추후 또 필요할 경우가 생겼을 때 시간을 절약 하기 위해, 또한 비슷한 고민을 하고 있는 분들에게 도움이 되었으면 하는 마음에 글로 작성해 남겨두려 합니다. SQL 제가 산출물 작업 하면서 필요한 내용들 위주로 쿼리를 작성 하였기 때문에 필요한 자료가 조금씩 다를 경우에는 일단 실행 해본 후에 쿼리를 약간씩 수정해서 사용 하시면 됩니다. 전체 테이블 주석과 실제 테이블명 조회 테이블에 주석을 달아놓지 않았다면 NULL로 표기됩니다. 평소에 주석을 꼭 달아두어야 나중에 서류 작업 할 때 편합니다. 예시를 들기 위해 엉뚱한 D..

Data/PostgreSQL 2022.07.26

[Java] Optional 올바르게 사용하기

Intro 자바가 8버전으로 넘어오며 추가된 기능들이 굉장히 많이 있습니다. 보통 가장 먼저 언급되는 Lamdba와 Stream API 뿐만 아니라 조금의 차이는 있지만 Joda-Time을 그대로 가져온듯한 날짜와 시간 API, 인터페이스에 추가된 Default 메서드와 static 메서드 등 지금까지 이 기능들 없이 어떻게 코드를 짰을까 싶은 요소들이 굉장히 많습니다. 그중에서도 둘째로 치면 서러워 할 클래스가 있으니 바로 Optional 입니다. Optional java.util.Optional.java 자바 아키텍트인 Brian Goetz는 결과 값이 없음을 명확하게 표현 하려는 의도로 Optional을 추가했다고 합니다. 자바8 이전까지는 null이 그 역할을 해 왔지만, null을 사용할 경우에..

Programming/Java 2022.07.21

[Java] switch 문이 if-else 보다 효율적인 이유

Intro 코드를 작성하다 보면 switch 문으로 작성할지, 혹은 if-else 를 사용할 지 고민될때가 자주 있습니다. 개인적으로는 보통 elseif 가 두개이상 붙게되는 시점부터는 보통 코드의 가독성이나 문맥에 따라 switch 문을 사용 하려 하고 있습니다. if.java void function(String args) { if ("a".equals(args)) { // A logic } else if ("b".equals(args)) { // B logic } else { // C logic } } switch.java void function(String args) { switch (args) { case "a": // A logic break; case "b": // B logic break..

Programming/Java 2022.07.09

[JAVA] zxing 활용해 QR코드 생성하기

Intro COVID 19 이후로 정말 많은것이 달라졌습니다. 하나하나 나열하기도 힘든 만큼 일상 생활 속에서 달라진 것 들이 많지만 그 중 하나의 기술을 뽑자면 QR 코드가 아닐까 싶습니다. 아주 오래전부터 있었지만 별다른 주목을 받지 못했고 그렇게 잊혀지는가 했는데 코로나로 인한 방문 기록, 전자문진표 등 조금씩 많이 쓰이는가 싶더니 카카오페이를 비롯한 여러가지 간편결제 서비스가 많아지면서 없어서는 안 될 기술이 되었습니다. 어플리케이션을 만들 때에도 곳곳에 QR코드를 활용 할 일이 많아졌는데요, QR코드 생성 한다면 크게 두가지 방법이 있습니다. 구글의 QR Codes API 에 요청 QR 코드를 작성하는 OpenSource를 활용해 로컬에서 생성 얼핏 보면 외부 API를 활용 하는게 간단해 보이는..

Programming/Java 2022.06.30

[JPA] No Dialect mapping for JDBC type: 1111

Intro JPA 사용 중 native 쿼리를 사용해야 할 일이 있어 nativeQuery = true 옵션을 걸고 쿼리를 작성 했습니다. 그런데 생소한 에러메시지가 나오며 UUID의 맵핑이 제대로 이루어지지 않았습니다. org.hibernate.MappingException: No Dialect mapping for JDBC type: 1111 원인 https://github.com/spring-projects/spring-data-jpa/issues/1796 이미 오래전부터 알려져있었지만 고치지 않기로 결정 된 Hibernate 이슈 라고 합니다. Hibernate 구현체에서는 addScalar를 활용 하길 추천하지만 특정 구현체에 의존하지 않고 Spring Data JPA 를 이용할 경우에는 cas..

[Git] lightweight 태그와 annotated Tags

Intro 진행중인 프로젝트의 본격적인 버전 관리에 앞서 해당 스프링부트 어플리케이션에서 git 정보를 토대로 최근 커밋 해시값, 날짜, 버전(태그명) 등을 불러 올 수 있게끔 기능을 추가 해 두었습니다. 그런데 아무리 새로운 태그를 달아 주어도 이전의 태그명이 나오는 문제가 있었고 약간의 검색을 통해 그 차이가 lightweight 와 annotated 때문이었다는걸 알게 되었습니다. 분명 describe --tags 를 입력 할 때는 4.2 버전이 나오지만 git describe 만 입력 했을때는 가장 가까운 3.2 버전으로부터 128 번째 커밋이라는 정보가 나왔습니다. describe 명령은 커밋에서 도달 할 수 있는 가장 최근의 태그를 찾는데요, 태그가 커밋을 가리키는 경우에는 태그만 표시되지만,..

Development/Git 2022.06.27

[Ubuntu 20.04] 우분투 서버에 Plex 미디어 스트리밍 서버 구축기

Intro 집에서 와이프가 넷플릭스로 드라마를 보다가 스트리밍 서비스에 올라와있지 않은 영상은 애플티비로 볼 수 없는지 투덜대었습니다. 집에 남는 노트북에 우분투 서버를 올려 개인 서버 역할을 한지 어느덧 1년이 넘어가고 있는데, 그걸 이용하면 될 것 같아서 일단 된다고 대답을 했습니다. 그리하여 시작된 Plex 미디어 스트리밍 서버 구축기를 시작 해 보겠습니다. PLEX 설치 패키지 업그레이드 일단 시작에 앞서 모든 패키지를 업그레이드 해 줍니다. sudo apt update && sudo apt upgrade -y Plex 공식 저장소 등록 https://support.plex.tv/articles/235974187-enable-repository-updating-for-supported-linux-..

IT Computer/Linux 2022.06.25

[Spring Boot] git 정보 확인하는 endpoint 작성하기

Intro 서버에 현재 배포되어 있는 어플리케이션의 버전 정보를 표시 할 수 있는 방법이 있을까 고민을 해 보았습니다. 하나의 프로젝트가 여러개의 서버에서 각기 다르게 서비스 되고 있다 보니 해당 정보를 관리자 페이지에서 확인 할 수 있게끔 하면 좋겠다는 생각이 들었는데요. 방법이 있었습니다. git-commit-id-plugin 이라는 메이븐 플러그인을 활용하면 어렵지 않게 구현 할 수 있습니다. 아래는 Spring Boot 공식 매뉴얼에 작성된 관련 내용 입니다. https://docs.spring.io/spring-boot/docs/2.1.7.RELEASE/reference/html/howto-build.html#howto-git-info 설정 Maven Dependencies pom.xml org..

[Maven 에러] java.lang.IllegalStateException: Unable to load cache item

문제 Linux 운영체제에 maven 을 설치 하고, mvn 명령어를 실행 하던 중 아래와 같이 오류가 발생 했습니다. [ERROR] Error executing Maven. [ERROR] java.lang.IllegalStateException: Unable to load cache item [ERROR] Caused by: Unable to load cache item [ERROR] Caused by: Could not initialize class com.google.inject.internal.cglib.core.$MethodWrapper원인 사용중인 메이븐 버전이 설치되어있는 JDK 의 버전을 지원하지 않기 때문에 발생한 문제 입니다. 해결 최신버전의 메이븐을 설치해서 문제를 해결 할 수 있습니..

SCP 사용중 Permission denied 대처법

Intro 모두 알고 계시는 것 처럼 리눅스에서 scp 명령어를 사용하면 손쉽게 remote 저장소에 있는 파일을 로컬에 copy 해 올 수 있습니다. 그런데 대부분의 상황에서 문제 없이 작동하는 이 기능에서도 어쩔 수 없이 Permission denied 에러를 뿜으며 안될 때가 있습니다. scp: Documents/root_file: Permission denied 이때의 대처법을 나누어 보려고 합니다. 원인 원인은 방금의 SCP 접근이 해당 파일에 대한 접근 권한을 가지고 있지 않기 때문입니다. sudo 권한을 가지고 있는 유저라고 하더라도 ssh 로 접속해서 sudo 명령어로 해당 파일에 접근하는건 가능 하지만, scp로 한번에 빼오는건 불가능 합니다. 해결 상황은 매우 당황스럽지만 어렵지 않은 ..

Docker ERROR: the image for the service you’re trying to recreate has been removed

Intro 단순히 도커 이미지를 Puling 하는 과정에서 무시무시한 에러가 발생 했습니다. docker pull browserless/chrome ERROR: The image for the service you're trying to recreate has been removed. If you continue, volume data could be lost. Consider backing up your data before continuing.에러 문구를 읽어보면.. 다시 생성하려고 하는 이미지가 삭제 되었기 때문에, 계속 진행 하게 되면 볼륨 데이터가 삭제 될 수 있다라고 합니다. 이정도 경고면 섣불리 엔터 치기 힘들죠.. 그러면서 계속 하기 전에 데이터를 백업 하라더니, 계속 진행 할 건지..