2012년 11월 14일 수요일

[JaVaScRiPt] 체크박스 하나만 선택

<script>
function checkOnly(chk){

   var obj = document.getElementsByName("userSelect");

      for(var i=0; i<obj.length; i++){
            if(obj[i] != chk){
                  obj[i].checked = false;
                  }
            }
    }

</script>



<input type="checkbox" name="userSelect" value="chk1" onClick="javascript:checkOnly(this);" />check1
<input type="checkbox" name="userSelect" value="chk2" onClick="javascript:checkOnly(this);" />check2

2012년 11월 13일 화요일

[EtC] LG-SU870 original build.prop file(ICS)




LG-SU870 의 아이스크림센드위치 버젼의 수정되지 않은  build.prop 파일 입니다.




# begin build properties
# autogenerated by buildinfo.sh
ro.build.id=IMM76L
ro.build.display.id=IMM76L
ro.build.version.incremental=LGSU870-V20d-SEP-27-2012.481403AA
ro.build.version.sdk=15
ro.build.version.codename=REL
ro.build.version.release=4.0.4
ro.build.date=Thu Sep 27 12:10:10 KST 2012
ro.build.date.utc=1348715410
ro.build.type=user
ro.build.user=jiyoung.park
ro.build.host=LGEARND5B2
ro.build.tags=release-keys
ro.product.model=LG-SU870
ro.product.brand=lge
ro.product.name=cx2_skt_kr
ro.product.device=cx2
ro.product.board=cx2
ro.product.cpu.abi=armeabi-v7a
ro.product.cpu.abi2=armeabi
ro.product.manufacturer=LGE
ro.product.locale.language=ko
ro.product.locale.region=KR
ro.wifi.channels=
ro.board.platform=omap4
# ro.build.product is obsolete; use ro.product.device
ro.build.product=cx2
# Do not try to parse ro.build.description or .fingerprint
ro.build.description=cx2_skt_kr-user 4.0.4 IMM76L LGSU870-V20d-SEP-27-2012.481403AA release-keys
ro.build.fingerprint=lge/cx2_skt_kr/cx2:4.0.4/IMM76L/LGSU870-V20d-SEP-27-2012.481403AA:user/release-keys
ro.build.characteristics=default
# end build properties
#
# system.prop for maguro
#

