Computer/Java2012/02/07 09:10
Mac OS X은 기본적으로 자바가 설치 되어 있다. 
다음 과 같은 경로에 설치가 되어 있다.
/System/Library/Frameworks/JavaVM.framework/Versions/Current
하지만 자바 소스 인 src.jar 및 doc.jar는 없는데 이것 은 Java for Mac OS X 10.x Update x Developer Package를 별도로 설치해야 하고 애플 사이트에 계정이 있어야 다운로드를 할 수 있다.

여기서 Java Developer Package 를 검색하여 다운 받자. Apple Developer Downloads Website

설치를 하면 다음과 같은 경로에서 해당 파일들을 찾을 수 있다.
/Library/Java/JavaVirtualMachines/1.6.0_29-b11-402.jdk/Contents/Home

그리고 해당 IDE에서 소스 연결을 하면 쉽게 소스를 참조할 수 있다. 

 
저작자 표시 비영리 변경 금지
Posted by Bitaholic ...Simple is beautiful Bitaholic
Computer/Linux2011/09/23 09:46
두 파일의 차의가 항상 궁금 했었다.
좋은 문서를 발견! : 
goo.gl/ZN4vF

간략히 설명하면 .bash_profile은 login shell 을 위한 것이고, .bash_rc는 interactive non-login shell들을 위해 실행되는
파일이다.

그럼 login, non-login shell은 무엇인가?
console에서 바로 로그인을 하던 ssh를 이용해 리모트에서 로그인을 하던 로그인 할 때 단 1회만 .bash_profile은
실행이 된다. 반면에 로그인한 쉘에서 새로운 배쉬 쉘을 실행한다거나  Gnome 같은 환경에서 터미널 프로그램으로
새로운 쉘 창을 열면 열때 마다 .bashrc가 실행이 된다. 

단 Mac OS X은 예외 인데 멀로 하던 .bash_profile이 실행이 된다.
 (.bashrc에 써봤자 실행이 안돼 반영이 안된다 -삽질주의)

그럼 문서의 저자가 추천하는 방법은 대부분 .bash_profile에 들어가 있는데 대부분의 내용을 .bashrc에 쓰고
.bash_profile에서 해당 파일을 실행하는 방법을 쓰라는 것이다.
다음과 같이

 if [ -f ~/.bashrc ]; then
   source ~/.bashrc 
 fi

끝!

 
 
저작자 표시 비영리 변경 금지
Posted by Bitaholic ...Simple is beautiful Bitaholic
Computer/Spring2010/10/20 16:41
스프링을 쓰면 Http Request를 적절한 클래스의 적절한 메소드로 연결하는(Mapping) 작업을 비교적 쉽게 할 수 있다. 여러가지 방법이 있지만 Java Annotation (@RequestMapping)을 이용해서 클래스 또는 메소드에다가 쓰면 해당 규칙에 맞는 Http Request가 그 메소드를 호출 할 수 있도록 해준다. 그 규칙은 Request URL, Request Header, Request parameter , Http method 조합으로 정해 주는데 Request URL은 ant 타입으로 쓸 수 있다. ( *, ** 를 쓸 수 있다) 

ex1)
아래의 예는 http://host/context/user 로 오는 요청을  handlerUser(..) 메소드에 전달 해준다.
@RequestMapping("/user")
public void handleUser(...) {...}

