Home

Atmel Studio 7 설치 후 Atmega128 작동시키기

Click the link to read the original article: Here =================== AT128A-75B 라는 Atmega128 MCU을 사용한 제품을 구매해서 처음 구동시켜보려고 합니다. 아두이노만 사용하다가...
Read More

C++ 기초

Click the link to read the original article: TCPSchool.com ==== C++ 개요 C++ C++은 기존의 C언어에 여러 가지 기능을 추가하여...
Read More

Bash 입문자를 위한 핵심 요약 정리 (Shell Script)

Click the link to read the original article: Here ================ Bash 입문자를 위한 기본적인 문법과 알고 있으면 좋은 것들만 정리했다....
Read More

Windows Hyper-V 사용법

Click the link to read the original article: Here ===================================== 안녕하세요. 도정진입니다.   저전력 서버를 사용하면서 윈도우를 쓸 일이 많아져서...
Read More

Hyper V 전체 화면으로 확대 하기 

Click the link to read the original article: Here =================================== Hyper V 전체 화면으로 확대 하기  윈도우 10 하이퍼 v는...
Read More

하이퍼-V (Hyper-V) 개념

Click the link to read the original article: Here ==================================== 하이퍼-V 란 무엇 인가 페러럴즈를 들어 보셨나요? 내가 맥을 사용할때...
Read More

10분만에 JASON API 개발하기

Click the link to read the original article: Here ================================== 10분만에 JSON API 개발하기 AXBoot Framework를 사용해서 JSON API를 10분 만에...
Read More

API Types and Information

Click the link to read the original article: Here ================================== 네이트 개발자센터 : http://devsquare.nate.com/ 개발블로그 : http://club.cyworld.com/devsquare 네이버 앱 팩토리 : http://appfactory.naver.com/ 네이버...
Read More

“5G 스마트폰 상용화 앞당긴다” 삼성, 엑시노스 모뎀 5100 공개

