22.11.19_TIL 오늘의 회고
Javascript... for문을 사용하는데 있어서 특정 배열의 length의 +1 또는 arr[-1]을 고려해 사용할 수 있다는것에 놀랐다. 다만 undifined로 값 없이 똑같이 진행된다는 것이다. 언어를 사용하면 할수록 작은부분이라도 배워가는것을 느낀다. 알고리즘에 대한 이해를 하는 속도가 빨리지고, 무엇을 쓰면 편할지 생각하게 되었다. 그리고 ...
replace() 및 정규식의 예시
TIL 아무리 해도 부족한 느낌
nullish 병합 연산자 '??' 대한 배움.
map() 메소드 기초
항해99 과정을 진행하면서 느껴지는게 있다. 나보다 잘하는 사람을 보면서 자극을 받기도 하고, 모르는 사람에게 알려주면서 내가 부족했던 부분에 대해 알고, 다시한번 공부를 하기도, 그리고 배우기도 한다. 진행하고 있는 Node.js의 미들웨어 설정이나 기본적으로 router를 설정하는 부분들에 대해 TIL을 작성하고 싶었지만.. 잘 쓰고싶은 욕심에! 그...
1128 ~ 2212_01 까지 Node API를 작성해보는 과정을 겪었다. TIL도 쓰고싶었지만 정신없이 API 작성하느라 못적었다면 핑계일지도 모르겠다.. router와 미들웨어, 그리고 각종 express의 메소드를 경험하면서 처음에는 와 이렇게 어려운걸 앞으로 해낼 수 있을까? 하는 생각에 두려웠지만, 지금 다시 생각해보니 크게 어려운 부분은 아니...
프로젝트 코딩을 하더라도 짧게 배워간 부분들의 정의.
일반적으로 서버는 특정 포트가 바인딩된 socket을 가지고 특정 컴퓨터 위에서 돌아간다. 해당 서버는 클라이언트의 연결 요청을 socket을 통해 listening 하면서 기다릴 뿐이다. 클라이언트는 서버가 작동중인 컴퓨터의 hostname과 서버가 listening 하고 있는 포트 번호를 알고, 이를 통해서 서버와 연결이 가능하다. 클라이언트는 서버 ...
객체 지향(Object-Oriented) 객체 지향 모델링은 기능이 아닌 객체가 중심이 되며 "누가 어떤 일을 할 것인가?"가 핵심이 된다. 즉, 객체를 도출하고 각각의 역할을 정의해 나가는 것에 초점을 맞춘다. 책임과 권한을 가진 객체들이 서로 메세지를 주고받으며 협력해서 필요한 기능을 수행하도록 시스템을 개발하는 것을 객체 지향이라고 한다. 크고 복잡한...
제네릭 ? 클래스나 메소드 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법 > 컬렉션이란? 배열은 삽입 삭제가 불편하고, 고정 길이라는 특성 때문에 데이터의 크기를 예측하기 힘든 경우에는 사용이 어렵다. 이런 단점을 극복하기 위해 사용하는 것이 가변 길이의 컨테이너인 컬렉션이다. List, Set 등이 있다. >컬렉션에서 제네릭을 사용하는 이유...
최근 FE와 협업을 진행하면서 서버에 대한 개념을 이해하려 공부했다. 프론트엔드 분에게 서버에대한 설명을 직접 들을때 완전하게 이해하기 힘들었는데 구글링을 통해서 찾아보다보니 이해하기 쉬운 사진이 있어서 가져왔다. 위 사진에서 Network를 기준으로 왼쪽의 Client 는 프론트엔드 // 오른쪽의 Api Server 가 백엔드가 관리하는 부분이라고 ...
BE github >FE github 12-22~ 12-29일의 PRADA 클론 코딩 BE 개발자로 전향하고나서 처음으로 클론 코딩을 진행하면서 많은 것을 배울 수 있었다. 클론 코딩을 위해서 1차 협업 과정을 진행했던 것이라 생각이 될만큼, 현업에서 이끌어 나가고 계신 부분들을 클론하여 구현하려고 노력해보면서, 내가 이만큼 늘었구나, 그리고 개발이란 ...
아래 내용들은 최종프로젝트를 진행하면서 테스트를 하기위해 테스트 서버를 여는 과정의 명령어들을 순서대로 나열한 것이다. 명령에 대해 자세하게 쓰지는 않겠지만 간단한 설명만으로도 누군가에게 도움이 되길 바란다.(사실상 거의 나의 메모 이다..) > 순서 EC2 인스턴스 생성 -> 가비아(도메인)등록 -> certbot(EC2 버전에 해당하는 명령어들을 ...
DI(Dependency Injection) 란? 외부에서 두 객체간의 관계를 결정하는 디자인 패턴이다. 클래스 레벨에서는 의존관계가 고정되지 않도록 하고 인터페이스에만 의존한다. 런타임 시점에서 의존관계가 외부에 의해 결정된다. >의존성 주입의 장점 긴밀한 의존 관계가 있는 경우, 의존 대상이 변화하면 의존하는 쪽도 이에 맞게 변형되어야 한다. 하지...
DB에서 인덱스를 잘 사용하면 어떤 장점 있을까? DB의 인덱스란, 조회의 성능을 높이기 위해 사용하는 장치이다. 조회가 일어날 수 있는 컬럼을 따와 정렬한 상태로 보관하고 있는다. 원래는 백만 개의 데이터가 보관된 DB에서 특정 필드가 100인 데이터를 찾아낸다고 할 때, 백만 개의 데이터를 모두 하나하나 확인해야 한다. 하지만 해당 필드가 정렬이 되...
MSA? 모든 구성요소를 한 프로젝트에 통합하여 하나의 패키징으로 배포하는 형태인 Monolithic Architecture와는 달리 서비스를 작게 나누어 연결한 구조를 말한다. 구조가 나뉘어 있어 일부분만 업데이트가 가능해 유연하다는 특징이 있다. 분리되어 있기 때문에 유지 보수가 쉽고, 부분별로 다른 기술스택을 사용해도 연결에 크게 무리가 없다. 서...
List 순서가 있다. 중복이 가능하다. 인덱스를 통한 접근이 가능하다. Map 순서가 없다. key의 중복이 불가능하다, valuse 중복이 가능하다. key와 value가 쌍으로 저장되는 특징이 있다. Set 순서가 없다. 중복이 불가능하다. HashMap 기본적으로 Map의 특성을 가지고 있다. 해싱된 key를 가지고있어 검색 속도가 ...
차이점 @SpringBootTest는 통합 테스트를 진행하기 위해 쓰는 어노테이션으로 어플리케이션 테스트에 필요한 거의 모든 의존성을 제공함 @WebMvcTest는 단위 테스트를 진행하기 위해 쓰는 어노테이션 종류 중 하나로 MVC를 위한 테스트로 컨트롤러가 예상대로 동작하는지 테스트하는데 사용
데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산들 여러개의 작업을 하나로 묶은 실행 유닛이고, DB 트랜잭션은 ACID란 특성을 가지고 있다 원자성(Atomicity): 한 트랜잭션의 연산들이 모두 성공하거나, 반대로 전부 실패되는 성질 (예: 계좌 입출금) 일관성(Consi...
공통점과 차이점 Transmission Control Protocol은 연결 지향적이기 때문에 연결을 설정하고 데이터를 전송한 후, 연결을 해제하며, 데이터 전송중 손실이나 오류 발생 시 데이터를 재전송해 신뢰성을 보장함. 또한 패킷이 전송된 순서대로 수신되고, 중복 패킷도 제거됨. 따라서 대량의 데이터를 보내거나 신뢰성이 중요한 파일 전송, 웹 페이지 ...
웹 서버와 WAS의 차이 웹 서버 HTTP 프로토콜을 기반으로 클라이언트가 웹 브라우저에서 어떠한 요청을 하면 그 요청을 받아 정적 컨텐츠를 제공하는 서버 정적 컨텐츠: 단순 HTML 문서, CSS, 이미지, 파일 등 즉시 응답 가능한 컨텐츠이다 Eg. Apache, NginX 등 WAS(Web Application Server) DB 조회 혹은 다양...
절차지향 (Procedural Programming) >물이 위에서 아래로 흐르는 것처럼 순차적인 처리가 중요시 되며 프로그램 전체가 유기적으로 연결되도록 만드는 프로그래밍 기법 컴퓨터의 작업 처리 방식과 유사하기 때문에 객체지향 언어를 사용하는 것에 비해 더 빨리 처리 되어 시간적으로 유리합니다. 장점 : 컴퓨터의 처리구조와 유사해 실행속도가 빠르다...
시간복잡도 : 알고리즘의 수행 시간 >공간복잡도 : 알고리즘이 수행되는 데 필요한 메모리 공간의 양 시간복잡도와 공간복잡도는 주로 알고리즘의 성능을 측정하기 위해 사용한다. 같은 결과를 갖는 프로그래밍 소스도 작성 방법에 따라 시간이 달라지며, 같은 소스라도 시간이 적게 걸리는 것이 좋은 코드다. 공간복잡도에 대한 메모리 사용도 적으면 적을수록 좋다. ...
오버로딩 (Overloading) > 이름은 같지만 파라미터의 수, 타입이 다른 메소드를 중복으로 선언 특징 메소드 이름이 같아야 한다. 리턴형이 같아도 되고 달라도 된다. 파라미터 개수가 달라야 한다. 파라미터 개수가 같을 경우, 데이터 타입이 달라야 한다. 오버라이딩 (Overriding) > 상속관계에 있는 클래스 간에 같은 이름의 메소드를 정...
관계형 데이터베이스 (RDB) 사전에 엄격하게 정의된 DB schema를 오구하는 테이블 기반 데이터 구조를 갖는 데이터베이스다. 엄격한 schema로 인해 데이터 중복이 없기 때문에 데이터를 update가 많을 때 유리하다. 각 테이블의 행과 행이 연결되는 관계를 맺을 수 있어 관계형 데이터베이스라는 이름을 갖는다. 테이블 간의 관계는 일 대 일(1:1...
병렬 프로그래밍 >순차적인 직렬 프로그램을 분할하고 분할된 단위를 동시에 병렬로 수행함으로써 성능을 향상시키는 프로그래밍 기술 과정 병렬화 대상 찾기 의존성 분석 병렬화 패턴 결정 병렬 프로그래밍 구현 자세한 내용 링크
먼저 프록시에 대해 알면 이해하기 쉽다. Proxy ? > 대리, 정보를 대신 전달해주는 주체 클라이언트와 서버의 사이에서 정보를 전달하는 중간자 역할을 한다고 생각한다. Reverse Proxy ? > 클라이언트의 요청을 대신 받아 내부 서버로 전달 해주는 것을 의미한다. 클라이언트가 직접적으로 서버에 요청을 보낼 수 있지만, 사용자가 많아지...
우연한 기회로 모의면접을 경험했다. 실제 면접이라 생각하고 대답하려고 하니 막히는 부분들이 많았고, 부족한 점과 면접때 불필요한 생각들을 정리할 수 있었다.
Polling > 일정한 주기(특정한 시간)을 가지고 서버와 응답을 주고 받는 방식 서버와 응답을 주고 받는 이유는 웹이 태생 자체부터 실시간으로 위해 필수적인 HTTP 지속적 연결 상태 (HTTP persistent connection)가 불가능하기 때문이다. 클라이언트가 서버에 특정 요청을 하면 서버가 응답해준 후 연결이 끊어지는게 HTTP의 특징...
Hypertext Preprocessor 원래는 동적 웹 페이지를 만들기 위해 설계되었으며 이를 구현하기 위해 PHP로 작성된 코드를 PHP 엔진에서 html 파일과 같이 처리하여 작성자가 원하는 웹 페이지를 생성한다 주로 HTML 언어를 프로그래밍의 목적으로 사용하는 것을 말하고, 서버쪽에서 실행 되는 언어이다. 장점 웹에 최적화된 언어 웹 개발에 ...
다시 꺼내보기 위한 기록 이벤트루프 관련 자료
관계형 데이터베이스를 조작하는데 사용되는 언어 SQL은 ANSI(미국 국립 표준 협회)에서 표준화된 언어로, 다양한 DBMS에서 지원된다. SQL은 명령어와 함수로 구성되며, 데이터베이스에서 테이블을 생성하고 수정하는데 사용된다. SELECT, INSERT, UPDATE, DELETE와 같은 명령어를 사용하여 데이터를 검색하고 삽입, 수정, 삭제할 수 있...
Garbage Collection > 쓸모 없어진 객체가 차지하고있는 메모리를 자동으로 비워주는 것 JavaScript, Python, Java 는 가비지 컬렉터가 자동으로 메모리를 관리를 해준다. 이런 언어를 managed language 라고 한다. 자동으로 Garbage 메모리를 비워준다고 하더라도 100% 완벽하게 정리해주는 것은 아니다. 때문에...