telephony.lteOnCdmaDevice=0
# OMAP
com.ti.omap_enhancement=true
opencore.asmd=1
# WiFi interface
wifi.interface=wlan0
wifi.features=p2p
wifi.supplicant_scan_interval=20
# Dalvik
dalvik.vm.heapsize=64m
# Define modem related settings
ro.radio.use-ppp=no
ro.config.nocheckin=yes
keyguard.no_require_sim=1
# define defaults for audio D/A mic and power mode
omap.audio.mic.main=AMic0
omap.audio.mic.sub=AMic1
omap.audio.power=HQ
# Audio
alsa.mixer.playback.master=DAC2 Analog
alsa.mixer.capture.master=Analog
#20120308 ssongnim@lge.com Audio system property setting [START]
ro.lge.audio_soundexception=true
ro.lge.audio_soundprofile=true
ro.config.ringtone=01_Beyond_the_Dream.ogg
ro.config.notification_sound=01_Pebble.ogg
ro.config.alarm_alert=01_Alarm_1.ogg
#20120308 ssongnim@lge.com Audio system property setting [END]
# set high quality mode android resampler
af.resampler.quality=3
# Define JPEG codec to load. (Set libskiahw with 1 & Set ARM with 0)
jpeg.libskiahw.encoder.enable=0
jpeg.libskiahw.decoder.enable=0
# Define JPEG Threashold for Image size (bytes)
jpeg.libskiahw.decoder.thresh=0
jpeg.libskiahw.encoder.thresh=0
# Define Camera dcc loading. (Set 1 to load dcc & set 0 to not load dcc)
camera.dcc.enable=0
ro.com.android.dateformat=MM-dd-yyyy
# [LGE_UPDATE_S][DEFAULT_DATA_ROAMING_VALUE],global-wdata@lge.com,2012-04-12
ro.com.android.dataroaming=false
# [LGE_UPDATE_E][DEFAULT_DATA_ROAMING_VALUE],global-wdata@lge.com,2012-04-12
# BT Test
use.bt.tethering=0
# MMS Test
persist.gsm.sms.forcegsm7=1
#bootsound
persist.sys.system_volume=7
persist.sys.sound_enable=2
#LGE_CHANGE_START, moon-wifi@lge.com by 2lee, 20120228,Adding Country Code for Wifi
wifi.country.code=GB
#LGE_CHANGE_END, moon-wifi@lge.com by 2lee, 20120228,Adding Country Code for Wifi
#LGE_CHANGE_START, moon-wifi@lge.com by 2lee, 20120308, using prop. for wifi mac.
persist.wifi.mac=FFFFFFFFFFFF
#LGE_CHANGE_END, moon-wifi@lge.com by 2lee, 20120308, using prop. for wifi mac.
# AP Bootloader Version [START]
ro.lk.version=LK MAR-2012
# AP Bootloader Version [END]
#LGE_UPDATE_START, dan.park@lge.com, 20120410, set default screen brightness and brightness mode
ro.lge.lcd_auto_brightness_mode=false
#MO2_CX2, yanggil.choi, 20120706, set default screen brightness(40%) for user mode
ro.lge.lcd_default_brightness=192
#LGE_UPDATE_END, dan.park@lge.com, 20120410, set default screen brightness and brightness mode

# mo2haewoon.you@lge.com => [START] HIDDEN_RESET
persist.firstboot.hiddenreset=0
# mo2haewoon.you@lge.com <= [END]
#
# ADDITIONAL_BUILD_PROPERTIES
#
ro.build.target_country=KR
ro.build.target_operator=SKT
ro.afwdata.LGfeatureset=SKTBASE
ro.lge.audio_soundexception=true
ro.config.ringtone=01_Beyond_the_Dream.ogg
ro.config.notification_sound=01_Pebble.ogg
ro.config.alarm_alert=01_Alarm_1.ogg
ro.lge.vt.enable=1
ro.lge.capp_menu_long=true
ro.airplane.phoneapp=1
wlan.chip.vendor=brcm
wlan.chip.version=bcm4330x
wifi.supplicant_scan_interval=20
wifi.lge.patch=true
wifi.interface=wlan0
wifi.lge.hanglessid=true
wifi.lge.offdelay=false
dhcp.dlna.using=false
wifi.lge.cc.table=true
ro.com.google.clientidbase=android-lge
ro.com.google.clientidbase.gmm=android-lge
ro.com.google.clientidbase.yt=android-lge
ro.com.google.clientidbase.am=android-skt-kr
ro.com.google.clientidbase.ms=android-skt-kr
ro.com.google.gmsversion=4.0_r5
ro.setupwizard.mode=DISABLED
ro.livewallpaper.map=DISABLED
keyguard.no_require_sim=true
ro.com.android.dataroaming=true
ro.com.android.dateformat=MM-dd-yyyy
ro.opengles.version=131072
ro.sf.lcd_density=240
hwui.render_dirty_regions=false
ime_trace_apply=true
ime_handwriting_apply=false
ro.build.target_ril_platform=ifx
persist.service.rr.enable=1
dalvik.vm.heapstartsize=8m
dalvik.vm.heapgrowthlimit=64m
dalvik.vm.heapsize=256m
ro.lge.swversion=LGSU870-V20d-SEP-27-2012
ro.build.lge.version.date=SEP-27-2012-12:07:40
ro.lge.basebandversion=XMM6260
ro.lge.capp_optimusui=true
ro.lge.capp_core=true
ro.lge.capp_drm=true
ro.lge.capp_real3d=true
ro.lge.capp_divx_drm=true
ro.lge.capp_almond=true
ro.lge.capp_resource=true
ro.lge.capp_wapservice=true
ro.lge.capp_osp=true
ro.lge.capp_quickclip_key=true
ro.lge.capp_ghost_finger=true
ro.lge.capp_touch_scroller=true
ro.lge.capp_touch_ldi=true
ro.lge.capp_key_light_off=true
ro.lge.capp_key_exception=true
ro.lge.capp_keyled_timeout=true
ro.lge.capp_mdm=true
ro.lge.capp_lockscreen=true
ro.lge.fonts=true
ro.lge.lazy_service_bringup=true
ro.lge.capp_app_preinstall=true
drm.service.enabled=true
ro.lge.capp_tdmb=true
ro.nfc.port=I2C
lge.nfc.fwpatchv13=yes
lge.nfc.indicator=yes
lge.nfc.setype=uicc
lge.nfc.defaultonoff=on
lge.nfc.setting2depth=yes
lge.nfc.getringermode=yes
dalvik.vm.dexopt-flags=m=y
net.bt.name=Android
dalvik.vm.stack-trace-file=/data/anr/traces.txt

