자자, closetag을 사용하려면 /usr/share/vim/vim73/plugin에다가 closetag.vim을 넣고 ctrl- 로 태그를 닫으면 되는데
중요한건 plugin에 넣을 때 644의 기본 chmod를 맞춰줘야 하고, 복사가 잘 안되니까 sudo로 잘 넣어줘야 한다.




tagmatch를 위해서 %를 쓸 수 있는데
etc/vim/vimrc.local에
filetype plugin on 
을 꼭 넣어줘야 한다.
http://www.vim.org/scripts/script.php?script_id=39
matchit




폴더 탐색을 위해서는

:30vs ./      또는 e .

의 명령어로 navigator를 만들 수 있다.
** shift-p 로 파일을 열어야 오른쪽에 열 수 있다.

cw를 이용하면 grep 결과를 볼 수 있다.

아! 그리고 현재 파일이름 보려면 set laststatus=2 로 하면 된다.

cd - 로 goes back to previous directory할 수 있다.



source insight로 php하기
http://cozyu.tistory.com/7

source insight 비슷한 kscope
http://blog.naver.com/xgraph?Redirect=Log&logNo=150106205269

먼저 
r 옵션은 recursive 옵션입니다.  서브 디렉토리까지 뒤진다는 거죠
n 옵션은 라인 넘버를 출력해 주는 옵션입니다.
r 옵션은 invert 옵션입니다.
            지정한 검색어를 포함하지 않는 라인만 출력하라는 것입니다.

r 옵션은 파이프를 이용한 검색에서 효과적입니다.
즉 내가 검색한 단어가 너무 많이 출력될때... 특히 ctag 와 같은 파일이 함께 있을때
귀찮을 정도로 그곳에서 많이 뜨게 됩니다.

리눅스 커널 디렉토리에서 ctag 를 만든후 grep 으로 검색하면 ctag 에서 저장된 단어들이 주욱 나옵니다.

root@boggle70-desktop:linux# grep -rn sk_buff

이렇게 하면 엄청난 검색어를 보이게 됩니다.
하지만 

root@boggle70-desktop:linux# grep -rn sk_buff ./ | grep -v tags

이렇게 하면 tags 라는 단어를 포함한 라인은 모두 제거됩니다.

커널의 include 디렉토리에서 sk_buff 의 선언을 찾는다고 하고 시도합니다.

grep -rnw sk_buff ./include/ | grep -v tags | grep -v cscope | grep -v extern | grep -v static | grep -v "*"

첫번째는 r 서브디렉토리 검색옵션 + 라인 넘버 출력 + 단어 일치 옵션
두번째는 검색결과에서 tags 제거
세번째는 검색결과에서 cscope 제거
네번째는 검색결과에서 extern  제거
다섯번째는 검색결과에서 static  제거
여섯번재는 검색결과에서 포인터를 나타내는 * 제거

그러면 결과가 20개 안쪽에서 함수의 선을 찾을수 있습니다.

물론 저는 ctags 를 만들어 

vi -t sk_buff    와 같이 해서 

태그가 정의된 위치에서 파일을 열어 해당 위치에 커서를 놓아주는 -t
vim 의 옵션을 씁니다.

설정

트랙백

댓글

'테크' 카테고리의 다른 글

해상도 (Wiki)  (0) 2011.09.21
IMAP - Windows Live Mail 메일 다운로드 설정  (0) 2011.05.01
티스토리 따옴표 크게 하기  (0) 2011.03.15
명도 채도  (0) 2011.03.14
로봇 검색 방지  (0) 2011.03.07

설정

트랙백

댓글

Fax 무료 (미국)

아뎌 2011. 10. 11. 23:28

'아뎌' 카테고리의 다른 글

Youtube MP3  (0) 2011.09.04
노트북을 블루투스 키보드로 쓰기  (1) 2011.08.18
Liveshare 사진 앨범  (1) 2011.06.22
브레인 게임스  (0) 2011.05.14
아이디어 Generation  (0) 2011.04.16

설정

트랙백

댓글

Mantis 상태추가

PMS 2011. 10. 9. 01:55


http://acehyuk.tistory.com/tag/%EB%A7%A8%ED%8B%B0%EC%8A%A4



 

* 상태 추가하기

config_default_inc.php Line 1621

             $g_status_enum_string = '10:new,20:feedback,30:acknowledged,40:confirmed,50:assigned,80:resolved,90:closed';

에서 원하는 위치에 상태 번호와 상태 이름을 추가한다.

이슈 보기 화면이나 상태 변경에서 상태가 여기에 입력한 순서대로 나타난다.

상태 번호가 80 미만이면 상태 변경 화면의 입력 폼이 앞의 상태들과 마찬가지로 '이슈 할당', '이슈노트 추가', '상태 보기'로 이루어지며,

80번 이후로는 '해결 상태', '중복된 이슈 번호', '해결된 버전', '이슈 할당', '이슈노트 추가', '상태 보기'로 이루어진다.

따라서, 추가할 이슈의 성격에 알맞는 번호대로 추가해야 한다.

주의할 점은, 상태 번호를 90 이후로 하면 CLOSED(폐쇄된 이슈)에 포함되기 때문에 이슈 보기 페이지에서 숨김 상태로 된다는 것이다.

 

config_default_inc.php Line 1134~1140

             $g_status_colors = array(             'new'                               => '#ffa0a0', # red,

                                                                  'feedback'                        => '#ff50a8', # purple

                                                                  'acknowledged'  => '#ffd850', # orange

                                                                  'confirmed'                      => '#ffffb0', # yellow

                                                                  'assigned'                       => '#c8c8ff', # blue

                                                                  'resolved'                        => '#cceedd', # buish-green

                                                                  'closed'              => '#e8e8e8'); # light gray

상태 이름과 원하는 색상을 RGB값으로 입력한다.

 

 

/lang/string_korean_utf8.txt Line 291

             $s_status_enum_string = '10:새로운 이슈,20:정보 부족,30:이슈 검토,40:확인된 이슈,50:할당된 이슈,80:해결된 이슈,90:폐쇄된 이슈';

config_default_inc.php line 1621에 대응하게 한글 상태이름을 입력한다.

 

/lang/string_korean_utf8.txt Line 475

             # bug_change_status_page.php

             $s_new_bug_title = '새로운 이슈';

             $s_feedback_bug_title = '정보 부족';

             $s_acknowledged_bug_title = '이슈 검토';

             $s_confirmed_bug_title = '확인된 이슈';

             $s_assigned_bug_title = '할당된 이슈';

             $s_new_bug_button = '새로운 이슈';

             $s_feedback_bug_button = '정보 부족';

             $s_acknowledged_bug_button = '이슈 검토';

             $s_confirmed_bug_button = '확인된 이슈';

             $s_assigned_bug_button = '할당된 이슈';

부분에

             $s_상태이름_bug_title = '한글 상태이름';

             $s_상태이름_button = '한글 상태이름';식으로 내용을 추가한다.

 

나는 어감이 안좋은 정보부족을 -> 재검토요청으로

그리고, 칭찬 이슈를 추가


'PMS' 카테고리의 다른 글

git 에서 자동 완성 하는 법 branch 이름 등  (0) 2013.06.13
이슈 트래커 비교  (0) 2011.09.05
Mantis 환경 설정의 비밀  (0) 2011.09.05
Mantis GD error 25128 에러가 날 때 해결 책  (0) 2011.07.29
Mantis 날짜 Custom field  (0) 2011.07.26

설정

트랙백

댓글

'윈도우즈' 카테고리의 다른 글

Source insight 에서 PHP 쓰기  (0) 2011.12.08
Key Re mapping  (0) 2011.12.07
윈7 이미지 복구 (고스트와 트루이미지 안녕)  (0) 2011.09.20
Mac Theme  (0) 2011.09.19
클롬 플러스에 깔려 있는 plug-in들  (0) 2011.08.16

설정

트랙백

댓글


http://sathyasays.com/2008/10/10/how-to-solution-for-sudo-must-be-setuid-root-problem/



 had encountered this problem on sudo/gksu not working few months earlier.

Whenever I had to open an application with gksu it did not open at all !  I was wondering what did i do. I dint know whether  i meddled with something or is it any other configuration that created the problem.

If I type sudo in terminal i get “sudo: must be setuid root”

This is how I went about fixing it:-

  1. Open terminal and enter as root i.e. type ‘su’ and then the root password (Please be careful while being the root). Alternatively, you can also use ur OS’s live CD to mount the root partition (the partition where you have installed your OS)
  2. Next, type chmod 4755 /usr/bin/sudo If the command perfectly happens then as far I am able to tell sudo and gksu should work correctly.

그러나, 답변중에는

chmod 4111 /usr/bin/sudo 만으로도 충분하다는 답변이 있다.

설정

트랙백

댓글



내가 아래에서 구현한 것은 일반적으로도 도움이 될 것이다. 그러나 내가 쓴 설명은 포트번호로 가상호스트를 구현하는 것이다. mydomain.local 형식으로 도메인을 통해 가상호스트를 구축하려면 [apache] 로컬 컴퓨터에 가상호스트 만들기를 참고하는 편이 도움이 된다.

이 설명은 윈도우에서 APM_SETUP을 바탕으로 작성한 것이다.


두 파일을 건드려야 한다.

하나는 기본 설정 파일, 하나는 가상 호스트 설정 파일.

가상 호스트 설명을 보면 종종 어떤 파일을 건드려야 하는지 안 나와 있는데, 그게 문제인 듯하다.

다음 두 파일을 건드려야 한다. 메모장에서 열면 된다. txt파일이니까.

{아파치 루트}/conf/httpd.conf 와 {아파치 루트}/conf/extra/httpd-vhosts.conf 다.


