반응형
[클린코드] 5장. 형식 맞추기
독서/📚2022. 2. 22. 22:15[클린코드] 5장. 형식 맞추기

1. 형식/포맷팅 중요한 이유 ✔ 가독성에 필수적이기 때문 ① 코드를 수월하게 읽어 나갈 수 있다. ② 아마추어처럼 보이지 않는다. ③ 형식을 맞춤으로써 버그 위험을 줄인다. 2. 클린코드 포맷팅 - 행 간격 ✔ 적절한 길이 유지 행(row, 세로) : 200Lines 이하 또는 500Lines 미만 → 현업에서의 대부분의 코드들도 200Lines 정도를 유지한다. → 코드 길이가 200Lines을 넘어간다면, 클래스가 여러 개의 일을 하고 있을 수 있다.(SRP위배) "코드 길이를 200줄 정도로 제한하는 것은 반드시 지킬 엄격한 규칙은 아니지만, 일반적으로 큰 파일 보다는 작은 파일이 이해하기 쉽다." ✔ 밀접한 개념은 가까이, 개념은 빈행으로 분리 - 행 묶음은 완결된 생각 하나를 표현하기 때문에 ..

[클린코드] 4장. 주석
독서/📚2022. 2. 22. 22:15[클린코드] 4장. 주석

결론 주석을 작성할 시간에 함수명, 변수명을 이해하기 쉽게 수정하거나 좀 더 간결하게 코드를 짜는 방법에 대해 고민하는 게 좋다👍 1. 주석을 최대한 쓰지 말자 ✔ 주석은 나쁜 코드를 보완하지 못한다. ① 코드에 주석을 추가하는 일반적인 이유는 코드 품질이 나쁘기 때문이다. ② 이는 곧 작성자가 의도를 명확히 표현하지 못했다는 것을 뜻하기도 함 👉 난장판을 주석으로 설명하지 말고 개선하는데 시간을 보내자 ✔ 주석은 방치된다. ① 코드의 변화에 따라가지 못하고, 주석은 방치된다. ② 방치된 주석은 뒤에 읽는 사람에게 혼용 야기 할 수 있다. 👉 관리 하지 못 할 거면 자제하는 것이 낫다. 2. 좋은 주석 👍 1) 법적인 이유로 다는 주석 //Copyright (C) 2003,2004,2005 by Obje..

[클린코드] 3장. 함수
독서/📚2022. 2. 22. 22:13[클린코드] 3장. 함수

해당 장을 통해 중복👎, 가독성👍, 재사용성👍 할 수 있는 함수 작성 방법에 살펴 보았다. 1. 함수명 ✔ 동사 + 명사 # init public void initData(){..} // 데이터 초기화 # is/has/can public boolean isNumber(){..} // 숫자 여부 판단 public boolean hasData(){..} public boolean canOrder(){..} # create public Board create(){..} // 새로운 객체 생성 후 리턴 # find public Element findElement(int number){..} ✔ 전치사 + 명사 || 전치사 # to public String toString(){..} // String 변환 pub..

[클린코드] 2장. 의미 있는 이름
독서/📚2022. 2. 22. 22:13[클린코드] 2장. 의미 있는 이름

의미 있는 이름 1) 의도를 분명히 밝혀라 2) 그릇된 정보를 피하라 3) 의미 있게 구분하라 4) 발음하기 쉬운 이름을 사용하라 5) 검색하기 쉬운 이름을 사용하라 6) 인코딩을 피하라 7) 자신의 기억력을 자랑하지 마라 8) 기발한 이름은 피하라 9) 한 개념에 한 단어를 사용하라 10) 말장난을 하지 마라 11) 해법 영역에서 가져온 이름을 사용하라 12) 문제 영역에서 가져온 이름을 사용하라 13) 의미 있는 맥락을 추가하라 14) 불필요한 맥락을 없애라 Google Java Naming Gudie - 5. Naming 번역 https://google.github.io/styleguide/javaguide.html#s5-naming Google Java Style Guide 1 Introducti..

[클린코드] 1장. 깨끗한 코드
독서/📚2022. 2. 22. 22:12[클린코드] 1장. 깨끗한 코드

