Opened 12 years ago
Last modified 10 years ago
#1 accepted task
프로토타입 개발
Reported by: | cheese | Owned by: | cheese |
---|---|---|---|
Priority: | major | Milestone: | 0.1dev |
Version: | 0.1dev | Keywords: | |
Cc: |
Description (last modified by )
개요
- 프로토타입 개발
상세
- 일단 만들고
- 리눅스/윈도우즈에서만 작업한거라 다른 플랫폼에서 버그가 많을 수 있음
- 일반 표준 API 는 거의 정상 동작 하니 괜찮은데,
- POSIX 계열 함수가 구현도에 따라 상이할 수 있어서 걱정
- 로깅에 대한 요구사항 및 코멘트는 wiki:Requirements/Logging 을 참고
Change History (109)
comment:1 by , 12 years ago
Status: | new → accepted |
---|
follow-up: 3 comment:2 by , 12 years ago
comment:3 by , 12 years ago
comment:5 by , 12 years ago
이상하다 cheroxy 할땐 conversion warning에서 int -> sa_family_t 같은거 없었는데
Replying to cheese:
- windows 프로젝트 추가 및 컴파일 호환성 오류 수정
comment:6 by , 12 years ago
- debug 유틸 추가
- windows project 작업
- 굳이 TRY/CATCH 필요 없으면 안하도록 수정
- 디버그 모듈 빠진 코드 추가 및 안정성 향상
- 코드 일부 정리 및 windows project 대문자 이름을 소문자 이름으로 변경
comment:7 by , 12 years ago
- 테스트 한 것도 아닌데 버그인지 어떻게 알았나 궁금하지만 어쨌든 일부 버그 코드 수정
- logging 모듈 파일 추가 (작업 중)
- debugging 용 NAME_LENGTH definition 을 logging 에서도 써야해서 base 헤더로 이동
comment:8 by , 12 years ago
- 로깅 모듈 작업
- windows project 오류 수정
- logging 모듈 windows 오류 수정
- stat() 이용해서 disk block size 가져오는 부분 제거
- 이유
- 사용안함
- windows 에서 이런 방안이 제공되는진 모르겠지만 찾기 어려움 (아시는 분은 제보좀)
- 이유
follow-up: 11 comment:10 by , 12 years ago
comment:11 by , 12 years ago
comment:12 by , 12 years ago
follow-up: 14 comment:13 by , 12 years ago
- 로깅 모듈 id 넘버로 이용할 수 있도록 기능 추가
- 이 때는 반드시 initialize 해야함
- 덜 바뀐 windows 프로젝트 이름 변경
남은 작업
로깅 모듈 id - context 매핑- 스레드 / 뮤텍스 테스트
- 멀티 스레드에서의 로깅 테스트
- 소켓 테스트
comment:14 by , 12 years ago
comment:16 by , 12 years ago
follow-up: 22 comment:17 by , 12 years ago
- status code 받아 오는 부분이 integer 변수였는데, 64비트라서 그런지 overflow 했나봄 -_);;
- 어쨌든 해결
comment:18 by , 12 years ago
Description: | modified (diff) |
---|
comment:19 by , 12 years ago
Documentation에 대한 이슈
- wiki vs. doxygen
- doxygen일 경우 배포를 어떻게 할건지 ?
- 다른 좋은 Documentation 방안이 있으면 추천바람
comment:20 by , 12 years ago
- 소스 코드 내의 로컬 함수들을 static 함수로 변경하여 외부 노출 감소시킴
- 얼마 안되지만 통일되지 않은 주석 수정
- 테스트 코드 심볼 수정
- 로깅 ID 매핑 버그 수정
- 디버깅 매크로 누락된 부분 추가 및 오류 수정
comment:21 by , 12 years ago
Documentation에 대한 이슈
- doxygen 을 조금 테스트 해봤음.
- doxygen은 C 형식의 코드는 노출 시키지 않으려고 소스코드에 정의한 심볼들의 캡슐화가 어려운듯..
- wiki 에 직접 정리해야 하나 ......으으
comment:22 by , 12 years ago
그러고보니 comment:13 에서 남아있던 작업도 이 시점에서 해결된 듯
Replying to cheese:
- status code 받아 오는 부분이 integer 변수였는데, 64비트라서 그런지 overflow 했나봄 -_);;
- 어쨌든 해결
follow-up: 24 comment:23 by , 12 years ago
follow-up: 25 comment:24 by , 12 years ago
comment:25 by , 12 years ago
comment:26 by , 12 years ago
- fix compile error
- 아마 윈도우에서 작업하고 파일이 덜 올라간듯
- fix doxygen comment error
- fix doxyfile to exclude local header
- hide typedef structures from doxygen
- fix typos in doxygen comment and remove source path from doxyfile
- doxygen 주석에 예제 코드 추가
comment:27 by , 12 years ago
- doxygen 예제 코드 분리 및 함수 설명을 .c 로 이동
- 로그 모듈 push 로직 vfire님이 수정해주심
- 버퍼링의 기본. 버퍼 사이즈 단위로 버퍼링 해야 하는 로직페이지 추가
comment:28 by , 12 years ago
- 사용되지 않는 심볼을 doxygen 주석에서 제거
- doxygen 메인 작업
- 로깅 멀티쓰레딩이 제대로 되는건지 확인할 수 있도록 test.c 변경
- 소켓 클라이언트 경고 수정
comment:30 by , 12 years ago
comment:31 by , 12 years ago
- windows엔 access() 함수를 위해 _access() 는 지원하면서 F_OK 가 없네... 거지같으니라고.
- 그래서 #define F_OK 0 추가.
comment:35 by , 12 years ago
- 소켓 타임아웃 설정방식을 다음과 같이 변경
setsockopt (SO_RCVTIMEO) -> select (&fd_set);
- Connect, Send, Recv 함수에 대한 Timeout 인터페이스가 추가됨
- SetTimeout 인터페이스 제거
- SunOS (Solaris)에서 SO_RCVTIMEO가 지원되지 않음
- SunOS (Solaris) 에서 SO_RCVTIMEO 가 버클리 소켓 인터페이스 유지를 위해 define 되어 있음
- compile-time에서 오류는 발생하지 않음
- 실제 기능이 지원되지 않기 때문에 run-time에서 오류코드
- 인터페이스 변경에 의한 doxygen 문서화 부분 수정
comment:36 by , 12 years ago
- 소켓에 SO_REUSEADDR 및 SO_LINGER 옵션 추가
Version 0, edited 12 years ago by (next)
comment:38 by , 12 years ago
- 디버깅은 전체 프로젝트를 하나의 단위로 보고 진행하는게 일반적이라고 생각됨
- 그래서 컨텍스트 없애고, 내부에서 싱글 컨텍스트로 콜스택 정보 관리할 수 있도록 수정
- 콜스택이 정상적으로 출력되지 않던 문제 수정
follow-up: 41 comment:40 by , 12 years ago
- windows 용 include 수정
- fd 체크 루틴 추가
- 잘 못된 fd일 경우, windows에서 crash 되는 버그 수정
- assert 용 definition 수정
- test code 의 accept 함수 수정
comment:41 by , 12 years ago
comment:42 by , 12 years ago
comment:43 by , 12 years ago
- 디버그 유틸 코드 내부 메모리 릭 제거
- print call stack 디버그용 매크로 추가
- 디버그 콜스택 기록용 BEGIN / END 매크로 위치를, 함수 호출 전/후 로 사용하도록 테스트 코드 수정
- 함수 호출되는 시점을 기록하기 위한 방편.
- 꽤 불편한거 같은데, 좋은 방법이 있으면 추천좀 ㅇ_ㅠ
comment:46 by , 12 years ago
- codec 모듈 추가
- 데이터를 hex-string으로 encoding 하거나 hex-string을 데이터로 decoding
- doxygen 주석 수정
- 추가 작업 및 버그 fix
follow-up: 50 comment:49 by , 12 years ago
comment:50 by , 12 years ago
comment:55 by , 12 years ago
- hp-ux에서의 pthread return-value 처리 수정
hp-ux 의 pthread_create man page
RETURN VALUE Upon successful completion, pthread_create() returns zero. Otherwise, an error number is returned to indicate the error (the errno variable is not set).
comment:57 by , 12 years ago
- 함수 및 enumeration 이름 일부 변경
- log에서 datetime 가져오는 부분 win64에서 crash 됐던 경험이 있어 수정
comment:59 by , 12 years ago
- base64 추가
- http://kldp.org/node/109436 이거 해보려고 했는데, AIX랑 HPUX에서 ENDIAN이고 자시고 아무소용 없어서 안하기로 함
- hex 디코딩 속도가 좀 더 빠를 것 같이(?) 수정
- dataset을 추가하고 if 문을 간소화
follow-up: 62 comment:61 by , 12 years ago
comment:62 by , 12 years ago
comment:68 by , 12 years ago
comment:69 by , 12 years ago
- 로그 레벨을 Initialize 시에 설정하도록 수정
- 별도의 인터페이스를 이용하면 사용자가 임의로 로그 레벨을 수정할 수 있으면 자원 관리 안될 수 있음
- 예를 들어, 로그 레벨이 Close하기 전에 낮아진다면 자원 해제가 불가할 수 있음
- Close 에서 무조건 성공했다고 return 할 수도 있겠지만... 그건 좀 아닌거 같아서.
- 로그 레벨은 한번만 설정하는게 맞는거 같기도 하고.
- 관련된 코멘트 있으시면 달아주세요
- 로그 레벨 체크 시에, 불필요한 논리연산 제거
comment:70 by , 12 years ago
- 로그 관련 일부 심볼 변경
- 테스트 코드 수정
- 소켓 timeout 예외처리 부분 수정
- 불필요한 TRY-CATCH 제거
- 통합 테스트 코드 제거
- 테스트 코드용 makefile 수정
comment:71 by , 12 years ago
- sprintf 를 모두 snprintf로 교체
- 로그에서 쓸 때마다 strlen 하던 부분을 sprintf 의 return-value로 대체하여 퍼포먼스 조금 향상 (테스트 코드에서 체감속도 차이 있음)
comment:73 by , 12 years ago
- 자료구조 추가
- linked-list / stack / queue
- 컨텍스트 및 관련 함수 네이밍 일부 변경
- 누락된 테스트 코드 추가 (stack 및 queue)
- doxygen 주석 추가
- 잘못된 헤더 정의 수정
- CF_List_Insert () 함수에 대한 doxygen 주석 추가
comment:74 by , 12 years ago
comment:78 by , 12 years ago
- CF_Thread_CreateCtx 를 CF_Thread_Create 로 롤백
- 생성하여 실행하는거지, 컨텍스트만 생성하는게 아니니까..
comment:79 by , 12 years ago
comment:81 by , 12 years ago
comment:83 by , 11 years ago
comment:86 by , 11 years ago
comment:88 by , 11 years ago
속도 측정은 chevalier님의 ARIA 암호알고리즘 100만번 수행 속도로 비교함
시간 측정
BEFORE | AFTER |
---|---|
7.090000 | 7.040000 |
7.000000 | 6.980000 |
7.060000 | 6.990000 |
7.110000 | 7.000000 |
7.040000 | 6.970000 |
7.000000 | 7.080000 |
6.990000 | 7.080000 |
7.060000 | 7.060000 |
7.060000 | 7.010000 |
6.950000 | 7.040000 |
평균
- 변경 전 : 7.036
- 변경 후 : 7.025
측정 후기
- 100만 번에 0.01초.. 아니, 0.009초 차이로 나타나니 정말 미미한거 같다.
Replying to cheese:
- 비트 로테이션 부분 alloc/free 횟수 감소 시켜 평균 성능 약간 상향
comment:90 by , 11 years ago
- windows test project 에서 소스 코드 모두 제거
- 추가할 때 마다 수정하기 귀찮음
- 어차피 테스트 할 땐 하나만 올려서 빌드해야 하니 그냥 없애버리는게 나을 듯
comment:94 by , 11 years ago
comment:96 by , 11 years ago
comment:97 by , 11 years ago
- 실 컨텍스트 구조체 이름 변경
- CF_Xxxx_Ctx (opaque)와 CF_XXXX_CTX (real) 의 구분이 힘들어서 바꿈
comment:101 by , 11 years ago
comment:102 by , 11 years ago
- context 관리의 편의를 위해 context-manager를 계획하고 오래 고민했으나.. 고민할 수록 별 필요성이 없다고 느껴져서 빼기로 함
comment:103 by , 11 years ago
comment:109 by , 10 years ago
Note:
See TracTickets
for help on using tickets.
r4