본문 바로가기

728x90
반응형

전체 글

(694)
[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 문법은 알고 있으나, 프레임워크를 활용해서 코드를 적용하거나 개발하는 것은 낯설었습니다. 처음에는 팀장님이 솔루션을..
조직 현장 입출고 모바일 바코드리더기 연동 개발하기 문제점 조직에서 이동하는 수많은 물류를 수기로 처리하다 보니, 실제 사용하는 제품과 전산 상의 제품 바코드가 안 맞는 경우들이 있었고 엔지니어 재고 분배 시에도 분실하는 경우가 종종 있었습니다.(제품 1개당 약 수백만 원 제품이기 때문에 부품과 달리 엄청난 손해입니다.) 어긋난 재고 전산을 조회하거나 기록할 수 있는 기능을 만들어달라는 여러 가지 개발 요청을 받으면서, 근본적인 문제를 해결하지 않고 계속 부수적인 후처리만 하는 것이 아쉽게 느껴졌습니다. 따라서, 저는 개발자임에도 불구하고 바코드 사용을 강력하게 추진했습니다.(?) 따라서, 현장에서 보다 일을 신속하고 정확하게 처리할 수 있도록 개선했습니다. 바코드리더기 개발 방법 선택하기 바코드를 사용하여 현재 사용하는 시스템의 물류를 개선하는 일은 다..
Value Object 패턴 개요 value object를 왜 사용하는지, spring boot에서 어떻게 사용할 수 있는지 코드를 중점으로 알아보겠습니다. 문제 상황 buy() 메서드를 사용해 물건을 판매하는 어플리케이션이 있다고 가정합니다. 물건 가격과 나의 잔고 금액 2가지를 매개변수로 가집니다. public class Customer { private void buy(Money wallet, Money cost) { // nothing to do } } 현재 Money와 Currency 클래스를 추가해야 합니다. Money 클래스는 현재 가지고 있는 금액을 가집니다 Currency는 USD, JPN, EURO와 같이 국가에서 사용되는 화폐단위를 가집니다. public class Money implements Comparabl..

728x90
반응형