현재 시스템 시간 얻어오는 소스

#include <stdio.h>
#include <time.h>

void main()
{

 tm *t;
 long tim=time(NULL);

 t=localtime(&tim);
 printf("유닉스 타임 (Unix Time): %d 초\n\n", tim); // 1970년 1월 1일 0시 0분 0초부터 시작하여 현재까지의 초
 printf("현재 년: %d\n",   t->tm_year + 1900);
 printf("현재 월: %d\n",   t->tm_mon + 1);
 printf("현재 일: %d\n\n", t->tm_mday);
 printf("현재 시: %d\n",   t->tm_hour);
 printf("현재 분: %d\n",   t->tm_min);
 printf("현재 초: %d\n\n", t->tm_sec);
 printf("현재 요일: %d\n", t->tm_wday); // 일요일 0 ~
 printf("올해 몇 번째 날: %d\n", t->tm_yday); // 1월 1일은 0, 1월 2일은 1
 printf("서머타임 적용 여부: %d\n", t->tm_isdst); // 0 이면 서머타임 없음

}

 

 

struct tm {
  int tm_sec;   /* 초Seconds */
  int tm_min;   /* 분Minutes */
  int tm_hour;  /* 시Hour (0–23) */
  int tm_mday;  /* 일Day of month (1–31) */
  int tm_mon;   /* 월Month (0–11) */
  int tm_year;  /* 년Year (calendar year minus 1900) */
  int tm_wday;  /* 요일Weekday (0–6; Sunday = 0) */
  int tm_yday;  /* 1년의 몇번째Day of year (0–365) */
  int tm_isdst; /* 서머타임 적용여부 0 if daylight savings time is not in effect) */

};

가상 키값

가상 키 코드(Virtual Key Code)테이블

가상키                       코드                            값 키
VK_LBUTTON                01  
VK_RBUTTON                02  
VK_CANCEL                 03                           Ctrl-Break
VK_MBUTTON                04  
VK_BACK                   08                           Backspace
VK_TAB                    09                              Tab
VK_CLEAR                  0C                 NumLock이 꺼져 있을 때의 5
VK_RETURN                 0D                             Enter
VK_SHIFT                  10                                Shift
VK_CONTROL                11                                Ctrl  
VK_MENU                   12                                Alt  
VK_PAUSE                  13                              Pause
VK_CAPITAL                14                            Caps Lock  
VK_ESCAPE                 1B                               Esc  
VK_SPACE                  20                            스페이스  
VK_PRIOR                  21                              PgUp
VK_NEXT                   22                              PgDn  
VK_END                    23                              End  
VK_HOME                   24                              Home  
VK_LEFT                   25                         왼측 커서 이동키  
VK_UP                     26                         위쪽 커서 이동키  
VK_RIGHT                  27                         오른쪽 커서 이동키  
VK_DOWN                   28                         아래쪽 커서 이동키  
VK_SELECT                 29  
VK_PRINT                  2A  
VK_EXECUTE                2B  
VK_SNAPSHOT               2C                             Print Screen
VK_INSERT                 2D                               Insert
VK_DELETE                 2E                               Delete
VK_HELP                   2F  
                               30~39                           숫자키 0~9
                               41~5A                           영문자 A~Z
VK_LWIN                   5B                             왼쪽 윈도우 키
VK_RWIN                   5C                            오른쪽 윈도우 키
VK_APP                    5D                            Application 키
VK_NUMPAD0~VK_NUMPAD9     60~69            숫자 패드의 0~9
VK_MULTIPLY               6A                             숫자 패드의 *  
VK_ADD                    6B                             숫자 패드의 +  
VK_SEPARATOR              6C  
VK_SUBTRACT               6D                             숫자 패드의 –  
VK_DECIMAL                6E                             숫자 패드의 .  
VK_DIVIDE                 6F                              숫자 패드의 /  
VK_F1~VKF24               70~87                           평션키 F1~F24
VK_NUMLOCK                90                               Num Lock
VK_SCROLL                 91                               Scroll Lock  

 

 

 

Virtual key codes

