우분투 BASH 셸 기초 정리
우분투 BASH 셸 기초 정리 리눅스에서 셸은 '명령'과 '프로그램'을 실행할 때 사용하는 인터페이스인데요. 리눅스를 공부하다 보면 이 녀석의 기본 문법 정도는 알고 있어야 된다고 해서 당분간 셸의 개념과 문법에 대해서 공부하면서 정리를 해보려고 합니다. 셸이 하는 기본 역할은 우리가 입력한 명령을 커널에 전달하거나 반대로 커널에서 처리된 결과를 우리에게 보여주는 역할을 하는데요. 우분투에서는 기본적으로 BASH 셸을 사용하고요. BASH 셸의 특징은 다음과 같습니다. ■ BASH 셸의 특징1. Alias명령 단축 : 리눅스에서 사용하는 긴 명령어를 내가 원하는 짧은 명령어로 바꿔서 사용할 수 있게 해줍니다. 2. History이건 정말 빈번하게 사용되는 기능인데 이전에 입력했던 길고 긴 명령어를 다시 ..
서버 리눅스 LVM 개념 및 만들어보기
서버 리눅스 LVM 개념 및 만들어보기LVM은 Logical Volume Manager의 약자로... 단어의 의미에서도 알 수 있듯이 [논리 하드디스크 관리자]를 말하고요. 이 녀석의 역할은 여러 개의 하드디스크를 하나로 묶은 후에 그걸 상황에 따라서 다양하게 공간을 재분배하는 역할을 합니다. 예를 들어 2T와 4T의 하드디스크를 하나의 공간으로 묶은 후에 총 6T의 공간을 1T, 3T, 1T, 1T로 다시 나눠서 사용할 수 있게 해줍니다. LVM과 관련된 용어 몇 가지만 살펴보고 직접 만들어보겠습니다. LVM 용어 물리 볼륨 : /dev/sda1, /dev/sdb1, /dev/sdc1 등 파티션 자체를 의미합니다.볼륨 그룹 : 각각의 파티션(물리 볼륨)을 하나로 묶어서 하나의 공간으로 만든 걸 말하고요..
SERVER RAID1, 5 만들기
SERVER RAID1, 5 만들기 지난 글에서 레이드의 개념과 Linear RAID, RAID0을 만들어봤는데요. 오늘은 RAID1과 5의 장단점을 살펴보고 그것들을 만들어보려고 합니다. 만드는 과정은 앞에서 해봤던 것들과 똑같기 때문에 RAID 생성 과정만 자세히 살펴보고 초기화 과정 등 기본 작업은 기본적인 내용들만 정리하면서 넘어가도록 할게요. 혹시 이 글을 보는 분들이 있다면 아래 글들을 참고하시면 될 거예요. RAID 개념 RAID0 만들기 이번 글에서는 먼저 RAID 1과 5의 특징을 살펴보겠습니다. 1. RAID1의 특징 이 녀석의 핵심은 똑같은 데이터를 두 곳(두 개의 하드디스크)에 각각 나눠서 저장을 하는 방식입니다. 한쪽에 12345를 저장한다면 다른 한 쪽에도 똑같이 12345가 저..
SERVER 구축 RAID0
SERVER 구축 RAID0 대량의 데이터를 저장하기 위해서 server의 하드디스크는 여러 개를 사용하게 되는데요. 그것들을 하나의 공간으로 묶어서 사용할 수 있는 방법이 지난 글에서 정리했었던 RAID 방식입니다. RAID의 개념 지난 글에서는 여러 개의 RAID의 방식 중에서 하드디스크의 공간을 순서대로 사용하는 Linerar RAID를 만들어봤는데요. 오늘은 두 개의 하드디스크에 교차해서 데이터를 저장하는 방식인 RAID0을 만들어보려고 합니다. 교차해서 저장을 한다는 의미는 다음과 같습니다. 1. RAID 0 방식 예를 들어 1부터 10까지의 데이터를 저장한다고 가정했을 때... 그림과 같이 한쪽에 하나의 데이터를 저장한 후 다음 데이터는 두 번째 공간에 저장을 하는 방식으로 동시에 교차해서 데..
서버 구축 방법 RAID
서버 구축 방법 RAID 대용량의 데이터를 저장해야 하는 서버의 특성상 여러 개의 하드디스크를 추가해서 사용하게 되는데 이것들을 하나의 저장공간으로 묶어서 마치 하나의 볼륨인 것처럼 사용할 수가 있고요. 어떤 방식으로 묶느냐에 따라서 데이터의 안전성과 공간 이용의 효율성이 달라지게 됩니다. 이처럼 여러 개의 하드디스크를 하나처럼 사용할 수 있게 묶어주는 방식을 RAID라고 하며... 이 RAID의 종류에는 물리적으로 하드웨어 자체를 하나로 묶어버리는 방식이 있고 소프트웨어를 이용해서 여러 개의 하드디스크를 마치 하나처럼 묶어주는 형식이 있는데... 아직 공부하고 있는 상황이라서 잘은 모르지만 물리적으로 처리하는 건 상당한 비용이 들어간다고 하네요. 반면에 소프트웨어로 묶어주는 건 하드디스크의 비용만 들어..
리눅스 설치 과정 정리 (가상머신)
리눅스 설치 리눅스를 공부하기 위해서 윈도우 컴퓨터에 가상머신 VMware를 깔고 그 위에 리눅스 설치를 해보려고 하는데요. 저 같은 초보님들 중 참고하실 분들이 계실지도 몰라 그 과정을 그림 몇 장으로 정리해보려고 합니다. 현재 제 컴퓨터에는 VMware라는 가상머신이 깔려있는 상태인데요. 이건 프로그램만 받아서 설치하면 되니까 그 과정은 생략하고 이 위에 가상의 컴퓨터를 하나 만들고 리눅스를 설치하겠습니다. 참고로 이런 가상머신이나 실제 컴퓨터나 설치하는 과정은 똑같아요. 저는 노트북 중 하나에 이미 리눅스를 설치해서 사용하고 있는데 전혀 다르지 않습니다. 리눅스 설치를 위해서는 일단 ISO 파일이 있어야겠죠? 저는 현재 공부하고 있는 강의에서 사용하는 Ubuntu 16.04를 설치할거구요. 아래 홈..
WMware 리눅스 하드디스크 추가 설치방법 및 설정
WMware 리눅스 하드디스크 추가 가상머신을 이용해서 리눅스를 공부하는 과정에서 오늘은 하드디스크 추가 설치 방법에 대해서 정리를 해보려고 합니다. 물론 가상머신에서 가상의 하드디스크를 설치하는 과정이지만 실제 물리적인 하드를 컴퓨터에 설치할 때도 같은 방법으로 진행하며... 리눅스는 단지 장착뿐만 아니라 몇 가지 조금은 복잡한 과정(마운트 등)을 더 진행해야 하드디스크를 사용할 수 있기 때문에 정리를 해놓고 나중에 참고하려고 합니다. 먼저 가상머신을 열고 아직 리눅스를 실행하지 않은 상태에서 하드디스크부터 추가합니다.▲ 가상의 컴퓨터를 선택한 후 [Edit virtual machine settings] 메뉴를 클릭해서 이동하고요. ▲ 설정 화면이 열리면 [Add...] 버튼을 눌러서 추가할 준비를 합..
vmware 리눅스 인터넷 연결 안될 때 해결방법 중 하나
vmware 리눅스 인터넷 연결 안될 때 윈도우 컴퓨터를 사용하는 분들은 리눅스 공부할 때... 저처럼 vmware 등의 가상머신에 리눅스를 설치해서 이용하실 테고 아마 이 글을 제목으로 찾아서 보고 계신다면 가상머신에 설치된 리눅스의 인터넷 연결이 안 돼서일 겁니다. 저의 경우도 잘 되던 게 종종 안되는 경우가 발생하더라고요. 그럴 때면 이 방법으로 해결을 하곤 했었는데 혹시 도움이 되실분들이 있을지 몰라 정리를 해봅니다. ▲ 현재 저의 컴퓨터는 윈도우 10을 사용하는 데스크톱이고 당연히 유선 인터넷 연결이 되어 있는 상태이기 때문에 vmware를 실행하면 인터넷 연결이 자동으로 되어야 정상입니다. 하지만 위 그림에서 표시한 것처럼 빈 부채 모양의 아이콘만 보이거나 와이파이 모양의 부채 모양만 보일때가..
리눅스 vi 명령어 모음
리눅스 명령어 모음 vi 리눅스에서는 gedit라는 메모장 비슷한 에디터를 제공해주고 있지만 유닉스와 리눅스 시스템에 기본적으로 포함되어 있는 vi는 반드시 다룰 줄 알아야 한다기에 간단한 vi 기본 사용법부터 알아보고 명령어를 정리해보려고 한다. 1. vi 실행 vi를 실행하기 위해서는 터미널을 열고 다음과 같이 vi 명령어를 실행하면 된다.윈도우나 메모장에 익숙해져 있는 나 같은 사람들이 적응하는데 시간이 좀 걸리겠지만 리눅스를 다루기 위해서는 이 녀석도 반드시 익혀둘 필요가 있다고 한다. ▲ 이처럼 vi의 정확한 명칭은 vim이며.... 실행을 하니 간단한 명령어 몇 개가 보인다. 먼저 이 녀석을 종료하는 명령어부터 살펴볼 텐데 [esc] > [:q]이다. 프로그램이 실행된 상태에서 esc를 누른 ..
리눅스 명령어 종료, 재부팅, 로그아웃
리눅스 명령어 모든 리눅스 명령어를 암기하는 것은 불가능하겠지만 기본적인 것부터 하나씩 익히면서 정리를 해보려고 하는데 오늘은 시스템 종료 및 재부팅 그리고 로그 아웃과 관련된 명령어들을 익혀보려고 한다. 1. 종료 먼저 시스템 종료 명령어로는 'poweroff', 'shutdown -P(대문자) now', 'halt -p(소문자)', 'init 0' 등이 있으며 shutdown -P now 명령어에서 now 부분에 시간을 분 단위로 지정하면 해당 시간 후에 시스템이 종료된다. 예를 들어 shutdown -P +10 명령어는 10분 뒤에 시스템이 종료되는 명령어이다. 그 외에도 종료과 관련해서 몇 가지 옵션이 더 있는데...shutdown -r 03:00 은 03:00에 종료하라는 의미이고 shutdow..
안드로이드 FFmpeg Ip 카메라 Rtsp 연결
안드로이드 FFmpeg Ip 카메라 Rtsp 연결 지난 글에서 안드로이드에서 FFmpeg를 사용하기 다운받고 NDK 빌드하는 과정까지 정리를 해봤었는데요. 오늘은 그것들을 이용해서 ffmpeg 타입의 IP 카메라에 RTSP로 접근해서 카메라를 열어보겠습니다. [참고]1. ffmpeg android build2. NDK jni 환경 구축 상대적으로 복잡했던 지난 글들과는 다르게 오늘은 아주 간단하게 마무리가 될 거 같네요. 이게 전부입니다. 일단 앱을 실행할 때 안드로이드 폰 화면 전체를 사용하기 위한 설정을 한 후 SurfaceView를 상속하고 SurfaceHolder.Callback을 구현한 RtspPlayView라는 클래스에 Context와 rtsp url 주소를 넘겨서 또 그것들을 지난 글에서 작..
android NDK jni 사용을 위한 External Tools 설정 및 NDK빌드
android jni 사용을 위한 External Tools 설정하기 이 글은 다른 안드로이드 선배님들의 글을 참고해서 FFmpeg를 빌드하고 JNI를 사용하기 위한 환경을 만들면서 정리해 놓는 초보의 부족한 노트 정리이기 때문에 틀린 내용도 있을 수 있고 부족한 부분이 많으니.... 혹시 이 글을 보시는 분들이 있다면 이해 부탁드리면서... FFmpeg 다운 및 안드로이드 빌드 지난번 글에서는 FFMPEG 형식의 IP Camera를 볼 수 있는 앱을 만들기 위한 준비과정으로 NDK와 FFMPEG를 다운받고 안드로이드 빌드를 진행했었는데요. 오늘은 안드로이드 프로젝트를 생성하고 JNI 형식에 맞는 C언어 헤더 파일을 만들 External Tools를 셋팅 한 후 jni 폴더를 만들고 라이브러리를 불러올 ..
안드로이드 IP Camera Rtsp 접근을 위한 FFmpeg 빌드
안드로이드 FFmpeg 빌드 이번 예제의 시작은 집안에 굴러다니던 아주 오래된 IP Camera에서부터 시작되었습니다.^^ 취미로 안드로이드 공부를 하고 있던 어느 날 서랍을 정리하고 있는데 예전에 한참 유행했던 IP 카메라가 하나 나오더라고요. 보통 밖에서 집안의 상황을 볼 때 사용했던 녀석인데 그동안 저도 모르게 무슨 수난을 겪었는지 이 모양이 됐네요.ㅎ 뼈대만 앙상하게 남아있지만 4~5년 전에는 나름대로 괜찮았던 LW130W라는 모델의 IP Camera입니다. 여하튼 그렇게 우연히 발견된 이 IP Camera를 스마트폰에서 볼 수 있는 안드로이드 앱을 하나 만들어보고 싶어지더라고요. 물론 이 카메라를 볼 수 있는 전용 App이 있습니다. 하지만 호기심이 발동해서 직접 한 번 만들어보고 싶어졌고.....
코딩 아이폰 xcode 서버 데이터 sqlite에 복사 후 접근하기
코딩 아이폰 xcode 서버 데이터 sqlite에 복사 (코딩 초보가 공부하면서 생각 안날 때 참고하기 위해서 정리하는 노트 같은 글이니 혹시 이 글을 보는 분들이 계신다면 참고만 하셨으면 좋겠네요.^^;) 앱에서 필요한 데이터를 서버에 저장해 놓고 필요한 경우에만 접근해서 가져오는 방법도 있겠지만 만약 스마트폰이 'LTE'나 'WIFI'가 OFF 되어 있을 때는 접근을 못하게 될 것이다. 그럴 때를 대비해서 아이폰 자체의 SQLite에 데이터를 저장해놓고 사용하면 어떨까 싶어서 서버에 있는 데이터를 복사해서 아이폰 안에 넣은 후 접근하는 과정을 공부하면서 정리해보려고 한다. 그 과정을 모두 정리하기에는 양이 너무 방대하기 때문에 하나의 글에 모든 내용을 정리하기에는 무리가 있을거 같아서 나중에 생각 안..
안드로이드 위험권한 체크
안드로이드 위험 권한 안드로이드 버전 '마시멜로우(API23)'부터는 앱을 이용할 때 필요한 사용자의 권한이 분류가 되었다. 단순하게 개발자가 Manifests에 적으면 되는 일반 권한(Normal Permission)과 사용자로부터 반드시 승락을 받아야 하는 위험 권한(Dangerous Permission)으로 분류가 된 것인데 물론 위험 권한도 매니페스트에 넣어줘야 하는 건 마찬가지다. 차이가 있다면 일반 권한은 앱을 스토어에서 설치할 때 처음 한 번만 승락하면 되는 권한이고 위험 권한은 앱을 설치한 후 실행할 때 사용자에게 다시 한 번 물어봐서 승락을 얻어야 하는 것으로 Dangerous Permission은 개인 정보와 관련된 것들에 접근하는 경우에 필요로 하는데 다음과 같은 것들이 있다. 위치(..
안드로이드 스튜디오 코딩 프로젝트 생성하기
안드로이드 스튜디오 코딩 프로젝트 생성하기 그동안 주먹구구식으로 잠깐씩 봐왔던 안드로이드 코딩 이었는데 체계 없이 이것저것 공부하다 보니 안 그래도 얄팍한 지식이 여기저기 분산되어 있는 느낌이다. 그래서 작은 프로젝트를 하나 만들어보면서 체계적으로 정리를 해보려고 하는데 그마저도 시간이 지나면 잊혀질듯해서 이 블로그에 노트식으로 그 과정을 정리해놓으려고 한다. 공부하면서 만들어볼 프로젝트는 비콘과 관련된 내용인데 어디까지 진도가 나갈지는 모르겠지만 최대한 정리를 해보기로 하고 오늘은 프로젝트부터 만들어본다. ▲안드로이드 스튜디오를 실행 한 후 [File > New > New Project...]를 순서대로 선택해서 프로젝트를 생성한다. ▲Application name과 company domain 그리고 ..