출처: http://whiteship.tistory.com/1416



Eclipse에서 Static Import! 편하게 쓰려면

Good Tools : 2008/01/24 10:55


Java 5에 추가된 static import! 기능을 사용할 때 보통 .* 로 모든 Static Method들을 클레스 이름을 붙이지 않고도 사용할 수 있습니다. .* 대신에 사용할 메소드를 import! 해도 되지만... import!문이 여러개로 늘어나는데다가, 무엇보다 자동완성이 지원되지 않아서 불편합니다. 특히 JUnit4로 테스트를 작성할 때 그렇쵸.

문제는 

import! static org.junit.Assert.*;

이렇게 한 줄 추가(이것 마저도 퀵픽스Ctrl + 1를 사용하면 외우지 않아도 됩니다.)한 뒤 코딩을 하다가 버릇처럼 Ctrl + Shift + O를 한 번씩 눌러주면, 다음과 같이 바뀐다는 것입니다.

import! static org.junit.Assert.assertEquals;
import! static org.junit.Assert.assertNotNull;

이 다음 부터는 이제 자동완성도 안 되고, 그러면 assertTr 까지만 입력해도 되는 걸 assertTrue(1 == result); 이렇게 전부 입력한 다음에 퀵픽스로 임포트 문을 또 추가해줘야 합니다. 귀찮죠..

그래서 Ctrl + Shift + O 를 입력할 때, .*로 전부 묶을 수 있습니다.



사용자 삽입 이미지

위와 같이 Number of static import! needed for .* 을 99에서 1로 수정해주시면 Ctrl + Shift + O 로 import!문을 정리할 때 .* 만 남기고 그 이하는 모두 제거합니다.

사용자 삽입 이미지

그럼 이제 'import!문 정리하기'를 한 뒤에도 자동완성으로 다른 static 메소드들을 사용할 수 있습니다.


출처: http://www.davesquared.net/2009/02/setting-up-diff-and-merge-tools-for-git.html

 

diff / merge 툴 설치

원하는 diff/merge tool을 설치합니다. 여기서는 DiffMerge를 사용했습니다.

DiffMerge.exe는 http://www.sourcegear.com/diffmerge/ 에서 구할수 있습니다.

프로그램 설치 경로는 알아서 하시면 됩니다.

 

원문대로 하면 공백문자를 인식하지 못하므로, 
git-diff-wrapper.sh를 읽기 위해 
환경변수의 PATH에 C:\Program Files\Git\cmd 경로를 추가하도록 합시다.

(참고. Git 바로가기 설정: C:\WINDOWS\system32\cmd.exe /c ""C:\Program Files\Git\bin\sh.exe" --login -i")

 

diff 툴 설정

C:\Program Files\Git\cmd 폴더에 git-diff-wrapper.sh 파일을 만들고 다음 내용을 적습니다.

 

#!/bin/sh

# diff is called by git with 7 parameters:
#  path old-file old-hex old-mode new-file new-hex new-mode
"C:/Program Files/SourceGear/DiffMerge/DiffMerge.exe" "$2" "$5" | cat

 

#"C:/Program Files/WinMerge/WinMergeU.exe" "$2" "$5" | cat

#"C:/Program Files/KDiff3/kdiff3.exe" "$2" "$5" | cat

 

그 다음 git 환경을 다음과 같이 설정합니다.

여기에서는 C:\Documents and Settings\Administrator\.gitconfig 파일을 직접 수정합니다.

 

[diff]
external = git-diff-wrapper.sh

 이제 diff를 확인하기 위해 git diff 를 실행해 봅니다.

 

mergetool 툴 설정

마찬가지로 C:\Program Files\Git\cmd 폴더에 git-merge-diffmerge-wrapper.sh 파일을 만들고 다음 내용을 적습니다.

 

#!/bin/sh

# Passing the following parameters to mergetool:
#  local base remote merge_result

"C:/Program Files/SourceGear/DiffMerge/DiffMerge.exe" "$1" "$2" "$3" --result="$4" --title1="Mine" --title2="Merging to: $4" --title3="Theirs"

그 다음 git 환경을 다음과 같이 설정합니다.

