일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 책
- mutex
- Linux
- Golang
- Python
- c++
- tcp
- bitcoin
- API
- install
- write
- 리뷰
- JavaScript
- Sync
- range
- 영화
- http
- json
- FOR
- File
- channel
- GO 언어
- windows
- Close
- go언어
- go
- C
- window
- Callback
- package
- Today
- Total
목록전체 글 (203)
Code Habit
주기적으로 웹상의 이미지 파일을 다운로드 받아 보여주는 프로그램을 만드는데 분명 웹상에서는 파일이 갱신되었는데 프로그램에서 갱신된 파일이 아닌 이전 파일만 보여주는 문제가 발생했다. 이는 동일한 url에 대한 캐시가 남아 발생한 것으로 다음 명령어로 캐시파일을 삭제하고 다시 다운로드 받아야 한다. DeleteUrlCacheEntry(url);
파일을 I/O를 활용하여 리스트 정보(고객 명단 등)를 간단하게 로컬에 저장하고 읽고 싶을 때 fgets/fputs 함수를 사용하면 쉽게 구현할 수 있다. fputs 함수로 파일에 한줄 단위로 문자열을 저장하고 저장된 문자열을 줄별로 다시 fgets 함수로 읽어 들일 수 있다. 참고로 필자는 개발한 프로그래밍의 블랙리스트 명단을 로컬에 저장하고 읽어들이기 위해 위의 함수들을 활용하였다. 예제이다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #include int main(void) { // 파일 쓰기모드 생성/열기 FILE *fp = fopen("test.txt", "w"); if (NULL == fp) { return -1; } fputs("1 line\n", fp); ..
c언어 함수인 fopen을 이용해 파일을 열고 파일의 크기를 먼저 구한 후 크기만큼 파일을 읽는 예제이다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 int main(void) { char* buffer; int size; int count; FILE *fp = fopen("test.txt", "r"); if (NULL == fp) { return -1; } fseek(fp, 0, SEEK_END); // 파일 포인터를 파일의 끝으로 이동시킴 size = ftell(fp); // 파일 포인터의 현재 위치를 얻음 => 파일 사이즈 buffer = new char[size+1]; // 파일 크기 + 1바이트(문자열 마지막의 NULL)..
Go 언어로 서버를 간단한 세션 서버를 만들었다. 서버의 목적은 어플리케이션끼리 연결하여 간단한 데이터들을 주고 받는 것 ! 각 어플리케이션의 키값으로 string 값을 사용하였는데.. debug 모드와 release 모드로 접속하여 통신을 시도 하면 자꾸 상대를 못 찾는 것이다. 결국 원인은 client에서 사용한 _tcscpy_s에 있었다. wtl 기반으로 작성된 프로그램이었는데 _tcspcy_s로 문자열을 복사하면 문자열 끝에 널문자('\0') 까지 들어가는건 당연히 동일하나 그 이후 버프가 채워지는 방식이 달랐던 것이다 ! - debug / release 모드에서의 차이는 다음과 같았다. debug : 널문자 이후 0xfe로 채워짐 release : 널문자 이후 0x00(널)로 채워짐 ex ) /..
Visual Studio .net 2003을 사용할 때 찾기 기능( ctrl+shift+f )만 사용하면 먹통이 되는 현상이 발생하여 매번 프로세스를 강제 종료해야 하는 불편함이 있었다. 해당 증상은 IDE와 윈도우의 'Aero'기능과의 충돌로 생기는 문제로 다음과 같이 해결할 수 있다. Windows Vista, 7 버전에서는 Visual Studio .NET 2003 속성 창의 호환성 페이지에서 '시각 테마 사용 안 함'에 체크하여 이 문제를 해결 할 수 있다. Windows 8 이상의 버전에서는 위와 같은 메뉴가 사라지는데 다음과 같이 레지스트리HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppcompatFlags\Layers에 아..
개발 PC를 재설치 하고 테스트 PC에 원격 접속하려니 아래와 같은 경고창이 뜨며 잘 되던게 되지 않았다. 검색해보니 업데이트 패치 문제로 다음과 같이 설정하면 해결 할 수 있었다. Window키 + R로 실행창 실행 후 gpedit.msc 입력. 로컬 그룹 정책 편집기에서 관리 템플릿 -> 시스템 -> 자격 증명 위임 -> 'Oracle 수정 암호화' 편집. Oracle 수정 암호화에서 '사용' 체크 및 보호 수준 '취약' 설정. 위와 같이 설정 후 원격 접속이 되는 것을 확인할 수 있었다.
현재 사용하는 DC를 이용해서 문자열을 출력했을 때, 실제로 출력될 높이와 폭을 CSize 형식으로 반환해주는 함수이다. 보통 줄이 너무 길어서 넘어가는 내용을 다음줄에 자동으로 줄바꿈하는 기능을 구현할 때 많이 사용한다. 출력 크기를 계산할 때는 CDC 클래스의 m_hAttribDC 변수를 참고하기 때문에 현재 설정된 각종 속성 정보가 모두 반영된다. 예를 들어, 기본 폰트가 아닌 자신이 생성한 폰트를 현재 DC에 설정했다면 해당 폰트 정보가 반영되어 문자열의 출력 크기가 계산된다. - 사용 예제 1 2 3 CClientDC dc(this); CString str = _T("이진성"); CSize size = dc.GetTextExtent(str);