태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

이사짐 정리하다가, 밝견된 책들을 물끄러미 쳐다 보다가 제일 먼저 읽어 버리자고 선택한 책. 큼지막한 글씨체에, 부담 없는 책장 수가 선택을 하게 만들더라. 그리고 정지영 파동.....

관련 내용 출처 : http://mydevromance.tistory.com/21

Activity 의 생명 주기 관련되서 가장 잘 정리되어 있는 포스팅이길래, 링크 정리

관련 다이어 그램은 아래 있는 부분이 잘 그려진 것 같다.

다이그램 출처 : http://blog.naver.com/pyungid/30091006402


신고
posted by Daniel.H.Kim

한동안 손을 놓았던 C++와 C 관련 내용을 다시 봐야 하는 일이 있어서 이것 저것 보다가,

오래전부터 기초가 없어서 고생하던, DLL (Dynamic Linking Library), LIB 관련 내용을 좀 찾아봤다.

이 과정에서 자연스럽게 컴파일러, 링커, 로더에 관련된 내용을 보았고 관련 내용을 잘 다루어 놓은 

웹 문서는 이전 포스트에 정리해 두었다.


그런데 결과적으로 마지막에 네임맹글링 이라는 부분에 다시 부딪치게 되는데, 


위에 내용을 차근 차근 밟아 오고 아래 포스트를 읽으면 참 많은 도움이 되는 듯 싶다.


*네임 맹글링 뭔지에 대한 설명

http://blog.naver.com/PostView.nhn?blogId=no1rogue&logNo=30095521394

*네임 맹글링을 좀 더 다른 어어와 비교한 설명

http://kldp.org/node/121134


이래 저래, 좀 이해가 깊어지는 시간들이군 !

신고
posted by Daniel.H.Kim

http://unix.co.kr/HOWTO/LinkerLoader-KLDP/intro.html


오랜만에 다시 Visual Studio를 접하면서, 기본 내용을 알고 싶어서 웹을 검색하다 발견한 Tutorial. 


관련 내용을 리눅스 기반으로 설명해 놨지만, 참 잘해 놓은 것 같다. 


웹에 넘쳐나는 대부분의 관련 글들은 위 링크에 있는 내용을 기반으로 작성된 것 같으니, 원본을!


신고
posted by Daniel.H.Kim

출처 : http://fendee.egloos.com/9022534 
출처: [java] 비트 연산자와 시프트 연산자 

# JAVA
VS C,C++ 
자바에는 >>> 연산자가  추가되어 있다.

<비트 연산자>
* 컴퓨터 내부의 정보를 비트 단위로 비교하거나 조작 시 사용

# 논리곱(and) : &
각 비트를 비교하여 양쪽 모두 1 이면 1, 아니면 0 을 반환

a = 170, b = 245 일때

a    = 1 0 1 0 1 0 1 0
b    = 1 1 1 1 0 1 0 1
a&b = 1 0 1 0 0 0 0 0
10진수로 바꾸면 160 이 된다.

# 논리합(or) : |
각 비트를 비교하여 어느 한쪽이 1 이면 1, 그렇지 않으면 0 을 반환

a = 170, b = 245 일때

a    = 1 0 1 0 1 0 1 0
b    = 1 1 1 1 0 1 0 1
a|b = 1 1 1 1 1 1 1 1
10진수로 바꾸면 255 가 된다.


#  배타적 논리함(xor) : ^
각 비트를 비교하여 한쪽이 1 이고 다른 한쪽이 0 이면 1을, 아니면 0 을 반환

a = 170, b = 245 일때
a    = 1 0 1 0 1 0 1 0
b    = 1 1 1 1 0 1 0 1
a^b = 0 1 0 1 1 1 1 1
10진수로 바꾸면 95가 된다.


#  1의 보수 표현(not) : ~
각 비트를 반전시킨 값을 반환

a = 170 일때
a    = 1 0 1 0 1 0 1 0
~a  = 0 1 0 1 0 1 0 1
10진수로 바꾸면 85 가 된다.


<시프트 연산자>

비트 열을 좌우로 지시한 만큼 이동시키는(shift) 연산자를 말한다.
C 에도 시프트 연산자가 있는데, C 에는 >> 과 << 만 있으나,
자바에는 추가적으로 >>> 연산자도 있다.

# 왼쪽 시프트 연산자  ( << )

178 << 2 : 178 의 이진코드를 왼쪽으로 2비트 시프트 

왼쪽으로 두칸 밀면서, 비게 되는 오른쪽 두칸은 0 으로 채운다.

              10110010
              1011001000 
   결과값: 11001000  
 

왼쪽으로 밀면서 기존의 크기를 넘어서기 때문에 왼쪽으로 넘어선 2개의 비트는 삭제 오른쪽의 2개 비트는 0으로 채운다.

# 오른쪽 시프트 연산자  ( >> )

178 >> 2 : 178의 이진코드를 오른쪽으로 2 비트 시프트 한다.

