2016의 게시물 표시

Grub 부트로더 복구하는 방법

리눅스를 설치하고 지우면서 boot하면 가끔 당하는 grub rescue> 막막합니다. 그럴때 boot rescue나 Live CD를 쓰지 않고 간단히 해결하는 방법 grub rescue>  ls 그럼 partition들을 다 보여 줍니다. (hd0) (hd0,msdos2) (hd0,msdos1) 근데 어떤 놈 일까요? grub rescue> ls (hd0,msdos2)/ grub rescue>  ls (hd0,msdos1)/ 이런식으로 하나씩 내용을 보면  ext4 중  /lost+found     /sys      /bin  /boot .... /usr 요렇게 partition의 ls가  놈이 나오는게 있습니다. (hd0,msdos2) 이 고놈이라고 치면 # 아래 msdos를 빼고 한다는 걸 까먹으면 도루묵! grub rescue>  set prefix= (hd0,2) /boot/grub grub rescue>  set root=(hd0,2) grub rescue>  insmod normal grub rescue>  normal 다 치고 나면 리눅스가 정상으로 시작 됩니다. 그럼 안도의 한숨 내쉬고 Shell 을 연 다음  $ sudo update-grub $ sudo grub-install /dev/sda 출처 - http://linuxmint.kr/4082

Linux 컨테이너

이미지
 향상된 컴퓨터의 성능으로 인해 그 성능을 더 효율적으로 사용하기 위한 가상화라는 단어가 친숙해졌습니다.  처음에는, 가상화 기술을 사용하기 위해여 KVM, VMWARE 같은 하이퍼바이저를 사용하는 기술을 사용하였지만, 최근에는 Docker로 대표되는 리눅스 컨테이너(LXC)와 같은 컨테이너 형 가상화 기술을 이 더 각광받고 있습니다.  컨테이너형 가상화 기술은 기존 기술보다 더 가볍고, 이식성이 뛰어난 특징을 가지고 있습니다. 그리고 '가상화'라기 보단 '격리'라는 개념에 더 가깝다고 합니다. (말그대로 컨테이너안에 가둔다는 것 같습니다.) 리눅스 컨테이너를 살펴보면 OS 내부는 물리적 자원을 관리하는 "커널 공간"과 애플리케이션을 실행하는 "사용자 공간"으로 나누어집니다. 컨테이너형 가상화 기술은 사용자 공간(User space)를 나누어 각각의 사용자 프로세스에서 보이는 리소스를 제한하는 방법입니다. 1. LXC (Linux Container)란? LXC (LinuX Containers)는 단일 컨트롤 호스트 상에서 여러개의 고립된 리눅스 시스템 (컨테이너)들을 실행하기 위한 운영 시스템 레벨 가상화 방법이다.  리눅스 커널은 cgroups를 절충하여 가상화 머신을 시작할 필요 없이 자원 할당 (CPU, 메모리, 블록 I/O, 네트워크 등)을 한다. Cgroups는 또한 애플리케이션 입장에서 프로세스 트리, 네트워크, 사용자 ID, 마운트된 파일 시스템 등의 운영 환경을 완전히 고립시키기 위해 namespace isolation을 제공한다.  LXC는 cgroups와 namespace를 결합하여 애플리케이션을 위한 고립된 환경을 제공한다. Docker 또한 실행 드라이버의 하나로 LXC를 사용할 수 있으며 이를 통해 이미지 관리와 개발 서비스를 제공한다.  - 위키피디아  2. 기존 가상화 기술과 LXC의 차이점 ...

[머신러닝] Deep Learning Tutorials

