동기(Synchronous)는 정확히 무엇을 의미하는걸까?

이번 포스팅에서는 I/O와 네트워크 등 전반적으로 다양한 모델에서 사용하는 개념인 동기(Synchronous)가 정확히 무엇을 의미하는 것인지, 그리고 동기 방식과 비동기 방식의 차이에 대해서 한번 이야기 해보려고 한다. 그리고 이 두 가지 개념과 많이 혼동되는 개념인 블록킹(Blocking)논블록킹(Non-Blocking)에 대해서도 간단하게 짚고 넘어갈 예정이다.

비전공 개발자가 전공자보다 정말 불리할까?

이번 포스팅에서는 많은 분들이 질문해주신 컴퓨터 공학을 전공하지 않은 개발자가 과연 전공자에 비해 불리한가에 대해서 한번 이야기해보려고 한다.

어떻게 보면 예민한 주제일수도 있지만 주변에 이와 같은 질문을 주시는 분들도 꽤 있는데다가, 심지어 컴퓨터 공학을 전공하지 않았다는 이유로 자기 자신을 낮게 평가하시는 분도 계셨다. 필자는 이런 것들이 어떤 특정 개인에게 국한된 것이 아니라고 생각되어 이에 대한 필자의 생각을 조심스럽게 한번 적어보려고 한다.

프라하에서 디지털 노마드로 살아남기

필자는 지난 9월 1일에 체코 프라하에 도착해서 휴가를 보내고 있는 중이다. 근데 마냥 휴가라고 하기에는 뭐한게, 전 직장과 프리랜서 계약을 했기 때문에 여기서도 결국 코딩을 하고 있기 때문이다. 나름 디지털 노마드 흉내를 내고 있는 셈이다.

나는 어떤 마음으로 소프트웨어를 만들어야 하는가

최근 필자는 산드로 만쿠소의 소프트웨어 장인이라는 책을 읽게 되었는데, 이 책을 읽으며 느낀 점이 많았기 때문에 이번 포스팅에서는 산드로 만쿠소가 이 책을 통해 이야기하고자 하는 것이 무엇인지와 그에 따른 필자의 생각을 한번 편하게 적어보려고 한다.

커밋 히스토리를 이쁘게 단장하자

이번 포스팅에서는 Git의 머지 전략 중 대표적인 3가지인 Merge, Squash and merge, Rebase and merge의 차이에 대해서 한번 이야기해보려고 한다. 이 3가지 머지 전략 모두 브랜치를 머지한다는 목적은 같지만, 어떤 방식을 선택하냐에 따라 커밋 히스토리가 기록되는 방식이 달라지게 된다.

개발자가 공부로 살아남는 방법

이번 포스팅에서는 개발자들에게 뗄레야 뗄 수 없는 키워드인 공부에 대해서 포스팅 해보려고 한다. 물론 다른 직종도 마찬가지겠지만 다른 업계보다 빠르게 변화하는 IT 업계의 특성 상 개발자는 시대의 흐름을 따라가기위해 은퇴 전까지 계속 해서 공부를 하는 수 밖에 없다.

알고 보면 재밌는 객체 지향 프로그래밍, OOP 흝어보기

이번 포스팅에서는 객체 지향 프로그래밍(Object-Oriented Programming), 줄여서 흔히들 OOP라고 부르는 설계 방법론에 대해서 이야기해보려고 한다. OOP는 프로그래밍의 설계 패러다임 중 하나로, 현실 세계를 프로그램 설계에 반영한다는 개념을 기반으로 접근하는 방법이다. OOP는 90년대 초반부터 유명해지기 시작했지만 아직까지도 전 세계의 많은 프로그래머들이 사용하고 있는 설계 패턴 중 하나이기 때문에 알아둬서 나쁠 건 없다.

[JavaScript로 오디오 이펙터를 만들어보자] 나만의 소리 만들기

이번 포스팅에서는 저번 포스팅에 이어 HTML5 Audio API를 사용하여 실제로 오디오 이펙터를 만드는 과정에 대해서 포스팅 하려고 한다. 저번 포스팅에서 이미 이야기 했듯이 Audio API는 여러 개의 노드를 연결하여 오디오의 흐름을 만들어 내는 것을 기본 개념으로 가지고 있고, 이펙터를 만들기 위해 필요한 몇 개의 추상화된 노드들을 기본적으로 제공해주기 때문에 그렇게 어려울 건 없다.

[JavaScript로 오디오 이펙터를 만들어보자] 소리의 흐름을 파악하자