여기에서는 C:\Documents and Settings\Administrator\.gitconfig 파일을 직접 수정한다.

 

[merge]
    tool = diffmerge

[mergetool "diffmerge"]
cmd = git-merge-diffmerge-wrapper.sh "$PWD/$LOCAL" "$PWD/$BASE" "$PWD/$REMOTE" "$PWD/$MERGED" 
    trustExitCode = false
keepBackup = false

[mergetool "kdiff3"]
    path = C:/Program Files/KDiff3/kdiff3.exe
    keepBackup = false
    trustExitCode = false

이제 git mergetool 을 실행해 봅니다.

잘 되죠? :)

 

혹시나 실행해도 아무 반응이 없으신 분들은 log를 보시고

git diff 18f822e 와 같이 실행해 보시거나

CONFLICT를 일으킨 상태에서 해 보세요


출처: http://cdmanii.com/218


IP 로 컴퓨터 이름 알아내기

설명 : 컴퓨터가 많은 회사나 학교 공공기간에서 IP 는 알지만 이컴퓨터가 어디에 놓여져 있는지
알 수 없을때나 혹은 IP 는 알지는 컴퓨터 이름은 알지 못할때가 있지요

컴퓨터 이름을 일정한 규칙에 입력해놓았다면 IP 만으로 컴퓨터의 이름을 알아내어서 누가 사용자인지
어느정도 추측이 가능합니다


명령어 : nbtstat -A [IP]


사용자 삽입 이미지


출처: http://v.daum.net/link/677863?CT=WIDGET


* 디스플레이 설정>>
간단한 절차만 밟으시면 훨씬 뚜렷해진 모습을 확인하실 수 있습니다. 두 가지 방법으로 최적화를 할 수 있는데요. 먼저 디스플레이 등록 정보에서 간단하게 Clear Type을 설정하는 방법입니다.

사용자 삽입 이미지

1. 바탕화면에서 마우스 오른쪽을 눌러 설정( R)으로 들어가거나, 제어판에서 디스플레이( 모양 및 테마 메뉴)로 들어갑니다.

사용자 삽입 이미지

2. 디스플레이 등록 정보에서 화면배색 탭으로 들어갑니다.

사용자 삽입 이미지

3. 화면배색 탭 오른쪽 하단에 있는 효과(E) 버튼을 클릭합니다.

사용자 삽입 이미지

4. 화면 글꼴의 가장자리를 다듬는 데 사용하는 방법(S)을 표준에서 Clear Type으로 바꿉니다.


출처: http://blog.vizpei.kr/97752215

 

Error generating final archive: Debug certificate expired 

 

[Intro]

 

오늘도 열심히 어플리케이션을 개발 하고 있었습니다.

그런데 갑자기 이상한 메세지가 뜨더니...

빌드가 안되는 것이었습니다! (헉! 이런 ㅠㅠ)

 

그래서 열심히 구글링을 해봤습니다.

아직까지 우리나라에선 이런 문제를 발견 하신 분이 없는걸까요...

한국어로 검색이 하나도 안되더군요.

 

여튼! 어떤 일인지 살펴봅시다.

 

 

[Debug Key Expired??]

 

일단 Eclipse에선 알아서 debug.keystore를 사용하여 서명해주고 있습니다.

그래서 아무 생각없이 마구마구 Run.. Run.. Run..

그러던 중... 아래와 같은 메세지를 만났습니다.

 

 

Error generating final archive: Debug certificate expired on 1/14/10 6:15 PM!

이럴수가... 2010년 1월 14일 오후 6시 15분 부로 디버그 인증이 만료!

보통 인증이 만료 되었다는 말은... 사용기간이 지났다는 말로 해석이 되죠.

1월 14일을 보니까 제가 작년 이맘 때 처음 Android를 시작 했던 것 같기도 하단 말이죠...

 

여러가지 상황으로 미루어 봤을 때

Debug Key가 생성된지 1년이 지나서 Key가 만료 되었다는 상황이 아닌가 추측해 봤습니다.

제가 어느덧 Android개발에 본격적으로 손을 대기 시작하고 난 이후...

