개발하면서
-
Condition variable 호출순서개발하면서/etc 2009. 10. 8. 21:16
지금 threadpool에 대해 공부하고 소스를 분석하고 있다. threadpool은 작업을 관리하는 스레드가 있고 작업을 하는 스레드가 있다. 작업관리 스레드가 wait상태의 작업을하는 스레드에게 signal을 보내서 일을 하게만든다 이 과정에서 signal과 wait간의 호출순서가 궁금해서 검색을 통해 아래 좋은 사이트를 검색하게 되었다. 출처 : kldp 질문 글을 이해하기 쉽게 그림으로 그려보고자 한다. signal을 받았다고 바로 작업을 수행하는것이 아니라, 신호 보내는 스레드에서 unlock을 한 후에 작업을 한다 그리고 cond_wait가 실행 되면 현재 lock되있는 mutex를 unlock하고 return 할때 다시 lock해준다. cond_signal을 실행할때 wait된게 없으면 아무..
-
경계없는TCP/IP 데이타, 임의로 경계단위로 수신하기개발하면서/etc 2009. 10. 6. 21:17
위 그림은 지금 하고 있는 프로젝트이다. 나중에도 도움이 될것 같아서 이렇게 글을 남긴다. 우선 그림에 대한 간략한 소개를 하면, Admanager는 DB를 일정간격으로 갱신여부를 감시하고, 갱신될 경우 그 데이타를 가져와서 Adserver로 전송하는 역할을 한다. Adserver는 받은 데이타를 가공하고 저장한뒤 사용자 접속시 해당 데이타를 뿌려주는 역할을한다. 여기서는 Admanager와 Adserver사이에 대해서만 얘기하기로 하자.Admanager에서 전송할 데이타는 탭 단위로 구분 되어있고, 마지막은 \n 이다. 즉, Admanager는 record 단위로 전송을 하고, Adserver는 record 단위로 처리를 해주면 되는것이다. 근데 이게 왜 문제가 될까 위의 그림을 보면 Adserver에..
-
여러개의 파일 gdb로 디버깅하기개발하면서/etc 2009. 10. 5. 15:25
현재 리눅스에서 개발을 시작했는데 안될때마다 일일히 printf로 변수 찍어서 디버깅을 해나갔는데 이게 정말 짜증나는것이었다. 그래서 검색하던중 gdb라는 프로그램을 알게되었다. 우왕 +_+ ㅋㅋ 원하던 거다~!!! 사용법에 관한 글들은 많이 있으니 패스하고, 많은 gdb관련 문서들... 내가 필요한건 여러개 파일을 gdb로 디버깅하는것이기 때문에 이것에 대해 적어볼까 한다. 우선 임의로 만든 소스는 다음과 같다 //kang.c #include "kang.h" int sum(int i, int j) { return i +j; } //kang.h int sum(int i, int j); //main.c #include #include "kang.h" int main() { int i = 3, j = 4; ..
-
0, '\0', NULL의 차이점을 알아보자개발하면서/etc 2009. 9. 11. 10:20
세개를 볼때......'어? 같은말 아니야?'라고 생각했었다. 그런데 어느 한 사이트에서 다르다는 말을 보게 되었고 또 나름 정리하고 내생각을 적어보려한다 NULL은 매크로형이며, (void *)0 으로 선언되어 있다. 이것은 포인터에서만 사용해야지 다른곳에 사용하면 문제를 야기할수 있다. 값이 0이라기보다 아무것도 가리키지 않는다는 표현이 맞다. 0은 숫자가 될수도 있고(즉 nul이 될수도있다는 얘기) null pointer constant도 될수있다. 포인터나 문자나 사용 가능 '\0'은 문자상수, 아스키 코드의 첫번째 문자를 의미한다, nul을말한다 (NULL과 헷갈렸구나~~!!) 내 나름대로 정의를 내리자면, 초기화할때 포인터는 NULL이나 0, 문자열은 0이나 '\0', "" 참조 사이트 htt..
-
초기화는 꼭하자개발하면서/etc 2009. 7. 31. 23:53
회사에서 일을 하는중에 정말 다시 한번 초기화의 소중함을 느끼게 해준 그런 기회 개발 카테고리로 하기는 뭐해서 이곳으로 이동 결론부터 말하자면 만약에 parsing하는부분에서 구분할 목록이 10개 미만일경우 parsing_row에서 사용하지 않은 포인터 배열은 이상한곳을 가리키게 되고 그 결과 10개를 사용하는 부분에서 에러를 발생해 세그먼트 오류가 발생하게 되는것이다. 그래서 초기화를 해주니 바로 실행;; 정말 다시한번 초기화에 중요성을 깨닫게 해주는 기회였다 사랑한다 포인터~~~~~~
-
viEmu개발하면서/etc 2009. 7. 31. 23:50
리눅스에서 작업을 많이하다보니 vi의 명령어가 손에 익숙해지게 되었고 그러던 어느날 kldp에서 visual studio에서도 vi를 사용할수 있는 viemu가 있다는 얘기를 듣게 되었다. 설치는 next 신공으로 깔면 된다. 처음 시작화면이다. 방향키, 문서 편집은 물론 설마하고 했던 명령어 모드도 되는것이었다. (치환은 Ctrl + H해서 하는게 더 나을것 같다) 물론 vi랑 완벽하게 똑같은것은 아니지만 흡족하다 30일 trial버젼이라는게 좀 걸리지만.....어딘가에 해결책이 있겠지?.....;;; http://www.viemu.com/ Visual Studio는 물론 MsWord&Outlook, SQL Server management까지 된다
-
VirtualBox설치후 세팅할 부분개발하면서/etc 2009. 7. 24. 19:59
회사에 계정이 있지만 함부로 설치하거나 설정부분을 건드릴 수가 없다. 그래서 Virtual Box를 설치했는데, 또 이것이 Vmware와는 다르게 설정하는 부분이 좀 있어서 세팅하는 부분을 한곳에 모여놓기로 했다. 출처는. . .하나씩 가져온거라. . .그리고 좀 오래되서... 문제가 있다면 알려주세요 삭제하겠습니다. 1. network공유하기 내 네트워크환경에서 속성을 선택한뒤 다음과 같이 선택한다 2. HostKey 설정하기 C:\Documents and Setting\{username}\.VirtualBox에서 VirtualBox.xml을 다음을 추가하거나 수정하면 된다. 주의!!! VirtualBox실행한 상태에서는 죽었다 깨도 안바뀝니다....;;; 저만 몰랐던건가요? ㅋㅋ 3.해상도 변경하기 ..
-
파일 관련개발하면서/etc 2009. 7. 2. 16:27
linux file encoding 상태 볼때 file --mime {filename} charset seem iconv -f UTF-8 -t EUC-KR _DCODE_AD_TABLE > result.txt find 경로명 -type f -print > file_list 여러파일의 문자바꾸기 txt 확장자를 가진 파일들에서 문자열 검색하기 find . -name "*.txt" -print0 | xargs -r -0 grep -l [문자열] 문자열을 치환하는 스크립트 #!/bin/bash #특정 디렉토리에 있는 모든 파일에서 일치하는 문자열을 모두 찾아 바꾸기. if [ $# -ne 2 ] then echo "사용법 'basename $0' find_string replace_string [director..