'분류 전체보기'에 해당되는 글 171건

  1. 2014.09.22 [android] View의 LayerType 알아보기
  2. 2014.06.11 외부 library에 소스 경로 추가하기
  3. 2013.12.17 sony tablet s (SGPT12) usb driver 설치
  4. 2013.12.17 [주식] 주식 명의개서 정지 란? 1
  5. 2013.12.14 2014 연말정산 팁(Tip)
  6. 2013.11.11 2014 연말정산 달라지는 점 - 1탄
  7. 2013.10.31 [android] loadLibrary 와 CPU 특성
  8. 2013.10.25 [일본] 도쿄 시부야 미키하우스 ( 세이부 백화점 )
  9. 2013.10.24 [일본] 도쿄 여행기 ( 시부야, 록본기, 모리타워 )
  10. 2013.10.22 [책] 읽기 좋은 코드가 좋은 코드다

[android] View의 LayerType 알아보기

android 2014. 9. 22. 15:09

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

Android 3.0 ( 허니컴 : API level 11 ) 부터 하드웨어 가속 (hardwareAccelerated )  옵션으로 2D rendering pipeline 의 사용여부를 설정 할 수 있도록 하였다. hardwareAccelerated 을 설정하면 CPU가 할 일을 GPU가 대신 처리해서 그런지 체감 속도가 많이 빨라진다.

 

설정하기

ApplicationManifest.xml에서 설정할수 있다.

앱 전체에 설정하려면 아래처럼 application tag에 설정하면 된다.

<application

android:hardwareAccelerated="true"

또는 Activity 단위로도 설정할 수 있다.

<activity

android:hardwareAccelerated="true"

 

코드를 이용해서 동적으로 Activity에 설정하려면 아래와 같이 하면 된다. ( 동적으로 application 전체를 설정하는 방법은 없다. 동적으로 하려면 모든 activity에 아래의 방법을 적용하면 된다. )

코드로 할 때 주의할점은 setContent 전에 설정해야 한다.

@Override

