전체 글

안녕하세요. 사진과 철학에 관심이 많은 웹 프론트엔드 개발자 오원종입니다. 시간이 지나도 꾸준히 읽힐 수 있는 글을 쓰고 싶습니다. 재미있는 일만 하면서 살고 있는 사람입니다.
이번 포스팅에서는 함수 vs 블록 스코프에 대한 비교와 호이스팅의 개념까지 정리를 해 보려고 한다. 함수 기반 스코프 스코프는 컨테이너나 바구니와 같은 구실을 하는 일련의 '버블'이고 변수나 함수 같은 확인자가 그 안에서 선언된다. 자바스크립트는 함수 기반 스코프를 사용하기 때문에 함수는 이러한 버블을 만든다. 많은 개발자들은 각각의 선언된 함수는 버블을 생성하지만, 다른 자료구조는 자체적인 스코프를 생성하지 않는다고 알고 있다. 위 예제 코드에서 foo()의 스코프 버블은 a,b,c와 bar를 포함한다. 따라서 foo() 바깥에서는 이들에게 접근할 수 없다.(접근 시 ReferenceError 발생) 하지만 foo() 안에서는 이 모든 확인자(a, b, c, foo, bar 등)에 접근이 가능하고, b..
C++에서 예외를 어떻게 처리하는지에 대해서 알아보도록 한다. C++에서도 예외를 지원한다. 다만 C++에서는 예외의 중요성이 다른 언어(ex. JAVA)에 비해서 좀 떨어진다. JAVA나 C#에 당연히 있는 예외가 C++에는 없는 경우도 있다. 그래서 이번 포스팅에서는 올바른 사용법 위주로만 알아본다. 예외를 남용하는 것은 지양해야 한다. 예외가 발생하는 상황 첫 번째 예외 발생 상황은 범위 이탈이다. 다음과 같이 범위를 넘어서서 참조를 하는 상황일 경우 에러가 발생하고 try/catch를 통해서 예외 처리를 해줄 수 있다. try/catch가 없는 경우 Visual Studio는 핸들링이 되지 않은 exception이 있는 경우 breakpoint를 걸어주는 기능이 있다. 참고로 아래와 같은 코드는 ..
Frenchpod 101 레벨 1 레슨 28~31까지의 공부한 내용을 정리해 보았다. 어휘 faire : to do, to make Je ne sais pas quoi faire. : I don't know what to do. l'aviron : rowing L'aviron est un sport olympique. : Rowing is an olympic sport. souvent : often Il triche souvent quand il joue aux cartes. : He often cheats when he plays cards. vélo : bike, biking Mon vélo est vieux. : My bicycle is old. au bord de : along Je marche ..
이번 포스팅에서는 킥스타트 2020 Round D에 대한 문제 풀이를 공유하고자 한다. 1. Record Breaker 배열을 반복하면서 조건문을 통해 카운팅을 하면 쉽게 풀 수 있는 문제이다. 시간복잡도는 O(N) 2. Alien Piano 이 문제는 Greedy 알고리즘을 사용해서 풀었다. 먼저 배열을 통해 각각의 note의 pitch를 받아서 채워준다. 이 때 연속해서 같은 값이 나오게 되면 같은 alien piano key를 사용하게 되므로 배열에 넣어주지 않아도 된다. 이렇게 배열을 넣어 주었을 때 만약 다음과 같이 배열이 생겼다고 가정해 보자. 이 때는 연속해서 두 숫자가 같은 경우는 존재하지 않을 것이다. [1, 8, 9, 7, 6, 5, 4, 3, 2, 1, 3, 2, 1, 3, 5, 7]..
이번 실습은 여러 호스트를 다루면서 컨테이너를 배치하는 방법에 대해서 다뤄보는 튜토리얼이다. 이번 튜토리얼에서는 도커 스웜(docker swarm)을 사용한다. 도커 스웜은 여러 도커 호스트를 클러스터로 묶어주는 컨테이너 오케스트레이션 도구이다. 여러 도커 호스트를 사용하여 확장성 있는 어플리케이션을 만들기 위해서는 (거의) 필수적이다. 오케스트레이션 도구를 사용하면 어느 도커 호스트에 어떤 컨테이너를 배치해야 하는지, 서로 다른 호스트에 위치한 컨테이너 간의 통신은 어떻게 해야 하는지 등의 조율을 수월하게 할 수 있다. 여기서 잠깐, 도커에서 쓰이는 다양한 도구들의 역할을 복습하고 가자 도커 컴포즈(docker-compose) : 여러 컨테이너로 구성된 도커 어플리케이션을 관리 (주로 단일 호스트) 도..
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한 경우, 즉 각각의 폴리노미노가 바닥에 붙어 있거나, 다른 폴리노미노 위에 올라타 ..
DevOwen
오웬의 개발 이야기