정글사관학교 46

주관이 선명해진 이유

요즘 삶이 재밌다고 느끼는데, 그 이유 중 하나가 주관의 해상도가 선명해지는 게 느껴져서다. 예전에는 남들이 멋있다고 하는 거, 세상이 멋있다고 하는 걸 좇았다. 창업이 하고 싶은 게 아니라 해야만 한다고 생각했던 이유도 그래서였고. 그런데 하나하나 경험치를 쌓을수록 나와 맞고 맞지 않는 게 무엇인지 명확해졌다. 남들 다 가려는 대기업은 인턴을 해보니 핏이 맞지 않는다는 걸 느꼈다. 죄를 지어야 간다는 대학원 덕분에 오히려 앞으로 인생에 선택지를 넓히는 자유를 가졌다. 창업은 하고 보니 대표직 맡는 것보다 공감이 가는 큰 문제를 뛰어난 팀과 함께하는 게 더 중요하다는 걸 알게 됐다. 남들 다 아깝다고 하는 신소재 석사 학위보다 IT 산업에 재밌는 게 더 많아서 소프트웨어 개발자로 전직했다. 하지만 주관은..

인사이트 일기 2022.05.28

[AWS/나만의무기]아키텍쳐 변경: S3와 Cloudfront(CDN)를 이용한 서버리스 온디맨드 스트리밍 설계

휴..오늘 또 한 건 했다. 0. Executive Summary 온디맨드 스트리밍은 스트리머가 방송한 라이브 스트리밍 전체 영상을 저장해 시청자가 '지나간 라이브'(playback) 방송을 보고 싶을 때 언제든 시청할 수 있는(on-demand) 시스템을 말한다. 기존 오픈소스에서 제공하는 playback 기능은 미디어 서버 내 스토리지에 지나간 영상을 저장해뒀다가, 클라이언트로부터 요청이 들어오면 RTMP 프로토콜을 통해 node-media-client에서 제공하는 컴포넌트로 재생하는 방식이었다. 여기에는 두 가지 문제가 있었다. feature의 한계: node-media-client가 제공하는 기능은 지나간 영상을 재생만 할 수 있다. 지나간 영상을 재생/정지/특정 구간 재생 등 다양한 featur..

DevOps 2022.02.25

[React Native]URL 배너 생성 시 re-rendering 속도 최적화

후.. 또 어찌어찌 문제 하나 해결해냈다. 이번 건 꽤나 끙끙 앓았던 문제여서 그런지 해결하고 나니 엄청 속이 시원해지는 magic.. 1. Introduction: What is the problem? 지난 번 만들었던 라이브 커머스 방송에 접속했을 때 화면을 클릭하면 채팅창과 하트 날리는 버튼이 가려졌다 나타나는 기능에 더해, 실제 라이브 커머스 스트리밍에서 꼭 필요한 기능인 배너 이미지(하단 이미지 참조)를 만들었다. 스트리머가 URL을 입력하면 해당 URL로부터 이미지와 타이틀, description에 대한 메타데이터를 크롤링해 아래와 같이 배너가 만들어진다. 이를 해결하기 위해 react-native-url-preview 오픈 소스를 가져다가 사용했다. 문제는 오픈 소스로 제공하는 컴포넌트를 뜯..

React Native 2022.02.18

[React Native] 스크린 터치 시 컴포넌트 hide/show 구현

어쩌다 보니 졸지에 백인데 프론트를 맡아서 하고 있는 처지이나..예전에 디자인도 공부했고 보여지는 것에 관심이 많은지라 프론트도 잘할 수 있을 것이라 생각해 호기롭게 맡았다. 결과는 처참 그 자체..인 것 같았으나! 오늘 드디어 어찌저찌 문제를 해결했다. 엄밀히 말하면 반쪽짜리로 구현했지만, 일단 1차적으로 글을 쓰고 다시 고민해 최종적으로 결과물을 구현해볼 예정이다.(수정 - 문제 해결 완료! 하단에 추가) 현재 우리 팀의 아이템은 이다. 여기서 내가 맡은 부분은 스트리머/뷰어가 라이브 방송을 켰을 때의 화면을 구현하는 것을 맡았다. 관련해서 스켈레톤 코드는 github에서 스트리밍 오픈소스를 참고했다. 참조한 소스코드가 클래스형 컴포넌트로 구성되어 있어 본 코드는 클래스형으로 구현했음을 미리 적는다...

React Native 2022.02.13

[나만의 무기 3일차] 1주차 정리 + NodeJS 개념 정리(정글사관학교 95일차 TIL)