2012년 11월 6일 화요일

[EtC] SESSIONS.ser (지정된 경로를 찾을 수 없습니다)



Eclipse 와 Tomcat 연동시 아래와 같은 메시지가 나오는 경우가 있다.


2012. 11. 6 오전 9:31:46 org.apache.catalina.session.StandardManager stopInternal
심각: Exception unloading sessions to persistent storage
java.io.FileNotFoundException: D:\study\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost\_\SESSIONS.ser (지정된 경로를 찾을 수 없습니다)
at java.io.FileOutputStream.open(Native Method)
at java.io.FileOutputStream.<init>(FileOutputStream.java:194)
at java.io.FileOutputStream.<init>(FileOutputStream.java:84)
at org.apache.catalina.session.StandardManager.doUnload(StandardManager.java:386)
at org.apache.catalina.session.StandardManager.unload(StandardManager.java:353)
at org.apache.catalina.session.StandardManager.stopInternal(StandardManager.java:518)
at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232)
at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5474)
at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232)
at org.apache.catalina.core.ContainerBase$StopChild.call(ContainerBase.java:1575)
at org.apache.catalina.core.ContainerBase$StopChild.call(ContainerBase.java:1564)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)


이러한 경우 Tomcat 을 정지 시키고, workspace 디렉토리 아래 SESSIONS.ser 파일을 찾아 삭제 한다. 그리고 Tomcat 의 server.xml 의 <context> </context> 태그 사이에 다음과 같은 옵션을 넣어 준다.

      <Context docBase="web-test-bed" path="/" reloadable="true" source="org.eclipse.jst.jee.server:web-test-bed">
      <Manager className="org.apache.catalina.session.PersistentManager" saveOnRestart="false"/>
      </Context>

2012년 11월 1일 목요일

[EtC] 모바일 크롬 웹 디버깅



1. 문서의 목적
    안드로이드 폰에 설치된 모바일용 크롬 브라우저의 웹 디버깅 기능에 관련된 설정을 알아 보도록 한다.


2. 사전 준비 사항
    - 안드로이드폰 에 모바일용 크롬 브라우저가 설치 되어 있어야 한다.
    - PC 에도 크롬 브라우저가 설치 되어 있어야 한다.
    - PC 에 휴대폰 제조사의 USB 드라이버가 설치 되어 있어야 한다.
    - 휴대폰 과 PC를 USB 케이블로 연결해 둔다.


3. 안드로이드 SDK 다운로드
 
    다운로드 링크 : http://developer.android.com/sdk/index.html














    자신의 시스템에 맞는 것을 내려 받아 설치 한다. 이 문서에서는 Windows 용 zip 파일을 내려 받아 설정 하는 방향으로 진행 하였다.

     참고 : 안드로이드 SDK 를 설치 하는 이유는 adb 명령을 사용 하기 위함 이며, 따로 배포 되는 adb 명령을 가지고 있는 경우 이 단계를 생략 할 수 있다.




