728x90
반응형

분류 전체보기 104

[개발상식] 디자인 패턴

소프트웨어 디자인 패턴이란? 소프트웨어 개발 방법으로 사용되는 디자인패턴(Desigin Pattern)은 과거의 소프트웨어 개발 과정에서 발견된 설계의 노하우를 축적하여 그 방법에 이름을 붙여서 이후에 재사용하기 좋은 형태로 특정 규약을 만들어서 정리한 것이다. 디자인 패턴은 소프트웨어 설계에 있어 공통적인 문제들에 대한 표준적인 해법과 작명법을 제안하며, 알고리즘과 같이 프로그램 코드로 바로 변환될 수 있는 형태는 아니지만, 특정한 상황에서 구조적인 문제를 해결하는 방식입니다. 즉 "효율적인 코드를 만들기 위한 방법론"이라고 생각하시면 된다. 디자인 패턴은 외우기보다는 어떠한 패턴이 있는지 알고 수많은 디자인 패턴에서 다양한 코딩 노하우를 습득하는것이 중요하다고 생각한다. "이 코드에는 무조건 이 패턴..

CS/개발상식 2023.07.01

[백준] 13249 공의 충돌 (파이썬)

골드 Ⅴ https://www.acmicpc.net/problem/13249 13249번: 공의 충돌 무게가 모두 같고, 크기가 0인 공 N개가 일직선 위에 놓여져 있다. 오른쪽으로 굴러가는 공과 왼쪽으로 굴러가는 공이 같은 속도로 충돌하면, 속도는 변하지 않고 공의 진행 방향만 바뀌게 된다. www.acmicpc.net 📄 문제 무게가 모두 같고, 크기가 0인 공 N개가 일직선 위에 놓여져 있다. 오른쪽으로 굴러가는 공과 왼쪽으로 굴러가는 공이 같은 속도로 충돌하면, 속도는 변하지 않고 공의 진행 방향만 바뀌게 된다. 공 N개의 위치가 주어진다. 효빈이는 공 N개의 진행 방향(오른쪽, 왼쪽)을 같은 확률로 결정한다. 시간 0일 때, 효빈이는 공을 결정한 방향으로 동시에 1초에 1만큼 이동하는 속도로 굴..

[스프링] 관점 지향 프로그래밍 (AOP)

AOP의 등장 배경 객체 지향 프로그래밍 (OPP, Object-oriented Programming) 공통의 목적이 있는 데이터와 동작을 묶어서 하나의 객체로 정의하는 것이다. 객체를 적극적으로 활용함으로써 기능을 재사용할 수 있는 것이 가장 큰 장점이다. 여기서 말하는 객체를 잘 활용하기 위해서는 관심사 분리(SoC, Seperation of Concerns)의 디자인 원칙을 준수해야 한다. Spring MVC에서는 @Controller, @Service, @Repository와 같이 관심사별로 계층을 나눠 객체를 관리하게 된다. 이 관심사의 분리는 모듈화의 핵심이 된다. 객체 지향 프로그래밍의 한계 점 특정 관심사 업무 코드에 트랜잭션, 로깅, 보안 등은 필수적인 부가기능이기 때문에 업무 기능과는 ..

Programming/Spring 2023.06.29

[개발상식] 객체 지향 프로그래밍 (OOP)

객체 지향 프로그래밍은 컴퓨터 프로그래밍의 패러다임 중 하나이다. 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다. - 위키피디아 - 객체지향 프로그램밍(Object-Oriented Programming)은 프로그래밍 패러다임 중 하나로, 상태(state)와 행위(behave)로 이루어진 객체들간의 상호작용을 통해 프로그램을 설계, 개발 하는 것이다. 즉, 쉽게 말해 객체지향 프로그래밍은 객체를 만드는 것이다. '객체' 라는 말은 Object를 직역한 말인데, 쉽게 말해 변수와 메소드를 그룹핑 한 개념이다. 즉, 프로그래밍에서 필요한 데이터..

CS/개발상식 2023.06.29

[네트워크] TLS/SSL HandShake

