2015년 12월 27일 일요일

빅 데이터

빅 데이터(big data)

빅 데이터란, 기존 데이터베이스 관리도구로 데이터를 수집, 저장, 관리, 분석할 수 있는 역량을 넘어서는 대량의 정형 또는 비정형 데이터 집합 및 이러한 데이터로부터 가치를 추출하고 결과를 분석하는 기술을 의미한다.


빅 데이터의 정의

      빅 데이터는 통상적으로 사용되는 데이터 수집, 관리 및 처리 소프트웨어의
      수용 한계를 넘어서는 크그의 데이터를 말한다.
   
      빅 데이터의 사이즈는 단일 데이터 집합의 크기가 수집 테라바이트에서
      수 테라바이트에 이르며, 그 크기가 끊임없이 변화하는 것이 특징이다.

빅 데이터의 중요성

      빅 데이터는 정치, 사회, 경제, 문화, 과학 기술 등 전 영역에 걸쳐서 사회와 인류에게
      가치있는 정보를 제공할 수 있는 가능성을 제시하며 그 중요성이 부각되고 있다.


빅 데이터의 전망

      다양한 종류의 대규모 데이터에 대한 생성, 수집, 분석, 표현을 그 특징으로 하는
      빅 데이터는 다변화된 현대 사회를 더욱 정확하게 예측하여 효율적으로 작동케 하고
      개인화된 현대 사회 구성원 마다 맞춤형 정보를 제공, 관리, 분석 가능케 하며
      과거에는 불가능했던 기술을 실현시킨다.

빅 데이터의 문제점

      빅 데이터의 문제점을 바로 사생활 침해화 보안 측면에 자리하고 있다.
      빅 디에터는 수 많은 개인들의 수많은 정보의 집합이다.
      그렇기에 빅 데이터를 수집, 분석할 때에 개인들의 사적인 정보까지 수집하여
      관리하는 빅 브라더의 모습이 될 수도 있는 것이다.
      그리고 그렇게 모은 데이터가 보안 문제로 유출된다면, 이 역시 거의 모든 사람들이
      정보가 유출되는 것이기에 큰 문제가 될 수 있다.

      빅 브라더란 무엇인가?

         두문자가 소문자로 표기된 big brother은 물론 형이나 오빠를 의미하지만,
         대문자로 된 Big Brother에는 크게 두 가지 뜻이 있습니다.

         그 하나는 미국의 BBS운동에서 나온 Big Brother입니다.
         BBS운동이란, Big Brothers and Sisters Movement를 자칭하는 것으로서
         결손가정의 아이들이 비뚤어지지 않도록 자원봉사자 젊은이들이 이런 아이들의
         Big Brother 혹은 Big Sister가 되어주는 것입니다.

         또 다른 Big Brother은 '독재자'의 의미를 갖고 있습니다.
         이 때에는 주로 전체주의 국가의 절대적인 권력을 대표하는 독재자나 혹은
         정치지도층 그 자체를 가리키며, 이러한 Big Brother의 의미는
         George or well소설 '1984'에서 유래했다고 합니다.
         소설 속에 등장하는 빅 브라더는 텔레스크린을 통해 사회를 끊임없이 감시하며
         실로 가공할 만한 사생활 침해를 보여주었습니다.
       

빅 데이터 분석 기법

      빅 데이터의 분석, 활용을 위한 빅 데이터 처리 기법을 크게 분석 기술과
      표현 기술로 나눈다.