왐마..진짜 정신없이 한 주가 지나갔다. 1. 나만의 무기 0주차 소회 핀토스가 끝나고 본격적으로 나만의 무기 프로젝트에 들어갔다. 우리는 처음에 내놓은 아이디어였던 런치챗을 더 디벨롭시키기로 하고 아이디어 회의를 시작했다. 하지만 시작부터 난관에 부딪혔는데, 바로 이 서비스를 왜 써야 하는가?가 명확하지 않았기 때문이다. 왜 굳이 사내 다른 직원 혹은 사외 직원을 익명으로 만나서 밥먹어야 하나. 명확히 커리어 관련 문제를 해결하겠다는 목적도 아니고, 그렇다고 아예 소개팅도 아닌 어정쩡한 포지셔닝임을 깨닫고 고민에 빠졌다. 그러다 나온 아이디어는 "재택 직장인이라면 얘기가 다르지 않을까?"였다. 처음에 제시한 솔루션이 비타민이었다면 재택근무 하는 직장인이 겪는 식사 문제는 pain point였다. 식비는..

PintOS Project 4 - WIL(정글사관학교 92일차 TIL)

이번 주에는 설날도 겹치고 번아웃도 오고 여러 면에서 집중을 잘 못했다. 사실 다 변명이지..반성할 건 반성하고 털어낼 건 오늘 이 시간에서 털어내도록 하자. 이번주에 공부한 것들은 아래와 같다. 반효경 교수님 운영체제 강의 운영체제 - File system (1) File system 운영체제 - File system (2) File system implementation 운영체제 - File system (3) File system implementation 2 PintOS Project 4 - File Systems (1) Indexed and Extensible Files PintOS Project 4 - File Systems (2) Extensible Files Start 주말 하루는 푹 쉬기..

운영체제 - File system (3) File system implementation 2 (정글사관학교 87일차 TIL)

Page Cache and Buffer Cache page cache VM의 페이징 시스템에서 사용하는 페이지 프레임을 캐싱 관점에서 설명하는 용어 memory-mapped I/O를 쓰는 경우 file I/O에서도 page cache 사용! Memory-mapped I/O File 일부를 vm에 매핑 매핑시킨 영역에 대한 메모리 접근 연산은 파일 입출력을 수행하게 한다. Buffer cache 파일 시스템 통한 I/O 연산은 메모리 특정 영역인 buffer cache 사용 파일 사용의 locality 활용 한번 읽어온 블록에 대한 후속 요청시 버퍼 캐시에서 즉시 전달 모든 프로세스가 공용으로 사용하는 캐시! Replacement algorithm 필요(LRU, LFU 사용 가능 → 모든 정보를 운영체제에..

PintOS Project 3 - WIL(정글사관학교 84일차 TIL)

이번주에는 Pintos의 가상 메모리를 구현하는 작업을 수행했다. 공부 및 작업한 것들은 아래와 같다. 1. 진행 상황 운영체제 (4) 메모리 관리 - 1, 2 운영체제 (5) 메모리 관리 - 3 PintOS Project 3 - Virtual Memory (1) Memory Management PintOS Project 3 - Virtual Memory (2) Anonymous Page PintOS Project 3 - Virtual Memory (3) Stack Growth PintOS Project 3 - Virtual Memory (4) Memory Mapped Files PintOS Project 3 - Virtual Memory (5) mmap() 및 page fault 관련 추가 정리 Pin..

PintOS Project 3 - Virtual Memory (4) Memory Mapped Files (정글사관학교 81일차 TIL)

0. Memory Mapped files 개념 정리 이전 파트에서 다뤘던 anonymous page는 특정 파일에 매핑되지 않은 페이지를 다뤘다면, 이번에는 특정 파일과 매핑된(==file-backed) 페이지를 다룬다. 따라서 memory-mapped file은 곧 file-backed page와 연결된 파일을 뜻한다. 이 페이지 안의 내용은 이미 디스크에 존재하는 파일의 데이터를 복제하기 때문에 page fault가 발생했을 때 즉시 디스크->프레임에 할당된다. 메모리가 해제되거나 swap-out되면 메모리 내 변경 사항은 파일로 반영된다. 깃북 설명 링크는 여기. 여기서는 mmap과 munmap 함수를 구현한다. mmap은 이전에 malloc 공부할 때 잠시 다루기도 했는데, 그때는 단순히 페이지 ..

PintOS Project 3 - Virtual Memory (3) Stack Growth (정글사관학교 80일차 TIL)

하..현재 (2)에서 올 fail이 뜨는 상황이다..(혹시나 말하건대 제 글을 참조하며 코드를 짜는 분이 있다면 그러지 말라고 말씀을...그냥 개념 공부만 참조하세요..코드 다 터집니다..) 뒷 내용을 미리 땡겨 쓰다보니 터지지 않았을까 하는 작은 희망으로 무소의 뿔처럼 우직하게 일단 가본다. Gitbook 정리는 여기 링크에 해뒀다. 1. Stack Growth 정리 이번 과제는 stack growth. 이전 글(개노답글)에서도 잠깐 써놨지만, 프로젝트 2까지는 유저 스택이 고정된 크기를 지녔다. 이는 코드를 보면 알 수 있는데 #ifndef VM ... /* Create a minimal stack by mapping a zeroed page at the USER_STACK */ bool setup_..