Symbolic constantHexadecimal valueMouse or keyboard equivalent
VK_LBUTTON01Left mouse button
VK_RBUTTON02Right mouse button
VK_CANCEL03Control-break processing
VK_MBUTTON04Middle mouse button on a three-button mouse
0507Undefined
VK_BACK08BACKSPACE key
VK_TAB09TAB key
0A0BUndefined
VK_CLEAR0CCLEAR key
VK_RETURN0DENTER key
0E0FUndefined
VK_SHIFT10SHIFT key
VK_CONTROL11CTRL key
VK_MENU12ALT key
VK_PAUSE13PAUSE key
VK_CAPITAL14CAPS LOCK key
1519Reserved for Kanji systems
1AUndefined
VK_ESCAPE1BESC key
1C1FReserved for Kanji systems
VK_SPACE20SPACEBAR
VK_PRIOR21PAGE UP key
VK_NEXT22PAGE DOWN key
VK_END23END key
VK_HOME24HOME key
VK_LEFT25LEFT ARROW key
VK_UP26UP ARROW key
VK_RIGHT27RIGHT ARROW key
VK_DOWN28DOWN ARROW key
VK_SELECT29SELECT key
 2ASpecific to original equipment manufacturer
VK_EXECUTE2BEXECUTE key
VK_SNAPSHOT2CPRINT SCREEN key
VK_INSERT2DINS key
VK_DELETE2EDEL key
VK_HELP2FHELP key
 3A40Undefined
VK_LWIN5BLeft Windows key on a Microsoft Natural Keyboard
VK_RWIN5CRight Windows key on a Microsoft Natural Keyboard
VK_APPS5DApplications key on a Microsoft Natural Keyboard
 5E5FUndefined
VK_NUMPAD060Numeric keypad 0 key
VK_NUMPAD161Numeric keypad 1 key
VK_NUMPAD262Numeric keypad 2 key
VK_NUMPAD363Numeric keypad 3 key
VK_NUMPAD464Numeric keypad 4 key
VK_NUMPAD565Numeric keypad 5 key
VK_NUMPAD666Numeric keypad 6 key
VK_NUMPAD767Numeric keypad 7 key
VK_NUMPAD868Numeric keypad 8 key
VK_NUMPAD969Numeric keypad 9 key
VK_MULTIPLY6AMultiply key
VK_ADD6BAdd key
VK_SEPARATOR6CSeparator key
VK_SUBTRACT6DSubtract key
VK_DECIMAL6EDecimal key
VK_DIVIDE6FDivide key
VK_F170F1 key
VK_F271F2 key
VK_F372F3 key
VK_F473F4 key
VK_F574F5 key
VK_F675F6 key
VK_F776F7 key
VK_F877F8 key
VK_F978F9 key
VK_F1079F10 key
VK_F117AF11 key
VK_F127BF12 key
VK_F137CF13 key
VK_F147DF14 key
VK_F157EF15 key
VK_F167FF16 key
VK_F1780HF17 key
VK_F1881HF18 key
VK_F1982HF19 key
VK_F2083HF20 key
VK_F2184HF21 key
VK_F2285HF22 key

(PPC only) Key used to lock device.

VK_F2386HF23 key
VK_F2487HF24 key
 888FUnassigned
VK_NUMLOCK90NUM LOCK key
VK_SCROLL91SCROLL LOCK key
VK_LSHIFT0xA0Left SHIFT
VK_RSHIFT0xA1Right SHIFT
VK_LCONTROL0xA2Left CTRL
VK_RCONTROL0xA3Right CTRL
VK_LMENU0xA4Left ALT
VK_RMENU0xA5Right ALT
 BA-C0Specific to original equipment manufacturer; reserved. See following tables.
 C1-DAUnassigned
 DB-E2Specific to original equipment manufacturer; reserved. See following tables.
 E3 – E4Specific to original equipment manufacturer
 E5Unassigned
 E6Specific to original equipment manufacturer
VK_PACKETE7Used to pass Unicode characters as if they were keystrokes. If VK_PACKET is used with SendInput, then the Unicode character to be delivered should be placed into the lower 16 bits of the scan code. If a keyboard message is removed from the message queue and the virtual key is VK_PACKET, then the Unicode character will be the upper 16 bits of the lparam.
 E8Unassigned
 E9-F5Specific to original equipment manufacturer
VK_ATTNF6ATTN key
VK_CRSELF7CRSEL key
VK_EXSELF8EXSEL key
VK_EREOFF9Erase EOF key
VK_PLAYFAPLAY key
VK_ZOOMFBZOOM key
VK_NONAMEFCReserved for future use
VK_PA1FDPA1 key
VK_OEM_CLEARFECLEAR key
VK_KEYLOCKF22Key used to lock device

Original equipment manufacturers should make special note of the VK key ranges reserved for specific original equipment manufacturer use: 2A, DBE4, E6, and E9F5.

In addition to the VK key assignments in the previous table, Microsoft has assigned the following specific original equipment manufacturer VK keys.

