코드스테이츠

    [Git] 브랜치 명령어 정리

    새로운 브랜치 생성 $ git branch 새로운 브랜치 이름 새로운 브랜치 생성 후 해당 브랜치로 전환 $ git switch -c 새로운 브랜치 이름 $ git checkout -b 새로운 브랜치 이름 브랜치 목록 확인 $ git branch 브랜치 목록과 각 브랜치의 최근 커밋 확인 $ git branch -v 브랜치 삭제 $ git branch -d 삭제할 브랜치 이름 $ git branch -D 해당 명령어는 병합하지 않은 브랜치를 강제 삭제하는 방법입니다. 브랜치 전환 $ git switch 브랜치 이름 $ git checkout 브랜치 이름 브랜치 병합 master 브랜치로 dev 브랜치를 병합할 때 (master ← dev) $ git checkout master $ git merge de..

    [Git] 브랜치 관리와 고급 기능

    1. Git Branch Case 1 로그인, 로그아웃, 회원가입, 마이페이지 기능을 구현하는 일이 남아있어, 각자 팀원끼리 나누어서 구현하려고 합니다. 모든 팀원이 랜딩 페이지의 소스코드를 동일하게 공유하며 서로 다른 작업을 진행할 수 있는 방법은? Case 2 회사 웹사이트에 개인적으로 추가해 보고 싶은 기능이 생겼습니다. 그런데 아직 주니어 개발자로서 마음대로 회사 웹 사이트의 코드를 건드리기에는 위험 부담이 크게 느껴집니다. 회사 웹 사이트의 코드를 건드리지 않고, 따로 혼자 작업하는 방법은? Git은 개발자들이 협업하기에 최적의 툴이며, 소프트웨어를 개발할 때에 개발자들은 동일한 소스코드를 함께 공유하고 다루게 됩니다. 동일한 소스코드 위에서 어떤 개발자는 버그를 수정하기도 하고 또 다른 개발자..

    [네트워크] HTTP 헤더

    1. 표현 헤더(Representation Headers) HTTP 메시지는 헤더와 바디로 구분할 수 있습니다. HTTP 바디에서는 데이터 메시지 본문(Message body)을 통해서 표현(Representation) 데이터를 전달합니다. 여기서 데이터를 실어 나르는 부분을 페이로드(Payload)라 합니다. 표현은 요청이나 응답에서 전달할 실제 데이터를 뜻하며 표현 헤더는 표현 데이터를 해석할 수 있는 정보를 제공합니다. HTTP 헤더 HTTP 메시지는 헤더와 바디로 구분할 수 있습니다. HTTP 바디에서는 데이터 메시지 본문(Message body)을 통해서 표현(Representation) 데이터를 전달합니다. 여기서 데이터를 실어 나르는 부분을 페이로드(Payload)라 합니다. 표현은 요청이나..

    [네트워크] 인터넷 프로토콜 (IP, TCP/UDP, HTTP)

    네트워크 흐름을 이해하기 위해서는 웹 통신을 가능하게 한 HTTP 통신의 흐름을 파악하는 것이 중요합니다. 1. IP와 IP Packet 복잡한 인터넷 망 속 수많은 노드들을 지나 어떻게 클라이언트와 서버가 통신할 수 있는 것은, 출발지에서 목적지까지 데이터가 무사히 전달되기 위해선 규칙이 있기 때문입니다. (여기서 노드는 하나의 서버 컴퓨터를 의미합니다.) 그래서 흔히 말하는 IP(인터넷 프로토콜) 주소를 컴퓨터에 부여하여 이를 이용해 통신합니다. IP는 지정한 IP 주소(IP Address)에 패킷(Packet)이라는 통신 단위로 데이터 전달을 합니다. IP 패킷에서 패킷은 pack과 bucket이 합쳐진 단어로 소포로 비유할 수 있습니다. IP 패킷은 이를 데이터 통신에 적용한 것이라고 보면 됩니다..

    Toy 문제 19

    문제 문자열을 입력받아 다음의 조건을 만족하는 LPS*를 찾아 그 길이를 리턴해야 합니다. LPS: 주어진 문자열의 가장 긴 접두어이자 접미어(Longest Prefix which is also Suffix) non-overlapping: 접두어와 접미어는 서로 겹치는 부분이 없어야 합니다. 다시 말해, prefix와 suffix는 문자열의 동일한 인덱스에 위치한 문자를 요소로 가지면 안 됩니다. let output = LPS('abbbcc'); console.log(output); // --> 0 output = LPS('aaaa'); console.log(output); // --> 2 // prefix: str.slice(0, 2) // suffix: str.slice(2) // non-overla..

    [Server] Express, Middleware

    Express.js 소개 MERN stack은 JavaScript 생태계에서 인기 있는 프레임워크인 MongoDB, Express, React, Node를 지칭하는 말입니다. 이 중에서 Express.js는 Node.js 환경에서 웹 서버, 또는 API 서버를 제작하기 위해 사용되는 인기 있는 프레임워크입니다. Express로 구현한 서버가 http 모듈로 작성한 서버와 다른 점은 다음과 같습니다. 미들웨어 추가가 편리하다. 자체 라우터를 제공한다. 공식 문서를 따라 Express로 간단한 웹 서버를 만들 수 있습니다. 순수한 node.js 코드로 라우팅을 구현한 아래의 코드 const requestHandler = (req, res) => { if(req.url === '/lower') { if (re..

    [CS] 가비지 컬렉션

    가비지 컬렉션 가비지 컬렉션은 프로그램에서 더 이상 사용하지 않는 메모리를 자동으로 정리하는 것입니다. 동적 할당된 메모리 영역 가운데 더 이상 사용할 수 없게 된 영역을 탐지하여 자동으로 해제하는 기법입니다. 더 이상 사용할 수 없게 된 영역이란, 어떤 변수도 가리키지 않게 된 영역을 의미합니다. 자바, C#, 그리고 일부 스크립트 언어들은 처음부터 쓰레기 수집 기법을 염두에 두고 설계되어, 언어 정의에 쓰레기 수집이 포함되어 있다. C, C++ 등의 프로그래밍 언어는 수동 메모리 관리를 가정하고 설계되었으나 지원하는 구현도 존재한다. 가비지 컬렉션의 방법 트레이싱: 한 객체에 flag를 두고, 가비지 컬렉션 사이클마다 flag에 표시 후 삭제하는 mark and sweep 방법입니다. 객체에 in-u..

    [CS] 스레드(Thread), 멀티 스레드(Multi-Thread)

    1. 스레드(Thread) 스레드는 사전적 의미로 한 가닥의 실이라는 뜻입니다. 한 가지 작업을 실행하기 위해 순차적으로 실행한 코드를 실처럼 이어 놓았다고 해서 유래된 이름입니다. 하나의 스레드는 코드가 실행되는 하나의 흐름이기 때문에, 한 프로세스 내에 스레드가 두 개라면 코드가 실행되는 흐름이 두 개 생긴다는 의미입니다. 스레드의 특징 프로세스 내에서 실행되는 흐름의 단위 각 스레드마다 call stack이 존재(call stack: 실행중인 서브루틴을 저장하는 자료 구조) 스레드는 다른 스레드와 독립적으로 동작 스레드(thread)는 어떠한 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위를 말한다. 일반적으로 한 프로그램은 하나의 스레드를 가지고 있지만, 프로그램 환경에 따라 둘 이상..

    [CS] 운영체제, 프로세스

    참 많이 들어본 용어이고 그냥 어렴풋이 알고 있는 단어들이지만 설명이나 정확하게 알고 있지는 않았는데 그 단어의 의미를 알게 되어 좋은 기회 였던것 같습니다. 자체(하드웨어)는 스스로 할 수 있는 일이 없습니다. 하드웨어의 설계를 바탕으로 하드웨어에게 일을 시켜야만 그 의미가 있습니다. 하드웨어에게 일을 시키는 주체가 바로 운영체제입니다. 그냥 운영체제 하면 윈도우, 맥 떠올리기 쉽지만 이렇게 정의해서 설명하기 쉽지 않습니다. 1. 운영체제 운영체제가 없다면, 응용 프로그램이 실행될 수 없습니다. 응용 프로그램은 컴퓨터를 이용해 다양한 작업을 하는 것이 목적인고, 운영체제는 응용 프로그램이 하드웨어에게 일을 시킬 수 있도록 도와줍니다. 하드웨어를 구성하는 일을 하는 CPU, 자료를 저장하는 RAM, 디스..

    [CS] 컴퓨터 공학 기초

    알아두면 좋은 내용이지만, 컴퓨터에 관심이 없거나 코딩짜는 것 밖에 알지 못한다면 결코 좋은자료가 못되어서 유튜브나 검색해서 더 좋은 자료를 보는게 맞는 것 같습니다. 관련 유튜브 영상 (말로만 설명해주시만 잘 설명해주어서 좋습니다) https://youtu.be/ABPOjjre0C8 문자열 유니코드라고 불리우는 인코딩 방식이 통일된 시대를 살아가고 있습니다. 문자열을 다루는 디테일한 방식에 대해 전부 알 필요는 없지만, 프로그래밍 언어마다 문자열을 다루는 자료형의 차이를 이해하기 위해 문자열을 다루는 기본적인 방식은 알고 있어야 합니다. 유니코드? 유니코드(Unicode)는 유니코드 협회(Unicode Consortium)가 제정하는 전 세계의 모든 문자를 컴퓨터에서 일관되게 표현하고 다룰 수 있도록 ..