GitPython을 가지고 뭔가 만들다가 에러를 만났다.


fetch()를 실행하는데, 뭔가가 맞지 않다고 에러라고 하는데... 아무리 살펴봐도 에러가 발생한 상황이 아닌데...
그래서 찾아봤는데 이는 GitPython이 최신 버전의 Git 과의 궁합에서 발생한 에러/버그 상황이다.

   https://github.com/gitpython-developers/GitPython/issues/142

해결 방법은 파일 수정이라고 한다.

$ sudo nano /usr/local/lib/python2.7/dist-packages/GitPython-0.3.2.RC1-py2.7.egg/git/remote.py

...
        def _get_fetch_info_from_stderr(self, proc, progress):
                # skip first line as it is some remote info we are not interested in
                output = IterableList('name')

                # lines which are no progress are fetch info lines
                # this also waits for the command to finish
                # Skip some progress lines that don't provide relevant information
                fetch_info_lines = list()
                for line in digest_process_messages(proc.stderr, progress):
                        if line.startswith('From') or line.startswith('remote: Total'):
                                continue
                        elif line.startswith('warning:'):
                                print >> sys.stderr, line
                                continue
...

위와 같은 코드를 아래와 같이 변경하면 된다고 한다.

...
        def _get_fetch_info_from_stderr(self, proc, progress):
                # skip first line as it is some remote info we are not interested in
                output = IterableList('name')

                # lines which are no progress are fetch info lines
                # this also waits for the command to finish
                # Skip some progress lines that don't provide relevant information
                fetch_info_lines = list()
                for line in digest_process_messages(proc.stderr, progress):
                        #if line.startswith('From') or line.startswith('remote: Total'):
                        if line.startswith('From') or line.startswith('remote: Total') \
                                or line.startswith('POST') or line.startswith(' ='):
                                continue
                        elif line.startswith('warning:'):
                                print >> sys.stderr, line
                                continue
...

그런데, 위와 같이 하여도 에러는 여전하였다.

Git을 다룬다는 것 자체도 좀 마이너하고, 특히나 GitPython을 다루는 분들이 많지 않고...
자료를 찾기가 너무 어려워서 다시 원점으로 돌아가서 현재 개발중인 코드를 살펴보다가 답을 찾았다.

...
                # read head information
                fp = open(join(self.repo.git_dir, 'FETCH_HEAD'),'r')
                fetch_head_info = fp.readlines()
                fp.close()

                assert len(fetch_info_lines) == len(fetch_head_info), "len(%s) != len(%s)" % (fetch_head_info, fetch_info_lines)

                output.extend(FetchInfo._from_line(self.repo, err_line, fetch_line)
                                                for err_line,fetch_line in zip(fetch_info_lines, fetch_head_info))

                finalize_process(proc)
                return output
...

에러메시지를 출력하는 부분이 위와 같이 있는데, 그냥 확 주석처리해버리면 된다.

...
        # read head information
        fp = open(join(self.repo.git_dir, 'FETCH_HEAD'),'r')
        fetch_head_info = fp.readlines()
        fp.close()
       
        # NOTE: HACK Just disabling this line will make github repositories work much better.
        # I simply couldn't stand it anymore, so here is the quick and dirty fix ... .
        # This project needs a lot of work !
        # assert len(fetch_info_lines) == len(fetch_head_info), "len(%s) != len(%s)" % (fetch_head_info, fetch_info_lines)
       
        output.extend(FetchInfo._from_line(self.repo, err_line, fetch_line)
                        for err_line,fetch_line in zip(fetch_info_lines, fetch_head_info))
...

프로젝트 담당자도 인정했다시피 이렇게 주석처리하는 것이 정석은 아니다.
여력이 되시는 분은 이 부분에 대해서 도움을 주면 좋을 것 같다.


뭐 여하튼... 문제 해결!!!

반응형


▶ restraint : 규제, 통제, 제한, (물리력을 동원한) 구속, 안전벨트




