반응형 컴퓨터890 C 포인터 사용시 흔한 실수 C에서 포인터를 선언하고 사용시 다음과 같이 사용했을 때 어떤 문제가 뭘까? int *i; *i = 10; 첫번째 줄에서 i의 포인터를 선언하여 포인터가 저장되는 메모리 공간을 확보했다. 하지만 i의 포인터는 확보되었지만 i의 값이 저장되는 메모리 공간은 확보되지 않았기 때문에 *i에 값을 저장하면 어디에 저장될지 알수가 없다. 중요한 시스템 영역에 10이라는 값이 저장되어 심각한 문제가 될 수도 있다. 위 프로그램은 다음과 같이 고쳐서 사용해야 한다. int *i; int k; i = &k; *i = 10; k를 선언하여 값이 저장되는 메모리 공간을 확보하고 그 메모리 공간의 주소를 i에 할당하여 사용한다. 2019. 11. 14. auto, register, static, extern의 차이 auto는 함수 내의 지역변수를 나타낸다. 함수 내의 변수는 자동으로 지역변수로 정의되기 때문에 생략해도 된다. 즉 아래의 두 명령은 동일하다.int a;auto int a; register는 지역변수를 RAM이 아닌 CPU의 레지스터에 저장하도록 한다. 레지스터에 저장하면 실행 속도가 빨라진다.register int a; static은 지역변수와 전역변수에 사용할 수 있는데, 두 경우는 서로 다른 의미를 가진다. 지역변수에 static을 사용하면 함수를 빠져 나와도 static으로 정의된 변수의 값을 유지한다.전역변수에 static을 사용하면 다른 파일에서 extern으로 사용할 수 없도록 한다. 다른 파일에서 static 변수를 extern하면 컴파일 중 에러 메세지를 출력한다. extern은 다른 .. 2019. 11. 14. 팟플레이어와 곰플레이어의 내장 코덱 동영상 플레이어 중 팟플레이어와 곰플레이어는 코덱을 내장하여 별도로 코덱을 설치할 필요가 없다는 말을 한다. 이 말이 의미하는 것은 무엇일까? 코덱을 내장하지 않은 동영상 플레이어는 동영상 재생 시 외부에 설치된 코덱을 사용한다. 그래서, 코덱이 설치되어 있지 않으면 동영상이 재생되지 않는다. 하지만, 코덱을 내장한 플레이어는 자체 코덱을 사용하여 동영상을 재생한다. 별도로 설치된 코덱이건 내장 코덱이건 거의 대부분 FFmpeg을 사용하여 만들어져 있다. 팟플레이어와 곰플레이어는 FFmpeg 오픈 소스를 프로그램에 결합시켜 만들어져 있다. 2019. 11. 10. 연속 사진으로 만든 동영상 MJPEG MJPEG (Motion JPEG)은 동영상의 각 프레임마다 JPEG으로 따로 압축하여 동영상을 저장하는 포맷이다. 각 프레임마다 따로 압축하기 때문에 프레임 사이의 데이터까지 압축하는 MPEG 등과 같은 방식에 비해 압축률이 낮지만 구현이 간단한 장점이 있다. MPEG은 이전 프레임과 현재 프레임 사이의 차이 만을 저장하여 압축율을 높이지만 MJPEG은 이전 프레임에 상관 없이 현재 프레임만을 압축한다. 즉, MJPEG은 JPEG 사진이 연속적으로 있는 것과 같다. 2019. 11. 10. 대부분의 동영상에 사용되는 코덱 FFmpeg FFmpeg은 동영상, 사진, 음악을 디코딩과 인코딩하는 프로그램이다. FFmpeg은 오픈소스이고 FFmpeg 소소는 현재 대부분의 동영상 인코딩 또는 디코딩 프로그램에 사용된다. FFmpeg 소스를 사용하는 동영상 플레이어는 아이폰의 AV Player, 맥의 무비스트, 다음 팟플레이어, 곰 플레이어, KMP, VLC 등이 있고 동영상 인코더는 제트오디오VX, 팟인코더, 곰인코더 등이 있다. 아프리카 등의 인터넷 실시간 동영상 사이트에도 사용된다. FFmpeg은 Linux 기반으로 만들어져 있다. FFmpeg 홈페이지 2019. 11. 10. 화면 클리어 명령어 화면 클리어 명령어는 다음과 같다. 도스 cls 리눅스 clear Matlab clc 2019. 10. 30. 21:9 모니터의 가로 세로 크기 비율 모니터 가로 세로 16:9 24인치 (16:9) 1920 x 1080 531 mm 299 mm 32인치 (16:9) 2560 x 1440 708 mm 399mm 21:9 29인치 (21:9) 2560 x 1080 677 mm 290 mm 30인치 (21:9) 2560 x 1080 700 mm 300 mm 34인치 (21:9) 2560 x 1080 794 mm 340 mm 2019. 10. 29. 플래시 메모리에 4GB 이상의 파일 저장하는 방법 exFAT는 USB 플래시 메모리나 SD 카드를 위해 2006년 MS에서 만든 파일 시스템이다. 윈도우에서 USB 메모리를 포맷할 때 선택할 수 있다. FAT32는 1개의 파일 최대 크기가 4GB로 제한되지만 exFAT는 그런 제한이 없다. SD 협회에서 32GB 이상의 SDXC 카드의 표준 파일 시스템으로 exFAT를 지정하였다. 2019. 10. 29. c# 키보드 입력 제어 키보드 입력을 받았을 때 입력값에 따라 처리하는 방법은 다음과 같다. private void listView1_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Delete) { [키보드 동작 코드] e.Handled = true; } } 윈도우 마다 키보드의 기본 동작이 있는데 e.Handled = true로 해야 사용자가 정의한 동작과 중복해서 실행되지 않는다. 2019. 10. 29. C# 외부 프로그램 실행 Exe 파일 실행 또는 파일과 연결된 프로그램 실행 Process p = Process.Start("c:\\prog.exe"); Process p = Process.Start("c:\\memo.txt"); Process p = Process.Start("www.google.com"); 2019. 10. 29. C# Form의 모든 Control 제어 Form의 모든 Control 제어 foreach (Control x in this.Controls) { if (x is TextBox) { ((TextBox)x).Text = ""; } } foreach ( TextBox tb in this.Controls.OfType()) { tb.Text = ""; } 2019. 10. 29. C# CPU 사용량, 메모리 용량 getCpuUsage 함수는 CPU 사용량을 스트링으로 반환한다. getAvailableRAM 함수는 메모리 사용량을 스트링으로 반환한다. PerformanceCounter cpu; PerformanceCounter ram; cpu = new PerformanceCounter("Processor", "% Processor Time", "_Total"); ram = new PerformanceCounter("Memory", "Available MBytes"); public string getCpuUsage() { return cpu.NextValue().ToString()+"%"; } public string getAvailableRAM() { return ram.NextValue().ToString()+.. 2019. 10. 29. 리눅스 GUI 환경에서 파일 복사, 삭제, 이동 등이 안될 때 리눅스의 GUI 파일 관리자 프로그램에서 파일 복사, 삭제, 이동 등을 할 때 Permission Denied 메세지가 뜨고 실행이 안될 때는 파일 관리 프로그램을 Root 권한으로 실행하면 된다. 예를 들면, PCMan File Magnager를 Root 권한으로 실행시키기 위해서는 터미널에 다음과 같이 입력하면 된다. gksudo pcmanfm 여기서, sudo가 Command Line에 사용된다면 gksudo는 GUI 프로그램에 사용된다. pcmanfm은 PCMAn File Manger 프로그램의 실행파일 이름이다. 우분투에서는 다음과 같이 입력한다. gksudo nautilus 2019. 10. 27. Ubuntu를 RTOS로 사용하기 Ubuntu는 원래 RTOS가 아니다. 하지만, Real-time Patch를 하면 Soft RTOS로 사용할 수 있다. https://stackoverflow.com/questions/51669724/install-rt-linux-patch-for-ubuntuhttps://ubuntuforums.org/showthread.php?t=2273355 2019. 10. 27. Matlab 일렬로 행렬 만들기 [1:10] = [1 2 3 4 5 6 7 8 9 10] [1:2:10] = [1 3 5 7 9] [10:-1:1] = [10 9 8 7 6 5 4 3 2 1] 2019. 10. 27. 유닉스 명령어 리스트 IEEE Std 1003.1-2008 utilities에 표준화된 유닉스 명령어는 다음과 같다. admin alias ar asa at 설정된 시간에 명령을 실행 awk basename batch 명령어를 순차적으로 실행 bc bg Background에서 실행 cc/c99 C 컴파일 cal 달력 표시 cat cd 디렉토리 변경 cflow chgrp chmod 파일 속성 변경 chown 파일 소유자 변경 cksum 파일 체크섬과 크기 쓰기 cmp 파일 비교 comm command 간단한 명령어 실행 compress 압축 cp 파일 복사 crontab csplit ctags cut cxref date 날짜와 시간 표시 dd delta df diff dirname du echo ed 표준 텍스트 편집기 env.. 2019. 10. 27. 사용자 인터페이스 설계 방법 UI(User Interface) 설계의 목표는 사용하기 편한 UI를 설계하는 것이다. 하지만, 사용하기 편하다는 것은 주관적인 특성을 가지고 있다. 어떤 것이 편한 것인지 명확하게 정의하기는 어렵다. 실제 UI를 사용해 보면 편한지 불편한지 알수는 있지만 그것이 무엇 때문인지 말하기는 어렵다. UI의 편한함의 정도를 수치화할 수 있는 한가지 방법은 사용자가 어떤 작업을 할때 들이는 노력의 정도를 수치화하는 것이다. 컴퓨터 프로그램이라면 어떤 특정 작업을 하려고 할때 필요한 마우스 이동거리와 클릭수와 키보드 누르는 횟수를 노력의 정도로 볼수 있다. 그리고, 화면에 표시되는 정보의 개수와 정보의 크기와 색의 대비 정도를 수치화할 수도 있다. 어떤 제품은 메인 메뉴가 있고 그 아래에 하위 메뉴에 선택 버턴을.. 2019. 10. 27. 가장 단순한 유저 인터페이스 가장 단순한 UI는 전원 스위치이다. 전원 스위치는 ON/OFF 입력을 받고 동시에 스위치의 ON/OFF 상태를 표시한다. 입력과 출력 각각 1개씩 가진 가장 단순한 UI이다. 2019. 10. 27. 텍스트 파일에서 CR과 LF로 나누어진 이유 윈도우에서는 문장의 끝에 CR와 LF로 2개 코드를 사용한다. 하지만, 맥 OS를 포함하는 유닉스 계열의 운영체계에서는 LF 1개만 사용하고 클래식 맥 OS에는 CR 1개만 사용한다. 이와 같이 문장의 끝을 나타내는 기호를 Newline이라고 한다. CR은 Carriage Return으로 현재 문장의 제일 첫번째 글자로 이동하는 것이다. LF는 Line Feed로 한 줄 아래로 이동하는 것이다. 이전의 타자기에서 다음 줄로 넘어가기 위해서는 CR과 LF의 2가지 동작이 필요했다. 컴퓨터에서는 CR과 LF 2개 모두가 필요 없지만 타자기의 것을 그대로 컴퓨터로 가져와 CR+LF를 사용했다. CR 0x0D \r LF 0x0A \n 2019. 10. 25. Matlab의 Cell 값 비교 2개의 Cell A와 B를 비교하는 명령어는 다음과 같다. 같으면 1이고 다르면 0이다. isequal(A,B) 2019. 10. 24. Matlab 긴 명령어 여러 줄에 입력하는 방법 긴 명령어는 문장의 마지막에 "..." 을 입력하고 다음 줄에 이어 입력한다. a = 1 + 2 + 3 + 4 + 5 ... + 6 + 7 + 8 + 9 + 10; 2019. 10. 23. DVI RGB HDMI 변환 젠더 케이블 DVI를 HDMI로 또는 HDMI를 DVI로 변환 시킬 때는 다음과 같은 단순한 변환 젠더만 있으면 된다. DVI를 RGB로 또는 RGB를 DVI로 변환 시킬 때는 다음과 같은 단순한 변환 젠더만 있으면 된다. HDMI를 RGB로 변환시키기 위해서는 다음과 같은 변환기가 필요하다. RGB를 HDMI로 변환시키기 위해서는 다음과 같은 변환기가 필요하다. HDMI는 디지털 신호만 있고 RGB는 아날로그 신호만 있기 때문에 상호 변환이 까다롭다. 하지만, DVI에는 디지털과 아날로그 신호 모두가 있기 때문에 DVI로 RGB 또는 HDMI로 변환이 쉽다. DVI 커넥터의 핀 신호는 다음과 같다. C1-5에는 아날로그 RGB 신호가 나온다. 더보기 Pin Signal 1 TMDS data 2− 2 TMDS dat.. 2019. 10. 20. 모니터 RGB 케이블, 컴포넌트 케이블 변환 컴퓨터의 RGB 커넥터 (VGA 커넥터)의 핀은 다음과 같다. 핀 이름 설명 1 RED Red 2 GREEN Green 3 BLUE Blue 4 RES Reserved 5 GND Ground (HSync) 6 RED_RTN Red return 7 GREEN_RTN Green return 8 BLUE_RTN Blue return 9 PWR +5V DC power 10 GND Ground (VSync, DDC) 11 RES Reserved 12 SDA I²C data 13 HSync Horizontal sync 14 VSync Vertical sync 15 SCL I²C clock RGB 각각의 아날로그 신호가 나오는 컴포넌트 비디오 신호이다. 다음과 같은 변환 젠더를 사용하면 컴포넌트 신호를 VGA 신호로.. 2019. 10. 20. Ad hoc 네트워크 뜻 ad hoc은 '(계획된 것이 아닌 특별한 목적으로) 즉석'이라는 뜻이다. ad hoc meeting은 즉석 회의이고 ad hot committee는 특별 위원회라는 뜻이다. Wireless ad hoc network (WANET)은 라우터와 같은 중앙 제어 없이 연결되는 무선 네트워크를 의미한다. Ad hoc은 군용 무선 통신에 많이 사용된다. Zigbee는 ad hoc으로 mesh 네트워크를 구성한다. 윈도우에서 Ad-hoc은 공유기와 같은 라우터 없이 2대의 PC를 직접 연결하여 통신하는 것을 의미한다. 2019. 10. 20. 모니터 59Hz와 60Hz의 차이 모니터에서 59Hz 또는 60Hz를 선택할 수 있다. 59Hz는 59.94Hz를 의미한다. 초기 흑백 TV의 리플래시율은 전원 주파수와 동일한 60Hz를 사용했다. 전원 주파수와 맞춤으로써 카메라나 TV 등의 설계를 쉽게 할 수 있었다. 컬러 TV의 NTSC가 나오면서 리플래시율을 0.1% 차이가 나는 59.94Hz로 변경하였다. 59.94Hz로 변경한 이유는 화면에 도트 노이즈가 표시되는 현상을 줄이기 위해서이다. 2019. 10. 19. 첵썸(Checksum)과 CRC의 차이 Checksum은 데이터 전송이나 저장시 에러 검출을 위해 추가되는 작은 데이터이다. Checksum에는 다음과 같은 방식이 있다. CRC는 Checksum의 한 종류이다. 1. Parity 방식 데이터의 모든 비트 또는 바이트를 XOR하여 Checksum을 구하는 방식이다. 2. Modular Sum 방식 데이터의 모든 바이트를 더한 후 2's complement하여 Checksum을 구하는 방식이다. 3. CRC 방식 2개의 데이터가 서로 자리가 바뀌었을 때는 Parity나 Modular Sum 방식으로 검출할 수 없다. 하지만, CRC 방식은 이러한 경우에도 검출할 수 있는 방식이다. CRC는 가장 많이 사용되는 Checksum 방식으로 에러 검출 성능이 우수하다. 2019. 10. 17. 부호 있는 정수형 변수의 이진수 구조 컴퓨터에서 부호 있는 정수형 변수는 대부분 2's complement 방식을 사용한다. 어떤 수의 마이너스 부호 값은 그 수의 2's complement로 정의한다. 어떤 수의 2's complement는 2^N에서 그 수를 빼서 구한다. 예를 들면 0001의 2's complement는 10000 - 0001를 계산하여 1111이 된다. 즉, 양수 +1은 이진수로 0001이고 음수 -1은 이진수로 1111이 된다. 마이너스 부호값을 2's complement로 정의하면 부호 있는 정수의 계산이 매우 쉬워진다. 예를 들면 십진수 +2의 이진수는 0010이고 십진수 -1의 이진수는 1111이다. 이 두 수를 더하면 이진수로 10001이 되고 overflow 되는 부분을 제거하면 0001이 되어 결과값 +1.. 2019. 10. 17. C의 abs와 labs와 fabs 함수 abs 함수는 다음과 같이 int 변수의 절대값을 계산한다. 에 있다.int abs(int x) labs 함수는 다음과 같이 long 형 변수의 절대값을 계산한다. 에 있다.long abs(long int x) llabs 함수는 다음과 같이 long long 형 변수의 절대값을 계산한다. 에 있다.long long abs(long int x) fabs 함수는 다음과 같이 double 형 변수의 절대값을 계산한다. 에 있다.double fabs(double x) 2019. 10. 17. C의 min, max 함수 C에는 최소와 최대를 구하는 min, max 함수가 없다. 다음과 같이 min, max를 직접 정의하여 사용해야 한다. #ifndef max #define max(a,b) (((a) > (b)) ? (a) : (b)) #endif #ifndef min #define min(a,b) (((a) < (b)) ? (a) : (b)) #endif ☞ 삼항 연산자 2019. 10. 17. MSX 컴퓨터 개요 MSX는 1983년 미국의 마이크로소프트와 일본 기업인 ASCII가 만든 퍼스널 컴퓨터 표준이다. 처음의 MSX은 MSX2, MSX2+, MSX TurboR로 발전하였다. MSX의 원래 목적은 모든 퍼스널 컴퓨터들이 MSX 표준을 따르도록 하는 것이었다. 하지만, MSX 컴퓨터는 일본과 일부 국가에서만 인기가 있었다. 일본에서는 많은 게임들이 MSX 컴퓨터 기반으로 만들어졌다. 메탈 기어 솔리드도 원래는 MSX용으로 개발된 게임이다. MSX 호환 컴퓨터를 소니, 파라소닉, 샤프, 필립스 등의 많은 업체에서 만들었고 우리나라의 대우에서도 IQ 1000, IQ 2000의 이름으로 만들었다. 2019. 10. 15. 이전 1 ··· 20 21 22 23 24 25 26 ··· 30 다음 반응형