9월, 2014의 게시물 표시

Android(java) 개발 코드 리뷰 팁 하나

울 회사의 어떤분이 정리한 자료를 참조하여 요약 정리 ========================================================= Step #1 -------------- FileInputStream fin = null; try {     fin =  new FileInputStream("testfile");     fin.read()...       fin.close(); // 뭐가 문제? } catch(IOException e) {     e.printStackTrace(); } ========================================================= Step #2 -------------- FileInputStream fin = null; try {     fin =  new FileInputStream("testfile");     fin.read()...     } catch(IOException e) {     e.printStackTrace(); }finally {      fin.close(); // finally를 통해 어떤 상황에서도 호출 보장 } ========================================================= Step #3 -------------- FileInputStream fin1 = null, fin2 = null; try {     fin1 =  new FileInputStream("testfile");     fin1.read()...         fin2 =  new FileInputStream("testfile2"); // FileNotFoundException     fin2.read()...     } catch(IOExce

Android Monkey Test 사용

0. 레퍼런스 안드로이드 레퍼런스 :  http://developer.android.com/guide/developing/tools/monkey.html    1. Monkey Test란? - Monkey는  Android SDK에서 제공하는 Command Line Tool (java) - Emulator나 Device에 random한 event 를 발생 - Event로는 click, touch, gesture, system level event 등이 포함 2. 기본 사용법    - adb shell에서 monkey tool을 실행 - 예 1: $ monkey 200 -- 200개의 이벤트를 발생 3. 이벤트 구분 옵션 - 예 2: $ monkey --pct-touch 20 --pct-motion 60 --pct-syskeys 10 --pct-appswitch 10 1000 --pct-touch <percent>   터치 이벤트 발생 비율을 조정한다.  (터치 이벤트는 화면의 한 곳을 눌렀다 떼는 신호를 말한다) --pct-motion <percent>   모션 이벤트의 발생 비율을 조정한다.  (모션 이벤트는 화면 한 지점을 누르고 무작위로 다른 지점으로 이동 후 떼는 것을 말한다)  --pct-trackball <percent>   트랙 볼 이벤트의 발생 비율을 조정한다.   (하나 이상의 무작위 이동 이벤트를 말하며 가끔씩 한번의 클릭이 올 수 있다)  --pct-nav <percent>  "basic"네비게이션 이벤트의 발생 비율을 조정한다. (네비게이션 이벤트란 H/W(폰)의 상하좌우 방향키 입력을 말한다.)  --pct-majornav <percent>  "major"네비게이션 이벤트의 발생 비율을 조정한다. (백 키나 메뉴 키, 방향키의 가운데 키와 같은 이벤트를

Ubuntu on the Nexus 7

1. 설치 과정 -  https://wiki.ubuntu.com/Nexus7/Installation -  http://thdev.net/363 - 기본적으로 unlock하고 ubuntu-nexus7-installer (in ubuntu desktop pc)를 이용해서  설치하면 아주 쉽게 설치된다. - unlocking 과정 - 1). power  off 상태에서 power 키와 volume down 키를 동시에 누르면  fastboot mode 진입 - 2). 아래와 같은 순서로 진행 - $ sudo fastboot devices - $ sudo fastboot oem unlock - $ sudo fastboot reboot-bootloader - installer를 통한 ubuntu 설치 - $ sudo add-apt-repository ppa:ubuntu-nexus7/ubuntu-nexus7-installer - $ sudo apt-get update - $ sudo apt-get install ubuntu-nexus7-installer - or 이미지 다운로드 받아서  ubuntu 설치 - 다운로드 이미지:  http://cdimage.ubuntu.com/daily-preinstalled/current/ -  $sudo fastboot erase boot -  $sudo fastboot erase userdata -  $sudo fastboot flash boot xxx.bootimg -  $sudo fastboot flash userdata xxx.img -  $sudo fastboot reboot 2. 설치 후기 - wifi는 지원한다. - back/home 등의 버튼이 없어서 불편하다. - Rotation이 동작한다. - 화면 resolution이 nexus 7에 맞지 않다. - 기본 설치 App이 적다. - 화면

qcow2의 encryption 사용해 보기

- qcow/qcow2는 Encryption 지원 - 참고 사이트:  http://blog.bodhizazen.net/linux/kvm-how-to-use-encrypted-images/ 1. Create an encrypted disk (empty password) - $ qemu-img create -o encryption -f qcow2 image.qcow2 10G 2. "set a password" or "convert an encrypted qcow2" - $ qemu-img convert -o encryption -O qcow2 image.qcow2 encrypted.qcow2 3. Determine if you qcow image is encrypted - $ qemu-img info encrypted.qcow2 4. Using the images - rootfs를 암호화 해서 부팅해 보면  - Step1: Ctrl-Alt-2 to access the qemu monitor. - Step2: (qemu monitor) cont [입력] - Step3: password 입력 - Step4: 다시 화면으로 돌아오기 위해 Ctrl-Alt-1 5. 미리 입력된 password로 부팅 시키기 - 위의 4번과 같이 password를 monitor 세션에서 주는 방식이 아니라  임시로 qemu 소스를 수정해서 password를 미리 주려면 어떻게? - block/qcow2.c 파일의 qcow2_open 함수에서 bdrv_set_key로 미리 password 전달되도록 수정 - if (s->crypt_method_header) { - bs->encrypted = 1; - bdrv_set_key(bs, "testpwd"); // 추가된 라인 - }

