분류 전체보기 48

이력서, 자소서를 작성하며 든 생각

자기소개서를 작성하면서 네이버 부스트캠프에서의 경험이 좋은 경험이지만 어딘가 구멍이 있다고 느꼈다.개인적으로 많이 배우고, 인맥도 넓히고, 향상심을 가진 사람들에게 긍정적인 에너지를 받은 것은 확실하다. 특히 learning by doing, 2번 만들기, 그림 그리기, 나만의 언어로 풀며 개념과 나의 경험 연결시키기 등 효과적인 학습 방법을 체득했고, 그룹 프로젝트를 하며 많은 기술을 접하고 직접 경험해보면서 혼자서도 작은 애플리케이션 배포 정도는 가능하겠다는 자신감도 얻을 수 있었다.그에 반면 하나 문제점을 깨달았다. 협업 경험이 두드러지는 것 같지 않다는 것이다.네부캠에서 하루 종일 피어 세션, 페어 프로그래밍, 그룹 프로젝트를 같이 했는데 협업 경험이 없다는 게 대체 무슨 소리인가? 싶기도 하겠지..

[코딩자율학습단 13기] 6일차, 소프트 링크와 하드 링크

커리큘럼소프트 링크와 하드 링크아이노드와 덴트리파일 시스템은 각각 파일에 대한 정보를 아이노드(inode, index node)라는 데이터 스트럭쳐에 저장한다. 아이노드에는 파일 내용이 아니라 접근 권한, 마지막 접근 시간, 파일 소유자, 그룹, 크기, 데이터 블록의 위치 같은 정보(메타데이터)를 저장한다.그리고 파일의 실제 내용은 데이터 블록에 저장하며, 데이터 블록은 아이노드에 연결된다.아이노드에는 각각을 식별할 수 있는 아이노드 번호라는 식별자가 존재한다.아이노드에는 파일의 위치에 대한 정보가 저장되지 않는다. 이 경로에 대한 데이터는 덴트리(dentry, directory entry)라는 데이터 스트럭쳐로 표현한다. 덴트리는 파일 경로를 나타내고, 파일의 메타데이터를 저장하는 하나의 아이노드와 연..

[코딩자율학습단 13기] 5일차, 디렉토리 및 실습

커리큘럼p108~129디렉토리디렉토리는 파일 시스템을 계층화할 때 사용하는 도구이다. 여러 개념을 동등한 레벨로 둘 수도 있고, 상하위 개념으로 나누어서 파일을 관리할 수도 있도록 도와준다.루트 디렉토리리눅스를 포함한 유닉스 계열 OS는 모두 팡리 시스템 최상단에 루트 디렉토리 가 존재한다. 나타낼 때는 / 로 표기한다. 루트 디렉토리 아래에는 전통적으로 이름과 역할이 정해져 있는 디렉토리들이 있다.디렉토리용도/bin기본 실행 명령어가 위치한다./dev디바이스 파일이 위치한다./etc시스템 설정 파일이 위치한다./home사용자의 홈 디렉토리가 위치한다./lib시스템 라이브러리가 설치된다./mnt시스템에 디스크 등을 임시로 마운트할 때 사용한다./procprocfs가 마운트된다./rootroot 사용자의 ..

[코딩자율학습단 13기] 4일차, 리눅스 파일

커리큘럼파일파일은 컴퓨터에서 데이터를 저장하고 조직화하는 데 사용하는 기본 단위이다. 바이트 단위로 연속해서 저장되어 있다.파일 시스템리눅스에서 모든 것은 파일로 취급된다. 디렉토리, 하드웨어 장치(나중에 파일시스템 마운트 등을 실습하다보면 더 와닿을 것이다.) 등등 모든 것을 파일로 다룬다. 이런 구조는 시스템 자원 접근을 통일된 방식으로 처리할 수 있게 해준다.파일 시스템은 파일에 대한 정보를 관리하는 소프트웨어이다. FAT, NTFS, EXT 등등 여러 종류가 존재하며 OS마다 사용하는 파일시스템도 다르다. 이것들을 용도별로 구분하면 크게 3가지로 구분할 수 있다.디스크 기반 파일 시스템=HDD나 SSD 같은 저장 장치를 위한 파일 시스템으로 가장 흔하게 사용된다. 보통 파일 시스템이라 하면 디스크..

[코딩자율학습단 13기] 3일차, 리눅스 셸

커리큘럼셸터미널과 셸터미널터미널은 컴퓨터와 사용자 사이에 상호작용을 할 수 있도록 연결하는 장치이다. 이 때, 사용자가 컴퓨터에 명령을 전달하는 장치를 입력 장치, 컴퓨터가 사용자에게 결과를 보여주는 장치를 출력 장치라고 한다.지금 이야기하는 것은 1960~70년대, 터미널이 실제 물리적인 하드웨어 장치였던 역사를 말하는 것이다. 연산은 터미널과 연결된 대형 컴퓨터에서 진행하고, 그 대형 컴퓨터는 여러 명이 공유해서 사용하는 형태였다. 그래서 각 사용자가 컴퓨터와 상호작용 할 수 있도록 도와주던 장치가 하드웨어 터미널이다. 현대에는 대부분 소프트웨어 형태의 터미널 에뮬레이터를 사용한다.셸셸은 CLI 프로그램이다. 사용자는 셸을 통해서 명령을 내리고 결과를 확인할 수 있다. 터미널이 컴퓨터오라 사용자 사이..