분석 기술

      대부분의 빅 데이터 분석 기술과 방법들은 기존 통계학과 전산학에서 사용되던
      데이터 마이닝, 기계 학습, 자연 언어 처리, 패턴 인식등이 해당된다.

      데이터 마이닝(data mining)이란 무엇인가?

         대규모로 저장된 데이터 안에서 체계적으로 자동적으로 통계적이나 규칙이나
         패턴을 찾아내는 것.


      기계 학습이란 무엇인가?

         머신 러닝(machine learning)이라고도 하며, 인공 지능의 한 분야로 컴퓨터가
         학습할 수 있도록 하는 알고리즘과 기술을 개발하는 분야를 말한다.
         예를 들어, 기계 학습을 통해서 수신한 이메일이 스팸인지 아닌지를 구분할 수 있다.

      자연 언어 처리란 무엇인가?

         자연어 처리라고도 하며, 인간의 발화(소리를 내어 말을 하는 현실적이 언어 행위)
         하는 언어 현상을 기계적으로 분석해서 컴퓨터가 이해할 수 있는 형태로 만드는
         자연 언어 이해 혹은 그러한 형태를 다시 인간이 이해할 수 있는 언어로 표현하는
         제반 기술을 뜻한다.


      특히 최근 소셜 미디어 등 비정형 데이터의 증가로 인해 분석 기법들 중에서
      텍스트 마이닝, 오피니언 마이닝, 소셜 네트워크 분석, 군집분석 등이 주목 받고 있다.

      텍스트 마이닝이란 무엇인가?

         비정형 데이터에 대하여 자연어 처리 기술과 문서처리 기술을 적용하여
         유용한 정보를 추출, 가공하는 것을 목적으로 하는 기술이다.

      오피니언 마이닝이란 무엇인가?

         선거 캠페인과 관련해 사회네트워크 혹은 커뮤니티, 블로그, 트위터,
         기타 온라인 사이트 등에 올라오는 대화언어를 분석하느 소프트웨어로
         네티즌이 그들에 애해 이야기 하는 댓글이나 포스팅 등을 긍정, 부정, 중립으로
         분류하여 더 객관적이고 정확하게 평판을 파악하는 기술이다.
         하기의 그림은 오피니언 마이닝을 사용한 사례이다.


      군집분석이란 무엇인가?

         각 객체(대상)의 유사성을 측정하여 유사성이 높은 대상 집단을 분류하고,
         군집에 속한 객체들의 유사성과 서로 다른 군집에 속한 객체간의 상이성을
         규명하는 통계분석방법이다.

 
      이러한 대규모의 정형/비정형 데이터를 처리하는 데 있어 가장 기본적인
      인프라로 '하둡'이 있으며, 데이터를 유연하고 더욱 빠르게 처리하기 위해
      'NoSQL'기술이 활용되기도 한다.

      하둡이란 무엇인가?

         '아파치 하둡'이라고도 하며, 대량의 자료를 처리하는 데 있어서
         분산 응용 프로그램을 지원하는 프리웨어 자바 소프트웨어 프레임워크이다.
         대량의 데이터를 처리할 수 있는 어플리케이션을 쉽게 제작하고 운영하도록 도와줌.

      NoSQL이란 무엇인가?

         전통적인 관계형 데이터베이스 보다 덜 제한적인 일관성 모델을 이용하는
         데이터의 저장 및 검색을 위한 메커니즘을 제공한다.
         NoSQL 데이터베이스는 단순 검색 및 추가 작업을 위한 매우 최적화된
         키 값 저장 공간이다.



표현 기술

      빅 데이터 분석 기술을 통해 분석된 데이터의 의미와 가치를 시각적으로
      표현하기 위한 기술로 대표적인 것으로는 R(프로그래밍 언어)이 있다.


2015년 12월 20일 일요일

Laravel 설치하기

윈도우 라라벨 설치하기

Laravel

Laravel이란, 웹 어플리케이션 프레임워크이다.


현재 가장 인기가 많은 웹 어플리케이션 프레임워크이다.

그럼, 이제부터 개발환경을 구축해보자.

Apache, MariaDB, PHP를 한번에 설치해주는 XAMPP를 다운로드 한다.


자신의 PC의 OS에 맞게 다운로드 한다.

설치를 다 했다면, Composer를 다운로드 한다.


그림에 있는 url로 접근하여, composer-Setup.exe를 다운 받는다.

설치가 다 되면 cmd창을 켜서 echo %PATH%를 입력한다.


composer이 다운로드 되어있는 경로가 PATH로 설정되어 있는지 확인하고,

만약 되어 있지 않으면 설정해준다.

composer이 다운로드 되어있는 경로로 이동하여,

php -r "readfile('https://getcomposer.org/installer');" | php를 입력한다.

입력하고 난 뒤, composer.bat을 생성하는 명렁어를 입력한다.

echo @php "%~dp0composer.phar" %*>composer.bat

composer이 정상적으로 설치되었는지 확인해보자.

composer -V

이제 Laravel을 설치해보자.

Git을 이용하여 Laravel 5.1을 다운 받는다.