Android의 desktop 모드

스마트폰을 PC로 사용하자 - 스마트폰의 성능이 좋아지고 스마트폰을 B2B용도로 사용하고자 하는 요구사항이 늘어남 - 스마트폰 운영체제를 PC 처럼 사용하고자 하는 요구사항이 많이 도출되고 있음 - 스마트폰을 docking or hdmi 연결 등을 통해 desktop mode로 전환  - 이전에 모토롤라의 아트릭스가 webtop 이라는 기능을 선보인 적이 있음 - Motorola confirms death of Webtop, laptop accessories  -  http://news.cnet.com/8301-1035_3-57527168-94/motorola-confirms-death-of-webtop-laptop-accessories/) 1. Android - Android 5.0 (jelly bean) 이 desktop mode를 포함할 가능성 높은 (Android 4.2 Multi-user 지원) - 멀티 윈도우 기능  - Multiscreen Multitasking 2000원에 판매 - WINDOWED ANDROID UI  -  http://www.ixonos.com/showcases/concept-multi-window-solution-for-android-tablets/ -  http://hothardware.com/News/Ixonos-Creates-MultiWindow-Solution-For-Android/

Ubuntu for Android 조사

0. 배경 상황   - 현재 관련 자료는 해당 사이트와 인터뷰 및 전시 발표회 동영상 정도 1. Ubuntu for phone - 새로운 모바일 OS - Native QT, OpenGL/GLES and HTML5 App 지원 - Same codebase as the desktop version of Ubuntu - Standard Android drivers 사용 (Android hardware으로 포팅 용이) - Low-end hardware에서도 좋은 성능 발휘 - 2014년 초 릴리즈 계획 - OEM partners에게만 제공  2. Ubuntu for Android - Android/Ubuntu(full pc desktop)가 동시에 동작하는 구조 (커널은 공유) - Docking하면서 Ubuntu OS 부팅 - Android service layer와 tight하게 연동되어 있음 - OEM partners에게만 제공  - 2013년말 쯤 릴리즈 예상 3. Why add anything to Android? - Touch interface vs Pointer-driven experience - Android는 멀티 윈도우 미 지원 (아래 현재 관련 업체 존재) - WINDOWED ANDROID UI  -  http://www.ixonos.com/showcases/concept-multi-window-solution-for-android-1tablets/ -  http://hothardware.com/News/Ixonos-Creates-MultiWindow-Solution-For-Android/ - Full range of desktop applications - web-top, or web only desktop ? - Desktop is a high-productivity mode 3. Features - Web browser - Ch

Survey for Ubuntu ARM Project

1. Introduction   - Ubuntu arm team deal with arm specific build failures, crashes, and general port tasks.  - Both for ARMel and upcoming ARMhf archives - https://wiki.ubuntu.com/ARM 2. Ubuntu 12.04 버전 지원 리스트 - OMAP: Texas Instruments OMAP page - Tegra (AC100): Toshiba AC100 Nvidia Tegra 2 page - IMX53: Freescale IMX53 QuickStart Board Page - ARM Server: ARM Server Page 3. ISO 이미지 다운로드 - Ubuntu Server and Ubuntu Desktop for ARM are a general purpose OS for ARM-based systems only.  - Calxeda ECX-1000 (Server only), Marvell Armada-XP (Server only), TI Panda development boards. -  http://www.ubuntu.com/download/arm 3. qemu Emulator를 이용한 테스트 - pre-built 버전으로 테스트 수행 (karmic: 9.10 버전) - WM는 미포함 (ID/PW = ubuntu/temppwd) - $  qemu-system-arm -M  versatilepb   -cpu cortex-a8  -kernel ./vmlinuz  -hda ubuntu-arm.img  -m 256  -append "root=/dev/sda mem=256M devtmpfs.mount=0 rw" - wget -c  http://w3.impa.br/~gabrield/data/ubuntu-a

dm-crypt에 의한 성능 저하가 얼마일까?

