본문 바로가기

Dev.World

(61)
2017년 지극히 개인적인 회고 굳이 회고를 써야하나 하는 시점에서 지금 잘하고 있는가를 고민하다가 회고를 쓰면서 정리하기로 했다. 작년에는 블로그가 인생의 절반이었기 때문에, 블로그를 중심으로 회고가 이루어졌는데 올해에는 이런 저런 많은 일들이 있었으니 주제별로 세션을 나눠 회고를 해야겠다. 블로그 회고 1. 포스팅 성격에 따른 플랫폼 분리작년에는 티스토리에만 주구장창 포스팅을 했었다. 포스팅의 성격은 신경쓰지 않고 한 플랫폼에서 카테고리만 나눠 포스팅을 했더니 뭔가 모듈화가 되어있지 않은 느낌을 받았다. (이 정도면 거의 병이다.) 그래서 미디엄이라는 플랫폼에는 에세이 형식의 글을 포스팅하기로 했고 GitHub 호스팅을 통해 새로 블로그를 만들어서 프론트엔드 분야와 각종 Tool들을 소개하는 포스팅을 하기로 했다. 그리고 세 플랫폼..
[Refactoring] 마틴 파울러, 리팩토링 정리 1편 Refactoring 1편 컴퓨터가 인식 가능한 코드는 바보라도 작성할 수 있지만, 인간이 이해할 수 있는 코드는 실력있는 프로그래머만 작성할 수 있다. What, 리팩토링이란 무엇인가 정의 리팩토링이란 겉으로 드러나는 기능은 그대로 둔 채, 아랑보기 쉽고 수정하기 간편하게 소프트웨어 내부를 수정하는 작업을 말한다. 리팩토링 기법을 연달아 적용해서 겉으로 드러나는 기능은 그대로 둔 채 소프트웨어 구조를 변경한다. 목적 첫째, 리팩토링은 소프트웨어를 더 이해하기 쉽고 수정하기 쉽게 만드는 것이다. 둘째, 리팩토링은 겉으로 드러나는 소프트웨어 기능에 영향을 주지 않는다. Why, 리팩토링은 왜 필요한 것인가 1) 소프트웨어의 설계를 보다 더 나아지게 한다. 2) 코드를 더 이해하기 쉽게 만든다. 3) 코드에..
blocking, non-blocking and Async blocking, non-blocking and AsyncBlocking I/O Model일단 I/O작업은 User Level(application)에서 직접 수행할 수 없다. 실제 I/O작업은 Kernel Level(OS)에서 일어나는 과정이다. 따라서 유저 프로세스(applicatioin)는 커널(OS)에게 I/O 작업에 대한 요청을 해야 한다. I/O 작업을 처리하기 위해 User Level에 있던 Application이 시스템 함수를 호출한다.(system call) 이 때 context-switching 이 발생한다. 그리고 Kernel Level에서 해당 I/O 작업이 끝나고 데이터를 반환하게 되면 그 때가 되서야 애플리케이션 단의 스레드에 걸렸던 block이 풀린다. 애플리케이션 관점에서 보..
스타트업 개발 인턴 면접 vs 대기업 개발 인턴 면접 이번에 스타트업과 대기업 한 곳씩 'SW개발 인턴'으로 지원을 했습니다. 그 지원 과정과 면접 후기를 공유합니다. 구직하고 계시는 예비 개발자분들에게 도움이 되었으면 좋겠습니다. (면접에서 물어본 구체적인 내용에 대해서는 말씀드릴 수가 없습니다.) 스타트업 K사 지원 후기서류로 지원서와 포트폴리오가 제출하였고, 운이 좋게 통과하면서 면접 날짜가 잡혔다. 그리고 Coding Assignment가 주어졌다. 자신이 원하는 언어를 사용하여 문제를 해결할 수 있었고 제한 시간(3시간)내에 풀어서 Github주소를 통해 제출하는 방식이었다. 지원한 회사와 관련된 coding assignment가 주어졌다. 평소에 사용해봤던 라이브러리를 사용하여 보다 수월하게 할 수 있었지만 완벽하게 구현하진 못했다. 면접은 오후..
2016년 블로그 포스팅 회고, 블로그를 시작하려는 사람들에게 "9개월 간의 블로그 포스팅 회고"다른 기술 블로그 글에 영감을 받아 저도 한 번 회고를 작성해봅니다. 블로그를 시작하게 된 계기받은 만큼 베풀어야 올해 3월부터 블로그를 시작했습니다. 9~10개월 정도 되었네요. 처음 이 분야에 대해 알아보기 시작했을 때의 그 막막함은 이루 말할 수 없을 정도였습니다. 하지만 다른 분야만 할까요? 많은 선배 개발자분들이 여러 채널을 통해 정보를 공유해주시고 계셨습니다. 각종 블로그, 각종 커뮤니티 등 검색 만으로 취할 수 있는 정보가 정말 많았습니다. 개발 공부 초기에 많은 도움을 받았고 받은 도움을 나 또한 베풀어야겠다고 다짐했습니다. 가르치듯 공부하기누군가에게 무언가를 설명할 때 논리적인 허점이 들어나고, 질문에 대한 답을 할 때 알고 있다고 착각하는 부분들이 드러..
다시 보는 객체 지향 개발 공부를 시작할 때, 객체 지향이란 무엇인가, 객체 지향적인 설계는 어떻게 해야 하는 것인가에 대한 포스팅을 한 적이 있다. 이쯤에서 이 개념들을 다시 한 번 짚고 넘어가봐야 할 것 같아서 다시 한 번 정리해봤다. #다시 보는 객체 지향객체 지향의 시작 우리가 주변에서 사물을 인지하는 방식대로 프로그래밍할 수 있지 않겠는가 하는 것이 객체지향의 출발이다. 객체 지향에서 객체를 다음과 같이 정의한다. 세상에 존재하는 모든 것은 객체이며 각각의 객체는 고유하다. 또한 객체는 어떠한 속성을 갖고 어떠한 행위를 한다. 이에 따라 객체의 속성을 property로 정의하고 행위를 method로 정의한다. 객체 지향은 어떤 특성을 갖고 있는가? 캡슐화 : 정보은닉 상속 : 재사용 추상화 : 모델링 다형성 : 사용..
Mac OS에서 Jekyll로 Github 블로그 만들기! Mac OS에서 Jekyll로 Github 블로그 만들기! 블로그를 시작한지 벌써 9개월 째에 접어들고 있다. 블로그를 시작하기 전에 어느 플랫폼에서 블로그를 시작할지 정말 많이 고민하다가 고른 것이 티스토리 블로그였다. 지금은 조금 후회 중이다. 블로그를 처음 시작할 때는 개발에 대한 지식이 전무했던 때이기 때문에 워드프레스나 다른 기타 플랫폼에 대해서 잘 알지 못했다. 그나마 네이버 블로그보다는 티스토리 블로그에 대해 자유도가 높다고 들어서 티스토리 블로그를 운영 중인데 썩 마음에 들지 않는다. 우선 편집하는 것이 너무 귀찮다. 그러던 도중 Jekyll이 유행이라고 해서 블로그를 만들어봤다. 아래 포스팅을 따라가면 아래 링크와 같은 블로그를 가질 수 있다. 세부적인 사항은 조금 수정해야 한다. 최종적..
[개발상식] 26. 로드밸런싱과 클러스터링 로드밸런싱과 클러스팅로드밸런싱(Loadbalancing)로드 밸런싱이란 부하 분산을 위해서 가상(virtual) IP를 통해 여러 서버에 접속하도록 분배하는 기능을 말한다. 하나의 인터넷 서비스가 발생하는 트래픽이 많을 때 여러 대의 서버가 분산처리하여 서버의 로드율 증가, 부하량, 속도 저하 등을 고려하여 적절히 분산처리하여 해결해 주는 서비스이다. 로드밸런싱을 해주는 소프트웨어 혹은 하드웨어 장비를 로드밸런서라고 한다. 로드밸런서의 주 목적은 동시에 오는 수 많은 커넥션을 처리하고 해당 커넥션이 요청 노드 중의 하나로 전달될 수 있게 하는 것이다. 그리고 단지 노드를 추가하는 것만으로 서비스가 확장성을 가질 수 있도록 한다. 오픈 소스 로드 밸런서 중 많이 사용되고 있는 것은 HAProxy 이다. >..