프로그래밍 공부
[OOP] 객체지향 프로그래밍
1. OOP란? OOP란 객체지향 프로그래밍 (Object Oriented Programming)의 약자로, 프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체로 취급하여 프로그램에 반영하고, 순차적으로 프로그램이 동작하는 것과는 다르게 객체의 상호작용을 통해 프로그램이 동작하는 것을 말한다. 객체를 연결시켜 프로그래밍하면 상속, 캡슐화, 다형성을 이용해 코드 재사용을 증가시키고, 높은 유지보수성과 더불어 객체들끼리 서로 메시지를 주고받으며 동작할 수 있게 된다. 2. OOP의 장단점 2.1 장점 코드 재사용이 용이 남이 만든 클래스를 가져와서 이용할 수 있고 상속을 통해 확장해서 사용할 수 있다. 쉬운 유지보수 절차 지향 프로그래밍에서는 코드를 수정해야할 때 일일이 찾아 수정해야하는 반면..
[TDD] Test-Driven-Development란 무엇인가
1. TDD란 무엇인가 많은 개발자들이 개발보다는 디버깅에 많은 시간을 소요한다고 한다. '만들긴 했는데... 문제가 있어...!' '조금 수정했는데... 갑자기 프로그램이 안 돌아가!' 싶은 문제들이 계속 발견된다는 것. "왜... 되는 거지?"와 "왜... 안 되는 거지?"가 반복되다 보면 개발자들은 절망에 빠지게 된다. 사실 나도 해야 되는데... 만 생각하고 늘 미루던 것이 TDD였기에, 우테코에서 실행하며 계속 감을 잡고 있는 중이다. 1.1 TDD란 이때, 이를 해결하기 위한 방법으로 나타난 것이 TDD, 즉 Test Driven Development이다. 이는 말 그대로 테스트가 주도하는 개발을 의미하는데, 반복 테스트를 이용한 소프트웨어 방법론으로, 작은 단위의 테스트 케이스를 작성하고 이..
[Regex] 정규식이란?
1. Regex, 왜 필요하지? 프리코스 3주차에서도 Regex와 관련된 포스팅을 한 적이 있는데, (그때는 배웠던 내용중의 일부로 넣었었다.) 이번에도 피드백을 받는 과정에서 정규식과 관련된 이야기들이 나와서, 정규식을 조금 더 정리해보려고 한다 정규식에서 입력받는 부분등에 있어 늘 if문으로 처리하면 조건이 까다롭고, 엄청나게 많은 if문이 필요하게 된다. 이런 상황에서 효과적으로 사용할 수 있는 것이 바로 regex, 즉 정규표현식이다. 2. Regex란? 정규 표현식은 줄여서 정규식이라고도 하며, 영어로는 Regular Expression, 줄여서 regex, regexp라고도 한다. 초반에는 편집기의 패턴매칭을 시작으로 사용되었으며, 수학적인 의미에서 시작되었다고 하며, 특정한 규칙을 가진 문자..
[JUnit5] 테스트 기초 알아보기
우테코를 하며... 처음으로 말로만 들어보던 "TDD" 를 시작했다. 프리코스에서도 최대한 적용해보려고 했으나... 못했던 부분이기에 최대한 서치와 공부를 하며 기초적인 부분을 쌓았던 부분을 정리하고자 한다. 아직 앞으로 공부할게 잔뜩이다. 화이팅!!!! 1. JUnit5 5란? 테스트를 위한 프레임워크로, Java 8 이상의 버전에서 적용된다. JUnit5의 세부 모듈은 Jupiter, Vintage, JUnit Platform 으로 구성되어있다. JUnit Platform JVM에서 테스트 프레임워크를 실행하는데 기초를 제공한다. TestEngine API를 제공해 테스트 프레임워크를 개발할 수 있다. Jupiter & Vintage Jupiter와 Vintage는 JUnit Platform이 제공하..
[Spring] JsssionID란?
기존에 진행하던 프로젝트를 수정하는 과정에서 JESSIONID에 대한 이야기가 나와서, 한번 깔끔하게 정리하고자 포스팅해보고자 한다. (그냥 가볍게 java의 SessionID 아니려나? 라는 생각도 들었으나... 오늘 우테코에서 메타 인지 이야기도 나온 김에...) 1. JSESSIONID 란? 톰캣 컨테이너에서 세션을 유지하기 위해 발급하는 키이다. 즉, 세션에서 사용되는 쿠키이름이다. 쿠키는 클라이언트에 그리고 세션은 서버에 저장되는 걸로 알고있는게 일반적이고, 그러므로 쿠키보단 세션이 보안에 좋다고 이전에 공부했다. 하지만 세션 또한, 쿠키 형태로 서버와 클라이언트간에 주고 받는다. HTTP 프로토콜은 기본적으로 stateless(무상태)하다. 즉, 상태정보를 유지하지 않기 때문에, 톰캣은 JSE..
[React / Spring] CORS 이슈 해결하기
CORS 이슈란? CORS(Cross-Origin Resource Sharing)는 클라이언트와 서버의 포트가 다른 상태에서 클라이언트 측에서 서버 측으로 무언가를 요청했을 때 브라우저가 보안상의 이유로 요청을 차단하는 문제입니다. 가령 클라이언트 측의 포트가 3000이고 서버 측의 포트가 8000이라면 보안상의 이유로 차단됩니다. 웹개발시에 빈번하게 발생하는 에러로, 아래와같이 웹 브라우저에서 ajax, axios 등을 사용해 도메인의 서버에 url(Data)를 호출할 경우 나타내는 보안문제를 말합니다. SOP이란? Same-origin policy의 줄임말로 같은 Origin에만 요청을 보낼 수 있게 제한하는 보안 정책을 말합니다. Orgin의 구성은 다음과 같습니다. URL Schema (Ex. h..
HTTP 웹 기본 지식 - 3 HTTP 기본
모든 개발자를 위한 HTTP 웹 기본 지식 (김영한) 강의를 정리합니다. 현재에는 HTTP로 거의 모든 데이터를 주고받으며, HTTP의 시대라고 말할 수 있는 시대이다. HTTP 역사 ★ HTTP1.1이 가장 중요한 버전. 이후에 나온 HTTP 2와 3은 성능이 개선된 것에 가싸우며, 3의 경우에는 TCP 대신에 UDP를 사용해서 속도가 빨라졌다. (TCP의 경우에는 3 way handshake 등으로 속도가 그리 빠른건 아님!) HTTP 특징 클라이언트 서버구조 서버요청 - 응답대기 (Request Response 구조) 응답요청에 대한 결과를 만들어서 응답. 클라이언트와 서버를 분리하여 생각하는 것이 중요함. 비지니스 로직/ 데이터 → 서버에 집중 UI 사용성 → 클라이언트에 집중 양쪽이 독립적으로 ..
윈도우용 gcc, g++ 컴파일러 MinGW 다운로드 방법
Windows 환경에서 Linux를 사용할 때가 있는데, 이 때의 컴파일을 위해서는 minGW라고 하는 프로그램이 필요합니다. (mac의 경우에는 따로 설치할 필요가 없습니다) osdn.net/projects/mingw/releases/ Download File List - MinGW - Minimalist GNU for Windows - OSDN Download File List - MinGW - Minimalist GNU for Windows #osdn osdn.net 이 링크에 들어가셔서 mingw-get-setup.exe 다운로드를 누르시면 아래와 같은 화면들이 나옵니다! install을 누릅니다! 기본 설정 그대로 두고, continue를 누릅니다! 기다리다가... 다운로드가 완료되면 con..
HTTP 웹 기본 지식 - 2 URI와 웹 브라우저 요청 흐름
모든 개발자를 위한 HTTP 웹 기본 지식 (김영한) 강의를 정리합니다. URI URI 의 범위 안에 URL(Resource Locator, 위치를 지정), URN(Resource Name, 이름을 부여)이 존재한다. → 위치는 변할 수 있으나, 이름은 변하지 않는다. → URN 이름만으로 실제 리소스를 찾을 수 있는 방법은 현재 보편화 X 자연스럽게 우리가 사용하는 것이 URL Uniform : 리소스를 식별하는 통일된 방식 Resource : 자원, URI로 식별할 수 있는 모든 것 (제한 X) Identifier : 다른 항목과 구분하는데 필요한 정보들 URL 이런 URL이 있다고 해보자! www.google.com/search?q=hello&hl=ko 프로토콜(ex - https): 어떤 방식으로..
HTTP 웹 기본 지식 - 1 인터넷 네트워크
모든 개발자를 위한 HTTP 웹 기본 지식 (김영한) 강의를 정리합니다. 저번에 들었던 스프링 기본 강의를 다 들어서, 이제 스터디원들끼리 HTTP 강의로 넘어갔다! (김영한님 커리큘럼 따라가는중) IP (인터넷 프로토콜) 지정한 IP 주소에 데이터를 전달하게 된다. IP 패킷은 출발지 IP와 목적지 IP등이 들어가고, 전송데이터를 감싸는 형태로 들어가게 된다. * 패킷이란 - 패키지 + 버킷의 합성어 ip 프로토콜의 한계 비연결성 - 패킷을 받을 대상 X 또는 서비스 불능이어도 전송됨 → 클라이언트는 받을 수 있는 상황인지 모르는 것! 비신뢰성 - 패킷이 중간에 사라지거나 순서대로 안올 수 있음 → 갑자기 보내는 도중에 문제가 나오거나, 패킷을 끊어서 보낼 경우 순서대로 도착해야 하는데, 그게 안될 수..