바로 오늘이 1주년이란 말이네요. :)

 

 

[Solve]

 

뭐... 원인이야 어찌 되었든 해결방법은 간단합니다.

debug.keystore 파일만 지워주면 끝!

각 운영체제에 따라 debug.keystore의 저장 위치가 다를 겁니다.


~/.android/debug.keystore (Linux/Mac)

C:\Documents and Settings\<user>\Local Settings\Application

Data\Android\debug.keystore (Windows XP)

C:\Users\<user>\AppData\Local\Android\debug.keystore (Windows Vista)


누가 써놓기로는 대충 이렇다 하더군요...

참, 개발 오래 하고 볼 일입니다



출처: http://kozazz.tistory.com/21


마켓에서 다운로드 받은 프로그램을 소스영역까지 복원하려고 한다.
프로그램의 임의적  변경, 사용, 배포는 개인에게 책임이 있음을 알려둔다.
소스복원은 100% 완벽하지 않다. 개발자의 역량에 따라 달라 질 수 있다.
 노가다 작업임이 분명하고, 시간 많이 걸릴 수 있다. 

드로이드 apk 추출
안드로이드 가상머신 버전 1.5 생성. 


핸드폰 바탕에 마켓 어플에서 목적 프로그램 다운로드 


안드로이드 file explorer 에서 apk 추출

1 .apk 파일 압축 풀기 
class 파일은 압축되어 classes.dex 로 존재한다. 
dex -> jar 변경후  jar 파일을 압축 해제 한다.  변경 방법은 아래와 같다. 확장자만 바꾸는건 아닙니다. ㅡ.ㅡ;;

사용법
현제 작업 중인 폴더 아래에 ./gen 폴더를 만든다
java -DASDKLoc=.  -jar undx.jar classes.dex
작업 폴더에서 위와 같이 수행하면 ./gen 폴더에 classes.dex.dump, classes.jar 파일 생성됨


2. class 피일을 java 파일로 변환
사용법 :
jad -sjava java *


3. apk 내에 있는 압축된 xml 을 읽을 수 있게 다시 원복한다 

 사용법 :
java -jar AXMLPrinter2.jar p1220_symbol_sip.xml > p1220_symbol_sip.txt


마지막으로 
복원 java 와 원본 java 소스 비교해 보자 

복원 DataUtil.java


원본 DataUtil.java


tar 압축 사용법

Tips/Linux 2012.02.24 10:13

출처: tar 압축 사용법


◈ 압축 파일 
리눅스의 배포본은 전부 압축되어서 제공되며, 기타 다른 응용 소프트웨어도 압축된 형태로 제공된다. 유닉스에서는 디렉토리를 포함하여 여러 파일들을 하나로 묶는 명령어로 `tar'를 사용하며, 실제로 압축하는 것으로는 `gzip'을 주로 사용한다. 전자는 `.tar'가 파일명 뒤에 붙으며, 후자는 `.gz' 또는 `z'가 붙는다. 또한, tar파일이 압축되었을 경우는 `.tar.gz', `.tar.z', `.tgz' 등의 이름이 붙을 수 있다. 
또 DOS에서 많이 사용하는 lzh나 zip 파일을 이용할 수 있으며, 각각 `lharc', `unzip', `unarj' 등의 유틸리티가 제공된다. 
 