https://github.com/laravel/laravel/archive/v5.1.0.zip

Laravel이 설치된 곳으로 이동하여

composer install하면 1분 ~ 2분 정도의 시간이 걸린 후... 설치가 완료 될 것이다!

설치하는 데에 주말을 투자했지만... 오늘 아침에 얼떨결에 성공했다...

***Laravel 실행법***

php artisan serve


***Laravel 5.1 실행파일 접근 시 오류***

실제로 laravel의 public에 접근을 하면 whoops looks like something went wrong. laravel
라고 하는 구문이 나올 것이다...

5.1버전의 버그사항(?) 이라고 하는 데, 이를 해결하기 위해선

config/app.php파일을 수정해야 한다.

16번 라인 'debug' => env('APP_DEBUG') 을 'debug' => true

83번 라인 'cipher' => 'AES-256-CBC' 를 'cipher' => 'AES-128-CBC' 으로 수정한다.

그러면, 이와 같이 정상적으로 실행되는 것을 확인할 수 있다.




2015년 12월 15일 화요일

GitHub 초간단 사용법

깃허브(GitHub)

깃허브란, 버전관리 시스템인 Git을 이용하는 프로젝트들을 위한
             원격저장소를 제공하는 서비스


여기서 버전관리란, 예를 들어 'test.txt'파일에 '123'이라는 텍스트를 저장했다.
                          그리고 'test.txt'파일에 '321'이라는 텍스트를 추가하고 저장하면,
                          'test2.txt'파일에 '123321'이라는 텍스를 저장해서
                          버전별로 파일을 나눠 관리하는 것을 의미

Git이란, 버전관리 시스템 중 하나이다.

깃허브를 사용하기 위해선, 깃을 먼저 설치해야 한다.

깃은 www.git-scm.com 에서 다운로드 할 수 있다.


깃을 다운 받았으면, 이제 GitHub.com 에 가입을 해야한다.

다른 소셜 네트워크에 가입하는 것처럼 간단하다.

가입을 했으면, 이제 실제로 한번 작업을 해보자.

Git Bash라는 파일이 설치되어 있을 것이다.

이 파일을 실행한다.

위 그림과 같이, cmd창이 뜰 것이다... 웬지 리눅스를 만지는 듯한 느낌...

먼저 저장소를 만들어보자.

test라는 폴더를 만든 후, 해당 파일로 이동해보자.

test라는 폴더를 깃 저장소라고 알려주어야, 추가적인 깃 명령어들을 줄 수 있다.

해당 명령어가 바로 git init

git init를 입력하고 난 후, test라는 이름과 똑같이 GitHub에서도 repository를 만들어주어야 한다.

다시 cmd창으로 이동해서, 제대로 작동하는지 확인하기 위해 테스트를 해보자.

test.txt라는 파일을 만들었다.

해당 파일으르 깃으로 부터 주목받게 하기 위하여 git add test.txt 입력

이제 커밋해서 스냅샷을 찍어보자.

    git commit -m "Add test.txt" 여기서 -m은 뒤에 오는 텍스트를
    메시지로 읽게 하는 의미이다.

이제 모든 준비는 끝났다.

다음으로 로컬과 원격 저장소를 연결한 다음, 푸쉬만 해주면 된다.

로컬과 원격 저장소를 연결하기 위해서는 GitHub에서 만든 repository로 이동한다.

위 그림에 보이는 HTTPS 버튼 옆에 url을 복사한다.

Git Bash로 이동해서 git remote add origin 복사한 url을 붙어넣기 하면
로컬과 원격 저장소가 연결된다.

이제 git push를 입력하면... 로컬에 있던 파일이 GitHub에도 생성되어 있을 것이다.

만약 오류가 날 경우, git push origin master




2015년 12월 10일 목요일

사물 인터넷(IoT)

Internet of Things

사물 인터넷(IoT)

사물 인터넷이란, 각종 사물에 센서와 통신 기능을 내장하여 인터넷에 연결하는 기술
                       여기서 사물이란, 가전제품, 모바일 장비, 웨어러블 컴퓨터 등 다양한
                       임베디드 시스템이다.

   임베디드 시스템(embedded system, 내장형 시스템)
     
      : 기계나 기타 제어가 필요한 시스템에 대해, 제어를 위한 특정 기능을 수행하는
        컴퓨터 시스템으로 장치 내에 존재하는 전자 시스템이다.



