2011년 12월 12일 월요일

하프(?) 리락쿠마 도면

완성 작례 (50%, 한 장에 두 페이지 출력)


이 작품은 저의 오리지널이라기보다는
기존의 훌륭한 두 작품을 믹스한 것입니다.


곰 얼굴을 적당히 잘라내고
사람 얼굴을 적당히 집어넣은거죠 =ㅅ=

위의 녀석을 만들어보고
조금 더 수정한 도면이긴한데
아직 제작은 못해봤습니다

도면이 뭐 이따구야! 라고 하셔도 저는 드릴 말씀이...

제작방법
1.  아래 설명서를 참고, 곰 모자와 곰 몸체, 사람 얼굴을 만든다.

2. 얼굴과 몸체를 붙인다.

3. 얼굴을 모자 안으로 넣어준다.(아마 잘 안들어갈껍니다 =ㅅ=)

의문사항이 생기시면 댓글이나 메일 부탁드립니다.



모자

얼굴과 머리카락

몸통

곰 조립 설명서

얼굴 설명서 1얼굴 설명서 2

DANBO 종이모형 도면

제가 비율 수정한 단보 도면 공유해드립니다.

제작시 의문사항이 있을 때에는 댓글 또는 메일로 연락바랍니다.

원작자 도면

제작 방법 참고



작례 (모두 50%, 즉 한 장에 두 페이지 출력으로 제작되었습니다)


색지 출력용

색지 출력용(Amazon Ver)

컬러프린터 출력용

컬러프린터 출력용(Amazon Ver)

2011년 11월 16일 수요일

jstl 기초문법

jstl 사용시 위에 선언
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>


생성문. 변수를 생성하고 값을 할당할 수 있다.
<c:set var="" value="" />

예) <c:set var="number" value="1" />


출력문. 변수나 값을 출력한다.(일반 text 취급됨)
<c:out value="${변수 또는 값}"/>

예 ) <c:out value="${number}"/>


조건문(only if)
<c:if test="${조건}"></c:if>

예) <c:if test="${number == 1}">
      ...
     </c:if>

     <c:if test="${empty number}">
      ...
     </c:if>


반복문. 배열을 순차적으로 돈다.
<c:forEach var="" items="${배열객체}"></c:forEach>

예) <c:forEach var="item" items="${itemlist}">
          <c:out value="${item}"/>
     </c:forEach>

     <c:forEach var="person" items="${personlist}">
          <c:out value="${person.name}"/>
          <c:out value="${person.age}"/>
     </c:forEach>


조건문(if, else if, else). when과 otherwise는  choose 내부에서만 쓰인다.
<c:choose></c:choose>
<c:when test="${}"></c:when>
<c:otherwise></c:ohterwise>

예) <c:choose>
         <c:when test="${number == 1}">
             ...
         </c:when>
         <c:otherwise>
             ...
         </c:ohterwise>
     </c:choose>

2011년 9월 26일 월요일

extends / implements

extends 와 implements 의 차이

extends는 다른 class를 상속하여 부모 class의 모든 기능을 사용할 수 있으며

변수를 추가하거나 함수를 추가, 또는 Overriding을 할 수 있다.

말 그대로 "확장"의 개념


implements는 interface를 상속,

껍데기뿐인 interface의 함수를 모두 구현해야 한다.

비슷한 형태를 가진 class를 여러개 구현할 때 사용한다.

일종의 "틀". 겉모습은 같지만 안에는 각자 다른 것으로 채울 수 있다.

tomcat6 classpath에 대해서 (for linux)

윈도우 로컬에서 이클립스 + 톰캣으로 JSP Dynamic Web Project를 사용하여 작업한 후에 리눅스 서버로 옮기는 방법을 연구 중에 이 놈의 classpath 때문에 무진장 고생을 했다. 자꾸 NotFoundClass...를 내뱉는 덕분에 ㅋ

환경 : Ubuntu 11.04 server / tomcat6 / jdk 1.6

WebContent 파일은 /var/lib/tomcat6/webapps 로 이동
src 파일은 올리지 않는다.
build/classes에 있는 파일을 /var/lib/tomcat/common/classes로 이동


기본 tomcat6 classpath는 vim /var/lib/tomcat/conf/catalina.properties 파일에서 확인 가능
common.loader=.... 로 이어지는 부분에 있는 것이 시작할 때 참조하는 path이다.
해당 path에 WEB_INF/lib에 있는 파일, 또는 외부 jar파일등을 넣어준다.


이런 거 다 필요없고 $CATALINA_HOME (혹은 tomcat설치폴더, 혹은 tomcat설정에서 DocumentRoot로 설정한 폴더)에 폴더를 하나 만든다. 여기서는 test라 하겠다.