TLS / SSL 이란? SSL(Secure Sockets Layer)은 보안 프로토콜로서, 개인정보 보호, 인증, 무결성 을 인터넷 통신에 제공한다. SSL/TLS를 사용하는 웹사이트의 URL에는 "HTTP" 대신 "HTTPS" 가 있다. SSL 이란 명칭은 TLS(Transport Layer Security)로 발전했다. 최근 명칭: TLS(Transport Layer Security) 과거 명칭: SSL(Secure Sockets Layer) SSL의 인지도가 크기 때문에 TLS을 SSL로 부르며 사용한다. Certificate Authority(CA)라 불리는 서드 파티로부터 서버와 클라이언트의 인증을 하는데 사용된다. 주로 전송계층과 응용계층 사이에서 보안조치를 하는데 사용하게 된다. SSL (..

CS/Network 2023.06.28

[네트워크] HTTP와 HTTPS의 차이점

HTTP는 암호화가 추가되지 않았기 때문에 보안에 취약한 반면 HTTPS는 안전하게 데이터를 주고 받을 수 있습니다. 다만, HTTPS는 암호화/복호화 과정이 필요하기 때문에 요즘은 거의 큰 차이를 못느끼지만 HTTP보다 속도가 느리고 인증서를 발급하고 유지하기 위한 추가비용이 발생할 수 있습니다. HTTP (Hyper Text Transfer Protocol) 인터넷 상에서 클라이언트와 서버가 자원을 주고 받을 때 쓰는 통신 규약이다. 즉, 서버/클라이언트 모델을 따라 데이터를 주고 받기 위한 프로토콜이다. 서로 다른 시스템들 사이에 통신을 주고 받게 해주는 가장 기본적인 프로토콜이다. 인터넷에서 하이퍼텍스트를 교환하기위한 통신규약이다. 요청(Request)과 응답(Response)으로 구성되어 있으며..

CS/Network 2023.06.27

[네트워크] 대칭키와 공개키

대칭키 암호화 방식은 암복호화에 사용하는 키가 동일한 암호화 방식을 말한다. 공개키 암호화 방식은 암복호화에 사용하는 키가 서로 다른 암호화 방식을 말한다. (비대칭키 암호화라고도 한다.) 대칭키(Symmetric Key) 암호화와 복호화에 같은 암호키(대칭키)를 사용하는 알고리즘 하나의 키를 양쪽(client & server)가 같이 사용한다. 대칭키는 암복호화키가 동일하므로 해당 키를 아는 사람이 문서를 복호화할 수 있게 된다. 장점 동일한 키를 주고받기 때문에 공개키 암호화 방식에 비해 암호화 및 복호화 속도가 빠르다. 비교적 간편하다. 단점 암호화 통신을 하는 사용자끼리 같은 대칭키를 공유해야만 한다. (키를 교환해야 하는 문제가 발생) 이게 왜 단점? 물리적으로 직접 만나서 전달하지 않는 한, ..

CS/Network 2023.06.26

[개발상식] 프로그래밍 패러다임

프로그래밍 패러다임(programming paradigm)이란? 특정 관점과 접근 방식에 따른 개발자의 코딩방식 프로그래밍(Programming) 이란? 하나 이상의 관련된 추상 알고리즘을 특정한 프로그래밍 언어를 이용해 구체적인 컴퓨터 프로그램으로 구현하는 기술을 의미한다. 패러다임(Paradigm) 이란? 어떤 한 시대 사람들의 견해나 사고를 근본적으로 규정하고 있는 테두리로서의 인식의 체계, 또는 사물에 대한 이론적인 틀이나 체계를 의미하는 개념을 의미한다. 프로그래밍 + 패러다임(Programming Paradigm)이란? 개발자가 프로그래밍을 위해 어떠한 '관점'을 가지고 개발을 할지에 대해서 결정을 하는데 도움을 주는 것을 의미한다. 프로그래밍 패러다임의 변화 '프로그래밍 패러다임'이라 하면 ..

CS/개발상식 2023.06.25

[개발상식] 프레임워크와 라이브러리의 차이점

프레임워크(Framework)란? 컴퓨터 프로그래밍에서, 소프트웨어 프레임워크(software framework)는 복잡한 문제를 해결하거나 서술하는 데 사용되는 기본 개념 구조이다. 간단히 뼈대, 골조(骨組), 프레임워크(framework)라고도 한다. - 위키백과 - 프레임워크는 애플리케이션 개발 시 필수적인 코드, 알고리즘, DB 커넥션 등의 기능들을 위해 뼈대(구조)를 제공한다. 개발자는 이러한 뼈대 위에서 코드를 작성해 원하는 애플리케이션을 개발할 수 있다. 프레임워크는 소프트웨어의 구체적인 부분에 해당하는 설계와 구현을 재사용이 가능하게끔 상호 협력하는 클래스와 인터페이스의 집합이라고 할 수 있다. 쉽게 말해 프레임워크는 개발자가 개발을 쉽게 할 수 있도록 뼈대를 제공해준다고 생각하면 된다. ..

CS/개발상식 2023.06.25

[네트워크] UDP

UDP 통신이란? User Datagram Protocol의 약자로 데이터를 데이터그램 단위로 처리하는 프로토콜이다. 비연결형, 신뢰성 없는 전송 프로토콜이다. 데이터그램 단위로 쪼개면서 전송을 해야하기 때문에 전송 계층이다. Transport layer에서 사용하는 프로토콜이다. TCP와 UDP는 왜 나오게 됐는가? IP의 역할은 Host to Host (장치 to 장치)만을 지원한다. 장치에서 장치로 이동은 IP로 해결되지만, 하나의 장비안에서 수많은 프로그램들이 통신을 할 경우에는 IP만으로는 한계가 있다. 또한, IP에서 오류가 발생한다면 ICMP에서 알려준다. 하지만 ICMP는 알려주기만 할 뿐 대처를 못하기 때문에 IP보다 위에서 처리를 해줘야 한다. 1번을 해결하기 위하여 포트 번호가 나오게..

CS/Network 2023.06.23
728x90
반응형