본문 바로가기

전체글81

Ansible - Failed to connect to the host via ssh(인프런 CI/CD 강의 에러) 전말 Jenkins를 이용한 CI/CD Pipeline 구축 강의 중 섹션 4 - Ansible에서 Kubernetes 제어하기 과정 중에 오류가 생겼고 이틀 내내 찾아서 고쳤다. 강의 커뮤니티에도 윈도우를 사용하는 대부분의 수강생들이 겪는 에러인 것 같은데, 해결 방법이 없고 구글링해도 정보가 너무 없어서 포스팅하고자 한다. 이하 내 호스트 IP는 가상으로 192.168.1.11로 표기하겠다. (or 스티커로 가리기) 먼저 진행한 과정은 hosts 파일에 아래와 같이 입력하고 [ansible-server] localhost [kubernetes] 192.168.1.11 ansible로 ping 모듈을 테스트하는 것이었다. # ansible -i /k8s/hosts kubernetes -m ping 첫 .. 2024. 3. 13.
변경감지와 병합 JPA에서 데이터를 변경할때의 기본 메커니즘은 변경 감지(Dirty Checking)이다. 개인적으로 신기하다고 생각해서 정리하게 되었다. 아직은 내용이 많이 부족해서 더 채워야 할 것 같다... 더티 체킹(Dirty Checking) a.k.a 변경 감지란? @Transactional public void updateItem(Long itemId, String name, int price, int stockQuantity) { Item findItem = itemRepository.findOne(itemId); findItem.setName(name); findItem.setPrice(price); findItem.setStockQuantity(stockQuantity); } 위는 pk인 itemId를.. 2024. 1. 6.
aria-label을 사용한 웹 접근성 처리 최근 웹, 모바일 접근성 심사를 진행하면서 대체 텍스트에 대한 부분을 맡게 되었다. 여태까지는 웹 접근성만 했어서 title, alt로 처리했었는데, 모바일 접근성도 하게 되면서 WAI-ARIA를 사용했다. 그리고 Title 속성 사용을 지양해야 하는 이유라는 글을 보고 aria 태그를 적극적으로 활용해야겠다고 생각했다. 간단한 예시로 기록하려고 한다. (안하면 까먹을 것 같아서) 이미 전체적인 CSS가 너무 범용적으로 입혀져 있어서 기존 태그 변화 없이 진행해야 했음을 미리 밝힙니다... 사용 속성 role role은 태그의 역할을 지정하는 속성이다. 정해진 태그만 사용할 수 있음 ex) link, button, tab ... aria-label aria-label 은 태그에 이름표를 붙이는 것과 같다.. 2023. 12. 1.
미션2. 로또 - TDD 회고 본격적으로 TDD 기반으로 테스트 코드를 작성했다. 도메인 설계 기본기가 부족하니 객체에 대한 책임을 분리하는 게 어려웠다. 처음에는 프로덕션 코드보다 테스트 코드를 먼저 짜는 게 이상하고, 시간적으로 비효율적이라고 생각했는데 '이건 이렇게 동작해야 해!' 하는 테스트 코드가 있으니 과감하지만 안정적으로 리팩토링 할 수 있었다. 😮 1단계 - 문자열 계산기 "2 + 3 * 4 / 2"와 같은 문자열을 입력할 경우 이를 계산해 10을 출력하는 계산기를 구현해야 했다. 항상 메서드 재사용을 고려하자 나는 사칙연산 기호+기능을 enum 클래스로 구현했기 때문에 연산을 하려면 문자열 내의 기호와 일치하는 상수 값을 찾아야 했다. 처음에는 `values()` 메서드를 그대로 사용했다. public enum Ope.. 2023. 11. 29.
미션1. 자동차 경주 - 단위테스트 회고 포비님이 첫 번째 미션은 쉽다고 말하셔서 할만하겠지 했는데 완전 오산이었다. 첫 번째 미션부터 정말 어려웠고, 단기간에 이렇게 많은 블로그를 보고 학습한 적이 있었나 싶을 정도였다. 몇 시간 동안 고민하다 손도 못 댈 때도 있고, 진지하게 내 수준이 아닌 것 같아서 그만둬야 되는 거 아닌가 생각했다 😥 매 단계마다 엄청나게 많은 리뷰가 쏟아졌고, 계속 리팩토링 하면서 '재밌다!'라고 느끼는 게 신기했다! 1단계 - 학습 테스트 실습 1단계는 본 미션에 들어가기 전 워밍업 단계로 String과 Set Collection에 대한 테스트를 구현하는 미션이었다. @DisplayName()에는 테스트 대상의 input과 output에 대한 시나리오를 설명하자 처음에는 아래처럼 테스트 이름에 코드 로직을 설명했었다.. 2023. 11. 15.
[Git] 원격 저장소의 브랜치 가져오기 (remote branch) 나는 최근 repository 하나를 2대의 PC에서 작업하고 있다. 즉 집에서 step1 브랜치에서 작업하다가, 회사 가서 step1 브랜치에서 이어서 작업한다. 평소처럼 집에서 push해놓은 걸 회사에서 이어서 작업하고 push 하려는데...! 회사 로컬에 원격 저장소의 step1 브랜치가 계속 안 떴다. 로컬, 원격 저장소를 확인하니 원격 저장소에 기본 브랜치만 뜸.. 구글링해서 `git remote update` , `git checkout -t origin/step1` 를 해봐도 안 됐다.....😥 해결 1. 원격 저장소의 모든 브랜치를 가져온다. $ git remote set-branches origin \* 2. 원격 저장소에 변경사항이 있는지 확인한다. $ git fetch origin 없.. 2023. 11. 13.
[Java] ==와 equals() == ==와 ≠ 연산자는 기본 자료형에서만 값 비교를 위해 사용할 수 있다. 참조 자료형에서 사용해도 되지만 참조 자료형에서 사용하면 값을 비교하는 게 아니라 주소값을 비교한다. Parent parent1 = new Parent("hyun"); Parent parent2 = new Parent("hyun"); System.out.println(parent1 == parent2); //false Parent 객체 안에 `String name` 이라는 변수에 같은 값을 넣고 비교해도 결과는 false다. 두 객체는 각자의 생성자를 사용하여 만들었기 때문에 주소값이 다르기 때문이다. equals() 참조 자료형은 `equals()`를 사용하여 비교해야 한다. `equals()` 를 오버라이딩 하지 않으면 ha.. 2023. 11. 5.
TDD, 클린 코드 with Java 17기를 시작하며 NEXTSTEP에서 진행하는 TDD, 클린 코드 with Java 17기에 합류했다.🙌 시작하게 된 이유 이제 구현했다고 손 놓고 좋아하는 연차는 지났다. 점점 연차가 쌓이면서 번아웃이 오는 와중에 최근 프로젝트에서 계~속 닦달하는 바람에 거지같이 개발하면서 정말 현타가 왔다. 급한 로직을 부탁해서 구현하면 오오 해주지만 이건 진짜 구현만 한건데하고 기분이 더 안 좋았다. 그래서 자바 기본서를 사서 다시 읽었고, 클린 코드를 읽으면서 실무에 조금씩 적용하니 개발이 좀 재밌어졌다. 근데 코드 리뷰를 받질 않으니 잘 하고 있는건가? 계속 의심이 생겼다. 80만 원은 적지 않은 돈이다. 또 수료율이 30%도 안 된다고 하는데, 수료도 못하는데 듣는 게 맞나? 하고 많이 고민했다. 결제하기까지 정말 많은 회고록.. 2023. 11. 5.
함수 작게 만들어라! 함수는 작을수록 좋다. 20줄도 길다. 들여쓰기(indent)는 1단이나 2단을 넘어가면 안 된다. 한 가지만 해라! 함수의 추상화 수준은 하나여야 한다. 지정된 함수 이름 아래에서 추상화 수준이 하나인 단계만 수행한다면 그 함수는 한 가지 작업만 하는 것이다. 서술적인 이름을 사용하라! 코드를 읽으면서 짐작했던 기능을 각 루틴이 그대로 수행한다면 깨끗한 코드라 불러도 되겠다. 함수가 작고 단순할수록 서술적인 이름을 고르기도 쉬워진다. 길고 서술적인 이름이 짧고 어려운 이름보다 좋다. IDE에서 이런저런 이름을 시도한 후 최대한 서술적인 이름을 골라도 좋다. 또한 이름을 붙일 때는 일관성이 있어야 한다. 모듈 내에서 함수 이름은 같은 문구, 명사, 동사를 사용한다. ex) `include.. 2023. 10. 29.