리눅스 상에서 컴파일을 하지 않는 이상, 필요한 것은 WebContent폴더 내부의 파일과 build안에 있는 이미 컴파일된 class파일이다.
WebContent 내부의 파일을 전부 $CATALINA_HOME/test 로 이동
build/classes 폴더를 $CATALINA_HOME/test/WEB_INF 로 이동

이 후 http://(서버ip):8080/test 로 접속하면 제대로 된 결과물이 출력된다.

단지 데이타를 남기기 위해 대충 적다보니...흠 나중에 정리해서 다시 포스팅해야겠다

2011년 8월 16일 화요일

mysql 명령어 (ubuntu, mysql 5.1 기준)

테이블 명 대소문자 구분
기본적으로 대소문자를 구분하게 되어있다.
구분하지 않게 하려면 아래 패스의 파일을 열고
:~$ sudo vim /etc/mysql/my.cnf

다음 문자열 아래에
[mysqld]

아래와 같이 작성해준 후 저장한다.
lower_case_table_names=1

저장한 후에 mysql daemon을 재시작한다.
:~$ sudo /etc/init.d/mysql restart

유저 등록
mysql> CREATE USER `계정명`@`localhost` identified by '패스워드';

특정 디비에 대한 모든 권한 얻기
mysql> GRANT ALL PRIVILEGES ON '디비명'.* to `아이디`@`localhost`;

유저 삭제
mysql> DROP USER `계정명`@`localhost`;

DB 저장
:~$ myslqdump -u '계정명' -p '테이블명' > '파일이름'.sql

DB 복원
:~$ myslq -u '계정명' -p < '파일이름'.sql

콘솔 창에서 CharacterSet변경
utf8로 설정한 경우, 콘솔에서 한글이 깨져나오는 경우가 있다.
(실제 데이타를 가져오는 경우에는 정상 동작)
mysql> set names euckr;

2011년 7월 5일 화요일

Android에서의 Copy & Paste (Use ClipboardManager class)

정확히는 클립보드매니져(ClipboardManager) 클래스 사용법이라고 하는게 맞겠다.


// 클립보드매니져를 선언한다.
ClipboardManager cm = (ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE);


// Copy
String Copy = "copy & paste test";
cm.setText(Copy);


// Paste
String Paste = cm.getText();

TextView에서 터치된 영역의 Offset 가져오기

Ebook 관련 API들을 만들고 테스트하는 도중,
Select에서의 블록이나 하이라이트와 관련해서
터치된 영역이 문자열의 어느 부분인지 구하는 로직이 필요했습니다.

물론 Paint를 써서 대충 계산하면 어느정도 맞출 수는 있지만
문자 사이즈에 의해 정해져있는 세로와는 달리 가로는 폰트마다
가변적인 사이즈를 가지고 있기 때문에 폰트마다
일일히 계산해주지 않으면 안 되는 상황에 봉착했습니다.
(예전에는 폰트 매트릭스를 읽어와 일일히 계산해주었다는군요)

그러다가 웹서핑 도중 유용한 녀석을 발견해서 정리해놓습니다.
아직도 모르는 게 너무도 많아서 문제군요

public int getOffset(TextVIew text, MotionEvent event) {
  // 터치 좌표를 int형으로 바꿔준다.
  int positionX = (int) event.getX();
  int positionY = (int) event.getY();


  // TextView의 Padding값을 빼준다. (text 영역안에서 계산하기 위함)
    positionX -= text.getTotalPaddingLeft();
    positionY -= text.getTotalPaddingTop();


// TextView의 레이아웃을 가져온다.
    Layout layout = text.getLayout();


// Y좌표를 이용, 현재 몇번째 Line인지 계산한다.
    int line = layout.getLineForVertical(positionY);


 // 라인과 X좌료를 이용, 현재 터치한 영역의 Offset을 구한다.
    int off = layout.getOffsetForHorizontal(line, positionX);


    // 계산된 결과를 리턴
    return off;
}

2011년 2월 17일 목요일

안드로이드 추천 어플...?

현재 쓰고 있는 녀석들에 대해 정리를 해봐야겠다는 생각이 불현듯 들어서

수 주(?)만에 블로그에 들렸다. 흠 참고로 본인이 쓰는 어플은 모두 "무료" 버젼이다.

아직까지는 유료 버젼의 필요성을 못 느끼고 있으며 암흑의 루트를 사용하고 싶지도 않다.

이 리스트는 조금씩 조금씩 업데이트 및 수정을 할 예정...인데 공개로 해 놓은 이유는 뭘까나?

adw launcher (런쳐 어플)

조금 버벅이는 감이 없지 않은 기본런처 대신에 launcher pro를 쓰다가,
무언가 색다른 기능을 쓰는 것도 아닌데 자꾸 팝업이 뜨는 것이 싫어서 adw로 갈아탔다.
말 그대로 기본 위젯과 폴더 기능만을 쓰는 1인으로서 가볍고 깔끔한 adw가
무척이나 마음에 든다 (물론 테마같은 걸 받았다간 배보다 배꼽 =_=;;)

