월별 글 목록: 2012년 5월월

윈도 클라이언트를 제공하는 클라우드 서비스와 무료 용량

윈도에서 클라우드 서비스를 쉽게 선택할 수 있게 클라우드 서비스별 무료 용량을 정리한 내용이다. 자세한 서비스(모바일 지원등)들에 대해서는 정리하지 않았기 때문에 윈도가 아닌 환경에서 사용하려면 서비스별로 확인해 봐야 한다.

1. Google Drive(http://drive.google.com), 5G
2. Box.net(http://www.box.net), 5G
3. Drobox(http://www.dropbox.com), 2G
4. SkyDrive(http://www.skydrive.com), 7G
5. Ubuntu One(https://one.ubuntu.com), 5G
6. Amazon Cloud Drive(http://www.amazon.com/clouddrive), 5G
7. SugarSync(http://www.sugarsync.com), 5G
8. Insync(https://www.insynchq.com), 5G
9. NDrive(http://ndrive.naver.com), 30G
10. Cubby(http://www.cubby.com),5G
11. Zoolz(http://www.zoolz.com), 4G
12. TeamDrive(http://www.teamdrive.com), 2G

위 정리 내용을 토대로, 무료로 많은 용량을 사용하고 싶으시면, NDrive나 Insync로 Gmail의 멀티 계정을 이용하는 것도 방법인 것 같습니다.

Android Toast Utility 클래스..

안드로이드에서 가장많이 사용하는 Widget중에 하나가 Toast입니다.

Toast는 기본적으로 SHORT(2초), LONG(3.5초) duration 만을 제공하고 있으면, 대체로 의미있는 표시를 할 수 있습니다. 간단하게 Toast를 사용하는 형태와, 첨부된 ToastUtil 클래스의 사용 형태를 살펴보면 아래와 같습니다.

기본 예)

Toast.makeText(context, message, Toast.LENGTH_SHORT).show();

ToastUtil 예)

ToastUtil.show(context, message);

안드로이드 API가 대체로 긴 클래스와 메소드가 많아서 코드의 가독성을 떨어트리는 경향이 있는데, 이런 유틸리티 클래스등으로 가독성을 높일 수 있습니다. 그리고, SHORT, LONG만이 아니, 개발자가 duration을 지정할 수있는 기능도 있습니다.

* ToastUtil.java

package net.sjava.toast;

import android.content.Context;
import android.os.CountDownTimer;
import android.widget.Toast;

public class ToastUtil {
   
    /**
     * 2초
     * @param c
     * @param message
     */
    public static void show(Context c, String message) {
        if(c == null || StringUtil.isEmpty(message))
            return;
       
        try {
            Toast.makeText(c, message, Toast.LENGTH_SHORT).show();
        } catch(Exception e) {
            // ignore
        }
    }
   
    /**
     * 3.5 초
     * @param c
     * @param message
     */
    public static void showLong(Context c, String message) {
        if(c == null || StringUtil.isEmpty(message))
            return;
       
        try {
            Toast.makeText(c, message, Toast.LENGTH_LONG).show();
        } catch(Exception e) {
            // ignore
        }
    }
   
    /**
     * 커스텀..
     * @param c
     * @param message
     * @param miliseconds
     */
    public static void show(final Context c, final String message, int miliseconds) {
        if(c == null || StringUtil.isEmpty(message))
            return;
       
        int duration = miliseconds;
        if(duration < 2000)
            duration = 2000;
       
        final Toast t = Toast.makeText(c, message, Toast.LENGTH_SHORT);
        new CountDownTimer(duration, 1000) {
            @Override
            public void onTick(long millisUntilFinished) {
                t.show();
            }
           
            @Override
            public void onFinish() { }
        }.start();
    }
}

* StringUtil.java

package net.sjava.toast;

public class StringUtil {

    public static boolean isEmpty(String str) {
        if(str == null || str.trim().length() ==0)
            return true;
       
        return false;
    }
   
    public static boolean isAnyEmpty(String str1, String str2) {
        if(isEmpty(str1) || isEmpty(str2))
            return true;
       
        return false;
    }

    public static boolean isAllEmpty(String str1, String str2) {
        if(isEmpty(str1) && isEmpty(str2))
            return true;
       
        return false;
    }
}

HSQLDB를 파일디비로 사용할 때에 락 해제하기..

HSQLDB을 파일디비로 사용하는 경우, 디폴트로 락을 잡고 사용을 한다. 그래서, 다른 프로세스에서 HSQLDB에 접근해서 데이터를 읽어오려고 시도를 하게되면, 에러가 나게 된다.

HSQLDB의 락을 해제하는 간단한 방법으로 Connection String에 hsqldb.lock_file=false 옵션을 추가하면 된다.

“jdbc:hsqldb:file:db_name;ifxeists=true;hsqldb.lock_file=false”