TIL(Develop)56 IntelliJ에서 Git 계정 분리하여 여러개 사용하기 회사에서 사내망 프로젝트만 진행하다가 사외망 프로젝트를 진행하게 되어 외부망 깃 계정을 만들었다.문제는 내 맥북의 인텔리제이에서 개인 Git을 로그아웃하지 않고 두개를 동시에 쓰고 싶었다는 점이다.결론적으로 아래와 같이 하면 할 수 있다.1. 키 생성하기터미널에 다음을 입력한다.개인용 키ssh-keygen -t rsa -b 4096 -C "[personal_email@example.com]()" -f ~/.ssh/id_rsa_github_personal회사용 키ssh-keygen -t rsa -b 4096 -C "[work_email@example.com]()" -f ~/.ssh/id_rsa_github_work 2. 키 파일 확인하기터미널에 다음을 입력한다.ls -al ~/.ssh결과는 다음과 같이 나.. 2025. 10. 29. [Design Pattern]빌더 패턴 적용 회고: 희망편과 절망편 빌더 패턴(Builder Pattern) 적용 회고: 희망편과 절망편1. 빌더 패턴은 만능일까?복잡한 객체를 만들 때 자주 언급되는 빌더 패턴.하지만 이 패턴이 언제나 좋은 설계를 보장하지는 않는다는걸 프로젝트에 세번정도 빌더 패턴을 적용해보다가 깨달았다.실제로 내가 프로젝트에서 빌더 패턴, 특히 디렉터(Director)를 도입하면서 겪은 희망편과 절망편을 회고해보려고 한다.디렉터를 쓰는 게 좋았던 경우디렉터의 사용이 오히려 복잡도만 올렸던 경우2. 패턴 요약 및 배경빌더 패턴 구조 요약Builder: 제품의 각 부분 생성 인터페이스ConcreteBuilder: 구체적으로 제품 생성 방법 구현Director: Builder를 조합해 객체 생성 과정을 관리Product: 최종 결과물적용 배경공통되고 복잡한.. 2025. 5. 19. @Slf4j = Facade 패턴 + Service Locator 패턴 나는 항상 로그를 찍을때 이렇게 Logger를 클래스 최상단에 생성한 후 이용해 왔는데Logger logger = Logger.getLogger(현재클래스.getName());팀원이 내가 로그를 찍는 방식을 보더니 @Slf4j를 추천해 주었다.그 후 직접 생성할 필요 없이 @Slf4j어노테이션만 달아주고 log.info , log.debug 등으로 바로 사용할 수 있어서 코드가 더 깔끔해지고 간편해졌다.사용하다가 문득 저 해괴한 알파벳의 조합이 무슨 의미일까 궁금해서 찾아보았다Slf4j : Simple Logging Facade for JavaFacade 패턴이란 ?복잡한 서브시스템들의 통합 인터페이스를 제공하는 구조적 디자인 패턴건물의 정면(facade)처럼, 내부의 복잡한 구조를 감추고 깔끔한 외관을.. 2025. 1. 25. [React] 페이지 로딩시에 단 한 번만 실행하기 (document.ready()같은 메서드) 원래는 습관적으로 이렇게 하고 있었는데 불필요하게 데이터를 매번 읽어와서 너무 비효율적이고 트래픽이 많아진 기분이 들어 더 찾아보았다useEffect(() => { handleGetConnection(useAuthStore.getState().currentCode); }, [rowData]); 빈 배열을 넣어주면 컴포넌트가 처음 마운트될 때 (페이지가 로드될때) 단 한 번만 실행되게 된다useEffect(() => { handleGetArsConnection(useAuthStore.getState().currentBotCode); }, []); 2024. 9. 27. [React] Destructuring assignment 어느날 갑자기 리액트를 하게 된 백엔드 개발자의 고군분투기...회사 : 풀스택 해 Java Kotlin 이제 다 필요없어... Destructuring assignment 정말 충격적으로 편리하다ES6 만세 감사합니다 그날도 힘겹게 리액트를 해내고 있던 백엔드 개발자 1은 신기한 코드를 마주하게 된다const Developer = ({ coffee, sweat, blood }: { coffee: string, sweat: number, blood: string }) => { console.log(coffee, sweat, blood);};interface Ingredient { coffee: string; sweat: string; blood: string;}const Developer = (in.. 2024. 9. 27. [React] React Hook 리액트 훅 어느날 갑자기 리액트를 하게 된 백엔드 개발자의 고군분투기...회사 : 풀스택 해 React Hook이란?리액트 훅(React Hooks)은 함수형 컴포넌트에서 상태(state)와 생명주기(lifecycle) 관련 기능을 사용할 수 있게 해주는 React의 기능이다.리액트 훅이 등장하기 전에는 클래스형 컴포넌트만 상태 관리와 생명주기 기능을 사용할 수 있었으나, 훅 덕분에 함수형 컴포넌트에서도 이러한 기능을 쉽게 사용할 수 있게 되었다**useState**상태를 함수형 컴포넌트에서 관리하기 위한 훅입니다.초기 상태를 인자로 받고, 배열을 반환하며, 배열의 첫 번째 요소는 현재 상태 값, 두 번째 요소는 그 상태 값을 업데이트하는 함수const [count, setCount] = useState(0);fu.. 2024. 9. 26. 오버라이딩과 오버로딩 차이 오버로딩(Overloading)메서드의 이름은 같고 매개변수의 유형과 개수가 다르도록 하는 것리턴값만을 다르게 갖는 오버로딩은 작성할 수 없다오버로딩은 같은 이름의 메서드를 여러 개 정의하되, 매개변수의 개수나 타입을 다르게 하여 구분하는 것이다오버로딩은 주로 메서드의 사용 편의성을 높이기 위해 사용된다특징메서드 이름이 같아야 한다매개변수의 개수나 타입이 달라야 한다반환 타입은 같아도 되고 달라도 된다같은 클래스 내에서 정의된다public class OverloadingExample { // 두 개의 정수를 더하는 메서드 public int add(int a, int b) { return a + b; } // 세 개의 정수를 더하는 메서드 public int add.. 2024. 5. 23. JVM(Java Virtual Machine) Java Virtual Machine자바를 실행하기 위한 가상 기계(컴퓨터)JVM은 Java프로그램이 플랫폼에 독립적으로 실행될 수 있게 = OS에 종속적이지 않게 해준다Java 소스코드(원시코드(*.java))는 CPU가 인식을 하지 못하므로 기계어로 컴파일을 해줘야 한다Java는 이 JVM 이라는 가상머신을 거쳐서 OS에 도달하기 때문에 OS가 인식할 수 있는 기계어로 바로 컴파일 되는게 아니라 JVM이 인식할 수 있는 Java bytecode(*.class)로 변환된다 JVM의 주요 기능바이트코드 실행Java 프로그램은 먼저 Java 컴파일러(javac)에 의해 바이트코드(.class 파일)로 컴파일된다이 바이트코드는 JVM이 이해할 수 있는 명령어 집합으로 변환된다메모리 관리JVM은 프로그램 실행.. 2024. 5. 17. 멀티스레드와 스레드 풀 / 스레드와 프로세스의 차이 프로세스(Process)cpu에 의해 메모리에 올려져 실행중인 프로그램을 말하며, 자신만의 메모리 공간을 포함한 독립적인 실행 환경을 가지고 있다프로그램 중 일부는 여러 프로세스간 상호작용을 하는 것일수도 있다자바 JVM(Java Virtual Machine)은 주로 하나의 프로세스로 실행되며, 동시에 여러 작업을 수행하기 위해서 멀티 스레드를 지원하고 있다스레드(thread)프로세스 내에서 독립적으로 실행되는 흐름프로세스 안에서 실질적으로 작업을 실행하는 단위JVM(Java Virtual Machine)에 의해 관리됨프로세스에는 적어도 한 개 이상의 스레드가 있다Main 스레드 하나로 시작하여 스레드를 추가로 생성하면 멀티 스레드 환경이 된다멀티스레딩 (Multithreading)하나의 프로세스 내에서.. 2024. 5. 17. 이전 1 2 3 4 ··· 7 다음