ps. adw 추천 팁
1. 2차 dock
필자는 귀찮아서 비활성화 시켰지만 기존 dock이 부족하다 싶은 분에게 추천드리는 기능!!
dock위에서 액션을 해주는 것만으로 사용이 가능하다.


2. 카테고리 기능의 활용
drawer에 들어가 메뉴를 누르면 카테고리 기능이 있다. 어플을 본인이 정해놓은 카테고리로
지정, 분류할 수 있는 기능인데, 이 카테고리를 홈에서 폴더처럼 사용이 가능하다! 원하는
카테고리를 생성하고 홈에서 카테고리 바로가기를 생성, 원하는 아이콘으로 지정하면 ( adw
ex가 아닌 이상 폴더는 아이콘 변경이 안됩니다 =ㅅ= ) 따로 폴더 관리 안하고도 폴더처럼
사용이 가능!!

웹마켓 링크 : https://market.android.com/details?id=org.adw.launcher&feature=search_result

save money (가계부 어플)

최근 나의 소비생활에서 땔래야 땔 수 없는 녀석.
카드결재 sms 자동입력도 되고, 월별 통계까지되니 금상첨화!

웹마켓 링크 : https://market.android.com/details?id=com.jsh.asset.account&feature=search_result

jorte (일정관리어플)

마켓에 여러가지 일정관리어플이 있지만 디자인이 별로라던지,
구글 캘린더와 연동이 안된다던지, 할 일 목록을 지원하지 않는 등
하나 둘씩 부족한 모습을 보인다(어디까지나 본인이 써본 어플에 한해서).
그러나 이 녀석은 위에서 말한 모든 것을 충족시키는 좋은 녀석!!
위젯을 쓰려면 sd카드가 아닌 폰으로 이동시켜야하지만
이건 모든 위젯연동 어플의 공통사항이므로 PASS!

웹마켓 링크 : https://market.android.com/details?id=jp.co.johospace.jorte&feature=search_result

GO SMS Pro (메시지 어플)

기존에 H모 메시지 어플을 쓰다가 이 녀석으로 넘어왔다!!
H모 녀석은 팝업이라던가, noti바에 나오는 녀석이 싱크가 잘 맞지 않는다던가
자잘한 면에서 맘에 안 드는 점이 있었는데, 이 녀석은 그런 문제가 없(어보인)다!
게다가 기본적인 디자인도 더 마음에 들고...훗

웹마켓 링크 : https://market.android.com/details?id=com.jb.gosms&feature=search_result

2011년 1월 14일 금요일

안드로이드 개발 환경을 설정해보자!!

1. JDK(Java Development Kit) Install

http://www.oracle.com/technetwork/java/javase/downloads/index.html

위의 주소로 들어가 최신의 JDK를 OS에 맞추어 받은 후 설치한다.


2. Eclipse install

http://www.eclipse.org/downloads/

위의 주소로 들어가 Eclipse IDE for Java Developers 를 받는다.

설치파일이 아닌 압축파일이므로 원하는 위치에 압축을 풀어준다.


3. Android SDK Download

http://developer.android.com/sdk/index.html

위의 주소에서 OS에 맞추어 SDK를 받고 원하는 위치에 압축을 풀어준다.

(실행파일을 받았을 경우 설치해주고 설치경로를 확인한다.)


4. ADT(Android Development Tool) install

Eclipse 메뉴의 Help > Install New Software 를 선택한 후에

Add 버튼을 누른 후 Location에 https://dl-ssl.google.com/android/eclipse/ 를 넣어준다.

이름은 본인이 원하는대로 넣어준다. (필자는 여기서 ADT라고 설정)

*Location 주소가 바뀔 수도 있으니 자세한 것은 아래 주소 참고

http://developer.android.com/sdk/eclipse-adt.html

위와 같은 과정을 거쳤다면, 리스트에 업데이트 내역이 뜰 것이다.

체크박스에 체크를 해준 후에 Next버튼을 눌러주고, 약관동의를 거친 후 finish버튼을 눌러주면

ADT 가 install될 것이다. 이클립스를 재시작할꺼냐고 물어오면 재시작해준다.


5. Android SDK와 Eclipse 연결하기

Eclipse 메뉴의 Window - Preferences에 가서 왼쪽 리스트에서 Android를 선택한 후,

SDK Location에 3번에서 안드로이드 SDK를 설치한 경로를 입력한다.


6. Android SDK, ADV Update

Eclipse 툴바에서 Android AVD and SDK manager 버튼을 클릭합니다.

(또는 Eclipse 메뉴의 Window > Android AVD and SDK manager 선택)

Android SDK 화면이 뜨면, 왼쪽 리스트에서 Available Packages를 클릭한다.

오른쪽에 뜬 repository의 체크박스를 눌러주면 업데이트 할 수 있는 목록들이 표시된다.

목록을 확인하고 업데이트를 수행한다.