4. 안드로이드 SDK 압축 해제
 




















   다운로드 받은 zip 파일을 적당한 디렉터리에 압축 해제 한다. 이 문서에서는 C:\android-sdk-windows 에 압축을 해제 하였다.



5. Android SDK Platform-tools 설치






















   안드로이드 SDK 를 압축 해제한 디렉토리로 이동 하여  SDK Manager.exe 를 실행 한다.






























   위 그림과 같이 Android SDK Platform-tools 를 선택 하고 설치 하도록 한다. 필요한 경우 이 단계에서 필요한 AVD 를 선택 하여 설치 하여도 된다.























   위 그림과 같이 Accept All 을 선택 후 Install 버튼을 클릭 한다.





















   Android SDK Platform-tools 설치가 완료 되면, Close 버튼을 클릭 하여 창을 닫는다. 이전에 실행 하였던, Android SDK Manager 창도 닫는다.




6. adb 명령어 위치 확인























   C:\android-sdk-windows\platform-tools 로 이동 하면, 위의 그림과 같이 adb.exe 파일 이 보이면 정상적으로 설치가 된 것이다. adb 명령어가 있는 위치를 PATH 환경 변수에 추가 하기 위해 기억해 두도록 한다.




7. 환경 변수에 안드로이드 SDK 위치 추가

   시스템의 어느 곳에서든 adb 라는 명령을 사용 할 수 있도록 운영체제의 환경 변수에 추가 해 주어야 한다. 이 과정은 필수가 아니며, 경로 추가가 귀찮은 경우 안드로이드 SDK 가 설치된  디렉터리의 adb 명령어가 있는 위치로 매번 이동 하여 adb 명령을 사용해도 된다.


 





















   위의 그림과 같이 adb.exe 명령이 있는 위치를 PATH 환경변수에 추가 하여 주도록 한다.




8. adb 명령어 확인
















   도스창을 열어 adb version 명령을 내려 위와 같이 나오는지 확인 한다. 안나오는 경우 "7. 환경 변수에 안드로이드 SDK 위치 추가" 부분을 다시 확인 하도록 한다.




9. 모바일용 크롬 설정

























   모바일 크롬을 실행 후 메뉴키를 눌러 나타나는 메뉴에 "설정" 을 선택 한다.




























   "개발자 도구" 를 선택 한다.
 





























    "USB 웹 디버깅 사용" 에 체크 한다.





10. adb 명령어의 사용












   도스 창을 열어 아래의 명령어를 복사하여 붙여 넣고 실행 한다.

    c:\> adb forward tcp:9222 localabstract:chrome_devtools_remote


   * 9222 외 다른 포트를 사용하고 싶은 경우 다른 포트를 사용하여도 무관 한다.
     PC의 브라우저에서 접속시 위의 명령어에서 지정한 포트로 접근 하면 된다.




11. 테스트용 웹페이지 작성


<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="ko">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
console.log("웹 디버깅에서 이 메세지가 보이나요?");
function sayHello(){
console.log("i say hello, you say world.");
return;
}
</script>
</head>
<body onLoad="javascript:sayHello();">
<input type="button" onClick="javascript:sayHello();" value="hello" />
</body>
</html>





12. PC 에서 크롬 브라우저를 이용 하여 확인























PC 의 크롬 브라우저를 열고 http://localhost:9222 의 주소로 접속  하면, 위의 그림과 같이 현재 휴대전화의 모바일 크롬 브라우저에 떠 있는 화면들이 나타나고, 디버깅이 필요한 화면을 선택 하여 디버깅 화면을 볼 수 있다.

























위와 같이 디버깅 관련 메세지나 내용등을 확인 할 수 있다.