• [Git] alias

    git 의 명령어를 계속 사용하다 보면 다 치기 귀찮을 때가 있다. 이 때 alias 를 이용하여 git 명령어를 단축 명령어로 사용할 수 있다. 등록 방법은 2가지가 있다. git 명령어로 하는 방법 gitconfig 파일을 이용하는 방법 git log 명령어를 git l 로 실행하는 방법을 알아보자. 1. git 명령어로 하는 방법 git config --global alias.l log : 다른 프로젝트에서도 적용된다. git config --local alias.l log : 해당 프로젝트에서만 적용된다. 2. gitconfig 파일을 이용하는 방법 gitconfig 파일은 git 관련된 설정이 저장되어 있는 파일이다. 해당 파일은 2곳에 위치한다. .git/config : 해당 프로젝트 폴더의 ..

  • [Git] remote repository branch 가져와서 바로 local branch 만들기

    [Git] remote repository branch 가져와서 바로 local branch 만들기

    이런 상황이다. local 에서 remote 의 mybranch 를 가져오고 동시에 해당 branch 로 전환하고 싶다. 어떻게 하겠는가? git 명령어 2개면 할 수 있다. (현재 작업 중이던 내용이 없다고 할 때!) git 을 remote repository 와 함께 사용하다보면 local 의 branch 를 remote 에 올리는 일은 빈번하게 일어난다. 그런데 회사에서 저 branch 를 사용하고 싶다. 한 번에 할 수 있는 방법이 있다. git remote update 명령어를 통해 remote 의 branch 들을 local (회사) 에 동기화 한다. git branch -a 로 remote 의 branch 들도 확인할 수 있다. git switch -t origin/mybranch 명령어로 ..

  • slf4j가 Logger 구현체를 선택하는 방법(feat. Logger만들기)

    slf4j가 Logger 구현체를 선택하는 방법(feat. Logger만들기)

    아무도 궁금해하지 않겠지만, 눈팅으로 하는 웹 어플리케이션 서버 실습의 요구사항을 구현하면서 Logger를 사용하다보니 문득, slf4j의 Logger의 구현체는 어떻게 선택되는가 하는 의문이 들었다. (왜 항상 이런게 궁금한걸까...) 자바에서는 Logging을 slf4j의 인터페이스인 Logger를 이용하여 남기기를 권장한다. 그렇게 하면 좋은 점은 classpath에 Logger구현체가 존재하면 해당 구현체를 이용하여 로깅하고, classpath의 구현체(라이브러리. logback이나 log4j)를 바꾸더라도 프로덕트 코드에는 영향이 없게 된다. 즉, 자바의 추상화 기능을 잘 이용한 사례가 된다고 볼 수 있다. 그럼 한 번 알아보자. slf4j를 통해 Logger를 사용하는 방법은 slf4j의 Lo..

  • Tip. 자동으로 getLogger 코드 작성 당하기(feat. IntelliJ File and Code Templates)

    Tip. 자동으로 getLogger 코드 작성 당하기(feat. IntelliJ File and Code Templates)

    눈팅으로 하는 웹 어플리케이션 서버 실습을 하다 보니 귀찮은 점 하나가 생겼다. 그것은 바로 로그를 남기기 위해서 작성하는 Logger객체를 할당하는 코드였다. import org.slf4j.Logger; import org.slf4j.LoggerFactory; class A { private static final Logger logger = LoggerFactory.getLogger(A.class); } 로그 남기고 싶을 때마다 저 코드 치는게 왜 이렇게 귀찮은걸까… 누가 쳐줬으면 좋겠다 했다. 그래서 생각한게 '클래스가 생성될 때 알아서 저 코드가 작성되어주면 얼마나 좋을까?'였고, 찾은 것이 File and Code Templates 기능이다. File and Code Templates은 간단하게..

  • 자바 클래스 로드와 초기화(Loading and Initializing)

    어제 스터디를 하는데 같이 하시는 분이 질문을 주셨다. static 클래스에 관한 얘기였는데, 질문은 완전 다른 방향으로 흘러가서 당황했다. 우선 아래 문제를 풀어보자. 출력 결과를 예상할 수 있겠는가? class Main { public static void main(Strin[] args) { System.out.println(StaticTest.class); } } class StaticTest { public static String value = “init me!”; static { System.out.println(“init static!”); } } 출력 결과는 아무 것도 없다. (질문자와 나는 "init static!"이 출력 결과일 것이라고 생각하고 있었다. 지금 보면 너무 당연하지만, ..

  • 자바 static 초기화 순서

    자바에는 크게 클래스 변수와 인스턴스 변수가 존재한다. 클래스 변수는, 클래스 변수라는 이름답게 해당 클래스의 모든 객체들이 같은 값을 공유한다. (static키워드를 사용해서 static변수라고도 한다.) static 변수는 static 변수가 호출되거나, 해당 클래스가 인스턴스화 될 때, 초기화가 한 번 일어난다. 그리고 static 변수의 값을 초기화 하는 방법으로는 2가지가 있다. 1. 직접 값을 할당한다. 2. static 블록을 이용하여 값을 할당한다. 여기서는, 저 두 가지가 같이 사용되었을 경우에 우선순위가 어떻게 되는가에 대한 글이다. 문제를 풀어보자. public class Main { public static void main(String[] args) { System.out.prin..

  • 눈팅으로 하는 웹 어플리케이션 서버 실습

    눈팅으로 하는 웹 어플리케이션 서버 실습

    벌써 2022년도 반이 훨씬 지났고, 8월도 반이 넘어 갔다. 개발자로서 나은 개발자라고 생각했지만 그렇지 않았나보다. 여러 면접에서 계속 떨어지고 난 후, 자존감이 바닥을 치고 내 실력에 대해 회의감이 들었다. 하지만 계속 우울해할 순 없지 않은가? 이번 기회에 하고 싶었던 포비님이 노란책으로 출간하셨었고, nextstep에서는 수강신청에 실패했던 만들면서 배우는 spring 어플리케이션 만들기라도 해봐야겠다는 생각이 들었다. (무엇을 해야 실력이 나아지는지 모르겠고, 혼란이 와서 재밌어 보이는 코딩이라도 해봐야겠다는 생각이 들었다.) 결과적으로는 현재 10일차 정도 되었는데, 재밌게 진행하고 있다. 제대로 알지 못하고 있던 기본 개념들도 점검할 수 있었고, 무엇보다 스프링 없이 순수 java만으로 h..

  • aws - ec2

    퍼블릭주소와 프라이빗주소가 존재한다 퍼블릭은 외부와 통신 가능한 ip 프라이빗은 내부 aws서버들끼리 통신 가능한 ip ec2인스턴스를 stop한 후 다시 키고 퍼블릭주소로 접근시 에러가 발생할 수 있다. 이유는 ec2인스턴스가 실행될 때마다 새로운 퍼블릭주소를 할당받기 때문이다. 고정주소를 사용하려면 탄력적ip를 이용해야한다.

  • jpa에서 cascade를 써야하는 이유

    1. 연관관계를 맺고 있는 엔티티들의 저장을 위해선 영속화를 해줘야하는데, 일일이 영속화를 해주지 않아도 된다. 2. spring data jpa를 사용하는 경우에 영속화를 위해선 각 엔티티들을 타입으로 갖고 있는 JpaRepository가 필요한데, Service 클래스에서 해당 repository들에 의존하게 되고 많은 의존성을 관리하게 된다. cascade를 이용하면 service에서 repository로 향하는 의존성을 줄일 수 있다.

  • 좋은 설계를 위해 생각해보기

    1. dto를 어디까지 사용할 것인가? - service에 dto를 넘겨주는 것이 좋은 방법일까? - dto는 service쪽 패키지에 존재해야할까? controller쪽 패키지에 존재해야할까? 2. enum들은 어느 패키지에 속해 있어야하는걸까? - dto에서 enum을 써도 되는가? - domain에서 enum을 정의해서 사용하는건 어떤가? - domain에서 enum을 정의했을 때, 다른 패키지에서 enum을 사용하는 것은? 1. service쪽에 dto를 넘겨주는 것이 맞는 것 같음. 패키지 의존성을 그려보면 그래야만이 사이클 의존성을 제거할 수 있음 - controller에서 request로 받기만 하고, response로 넘겨주기만 한다면 controller(web)쪽에 있는 것이 좋음. 하지..