사물 인터넷 시장환경


사물 인터넷의 해결점

   사물 인터넷에 연결되는 사물들은 자신을 구별할 수 있는 유일한 아이디를 가지고
   인터넷으로 연결되어야 한다.

   정보 기술 연구에 따르면, 2009년까지 사물 인터넷 기술을 사용하는 사물의 개수는
   9억개였으나, 2020년까지 이 수가 260억 개에 이를 것이라고 예상된다.

   이렇게 많은 사물이 연결되면 인터넷을 통해 많은 데이터가 모이게 되는 데,
   모인데이터는 기존 기술로 분석하기 힘들 정도로 많아질 것이다.

   이것을 빅 데이터라고 부르는 데, 빅데이터는 다음 시간에 업데이트 하도록 하겠다...

사물 인터넷을 구축하기 위해서는 기술적인 환경 구축이 선행되어야 한다.

기술적인 설정은 크게 4가지가 있다.

   1) 사물 신원 확인
   2) 의사 소통이 가능한 네트워크 구축
   3) 사물에 감각 부여
   4) 컨트롤 가능성

먼저, 사물 신원 확인에 대해 알아보겠다.

   사물 인터넷에 참여하는 각각의 개체는 다른 개체로 하여금 스스로를 식별할 수 있게
   해주는 신원이 필요하다.
   근거리에 위치한 사물의 신원을 나타내는 기술 RFID를 사용하지만,
 
   -------------------------------------------------------------------------------------------
   RFID가 무엇인가?

      RFID(Radio-Frequency Identification)의 약자로, 주파수를 이용해서 ID를 식별하는
      SYSTEM으로, 전자태그로 불린다(바코드 진화 버전)
   --------------------------------------------------------------------------------------------

   보다 넓은 범위의
   네트워크 상에서 개별 사물의 신원을 확인하기 위해서는 개별 사물에 IP를 부여해야 한다
   이에 따라, IP주소의 수요가 늘어서 기존 IPv4체계(32bit)로는 한계가 있다고 판단하여
   IPv6체계(128bit)의 필요성이 대두되고 있다.

두번째로, 네트워크 구축

   사물들은 스스로가 취합한 정보를 필요에 따라 다른 사물과 교환, 취합함으로써
   새로운 정보를 창출할 수 있어야 한다.

   사물끼리의 일관된 정보전달 방법을 확립하기 위해 HTTP를 대체한 MQTT프로토콜

   --------------------------------------------------------------------------------------------
   MQTT가 무엇인가?
   
      HTTP와 동일하게 TCP/IP위의 application protocol로써,
      디바이스와 유저, 유저와 유저가 효과적으로 메시지를 주고 받을 수 있는 protocol
   --------------------------------------------------------------------------------------------

   이 제시되었고 OASIS(Organizaion for the Advancement of Structured Information  
   Standards)에서는 MQTT를 사물 인터넷의 표준 규약으로 선정하였다.

세번째, 감각 부여

   사물에 청각, 미각, 후각, 촉각, 시각 등을 부여해 주변 환경의 변화를 측정할 수 있도록
   한다.

   예컨데 이불의 경우 감압센서와 습도센서를 통해 사용자가 수면 중 몇 번 뒤척였는지,
   얼만큼 땀을 흘렸는지 등을 측정할 수 있다.

마지막으로, 컨트롤 가능성

   임의적인 조작을 통해 사용자는 사물에게 행동을 지시할 수 있다.


2015년 12월 8일 화요일

정규표현식2

이어서 정규표현식의 서브패턴에 대해 알아보겠습니다.

|(파이프): 문자열 중에서 원하는 텍스트를 선택하고 싶은 경우 사용

      ex) Monday Tuesday Friday 문자열

           (on|ues|rida) --->>> 문자열 중에서 on이나 ues나 rida 추출하고 싶을 경우
                                      
                                       결과 First match: on 
                                              All matches: on, ues, rida

           (Mon|Tues|Fri)day --->>> 공통되는 부분을 서브패턴으로 빼서 추출하는 경우
                                      
                                       결과 First match: Monday
                                              All matches: Monday, Tuesday, Friday

           ..(id|esd|nd)ay --->>> 패턴 앞에 두개의 문자와 ay가 끝인 문자 추출하는 경우
                                                                                                 
                                       결과 First match: Monday('nd'앞에 'Mo'가 있고, 'ay'로 끝)
                                              All matches: Monday, Tuesday, Friday


