본문 바로가기

개발5

[C언어] 좀비 프로세스를 없애는 더블 fork().. fork()를 이용하여 서버 프로그래밍을 할 시, 유용한 방법을 소개하기로 한다. 이는 Steven아저씨 책 Advanced Programming in the Unix Environment 202쪽에 나와 있는 방법이기도 하다. 우선 좀비 프로세스에 대해서 알아야 한다.좀비 프로세스:프로세스가 뒤졌는데, 아무도 이놈의 장례를 치뤄주지 않아 뒤진 상태로 리소스를 몽땅 가지고 있는 상태.. 뭐 이미 알겠지만, 프로세스가 뒤지면 가지고 있던 파일들 할당 받았던 모든 메모리를 자동으로 모두 해제되고 참 좋으다. 하지만, 장례를 치뤄주지 않으면, 그냥 좀비가 되어서 내 서버를 잠식하고, 결국에는 서버 전체적으로 fork()가 안되는 매우 위험한 상황까지 발생한다. 그럼 좀비 프로세스는 누가 장례를 치뤄주는가..?.. 2012. 8. 28.
[C언어] 쓰레드의 사용 쓰레드는 사용하기 가장 까다로운 녀석이다.대부분의 어설픈 개발자들이 무턱대고 쓰다가 프로젝트가 끝나지 못하는 경험을 하게 되며, 그렇지 않더라도 자신의 잘못을 모르고 어설프게 쓰래드를 쓰고 있을 것 같다. 여기서 이야기 하고자 하는 것은 매우 간단한 몇가지만 짚고 넘어간다. 실수하기 쉬운 내용들... 쓰레드의 시작#include int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg);쓰레드는 이 함수로부터 시작된다. 그리고 쓰레드가 죽는 원인은 다음 3가지로 정의할 수 있다.쓰레드 자신이 pthread_exit를 호출한 경우: 해당 함수 인자를 종료 값으로 pthr.. 2012. 8. 28.
[ExtJs] 컨포넌트의 itemId와 id의 차이점 ExtJS나 Sencha touch를 사용하여 프로그래밍을 하면 비번하게 컨포넌트를 쿼리해서 새팅하거나 값을 얻어오는 경우가 있다. 이때, 많이 사용하는 방법이 컨포넌트 쿼리에 xtype(alias)를 넣어 찾는 방법이다. update: function (data) { var topicField = this.down('textfield'), objectiveField = this.down('textarea'); // Do Something w/ topicField & objeictive } 다행히도 위와 같이 레퍼런스해야 할 컨포넌트의 xtype이 다르다면 쉽지만, 동일하다면 id를 사용하여야 한다. Ext.define('MyClass', { extend: 'Ext.panel.Panel', alias: .. 2012. 7. 11.
Extjs4에서 Custom event 만들기 MVC모델을 권장하는 Extjs4에서는 Controller에서 view를 찾기 위해서 Component Query를 많이 쓰면, Controller와 View가 너무 연관되어 MVC 본연의 모습을 잃을 수 있다. 그나마 완벽한 해결책은 아니지만, Component Query를 최소화 하고, 코드를 간결하게 만들기 위해서 view를 만들 때, 자신만의 Event를 정의하여 controller에서 처리하게 하면 그나마 Controller와 View가 어느정도 독립성을 유지하는데 도움이 된다. 이를 위한 방법을 간결하게 정리하도록 한다. 다음과 같은 상황을 가정한다. 1. Panel내부에 toolbar가 있고, toolbar에 "추가"라고 되어 있는 버튼이 존재한다. 2. 이 버튼을 누르면, Panel이 'a.. 2012. 6. 29.