뭔가 액션물이나 스릴러물이 보고파서 찾다가... 포스터보고 냅다 선택한 영화


원제목은 단지 Restaint 인데,
국내에선 접두어가 붙었다. "테레사 팔머"



여주인공의 이름을 붙이면 흥행에 도움이 될 것이라고 판단한 것이겠지...

테레사 팔머(Teresa Mary Palmer)는 1986년생으로 오스트레일리아 출신 여배우이다.


희한하게 위키피디아에서 구한 사진은 그다지 예쁘지 않은 것 같다.
영화에선 이보다는 훨씬 예쁘게 나온다.

무남독녀로 태어났지만, 3살 때 부모는 이혼을 했다고 한다.
아빠 밑에서 컸는데, 재혼한 부모님 사이에선 형제, 자매들이 있다.

2005년부터 활동을 시작했는데,
이 작품(Retraint)으로 본격적인 주목을 받은 것 같다. 상도 받고...

헐리우드로 넘어온 것은 "점퍼(Jumper)"에 캐스팅이 되면서였지만
최종 캐스팅에서는 제외되면서 다시 오스트레일리아로 되돌아가게 된다.

결국은 "그루지2(The Grudge2, 2006)"의 조연을 통해서 헐리우드 진출에 성공한다.

하지만 그 이후 최근에는 유명한 영화의 주연도 하고 있고,
활발한 활동을 많이 하고 있다.

"아이 엠 넘버 포(I Am Number Fiur, 2011)"에서도 주연(넘버6)을 했고
"웜 바디스(Warm Bodies, 2013)"에서 주연(줄리)을 하고 있다.

2014년에만 주연으로 5작품이나 있을 정도다.

아! 이 아가씨는 배우이자 감독인 "마크 웨버(Mark Webber)"와
2013년에 결혼을 해서 2014년에 아들 한 명을 출산하였다.

뭐 여하튼... 이 영화에서 팔머는... 섹시한 아가씨로
상당한 노출을 보여주고 있다.

그래서 그것을 홍보의 큰 아이템으로 사용하고 있는 것이겠지...



아! 이 영화는 2008년도 오스트레일리아 작품이다.
우리나라에선 2013년도에 개봉이 되었는데,
아마도 테레사 팔머가 좀 유명해지니 뒤늦게 들여오면서
테레사 팔머를 팔아먹는 것으로 보인다.
노출도 좀 있으니...




영화 내용을 조금 설명하자면,
포스터에 보이는 것처럼 3명의 배우가 메인으로 이야기를 끌고 간다.

남자 하나와 여자 하나는 문제아 커플로
살인을 하고선 쫒기는 입장이다.
그러다가 웬 집으로 잠시 피난을 갔는데
그 집에 살고 있는 남자는
오픈된 공간으로 나가지 못하는 정신병을 앓고 있다.
그러다가 여자와 정신병 환자인 남자가 눈이 맞고...

뭐 그런 말 그대로 드라마 스릴러 영화다.
테레사 팔머 덕분에 에로틱 스릴러라고도 한다.



이 영화의 구성은
스톡홀름 증후군 + 리마 증후군 + 테레사 팔머
로 되어 있다.



이 영화에서
가슴, 엉덩이를 비롯해서 베드신까지를
여러번 보여주고 있는데
최근 잘 나가고 있는 테레사 팔머 입장에서는 좀 그렇지 않을까 한다.
미국 나이로 18세... 우리나라 나이로 20세 때인데...




뭐 킬링 타임용으로...
그리고 최근 잇걸, 힛걸인 테레사 팔머 보는 재미로...
스릴러 좋아하시는 분들이라면 그냥 저냥 볼만한 것으로...
나쁘지는 않은 영화다.


IMDb   평점 : 6.20
네이버 평점 : 6.80
나만의 평점 : 6.55


