본문 바로가기

개발

(24)
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이 풀린다. 애플리케이션 관점에서 보..
[서평] 개발자가 읽은 완벽한 공부법 http://www.yes24.com/24/goods/34569935?scode=032&OzSrank=1 개발자가 읽은 '완벽한 공부법' 총 평제목에 ‘완벽한’이라는 다소 자극적인 수식어를 달고 있는 책이다. ‘빅보카’의 저자 신박사님 함께 작업하신 책이라서 읽어보았다. 정말 오랜만에 읽어보는 자기계발서이다. 결론부터 말하자면 훌륭했고 제목 그대로 완벽했다. 하지만 실제로 이 책이 독자에게 많은 도움이 되려면 책에 나온 방법에 따라 실천해야 도움이 된다. 또 이 책은 ‘공부법'을 넘어서 인생을 '어떻게 살아갈 것인가'에 대한 방향을 제시해준다. 흔한 자기계발서들은 이렇다. 흔한 자기계발서 : 나 자신을 믿어라!! 독자 : 어떤 근거로 그런 주장을 하는데? 어떻게 믿으라는 것인가? 에 대한 의문을 남긴채 ..
다시 보는 객체 지향 개발 공부를 시작할 때, 객체 지향이란 무엇인가, 객체 지향적인 설계는 어떻게 해야 하는 것인가에 대한 포스팅을 한 적이 있다. 이쯤에서 이 개념들을 다시 한 번 짚고 넘어가봐야 할 것 같아서 다시 한 번 정리해봤다. #다시 보는 객체 지향객체 지향의 시작 우리가 주변에서 사물을 인지하는 방식대로 프로그래밍할 수 있지 않겠는가 하는 것이 객체지향의 출발이다. 객체 지향에서 객체를 다음과 같이 정의한다. 세상에 존재하는 모든 것은 객체이며 각각의 객체는 고유하다. 또한 객체는 어떠한 속성을 갖고 어떠한 행위를 한다. 이에 따라 객체의 속성을 property로 정의하고 행위를 method로 정의한다. 객체 지향은 어떤 특성을 갖고 있는가? 캡슐화 : 정보은닉 상속 : 재사용 추상화 : 모델링 다형성 : 사용..
Mac OS에서 Jekyll로 Github 블로그 만들기! Mac OS에서 Jekyll로 Github 블로그 만들기! 블로그를 시작한지 벌써 9개월 째에 접어들고 있다. 블로그를 시작하기 전에 어느 플랫폼에서 블로그를 시작할지 정말 많이 고민하다가 고른 것이 티스토리 블로그였다. 지금은 조금 후회 중이다. 블로그를 처음 시작할 때는 개발에 대한 지식이 전무했던 때이기 때문에 워드프레스나 다른 기타 플랫폼에 대해서 잘 알지 못했다. 그나마 네이버 블로그보다는 티스토리 블로그에 대해 자유도가 높다고 들어서 티스토리 블로그를 운영 중인데 썩 마음에 들지 않는다. 우선 편집하는 것이 너무 귀찮다. 그러던 도중 Jekyll이 유행이라고 해서 블로그를 만들어봤다. 아래 포스팅을 따라가면 아래 링크와 같은 블로그를 가질 수 있다. 세부적인 사항은 조금 수정해야 한다. 최종적..
[개발상식] 26. 로드밸런싱과 클러스터링 로드밸런싱과 클러스팅로드밸런싱(Loadbalancing)로드 밸런싱이란 부하 분산을 위해서 가상(virtual) IP를 통해 여러 서버에 접속하도록 분배하는 기능을 말한다. 하나의 인터넷 서비스가 발생하는 트래픽이 많을 때 여러 대의 서버가 분산처리하여 서버의 로드율 증가, 부하량, 속도 저하 등을 고려하여 적절히 분산처리하여 해결해 주는 서비스이다. 로드밸런싱을 해주는 소프트웨어 혹은 하드웨어 장비를 로드밸런서라고 한다. 로드밸런서의 주 목적은 동시에 오는 수 많은 커넥션을 처리하고 해당 커넥션이 요청 노드 중의 하나로 전달될 수 있게 하는 것이다. 그리고 단지 노드를 추가하는 것만으로 서비스가 확장성을 가질 수 있도록 한다. 오픈 소스 로드 밸런서 중 많이 사용되고 있는 것은 HAProxy 이다. >..
#DEVIEW 2016 React vs Angular 2 , Angular 2 vs React 2016 DEVIEW 후기! - Angular 2 vs React 강연!http://www.slideshare.net/deview/114angularvs-react개발환경언어 생산성컴포넌트 / 템플릿데이터 동기화비동기처리 1. 개발 환경 Setting ( ? )Angular 2 개발환경 구축하기React 개발환경 구축하기Vue.js 개발환경 구축하기 ( ? ) 2. 언어 생산성 - TypeScript ( 영향력 : ✭✭☆☆☆ )그 정체는 무엇인가 TypeScript는 유연함이 장점인 언어인 JavaScript를 잘못 사용하게 되면, 큰 버그를 발생시킬 수 있는 부분을 보안하기 위한 언어이다. ( 굳이 예를 들자면, 인자를 넘겨받을 때 해주는 타입체크라던지…) 일단 여기서 한 가지 짚고 넘어가자. Angu..
[개발상식] 25. Web RTC에 대해서, WebRTC(Web Real-Time Communication) 웹 실시간 커뮤니케이션 기술로 Google, Mozilla 웹 브라우저 간에 플러그인의 도움없이 실시간으로 영상, 음성 데이터 등을 서로 통신할 수 있도록 설계된 API이다. 이 기술을 통해 음성 통화, 비디오 채팅 및 파일 공유를 위한 브라우저 애플리케이션이 원활하게 구현될 수 있다. 현재 지원되는 코덱은 VP8이다. 대다수의 서비스들은 클라이언트-서버 간의 데이터 통신을 통해 기능을 제공하고 있지만 어떤 경우는 클라이언트 간의 빠른 데이터 교환이 중요하게 되는데 이러한 경우 WebRTC가 중요한 기반 기능을 제공한다. 서버를 중계할 이유가 없어지는 것이다. 현재 지원하는 브라우저로는 Chrome, Opera, Firefox 이다. 일반적..
[개발상식] 24. 각종 DevOps Tool - Jenkins / Travis CI / Docker / Ansible with YAML Continuous Integration Tool Jenkins란젠킨서버란 오픈 소스 CI(Continuous Integration) Tool 로 Java로 만들어졌다. CI란 팀 구성원들이 작업한 내용을 정기적으로 통합하는 것을 의미한다. 만약 github을 통해 협업 중이라면 각각의 version controller 에 각자 작업한 내용을 commit을 하게 되는데, 이렇게 commit된 소스코드들을 정기적으로 통합시켜주는 것을 도와준다. 지속적으로 코드의 퀄리티를 관리할 수 있으며, 소프트웨어의 질적 향상과 소프트웨어를 배포하는데 걸리는 시간을 줄이는데 그 목적이 있다. 현재 csv, svn, git 등의 소스 툴들을 지원하고 ant와 maven 등의 빌드 툴을 지원하며 배포 형태는 war 파일을 ..