AGE        NAME
----------------
10             A
10             B
10             C
11             D
11             E



테이블 구조가  위와 같은데 가져오려는 결과가

10          A,B,C
11          D,E



가 나오게 하려고 한다.

 SELECT AGE, CAST(XML2CLOB(XMLAGG(XMLELEMENT(NAME "NM", strip(NAME)))) AS VARCHAR(3000))
    FROM TABLE
  GROUP BY AGE 


10           <NM>A</NM><NM>B</NM><NM>C</NM>
11           <NM>D</NM><NM>E</NM> 

 


 SELECT AGE,
    REPLACE(REPLACE(REPLACE( 
    CAST(XML2CLOB(XMLAGG(XMLELEMENT(NAME "NM", strip(NAME)))) AS VARCHAR(3000))
   , '</NM><NM>', ',') , '<NM>', '')  , '</NM>', '') 
    FROM TABLE
  GROUP BY AGE 


10           A,B,C
11           D,E 


 
listagg를 지원하는 DB2  를 사용중이라면

SELECT AGE, LISTAGG(NAME, ',') WITHIN GROUP (ORDER BY NAME)
   FROM TABLE 
 GROUP BY AGE 


로 간단히 할수도 있다
 
Posted by orange code
IE8에서 화면에 스크롤바가 생겼을 때 스크롤 이동 후 datepicker가 안뜨는 버그에 대한 해결 방법이다.

jquery-ui.xxxxx.min.js 를 편집한다.

(document.documentElement.scrollLeft|document.body.scrollLeft)
=> document.body.scrollLeft

(document.documentElement.scrollTop|document.body.scrollTop)
=> document.body.scrollTop

document.documentElement.clientWidth
=> (document.body.clientWidth|document.documentElement.clientWidth)

document.documentElement.clientHeight

=> (document.body.clientHeight|document.documentElement.clientHeight)

d(document).scrollLeft
=> document.body.scrollLeft

d(document).scrollTop
=> document.body.scrollTop

이렇게 바꾸면 IE8, 크롬 에서 잘 작동한다.
FF나 IE 다른 버전에선 테스트 안해봄. 

'컴퓨터 프로그래밍 > 자바스크립트 장난' 카테고리의 다른 글

jquery datepicker IE8 스크롤 문제 해결방법  (0) 2012.01.11
jQuery 연습2 - 계산기  (0) 2011.08.03
jQuery 연습1  (0) 2011.08.01
자바스크립트! 2  (1) 2009.04.20
Posted by orange code
생각해보면 환경 설정할때 안드로이드 API 버전을 지정하는곳이 없었다.
그래서 GLES 같이 특정버전이상 가능한 기능들은 에러가 나고 있다.

1.  Application.mk 을 연다.

2. 다음을 추가한다.
APP_PLATFORM := android-8

참고로 android-8은 2.2 프로요이다.
Posted by orange code
해결방법

1. C언어를 쓴다면 -> 직접 구현한다.