Symbolic constantHexadecimal valueMouse or keyboard equivalent
VK_OEM_SCROLL0x91None
VK_OEM_10xBA";:" for US
VK_OEM_PLUS0xBB"+" any country/region
VK_OEM_COMMA0xBC"," any country/region
VK_OEM_MINUS0xBD"-" any country/region
VK_OEM_PERIOD0xBE"." any country/region
VK_OEM_20xBF"/?" for US
VK_OEM_30xC0"`~" for US
VK_OEM_40xDB"[{" for US
VK_OEM_50xDC"\|" for US
VK_OEM_60xDD"]}" for US
VK_OEM_70xDE"'"" for US
VK_OEM_80xDFNone
VK_OEM_AX0xE1AX key on Japanese AX keyboard
VK_OEM_1020xE2"<>" or "\|" on RT 102-key keyboard

For East Asian Input Method Editors (IMEs) the following additional virtual keyboard definitions must be observed.

Symbolic constantHexadecimal valueDescription
VK_DBE_ALPHANUMERIC0x0f0Changes the mode to alphanumeric.
VK_DBE_KATAKANA0x0f1Changes the mode to Katakana.
VK_DBE_HIRAGANA0x0f2Changes the mode to Hiragana.
VK_DBE_SBCSCHAR0x0f3Changes the mode to single-byte characters.
VK_DBE_DBCSCHAR0x0f4Changes the mode to double-byte characters.
VK_DBE_ROMAN0x0f5Changes the mode to Roman characters.
VK_DBE_NOROMAN0x0f6Changes the mode to non-Roman characters.
VK_DBE_ENTERWORDREGISTERMODE0x0f7Activates the word registration dialog box.
VK_DBE_ENTERIMECONFIGMODE0x0f8Activates a dialog box for setting up an IME environment.
VK_DBE_FLUSHSTRING0x0f9Deletes the undetermined string without determining it.
VK_DBE_CODEINPUT0x0faChanges the mode to code input.
VK_DBE_NOCODEINPUT0x0fbChanges the mode to no-code input.

ubuntu beryl install guide

우분투 에지에 베릴을 설치해 보았다.
베릴이란 말이 좀 이상하게 느껴지지만 KLDP에 올라온 여러 desktop환경이나
동영상을 보고 설치해 보기로 했다.

가장 중요한 것은 그래픽카드의 Direct 가속이 가능해야 한다.
그걸 알아보려면 터미널 상에서 아래의 명령을 내려본다.

    glxinfo | grep rendering

결과가 "Yes" 라고 나와야 하는데 "No"라고 나오면 그래픽 드라이버를 새로 설치하여야 한다.

내가 가지고 있는 그래픽 카드의 모델을 살펴보니 nVidia Quadro4 380 XGL 64MB 이었다.
nVidia 홈에서 관련된 드라이버를 찾아보니 NVIDIA-Linux-x86-1.0-9626-pkg1.run 베타버전 이란다.
위 파일을 받아 설치하기 위해 아래와 같이 수행한다.

컴파일 환경 설정
sudo apt-get install linux-headers-uname -r build-essential gcc gcc-3.4 xserver-xorg-dev

기존 nVidia 드라이버 삭제 및 X 재설정
sudo rm /etc/init.d/nvidia-*
sudo apt-get –purge remove nvidia-glx nvidia-kernel-common nvidia-settings
sudo dpkg-reconfigure -phigh xserver-xorg

gdm stop 상태에서 콘솔로 간 후 nVidia 드라이버 설치
sudo /etc/init.d/gdm stop
sudo sh NVIDIA-Linux-x86-1.0-9626-pkg1.run

Reboot후 모듈 설정을 바꾸고, xorg.conf 파일도 수정한다.

/etc/default/linux-restricted-modules-common 파일 수정
DISABLED_MODULES="nv"

xorg.conf내 Device Section에 옵션 추가
Option "AddARGBGLXVisuals" "True"
Option "DisableGLXRootClipping" "True"


다시 Reboot후 베릴을 설치한다.
우선 /etc/apt/sources.list에 아래의 저장소를 추가 후 update 및 베릴 설치

저장소 추가
deb http://ubuntu.beryl-project.org/ edgy main

gpg key 설치
wget http://ubuntu.beryl-project.org/root@lupine.me.uk.gpg -O- | sudo apt-key add –

저장소 update
sudo apt-get update

베릴 설치
sudo apt-get install beryl emerald-themes

베릴 실행
beryl-manager


beryl을 수행하면 어떻게 이런 동작이 빠르게 수행될까 할 정도로 화려하고 멋지다.
Qt library를 다운받아 Qt Demo를 수행하면 Vector rendering 처리에서 보면 이러한 동작들이 있는데
실제 application에 이런 기능들을 구현했다는게 같은 프로그래머로서 놀라울 정도이다.