오른쪽으로 2비트 이동한후,
비게되는 왼쪽의 2개비트는 1로 채워지고, 오른쪽에서 2비트 넘어간 부분은 삭제

                10110010 
             1110110010
 
결과값 :    11101100 

※ 주의 할 점 : 밀기전의 최초 첫째자리 값과 동일한 값으로 채워진다는 것
                     여기에서는 밀기전의 첫째자리값이 1 이었으므로, 1 로 채워진다.

# 논리 오른쪽 시프트 연산자  ( >>> )

178 >>> 2 : 오른쪽으로 2 비트 시프트한다.

자바에 추가된 논리 시프트는 오른쪽으로 밀면서 비게되는 앞쪽 비트를 무조건 0 셋팅

※ >> : 차이는 앞자리에 값으로 셋팅 되느냐, 아니면 0 으로 무조건 셋팅 되는가의 차이

            10110010
            0010110010
결과값 : 00101100 



예시)
--------------------------------------
public class a{
  public static void main(String [] args){
    byte a = 10;  // 00001010
    byte b = 9;   // 00001001
    byte c = 1;  //시프트할 칸수
    System.out.println(a + " & " + b + " = " + (a&b));  //논리합
    System.out.println(a + " | " + b + " = " + (a|b));  //논리곱
    System.out.println(a + " ^ " + b + " = " + (a^b));  //배타적 논리합(xor)
    System.out.println("~10 = " + (~a));  //a 의 보수(반전)
    System.out.println(a + " << " + c + " = " + (a<<c));  //왼쪽 1비트 시프트(뒤를 0 으로 채움)
    System.out.println(a + " >> " + c + " = " + (a>>c));  //오른쪽 1비트 시프트(앞을 밀리기전 첫째자리와 동일한 비트로 채움)
    System.out.println(a + " >>> " + c + " = " + (a>>>c)); //오른쪽 1비트 논리 시프트(앞을 0 으로 채움)
    System.out.println(-1 * a + " >> " + c + " = " + (-1*a >> c));
  }
}
--------------------------------------
/*
출력:

10 & 9 = 8    : 00001000
10 | 9 = 11   : 00001011
10 ^ 9 = 3    : 00000011
~10 = -11     : 11110101
10 << 1 = 20  : 00010100
10 >> 1 = 5   : 00000101
10 >>> 1 = 5  : 00000101
-10 >> 1 = -5 : 11111011
*/

부호가 붙은 정수형에서는 최상위 비트를 부호비트로 사용한다.
0 은 + 를 표시하고, 나머지 비트로 수를 표시한다.
1은 - 를 표시 하고, 나머지 비트를 반전하여 1 을 더한값이 절대값이 된다.

신고

'컴퓨터(Computer) > 자바(JAVA)' 카테고리의 다른 글

[개념] Java bit 연산  (0) 2012.03.13
[Tip] 자바 convention 관련 정리  (0) 2012.03.12
posted by Daniel.H.Kim
KLDP에 관련 내용이 위키로 올라와 있길래, 내용 참조해서 다시 정리-

설치
# apt-get install gitweb

프로젝트 설정

/var/cache/git 에서
# ln -s /path/to/repo.git repo.git
/var/www에서
# ln -s /usr/share/gitweb/* .


사용
http://localhost/cgi-bin/gitweb.cgi 에서 페이지 확인


참조
http://kldp.org/node/100726


TIPS
원격 저장소 설정
$ git config branch.master.remote ssh://server/path-to-repo/proj.git
위처럼 설정해주면 push, pull 명령어 뒤에 원격 저장소를 명시하지 않아도 됨

신고
posted by Daniel.H.Kim
이 혼자만 쓴다고 생각했던 블로그에, 어떤 분이 오셔서 감사하게도 글을 남겨 주셨길래,

스크랩 관련 기능에 관해서 찾아 봤다.

근데 티 스토리에서 스트랩 관련 된 내용을 본 적이 없어서, 해당 글들을 찾아 보니까,

아래 같은 글들이 있어서, 읽어 보고 공감이 가서 링크를 남긴다.

http://lalawin.tistory.com/entry/no-scrap

시간 되는 사람들은 한번 읽어 보면 좋을 듯 하다.

프로그래밍을 하다 보면 관련 문제에 관해서 다양한 글들을 찾는 작업이 필수 적인데,

이 부분에 대한 관련된 글들 중에서도 블로그에 올라온

글들을 읽는 내 태도도 좀 고쳐야 겠다는 생각이다.

ps: 참고로 티스토리엔 "스크랩 기능" 이 없다...!
신고

'Diary > 생각' 카테고리의 다른 글

[생각] 블로그 스크랩과 관련된 다양한 기능들-  (0) 2012.03.13
[생각] 휴머니즘  (0) 2006.10.28
[생각] 블로그를 시작해 봅니다  (4) 2006.10.22
posted by Daniel.H.Kim


