본문 바로가기

[OOP] JavaScript 객체 지향 프로그래밍 - 1. 시작 들어가며 어느 정도 개발에 대한 감을 익혔다고 생각했습니다. 코드를 순서에 맞게 작성하는 능력들을 아주 조금이지만 쌓아 올릴 수 있었습니다. 하지만 시간이 지나면서 제 코드를 봤을 때 너무 더럽다고 느껴졌습니다. 중복되는 코드가 많았고, 비효율적인 코드들도 많이 볼 수 있었습니다. 코드를 조금 더 재사용성이 높게 작성한다면 더 효율적으로 시스템이 동작할 수 있었을 텐데, 아쉬움이 남았습니다. 이런 고민을 하면서 객체지향 프로그래밍에 대해 배워야겠다고 생각했습니다. 앞으로 객체지향을 배우면서 공부하고 느낀 점들을 정리해나가고자 합니다. 아래 내용은 생활코딩의 OOP 수업을 듣고 정리한 내용입니다. 정리정돈을 잘해보자 개발을 하다 보면, 코드 정리의 필요성을 느낄 때가 있습니다. 코드를 잘 정리한다면 많은 ..
[Web] 비트와 바이트, 문자 인코딩이란? 들어가며 누군가 홈페이지에서 "뛣뷁꿇꼶꺎...."와 같은 이상한 문자가 나오는 것은 왜 그런 것인가 저에게 물었던 적이 있습니다. 개발을 하면서 아주 간단한 부분조차 제대로 설명할 수 없다는 것을 깨달을 때가 있습니다. 항상 대충 알고만 넘어갔던 부분들을 이제는 제대로 알아야겠다고 생각했습니다. 지금부터 비트와 바이트, 그리고 문자 인코딩에 대해 알아보겠습니다. 비트와 바이트 컴퓨터가 이해할 수 있는 최소의 정보 단위는 0과 1밖에 없습니다. 컴퓨터는 0과 1의 조합으로 이루어진 정보들을 처리할 수 있습니다. 컴퓨터가 처리할 수 있는 가장 작은 단위의 정보를 나타내는 것이 bit입니다. 비트는 0 또는 1이라는 정보를 담을 수 있습니다. 그리고 이런 2진수(Binary Digit)들이 모여서 조금 더 큰..
[일기장] 어떤 불편함 들어가며 누군가의 뒷모습을 오랫동안 바라보는 순간이 있습니다. 비록 당신의 얼굴과 표정이 보이지는 않지만, 뒷모습을 통해 당신의 모습을 조금이라도 상상할 수 있었습니다. 그렇게 뒷모습을 관찰하며 느낀 감정을 글로 쓴 적이 있습니다. 뒷모습을 통해 당신의 인생을 조금이라도 생각할 수 있다고 생각했습니다. '본다'라는 감각은 생각할 수 있는 힘을 키워준다고 생각합니다. 하지만 살아가다 보면 눈과 시력이 있다고 모두가 볼 수 있는 것은 아님을 알게 됩니다. 보려고 노력하는 사람만이 보고 싶은 것을 볼 수 있다고 믿습니다. 보이지 않는 곳에서 고통을 겪는 사람들의 아픔을 보살필 수 있는 사람이 되고 싶었습니다. 그러려면 그들의 아픔을 먼저 들여다봐야 하고, 보이지 않는 곳에 있는 그들을 보기 위해 노력해야 했습..
[일기장] 좋은 어른이 되고 싶다 들어가며 잔나비의 노래를 좋아합니다. 잔나비의 노래를 들을 때면, 부모님의 스무 살이 궁금해지곤 했습니다. 잔나비의 노래를 들을 때면 따뜻함이 느껴지곤 했습니다. 잔나비는 따뜻함을 노래한다고 생각했습니다. 가장 개인적인 것이 가장 창의적인 것이라는 스코세이지의 명언이 잔나비의 음악을 두고 하는 말이구나 생각이 들만큼, 잔나비는 훌륭한 밴드라고 생각했습니다. 세상에는 참 멋있는 사람이 많습니다. 가끔 멋있는 사람이 되고 싶다고 막연하게 생각했습니다. 멋있는 사람에 대한 기준은 정말 다양하지만, 따뜻함이 담긴 무언가를 보여줄 수 있는 사람이 멋있다고 생각했습니다. 멋있는 사람 얼마 전부터, 멋있는 사람에 대한 저만의 기준을 하나 더 추가했습니다. 요즘은 도전하는 사람이 참으로 멋있다고 생각했습니다. 어느 분..
[일기장] 스타트업 개발자의 책임감 들어가며 운이 좋게도, 초기 스타트업에서 서버 개발자로서 일을 하고 있습니다. 저는 실력이 뛰어나지 않습니다. 하지만 제가 뛰어나 져야 만 우리 팀이 앞으로 나아갈 수 있기 때문에 성장을 위해 고군분투하고 있습니다. 팀에서 사수 없이 홀로 서버 개발을 진행한다는 것은 부담일 수 있습니다. 홀로 개발하는 만큼, 책임감도 막중합니다. 만약 문제가 발생되면 그 문제를 혼자만의 힘으로 해결해야만 합니다. 만약 저의 문제 처리 방식이 잘못된 경우엔, 팀에 피해를 입힐 수 있기 때문에 더 정신 차리고 개발하지 않으면 안 됩니다. 사수가 없기 때문에, 하나의 문제가 발생하더라도 문제를 빠르게 해결할 수 없습니다. 이 때문에 좋은 사수가 옆에 있다면 더 좋지 않았을까 하는 생각이 들기도 합니다. '사수가 없어서, 많은..
[협업] 협업을 위한 swagger 설정하기 (feat node.js) 들어가며 스타트업에서 서버 개발자로 일하면서, 불편한 점을 하나씩 해결하고자 노력하고 있습니다. 그중, 하나가 API 명세서 작성에 관한 부분이었습니다. 처음 팀에 합류하고 API 개발을 위해 명세를 찾아봤지만, 제대로 정리된 명세서를 찾아볼 수 없었습니다. 수많은 API가 있었지만, 명세가 없어서 API를 수정하거나, 생성할 때 수많은 시간이 걸렸습니다. 반드시 API 명세서를 제대로 작성해서 업무에 적용시켜야겠다고 생각했습니다. 수많은 삽질을 하면서 swagger를 활용해서 명세를 작성하는 것이 가장 효율적이라고 생각했습니다. node.js를 활용한 swagger 적용 삽질기에 대해 작성하겠습니다. Swagger란 무엇인가? Swagger는 Open API Specification(OAS)를 위한 프..
[자바스크립트] 클로저에 대해 알아보자 들어가며 알고리즘 문제를 하나씩 풀면서, 클로저란 무엇인지 알아보고 싶었습니다. 다른 글이나 설명들을 보면 상당히 복잡한 경우가 있었는데, 이걸 어떻게 하면 쉽게 설명할 수 있을까 고민해보고 싶었습니다. 이번 기회에 이 부분을 제대로 정리해봐야겠다고 생각했습니다. 변수의 유효범위 클로저를 이해하려면 자바스크립트가 어떻게 변수의 유효범위를 지정하는지 먼저 이해해야 합니다. { let message = "Hello"; console.log(message); } console.log(message); 위의 경우 스코프 안에서는 변수를 콘솔 값에 출력할 수 있었지만, 스코프 밖에서는 스코프 안에 있는 변수를 콘솔 값에 출력할 수 없었습니다. 즉 자바스크립트는 함수 내부에서 함수 외부에 있는 변수에 접근할 수 있..
[협업] 협업을 위한 VScode 설정하기 들어가며 개발을 처음 하는 친구가 제게 어떤 코드 편집기를 써야 하는지 물었던 적이 있습니다. 세상에는 다양한 코드 편집기들이 존재하지만 저는 친구에게 VScode(Visual Studio Code)를 추천했습니다. 친구는 저에게 왜 이 편집기를 추천하는지 물었습니다. 이번 기회에 조금 더 많은 분들에게 VScode의 유용함에 대해 공유해봐야겠다고 생각했습니다. VScode의 다양한 기능들에 대해 소개하고자 합니다. VScode 설치 아래의 사이트로 들어가서 OS에 맞게 에디터를 먼저 설치해주시면 됩니다. 일단 설치를 완료했으면, 이제는 VScode에 대한 간단 사용법에 대해 함께 익혀보겠습니다. Visual Studio Code - Code Editing. Redefined Visual Studio C..
[회고] 2020년 하반기 - SOPT와 함께한 성장기 들어가며 지금 제 나이가 xx인데, 지금이라도 늦지 않았을까요? 많은 사람들이 나이가 많다는 이유로 도전하는 것을 무서워합니다. 저 또한 27살이란 나이에 개발을 처음 시작해도 괜찮을까 하는 막연함이 있었습니다. 솔직히 무섭기도 했습니다. 당장 고등학생들도 개발을 엄청 잘한다는데, 내가 그들과 경쟁했을 때 과연 경쟁력이 있을까 하는 두려움도 있었습니다. 정말 늦어버린 것은 아닌가 생각하곤 했습니다. 그렇게 1년이 지난 지금. 그때를 생각해보면 참으로 어리석었다는 생각을 합니다. 도대체 무엇이 두렵고 무서웠을까요. 인생을 돌아간다고 남들에게 손가락질받는 거?, 남들처럼 안정적인 삶을 살지 못하는 거?, 아니면 내 또래 친구들은 대기업에 가고 공기업에 가서 행복하게 살고 있는데, 나는 그렇지 못해서 뒤쳐진다..
[자바스크립트] slice와 splice의 차이점에 대해 알아보자 들어가며 알고리즘 문제를 하나씩 풀면서, slice와 splice의 차이점에 대해 문득 궁금해졌습니다. 비슷한 기능을 수행하는 것 같은데, 어떤 차이점이 있고, 어느 상황에서 메서드를 사용해야 하는지 잘 알지 못했습니다. 이번 기회에 이 부분을 제대로 정리해봐야겠다고 생각했습니다. Array.prototype.slice() slice() 메서드는 어떤 배열의 start부터 end 전까지의 복사본을 새로운 배열 객체로 반환합니다. 즉, 원본 배열은 수정되지 않습니다. 위의 설명이 좀 어려울 수 있습니다. 이를 다르게 해석하면, slice(start, end) 메서드는 start와 end 인자를 받습니다. start는 추출 시작점에 대한 인덱스를 말하며, end는 추출을 종료할 인덱스를 말합니다. 메서드의 ..