(위에서 {아파치 루트}는 아파치가 설치돼 있는 폴더를 의미한다.)

* httpd.conf에서 설정해야 하는 것.

1.

Listen이라고 써 있는 부분을 찾는다.

이 부분은 포트를 설정하는 부분이다. 포트가 뭔지까지 설명하지는 않겠다.

아파치가 사용하는 기본 포트는 80이다.

가상 호스트 각각 다른 포트로 사용할 생각이라면 여기에 포트번호를 적어 줘야 한다.

한 포트에서 다 사용할 생각이라면 굳이 여기를 건드릴 필요는 없다.

어쨌든, 나는 82번 포트는 기본 포트로, 83번 포트는 가상 호스트 포트로 사용할 계획이다.

따라서 이렇게 적어 줬다.

Listen 82

Listen 83

2.

다음 부분을 찾는다. 거의 맨 뒤에 있다.

# Virtual hosts

# Include conf/extra/httpd-vhosts.conf

주석을 해제한다.(빨간 색 #을 지운다. #은 아파치 설정 파일에서 주석이다. 윗 줄은 말 그대로 설명이므로 주석을 해제하면 안 된다. 아랫 줄은 가상 호스트 설정 파일을 가리키는 부분이다. 주석을 해제하면 가상 호스트를 작동시킨다는 뜻이다. 그래서 가상 호스트를 사용하려면 이 주석을 해제하는 것이다.)

주석을 해제하고 아래처럼 됐으면 끝이다.

# Virtual hosts

Include conf/extra/httpd-vhosts.conf

* extra/httpd-vhosts.conf에서 설정해야 하는 것.

1.

아래 부분을 찾는다. 기본은 80으로 돼 있다.

NameVirtualHost *:80


아까 나는 82번 포트는 기본으로 사용하고 83번 포트를 가상 호스트로 사용하기로 했었다.

따라서 이 부분을 83으로 고친다.

NameVirtualHost *:83


2.

이제 가상 호스트 실제 설정을 해 주는 부분이다.

메모장으로 맨 아래부분으로 내려가서 새로 작성해 줘야 한다.

<VirtualHost 127.0.0.1:83>

ServerName 127.0.0.1:83

ServerAdmin webmaster@localhost

DocumentRoot “C:/APM_Setup6/htdocs/word

</VirtualHost>

위와 같은 형식으로 작성한다.

주황색으로 칠한 부분 : 가상 호스트의 IP주소, 혹은 http주소다. www.address.com 형식으로 적어 주거나, IP주소로 적어 준다.

파랑색으로 칠한 부분 : 웹마스터 메일 주소인데, 난 뭔지 잘 모른다. 알아서 잘 적으면 된다. 나는 로컬에서 사용할 용도로 가상호스트를 설정한 것이므로 별 걍 저대로 놔뒀다.

초록색으로 칠한 부분 : 가상 호스트의 주소가 실제로 가리키게 할 디렉토리(절대 주소)를 적어 준다. ip주소나 http주소를 적으면 바로 이 디렉토리에 있는 index 파일을 찾아서 웹브라우저에 보여 주게 된다.

3.

가상 호스트를 추가하려면 저 부분을 여러 개 적어 주면 된다.

테스트를 위해 작성해 봤다.

<VirtualHost 127.0.0.2:83>

ServerName 127.0.0.2:83

ServerAdmin webmaster@localhost

DocumentRoot “C:/APM_Setup6/htdocs

</VirtualHost>

주소를 127.0.0.2로 하고 디렉토리를 다르게 적어 줬다.

이렇게 하면 설정 끝이다.


그런데도, 동작하지 않을때,


영어로 돼 있지만 여기가 잘 설명돼 있다 : Apache: [warn] _default_ VirtualHost overlap on port 80, the first has precedence Error and Solution

요지는, 가상 호스트를 매길 때 가상호스트 설정을 적어 준 부분에 NameVirtualHost 라고 적어 줘야 한다는 건데, 이 때 제대로 적어 줘야 한다는 거다. 예를 보자.(출처는 위 링크)

# My Virtual Hosts Config File for Two Domains
NameVirtualHost *:80
  
<VirtualHost *:80>
ServerAdmin webmaster@theos.in
DocumentRoot "/usr/local/docs/theos.in"
ServerName www.theos.in
ServerAlias theos.in
ErrorLog "/var/log/theos.in-error_log"
CustomLog "/var/log/theos.in-access_log" common
</VirtualHost>
<DIV style="MARGIN: 1em 0px"><SCRIPT type=text/javascript><!--
google_ad_client = "ca-pub-4085781408395472";
/* 키워드 링크 나열 */
google_ad_slot = "3110428491";
google_ad_width = 728;
google_ad_height = 15;
//-->
</SCRIPT><SCRIPT type=text/javascript src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</SCRIPT><SCRIPT src="http://pagead2.googlesyndication.com/pagead/js/r20110921/r20110914/show_ads_impl.js"></SCRIPT><SCRIPT>google_protectAndRun("ads_core.google_render_ad", google_handleError, google_render_ad);</SCRIPT><INS style="BORDER-BOTTOM: medium none; POSITION: relative; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 728px; PADDING-RIGHT: 0px; DISPLAY: inline-table; HEIGHT: 15px; VISIBILITY: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"><INS style="BORDER-BOTTOM: medium none; POSITION: relative; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 728px; PADDING-RIGHT: 0px; DISPLAY: block; HEIGHT: 15px; VISIBILITY: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px" id=google_ads_frame3_anchor><IFRAME style="POSITION: absolute; TOP: 0px; LEFT: 0px" id=google_ads_frame3 vspace=0 height=15 marginHeight=0 src="http://googleads.g.doubleclick.net/pagead/ads?client=ca-pub-4085781408395472&output=html&h=15&slotname=3110428491&w=728&lmt=1317475106&flash=10.0.42.34&url=http%3A%2F%2Fmytory.co.kr%2Farchives%2F825&dt=1317475106093&shv=r20110921&jsv=r20110914&saldr=1&prev_slotnames=1732325096%2C6433767654&correlator=1317475105010&frm=4&adk=1116408870&ga_vid=465412242.1317444933&ga_sid=1317474711&ga_hid=982700803&ga_fc=1&u_tz=540&u_his=3&u_java=1&u_h=1050&u_w=1400&u_ah=1010&u_aw=1400&u_cd=32&u_nplug=0&u_nmime=0&dff=%EB%A7%91%EC%9D%80%20%EA%B3%A0%EB%94%95&dfs=14&adx=127&ady=1265&biw=995&bih=746&oid=2&ref=http%3A%2F%2Fwww.google.co.kr%2Furl%3Fsa%3Dt%26source%3Dweb%26cd%3D4%26ved%3D0CEgQFjAD%26url%3Dhttp%253A%252F%252Fmytory.co.kr%252Farchives%252F825%26rct%3Dj%26q%3D%25EC%259A%25B0%25EB%25B6%2584%25ED%2588%25AC%2520%25ED%258F%25AC%25ED%258A%25B8%2520%25EA%25B0%259C%25EB%2585%2590%26ei%3DMJ2GTqqbPKukiAes5ty5Dw%26usg%3DAFQjCNFbTBn3agZ6z3CCuw5PtgOhV3-CWw%26cad%3Drjt&prodhost=googleads.g.doubleclick.net&fu=0&ifi=3&dtd=16&xpc=id2vpT1IJZ&p=http%3A//mytory.co.kr" frameBorder=0 width=728 allowTransparency name=google_ads_frame3 marginWidth=0 scrolling=no hspace=0></IFRAME></INS></INS></DIV>
  
<VirtualHost *:80>
    ServerAdmin webmaster@nixcraft.com
    DocumentRoot "/usr/local/docs/nixcraft.com"
    ServerName www.nixcraft.com
    ServerAlias nixcraft.com
    ErrorLog "/var/log/nixcraft.com-error_log"
    CustomLog "/var/log/nixcraft.com-access_log" common
</VirtualHost>
 
 
여기서 주목할 부분은 바로 *:80이다. 가상 호스트의 포트와 NameVirtualHost의 포트를 맞춰 줘야 한다.

만약 IP로 구분을 했다면 *가 아니라 IP를 적어 줘야 한다고 한다.

NameVirtualHost 192.168.0.99:80 하는 식으로 말이다.

응용!
자, 그런데 나의 경우에는 저렇게 해도 작동이 안 됐다. 왜였을까?

virtualHost 정의 파일이 여러 개 있었던 게 원인이다. 나 같은 경우는 우분투를 사용한다. 우분투는 /etc/apache2/sites-enabled 폴더에 있는 심볼릭 링크(링크를 지우면 원본까지 지워지는 무서운 링크!)가 바로 가상 호스트를 정의하는 파일인데, 아래 그림을 보라.

default 외에도 dekiwiki 라는 놈이 보인다. 이놈도 바로 가상호스트를 정의하고 있었던 것이다! 이놈은 dekiwiki를 설치하면 자동으로 생성되는 놈이기 때문에 눈치채지 못했던 것이다. OTL;;

자, 이 파일을 까 보면 이 가상호스트는 아래처럼 시작한다.

?1 <VirtualHost *>

즉, 그러므로 다른 가상 호스트들도 시작 부분을


<VirtualHost *:80> 이 아니라 <VirtualHost *>로 설정을 해 주고, 가상호스트 정의 파일 맨 앞에다

?12 NameVirtualHost *
     <VirtualHost *>

라고 적어 줘야 하는 것이다.

내가 권장하는 것은 가상 호스트 서정 파일 말고 httpd.conf 에 적어 주는 것이다. 가상 호스트 설정파일을 아파치가 읽기 전에 저 NameVirtualHost * 를 읽어야 하기 때문이다.

이렇게 모든 걸 끝내면 모든 가상호스트가 제대로 돌아가기 시작했다.

만약 고쳤는데도 [warn] NameVirtualHost *:80 has no VirtualHosts 따위 에러가 나오면 어딘가에 NameVirtualHost를 적어 둔 것이다. 찾아 내서 지워 주자.


설정

트랙백

댓글

포트라고 하는건

TCP/IP 네트웍에서 포트 번호는, 들어오는 트래픽을 컴퓨터 내에서 실행되고 있는 적절한 프로그램에 분배시키기 위해 할당되는 숫자를 말한다. 이것은 물리적인 플러그나 소켓이 아니며, 다만 논리적인 할당일 뿐이다

# 프로그래밍에서, 포트는 "논리적인 접속장소"이며, 특히 인터넷 프로토콜인 TCP/IP를 사용할 때에는 클라이언트 프로그램이 네트웍 상의 특정 서버 프로그램을 지정하는 방법으로 사용된다. 웹 프로토콜인 HTTP와 같이, TCP/IP의 상위 프로토콜을 사용하는 응용프로그램에서는 미리 지정된 포트번호 들을 가지고 있다. 이런 것들은 IANA에 의해 지정되었으며, "잘 알려진 포트들"이라고 불린다. 다른 응용프로그램 프로세스들은 매번 접속할 때마다 포트번호가 동적으로 부여된다. 서버 프로그램이 처음 시작되면, 지정된 포트번호로 바인드된다. 그 서버를 사용하려는 모든 클라이언트 프로그램들은 지정된 포트번호에 바인드해야만 한다. 

바인드가 되면  두개의 컴퓨터간 네트워크를 이용한 통신시 발신지 컴퓨터에서 출발한 사용자 데이터(패킷)는 TCP/IP의 각 계층을 거치면서 최종적으로 목적지 주소(IP)를 가지고 있는 컴퓨터에 도착하게 됩니다. 패킷을 수신한 컴퓨터는 전송시에 사용되었던 주소필드를 제거하고, 패킷 안에 있는 데이터만을 응용프로그램에 넘겨줍니다.

결국 데이터를 넘겨줄 컴퓨터에는 FTP, Mail, Telnet, SSH, Web 등 다양한 종류의 응용프로그램이 기동하고 있을 것입니다. 수신측 컴퓨터가 인터넷 계층에서 패킷을 수신한 후 응용층으로 데이터를 전달하려고 할 때, 컴퓨터내에 기동중인 많은 응용프로그램들 중 누구에게 데이터를 전달해야 하는지 어떻게 구분할까요? 이러한 문제를 해결하기 위해서 운영체제는 응용프로그램의 논리적인 주소인 Port 번호라는 것을 이용합니다. 즉 각각의 응용프로그램 (서비스)에 유일한 논리적 주소인 Port 번호를 할당하여서, 전송계층에서 응용프로그램을 구분할 수 있도록 하고 있습니다. 


포트번호는 0부터 65536 이다. 포트번호 0부터 1024까지는 어떤 특권을 가진 서비스에 의해 사용될 수 있도록 예약되어 있다. HTTP 서비스를 위해서는 대개 80번 포트가 지정되는데, URL에 이를 적을 필요는 없다.

# 하드웨어적인 경우, 컴퓨터나 통신장비에서, 포트는 일반적으로 다른 장치에 물리적으로 접속되는 특정한 부위를 말하며, 대개 소켓이나 플러그 등의 형태로 되어 있다. 일반적으로 PC에는 하나 이상의 직렬 포트와 한 개의 병렬 포트가 제공된다. 직렬 포트는 한번에 한 비트씩 모뎀과 같은 주변장치로 전송하는 직렬 전송을 지원하며, 병렬 포트는 한번에 여러 비트씩 프린터와 같은 주변 장치로 전송할 수 있는 병렬 전송을 지원한다.

#  Port 번호는 16 비트 크기의 정수로 되어 있어 1부터 65535번까지를 사용할 수 있으며, 자주 사용되는 표준 인터넷 서비스에 대해서는 그 번호가 미리 할당(약속)되어져 있습니다. 이러한 것을 잘 알려진 포트(Well-Known Port)라 하며, 관리는 국제 인터넷
할당번호 관리기관인 IANA(Internet Assigned Numbers Authority)에서 하고 있습니다.
 
 예를 들면 FTP는 21번, Telnet 는 23번, SMTP(mail)는 25번, HTTP 는 80번 등으로 약속되어져 있습니다. 보통은 이러한 Well-Known 포트를 각 운영체제별로 "Services"라는 파일로 저장하고 있습니다. IANA에 의하면 보통 1번부터 1023까지는 Well-Known Port 영역으로 예약되어 있으며, 그 이상은 어플리케이션 서비스를 위해 할당되거나, 혹은 그때그때 임시로 할당되는 Port 번호들입니다.

Port 번호의 저장 
Unix의 경우 : /etc/services
Windows의 경우 : C:\windows\services
Windows NT의 경우 : C:\winnt\system32\dirvers\etc\services  파일로 저장합니다.


http://it.moyiza.com/?mid=tip&page=3&document_srl=13388

이 글은  프로그래밍의 노하우및 효율적인 개발론을 담고있지 않습니다.
또한 팁이란 개념에서도 벗어난 주제란것을 알고 있습니다.

하지만 잘 알려지지 않는 부분(제가 이것저것 뒤져여본 결과) 이고,
저만의 관찰이 연관되 있기에 정확히 신뢰할 만한 문서는 아닙니다.
그럼에도 불구하고 팁란에 올린 이유는 여러분들께
보다 좋은 상상력을 유발하지 않을까 기대가되기 때문입니다.

포트란 이름은 왠지 모르게 스위치나 허브의 각 랜포트를 떠오르게 합니다.
이름에서 처럼 실질적으로 선,가닥들의  출.입구란 의미로 사용되기도 합니다.
그러나 흔히 접하는 80번포트, 21번, 22번,23번,25번등등을 포함하여
유저가 임의로 생성하는 포트에는
컴터 어디를 둘러봐도 그러한 포트는 없습니다.

우리가 아무리 포트를 많이 만들어도 랜선을 통하여 통신하게되니까요.
그럼 포트는 어떠한 의미로서 어떻케 포트끼리 통신을 하는지 살펴보겠습니다.
네트워크계층은 여기서 다루지 않습니다.
단지 데이타패킷이 호스트에 들어왔을때, 어떠한 경로로 포트에 접속하는지만
말씀드립니다.

이것은 서버컴터의 대략적인 구조입니다.
[하드웨어] --- [커널] --- [레이어계층] --- [응용프로그램]
  랜카드    row단계처리    슈퍼데몬        ftp서버,웹서버,등등

 저는 하드웨어, 커널에서 어떤식으로 데이타패킷이 처리되는지는 모릅니다.
 슈퍼데몬, 즉 슈퍼서버라 불리는 inetd와 응용프로그램과의 관계만 설명드립니다.
 각각의 응용프로그램은 나름대로 자신만의 포트를 생성하고 자신을 호출하고자하는
 클라이언트에대해 응답을 합니다. 당연 해당 서버에 요청하는 클라이언트 역시
 같은 포트를 내보내어 원하는 서버의 문을 열기를 바랄겁니다.
 그 중계자 역활을 하는것이 바로 슈퍼서버입니다.
 슈퍼서버는 서버가 부팅이되는 즉시 항시 listen를 멈추지 않습니다.
 그러다가 클라이언트쪽에서 요청이 들어오면 inetd.conf파일에 설정된 포트와 서버를
 읽고 클라이언트의 요청번호(포트)와 맞는게 있으면 해당 응용프로그램을
 건듭니다(시그널)

 이것을 네트웍 관계도로 표시한다면 대략 아래와 같겠죠.

 ---------------------------------------------------------------------------------------
 클라이언트                                  서버

 요청번호(포트)                슈퍼서버(매개자)      응용프로그램(호출됨)

 쇼프로그램 시청자            연예인 매니지먼트        연예인
-----------------------------------------------------------------------------------------


******************************************** 자 여기서 전혀 다른 주제로 넘어가겠습니다.

파이프에 대해서 이야기 할건데요.

의미상 파이프는 배관파이프와 같이 흐름을 통제하는 것으로 다가옵니다.
그럼 컴터 프로그램상의 파이프는 어떠한 모습을 하고 있을까요>?
컴터 메모리상에다가 배관파이프을 얹어 놓을수도 없구요..

우리는 pipe()함수를 호출함으로서 파이프를 생성시킬수 있습니다.
아주 간단하게요.

int fp[2];
pipe(fp) 로서 끝입니다.
fp는 배열이죠. 그래서 fp자체를 프린트하면 Array라고 표시됩니다.
왜냐구요>?..  fp자체는 배열이지 값이 아니기 때문이죠. 단지 fp하면 메모리상에 상주한 fp공간의
젤 첫번째 주소만을 가지고 있을뿐입니다.

    | fp[0] | fp[1] |
 fp주소  fp[1]주소

이것을 pipe(fp)하게되면
다른프로세서에서 fp[0]에 23번을 입력하면 동시에 fp[1]에 23값이 들어옵니다.
흔히 파이프는 메모리상에 노드를 생성해서 노드간 값이 채워진다고 말합니다.
임의로 생성된 노드는 fp[0]과 fp[1] 의 주소값을 각각 가짐.


그럼 이것을 도식화 하면

A 프로세서(fp[0]에 값을할당할라함)          B 프로세서 (fp[1]을 리스닝중임)
 
fp[0] = 23                                  A프로세서요청시 fp[1]값은 23이 됨


***************************************  다시 원론으로 돌아와서 살펴보죠.


아까 네트웍계층을 생략한 도식을 다시 그려보겠습니다.

-----------------------------------------------------------------------------------------
  클라이언트                                      서버

    요청                커널(pipe(fp))    슈퍼서버(fp[1]을 항시 리슨)  응용프로그램

  포트23번보냄          연결fp[0]=23          fp[1]에 23번이뜸..          23번호출
  포트24번보냄          연결fp[0]=24          fp[1]에 24번이뜸..          24번호출
   
              ---- 위와같은 도식을 그려볼수도 있습니다..----
--------------------------------------------------------------------------------------------   

그러나 위와같이 생각하는 전문가들은 없겠죠?. 혹 있을수 있을려나~~^^
대게 포트를 데이타패킷에 묶어서 보내면 서버커널을 통과하고 슈퍼서버에서 이를 해석해서
응용프로그램을 호출하는 식입니다.

제가 생각한것이 맞든 안맞든 상상력의 고리를 이용할수도 있단 겁니다.
pipe명령을 내리면 이 명령에 대한 시스템처리는 커널이 맡아합니다.

그럼 클라이언트에서 이것을 이용하여,
패킷을 보낼때 커널에 파이프동작을 일으켜서 엉뚱한 포트를 호출하거나
또다른 파일기술자를 호출할수도 있게되겠죠..
위의 제가 말한 본론이 맞든 안맞든 실제 발생될수 있는 소지입니다.

암튼 말이 길었지 쓸모없는 내용이지만,
구조적인 면면을 생각해 볼수 시간이 되었음 합니다.

'IT 용어' 카테고리의 다른 글

Advertisement on Google  (0) 2011.04.16
Crowdsourcing - Human Computation - InnoCentive  (0) 2011.04.16
Web 2.0  (0) 2011.04.16
CTR (Click through Rate)  (0) 2011.04.16

설정

트랙백

댓글


아무리도 bash를 Default로 쓰고 싶은데..



이런 방법이 있었구만!!!

설정

트랙백

댓글

앞에 정리해 놓은 내용은 여러가지 node.js 버전을 사용할 때는 좋지만, 내가 원하는 version이 있을 떄는
별로 좋지 않은 방법같다. 여러가지 문제가 있어서, 뒷쪽 install 방법을 권장한다.


깔아보면 알겠지만, npm은 nodejs가 깔려 있어야 깔린다 쩝.
어쨌거나, NPM은 Nodejs의  Package Manager니까, NPM을 이용해서 여러가지 Package를 install할 수 있다.
그런데, 그 전에 NVM 즉 Nodejs Version Manager를 이용하면 더 적당한 Version의 nodejs를 깔 수 있으니
참고하자.

그 방법으로는,
nvm으로 Node.js 설치
 # git clone git://github.com/creationix/nvm.git ~/.nvm
# . ~/.nvm/nvm.sh
# nvm sync
# nvm install stable
# nvm use stable


이 되겠다. 이렇게 하면 가장 stable한 version의 node.js를 깔아주고,
그런 다음에 package들을 깔아줘야 겠다. (socket.io를 쓰기 위해서)
npm 자체는 다음과 같이 설치하는 데 그냥 sudo로 해서는 안되고 root를 이용해서 해야 된다.

 $ sudo -s
(root) $ curl http://npmjs.org/install.sh | sh

요렇게 설치한 후에
 # npm install socket.io
# npm install express
# npm install stylus
# npm install nib
# npm install jade
# git clone git://github.com/LearnBoost/socket.io.git
# cd socket.io/examples/chat
# node app.js


그렇다고 끝난거냐? 그건 또 아니다. 뭐가 없다면서 난리가 난다. NODE_PATH가 어쩌구 없단다.
이건 어떻게 해결하느냐. 분명히 nvm을 이용해서 깐데가 있을건데 그중 node_modules directory가
있는 곳을 찾아서 꼭 아래와 같이 추가해 줘야 module을 제대로 load 가능하다.

 export NODE_PATH=/home/hieonn/node_modules:$NODE_PATH

그렇지 않으면 이런 에러가 뜬다.


무슨 Use node_modules folders, or the NODE_PATH environment variable instead. 뭘 어쩌라고!!!
난생 처음 쓰게 되는 nodejs의 에러를 어떻게 받아들여야 할지 난감하다..


마지막으로 nodejs를 애플리케이션으로 서비스에 등록하기 방법이 있다.
 # npm install forever -g
# forever start app.js

아 그것참 쉽지 않군.
그리고, 이게 제대로 깔렸는지 확인하려면 그냥 node와 npm을 쳐보면 제대로 깔렸는지 알 수 있다.

그리고, 확실하게 node가 동작하는지 보려면
 /* helloworld.js */
var http = require('http');
 http.createServer(function(req, res) {
	res.writeHead (200, { 'Content-Type' : 'text/plain' } );
	res.end('Hello World .. !\n');
 }).listen(8887, '180.111.333.22');

 console.log('Server running at http://180.111.333.22:8887');

helloworld 파일을 만들고, 실행한 후,
 node hellworld.js

브라우저로 접속해 보면
 

 


요렇게 응답해야 정상이다. 
http://firejune.com/1683?stag=%25EC%259E%25A0%25EC%258B%25A4%253Fstag%253D%25EA%25B0%2580%25EA%25B2%25A9%25EC%25B1%2585%25EC%25A0%2595&



http://rintiantta.blog.me/40138506630




nvm이 없을 때 사람들이 권하는 방법은 아래와 같은데 참고할 만 하다.

nodejs 의 git로 부터의 설치
 $ git clone git://github.com/joyent/node.git node.git
$ cd node.git
$ git tag
$ git checkout v0.4.12  #0.4.12가 express를 쓰는 최신 stable 버전이다.
$ export JOBS=2
$ ./configure --prefix=/opt/node # 설치 위치는 각자 취향에 맞게..
$ make
$ sudo make install
$ sudo ln -s /opt/node/bin/node /usr/bin/node # 이 부분도 각자 알아서..

npm 자체는 다음과 같이 설치하는 데 그냥 sudo로 해서는 안되고 root를 이용해서 해야 된다.

 $ sudo -s
(root) $ curl http://npmjs.org/install.sh | sh


아래를 이용해서 Package를 깔아야 한다.
 # npm install socket.io
# npm install express
# npm install stylus
# npm install nib
# npm install jade
# git clone git://github.com/LearnBoost/socket.io.git
# cd socket.io/examples/chat
# node app.js



 export NODE_PATH=/home/hieonn/node_modules:$NODE_PATH

이걸 해주던가, 짱나니까,
/etc/environment 를 수정해 주면 전체 사용자에 먹히는 환경변수가 된다.



 NODE_PATH="/home/hieonn/node_modules" 

설정

트랙백

댓글

설정

트랙백

댓글

해상도 (Wiki)

테크 2011. 9. 21. 01:23
http://ko.wikipedia.org/wiki/%ED%95%B4%EC%83%81%EB%8F%84






텔레비전에는 다음과 같은 해상도가 있다:

SDTV : 480i (640×480)
EDTV : 480p (720×480)
HDTV(HD 720) : 720p (1280×720)
HDTV(HD 1080) : 1080p (1920×1080)


[편집]
표준 디스플레이 해상도

표준 디스플레이 해상도는 다음을 포함한다:

  • QVGA 0.077 메가픽셀 = 320×240
  • VGA 0.3 메가픽셀 = 640×480
  • SVGA 0.5 메가픽셀 = 800×600
  • XGA 0.8 메가픽셀 = 1024×768 (XVGA라고 함)
  • WXGA 1.0 메가픽셀 = 1280×800
  • SXGA 1.3 메가픽셀 = 1280×1024
  • WXGA+ 1.3 메가픽셀 = 1440×900
  • SXGA+ 1.4 메가픽셀 = 1400×1050
  • WSXGA+1.7 메가픽셀 = 1680×1050
  • UXGA 1.9 메가픽셀 = 1600×1200
  • WUXGA 2.3 메가픽셀 = 1920×1200
  • QXGA 3.1 메가픽셀 = 2048×1536
  • WQXGA 4.1 메가픽셀 = 2560×1600
  • QSXGA 5.2 메가픽셀 = 2560×2048
  • WQSXGA 6.6 메가픽셀 = 3200×2048
  • QUXGA 7.7 메가픽셀 = 3200×2400
  • WQUXGA 9.2 메가픽셀 = 3840×2400
  • WUQSXGA 11.3 메가픽셀 = 4200×2690

설정

트랙백

댓글

설정

트랙백

댓글

Mac Theme

윈도우즈 2011. 9. 19. 23:38

http://left.tistory.com/entry/macosxthemeforwindows7




압축을 풀어서, patch후에 mac_osx_7.exe 로 테마를 적용하는 것이 가장 중요하다. ㅎㅎ

그리고, 버튼 바꾸는 방법은 recipes.egloos.com에.

설정

트랙백

댓글

'오피스군' 카테고리의 다른 글

scribd both download print disabled  (0) 2011.08.22
무료 파워 포인트 template  (0) 2011.08.16

설정

트랙백

댓글

Scrapped from
http://gartzz2.blogspot.com/2007/05/http-error-404-not-found.html




"HTTP ERROR: 404 Not Found" 라는 메세지를 요즘은 정말 자주본다. 아무래도 블로그를 하면서부터 인터넷 서핑이 더 잦아진거 같은데 링크를 클릭하면 한번씩 "HTTP ERROR: 404 Not Found"라는 에러를 본다.

네이버 지식검색 에서 찾아보니 내용은 아래와 같았다.

404 에러는 요구한페이지의 url을 가져올 수 없을때 생기는 에러 입니다. url의 철자가 틀렸거나 경로가 틀렸을것 같네요

참고로 발생하기 쉬운 HTTP상태코드들을 올려 드릴께요..

200 : request가 성공적으로 완료되었음.
204 : request가 실행되었으나 클라이언트에게 보낼 데이터가 없음.
300 : 요구된 request가 여러 위치에 존재하는
자원을 필요로 하므로
request는 위에대한 정보를 보낸다. 클라이언트는 가장 적당한
위치를 선택하여야 함.
302 :
request가 요구한 데이터를 발견하였으나 실제 다른 url에 존재함.
400 : request의 문법이 잘못되었음.
403 :
request는 금지된 자원을 요구하였음.
404 : 서버는 요구된 url을 찾을 수 없음.
500 : 서버에 내부적으로 오류가
발생하여 더 이상을 진행할 수 없음.
501 : 요청된 request는 합법적이나 서버는 요구된 method를 지원하지 않음.
503 : 서버가 바쁘기 때문에 서비스를 할 수 없음.
참조하세요!!

설정

트랙백

댓글

서버 호스팅

우분투 2011. 9. 5. 14:54

서버 호스팅 서비스의 종류는?
1. 일정 금액을 납부하고 서버를 임대받아 사용기간 동안 무상 A/S를 받는 임대형
2. 매달 일정액을 저렴하게 이용한 후 할부 구매하는 방식으로
24개월후는 소유권을 이전받는 소유권 이전형 임대형 서버 호스팅
3. 저렴한 가격으로 서버를 구입하여 회선과 공간 서비스만 제공받음으로
추가 비용은 부담이 되지만 장기적으로는 비용절감의 효과가 있는 구매형 서버 호스팅이 있다
요즘 서버호스팅 업체가 많이 생겨 서버임대료는 월110,000원~120,000원선으로 많이 저렴해졌다
서버 호스팅 업체는 사업 준비단계에 선정하여야 함으로
앞으로 발생할 방문고객 수 등을 미리 잘 예측하여
자신에게 적합한 서비스와 업체를 선정하여야 하겠다.

설정

트랙백

댓글

이슈 트래커 비교

PMS 2011. 9. 5. 10:55

'PMS' 카테고리의 다른 글

git 에서 자동 완성 하는 법 branch 이름 등  (0) 2013.06.13
Mantis 상태추가  (0) 2011.10.09
Mantis 환경 설정의 비밀  (0) 2011.09.05
Mantis GD error 25128 에러가 날 때 해결 책  (0) 2011.07.29
Mantis 날짜 Custom field  (0) 2011.07.26

설정

트랙백

댓글

http://yckim.wordpress.com/2010/02/22/mantis-%ED%99%98%EA%B2%BD%EC%84%A4%EC%A0%95%EC%9D%98-%EB%B9%84%EB%B0%80/



Mantis를 처음 설치하게 되면,
설치폴더에는 각종 php 파일과 몇개의 폴더가 생기게 된다.
인터넷에서 Mantis에 관한 설치 방법을 검색해보면, 메일 통지를 위해서~
“config_inc.php” 파일에 ~ 이런 저런 설정을 입력하라고 한다.
왜? 이 파일에다가 설정을 하지?
파일 이름을 보아하니 환경설정 값을 가지고 있긴 한데… 사실 궁금했다.

조금만 프로그래밍을 한 사람이면,
여기서 힌트를 얻어서 config_defaults_inc.php 파일까지 알아차려 버린다.
그렇다~!! Mantis는 기본적인 환경 설정값을 config_default_inc.php에서 관리한다.
그럼… config_inc.php는 뭐고 config_defaults_inc.php는 뭐지?

말 그대로 config_defaults_inc.php는 디폴트 환경 설정값을 가지고 있고,
뭔가 변경을 시킬 필요가 있을 경우에는 config_inc.php에 설정을 한다.
즉, config_defaults_inc.php 파일을 직접 수정해도 상관은 없지만,
디폴트 환경설정값을 변경할 필요가 있을 경우에는 config_inc.php 파일에
원하는 값을 설정하여 사용하기를 권장한다.

여기서, 또 한가지 궁금증이 생긴다.
프로젝트를 관리하다 보면, 이 프로젝트에서는 이렇게, 다른 프로젝트에서는
다른 값으로 관리를 하고 싶은데, config_inc.php 로 설정값을 변경하니깐
모든 프로젝트에 동일한 환경이 설정이 되어 버리던데, 좋은 방법이 없을까:??

이런 면에서, Mantis는 open source이면서도 너무 편리하게 되어 있다.
Mantis (한글 기준) -> ‘관리’ 메뉴 -> [설정사항관리] 를 클릭하게 되면,
[configuration_report] 라는 메뉴가 보인다.
바로 이 화면을 이용하면 config_defaults_inc.php 혹은 config_inc.php에서
설정하던 거의 모든 환경값을 파일을 직접 손대지 않고 수정할 수 있다.
(일부 보안관련 항목은 여기서 설정할 수 없고, 반드시 파일에서 해야 한다.)
그것도, 환경값을 프로젝트별로 적용하거나, 심지어 유저별로 설정도 가능하다.

예를 들어, 다음과 같이 설정을 했다고 하자.
- 사용자 ID : honggildong
- 프로젝트 : 잘먹고잘살자 프로젝트
- Configuration Option : show_realname
- Type : integer
- Value : 1

위 설정을 해석을 하면 ‘honggildong’이라는 사용자가 로그인을 해서,
‘잘먹고잘살자 프로젝트’를 선택했을 때는 사용자ID를 사용자ID가 아니라,
실제 이름으로 표시를 해라~ 라는 설정입니다. 물론, 다른 사용자이면 ID로만
표시가 될 것이고, honggildong이라는 사용자라 하더라도, 다른 프로젝트를
선택했을 경우, 화면상의 사용자ID는 모두 사용자ID로만 표시가 될 것 입니다.

각 항목별로 조금 더 자세히 설명을 하면,
Configuration Option에 입력하는 항목은, config_defaults_inc.php 파일에
설정된 수많은 환경 변수의 이름인데, 변수명에서 ‘g_’만 제외하고 입력하면 된다.

Type은 일반적인 integer, string을 얘기하는데,
배열과 같이 복잡한 형식은 complex 타입으로 선언을 하게 된다.
config_defaults_inc.php에 각종 상수로 정의된 값들은(ON, OFF 등),
Value에 상수를 그대로 입력하면 인식이 안되기 때문에,
mantis폴더/core/contant_inc.php 에서 상수값을 확인한 후,
정의된 상수값을 Value에 설정해 주어야 제대로 인식이 된다. 꼭! 명심하길.

이렇듯, 환경 설정은 여러 곳에서 할 수 있는데,
마지막으로 정리하는 의미에서 적용되는 우선 순위를 정리하면,
1순위 : Configuration Option
2순위 : config_inc.php
3순위 : config_defaults_inc.php 입니다.
즉, Mantis는 1순위에 설정되어 있으면 1순위를 없으면 2순위를 찾고,
그다음 3순위를 찾는 순서로 적용이 된다.

설치 상태 그대로의 밋밋한 Mantis를 사용하고 있다면,
위의 규칙을 이용해 Mantis를 보다 편리하게 Customize 해 보실 것을 권한다.

여기서 보통 Mantis 설치 후, 적용하게 되는 유용한 환경 설정값을 소개한다.
# “이슈 보기” 화면에, 하단에만 나타난 범례를 화면 상단에도 표시하도록 한다. 
# — Position of the status colour legend, can be: STATUS_LEGEND_POSITION_*
# — see constant_inc.php. (*: TOP , BOTTOM , or BOTH)
$g_status_legend_position = STATUS_LEGEND_POSITION_BOTH;

# 이슈의 상태별 비율을 표시한다. (예, 새로운 이슈-20%, 할당된 이슈-15% … 등)
# — Show a legend with percentage of bug status
# — x% of all bugs are new, y% of all bugs are assigned and so on.
# — If set to ON it will printed below the status colour legend.
$g_status_percentage_legend = ON;

# Mantis 화면의 유저를 실명으로 표시한다. 로그온 아이디는 구별하기가 어렵기에 이 옵션을 추천함
# — show users with their real name or not
$g_show_realname = ON;

44 Responses

  1. 감사합니다.

    show_realname 이거 찾고있었는데 좋은 정보 알아가네요.


    • 미저 블로그에는 올리지 못 했습니다만,
      Mantis에 대해서 더 궁금하신 점 있으시면 질문해 주세요.
      제가 아는 한, 알려 드리도록 하겠습니다~


  2. 안녕하세요~~
    맨티스를 설치하고 활용하는데 있어서 문의드릴게 있어서요~~

    예를 들어
    이슈 보고하기에서 프로파일 편집이나 재발생 단계 항목은 잘 안써서 안보이게 하려고 하는데 어떻게 하면 되나요??

    steps_to_reproduce를 config_defaults_inc.php파일에서 지우기도 해보고 ㅎㅎ 별 짓을 다해 봤는데 오류만 발생하네요~~

    초보라 그런지 실수도 많구요 ㅡㅜ 답변 부탁드릴게요~~
    수고하세요^^


    • ‘이슈 보고’를 “상세 보고”로 사용하시나요? 특별히 “상세 보고” 로 사용해야 할 이유가 없으시다면, “간단한 보고서” 형태로 관리하시기를 권해드립니다.
      config_defaults_inc.php에 있는 [$g_default_bug_steps_to_reproduce = '';] 설정값은 보기/감추기 옵션이 아니라, 디폴트값을 설정하는 곳이니 님이 원하시는 목적 달성은 어려우실 듯~
      어떻게든 “상세 보고” 모드로 ‘이슈 보고’를 사용하면서, 해당 항목을 감추시고 싶다면 bug_report_advanced_page.php 파일과 bug_update_advanced_page.php를 직접 수정하실 수 밖에 없을 듯 합니다. 단, 해당 부분을 아예 삭제를 하면 오류가 날 것이므로, 해당 부분의 [tr] 태그 부분의 property를 설정하여(css 등으로), 숨기기(invisible) 모드로 하시면 깔끔하게 처리가 될 듯 합니다. 한번 해 보시고, 결과 알려주시면 감사하겠네요.


  3. 감사합니다~~ 잘 되네요~~

    그런데 문제가 하나 생겼습니다. 제거 어떻게 하다가 administrator의 계정을 삭제를 한거 같습니다. 아무리 administrator계정으로 로그인을 해봐도 로그인이 안됩니다. 복구하는 방법이나 다시 설정 하는 방법이 있나요??
    알려주세요~~


    • 어이쿠~~ 글 남기신 걸 이제서야 확인했네요.
      음… adminisatrator이 지워졌는지 아닌지는 직접 MySQL의 DB에서 확인이 가능한데… 지금 바로 기억이 안 나는 군요.
      내일 오전중에 저도 찾아보고, 다시 글 남기겠습니다.


  4. 안녕하세요. 맨티스에 대해 궁금한 점이 있어서 질문드립니다.

    현재 제가 사용하고 있는 맨티스의 이슈보기 리스트는 아래와 같이 구성되어 있습니다.

    현재
    체크박스/이슈갱신(펜이미지)/이슈번호/이슈갯수/분류/중요도(심각성)/상태/최종갱신/요약

    위와같이 되어 있는 리스트에 보고자 나 user field를 전체사용자에게 추가하고 싶은데 어떻게 해야할지 모르겠습니다.

    제가 완전 초보라서 엄두가 안납니다.

    도와주세요.


  5. 빠른 답변 고맙습니다.

    그리고 하나만 더 여쭤볼께요.

    지금 Default로 세팅되어 있는 필드 중에 always, sometimes, random 등 영어로 되어 있는 값을 한글로 바꾸고 싶은데 어디서 어떻게 수정해야 하나요??

    부탁드립니다.


    • Mantis는 기본적으로 다국어를 지원합니다.
      사용자가 어떤 언어를 선택하느냐에 따라서 화면의 모든 항목이 선택된 언어로 표시가 되는데, 아마도 디폴트로 ‘english’를 선택하신 것 같습니다.

      변경하시려면, Mantis 에 로그인 하신 후,
      메뉴에서 부터 ‘My Account > [Preferences]‘를 선택하신 후, 하단의 ‘Language’를 원하시는 언어로 바꾸시면 선택된 언어로 화면의 모든 항목이 변경됩니다.


  6. 안녕하세요. 장용민입니다.
    언어는 Korean으로 지정했는데 기본적인 모든 언어는 한글로 바뀐거 확인했습니다.

    근데 이슈 작성을 할때,
    재발가능성 / 중요도 / 우선순위 등 항목 이름 말고 해당 drop down 박스 안에 값은 여전히 영문으로 남아 있습니다.

    예를 들어 우선순위 drop down 박스 안에 있는 none / low / normal / high / urgent / immediate 값을 한글로 바꾸고 싶습니다.

    좋은 하루 보내시고 답변 부탁드립니다.


    • 음.. 이상하네요. 혹시, Mantis 버전이 어떻게 되시는지 좀 알려주시구요.

      다음 환경설정 변수를 확인해 보십시오.
      config_default_inc.php 파일의 값들이 “korean” 이 되도록 수정해 주신 후,
      브라우저를 닫았다 다시 열어서 한번 확인해 주십시오. ^^

      $g_default_language = ‘korean’;
      $g_fallback_language = ‘korean’;


  7. 네~ Mantis 버전은 1.1.7 입니다.
    알려주신데로
    $g_default_language = ‘korean’;
    $g_fallback_language = ‘korean’;

    설정을 완료했는데도 변경되지가 않습니다.

    해당 파일 아래에 보니깐 이런 소스가 있더라고요.
    그래서 혹시 이걸 한글로 변경해야되나 해서 바꿔봤는데도 안되더라고요.

    $g_reproducibility_enum_string = ’10:always,30:sometimes,50:random,70:have not tried,90:unable to duplicate,100:N/A’;


    • 음… 조금 이상하네요. 어쨌든,
      언어를 선택하면 mantis/lang/ 폴더에 있는 string_~.txt 라는
      파일을 참조하여 그에 맞는 용어들을 가지고 옵니다.

      string_korean.txt 파일을 참조하시고,
      $s_reproducibility_enum_string 등의 값들이
      만약에 영어로 되어 있다면 한글로 변경하시면 될 것 같습니다.

      여기에 모두 한글로 되어 있는데도 동일한 문제가 발생할 시에는
      조금 더 원인을 찾아봐야 할 것 같습니다.

      config_default_inc.php 와 config_inc.php 및 string_korean.txt
      파일을 저에게 보내주시면 시간될 때 잠시 보도록 하겠습니다.

      그럼, 성공하시길 바랍니다.


  8. 아~ 정말 감사합니다.^^
    string_korean.txt 파일안에 영어로 되어 있더라고요.
    그리고 config_default_inc.php 도 변경하니깐 한글로 잘 나옵니다.

    또, 질문이 생겼는데 답변 부탁드립니다.
    제가 A라는 프로젝트에 이슈를 등록후에 이슈갱신이나 다른 방법을 통해 해당 이슈를 B라는 프로젝트로 변경할 수는 없나요??

    프로젝트 아래에 category는 변경이 되나 프로젝트 구분 변경은 되지가 않더라고요.

    바쁘시더라도 답변부탁드립니다.


    • 각 이슈의 상세 화면에서는 [이슈 이동] 기능을, 목록에서는 ‘이동’ 항목 선택 후, ‘확인’ 버튼 클릭하시면 다른 프로젝트로 이동이 됩니다.


  9. 안녕하세요.
    한글 변경과정에서 문제가 좀 생겨서 문의드립니다.

    string_korean.txt
    config_default_inc.php

    위 2개 파일을 수정해서 한글로 나오게 완료하였습니다.

    근데 맨티스 이슈보기 상단에 Warning 문구가 뜹니다.

    SYSTEM WARNING: Cannot modify header information – headers already sent by (output started at C:\Mantis_test\lang\strings_korean.txt:1)

    이건 무슨 말인지 모르겠습니다. ㅡㅡ;


    • string_korean.txt 파일의 헤더부분을 변경하셨나요? 주석이라 필요없다고 지우든지 해서 나는 경고가 아닐까 싶네요. 전체적으로 소스가 많이 변경이 된 것 같은데, 특별히 이유가 없으시다면 mantisbt.org 에서 최신 버전을 다운 받아서 다시 설정하시길 권해드립니다.


  10. 안녕하세요. 질문이 하나더 있어서 이렇게 글을 또 남깁니다.

    customer field 생성할 때, 날짜 타입을 선택했습니다.
    이슈를 작성이나 갱신할 때, 기본 날짜가 2010-01-02 로 default 세팅되고 있습니다.
    이 default 값을 오늘 날짜나 오늘 + @ 로 설정할 수 있을까요??

    번번히 감사합니다.^^


    • 기본적으로 커스텀필드를 날짜형으로 설정을 하셔도, default 값은 들어가질 않습니다. 지금 기본날짜가 셋팅이 된다면 이미 소스를 변경했을 가능성이 높습니다. 소스 수정 방법은, http://apollo89.com/blog/298 를 참고하십시오.


  11. 안녕하세요 Mantis 글 관련을 읽다가 사이트를 오게 되었는데요.

    메뉴에서 폐쇄처리를 한 다음에 재할당을 했을 때 정보부족으로 처리가

    되는데 이것을 이슈 할당으로 바꾸는 방법이 있을까요??

    맨티스 버전은 1.2.1입니다~


    • Mantis 관리자로 로그인 하신 후,
      메뉴 “관리 -> 설정사항 관리 -> 워크플로우” 를 선택하신 후,
      [재오픈된 이슈가 설정되어 있는 상태] 의 값을 원하시는 상태로 변경하시면 됩니다.


  12. 안녕하세요. 오랜만에 또 인사드립니다.
    요즘 mantis를 관리하다보니 패스워드를 묻는 사람들이 많습니다.
    패스워드 초기화하고 자동 메일 발송시키는 걸로 해결하고 있는데
    DB에서 제가 바로 확인할 수 있는 쿼리가 있을까요?
    현재 DB 내, password 컬럼에는 3975c2682539aa5461006ee00dff7934와 같이 암호화되어 있는데 decode시키는 쿼리 좀 알 수 있을까요?


    • 답변이 좀 늦었네요.
      Mantis의 사용자정보 중 Password 부분은 md5 알고리즘을 사용하고 있습니다.
      즉, md5 알고리즘은 역으로 해석이 불가능한 ‘단방향’ 알고리즘이고,
      역함수가 존재하지 않는 Hash 함수입니다.

      아마도, 보안 레벨을 높이기 위하여 md5가 사용되었을 것이고,
      불편하시겠지만 지금의 방법을 가장 추천드리며,
      편법을 쓴다고 하면, 특정 문자열을 md5로 인코딩한 결과를 가지고 있다가,
      패스워드 분실시, 인코딩된 문자열로 패스워드를 업데이트를 하고,
      ‘특정 문자열’이 패스워드다~ 라고 알려주셔도 가능은 할 겁니다.


  13. 안녕하세요. 오랜만에 또 질문드립니다.
    맨티스 파일업로드 Max 사이즈가 어떻게 되나해서요?
    설정할수있는건지? 아니면 Max사이즈가 정해져 있는지?
    어떻게 확인할 수 있을까요??

    매번 감사합니다.

    추석 잘 보내세요.


  14. 안녕하세요.
    맨티스를 사용하다 문의 사항이 발생하여 이렇게 여쭙습니다.

    1. “이슈보기”의 “상태”항목을 보면,
    ‘할당된 이슈(nguy338)’ 또는 ‘해결된 이슈(shpark)’ 등으로
    ‘현재 상태(담당자 id)’로 표현이 되는 되요.
    ‘담당자 id’를 ‘담당자 real name’으로 표현할 수 없을 까요?

    2. “이슈보기”에서 추가 항목으로 ‘due_Date’를 사용하고 있습니다.

    ‘이슈 번호’나 ‘중요도’ 등으로는 정렬이 되나,
    ‘due_Date’로 정렬을 하면 데이터베이스 오류가 발생됩니다.

    어떻게 처리를 해야 하나요?


    • 일단 1번에 대해서는 블로그 글의 하단에 있는 바와 같이, $g_show_realname = ON; 으로 해주시면 됩니다. 그리고, 2번에 대해서는 오류 발생시의 화면 캡쳐를 보여주시면 도움이 될 것 같습니다만… ^^;;;


  15. 안녕하세요. 웹 서핑 중에 여쭙고 싶은 게 있어 이렇게 글을 남겨봅니다. ^^;

    아 리얼네임으로 보이는 건 저도 잊고있었던 팁이었는데 감사히 사용했습니다. 반응도 좋네요…^^;

    문의드릴 사항은 저희 회사에서 사용하는 맨티스 항목 중
    1. 우선 순위 항목을 사용하지 않으려고 합니다.
    2. config_default_inc.php 에서 $g_priority_enum_string = ’10:N/A,20:N/A,30:N/A,40:N/A,50:N/A’;
    으로 변경하였으나 그대로 출력이 됩니다.;;

    추가로 어떠한 부분을 변경하여야 우선순위 항목을 선택할 수 없게
    혹은 아예 이슈 보고하기 페이지에서 나타나지 않게 할 수 있을까요?^^;;; 늦더라도 관계 없으니 언제든 답주시면 감사하겠습니다.


    • 일단, 아예 항목을 삭제를 하시려면 bug_report.php 소스코드를 손대셔야 하실 듯 하고,
      이슈보기 등에서 삭제는 g_view_issues_page_columns 에서 항목을 삭제하시면 됩니다.

      삭제하시는 것이 번거로우면 님께서 하신 방법과 같이,
      $g_priority_enum_string = ’10:N/A’; 로 설정해 두시고,
      $g_default_bug_priority = 10; 이런식으로 설정하면 되지 않을까요?


  16. 안녕하세요.
    오랜만에 글을 남깁니다.

    맨티스를 이슈 상세화면 및 이메일 중에 이슈히스토리에 관한 질문입니다.

    현재 이슈히스토리는 가장 최근에 변경된 히스토리가 젤 밑에 노출되게 되어 있는데 정렬순서를 가장최근 것을 가장 위에 나오도록 변경할 수 있을까요??


    • 맨티스에서 왠만한 것들은 config_default.php 에서 설정이 가능하도록 되어 있습니다. 지금 말씀하신 것도 다음 설정값을 변경하면 되는데, ‘ASC’ 를 ‘DESC’로 변경하시면 됩니다.

      # — bug history ordering —-
      # change to ASC or DESC
      $g_history_order = ‘ASC’;


  17. 안녕하세요.
    매번 질문에 대해 자세한 답변 주셔서 너무 감사합니다.

    혹시, 맨티스 요청사항을 작성할 때,
    현재는 텍스트만 가능한데 카페나 블로그처럼 표, 사진, 글씨색깔/크기 등 입력 내용에 대해 editing 기능도 추가할 수 있는가해서요. ^^;

    이건 좀 어리숙한 질문일 수도 있는데 답변 부탁드립니다.

    좋은 하루 보내세요. ^^


    • 답장이 늦었네요.
      Mantis의 기본 기능에서는 지원하지 않네요.
      소스를 수정하는 customizing이 필요할 것 같습니다.

      그런 기능은 제 생각에도 필요할 것 같은데..
      아쉽게도 아직 그런 기능 만든다는 얘긴 없네요. ^^ 별로 도움이 못 되서 죄송합니다.


  18. Mantis “View Issues Columns” 설정에서 description 항목은 Sortting 기능을
    할 수 없는지요?

    다른 항목들은 Sortting이 되는데..!


    • description 항목은 아예 표시도 안 되지 않나요?? 제가 알기로는 ‘View issues’ 화면에 표시할 수 있는 항목도 제한이 있는 것으로 알고 있습니다. 지원가능한 컬럼은, mantis_bug_table 테이블 컬럼 + 커스텀 필드만 가능한 것 같습니다.


  19. 답변 감사합니다.

    말씀하신데로 description항목은 Sortting이 표시가 되지 않습니다.
    그런데 보면 요약도 텍스트 컬럼인데 Sortting이 되는걸 봐서는
    설명(description) 항목도 되지 않나 싶은데 안되는 건지요?


    • description 항목은 View Issue (이슈 보기) 페이지의 목록에 아예 표시할 수가 없을 겁니다. @description@ 이라고 나오든지, 쿼리 오류가 나든지… description도 텍스트 필드인 건 맞지만, mantis_bug_table 테이블이 아니라, LONGTEXT 라고 해서 별도의 테이블로 관리가 됩니다. 뭐~ 궂이 하시겠다고 하면 환경 설정 등으로는 안 되고, 해당 php 파일을 좀 커스터마이즈 하셔야 할 것 같습니다. ^^


  20. 답변 감사합니다.

    보니깐 관리되는 table도 달라서 php 변경이 필요할 듯 하네요 ㅠㅠ

    다른 필드를 사용할 수 있는지 확인해 봐야겠습니다.

    그럼, 좋은 하루 되세요^^


  21. mantis 1.1.14 버전으로 현재 프로젝트를 거의 수정하지 않고 사용중입니다.

    심지어 realname으로 보이게 하기 위해 사용자 id 를 실제 이름으로 사용중이니 어떻게 사용할지는 잘 아실 것으로 생각됩니다. ㅡㅜ;;

    현재 몇 가지 커스텀 필드를 만들어 중복 작업을 줄이고, 검색 및 입력 시의 용이성을 기대하였으나,

    커스텀 필드의 내용을 excel 로 export할 수 있는 방법이 없어 결국 의미없는 항목만 추가된 느낌입니다.

    커스텀 필드의 내용을 보고서로 출력할 수 있는 방법이 없을까요 ?


    • config_default.inc 파일에 있는 $g_print_issues_page_columns, $g_csv_columns 값을 이용하시면 될 것 같습니다. 한번 해보시고, 결과 공유 부탁드립니다.^^


  22. mantis에서 소요기간, 지연기간이라는 2개 커스텀 필드를 추가하여 이슈보기 페이지에서 보고자 합니다.
    커스텀 필드를 2개를 만드는것 까지는 문제가 없는데,
    소요기간 필드에는 (현재날짜-보고날짜) 의 일수가 자동적으로 들어가고, 날짜가 변경되어도 이슈 폐쇄전까지 자동으로 증가되었으면 합니다.

    지연기간도 필드에는 (현재날짜 – due_date)의 일수가 자동적으로 들어가고, 날짜가 변경되어도 이슈 폐쇄전까지 자동으로 증가되었으면 합니다.

    방법이 있을까요?


    • 이런 부분은 소스를 직접 수정해서 대응하는 방법 밖에 없는 것 같습니다.
      그런데, 소스를 수정하더라도 자동 배치로 날짜를 감시해서 수정하지 않는 이상은,
      어느 타이밍에 실제 DB의 데이터를 변경해 줄 지, 이런 부분들을 잘 고려하여
      대응할 필요가 있을 것 같습니다.


'PMS' 카테고리의 다른 글

Mantis 상태추가  (0) 2011.10.09
이슈 트래커 비교  (0) 2011.09.05
Mantis GD error 25128 에러가 날 때 해결 책  (0) 2011.07.29
Mantis 날짜 Custom field  (0) 2011.07.26
Matis Gantt chart & GD 한글 쓰기  (1) 2011.07.26

설정

트랙백

댓글

Youtube MP3

아뎌 2011. 9. 4. 15:01
http://www.youtube-mp3.org/

The site is really cool to have the sounds from youtube even though the quality is a bit worse than expected. Cool anywy!


'아뎌' 카테고리의 다른 글

Fax 무료 (미국)  (0) 2011.10.11
노트북을 블루투스 키보드로 쓰기  (1) 2011.08.18
Liveshare 사진 앨범  (1) 2011.06.22
브레인 게임스  (0) 2011.05.14
아이디어 Generation  (0) 2011.04.16

설정

트랙백

댓글

'오피스군' 카테고리의 다른 글

파워포인트에 유투브 넣기  (0) 2011.09.15
무료 파워 포인트 template  (0) 2011.08.16

설정

트랙백

댓글

설정

트랙백

댓글


이중에 Right-Click Enabler는 Extension Store에 없다.

설정

트랙백

댓글

http://userscripts.org/scripts/show/90149

웹창의 오른쪽 끝에 보면 install이 있으니 그것을 선택하면 된다.
꼭 개인용으로만 사용하자.


설정

트랙백

댓글

'오피스군' 카테고리의 다른 글

파워포인트에 유투브 넣기  (0) 2011.09.15
scribd both download print disabled  (0) 2011.08.22

설정

트랙백

댓글

설정

트랙백

댓글

'신화' 카테고리의 다른 글

17년전 오늘 희대의 독재자 김일성은 살해됐다  (0) 2011.07.09

설정

트랙백

댓글

'안드로이드 (자바)' 카테고리의 다른 글

안드로이드 App 구조  (0) 2011.08.04
자바 (Java) 객체지향  (0) 2011.08.02

설정

트랙백

댓글


1. 안드로이드 프로젝트를 만든다는 것은?

    main() 함수 (infinite looper와 Queue)를 자동으로 만들어 주며, 이 main함수는 프로젝트에 보이지 않는다.
    ; Activity와 사용자 class들만 작업하는 것이라고 보면 된다.

2. Androidmaifestt.xml
   →  에 Activiy, intent-filter 등을 등록하고, 어떤 Activity가 Main launch인지를 구성한다.
        * intent의 경우 install할때 PM(package manager가 intent를 시스템에 등록해 준다)

3. Layout이나, resource를 장만해야 한다. 
   →  Layout에 콘트롤들을 늘어 놓는데, 이때 @+id 를 이용해서 id를 추가하게 된다. 
        이때 +의 의미는 +가 있어야 R class에 등록을 해 준다. 


     → 이것은 Class R에 ID들이 생성되는데, 이런 Layout은 각각의 ID번호를 직접 갖게 된다.


  → 이런 생성된 resource들을 필요한 Activity에서 onCreate()에서 확보하게 되는데, 이는 다음과 같다. 결국 R.lauout.main을 등록하게 되면 R.id.을 이용해서 control을 가져올 수 있다. 
     한마디로 R.java에 ID가 생성된 것들은 말이지, 실행될때 이미 객체로서 활동한다는 의미 또는 class로서의 의미를 이미 갖추고 있다는 의미로서 자신 들이 control 당할 method들을 이미 가지고 있다.


4. 자, 그러면 재미있는 것은 뭐냐 하면, 뭐든지 개별 아이템에 대한 Adapter를 설정후에, 그것을 전체 View에다가 set한다는 재미있는 설정이다. 
    ; 게다가 control(view)에다가 Listener도 건다는 재미있는 설정이다. 그러니까 결국에는 모든 것은 Activity안에 있는 view 안에다가 뭔가를 건다는 설정인 것다. 
    ; 아래 코드는 하나의보여지는 list에다가 Array Adapter를 걸고, Edit view에다가 keydown listener를 걸었다는 설정이다.
  


5. Listener에 대한 이야기
  
→ Listener를 거는 것도 재미있다.
        원래는 요렇게 Mylistner를 만들어서 추가해줘야 되는데,
      


    어차피 안쓸거 ananymous로 직접 넣어버리는 테크닉을 쓰기도 한다.
      



'안드로이드 (자바)' 카테고리의 다른 글

Web View를 이용한 유투브 런처  (0) 2011.08.07
자바 (Java) 객체지향  (0) 2011.08.02

설정

트랙백

댓글


() 객체지향 개념의 등장배경
   - 객체지향이 아니면 전체 코드를 이해하고 해야되니까 생산성 향상의 측면에서라도 객체지향을 하게되면 유지보수 비용이 적고, Copy&Paste를 하는 양이 줄어드니까 생산성이 좋아진다는 주의 주장이 있었다.

() 객체지향의 중심내용
   데이터와 메소드가 한 바운더리 안에 속해 있으며, 이것을 User Defined Data type이라고 볼 수 있으며, 결국 이 말은 abstraction data type이라고 부르자고하는 것이다. 게다가 상속이라는 개념은 Copy&Paste를 줄여보고자 하는 것으로 보면 더 쉬울 것이며, 이런 상속은 다이내믹 바인드라는 개념과 통할 것 같다. 그런데 이렇게 하다보니까, 재사용만 할 것이 아니라 다시 정의할 수 있으면 더 좋지 않겠느냐 하는 의견이 많아 Polymorphism, 즉, overloading, overriding, template등이 생겨났다고 보믄 되겠다.

() Java의 클래스의 특징은 하나의 파일내에 하나의 public 클래스 유지

() Java는 따로 컴파일 하지 않고 save as를 하면 컴파일이 된다. 그래서 가끔 clean을 해줘야 하는 이유는 dependency가 항상 제대로 유지되지 않는 경우가 있기 때문이다. 각각의 class file이 따로 byte code로 존재한다는 사실은 아주 중요한 사실이다.

() Java는 pointer를 갖고 있지 않다. 대신 reference 변수를 가지고 있는데, 이 변수와 pointer의 차이는 변수자체를 막아 놓아서 주소연산이 안된다는 것이다. 

() 메모리의 종류
   ; Method와 static field는 Code영역에 들어가며,
   ; Heap은 모든 new로 할당된 것이 들어간다.
   ; 마지막으로 stack은 locak variable들이 들어간다. 

() Java는 아무도 referencing하지 않는 heap의 객체를 찾아서 garbage collection을 한다.
  예를 들어 stack p = new stack(); 이후에 p=null;로 assign해 주면 보통 날아가 버린다.

() Java Syntax중 재미있는거  하나가 있는데 label의 사용법이다. 이 label은 goto를 위한 label이 아니라 중첩 loop를 빠져나오는 거로 이용한다. 이거 재미있는 방법이다.

() Method Overloading관련한 재미있는 메타포
   - 2+3 = ?   2.0 + 3.0 = ?  이게 같은 것일까? 실은 +는 Overloading 된 연산자라고 봐야하지 않을까? 아하하 Java에서 Overloading은 절제의 미가 필요하다. 이게 남발되면 뭐가 뭔지 전혀 모르겠으니까.

() Java의 문제점 중 재미있는거 하나.
  String str = "abc" + "def"; 라고 정의하면 무슨 일이 벌어질까?  "abc"로 heap을 잡고, "def"로 heap을 잡은 다음에 "abcdef"를 heap으로 잡게 된다. 이러면 abc랑 def는 garbage가 되고 이런 일을 loop안에서 하면 엄청난 garbage가 생산되게 된다는 말씀!

() 추상화
주어진 문제나 시스템 중에서 중요하고 관계있는 부분만을 분리하여 간결하고 이해하기 쉽게 만드는 작업. 이러한 과정은 원래 문제에서 구체적인 사항은 되도록 생략하고 핵심이 되는 원리만을 따지기 때문에 원래 문제와는 전혀 관계가 없어 보이는 수학적인 모델이 나오기도 한다. 이 기법은 복잡한 문제나 시스템을 이해하거나 설계하는 데 없어서는 안 될 중요한 요소이다. 그러니까, 간결하고 이해하기 쉽게 만드는 작업이다란 말이지.

() 클래스 이야기 
   ; 클래스란 객체를 기술하는 방법으로서 클래스의 instance를 객체라고 부르면 될 것 같

 
다. 



() 캡슐화 한다?
  ; 알약을 예로 들면 알약 위에 씌여져 있는 설명을 interface라고 하고, 그 안의 실제 조그마한 알약들이 implementation이라고 한다면 interface와 implementation을 분리할 수 있다.  결국 public은 interface며, private은 implementation이라고 볼 수 있는데, 이런 관점에서 보면 interface는 implementation을 분리한다는 측면에서 short cut (바로가기)라고 보면 되지 않을까? 하는 생각이 든다.

() Interface와 abstract
  위의 내용을 정리하면 abstract는 뭔가를 간결하게 만든다는 의미이며 실제로는 객체를 만들 수는 없는 class이며, 가장 기본적인 특징만을 가지며, 상속을 시키는 것을 목적으로 하고, interface는 바로가기 키이며 실제로는 다중상속이 불가능한 Java에서 뭔가 필요한 class의 속성이 있을 때 바로가기 키를 가져온다는 의미라고 보면 되겠다. (꼭 다중상속이 아니더라도 바로가기 키가 필요할 때도 많다)
abstract의 경우 method도 body를 가질 수 없고 이름만 갖게 되는데, 이는 하위 클래스들에게 overriding을 허용하여 모든 객체가 그 method를 갖게 하려는 의도이다. 
interface가 body가 없는 이유는 바로 "바로가기"이기 때문이다. 이름 이외의 body를 가지고 있다면 바로가기라고 부를 수 없지 않은가?

() 자바는 왜 다중상속을 막고 있는가?
  여러개의 class를 다중상속하게 되면 중복된 naming의 변수가 있을 때 충돌하게 된다. 이런것을 아예 막아서 문제 발생의 여지를 막아버리는 것이다. 차라리 필요한 기능이 있다면 바로가기키인 interface를 이용하는 것이 훨씬 유리할 것이다라는 말이다.

() VC++의 vitual의 의미는?
   virtual의 의미는 Dynamic binding을 의미하며, virtual 이 붙은 함수는 메모리에 올라가야만 주소를 할당받는다. Java의 경우에는 무조건 vitual로 heap에 자리잡으며, 이는 곧 method는 공용으로 사용할 수 있다는 것을 의미한다. (각각의 객체가 method주소 테이블을 가지고 있음)

() 패키지는 왜?
   Name space라고 해서 세상에 하나밖에 없는 클래스를 만들기 위해서 만들었다. URL의 반대 방향으로 package를 정의하고 import를 이용해서 공통부분의 이름을 대치할 수 있다.
예를 들어 import java.util.Data 라면 그 다음부터 Date()만 써도 앞의 것을 알아서 붙여준다. 실제 클래스의 이름은 패키지명과 클래스 이름을 합한것이 실제 이름이다. 

  
() 표준 자료구조;
   Collction은 set과 List가 있고
   Map은 Tree와 Hash가 있고
   Iterator는 자료를 찾는 표준적인 방법이라고 보믄 된다.

'안드로이드 (자바)' 카테고리의 다른 글

Web View를 이용한 유투브 런처  (0) 2011.08.07
안드로이드 App 구조  (0) 2011.08.04

설정

트랙백

댓글