Naver
http://movie.naver.com/movie/bi/mi/basic.nhn?code=75741
Wikipedia
http://en.wikipedia.org/wiki/Restraint_(film)
IMDb - Internet Movie Database
http://www.imdb.com/title/tt0441782/

[출처]
* 포스터 및 스크린샷은 위키피디아에서 퍼왔음을 밝힙니다.
(영화 관련 저작권 괴담은 무서워요~)
[ 주의 사항 ]
어디까지나 개인적인 영화평을 적는 공간이니만큼,
개인의 취향은 존중해주시면 감사하겠습니다.
건전한 비판이나 조언은 언제든 환영입니다!!!

반응형

Git의 데이터들을 다루기 위해서 Python을 이용해서 스크립트를 종종 만들고 있다.

지금까지는 subprocess를 사용해서
외부 명령어(git)를 실행하고 그 결과를 String으로 받아서 파싱하는 방식으로 만들었는데...
(혼자서 나만의 Git Class를 만들어서, 쿵짝쿵짝... ^^)


Python Library로 제공되는 것이 있지 않을까 좀 찾아보았더니... 당연히(?) 있다!

GitPython 0.3.2 RC1 (Python Git Library) : 2011-07-06
   https://pypi.python.org/pypi/GitPython/0.3.2.RC1

Package Documentation
   GitPython is a python library used to interact with Git repositories.

Author                            : Sebastian Thiel, Michael Trier
Documentation                : GitPython package documentation
Home Page                     : http://gitorious.org/projects/git-python/
License                          : BSD License
Requires                         : gitdb (>=0.5.1)
Package Index Owner      : Sebastian.Thiel, mtrier
Package Index Maintainer : Sebastian.Thiel
DOAP record                   : GitPython-0.3.2.RC1.xml

gitdb 0.5.4 (Git Object Database) : 2011-07-05
   https://pypi.python.org/pypi/gitdb

Package Documentation
   GitDB is a pure-Python git object database

Author                       : Sebastian Thiel
Documentation           : gitdb package documentation
Home Page                : https://github.com/gitpython-developers/gitdb
License                     : BSD License
Requires                    : async (>=0.6.1), smmap (>=0.8.0)
Package Index Owner : Sebastian.Thiel
DOAP record              : gitdb-0.5.4.xml


Ubuntu를 사용하게 되면 정말 편리한 점 중에서 한 가지가 바로 Package 관리인데...
주어진대로 사용을 하면 편리하지만, 직접 설치해서 뭔가 하려하면 오히려 번거로운 부분도 많다.

Python도 마찬가지인데 Python과 관련된 전부를 다운로드 받아서 직접 설치한 것이 아니라면
그 외 나머지들도 그냥 패키지로 설치하는 것이 편리하다.

위의 라이브러리들도 마찬가지인데...
이미 Python을 Ubuntu에서 제공하는 패키지로 설치해서 사용하고 있기에,
그냥 Ubuntu에서 제공해주는 패키지로 설치를 해보려고 했는데...

아래와 같이 하면 설치는 되는데... Ubuntu 버전에 따라 제공하는 버전이 다르다.

$ sudo apt-get install python-git

현재(2014.06) 제공하는 버전은 아래와 같다.

 Version  Release   python-git version 
 14.04  Trusty Tahr  0.3.2~RC1-3 
 13.10  Saucy Salamander  0.3.2~RC1-2 
 13.04  Raring  0.3.2~RC1-1
 12.04  Precise Pangolin  0.1.6-1
 10.04  Lucid Lynx  0.1.6-1 

위와 같이 설치하면 편하기는 하지만, 쓸데없는(?) 부가 패키지들도 같이 설치를 한다.

$ sudo apt-get install python-git
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다      
상태 정보를 읽는 중입니다... 완료
다음 패키지를 더 설치할 것입니다:
  git git-man liberror-perl libjs-jquery python-async python-gitdb python-smmap
