한 달에 한 번 정도 업데이트가 나오더니 이번에는 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



접속 성공~!!!

반응형

Enlightenment 에 대해서 알아보던 중 특이한 터미널을 하나 발견했다.
생긴 것만으로도 아주 특이한데, 그 소개를 보면 더욱 더 특이하다 못해 별나다.

"Terminology is a new terminal emulator. It started life during a vacation in Thailand in June of 2012. So it is young and fresh, so it's not perfect, but it's getting there."

칼슨 하이츨러(Carsten Haitzler)라는 아저씨도 리누즈 토발즈나 뭐 그런 아저씨들 같은 긱(Geek)인가 보다. 왜 휴가까지 가서 이런걸 만드는건지...

Enlightenment를 시작했고 리딩을 한 개발자이고, Raster 또는 Rasterman으로 오픈 소스 커뮤니티에서 널리 알려진 칼슨 하이츨러는 원래 Red Hat에서 CORBA, Xlib, GTK+ 라이브러리 개발을 했었다고 한다.

최근 2010년부터는 Tizen과 관련해서 Samsung과 일을 하고 있다고 한다. (Tizen에서 EFL을 사용하고 있다)

뭐 여하튼... 이 특이한 터미널 '터미놀로지 (Terminology)'는 이런 배경으로 태어났다 !
근데, 뭐가 특이하냐고?!



칼슨 하이츨러가 직접 올린 동영상이다.


1. 참고 사이트

   - http://www.enlightenment.org/p.php?p=about/terminology&l=en
      ▷ 공식 홈페이지
   - http://seoz.egloos.com/3940530
      ▷ EFL 관련 자료를 찾다보면 계속 발견(?)되는 블로그다.



2. 다운로드

   - EFL 관련해서 좀 안타까운 점은 자료 찾기가 쉽지 않다는 것이다. 아직은 사용자 층이 넓지 않은 듯...
   - 그리고 또 하나 설치 및 사용 관련한 자료는 더 부족하다는 점이 아쉽다 !!!

   - Terminology도 설치 방법에 대한 가이드가 보이지를 않았다. 이런... 난 컴맹이란 말이다 !!!!

   - 일단 소스 코드를 다운로드 받아보기로 했다.
   - 설치 경로는 개인적인 취향으로 [ /srv/install/ ] 밑으로 했다.

$ cd /srv/install/
$ git clone git://git.enlightenment.org/apps/terminology.git



3. 빌드 & 설치

   - INSTALL 파일에 설치 방법이 잘 쓰여져 있지만, 잘 안된다는...
   - 하지만, 뭐 그냥 일반적인 방법으로 하면 된다는 것은 확인이 되었으니 !

$ cd /srv/install/terminology/

$ ./autogen.sh
$ make
$ sudo make install

   - 뭐 일반적이기에 굳이 가이드를 해줄 필요성을 못느꼈다보다.


   - [ 프로그램 - System Tools - Terminology ] 메뉴를 확인할 수 있다.



4. Terminology

   - 정말 멋져보인다.


   - 터미널 화면 위에서 마우스 오른쪽 버튼을 누르면 위 스크린샷과 같은 메뉴가 뜬다.


   - About 메뉴만 눌러봐도 Terminology의 매력을 듬뿍 느낄 수 있다. 정말 멋지다 !!!


   - Settings 메뉴를 누르면 위와 같은 화면이 나온다. 적당히 입맛에 맞게....^^

   - EFL에 대해서 눈꼽만큼도 아는 것이 없는 입장에서 할말은 아니지만,
     EFL의 매력은 사용자가 직접 손쉽게 멋진 화면을 꾸밀 수 있도록 해주는 것에 있는 것 같다.
     하지만, 더 매력적인 것은 그냥 기본적으로 화면이 왠지 매트릭스 같은 느낌을 주는 것이 그냥 멋지다 !!! ^^

   - Terminology에서 글자만 몇 개 타이핑 해보면... 커서의 모양이... 쿨~!!!

   - 그런데, 동영상에서 보이는 그런 기능들이 잘 안된다.
   - 능력이 없어서 이런걸 해결하기 위해선 시간이 좀 많이 투자 될 것 같아 지금은 여기까지만~ ^^
   - 소스 코드에 있는 README 파일을 좀 더 읽어봐야겠다.

반응형

+ Recent posts