이 글은 http://deeplearning.net/tutorial/index.html의 내용을 공부목적으로 번역한 것입니다. 번역이 이상할 수 있고 필요한 내용만 번역되어 있을 수 도 있습니다. -------------------------------------------------------------------------------------------------------------------------------------  딥러닝은 머신러닝의 원래 목표중 하나인 인공지능으로 다가게하는 목적으로 소개된 머신러닝 연구의 새로운 분야다.  딥러닝은 이미지, 소리 그리고 텍스트와 같은 데이터들의 이해를 돕는 다양한계층의 표현과 추상적 개념에 대한 학습이다. 딥러닝 알고리즘에 대한 예제를 보고싶으면 다음을 예를 보면 된다 : The monograph or review paper  Learning Deep Architectures for AI  (Foundations & Trends in Machine Learning, 2009). The ICML 2009 Workshop on Learning Feature Hierarchies  webpage  has a  list of references . The LISA  public wiki  has a  reading list  and a  bibliography . Geoff Hinton has  readings  from 2009’s  NIPS tutorial .  여기있는 튜토리얼들은 가장 중요한 몇개의 딥러닝 알고리즘과 그것을  Theano 를 이용해 어떻게 작동시킬것인지 소개할 것이다. Theano는 딥러닝 모델을 쉽게 배울수 있게하고 그것들을 GPU에서 훈련시킬수 있도록 선택할 수 있는 파이썬 라이브러...

[머신러닝] CNN(Convolution Neural Network)

이미지
Why CNN?  이미지 인식과 같은 분야에서 MLP(Multi-Layer Perceptron) 또는 multi-layered neural network를 사용하게 되면 MLP는 모든 입력이 위치와 상관없이 동일한 수준의 중요도를 갖는다고 본다. 그렇기 때문에 이를 이용해 fully-connected neural network를 구성하게 되면 파라미터의 크기가 엄청나게 커지는 문제가 생긴다. 이에 대한 해결책으로 탄생한 것이 바로 CNN이다. Receptive Field  수용영역이란 외부 자극이 전체 영향을 끼치는 것이 아니라 특정 영역에만 영향을 준다는 뜻이다. 손가락으로 몸의 여러 부분을 찔러 보았을 때 그것을 느낄 수 있는 범위가 제한적이라는 것을 생각하면 될 것이다. 그리고 어디를 찌르느냐에 따라 느끼는 영역의 크기가 다를 것이다.  마찬가지로 영상에서 특정 위치에 있는 픽셀들은 그 주변에 있는 일부 픽셀들 하고만 correlation이 높고 거리가 멀어질수록 그 영향은 감소하게 된다. 이를 이용해 영상이나 이미지를 해석하여 "인식 알고리즘"을 수행하고자 할 경우 영상 전체 영역에 대해 서로 동일한 중요도를 부여하여 처리하는 대신에 특정 범위를 한정해 처리를 하면 훨씬 효과적일 것이라 짐작 할 수 있다. 이를 영상에만 한정하는 것이 아니라 locality를 갖는 모든 신호들에 유사하게 적용할 수있다는 아이디어에 기반하여 출현한 것이 CNN이다. convolution이란?  영상 처리 분야에서 convolution은 주로 filter 연산에 사용되며 영상으로부터 특정 feature들을 추출하기 위한 필터를 구현할 때 convolution을 사용한다. 즉 3 by 3 또는 그 이상의 window 혹은 mask를 영상 전체에 대해 반복적으로 수행을 하게 되면, 그 mask의 계수 값들의 따라 적정한 결과를 얻을 수 있다.  아래 그림을 보면 왼쪽...

[데이터 분석] 데이터 준비하기 : 다듬기, 변형, 병합

