대량의 글들을 보여주는 SNS 피드와 공지사항 게시판의 글들은 어떤 방식으로 응답받아 보이는 것일까? 다른 요청들과 마찬가지로 한 번의 요청에서 필요한 모든 데이터를 전달받을까? 공지사항과 같은 게시판은 주로 데이터를 페이지별로 나눠 보여주며, SNS 피드는 화면 맨 아래에 도달했을 때 데이터를 추가로 로드해 보여주고 있음을 확인할 수 있다. 이처럼 ...
테이블 스키마 설계 시 고려 사항
1. CHAR와 VARCHAR CHAR와 VARCHAR 모두 문자열을 저장하는 타입이며, 둘의 차이는 문자열 저장 시 오른쪽 패딩을 적용하는가 여부에서 온다. 오른쪽 패딩을 적용한다는 것은 주어진 크기에 맞게 공란을 공백으로 꽉 채운다는 의미인데 CHAR(10)의 경우 10글자 중 5글자만 작성됐을 시 나머지 5글자만큼을 공란으로 채워 10글자로 만들...
WS(웹 서버)와 WAS(웹 어플리케이션 서버)
웹 서버와 웹 어플리케이션 서버는 db 서버와 함께 3-tier 아키텍처를 구성하는 서버들이다. CS 기초 지식으로도 많이 언급되는 개념인 두 서버의 각각의 특징과 필요성을 알아보고 두 서버간 차이점을 정리해보고자 한다. 웹 서버는 웹 페이지들의 모음인 웹 사이트를 제공하는 서버로 서버 프로그램, 소프트웨어이다. 대표적인 예로는 아파치, Nginx ...
REST API 설계 시 고려 사항
REST API란 REST 아키텍처에 맞게 설계한 API를 말하며 REST 아키텍처는 단순한 url을 지향하고 HTTP method를 활용해 자원에 대한 API의 의도를 명확하게 표현하는 설계 방식을 뜻한다. REST API 작성 시 지켜야 하는 몇 가지 기본 규칙은 다음과 같이 정리할 수 있다. 리소스명은 동사 대신 명사를 사용한다. 리소스...
HTTP
HTTP는 컴퓨터 공학과 개발을 잘 모르는 일반 사용자들에게도 친숙한 프로토콜로 애플리케이션 계층을 대표하는 프로토콜이다. 명칭 자체는 Hypertext transfer Protocol의 약자로 하이퍼텍스트와 이미지(jpeg, png), 동영상 등 리소스를 전송할 때 사용된다. 이때 하이퍼텍스트를 직역하면 ‘글을 뛰어넘는 글’로 링크를 통해 다른 문서...
프로젝트 세팅 단계 정리
개인 공부와 연습을 위한 개인 프로젝트를 시작했다. 작업 방식에 있어 혼자 하는 프로젝트라고 마냥 편하게 하기보다는 지금까지 참여했던 여러 프로젝트들과 인턴십에서 배운 프로젝트 관리 방법들을 적용해 깔끔한 방식을 유지하면서 작업하고 싶었다. 사용하려는 협업 툴은 지라로 지라 - 깃헙 연동을 포함한 깃허브, 지라 프로젝트 세팅 과정을 거쳤다. 이번을 기...
NP 판별의 방법과 Knapsack Problem
NP 문제는 어떤 문제의 솔루션(해답)이 주어졌을 때 그 답이 맞는가를 polynomial time안에 확인할 수 있는 문제를 뜻한다. 어떤 문제가 NP 문제인지 아닌지를 판별하는 기준이 되기도 하는 정의이며 KnapSack Problem(KS Problem)을 예시로 어떤 문제가 NP문제인가를 확인하는 과정은 다음과 같다. Knapsack prob...
아키텍처와 OS 그리고 Rosetta
ARM과 x86은 대표적인 아키텍처이다. 짧게 아키텍처라고도 많이 불리는 이들은 엄밀히 말하면 ISA(명령어 집합 아키텍처, 명령어셋 아키텍처, Instruction Set Architecture)에 속하는 개념으로, 그 종류로는 MIPS, RISC-V, AMD 등 여럿이 있다. CPU는 선택된 ISA에 맞춰 개발되며 대표적으로 Apple Silic...
Jekyll 로컬 실행 트러블 슈팅 log
로컬 jekyll 설치 설치 확인 및 에러 jekyll -v Jekyll 을 로컬에서 실행하기 위해 먼저 version 확인을 시도했으나 아래와 같이, 버전 값이 나오기보다 장황한 설명이 이어졌다. Ignoring eventmachine-1.2.7 because its extensions are not built. Try: gem prist...
맥북 scp 활성화 방법
윈도우 기기에서 맥북으로의 파일 이동을 위해 scp 사용을 시도했으나 아래와 같은 에러 메세지가 뜨며 파일이 전송되지 않았다. ssh: connect to host {port name} port 22: Connection refused ssh를 통한 원격 연결 시도가 거부된 것으로, 맥북 설정에서 다음과 같은 경로로 진입해 원격 로그인 기능을 ...
가상화 기술(2) - 컨테이너
컨테이너는 하이퍼바이저 기술과 함께 잘 알려져 있는 대표적인 가상화 기술 중 하나로, 하드웨어 수준에서 리소스를 가상화하는 하이퍼바이저 기술과 달리 소프트웨어 범주에서 애플리케이션 실행 환경을 격리하는 하이퍼바이저보다 가벼운, 경량화된 가상화 기법이다. 하이퍼바이저의 VM들은 논리적으로 독립된 CPU, 메모리와 자체 커널을 갖지만 컨테이너들은 Hos...
가상화 기술(1) - 하이퍼바이저
가상화란 리소스를 추상화하여 리소스의 사용을 보다 효율적이게 하는 기술로, 어떤 리소스를 추상화하는가, 어떤 방식으로 추상화하는가에 따라 여러 기술로 분류될 수 있다. 대표적인 가상화 기술 중 하나는 VMware와 같이 하드웨어를 가상화하는 하이퍼바이저 기술이다. 하이퍼바이저는 물리적인 리소스인 프로세서, 메모리, 스토리지 등을 추상화하고 이들을 각...
난 왜 불어를
마르셀 프루스트의 시간을 찾아서 작품을 보들레르 시들을 마르그리트 뒤라스 작품들을 이자벨 랭보 시들을 번역본이 아니라 원작으로 읽고 싶어서 장 뤽 고다르 영화와 크리스 마르케 영화를 자막에 의존하지 않고 보고 싶어서 . 이건 먼 미래의 얘기고 재밌어서 발음이 매력적이라서 나중에 길거나 짧게 불어를 쓰는 지역에 머물 기회가 언제가 올 수도 있는데...
2023.03
이번 달에 꾸준히 한 일 다이어리 작성 깃헙 블로그 작업 운동 듀오링고 많은 사람들과 많은 대화 나누기 이번 달에 오랜만에/새로 해 본 일 운동 돌고 돌아 결국 헬스로 돌아왔다. 요가, 러닝도 좋지만 나한텐 가장 재밌는 건 헬스장인 것 같다. 작년엔 몸을 혹사시키면서도 근력 운동도 안 해 없던 근육까지 ...
목표
개발자 정말 참여하고 싶은 아이디어를 만났을 때, 혹은 꼭 만들고 싶은 아이디어가 생겼을 때 기술 스택에 크게 발목 잡히지 않고 바로 참여할 수 있는 개발자가 되고 싶다. 그러려면 필요한 것이 실력이고, 언제 올지 모르는 기회를 생각하며 실력 좋은 사람들이 많은 대기업 혹은 좋은 스타트업에서 일하며 실력을 쌓다가 기회가 찾아왔을 때 바로 참...
1년 회고(2021.06-2022.06)
1년 전 나와 지금의 나는 너무나도 다르다. 환경이 두 차례 크게 바뀌었고 그 환경에서 좋은 영향들을 끊임없이 받으며 변해왔다. 월별 회고 정리 1년 동안 많이 했던 생각들 앞으로는 월별 회고 2021년 6월 뭘 하면 좋을지 알아보다 동아리 공고 하나가 눈에 들어왔다. 커리큘럼 소개엔 무슨 말인지 하나도 모르겠는 용어들이 가득했다...
2022.06
이번 달에 꾸준히 한 일 솝트(2차 행사, 기획 경선 및 투표, 8차 세미나) 다이어리 매일 꼼꼼히 작성하기 영어 스터디(3회) 이번 달에 오랜만에/새로 해 본 일 솝트 아티클 스터디 회식. 끝 없는 과제의 연속. 속에서 투표도 갔다 오고 애플 워치 깨뜨리고…. ㅜ 아티클 스터디 회식도 다녀왔다. 시험 8일 동안 보면서...
2022.05
이번 달에 꾸준히 한 일 솝트(세미나 4 번, 보충 세미나 1번) 다이어리 매일 꼼꼼히 작성하기 영어 스터디(3회) 아티클 스터디. 평일 매일 아티클 수집, 공유, 서로 읽기, 줌 3회 이번 달에 오랜만에/새로 해 본 일 1, 2주차 잠 줄여서 공부하고 놀고 또 공부하고 그랬다..🫠 일주일에 ...
2021.03-06
영어 영어 스터디 프리토킹 영어 스터디 주제 토론 영어 스터디 에세이 작성 NewYorkTimes 알림 배너에 뜨는 헤드라인 하나도 빠짐없이 다 읽고 모르는 단어 정리 theEconomist 기사 읽기 영어 회화 공부 앱 ‘cake’ 4월부터 하루 한 시간(2021.06.15 기준 누적 75시간 45분) 원서 읽기(완...
코드 리뷰의 필요성과 수행 방법
🙋🏻♀️ 코드 리뷰의 필요성 더 나은 유지 보수를 위해. 구조와 설계가 제대로 이루어졌는지 점검하는 것이 필요하다. 빠른 기능 구현보다 중요한 것이 적합한 구조 설계이다. 가독성을 고려하며 코드를 작성하였는지 점검하는 것이 필요하다. ...