다만 내 베릴 환경에서는 2가지 문제가 발견되었다.
우선 rdesktop을 수행하면 이유없이 투명하게 나온다.
왜 redesktop에서만 그러는지 잘 모르겠고, 인터넷에서 서핑하여 여러 답안을 찾았지만 다 무용지물이다.
또, 가끔 black window bug가 발생한다. 이건 그래픽카드의 메모리가 모자라서 생겼으며,
nVidia 드라이버의 버그라고도 한다.

어쨌든 오랜만에 훌륭한 프로그램을 접해보니 기분이 좋다.

http://thisrule.egloos.com/2995248

system-config-***

☆  # system-config-***


ⓐ -display  ( X 윈도우 환경 설정 )

/etc/X11/xorg.conf  에 설정이 저장됨 ( 다른 리눅스에선 여기에서 설정변경 )

( VM ware 에서 돌릴경우 VMtools가 설치 되어있어야 제대로 설정가능 )

※ 모니터 주파수 문제로 X-윈도우가 안될경우

# vi  /etc/X11/xorg.conf 에서

Section  "Moniter"
…..
Horiz Sync   31.5 – 48.4
Vert Refresh 43.5 – 75.0

위 숫자 부분처럼 수정시 대부분의 모니터에서 해결됨… (된다고함 ;;;)


ⓑ -date  ( 날짜 설정 )


ⓒ -keyboard  ( 키보드 설정 )


ⓓ -bind  ( 네임서버 설정  ;  Desktop 에선 기본지원안함 )

Domain Name Server (DNS) : 도메인명을 IP 어드레스로 치환


ⓔ -httpd  ( 웹서버 설정  ;  Desktop 에선 기본지원안함 )

Web Server : 웹 페이지가 들어있는 파일을 사용자에게 제공하는 프로그램

                   대표적으로 Apache , IIS (Internet Information Service) , Enterprise

☞ 이메일, FTP, 파일 다운로드, 홈피구축, 전자 상거래 등

    인터넷 & 인트라넷과 관련된 프로그램들의 패키지 일부로 나옴.


ⓕ -lvm  ( LVM 설정 )

Logical Volume Management (LVM) : 논리적 볼륨 관리

                                                       디스크 드라이버의 용량을 논리적으로 조절, 관리

☞ 디스크 추가  /  타 시스템으로의 이송을 가능하게  /

    데이터 백업 , 재분할  /  포맷  ,  OS설치  ,  데이터 복구

☞ 손쉬운 디스크 재조정이 가능한 FS (File System) 구현을 위한 시스템


ⓖ -mouse  ( 마우스 설정 )


ⓘ -network  ( 네트워크 설정 )

조금뒤에 자세히 다룸~


ⓙ -nfs  ( NFS 서버 설정  ;  Desktop에선 기본지원 안함 )

Network File System (NFS) : 네트워크 상에서 FS을 공유하도록 설계된 FS의 한 종류

                                          다른 호스트에 있는 FS의 일부를 자신의 디렉토리 인것처럼 사용.

☞ 즉, Network 상의 디스크를 한 서버에서 집중관리, 나머지 시스템이 공유

☞ 보안문제가 있음


ⓚ -package  ( 패키지 추가, 삭제 관리 )


ⓛ -printer  ( 프린터 설정 )


ⓜ -rootpassword  ( 루트 계정 비번 관리 )


ⓝ -samba  ( Samba 서버 설정 )

Samba Server : ▷ 리눅스와 윈도우간에 파일 및 프린터를 공유하게 함

                       ▷ 타 운영체제와 파일을 공유하는 파일서버로도 사용 가능

                       ▷ SMB / CIFS 프로토콜 이용

※ SMB / CIFS

Server Message Block (SMB) : 윈도우시스템이 다른 시스템의 디스크나 프린터와 같은 자원을

                                             공유하게 해주는 프로토콜.  TCP/IP 기반하의 NetBIOS 프로토콜 이용

Common Internet File System (CIFS) : 네트워크를 위한 SMB 확장버전.

                                                       윈도우와 유닉스 환경을 동시에 지원하는 인터넷의 표준 파일 규약

Network Basic Input/Output System (NetBIOS) : 네트워크의 기본적인 입출력을 정의한 규약


ⓞ -securitylevel  ( 보안 레벨 설정 )


ⓟ -soundcard  ( 사운드카드 설정 )


ⓠ -users  ( 사용자 관리 )

ntsysv  – daemon
출처는 : http://anaron.egloos.com/69499