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 다른 버전에선 테스트 안해봄. 
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

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
Toast는 간단하게 메시지를 표시할 때 유용합니다.
또 Toast 대화창이 아니기 때문에 지정된 시간만큼 표시된 후에 자동으로 사라집니다.

Toast.makeText(this, "Hello!", Toast.LENGTH_SHORT).show();
길게 출력하고 싶다면 Toast.LENGTH_SHORT 대신 Toast.LENGTH_LONG을 쓰면 됩니다.



기본적으로 Toast는 화면 중앙 하단에 표시되는데 이 위치는 setGravity를 써서 바꿀 수 있습니다.

Toast t = Toast.makeText(this, "Hello!", Toast.LENGTH_SHORT);
t.setGravity(Gravity.LEFT | Gravity.TOP, 10, 10);
t.show();




Toast는 UI 쓰레드에서만 표시할 수가 있습니다. 따라서 UI쓰레드가 아닌 쓰레드에서 생성하고 싶을 경우에는 runOnUiThread 메소드를 이용하면 됩니다.

예) Activity 클래스이름이 MainActivity 일 경우

runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this, "Hello!", Toast.LENGTH_SHORT).show();
}
});





Posted by orange code
Android의 Activity는 설정이 바뀔 때 마다 재생성되게 된다.
경우에 따라 몇번이고 onCreate 가 연속으로 호출될 수 있다는 말이다.

화면 방향이 landscape 상태인 게임을 openGL을 사용하여 만들 경우 연속적인 openGL 초기화를 하려고 하여 문제가 생긴다.

이 때, manifest.xml 를 열어

<activity android:name=".MainActivity" android:label="@string/app_name">
이 부분에 다음과 같이 추가한다.

  <activity android:name=".MainActivity" android:label="@string/app_name" android:configChanges="orientation|keyboardHidden"> 

그러면 화면 방향이 바뀌는 경우에도 재생성이 일어나지 않아 문제가 발생하지 않는다.
Posted by orange code
1. jsmooth 를 설치합니다. http://jsmooth.sourceforge.net/



2. 이클립스에서 프로젝트를 실행-jar로 내보내기 합니다.



설정은 적당히 합니다

3. jsmooth 실행~



프로그램 종류를 고릅니다.. 윈도우 프로그램이면 windowed를 고릅니다. 콘솔이면 위에꺼



실행파일 위치를 지정합니다.. 아이콘과 시작 디렉토리를 지정할 수 있습니다.. 생략도 됨..



use an embedded jar를 체크 하고 좀전에 내보내기한 jar를 선택합니다. 그리고 시작 함수가 있는 클래스를 골라줍니다.

안 골라주면 실행해도 바로 꺼지게 됩니다..



최소, 최고 JVM 버전을 작성할 수도 있습니다.. 전 그냥 패스..

다 됐으면 project-> compile을 합니다. 그럼 좀전 지정한 곳에 실행파일이 만들어 집니다

그럼 jar파일이 없어도 실행되게 되죠~
Posted by orange code