압축
$ tar cvfzp xxx.tar.gz * (모든파일을 xxx.tar.gz로 압축)

해제
$ tar xvfzp xxx.tar.gz (tar와 gzip을 조합한 명령어)


# tar

파일을 묶거나 해제할 때 사용하는 리눅스 명령어 입니다.
옵션을 줄 수 있으며, 옵션은 아래와 같습니다.
-x 묶음을 해제
-c 파일을 묶음
-v 묶거나 파일을 풀때 과정을 화면으로 출력
-f 파일 이름을 지정한다.
-C 파일을 풀어놓을 경로를 지정

# gzip

리눅스에서 가장 많이 사용하는 압축 프로그램
확장자가 .gz 로 끝나는 파일은 gzip 을 통해 압축이 된 파일

$gzip abc -> abc.gz 라는 압축된 파일이 생성

$gzip -d abc.gz -> 파일 abc.gz 를 압축 해제


신고
posted by Daniel.H.Kim

코드를 짜다가 보니까, 여러명이 하니 이래 저래 보기가 힘들어 지는 것 같다.
회사를 다니다 보니, 여럿이서 프로젝트 하는 경우가 대부분이고,
이에 따라 코드를 작성하는 방법,  코멘트를 다는 방법 등을 알아야 할 필요가 있어 보인다. 

특히나 별로 중시 여기지 않았던 Java Convention에 대한 관심도 조금씩 늘고 있다.

여기, 잘 정리된 한장의 문서가 있길래, 웹 서핑 하다 보니-

 




그리고 Sun에서 공개한 문서 - 


나중에 코드 재생산(refactoring)을 할 때 참고해서 봐야 겠다.

아래는, 자바 Convention이 중요한 이유에 관한 부분, 아래 블로그에 번역된게 있길래, 공감이 가서, 가져왔다.
(출처 : http://kwangshin.pe.kr/blog/)

80% of the lifetime cost of a piece of software goes to maintenance.
Hardly any software is maintained for its whole life by the original author.
Code conventions improve the readability of the software, allowing engineers to understand new code more quickly and thoroughly.


소프트웨어를 개발하는 일련의 모든 과정에 들어가는 비용 중 80%가 유지보수에 쓰여진다.
소프트웨어의 유지보수를 그 소프트웨어를 직접 개발한 개발자가 담당하는 경우는 거의 보기 힘들다. 코드 규칙을 지키면 다른 개발자가 그 소스코드를 처음 보았을 때, 더 빠른 시간안에 완벽하게 이해할 수 있도록 도와주기 때문에, 소프트웨어의 가독성이 높아진다.

신고

'컴퓨터(Computer) > 자바(JAVA)' 카테고리의 다른 글

[개념] Java bit 연산  (0) 2012.03.13
[Tip] 자바 convention 관련 정리  (0) 2012.03.12
posted by Daniel.H.Kim

이 제품에 대해서, 웹에 관련된 자료를 찾아 보았지만 있는게 없어서,

일단 이렇게 간단하게나마 포스팅을!

전에 가지고 있던 만년펜으로, 아주 어렵게 중고로 올라온 메물로 보아,

현재 가격은 상태에 따라 다르겠지만 13만~20만원 사이로 추정. (2001/06/11)

CUSTOM은 일본 파이롯트에서 만든 제품이라, 우리나라에는 한국 파이롯트 제품 라인업에 없어,

수리가 원칙적으로는 불가능 했다.

그래서, 종각역 4번 출구에 있는 파이롯트 (꼭 전화를 해서 여는 시간을 확인하고 가시라. 4번 갔다..) 에 찾아가서 A/S를 한국 부품으로 - 잉크가 샐지도 몰라요! 알았습니다.. - 라는 말과 함께 수리해 왔다.

수리비와, 배송료를 안 받아 주셔서 (등기로 보내줬는데도!) 그나마, 즐거운 마음으로 포스팅!


추가 - 20110614

아쉽게도, 직원 설명대로, 잉크가 새고 있다. 펜 촉에 잉크를 모아서 공급하는 부분에 많은 양의 잉크가 조절되지 않아서 인듯 하다. 그래서 쓸 때 마다 너무 많은 잉크가 나와서 -_ㅜ
매번 닦아서 쓰는 중이다.

아쉬운 대목이다.



신고

'포트폴리오 > 관심(Interesting)' 카테고리의 다른 글

[Info] PILOT(빠이롯뜨) CUSTOM 67 JAPAN  (0) 2011.06.02
posted by Daniel.H.Kim

안드로이드에서, 각 작업의 시간이 얼마나 걸리는 지 측정 시 사용 할 수 있는 유용한 코드

long start = System.currentTimeMillis();
// 시간이 걸리는 작업
long end = System.currentTimeMillis();
Log.w("IntroActivity", "reload end" + ( end - start )/1000.0);
신고
posted by Daniel.H.Kim