2020/12

2020년의 마지막 날 한 해를 마무리 하면서 나는 내년을 준비하기로 했다. 연말 회고록에서 밝혔듯, 내년에 여러가지 목표를 세우고 있고 오늘 그 중 하나를 시작해 보려고 한다. 바로 재테크를 통해 경제와 세상이 돌아가는 흐름을 파악하기, 부가적으로 수익을 내보기이다. 사실 나는 경제에 대해서 잘 모른다. 고등학교 때도 이과라는 이유로 사회과목 공부를 소홀히 했고, 경제 과목은 공부조차 하지 않았다. 대학을 다니는 동안에도 경제에 대해서 깊이있게 배웠던 기억은 많지 않다. 그냥 교양 시간에 들었던 강의 정도? 그 마저도 지금은 다 까먹은 것 같다. 그러다가 대학을 졸업하고 사회 생활을 하면서 돈을 벌기 시작하고 미래에 대한 고민을 하면서 이런 생각이 들었다. 일을 안 하고 (또는 적당히 하고) 남은 시간..
올 한해 2020년도 이제 얼마 남지 않았다. 이번에도 한 해를 돌아보며 나의 2020년을 회고하는 글을 써 보려고 한다. 나의 3번째 회고록이며 소프트웨어 개발자로서 1년차의 회고록이다. 2018년 회고록 2019년 회고록 분기별 Highlight Q1 (1월 ~ 3월) 토스에서 Scraping Developer로 일을 열심히 했다. 진짜... 열심히 했다. 내가 했었던 일은 은행 및 카드사로부터 계좌나 거래내역과 같은 금융 정보들을 불러오는 과정(Scraping)을 하기 위한 회원가입/로그인 자동화 기능 개발 및 유지보수 였다. 쉽게 설명하면 고객들이 직접 일일이 해야 하는 작업들을 Puppeteer라는 Headless Chrome Browser 오픈소스 도구를 이용하여 자동화를 시켜주는 것이다. 신..
이번 포스팅에서는 킥스타트 2020 Round C에 대한 문제 풀이를 공유하고자 한다. 1. Countdown 간단한 배열 문제이다. 배열의 반복문을 돌면서 주어진 숫자부터 시작되는 카운트 다운이 총 몇 개인지를 세어 주면 된다. 한 번 배열을 순환해서 답을 구할 수 있기 때문에 시간복잡도는 O(N). 2. Stable Wall 그래프 개념을 가지고 풀어야 하는 조금 까다로운 문제이다. 나의 경우 다른 사람의 풀이를 조금 참고하면서 풀었다. 문제를 이해하는 것 부터 쉽지가 않았던 것 같다. 위상 정렬(topological sort)과 DFS를 사용하였다. N개의 폴리노미노(polynomino)가 있고 이것들이 stable한 경우, 즉 각각의 폴리노미노가 바닥에 붙어 있거나, 다른 폴리노미노 위에 올라타 ..
이번 포스팅에서는 RxJS에서 시간에 대한 개념을 정리해 보고자 한다. 왜 우리가 시간을 신경써야 하는지, RxJS에서는 시간을 어떻게 처리하는지 등에 대해서 알아보고자 한다. 앞서 우리가 살펴본 바에 따르면 옵저버블은 시간 경과에 따른 이벤트의 무한 시퀀스이다. 동기적인 코드라면 실행 시간을 정확하게 측정하여 예측할 수가 있지만 비동기는 명령들이 선형적으로 실행이 되지 않기 때문에 실행 시간을 정확하게 알 수 없고 예측은 더더욱 할 수가 없다. 따라서 특정 작업이 언제 완료될지를 추측하는 것이 아닌, 작업에 반응한다는 방식으로 접근해야 한다. 왜 시간을 신경써야 할까 시간을 신경써야 하는 이유는 단순하다. 시간이 오래 걸리면 사용자는 초조함을 느끼고 결국에는 떠난다. 따라서 우리는 시간을 최대한 단축할..
Frenchpod 101 레벨 1 레슨 24~27까지의 공부한 내용을 정리해 보았다. 어휘 aller : to go Je vais chez Nicole. : I go to Nicole's house. bientôt : soon Ma petite amie va être bientôt là. : My girlfriend will be here soon. alors : then, so Alors, qu'est-ce que tu fais? : So, what are you doing? vieux(M), vieille(F) : old C'est une vieille église. : It's an old church. rentrer : to go in to, to go inside Il est rentré dan..
이번 포스팅에서는 이더넷에 대해서 알아보고자 한다. 이더넷(Ethernet)이란 이더넷은 네트워크를 만드는 하나의 방법이다. 이더넷은 CSMA/CD 프로토콜을 이용하여 통신한다. 네트워크를 만드는 방식에는 이더넷 말고도 과거에는 토큰링, FDDI, ATM 등의 방식들이 있었다. 각각의 방식마다 네트워크 방지, 랜카드 등을 다르게 준비해야 한다. 현재는 이더넷이 전 세계적으로 가장 많이 사용되는 네트워크 방식이다. CSMA/CD 방식에 대해서 조금 더 설명을 하면, Carrier Sense Multiple Access/Collision Detection의 약자이다. 이더넷 환경에서 통신을 하고 싶은 PC나 서버는 현재 네트워크 상에서 통신이 일어나고 있는지를 확인해야 한다. 네트워크 상에 있는 신호를 캐리..
CSS in JS 기존에 CSS는 .css 파일에 작성해서 사용하였다. 프로젝트의 규모가 커지면서 항상 큰 스타일 시트를 유지하는 것이 번거로워졌고 그래서 새로운 아이디어가 나왔다. 스타일시트를 문서레벨이 아닌 컴포넌트 레벨로 추상화 하여 마치 모듈처럼 사용하는 것이다. CSS-in-JS는 JS를 사용하여 스타일을 선언적이고 유지보수가 가능한 방식으로 설명한다. JS를 CSS로 전환하는 고성능 컴파일러로, 런타임 및 서버 사이드에서 작동한다. 참고로 인라인 스타일과 CSS-in-JS는 다르다. 차이점이 있다면 인라인 스타일은 DOM 노드에 속성으로 추가하였고, CSS-in-JS는 DOM 상단에 Hello CSS-in-JS 기존에 CSS는 컴포넌트 기반을 고려하여 만들어진 적이 없었다. CSS-in-JS는..
지난 포스팅에 이어서 이웅재님의 우아한 타입스크립트 세미나 2편을 정리해 보려고 한다. 이번 포스팅에서는 실전 타입스크립트 코드를 작성하는 측면에서 적용해볼 수 있는 부분들에 대해 알아본다. 1. Conditional Type 활용하기 Conditional Type이란 타입이 조건부로 적용되는 것을 의미한다. 타입 T를 제네릭 형태로 받는다. 예를 들면 아래의 예제 코드처럼 T가 string인 경우는 StringContainer로, T가 number이면 NumberContainer로 받을 수 있다. 이번에는 infer라는 키워드를 살펴보도록 하자. 조건부 타입에서 infer는 타입변수를 참조하기 위해서 사용이 된다. 프로미스의 제네릭은 보통 리턴타입을 의미한다. 아래의 예제는 Promise의 배열인 경우..
DevOwen
'2020/12 글 목록