1. 준비 - Encrypted Disk - qemu-img create -f raw dm1.img 2G  - sudo losetup /dev/loop1 dm1.img - sudo cryptsetup luksFormat /dev/loop1  - sudo cryptsetup luksOpen /dev/loop1 encrypt-fs  - sudo mkfs.ext4 /dev/mapper/encrypt-fs - sudo mount /dev/mapper/encrypt-fs ./mount1   - Non-Encrypted Disk - qemu-img create -f raw dm2.img 2G  - sudo losetup /dev/loop2 dm2.img - sudo mkfs.ext4 /dev/loop2 - sudo mount /dev/loop2 ./mount2 2. 테스트 시나리오 - 각 Disk에 대해서 아래 테스트를 10회씩 진행 - sync  - echo 3 > /proc/sys/vm/drop_caches - dd if=/dev/zero of=1G_file_$i  bs=51200k count=20 conv=fsync 2>&1 | grep "MB" - echo 3 > /proc/sys/vm/drop_caches - dd if=1G_file_$i  of=/dev/zero  bs=51200k 2>&1 | grep "MB" - rm 1G_file_$i 3. 테스트 결과 - 10회 테스트중에서 write 값이 최저 제외 - Encrypted Disk - write: (98.2 + 89.6 + 113 + 111 + 84.9 + 99.2 + 110 + 113 + 105)/9 = 102.65 MB/s - read : (122 + 133 + 127 + 131 + 127 + 130 + 134 + 124 + 130)/

dd를 이용한 Disk IO 성능 측정

아래와 같은 스크립트로 성능 측정 자세한 설명은 추후 업데이트 예정  #!/bin/sh i=0 # test iteration LOOP=10 # 1G = 51200k * 20 # 1G = 1024k * 1024 BLOCK_SIZE=51200k COUNT=20 while [ $i -lt $LOOP ] do  #### initialization ##################################################################  i=`expr $i + 1`  echo "== $i iteration =="  # flush file system buffer  sync  #### write test     ##################################################################  # To free pagecache, dentries and inodes:  echo 3 > /proc/sys/vm/drop_caches  # cond=fsync: physically write output file data & metadata before finishing  dd if=/dev/zero of=1G_file_$i  bs=$BLOCK_SIZE count=$COUNT conv=fsync 2>&1 | grep "MB"  #### read test      ##################################################################  # To free pagecache, dentries and inodes:  echo 3 > /proc/sys/vm/drop_caches  dd if=1G_file_$i  of=/dev/zero  bs=$BLOCK_SIZE 2>&1 | grep "MB"  #### delete

Android Stack Source to Device

이미지
참고사이트:  http://marakana.com/s/post/1044/remixing_android

Android goldfish에서 dm-crypt with LUKS => Disk Encryption

1. 테스트 환경 - Android full source : android-4.2.1_r1 소스 - Android goldfish kernel   2. cryptsetup을 Android 로 포팅 - https://github.com/guardianproject/LUKS/wiki - 위 사이트에서 포팅 및 바이너리 다운로드 가능   3. losetup을 Android 로 포팅 - Android toolbox는 losetup을 지원하지 않음 -  http://benno.id.au/blog/2007/11/14/android-busybox - 위 사이트에서 busybox 바이너리 다운로드 가능   4. Encrypt Disk 생성 및 포멧     - $ qemu-img create -f raw dm.img 10M      - $ sudo losetup /dev/loop0 dm.img     - $ sudo cryptsetup luksFormat /dev/loop0      WARNING!     ========     This will overwrite data on /dev/loop0 irrevocably.       Are you sure? (Type uppercase yes): YES     Enter LUKS passphrase: testpwd     Verify passphrase: testpwd       - $ sudo cryptsetup luksOpen /dev/loop0 encrypt-fs     Enter passphrase for /dev/loop0: testpwd     - $ sudo mkfs.ext4 /dev/mapper/encrypt-fs     - $ sudo cryptsetup luksClose encrypt-fs     - $ sudo losetup -d /dev/loop0     - $ adb push dm.im

dm-crypt with Linux Unified Key Setup (LUKS) 를 이용한 Disk Encryption

  1. cryptsetup 의 단점     - Without LUKS         - password를 변경하기 위해서는 전제 disk를 re-encrypt해야 한다         - 단지 하나의 key 만 할당할 수 있다.         - mount를 하기 전까지 password가 틀린지 확인할 수 없다. 2. Encrypt Disk 생성 및 포멧     - $  qemu-img create -f raw dm.img 3G      - $  sudo losetup /dev/loop0 dm.img     - $  sudo cryptsetup luksFormat /dev/loop0      WARNING!     ========     This will overwrite data on /dev/loop0 irrevocably.     Are you sure? (Type uppercase yes):  YES     Enter LUKS passphrase: testpwd     Verify passphrase: testpwd     - $  sudo cryptsetup luksOpen /dev/loop0 encrypt-fs     Enter passphrase for /dev/loop0:  testpwd     - $ ls -al /dev/mapper/     encrypt-fs -> ../dm-0     - $  sudo mkfs.ext4 /dev/mapper/encrypt-fs 3. Encrypt Disk 제거     - $ sudo cryptsetup luksClose encrypt-fs     - $ sudo losetup -d /dev/loop0 4. Encrypt Disk Mount     - $ sudo losetup /dev/loop0 dm.img     - $ sudo cryptsetup luksOpen /dev/loop0 encry