Netbeans font 설정

Tip | 2009. 1. 25. 11:03 | Posted by G.N.Jeong J.#
평소 넷빈즈의 폰트가 맘에 안들어서, 개발자한테 메일까지 보냈었다.
그때가 2년전인가..ㅎ

기본적으로 넷빈즈의 폰트는 구리다.
이클립스의 폰트와 비교하면 좌절 할 정도니..

그래서 쭈욱 이클립스만을 고집해서 사용했는데,
이클립스가 갑자기 바보가 되는 바람에 (maven 플러그인만 쓰면 에러 남발 -_-;)
넷빈즈를 써야 했다.

환경은 우분투.
그리고 넷빈즈 폰트는 역시나 좌절폰트.

개발자는 폰트 하나에 울고 웃는다.
그래서 구글링을 한 결과, 시스템 설정을 따라가도록 하는 옵션이 있었다.

시스템에서 anti-aliasing이 지원된다면 넷빈즈에서도 지원되는 거라는 것.

넷빈즈 폴더에 etc/netbeans.conf 파일에 넷빈즈 실행 옵션에 다음을 추가한다.

-J-Dawt.useSystemAAFontSettings=on -J-Dswing.aatext=true
참고로 넷빈즈는 -J 옵션을 사용한다.

출처: http://forums.netbeans.org/ptopic6158.html

댓글을 달아 주세요

웹 개발에 대해

My Diary | 2009. 1. 21. 23:52 | Posted by G.N.Jeong J.#
처음으로 내 나름대로의 생각으로 개발을 열심히 하고
오픈도 하고 그렇게 오랜 시간이 지났다.
오랜 시간이라고 해야 고작 6개월 정도.

갑자기 오래전 소스를 보면서 느낀 건,
내가 만들었지만, 참 발가락으로 개발한 것처럼 보이는 거다.

하긴 그 때는 뭐가 뭔지도 모르고 개발을 했었지.

prototype.js랑 script.aculo.us를 섞어서 사용하면서,
Smarty에 내가 만든 부실한 라이브러리까지..

일단, 어디서 본 건 있어서 Ajax를 이용해서 비동기 통신도 구현해 보고,
javascript로 객체도 구현해서 만들어 보기도 했었네.

잘 알지도 못하고 기능 구현에 시급했던 마음들이 코드에 고스란히 아른거리는 걸 느낀다.

어쩜 그만큼 지금은 좀 더 성장헀다는 이야기 일 수도 있겠지.

근데 이 코드를 다시 고칠 생각하니, 앞이 막막한게,
차라리 다시 심플하게 만들고 싶은 맘이 드는 건,
다시 내 코드를 뒤집기 보다는
새롭게 깔끔하게 만들어서 보람을 느끼고 싶은 어떤 나름대로의 이기심이 아닐까?

웹개발은 심플하게 개발해야 한다고 다시 한 번 느끼게 되는 계기가 되는 것 같다.
내코드를 보면서...;

그러다가 다시 상황 안 좋고 시급해 지면 또 다시 저급 코드들이 난무 하겠지만,
이 심플의 철학을 잊지 않고 개발해야 겠다.

내 뒤를 이을 사람도 생각해 줘야지? ㅎㅎ

쉽고 간단하게 잊지 말자.

댓글을 달아 주세요

  1. Wendy & Lucy 2009.05.27 02:07  댓글주소  수정/삭제  댓글쓰기

    안녕하세요^^ 앗 여기 홈피 주소 쓰는 공간에 없네;; http://wangn.tistory.com

SSH 자동로그인 설정 방법

기타 | 2009. 1. 20. 12:36 | Posted by G.N.Jeong J.#
1. 암호화 방식 (둘 중 하나만 사용한다.)
- dsa
- rsa


2. 암호 생성 방법
    보통 엔터만 계속 치면 되지만, 기존에 사용하는 암호가 있을 경우 덮어 쓸지 물어봄.
    새롭게 만들꺼면 덮어쓰면 되고, 기존에 있는 걸 쓸 경우 취소하고, 기존 암호를 이용.
