본문 바로가기

STUDY15

Kotlin / Scope Function - 범위 지정 함수 let 함수를 자주 사용하면서, scope 함수를 어느때에 사용하는것이 좋을까에 대한 의문이 생겼다. 아래의 포스트는 의문을 해소하기 위하여 Kotlin Docs를 번역한 것이다. 코틀린 표준 라이브러리는 객체 컨텍스트 내에 코드블럭을 실행하는 것이 유일한 목적인 함수를 포함하고 있다.이 함수들을 람다식을 이용해서 호출하면 일시적인 범위(scope)가 생성되는데, 이 범위 내에서는 이름이 없어도 객체에 접근이 가능하다.이러한 함수들을 ScopeFunction( 범위 지정 함수 )라 부르며, 다음의 5가지가 존재한다.letrunwithapplyalso 장점간편한 코드의 사용가독성빌더 패턴 이용부가적인 후처리 용이Notice같은 용도로 사용해야할 코드에 서로 다름 함수를 사용하거나, 지나친 다중 중첩을 사용.. 2024. 5. 31.
Authentication (인증) Authentication서버로 요청을 보낼 때, 요청 헤더에 Authorization : 을 담아 보냄.두가지 타입 존재 : Basic, Bearer Basic 인증가장 기본적인 인증 방식.인증 정보로 사용자 ID, 비밀번호를 사용base64로 코딩한 “사용자ID:비밀번호” 문자열을 Basic과 함께 인증헤더에 입력웹표준 RFC 7617Base64는 디코딩이 가능하기 때문에 반드시 HTTS, SSL/TLS로 통신해야 안전하다.https://datatracker.ietf.org/doc/html/rfc7617Authorization: Basic base64({USERNAME}:{PASSWORD}) Basic 인증의 장단점장점간단하다. ( 사용자ID, 비밀번호 외에 로그인페이지나 별도의 인증정보 요구 ㅌ)인.. 2024. 5. 21.
객체지향 프로그래밍 - 캡슐화, 추상화 특강시간에 공부한 것을 바탕으로 내용 정리! ヽ(≧□≦)ノ 개인적으로 개념적인 이해만 하고 있었던 터라, 이런 강의를 여유가 있을 때 듣는것이 얼마나 좋은 일인지… 객체 지향 프로그래밍이란?OOP, Object-Oriented Programming객체지향 프로그래밍은 컴퓨터 프로그래밍의 패러다임 중 하나. 객체지향 프로그래밍이란, 각자의 책임을 지는 객체들이 서로 협력함으로써 문제를 해결하는 것.* 패러다임 : 어떤 한 시대 사람들의 견해나 사고를 근본적으로 규정하고 있는 테두리로서의 인식의 체계, 또는 사물에 대한 이론적인 틀이나 체계를 의미하는 개념→ 프로그래밍 패러다임ex) 객체지향 프로그래밍 : 프로그래머들이 프로그램을 상호작용하는 객체들의 집합      함수형 프로그래밍 : 상태값을 지니지 않는.. 2024. 5. 13.
REST API REST?REspresentational State Transfer Resprensentation  State Transfer  표현 상태 전이  REST는 문자 그대로 상태의 전이를 표현하기 위한 HTTP상의 아키텍처 스타일이다.여기서 상태, State는 Resourse의 State를 말한다.Resource는 파일, 문서, 데이터 등을 모두 포함하고 있으며, 이러한 데이터를 응답해주는 역할을 하고, 데이터는 도메인 모델에 대한 데이터이기 때문에 Resource자체가 Domain Model을 칭한다고 해도 무방하다. Resprensentation 구성 요소URL(Resource)URL를 통해 Resource의 이름을 표현한다.e.g. /modelsMethod(Verb)HTTP의 Method를 통.. 2024. 5. 9.
DDD: Domain Driven Design 오늘 공부한 것은 많은데,, 정리하는데 시간이 좀 걸리는 것 같다. 일단 DDD부터.- DDD - REST API- SwaggerDomain Driven Design도메인 주도 설계도메인 패턴을 중심에 놓고 설계하는 방식실제 우리가 해결하려는 분야(Domain)의 핵심 문제와 비지니스 요구사항을 이해하고 이를 소프트웨어 모델에 명확히 반영하는 것을 최우선으로 한 소프트웨어 개발 방법론 왜? 써야하지?도메인 모델의 적용 범위를 구현까지 확장하여, 도메인 지식을 구현코드에 반영한다.공통의 언어(유비쿼터스언어)를 사용하여 도메인과 구현을 충분히 만족하는 모델을 만든다.실제 코드로 구현 가능한 현실성이 있는 도메인 모델 분석과 그것을 추상화 하는 설계다. 분류전술적 설계 (Tactical Design)각 영역(.. 2024. 5. 7.
Network - TCP/IP IP패킷들을 가장 효율적인 방법으로 최종 목적지로 전송하기 위해 필요한 프로토콜패킷 전달 여부를 보장하지 않고, 순서 역시 보장하지 않음 TCP패킷을 안전하게 전달해주는 전송 프로토콜IP위에서 동작, 데이터의 전달 보장, 순서 보장 그렇다면, TCP/IP란?TCP/IPIP + TCP = 인터넷 프로토콜 + 전송 제어 프로토콜TCP를 기반으로 한(신뢰성 통신을 하는) HTTP,FTP,SMTP 등 수 많은 프로토콜들이 IP위에서 동작하기에 묶여서 TCP/IP라고 한다.→ 효율적으로 빠르게(IP) 보내면서 안전하게 (TCP) 전달해주려는 목적현재 인터넷 통신에 있어 가장 기반이 되는 프로토콜이다. 2024. 5. 3.
Network - IP Address (Internet Protocol Address) IP송신 호스트와 수신 호스트가 패킷교환 네트워크에서 정보를 주고받는데 사용하는 정보 위주의 규약.OSI 네트워크 계층에서 호스트의 주소 지정과 패킷 분할 및 조립 기능 담당.패킷들을 가장 효율적인 방법으로 최종 목적지로 전송하기 위해 필요한 프로토콜패킷 전달 여부를 보장하지 않고, 순서 역시 보장하지 않음 IP Address컴퓨터 네트워크에서 장치들이 서로를 인식하고 통신하기 위해 사용하는 특수한 번호.서버가 들어가지 않으면, IP가 안전하지 않다고 한다.IPv4와 IPv6 두가지 체계가 있다. (2022 기준)IPv4 (IP version 4)가장 널리 사용되는 IP 주소.32bit의 값을 가지며, 보통 8bit씩 끊어 0~255의 10진수 수로 나타낸다. 각각의 숫자는 점(.)으로 구분한다.43억개.. 2024. 5. 2.
Network - TCP (Transmission Control Protocol) TCP패킷을 안전하게 전달해주는 전송 프로토콜. IP위에서 동작한다.데이터의 전달을 보장하고, 순서 또한 보장한다. 특징1) 신뢰성 : 데이터의 분실, 중복, 혹은 오류가 발생할 경우 재전송2) 연결 지향적 : 통신 시작 전 송수신자를 연결3) 흐름 제어 : 혼잡도를 감지하여 데이터 전송 속도를 조절해 통신을 보다 효율적으로 유지4) 순서 보장 : 데이터는 전송된 순서대로 도착 흐름 제어 : 송신측과 수신측의 데이터 처리 속도의 차이를 해결하기 위한 기법혼잡 제어 : 송신측의 데이터 전달과 네트워크의 데이터 처리 속도 차이를 해결하기 위한 기법 TCP 동작 과정연결 설정 - 3 way handshake두 종단 간 정확한 데이터 전송을 보장하기 위해 연결을 설정하는 과정클라이언트에서 연결 생성을 위해 SY.. 2024. 5. 1.
Kotlin / Conditions and Loops (If, When, For, While) when문을 사용하다, 이런 문법도 되는걸까? 싶은 부분이 있어 Kotlin Docs를 살펴보게 되었다. 그 김에 해당 페이지를 번역하는 겸 개인 공부를 하는 시간을 조금 가졌다.사람은 모르면 역시, 공식 문서를 읽어봐야합니다. If코틀린에서, if 표현식은 : value를 반환한다. 그렇기 때문에, 삼항연산자(condition ? then : else) 가 없다. 왜냐하면, if로 충분히 해당 역할을 할 수 있기 때문이다. → if문과 else문이 직접 값을 반환.만약 사용하고 있다면, 당신은 java style의 코드를 작성하고 있는 것이다.var max = aif (a b) { max = a} else { max = b}// As expressionmax = if (a > b) a el.. 2024. 4. 30.
Kotlin / 숫자 야구 게임 숫자 야구 게임, 좋아하세요? 저는 야구라면 환장을 하는 나머지 게임으로도 만들어 보았습니다.요구사항프로그램 실행시 아래의 메뉴를 출력한다.환영합니다! 원하시는 번호를 입력해주세요1. 게임 시작하기 2. 게임 기록 보기 3. 종료하기1번 선택 -> 숫자 야구 게임을 실행합니다.2번 선택 -> 프로그램이 최초 실행된 이후의 게임 기록을 보여줍니다.3번 선택 -> 프로그램이 종료됩니다.1번 - 게임 시작하기게임 시작하기 기능을 실행하면, 숫자 야구 게임을 실행합니다.서로 다른 숫자 3개를 입력하면 힌트를 제공합니다.같은 자리에 같은 숫자가 있는 경우 스트라이크(S), 다른 자리에 숫자가 있는 경우 볼(B)입니다.3S가 나오면 게임을 종료합니다.입력한 숫자가 정답에 하나도 없다면 OUT을 나타냅니다.2번 - .. 2024. 4. 30.
[Git] Commit Message Convention 지난주 제출한 계산기 과제를 기반으로 피드백을 2가지 받았다. 2가지 피드백은 전부 git을 통한 협업과 관련된 피드백이었는데, 사실 제출하고 나서 git convention 등에 대한 설명을 들어서 이런 피드백이 올 것이라곤 예상했었다!이 기회를 살려 앞으로 어떤식으로 작성해볼지에 대해 공부하고 정의하는 시간을 가질 수 있을 것 같다. 1. 깃 커밋 컨벤션, 왜 사용할까?커밋 컨벤션을 지정해서 사용하는 이유는 다양하지만, 크게 2가지를 꼽자면 아래의 2개라고 생각한다.1. 가독성 및 커뮤니케이션 효율성 제고일관된 형태의 커밋 메시지는 가독성이 높다. 그렇기 때문에 다른 개발자의 작업 내역 및 변경 사항들을 쉽게 파악가능하다. 2. 변경 이력 추적 및 문제 해결 속도 향상일관된 커밋 메시지를 통해 소스 .. 2024. 4. 29.
Kotlin / 고차함수와 람다 Lambda lambda 와 익명 함수는 함수 리터럴(function literals)이라고도 불린다.함수 리터럴은 선언되지 않고 표현 그대로 바로 전달될 수 있다. ( 함수 리터럴은 선언되지 않았지만 즉시 표현식으로 전달됨)max(strings, { a, b -> a.length 함수의 마지막 매개 변수가 함수라면 괄호 밖으로 람다 식을 배치할 수 있다.만약 함수의 매개 변수가 하나라면 괄호 내에서 it 으로 표현된다.val listOne = listOf(1, 2, 3).map({it + 1}) // 원래는 이렇지만val listTwo = listOf(1, 2, 3).map { it + 1 } // 이렇게 쓸 수도 있다.리턴 값이 있어야 하는 함수 리터럴은, 마지막 줄이 리턴 값이 된다. 혹은 qual.. 2024. 4. 25.