수량자: 어떠한 패턴이 얼만큼 등장하는 가 숫자로 나타내는 경우

수량자에는 총 3가지가 있다 --->>> '*', '+', '?'

*(별): '*' 앞에 등장하는 문자가 몇번 등장하는지 판단 (0개 ~ 여러개)

      ex) aabc abc bc 문자열

           a*b --->>> b를 기준점으로 보고, b앞에 a가 있을 수도 있고, 없을 수도 있다.
                           즉, a가 0개, 1개, 여러 개여도 만족!

                           결과 First match: aab
                                  All matches: aab, ab, b

+(더하기): '+' 앞에 문자가 1개 ~ 여러개 인 경우

           a+b --->>> b앞에 a가 오는데, 반드시 1개 이상이여야 한다.

                           결과 First match: aab
                                  All matches: aab, ab

?(물음표): '?' 앞에 문자가 없거나, 1개 인 경우

           a?b --->>> b앞에 a가 없는 경우나 1개 인 경우

                           결과 First match: ab (예문 aabc에서 맨 앞 a가 빠지고 ab가 선택됨)
                                  All matches: ab, ab, b

[]: 선택자 패턴의 후보군을 지정하는 경우

      ex) -@- ***--"*"--***-@- 문자열

           [-@]* --->>> 문자열 중 '-'나 '@' 중 하나만 있더라도 선택된다.
                             
                              결과 First match: -@-
                                     All matches: -@-, --, --, -@-

           [^ ]+ --->>> []안에 '^'는 Not을 의미하므로, 공백이 아닌 것을 가리킨다.
                             즉, 공백이 아닌 것이 1개 이상인 경우

                             결과 First match: -@-
                                    All matches: -@-, ***--"*"--***-@-

{}: 원하는 수량을 정확하게 지정하는 경우

      ex) .{5} --->>> 5가 수량자이다. 어떤 문자건 간에 5개의 문자를 선택한다는 의미

           One ring to bring 문자열에서 .{5}의 결과 값은 One r

           One ring to bring them all and in the darkness 문자열

           [els]{1,3} --->>> 'e'나 'l'이나 's'중 한 글자를 의미하고, 
                                  해당하는 문자가 1개 ~ 3개를 가리키는 의미

                                  결과 First match: e
                                         All matches: e, e, ll, e, ess 
                             
           AB{0,}A --->>> 앞에 A와 뒤 A 사이에 B가 0개 ~ 여러 개를 의미(즉, 0개 이상)

2015년 11월 30일 월요일

MySQL 리플리케이션

MySQL 리플리케이션

MySQL 리플리케이션이란, '복제'라는 사전적 의미를 가지고 있으며
마스터 MySQL서버의 데이터를 여러 대의 슬레이브 MySQL서버 데이터와
동기화 시켜주는 기능.

지원 버전

   3.23.15~

사용하는 목적

   MySQL의 데이터를 실시간으로 백업하거나, 데이터 서버의 부하분산을 하고자 할 때

설치방법

   구글링 하면 누구나 할 수 있으므로 생략...

wearable

웨어러블(wearable)

웨어러블이란, 웨어러블 컴퓨터 또는 웨어러블 디바이스로 불리는 착용컴퓨터이다.
                           (안경, 시계, 의복 등과 같이 착용할 수 있는 형태로 된 컴퓨터)

웨어러블을 조사하게 된 계기


   북미와 유럽, 아시아태평양에서 2015년 주목할 만한 기술 1위로 선정되었기 때문에!

웨어러블의 역사

   1961년 에드워드 소프(Edward O. Thorp)와 클로드 섀넌(Claude Elwood Shannon)이
   MIT(매사추세스 공과대학교)에서 룰렛 휠을 예측하는 데에 사용되는 최초 착용 컴퓨터
   개발.

웨어러블의 목표

   사용자가 거부감 없이 신체의 일부처럼 항상 착용하고 사용할 수 있으며,
   인간의 능력을 보완하거나 배가(몇 배로 늘린다는 의미)시키는 것.