Click the link to read the original article: Here ===================================== 삼성전자, 업계 최초 5G 표준 멀티모드 모뎀 개발 [키뉴스 백연식...
Read More

5G를 위한 새로운 DBMS, ‘NewSQL DBMS’가 온다

Click the link to read the original article: Here ======================================= 과거 클라이언트/서버 환경에서 DBMS 선택 기준의 최우선 순위는 '안정성'이었다. DBMS가...
Read More

VoLTE Tutorial – Voice Over LTE

Click the link to read the original article: Here ==================== VoLTE Tutorial- This Voice over LTE beginners guide will help...
Read More

LTE architecture

Click the link to read the original article: Here =================================== LTE architecture The infrastructure of an LTE cellular network comprises...
Read More

Atmel Studio 7 설치 후 Atmega128 작동시키기

Atmel Studio 7 설치 후 Atmega128 작동시키기

C/C++
Click the link to read the original article: Here =================== AT128A-75B 라는 Atmega128 MCU을 사용한 제품을 구매해서 처음 구동시켜보려고 합니다. 아두이노만 사용하다가...
Read More
C++ 기초

C++ 기초

C/C++
Click the link to read the original article: TCPSchool.com ==== C++ 개요 C++ C++은 기존의 C언어에 여러 가지 기능을 추가하여...
Read More
Bash 입문자를 위한 핵심 요약 정리 (Shell Script)

Bash 입문자를 위한 핵심 요약 정리 (Shell Script)

Linux / Unix
Click the link to read the original article: Here ================ Bash 입문자를 위한 기본적인 문법과 알고 있으면 좋은 것들만 정리했다....
Read More
Windows Hyper-V 사용법

Windows Hyper-V 사용법

Windows
Click the link to read the original article: Here ===================================== 안녕하세요. 도정진입니다.   저전력 서버를 사용하면서 윈도우를 쓸 일이 많아져서...
Read More
Hyper V 전체 화면으로 확대 하기 

Hyper V 전체 화면으로 확대 하기 

Windows
Click the link to read the original article: Here =================================== Hyper V 전체 화면으로 확대 하기  윈도우 10 하이퍼 v는...
Read More
하이퍼-V (Hyper-V) 개념

하이퍼-V (Hyper-V) 개념

Windows
Click the link to read the original article: Here ==================================== 하이퍼-V 란 무엇 인가 페러럴즈를 들어 보셨나요? 내가 맥을 사용할때...
Read More
10분만에 JASON API 개발하기

10분만에 JASON API 개발하기

APIs
Click the link to read the original article: Here ================================== 10분만에 JSON API 개발하기 AXBoot Framework를 사용해서 JSON API를 10분 만에...
Read More
API Types and Information

API Types and Information

APIs
Click the link to read the original article: Here ================================== 네이트 개발자센터 : http://devsquare.nate.com/ 개발블로그 : http://club.cyworld.com/devsquare 네이버 앱 팩토리 : http://appfactory.naver.com/ 네이버...
Read More
“5G 스마트폰 상용화 앞당긴다” 삼성, 엑시노스 모뎀 5100 공개

“5G 스마트폰 상용화 앞당긴다” 삼성, 엑시노스 모뎀 5100 공개

Cellular Telecommunications
Click the link to read the original article: Here ===================================== 삼성전자, 업계 최초 5G 표준 멀티모드 모뎀 개발 [키뉴스 백연식...
Read More
5G를 위한 새로운 DBMS, ‘NewSQL DBMS’가 온다

5G를 위한 새로운 DBMS, ‘NewSQL DBMS’가 온다

Cellular Telecommunications
Click the link to read the original article: Here ======================================= 과거 클라이언트/서버 환경에서 DBMS 선택 기준의 최우선 순위는 '안정성'이었다. DBMS가...
Read More
VoLTE Tutorial – Voice Over LTE

VoLTE Tutorial – Voice Over LTE

Cellular Telecommunications
Click the link to read the original article: Here ==================== VoLTE Tutorial- This Voice over LTE beginners guide will help...
Read More
LTE architecture

LTE architecture

Cellular Telecommunications
Click the link to read the original article: Here =================================== LTE architecture The infrastructure of an LTE cellular network comprises...
Read More
1 2 3 23
Atmel Studio 7 설치 후 Atmega128 작동시키기
C/C++

Atmel Studio 7 설치 후 Atmega128 작동시키기

Click the link to read the original article: Here

===================

AT128A-75B 라는 Atmega128 MCU을 사용한 제품을 구매해서 처음 구동시켜보려고 합니다.
아두이노만 사용하다가 처음 사용하는데 감이 잘 오지 않네요.

https://www.devicemart.co.kr/1149213
AT128A-75B Plus MKII 라는 제품을 구매했습니다. ( AT128-75B 에 MKll 를 추가로 주는 것 같습니다. )

https://www.google.co.kr/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0ahUKEwj5hY3NjI3TAhVCz1QKHeOlA_EQFggaMAA&url=https%3A%2F%2Fwww.devicemart.co.kr%2Finclude%2Fdown.php%3Ffile%3D%2Fdata%2Fgoods%2Fgoodsfile%2F1149213_file_0.pdf%26mode%3Dgoods%26name%3DAT128A-75B%2520Plus_MKII_%25B8%25C5%25B4%25BA%25BE%25F3.pdf&usg=AFQjCNEniDJ7KJi3UTCn0SLWOMNMg17xhg&sig2=xFLZQegpNL_KhcBpMKypsQ&cad=rjt

위의 링크에서 매뉴얼을 확인 할 수 있습니다.

위 제품은 usb Btype, isp, JTag 방식으로 파일 전송이 가능한 제품이라고 하여 구매하게 되었습니다.

마이크로프로세서 책 들을 읽어보니 데이터 전송 방식에는 여러가지가 있는데 isp, jtag? 등등
대부분 isp 를 이용하는 듯 하였고, 단순히 usb 로 전송하는 것 보다는 isp 전송 방식을 알고 싶어서 구매한 제품입니다.

위의 2*5 짜리는 JTAG 아래의 2*3 짜리는 ISP 통신용입니다. )

http://www.atmel.com/tools/atmelstudio.aspx#download

다음으로는 위 경로로 들어가서 atmel studio 7을 설치합니다.

위와 같이 설치가 완료 되었습니다.

위와 같이 ATmega 128 을 선택해줍니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <avr/io.h>
#include <util/delay.h>
int main(void)
{
    //포트D를 출력으로 설정한다.
    DDRD = 0xFF;
    /* Replace with your application code */
    while (1)
    {
        //포트D의 값을 0xFF로 한다. LED가 켜진다.
        PORTD  = 0xFF;
        _delay_ms(300); //300ms 대기
        //포트D의 값을 0x00으로 한다. LED가 꺼진다.
        PORTD = 0x00;
        _delay_ms(300); //300ms 대기
    }
}
cs
 

위의 소스코드를 넣어주고 D 포트 0~7 번에 출력을 설정하고 LED와 저항을 연결해준다.

그리고 빌드해주면 ??

이런 창이 뜨면서 Selected debugger/programmer 를 선택하라고 합니다.

저는 AVRISP MKll 를 선택했구요

그 다음 코드를 실행하면 ??

잘 작동합니다.

– 출처 –
http://webnautes.tistory.com/674
http://jjungineer.tistory.com/3

C++ 기초
C/C++

C++ 기초

Click the link to read the original article: TCPSchool.com

====

C++ 개요


C++

C++은 기존의 C언어에 여러 가지 기능을 추가하여 만든 프로그래밍 언어입니다.

C++은 C언어에서 절차 지향적 언어의 특징을 가져왔을 뿐만 아니라, 클래스를 사용하는 객체 지향적 언어인 동시에 템플릿으로 대변되는 일반화 프로그래밍 방식의 언어이기도 합니다.

 

C++ 수업 시작 =>

 

여러분이 직접 코드를 변경하고, 그 결과를 확인할 수 있는 온라인 에디터가 준비되어 있습니다.

예제

#include <iostream>

#define TEXT “Welcome to C++ Programming!!”

int main()

{

    std::cout << TEXT;

    return 0;

}

Bash 입문자를 위한 핵심 요약 정리 (Shell Script)
Linux / Unix

Bash 입문자를 위한 핵심 요약 정리 (Shell Script)

Click the link to read the original article: Here

================

Bash 입문자를 위한 기본적인 문법과 알고 있으면 좋은 것들만 정리했다.
(이런 것도 있구나 싶을 정도만 이해하도록 간단한 설명과 예제로 작성됨)

첫 시작은 문자 출력하기(Hello World)

고전적이지만 “hello world” 단순 출력부터 시작해보자.
파일명은 hello.sh로 만들고 실행해보자. 단 두줄이면 끝이다.
(만일 실행이 안된다면 퍼미션을 변경해야되는데 뭔지 모르겠다면 일단 이렇게 해봐라.chmod 700 hello.sh)
참고: echo 문장을 출력하는데 자동으로 줄바꿈 됨
참고: printf C언어와 비슷함

#!/usr/bin/env bash
echo "hello world"
printf "hello world"
printf "%s %s" hello world

 

주석(Comments)

# 기호로 시작하면 주석이다.

함수(Function)

형식은 다른 언어와 차이는 없다. 그러나 function는 생략해도 된다.
함수 명을 쓰면 함수가 호출이 되는데 주의할 것은 호출 코드가 함수 코드보다 반드시 뒤에 있어야 된다. 함수 코드 보다 앞에서 호출 시 오류가 발생한다.

string_test() {
    echo "string test"
}

function string_test2() {
    echo "string test 2"
    echo "인자값: ${@}"
}
string_test
string_test2

# 함수에 인자값 전달하기(공백의로 뛰어서 2개의 인자값을 넘김)
string_test2 "hello" "world"

 

변수(Variable)

변수 사용시에는 “=” 기호 앞뒤로 공백이 없이 입력하면 대입연산자가 된다.
그리고 선언된 변수는 기본적으로 전역 변수(global variable)다. 단 함수 안에서만 지역 변수(local variable)를 사용할 수 있는데 사용할려면 변수 명 앞에 local을 붙여주면 된다.
그런데 전역 변수는 현재 실행된 스크립트 파일에서만 유효하다. 자식 스크립트에서는 사용 할 수 없는 변수다.
변수 명 앞에 export을 붙여주면 환경 변수(environment variable)로 설정되어 자식 스크립트에서 사용 가능하다.
환경 변수 사용시 예약 변수(reserved variable)에 주의하자.(참고로 환경 변수는 .bash_profile에서 정의한다.)

# 전역 변수 지정
string="hello world"
echo ${string}

# 지역 변수 테스트 함수
string_test() {
    # 전역 변수와 동일하게 사용함. 만약 local 뺀다면 전역 변수에 덮어씌어지게 됨
    local string="local"
    echo ${string}
}
# 지역 변수 테스트 함수 호출
string_test
# 지역 변수 테스트 함수에서 동일한 변수 명을 사용했지만 값이 변경되지 않음
echo ${string}

# 환경 변수 선언
export hello_world="hello world..."
# 자식 스크립트 호출은 스크립트 경로을 쓰면된다.
/home/export_test.sh

#환경 변수를 테스트하기 위해 export_test.sh 파일을 만들고 선언한 변수를 확인해본다.
echo ${hello_world}

 

예약 변수(Reserved Variable)

문자 설명
HOME 사용자의 홈 디렉토리
PATH 실행 파일을 찾을 경로
LANG 프로그램 사용시 기본 지원되는 언어
PWD 사용자의 현재 작업중인 디렉토리
FUNCNAME 현재 함수 이름
SECONDS 스크립트가 실행된 초 단위 시간
SHLVL 쉘 레벨(중첩된 깊이를 나타냄)
SHELL 로그인해서 사용하는 쉘
PPID 부모 프로세스의 PID
BASH BASH 실행 파일 경로
BASH_ENV 스크립트 실행시 BASH 시작 파일을 읽을 위치 변수
BASH_VERSION 설치된 BASH 버전
BASH_VERSINFO BASH_VERSINFO[0]~BASH_VERSINFO[5]배열로 상세정보 제공
MAIL 메일 보관 경로
MAILCHECK 메일 확인 시간
OSTYPE 운영체제 종류
TERM 로긴 터미널 타입
HOSTNAME 호스트 이름
HOSTTYPE 시스템 하드웨어 종류
MACHTYPE 머신 종류(HOSTTYPE과 같은 정보지만 조금더 상세하게 표시됨)
LOGNAME 로그인 이름
UID 사용자 UID
EUID su 명령에서 사용하는 사용자의 유효 아이디 값(UID와 EUID 값은 다를 수 있음)
USER 사용자의 이름
USERNAME 사용자 이름
GROUPS 사용자 그룹(/etc/passwd 값을 출력)
HISTFILE history 파일 경로
HISTFILESIZE history 파일 크기
HISTSIZE history 저장되는 개수
HISTCONTROL 중복되는 명령에 대한 기록 유무
DISPLAY X 디스플레이 이름
IFS 입력 필드 구분자(기본값:   – 빈칸)
VISUAL VISUAL 편집기 이름
EDITOR 기본 편집기 이름
COLUMNS 현재 터미널이나 윈도우 터미널의 컬럼 수
LINES 터미널의 라인 수
LS_COLORS ls 명령의 색상 관련 옵션
PS1 기본 프롬프트 변수(기본값: bash\$)
PS2 보조 프롬프트 변수(기본값: >), 명령을 “\”를 사용하여 명령 행을 연장시 사용됨
PS3 쉘 스크립트에서 select 사용시 프롬프트 변수(기본값: #?)
PS4 쉘 스크립트 디버깅 모드의 프롬프트 변수(기본값: +)
TMOUT 0이면 제한이 없으며 time시간 지정시 지정한 시간 이후 로그아웃

 

위치 매개 변수(Positional Parameters)

문자 설명
$0 실행된 스크립트 이름
$1 $1 $2 $3...${10}인자 순서대로 번호가 부여된다. 10번째부터는 “{}”감싸줘야 함
$* 전체 인자 값
$@ 전체 인자 값($* 동일하지만 쌍따옴표로 변수를 감싸면 다른 결과 나옴)
$# 매개 변수의 총 개수

 

특수 매개 변수(Special Parameters)

문자 설명
$$ 현재 스크립트의 PID
$? 최근에 실행된 명령어, 함수, 스크립트 자식의 종료 상태
$! 최근에 실행한 백그라운드(비동기) 명령의 PID
$- 현재 옵션 플래그
$_ 지난 명령의 마지막 인자로 설정된 특수 변수

 

매개 변수 확장(Parameter Expansion)

아래 예를 테스트하기 위한 변수: string="abc-efg-123-abc"

문자 설명
${변수} $변수와 동일하지만 {} 사용해야만 동작하는 것들이 있음(예: echo ${string})
${변수:위치} 위치 다음부터 문자열 추출(예: echo ${string:4})
${변수:위치:길이} 위치 다음부터 지정한 길이 만큼의 문자열 추출(예: echo ${string:4:3})
${변수:-단어} 변수 미선언 혹은 NULL일때 기본값 지정, 위치 매개 변수는 사용 불가(예: echo ${string:-HELLO})
${변수-단어} 변수 미선언시만 기본값 지정, 위치 매개 변수는 사용 불가(예: echo ${string-HELLO})
${변수:=단어} 변수 미선언 혹은 NULL일때 기본값 지정, 위치 매개 변수 사용 가능(예: echo ${string:=HELLO})
${변수=단어} 변수 미선언시만 기본값 지정, 위치 매개 변수 사용 가능(예: echo ${string=HELLO})
${변수:?단어} 변수 미선언 혹은 NULL일때 단어 출력 후 스크립트 종료,(예: echo ${string:?HELLO})
${변수?단어} 변수 미선언시만 단어 출력 후 스크립트 종료(예: echo ${string?HELLO})
${변수:+단어} 변수 선언시만 단어 사용(예: echo ${string:+HELLO})
${변수+단어} 변수 선언 혹은 NULL일때 단어 사용(예: echo ${string+HELLO})
${#변수} 문자열 길이(예: echo ${#string})
${변수#단어} 변수의 앞부분부터 짧게 일치한 단어 삭제(예: echo ${string#a*b})
${변수##단어} 변수의 앞부분부터 길게 일치한 단어 삭제(예: echo ${string##a*b})
${변수%단어} 변수의 뒷부분부터 짧게 일치한 단어 삭제(예: echo ${string%b*c})
${변수%%단어} 변수의 뒷부분부터 길게 일치한 단어 삭제(예: echo ${string%%b*c})
${변수/찾는단어/변경단어} 처음 일치한 단어를 변경(예: echo ${string/abc/HELLO})
${변수//찾는단어/변경단어} 일치하는 모든 단어를 변경(예: echo ${string//abc/HELLO})
${변수/#찾는단어/변경단어} 앞부분이 일치하면 변경(예: echo ${string/#abc/HELLO})
${변수/%찾는단어/변경단어} 뒷부분이 일치하면 변경(예: echo ${string/%abc/HELLO})
${!단어*}, ${!단어@} 선언된 변수중에서 단어가 포함된 변수 명 추출(예: echo ${!string*}echo ${!string@})

 

배열(Array Variable)

배열 변수 사용은 반드시 괄호를 사용해야 한다.(예: ${array[1]})
참고: 1차원 배열만 지원함

# 배열의 크기 지정없이 배열 변수로 선언
# 참고: 'declare -a' 명령으로 선언하지 않아도 배열 변수 사용 가능함
declare -a array

# 4개의 배열 값 지정
array=("hello" "test" "array" "world")

# 기존 배열에 1개의 배열 값 추가(순차적으로 입력할 필요 없음)
array[4]="variable"

# 기존 배열 전체에 1개의 배열 값을 추가하여 배열 저장(배열 복사 시 사용)
array=(${array[@]} "string")

# 위에서 지정한 배열 출력
echo "hello world 출력: ${array[0]} ${array[3]}"
echo "배열 전체 출력: ${array[@]}"
echo "배열 전체 개수 출력: ${#array[@]}"

printf "배열 출력: %s\n" ${array[@]}

# 배열 특정 요소만 지우기
unset array[4]
echo "배열 전체 출력: ${array[@]}"

# 배열 전체 지우기
unset array
echo "배열 전체 출력: ${array[@]}"

 

변수 타입 지정(Variables Revisited)

Bash 변수는 타입을 구분하지 않고 기본적으로 문자열이다. 단 문맥에 따라서 연산 처리한다.
그런데 불완전한 형태의 declaretypeset 타입 지정 명령을 지원한다.(두 명령은 동일함)
참고: 코멘트에 있는 다른 문법 사용을 추천한다.

# 읽기 전용
# readonly string_variable="hello world" 문법과 동일 함
declare -r string_variable

# 정수
# number_variable=10 문법과 동일 함
declare -i number_variable=10

# 배열
# array_variable=() 문법과 동일 함
declare -a array_variable

# 환경 변수
# export export_variable="hello world" 문법과 동일 함
declare -x export_variable="hello world"

# 현재 스크립트의 전체 함수 출력
declare -f

# 현재 스크립트에서 지정한 함수만 출력
declare -f 함수이름

 

논리 연산자(Logical Operators)

문자 설명
&&-a 논리 AND
||-o 논리 OR

 

산술 연산자(Arithmetic Operators)

문자 설명
+ 더하기
- 빼기
* 곱하기
/ 나누기
++ 누승(exponentiation)
% modulo 나 mod (정수 나누기에서 나머지 값)
+= 상수값 만큼 증가(plus-equal)
-= 상수값 만큼 감소(minus-equal)
*= 상수값을 곱함(times-equal)
/= 상수값으로 나눔(slash-equal)
%= 상수값으로 나눈 나머지 값(mod-equal)

 

비트 연산자(Bitwise Operators)

문자 설명
<< 비트 왼쪽 쉬프트(쉬프트 한 번당 2를 곱하는 것과 동일함)
<<= left-shift-equal
>> 비트 오른쪽 쉬프트(쉬프트 한 번당 2로 나눔)
>>= right-shift-equal(<<=와 반대)
& 비트 and
&= 비트 and-equal
| 비트 OR
|= 비트 OR-equa
~ 비트 negate
! 비트 NOT
^ 비트 XOR
^= 비트 XOR-equa

 

기타 연산자(Miscellaneous Operators)

문자 설명
, 콤마 연산자(comma operator), 2개 이상의 산술 연산을 묶어줌

 

정수 비교(Integer Comparison)

문자 설명
-eq 같음
-ne 같지 않음
>-gt 더 큼(> 이중 소괄호에서 사용 가능)
>=-ge 더크거나 같음(>= 이중 소괄호에서 사용 가능)
<-lt 더 작음(< 이중 소괄호에서 사용 가능)
<=-le 더 작거나 같음(<= 이중 소괄호에서 사용 가능)

 

문자열 비교(String Comparison)

문자 설명
=== 같음
!= 같지 않음
< ASCII 알파벳 순서에 더 작음
> ASCII 알파벳 순서에서 더 큼
-z 문자열이 NULL, 길이가 0인 경우
-n 문자열이 NULL이 아님
${변수} 문자열이 NULL이 아님

 

파일 비교(File test operators)

문자 설명
-e 파일이 존재
-f 파일이 존재하고 일반 파일인 경우(디렉토리 혹은 장치파일이 아닌 경우)
-s 파일이 존재하고 0보다 큰 경우
-d 파일이 존재하고 디렉토리인 경우
-b 파일이 존재하고 블록장치 파일인 경우
-c 파일이 존재하고 캐릭터 장치 파일인 경우
-p 파일이 존재하고 FIFO인 경우
-h 파일이 존재하고 한 개 이상의 심볼릭 링크가 설정된 경우
-L 파일이 존재하고 한 개 이상의 심볼릭 링크가 설정된 경우
-S 파일이 소켓 디바이스인 경우
-t 파일이 디스크립터가 터미널 디바이스와 연관이 있음
-r 파일이 존재하고 읽기 가능한 경우
-w 파일이 존재하고 쓰기가 가능한 경우
-x 파일이 존재하고 실행 가능한 경우
-g 파일이 존재하고 SetGID가 설정된 경우
-u 파일이 존재하고 SetUID가 설정된 경우
-k 파일이 존재하고 스티키 비트(Sticky bit)가 설정된 경우
-O 자신이 소유자임
-G 그룹 아이디가 자신과 같음
-N 마지막으로 읽힌 후에 변경 됐음
file1 -nt file2 file1 파일이 file2 파일보다 최신임
file1 -ot file2 file1 파일이 file2 파일보다 예전것임
file1 -ef file2 file1 파일과 file2 파일이 같은 파일을 하드 링크하고 있음
! 조건이 안 맞으면 참(예: ! -e file)

 

반복문(for, while, until)

반목문 작성 시 아래 명령어(흐름제어)을 알아두면 좋다.
반복문을 빠져 나갈때: break
현재 반복문이나 조건을 건너 뛸때: continue

# 지정된 범위 안에서 반복문 필요 시 좋음
for string in "hello" "world" "..."; do;
    echo ${string};
done

# 수행 조건이 true 일때 실행됨 (실행 횟수 지정이 필요하지 않은 반복문 필요 시 좋음)
count=0
while [ ${count} -le 5 ]; do
    echo ${count}
    count=$(( ${count}+1 ))
done

# 수행 조건이 false 일때 실행됨 (실행 횟수 지정이 필요하지 않은 반복문 필요 시 좋음)
count2=10
until [ ${count2} -le 5 ]; do
    echo ${count2}
    count2=$(( ${count2}-1 ))
done

 

조건문(if…elif…else…fi)

조건문 작성 시 주의해야될 부분은 실행 문장이 없으면 오류 발생함

string1="hello"
string2="world"
if [ ${string1} == ${string2} ]; then
    # 실행 문장이 없으면 오류 발생함
    # 아래 echo 문장을 주석처리하면 확인 가능함
    echo "hello world"
elif [ ${string1} == ${string3} ]; then
    echo "hello world 2"
else
    echo "hello world 3"
fi

# AND
if [ ${string1} == ${string2} ] && [ ${string3} == ${string4} ]
..생략

# OR
if [ ${string1} == ${string2} ] || [ ${string3} == ${string4} ]
..생략

# 다중 조건
if [[ ${string1} == ${string2} || ${string3} == ${string4} ]] && [ ${string5} == ${string6} ]
..생략

 

선택문(case)

정규식을 지원하며 | 기호로 다중 값을 입력 가능하며 조건의 문장 끝에는 ;; 기호로 끝을 표시한다.
참고: 대문자와 소문자는 다른 문자다.

# case문 테스트를 위한 반복문
for string in "HELLO" "WORLD" "hello" "world" "s" "start" "end" "etc"; do

    # case문 시작
    case ${string} in
        hello|HELLO)
            echo "${string}: hello 일때"
            ;;
        wo*)
            echo "${string}: wo로 시작하는 단어 일때"
            ;;
        s|start)
            echo "${string}: s 혹은 start 일때"
            ;;
        e|end)
            echo "${string}: s 혹은 start 일때"
            ;;
        *)
            echo "${string}: 기타"
            ;;
    esac
    # //case문 끝

done

 

디버깅(Debugging)

간단하게는 echoexit 명령나 tee 명령어로 디버깅한다.
다른 방법으로 실행 시 옵션을 주거나 코드에 한줄만 추가하면 해볼수 있다.

Bash 옵션(스크립트 실행 시) set 옵션(스크립트 코드 삽입) 설명
bash -n set -nset -o noexec 스크립트 실행없이 단순 문법 오류만 검사(찾지 못하는 문법 오류가 있을수 있음)
bash -v set -vset -o verbose 명령어 실행전 해당 명령어 출력(echo)
bash -x set -xset -o xtrace 명령어 실행후 해당 명령어 출력(echo)
set -uset -o nounset 미선언된 변수 발견시 “unbound variable” 메시지 출력

 

마무리하며

  • 여기서 인자(argument)와 매개변수(parameter)는 이름만 다를 뿐 의미는 같다.
  • Bash는 공백에 민감하다.
  • 변수 사용은 생각하지 말고 ${변수} 이렇게 쓰자.

 

함께보기

Windows Hyper-V 사용법
Windows

Windows Hyper-V 사용법

Click the link to read the original article: Here

=====================================

안녕하세요. 도정진입니다.

 

저전력 서버를 사용하면서 윈도우를 쓸 일이 많아져서 실제로는 아래와 같이 운영중이였습니다.

 

 

그런데 우분투를 호스트로 한 버추얼박스 위에 윈도우를 설치하면, 가상 운영체제에서 리소스를 많이 쓰게 되면 호스트의 서비스의 컨넥션이 드롭되는 문제가 있었습니다.

 

가장 큰 문제는, 윈도우를 가상화 한 것이 성능이 너무 느리다는 것입니다. ㅠ

 

제가 INTEL NUC DN2820 을 사용하고 있는데 인텔 아크에서 정보를 보면 아래와 같이 나옵니다.

 

 

VT-D 기술이 지원되지 않고 실 CPU 성능도 떨어져 가상화로 윈도우를 구동하기에는 무리가 있었습니다. 그래서 아예 윈도우를 네이티브로 깔고 시도하기로 마음을 먹었습니다.

그래서 NUC 에 바로 윈도우10 을 설치하였습니다.

다시 도식 그림으로 나타내면 이번 글로 지향하는 바는 아래와 같습니다.

 

 

실제로 Hyper – V 에 대한 Xpenology 에 대한 지원은 종료된지 조금 되었습니다. 그런데 딱히 쓰는데는 지장이 없으며, Hyper – V 기능 중에 허트비팅 이라는 기능이 있는데 윈도우가 종료되고 시작될 때, 가상머신과 통신하여 가상머신에 종료 명령을 내리고 종료가 완료되면 윈도우가 종료되는 기능입니다.

 

이 통합 기능이 최근의 Xpenology 에 와서는 지원이 되지 않고 있습니다. 그러나 이 문제는 Hyper-V 의 저장 기능 설정을 통해 해결이 가능하고 (실제로 종료가 동시에 이루어지지는 않음) 종료 까지 되게 하려면 Xpenology 부트 이미지를 뜯어서 모듈을 추가해야 합니다.

 

1 . Hyper – V 설치하기

 

하이퍼 V 는 윈도우에 내장된 기능으로 윈도우 10 Enterprise 버전 이상만 사용이 가능합니다. Home 버전에서는 사용이 불가능합니다.

 

아래처럼 제어판 -> 프로그램 및 기능 -> 윈도우 기능 사용 / 사용안함 으로 이동합니다.

 

 

아래처럼 Hyper – V 란을 모두 체크하고 확인을 누릅니다.

 

그러면 윈도우 기능 변경중 이라는 알림이 뜨고 재시작을 한번 해 주면 정상적으로 설치가 완료된 것입니다.

 

 

그럼 제어판 – 관리도구 로 이동해 보면 Hyper – V 관리자가 추가되어 있을 껍니다.

 

 

2 . Hyper – V 기본설정 하기

설치가 완료되었으면 Hyper – V 관리자 아이콘을 밖으로 빼거나 하셔서 사용하시면 됩니다. 일단 관리자를 들어가 보면 아래와 같이 생겼습니다.

 

 

서버에 연결 버튼을 눌러서 로컬 컴퓨터를 선택하고 확인을 누릅니다. 그럼 로컬 하이퍼 V 에 연결이 됩니다.

연결이 되면 아래와 같이 화면이 뜨게 됩니다. (사용중에 가이드를 작성해서 이미 가상머신이 구동중입니다.)

 

 

먼저 오른쪽의 Hyper – V 설정으로 이동하여 기본적인 디렉터리 설정을 해줍니다.

 

 

Hyper V 설정이 저장될 장소 및 가상 디스크 파일이 저장될 장소를 지정해 주고 고급 세션모드 정책 설정을 허용으로 바꾸어 줍니다. (바꾸어 주지 않으면 장치 패스스루가 지원되지 않습니다.)

 

 

그 다음 가상 컴퓨터에서 사용할 네트워크 스위치를 만들어 줄 차례입니다.

 

 

외부는 네이티브 윈도우의 네트워크 어댑터와 브릿지를 하는 것으로, 호스트의 IP 대역을 부여받을 수 있습니다. 서버 관리 편의를 위해서 외부로 만드시는 것이 좋습니다.

 

내부는 Hyper – V 에서 동작하고 있는 VM 간에 통신 용으로 만드는 것입니다.

(인터넷 연결 불가, 호스트 네트워크 인터넷 연결 공유 불가능 합니다.)

 

개인은 가상 NAT 을 통해 사설 아이피를 부여하고 인터넷 연결이 가능한 상태입니다.

 

서버 특성상 브릿지로 하는 것이 상위 공유기에서 포트포워딩이 쉽기 때문에 외부로 가상스위치를 만듭니다.

 

이름을 마음에 드는 것으로 설정하고 외부 네트워크를 선택한 다음 실제의 랜카드를 선택합니다. 그리고 확인을 눌러 생성합니다. 그럼 왼쪽 리스트에 만든 가상 네트워크 스위치 목록이 나타납니다.

 

 

3 . 가상 머신 생성해보기

 

테스트로 이번에 윈도우7 게스트를 설치해 보겠습니다.

 

 

작업 탭에서 새로만들기 -> 가상컴퓨터 를 선택합니다. 그럼 아래와 같은 창이 뜹니다.

 

 

이름을 지정하고 가상머신 프로파일이 저장될 위치도 필요하면 변경할 수 있습니다.

 

 

세대설정을 합니다. 정확히는 세대 설정에 관해서 이해를 하지 못했습니다. 세대설정을 처음에는 무조껀 2세대로 하고 가상머신을 작동해 보았는데 정상적으로 부팅이 되지 않으면 삭제하고 1세대로 새로 만들고 시도하고 있습니다.

 

윈도우 7은 1세대로 해야 부팅이 가능합니다.

 

 

 

 

가상머신에 할당할 메모리 용량을 선택합니다. 이때 조금 신기한 기능이 있는데 메모리 동적할당 기능이 있습니다.

 

메모리 동적할당 기능은 게스트 운영체제가 윈도우 일때만 사용하라고 되어 있습니다. 실제로 제가 리눅스호스트에 적용을 해 보았는데 2일 정도 구동시 메모리 8GB 가 모두 꽉차버리는 문제가 발생했습니다.

 

윈도우 게스트가 아니면 동적 메모리 할당은 꺼주시길 바랍니다.

 

이번에 설치하는 운영체제는 윈도우7 임으로 동적메모리 할당을 켜고 진행하겠습니다.

 

 

2번 과정에서 만든 가상 스위치를 선택해 줍니다.

 

 

 

다음은 가상 디스크를 설정하는 부분입니다. 새로 생성하고 위치를 변경할 수도 있습니다.

 

 

부팅 설정을 하는 부분입니다.

 

PXE 부팅도 가능하고 ISO 이미지로 부팅도 가능합니다.

 

 

가상컴퓨터 생성이 완료 되었습니다.

 

 

 

 

 

 

 

 

4 . 가상머신 설정하기 

 

실행하기 전에 가상머신을 설정해 보겠습니다.

 

 

 

가상메모리 에 대해 설정을 조금 해 줍니다.

 

최대 한계 메모리 설정을 합니다.

 

 

CPU 코어 사용갯수와 사용률을 제한할 수도 있습니다.

 

 

실제 하드디스크를 연결할 수도 있는데 실제 하드디스크를 연결하기 위해서는 해당 디스크가 오프라인 상태여야 합니다.

 

제어판 -> 관리도구 -> 컴퓨터 관리 -> 디스크 관리

 

로 이동하시면 설정이 가능합니다.

 

 

 

 

 

 

 

 

5 . 가상머신 실행하기

 

가상머신 리스트에서 오른쪽을 누르고 시작을 누릅니다.

 

 

 

정상적으로 실행이 됩니다.

(위 윈도우7 설치 이미지는 레마즈 님이 만드신 것으로 설치화면은 윈도우8 입니다.)

 

 

덤으로 동적 메모리 할당 때문에 유동적으로 메모리 할당량이 바뀝니다.

 

 

감사합니다.

Hyper V 전체 화면으로 확대 하기 
Windows

Hyper V 전체 화면으로 확대 하기 

Click the link to read the original article: Here

===================================

Hyper V 전체 화면으로 확대 하기 

윈도우 10 하이퍼 v는 무료이고 여러모로 쓰임새가 많은데 해상도 문제 때문에 풀스크린이 지원돼지 않는다. 이게 은근히 불편한데 모니터를 여러 개 쓰는 사람들은 페러럴즈 처럼 한쪽 모니터에 다른 운영체제를 뛰워놓고 모니터 마다 할당하고 싶은데 이게 안된다. 이번 포스트에서는 윈도우 리모트 데스크탑을 통해 편법으로 풀스크린으로 사용하는 방법을 소개한다.

하이퍼v 설치 방법은 여기를 클릭 (하이퍼 v 설치 방법)

 

  1. 공유기 접속번호

    일단 리모트 데스크탑으로 내 컴퓨터에서 가상 컴퓨터로 접속을 할려면 공유기가 있어야 한다. 그리고 모든 공유기 마다 접속번호가 있는데 회사 마다 틀리다. 내가 동영상에서 보여주는 포트는 192.168.1.1이고 LG 제품은 192.168.219.1 이라고 네이버가 말하는데 회사마다 틀리므로 각자 알아내야 한다. 그리고 공유기에 접속하면 비밀 번호를 물어보는데 거의 모든 초기값은 admin아이디에 admin비밀 번호이다.

     

  2. DHCP 고정 (DHCP Reservation)

    아. 이게 한국말로 머라는지 정확하게 모르겠다. 그렇지만 공유기에 접속한 컴퓨터의 가상 IP는 항상 바뀌는데 그걸 특정 아이피로 고정 시켜 주는 역할을 하고 모든 공유기에 있는 기능이니 스스로 찾아야 한다. 하이퍼 V를 구동하고 가상 머신으로 인터넷으로 접속한 상태에서 여기 DHCP 고정 화면에 들어가 보면 내 하이퍼 V가 어떤 라우터 IP를 할당 받아서 쓰고 있는지 나온다. (가상머신 안에서 확인하는 방법도 있는데 여기서 확인하면 한번에 끝나니 더 편함)

    지금 윈도우 7 가상 머신이 192.168.1.108을 할당 받았다

    이걸 반드시 고정 값으로 변경시켜야지 한번 설정으로 앞으로도 계속 같은 아이피 값으로 사용할수 있다.

     

  3. 라우터의 포트 포워딩을 바꿔주자

    리모트 데스크탑이 사용하는 프로토콜은 3389로 기본 값이다. 이걸 잘 모른다면 걍 리모트 데스크탑은 3389라는 번호를 가지고 왔다갔다 한다고 이해하면 된다. 그런데 이 값이 겹치면 안된다. 내 본체 컴퓨터는 3389를 이미 사용하고 있고 접속할려는 컴퓨터는 같은 wifi공간 안이다. 그렇다면 다른 포트를 써줘야 한다. Hyper V에 할당 된 IP 주소를 외워서 포트 포워딩으로 가자. 모든 공유기 마다 있는기능이다. 거기서 내 공유기에 할당된 아이피 어드레스를 치고 외부포트는 3390, 내부포트는 3389로 할당하고 (좌측그림참조, 우측사진은 IP타임 예제임) 동작시켜준다. 이것만 하면 모든 설정은 끝이다.

     

    리모트 데스크탑은 윈도우를 설치했다면 같이 깔리는 프로그램으로 따로 다운 받을 필요가 없습니다. 해당 동영상이 부적절하다고 판단되어 유튜브에서 삭제되었네요. 황당해서 이의 제의를 해놓은 상태이고 같은 비디오는 공지사항에 가시면 제 드랍박스 계정으로 링크 걸어놨습니다.

하이퍼-V (Hyper-V) 개념
Windows

하이퍼-V (Hyper-V) 개념

Click the link to read the original article: Here

====================================

하이퍼-V 란 무엇 인가

페러럴즈를 들어 보셨나요? 내가 맥을 사용할때 윈도우 프로그램을 돌리기 위해 썼던 가상 머신이다. 물론 부트캠프라는 OS X에서 지원하는 방법으로 듀얼 부팅 식으로 윈도우를 돌릴수도 있지만 다시 껐다가 켜야 하는 불편함 때문에 페러럴즈라는 상용 프로그램을 사서 사용하고있었다. 쉽게 말해서 컴퓨터안에 다른 가상의 컴퓨터 공간을 만들어 여러개의 운영체제를 둘다 동시에 사용할수있게 해준다. 윈도우 8을 실패작이라고들 하는데 난 이 하이퍼 V 기능 하나때문에라도 아주 유용하게 사용하고 있었다. VM Ware나 다른 가상 머신들이 수백달러를 넘는데 윈도우 8 프로 에서는 무료로 제공한다.

페러럴즈: 맥용 가상머신이다

듀얼모니터를 스크린샷 한것인데 좌측은 윈도우 7, 우측은 윈도우 10이다.

 

  1. 활용도

    아주 예전부터 오피스 프로그램에 대한 블로그를 운영 해볼까 고민하다가 한글판 오피스 시리얼 넘버도 없고 해적판을 구하기는 싫어서 미루고 있었다. 그러다가 학교에서 오피스 365로 바꾸자 마자 내 머릿속에는 여러가지 응용 상황들이 그려졌다. 오피스 365는 구독 형식이라 언어별로 시리얼 넘버가 있는게 아니라 구독하고 있으면 어떤 언어든지 지원한다. 윈도우 8부터는 다중 언어 지원이 되지만 윈도우 7은 얼티밋(Ultimate) 버전 부터 한글을 깔수있으므로 한국 블러그를 운영할수있겠다는 생각이 들어서 한번 시도 해봤더니 그리 어렵지 않았다. 이렇게 하여서 난 데스크탑에 윈도우 10, 영문 오피스 2016, 윈도우 7, 한글 오피스 2016을 모두 설치했다.

    윈도우 7 설치과정

    윈도우 10에 Hyper V로 윈도우 얼티밋을 설치한후 오피스 365로 워드 2016을 설치함

  2. 단점

    해상도가 떨어지고 3D 카드를 지원하지 않는다. 여러가지 단점들이 많지만 일반적으로 사용하기에 느끼는 단점은 이 것뿐이고 한가지 더 더하자면 Hyper-V 는 풀 스크린(Full Screen)을 지원하지 않는다. 그러나 첫번째 사진에서 보듯이 리모트 데스크탑으로 가상머신을 렌으로 접속하면 풀스크린으로 볼수있고 여러 작업하는데는 전혀 지장이없다.

    리모트 데스크탑으로 가상 머신을 접속하면 풀스크린으로 볼수있다

    와이파이를 사용한다면 공유기에서 가상머신 아이피 주소를 읽을수있는데 그걸로 접속하면 된다.

  3. Hyper-V 사용요건

    윈도우즈 10 Pro 이상이 되어야 지원하고 또한 메인보드가 가상머신을 지원해야하는데 요즘 나오는 신형 메인보드들은 모두 지원하니 그것은 걱정 안해도 될것같다.

    다음에 하이퍼V 설치 방법에 대해서 자세히 포스팅 하도록 하겠습니다. 제가 조교를 할때 학생들이윈도우 XP 를 써야하는 경우가 있어서 하이퍼 V 로 윈도우 8에 XP설치를 가르친적 있는데 첨부파일로붙여드립니다.영어로 되어있지만 그리 어렵지 않아요. 유투브로 자세한 방법 올려 드리겠습니다.

2015/10/15 – [윈도우 Tip/필수 스킬강좌] – 윈도우 10 하이퍼 (Hyper v) 사용 방법

2015/10/19 – [윈도우 Tip/필수 스킬강좌] – 윈도우10 하이퍼 v (Hyper v) 풀스크린 (full screen) 보기

10분만에 JASON API 개발하기
APIs

10분만에 JASON API 개발하기

Click the link to read the original article: Here

==================================

10분만에 JSON API 개발하기

AXBoot Framework를 사용해서 JSON API를 10분 만에 만드는 방법을 소개합니다 (사실 10분 조금 더 걸릴수도있…)

준비물

요즘..다들 이정도는 설치되어 계시잖아요.. 그죠..?ㅋㅋ (아니시라면 얼른 설치해주세요!)

1. AXBoot Initialzr에 접속해서 프로젝트를 생성합니다

2. Generate Project 버튼을 클릭하여 소스코드를 내려받고, 압축을 해제합니다.

3. Eclipse 혹은 IntelliJ IDEA를 통해 소스코드를 열어주세요

저는 IntelliJ IDEA에서 소스코드를 열었습니다.

4. AXBoot UI Framework 설치를 위해 터미널에서 npm install 명령을 실행합니다.

5. mvn spring-boot:run 명령으로 서버를 시작합니다.

6. 브라우저에서 http://localhost:8080으로 접속을 하면 AXBoot에서 제공하는 내장 관리시스템 설치 페이지로 이동됩니다. 스키마 및 초기데이터 생성하기 버튼을 눌러서 설치를 진행합니다.

7. 설치가 완료된 후 system/1234 계정으로 로그인하면 다음과 같은 AXBoot 내장 관리 시스템이 실행됩니다.

8. 우측 상단에 있는 개발자도구를 클릭하면 AXBoot 개발자 도구로 이동합니다.

개발자 도구에는 API를 테스트 할 수 있는 Swagger와 내장 H2 데이터베이스에 접속할 수 있는 웹 콘솔, API 코드를 자동으로 생성해주는 CRUD 스캐폴딩 툴인 ModelExtractor가 제공됩니다.

9. 테이블을 생성

API에서 사용할 테이블을 생성합니다. 저는 고객정보를 저장하는 customers라는 테이블을 생성했습니다. H2-Console로 이동하여 데이터베이스 정보를 입력합니다. 데이터베이스 정보는 axboot-local.properties에서 확인할 수 있습니다.

저는 다음과 같이 접속 정보를 입력했습니다.

customers라는 테이블을 다음과 같이 생성했습니다.

10. API 코드 생성하기

ModelExtractor 탭으로 이동하여 왼쪽에서 CUSTOMERS 테이블을 선택하여 테이블 정보를 확인합니다.

11. 테이블 이름(CUSTOMERS)을 클릭하면 다음과 같은 코드 생성화면으로 이동합니다.

API 구성에 필요한 Controller, Entity, Service, Repository등의 기본적인 코드를 데이터베이스 테이블 정보를 기반으로 자동생성합니다.

Generated Code 우측에 있는 MakeAll 버튼을 클릭한 후 패키지와 클래스 정보를 입력합니다.

저는 customers, Customer로 입력했습니다.

ok 버튼을 클릭하면 컨트롤러와 도메인 패키지에 자동으로 클래스가 생성됩니다. (코드가 보이지 않으시면 새로고침을 해보세요!)

이제 서버를 재기동한 후 Swagger에서 API를 테스트 해보겠습니다.

Ctrl + C (Command + C)로 서버를 중지하고, mvn spring-boot:run명령으로 서버를 다시 시작합니다.

12. Swagger에서 API 테스트 해보기

개발자도구의 Swagger에 가보면, 이제 Customer API가 추가되었습니다.

PUT API를 통해 데이터를 저장하고, GET API를 통해서 조회를 할 수 있습니다.

위와 같이 JSON을 입력하고, 하단의 Try it out!을 클릭하면, 정상처리 되었다는 응답을 볼 수 있습니다.

이제 GET API의 Try it out!을 누르면 다음과 같은 JSON 응답을 받을 수 있습니다.

참~쉽죠잉!

AXBoot를 사용하면 이렇게 쉽고 빠르게 JSON API를 만들수 있습니다!

다음편에는 GET API에 파라미터를 추가하고 조회 조건에 따라 데이터를 조회하는 JPA+QueryDSL 예제를 살펴보겠습니다

도움이 되셨다면 Github Star 꼭 부탁드려요

Star

Star

API Types and Information
APIs

API Types and Information

Click the link to read the original article: Here
==================================
네이트

개발자센터 : http://devsquare.nate.com/

개발블로그 : http://club.cyworld.com/devsquare
네이버 앱 팩토리 : http://appfactory.naver.com/

네이버

개발자센터 : http://dev.naver.com/

다음

다음DNA 개발자네트워크 오픈API : http://dna.daum.net/apis/


Google

Google Ajax 라이브러리 API : http://code.google.com/intl/ko/apis/ajaxlibs/

야후

(외국) Developer netowrk :  http://developer.yahoo.com/

트위터

판도라TV OPEN API : http://interface.pandora.tv/

YouTube 개발자 PI : http://www.youtube.com/dev

이글루스 API : http://apicenter.egloos.com/
티스토리 API : http://www.tistory.com/developer/oauth.php

기타

한RSS API : 

Maniadb : 

이글루스 API : http://help.egloos.com/2922

(외국) Blogger.com : 

 KT(전화) OPEN API 

KISTI 학술정보 API : http://nos.ndsl.kr/

참고자료
오픈API 인증원리 http://hopangbear.tistory.com/133
“5G 스마트폰 상용화 앞당긴다” 삼성, 엑시노스 모뎀 5100 공개
Cellular Telecommunications

“5G 스마트폰 상용화 앞당긴다” 삼성, 엑시노스 모뎀 5100 공개

Click the link to read the original article: Here

=====================================

삼성전자, 업계 최초 5G 표준 멀티모드 모뎀 개발

[키뉴스 백연식 기자] 삼성전자가 우리나라의 5G 세계 첫 상용화에 발을 맞추고 나섰다. 차세대 통신 칩 개발을 통해 5G 상용화를 앞당길 것으로 전망된다.

삼성전자가 업계 최초로 5세대 이동통신 표준(5G NR 릴리즈-15)을 적용한 멀티모드 통신 칩 ‘엑시노스 모뎀 5100’을 공개했다. 삼성전자는 15일 ‘엑시노스 모뎀 5100’을 탑재한 단말기의 OTA(Over The Air) 송수신 시험에 성공함으로써 5G 이동통신 상용화를 위한 모뎀 핵심 기술을 확보했다고 밝혔다.

OTA 시험은 기지국과 단말기 간의 무선 통신을 확인하는 테스트로, 이번 시험은 ‘엑시노스 모뎀 5100’을 탑재한 개발용 단말기와 5G NR 기지국(3.5GHz 대역)을 활용해 진행됐다.

삼성전자의 이번 송수신 시험 성공으로 ‘엑시노스 모뎀 5100’을 탑재한 5G 모바일 기기의 상용화 시기가 한층 앞당겨질 것으로 전망된다.

삼성전자의 차세대 통신 칩 ‘엑시노스 모뎀 5100’
‘엑시노스 모뎀 5100’은 하나의 칩으로 5G뿐 아니라 각 세대별 이동통신 규격(GSM/CDMA, WCDMA/TD-SCDMA/HSPA, LTE 등)까지 지원하는 ‘멀티모드’ 방식으로 보다 안정적이고 효율적인 데이터 통신이 가능한 제품이다.

특히 5G 통신환경인 6GHz 이하 주파수 대역에서 기존 4G 제품보다 1.7배 빠른 최대 2Gbps의 데이터 통신속도를 지원하며, 초고주파 대역(mmWave, 밀리미터파)에서도 5배 빠른 6Gbps의 다운로드 속도를 지원한다.

6Gbps는 FHD 고화질 영화(3.7GB)를 5초 만에 다운로드할 수 있는 속도로, 소비자들은 향상된 모뎀 성능을 통해 초고화질 영상이나 가상현실(VR), 홀로그램, 자율 주행 등 대용량 무선인터넷 서비스를 원활하게 이용할 수 있다.

또한 이번 제품은 4G 통신환경에서도 1.6Gbps의 속도를 지원해 한층 빠르고 안정적인 데이터 통신이 가능하며, 2세대 10나노 첨단 공정이 적용되어 소비전력도 절감됐다.

삼성전자 시스템LSI사업부 강인엽 사장은 “시장에서 검증된 삼성전자만의 4G 통신 기술을 기반으로 업계 최초로 5G 국제 표준에 부합하는 ‘엑시노스 모뎀 5100’을 개발했다”며, “사물인터넷, 오토모티브 등 산업 전분야로 확장될 5G 시장에서도 지속적으로 기술을 선도해 나갈 것”이라고 밝혔다.

한편 삼성전자는 지난 7월 3.5GHz 5G NR 기지국을 공개한 데 이어 업계 최초로 국제 표준을 만족하는 5G 모뎀을 개발함으로써 5G 이동통신 시장에서의 기술 리더십을 확보했다. 삼성전자는 올해 말부터 ‘엑시노스 모뎀 5100’과 함께 모뎀을 구동하는데 필요한 다양한 반도체 솔루션(RFIC, ET, PMIC 등)을 공급해 나갈 계획이다.

Tag#5G#5G상용화#엑시노스5100#엑시노스모뎀5100#데이터통신#삼성전자#5G통신장비
백연식 기자 ybaek@kinews.net
저작권자 © 온라인 디지털 경제미디어 키뉴스(KINEWS) 무단전재 및 재배포 금지

출처 : 온라인 디지털 경제미디어 키뉴스(KINEWS)(http://www.kinews.net)

5G를 위한 새로운 DBMS, ‘NewSQL DBMS’가 온다
Cellular Telecommunications

5G를 위한 새로운 DBMS, ‘NewSQL DBMS’가 온다

Click the link to read the original article: Here

=======================================

과거 클라이언트/서버 환경에서 DBMS 선택 기준의 최우선 순위는 ‘안정성’이었다. DBMS가 피크 타임에 처리해야 하는 데이터양이 예측 가능한 경우도 많았고, 고속 데이터 처리가 모든 업무에 필요하지 않았기 때문이다. ‘모바일 퍼스트’ 시대로 진입한 이후에도 선택 기준은 변함없이 안정성이 최우선이었지만, 성능과 확장성도 이에 못지 않은 선택 기준으로 자리잡게 된 건 네트워크 기술의 발전과 데이터 폭증에 힘입은 결과다.

내년 3월 5G가 상용화되면, 지금까지 경험하지 못했던 네트워크 발전과 데이터 폭증이 예상된다. ‘91%’에 달하는 세계 최고 수준의 국내 스마트폰 보급률과 5G 네트워크의 결합으로 발생할 어마어마한 데이터가 5G를 통해 중앙 서버와 통신하며 실시간으로 왕래할 것이기에 DBMS에 요구되는 성능과 확장성은 더욱 중요해질 것이다.

최근 5G를 고려한 신규 시스템 구축을 준비 중인 기업들이 RDBMS로 처리할 수 없는 대용량 데이터 저장 및 관리 목적으로 ‘NewSQL DBMS’를 검토하고 있다는 사실이 이를 방증한다. 첫 등장부터 실제 도입에 이르기까지 상당한 시간이 필요했던 스케일 업 방식의 어플라이언스나 NoSQL 기반 DBMS와 비슷할 것이라는 예상을 뒤엎고 NewSQL DBMS는 기업에 빨리 정착했다.

NewSQL DBMS가 빠르게 확산되는 이유는 대용량 데이터 처리를 위해 DBMS가 갖춰야 할 조건들, 즉 SQL의 친숙함과 안정성, NoSQL의 성능과 확장성 등을 모두 갖췄기 때문이다. 이번 연재를 통해 NewSQL DBMS가 5G 시대에 필요한 대용량 데이터 저장 및 관리의 진정한 해결책이 될 수 있을 지 살펴보자. 우선 이번 기고에서는 5G 시대가 가져올 변화와 함께 성능과 확장성 보장을 위해 DBMS 업계에 등장했던 솔루션들의 장단점을 설명한다.

내년 3월, 5G 주도 ‘초고속·초연결·초저지연’ 시대 개막
내년 3월 통신 3사가 동시에 5G 상용화에 들어간다. 무선으로 데이터를 소비한다는 점에서 기존 4G와 크게 다르지 않지만, 데이터 전송 속도와 처리량 측면에서 큰 성능 차이가 있다. 5G는 4G 대비 최대 전송 속도 측면에서는 20배 이상, 실시간 처리 가능한 데이터 용량은 100배 이상이다. 지연 속도도 1/10 수준이고, 10배 많은 기기의 동시 접속도 가능하다((표 1) 참조).

표 1. 4G와 5G의 핵심 성능 비교 (출처. 미래창조과학부)

1990년대 1세대 아날로그 방식을 시작으로 현재 4세대 LTE에 이르는 이동통신의 기술 발전은 무선으로 데이터를 소비하는 모바일 시장을 창출하고 산업 구조와 삶의 방식을 크게 변화시켰다. 그 변화를 체험한 이들이라면 처리 성능과 전송량 측면에서 엄청난 파괴력을 지닌 5G가 가져다 줄 생활의 변화를 어렴풋이나마 짐작할 수 있다.

사용자가 체감할 수 있는 즉각적인 변화를 예로 들면 ‘군중 속의 버퍼링’ 같은 것이다. 많은 사람이 모인 장소에서 무선 인터넷으로 동영상 콘텐츠를 시청할 때 누구나 한 번쯤 겪어 봤음직한 버퍼링은 5G 시대에는 존재할 수 없다. 언제, 어디서든, 접속 기기의 많고 적음에 상관없이 초고화질 영상 콘텐츠를 끊김없이 시청하고, HD/4K/8K 고화질 동영상 업로드와 전송도 몇 초면 가능케 하는 것이 바로 5G다.

연초에 있었던 평창올림픽 역시 초고속·초연결·초저지연의 5G를 미리 체험할 수 있었던 좋은 기회였다. 봅슬레이 전방 카메라로 촬영한 영상은 TV 앞 시청자들이 선수와 똑같은 시선과 속도감으로 경기를 즐길 수 있게 해줬고, 다양한 각도에서 촬영한 피겨 스케이터의 회전을 한 화면에서 모두 보여줌으로써 시청자는 모든 순간을 한눈에 볼 수 있었다. 자율주행을 선보인 45인승 대형 버스, 올림픽 개폐회식을 수놓은 드론쇼 등을 통해 향후 5G가 어떻게 활용돼 우리 생활을 변화시킬지 가늠할 수 있었다.

융복합 생태계 구축의 핵심 인프라 기술 ‘5G’ 
5G가 특히 주목받는 건 통신용 단말기를 넘어 자동차, 금융, 제조업, 농축수산업, 유통, 에너지, 미디어, 엔터테인먼트 등 인간이 만들어온 모든 분야에서 주변 사물 모두가 단말기가 돼 데이터를 주고받는 ‘초연결 사회’를 가능케 하는 기술이라는 점 때문이다. 5G가 통신업체만을 위한 기술이 아닌 콘텐츠, 플랫폼, 네트워크, 디바이스가 융복합된 생태계를 구축하는 핵심 인프라 기술이라는데 업계의 중론이 모이는 이유이기도 하다.

KT경제경영연구소가 최근 발표한 <5G의 사회경제적 파급효과 분석> 보고서를 보면, 5G의 경제적인 가치를 예상 수치로 확인할 수 있다. 이 보고서에 따르면, 5G의 경제적 가치는 자동차 제조 유통 금융 등 전 산업과 사회적 기반에 대해 2025년에 최소 30조 3,235억 원, 2030년에는 최소 47조 7,527억 원에 달할 것이다. 이런 수치는 해당 연도의 예상 국내총생산(GDP)의 약 2% 수준으로, 새로 나타날 서비스를 고려하면 더 큰 사회경제적 효과가 있을 것으로 내다봤다.

그림 1. 5G의 사회경제적 파급효과 분석 (출처. KT경제경영연구소)

5G의 경제적 가치는 5G를 통해 오가는 데이터 양에 따라 편차가 클 것으로 보인다. 최신의 고속도로가 개통되어도 오가는 차량이 많지 않으면, 수용 능력을 제대로 파악하기 어려운 것과 같은 맥락이다. 단말기의 가장 높은 비중을 차지하는 휴대폰 사용자 수도 더욱 늘어나 데이터 폭증에 힘을 보탤 것으로 예상된다.

이동세계이동통신사업자협회(GSMA)가 발표한 최근 보고서인 <모바일 경제(The Mobile Economy)>에 따르면, 2020년까지 휴대폰 사용자도 57억 명으로, 이는 2020년 세계 인구 78억 명의 약 80%에 달하는 수치다. 또한 씨게이트가 의뢰해 발표한 IDC 백서 <데이터시대 2025(DataAGE 2025)>에 따르면, 2025년 데이터 규모는 2017년 대비 10배 이상 늘어난 163ZB(제타바이트)에 이를 것이라는 전망이다.

5G를 위한 데이터 처리 방안 모색 중인 DBMS 업계 
웹/앱 아키텍처의 발달, 각종 SNS 서비스의 유행, 동영상 생산과 소비의 증대 등 모바일 퍼스트 시대로 접어들며 중요해진 DBMS의 성능과 확장성 이슈는 5G를 만나 더욱 심화했다는 것이 현재 DBMS 업계가 처한 현주소다.

현재의 SQL 기반 DBMS는 안정성을 강점으로 앞세워 반세기 가까이 전 세계 기업들의 선택을 받아왔다. 달리 해석하면, 대용량 데이터를 실시간으로 처리하는 현재의 환경을 수용하기에는 너무 오래된 아키텍처라는 말로도 해석할 수 있다. 성능과 확장성을 위해 다양한 기능들도 추가돼 왔지만, 실제 효과에 대해서는 의문을 제기하는 이가 많다.

RDBMS의 동작 과정을 살펴보면, 대용량 데이터 처리 성능이 떨어질 수밖에 없는 구조라는 지적이다. 일반적으로 RDBMS는 데이터를 행(Row) 중심으로 저장하며, 저장된 데이터는 일정한 크기의 데이터 블록으로 묶여 하드디스크에 저장된다. 데이터베이스 시스템이 하드디스크에서 데이터를 읽으면 메인 메모리에 있는 캐시인 버퍼풀(buffer pool)에 저장하고, 멀티스레드와 관련된 오류 방지를 위해 레코드 레벨 잠금(record level lock)를 이용한다. 또한 인덱스 구현에는 비트리(B-tree)를, 질의문 작성에는 SQL을, 최적의 성능 구현을 위해 내부적으로 쿼리 옵티마이저(query optimizer)를 이용한다.

RDBMS의 시초인 인그레스(Ingres)를 개발한 스톤 브레이커 MIT 교수는 어느 한 방송에서 RDBMS가 가장 핵심적인 동작인 데이터 레코드를 찾아 ‘읽고 쓰는데’ 소모하는 시간은 10%인데 반해 메모리에서 버퍼풀을 관리하거나 멀티스레딩과 관련된 동작을 제어하는데 90%의 시간을 할애하는 구조여서 RDBMS 성능 저하가 발생할 수밖에 없다고 지적한 바 있다. 데이터 크기가 커질수록 성능은 느려질 수밖에 없는 태생적 한계를 극복하는 새로운 솔루션의 출현은 필연적이었다.

해결책 1. 스케일 업 방식의 어플라이언스 
점차 중요성이 커지는 성능과 확장성 이슈에 대해 RDBMS 업계에서 내놓은 대응책은 장비에 RDBMS를 탑재한 스케일 업(Scale up) 방식의 어플라이언스였다. 스케일 업은 서버 내 CPU와 RAM를 추가하는 방식으로 하드웨어 자체를 증강시킴으로써 처리 능력을 향상하는 것이다.

일정 수준까지 성능 확장이 가능하지만, 그 이상의 성능 향상은 기대하기 어렵다. 또한 단일 서버에 부하가 집중되므로, 장애 발생 시 위험성이 매우 크다는 단점도 있다. 특히 초기 도입 시 높은 사양의 하드웨어 비용 부담 역시 고객의 몫이어서 크게 확산되지는 못했다.


그림 2. 스케일 업 vs 스케일 아웃의 개념 및 장단점 비교 분석 (출처. 선재소프트) 

해결책 2. 트랜잭션 대신 뛰어난 확장성을 제공하는 NoSQL 
NoSQL은 비 RDBMS 진영에서 찾은 해결책이다. NoSQL은 Not Only SQL의 약자로, 초대용량 데이터 처리 등 성능에 특화된 목적 달성을 위해 전통적인 RDBMS의 본질을 규정하는 핵심 기능인 ACID(Atomicity, Consistency, Isolation, Durability) 트랜잭션을 과감하게 포기하고, 비관계형 데이터 저장소에 비구조적인 데이터를 저장하는 분산 저장 시스템이다.

1998년 발표됐을 당시에는 큰 반향을 얻지 못하다가, 2000년 중반 SNS의 급속한 발전에 힘입어 재조명받기 시작했다. 트위터, 페이스북 등 SNS 기업들이 대용량 데이터의 동시 처리 용도로 채택하면서 관련 산업계의 큰 호응을 얻게 됐다. 현존하는 150여 개 제품 중 실제 사용자층을 확보하고 꾸준한 기술지원과 관리를 제공하는 제품은 몽고DB, 카산드라(Cassandra), H베이스(Hbase), 카우치DB(CouchDB) 등 10개 내외인 것으로 알려져 있다.

NoSQL DBMS는 ▲키 밸류 방식(Key-Value Database) ▲도큐먼트 방식(Document Database) ▲빅 테이블 방식(Big Table Database) ▲그래프 방식(Graph Database) 4가지로 구분한다. 기술적 혁신에 의한 분류라기보다는 트랜잭션 처리 기능을 제외하고 과거 등장했던 ISAM, 네트워크형 DBMS, XML DBMS, 컬럼 스토어 DBMS 등에서 아이디어를 차용해 특정 서비스에 최적화된 데이터 처리 플랫폼의 역할 수행을 목적으로 탄생했다는 견해가 지배적이다.

RDBMS가 클라이언트/서버 환경에 적합한 데이터 저장 기술로서, NoSQL은 클라우드 환경에 맞는 데이터 저장 기술로 존재하면서 일정부분 교집합을 이루며 상호보완재로 작용할 가능성이 크다.

NoSQL의 가장 큰 장점은 많은 서버로의 확장, 즉 스케일 아웃(Scale Out)이 가능하다는 점이다. No SQL은 데이터 중복이 생기더라도 가급적 테이블을 쪼개지 않고 하나의 큰 테이블에 모두 담아 저장한다. 한 테이블을 여러 서버에 나누어 저장하는 샤딩(Sharding)이 가능하다. 키-밸류 방식으로 밸류 내부에 사용자가 원하는 방식으로 데이터 저장이 가능해 키 값에 따른 샤딩도 쉽다. 서비스 업데이트 주기가 짧아지고 SNS처럼 다양한 비정형 데이터 유형을 다루는 서비스가 증가하면서 이러한 데이터 유연성은 큰 장점으로 주목받고 있다.

반면 다양하고 복잡한 데이터 쿼리가 불가능하다는 점은 NoSQL의 치명적인 단점이자, RDBMS를 대체할 수 없는 가장 큰 이유이기도 하다. NoSQL은 앞서 언급한 것처럼 샤딩(sharding) 방식으로 큰 테이블을 여러 서버에 나눠 저장하는데, 폴트 톨러런스(fault tolerance, 내고장성)를 위해 데이터는 반드시 두 개 이상 서버에 저장된다.

이 때 어떤 데이터에 갱신(update)이 발생한다고 가정해 보자. RDBMS는 데이터 또는 행에 락(lock)을 걸어 읽기만 가능하게 하고 갱신은 새롭게 생성한 튜플(tuple)에 반영함으로써 데이터 일관성을 보장하는 데 반해, NoSQL은 중복으로 저장된 모든 서버에 해당 갱신이 반영되기까지는 대기 시간이 발생한다. 연결된 서버 대수가 많으면 많을수록 올드 데이터를 제공하는 서버의 수는 늘어나게 된다. 데이터 일관성도 항상 보장할 수 없다는 점도 확산을 막는 걸림돌로 작용하고 있다.

해결책 3. RDBMS와 NoSQL의 환상 조합, NewSQL 
기존의 RDBMS 진영에서 자체의 확장성과 성능의 한계를 극복하려는 흐름이 나타나기 시작했는데, NoSQL의 확장성과 성능을 보장하면서도 RDBMS의 데이터 무결성과 SQL 인터페이스를 지원하는 특성을 갖는 NewSQL이다. NewSQL의 개별적인 특성은 새로울 것이 없지만, 편의성과 안정성, 성능과 확장성을 모두 아우르는 데이터베이스의 등장이라는 점에서 새롭다는 평가다.

다만 NewSQL은 역사가 짧은 만큼, 시장에 정착되고 고도화되려면 많은 새로운 아키텍처 설계와 업계의 자구책 마련이 필요하다. 다음 회에는 NewSQL 기반 DBMS의 개요와 정의, 장단점 등과 함께 업계 동향을 간략하게 살펴볼 계획이다. editor@itworld.co.kr

원문보기:
http://www.itworld.co.kr/t/72615/%EC%84%A0%EC%9E%AC%EC%86%8C%ED%94%84%ED%8A%B8/110708?page=0,0#csidxb47c2209b5988149b1e76fb824872f0 

VoLTE Tutorial – Voice Over LTE
Cellular Telecommunications

VoLTE Tutorial – Voice Over LTE

Click the link to read the original article: Here

====================

VoLTE Tutorial- This Voice over LTE beginners guide will help you to understand the fundamentals of IP based voice communication in the 4G LTE network.

2G is a Circuit Switched (CS) network. 3G has both CS (Circuit Switched) and PS (Packet Switched) domains.

But, LTE, on the other hand, is an all-IP network. It does not have any CS domain.

LTE is great for packet data connectivity, such as the Internet. But it faces many challenges for traditional voice and SMS communication. Before LTE, mobile networks used CS domain for voice and SMS communication.

LTE 4G network uses VoLTE (Voice over LTE) as the technical solution to carry out voice calls over IP. IP stands for Internet Protocol.

To understand the topic, I divided the VoLTE tutorial into 5 small chapters.

You can skip one chapter and move to the next one. But if you are new to VoLTE, I will recommend you to read all chapters. This will help you to understand all basic concepts.

Here are the topics I am going to cover in this VoLTE tutorial.

VoLTE History and Timeline

LTE is an all-IP network. Improved data throughput was the initial motivation behind LTE development. Standardization groups proposed IMS VoLTE as the solution to support voice and SMS over LTE network.

In this chapter, we will check the background of VoLTE and the motivation behind it.

VoLTE Architecture

Long Term Evolution or LTE depends on IMS (IP Multimedia Subsystem) to deliver voice calls. This chapter provides detail information about VoLTE architecture.

We will discuss the changes in User Equipment and EPC core. To support VoLTE, LTE network also requires IMS (IP Multimedia Subsystem)

VoLTE Deployment

LTE is an all-IP based network. LTE network does not support any CS based services. To deploy voice and SMS in the beginning, operators used intermediate solutions. In this chapter, we will discuss intermediate solutions like CSFB, SVLTE, and SRVCC.

CSFB stands for CS Fallback. SVLTE stands for Simultaneous voice and LTE. SRVCC is Single Radio Voice Call Continuity.

VoLTE Call Flow and Procedures

In this chapter, we will discuss two important VoLTE call flows.

  • In the first call flow, we will discuss registration of an IMS/VoLTE UE.
  • In the second call flow, we will discuss an end-to-end SIP VoLTE voice call.

SIP Requests and Response Codes

Session Initiation Protocol deals with the request-response mechanism. Also, we will note down all SIP response codes and their description.

 Chapter #1 – VoLTE History and Timeline

 

LTE architecture
Cellular Telecommunications

LTE architecture

Click the link to read the original article: Here
===================================
LTE architecture

The infrastructure of an LTE cellular network comprises the E-UTRA/E-UTRAN air interface and the Evolved Packet Core (EPC), which includes the gateways, mobility management and subscriber databases. The air interface and packet core enable the LTE mobile user to connect to external data networks such as the Internet. In contrast to 2G and 3G networks, which separates voice and data networks, all media are transmitted as IP packets in an LTE network.

The LTE base station (Evolved Node B) connects to the EPC via the Serving Gateway (S-GW), and the EPC connects to the packet network via the Packet Data Network Gateway (PDN-GW). The Mobility Management Entity (MME) tracks the user’s movement, while the Home Subscriber Server (HSS) database provides subscriber information similar to the Home Location Register (HLR) in 3G/UMTS networks. Contrast with 2G/3G architecture. See E-UTRANLTE and cellular generations.

Encyclopedia Banner

 

LTE Equipment
All types of media flow into and out of an LTE network as IP packets. There is no circuit-switched component as in 2G/3G systems.