char* strlwr(char* s)
{
 // 셀프서비스



2. C++언어를 쓴다면 -> STL를 이용한다.

#include <string>
#include <cctype>
#include <algorithm>

std::string s = "~~~";
std::transform(s.begin(), s.end(), s.begin(), std::tolower); 


 
Posted by orange code
Android.mk 작성하기 간단

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

# game -> libgame.so 가 생성된다.
LOCAL_MODULE := game
# game.cpp가 컴파일된다. 
LOCAL_SRC_FILES := game.cpp

# 현재 폴더의 모든 *.cpp를 추가하는 문장
ADD_SRC_FILES := $(wildcard $(LOCAL_PATH)/*.cpp)
ADD_SRC_FILES := $(ADD_SRC_FILES:$(LOCAL_PATH)/%=%)
LOCAL_SRC_FILES += $(ADD_SRC_FILES)

include $(BUILD_SHARED_LIBRARY)

 
Posted by orange code
1. cygwin 설치
- http://cygwin.org 에서 받아서 설치
- 시스템 환경변수 CYGWIN=nodosfilewaning 등록한다 
- 시스템 환경변수 PATH에 "cygwin설치경로\bin" 를 추가한다.. 예) c:\cygwin\bin

2. 기존 안드로이드 프로젝트 선택 후
 New -> Convert to C/C++ project 선택
 Makefile project는 Other Toolchain 선택

3. 프로젝트 -> C/C++ Build -> Builder settings
  Builder부분에서 체크 해제하고 make -f ${NDK-ROOT}/build/core/build-local.mk 타이핑
 Behaviour에서 Build옆에 all 삭제
 ** 필히 apply 클릭후에 ok **
 ** $(NDK-ROOT} 에는 본인PC의 ndk주소로 바꾼다 (/cygdrive/... 로 시작하는 형식으로) **


 4. 추가 사항
 C/C++ General -> Paths and Symbols.
 이곳에 include 패스를 지정해두면 헤더내용을 살펴볼 수 있다.
 실제 컴파일에 영향을 주진 않는다. 
Posted by orange code


<style type="text/css">
.mybtn {
width: 50px;
height: 30px;
border: 1px solid #9A9A9A;
background-color: #515151;
color: #9A9A9A;
vertical-align: middle;
position: relative;
cursor: pointer;
}
</style>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$("#cal_reset").click(function(event) {
event.preventDefault();
$("#cal_content").html("");
var i = 0;
for (i = 0; i <= 9; i++) {
if (i == 0 || (i % 3) == 1) {
$("#cal_content").prepend("<div id='calrow'></div>");
}
$("#cal_content #calrow:first-child").append("<input type='button' class='mybtn' id='number' value='" + i + "'></input>");
}
var oper = "+-*/=";
$("#cal_content").append("<div id='calrow'></div>");
for (i = 0; i < oper.length; i++) {
$("#cal_content #calrow:last-child").append("<input type='button' class='mybtn' id='number' value='" + oper.substr(i, 1) + "'></input>");
}
$("#cal_content").append("<div id='calrow'></div>");
$("#cal_content #calrow:last-child").append("<div id='expr'></div>");
$("#cal_content #calrow").each(function() {
$(this).children().each(function() {
$(this).hide();
});
$(this).hide();
});
$("#cal_content #calrow:first-child").slideDown(200, function() {
$(this).children().first().slideDown(100, function() {
$(this).next("#number").slideDown(100, arguments.callee);
});
$(this).next("#calrow").slideDown(200, arguments.callee);
});
$("#cal_content input[id='number']").click(function(event) {
event.preventDefault();
$(this).animate({ opacity: 0 }, 100, function() {
$(this).animate({ opacity: 1 }, 100);
});
if (this.value == '=') {
$("#expr").text(eval($("#expr").text()));
} else {
$("#expr").text($("#expr").text() + this.value);
}
});
});
$("#cal_reset").click();
});
</script>
<input type='button' id='cal_reset' class='mybtn' value='reset'></input>
<div id="cal_content"></div>

'컴퓨터 프로그래밍 > 자바스크립트 장난' 카테고리의 다른 글

jquery datepicker IE8 스크롤 문제 해결방법  (0) 2012.01.11
jQuery 연습2 - 계산기  (0) 2011.08.03
jQuery 연습1  (0) 2011.08.01
자바스크립트! 2  (1) 2009.04.20
Posted by orange code
1st, 2nd 부분, 그리고 reset 버튼을 눌러보세요.


1st 2nd
1st abc def
2nd ghi jkl
3rd abc def
4th ghi jkl


<style>
table.testTable {
border-collapse: collapse;
}
table.testTable td, tr {
border: 1px solid black;
padding: 5px;
}
</style>
<button id="resetbtn1">Reset</button>
<table class="testTable">
<tbody><tr>
<td></td>
<td id="vsel">1st</td>
<td id="vsel">2nd</td>
</tr>
<tr>
<td id="hsel">1st</td>
<td>abc</td>
<td>def</td>
</tr>
<tr>
<td id="hsel">2nd</td>
<td>ghi</td>
<td>jkl</td>
</tr>
<tr>
<td id="hsel">3rd</td>
<td>abc</td>
<td>def</td>
</tr>
<tr>
<td id="hsel">4th</td>
<td>ghi</td>
<td>jkl</td>
</tr>
</tbody></table>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>
    $("#resetbtn1").click(function () {
    $("table.testTable tr,td").hide("fast");
    $("table.testTable").hide("fast");
    $("table.testTable").show("fast");
    $("table.testTable tr,td").show("fast");
    });
    $("td[id='hsel']").click(function () {
    $(this).parent().hide("fast");
    });
    $("td[id='vsel']").click(function () {
    $("td:nth-child(" +  (this.cellIndex + 1) + ")").hide("fast");
    });
    </script> 

'컴퓨터 프로그래밍 > 자바스크립트 장난' 카테고리의 다른 글

