본문 바로가기

dev218

[C언어] srand, rand 랜덤으로 문자 생성하기 참고: https://msdn.microsoft.com/en-us/library/398ax69y.aspx rand는 초기값을 기준으로 난수발생 알고리즘에 의해 랜덤처럼 보이는 수를 반환한다. 매번 첫 실행 시 값을 다르게 하고싶다면 srand로 초기값을 변경한다. 여기에 사용할 초기 값으로는 매 실행 때 마다 달라지는 변수를 사용하면 좀 더 랜덤에 가까운 수를 얻을 수 있다. 이러한 변수로는 시간 값이 적당하다. void InitializeRandomSeed() { srand((unsigned int)time(0)); } char GetRandomCharacter() { return 'a' + (rand() % 26); } int main() { InitializeRandomSeed(); for (int.. 2017. 6. 13.
[linux] 리눅스 vi 명령어 사용 예제 참고: https://www.cs.colostate.edu/helpdocs/vi.html주의:대소문자 구분하여 명령 입력command mode와 insert mode에 유의command mode 종료::x - 저장하고 종료하기:wq - 저장하고 종료하기:q - 종료하기:q! - 수정사항이 있어도 저장 안하고 강제로 종료하기command mode 커서이동:j - 커서를 한줄 밑으로k - 커서를 한줄 위로h - 왼쪽으로 한글자 이동l - 오른쪽으로 한글자 이동$ - 현재 줄의 끝으로 커서이동:n - n번째 줄로 이동:$ - 파일끝으로 이동command mode 편집:u - undoi - 커서위치에서 문자입력 시작a - 커서 다음 위치부터 입력 시작o - 커서 다음에 새 줄을 추가하고 입력 시작O - 커서 위.. 2017. 6. 8.
[windows] 윈도우즈 서비스: 실제 등록된 서비스명 가지고 오기 HKLM\SYSTEM\CurrentControlSet\Services에 등록된 서비스의 이름 가져오는 방법본인 서비스의 이름을 가져오고 싶은 경우 MSDN에서는 GetServiceKeyName을 소개하고있다. 이 api는 서비스의 display name을 가지고 key name을 가져오는 기능을 하지만 특정 경우 이름 값을 못하는 상황이 발생한다. 만약 위 레지스트리 경로 밑에 ServiceA, ServiceB 라는 이름의 키가 있고 ImagePath, DisplayName 값의 데이터가 동일하다면 GetServiceKeyName 으로는 ServiceA 뿐만 얻을 수 있다. ServiceB를 얻으려면(ServiceB에 의해 트리거된 프로세스에서) 시스템의 서비스를 나열한 후 프로세스 ID를 비교하는 방법.. 2017. 5. 30.
[windows] 외부에서 서비스 제어 못하게 하기 참고: https://msdn.microsoft.com/en-us/library/windows/desktop/ms685996(v=vs.85).aspx본인이 만든 windows service를 작업관리자나 sc 등의 명령으로 정지 못하게 하고 싶은 경우 SERVICE_STATUS의 dwControlsAccepted 값을 제어함으로 목적을 달성할 수 있다. 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 27BOOL Lock(SERVICE_STATUS_HANDLE hServiceStatus) { SERVICE_STATUS ss; ss.dwCheckPoint = 0; ss.dwControlsAccepted = 0; // 어떤 제어 요청.. 2017. 5. 23.
[windows] DISM을 이용한 SNMP 기능 켜기 참고: https://msdn.microsoft.com/en-us/windows/hardware/commercialize/manufacture/desktop/deployment-image-servicing-and-management--dism--command-line-options윈도우즈 7 이상에서는 '윈도우즈 기능 켜기/끄기' 관리도구로 DISM(Deployment Image Servicing and Management)을 제공한다.(여러가지 배포, 관리 기능은 위의 링크 참고) 이를 사용해 command line에서도 윈도우즈 기능을 관리할 수 있다.step 1: 먼저 cmd를 관리자 모드로 실행한다.step 2: DISM /Online /Enable-Feature /FeatureName:SNMPs.. 2017. 5. 23.
[windows] 함수 동적 링크하기 (Run-Time Dynamic Linking) 참고: https://msdn.microsoft.com/en-us/library/ms810279.aspx특정 운영체제는 지원하지 않는 함수를 사용하고 싶을 때(예: Wow64DisableWow64FsRedirection) 컴파일 시간에 링크하는 대신 프로그램이 실행되는 도중 함수의 사용 가능 여부를 판단하여 실행하도록 할 수 있다. 1 2 3 4 5 6 7typedef BOOL WINAPI fntype_Wow64DisableWow64FsRedirection(PVOID *OldValue); auto pfnWow64DisableWow64FsRedirection = (fntype_Wow64DisableWow64FsRedirection*)GetProcAddress(GetModuleHandle(_T("kernel.. 2017. 5. 23.
[windows] 느린 윈도우 빠르게 만들기(애니메이션 효과 제거, 성능 향상) 윈도우즈는 버전업을 거듭하면서 더 예쁘게, 더 자연스럽게 보이기 위해 다양한 요소와 애니메이션이 추가되어 왔습니다. 하지만 저사양 컴퓨터는 항상 존재하기에 그래픽 요소의 처리 때문에 성능이 저하되는 상황을 종종 볼 수 있습니다. 프로그램을 부드럽게 스르륵 열고, 그림자를 표현하고, 아이콘 드래그시 내용보기 등이 불필요한 경우가 있는데 윈도우즈는 이런 옵션을 끌 수 있는 방법도 제공합니다.step 1: '윈도우버튼+r'을 눌러 실행창을 연다음 'sysdm.cpl'을 입력 후 확인을 누릅니다. step 2: 시스템 속성 창이 뜨면 '고급(advanced)' 탭의 '성능(performance)' 섹션의 '설정(settings)'을 누릅니다. step 3: 성능 옵션 창에서 ux 관련 요소를 사용할지 말지를 결.. 2016. 5. 9.
[objective-c] doxygen으로 javadoc 스타일의 문서만들기 아이폰 앱 개발도중 라이브러리 또는 소스코드에 대한 문서가 필요한 경우가 있습니다. 이 경우 워드나 엑셀을 이용해 각 항목마다 일일히 설명을 작성할 수도 있지만 최소한의 노력으로 요구사항에 대응하기 위해 doxygen 이라는 도구를 사용할 수 있습니다. doxygen은 소스코드의 특정 주석을 활용해 웹페이지 또는 latex 같은 문서를 생성해 주는 도구입니다. c, c++, objective-c, c#, php, java, python 등 다양한 코드의 문서화에 사용될 수 있습니다.doxygen gui 도구를 사용하면 매우 간단히 문서생성 작업을 할 수 있고 사용자의 입맛에 맞게 여러가지 전문가 옵션으로 커스터마이징도 가능합니다. doxygen 공식 페이지를 방문해 보시기 바랍니다.먼저 doxygen이 .. 2016. 4. 25.
[C언어] 자판기 (Vending Machine) v1.3 파이썬 자판기c언어로 자판기 만들기 v1.31. gets(), scanf() -> fgets()로 변경2. 메인 메뉴 루프 만들기, 종료 처리3. 금액이 부족한경우 거스름돈 반환 후 금액 재입력TODO1. 숫자가 아닌경우 exception처리 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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 9.. 2016. 4. 20.
[C언어] 자판기 (Vending Machine) v1.0 c언어로 자판기 만들기 v1.3 c언어로 자판기 만들기 v1.01. 금액 입력2. 메뉴 선택3. 수량 선택4. 거스름돈 출력TODO1. 메인 메뉴 루프 만들기/종료2. 숫자가 아닌경우 exception처리3. 금액이 부족한경우 거스름돈 반환 후 금액 재입력 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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81#include #include int.. 2016. 4. 19.
[linux] 리눅스 tar 명령어 사용 예제 리눅스 tar 명령어 사용 예제 1. 아카이브 만들기 압축되지 않은 아카이브를 만드려면 cvf 옵션을 붙입니다. 옵션 c(create)는 새로운 아카이브를 만들라는 것이고 v(verbose)는 작업충인 파일이름을 표시해주는 옵션입니다. 그리고 f 옵션으로 아카이브할 파일 이름을 지정합니다. 옵션을 여러개 사용시 순서는 중요하지 않습니다.$ tar cvf 아카이브이름.tar cvf 옵션으로는 어떠한 압축도 수행하지 않기 때문에 gzip으로 압축된 아카이브를 만드려면 z 옵션을 추가합니다. 여기서 .tar.gz은 .tgz과 같은 의미로 사용됩니다.$ tar cvfz 아카이브이름.tar.gz bzip2로 압축하고자 한다면 z 옵션 대신 j 옵션을 사용하면 됩니다. gzip과 bzip2의 차이는 gzip 보다 .. 2016. 4. 19.
[linux] 리눅스 wget 명령어 사용 예제 http://www.thegeekstuff.com/2009/09/the-ultimate-wget-download-guide-with-15-awesome-examples/ 인터넷에서 파일을 받는 가장 좋은 방법은 wget을 사용하는 것입니다. wget은 여러 복잡한 다운로드 상황을 거의 다 제어할 수 있습니다. 1. 단일 파일 받기 다음의 예는 인터넷에서 단일 파일을 받아 현재 디렉토리에 저장하는 방법입니다. $ wget DOWNLOAD-URL 다운로드 하는 동안 진행 경과와 함께 다음의 정보를 보여줍니다. 현재 몇 퍼센트 받았는지에 대한 정보 (2%) 현재까지 다운로드 받은 바이트 수 (112,550) 현재 다운로드 속도 (3.64KB/s) 다운로드 완료까지 남은 시간 (35s) $ wget http:/.. 2016. 4. 6.
[linux] /var/log 디렉토리에 있는 리눅스 로그 파일 http://www.thegeekstuff.com/2011/08/linux-var-log-files/ /var/log 디렉토리에 있는 리눅스 로그 파일 외부의 침입이나 오류 등 시스템에 문제가 생겼을 때 이를 해결하는 첫 걸음은 로그를 분석하는 것입니다. 리눅스 환경에서 대부분의 로그 파일은 /var/log에 있지만 경로와 룰에 대한 정보는 /etc/rsyslog.conf에서 관리합니다. 다음의 로그 파일은 /var/log 디렉토리에 존재하는 것들입니다. 몇몇 로그파일은 배포판에 따라 다를 수도 있는데 dpkg.log 같은 경우 debian 계열 시스템(예: ubuntu 등) 에서만 볼 수 있습니다. 1. /var/log/messages부팅시의 메시지를 포함해 전체 시스템의 로그를 기록합니다. 이 로그의.. 2016. 4. 5.
[linux] 리눅스 nmap 명령어 사용 예제 https://nmap.org/book/man.html http://www.cyberciti.biz/networking/nmap-command-examples-tutorials/ nmap은 network mapper의 줄임말로 네트워크 탐색과 보안감사를 하는 오픈소스 툴입니다. 이 툴은 거대한 네트워크를 반복적으로 스캔할 수 있도록 디자인 되었지만 단일 호스트에서도 잘 작동합니다. nmap은 네트워크상의 어떤 호스트가 작동중인지, 그 호스트가 어떤 서비스를 하는지, 운영체제가 무엇인지, 어떤 패킷필터나 방화벽을 쓰는지 등을 알아내기 위해 raw ip 패킷을 사용합니다. 이는 보통 보안감사용으로 쓰이지만 네트워크 목록관리 같은 정례적인 작업, 서비스 업그레이드 스케줄 관리, 호스트나 가동중인 서비스의 모니.. 2016. 4. 1.
[linux] 리눅스 ps 명령어 사용 예제 연관된 주제: 프로세스 죽이기리눅스 ps 명령어 사용 예제 ps 명령어는 현재 시스템에서 돌고있는 프로세스를 보여주는 가장 기본적인 명령어입니다. 이 명령은 top나 htop같이 실시간으로 시스템 자원을 출력하는 명령과는 달리 ps 명령어를 입력한 순간의 정보(user id, cpu 사용량, memory 사용량, 사용한 명령이들 등)를 보여줍니다. ps 명령은 옵션 입력 방법이 bsd 스타일과 unix 스타일, gnu 스타일로 나뉩니다. bsd 스타일은 'ps aux'와 같이 대쉬가 없는 스타일인 반면 unix 스타일은 'ps -ef' 처럼 옵션앞에 대쉬를 넣어 옵션임을 표시하는 스타일입니다. gnu 스타일은 대쉬를 두개 넣는 스타일로 'ps --help' 처럼 사용합니다. 동일하게 문자 u를 사용하는 .. 2016. 3. 22.
[linux] 리눅스 netstat 명령어 사용 예제 리눅스 netstat 명령어 사용 예제 netstat은 시스템의 네트워크 연결 목록(tcp, udp, 소켓 연결)을 보여주는 유틸리티입니다. 1. 모든 연결을 출력하기가장 기본적이고 간단한 명령으로 현재 연결을 모두 보여줍니다. 옵션으로 'a'를 사용합니다.root@ubuntu:~# netstat -a Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 ubuntu:domain *:* LISTEN tcp 0 0 *:ssh *:* LISTEN tcp 0 0 localhost:8000 *:* LISTEN tcp 0 0 localhost:mysql *:.. 2016. 3. 17.
[windows] 윈도우에서 프로세스 강제 종료하기 windows에서 프로세스 강제 종료하기 작업도중 컴퓨터가 느려지거나 원하지 않는 프로그램이 실행되었을 경우 일반적인 방법으로 프로그램을 종료할 수 없다면 명령 프롬프트에서 강제 종료를 시도해 볼 수 있다. step 1: 다음 이미지와 같이 윈도우즈 시작 버튼을 우클릭 하여 관리자 모드의 명령 프롬프트를 실행한다. step 2: tasklist 명령어를 이용해 프로그램의 pid(process id)를 알아낸다.이 예에서 종료하고자 하는 프로그램은 notepad.exe고 이는 메모장이다. pid는 3212로 검색된다. step 3: taskkill 명령어로 해당 pid를 가진 프로그램을 강제 종료한다.옵션은 다음과 같다.taskkill /PID [PID] /F note: 윈도우즈 작업 관리자를 통해서도 동.. 2016. 3. 16.
[linux] chmod: absolute mode와 특수권한 chmod: absolute mode와 특수권한 chmod는 지정된 파일의 권한을 변경하는 기능을 가지고 있다.$ ls -l -rwxrwxrwx 1 owner group * 접근권한 필드 rwxrwxrwx의 r은 read, w는 write, x는 execution을 나타낸다.접근권한 필드 중 첫번째 rwx는 소유자의 권한이며read, write, execution의 권한이 없을 경우 '-'로 표시(r--, rw- 등)한다.두번째 rwx는 그룹 맴버의 권한이고, 세번째 rwx는 소유자 또는 맴버가 아닌 다른 계정의 권한이다.명령어 사용시 absolute mode와 simbolic mode를 사용할 수 있다. - absolute mode absolute mode의 사용 예는 다음과 같다.chmod 0000 .. 2016. 3. 16.