본문 바로가기

분류 전체보기13

[안드로이드스튜디오] 11. 단말에 데이터베이스와 내용 제공자 만들기 1. 모바일 데이터베이스란? 앱을 만들 때 간단한 데이터 저장에는 SharedPreferences를 사용할 수 있다. 필요하면 파일을 직접 읽거나 쓸 수도 있다. 하지만 많은 양의 데이터를 체계적으로 관리하려면 데이터베이스를 사용해야 한다. 표준 SQL문으로 데이터를 조회하는 관계형 데이터베이스를 휴대 단말에서 사용할 수 있다면 적은 양의 데이터라도 접근이 가능하기 때문에 더 효율적이다. 안드로이드는 임베디드 데이터베이스로 개발된 경량급(Light-weight) 관계형 데이터베이스인 SQLite를 가지고 있다. SQLite 데이터베이스는 파일로 만들어진 하위 수준의 구조를 가지면서도 데이터베이스의 기능까지 그대로 사용할 수 있음 저장될 때 파일로 저장되므로 데이터 베이스의 복사, 이동, 삭제가 쉬움 데이.. 2020. 5. 31.
[시스템프로그래밍/Linux] 10. Signal Timer(1) 1. Signal 커널에서 내부적으로 발생하는 event를 이와 연관되어 있는 프로세스에게 signal 형태로 전달합니다. user process는 signal을 사용하여 긴급한 비동기적 이벤트(asynchronous urgent event)를 인터럽트(inturrupt)를 다루는 것과 같이 다룰 수 있습니다. 프로세스 입장에서 이 signal은 비동기적으로 긴급하게 발생하는 event입니다. 이 event가 자신에게 전달되면 이 이벤트를 handling 할 수 있는 handling 메커니즘을 동작시킬 수 있습니다. User's view User mode 동작 -> signal 발생 -> user program 이 inturrupt를 받음 -> signal handler(user mode가 inturru.. 2020. 5. 23.
[시스템프로그래밍/Linux] 10. POSIX-semaphore 1. Semaphore Semaphore는 1960년대 Dijkstra에 의해 설계된 시스템 콜입니다. mutex와 마찬가지로 멀티스레드(또는 멀티프로세스) 환경에서 critical section의 공유 자원에 접근제어를 위해 사용합니다. semaphore의 기본적인 특징은 다음과 같습니다. mutual exclusion(상호 배제)을 위한 block/wakeup 알고리즘 프로세스가 critical section에 접근하지 못한다면, 프로세스는 block 상태가 됨(block : Semaphore queue에 해당 프로세스를 등록하고, 프로세스는 CPU에서 release됨) 프로세스가 critical section을 이용한 후 빠져나올 때, waiting queue에 있는 프로세스를 깨움 CPU time.. 2020. 5. 23.
[안드로이드스튜디오] 10. 서버에 데이터 요청하고 응답받기 1. 네트워킹이란? 네트워킹은 인터넷에 연결되어 있는 원격지의 서버 또는 원격지의 단말과 통신해서 데이터를 주고받는 동작들을 포함합니다. 이를 이용하면 단말의 데이터뿐만 아니라 멀리 떨어져 있는 서버나 다른 사람의 단말의 데이터를 조회할 수도 있습니다. 서버에 데이터를 저장할 때 (1) 먼저 인터넷을 통해 데이터 통신이 가능한지를 알아본 후 (2) 데이터를 주고받는 과정을 실행합니다. 데이터를 주고받는 과정은 상당히 복잡하지만, 인터넷에 연결되어 있는 여러 단말을 동시에 사용할 수 있어서 다양한 데이터 자원을 효율적으로 사용할 수 있습니다. 네트워크 연결방식 이해하기 '2-tier C/S(Client/Server)' 연결 방식 2-tier C/S 연결 방식은 가장 많이 사용하는 네트워킹 방식으로 클라이언.. 2020. 5. 22.
[시스템프로그래밍/Linux] 2. File I/O(1) 1. Linux System Calls 리눅스에는 아래와 같이 다양한 시스템 콜이 존재합니다. File descriptor I/O open(); close(); creat(); read(); write(); seek(); // random access fcntl(); // for file/record locking Process control Thread programming IPC Signal handling Memory management Synchronization Time management Network socket API(TCP, UDP) 그 중 File descriptor I/O에 대해 알아봅니다. 2. System Calls & Library Calls for File I/O 파일과 관련된.. 2020. 5. 6.
[시스템프로그래밍/Linux] 1-3. Linux Shell & Basic Commands 1. Shell? Shell이란 사용자가 운영체제에 접근할 수 있도록 만들어준 인터페이스입니다. 리눅스 커널은 유저가 유저 프로그램과 인터페이싱 하기 위해서 system call이라는 인터페이스를 제공하는데, 이 system call은 functional level에서의 인터페이스이기 때문에 유저가 이를 조금 더 쉽게 명령어 기반으로 사용할 수 있도록 제공한 것이 바로 shell입니다. shell의 기본적인 기능은 다음과 같습니다. - 다른 프로그램을 command line으로 실행시켜줄 수 있음 - 운영체제 안에 있는 file, process들을 관리 2. Commonly Used shells 리눅스를 설치하면 기본적으로 여러 가지 shell 프로그램이 설치되어 있습니다. System utility들은.. 2020. 5. 5.
[데이터통신] 3.2 주기 아날로그 신호(2) 5. 복합 신호 하나의 신호를 갖는 정현파는 데이터 통신 환경에서 적합하지 않습니다. 실제 통신에서 보내는 신호는 여러 개의 단순 정현파들로 만들어진 복합 신호가 필요합니다. 그러한 복합 신호의 틀을 분석하는 것이 Fourier 분석입니다. 푸리에 분석에 의하면 임의의 복합 신호는 서로 다른 주파수, 진폭, 위상을 갖는 단순 정현파들의 조합으로 나타낼 수 있습니다. 복합 신호는 주기적일 수도 있고 비주기적일 수도 있습니다. 주기 복합 신호는 주기들이 정수 값을 갖는 순차적인 단순 정현파들로 분해될 수 있습니다. 비주기 복합 신호는 연속적인 실수 값을 갖는 주파수와 진폭으로 된 무한의 정현파들로 분해됩니다. 먼저 주기 신호에 대해 살펴보기 위해 fourier series에 대해 알아봅니다. 수식을 살펴보면.. 2020. 4. 26.
[데이터통신] 3.2 주기 아날로그 신호(1) 아날로그 신호는 단순 신호와 복합 신호로 나뉩니다. 정현파(사인파, sine wave)와 같은 단순 아날로그 신호는 더 이상 단순한 신호로 나뉠 수 없으나, 복합(composite) 아날로그 신호는 여러 개의 정현파로 나뉠 수 있습니다. (참고 : Fourier series) 1. 정현파 사인파(sine wave, 정현파)는 아날로그 주기 신호의 가장 기본적인 형태 단순 아날로그 신호(정현파) s는 순간 진폭, A는 최대 진폭, f는 주파수, Φ는 위상이라고 할 때, 1) 최대 진폭 전송하는 신호의 에너지에 비례하는 가장 큰 세기의 절댓값 전기 신호의 경우, 최대 진폭은 전압(v)으로 측정 🦄 예제 3.1 제곱 평균값(rms, root mean square) 미국에서 가정의 전기는 최대 진폭 155에서 .. 2020. 4. 25.
[데이터통신] 3.1 데이터와 신호 물리층 개요 물리층의 주요 기능은 전송 매체를 통하여 전자기 신호 형태로 데이터를 전달하는 것입니다. 일반적으로 사람/응용이 만들어 내거나 이용할 수 있는 데이터는 네트워크를 통해 전달될 수 있는 형태가 아닙니다. 따라서 전송매체는 물리적인 경로를 따라 에너지를 전달하는 작업을 합니다. 매체 위에 전송하기 위해서는 데이터를 신호로 바꾸는 작업이 필요합니다. 3장에서는 데이터와 신호의 관계를 살펴보고, 신호의 여러가지 특성에 대해 알아봅니다. 데이터가 전송되기 위해서는 전자기적 신호(electromagnetic signals)의 형태로 바뀌어야 합니다. 데이터와 데이터를 표현하는 신호는 아날로그(analog) 또는 디지털(digital) 형태일 수 있습니다. 1. 아날로그와 디지털 데이터 아날로그 데이터(.. 2020. 4. 25.