jQuery 연습2 - 계산기  (0) 2011.08.03
jQuery 연습1  (0) 2011.08.01
자바스크립트! 2  (1) 2009.04.20
자바스크립트!  (0) 2009.04.03
Posted by orange code

private MediaPlayer mPlayer;


mPlayer = new MediaPlayer();

AssetFileDescriptor afd = DM.activity.getAssets().openFd(filename);

mPlayer.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());

mPlayer.prepare();
mPlayer.start(); 


주소가 assets/abc/def.mp3 라면
filename 에 abc/def.mp3 로 주면 된다..
 


실수1

mPlayer.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());

이 부분을

mPlayer.setDataSource(afd.getFileDescriptor()); 

이렇게 뒤에 파라미터 2개를 없애도 재생은 됐었는데
mp3가 여러개 되니까 엉뚱한 mp3를 재생했다..

 
Posted by orange code
0. eclipse와 tomcat을 설치합니다.

1. ant 설정하기

windows -> preference -> ant -> runtime 으로 갑니다.

Add External JARs를 통해서 톰캣 설치 폴더에 lib 안에 있는 catalina-ant.jar 를 추가해줍니다.


2. 프로젝트 생성하기

JAVA 프로젝트로 하나 생성합니다.

적당히 TestJSP로 해보았습니다.


3. 폴더 구성



프로젝트 폴더 밑에 war 폴더를 만들고 그안에 그림과 같이 파일을 구성합니다..
자바 클래스들은 src, bin 으로 폴더가 나뉘는 기본 설정을 썼습니다.
war안에 jsp파일들을 추가하면 됩니다.
WEB-INF폴더와 그 안의 web.xml는 필수로 추가하여야합니다.

4. build.xml 추가

<project name="My Application" default="redeploy" basedir=".">
<property name="build" value="${basedir}/war" />
<property name="path" value="/TestJSP" />
<property name="url" value="http://localhost:8080/manager" />
<property name="username" value="admin" />
<property name="password" value="password" />
<taskdef name="deploy" classname="org.apache.catalina.ant.DeployTask" />
<taskdef name="list" classname="org.apache.catalina.ant.ListTask" />
<taskdef name="reload" classname="org.apache.catalina.ant.ReloadTask" />
<taskdef name="resources" classname="org.apache.catalina.ant.ResourcesTask" />
<taskdef name="roles" classname="org.apache.catalina.ant.RolesTask" />
<taskdef name="start" classname="org.apache.catalina.ant.StartTask" />
<taskdef name="stop" classname="org.apache.catalina.ant.StopTask" />
<taskdef name="undeploy" classname="org.apache.catalina.ant.UndeployTask" />
<target name="compile" description="Compile web application">
<war destfile="${basedir}/deploy.war" webxml="${build}/WEB-INF/web.xml">
<fileset dir="${basedir}/war">
</fileset>
<classes dir="${basedir}/bin">
</classes>
</war>
</target>

<target name="deploy" description="Install web application" depends="compile">
<deploy url="${url}" username="${username}" password="${password}" path="${path}" war="file:${basedir}/deploy.war" />
</target>
<target name="reload" description="Reload web application" depends="compile">
<reload url="${url}" username="${username}" password="${password}" path="${path}" />
</target>
<target name="undeploy" description="Remove web application">
<undeploy url="${url}" username="${username}" password="${password}" path="${path}" /> </target>
<target name="redeploy" description="Re-deploy web application" depends="undeploy,deploy" />
</project>

프로젝트에 build.xml 파일을 추가해줍니다.
그리고 path 의 값을 원하는 주소로, url 을 본인의 서버 주소로
username, password를 맞게 수정해줍니다.


5. 프로젝트에 ant 빌더 설정 추가하기

프로젝트 탐색기에서 프로젝트를 선택하고 속성페이지에 들어갑니다.
Builders 를 선택하고 New를 누릅니다. 여기서 Ant Builder 선택



main 탭에서 Buildfile 부분의 browse workspace를 누른다음에 build.xml를 골라줍니다.



targets 탭에서는 처음에는 위의 3가지를 deploy로 선택하고 한번 컴파일을 하면
deploy가 되면서 바로 웹페이지에서 확인해볼 수 있습니다.
그 후에는 스크린샷 처럼 redeploy로 바꾸면
소스를 수정하고 저장할때마다 바로 서버에 적용이 됩니다.
Posted by orange code

티스토리 툴바