이미지
 미국 농무부는 음식의 영양소 정보 데이터베이스를 제공하고 있습니다. 영국 해커 애슐리 윌리엄스는 이 데이터베이스를 Json 형식으로 웹사이트 ( http://ashleyw.co.uk/project/food-nutrient-database )에 제공하고 있습니다.  각 음식에는 수자로 된 고유 ID와 영양소 및 제공량을 담고 있는 두 가지 리스트가 있으나 이 데이터 형식은 분석하기 좋지 않으므로 데이터 형식을 바꿔 보도록 하겠습니다.   웹사이트에서 데이터를 내려받은 다음 압축을 해제하고 선호하는 JSON 라이브러리를 사용해서 파이썬에 읽어오도록 하겠습니다.  db에 있는 각 엔트리는 한 가지 음식에 대한 모든 정보를 담고 있는 사전형입니다. 'nutrients' 필드는 사전의 리스트이며 각 항목은 한 가지 영양소에 대한 정보를 담고 있습니다.  사전의 리스트를 DataFrame으로 바꿀 때 추출할 필드의 목록을 지정해줄 수 있습니다. 음식의 이름과 그룹, id 그리고 제조사를 추출해 보도록 하겠습니다.  그리고 value_counts 메서드를 이용해서 음식 그룹의 분포를 확인해 볼 수 있습니다.  이제 모든 영양소 정보를 분석해 보도록 하겠습니다. 먼저 더 쉽게 분석을 하기 위해 각 음식의 영양소 정보를 하나의 테이블에 담아보겠습니다. 그러기 위해서는 몇 가지 과정을 거쳐야 하는데 먼저 음식의 영양소 리스트를 하나의 DataFrame으로 변환하고 음식의 id를 위한 칼럼을 하나 추가합니다. 그리고 이 DataFrame을 리스트에 추가합니다. 마지막으로 이 리스트를 concat 메서드를 사용해서 하나로 합쳐보겠습니다.  문제가 없다면 nutrients는 다음과 같을 것입니다.   총 389355개의 데이터가 있습니다. 하지만 이 DataFrame에는 중복된 데이터가 있으므로...

[책 리뷰] 프로페셔널의 조건

이미지
 서평  노트를 뒤적거리다 작년에 읽은 피터드러커의 프로페셔널의 조건이란 책에 대해 간단하게 메모해 놓은 것을 발견했다. 작년에 들은 어떤 강의에서 자기 개발서의 원조격인 책이라고 이것만 보면 다른 자기 개발서들은 이 책을 보고 저자들이 주석을 달아 놓은 수준이라 굳이 읽을 필요가 없다고 한 강사님의 말을 기억해 두었다가 도서관에서 빌려서 봤었다. 읽어보고 느낀점은 그 분야의 고전에 해당하는 책들은 다르구나라는 느낌과 다른 자기 개발서들은 이 책에서 하는 말들의 일부분을 더 알아듣기 쉽게 설명했구나라는 생각이 들었다. 그리고 항상 명심해두고 있어야할 말들이 있는 것 같아 다시 한번 정리해 봤다. 요약  효과적인 사람, 지속적인 성장을 할 수 있는 사람, 변화 할 수 있는 사람이 되어라  그리고 이책에서 내가 제일 인상깊게 보았던 7가지가 있다. 1. 나에겐 분명 한 번더 도전해 볼 의무가 있다.  - 실패 한다고 해서 포기하지 말라는 의미였던것 같다. 2. 완벽은 나를 피해가겠지만 나는 다시 한 번 완벽을 추구 할 것이다.  - 내가 생산하는 생산물 중 가장 완벽한 것은 내가 바로 다음에 할 것이다. 3. 항상 '신들이 보고있다.' 라는 생각을 해라.  - '누가 보는것도 아닌데 대충하지뭐'라는 마음가짐을 버리라는 뜻인것 같다. 4. 잘한일, 잘하고자 한일, 잘하고자 충분히 노력하지않은일, 실패한일에 대한 검토를 하라  - 피드백을 하라 5. 새로운 일을 할 때에는 그에 걸맞는 사람이 되어라.  - 자리가 사람을 만든다는 수동적 의미가 아닌 내가 그 자리에 맞는 사람이 스스로 되라는    것 같다. 6. 어떤 일을 할 때에는 예상하는 결과를 기록하고 그 이후에 그 기록과 비교할 것  - 이것도 피드백과 비슷한 말인것 같다. 7. 음... 내가 기록하면서 누...

[Digital Signage] Xibo 설치

이미지
 이번에는 Digital Signage용 오픈소스 OS인 Xibo를 설치하는 방법에 대해 알아보겠습니다. Xibo는 php기반이기 때문이 php가 설치되어 있어야 합니다. php 설치가 필요하신 분들은  http://cd4761.blogspot.kr/2016/02/it-php.html 로 가셔서 설치를 하신다음 진행해주시기 바랍니다.   http://xibo.org.uk/  에 접속해서 아래 그림과 같이 표시된 것들을 다운로드 받습니다.  먼저 CMS를 설치해 보도록 하겠습니다. CMS CMS란?  CMS는 Content Management System의 약자로 말그대로 Digital Signage를 통해 보여줄 컨텐츠들을 관리하는 시스템이라 보시면 됩니다. CMS는 PHP/ MySQL 웹 어플리케이션 이며 Apache, nginx 그리고 Microsoft IIS에서 작동 합니다. CMS설치 다운로드 받은 CMS파일을 압축 푼 다음 C:\Bitnami\wampstack-5.5.31-0\apache2\htdocs에 다음과 같이 위치 시켜줍니다. Xibo폴더 내부는 다음과 같습니다. 그 다음 브라우저에 localhost/Xibo를 입력하면 다음과 같은 화면이 출력됩니다. 하지만 사진을 보시면 각 항목이 체크 표시가 된 경우도 있고 x표시가 된 경우도 있을 것 입니다. 그럴 경우 C:\Bitnami\wampstack-5.5.31-0\php 폴더에 있는 php.ini 파일을 열면  위와 같은 부분이 있을 것입니다. 저는 Fileinfo와 SOAP Extension에 문제가 있다고 되어있는데 이럴경우 저 부분에 extension=php_fileinfo.dll과 extension=php_soap.dll을 입력해주시면 해결이 됩니다.  나머지 설치를 진행해주시고 설치가 완료된 후에 로그인을 하면 ...

[기타IT] php설치

이미지
 이번에는 php 설치하는 법에 대해 알아보겠습니다. 저는 개발할 때 node.js를 사용 하지만 이번에 프로젝트하는데 필요한 xibo가 php기반이라 설치하게 되었습니다. php란?  php(약칭 : Hypertext Preprocessor)는 프로그래밍 언어의 일종으로 동적 웹 페이지를 만들기 위해 설계되었습니다. php는 일반적으로 혼자 설치되지 않고 apache와 MySql과 함께 설치되는 것이 일반적입니다.  php는 apache를 통해 브라우저로 정보를 전송하고 MySql을 이용해 사용자의 정보를 저장하기 때문에 일반적으로 함께 사용되고 설치됩니다. 이를 APM이라 하는데 Window에 설치하는 APM을 WAPM이라 합니다. 이걸 각각 설치 할 수도 있지만 난이도가 있기 때문에 Bitnami를 이용해 한번에 설치해 보도록 하겠습니다. php설치 먼저 https://bitnami.com/stack/wamp 에 접속하여 설치파일을 다운로드 받습니다.  다운로드가 완료되면 설치파일을 실행합니다. 다른 구성요소들은 굳이 필요하지 않으니 체크박스를 해제해줍니다. php에서 쓰는 MySql의 root사용자 비밀번호를 설정해주는 화면입니다. 6자리 이상의 비밀번호를 입력하시면 됩니다. 설치가 되고 있는 화면입니다.  설치가 완료되고 브라우저 주소창에 localhost를 쳤을 때 다음과 같은 화면이 출력되면 제대로 설치가 된것입니다.

[기타IT] 파싱

이미지
 파이썬 공부를 하다가 파싱에 관한 코드를 보고 파싱이 도대체 무엇인지 궁금해져서 파싱에 대해 알아 봤습니다.  파서(Parser)란? Compiler의 일부  즉, Compiler 나 Interpreter에서 원시 프로그램을 읽어 들여, 그 문장의 구조를 알아내는 구문 분석(parsing)을 행하는 프로그램을 파서라고 합니다. 파싱 형태 - DOM, SAX DOM과 SAX란?  하나의 API로서, XML 문서를 구조화 - XML문서에 있는 Data를 효과적으로 다루기 위해 필요합니다. 이번에는 DOM방식에 대해서만 알아보도록 하겠습니다. XML 파서의 분류  DOM(Document Object Model) : 트리 기반의 파서  SAX(Simple API for XML) : 이벤트 기반의 파서 -> DOM과 SAX 방식의 차이점은 문서 접근 방식의 차이라고 합니다. 즉, DOM은 임의적 접근을 하고 SAX는 순차적 접근을 합니다. DOM - 객체 지향 모델  DOM 문서의 물리적 구조와 문서가 접근되고 다루어지는 방법을 정의하는 방식 입니다. XML 문서를 하나의 Tree 구조 로 본다는 특징이 있고 파서가 모든 이벤트들을 잡아서 그 결과를 메모리 상에 트리 형태로 만들고 application이 그 결과를 이용하도록 합니다.   DOM의 특징으로는 1. XML 문서를 메모리에 올려놓고 데이터를 찾아 들어가는 방식을 사용 2. 모든 데이터를 다 읽기 때문에 큰 문서일 경우 로딩 시간이 걸리거나 메모리 낭비를 낭비    하게 됨 3. 문서 편집 가능 4. 데이터를 저장된 순서대로 받음 과 같은 것들이 있습니다.   그리고 DOM의 목적으로는 1. 다양한 환경과 application에서 사용할 수 있는 표준적 프로그래밍 인터페이스 제...

[머신러닝] 최소자승법(Least Square Method)

이미지
 이번에는 시계열 분석에 사용되는 최소자승법 에 대해 알아보겠다. 예를 들어, 대학교 입학성적이 대학교 재학 중 학업성적에 미치는 영향을 조사하기 원한다고 가정하자. 이를 위해 6명의 재학생의 입학성적( x 1 =수능성적,   x 2 =학생부 성적)과 학생들의 대학 재학시 총 평균학점(y=GPA)의 자료를 얻었다. 이 자료를 근거로 재학생의 학업 성취도가 대학 입학성적과 어떤 연관이 있는지 살펴 보려면  Y = a 1 x 1  + a 2 x 2     (1.1)  을 만족하는  a 1,  a 2  값을 정하면 된다. 여기서  a 1 은 수능성적이 1점 상승할 때 대학에서의 GPA가 얼마나 오르는지에 대한 증가량을 나타내며  a 1 >0 이면 수능 성적이 높을 수록 GPA가 높아짐을 의미한다. 모든 자료가 식 1.1을 만족시키는 것은 불가능하기 때문에 오차항(error)  e i 을 이용하면 i 번째 학생의 경우 y i = a 1x x 1i  + a 2 x 2i + e i    (1.2) 라는 모형식을 가정 할 수 있다. 이를 행렬식으로 표시하면 y = Xa+e 라고 할 수 있다. 그리고 여기서 a값을 결정하기 위해 흔히 사용하는 방법은 오차항의 길이 제곱을 최소로 하는 방법인데, 이를 최소자승법이라고 한다.  기하학적으로 오차항의 길이를 최소로 하는 방법은 벡터 y를 열공간 C(X)에 투영시켰을 때의 a값을 얻는 거이며, 이때 투영된 그림자를 y^이라 하고 그 때의 a값을 a^이라고 한다면  y^ = Py = X(X T X) -1 X T y = Xa^   (1.3) 로 부터 a^ = (X­ T X) -1 X T y   (1.4) 라는 값이 얻어지고 이를 '최소자승추정량(Least Sq...

[데이터 분석] 파이썬에서 소셜 데이터 수집과 분석

이미지
이 글은 정광윤님이 DB Guide.net에 연재한 개발자를 위한 파이썬 분석을 정리한 내용입니다. ---------------------------------------------------------------------------------------------------  트위터에서 트윗되고 있는 데이터 중에서 파이썬, 자바스크립트, 루비(Ruby)의 인기도를 분석해 보자. 0. 준비하기 먼저 필요한 패키지들은 다음과 같다. 1. pandas 2. matplotlib 3. json 4. re 5. tweepy 여기서 3,4번은 이미 내장되어 있는 패키지이다. 1,2 번은 pip install을 사용해 설치하면 되기 때문에 tweepy 설치 방법만 알아 보겠다. 1. Twitter API key 획득하기  Application Programming Interface의 약자인 API라는 것이 있다. 이 API 덕분에 우리가 데이터를 흔하게 접할 수 있고 쉽게 데이터를 획득 할 수 있다. API는 즉, 프로그래밍 언어로 어플리케이션에 접근할 수 있는 인터페이스이다.  트위터로부터 데이터를 가져오기 위해서는 아래 4가지 정보가 필요하다. 1. API Key 2. API Secret 3. Access Token 4. Access Token Secret  이 네가지 정보를 얻기 위해서는 트위터 계정이 있어야하고 계정에 본인의 핸드폰 번호도 등록되어 있어야 한다. 1. https://apps.twitter.com/에 접속한다. 2. 우측 상단의 'Create New App'을 클릭한다. 3. 양식들에 값들을 적당히 채운다.(이름, 설명, 웹사이트(아무거나 입력 가능)만 입력하면 된다.) 4. 'Create your Twitter application'을 클릭한다. 5. 'Keys and Access Tokens' 탭으로 이동하면 Consumer Key(A...

[책 리뷰]인사이트 통찰의 힘

이미지
  내가 가장 관심을 갖고 공부하는 분야가 데이터 분석인데 분석 기술 보다 중요한것이 분석 결과를 보고 인사이트를 도출해 내는 것이라 들었다. 하지만 듣기만 했을 뿐 도대체 무엇을 어떻게 해야하는지 감이 잡히지 않았는데 책을 보면서 약간 알것 같기도 하다는 생각을 하게 되었다.  혁신이나 뭐니 하는 말이 많이 나오는 요즘 시대는 새로움을 향한 열망이 많은 시대인 것 같다. 이 책은 그 혁신을 이루기 위해 가장 중요한 것을 공감 으로 봤다. 통찰을 발견하기 위한 렌즈를 바로  공감 으로 봤는데 문제를 정의한 다음 그것에 대해 소통 하고 관찰 하고 코드 를 맞추며 확산 시킨다. 그 다음 이것들을 공감이라는 렌즈를 통해 통찰 , 발상 , 그리고 콘셉트 설정을 통해 그것들을 수렴시킨 다음 그것들을 실행하는 법에 대한 내용이 이 책의 핵심 내용이다.  위의 여섯가지 내용을 살펴보자. 먼저, 코드 가 있다. 코드는 사용자에 맞는 문화 코드로 전환하라 는 내용이다. 아무리 혁신적이고 좋은 아이디어 일지라도 사용자들의 정서와 문화 코드 같은 것들과 맞지 않으면 그 아이디어는 사용자들로 부터 반응을 이끌어내기 힘들 것이다. 혁신이라는 것은 사용자에게 혁신적이어야지 내가 느끼기에 혁신적이어선 안되기 때문이다. 책의 저자는 코드를 맞추기 위해 프로젝트를 진행할 때마다 '사용자 되어보기' 방법을 사용 한다고 한다. '사용자 되어보기' 를 하기 위해 사용자에 맞는 환경을 조성한다고 한다. 예를 들어 학교와 관련된 프로젝트를 진행할 경우 프로젝트 룸을 실제 교실처럼 조성하는 것이다. 급훈을 달고, 학급내에 있는 것과 비슷한 게시판, 책상, 의자 등을 구비해놓고 그곳에서 프로젝트를 진행하며 '사용자 처럼' 이 아니라 '진짜 사용자' 가 되어 보는 방법이다.  그 다음은 관찰 이다. 관찰은 익숨함 속에 숨겨진 새로운 기회를 발견 하는 것을 말한다. 새로운 것을 발견하는 것이 아니라 새로운 눈으로 사물을 보는 것이라 생...

독서 요약을 시작하며

 책을 읽고 난 뒤 나중가면 그 책의 내용이 기억나지 않을 때가 많다. 그리고 기억을 못하는데 읽어봤자 무슨 소용일까 싶은 생각도 많이 해봤다. 책을 읽고 정리, 요약을 해놓으면 좀 더 기억이 오래가지 않을까 싶어 시작하는 독서요약(혹은 독후감).

T-Robotics : Robot & Math: 추천! 로봇공학 / 기계학습 무료 교재(pdf) 15가지

T-Robotics : Robot & Math: 추천! 로봇공학 / 기계학습 무료 교재(pdf) 15가지 Terry.t.um님 블로그에서 가져온 무료 교재들 천천히 봐야지..