- ssh-keygen -t dsa
- ssh-keygen -t rsa

3. ~/.ssh 에 존재하는 암호를 확인
   cat 파일명
- dsa는 id_dsa.pub
- rsa는 id_rsa.pub

4. 상대방 서버의 ~/.ssh 폴더에 있는 인증파일(authorized_key)에 암호를 넣는다.
    아래의 파일이 없을 경우 생성한다. 퍼미션 (644)
- dsa는 authorized_key
- rsa는 authorized_key2
   
    인증파일 안에 이미 기존에 넣은 암호가 있으면 지우고 다시 넣는다.
    (암호 후반부에 계정명이랑 도메인 이름이 있음.)

    '복사 - 붙여넣기' 가 귀찮은 사람은...
    scp로 상대방 서버에 복사하고
    dsa인 경우 scp id_rsa.pub test.com:~/.ssh/authorized_keys
    rsa인 경우 scp id_rsa.pub test.com:~/.ssh/authorized_keys2

    그 후 cat 명령어로 인증파일에 추가해도 된다.
    dsa인 경우 cat id_rsa.pub >>~/.ssh/authorized_keys
    rsa인 경우 cat id_rsa.pub >>~/.ssh/authorized_keys2

5. 쌍방향 자동로그인을 하려면 반대로 하면 됨.

* 기타 퍼미션 설정이나 계정문제가 있는데, 일반 계정으로 만들면 대게 별 이상 없음.

-rw-r--r--  1 msms msms  612  1월 20 11:31 authorized_keys
-rw-r--r--  1 msms msms  464  1월 20 11:54 authorized_keys2
-rw-------  1 msms msms  668  8월  7 13:43 id_dsa
-rw-r--r--  1 msms msms  607  8월  7 13:43 id_dsa.pub
-rw-------  1 msms msms  887  1월 20 11:41 id_rsa
-rw-r--r--  1 msms msms  227  1월 20 11:41 id_rsa.pub
-rw-r--r--  1 msms msms 2430  1월 20 09:39 known_hosts
개발자들은 요런 직관적인 결과를 좋아하더만, ㅎㅎ


댓글을 달아 주세요

This will cause infinitely deep XML

Java | 2008. 12. 7. 01:48 | Posted by G.N.Jeong J.#

JPA를 이용해서 도메인 객체를 제공 받았는데, 그 도메인 객체가 하위의 객체와 서로 양방향 참조를 하고 있을 때, XML로 변환하려고 하면 제목과 같은 에러 메세지를 만날 수 있다.

구글링을 해 본 결과, 양방향 참조를 일방적으로 Null로 설정해주는 방법이 있었고,
@XmlTransient를 이용해서 양방향 참조가 일어나는 메소드에 설정해 주는 방법이 있었다.

하위 객체가 다시 상위객체를 참조할 경우( getParent() 같은 상위를 다시 참조하는 메소드)에 @XmlTransient를 설정해 준다.

그러면 객체가 별다른 설정 없이도 XML로 변환이 된다.

https://jira.jboss.org/jira/browse/JBSEAM-3268

댓글을 달아 주세요

failed to lazily initialize a collection of role

Java/Spring | 2008. 12. 7. 01:16 | Posted by G.N.Jeong J.#
Spring 2.5.x + JPA(Hibernate)를 이용하여 하위리스트를 포함하는 도메인 객체를 불러왔을 때, 기본값인  LAZY 로딩이 되지 않았다.

구글링을 해 본 결과 LAZY 로딩은 트랜젝션 범위내에서 이루어질 수 있다는 답변이 있었다.

그래서 Spring XML설정에서 트랜젝션 관리자를 선언해 주고 설정해 주었지만 되지 않았다.
이유인 즉, Test 코드가 있는 클래스가 설정한 트랜젝션 범위에서 벗어나 있었기 때문이었다.

따라서 @Transactional 이라는 어노테이션을 테스트 클래스에 붙여주고 테스트 하니, 정상적으로 출력이 되었다.

