전체 글 227

클린코드 4장 - 주석

주석은 나쁜 코드를 보완하지 못한다 코드로 의도를 표현하지 못하니, 주석을 사용하는 경우가 많다. 주석이 필요한 상황에서는 상황을 역전해 코드로 의도를 표현하도록 노력해야 한다. 변화하는 코드안에서 주석은 관리되지 못한다. 코드로 의도를 표현하라! 의도를 주석으로 달기 보다는 함수로 만들어 표현하는 등 코드로 표현하라.. 좋은 주석 구현한 의도를 주석으로 달거나, 표준 라이브러리여서 의미를 좀더 명료히 표현할 필요가 있는 경우, 결과를 경고하는 경우(멀티쓰레드에 안전하지 않다는 등). //TODO 주석도 많이 남지 않도록 주기적으로 점검해 없애준다. 중요성을 강조하는 주석은 필요할 때가 있다. 나쁜 주석 코드에 있는 내용을 주석으로 반복할 필요는 없다. 오해할 수 있는 주석도 나쁘며, 의무적으로 달거나 ..

클린코드 3장 - 함수

작게 만들어라! 함수는 작을 수록 좋다. 20라인도 긴 편이며, 짧은 함수로도 멋진 프로그램을 구현가능하다. if 문 / else 문 / while 문 등에서 들여쓰기가 2단이상으로 중첩구조가 생겨야 하면 함수를 분리하는게 좋다. 한 가지만 해라! 하나의 함수는 한 가지 일만을 해야 하며, '한 가지'만 하는지 판단하는 방법으로는 함수 내의 일부 로직을 의미 있는 다른 이름으로 추출할 수 있다면, 그 함수는 여러 작업을 하는 셈이다. 함수 당 추상화 수준은 하나로! 함수 내 모든 문장들의 추상화 수준은 동일해야 한다. 한 함수에서 호출되는 내부 함수는 추상화 수준이 한 단계 낮은 함수가 나오는 식이다. 이것을 내려거기 규칙이라 부를 수 있다. Switch문 switch문이나 if ~ else 문을 이용하..

Tensorflow 자격증 준비

model 마지막 출력층 activation에 따른 loss적용 Dense(1, activation='sigmoid') 이면 Loss에서 loss='binary_crossentropy' Dense(2 이상, activation='softmax') 이면 Loss에서 loss='categorical_crossentropy' (원핫) 또는 loss='sparse_categorical_crossentropy' (원핫X) 아나콘다 가상환경 생성 anaconda prompt 실행 (base) C:\Users\msi>conda create -n tensor python=3.8 (base) C:\Users\msi>conda activate tensor (tensor) C:\Users\msi>pip list Packag..

Tensorflow 2022.05.06

redis sentinel 구성

redis의 replication구성과 sentinel까지 3대의 EC2에서 docker환경으로 구현해보겠다. redis가 실행시 EC2(ubuntu)의 기본유저(1000, ubuntu)로 실행되도록 Dockerfile을 생성하여 빌드 FROM redis:6.2.6 RUN groupmod -g 1000 redis RUN usermod -u 1000 -g 1000 redis USER 1000 CMD [ "redis-server", "/data/redis.conf" ] docker build -t seaking7/redis:1.0 . Redis replication 구동 3개의 EC2 노드에서 각각 docker로 구동 및 replication 설정 docker run --name redis-replica -..

redis 2022.04.25

Abstract Factory 패턴

구체적인 클래스를 생성하지 않고도 서로 관련성이 있거나 독립적인 여러 객체의 군을 생성하기 위한 인터페이스를 제공한다. 추상화된 인터페이스 팩토리를 제공하고 상황에 따라 그에 맞는 인스턴스들이 생성되도록 함 가령 데이터베이스에 따라 DAO클래스가 달라져야 한다고 할 때, 현재 사용해야 하는 DB의 종류에 따른 DAO 인스턴스를 한꺼번에 생성하도록 한다 샘플예제 : DB type을 설정파일로 받아서, 동적으로 Oracle, Mysql DAO 클래스를 생성해서 호출하는 구조 String dbType = "ORACLE"; DaoFactory daoFactory = null; if(dbType.equals("MYSQL")) { daoFactory = new MysqlDaoFactory(); }else if( d..

디자인패턴 2022.04.20

클린코드 - 2장 의미있는 이름

의도를 분명히 밝혀라 변수의 존재 이유, 기능, 사용법 등이 변수, 메소드, 클래스명에 드러나야 한다. 따로 주석이 필요하지 않을 정도로 // Bad public List getThem() { List list1 = new ArrayList(); for (int[] x : theList) { if (x[0] == 4) { list1.add(x); } } return list1; } // Good public List getFlaggedCells() { List flaggedCells = new ArrayList(); for (int[] cell : gameBoard) { if (cell[STATUS_VALUE] == FLAGGED) { flaggedCells.add(cell); } } return fla..

반응형