이번 포스팅에서는 컴퓨터는 어떻게 소리를 들을까? 포스팅에서 진행했던 오디오 파형 그리기에 이어서 오디오에 여러가지 효과를 줄 수 있는 이펙터를 만드는 과정을 설명하려고 한다. HTML5의 Audio API는 오디오에 효과를 줄 수 있는 여러가지 노드를 제공하는데, 대부분의 이펙터는 이 노드들만 사용해도 구현할 수 있을 정도로 완성도있는 API를 제공한다.

2년 동안 근무했던 회사를 떠나며

오늘, 2019년 8월 16일을 마지막으로 지난 2년 동안 근무했던 회사를 떠나게 되었다. 지금은 사무실에서 말년의 여유를 즐기며 이 포스팅을 서두를 작성하고 있다. 그래서 이번 포스팅에서는 지난 2년 간 필자가 이 회사를 다니면서 느꼈던 점이나 입사 당시와 비교해서 지금 달라진 점들에 대해서 회고를 진행하려고 한다.

실시간 데이터의 평균을 효율적으로 구하기

이번 포스팅에서는 실시간으로 빠르게 쌓이는 데이터들의 평균을 효율적으로 구할 수 있는 방법에 대해서 간단하게 설명하려고 한다. 이런 실시간 데이터의 평균을 구해야하는 경우는 생각보다 꽤 많은데, 서버 엔진의 액세스 로그에 쌓이는 응답들의 평균 응답 시간을 구한다던가, 센서에서 들어오는 값들의 평균을 구한다던가 하는 경우이다. 이때 이런 데이터들은 빠르게는 1ms 정도의 간격으로 수집되는 경우도 비일비재하기 때문에, 데이터를 입력받자마자 빠르게 처리해야하는 성능이 굉장히 중요하다.

Webpack Watch의 메모리 누수 고치기

이번 포스팅에서는 최근에 고쳤던 Webpack Watch 기능의 메모리 누수에 대해서 간략하게 남겨보려고 한다. 필자가 회사에서 개발한 프로젝트가 점점 커짐에 따라서 Watch 중에 빌드를 여러 번 돌리게되면 어느 순간 갑자기 out of memory가 뜨면서 프로세스가 죽어버리는 이슈가 발생하였다. 이 문제는 사실 꽤 예전부터 발생했던 이슈지만 계속 비즈니스 이슈를 개발하느라고 외면받고 있던 이슈였는데 우연히 기회가 되어 해당 이슈를 자세히 들여다 볼 수 있었다.

개발자가 조직문화에 대해 관심을 가져야 하는 이유

우리는 개발자이기 이전에 어떤 조직의 구성원이기 때문에 조직문화로부터 생각보다 많은 영향을 받고 있다. 그렇기 때문에 우리는 한 조직의 일원으로 이 조직이 건강한 조직인지, 우리가 활기차고 생산성있게 일하고 있는지 끊임없는 관심을 가져야 한다.

로우 레벨로 살펴보는 Node.js 이벤트 루프

1년 전, 필자는 setImmediate & process.nextTick의 차이점에 대해 설명하면서 Node.js의 이벤트 루프 구조에 대해 살짝 언급한 적이 있었다. 놀랍게도 독자 분들은 원래 설명하려고 했던 부분보다 이벤트 루프 부분에 대해서 더 많이 관심을 주었고, 필자는 그 부분에 대해서 많은 질문을 받았었다. 그래서 이번에는 Node.js의 이벤트 루프를 구성하는 로우 레벨의 동작을 자세하게 설명해보려고 한다.

Git 뉴비를 위한 기초 사용법 - 버전 관리

이번 포스팅에서는 저번 포스팅인 Git 뉴비를 위한 기초 사용법 - 시작하기에서 설명했던 기본적인 명령어보다 좀 더 나아가서 몇 가지 개념과 명령어를 더 공부해보려고 한다. 저번 포스팅에서는 리모트 서버에서 소스를 클론하고 수정한 후 다시 리모트 서버에 업데이트하는 과정에 대해 집중해서 설명했다면 이번 포스팅에서는 Git의 메인 주제인 버전 관리에 대해 더 다뤄볼 예정이다.

Git 뉴비를 위한 기초 사용법 - 시작하기