[코딩자율학습단 13기] 2일차, 리눅스 설치

커리큘럼2장 리눅스 실습 환경 구축하기2.1 리눅스 실습 환경 구축 방법PC에 직접 리눅스 설치하드웨어 위에 바로 리눅스를 설치하며 성능 면에서 가장 좋다. 실제 온프레미스 서버는 리눅스를 바로 설치해서 사용하기도 한다. 그러나 학습용으로 PC 한 대를 직접 사와서 리눅스를 설치하기에는 배보다 배꼽이 클 수 있다. (안 쓰는 노트북이 있거나 윈도우에 질렸다면 한 번 설치해보는 것도 나쁘지 않긴 하다.)가상 머신에 리눅스 설치다른 OS가 있는 상태에서 가상 머신으로 리눅스를 설치하는 방법이 있다. 다만 호스트 머신 안에 새로운 PC 하나가 있는 것과 다름이 없어서 하드웨어 성능을 많이 잡아 먹을 수 있다. 컴퓨터가 좋지 않다면 생각을 해봐야 할 것이다.클라우드 인스턴스로 리눅스 사용AWS, Azure, N..

[코딩자율학습단 13기] 1일차, 리눅스 소개

커리큘럼1장 리눅스 소개1.1 운영체제란?운영체제는 컴퓨터나 스마트폰 등의 하드웨어와 소프트웨어 자원을 관리하는 시스템 소프트웨어이다. 운영체제는 한 컴퓨터에서 여러 애플리케이션이 동작할 수 있도록 도와주는 소프트웨어라고 할 수도 있다.커널하드웨어를 초기화해서 사용할 수 있도록 하는 운영체제의 핵심이다. 메모리와 프로세스를 관리하고, 네트워크 연결 등의 주요 기능을 제공한다.장치 드라이버하드웨어 장치를 초기화하고 운영체제와의 통신을 담당하는 소프트웨어다. 여기서 장치는 크래픽 카드, LAN 카드, 마우스 키보드 등 컴퓨터와 연결되어 사용하는 모든 기기를 의미한다.장치 드라이버가 중요한 이유개인적인 경험인데, 노트북에 우분투를 설치해서 사용하려고 한 적이 있다. 어느 정도 사용은 되는데, 노트북 하드웨어가..

OAuth 2.0에 대해 알아보기

주제에 대해 학습한 이유로그인 기능을 Denamu 프로젝트에 도입하면서 OAuth를 사용한 기능을 추가하기로 했다.(깃헙, 구글, 네이버, 카카오)그래서 OAuth 기술이 무엇인지, 학습할 필요가 생겼다.이 학습을 하기 위해, 생활코딩 OAuth 영상을 참고했다.OAuth소개내 서비스가 있고, 사용자가 있으며 나의 서비스가 연동하려는 그들의 서비스가 있을 것이다.(각각 Denamu, Denamu의 유저, Google이나 facebook이나 twitter 등이 대상에 대입될 수 있다.)나의 서비스가 사용자를 대신해서 구글의 캘린더에 대신 이벤트를 작성해준다던지, 이런 일을 하고 싶을 수 있다.우리의 서비스가 그들의 서비스에 접근할 수 있도록 할 수 있어야한다.가장 쉬운 방법은 사용자의 Google ID와 ..

[Denamu 스테이징 서버] DB 조회를 어떻게 최적화할 수 있을까?

DB 페이지네이션 성능 개선 과정우리 프로젝트의 서버는 처음에 커서 기반 페이지네이션으로 동작하도록 설계되었다.무한스크롤을 처음 구현해보기도 했고, 커서 기반 페이지네이션이 가장 이해하기 쉽고 구현하기에도 편해보였다.auto_increment가 설정되어 있는 PK를 기준으로 동작하도록 구현했다.그래서 최신 글부터 보여주기 위해 데이터가 순차적으로 삽입되어야 했다.초기 구현과 비동기 삽입의 한계처음 데이터 삽입을 구현하면서 promise.all을 활용한 비동기로 데이터 삽입 요청을 했다.하지만 비동기로 동작하면 DB 요청은 반복문을 통해 순차적으로 진행되어도 실제 DB 접근에서 순차적인 삽입이 보장되지 않는 것을 알게 되었다.개발 기간이 얼마 남지 않아 은행처럼 하나씩 순차적으로 삽입하는 방식으로 변경했다..

[WebSocket과 Socket.io] 1편 - WebSocket

🏃‍♂️시리즈로 글 정리를 할 것 같은데, 총 3~4편 정도 생각하고 있습니다.WebSocket으로 시작해서 Socket.io, Socket.io와 WebSocket의 차이, 마지막으로 Nest에서는 어떻게 WebSocket을 사용하고 있는지 이런 것들을 살펴볼 계획입니다.주제에 대해 학습한 이유WebSocket과 Socket.io는 다르다. 이 사실에 대해서는 어렴풋이 주워 들은 것들이 있어서 알고 있었다.(주워 듣게 된 계기는 Postman에서 제공하는 WebSocket 테스트 기능으로 우리 서버 채팅 테스트가 안 되었던 것이다.)이런 것들을 찾게 된 두 번째 계기는 WebSocket을 어떻게 테스트할 지 찾아본 것이었다.부하 테스트 연습을 K6로 진행했는데, 통신 프로토콜이 HTTP와 다르니 어떻..