< tar 의 사용 > 
명령어 tar는 압축 소프트웨어중에서 가장 많이 사용되는 것이다. 
문법    tar <options> <file1> <file2> ...<fileN> 
예제    # tar cvf backup.tar /etc 
          이 명령은 /etc 안의 모든 파일을 backup.tar의 이름으로 묶는다. 첫 번째 인자인 "cvf" 는
          tar의 <options>으로서, "c"는 새로운 파일을 생성하며, "v"는 묶이게 될 각각의 파일들을
          화면에 출력될 것을 지정한다. "f"는 다음에 나오는 인자인 backup.tar로 생성될 파일의 이
          름을 지정한다. 마지막 인자는 압축이 될 파일이나 디렉토리이다. 
          # tar xvf backup.tar 
          현재 디렉토리의 backup.tar 파일을 푼다. 이것은 tar로 묶은 것을 풀 때 기존의 파일들이 덮
          어써지기 때문에 때로는 위험하다. backup.tar 파일이 디렉토리를 포함한다면, 자동적으로
          디렉토리가 생성되고 파일이 속하게 된다. 

          파일들을 풀 때, 파일이 어디로 풀리게 되는지 아는 것도 중요하다.
          예를 들어, /etc/hosts, /etc/group, /etc/passwd 파일들을 묶는 다면,
          # tar cvf backup.tar /etc/hosts /etc/group /etc/passwd
          /etc/디렉토리의 각각의 파일들이 추가된다. 위와 같이 묶인 파일들을 올바른 장소로 풀기
          위해서는 아래의 명령어를 사용해야 한다. 
          # cd /
          #tar xvf backup.tar 
          왜냐하면, 묶어 놓은 파일에 저장되어 있는 경로도 풀어야 하기 때문이다.
          만일, 아래의 명령으로 묶는다면, 
          # cd /etc
          # tar cvf hosts group passwd
 
          디렉토리 이름 `/etc'는 tar 파일에 저장이 되지 않을 것이다. 그러므로, 이 파일을 풀기 전에
          "cd /etc"를 먼저 입력하여야 한다. 이 방식으로 tar파일을 만드는 것은, 파일을 어디로 풀어
          야 하는지에 대한 큰 차이를 갖게 된다.

          # tar tvf backup.tar 
          이것은 파일을 풀기 전에 tar파일의 "index"를 출력한다. 이러한 방법은 tar 파일 안에 어떤
          디렉토리의 파일들이 상대적으로 어떻게 저장이 되어있는지 볼 수 있으며, 따라서 올바른
          장소로 풀 수 있다. 


gzip과 compress 
MS-DOS의 프로그램과는 달리, tar는 파일을 묶을 때, 자동적으로 압축하지는 않는다. 그러므로, 만일 2개의 1MB의 파일을 묶으려 한다면, tar파일의 크기는 2MB일 것이다. 명령어 `gzip' 은 파일을 압축하는데 사용된다(압축하기 위해서 tar 파일은 필요치 않다.). 

          # gzip -9 backup.tar 
          위의 명령은 backup.tar 파일을 압축하고, 이 파일의 압축 버전인 backup.tar.gz 파일을 만들 것이다. -9는 최상의 압축율로 압
          축하는 옵션이다. 명령어 `gunzip'은 `gzip' 명령으로 압축된 파일을 풀기 위해 사용된다. 명령은 `gzip -d' 이다. 

          `gzip'은 유닉스의 새로운 도구이며, 지난 수년 동안 `compress' 명령을 대신하여 사용되어 왔다. `compress'의 알고리즘에 대
          한 소프트웨어 특허권 문제와 `gzip'의 효율이 `compress' 보다 좋다는 점 등의 이유로 `compress'는 물러나야 했지만 여전히
          필요할 것이다. 

          compressed 파일의 끝에 확장자 .Z 가 붙는다. 예를 들면, backup.tar의 compress된 버전이 backup.tar.Z이며, backup.tar.gz
          는 gzip 버전이다.(때로는, 소문자 z가 gzipped 파일이다.) 명령어 `uncompress'는 compress 된 파일을 풀기 위해 사용한다.
          또한, gunzip은 compressed 파일을 취급하는 방법을 알고 있기 때문에 .Z 파일도 gzip을 이용하여 압출을 풀 수 있다. 

gzip과 tar의 혼합 사용 
일반적으로 파일들을 하나로 묶은후, 그것을 압축시켜 백업해 놓는 경우가 많을 것이다. 
          # tar cvf backup.tar /etc 
          # gzip -9 backup.tar 

          따라서, 결과는 backup.tar.gz 이 생길 것이다.
 
파일을 풀기 위해서는 그 반대의 명령을 아래의 순서대로 사용한다. 
          # gunzip backup.tar.gz
          # tar xvf backup.tar
 

          물론, tar파일을 풀기 전에는 언제나 올바른 디렉토리에서 확인해야 할 것이다. 
          여기서, 파이프와 리디렉션을 사용하여 위의 명령을 한 라인으로 처리할 수 있다. 
          # tar cvf - /etc | gzip -9c > backup.tar.gz 
          이 명령은 먼저, tar 파일을 tar의 표준 출력("-"로 표시)으로 보낸다. 이것은 gzip과 파이프되어 들어오는 tar 파일을 압축하며,
          그 결과를 backup.tar.gz로 리디렉트 시킴으로서 파일로 저장된다. 
          gzip의 -c 옵션은 출력을 backup.tar.gz로 리디렉트하기 위해 표준 출력으로 보내라는 명령이다. 
그럼, 한 라인의 명령으로 이 파일을 풀어보자
          # gunzip -c backup.tar.gz | tar cvf - 
          다시, gunzip은 backup.tar.gz의 내용을 풀고, 그 결과를 표준 출력으로 tar 파일에 보낸다. 이것은 tar를 파이프한 것이고, "-"는
          tar의 표준 출력을 말한다. 

리눅스로 이식된 tar 버젼은 -z 옵션이 있어, 압축과 해제를 자동적으로 시킬 수 있다. 

# tar cvfz backup.tar.Z /etc 
          이것은 아래와 두 명령과 같다. 
          # tar cvf backup.tar /etc 
          # compress backup.tar
 

또한, 압축을 해제할때는 아래와 같으며, 
# tar xvfz backup.tar.Z 
          이것은 아래와 두 명령과 같은 것이다. 
          # uncompress backup.tar.Z 
          # tar xvf backup.tar 


출처: http://tazb.tistory.com/2855667


ubuntu 리눅스를 처음 설치했을때 당황하게 만드는 큰 원인중에 하나가 root 계정에 패스워드가 지정 되어 있지 않아서 root로 로그인을 하지 못한다는 것이다. 보안상으로 상당히 좋은 설정일 수 있으나 서버가 아닌 PC 운영체제로 리눅스를 쓰는 사람들에게는 불편하다. 그래서 온갓 삽질(싱글로 부팅해서 패스워드 지정하기) 끝에 알아낸것이 sudo 를 이용하는 것이다.

ubuntu 설치시 입력한 user는 sudo 를 실행할 수 있는 권한을 가지고 있다.

방법은 아주 간단하다. 설치시 입력한 user로 로그인한 후 터미널을 하나 열고

$ sudo bash 
Password : 
# passwd 
Enter new UNIX password:

or

$ sudo passwd
Password : 
Enter new UNIX password:


sudo bash 를 친후 요구하는 패스워드는 현재 로그인된 user의 패스워드를 입력하면된다.
저렇게 친 후에 패스워드를 입력해주면 끝이다. 

만약 조금더 강력한 보안이 필요한 시스템이라면 패스워드를 지정하지 않고

$ sudo bash 
Password : 


or

$ sudo -i
Password : 



이 상태에서 루트의 권한이 필요한 작업들을 해도 된다.




출처: http://kltp.kldp.net/stories.php?story=05/12/13/3012369&topic=10

 

-- 라는 옵션이 "Terminate option list." 라고 man mv 페이지에 써있더군요.

이곳에서도 찾아보고 약 5분정도 시행착오를 했기 때문에.. 이렇게 적어봅니다.

-를 포함하고 기타 다른 문자를 포함할 경우에 이름 변경이나 기타 다른 명령어로 파일을 인식할 때에
잘 되지않고 옵션으로 읽어들이는 상황이 발생합니다.

그래서 간단히 파일 이름을 변경하면 해결되겠구나 했는데, 바로 mv 에서도 똑같은 상황이 발생해서 어쩔 수 없이 해결법을 찾게 되었습니다.

간단히 옵션이 끝났다는 표시 즉, 옵션에 -- 를 주면 더이상 옵션을 받아들이지 않는 상태로 되는 듯 합니다

shell) mv -- <- 등을 포함한 파일이름> <새로운 이름>


출처: http://kltp.kldp.net/

 

.bashrc 파일에 다음 내용 추가

 

export GREP_OPTIONS='--color=always' GREP_COLOR='1;32'