이번 포스팅에서는 너도 쓰고 나도 쓰고 우리 모두 쓰고 있는 Git의 기초에 대해서 포스팅 하려고한다. 필자는 Git을 대학교 때 처음 접했는데 처음에는 왠 이상한 클라우드에 소스코드를 올려놓는다 정도로만 이해하고 사용했던 기억이 난다. 하지만 Git의 기능은 단순히 코드 공유에서 끝나지 않는 버전 관리 도구이므로 Git을 잘 쓰면 실무에서 펼쳐지는 다이나믹한 상황에 유연하게 대처할수도 있다.

흔한 개발랭이의 작가 입문기

필자는 최근 커피 한잔 마시며 끝내는 VueJS라는 책을 집필했다. 필자는 책처럼 긴 글을 적는 게 사실 처음이라, 책을 쓰는 과정이나 책을 출판하는 과정에 대해서 무지한 상태로 집필을 시작했고 그래서 중간에 우여곡절도 꽤 많았다.
그래서 이번 포스팅에서는 필자와 같이 책을 집필하고 싶어하는 분들을 위해서 2018년 8월부터 2019년 7월까지 책을 집필했던 과정과 어려움에 대해서 이야기 해보려고 한다.

프로그래머는 수학을 잘해야할까?

이번 포스팅에서는 필자가 많이 받은 질문 중 하나인 프로그래머는 수학을 잘해야할까?라는 질문에 대해서 한번 이야기 해볼까 한다.
물론 이 주제는 전 세계의 많은 개발자들 간에도 의견이 갈리는 내용이기 때문에 그냥 지나가는 개발자 한명의 생각일 뿐이라고 생각해줬으면 좋겠다.

컴퓨터가 만드는 랜덤은 정말로 랜덤할까?

이번 포스팅에서는 랜덤에 대해서 한번 이야기 해볼까 한다. 랜덤이란 어떤 사건이 발생했을 때 이전 사건과 다음 사건의 규칙성이 보이지 않는, 말 그대로 무작위로 발생하는 패턴을 이야기한다. 우리가 사용하고 있는 컴퓨터도 랜덤한 패턴을 만들어야 할 때가 있고 또 실제로도 만들고 있다.

컴퓨터는 어떻게 소리를 들을까?

이번 포스팅에서는 필자의 예전 직업이었던 사운드 엔지니어의 추억을 살려서 한번 오디오에 대한 이론을 설명해볼까 한다. 하지만 이론 설명만 하면 노잼이니까 오디오 이론을 기초로 자바스크립트의 Web Audio API를 사용하여 간단한 오디오 파형까지 그려보려고 한다.

Aamazon Web Service Agile Algorithm Array Asynchronous Atlassian Audio Average Backpropagation Blocking Commit Data Driven Data structure Deep Learning Essay Event Loop Express Git Good Programmer Gravity HTTP HTTP/2 Hash Table Hoisting IP JavaScript JavaScript Audio API Jira MFS Machine Learning Memory leak Merge Merge and squash Network NodeJS Non Blocking Notification API OOP Object Oriendted Programming PWA Paypal Progressive Web Application Rebase Render Optimizing SEO SPA SSR Server Side Rendering Single Page Application Sort Algorithms Sound Engineering Study Synchronous TDZ Temporal Dead Zone Tutorial TypeScript V8 Versioning Vue Web Web Push Webpack memory-fs traceroute webpack dev middleware webpack dev server 개발서적 개발자 객체지향프로그래밍 공동집필 공부 궤도 구현하기 나이퀴스트 난수생성알고리즘 네트워크 논리학 논블록킹 누적평균 데이터 기반 의사결정 동기 딥러닝 렌더 최적화 머신러닝 메르센 트위스터 배열 성능 최적화 버전관리 부트캠프 블록킹 비동기 비전공 개발자 사운드 엔지니어 서버사이드 렌더링 소프트웨어 개발 방법론 소프트웨어 장인 리뷰 소프트웨어 장인정신 수학 알고리즘 애자일 애자일 프로세스 에세이 역전파 알고리즘 오디오 이펙터 이벤트 루프 자료구조 정렬 알고리즘 조직문화 좋은 프로그래머 중력 중력 구현하기 철학 커피 한잔 마시며 끝내는 VueJS 컴퓨터 공학 컴퓨터공학 케플러 6요소 케플러 궤도 방정식 코딩학원 타입스크립트 타입스크립트 인공 신경망 퇴사 튜토리얼 페이팔 평균구하기 프라하 프라하 생활 팁 프로그래밍 프로그래밍서적 프로페셔널 한 달살기 해시테이블 협업 호이스팅 회고 회고록
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×