제안하는 패키지:
  git-daemon-run git-daemon-sysvinit git-doc git-el git-email git-gui gitk gitweb git-arch git-bzr
  git-cvs git-mediawiki git-svn javascript-common
다음 새 패키지를 설치할 것입니다:
  git git-man liberror-perl libjs-jquery python-async python-git python-gitdb python-smmap
0개 업그레이드, 8개 새로 설치, 0개 제거 및 0개 업그레이드 안 함.
3,780 k바이트 아카이브를 받아야 합니다.
이 작업 후 23.5 M바이트의 디스크 공간을 더 사용하게 됩니다.
계속 하시겠습니까? [Y/n]

특히 git과 관련한 패키지들도 설치를 하게 되는데, git을 source로 직접 설치한 경우 불필요하고 번거롭기만 하다.


그러면, python-git을 개별 설치하려면 어떻게 해야할까?!
원하는 최신 버전으로 설치하기 위해서는 다음과 같이 수행하자.

$ sudo apt-get install python-setuptools python-dev
$ sudo easy_install GitPython

간단하다.
현재(2014.06) 설치되는 버전은 '0.3.2~RC1'이다.



잘 동작하는지 테스트를 해보기 위해서는 다음과 같이 해보자.



아래 샘플 코드로 돌려보자~

#!/usr/bin/python
# -*- coding: utf-8 -*-

import git
import os
import sys
import time

if __name__ == "__main__":

        #for i in range(len(sys.argv)):
        #       print "sys.argv[%d] = '%s'" % (i, sys.argv[i])

        #repo = git.Repo.clone_from( URL_SOURCE, PATH_TARGET )


        if len(sys.argv) < 2:
                sys.exit('Usage: %s repository-name' % sys.argv[0])

        if not os.path.isdir(sys.argv[1]):
                sys.exit('ERROR: Repository %s was not found!' % sys.argv[1])


        PATH_TARGET = sys.argv[1]
        repo = git.Repo( PATH_TARGET )

        for remote in repo.remotes:
                print "[ " + str(remote) + " branches ]"

                for branch in getattr(repo.remotes, str(remote)).refs:
                        print " " + str(branch).replace( str(remote)+"/", "" )

                        for commit in repo.iter_commits(branch, max_count=3):

                                print ""
                                print "         Commit          : ", commit
                                print "         Author          : ", commit.author, ", (",
                                print time.asctime(time.gmtime(commit.authored_date)), ")"
                                print "         Committer       : ", commit.committer, ", (",
                                print time.asctime(time.gmtime(commit.committed_date)), ")"
                                print "         Encoding        : ", commit.encoding
                                print "         Summary         : ", commit.summary
                                print "         Delta LOC       : ", commit.stats.total['lines'], " (+",
                                print commit.stats.total['insertions'], ", -",
                                print commit.stats.total['deletions'], ")"
                                #print commit.stats.files
                                #print "                Message         : ", commit.message
                                #print "                Parents         : ", commit.parents

        print ""

        print "[ Local branches ]"
        for branch in repo.branches:
                print " " + str(branch)

                #commits = list( repo.iter_commits(branch, max_count=10) )

                for commit in repo.iter_commits(branch, max_count=3):

                        print ""
                        print "         Commit          : ", commit
                        print "         Author          : ", commit.author, ", (",
                        print time.asctime(time.gmtime(commit.authored_date)), ")"
                        print "         Committer       : ", commit.committer, ", (",
                        print time.asctime(time.gmtime(commit.committed_date)), ")"
                        print "         Encoding        : ", commit.encoding
                        print "         Summary         : ", commit.summary
                        print "         Delta LOC       : ", commit.stats.total['lines'], " (+",
                        print commit.stats.total['insertions'], ", -",
                        print commit.stats.total['deletions'], ")"
                        #print commit.stats.files
                        #print "                Message         : ", commit.message
                        #print "                Parents         : ", commit.parents


공식 매뉴얼과 가이드는 다음에서 확인할 수 있다.

   http://pythonhosted.org/GitPython/0.3.2/tutorial.html
   http://pythonhosted.org/GitPython/0.3.2/reference.html

반응형



 
한동안 영어 회화에 익숙해지고 싶어서 헐리우드 영화나 미드만 보다가
간만에 일어를 들어보고자 선택한 비교적 최근 일본영화


영어/일어 바보인 나는 영화제목을 바로 알아보지 못했다.



그래서 준비한
미리 알아두면 좋을 용어/단어

   . Butler : 집사(대저택의 남자 하인 중 책임자)
   . 번견 : a watchdog; a house dog. 집을 지키거나 망을 보는 개.





만화가 원작인 영화다.
2006년도 스퀘어에닉스의 잡지 '월간G판타지'에서 연재를 하고
연재를 하다가 유명해지니 단행본이 나오고
단행본이 유명해지니 애니메이션이 나오고
애니메이션이 유명해지니 2기까지 나오고
그러다가 영화까지 나왔다.
말 그대로 대박!

뮤지컬로도 나오고, 책으로도 나오고,
심지어 닌텐도DS 게임으로까지 나왔다는 것은 덤으로~



원작자는 Yana Toboso (枢 やな Toboso Yana. born January 24, 1984)이다.
올해 한국 나이로 31살 먹은 일본 여성 만화가인데,
2006년도에 스퀘어에닉스의 잡지에서 "Rust Blaster"라는 작품으로 등단을 했다고 한다.

그 작품 역시 뱀파이어와 사람이 나오는 만화였다고 한다.
흑집사는 악마가 나오고.... 이 작가는 이런걸 좋아하나보다.

그런데, 많이 찾아보진 못했지만 등단한 작품 외에는
흑집사 밖에 안보인다..... 하나로 뽕을 뽑고 있나?!



애니메이션은 2008년도에 1기가 시작을 했다.
25분 분량으로 24화로 구성되었는데,
특이한 것은 등급이 BA-17 이다.
즉, 17세 이상 등급인 것이다.

흑집사 2기는 2010년도에 방영을 하였고,
흑집사 3기는 2014년 7월부터 방영을 시작한다고 한다.



이번에는 남자 주인공을 살펴보자.
Hiro Mizushima (水嶋 ヒロ,  1984)는 2005년 고쿠센 2기의 조연으로 데뷔를 했다.
조연이라고는 하지만 개인적으로는 상당히 인상이 깊은 캐릭터였다.

2009년까지는 드라마 위주로 활발히 활동을 하다가
2010년 부터는 책도 쓰고 뮤직비디오 연출도 하고 출연도 하고
다른 일을 많이 하고 있는 것 같다.




여자 주인공은 개인적으로 참 좋아하는
Ayame Goriki (剛力 彩芽, 1992)는 태국어머니와 일본아버지 사이에서 태어난 아가씨로
초등학교 때 본인이 모델이 되고 싶어서 연예계에 뛰어들었다고 한다.

2007년부터 드라마에 출연을 시작했지만,
본격적으로 활동하기 시작한 것은
2011년 '소중한 것은 전부 네가 가르쳐 주었어' 출연하면서 부터라고 한다.
이 때부터 숏커트 머리를 했단다.

'고리키'라는 성은 일본에서 8가구만 남은 희귀 성씨라고 한다.

개인적으로
2012년 후지TV의 "미래일기 -ANOTHER:WORLD" 드라마에서의
캐릭터가 가장 마음에 들었다!







이제 영화 이야기를 해보겠다.

일단 애니메이션과는 약간의 설정이 달라진 것으로 보인다.
(영화보자마자 애니메이션 구해서 1편부터 보기 시작했다)

우선 시대적 배경이 애니메이션에서는 중세 귀족 시대를 표방하고 있는 듯 하지만,
영화에서는 현대 시대 또는 약간의 미래 시대를 표방하고 있다.

그리고 흑집사의 성격도 애니메이션에서는
보다 더 집사의 업무에 충실하고 따뜻한 성격으로 유순해 보이는 반면,
영화에서는 조금 더 악마의 본연의 모습에 충실하고 있다.

애니메이션에서도 음악이 멋지게 나오는데,
영화에서는 조금 더 중후하고 웅장하게, 더 분위기 있게 나온다.

아! 어디까지나 지금 흑집사 1기의 3편 정도까지 보고 있는 상황에서 작성하고 있는 내용이다.

아! 그리고 애니메이션에서의 저택보다 영화에서의 저택이 훨씬 더 크고 멋지다.


애니메이션의 후반부에 나올 이야기인지는 모르겠지만,
영화의 도입부에서 설명을 하고 있는 제국과 동측 제국 사이의 관계,
그리고 '여왕의 개(번견)'이라는 설정 등에 대해서는
애니메이션 초반엔 나오지 않고 있다.



분위기는 약간 무겁고, 중후하고, 웅장하게 표현을 하고 있지만
그냥 가볍게 킬링타임용으로 볼만하다.

애니메이션을 보고 나서 영화를 봤다면 더 재미있을 것 같기는 하지만,
배경지식 없이 그냥 영화만 봐도 충분히 볼만한 것 같다.

남주와 여주, 그리고 가정부 3명 정도의 캐릭터로 만들어진 영화다.

그 外에 많은 것을 기대하지는 말자.


아! 그리고 이 영화의 특징 중 하나는,
일본말 잘하는 외국인 배우들을 엄청 많이 볼 수 있다.
좀 특이한 경험!?




7월에 3기 애니메이션도 나온다고 하니,
만화, 애니메이션, 뮤지컬, 영화 등의 다양한 컨텐츠를
즐겨보는 것도 괜찮지 않을까 한다.


킬링타임용으로 추천!


IMDb   평점 : 6.20
네이버 평점 : 6.32
나만의 평점 : 6.99


Naver
http://movie.naver.com/movie/bi/mi/basic.nhn?code=115323
Wikipedia
http://en.wikipedia.org/wiki/Black_Butler
IMDb - Internet Movie Database
http://www.imdb.com/title/tt2630336/
Facebook
https://www.facebook.com/Kuroshitsuji.Live

[출처]
* 포스터 및 스크린샷은 공식 페이스북에서 퍼왔음을 밝힙니다.
(영화 관련 저작권 괴담은 무서워요~)
[ 주의 사항 ]
어디까지나 개인적인 영화평을 적는 공간이니만큼,
개인의 취향은 존중해주시면 감사하겠습니다.
건전한 비판이나 조언은 언제든 환영입니다!!!

반응형

도구 성능 테스트를 위해서 용량이 큰 파일이 필요한데,
마땅히 구할 방도가 없어서 고민하던 중 필요한 사이즈의 더미 파일을 만들어 볼 생각을 해봤다.

그랬더니, 이와 같은 고민을 하는 사람이 많다는 사실을 알게 되었고,
이러한 파일을 만드는 방법을 제공해주고 있다는 사실도 알게 되었다.

$ dd if=/dev/zero of=[filename] bs=[blocksize] count=[repeat]

 실제 사용 방법은 아래와 같다.

$ dd if=/dev/zero of=./test bs=100M count=2

위와 같이 하면 200M 크기의 test라는 이름의 파일이 생성된다.


count의 용도는 다음과 같다.

$ dd if=/dev/zero of=./10G bs=10G count=1
dd: memory exhausted by input buffer of size 10737418240 bytes (10 GiB)

10GB짜리 파일 하나를 만들려고 하는데 10GB x 1 count로 만들면 위와 같이 메모리 에러가 발생할 수 있다.

$ dd if=/dev/zero of=./10G bs=1G count=10
10+0 레코드 들어옴
10+0 레코드 나감
10737418240 바이트 (11 GB) 복사됨, 74.6861 초, 144 MB/초

