본문 바로가기

전체 글119

자바 코딩 규칙(Java Code Conventions) 1.1 왜 코딩 규칙이 필요한가?코딩 규칙은 여러 가지 이유에서 프로그래머에게 중요하다:소프트웨어를 개발하는 일련의 모든 과정에 들어가는 비용 중 80%가 유지보수에 쓰여진다.소프트웨어의 직접 개발한 개발자가 그 소프트웨어의 유지보수를 담당하는 경우는 거의 보기 힘들다.코딩 규칙을 지키면 다른 개발자가 그 소스 코드를 처음 보았을 때, 더 빠른 시간 안에 완벽하게 이해할 수 있도록 도와주기 때문에, 소프트웨어의 가독성이 높아진다.개발자가 자신의 소스 코드를 제품으로 팔려고 한다면, 자신이 작성한 다른 소스 코드들과 잘 어울리도록 패키지(package)를 적절하게 구성할 필요가 있다. Oracle 원문 이미지 출처 - https://www.oracle.com/technetwork/java/codeconve.. 2024. 12. 10.
객체지향 프로그래밍을 하는 이유 객체지향 프로그래밍을 하는 이유구조적 설계로 역할과 책임을 기반으로 안정적인 구조를 만들어줌재사용과 변경에 유연핵심은 작은 단위로 나누기 객체지향 설계란?자율성을 가진 객체들이 서로 협력하게 분할 시키는 설계객체끼리의 역할, 책임을 적절하게 나누고 협력을 하게 만든다역할(손님, 점원), 책임(주문, 커피만들기)객체는 혼자 있을 때에 전혀 의미가 없다서비스에 비즈니스 로직이 많이 들어가면 재사용과 변경에 유연하지 못함 객체의 구성 요소상태객체가 가진 상태행동(객체지향에서 중요한 역할)객체의 상태를 변경, 행동을 통해 다른 객체와 협업식별자각 객체를 구분할 수 있는 유니크한 값 객체 지향 설계의 첫 걸음 - 행동이 상태를 정의객체 지향의 의의는 협력을 통한 목적 달성객체의 구성 요소 중 행동을 기반으로 협력.. 2024. 12. 9.
HTTP 헤더1 - 일반 헤더[전송 방식] 단순 전송 - Content-Length 메시지 바디의 컨텐츠 길이를 알 수 있을 때 단순하게 요청하고 한번에 응답받음 압축 전송 - Content-Encoding 서버에서 용량을 줄이기위해 압축해서 보낼 때 뭘로 압축해서 보냈는지 알려주기 위해 분할 전송 - Transfer-Encoding 한번에 큰 용량의 데이터를 보내면 받을 때 시간이 걸림 큰 용량의 데이터를 나눠보내서 데이터를 받는대로 바로 표시 가능 Content-Lenght가 처음에 예상이 안되고 보낼 때마다 바이트정보를 보내기 때문에 Content-Lenght를보내면 안됨 범위 전송 - Range, Content-Range 데이터를 받다가 중간에 끊겼을 때, 다시 요청하면 처음부터 다시 받기 때문에 안받은 부분만 다시 요청 2023. 1. 27.
HTTP 헤더1 - 일반 헤더[콘텐츠 협상] 협상(콘텐츠 네고시에이션) - 클라이언트가 선호하는 표현 요청 Accept: 클라이언트가 선호하는 미디어 타입 전달 Accept-Charset: 클라이언트가 선호하는 문자 인코딩 Accept-Encoding: 클라이언트가 선호하는 압축 인코딩 Accept-Language: 클라이언트가 선호하는 자연 언어 협상 헤더는 요청시에만 사용 Accept-Language 적용 전 한국어 브라우저를 사용하는 클라이언트가 다중 언어 지원 서버에 요청을 할 때 헤더에 아무 정보를 넣지 않으면 기본값인 영어로 응답이 옴 Accept-Language 적용 후 Accept-Language에 한국어로 요청하고 서버에서 응답을 한국어로 받음 Quality Values(q) - 협상과 우선순위1 한국어를 가장 선호하지만 한국어는 .. 2023. 1. 26.
HTTP 헤더1 - 일반 헤더[표현] 표현 Content-Type: 표현 데이터의 형식 Content-Encoding: 표현 데이터의 압축 방식 Content-Language: 표현 데이터의 자연 언어 Content-Length: 표현 데이터의 길이 표현 헤더는 전송, 응답 둘다 사용 Content-Type 표현 데이터의 형식 설명 미디어 타입, 문자 인코딩 ex) text/html; charset=utf-8 application/json image/png Content-Encoding 표현 데이터 인코딩 표현 데이터를 압축하기 위해 사용 데이터를 전달하는 곳에서 압축 후 인코딩 헤더 추가 데이터를 읽는 쪽에서 인코딩 헤더의 정보로 압축 해제 ex) gzip deflate identity Content-Language 표현 데이터의 자연 언.. 2023. 1. 26.
HTTP 헤더1 - 일반 헤더[HTTP 헤더 개요] 용도 HTTP 전송에 필요한 모든 부가정보 ex) 메시지 바디의 내용, 메시지 바디의 크기, 압축, 인증, 요청 클라이언트, 서버정보, 캐시 관리 정보 등 표준 헤더가 너무 많음 https://en.wikipedia.org/wiki/List_of_HTTP_header_fields 필요시 임의의 헤더 추가 가능 ex) helloworld: hihi HTTP HEADER) 헤더 분류 - RFC2616(과거) General 헤더 -- 메시지 전체에 적용되는 정보, ex) Connection: close Request 헤더 -- 요청 정보, ex) User-Agent: Mozilla/5.0 (Macintosh; ..) Response 헤더 -- 응답 정보, ex) Server: Apache Entity 헤더 -.. 2023. 1. 26.
원격의 Branch 다루기 로컬에서 Branch 만들어 원격에 Push하기 from-local Branch 만들기 git push 로 원격에 push하기 Error 발생 -- from-local Branch는 어디에 Push를 해야할지 원격 Branch의 대상 설정이 안되있기 때문 Push할 원격 Branch 대상 설정 git push -u origin from-local -- Push할 원격 Branch 대상을 설정 -u : --set-upstream의 단축 Branch를 생성하지 않아도 없다면 자동으로 생성됨 로컬에서 로컬과 원격의 Branch 모두 보기 git branch --all git branch -a 원격의 Branch 로컬에 받아오기 Github에서 from-remote Branch 생성 현재 로컬에서는 git br.. 2023. 1. 26.
HTTP 상태코드[5xx - 서버 오류] 5xx (Server Error) - 서버 오류 서버 문제로 오류 발생 서버에 문제가 있기 때문에 재시도 하면 성공할 수도 있음(복구가 되거나 등등) 500 Internal Server Error 서버 내부 문제로 오류 발생 애매하면 500 오류 503 Service Unavailable 서비스 이용 불가 서버가 일시적인 과부하 또는 예정된 작업으로 잠시 요청을 처리할 수 없음 Retry-After 헤더 필드로 얼마뒤에 복구되는지 보낼 수도 있음 2023. 1. 6.
HTTP 상태코드[4xx - 클라이언트 오류] 4xx (Client Error) - 클라이언트 오류 클라이언트의 요청에 잘못된 문법등으로 서버가 요청을 수행할 수 없음 오류의 원인이 클라이언트에 있음 클라이언트가 이미 잘못된 요청, 데이터를 보내고 있기 때문에, 똑같은 재시도가 실패함 400 Bad Request 클라이언트가 잘못된 요청을 해서 서버가 요청을 처리할 수 없음 요청 구문, 메시지 등등 오류 클라이언트는 요청 내용을 다시 검토하고, 보내야함 ex) 요청 파라미터가 잘못되거나, API 스펙이 맞지 않을 때 401 Unauthorized 클라이언트가 해당 리소스에 대한 인증이 필요함 인증(Authentication) 되지 않음 401 오류 발생시 응답에 WWW-Authenticate 헤더와 함께 인증 방법을 설명 참고 인증(Authentic.. 2023. 1. 6.