protected void onCreate(Bundle savedInstanceState) {

       super.onCreate(savedInstanceState);          

       getWindow().addFlags(WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);

       setContentView(R.layout.my_content_view);

 

View 단위로도 설정할수 있는데, 아래의 방법으로 코드로 설정 할 수 있다. 생성자에서 호출이 되어야 한다.

 

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {

setLayerType(View.LAYER_TYPE_SOFTWARE, null);

}

 

참고로, Applicationmanifest나 코드로 설정안하고, android settings에서 개발자 옵션에서 “GPU 렌더링 강제 실행옵션을 키면 항상 GPU로 렌더링하게 된다.

 

View 단위로 설정하는 코드에서 보듯이, SDK에서 View LayerType 3가지로 제공한다.

l  LAYER_TYPE_NONE

l  LAYER_TYPE_SOFTWARE

l  LAYER_TYPE_HARDWARE

 

Software-base drawing model

소프트웨어 기반의 그리기 모델에서는 다음 2가지 절차를 통해서 그리기를 수행한다.

1.     Invalidate the hierarchy

2.     Draw the hierarchy

예를들어서, TextView의 내용을 변경하고 invalidate() 함수를 호출하면 viewhierarchy를 순회하면서 모든 view invalidate가 호하면서 다시 그려야할 영역을( the dirty regin) 을 구하게 된다. 그리고 viewhierarchy를 순회하면서 다시 그리게 된다.  (View.invalidate 함수를 보면, ViewParent invalidateChild 함수를 호출하는 것을 확인할수 있다. )

Software로 그리는 방식은 간단하지만, 2개의 결점을 가지고 있다. 첫째는 변경되지 않은 view에 대해서도 draw 코드를 수행하게 되는것이고, 두번째는 앱에 버그가 존재할수 있다는 것이다.

  

 

Hardware-base drawing model

하드웨어기반의 그리기 모델에서는 소프트웨어기반의 그리기 모델의 단점을 개선하여서 변경된 viewupdate를 하도록 개선된 모델이다.

1.     Invalidate the hierarchy

2.     Record and update display lists

3.     Draw the display lists

디스플레이 리스트( diplay list)를 가지고 있어서 각각의 view hierarchy에서 update되는 것만 다시 그리는 방식이다.

 

전체적인 구조나 성능면에서 hardware 방식이 더 좋지만 hardware 방식의 문제점도 있다. 바로 모든 api 가 지원하는 것이 아니다.

아래의 표는 Harware 기반 그리기 모델에서 android OS 버전별로 지원되는 api와 지원안되는 api 리스트 이다. 아래의 api를 사용할때는 성능 감소가 되더라도, LayerType을 반드시 software로 설정해야 정성 동작한다.

 

API level

< 16

16

17

18

Canvas

drawBitmapMesh() (colors array)

drawPicture()

drawPosText()

drawTextOnPath()

drawVertices()

setDrawFilter()

clipPath()

clipRegion()

clipRect(Region.Op.XOR)

clipRect(Region.Op.Difference)

clipRect(Region.Op.ReverseDifference)

clipRect() with rotation/perspective

Paint

setAntiAlias() (for text)

setAntiAlias() (for lines)

setFilterBitmap()

setLinearText()

setMaskFilter()

setPathEffect() (for lines)

setRasterizer()

setShadowLayer() (other than text)

setStrokeCap() (for lines)

setStrokeCap() (for points)

setSubpixelText()

Xfermode

AvoidXfermode

PixelXorXfermode

PorterDuff.Mode.DARKEN (framebuffer)

PorterDuff.Mode.LIGHTEN (framebuffer)

PorterDuff.Mode.OVERLAY (framebuffer)

Shader

ComposeShader inside ComposeShader

Same type shaders inside ComposeShader

Local matrix on ComposeShader

 

 

 

참고 : http://developer.android.com/guide/topics/graphics/hardware-accel.html



:

외부 library에 소스 경로 추가하기

android 2014. 6. 11. 13:58

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

안드로이드를 개발할 때 장점은 java로 되어 있어서 android의 소스를 쉽게 참조 할수 있는 점이다. 그런데, 안드로이드 소스외에 추가로 사용하는 library에 대해서는 소스를 볼 수 없어서 답답하곤 했다. 예를 들어서 android의 하위버전 호환 library android-support-v4.jar를 대부분 사용하는데, 개발하다가 ‘F3’ 키로 따라 들어가다 보면 아래와 같은 화면을 만나게 된다.

 


Android –support-v4 opensource라서 project를 다운받아서 봐도 되지만, 개발 환경과 연동이 안되어서 바로바로 소스보기가 불편하다. 그래서 검색해보니 있구나~

 

Google I/O 2012에서 그 방법을 소개하고 있다. ( 48분 부터 보면 된다. ) 

또는 옆의 링크를 눌러도 된다.  Explanation in Google I/O 2012 video

 

간단하게 설명하면 다음과 같다.

 

1. lib 폴더에 jar 파일이름 + “.properties” 라는 파일을 하나 만든다.

   예를 들어서 gson-2.2.4.jar 이면, gson-2.2.4.jar.properties 로 파일을 하나 만든다.


2. 파일에 src 또는 doc 의 경로를 설정하면 된다. ( 절대경로, 상대경로 모두 된다. )

   예를 들면, src=../libs-sources/gson-2.2.4-sources.jar  이렇게 해주면 된다.

   물론 해당 경로에 gson-2.2.4-source.jar 파일이 있어야 한다.

 



이렇게 하고 설정이 잘 되었는지 확인하려면 환경설정에서

“Java Build path” -> Libraries -> Android Private Libraries 에서 해당 jar 파일을 찾아서 펼친뒤에 Source attachment를 확인하면 된다.



 

설정하고 위에서럼 확인이 안될때는 F5를 눌러서 refresh를 해보면 된다.

그래도 안되면 projectclose 했다가 다시 열면된다.

그래도 안되면 eclipse를 종료했다가 다시 시작해야 한다.

 

참고로 xxx-source.jar 파일은 maven 중앙 repository 등에서 쉽게 구할수 있다.

http://search.maven.org

 

개발환경이 편리해 저서 뿌듯하다~ ㅋㅋ 

 

 



:

sony tablet s (SGPT12) usb driver 설치

android 2013. 12. 17. 13:48

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

소니에서 나온 tablet s 라는 안드로이드 기반의 타블렛이 있는데, usb driver를 설치하기가 쉽지 않다. 정확한 모델명은 SGPT12 이다. 안드로이드 개발을 위해서 ADB 와 연결하려면 기본 드라이버가 설치되어 있어야 하는데.. 쉽지않군..

 

구글링으로 검색해보니 비슷한 사래가 다반사구나.

http://stackoverflow.com/questions/9006455/how-to-install-a-sony-tablet-s-as-an-adb-device

 

내용을 읽어 보면 아래 소니페이지에서 가이드 하는 대로 하면 된다고 한다.

http://esupport.sony.com/US/perl/support-info.pl?info_id=878

 

.. 이거봐라..

내용을 보니 google usb driver를 사용하고 있는데 windows에서 자동으로 검색이 안되니 sdk에서 android_winusb.inf 파일을 직접 수정하라고 한다. 참 우울하네~

Android SDK를 받은 상태라면 “android_winusb.inf” 파일은 아래 위치에 있다. 

SDK -> extras -> google -> usb_driver

Google usb driver만 받을 수도 있다. (http://developer.android.com/sdk/win-usb.html )


 

아래의 2줄을 자신의 환경에 맞게 추가해주면 된다.

 

;SONY Sony Tablet P

%CompositeAdbInterface% = USB_Install, USB\VID_054C&PID_04D2&MI_01

 

;SONY Sony Tablet S

%CompositeAdbInterface% = USB_Install, USB\VID_054C&PID_05B4&MI_01

 

자신의 컴퓨터가 intel 기반이면 [Google.NTx86] 영역에 추가하면 되고, AMD 기반이면 [Google.NTamd64] 에 추가해주면 된다. 잘 모르겠으면 2군데 다 추가해주면 된다. 

추가해주고 드라이버를 업데이트 하는데 자동 검색이 안된다. ㅠㅠ  

 

아래처럼 수동으로 직접 선택해주면 된다.

장치관리자 -> 미설치 장치 -> 마우스 오른쪽 클릭 ->  드라이버 소프트웨어 업데이트 에서 자동검색말고 아래있는 수동으로 찾기를 선택하다.  그다음 "컴퓨터장치 드라이버 목록에서 직접 선택" 을 누르면 된다. 



 

위와 같은 화면이 안나오면 "디스크 있음"을 선택한 후에 직접 “android_winusb.inf” 파일을 선택해 주면 된다.

 



:

[주식] 주식 명의개서 정지 란?

정치&경제 2013. 12. 17. 01:08

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

연말이 되면 "주식 명의개서 정지" 라는 내용의 공시가 종목별로 많이 올라온다. 대략적인 느낌은 알겠는데, 정확하게 알아보도록 하자. 

일단 사전적인 의미를 찾아보면 아래와 같다. 

기명주식(記名株式)이 양도·상속·합병 등으로 인하여 구소유자로부터 신소유자로 이전된 경우에 신소유자의 성명과 주소를 회사의 주주명부에 기재하는 것을 명의개서(名義改書)라 한다. 기명주식의 양도는 주권(株券)의 배서와 주권과 양도증서의 교부에 의하여 효력이 생기지만, 양수인이 회사에 대하여 자기가 주주임을 주장하기 위하여는 명의개서의 절차를 밟아야 한다.

 


우리가 보통 거래소(또는 코스닥)시장에서 거래 매수하면 내가 구매한 주식은 어디 있는 걸까?  예들들어서 장마감 1시간 전인 오후 2시에 삼성전자 주식 1주를 구매했다고 해보자. HTS 또는 모바일을 통해서 주식을 사기위해 주식대금을 130만원을 납입하였다. 그러면 내가 산 주식 1개는 어디있는걸까? 키움증권으로 거래했으면 키움증권에서 보관하고 있는 걸까? 아니다. 거래한 주식은 "증권예탁원" 이라는 곳에서 보관하고 있게 된다. 그럼 좀전에 구입한 삼성전자 주식 1개는 장마감이 되는 3시이후에 (실제로는 시간외 거래인 5시) 그날의 거래내역에 따라서 변동된 주식의 주인이 누구라고 명의개서를 하게 되는 것이다.  

즉, 주식은 매일 거래소를 통해서 거래되고, 보관은 "증권예탁원"에서 보관하고 있는 것이다. 그리고 증권예탁원은 매일매일 변경된 주식이 누구것인지 명의를 개서(이 주식은 누구꺼라고 표시하는것)를 하는 것이다. 


명의개서 정지는 왜하게 되나? 

주주총회를 한다고 가정해 보면, 매일매일 주식이 거래되고 있어서 매일 소유자가 변경되어서 주식의 가장 큰 권리인 주권을 행사할때 누구에게 주권해사 권한을 줘야할지 어려워 진다. 그래서 주식의 특정한 권리를 행사하기 전에 명의개서정지기간을 두는 것이다. 주주총회전에 자주 있는 일이므로, 주주총회에서 무슨 중요한 안건이 나오는지 살펴보는 것이 좋다. 


주식거래정지와는?

명의 개서는 주권을 행사할수 있는 권한의 변경을 금지하는 것이기 때문에 거래와는 아무런 상관이 없다. 예를 들어서 1월1~1월31일까지 명의개서 정지를 한다고 할때 12월 30일에 주식을 산뒤에 1월 5일에 주식을 팔았다고 가정하면 1월1일 이전에 이미 명의개서를 통해서 주주로 등록이 된 상태이고 1월5일에 주식을 팔았어도 명의개서 정지기간이므로 주주총회에서는 주주권(1주당 1투표권리)을 갖게 된다. 


배당기일과 배당금 

배당기일은 해달 날짜에 주식명부에 올라있으면 배당을 받게되는 날짜를 말한다. 만약 배당기일이 12월 31이라고 하면, 12월 31일 전에 주식을 구입하여서 주주명부에 기록이 되면 1월 2일에 주식을 팔았다고 하더라도 당해년도의 배당을 받을수 있게 된다. 그래서 배당기일 이후에 주가가 조금씩 빠지는 경향이 있다. 





:

2014 연말정산 팁(Tip)

정치&경제 2013. 12. 14. 08:08

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.


사실 연말정산의 팁이라는건 딱히 없다. 왜냐하면 매년 국세청에서 발행하는 연말정산 가이드를 꼼꼼히 읽어 보면 되는데 그 분량이 책한권 수준이다. 또한 어려운 용어가 범람하여 읽기가 어려운 측면이 있기에 간단하고 이해하기 쉽도록 풀어 쓰것들 일 뿐이다.  그럼 시작해 볼까~ 참고로 2013년 귀속 연말정산 달라지는점도 한번 읽어 보시길~ 

2013/11/11 - [정치/경제] - 2014 연말정산 달라지는 점 - 1탄


1. 카드 현금공제에서 25% 를 넘야야.. 

연말정산에서 90% 이상의 사람들에게 해당하는 것이 신용카드 및 현금사용 항목인데, 의외로 세세한 부분을 모르고 있다. 일단 신용카드/체크카드/현금영수증의 1년간 사용 금액이 25%를 넘어야 공제가 가능하다. 예를 들어서 연봉이 5천만원인 사람이 카드로 1,000만원을 사용하고 현금을 200만원 사용하였다면 공제 받는 금액은 0원이다. 총사용금액이 1,200만원으로 25%인 1,250만원 미만이기 때문이다. 소득공제를 받기 위해서 과소비를 할 필요는 없지만 사용금액이 많은 사람은 사용할때 신용카드와 현금(체크카드)의 공제율 차이를 알고서 사용하는 것도 팁이 된다. 현금의 공제율이 더 높기때문에 1,250만원까지는 카드 사용을 위주로 하고, 1,250만원이 넘었으면 현금또는 체크카드를 사용하는게 좋다. 


2. 맞벌이 부부라면.. 

맞벌이 부부인 경우에는 항목에 따라서 더 유리한 경우가 있다. 기본적인 원칙은 고소득자가 더 많이 내기 때문에 환급액도 더 많다는 것이다. 이 원칙에 따라서 기본 인적공제, 자녀양육비 추가공제등은 고소득자가 선택하는 것이 좋다. 반면에 총소득에 최저 사용금액을 초과하는 항목은 저소득자가 선택하는게 유리할수 있다. 예를들면, 의료비(총소득의 3%이상)와 신용카드(총소득의 25%이상) 항목은 저소득자가 선택하는게 유리할수 있다. 

참고로 아래는 과표구간에 따른 소득세율이다. 

1200만원 이하는 6%

1200만~4600만원 15%

4600만~8800만원 24%

8800만~3억원 35%

3억원 초과 38%


3. 절세 상품을 적극 활용.. 

종합청약저축에 가입하면 연간 120만원이 불입가능하며 불입액의 40%를 공제 받을수 있으므로 최대 48만원까지 공제가 가능하다. 

연금상품(연금저축,연금펀드, 연금보험)은 연간 400만원한도로 공제가 가능하다. 12월전까지 가입해서 일시불로 400만원을 납입하여도 공제가 가능하다. 





:

2014 연말정산 달라지는 점 - 1탄

정치&경제 2013. 11. 11. 23:07

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

올해도 연말 정산 기간이 다가 왔습니다. 보통은 2014년 연말 정산이라고 말하지만 정확하게는 2013년 귀속 연말정산입니다. 세법에서는 2013년도에 발생한 세금에 대해서 연말정산을 하기때문에 2013년 귀속이라는 용어를 쓰는것 같습니다. 


매년 연말정산 세법이 조금씩 바뀌는데 올해는 크게 무엇이 달라 졌는지 달라진점 위주로 알아 보겠습니다. 


1. 대중교통비(신용카드)에 대한 소득공제 확대 

지하철이다 버스등 대중교통을 이용시 신용카드를 사용했으면 이용 금액의 30%를 소득공제 받을 수 있습니다. 한도는 100만원 이내입니다.  ( 단, 택시 요금은 제외 : 택시는 아직 국민 정서상 대중교통으로 인정 안하는 분위기 인가 봅니다. ) 


2. 신용카드 공제율 하향 & 현금영수증 공제율 상향 

신용카드는 20% -> 15% 으로 낮아짐. 

현금영수증은 20% -> 30% 으로 높아짐. 

연봉이 5,000 만원인 사람의 경우 소득의 25%인 1,250 만원까지는 신용카드를 사용하고, 초과 금액은 체크카드와 현금을 사용하는 것이 유리 하다고 합니다. 


3. 교육비 공제대상 확대 

기존 공제 대상에서 제외되었던, 급식비, 특별활동비, 교재비 등이 추가되었습니다. 

어린이집은 부가비용이 그렇게 크지 않은데, 유치원의 경우에는 특별활동비등이 솔찬게 들어 갔었는데 참 다행입니다. 

( 교제비는 2013.06.28일 이후 지출분에 한해서 된다고 하네요 ) 


4. 주택 월세액 소득공제 확대 

월세 공제율이 40% -> 50% 으로 확대 되었음. 

그러나 월세 공제 받는 사람들이 얼마나 될까? 현실적으로 별로 시덮지 않은 확대 정책 같아 보입니다. 


5. 한부모 공제 신설 

배우자가 없는 사람이 자녀(20세 미만)가 있는 경우 100 만원의 추가 공제를 해줌. 

이혼을 했거나, 배우자가 사망했거나 등등 어째든 혼자서 자녀를 키우는게 힘드니까 추가로 공제해주는 것입니다. 


여기 나열된 5가지는  2번의 신용카드 공제율이 줄어던것 빼고는 대부분 공제 대상이 확대 된 것입니다. 이중에서 사람에 따라서 다르겠지만 해택 받을 만한것은 1번 대중교통과 3번 교육비 확대정도가 되겠네요.  정부는 세수가 부족한데 이렇게 공제를 왜 늘려 주는 걸까요?  아마도 지난 8월8일 개정된 세법에 따라서 많은 부분이 소득공제에서 세액공제로 변경되느까 다른 부분을 조금 늘려주려는게 아닌가 하네요 ㅠㅠ 망할~. 

참고로 변경된 세법은 2014년 (귀속)에 적용되니까 실제로는 2015년 1월쯤 실시하는 연말정산에서 뼈져리게 느끼겠네요 ㅠㅠ 

 

추가로 아래 국세청 페이지에 가면 간단하게 소득공제를  자동 계산해 볼 수 있습니다. 

http://www.nts.go.kr/cal/cal_05.asp



:

[android] loadLibrary 와 CPU 특성

android 2013. 10. 31. 14:20

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

Android에서 native 라이브러리를 만들 때 보통은 armeabi / armeabi-v7a 용으로 컴파일 해서 프로젝트의 libs 폴더 밑에 넣어준다. 이는 대부분의 안드로이드 장치가 ARM 기반의 CPU로 만들어 졌기 때문이다. 사실 Android 에서 지원하는 cpu ARM 뿐만 아니라 Interlx86 도 지원하고 MIPS 또한 공식적으로 지원한다. 다만 시장에 아직 제품이 많지 않을 뿐이다.

 

참고 : CPU Architecuture 별 지원 Platforms

Native Code CPU Architecture Used

Compatible Android Platform(s)

ARM, ARM-NEON

Android 1.5 (API Level 3) and higher

x86

Android 2.3 (API Level 9) and higher

MIPS

Android 2.3 (API Level 9) and higher

 

이번에 Intel에서 Xolo-X900 이라는 Intelx86 기반의 안드로이드 폰을 출시했다. 이번이라고 한건 내가 지금 알았기 때문이고, 찾아보니 실체 출시된 날짜는 2012 4월 쯤이었다. ~ 완전 모르고 있었네 ㅎㅎ

 

So 파일을 로딩하기 위해서 보통은 System.loadLibrary() 함수를 호출한다. 그러면 해당 함수가 알아서 CPU를 확인해서 알맞은 so 모듈을 로딩해주는 것으로 알고 있었다. 우연히 xolo 디바이스를 구할 수 있어서 armeabi/armeabi-v7a so 모듈만 있는 프로그램을 실행시켰는데, armeabi-v7aso 가 로딩 되는 것이다. 우와그러나 실행하다가 죽는다. ㅠㅠ  

 

그래서 loadLibrary를 연구해 보기 시작했다. 가장 먼저 developer의 문서를 찾아보면 아래와 같다.

Loads and links the library with the specified name. The mapping of the specified library name to the full path for loading the library is implementation-dependent.

loadLibrary(“foo”) 이렇게 호출하면 이름(foo)과 일치하면서, device의 CPU타입에 따라서 적절한 모듈을 로딩해 준다. 즉 해당 device armeabi-v7a 를 지원하면 lib/armeabi-v7a 경로에 있는 foo.so를 로딩한고 device x86을 지원하면 lib/x86 경로이 있는 foo.so를 로딩하는 것이다. 그리고 full path를 사용하면 해당 so를 직접 로딩한다는 말이다.

 

그럼, loadlibrary(foo)를 호출 했을 때 IntelXolo 단말기는 왜 lib/armeabi-v7a 경로에 있는 모듈을 로딩한걸까? ( lib/x86 폴더는 존재하지 않는 상태임 )

 

궁금증을 해결하기 위해서 일단 Java 레벨에서(NDK가 아닌) CPU 정보를 얻는 방법부터 찾아 보았다. 간단하게 Build 클래스에 정보가 있었다.

Build.CPU_ABI 를 이용하면 되는데, 보다보니 Build.CPU_ABI2가 존재 한다. ~~ 느낌이 온다~

(참고로 ABI는 Application Binary Interface의 약자다. ) 

 

System.loadLibrary  디바이스의 Build.CPU_ABI / Build.CPU_ABI2 의 순서로 so 모듈을 찾는 것이다. Android loadLibrary 내부에서 mapLibraryName을 호출하는 부분이 아마도 이 동작을 하는 것으로 추측된다.

 

해결 하려면 so 파일을 x86용으로 개발해서 빌드한후 추가하면 된다. 또는 모든 기능이 x86을 지원하는 것이 아니라면 아래처럼 Java 코드로 간단하게 막을수 있다.

public static void loadLibrary() {

      if (isLoaded) {

            return;

      }

 

      if (isLoaded == false) {

      if (Build.CPU_ABI.equals(“x86”)) {

            isLoaded = false;

            return;

      }

 

      try {

            System.loadLibrary("foo");

            isLoaded = true;

 

      } catch (Throwable e) {

            isLoaded = false;

}

}

추가로 발견한 내용으로는 프로젝트의 lib/x86 폴더에 해당 모듈이 하나라도 있으면 google play 마켓에서 x86용 디바이스에 노출이 된다는 점이다.

따라서 프로젝트가 x86을 부분적으로 지원 할 수는 없고 모든 so 모듈들을 x86으로 지원하는 것이 좋다.

 

 



:

[일본] 도쿄 시부야 미키하우스 ( 세이부 백화점 )

여행&맛집 2013. 10. 25. 01:11

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

우리나라 백화점에도 미키하우스가 입점해 있는데, 귀여운 토끼그림이 주 캐릭터 이다. 커다란 토끼를 3~5살 여자 아이가 특히나 좋아한다.  미키하우스( 미키마우스아니다 ) 는 일본브랜드 라서 일본에석 직접 구매를 하면 우리나라보다 30%~60% 정도 저렴하게 구입할 수 있다. 

참고로 작년에 어린이 귀마개를 약 4만원주고 사면서 비싼건가 했는데, 한국에서는 10만원에 팔고 있더라. 헐~ 


악세사리 및 소품류 (귀마게, 목도리, 장갑등등 ) : 무지하게 싸다. 

신발 :  한국에 비해서 40%~50% 정도 저렴하다. 

티셔츠및 바지류 : 30% 정도 저렴하다. 그러나 신상을 살 수 있다. 

시부야에서 쉽게 미키하우스를 찾아가는 방법을 설명한다. 

일단 시부야에서 커다란 백화점인 세이부 백화점을 찾는다. 그리고 인포메이션에 가서 미키하우스 매장을 알려달라고 하면 7층을 안내해준다. 인포에서 알려준 엘리베이터를 타고 7층에서 내리면 앞으로 조그만 가면 바로 미키하우스가 있다. 우리나라 백화점보다 가격도 훨씬 저렴하고 대부분 신상품 위주로 팔기 때문에 몇개 사오면 좋을 것 같다. 


직원분도 참 친절해서 사진찍는 것도 허락해 주셨다. 


미키하우스의 대표캐릭터가 들어간 신발. 애들이 편하게 신고 벗게 되어 있어서 좋아한다. 


일명 찍찍이가 있는 운동화 스타일. 찍찍이에 큐빅이 있어서 여자 애들이 좋아한다. 



신발 모음 사진. 2~3살때 신던 많이 보던 신발들도 보인다. 이거 말고도 더 어린 아기가 신는 신발도 있는데 그 사진을 패스~



2013년 가을에 새로나온 신상. 역시 토끼가 눈에 띤다. 사와서 딸래미에게 입혀보니 잘 어울니다. 역시 신상으로 사길 잘했어~ ㅎ 





추가로 1만엔 이상구입하면 Tex refund를 받을 수 있다. 일본은 부가가치세가 5% 라서 구매금액의 5%를 돌려받게 된다. 백화점의 꼭대기 층에서 가면 Tex refund 해주는 곳이 있다. 



:

[일본] 도쿄 여행기 ( 시부야, 록본기, 모리타워 )

여행&맛집 2013. 10. 24. 00:47

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

작년 첫 방문이후 2번째 방문한 도쿄. 

첫 일본에 갈때보다 좀 익숙해 졌지만 아직 혼자서 찾아 다닐수 있을까 하는 생각이 들지만 막상 필요하거나 부딛치게 되면 할 수 있을것도 같다. 


[첫째날]

아침 8시40분 김포발 비행기라서 이른아침에 일어나서 공항으로 향했다. 다행이 공항버스가 집 근처에 있어서 편하게 갈 수 있었다. 아시아나에서 주는 기내식으로 아침을 간단히 때우고 하네다공항에 도착하니 일본에 도착한 것을 느끼게 해주는 비행기.


하네다 공항에서 출입구로 나가는 길에 드래곤볼 벽화가 눈에 뜨길래 한컷. 어릴때 참 재밌게 보던 거라서 추억이 돋는구나~ 

짐을 찾고 이것저것 하다보니 금세 시간이 점심시간이다. 목적지인 시부야에 도착해서 간단하게 점심을 먹었다. 

점심은 메뉴는 평범한 일본튀김 백반 같은거.  맛은 한국인 입맛에도 무난하게 어울리면서 맛있다. 




[둘째날]

업무를 보고 저녁에 호텔에 들어가기 좀 아쉬운듯 하여 시부야의 스포츠및 오락시설이 있는 건물에 들렸다. 1층은 전자오락및 기타 오락기게들이 있었고, 2층은 탁구장 3층은 당구장 4층은 볼링장으로 되어 있었다. 오랜만에 볼링장으로 들어 갔는데, 들어가면서 내부 조명에 놀랬다. 쓰고이~ 

여기서 볼링을 치면 아래처럼 몇번핀을 쓰러트렸는지 체크가된 결과를 프린트 해준다. 역시 아직은 일본이 우리나라보다 좀더 앞선부분이 많다고 해야되나. 서비스적인 부분과 섬세한 부분은 아직도 일본에서 배울점이 많은것 같다. 

2게임을 쳤는데 90점 / 106점 나왔다. 쩝~ 오랜만이라서 그런지 점수가 안나오네요. ㅎㅎ 

볼링비는 한국보다 비싼편이다. 아무래도 일본 시부야의 번화가에 있는 볼링장이라서 (우리나라 강남의 당구장이 비싸듯이) 좀 더 비싼것 같았다. 


[세째날]

록본기를 방문했다. 시부야에서 록본기까지 JR (일본 전철 : 우리나라 2호선 같은)로 가는 것 보다 버스로 가는게 편해서 버스를 이용하였다. 일본에 계신 분이 가이드 해주셔서 덕분에 편하게 볼 수 있었다. 


록본기에있는 모리타워(Mori Tower)의 전망대를 구경하였는데, 모리타워에 글로벌 기업 야후가 있다고 한다. 모리타워 엄청 좋아 보이더라~ 



모리타워 52층에 "스카이 갤러리" 라는 360를 볼 수 있는 전망대가 있다. 여기 올라가면 도쿄 시내를 다 볼 수 있는데 밤에 올락니 도쿄의 야경을 멋지게 볼 수 있었다.  

동쪽으로는 오다이바, 시오도메, 치바등이 보이고 

남쪽으로는 시나가와, 하네다, 요코하마를 볼 수 있다. 

서쪽으로는 시부야, 신주쿠를 볼 수 있고, 

북쪽으로는 이케부쿠로, 우에노 방면이라고 한다. 근데, 밤이라서 이방향이 어디 방향인지 잘 모르겠더라~ ㅋㅋ 

모리터워의 옥상에는 "스카이 데크"라고 오픈 야외 전망대가 있는데 바람을 맞으며 도교를 감상할 수 있는 곳이다. 바람이 세게 불면 입장 제한을 하기도 한다고 한다. "스카이 캘러리"와 "스카이 데크" 모두 입장료를 받는데 한국돈으로 15,000원 정도 하는것 같다. 





[숙소정보] 

시부야의 호텔이 2개가 있는데, 하나는 도쿄엑셀이고 하나는 셀루리안인데 저번에는 도쿄엑셀에 묶었는데 이번에는 셀루리안에서 묶었다. 2개 호텔의 가격은 큰 차이는 없는데 셀루리안이 조금더 비싸다.  시설은 셀루리안이 좀더 좋았던거 같다. 호텔의 위치는 도쿄엑실이 시부야의 메인 5거리에서 1분거리도 안되는 중심가이고 셀루리안은 한 5분은 더 걸어가야 한다. 비교하면 아래처럼 정리 된다. 

가격 : 셀루리안이 약 25만원, 도쿄엑셀이 약 20만원으로 도쿄엑셀 승 

위치 : 도쿄엑셀 승 

시설 : 셀루리안 승 

선택은 각자의 판단에 따라서.. 





:

[책] 읽기 좋은 코드가 좋은 코드다

영화&책 2013. 10. 22. 22:29

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.


저자 : 더스틴 보즈웰 ( 칼텍 컴공, UC 샌디애고에서 석사 ) ,  트레버 파우커 ( MS, Google출신)

역자 : 임백준 

가격 : 18,000 원  ( 약 250 페이지 ) 


오랜만에 개발 관련된 책을 본것 같다. 책 제목은 "읽기 좋은 코드가 좋은 코드다". 영어 원제목은 "The Art of Readable Code". 코드를 읽기 좋게 작성하는 방법에 대해서 설명하는 얇고 쉽운 책이다. 어떻게 보면 뻔한 이야기 일 수 도 있는 내용이기도 한데, 적절한 예시와 비유로 설명을 잘 했다는 느낌을 받았다. 

책시작은  "무엇이 코드를 더 좋게 만드는가?" 라는 물음으로 시작한다. 대답하기 상당히 어려울수 있는 추상적인 질문이다. 그러나 저자는 간단하게 답한다. 바로 "코드는 이해하기 쉬워야 한다" 라는 함축적인 문장으로..  


아래의 코드를 잠시 보자 

[1번] 

return exponent >=0 ? mantissa * ( 1 << exponent) : mantissa / ( 1 << -exponent); 

[2번] 

if( return exponent >=0 )

return  mantissa * ( 1 << exponent) 

else 

return mantissa / ( 1 << -exponent); 


동일한 내용을 하는 코드인데, 1번은 코드가 간결하지고,  2번은 늘려서 썼지만 가독성이 좋다.  어떤 방식이 더 좋은 방식일까? 개발자의 성향에 따라서 달라질수 있는 문제이지만 보편적으로 읽기 좋은 코드 또는 가독성이 있는 코드라는 측면으로 봤을 때는 2번 방식에 손을 들어주고 싶다. 


그리고 이어지는 내용들은 이해하기 쉽운 코드를 작성하기 위한 나름데로의 요령들을 설명하고 있다. 


1부_표면적인 수준에서의 개선 

  -> 이름짓기, 주석, 줄맞춰 쓰기등으로,  코드 논리와 상관 없이 간단하게 변경할수 있는것들  


2부_루프와 논리를 단순화하기 

 -> 프로그램에 사용되는 루프, 논리, 변수를 개선하는 방법 


3부_코드를 재작성하기

-> 리팩토링에 나오는 내용인데, readable 관점에 맞추어서 설명하고 있음. 


4부_선택된 주제들 

-> '이해하기 쉬운' 이라는 원리를 테스트와 코드예제로 설명 


1~4부의 내용중에서 2부~3부는 리팩토링과 관련되어서 많이 (또는 얼핏) 들었봤던 내용들이 었다면 1부는 설명 예시가 딱 맞아서 그런지 공감이 많이 되었다.  

그런데 프로그램이 모두 영어로 되어 있어서 영어로 이름을 잘 짓기 위해서는 영어를 잘 해야만 하는 것은 아니다. 코딩할때 사용하는 변수의 영단어는 중/고등학교 수준이면 충분하다. 다만 통상적으로 사용되는 이름짓기 규칙을 따르면 도움이 된다. 


책의 부록으로 좋은 코드를 작성하기 위해서 추가적으로 읽어볼만한 도서 목록이 나오는데 그중에서 않읽어본 책들을 읽어봐야 할 것 같다. 






: