성인을 위한 동화같은 컨셉으로 보여서 선택한 영화....!


귀여운 인형의 대명사인 테디베어가 술, 여자, 마약을 즐긴다는 컨셉 ! 브라보 !

 


대박을 쳤다 !!!
북미 박스오피스 1위까지 차지한 영화다.


세스 맥팔레인 (Seth MacFarlane)

1973년 아저씨로 이 영화의 제작, 연출, 각본, 제작까지 모두 담당했다.
그리고 주인공 테드의 목소리까지 맡았다.

본래 애니메이션을 공부했으며,
우리는 잘 모르지만 미국에서는 나름 잘 알려진 성인 애니메이션 "Family Guy"의
제작자이자 목소리 주연도 했었고 지금도 하고 있다.

조연이나 단역 출연도 많이 했고,
프로듀싱이나 각본도 많이 했다.
심지어 노래도 부르는 가수라는...

정말 이것 저것 정말 ... 욕심쟁이 우후훗!!!!!



이 영화를 쉽게 설명하면,
B급 웰메이드 코미디
영화이다!


영화 도입부부터 영화가 끝날 때까지 좀 호흡이 길다.
남자 주인공의 어렸을 때부터 성인이 되어 결혼을 할 때까지의
성장기 드라마처럼 느껴진다.

호흡이 길다고 해서 지루하다는 이야기는 아니다.


다만, 미국 정서와 문화에 기반한 유머 코드들이 있어서
가끔 같이 웃지 못할 때가 아쉬웠다.

이 부분은 필자에게만 해당될 수도 있겠지만
순수 한국 토박이들이라면 비슷할 것이다.



이 영화에 까메오도 많이 출연을 했다.

"Flash Gordon"으로 유명한 "Sam J. Jones"
"Green Lantern"의 히어로 "Ryan Reynolds"
그리고 너무 너무 유명한 "노라 존스(Norah Jones)"
"Family Guy"의 목소리 연기로 유명한 배우들...



하지만, 릴리스 시기를 조율한 것을 보면 조금 불쌍하기도 하다.
"Ice Age: Continental Drift", "G.I. Joe: Retaliation"와 경쟁을 피하기 위해서 뒤로 미뤘기 때문이다.
하지만, 결론적으로 대박이 났으니 뭐~ ^^



성적 표현도 그렇고 하는 짓들도 그렇고
테디베어가 술, 담배, 여자, 마약을 하는 것도 그렇고...

분명 이 영화는 B급을 지향하는 저질 영화다.

하지만, 웰메이드다.
저급한데 저급하지가 않다.

나만 이렇게 생각하는 것은 아닌 것 같다.
흥행성적도 그렇고 각종 노미네이트된 내역을 봐도 그렇고....^^


조금 아쉬운 것은 호흡이 약간 길다는 정도!?
그리고 조금은 이해못할 유머가 있다는 정도!?




IMDb   평점 : 7.10
네이버 평점 : 7.59
나만의 평점 : 7.21


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

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

반응형

한 달에 한 번 정도 업데이트가 나오더니 이번에는 2달이 넘게 걸려서 새로운 버전이 릴리스 되었다.

VirtualBox 4.2.14 (released 2013-06-21)


This is a maintenance release. The following items were fixed and/or added:


VMM: another TLB invalidation fix for non-present pages

VMM: fixed a performance regression (4.2.8 regression; bug #11674)

GUI: fixed a crash on shutdown

GUI: prevent stuck keys under certain conditions on Windows hosts (bugs #2613, #6171)

VRDP: fixed a rare crash on the guest screen resize

VRDP: allow to change VRDP parameters (including enabling/disabling the server) if the VM is paused

USB: fixed passing through devices on Mac OS X host to a VM with 2 or more virtual CPUs (bug #7462)

USB: fixed hang during isochronous transfer with certain devices (4.1 regression; Windows hosts only; bug #11839)

USB: properly handle orphaned URBs (bug #11207)

BIOS: fixed function for returning the PCI interrupt routing table (fixes NetWare 6.x guests)

BIOS: don't use the ENTER / LEAVE instructions in the BIOS as these don't work in the real mode as set up by certain guests (e.g. Plan 9 and QNX 4)

DMI: allow to configure DmiChassisType (bug #11832)

Storage: fixed lost writes if iSCSI is used with snapshots and asynchronous I/O (bug #11479)

Storage: fixed accessing certain VHDX images created by Windows 8 (bug #11502)

Storage: fixed hang when creating a snapshot using Parallels disk images (bug #9617)

3D: seamless + 3D fixes (bug #11723)

3D: version 4.2.12 was not able to read saved states of older versions under certain conditions (bug #11718)

Main/Properties: don't create a guest property for non-running VMs if the property does not exist and is about to be removed (bug #11765)

Main/Properties: don't forget to make new guest properties persistent after the VM was terminated (bug #11719)

Main/Display: don't lose seamless regions during screen resize

Main/OVF: don't crash during import if the client forgot to call Appliance::interpret() (bug #10845)

Main/OVF: don't create invalid appliances by stripping the file name if the VM name is very long (bug #11814)

Main/OVF: don't fail if the appliance contains multiple file references (bug #10689)

Main/Metrics: fixed Solaris file descriptor leak

Settings: limit depth of snapshot tree to 250 levels, as more will lead to decreased performance and may trigger crashes

VBoxManage: fixed setting the parent UUID on diff images using sethdparentuuid

Linux hosts: work around for not crashing as a result of automatic NUMA balancing which was introduced in Linux 3.8 (bug #11610)

Windows installer: force the installation of the public certificate in background (i.e. completely prevent user interaction) if the --silent command line option is specified

Windows Additions: fixed problems with partial install in the unattended case

Windows Additions: fixed display glitch with the Start button in seamless mode for some themes

Windows Additions: Seamless mode and auto-resize fixes

Windows Additions: fixed trying to to retrieve new auto-logon credentials if current ones were not processed yet

Windows Additions installer: added the /with_wddm switch to select the experimental WDDM driver by default

Linux Additions: fixed setting own timed out and aborted texts in information label of the lightdm greeter

Linux Additions: fixed compilation against Linux 3.2.0 Ubuntu kernels (4.2.12 regression as a side effect of the Debian kernel build fix; bug #11709)

X11 Additions: reduced the CPU load of VBoxClient in drag'and'drop mode

OS/2 Additions: made the mouse wheel work (bug #6793)

Guest Additions: fixed problems copying and pasting between two guests on an X11 host (bug #11792)


seamless 관련 버그 픽스가 가장 눈에 띈다.

아래 환경에서 Guest 종료 후 재시작을 하면 Guest 윈도우 사이즈를 이전 것을 기억못하는 버그는 사라졌다 !

   - Host : Windows XP SP3
   - Guest : Ubuntu 12.04


그 외에는 그다지 눈에 띄는 부분은 잘 안보인다.


https://www.virtualbox.org/wiki/Downloads

Ubuntu, Window Host 모두에서 설치하고 사용하는데, 별다른 이상 증상은 보이지 않는다.
반응형

Git 에서 지원하는 기능 중의 한 가지가 바로 hooks 이다.
다른 형상관리 도구 또는 변경관리 도구에서는 trigger 기능이라고도 부른다.

예를 들어 개발자가 Local에서 commit을 한 것을 Remote로 push를 할 때에
어떤 작업을 실행하고 싶은 것이 있을 때 사용할 수 있는 기능이다.

Git의 어떤 행위를 수행 했을 때 특정 작업을 하도록 연결을 하고 싶다면 이 기능을 사용하면 되는 것이다.
 


Redmine에서는 Git을 저장소에 연결할 수 있다.


gitweb에 비해서 기능적으로는 조금 부족할 수도 있지만,
그에 비해서 훨씬 편리하고 예쁜 인터페이스를 자랑한다. 개인적으로 너무나 좋아한다.


그리고 Redmine은 Git의 commit을 작업으로 관리할 수도 있다.



그런데, 이렇게 아름다운 Redmine과 Git의 관계에 몇 가지 문제가 존재한다.
문제일 수도 있고, 그냥 이슈일 수도 있겠다.

1. Redmine과 Git은 같은 위치에 존재해야 한다.
   - Remote repository를 지원하지 않는 것은 정말 아쉽다.
   - mirroring 등의 방법으로 해결할 수는 있지만 문제는 문제다.

2. 대용량 repository 처리 시간에 따른 오류 발생 가능성이 있다.
   - Git 정보를 Web으로 처리하기 위해서 Redmine은 별도 가공을 해야 하는데 이 때 많은 시간이 소요된다.
   - Redmine은 웹으로 처리가 되다보니 지나치게 많은 소요시간이 걸리게 되면 Timeout이 되게 되는 것이다.
   - Apache의 Timeout 시간을 늘리는 것으로 임시조치는 할 수 있지만, 역시 문제는 문제다.

3. Git에 새로운 commit이 push 되었어도 Redmine에 실시간으로 반영되지 않는다.
   - 저장소 탭을 누군가 열어보기 전까지는 Redmine은 Git의 새로운 변경 내역을 알지 못한다.
   - 이 부분은 마땅히 해결할 방법이 없다. 관리자가 정기적으로 저장소 탭을 실행하곤 해야 하는 것이다.
   - 그런데, 이 때 Git의 hooks 기능을 사용하면 된다 !!!



정리해보면,
Redmine에서 형상관리 도구로 Git을 지원을 해주고 있지만 몇 가지 제약사항이 있다.
그 중 한 가지는 Git 저장소의 변경 사항이 실시간으로 Redmine에 반영이 되지 않는다는 것이다.
그래서 Git의 hooks 기능을 이용해 저장소의 변경 사항이 바로 바로 Redmine에 반영이 되도록 해보겠다.


원하는 결과를 얻기 위해서는 고려해야 할 사항들이 있다.
   - 우리가 원하는 기능을 수행할 시기는 Git Repository에 commit이 들어온 다음이다.
   - 우리가 원하는 기능은 Redmine의 저장소 페이지를 자동으로 여는 것이다.
   - Redmine의 저장소 페이지를 열도록 하기 위해서는 페이지를 열 수 있는 권한이 필요하다.


그런데, 이 부분을 처리하기 위해 알아 보던 중 또 하나 새로운 사항을 알게 되었다.

 


Redmine에서 설정 부분의 저장소 부분에 대한 것들을 살펴보자.

아래 적힌 내용은 저자가 테스트해본 결과에 기반한 것이다.
저자가 잘못 알고 있는 부분이 있다면 언제든 알려주기 바란다 !!!!


□ 커밋(commit)된 변경묶음을 자동으로 가져오기
   - Redmine 탭에서 '저장소'를 클릭하여 페이지를 열 때 저장소의 변경 사항을 받아오게 한다.
   - 선택하지 않으면 변경된 사항을 가져오지 않는다. 이런 경우 별도로 cron 작업을 통해서 변경 사항을 적용한다.

□ 저장소 관리에 WS를 사용
   - Redmine 공식적인 설명을 보면, SVN 저장소를 생성하기 위한 스크립트를 설치했을 때 활성화 시켜야 한다고 한다.
   - 그런데, Git refresh를 할 때에도 활성화 되어야 한다. 이유는 아직 모르겠다.

□ API 키
   - 실행 권한을 받기 위해서는 '키 생성'을 하고 이를 사용하면 된다.




자~ 서론이 길었다. 이제 시작해보자.

우리가 원하는 것은 현재 Redmine에 있는 하나의 프로젝트에서 사용하고 있는 Git repository에
새로운 commit이 들어오면 Redmine에게 정보를 리프레쉬 하라고 명령을 보내는 것이다.


1. Redmine 준비하기
   - 위 스크린샷과 같이,
   - [ 관리 → 설정 → 저장소 ] 메뉴에서 설정을 하자.
      ▷ 커밋(commit)된 변경묶음을 자동으로 가져오기 : 활성화
      ▷ 저장소 관리에 WS를 사용 : 활성화
      ▷ API 키 : 키생성


2. 저장소 경로 확인하기
   - 어떤 저장소인지 확인을 하자.



3. Git repository에 hook 설정하기
   - [ post-receive ] hook을 작성하자.

$ cd /srv/repository/barerepo.git
$ cd hooks
$ nano ./post-receive

   - [ _apikey ] 값은 위에서 생성한 값을 이용하면 된다.
   - [ _projectid ] 값은 프로젝트의 식별자를 사용한다.

#!/bin/bash

_apikey=UDcdoUtTm4a15xycCH52
_projectid=test

curl "http://127.0.0.1/redmine/sys/fetch_changesets?key=$_apikey&id=$_projectid"&

$ chmod +x ./post-receive

이걸로 끝이다.

그런데, 실제 push 작업을 해보면 무언가 좀 이상한 것이 보일 것이다.

$ git push
Counting objects: 3, done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 233 bytes | 0 bytes/s, done.
Total 2 (delta 1), reused 0 (delta 0)
remote:   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
remote:                                                  Dload  Upload   Total    Spent     Left    Speed
remote: 100     1       0     1          0     0       0           0     --:--:--  0:00:07 --:--:--     0
remote:  To /srv/repository/barerepo.git
   bbde6a2..1107f45  master -> master

push를 하게 되면 Remote repository 입장에서 commit을 받아들인 후 post-receive 명령까지 수행을 해야 한다.
push 작업이 마무리 되는 순간은 post-receive 스크립트가 모두 완료가 되는 때이다.

그래서, 이렇게 하는 것이 문제가 될 수도 있다. 개발자 입장에서는 commit만 push가 되면 되는데,
(개발자 입장에서) 알지 못할 작업 때문에 push가 완료되는데에 시간이 더 소요되기 때문이다.



단지 어떻게 하는지만 알고 싶은 사람은 여기까지면 충분~!!
조금 더 알고 싶은 사람을 위해 설명을 추가하면...

   - [ http://<redmine url>/sys/fetch_changesets?key=<key값> ]과 같이 사용해도 충분하다.
   - 다만, 위와 같이 사용할 경우 사용하고 있는 redmine 전체에 대해서 refresh 하게 된다.

   - 전체가 아니라 특정 프로젝트만 refresh 하고 싶은 경우 위와 같이 [ &id=<식별자> ]를 붙이면 된다.

   - redmine 가이드를 보면 Git repository 이름을 사용하게 되어있는데, 그렇게 하면 실행이 안되었다.
   - 기능 변경이 있던지, 아니면 뭔가의 오류로 보인다.

   - [ /sys/fetch_changesets ] 주소는 그냥 사용하면 된다.

   - 개발자의 개발 과정에 지장을 주기 싫다면 (push 명령의 완료 시점) 위와 같이 이벤트 드리븐 방식으로 하면 안된다.
   - cron 등의 방법을 사용해서 개발자 부담을 줄여주는 것도 고려해볼만 하다.
   - [ ruby /path_to_redmine/redmine/script/rails runner "Repository.fetch_changesets" -e production > /dev/null 2>&1 & ]


Redmine 공식 가이드는 아래와 같다.

http://www.redmine.org/projects/redmine/wiki/HowTo_setup_automatic_refresh_of_repositories_in_Redmine_on_commit

반응형

지속적인 통합을 지원해주는 가장 유명한 도구인 Jenkins는
Java로 만들어졌고 400여개 이상의 플러그인을 제공해주고 있다.

지속적인 통합이라는 말을 이해하기 힘든 분은 그냥 빌드 자동화 (Build Automation) 도구라고만 이해해도 된다.

본래 Hudson이라는 이름의 도구였는데 Oracle에 흡수되면서 발생한 이슈들로 인해서
2010년 투표를 통해 별도 분리를 하기로 결정을 하고 2011년에 Jenkins라는 이름을 달고 별도 프로젝트로 분리했다.

Hudson을 만든 사람으로 유명한 Kohsuke Kawaguchi는 여전히 Jenkins 개발에도 참여하고 있으며,
여전히 많은 plugin 개발에도 참여하고 있다.

사실 Kohsuke는 약 8년 정도 Sun Microsystems에서 근무를 했었다.
그러다가 2010년도에 Sun이 Oracle에 합병이 되면서 짧게 나마 Oracle에서 근무를 했었다.
이런 이유로 Hudson이 Oracle 소유가 되어버린 것 같다.

http://jenkins-ci.org/




1. Release vs LTS (Long-Term Support Release)

   - 실제 업무에 사용하기 위해서는 LTS 버전으로 설치 하는 것을 추천한다.



2. JDK installation

   - http://whatwant.tistory.com/438



3. Download

   - LTS 가장 최신 버전으로 다운로드
   - 설치 경로는 필자의 개인적인 취향 (개취존중 !)




4. Script

   - 사실 Jenkins를 실행하는 것은 정말 쉽다.
   - [ java -jar jenkins.war ] 명령만으로도 실행이 가능하다.

   - 하지만, 제대로 서버에서 Jenkins를 활용하기 위해서는 script를 만들어서 init.d 로 관리하는 것을 추천한다.

$ sudo nano /etc/init.d/jenkins

#!/bin/sh

DESC="Jenkins CI Server"
NAME="jenkins"
PIDFILE="/var/run/$NAME.pid"
#RUN_AS="jenkins"
RUN_AS="chani"
COMMAND="/usr/bin/java -- -jar /srv/install/jenkins/jenkins.war"

d_start() {
        start-stop-daemon --start --quiet --background --make-pidfile --pidfile $PIDFILE --chuid $RUN_AS --exec $COMMAND
}

d_stop() {
        start-stop-daemon --stop --quiet --pidfile $PIDFILE
        if [ -e $PIDFILE ]
                then rm $PIDFILE
        fi
}

case $1 in
        start)
                echo -n "Starting $DESC: $NAME"
                d_start
                echo "."
                ;;
        stop)
                echo -n "Stopping $DESC: $NAME"
                d_stop
                echo "."
                ;;
        restart)
                echo -n "Restarting $DESC: $NAME"
                d_stop
                sleep 1
                d_start
                echo "."
                ;;
        *)
                echo "usage: $NAME {start|stop|restart}"
                exit 1
                ;;
esac

exit 0

   - 나중에 빌드 서버를 제대로 활용하기 위해서 고려해야 하는 부분은 RUN_AS 부분이다.
   - 어떤 계정 권한으로 Jenkins를 실행할 것인지 명시하는 부분이다.

$ sudo chmod +x /etc/init.d/jenkins
$ sudo service jenkins start

   - 지금은 이렇게 직접 실행을 하지만, 이후부터는 재부팅 때 자동으로 실행이 된다.


   - 별다르게 설정하지 않으면 기본적으로 8080 포트를 사용한다.


설정이나 사용하는 방법에 대해서는 별도로 살펴보도록 하겠다.
일단은 실행해서 접속이 되는 것까지 진행한 것으로 만족하자 !!! ^^


(흑흑... 실은 내일 출근하려면 지금 자야한다.... 연휴의 첫째날..... 새벽 1시를 막 넘긴 시간에.... 흑흑....)
반응형

Redmine이 자랑하는 대표적인 기능 중 하나가 바로 간트(Gantt) 차트이다.
디자인이 비교적 예쁜 편이라서 많은 사람들이 그림파일로 착각을 하는 경우도 있지만 HTML로 만들어져 있다.


기특하게도 Redmine은 내보내기 기능도 제공을 해준다.
PDF 파일로도 내보내기가 가능하고, PNG 파일로도 내보내기가 가능하다.

그런데, PDF 파일 내보내기의 경우엔 별 문제가 없지만,
PNG 파일 내보내기의 경우에는 한글 출력에 문제가 있다.


한글 부분이 ????? 로 출력이 되는 것이다.
이는 한글 폰트 설정으로 인한 문제이다.

폰트 설정에 대한 내용은 [ config/ ] 디렉토리에 있는 [ configuration.yml ] 파일에서 셋팅을 해야 한다.

기존부터 사용하고 있었다면 그 파일을 그대로 사용하면 되고,
사용하고 있던 파일이 없다면 example 파일을 이용하면 편리하다.

$ cd /srv/install/redmine/config/
$ mv ./configuration.yml.example ./configuration.yml

이제 폰트를 셋팅해보자.

$ cd /srv/install/redmine/config/
$ nano ./configuration.yml

파일의 밑 부분을 살펴보면 [ rmagick_font_path: ] 부분이 있다.
여기에 사용할 폰트의 경로를 적어주면 된다.

rmagick_font_path: /usr/share/fonts/truetype/nanum/NanumGothic.ttf

그리고 Apache2를 재시작해주자.

$ sudo service apache2 restart

그리고 다시 PNG 내보내기를 하면 한글이 잘 출력된다는 것을 확인할 수 있다.


이것으로 해결 끝~

반응형

책상을 정리하다가 발견한 Nexus S !
레퍼런스 폰으로써 정말 훌륭한 역할을 수행한 멋진 스마트폰인데...

이 놈의 생명을 한 번 연장해볼까?! 하는 생각이 불끈 !!!!
그래서 구글링을 해보니... 정식으로 젤리빈 4.1.2 버전까지는 제공이 되었단다.

와우! 아직 빠지는 놈이 아니구나 !!!

그래서 그냥 바로 메뉴를 통해서 업데이트를 시도해보았으나.... 4.1.1 버전에서 더 이상 새로운 버전이 없단다.
어떻게든 업그레이드 시도를 해보기로 결정 !!!



01. 넥서스 S (Nexus S)

   - 모델명 : GT-9020, SHW-M200
   - 발표일 : 2010년 11월 15일
   - 출시일 : 2010년 12월 16일
   - 출시버전 : 진저브레드 2.3.1
   - 최종버전 : 젤리빈 4.1.2
   - 홈페이지 : http://www.google.com/nexus/s/



02. 젤리빈 이미지 다운로드

   - https://developers.google.com/android/nexus/images


   - 4.1.2 의 Link 를 클릭하면 바로 다운로드가 된다.



03. USB Driver 다운로드 & 설치

   - http://www.samsung.com/us/support/owners/product/GT-I9020FSTTMB

   - UNLOCK, 공장초기화, 롬 업데이트 등을 하기 위해서 반드시 필요하다.
   - Nexus S 전용 드라이버는 아니다. 삼성 USB 통합 드라이버이니 이미 설치된 분들은 생략 가능 !!



04. JDK 설치

   - http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html

   - Android SDK를 사용하기 위해서 필요하다.



05. Android SDK

   - http://developer.android.com/sdk/index.html
   - fastboot 기능이 필요한데, 이는 Android SDK에 들어있다.

   - 능력자 분들이 올려놓은 fastboot 부분만 쏙 빼서 압축한 파일들이 검색이 되지만,
   - 어떤 것이 믿을만한 것인지 original을 찾기가 어려워서 Android SDK를 가지고 작업을 하겠다.

   - 용량이 좀 크지만 (400MB 이상) 해로운 것은 아니니(^^) 다운받은 후 압축을 풀자.



06. Drivers

   - Android SDK 압축을 푼 후 SDK Manager.exe 를 실행하자.
   - Packages의 Extras에 있는 Google USB Driver 선택 후 Install 1 package ... 클릭하자.



07. Driver EDIT

   - EDIT Andrdoid SDK\sdk\extras\google\usb_driver\android_winusb.inf

...

 [Google.NTx86]

;Google Nexus S
...
%SingleAdbInterface%        = USB_Install, USB\VID_18D1&PID_4E20

...

[Google.NTamd64]

...

;Google Nexus S
...
%SingleAdbInterface%        = USB_Install, USB\VID_18D1&PID_4E20

...




08. Driver 설치

   - Nexus S 전원을 끈 후 컴퓨터와 연결을 하고, 볼륨업 버튼과 파워버튼을 동시에 눌러서 부트로더로 들어가자.
   - 드라이버 선택 창이 나오면 방금 작업한 것으로 선택을 하자.

   - [ LOCK STATE - LOCKED ] 으로 되어있는 것을 Nexus S 화면에서 확인할 수 있을 것이다.



09. 부트로더 언락 (bootloader unlock)

   - cmd 실행 후 Andrdoid SDK\sdk\platform-tools 경로로 이동하자.

>  fastboot oem unlock

   - Nexus S 화면이 바뀔 것이다.
   - 거기에서 YES를 선택하면 이제 모든 데이터가 사라지며 unlock이 된다.
   - 볼륨 업/다운 버튼으로 이동하고 파워 버튼으로 선택하면 된다.

   - 간단하다. 이제 화면을 보면 빨간색으로 [ LOCK STATE - UNLOCKED ]이 보일 것이다.



10. 파일 준비 & 복사

   - 젤리빈 이미지 다운로드 받은 것을 압축을 풀자.
   - tgz로 압축되어 있으니... 7-z 등의 프로그램을 이용해서 압축을 풀자.
   - 빵집에서는 잘 안될 수도 있다.

   - Andrdoid SDK\sdk\platform-tools 경로 밑에다가 복사해 놓는 것이 편하다.


11. bootloader 플래싱

   - cmd 실행 후 Andrdoid SDK\sdk\platform-tools 경로로 가자

> fastboot flash bootloader ./soju0jzo54k/bootloader-crespo-i9020xxlc2.img
> fastboot reboot-bootloader

   - Nexus S가 재부팅될 것이다.



12. 라디오 플래싱

   - 계속 플래싱을 진행하자.

> fastboot flash radio ./soju0jzo54k/radio-crespo-i9020xxki1.img
> fastboot reboot-bootloader



13. 이미지 등록

   - 이제 메인이다!

> fastboot -w update ./soju0jzo54k/image-soju-jzo54k.zip

   - 모두 마치면 Nexus S가 재부팅 된다.



이제 끝이다. 새로운 생명을 얻은 Nexus S를 가지고 멋진 스맛폰 생활을 하자 !!!
반응형

'지름생활 > Phone' 카테고리의 다른 글

NEC Terrain (방수폰)  (0) 2019.09.21
Galaxy Note 8 통신사 변경하기  (20) 2019.02.09


Python script 파일을 만들어서 실행을 하다보면,
script 파일이 지금 현재 어느 경로에 위치하고 있는지 알고 싶은 경우가 있다.

이럴 때 사용할 수 있는 좋은 예약어가 하나 있다.

__file__


현재 실행 중인 스크립트 파일 이름을 의미한다.
단순한 파일 이름이 아니라 실행할 때 사용한 경로를 포함한 파일 이름이다.

테스트를 위해서 [ dir.py ]라는 이름의 Python script 파일을 다음 내용으로 생성해보자.

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

import os

if __name__ == "__main__":

        print "__file__                                                       = " + __file__
        print "os.path.dirname(__file__)                              = " + os.path.dirname(__file__)
        print "os.path.realpath(__file__)                              = " + os.path.realpath(__file__)
        print "os.path.realpath( os.path.dirname(__file__) )   = " + os.path.realpath( os.path.dirname(__file__) )
        print
        print "os.getcwd()                                                 = " + os.getcwd()
        print
        print "os.path.basename( os.path.realpath(__file__) ) = " + os.path.basename(__file__)


실행을 해보면 다음과 같다.

$ pwd
/srv/workspace/barerepo

$ python ./dir.py
__file__                                                       = ./dir.py
os.path.dirname(__file__)                              = .
os.path.realpath(__file__)                              = /srv/workspace/barerepo/dir.py
os.path.realpath( os.path.dirname(__file__) )   = /srv/workspace/barerepo

os.getcwd()                                                 = /srv/workspace/barerepo

os.path.basename( os.path.realpath(__file__) ) = dir.py


dirname 은 상대경로를 알려주고 realpath 는 절대경로를 알려준다.
 
[ __file__ ] 예약어를 통해서 현재 경로를 확인하는 것에 대해서 살펴보고 있지만,
사실 지금 현재 경로를 알고 싶을 때에는 [ os.getcwd() ] 명령이 훨씬 더 많이 사용된다.

경로에서 파일이름만 뽑아내고 싶을 때에는 [ os.path.basename() ] 명령을 사용하면 된다.

반응형

만날 살펴보다가 꼭 신경안쓸 때 새로운 버전이 나온다.

• Defect #12650: Lost text after selection in issue list with IE
• Defect #12684: Hotkey for Issue-Edit doesn't work as expected
• Defect #13405: Commit link title is escaped twice when using "commit:" prefix
• Defect #13541: Can't access SCM when log/production.scm.stderr.log is not writable
• Defect #13579: Datepicker uses Simplified Chinese in Traditional Chinese locale
• Defect #13584: Missing Portuguese jQuery UI date picker
• Defect #13586: Circular loop testing prevents precedes/follows relation between subtasks
• Defect #13618: CSV export of spent time ignores filters and columns selection
• Defect #13630: PDF export generates the issue id twice
• Defect #13644: Diff - Internal Error
• Defect #13712: Fix email rake tasks to also support no_account_notice and default_group options
• Defect #13811: Broken javascript in IE7 ; recurrence of #12195
• Defect #13823: Trailing comma in javascript files
• Patch #13531: Traditional Chinese translation for 2.3-stable
• Patch #13552: Dutch translations for 2.3-stable
• Patch #13678: Lithuanian translation for 2.3-stable

마이너 업데이트는 새로운 기능이 추가없이 Defect 수정 위주이다.

개인적으로 그닥 피부에 와닿는 부분은 없지만... 업데이트는 해야지..... ^^



기존 2.3.0 버전 설치는 다음 포스팅을 참고해서 진행했다.

   - http://whatwant.tistory.com/553



1. PostgreSQL

   - 제일 중요한 데이터베이스를 혹시 모르니 백업을 해두자.

$ sudo su - postgres

$ pg_dump -Fc --file=redmine_20130503.sqlc redmine



2. Redmine 압축파일

   - 최신 버전의 Redmine을 다운로드 받고 압축을 풀자.

$ cd /srv/install/

$ wget http://rubyforge.org/frs/download.php/76933/redmine-2.3.1.tar.gz
$ tar zxvf redmine-2.3.1



3. Files 복사

   - 파일들과 플러그인들을 복사하자.

$ cd /srv/install/redmine-2.3.1/

$ sudo cp /srv/install/redmine-2.3.0/config/database.yml ./config/
$ sudo cp /srv/install/redmine-2.3.0/config/configuration.yml ./config/  (없을 수도 있다)
$ sudo cp -r /srv/install/redmine-2.3.0/files/* ./files/
$ sudo cp -r /srv/install/redmine-2.3.0/plugins/*  ./plugins/



4. Upgrade

   - 이제 업그레이드 작업 진행하면 된다.

   - Ruby 권한 관련 이슈가 있어서.... 아래 진행은 애초 설치 진행 時 (sudo su -) 권한으로 진행을 한 상황이다.

$ sudo su -
$ cd /srv/install/redmine-2.3.1

$ bundle install
$ rake generate_secret_token
$ rake db:migrate RAILS_ENV=production
$ rake redmine:plugins:migrate RAILS_ENV=production
$ rake tmp:cache:clear

$ rake tmp:sessions:clear




5. 권한 설정

   - 중요한 권한 설정을 해주자.

$ sudo su -
$ cd /srv/install/redmine-2.3.1

$ chown -R www-data:www-data files log tmp public
$ chmod -R 755 files log tmp public/plugin_assets
$ chown -R www-data:www-data ./config/database.yml
$ chmod 600 ./config/database.yml



6. 웹 설정

   - 링크 잡아주고 재시작하자.

$ sudo su -
$ cd /var/www/

$ ln -s /srv/install/redmine-2.3.1/public ./redmine
$ service apache2 restart



접속 성공~!!!

반응형

+ Recent posts