기본적으로 트랜젝션은 annotation을 적용시, annotation이 적용된 메소드가 끝날 때 마무리 된다.
물론 이미 상위 메소드에서 트랜젝션이 있었다면, 기본값인 경우 그 상위 메소드가 끝날 때 마무리 된다.
TAG JPA, LAZY, Spring

댓글을 달아 주세요


FTP로 원격 디렉토리 리스트를 가져오는 것을 해보고 싶었다.
무엇보다 스스로의 성취감도 중요하겠지만,
각 스크립트 언어별로 얼마나 다른지 확인해 보고 싶기도 했다.

// groovy script

import sun.net.ftp.FtpClient
import java.io.BufferedReader
import java.io.inputStreamReader

def getList(is){
 br = new BufferedReader(new InputStreamReader(is))
 while ( (result = br.readLine()) !=  null) list += result + "\r\n"
 return list
}

ftp = new FtpClient()
ftp.openServer('serverurl')
ftp.login('loginid','password')
ftp.cd('/home/loginid/test')
is = ftp.list()
println getList(is)


/* Javascript(Rhino) */

importClass(Pacakges.sun.net.ftp.FtpClient)
importClass(java.io.BufferedReader)
importClass(java.io.InputStreamReader)

function getList(is){
 var result = 0;
 var list = '';
 var br = new BufferedReader(new InputStreamReader(is));
 while( (result = br.readLine()) != null) list += result + "\r\n";
 return list;
}

var ftp = new FtpClient();
ftp.openServer('serverurl');
ftp.login('loginid','password');
ftp.cd('/home/loginid/test');
is = ftp.list();
print( getList(is));


// ruby script

require 'net/ftp'

ftp = Net:FTP.new('serverurl','loginid','password')
ftp.chdir('/home/loginid/test')
list = ftp.list()
puts list


전체적으로 보면 Ruby가 훨씬 간결하고 직관적인 것을 알 수가 있었다.
또한, Java 기반인 두 스크립트(Javascript, Groovy)는 사용방법이 같아서 소스가 거의 같았다.
(내가 아직 두 스크립트를 간결하게 사용하는 법에 미숙하다)

스크립트는 컴파일 안해도 되고 바로 결과 확인이 되니까 재미있는 것 같다. :)

댓글을 달아 주세요

Hello World

Java/javafx | 2008. 12. 1. 00:03 | Posted by G.N.Jeong J.#

/*
* HelloJFX.fx-AJavaFXScript "HelloWorld"styleexample
*
* Developed2007byJamesL. Weaver(jim.weaverat jmentor dot com)
*/
packagejfx_book;
import javafx.ui.*;
import javafx.ui.canvas.*;
Frame{
    title: "HelloWorld-styleexampleforJavaFXScript"
    height: 100
    width: 400
    content:
        Canvas{
        content:
            Text {
                font:
                    Font {
                        faceName: "SansSerif"
                            style: BOLD
                            size: 24
                        }
                        x: 10
                        y: 10
                    content: "HelloJavaFXScript Developer!"
                }
            }
        // ShowtheFrameonthescreen
        visible: true
}

JavaFXPad에서는 제대로 동작하지만, NetBeans에서 작성할 때는 제대로 동작하지 않았다.
그 이유는 패키지 이름이 변경되었기 때문이다.

javafx.ui 패키지가 존재하지 않아 빌드 실패 및 구동 실패 하였기 때문에 원인을 찾던 중
JavaFX forum에서 javafx.ui 패키지를 javafx.application으로 변경하면 동작한다는 글을 보고 아래와 같이 변경하였다.

package hellojfx2;

import javafx.application.*;
import javafx.scene.*;
import javafx.scene.text.*;
import javafx.scene.paint.*;

Frame{
    title: "HelloWorld-styleexampleforJavaFXScript"
    height: 100
    width: 400
    stage:
        Stage{
            fill: Color.ORANGE
            content:
                    Text {
                        font:
                            Font {
                                name: "Sans Serif"
                                style: FontStyle.BOLD
                                size: 24
                            }
                        x: 10
                        y: 30
                        content: "HelloJavaFXScript Developer!"
                    }        
        }
    visible: true
}

