전체 글

전체 글

    네이버 부스트캠프 웹・모바일 9기 챌린지 과정을 마치며

    네이버 부스트캠프 웹・모바일 9기 챌린지 과정을 마치며

    4주간의 부스트 캠프 챌린지 과정을 마쳤다.그 안에서 뭘 했고, 어떤걸 배우고 느꼈는지, 시작할 때의 생각부터 모두 마치고 난 뒤의 생각 변화까지 시간 순으로 회고해보려고 한다. 메일 한 통2024년 7월 10일, 여느 때와 다름 없이 피쳐들을 쳐내던 하루였다.하지만 슬슬 결과 메일이 올 때가 되었음을 직감하고 코드가 손에 안잡힐 때 쯤, 메일 한 통이 날아왔다.  네이버 부스트캠프 웹・모바일 9기의 진행 순서는 아래와 같이 진행된다.서류1차 문제 해결력 테스트베이직 과정2차 문제 해결력 테스트챌린지 과정3차 문제 해결력 테스트멤버십 과정나는 7월 첫째 주 베이직 과정을 수료하고,7월 6일(토) 2단계 문제 해결력 테스트를 쳤다.그리고 챌린지 과정 합격 메일을 받게 된 것이었다. 챌린지 스타트부스트캠프 ..

    TCP/IP 소켓 통신 개념 및 Network 프레임워크

    TCP/IP 소켓 통신 개념 및 Network 프레임워크

    목차TCP/IP 소켓 통신 이란?소켓이 왜 필요한가소켓(Socket) 이란?소켓 종류스트림 소켓(TCP) 통신 흐름Network 프레임워크현대의 소켓 통신의 문제점기존의 소켓 통신과의 연결 설정 단계 비교기본 객체연결 생명주기소켓이 왜 필요한가먼저 클라이언트-서버 간의 통신을 생각해보자.클라이언트 입장에서는 1:1 통신이지만, 서버 입장에서는 1:N 통신을 수행해야 한다.서버는 트래픽이 증폭해도 이를 견딜 수 있는 견고한 시스템을 구축해야 하는데, 이걸 가능하게 해주는 것이 소켓이다. (실시간 양방향 통신을 가능하게 해주는 WebSocket과는 개념이 다르다.)우선 N명의 클라이언트로부터 요청이 들어올 때, 동시에 요청을 처리할 수 있는 방법은 무엇이 있을까?가장 쉽게 생각할 수 있는 방법으로는 Thre..

    SQL 기본 쿼리문 정리

    목차SQL 이란SQL 명령어 분류DDL(데이터 정의어)CREATEALTERDROPTRUNCATEDML (데이터 조작어)INSERTUPDATEDELETESELECTDCL (데이터 제어어)GRANTREVOKESQL이란SQL은 Structured Query Language의 약자로 관계형 데이터 모델을 따르는 DBMS의 표준 데이터베이스 언어입니다.SQL 명령어 분류SQL 명령어는 수행하는 역할에 따라 3가지로 분류가 나누어집니다.DDLData Definition Language데이터베이스나 테이블 등을 생성, 삭제하거나 그 구조를 변경하기 위한 명령어데이터베이스를 정의하거나 수정명령어 수행 시 이전 상태로 복귀 불가DMLData Manipulation Language데이터베이스에 저장된 데이터를 처리하거나 ..

    HTTP Request, Response 구조

    HTTP Request, Response 구조

    목차HTTP란HTTP의 진화HTTP Request 구조HTTP 메소드란HTTP 요청 헤더HTTP 요청 본문HTTP Response 구조HTTP 상태 코드HTTP 상태 메시지HTTP 응답 헤더HTTP란Hyper Text Transfer Protocol 의 약자로,하이퍼텍스트(ex: HTML) 문서를 교환하기 위해 만들어진 protocol입니다.HTTP는 TCP/IP 기반으로 되어있습니다.HTTP는 네트워크 장치 간에 정보를 전송하도록 설계된 애플리케이션 계층 프로토콜이며 네트워크 프로토콜 스택의 다른 계층 위에서 실행됩니다.HTTP를 통한 일반적인 통신 흐름은 클라이언트에서 서버에 HTTP Request 요청을 보내고, 다시 서버에서 HTTP Response 응답 메시지를 보내는 흐름으로 이루어집니다.이미..

    네이버 부스트캠프 웹・모바일 9기 챌린지 과정 3주차 회고

    네이버 부스트캠프 웹・모바일 9기 챌린지 과정 3주차 회고

    ⭐️ 3주차 한 줄 요약다른 분들이 올리길래 나도 한번..👀 Learned - 배운 점나는 이번 주에 어떤 것들을 배웠나요?학습뿐만 아니라 태도나, 마음가짐 등 넓은 부분에서 배운 것들을 적어보아요!동기, 비동기, sync, async, 동시성, 병렬성, 스레드와 프로세스 등 많은 걸 배운 한 주였다.설계, 구현을 하기전에 필요한 사전 지식에 대해 깊이 있게 학습하면 설계와 구현 단계에서 막히는 부분이 적어지고 오히려 미션 해결 시간이 줄어드는 것을 체감했다."항상 80~90점 짜리 소프트웨어를 개발할 수 있는지가 중요하다."최근에 같이 프로젝트를 개발하고 있는 팀원에게 코드에서 장인느낌이 난다는 칭찬을 받았다.당시에는 그저 기분이 좋았지만, 이 글을 읽고 문득 생각이 들었다.나는 지금까지 100점짜리..

    Git 동작 방식

    Git 동작 방식

    목차Git이란?Git 동작원리git initgit addgit commitGit이란?Git은 2005년 리누스 토르발스에 의해 개발된 분산 버전관리 시스템이다.Git 동작원리Git은 SHA-1 해쉬 알고리즘을 사용해 Index 파일과 Object 디렉토리에 변경사항들을 저장합니다.이게 무슨소리일까요? 하나씩 확인해보겠습니다.GIT INITgit init 을 하면 .git 이란 디렉토리가 생겼습니다.그리고 .git 디렉토리 안에는 HEAD, config, index, objects, ... 등의 파일이 있네요index, objects 는 아직 디렉토리에 파일이 없어서 그런듯이를 시각화해보면 아래와 같습니다.왼쪽에 있는 폴더와 파일들은 이번 내용과 관련이 없으므로 생략합니다.각 파일과 폴더들은 아래와 같은 ..

    GCD Sync, Async, Serial, Concurrent 조합해보기

    GCD Sync, Async, Serial, Concurrent 조합해보기

    GCD를 활용해 비동기 코드를 작성하며 자주 헷갈리는 sync, async 그리고 Serial, Concurrent를 조합했을 때 어떻게 동작하는지 그림과 함께 정리해보려고 합니다. GCD가 무엇인지는 이 곳에서 확인 가능합니다!Serial + Syncvar numbers = [0, 1, 2, 3, 4] let dispatchQueue = DispatchQueue(label: "custom") print("Serial + Sync 실행결과") (0..

    동시성, 병렬성, 동기(sync), 비동기(async) 개념 정리

    동시성, 병렬성, 동기(sync), 비동기(async) 개념 정리

    목차동시성(Concurrency)이란멀티태스킹이란동시성과 멀티태스킹은 같은 말일까?병렬성이란동시성과 병렬성의 차이동기(synchronous)란비동기(asynchronous)란동시성(Concurrency)이란동시성이란 이름만 놓고 본다면 실제로 동시에 동작해야 할 것 같지만, IT용어 측면에서 동시성이란 아래와 같은 의미를 지닌다고 합니다.Concurrency means that an application is making progress on more than one task - at the same time or at least seemingly at the same time (concurrently).동시성은 하나의 Processor가 여러 task를 동시에 처리하는 것처럼 보이게 하는 것이다. 하나..

    캐시 데이터 용량 표시 방식 개선하기: ByteFormatter

    캐시 데이터 용량 표시 방식 개선하기: ByteFormatter

    캐시 데이터 용량 표시 방식 개선하기: ByteFormatter프로젝트를 진행하며 이미지 캐시를 제거하는 기능을 개발하게 되었는데요.캐시 데이터 용량을 어떻게 표기할까 고민하다 너무 작지도 크지도 않도록 MB 단위로 표현하기로 정하고 byte를 1024 로 2번 나누어 MB로 변환하여 표기했습니다.하지만 코드리뷰를 진행하며 팀원분께 더 나은 방식을 배웠는데요.까먹지 않도록 정리해두려고 합니다!왜 ByteFormatter를 사용해야 할까?기존 방식에서는 용량을 항상 MB 단위로 표시했습니다. 이렇게 되면 GB 이상의 큰 용량을 표현하거나, KB나 Byte 단위의 작은 용량일 때는 어색해 보일 수 있습니다. 이를 개선하기 위해 ByteFormatter를 사용하면 Byte, KB, MB, GB 등 적절한 단위..

    GCD 공식문서 읽고 정리하기

    GCD 공식문서 읽고 정리하기

    이 글은 공식문서를 번역해 나만의 언어로 작성한 글입니다.의역이나 오역이 있을 수 있으니 조심하세요! 😨개요GCD(Grand Central Dispatch)라고도 알려진 Dispatch는 macOS, iOS, watchOS 및 tvOS의 멀티코어 하드웨어에서 동시 코드 실행을 지원하는 체계적이고 포괄적인 개선을 제공하는 언어 기능, 런타임 라이브러리 및 시스템 향상 기능을 포함합니다.BSD 하위 시스템, Core Foundation 및 Cocoa API는 모두 이러한 향상된 기능을 사용하여 시스템과 애플리케이션을 보다 빠르고 효율적으로 실행하고 응답성을 향상시키도록 확장되었습니다.컴퓨팅 코어 수가 다른 여러 컴퓨터나 여러 애플리케이션이 경쟁하는 환경에서 단일 애플리케이션이 여러 개의 코어를 효과적으로 ..

    네이버 부스트캠프 웹・모바일 9기 챌린지 과정 2주차 회고

    네이버 부스트캠프 웹・모바일 9기 챌린지 과정 2주차 회고

    ⭐️ 2주차 한 줄 요약어..? 1주차보다 할만한데..? 왜지?✏️ Learned - 배운 점나는 이번 주에 어떤 것들을 배웠나요?학습뿐만 아니라 태도나, 마음가짐 등 넓은 부분에서 배운 것들을 적어보아요!효과적으로 주장하는 법을 배웠다.모든 주장에는 논리가 뒷받침되어야하고, 논리는 배경지식으로 부터 나온다.그렇다보니 논리적으로 주장하고 싶어 지식을 많이 쌓고 싶었고, 자연스레 구현보다 학습에 비중이 커졌다.다양한 CS지식들을 흡수했다.스포가 될 수 있을 것 같아 어떤 CS지식들을 흡수했는지는 언급하지 않겠지만, 평소 얕게만 알고있던 CS지식들을 깊게 공부할 수 있는 시간이었고, 동료들과 이야기하며 더 공부할 수 있었다.💖 Liked - 좋았던 점이번 주에 나는 어떤 순간이 가장 인상 깊었나요?좋은 감..

    발행-구독 패턴(Publisher-Subscriber Pattern)

    발행-구독 패턴(Publisher-Subscriber Pattern)

    목차옵저버 패턴(Observer Pattern)이란?발행-구독 패턴(Publisher-Subscriber Pattern)이란?발행-구독 패턴의 장점발행-구독 패턴의 단점옵저버 패턴(Observer Pattern)이란?구독자 패턴을 공부하러 왔는데, 왜 옵저버 패턴이 먼저 나오냐구요? 🤔둘이 유사한 부분이 있어서 비교를 하며 설명하고자 옵저버 패턴을 먼저 간단하게 짚고 넘어가겠습니다 !가 아니라옵저버 패턴(Observer Pattern)은 객체의 상태 변화를 관찰하는 관찰자들, 즉 옵저버드의 목록을 객체에 등록하여 상태 변화가 있을 때마다 메소드 등을 통해 객체가 직접 목록의 각 옵저버에게 통지하도록 하는 디자인 패턴이다.주로 분산 이벤트 핸들링 시스템을 구현하는 데 사용된다.발행/구독 모델로 알려져 있..