그런데, 위와 같이 1GB 짜리를 10번 반복해서 만들라고 하면 된다!
이러한 것을 잘 이용하면 더 멋지게 컴퓨터 생활을 할 수 있을 것이다.


반응형

HDD를 물리적으로 추가하였는데, Ubuntu에서 자동으로 붙지 않는다.
USB 같은 것은 자동으로 잘 잡아주면서... 이거 왠지 사용자 친화적이지 않다.

그래서, CLI로 추가 작업을 진행해주어야 한다.


1. HDD 잘 인식하는지 확인하기

   - HDD 관련 작업은 fdisk 명령어로 대부분 처리할 수 있다.

$ sudo fdisk -l

Disk /dev/sda: 53.7 GB, 53687091200 bytes
255 heads, 63 sectors/track, 6527 cylinders, total 104857600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00089aab

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048   100663295    50330624   83  Linux
/dev/sda2       100665342   104855551     2095105    5  Extended
/dev/sda5       100665344   104855551     2095104   82  Linux swap / Solaris

Disk /dev/sdb: 214.7 GB, 214748364800 bytes
255 heads, 63 sectors/track, 26108 cylinders, total 419430400 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/sdb doesn't contain a valid partition table

   - /dev/sda 는 잘 연결되어 있고, /dev/sdb는 물리적으로만 잘 붙어있다는 것을 확인할 수 있다.
   - 친절히 제일 마지막 줄에 파티션 테이블도 안만들어져 있다고 알려주고 있다.


2. 파티션 작업

   - 앞에서 찾아낸 작업해야할 HDD를 지정해서 파티션 작업을 진행하면 된다.

$ sudo fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0xb9110add.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-419430399, default 2048): (enter)
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-419430399, default 419430399): (enter)
Using default value 419430399

Command (m for help): p

Disk /dev/sdb: 214.7 GB, 214748364800 bytes
255 heads, 63 sectors/track, 26108 cylinders, total 419430400 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xb9110add

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048   419430399   209714176   83  Linux

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

   - 각자의 상황에 따라 위와 같이 출력되지 않거나 다른 옵션을 선택해야할 경우도 있을 것이다.
   - 일단은 필자의 상황으로 설명을 하도록 하겠다. 다양한 옵션에 대한 설명은 생략!


3. 포맷

   - 파티션 작업을 했다고 바로 사용할 수는 없다. 포맷을 하고 사용해야 한다. 파일시스템을 만들어주는 과정이다.

$ sudo mkfs.ext4 /dev/sdb1
mke2fs 1.42.9 (4-Feb-2014)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
13107200 inodes, 52428544 blocks
2621427 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
1600 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
 4096000, 7962624, 11239424, 20480000, 23887872

Allocating group tables: done                           
Writing inode tables: done                           
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

   - ext4가 아닌 다른 파일시스템을 사용할 사람은 바꾸면 된다.


4. UUID 확인

   - 앞에서 붙인 HDD를 다루기 위해서는 고유의 값인 UUID를 알아야 한다.

$ ls -l /dev/disk/by-uuid/
합계 0
lrwxrwxrwx 1 root root 10  6월 22 18:22 29f6905f-be40-4321-b7c0-7658f2cb4c3e -> ../../sdb1
lrwxrwxrwx 1 root root 10  6월 22 18:06 822b2062-39d1-4ba3-ab4d-fdc332fec050 -> ../../sda5
lrwxrwxrwx 1 root root 10  6월 22 18:06 94200076-d0b4-4dea-97d4-ee5bedc01bf5 -> ../../sda1


5. mount 등록

   - 방금 만든 파티션은 지금 접근해서 사용할 수는 없다. 파티션을 마운트(mount) 해주어야 사용할 수가 있는 것이다.
   - 하지만, 한 번만 사용할 것이 아니라 매번 부팅할 때마다 마운트 되는 것이 필요하다.

$ sudo mkdir /srv/repository

   - 마운트 하고자 하는 경로의 디렉토리를 미리 만들어 두자.

