본문 바로가기

전체 글46

MVC란 무엇인가? 개발자라면 MVC에 대해서 많이 들어보지 않았는가? 이번 글에서는 소프트웨어 디자인 패턴 중 하나인 MVC 패턴에 대해서 학습하면서 궁금하거나 고민했던 내용을 함께 기록해보려 한다. MVC 패턴은 무엇일까? 먼저 MVC 패턴의 정의와 Model-View-Controller는 무엇인지 살펴보자. MVC 패턴이란 MVC 패턴이 무엇인지 MDN Web Docs에서 정의한 내용을 살펴보았다. MVC(모델-뷰-컨트롤러)는 사용자 인터페이스, 데이터 및 논리 제어를 구현하는데 널리 사용되는 소프트웨어 디자인 패턴이다. 소프트웨어의 비즈니스 로직과 화면을 구분하는데 중점을 두고 있으며, 이러한 관심사 분리 는 더나은 업무의 분리와 향상된 관리를 제공한다. 또한 구글링을 통해서 찾아본 많은 자료들의 내용은 다음과 같다.. 2024. 1. 16.
자바의 장단점 장점 플랫폼 독립성 - 하드웨어 또는 운영체제와 같은 플랫폼에 독립적으로 실행 가능한 특성 - 자바는 Java Virtual Machine(JVM)을 기반으로 동작하기 때문에 자바로 만든 프로그램은 어떤 환경에서도 완벽히 똑같이 동작한다. 개발자가 많다 - 이게 무슨 장점이냐 할 수 있겠지만, 나온지 오래된 언어인 만큼 개발자 커뮤니티가 활성화되어 있어 정보 습득에 유리하다. 객체 지향 언어 - 신뢰성 있는 소프트웨어를 손쉽게 작성 가능하다. - 코드 재사용이 유리하다. - 객체지향 패러다임의 특성상 비교적 이해하고 배우기 쉽다. 오픈 소스 - 이용자들에 의해 기존 문제가 해결되고 발전하며 운영되기 때문에 발전 속도가 빠르고 정보를 얻기 쉽다. - 오픈소스 라이브러리가 풍부해 짧은 시간 내 안정적인 애플.. 2024. 1. 16.
컴퓨터구조론 (코드 실행 메모리 구조) 메모리의 구조 프로그램이 실행되기 위해서는 먼저 프로그램이 메모리에 로드(load)되어야 한다. 메모리가 올라가지 않은 상태는 그저 코드 덩어리일 뿐.. 메모리가 올라간다는 것은 코드의 부분부분에 적당한 메모리가 할당이 된다는 말이다. 따라서 컴퓨터의 운영체제는 프로그램의 실행을 위해 다양한 메모리 공간을 제공하고 각각의 메모리 공간은 상호작용하며 프로그램 실행에 기여한다. 프로그램이 운영체제로부터 할당받는 대표적인 메모리 공간은 다음과 같다. 1) 코드(code) 영역: 실행할 프로그램의 코드 2) 데이터(data) 영역: 전역 번수, 정적(static) 변수 3) 스택(stack) 영역: 컴파일 타임에 크기가 결정됨 4) 힙(heap) 영역: 런타임시 크기가 결정됨(동적할당) 컴파일 타임: 소스코드가.. 2023. 12. 25.
전자정부프레임워크란? 1. 전자정부프레임워크가 뭘까요? https://www.egovframe.go.kr/EgovIntro.jsp?menu=1&submenu=1 위 링크는 전자정부프레임워크의 소개 페이지 입니다. 위 페이지에 나온 내용은 아래와 같습니다. 등장배경 및 목적 개발프레임워크는 정보시스템 개발을 위해 필요한 기능 및 아키텍처를 미리 만들어 제공함으로써 효율적인 어플리케이션 구축을 지원합니다. “전자정부 표준프레임워크”는 공공사업에 적용되는 개발프레임워크의 표준 정립으로 응용 SW 표준화, 품질 및 재 사용성 향상을 목표로 합니다. 이를 통해“전자정부 서비스의 품질향상” 및 “정보화 투자 효율성 향상”을 달성하고, 대ㆍ중소기업이 동일한 개발기반 위에서 공정 경쟁이 가능하게 됩니다. ※ 표준프레임워크는 기존 다양한 플.. 2023. 12. 24.
간단하게 알아보자! Cookie, Session, Token, JWT, Cache 👍 (19) 세션 vs 토큰 vs 쿠키? 기초개념 잡아드림. 10분 순삭! - YouTube 은근히 헷갈려하는 것들 중에 포함 되는 것이 바로 이 쿠키(Cookie), 세션(Session), 토큰(Token), JWT(조트 or 제이더블유티)이다. 처음 코딩을 시작하는 분들이라면 아직까지는 알 필요 없을 수도 있지만, 이제 1년차가 되어가는 분들, 그리고 취준생분들이라면 그 개념을 확실히 해놔야 지금 당장 사용하지 않더라도 대화를 알아들을 수 있고 이해할 수 있을 것이라고 생각한다. ... ... ... 1. 쿠키 (Cookie) 우선 쿠키(Cookie)에 대해서 알아보자. 쿠키라는 것을 이용해서 서버는 내가 찾은 정보 등의 데이터를 나의 브라우저에 넣을 수 있다. 우리는 흔히 어떠한 사이트에 방문하고, 검.. 2023. 12. 24.
쿠키(Cookie)와 세션(Session)의 차이 (+캐시(Cache)) 쿠키와 세션을 사용하는 이유? HTTP 프로토콜의 특징이자 약점을 보완하기 위해서 사용한다. HTTP 프로토콜의 특징 1. Connectionless 프로토콜 (비연결 지향) 클라이언트가 서버에 요청(Request)을 했을 때, 그 요청에 맞는 응답(Response)을 보낸 후 연결을 끊는 처리방식이다. HTTP 1.1 버전에서 커넥션을 계속 유지하고, 요청(Request)에 재활용하는 기능이 추가되었다. (HTTP Header)에 keep-alive 옵션을 주어 커넥션을 재활용하게 한다. HTTP 1.1 버전에선 디폴트(default) 옵션이다. HTTP가 TCP위에서 구현되었기 때문에(TCP : 연결 지향, UDP : 비연결 지향) 연결 지향적이라고 할 수 있다는 얘기가 있어 논란이 있지만, 아직까진.. 2023. 12. 24.
REST API 사용이유 1. REST API의 탄생 REST는 Representational State Transfer라는 용어의 약자로서 2000년도에 로이 필딩 (Roy Fielding)의 박사학위 논문에서 최초로 소개되었습니다. 로이 필딩은 HTTP의 주요 저자 중 한 사람으로 그 당시 웹(HTTP) 설계의 우수성에 비해 제대로 사용되어지지 못하는 모습에 안타까워하며 웹의 장점을 최대한 활용할 수 있는 아키텍처로써 REST를 발표했다고 합니다 REST란? REST는 분산 시스템 설계를 위한 아키텍처 스티일 입니다. 아키텍처 스타일이라는건 쉽게 말하면 제약 조건의 집합이라고 보면 됩니다. RESTful은 무엇인가? RESTful은 윙의 제약 조건의 집합(아키텍처 스타일, 아키텍처 원칙)을 모두 만족 하는것을 의미합니다. R.. 2023. 12. 19.
OOP(Object-Oriented Programming, 객체 지향 프로그래밍) 이란? 객체(Object)란 '의사나 행위가 미치는 대상'을 의미하는 것으로 객체 지향 프로그래밍(Object Oriented Programming)은 객체들 간의 상호작용을 기반으로 로직을 구성하는 하는 프로그래밍 방법이다. Java는 대표적인 객체 지향 프로그래밍 언어이다. 객체 지향 프로그래밍 과정을 3가지로 정리하면 아래와 같다. 객체를 정의한다. 객체의 기능을 구현한다. 객체 사이의 상호작용을 구현한다. 예를 들어, 학생이 학교까지 가는 과정을 객체 지향 프로그래밍 방식으로 간단하게 도식화를 한다면 아래와 같이 정리할 수 있다. 객체 지향 프로그래밍의 장단점 장점 코드 재사용이 용이함 - 상속을 통해 코드 재사용을 할 수 있고 남이 만든 클래스를 쉽게 이용할 수 있다. 생산성이 향상됨 - 클래스 단위로.. 2023. 12. 18.
자바 프로그램 실행 과정 및 기본 구조 1. 자바 프로그램 실행 과정 1.1. JVM 2. 자바의 기본 구조 3. 자바 프로그램 분석 1. 자바 프로그램 실행 과정 Java언어로 프로그래밍된 파일을 Java컴파일러가 가상 기계어 파일인 Java클래스 파일로 만든다. 다시 말해, 소스 코드를 Java바이트 코드로 번역한다. 이후 Java바이트 코드를 JVM이 읽고 실행하게 된다. ● 자바 바이트 코드 JVM이 이해할 수 있는 언어로 변환된 자바 소스 코드를 의미한다. 자바 컴파일러에 의해 변환되는 코드의 명령어 크기가 1바이트라서 자바 바이트 코드라고 불린다. 이러한 자바 바이트 코드의 확장자는. class이며 자바 바이트 코드는 자바 가상 머신만 설치되어 있으면, 어떤 운영체제에서 라도 실행될 수 있다. 1.1. JVM이란? JVM은 Java.. 2023. 12. 18.
HTTP 상태 코드 정리 와탭에서 제공하는 URL Monitoring은 웹서비스의 장애를 알려주는 서비스입니다. 웹서비스에서 반환되는 상태 코드가 4xx, 5xx로 나타나는 경우, 경고 알람을 보내도록 되어 있습니다. 웹서비스에서 반환되는 상태 코드는 HTTP STATUS CODE라고 불리우며, 대표적인 상태 코드로는 "404 Not Found"가 있습니다. W3 RFC 2616 상태 코드 정리 바로가기 모질라 재단 상태 코드 정리 바로가기 IETF의 RFC 2616 바로가기 상태 코드는 3자리 숫자로 만들어져 있으며, 첫번째 자리는 1에서 5까지 제공됩니다. 첫번째 자리가 4와 5인 경우는 정상적인 상황이 아니기 때문에 사이트 관리자가 즉시 알아야 하는 정보입니다. 1xx(정보) : 요청을 받았으며 프로세스를 계속 진행합니다... 2023. 12. 18.
[Spring Security] 일반 로그인과 소셜 로그인 (oauth2) 그리고 JWT 1. 인증과 인가 먼저 인증(Authentication)가 인가(Authorization)에 대해서 알고 넘어가야 한다. 1) 인증 사용자의 신원을 확인하는 과정이 인증이다. 비행기 티켓을 구매하려면 여권을 보여줘야 하는 것처럼 어떠한 사이트에 접속하기 위해서는 아이디와 패스워트를 입력하는 것이다. 2) 인가 사용자가 권한을 얻는 과정이 인가이다. 비행기에 탑승할 때는 여권을 보여줘 증명하지 않아도 된다. 비행기 티켓이 있기 때문이다. 인터넷에서는 티켓의 역할을 하는 것이 토큰이다. 2. Spring Security 애플리케이션의 보안을 담당하는 Spring 하위 프레임워크이다. 저 자세한 설명을 아래 블로그를 참고 바란다. 아키텍처 흐름대로 설명해주시고 실제 코드까지 있어서 설명이 기가막히다👍 한번에 .. 2023. 12. 17.
Ajax 란? JavaScript, XMLHttpRequest 웹 페이지에서 데이터를 서버로부터 비동기적으로 가져오고 화면을 새로 고치지 않고도 동적으로 업데이트할 수 있게 해줍니다. 이전에는 전체 페이지를 다시 불러와야 했지만, Ajax를 사용하면 필요한 데이터만 서버로 요청하고, 그 응답을 받아와 페이지의 일부분만 업데이트 할 수 있습니다. 장점 비동기 통신으로 새로고침 하지 않고 데이터를 주고 받는다. 필요한 데이터만 전송하므로 화면에 빠르게 표시할 수 있고 (빠른 응답), 서버 부하를 줄일 수 있다. 일부분만 업데이트 되므로 사용자가 작업중인 내용이나 위치에는 영향을 끼지지 않는다. 다양한 기능(무한 스크롤, 아이디 중복확인..) 단점 클라이언트 사이드에서 실행되므로 보안에 취약할 수 있따. 페이지 이동이 없는.. 2023. 12. 17.
process/thread /프로세스(Process)와 스레드(Thread)의 차이점 프로세스의 자원 구조 프로그램이 실행되어 프로세스가 만들어지면 다음 4가지의 메모리 영역으로 구성되어 할당 받게 된다. 출처: https://inpa.tistory.com/entry/👩‍💻-프로세스-⚔️-쓰레드-차이 [Inpa Dev 👨‍💻:티스토리] 프로그램(Program)과 프로세스(Process) 프로세스와 스레드에 대해 알기전에 먼저 프로그램과 프로세스의 차이에 대해 알아보자. 프로그램: 실행되기 전 상태의 명령어, 코드 및 정적인 데이터의 묶음 프로세스: 실행중인 프로그램, 컴퓨터로부터 자원을 할당 받는 작업의 단위 즉, 프로그램은 실행할 수 있는 파일이고, 프로세스는 실행되고 있는 컴퓨터 프로그램이다. 프로세스(Process)와 스레드(Thread) 이제 프로그램과 프로세스가 무엇인지는 조금이.. 2023. 12. 17.
REST API 는 무엇인가? 한줄요약: HTTP 메소드를 사용하여 서버와 클라이언트간 자원을 활용하는 방법을 정의한 것. REST API : Representational State Transfer Application Programming Interface HTTP 메소드를 이용하여 URI에 대한 행위를 정의하는 것. HTTP URI를 통해 자원을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD 를 적용하는 것 자원(ROA: Resource Oriented Architecture)기반구조 RESTful : REST API의 설계 의도를 정확하게 지켜주는 API를 통칭하는 말. RESful 한 API는 구성요소들의 역할이 명확하게 분리되어있어야 한다. URI는 자원을 정확.. 2023. 12. 17.
HTTP Request/Response 구조 HTTP 메시지는 서버와 클라이언트 간에 데이터가 교환되는 방식입니다. 메시지 타입은 두 가지가 있습니다. 요청('request')은 클라이언트가 서버로 전달해서 서버의 액션이 일어나게끔 하는 메시지고, 응답('response')은 요청에 대한 서버의 답변입니다 HTTP 개념 HTTP는 HyperText Transfer Protocol의 약자이다. 그렇다면 HyperText와 Transfer Protocol 은 무엇일까? Transfer Protocol: 통신 장비 간 데이터 교환 방식에 대해 합의한 내용이다. 통신을 원하는 두 개체가 무엇을, 어떻게 통신할 것인가에 대해 약속하고 이를 규칙으로 정의해놓은 것이라 보면 된다. 데이터의 형식(아날로그 or 디지털), 부호화(Unicode, ASCII), 신.. 2023. 12. 16.
동기 방식과 비동기 방식 데이터 처리 모델 데이터 처리 모델을 쉽게 표현하자면 데이터를 받는 방식이라고 할수 있습니다. 이 방식에는 동기식 처리와 비동기식 처리 모델이 존재합니다. 이 둘의 개념에 대해 알아보고 둘의 차이점을 알아보겠습니다. 동기 (synchronous : 동시에 일어나는) 동기는 데이터의 요청과 결과가 한 자리에서 동시에 일어나는것을 말합니다. 요청을 하면 시간이 얼마나 걸리던지 요청한 자리에서 결과가 주어져야 합니다. 사용자가 데이터를 서버에게 요청한다면 그 서버가 데이터 요청에 따른 응답을 사용자에게 다시 리턴해주기 전까지 사용자는 다른 활동을 할 수 없으며 기다려야만합니다. 동기 작업은 순차적으로 진행된다. - 한 작업이 끝나야 다음 작업이 실행 서버로 요청(request)을 보내고 응답(response).. 2023. 12. 16.