ex2)
아래의 예는 Header로 content-type이 text/*에 해당되고 /user로 요청만 메소드로 전달해준다. 
@RequestMapping(value = "/user", headers="content-type=text/*")

Path Variable
Spring 3.0에서는 RESTful webservice를 지원하기 위해 path variable기능이 추가 되었다. 간단하게 설명하면 " /부서/이름" 이런 포맷의 REST요청을 URL을 파싱하지 않고 바로 메소드 인자로 받을 수 있는 기능이다. 
아래와 같이 선언을 하면 각 URL의 부분들이 해당 인자로 매핑이 된다.  
@RequestMapping(value="/{department}/{employee}")
public void handleMethod(@PathVariable String department, @PathVariable String employee) {...) 

Suffix Pattern
이때 DefaultAnnotationHandlerMapping 은 @RequestMapping에 자동으로 몇몇 접미어를 붙여서 ReqestMapping 리스트에 추가 한다. 즉 위와 같은 예에서는
  • /{department}/{employee}
  • /{department}/{employee}.*
  • /{department}/{employee}/
위와 같은 RequestMapping을 자동으로 추가해 준다. 즉 /sales/thomas, /sales/thomas/, /sales/thosmas.add 와같은 URL로 자동으로 매핑이 된다. 이러한 패턴을 쓰기 싫으면 DefaultAnnotationHandlerMapping 에서 해당 옵션을 꺼주어야 한다. 스프링 설정 파일에서 다음과 같이 설정을 꺼줄 수 있다.
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
   <property name="useDefaultSuffixPattern" value="false"/>
</bean>


저작자 표시 비영리 변경 금지
Posted by Bitaholic ...Simple is beautiful Bitaholic
Computer2010/10/15 09:31

Eclipse 로 여러 다른 O/S ( ex. Mac OS X, Windows 7 ) 에서 협업을 할 때 영문자는 상관이 없지만 자바 파일에 한글로 주석을 달고 SVN 같은 버전관리 저장소에 프로젝트를 공유 할 때 맥에서 한글로 주석을 단 자바 파일을 윈도우에서 열어보면 또한 반대로 했을 때 한글이 깨지는 문제가 생긴다. 이때 파일이나 프로젝트의 프로퍼티에서 인코딩을 바꿔도 되지만 전체 이클립스 설정을 바꾸면 프로젝트를 만들 때 만다 인코딩을 바꾸는 일을 안해도 된다. 이 설정은 아래와 에 있다

1. MacOS X (SnowLeopard), Eclipse 3.5.2
   Eclipse -> Preferences... 
   General -> Workspace -> Text file encoding 에서 Default에서 Other에서 UTF-8 로 선택하면 된다. 


위에서 보는 거와 같이 Mac OS X은 디폴트 텍스트 인코딩이 MacRoman으로 되어 있다 이것을 UTF-8로 바꾸고 OK나 Apply버튼을 누르면 된다. 윈도우7도 마찬가지로 Default가 "Cp1252"으로 되어 있고 UTF-8로 바꾸어 주면된다.]
저작자 표시 비영리 변경 금지

'Computer' 카테고리의 다른 글

Eclipse로 여러 O/S 프로젝트를 협업할 때...  (0) 2010/10/15
Tomcat Tip #1  (0) 2009/09/18
Posted by Bitaholic ...Simple is beautiful Bitaholic
Computer/Spring2010/09/16 10:24
토비 스프링 책 스터디를 하다 트랜잭션 부분을 하는 데 도대체가 Auto Commit을 끄고 롤백을 시도해도 롤백이 되지 않았다 디비를 살펴보니 Commit 또는 Rollback 하기 전에 디비에 적용한 것들이 바로 디비에 적용이 되는 것이였다. 즉 Transaction 처리가 안된다는 건데 구글링 해보니 문제는 테이블의 Engine type이였다. 내가 만든 테이블은 MyISAM이였는데 트랜잭션은 InnoDB로 해야 한단다 (참고 : http://dev.mysql.com/doc/refman/5.0/en/connector-j-usagenotes-j2ee.html 의 20.3.5.2.4.2. Transactional JDBC Access) 

테이블의 Engine 타입을 변경하는 것은 아래와 같이 하면 된다. 
  ALTER TABLE my_table ENGINE = InnoDB;


 
저작자 표시 비영리 변경 금지
Posted by Bitaholic ...Simple is beautiful Bitaholic
Computer/Ruby&Rails2009/11/27 11:14




Mongrel 은 루비웹서버이다. Rails에서 WebBrick과 함께 쉽게 쓸 수 있는 웹서버인데, 하지만 몽그렐은 하나의 프로세스에 하나의 쓰레드로만 돌아가기 때문에 상용서비스를 하려면 아파치 웹서버를 프락시 서버 및 로드 밸런서로 쓰고 뒤에 다수의 몽그렐 서버를 클러스터로 구성 해야 한다. (이때 서버들 간의 세션 공유는 아마 가정하지 않고, 공유 되는 정보는 모두 DB에서 이루어지는 것을 가정해야 한다. 이부분은 아직 자세히 보진 않았다) 

1. 아파치 웹서버를 프락시 서버로 구성하기 
  a) mod_proxy, mod_rewrite 아파치 모듈이 필요하다 (없으면 다운받아서 아파치 서버 모듈폴더에 넣어두자)
      - 폴더는 CentOS5.x기준으로 '/etc/httpd/modules' 이다
  b) 위의 모듈을 로딩하고 설정을 해준다 (/etc/httpd/conf/httpd.conf)
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so

<IfModule mod_proxy.c>
ProxyRequests On

<Proxy *>
    Order deny,allow
    #Deny from all
    Allow from all
</Proxy>


RewriteEngine On

<Proxy balancer://mongrel_cluster>
     BalancerMember http://127.0.0.1:8000 retry=10
     BalancerMember http://127.0.0.1:8001 retry=10
     BalancerMember http://127.0.0.1:8002 retry=10
</Proxy>

# PERFORMANCE: If no static file exists, let Mongrel handle the request
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
RewriteRule ^/(.*)$ balancer://mongrel_cluster%{REQUEST_URI} [P,QSA,L]
 
2. Mongrel cluster 설치
gem install mongrel
gem install mongrel_cluster
 tip) gem 으로 몽그렐 설치시 'make : xxx[fastthred.c] Error 127' 이라는 에러가 나면 gcc가 서버에 설치가 안되있어서 그러니 관련 라이브러리르 설치 하자.
  - centOS에서는
      - yum install gcc-c++ kernel-devel
  - Devian계열은
      - apt-get install build-essentail
으로 설치 하면 된다. centOS에는 테스트 해서 성공했는에 우분투등 데비안 계열을 해보진 않았다. 아마 되겠지

3. Mongrel을 서비스(데몬)으로 등록하고 부팅시 자동 스타트 되게 만들기  
   몽그렐은 기본적으로 레일스 어플리케이션 폴더에서 실행을 해야 한다. (로그폴더(log), 설정폴더(config), 임시폴더(tmp) 등이 필요하다), 물론 저 폴더들을 따로 옵션으로 지정을 할 수 도 있다.
 
    i) Mongrel 서버를 띄우 리눅스 계정을 하나 만들어 준다.
      $ adduser -r mongrel

    ii) 레일스 어플리케이션 홈폴더에서
    $ mongrel_rails cluster::configure -e production -p 8000 -N 3

위의 명령으로 기본 설정파일등을 만들어 준다.(위의 설정은, 포트 8000, 8001, 8002로서 서버 3개를 클러스터로 시작한다는 말이다.

iii) 그러면 아래와 같은 명령으로 몽그렐클러스터 를 시작하고 종료시킬수 있다.
$ mongrel_rails cluster::start
$ mongrel_rails cluster::stop

iv) /etc/mongrel_cluster 라는 폴더를 만들어 준다.

v) /etc/mongrel_cluster/yourrailsapp.yum 이라는 링크를 만들어 준다.
$ ln /MyRailsAppHome/config/mongrel_cluster.yml /etc/mongrel_cluster/myrailsapp.yml

vi) 자동스타트를 위해 init.d 파일을 /etc/init.d/ 폴더 밑으로 복사한다. (스크립트는 몽그렐을 설치하면
생성되 있다.
$ cp /usr/lib/ruby/gems/1.8/gems/mongrel_cluster-1.0.5/resources/mongrel_cluster /etc/init.d

vii) mongrel_cluster 스크립트의 실행 권한을 주고 자동 실행이되게 관련 값을 변경해 준다.
$ chmod +x /etc/init.d/mongrel_cluster
$ service mongrel_cluster start
$ chkconfig mongrel_cluster on
    viii) /etc/mongrel_cluster/에 복사한 몽그렐 설정 내용은 대충 이럴것 이다.
user: mongrel
cwd: /myRailsAppHome
log_file: /myRailsAppHome/log/mongrel.log
port: "8000"
environment: production
group: mongrel
address: 127.0.0.1
pid_file: /myRailsAppHome/tmp/pids/mongrel.pid
servers: 3

    iX) 위의 폴더중, log, pid폴더에 접근권한을 mongrel 유저에게 주어야 한다.
      $ chown -R mongrel.mongrel /myRailsAppHome/log
      $ chown -R mongrel.mongrel /myRailsAppHome/tmp/pids

위와같의 하면 서버 실행시 아파치와 몽그렐 클러스터가 실행될 것이다.

Ref) http://www.mygeekproject.com/?p=155
Ref) http://mongrel.rubyforge.org/
Ref) http://wiki.rubyonrails.org/deployment/apache-mongrel
저작자 표시 비영리 변경 금지

'Computer > Ruby&Rails' 카테고리의 다른 글

Apache + Mongrel 설정  (0) 2009/11/27
Posted by Bitaholic ...Simple is beautiful Bitaholic
Computer/Linux2009/11/25 11:00
설정 파일들은 '/etc/httpd/conf'에 있다.
httpd 실행 파일은 '/usr/sbin/httpd' (cent OS 5 기준)

아파치 실행/중단은
  service httpd start/stop/restart
로 하면 된다.
저작자 표시 비영리 변경 금지
Posted by Bitaholic ...Simple is beautiful Bitaholic
Computer/Linux2009/11/25 10:55
which
 - 하는일 : 명령어(프로그램)이 어디에 있는지 경로를 알려주는 놈 (show the full path of (shell) commands)
 - ex) which httpd (아파치 웹서버가 어디에 들어 있는지 알려준다)

nmap
 - 하는 일 : port 스캔을 해서 무슨 포트가 열려있는지 검색해준다.(Network exploration tool and security /port scanner <- 보아하니 아주 많은 일을 하는 넘인거 같다
 - ex) nmap localhost (현재 로컬호스트에 어떤 포트가 열려 서비스를 하는지 알려준다)

ntsysv
 - 하는 일 : GUI로 전체 서비스를 보여주고, 현재 구동되고 있는 리눅스 서비스를 보여준다. 물로 서비스를 실행할 수도 멈출 수도 있다.
 - ex) ntsysv

저작자 표시 비영리 변경 금지
Posted by Bitaholic ...Simple is beautiful Bitaholic
Computer/Linux2009/10/16 14:29

Ubuntu(Desktop)에서 root 패스워드는 기본으로 설정이 안되어 있다. 따라서 쉘에서 su 로 루트계정으로 들어 갈수가 없는데 아래와 같이 root  계정의 패스워드를 정해주면 된다

bitaholic@bitaholic:~$ sudo passwd root
[sudo] password for bitaholic:
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

그럼 root 계정으로 들어갈 수 있따.
저작자 표시 비영리 변경 금지
Posted by Bitaholic ...Simple is beautiful Bitaholic
TAG Root, ubuntu
Computer/HIbernate2009/10/16 10:45
HQL 의 limit

Hibernate의 HQL 문법은 sql의 limit 가 지원하지 않는다.
limit를 써 쿼리 결과 갯수를 제한 하고 싶으면, Query 클래스의 setMaxResults(int max) 메소드를 이용하면 된다.

 결과를 5개 이하로 제한하고 싶으면 아래와 같이 하면된다.
Query query = session.createQuery("from BookTable order by book_id asc");
query.setMaxResults(5);

 또한 특정 행부터 시작하고 싶으면 (14행 부터 5개)
Query query = session.createQuery("from BookTable order by book_id asc");
query.setFirstResult(14);
query.setMaxResults(5);


Spring & Hibernate

Spring과 Hibernate를 연동했을 때 는 HibernateDaoSupport를 상속하여 객체를 만들어서 주로 쓰는데
이때 Query를 만들지 않고 getHibernateTemplate().fine(String query) 메소드를 쓸 수 있다.
이때 getHibernateTemplate().setMaxResults(int) 라는 Query의 메소드와 동일한 메소드가 있다. 하지만 이 객체는 공유가 되서 다음 쿼리 때도 그 값이 쓰인다. 따라서 쓰기전에 '0'으로 초기화 하고 쓰는게 좋다.

if(limit > 0) {
    getHibernateTemplate().setMaxResults(limit-1);
 } else {
    getHibernateTemplate().setMaxResults(0);
 }

또한 MaxResult에서 정해준 값보다 1개가 더 나와서 위의 코드는 1을 빼주었다. Qeury클래스에도 그런진 확인을 못했다.

저작자 표시 비영리 변경 금지

'Computer > HIbernate' 카테고리의 다른 글

Hibernate의 HQL에서 limit 적용  (0) 2009/10/16
Posted by Bitaholic ...Simple is beautiful Bitaholic