aria-label을 사용한 웹 접근성 처리
·
💻 Dev/Etc
최근 웹, 모바일 접근성 심사를 진행하면서 대체 텍스트에 대한 부분을 맡게 되었다. 여태까지는 웹 접근성만 했어서 title, alt로 처리했었는데, 모바일 접근성도 하게 되면서 WAI-ARIA를 사용했다. 그리고 Title 속성 사용을 지양해야 하는 이유라는 글을 보고 aria 태그를 적극적으로 활용해야겠다고 생각했다. 간단한 예시로 기록하려고 한다. (안하면 까먹을 것 같아서) 이미 전체적인 CSS가 너무 범용적으로 입혀져 있어서 기존 태그 변화 없이 진행해야 했음을 미리 밝힙니다... 사용 속성 role role은 태그의 역할을 지정하는 속성이다. 정해진 태그만 사용할 수 있음 ex) link, button, tab ... aria-label aria-label 은 태그에 이름표를 붙이는 것과 같다..
미션2. 로또 - TDD 회고
·
📝 끄적끄적/TDD, 클린 코드 with Java 17기
본격적으로 TDD 기반으로 테스트 코드를 작성했다. 도메인 설계 기본기가 부족하니 객체에 대한 책임을 분리하는 게 어려웠다. 처음에는 프로덕션 코드보다 테스트 코드를 먼저 짜는 게 이상하고, 시간적으로 비효율적이라고 생각했는데 '이건 이렇게 동작해야 해!' 하는 테스트 코드가 있으니 과감하지만 안정적으로 리팩토링 할 수 있었다. 😮 1단계 - 문자열 계산기 "2 + 3 * 4 / 2"와 같은 문자열을 입력할 경우 이를 계산해 10을 출력하는 계산기를 구현해야 했다. 항상 메서드 재사용을 고려하자 나는 사칙연산 기호+기능을 enum 클래스로 구현했기 때문에 연산을 하려면 문자열 내의 기호와 일치하는 상수 값을 찾아야 했다. 처음에는 `values()` 메서드를 그대로 사용했다. public enum Ope..
미션1. 자동차 경주 - 단위테스트 회고
·
📝 끄적끄적/TDD, 클린 코드 with Java 17기
포비님이 첫 번째 미션은 쉽다고 말하셔서 할만하겠지 했는데 완전 오산이었다.첫 번째 미션부터 정말 어려웠고, 단기간에 이렇게 많은 블로그를 보고 학습한 적이 있었나 싶을 정도였다.몇 시간 동안 고민하다 손도 못 댈 때도 있고, 진지하게 내 수준이 아닌 것 같아서 그만둬야 되는 거 아닌가 생각했다 😥매 단계마다 엄청나게 많은 리뷰가 쏟아졌고, 계속 리팩토링 하면서 '재밌다!'라고 느끼는 게 신기했다! 1단계 - 학습 테스트 실습1단계는 본 미션에 들어가기 전 워밍업 단계로 String과 Set Collection에 대한 테스트를 구현하는 미션이었다. @DisplayName()에는 테스트 대상의 input과 output에 대한 시나리오를 설명하자처음에는 아래처럼 테스트 이름에 코드 로직을 설명했었다.@Te..
[Git] 원격 저장소의 브랜치 가져오기 (remote branch)
·
🛠 DevOps & Tool/Git
나는 최근 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 없..
동등성과 동일성&String.equals()
·
💻 Dev/Java & OOP
동일성, ==동일성은 동일하다는 뜻으로 두 개의 객체가 완전히 같은 경우를 의미한다. 여기서 완전히 같다는 것은 두 객체의 주소값이 같아 동일하다고 봐도 무방하다는 말이다. ==와 != 연산자는 기본 자료형에서만 값 비교를 위해 사용할 수 있다.참조 자료형에서 사용해도 되지만 참조 자료형에서 사용하면 값을 비교하는 게 아니라 주소값을 비교한다.Parent parent1 = new Parent("hyun");Parent parent2 = new Parent("hyun");System.out.println(parent1 == parent2); //falseParent 객체 안에 String name 이라는 변수에 같은 값을 넣고 비교해도 결과는 false다. 두 객체는 각자의 생성자를 사용하여 만들었기 때문..
TDD, 클린 코드 with Java 17기를 시작하며
·
📝 끄적끄적/TDD, 클린 코드 with Java 17기
NEXTSTEP에서 진행하는 TDD, 클린 코드 with Java 17기에 합류했다.🙌시작하게 된 이유 이제 구현했다고 손 놓고 좋아하는 연차는 지났다. 점점 연차가 쌓이면서 번아웃이 오는 와중에최근 프로젝트에서 계~속 닦달하는 바람에 거지같이 개발하면서 정말 현타가 왔다.급한 로직을 부탁해서 구현하면 오오 해주지만 이건 진짜 구현만 한건데하고 기분이 더 안 좋았다.그래서 자바 기본서를 사서 다시 읽었고, 클린 코드를 읽으면서 실무에 조금씩 적용하니 개발이 좀 재밌어졌다.근데 코드 리뷰를 받질 않으니 잘 하고 있는건가? 계속 의심이 생겼다. 80만 원은 적지 않은 돈이다.또 수료율이 30%도 안 된다고 하는데, 수료도 못하는데 듣는 게 맞나? 하고 많이 고민했다.결제하기까지 정말 많은 회고록을 읽었고 ..
'스프링 입문을 위한 자바 객체 지향의 원리와 이해'를 읽고
·
📝 끄적끄적/후기 및 회고
[책 링크]📌 목차1장: 사람을 사랑한 기술2장: 자바와 절차적/ 구조적 프로그래밍3장: 자바와 객체 지향04장: 자바가 확장한 객체 지향5장: 객체 지향 설계 5원칙 - SOLID6장: 스프링이 사랑한 디자인 패턴7장: 스프링 삼각형과 설정 정보부록 A: 스프링 MVC를 이용한 게시판 구축부록 B: 자바 8 람다와 인터페이스 스펙 변화 객체 지향이라는 말이 너무 추상적으로 느껴졌다면이 책을 읽기 전까지는 객체 지향이라는 말이 추상적이었다.그냥 “현실 세계를 모방한다”는 말로는 이해가 되지 않았고, 그냥 자바가 객체 지향 언어라는 것만 아는 정도였다. 😅 그런데 책을 통해 객체 지향이라는 메커니즘이 어떻게 자바 안에서 구조화되고, 스프링에서는 그것이 어떻게 실현되는지 구체적으로 이해할 수 있었다. ..