클린코드란 성능이 좋은 코드 의미가 명확한 코드 가독성이 좋은 코드 중복이 제거된 코드 나쁜 코드 1) 성능이 나쁜 코드 불필요한 연산이 들어가서 개선 여지 있는 코드 2) 의미 모호한 코드 이해가 어려운 코드 ( ex. 네이밍과 그 내용이 다른 코드 ) 3) 중복된 코드 비슷한 내용이 중복되는 코드 → 버그💣 발생 가능성 증가 나쁜 코드가 나쁜 이유 1) 깨진 유리창 법칙 🔳 나쁜 코드는 깨진 유리창처럼 계속 나쁜 코드가 만들어지도록 한다. 깨진 유리창 하나를 방치해 두면, 그 지점을 중심으로 범죄가 확산되기 시작한다는 이론으로, 사소한 무질서를 방치하면 큰 문제로 이어질 가능성이 높다는 의미를 담고 있다 ( 위키 백과 참조 ) 2) 생산성 저하 🕛 기술 부채를 만들어 수정을 더 어렵게 한다. ( + ..

공부/DevOps2022. 1. 15. 15:34[Ubuntu] javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate

개요 AWS EC2서버에서 스프링 부트 프로젝트 실행시 아래 에러 발생 확인 javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate 해결 datasource url에 option 추가 후 다시 build해서 실행하니 정상동작 spring.datasource.url=jdbc:mysql://디비주소:3306/디비명?characterEncoding=UTF-8&useSSL=true&enabledTLSProtocols=TLSv1.2

[Gradle] test 폴더 파일 제외하고 build하기
공부/IDE2022. 1. 15. 15:15[Gradle] test 폴더 파일 제외하고 build하기

개요 -Spring boot 파일럿 프로젝트 과제 진행하고 결과물을 이제 aws ec2 서버에 올리기 위해 build함 -그런데 Test 폴더에 있는 파일에서 컴파일 에러가 발생해서 build가 안되었고 해결 방법을 찾아 포스팅 build 란 작업한 프로젝트를 소프트웨어 결과물로 변환하는 과정 ( 예. *war, *.jar 와 같은 파일) 방법 1. termial 명령어로 test 제외 $ cd 프로젝트 //프로젝트 루트 경로(gradlew 파일 있는 위치)까지 이동 $ ./gradlew clean build -x test //-x test 옵션을 추가해서 test 폴더 내용 제외하고 build함 방법 2. IDE build 실행 환경 수정 동일한 내용이고 옵션 추가 후 build 실행하면 됨

공부/Spring2022. 1. 7. 23:10[Spring] javax.servlet.ServletException: Circular view path ..에러

문제내용 스프링 부트로 게시판 만들기를 하고 있는데 아래와 같은 에러가 발생했다. 해석하자면 mapping 주소가 /singup인데 view name도 signup이라 에러 발생하면서 shut-down 되버림 [signup]: would dispatch back to the current handler URL [/signup] again. Check your ViewResolver setup! (Hint: This may be the result of an unspecified view, due to default view name generation.) 해결방법 @Controller에서 ModelAndView 또는 Model에 View Name 을 넣어주면 해결됨

[Intellij] 다른 테스트 클래스 에러로 인해 독립적으로 테스트 실행되지 않을 경우
공부/IDE2021. 12. 31. 12:23[Intellij] 다른 테스트 클래스 에러로 인해 독립적으로 테스트 실행되지 않을 경우

개요 인텔리제이 30일 평가판 사용 junit 테스트 작업시 아직 수정되지 않는 클래스로 인해, 독립적으로 테스트 클래스가 실행되지 않는 현상 확인하여 해결 방법 기록 설정 방법 1. [File > Settings > Build, Execution,Deployment > Compiler > Java Compiler] 에 설정 변경 2. 실행하려는 테스트 클래스에 대해 [Edit Configuration] 설정에서 Add before launch task 추가 3. default로 있는 'build'를 지우고 '+' 눌러서 Build, no error check 추가/저장/실행 참고 https://stackoverflow.com/questions/47948741/how-to-run-single-class-..

[Spring] JVM 구조와 Garbage Collection(GC)
공부/Spring2021. 11. 30. 11:01[Spring] JVM 구조와 Garbage Collection(GC)

JVM(Java Virtual Machine) - 컴파일된 *.class 파일을 읽어 실행하고 운영체제의 메모리 영역에 접근하여 메모리 관리(GC) 수행하는 프로그램 - JDK > JRE > JVM ( JDK 안에 JRE와 JVM이 포함되어 있음 ) - 운영체제에 맞는 JVM 설치만 하면 자바 프로그램 실행 가능 JVM 구조 - Class Loader 생성된 class 파일을 Runtime Data Area에 적재하는 역할 - Execution Engine 메모리에 적재된 클래스를 기계어로 변경해 명령어 단위로 실행하는 역할(인터프리터, JIT방식) - G.C(Garbage Collection) heap 메모리 영역에 생성된 객체 중 reachability를 잃은 객체를 탐색 후 제거함 - Runtime..

[Intellij] junit 테스트 실행시 @Displayname 표시 안될때
공부/IDE2021. 11. 24. 15:49[Intellij] junit 테스트 실행시 @Displayname 표시 안될때

Junit 테스트 진행중에 실행 콘솔에 @Displayname외에 하위 실행내용이 표출되지 않음 설정 방법 Settings(단축키 : ctrl + alt + s) 메뉴 > 좌측 Build,Execution,Deployment > Build Tools > Gradle "Gradle"로 설정되어 있을 건데 아래 이미지와 같이 "IntelliJ IDEA"로 변경 후 저장 Junit 테스트 재실행 및 확인

[네트워크] 대칭키, 비대칭키 그리고 Https
공부/CS2021. 11. 21. 18:22[네트워크] 대칭키, 비대칭키 그리고 Https

HTTP(HyperText Transfer Protocol) 인터넷 상에서 클라이언트와 서버가 자원을 주고 받을 때 쓰는 통신 규약 HTTPS(HyperText Transfer Protocol Secure) 인터넷 상에서 정보를 암호화하는 SSL 프로토콜(보안 이슈로 TLSv1.3 사용)을 사용해 클라이언트와 서버가 자원을 주고 받을 때 쓰는 통신 규약 HTTPS는 텍스트를 공개키 암호화 방식으로 암호화 함 HTTPS 를 사용한다는 것은 두가지 의미를 가진다. 신뢰있는 사이트 보증 서버와 클라이언트 간에 정보 교환시 암호화 통해 제 3자 노출 방지 대칭키(Symmetric Key) vs 비대칭키(=공개키, public key) 방식 대칭키 (개인키,비밀키) 비대칭키 (공개키) 방식 송신key == 수신 ..

[Spring]  Http Request에 대한 DispatcherServlet 동작과정
공부/Spring2021. 11. 13. 22:47[Spring] Http Request에 대한 DispatcherServlet 동작과정

DispatcherServlet 동작과정 @Controller 인 경우 ① Client(사용자)에서 브라우저 통해 Http Request 보내면 DispatcherServlet이 받음 ② HandlerMapping한테 지시하여 Http Request URI에 맞는 Handler(Controller)를 찾음 ③ 해당 Handler를 실행할 수 있는 HandlerAdapter를 탐색 ④ 찾은 HandlerAdapter를 사용해서 Handler Method를 실행 ⑤ 개발자가 만든 비즈니스 로직을 수행 후 View name(ex. "index")과 model (key, value 형태) 반환받음 ⑥ DispatcherServlet은 ViewResolver 에게 View name전달하여 해당 View 파일을 찾..

[네트워크] Http Method 와 Http Status Code
공부/CS2021. 11. 12. 12:14[네트워크] Http Method 와 Http Status Code

HTTP (HyperTexT Protocol) 하이퍼텍스트를 빠르게 교환하기 위한 프로토콜의 일종 즉, HTTP는 서버와 클라이언트의 사이에서 어떻게 메시지를 교환할지를 정해놓은 규칙 80번 포트를 사용하며 HTTP의 구조는 요청(Request)과 응답(Response)으로 구성 https://namu.wiki/w/HTTP HTTP Request Method 서버에 요청시 주어진 리소스에 수행하길 원하는 행동을 Method 로 나타냄 CRUD ('Create', 'Read', 'Update', 'Delete') 에 대해 Http Method를 보통 아래와 같이 구분함 Create = POST/PUT Read = GET Update = PUT Delete = DELETE GET 서버에게 특정 Resourc..

[네트워크] DNS(Domain Name System)
공부/기타2021. 10. 13. 14:21[네트워크] DNS(Domain Name System)

'웹 브라우저에 주소 입력했을때 동작 과정' 중 그 일부인 DNS 정리 DNS란 사람이 읽기 쉬운 도메인명(ex. www.google.com ) 을 기계가 읽을 수 있는 IP주소(네트워크 상 주소) 변환하는 것 획득한 IP 주소로 라우팅(라우터를 거쳐 최적 경로 찾아가는 과정)을 통해 서버에 찾아가게 됨 https://aws.amazon.com/ko/route53/what-is-dns/ DNS란 무엇입니까? – DNS 소개 - AWS Internet Explorer에 대한 AWS 지원이 07/31/2022에 종료됩니다. 지원되는 브라우저는 Chrome, Firefox, Edge 및 Safari입니다. 자세히 알아보기 aws.amazon.com 도메인 주소로 IP 획득하는 과정 요약 도메인에 대한 IP 주..

공부/기타2021. 10. 13. 14:05[네트워크] TCP 와 UDP 비교

TCP , UDP 비교 구분 TCP UDP 서비스 연결 지향형 서비스 비연결 지향형 서비스 통신 방식 port 이용 소켓주소 이용 (ip주소 + port 번호) 세션(연결) 설정 3-way handshaking(논리적연결) 4-way handshaking(연결해제) x 신뢰성 확보 흐름제어/오류제어/혼잡제어 x 전송속도 느림 빠름 장점 신뢰성있는 정보전송가능 실시간 통신 적합 (비연결형에 제어가 없으므로) 단점 절차로 인한 지연 발생 신뢰성 보장x 용도 http, SMTP VoIP TCP의 흐름제어, 오류제어, 혼잡제어 흐름제어 송/수신측 사이의 데이터 처리 속도 차이(흐름)을 제어하기 위한 기법으로 데이터 처리 속도를 조절하여 수신자의 버퍼 오버플로우를 방지. Stop and Wait / Sliding..

[DBeaver] SQL자동완성풀기, 행번호표시, 컬럼설명표시, 단축키 확인 및 설정
공부/DB2021. 10. 12. 23:20[DBeaver] SQL자동완성풀기, 행번호표시, 컬럼설명표시, 단축키 확인 및 설정

1. SQL 자동완성 풀기 쿼리 작성할때 자동으로 table alias 작성해주던 기능을 제거 상단 메뉴 [윈도우] > [환경설정] > 팝업창 좌측메뉴 [편집기] > [SQL편집기] > [SQL자동완성] 선택 'Insert table aliases(in FROM caluse)' 를 N/A 선택함 2. 행번호 표시 가독성을 높이기 위해 쿼리 파일 좌측에 행번호 표시하도록 함 상단 메뉴 [윈도우] > [환경설정] > 팝업창 좌측메뉴 [편집기] > [문서편집기] 선택 '행 번호 표시' 체크 3. 컬럼설명 표시 테이블 조회시 컬럼별 comment를 각각 헤더에 표시해줌 (당연히 comment가 있어야 select 조회 시 표시됨) 상단 메뉴 [윈도우] > [환경설정] > 팝업창 좌측메뉴 [편집기] > [데이터 ..

공부/Spring2021. 10. 11. 13:03[gradle] General error during semantic analysis: Unsupported class file major version 60 에러

상황 (2021.10.11) '빠른 학교' 인강을 듣던 중에 gradle.build에 의존 라이브러리 추가했는데 다음과 같은 에러가 출력됨 에러 로그 General error during semantic analysis: Unsupported class file major version 60(이하생략) 문제 해결 검색결과 gradle에서 java 16버전을 지원하지 않아서 에러 출력되는 것으로 파악 cmd 창에 java --version 확인시 jdk 16 버전 설정되어 있었음 그런데 JAVA_HOME 환경변수 설정은 openjdk11 이었음 jdk 16을 삭제하고 재부팅 다시 cmd 창 확인 후 gradle.build 재실행시 정상동작 확인함

반응형
image