전체 글 230

클린코드 6장 - 객체와 자료구조

6장에서는 자료구조와 객체의 두가지 개념을 소개한다. 자료구조는 자료를 그대로 공개하며 별다른 함수를 제공하지 않는게 좋다. VO나 DTO 객체를 의미한다. 객체는 추상화 뒤로 자료를 숨긴 채 자료를 다루는 함수만 공개한다. 자료구조 형식의 클래스 public class Point { public double x; public double y; } 추상적인 객체 방식의 클래스 public interface Point { double getX(); double getY(); void setCartesian(double x, double y); double getR(); double getTheta(); void setPolar(double r, double theta); } (자료구조를 사용하는) 절차적인..

클린코드 5장 - 형식 맞추기

형식을 맞추는 목적 오늘 구현한 기능은 다음 버전에서 바뀔 확률이 높다. 그런데, 오늘 구현한 코드의 가독성은 앞으로 바뀔 코드의 품질에 지대한 영향을 미친다. 오랜 시간이 지나 원래 코드의 흔적을 더 이상 찾아보기 어려울 정도로 코드가 바뀌어도 맨 처음 잡아놓은 구현스타일과 가독성 수준은 유지보수 용이성과 확장성에 계속 영향을 미친다. 적절한 행 길이를 유지하라 JUnit, FitNesse, testNG, Time and Money, JDepend, Ant, Tomcat 등 대규모 프로젝트 소스를 분석해서 보여주는데, 500줄을 넘어가는 파일이 거의 없으며 대다수가 200줄 미만이다. 500줄을 넘지 않고도 커다란 시스템을 구축할 수 있다는 것이다. 신문 기사처럼 작성하라 좋은 신문기사는 최상단에 기사..

Java Long-Term Support Version

Java버전 선택시 LTS(Long-Term Support) 버전인지가 선택의 기준이 될 수 있다. java8, 11, 17 버전 형태로 업그레이드를 고려해야 할 것으로 보인다. https://www.oracle.com/java/technologies/java-se-support-roadmap.html Oracle Java SE Support Roadmap Release GA Date Premier Support Until Extended Support Until Sustaining Support 7 (LTS) July 2011 July 2019 July 2022***** Indefinite 8 (LTS)** March 2014 March 2022 December 2030***** Indefinite 9..

자바 2022.05.15

클린코드 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
반응형