Canvars 대신에 Stage객체로 바뀌었고 Font 객체에 들어가는 font style도 일반 텍스트에서 FontStyle의 상수로 바뀌었다.

아무래도 책을 보려면 소스 코드를 많이 바꾸면서 해야 할 것 같다.

본 예제는 JavaFX Script (James L.Weaver)를 공부하면서 작성하였다.

댓글을 달아 주세요

플래쉬 위에 투명레이어 씌우기

JavaScript | 2008. 11. 27. 15:54 | Posted by G.N.Jeong J.#

배너를 만들기 위해 플래쉬위에 레이어를 씌우는 일이 필요했다.
웹표준의 기본은 크로스브라우징이기 때문에 IE 이외에 FF, SAFARI 등의 브라우저도 고려해보기로 했다.

쉽지 않은 과정이었지만, 같은 과정을 반복하지 않기 위해 글로 남겨둔다.

레이어는 투명레이어를 사용해야 했고, 투명도를 사용하기 위해 스타일 설정을 모질라 개발자 사이트를 참고하여 작성하였다.

opacity: 0.6;
filter: "alpha(opacity=60)"; /* expected to work in IE 8 */
filter: alpha(opacity=60);   /* IE 4-7 */
zoom: 1;/* needed in IE up to version 7, or set width or height to trigger "hasLayout" */

또한, a 태그 이외에 레이어 클릭 시 마우스 모양도 손가락 모양으로 바꿔줘야 하므로 다음과 같은 스타일을 사용하였다.

 cursor: pointer;
 cursor: hand;

주의해야 할 것은 순서가 틀리면 안된다는 것.
pointer가 반드시 앞으로 와야 모든 브라우져에서 동작한다.


레이어는 절대좌표가 아닌 상대좌표를 이용해야 했다.
이유는 플래쉬의 위치가 가변적이기 때문이다.

하지만 여기서 세 가지 오류를 찾아내었는데,

1. 레이어 상위 엘리먼트의 가로, 높이 크기 미설정 시 엘리먼트 크기가 4배정도 커진다는 것.
2. 레이어의 가로, 높이 크기 설정 시 px 단위를 빼 먹으면 레이어가 사라지거나 폰트 높이 만큼 작아진다는 것.
3. embed 태그에 wmode="transparent" 속성을 추가해주지 않으면, ie를 제외한 나머지 브라우저에서 레이어가 플래쉬 위로 올라가지 않는 다는 것.


투명레이어는 50%로 알파속성을 주고 색도 주었으므로 자세한 내용은 사진을 참고.

ie 스샷

인터넷익스플로러 7.x 스크린샷

ff 스샷

Firefox 3.x 에서 스크린샷

safari 스샷

safari 엔진을 사용하는 구글크롬의 스크린샷



ff, safari는 레이어로 지정 시 가로,높이 속성에 px 단위를 빼먹으면 보이지도 않는다.
내용이 있어야만 보였음.

이렇게 가지각색의 반응이니 맞추는 것도 쉽지 않네.

댓글을 달아 주세요

div를 투명하게 해보자.

JavaScript | 2008. 11. 27. 13:48 | Posted by G.N.Jeong J.#

div를 투명하게 하고 싶을 땐, 다음과 같이 브라우저 별로 별도처리 해줘야 한다.

인터넷익스플로러 5.5 이상

style :  filter: alpha(opacity=[0~100])
javascript : element.fiters.alpha.opacity = "0~100"


파이어폭스, 오페라 등 CSS3 지원

style : opacity: [0~1]
javascript : element.style.opacity = "0~1"



참고:
1. 모질라 개발자 사이트
2. 공대여자는 이쁘다

댓글을 달아 주세요

나의 ubuntu~

기타 | 2008. 10. 20. 15:15 | Posted by G.N.Jeong J.#

virtualBox를 이용하여 ubuntu를 설치하였다.
좋네. 네이버에서 배포하는 나눔체로 설정도 해 놓고, 테마도 따로 설정해주니 이쁘다.

윈도우에서 사용하는 데이터를 바로 ubuntu로 복사&붙여넣기도 되니 좋구나.

댓글을 달아 주세요