웨어러블의 종류

   악세사리, 직물/의류 일체형, 신체 부착형, 생체이식형
 

웨어러블의 장점

   주변 환경에 대한 상세정보나 개인의 신체변화를 실시간으로 끊이지 않고,
   지속적으로 수집할 수 있음.
   ex)스마트 속옷: 체온, 심장박동과 같은 생체신호를 꾸준히 수집

웨어러블의 전망

   2012년, 스마트워치인 페플 개발
   2013년, 구글에서 구글 글래스 개발
   2014년, 애플에서 아이워치 개발
 
   웨어러블 디바이스 시장은 아직 완전히 대중화되지 않음 틈새 시장이어서
   중소 개발사람들도 참신한 아이디어와 우수한 개발력만 보유하고 있으면
   역량을 발휘할 수 있는 시장으로 기대되고 있다.

   현재 상용화되어 있는 제품들은 음성인식, 제스처 인식, NFC,
   헬스 모니터링 및 증강현실 등의 기술을 적용하고 있다.

웨어러블 이슈 및 과제

   웨어러블 기술을 둘러싼 이슈 중에서 가장 중요한 것은
   소형과, 경령화와 함께 저전력 문제를 어떻게 해결할 것인가 이다.

   또한, 보안도 큰 문제이다.
   웨어러블 컴퓨터가 널리 활용되고 개인의 정보가 담겨 있는 환경에서
   인터넷과 연결된 웨어러블 컴퓨터는 항상 악의적인 해킹에 노출되어 있기 때문에,
   이를 지키기 위한 보안 대책이 마련되어야 한다.

   웨어러블 디바이스는 사물인터넷, 빅데이터, 클라우드 컴퓨팅 등의 IT기술들을
   하나로 묶을 수 있는 최적의 연결고리이다.
   따라서 제조, 소프트웨어, 패션, 디자인, 콘텐츠 영역의 모든 관련 기업들은
   시장을 선도하기 위해 이들 서비스를 어떻게 유기적으로 연결하면서
   새로운 플랫폼과 결부시킬 수 있는지에 대한 고민이 필요하다.
 


2015년 11월 29일 일요일

정규표현식

정규표현식이란, 어떤 문자를 처리하기 위한 언어.

여기서 처리란, 어떠한 해당 텍스트가 존재하는 지 판단하고, 다른 텍스트로 치환을 의미.

정규표현식은 대소문자를 구분한다.


^(캐럿): 캐럿 뒤에 나오는 문자열이 소스 상에서 시작 위치에 있는 경우.
     
            ex) who is who라는 텍스트가 있으면, ^who --->>> 첫째 who

$: 소스 상의 끝에 위치하는 문자열을 가리키는 경우

            ex) who is who라는 텍스트가 있으면, who$ --->>> 마지막 who

\: 특수문자를 가리키는 경우

            ex) \$ --->>> \뒤에 오는 $를 단순한 문자로 인식하게끔 설정(escape)

.: 어떠한 문자건 상관없이 그 문자, 공백, 특수문자를 가리키는 경우

            ex) ...... --->>> .의 개수만큼인 6개의 문자를 가리킴

                O.K. 라는 텍스트가 있으면, \..\. --->>> K

[]: []안에 해당하는 문자를 가리키는 경우

            ex) How do you do? 라는 텍스트가 있으면, [oyu] --->>> o

                 []를 하나의 문자로 인식하기 때문에, [dH]. --->>> Ho

                 [owy][yow] --->>> ow(첫 대괄호에 o, 두번째 대괄호에 w)

                 [c-k] === [cdefghijk]

                 [C-Ka-d2-6]는 C~K, a~d, 2~6까지를 의미

[]안에 캐럿이 있으면 not을 의미

                 [^CDghi45] --->>> 대괄호 안에 해당하지 않는 문자를 추출

결혼이민비자 신청방법(F-6-1 국민의 배우자)

 제가 일본인 여자친구와 결혼 후, 한국에 귀국하기 위해 신청한 결혼이민비자에 대하여 작성해보도록 하겠습니다. 필자는 일본에서 근무하고 있었으며, 한국에서의 소득은 없었습니다. 결혼이민비자를 신청한 날짜는 2021-04-21 이며, 사증이 발급된 날짜...