본문 바로가기

반응형

분류 전체보기

(696)
[TDD, 클린 코드 with Java] 3.사다리타기 - FP, OOP *개요 사다리타기 과제를 구현하면 피드백 받은 내용을 정리합니다. 2단계 - 사다리(생성) 매개변수 값 전달 시 변수명에 맞는 값을 전달하 매개변수 전달 시, personCount라는 매개변수명을 가지고 있습니다. 따라서 실제 전달은 personCount를 해야 합니다. Factory 분리를 고민하라 사다리를 생성하는 LadderFactory는 Ladder에서만 사용합니다. 이전에 로또번호를 생성하는 과제에서는 별도로 Factory를 분리했습니다. 제대로 로또 번호가 생성되었는지 테스트를 하기 위함이 큰데, 이번 리뷰에서는 오히려 만들지 않는 것이 낫다는 피드백을 받았습니다. 따로 정답이 있다고 생각하지 않습니다. 경우에 따라서 분리하거나 그냥 유지 할 수 있습니다. 중복된 유효성 검증을 제거하라 Lin..
[TDD, 클린 코드 with Java] 2.로또 - TDD * 개요 2단계 로또 TDD 과제를 하면서 피드백 받은 부분을 정리합니다 1단계 - 문자열 계산기(로또 - TDD) 메서드명의 의도를 분명하게 드러내라 메서드명을 단순하게 main으로 하지 않고 분명하게 의도가 드러나야 합니다. View에서 유효성 검증을 하지 마라 View는 말 그대로 데이터의 입출력만 관리합니다. 유효성 검사는 Controller나 도메인에서 합니다. Map은 O(n) 보다는 O(1) 을 고려하라 지금은 Map 원소의 갯수가 많이 없지만, 갯수가 많아지면 O(n)의 성능이 문제가 될 수 있습니다. 따라서 미리 선언하여 O(1)로 쉽게 검색이 가능하도록 합니다. @DisplayName으로 테스트 설명을 추가하라 테스트명으로 충분한 의도를 나타낼 수 있지만, @DisplayName을 사용..
[TDD, 클린 코드 with Java] 1.자동차 경주 *개요 문자열 계산기와 자동차 경주 과제 구현 및 피드백을 회고한다. 2단계 - 문자열 덧셈 계산기 선언형 스타일로 정의하라 엘레강트 오브젝트 책에서 선언형 스타일로 코딩 할 것을 추천해서 사용해 봤습니다. boolean형을 Boolean으로 인터페이스 선언하고 LessThan이라는 같거나 작은 경우를 satisfied() 메서드를 통해 실행합니다. 피드백 과제전형의 좋은 점은 다양한 스타일을 시도하고 공유할 수 있다는 점입니다. Pattern에 static을 추가하라 static은 어디서나 접근이 가능한 점도 있겠으나, 미리 컴파일 한다는 의미가 더 큽니다. 그런 점에서 반복 사용되는 상수 개념의 경우 미리 static으로 만든다면 이후 호출에서 불필요한 메모리 사용을 예방할 수 있습니다. CUSTOM..
ip주소 확인하는 방법 나의 ip주소 확인하는 방법 1. 윈도우 아이콘 클릭 - 윈도우 아이콘을 클릭합니다 2. cmd 입력 후 '명령 프롬프트' 앱 실행 - 명령 프롬프트 앱을 실행합니다 3. ipconfig 입력 후 IPv4주소 확인 - ipconfig 명령어를 통해 주소를 확인합니다
오라클 조작 명령어 모음(테이블/코멘트/시퀀스/배치) * 테이블 --오라클 테이블 생성 CREATE TABLE emp ( empno NUMBER(4)NOT NULL, ename VARCHAR2(10), job VARCHAR2(9), mgr NUMBER(4), hiredate DATE, sal NUMBER(7,2), comm NUMBER(7,2), deptno NUMBER(2) ); --PK 생성 ALTER TABLE emp ADD CONSTRAINT emp_pk PRIMARY KEY (empno); --인덱스 생성 CREATE INDEX emp_idx01 ON emp(job, deptno); --칼럼 추가 ALTER TABLE TB_INVENTORY_HIS_D ADD email VARCHAR(25) DEFAULT 'test@test.com' NOT NULL..
Oracle에서 NULL처리 개요 DB를 사용하다 보면 항상 NULL과의 싸움입니다. 언제 NULL 위험이 있는지, NULL의 위험이 있는 경우 어떻게 처리해야 하는지 정리합니다. (이 글에서 다루는 칼럼들은 NULL 허용입니다. 그래야 NULL 발생을 대비해 학습할 수 있습니다.) NULL이 발생하는 경우 NULL이 발생하는 경우는 크게 6가지로 구분할 수 있습니다. NULL 허용 칼럼의 값이 NULL일 때 NULL과 조인 아우터조인에서 조인에 실패한 아우터 조인된 테이블의 칼럼 값 스칼라서브쿼리에서 조건에 해당하는 데이터가 없는 경우 메인쿼리의 결과 값 GROUP BY 절 없이 사용한 집계함수에서 조건에 해당하는 데이터가 없을 때 CASE 표현식을 이용한 컬럼 변환에서 처리에 누락되는 컬럽 값 NULL이 발생하는 경우 예제 NU..
제 1,2,3 정규화 개요 데이터 모델링을 하면 무의식적으로 정규화를 합니다. 이를 공식으로 정리한 내용을 배워 개념을 잘 다지기 위해 DB 정규화를 정리합니다. 정규화를 왜 해야 할까? 정규화를 무작정 외우기 전에 먼저 정규화를 왜 해야 하는지, 데이터 모델링의 핵심이 무엇인지 고민해야 합니다. DB 데이터 모델링의 핵심은 '중복을 제거' 입니다. 중복을 제거하지 않으면 이상 현상이 발생하고 데이터를 관리할 수 없습니다. 설계할 때 각 테이블의 데이터를 원자(ATOM) 상태로 모두 쪼개서 1:1, 1:M, M:N 관계를 맺습니다. 이 모든 것이 데이터 중복 현상을 방지하기 위해서입니다. 따라서, 어떻게 데이터 무결성을 지키면서 설계할 수 있을지 고민해야 합니다. 제1 정규화 모든 속성은 반드시 하나의 값을 가져야 합니다. ..
오픈소스 활용해 바코드 리더 기능 개발 회고 개요 직전에 블루투스 바코드 리더기를 이용해서 입출고를 처리하는 기능을 개발했습니다. 다음으로 엔지니어들이 제품을 설치하고 설치완료를 위해 핸드폰 바코드 리더기로 인식하는 기능이 필요합니다. 기존 기능이 너무 인식률이 떨어져 개선해야 했습니다. 조건 최대 효율을 내기 위해서 4가지 조건을 준수해야 했습니다. 모바일이 아닌 웹에서 필요한 기능이다. 바코드 리더기와 실제 바코드 규격이 호환되어야 한다. 현재 Quagga.js보다 인식률이 좋아야 한다. 가급적 프런트 프레임워크 없이 순수 js로 개발한다. 주로 백엔드를 공부했기 때문에, 프런트는 잘 몰라서 걱정이 많았습니다. 아무래도 기본 js 문법은 알고 있으나, 프레임워크를 활용해서 코드를 적용하거나 개발하는 것은 낯설었습니다. 처음에는 팀장님이 솔루션을..

반응형