전체 글
메이븐 인코딩 에러 해결하기
메이븐 인코딩 에러 해결 내 현재 인코딩 정보 보는 방법 mvn --version 명령어를 통해 볼 수 있다. $ mvn --version Apache Maven 3.8.1 (05c21c65bdfed0f71a2f2ada8b84da59348c4c5d) Maven home: C:\Users\jks\AppData\Local\JetBrains\Toolbox\apps\IDEA-U\ch-0\213.7172.25\plugins\maven\lib\maven3 Java version: 11.0.14.1, vendor: Amazon.com Inc., runtime: C:\Program Files\Java\jdk-11.0.12 Default locale: ko_KR, platform encoding: MS949 OS nam..
로컬 파일 메이븐 의존성 추가하기
로컬에 존재하는 jar 파일을 maven 으로 임포트하기 보통 로컬에 존재하는 jar 파일을 IDE 에서 아래와 같이 add external jars 도구를 이용하여 많이 사용한다. intellij 의 경우 Project Settings > Modules > Dependencies 에 있는 + 버튼을 클릭하면 위와 같이 추가가 가능하다. 이 방법으로도 외부에 존재하는 jar 파일을 불러올 수 있지만, 이렇게 하면 매번 intellij 의 빌드 메뉴를 이용해야 하기 때문에 maven 명령어를 이용한 자동화가 어렵다. 물론 가능할 수도 있는데, 어떻게 하는지 잘 모른다.. 그래서 maven 에서 직접 파일을 가져와주는 것이 maven 명령어를 사용하기 좋다. 의존성 주입하기 inipaysample inipa..
intellij mvnw 파일이 없을 때 메이븐 경로 잡기
스프링부트가 아닌 메이븐 프로젝트에서의 문제 스프링부트는 mvnw 라는 파일을 제공하여, 쉽게 메이븐 명령어를 이용할 수 있게 해준다. 그러나 스프링부트로 생성하지 않은 메이븐 프로젝트는 mvnw 파일을 제공하지 않는다. 이럴 때 메이븐 명령어를 사용할 수 있도록 만들고 싶다. intellij 를 기준으로 문제를 해결해보자. maven home 잡기 intellij 를 사용하면, maven 이 이미 설치되어 있다. intellij 를 사용하지 않는다면, maven 을 따로 설치하여 그곳을 시스템 환경변수 PATH 에 추가하면 된다. intellij 를 실행하면 나오는 우측 메뉴에서 라이프사이클 중 아무거나 실행하면, 로그에 메이븐 위치가 나온다. 여기서 -Dmaven.home=... 에 나오는 부분이 메..
npm 의 문제를 해결하려 나온 pnpm 은 어떻게 npm의 문제를 해결하는가? pnpm 이란?
pnpm 이란? 기존의 npm 과 yarn 의 비효율을 개선한 노드 패키지 매니저이다. 기존 노드 패키지 매니저의 문제 npm 으로 여러 프로젝트를 관리하다보면, 여러 프로젝트에서 모두 같은 의존성을 사용하는 경우가 있다. 이를테면 react 프로젝트 100개가 로컬에 있을 수 있다. 이 때, 기존의 npm 이나 yarn 으로 프로젝트를 관리하는 경우에는 100개의 프로젝트 내부의 node_modules 디렉토리에 각각 리액트 라이브러리를 모두 설치한다. 결과적으로 로컬 하드 디스크에는 실질적으로 똑같은 파일이 100 copy 가 설치되는 것이다. 문제 해결 pnpm 은 content addressable file store 라는 것을 이용해 문제를 해결한다. 단순하게 파일 이름으로 해당 파일을 접근하는..
도커 실무 - Mariadb 를 사용하는 스프링부트 프로젝트 배포해보기
개요 자바 스프링부트 프로젝트와 MariaDB 를 이용한 앱을 도커 가상환경을 이용하여 배포하는 과정을 통해 실무에서 도커를 어떻게 이용하는지 알아보자. 스프링부트 프로젝트는 로컬 환경에 작성이 완료되어 있다고 가정한다. 도커 이미지 세팅하기 이미지란? 특정한 세팅이 된 가상 OS 라고 생각하면 된다. 이를테면 jdk 와 mariadb 가 설치된 리눅스 OS 를 이미지로 올릴 수 있다고 생각하면 된다. 물론 아무것도 안깔린 그냥 OS 도 이미지가 될 수 있다. 우리가 필요한 이미지는 무엇일까? 이 실습에서 우리가 작성한 스프링부트 프로젝트를 실행하기 위해 2가지 이미지가 필요하다. java 11 버전 기준으로 작성된 프로젝트를 실행하기 위해 jdk 11 이 설치된 리눅스 mariadb 가 설치된 리눅스 ..
6월 1주차 회고
토이 프로젝트 회고 토이 프로젝트를 진행하며 프로토타이핑 UI 를 그렸다. 프로토타이핑을 하는데는 피그마를 사용했다. 프로젝트에 작성한 엔티티 중 Meetup 의 이름을 StudyGroup 로 리팩토링하게 되었다. UI 프로토타이핑을 하며 깨달은 점 어떤 기능을 만들 것이라고 글자로 생각하기보다 그림을 그리는 것이 훨씬 효율적이라는 것을 깨달았다. 그림을 그리면 자연스레 어떤 추가적인 화면이 필요할지에 대한 생각이 여러 앱을 사용했던 경험적에 기반하여 생각이 난다. 글자만으로 생각하는 것은 좋지 않다. 구체적인 그림을 그려보자. 그림을 그리면, 자연스럽게 유즈 케이스와 엔티티도 뽑혀 자연스러운 설계가 이루어지게 된다. 자연스럽게 상위 개념에서 하위 개념으로 자연스러운 설계가 가능하게 된다. TOP DOW..
git stash 명령어 설명과 예시 정리
git stash 란? 진행중인 작업을 잠시 stash 라는 저장소에 저장해놓는 명령어이다. 사용 예시 이를테면, feature/order-cancel 이라는 브랜치를 만들어서 주문 취소 기능을 작업 하던 중 기존 주문 기능에서 에러가 났다고 했을 때, fix/order 로 브랜치를 옮기려면 지금까지 진행한 작업을 commit 해야 한다. 여기서 불완전한 커밋을 하지 않고 커밋 목록을 깔끔하게 관리하고 싶다면 stash 로 잠시 작업을 저장하고 브랜치를 옮겨갈 수 있다. 먼저 커밋하고 추후에 git squash 로 합쳐도 된다. git squash 를 통해 잠시 저장할 수 있는 파일 modified && trakced 상태인 파일 git 시스템을 통해 관리되는 파일 중 수정된 파일을 의미한다. stage..
tty 란 무엇인가?
개요 tty 는 리눅스에서 제공하는 다양한 프로그램의 매뉴얼에서 자주 등장하는 단어이다. tty 란 유닉스나 유닉스와 같은 운영체제에서 standard input 에 연결된 터미널의 파일 이름을 출력하기 위한 명령어이다. tty 는 TeleTYpewriter 에서 온 약자이다. 역사적 배경 예전엔 전신이나 전화선을 사용하여 장거리에서 타이핑된 메세지를 주고 받았다. 컴퓨터가 개발되며, 사용자가 초기 컴퓨터와 상호작용할 수 있도록 개조됨. 사용자가 명령을 입력하면 컴퓨터가 응답하여 종이에 출력물을 다시 인쇄했음. 현재의 의미 터미널 혹은 콘솔에서 텍스트 입력/출력 환경을 가리키게 됨 용례 tty 는 보통 출력 수단이 터미널인지 확인하기 위해서 사용된다. tty 명령어는 standard input 에 연결된..
도커 명령어의 run -it 옵션은 어떤 의미일까?
도커를 사용하다 생긴 궁금증 도커를 공부하다가 docker run -it ubuntu /bin/bash 명령어를 보게 되었다. 여기서 -it 라는 옵션에 대해서 궁금해서 무엇인지 찾아보았는데, -i 는 -interactive 의 의미로 터미널을 통해 도커와 상호작용하겠다는 의미였다. 그렇다면, -t 는 무엇일까 했는데, -tty 로 설명에는 Allocate a pseudo-tty 라고 적혀있었다. 스택 오버플로 답변 1 스택 오버플로의 친절한 답변에서 답을 찾을 수 있었다. -t 옵션은 Unix/Linux 가 어떻게 터미널에 접근하는지에 대한 것이다. 과거에는 터미널이 물리적인 선으로 연결되어(hard line connection) 있었다. 그리고 이후엔 모뎀을 기반으로 한 연결이 되었다. 이 때는 물리..
리눅스의 파이프라인 명령(|)과 용례에 대해서 알아보자
| 파이프라인 (pipeline command) 커멘드 두 개의 프로세스를 연결해주는 통로를 의미한다. A 라는 명령어의 실행 결과를 그대로 B 라는 명령어의 인수로 옮기고 싶을 때 유용하다. 자주 쓰이는 용례 1: 원하는 파일 혹은 디렉토리 찾기 리눅스에서 ls 명령어를 입력하면, 내가 위치한 디렉토리에 있는 모든 디렉토리와 파일의 목록이 나온다. 이 때, 내가 원하는 파일 혹은 디렉토리가 있는지 확인하려면 목록의 이름을 일일이 확인할 필요 없이 다음과 같은 명령어로 가능하다. ls | grep spring 위와 같이 입력하면, ls 의 결과 값 중 spring 이라는 글자가 포함된 라인만 출력된다. 자주 쓰이는 용례 2: 서버 로그 보기 리눅스 환경에서 서버의 로그를 볼 때, tail -f log.l..
도커 자주 쓰이는 명령어 정리 (Docker Cheat Sheet)
도커에서 자주 쓰는 명령어 (Docker Cheat Sheet) Build: 빌드 관련 명령어 docker build -t image:1.0: 현재 디렉토리의 Dockerfile 로부터 이미지를 빌드하고, 이미지를 태그한다. docker image ls: 도커 엔진을 통해 로컬에 설치된 모든 이미지 리스트를 보여준다. docker image rm image:1.0: 로컬 이미지 저장소에서 이미지를 삭제한다. Share: 이미지를 저장하거나 불러오는 명령어 docker pull image:1.0: 레지스트리에서 이미지를 불러온다. docker tag image:1.0 repo/image:2.0: 로컬 이미지를 새로운 이미지 이름과 태그로 다시 태그한다. docker push repo/image:2.0: 이..
5월 4주차 주간회고
이직 회고: 먼저 접근하기 이전의 나는 당연히 회사에 지원할 때는 내가 을이며, 정상적인 루트를 통해서만 입사를 해야한다고 생각했다. 그러나 요즘 트렌드는 가벼운 콜드메일로 커피챗을 요청하는 방식이 많다. 다음 이직 때는 무작정 채용공고가 나온 회사에 지원하지 말고, 내가 정말 하고 싶은 일을 하는 회사에 내 가치를 올릴 수 있는 회사에 콜드메일을 보내서 일해볼 계획이다. 학습 회고: 여유가 있을 때 할 수 있는 만큼 성경에는 물고기가 너무나 많이 잡혔지만, 그물이 약해서 결국 1마리도 제대로 가져가지 못하는 베드로 이야기가 나온다. 실제로 이러한 경우는 이제 막 학습을 시작하는 사람들에게 많이 나타나는 것 같다. 내 용량을 계속 생각하며 내가 어느정도의 시간을 투자할 수 있는지 늘 생각하자. 스터디를 ..