$ sudo nano /etc/fstab

...
UUID=29f6905f-be40-4321-b7c0-7658f2cb4c3e       /srv/repository ext4    errors=remount-ro       0       1

   - 부팅 時 자동으로 마운트할 내용을 위와 같이 적어주면 된다.

$ sudo mount -a

   - 재부팅하지 않아도 마운트 시킬 수 있다.

$ sudo chown hp14:hp14 /srv/repository

   - 권한은 마운트 뒤에 설정해주면 적용된다.


6. 확인

   - 잘 붙었는지 확인해보자.

$ df -h
Filesystem      Size     Used    Avail   Use%    Mounted on
/dev/sda1        48G       11G     35G     24%     /
none               4.0K          0     4.0K      0%      /sys/fs/cgroup
udev               991M     4.0K    991M     1%      /dev
tmpfs              201M     900K    200M    1%      /run
none               5.0M          0     5.0M    0%      /run/lock
none             1002M       76K   1001M   1%      /run/shm
none              100M        40K    100M   1%      /run/user
/dev/sdb1       197G       60M    187G   1%      /srv/repository



여기까지 하면 끄~~읕


반응형

윈도우7을 사용하게 되면서,
(최근까지 XP만 사용한 고리타분한 주인장^^) 정말 신경쓰이게 거슬리는 것이 하나 있었다.


사용하지 않을, 설치하지 않을 선택적 업데이트 목록이 자꾸 눈에 보이는 것이다.
매일 업데이트를 확인해서 설치를 해야 직성이 풀리는 최신병 환자로써 정말 신경쓰인다!!!

안보이게 하기는 정말 쉽다.


설치하기 싫은 언어팩들을 선택해서(체크박스가 아니다!),
오른쪽 마우스 버튼을 눌러 메뉴에 나오는 [업데이트 숨기기]를 선택하면 된다.


필요한 업데이트만 보인다!

하아~ 손에 박힌 쪼꼬만 가시를 쏙~ 뽑아낸 기분이다.


반응형

기본 한글입력기인 ibus를 사용하는 것은 왠지 불편하다.
그래서 대중적인, 리눅스를 사용하는 한국인이라면 왠지 다 알고 있어야 할 것 같은 nabi를 사용하곤 한다.

설치는 정말 쉽다.

sudo apt-get install nabi

그런 다음 [설정] - [언어 지원] - [키보드 입력기]를 선택하면 된다.


"Hangul"로 설정하고 나서 로그아웃/로그인 또는 재부팅을 하면 다음과 같은 팝업을 볼 수 있다.


이제는 편하게 한글을 사용하면 되긴 하는데... 여기에서 이슈는 저 팝업창을 없애버리고 싶은 충동이다!

12.04 버전까지만해도 시스템트레이로 옮기기를 하면 되었느데,
최근에는 이러한 기능을 공식적으로 지원하지 않는다. 지원하지 않는 것이 아니라 막았다고 보는 것이 맞을 것이다.

사실 이는 Ubuntu 측에서 지원하지 않는 것이 아니라 다른 방식을 지원하는 것이고,
새로운 방식을 nabi가 지원하지 않는다라는 것이 더 정확한 대답일 것이다.


물론 우리의 뛰어난 리눅서분들은 이러한 상황을 극복할 수 있는 방법들을 만들어내었다.
그런데, 좀 문제가 있는 것이... 기존 패키지 내용을 패치하는 방식을 통해서 해결을 하고 있는 것이다.
PPA 추가를 통해서 제공하지 않는 기능을 제공하도록 패치를 하는 것이다 보니
지속적으로 사용 가능한지에 대해서 보장을 할 수가 없다.


깔끔하게 사용하기 위해서는 IBus 방식을 사용하던지 아니면
그냥 위와 같이 별도의 팝업으로 뜨도록 내버려두는 것을 권장한다.

반응형

+ Recent posts