'분류 전체보기'에 해당되는 글 162건
- 2013.04.10 :: [tolls]redmine 2.x (fedora 16) 설치법
- 2013.04.09 :: doxygen linux(소스 분석 툴)
- 2013.03.19 :: [java] java.library.path - linux, eclipse
- 2013.03.11 :: [Eclipse RAP]국제화, Internationalize - juno
- 2013.03.11 :: [Eclipse RAP or Java] 국제화, Internationalizing 관련 사이트
- 2013.03.11 :: [Eclipse RCP&RAP] 북마크 정리
- 2013.02.27 :: [Java] eclipse로 maven 사용(msgpackRPC 사용법)
- 2013.02.27 :: zero-copy[펌]
- 2013.02.27 :: [Java] messagePack(rpc 구현)
- 2013.02.26 :: [java] Java decompiler[Eclipse plugin]
- 2013.02.26 :: [Java] Network framework (Netty, Apache MINA)
- 2013.02.18 :: Amazon Simple Storage Service(Amazon S3) 사용
- 2013.02.13 :: netstat 명령어 사용법 - 펌
- 2013.02.13 :: [Java] 네트워크 장비 검색(zeroconf/avahi/bonjour) 1
- 2013.02.12 :: swt 관련 사이트
- 2013.02.12 :: org.eclipse.swt.SWTException: Invalid thread access
- 2013.02.12 :: zero configuration networking 1
- 2013.02.06 :: [Eclipse rap] openfire linux(centOS)
- 2013.02.06 :: [Eclipse RAP] RAP 2.0 관련 사이트
- 2013.02.05 :: [Eclipse Rap] RAP2.0 - Remote Application Platform
- redmine 활용
redmine은 ALM, 프로젝트 관리, 품질관리 등을 통합적으로 하는 툴이다.
CI라고도 하며 형상관리라고도 한다.
플러그인 형태로 기능을 추가 할수 있다.
웹에서 svn, 프로젝트 일정관리, 일감관리, 이슈관리, 소스검증(동적/정적) 등.. 을 할수 있다.
- 설치 환경
OS : fedora 16 64bit (developer용 설치), virual box 가상운영
redmine : 2.3 (최신)
페도라는 centos와 달리 리눅스의 실험적인 것들이 많이 들어가서, 사용법 정리가 안되있는것이 많다.
1.x 버전과 2.x 버전은 설치 시 조금씩 다른점이 있다.
대부분 1.x 버전의 정리가 대부분이라, 에러와 이슈트래커를 찾으며 정리 함.
중간에 몇개 빠뜨리고 안적었을수도 있음.
- 설치법 간단 정리
1. yum install ruby
2. yum install rubygems
3. yum install ruby-devel
4. gem install rails
5. redmine 다운
http://rubyforge.org/frs/?group_id=1850
6. mysql 설정
yum install mysql-devel
gem install mysql
CREATE DATABASE redmine CHARACTER SET utf8;GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost' IDENTIFIED BY 'passwordf'
7. redmine config 설정(아래부터 redmine 설치 폴더에서 실행)
mv config/database.yml.example config/database.yml
vim production (설정 변경)
production: adapter: mysql database: redmine host: localhost username: redmine password: password
8. redmine 필요 패키지 다운
bundle install (루비의 연관패키지 다운)
yum install php-gd glib glib2 libpng libjpeg libtiff ghostscript freetype (ImageMagick을 yum으로 받으려면 이것들이 전부 설치되어야 한다)
yum install ImageMagick ImageMagick-devel
gem install rmagick (devel까지 설치하지 않으면 에러)
bundle install
☞ 여기까지 bundle install 할때, 에러가 없어야 한다. 만약 부족한 부분이 더 있다면 완료해야 레드마인을 실행할 수 있다.
9. 관리자 계정생성
rake generate_secret_token
rake db:migrate RAILS_ENV=production
10. 언어 설정
rake redmine:load_default_data RAILS_ENV=production
ko
11. 아파치 웹서버의 쓰기 권한이 가능하도록 권한 설정
chmod -R 755 files log tmp public/plugin_assets
12. 실행
ruby script/rails server webrick -e production
13. 접속 (default port == 3000)
localhost:3000
'학습자료 > tools' 카테고리의 다른 글
[tools] one note 블로그로 포팅하기 (0) | 2013.04.17 |
---|---|
이클립스 cdt 설치(c 환경) (0) | 2013.04.11 |
doxygen linux(소스 분석 툴) (0) | 2013.04.09 |
[Java] eclipse로 maven 사용(msgpackRPC 사용법) (0) | 2013.02.27 |
Amazon Simple Storage Service(Amazon S3) 사용 (0) | 2013.02.18 |
c, c++, java, script? 각종언어에 대해 함수 연관도를 그려준다.
javadoc 처럼 document도 나온다.
흠. 한마디로 소스 분석툴.
모듈 연관도 그림을 그릴필요가 있을때, doxygen을 사용하면 편하게 작성할수 있다.
- 설치
yum install doxygen
yum install graphviz -> 연관도 등 그래픽 관련 내용을 보고 싶으면 깔아야 함.
yum install doxygen-doxywizard -> doxygen gui 유틸
- 실행(간단하게만 정리)
doxywizard
1. 프로젝트(이름, 문서화 할 코드 폴더, 결과물 남길 폴더 설정)
2. 문서 추출방식, 언어 선택
3. 출력 문서 형식 설정(LaTeX는 off 해도 됨)
4. 아까 설치한 GraphViz를 사용(함수간 관계를 그래프로 보기위해)
5. doxy 문서 만들기(Run doxygen 클릭후, show HTML output 선택)
6. 모듈 관계도
위와 같은 내용 외에도
javadoc 처럼 각 함수에 대해 문서가 나온다.
직접 소스보기도 가능하며, struct 구조같은 내용도 나온다.
'학습자료 > tools' 카테고리의 다른 글
이클립스 cdt 설치(c 환경) (0) | 2013.04.11 |
---|---|
[tolls]redmine 2.x (fedora 16) 설치법 (0) | 2013.04.10 |
[Java] eclipse로 maven 사용(msgpackRPC 사용법) (0) | 2013.02.27 |
Amazon Simple Storage Service(Amazon S3) 사용 (0) | 2013.02.18 |
rrdtool (0) | 2012.10.31 |
OS : 리눅스
IDE: 이클립스
- 에러 이유
자바 라이브러리(.jar)를 추가하였는데도 java.library.path 에러가 난다.
이유는 내가 추가한 external 자바 라이브러리가 네이티브 라이브러리를 사용하기 때문이다.
예를 들면, 자바 라이브러리가 윈도우에서는 .dll 파일을 이용하는것이고, 리눅스에서는 .so 를 내부적으로 사용한다.
- 해결방법
방법1. 이클립스에서
LD_LIBRARY_PATH 에 네이티브 라이브러리 경로를 추가해야 한다.
프로젝트 좌클릭 -> Run as -> Run Configuration -> Enviroment TAB
에서
Name과 value에 LD_LIBRARY_PATH, /usr/local/lib(네이티브라이브러리가 존재하는 경로) 를 추가해 주면 된다.
방법2. 리눅스에서
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
위와 같이 리눅스상에 경로를 등록하여도 이클립스는 못알아 먹는다..
그래서 방법 1로 해결.
'학습자료 > Java' 카테고리의 다른 글
[java] proxy setting (0) | 2014.04.05 |
---|---|
Installing software' has encountered a problem. 이클립스 문제 (0) | 2013.05.23 |
[Java] messagePack(rpc 구현) (0) | 2013.02.27 |
[java] Java decompiler[Eclipse plugin] (0) | 2013.02.26 |
[Java] Network framework (Netty, Apache MINA) (0) | 2013.02.26 |
- RAP Developer Guide에 쓰인 방법으로 정리
- RCP의 국제화와 방법이 다른 이유 :
Message
classes as this is done in RCP. Instead, we must use a different instance of the Message
class for every language.각기 다른 유저 세션을 위한 언어가 다르기 때문이다. 게다가 같은 세션의 request에서도 다른 language를 요구할수 있다.
그러므로 우리는 language를 RCP처럼 클래쓰 안에 staticaaly하게 정의하고 사용할수 없다. 대신에 message class(language설정의 위한 클래스)의 instance를 사용해야 한다.
[시작]
- test.mail.message 패키지 생성 > Messages 클래스 생성(만든 패키지에)
public class Messages {
private static final String BUNDLE_NAME
= "test.mail.message.messages"; //$NON-NLS-1$
public String HelloWorld;
private Messages() {
// prevent instantiation
}
public static Messages get() {
Class clazz = Messages.class;
return ( Messages )RWT.NLS.getISO8859_1Encoded( BUNDLE_NAME, clazz );
}
}
- test.mail.message 패키지에 properties 파일 생성
messages.properties - 디폴트 (찾을수 없을때 사용되는 파일)
messages_ko_KR.properties - 언어 코드, 국가 코드 : 한국
messages_en_US.properties
- messages.properties 내용
HelloWorld = Hello
farewell = Goodbye.
- messages_ko_KR.properties 내용
HelloWorld = 안녕
farewell = 잘가
- properties 사용할 부분에 코드 삽입
Label label = new Label ( parent, SWT.NONE );
label.setText( Messages.get().HelloWorld );
label.setSize( 80, 20 );
일단은 이렇게만 실행해보아도 properties 적용이 잘 된것을 확인 할 수 있다.
properties를 다른 폴더에 넣고 싶으면, javabuild에서 폴더를 생성후 path를 등록하면 될것 같고.
참조 사이트에 보면 war로 배포하여 동작하기 위해선 web.xml에
<init-param>
<param-name>commandline</param-name>
<param-value>-registryMultiLanguage</param-value>
</init-param>
를 추가해야 한다고 나와있다.
여튼 저튼 위와 같은 방법으로 적용으로 테스트 해보면 된다.
참조 사이트 :
eclipse RAP Developer Guide(internationalization) : http://help.eclipse.org/juno/index.jsp?topic=%2Forg.eclipse.rap.help%2Fhelp%2Fhtml%2Fadvanced%2Fdeployment.html
RWT.NLS javadoc : http://help.eclipse.org/indigo/index.jsp?topic=%2Forg.eclipse.rap.help%2Fhelp%2Fhtml%2Freference%2Fapi%2Forg%2Feclipse%2Frwt%2FRWT.NLS.html
클래프 패스 문제 (java.util.MissingResourceException: Can't find bundle for base name javan.Res_test, locale ko_KR) : http://darky.egloos.com/1066166
'언어&플랫폼 > Eclipse RCP&RAP' 카테고리의 다른 글
[Eclipse RAP or Java] 국제화, Internationalizing 관련 사이트 (0) | 2013.03.11 |
---|---|
[Eclipse RCP&RAP] 북마크 정리 (0) | 2013.03.11 |
swt 관련 사이트 (0) | 2013.02.12 |
org.eclipse.swt.SWTException: Invalid thread access (0) | 2013.02.12 |
[Eclipse rap] openfire linux(centOS) (0) | 2013.02.06 |
eclipse RAP Developer Guide(internationalization) : http://help.eclipse.org/juno/index.jsp?topic=%2Forg.eclipse.rap.help%2Fhelp%2Fhtml%2Fadvanced%2Fdeployment.html
RWT.NLS javadoc : http://help.eclipse.org/indigo/index.jsp?topic=%2Forg.eclipse.rap.help%2Fhelp%2Fhtml%2Freference%2Fapi%2Forg%2Feclipse%2Frwt%2FRWT.NLS.html
자바 Internationalizing the sample program : http://docs.oracle.com/javase/tutorial/i18n/intro/steps.html
java Locale Doc : http://www.javacool.net/_cool/api_doc/kor_jdk11api/java.util.Locale_dsc.htm
LocalePlanet(자바로캘 한국어 일반정보?) : http://www.localeplanet.com/java/ko-KR/index.html
자바 인코딩 및 로케일 정보 얻기 : http://blog.naver.com/PostView.nhn?blogId=oomymy&logNo=120051174487
ResourceBundle 사용하기 : http://jcjang.tistory.com/4
how to internationalize your Eclipse plug-in : http://www.eclipse.org/articles/Article-Internationalization/how2I18n.html
how to test your Internationalized Eclipse plug-in : http://www.eclipse.org/articles/Article-TVT/how2TestI18n.html
ISO(International Organization for Standardization) : http://ko.wikipedia.org/wiki/%EA%B5%AD%EC%A0%9C_%ED%91%9C%EC%A4%80%ED%99%94_%EA%B8%B0%EA%B5%AC
'언어&플랫폼 > Eclipse RCP&RAP' 카테고리의 다른 글
[Eclipse RAP]국제화, Internationalize - juno (0) | 2013.03.11 |
---|---|
[Eclipse RCP&RAP] 북마크 정리 (0) | 2013.03.11 |
swt 관련 사이트 (0) | 2013.02.12 |
org.eclipse.swt.SWTException: Invalid thread access (0) | 2013.02.12 |
[Eclipse rap] openfire linux(centOS) (0) | 2013.02.06 |
RAP 정식 사이트 : http://eclipse.org/rap/
technologi : http://developer.eclipsesource.com/technology/crossplatform/
SWT examples : http://www.eclipse.org/swt/examples.php
SWT Snippets : http://www.eclipse.org/swt/snippets/
GEF : http://www.eclipse.org/gef/ (Draw2d, GEF, Zest)
RCP tutorial : http://www.programcreek.com/develop-plug-ins-using-rcp/
Ecipspse 4 RCP tutorial : http://www.vogella.com/articles/EclipseRCP/article.html
한금 사이트 : http://hangumkj.blogspot.kr/2009/10/eclipse-rcp-rap.html
한금 피피트 리스트 : http://www.slideshare.net/hangum/eclipse-rap-1617751
이클립스 개념(한금) : http://blog.naver.com/blueshawn
이클립스 한국 위키 : http://ko.wikipedia.org/wiki/이클립스
rcp-rap ppt : http://www.slideshare.net/caniszczyk/single-sourcing-rcp-and-rap
OSGi 이론 : http://mobicon.tistory.com/34
http://cafe.naver.com/eclipseplugin/2278
이클립스 소개글 : http://cafe.naver.com/eclipseplugin/29
http://blog.naver.com/PostView.nhn?blogId=cjmzzang119&logNo=110108686370
RAP architectur : http://www.itblogging.de/java/eclipse-rap/rich-ajax-platform-architektur/
integrating BIRT into RAP applications : http://eclipsesource.com/blogs/2009/07/06/integrating-birt-into-rap-applications/
서블릿 컨테이너에서의 equinox 역할 : http://eclipse.org/equinox/server/http_in_container.php
RAP Developer Guide (in eclipse help) war deployment : http://help.eclipse.org/indigo/index.jsp?topic=%2Forg.eclipse.rap.help%2Fhelp%2Fhtml%2Fadvanced%2Fdeployment.html
OSGi 라이프 사이클 바뀌는 방법 : http://eclipsesource.com/blogs/2013/01/23/how-to-track-lifecycle-changes-of-osgi-bundles/
RAP RCP 다른점 : http://blog.naver.com/waitzero?Redirect=Log&logNo=70025111691
RCP 사용자 정의 다이얼로그 사용하기 : http://www.dorajistyle.pe.kr/2008/03/%EC%9D%B4%ED%81%B4%EB%A6%BD%EC%8A%A4rcpeclipse-rcp-eclipsercp-%EC%82%AC%EC%9A%A9%EC%9E%90-%EC%A0%95%EC%9D%98.html
Brand your Eclipse RCP applications
: http://www.ibm.com/developerworks/library/os-eclipse-brand/
특집기사: Table Viewer / Tree Viewer 성능향상 테크닉 :
SWT에서 Multi-Thread로 인한 UI Blocking에 대한 고찰
RAP 2.0 migration guide : http://www.eclipse.org/community/rcpos.php
RAP/server push : http://wiki.eclipse.org/RAP/UI_Callback
'언어&플랫폼 > Eclipse RCP&RAP' 카테고리의 다른 글
[Eclipse RAP]국제화, Internationalize - juno (0) | 2013.03.11 |
---|---|
[Eclipse RAP or Java] 국제화, Internationalizing 관련 사이트 (0) | 2013.03.11 |
swt 관련 사이트 (0) | 2013.02.12 |
org.eclipse.swt.SWTException: Invalid thread access (0) | 2013.02.12 |
[Eclipse rap] openfire linux(centOS) (0) | 2013.02.06 |
1. 마켓에서 maven plugin install
2. 프로젝트를 Maven project로 변경
3. pom.xml을 작성
README나 사이트에 보면 pom.xml에 추가하라는 부분이 있다. 그것을 pom.xml에 추가하면
4. 결과 (필요한 jar파일들이 주르르르륵. )
5. messagepack-RPC for java Quick Start :
http://wiki.msgpack.org/display/MSGPACK/QuickStart+for+Java#QuickStartforJava-MessagePackRPCforJava
예제소스를 돌려보면 추르르륵~
'학습자료 > tools' 카테고리의 다른 글
[tolls]redmine 2.x (fedora 16) 설치법 (0) | 2013.04.10 |
---|---|
doxygen linux(소스 분석 툴) (0) | 2013.04.09 |
Amazon Simple Storage Service(Amazon S3) 사용 (0) | 2013.02.18 |
rrdtool (0) | 2012.10.31 |
[tools]Nagios 설치(모니터링) (2) | 2012.10.17 |
디스크 <-> 커널 메모리 <-> 유저 메모리 <-> NIC 사이에는 많은 데이타 copy와 context switching(커널 <-> 유저)이 발생한다. 이러한 문제를 해결하고자 나온것이 바로 zero-copy 개념이며, zero-copy를 구현한 것이 바로 sendfile() 이라는 함수라고 할 수 있겠다.
그렇다면 얼마나 많은 copy와 context switching이 발생하길래...zero-copy라는 개념이 등장했는지...
example 1) file에서 data를 read하고, network세상으로 write하는 과정을 아래에서 확인해 보자.
read(file, tmp_buf, len);
write(socket, tmp_buf, len);
( Zero Copy I: User-Mode Perspective By Dragan Stancevic 에서 가져옴 )
4번의 context switching이 발생하고, 4번의 data copy(디스크->커널메모리->유저메모리->커널메모리->NIC)가 발생한다.
그렇다면, zero-copy를 구현해놨다는 sendfile()을 호출할 경우에는 몇번의 context switching과 copy가 발생할까?
example 2) file에서 data를 read하고, network세상으로 write하는 과정을 아래에서 확인해 보자.
sendfile(socket, file, len);
( Zero Copy I: User-Mode Perspective By Dragan Stancevic 에서 가져옴 )
2번의 context switching과 2번의 data copy(디스크->커널메모리->NIC)가 발생함을 확인할 수 있다.
단, zero-copy를 사용하기 위해서는 NIC에 특별한 하드웨어 기능(scatter-gather DMA)이 지원되어야만 동작할 수 있다는 것을 기억하도록 하자.
이외에 "Zero Copy I: User-Mode Perspective By Dragan Stancevic"의 글에서는 mmap을 이용하여 context switching과 data copy의 횟수를 줄이는 방법도 소개하고있다. (시그널 처리에 대한 것도 눈여겨 보고 기억해두어야 할 것!!)
zero-copy에 대해서 짧게 정리해 보았다. 개인적으로 나와 같은 개발자는 이정도만 알아 두어도 어디가서 창피당하지는 않을듯하다..^^
그렇다면 모 회사에 면접을 보러갔을때 나의 상황에 맞추어 다시 한번 생각해보면...
기본적으로 zero-copy는 file - to - file 또는 file - to - socket 사이의 data 전송을 위해 만들어 졌으므로 내가 개발했던 게이트웨이 데몬 처럼 socket - to - socket 사이의 data 전송을 주로 사용하는 환경에서 zero-copy기능은 의미가 없을것으로 판단된다.
고로 면접관의 생각 역시 오류가 있었다고 판단된다.
그렇다면 나의 답변은...
나는 커널레벨에서 데몬을 작성하여 read 또는 write 할 경우 유저 레벨에서 동작하는 데몬보다는 copy가 덜 발생 할 것이라고 생각했다.
즉, socket buffer <-> 커널 메모리 ("123456789" 라는 data를 socket buffer에서 -> 커널로 read)
그러나 유저 레벨에서는 socket buffer <-> 커널 메모리 <-> 유저 메모리("123456789"라는 data를 socket buffer에서 -> 커널로 , 그리고 다시 유저로)
하지만... 커널에서 역시 read 또는 write를 호출하며, 유저에서 호출하는 read 또는 write와 동일한 것으로(유저의 read를 추적해 보면 마지막에는 결국 커널에서 호출하는 read와 동일 함)보이며,
이것은 read하여 data를 저장하는 영역(유저 메모리 공간인지 커널 메모리 공간인지의 차이) 차이만이 두개 사이에 존재(커널데몬<->유저데몬)할 지도 모른다는 생각이며, 성능향상은 매우 적을 것(오히려 더 안좋아 질 수도 있다는..)이라고 판단 된다.
T-T 추측성 발언....
PS: 위 사진과 내용은 http://www.linuxjournal.com/article/6345에서 가져왔음을 다시 한번 알려드립니다.
[출처] zero-copy 에 대한 글(#2)|작성자 복스
무복사 기법을 통한 효율적인 데이터 전송 -
http://www.ibm.com/developerworks/kr/library/j-zerocopy/index.html
자바(java)와 리눅스(linux)의 zero copy 기법 - http://knight76.tistory.com/1417
'학습자료 > 네트워크' 카테고리의 다른 글
vlan 설정(ubuntu) (0) | 2013.11.06 |
---|---|
MTU, MSS [펌] (0) | 2013.06.17 |
netstat 명령어 사용법 - 펌 (0) | 2013.02.13 |
zero configuration networking (1) | 2013.02.12 |
네트워크 클래스 서브넷 마스크 (0) | 2012.01.17 |
messagePack - JSON, BSON, Thrift, Protocol Buffer와 같이 데이터 형태이다. 클래스나 데이터를 시리얼라이재이션(직렬화) 하는 라이브러리로 사용되는데 그곳에서 rpc도 구현해둔게 있다.
RPC (remote procedure call) : 원격 프로시져 콜 이란..
간단하게 말해서 클라이언트에서 서버쪽 함수를 로컬에서 실행시킨다. 아니 시키는 것처럼 동작되는 것이다.
msgpack에서 제공하는 rpc구현언어는 c++, ruby, java, phython, php ... 등 여러가지가 존재한다.
라이브러리를 보면 자바 네트워크프레임워크 중 netty를 사용한다.
quick start의 예제 소스를보면 이해하기 쉬움.
[Web Site] (http://msgpack.org/)
[Wiki](http://wiki.msgpack.org/display/MSGPACK/Home)
[Sources](https://github.com/msgpack)
[Issues](http://jira.msgpack.org/browse/MSGPACK)
1. messagepack wiki home :
http://wiki.msgpack.org/display/MSGPACK/Home
2 . msgpack-rpc 저장소 :
https://github.com/msgpack/msgpack-rpc
3. messagepack-RPC for java Quick Start :
http://wiki.msgpack.org/display/MSGPACK/QuickStart+for+Java#QuickStartforJava-MessagePackRPCforJava
msgpack -java 저장소
https://github.com/msgpack/msgpack-java
'학습자료 > Java' 카테고리의 다른 글
Installing software' has encountered a problem. 이클립스 문제 (0) | 2013.05.23 |
---|---|
[java] java.library.path - linux, eclipse (0) | 2013.03.19 |
[java] Java decompiler[Eclipse plugin] (0) | 2013.02.26 |
[Java] Network framework (Netty, Apache MINA) (0) | 2013.02.26 |
[Java] 네트워크 장비 검색(zeroconf/avahi/bonjour) (1) | 2013.02.13 |
그냥 마켓에서 jadclipse 써도 나온다.
jadClipse 주소
http://sourceforge.net/projects/jadclipse/
설치는 아래 방법으로 했으나 마켓으로 해도 걍 되지 않을까..
1. 첨부파일 다운 받습니다
2. eclipse 가 있는 폴더안에 plugins 폴더안에 net.sf.jadclipse_3.3.0.jar파일 삽입
3. 이클립스 재시작
4. Window > Preferences > Java > JadClipse 에서 Path to decompiler 항목은 첨부파일을 받은 jad.exe 로 path를 잡아준다
ex) F:\springsource\sts-3.1.0.RELEASE\util\jad\jad.exe
Directory for temporay files 는 적당한 위치에 잡아준다
ex) F:\springsource\sts-3.1.0.RELEASE\util\.net.sf.jadclipse
5. Window > Preferences > Java > JadClipse > Mise 에서 Convert Unicode strings into ANSI strings 체크(한글깨짐방지)
6. Window > Preferences > General > Editors > File Associations 에서 *.class , *.class without source 두개다 default를 JadClipse Class File Viewer로 선택 후 ok 완료
[출처] eclipse 디컴파일 (jad)연동|작성자 시네루
'학습자료 > Java' 카테고리의 다른 글
[java] java.library.path - linux, eclipse (0) | 2013.03.19 |
---|---|
[Java] messagePack(rpc 구현) (0) | 2013.02.27 |
[Java] Network framework (Netty, Apache MINA) (0) | 2013.02.26 |
[Java] 네트워크 장비 검색(zeroconf/avahi/bonjour) (1) | 2013.02.13 |
자바 정규식 문법 [펌] (0) | 2012.08.14 |
이희승 | Twitter 소프트웨어 엔지니어가 2012 deview에서 한 내용인듯.
http://deview.kr/2012/xe/index.php?document_srl=379&dummy=1&mid=track
라고 한다. - http://withoutwing.tistory.com/5
Netty
1. 네티 공식 사이트 - http://netty.io/
2. netty - 한글 사용자 가이드 첨부 - http://withoutwing.tistory.com/5
3. netty 한국인 사용자 그룹 - http://groups.google.co.kr/group/netty-ko?hl=ko
netty 사용에 관한 몇가지 tip -
잡다
네티란? - http://blog.naver.com/PostList.nhn?blogId=kjs077&from=postList&categoryNo=56
netty zerocopy 파일 전송 - http://clotho95.blog.me/140117229649
Apache MINA
1. 공식 사이트 - http://mina.apache.org/
아래주소는 그냥 위의 공식사이트에 나오는 링크이다.
- javadoc : http://mina.apache.org/mina-project/apidocs/index.html
- 특징 : http://mina.apache.org/mina-project/features.html
- quick start : http://mina.apache.org/mina-project/quick-start-guide.html
- MINA에 대한 사람들의 말들 : http://mina.apache.org/mina-project/testimonials.html
- download : http://mina.apache.org/mina-project/downloads.html
예전 글이지만 netty 개발자가 소개글로 올린 : http://www.javaservice.co.kr/~java/bbs/read.cgi?b=news&c=r_p&m=resource&n=1104313609&p=13&s=t (2004년)
Netty vs Apache MINA stackoverflow -
http://stackoverflow.com/questions/1637752/netty-vs-apache-mina
외..
Neuropu(java neural Network Framework)???
http://neuroph.sourceforge.net/
'학습자료 > Java' 카테고리의 다른 글
[Java] messagePack(rpc 구현) (0) | 2013.02.27 |
---|---|
[java] Java decompiler[Eclipse plugin] (0) | 2013.02.26 |
[Java] 네트워크 장비 검색(zeroconf/avahi/bonjour) (1) | 2013.02.13 |
자바 정규식 문법 [펌] (0) | 2012.08.14 |
자바 anntation @SuppressWarnings [펌] (0) | 2012.08.14 |
한마디로 네이버의 Ndrive 같은 것이다.
대신 아마존에서 제공한 것이며, 사용 용량과 트래픽 숫자에 따라 결제가 된다.
대신 값이 매우 싸며, 현재 초기 어느정도는 무료이다.
또한 sdk까지 제공하므로, 관련개발이 손쉬워졌다.
aws(amazon web service) s3 페이지 : http://aws.amazon.com/ko/s3/#getting-started
1. 웹 클라이언트 AWS management Confsole 이용:
http://aws.amazon.com/ko/console/
2. 오픈소스 데스크탑 어플리케이션 cyberduck 이용방법 :
http://aws.amazon.com/ko/s3/#getting-started 에서
My Account(내계정) > Security Credentials(보안 자격 증명) > 이동
Access Key ID와 Secret Access Key를 사이버덕에 기입
3. 윈도우에 네트워크 드라이브로 이용 :
http://gladinet.blogspot.kr/2011/06/amazon-s3-as-network-drive.html
Amazon sdk (with 이클립스)
마켓에서 amazon 검색 -> AWS Toolkit for Eclipse 을 install.
sdk와 s3브라우저 플러그인이 깔린다.
http://aws.amazon.com/articles/3586?_encoding=UTF8&jiveRedirect=1
sdk 다운 경로 : http://aws.amazon.com/ko/sdkforjava/
amazon sdk javadoc -
http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/index.html
'학습자료 > tools' 카테고리의 다른 글
[tolls]redmine 2.x (fedora 16) 설치법 (0) | 2013.04.10 |
---|---|
doxygen linux(소스 분석 툴) (0) | 2013.04.09 |
[Java] eclipse로 maven 사용(msgpackRPC 사용법) (0) | 2013.02.27 |
rrdtool (0) | 2012.10.31 |
[tools]Nagios 설치(모니터링) (2) | 2012.10.17 |
netstat는 네트워크 포트(TCP,UDP)상태를 확인함으로써 바이러스나 해킹여부를 진단할 수 있다.
▶명령어 : netstat [-a] [-e] [-n] [-s] [-r] [-p proto] [interval]
▶ netstat명령어 옵션 및 내용
옵션 |
내 용 | |||
-a |
컴퓨터에서 수신되어 활성화 되어 있는 모든 TCP 및 UDP 포트를 표시 | |||
-r |
라우팅 테이블 확인 및 Connection 되어 있는 포트번호 확인 | |||
-n |
현재 다른 PC와 연결(Established)되어 있는 포트번호 확인(IP 주소로 화면출력) | |||
-e |
랜카드에서 송수신한 패킷의 용량및 종류 확인, -s와 같이 사용 | |||
-s |
IP, ICMP, TCP, UDP 프로토콜의 상태 |
▶Active Connections Display State표시 내용
State |
내 용 | |||
LISTEN |
서버의 데몬이 떠서 접속 요청을 기다리는 상태 | |||
SYS-SENT |
로컬의 클라이언트 어플리케이션이 원격 호스트에 연결을 요청한 상태 | |||
SYN_RECEIVED |
서버가 원격 클라이언트로부터 접속 요구를 받아 클라이언트에게 응답을 하였지만 아직 클라이언트에게 확인 메시지는 받지 않은 상태 | |||
ESTABLISHED |
3 Way-Handshaking 이 완료된 후 서로 연결된 상태 | |||
FIN-WAIT1 |
서버에서 연결을 종료하기 위해 클라이언트에게 종결을 요청하고 회신을 받아 종료하는 과정의 상태. | |||
CLOSING |
흔하지 않지만 주로 확인 메시지가 전송도중 분실된 상태 | |||
TIME-WAIT |
연결은 종료되었지만 분실되었을지 모를 느린 세그먼트를 위해 당분간 소켓을 열어놓은 상태 | |||
CLOSED |
완전히 종료된 상태
|
'학습자료 > 네트워크' 카테고리의 다른 글
MTU, MSS [펌] (0) | 2013.06.17 |
---|---|
zero-copy[펌] (0) | 2013.02.27 |
zero configuration networking (1) | 2013.02.12 |
네트워크 클래스 서브넷 마스크 (0) | 2012.01.17 |
SSL(Secure Sockets Layer) (0) | 2012.01.16 |
zeroconf 간단 요약 -
http://cozyboy.tistory.com/entry/zero-configuration-networking
추가.
Bonjour browser download site
http://hobbyistsoftware.com/bonjourbrowser
이 프로그램을 사용하면 어떠한 장비들이 있는지 간단하게 볼수 있다.
굳이 검색할 장비를 세팅하지 않아도 나도모르게 내 컴퓨터엔, 혹은 주위에 이미 존재 하고 있을수도 있다.
아래 소스로 프로그램후, 위의 서비스 타입([ex] : _adisk._tcp)을 이용하여 검색해보자. 표시가 잘 된다면 기본은 성공이다.
목차는
- 환경
- avahi(검색할 리모트 네트워크 장비) conf file 내용
- 테스트 코드
- 결과
- 간략 설명
- 오픈소스 JBonjourBrowser 스샷 및 다운로드 위치
- 환경
zeroconf 구현물인 avahi는 리눅스에서 running 상태이고,
애플의 bonjour sdk에 있는 dnssd.jar를 이용하여
윈도우에서 리눅스 장비를 탐지 할 수 있다.
avahi는 왠만하면 OS설치시 깔려있다. 깔려있지 않을 시, 설치 및 구동 시켜야 한다.
avahi-dnsconfd 는 추가로 설치함.(아마 avahi service conf가 바뀌면 실시간으로 모니터링 하는 데몬인것 같다. 테스트 할시 용의하므로 추가 설치)
/etc/avahi/service/* 가 service config다
-
avahi service conf의 min.service파일 내용.
<?xml version='1.0' standalone='no'?><!--*-nxml-*--> <!DOCTYPE service-group SYSTEM 'avahi-service.dtd'> <service-group> <name>UCS-1078d23f2fbb</name> <service> <type>_cozy._tcp</type> <port>22</port> <txt-record>ID=cozy--</txt-record> <txt-record>NAME=min</txt-record> <txt-record>AGE=26</txt-record> <txt-record>COR=Gluesys</txt-record> </service> </service-group>
- [테스트 코드]
★ bonjour sdk for window 다운 : https://developer.apple.com/bonjour/
- 아이디 만들고 다운받으면 된다. 분명 아이디 안만들고 어디선가 받았는데 못 찾겠음.
package test.dns;
/*
* Browse -> Resolve(a single SRV record and a single TXT record에 적합하다) -> Query listen(txt record가 여러라인일때 쓴다.)
* */
import com.apple.dnssd.BrowseListener;
import com.apple.dnssd.DNSSD;
import com.apple.dnssd.DNSSDException;
import com.apple.dnssd.DNSSDService;
import com.apple.dnssd.QueryListener;
import com.apple.dnssd.ResolveListener;
import com.apple.dnssd.TXTRecord;
public class Main implements BrowseListener, QueryListener, ResolveListener{
private DNSSDService monitorQ = null;
public static void browse() throws DNSSDException, InterruptedException{
System.out.println("TestBrowse Starting");
DNSSDService b = DNSSD.browse("_min._tcp", new Main());
System.out.println("TestBrowse Running");
Thread.sleep(500);
System.out.println("TestBrowse Stopping");
b.stop();
}
public void TestResolveWithMonitoring(String serviceName, String regType, String domain)
throws DNSSDException, InterruptedException {
System.out.println("TestResolve Starting==================================");
DNSSDService r = DNSSD.resolve(0, DNSSD.ALL_INTERFACES, serviceName, regType, domain, this);
System.out.println("TestResolve Running");
/*시간이 너무 짧을시, txt-record가 갯수만큼 안나온다.*/
try {
Thread.sleep(500);
} catch (Exception e) {
e.printStackTrace();
System.exit(-1);
}
System.out.println("TestResolve Stopping===================================");
if (monitorQ == null)
r.stop();
else
monitorQ.stop();
}
public static void main(String[] args) {
try { browse(); }
catch (Exception e) {
e.printStackTrace();
System.exit(-1);
}
}
/** Browser listener`s */
@Override
public void serviceFound( DNSSDService browser, int flags, int iflndex,
String serviceName, String regType, String domain) {
// TODO Auto-generated method stub
System.out.print("\t(Browsing) Service Found : ");
System.out.println("browser:" + browser + ", flags:" + flags
+ ", iflndex:" + iflndex + ", serviceName:" + serviceName+ ", regType:" + regType+ ", domain:" + domain);
try {
TestResolveWithMonitoring(serviceName, regType, domain);
} catch (DNSSDException | InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void serviceLost(DNSSDService arg0, int arg1, int arg2, String arg3,
String arg4, String arg5) {
// TODO Auto-generated method stub
System.out.println("Add flags:" + arg0 + ", ifIndex:" + arg1
+ ", Name:" + arg2 + ", Type:" + arg3 + ", Type4:" + arg4
+ ", Type5:" + arg5);
}
/** Query listener`s */
public void queryAnswered(DNSSDService query, int flags, int ifIndex,
String fullName, int rrtype, int rrclass, byte[] rdata, int ttl) {
TXTRecord txtRecord = new TXTRecord(rdata);
System.out.println("\n+++txtRecord Size is :"+txtRecord.size()+"\n");
System.out.println("\t(Query) txtRecord is : ");
for (int i = 0; i < txtRecord.size(); i++) {
String key = txtRecord.getKey(i);
String value = txtRecord.getValueAsString(i);
if (key.length() > 0) {
System.out.println("\t\t" + key + "=" + value);
}
}
}
/** Resolve listener`s */
public void serviceResolved(DNSSDService resolver, int flags, int ifIndex,
String fullName, String hostName, int port, TXTRecord txtRecord) {
System.out.print("\t(Resolve)Service Resolved: " + hostName + ":" + port);
System.out.println(" Flags: " + flags + ", ifIndex: " + ifIndex + ", FQDN: " + fullName);
// Now that we've got a resolve result,
// start monitoring the TXT record and stop the resolve call.
try {
monitorQ = DNSSD.queryRecord(0, ifIndex, fullName, 16, 1, this);
} catch (Exception e) {
e.printStackTrace();
System.exit(-1);
}
/*try {
Thread.sleep(1);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}*/
resolver.stop();
}
/** all listener`s */
@Override
public void operationFailed(DNSSDService service, int errorCode) {
System.out.println("listener failed " + errorCode);
System.exit(-1);
}
}
- [결과]
TestBrowse Starting
TestBrowse Running
(Browsing) Service Found : browser:com.apple.dnssd.AppleBrowser@31731334, flags:2, iflndex:11, serviceName:min_test, regType:_min._tcp., domain:local.
TestResolve Starting==================================
TestResolve Running
(Resolve)Service Resolved: min.local.:22 Flags: 0, ifIndex: 11, FQDN: min_test._min._tcp.local.
+++txtRecord Size is :4
(Query) txtRecord is :
ID=cozy--
NAME=min
AGE=26
COR=Gluesys
TestBrowse Stopping
TestResolve Stopping===================================
- 간략 설명
BrowseListener, ResolveListener, QueryListener 가 구현되어있다.
BrowseListener로는 (serviceFound )
browser:com.apple.dnssd.AppleBrowser@31731334, flags:2, iflndex:11, serviceName:min_test, regType:_min._tcp., domain:local.
를 얻는다.
ResolveListener로는 (serviceResolved)
(Resolve)Service Resolved: min.local.:22 Flags: 0, ifIndex: 11, FQDN: min_test._min._tcp.local.
☞ QueryListener는 단일 txtRecord를 얻는데 사용된다. 멀티라인의 txtRecord를 얻기위해선 QueryListener를 사용해야 한다. 위의 소스는 단지 Query에 이용되는 fullname(serviceName+regType+domain = min_test._min._tcp.local.)인자가 무엇인지 확인한다.
를 얻는다
멀티라인의 txtRecord를 얻기위해
QueryListener를 (queryAnswered ) 사용하여 아래값을 얻는다.
ID=cozy--
NAME=min
AGE=26
COR=Gluesys
자세한 내용은 javadoc을 참고 한다.
- 오픈소스 JBonjourBrowser 스샷
다운 로드 : https://wiki.cs.columbia.edu/display/res/JBonjourBrowser
BonjourBrowser와 다르게 service Type으로 묶어서 표시한다.
[참고]
avahi service type 확인
http://linux.die.net/man/5/avahi.service
DNSSD javadoc
https://developer.apple.com/library/mac/documentation/Java/Reference/DNSServiceDiscovery_JavaRef/com/apple/dnssd/DNSSD.html
Bonjour browser download
http://hobbyistsoftware.com/bonjourbrowser
'학습자료 > Java' 카테고리의 다른 글
[Java] messagePack(rpc 구현) (0) | 2013.02.27 |
---|---|
[java] Java decompiler[Eclipse plugin] (0) | 2013.02.26 |
[Java] Network framework (Netty, Apache MINA) (0) | 2013.02.26 |
자바 정규식 문법 [펌] (0) | 2012.08.14 |
자바 anntation @SuppressWarnings [펌] (0) | 2012.08.14 |
SWT에서 Multi-Thread로 인한 UI Blocking에 대한 고찰
SWT, Swing or AWT (일반적으로 자바를 배운사람은 swing은 대략 안다. SWT, Swing, AWT 객체비교 표가 존재하는데, 비교하면 대략 SWT와 매치시킬수 있다)
http://www.ibm.com/developerworks/kr/library/os-swingswt/index.html
Swt widgets, snippets, JFace Snippets 예제 및 그림 존재
'언어&플랫폼 > Eclipse RCP&RAP' 카테고리의 다른 글
[Eclipse RAP or Java] 국제화, Internationalizing 관련 사이트 (0) | 2013.03.11 |
---|---|
[Eclipse RCP&RAP] 북마크 정리 (0) | 2013.03.11 |
org.eclipse.swt.SWTException: Invalid thread access (0) | 2013.02.12 |
[Eclipse rap] openfire linux(centOS) (0) | 2013.02.06 |
[Eclipse RAP] RAP 2.0 관련 사이트 (0) | 2013.02.06 |
Viewpart에서 외부library 사용중 그 라이브러리에서도 내부적으로 쓰레드를 사용하여 충돌이 발생한듯 하다.
안드로이드 같은경우 main 스레드와 UI 스레드가 따로 구분되어 있다.
SWT역시 그러한듯 하다. 그렇게 만들어져야만 한다.
Text text;
text.getDisplay().asyncExec( ~로도 안되고
PlatformUI.getWorkbench().getDisplay().asyncExec( ~로도 안된다.
Display.getDefault().asyncExec(new Runnable() {
@Override
public void run() {
여기에 작성
}
});
}
http://rusya7.blogspot.kr/2011/11/orgeclipseswtswtexception-invalid.html에서 해결법 찾음
페이지 제목이 Java-studying / swt-widget-thread-problem 인것을 보면 Thread 관련 소스예제들이 존재하는 듯하다.
https://github.com/rusya7/Java-studying/tree/master/swt-widget-thread-problem
There's only one UI thread in Eclipse. In a nutshell, the rules are:
- If you got called as part of a UI operation (e.g. event handler, view initialization) you are in the UI thread.
- All other operations that invoke a UI (e.g. a job which needs to show a dialog or send information to a view which modifies a widget) - need to sync with the UI thread.
This is basically done like this:
Display.getDefault().syncExec( new Runnable() { public void run() { } });
Your code goes in the run method. You may also use the asyncExec
method to continue without waiting for the UI to finish.
Try using the snippet above to wrap the problematic code.
-> http://www.vogella.com/articles/EclipseJobs/article.html
왜 이렇게 해결이 되는것인가???
Display javadoc ->
- Class Display (Display 는 class, 디스플레이는 말그대로 영어 표현)
SWT와 기본 운영 체제 사이의 연결을 관리 할 책임이 있다.
가장 중요한 기능은 플랫폼 이벤트 모델의 관점에서 SWT 이벤트 루프를 구현하는 것이다. 또한 운영 체제에 대한 정보를 액세스하기위한 다양한 방법을 제공하고, 어떤 SWT를 할당 운영 체제 리소스를 전체 제어 할 수 있다.
SWT로 만드는 응용 프로그램은 기존의 Display가 dispose() 메시지를 보내지 않은이상, 거의.. 단 하나의 Display만 존재한다.
SWT에서 Display instance를 생성 한 스레드가 해당 디스플레이의 사용자 인터페이스 스레드로 구분된다. (메인 스레드와 사용자 스레드는 같다는 말같다. 대신 아래나오지만, )
특정 디스플레이에 대한 사용자 인터페이스 스레드는 다음과 같은 특수 속성이 있다. :
1. The event loop for that display must be run from the thread.
2. Some SWT API methods (notably, most of the public methods in Widget and its subclasses), may only be called from the thread. (To support multi-threaded user-interface applications, class Display provides inter-thread communication methods which allow threads other than the user-interface thread to request that it perform operations on their behalf.)
3. The thread is not allowed to construct other Displays until that display has been disposed. (Note that, this is in addition to the restriction mentioned above concerning platform support for multiple displays. Thus, the only way to have multiple simultaneously active displays, even on platforms which support it, is to have multiple threads.)
1. 디스플레이에 대한 event loop는 스레드에서 실행해야만 한다.
2. 일부 SWT api methods(특히, 위젯의 public method의 대부분)는 쓰레드로 불려야만 한다. (multi-threaded user-interface 응용 프로그램을 지원하기 위해, class Display는
inter-thread communication methods를 제공한다(자신의 작업을 대신수행하는 user-interface thread 보다는 말이다)
3. 스레드는 디스플레이가 dispose되기전까지 다른 Display를 허락하지 않는다. 심지어 multiple displays를 지원하는 플랫폼에서조차. 그래서 mutiple displays를 활성화 하는 방법은 multiple thread 뿐이다.
- Display.getDefault
Returns the default display. One is created (making the thread that invokes this method its user-interface thread) if it did not already exist.
- Display.getDefault.asyncExec
Causes the run()
method of the runnable to be invoked by the user-interface thread at the next reasonable opportunity. The caller of this method continues to run in parallel, and is not notified when the runnable has completed. Specifying null
as the runnable simply wakes the user-interface thread when run.
Note that at the time the runnable is invoked, widgets that have the receiver as their display may have been disposed. Therefore, it is necessary to check for this case inside the runnable before accessing the widget.
[참고]
Eclipse Jobs and Background Processing
http://www.vogella.com/articles/EclipseJobs/article.html
Display javadoc
'언어&플랫폼 > Eclipse RCP&RAP' 카테고리의 다른 글
[Eclipse RCP&RAP] 북마크 정리 (0) | 2013.03.11 |
---|---|
swt 관련 사이트 (0) | 2013.02.12 |
[Eclipse rap] openfire linux(centOS) (0) | 2013.02.06 |
[Eclipse RAP] RAP 2.0 관련 사이트 (0) | 2013.02.06 |
[Eclipse Rap] RAP2.0 - Remote Application Platform (0) | 2013.02.05 |
Zero configuration networking
http://en.wikipedia.org/wiki/Zero_configuration_networking#Service_discovery
dnssd java library를 이용한 테스트 코드와 결과 -
http://cozyboy.tistory.com/entry/네트워크-장비-검색
Zeorconf 란?
Zero Confiuration Networking으로 DNS 서버 설정이나 IP를 이용하지 않은 networking 즉 DHCP 환경이 없는 네트워크에서 peer to peer 연결이나 Wireless 환경에서 수동설정없이 자동으로 네트워킹 할수 있는 환경을 만들어주는것.
위와 같은 일을 하기위해선 네트워크 장치검색 프로토콜이 필요하다.
- Apple
Apple에서 만든 Zero Configuration Networking 프로토콜로써 IP 네트워크 상에서 컴퓨터, 주변기기 및 서비스를 자동으로 검색하는 서비스로 Bonjour(데스크탑 어플리케이션)가 있다. Bonjour는 DNS based Service Discovery(DNS-SD) 프로토콜을 사용한다.
- windows
windows에선 upnp이 존재한다. 윈도우7의 윈도우 미디어가 DLNA를 적용하였으며, DLNA는 upnp 프로토콜의 SSDP(Simple Service Discovery Protocol)를 사용한다.
몇년전부터 스마트 티비 대부분 DLNA를 지원했다.
avahi는 bonjour와 같이 dns-sd이며, 단지 리눅스용으로 만들어졌다. 그래서 bonjour sdk로 avahi를 검색할 수 있다. bonjour로 upnp검색은 불가능하다.
avahi(linux), bonjour(apple), upnp(window) 등이 Zeroconf를 구현한 것들로써
위와 관련된 library를 이용하면 네트워크 장치 검색이 가능하다.
Bonjour 와 Zeroconf
http://qnibus.com/webtonz/2011/06/24/bonjour-%EC%99%80-zeroconf/
DNS Service Discovery http://pic.dhe.ibm.com/infocenter/sprotect/v2r8m0/index.jsp?topic=%2Fcom.ibm.ips.doc%2Fconcepts%2Fgx_gv_zero_configuration.htm
com.apple.dnssd JavaDoc
avahi wiki
http://en.wikipedia.org/wiki/Avahi_(software)
bonjour wiki
http://en.wikipedia.org/wiki/Bonjour_(software)
DNS-SD From java library 간략 정리
http://elliotth.blogspot.kr/2009/03/registering-service-with-dns-sd-from.html
dns-sd 사이트
'학습자료 > 네트워크' 카테고리의 다른 글
MTU, MSS [펌] (0) | 2013.06.17 |
---|---|
zero-copy[펌] (0) | 2013.02.27 |
netstat 명령어 사용법 - 펌 (0) | 2013.02.13 |
네트워크 클래스 서브넷 마스크 (0) | 2012.01.17 |
SSL(Secure Sockets Layer) (0) | 2012.01.16 |
mysql에 openfire 디비 생성(mysqld가 실행되고 있게 한다. 내부db를 사용할수도 있다는데 mysql 사용함)
http://www.igniterealtime.org/
openfire linux tar 다운
압축 풀기
bin/openfire 에 777 권한 주고
openfire start
http://localhostIP:9090 으로 접속
(접속이 잘 안된다면 openfire status로 실행중인지 확인)
next -> next -> 아이피와 아까 생성한 디비명을 적고
비번 생성
admin, 비번으로 접속
'언어&플랫폼 > Eclipse RCP&RAP' 카테고리의 다른 글
swt 관련 사이트 (0) | 2013.02.12 |
---|---|
org.eclipse.swt.SWTException: Invalid thread access (0) | 2013.02.12 |
[Eclipse RAP] RAP 2.0 관련 사이트 (0) | 2013.02.06 |
[Eclipse Rap] RAP2.0 - Remote Application Platform (0) | 2013.02.05 |
[Eclipse RCP] elicpse e4(juno) 관련 사이트 (0) | 2013.02.05 |
The Pillars of the RAP 2.0 API(RAP 2.0 Countdown (2/5)) -
http://eclipsesource.com/blogs/2013/02/04/rap-2-0-countdown-25/
RAP protocol: On the way to RAP 2.0
http://eclipsesource.com/blogs/2010/04/28/rap-2-0-protocol/
RAP protocol: JSON messages -
http://eclipsesource.com/blogs/2010/05/10/rap-protocol-json-messages/
RAP becomes the Remote Application Platform -
http://eclipsesource.com/blogs/2012/11/26/rap-becomes-the-remote-application-platform/
'언어&플랫폼 > Eclipse RCP&RAP' 카테고리의 다른 글
org.eclipse.swt.SWTException: Invalid thread access (0) | 2013.02.12 |
---|---|
[Eclipse rap] openfire linux(centOS) (0) | 2013.02.06 |
[Eclipse Rap] RAP2.0 - Remote Application Platform (0) | 2013.02.05 |
[Eclipse RCP] elicpse e4(juno) 관련 사이트 (0) | 2013.02.05 |
[Eclipse RCP] view와 editor의 차이점 (0) | 2013.01.29 |
eclipse platform 개발할때,
RCP는 3.x로 할지 e4로 할지, RAP는 1.x로 할지 2.x로 할지 고민중에 RAP의 이름이 변경된 이유가 써있길래 겸사겸사 번역?? 스럽게 적어둠. [원문]보기
RAP의 경우 1.x버전의 코드를 2.x로 convert하는 것도 일이 되겠구나란 생각이 든다.
- ajax platform에서 protocol형태로 바뀐 간략한 이유
1. 자바코드가 server에서 돌고 있는데, javascript 를 qooxdoo(자바스크립트 UI 프래임워크)에 의해 widgets으로 rendering(서버가 qooxdoo에 맞는 자바스크립트 코드를 클라이언트에게 보내는것)하도록 하는 부분이 과부하가 컸다.
2. 클라이언트는 특정 자바스크립트 프래임워크에 취약하다.
이 두가지의 상황을 더 좋게 하기위해 protocol 개념을 사용하게 되었다.
Eclipse RAP 1.x 까진 Rich ajax platform이란 명칭이였지만
2.x에서부턴 명칭은 같으나 Remote Application Platform라는 새로운 이름이 부여되었다.
새로운 RAP는 "Half Object plus Protocol(HOPP)" 패턴으로 구현되었다.
RAP에서 위젯의 반은 server에서, 반은 client에서 작동되게 된다.
그 둘은 protocol에 의해 연결된다.
이와같은 디자인의 가장 큰 장점은 어플리케이션이 client/server communication을 신경쓸 필요가 없다는 것이다. 이 둘의 communication은 플랫폼이 알아서 한다.
이전의 RAP는 반의 objects만 가지고 있었으나 protocol은 없었다. 대신 javascript commands와 http parameters에 의해서 통신을 하였다.
RAP 1.5부터는 전체적인 플랫폼들이 open JSON protocol로 migration 되었다.
client의 구조와 server는 JSON messageds로 바뀌었다.
이 메시지는 header 부분과 operations list로 구성된다.
{
head: { … },
operations: [ … ]
}
오퍼레이션은 크게 여섯가지 타입이 있다.
create – to create a remote object,
set – to set one or more properties on the remote object, and
destroy – to well, you guessed it. Besides set there is also call to call a method on a remote object.
listen and notify to exchange events
Every remote object is identified by an id and every operation addresses exactly one target object.
모든 remote object는 id로 식별되고, 모든 operation은 address로 하나의 target object로써 식별된다. (맞는지 모르겠다. 위 글이 원문임.)
예시) message that creates a Button with a Selection listener
{
"head": {
"requestCounter": 1
},
"operations": [
[ "create", "w4", "rwt.widgets.Button", {
"parent": "w2",
"style": [ "PUSH" ],
"bounds": [ 5, 68, 131, 32 ],
"text": "I am a button" } ],
[ "listen", "w4", { "Selection": true } ]
]
}
위의 json(프로토콜)을 보면 create operation이 이미 버튼의 특성을 init하는 부분을 포함하고 있다는 것을 볼수 있다. 그리고 selection listener가 붙는 listen operation을 확인할 수 있다.
버튼이 클릭될 시, 클라이언트가 서버에 보내는 message
{
"head": {
"requestCounter": 1
},
"operations": [
[ "notify", "w4", "Selection", {
"shiftKey": false,
"ctrlKey": false,
"altKey": false
} ],
[ "set", "w1", {
"cursorLocation": [ 121, 104 ],
"focusControl": "w4"
} ]
]
}
위의 것은 대략적인 작동을 위한 글이며, 자세한 protocol을 알고 싶다면
이 글에서 중요한 점은, RAP가 half objects라도 protocol에 UI의 세부사항이 없다는 것이다.
protocol은 더이상 HTTP에 depends하지 않다. 비록 RAP가 여전히 HTTP에 얽매여 있지만, 앞으로의 버전은 다른 추가적인 protocols에 의해 작동될것이다.
(ajax와 qooxdoo에 depends하게 동작하지 않겠다는 소리 같음. 중요한것은 독자적인 프로토콜로 동작할 것이란 말인듯하다. 그것이 표준인지 표준을 만들겠다는 것인지까진 모르겠지만)
(암튼 이게 RAP 가 새로운 이름으로 변경된 이유라고 한다. 또 모든것이 같은 프로그래밍 모델이 되기 위한 길이라고 한다. 어플리케이션과 웹과 스마트폰의 프로그래밍 일치화. 뭐 이런것??)
-------------------------------------------------
RAP protocol: On the way to RAP 2.0 -
http://eclipsesource.com/blogs/2010/04/28/rap-2-0-protocol/
Remote - The New "R" in RAP
http://eclipsesource.com/blogs/2013/02/01/rap-2-0-countdown-15/
RAP protocol: JSON messages
http://eclipsesource.com/blogs/2010/05/10/rap-protocol-json-messages/
'언어&플랫폼 > Eclipse RCP&RAP' 카테고리의 다른 글
[Eclipse rap] openfire linux(centOS) (0) | 2013.02.06 |
---|---|
[Eclipse RAP] RAP 2.0 관련 사이트 (0) | 2013.02.06 |
[Eclipse RCP] elicpse e4(juno) 관련 사이트 (0) | 2013.02.05 |
[Eclipse RCP] view와 editor의 차이점 (0) | 2013.01.29 |
[Eclipse RAP]tomcat(war) Deploy, 배포 (2) | 2013.01.24 |