본문 바로가기

전체 글683

맥에서 기계식(윈도우용) 키보드 사용하기 맥북프로를 사용한 지 반년이 되어 간다. 맥에 익숙한 터라 잘 사용하고 있었는데 요즘 들어 command나 option의 사용이 불편하다. 특히 한영전환, 복사, 붙여넣기를 할 때 실수가 잦다. 평소 기계식 키보드에 대한 로망이 있어 프로젠 기계식 키보드를 사들였는데 이게 윈도우용 키보드다. 내 불편은 윈도우용을 보조 키보드로 사용하면서 시작됐다. 왜? 맥을 위한 기계식 키보드가 없는지… 맥용 기계식 키보드를 본 기억이 없다. 윈도우용 키보드를 맥에서 사용하려면 option 키 대신 Alt 키와, command 키 대신 Windows 로고 키를 사용하면 된다. 간단하다. 누구나 알고 있다. 하지만, 맥북 키보드와 보조 키보드를 혼용하는 경우 command와 Windows 로고 키의 위치가 달라 맥용과 윈.. 2016. 9. 12.
임보 중인 고양이 ‘솔(Sol)' 고양이 임보를 시작한지 두달이 되어 간다. ‘아메리칸 코카스페니엘’과는 함께 살아봤는데, 고양이는 어떤지 잘 몰라 하나 하나 알아 가는 중. 그 중 첫 번째가 고양이는 불러도 오지 않는다는 것! 임보하고 있는 고양이 이름이 ‘소리’인데 “소리야" “소리야" “소리!" “쏠" 하다가 “쏘리"로 끝난다. 고양이는 자기가 관심이 있는 경우에만 쳐다본.. 아니 지켜본다는 것이 맞는 표현인 듯. 밥에 연어나 조개 살 비벼줄때~ “미양~ 미양~”거리며 엄청 친한 척한다. 나쁜 xx시키 아참 소리는 수컷이다. 그리고 남자를 더 좋아한다. 밥 주는 사람보다 남자라니~ 이렇게 생겼다. 고양이 처음 키우면서 좋았던 점은 화장실 모레에서 대소변 보는 것 각자 생활을 한다는 것 우리는 서로 놀고 싶을때만 함께 논다. 그 외에.. 2016. 9. 6.
추상클래스를 사용하는 이유 /* 추상클래스는 상속을 강제하기 위한 것이다. * * - 용도 - * 다양한 맥락으로 사용할 필요가 있을때 추상클래스로 만들어 * 추상클래스에서는 공통적인 로직을 구현하고 * 상속받는 사용하는 용도에 따라 달리지는 부분을 구현하기 위한 용도로 사용 * */ package com.actionshin.javastudy; abstract class Calculator { int left, right; public void setOperands(int left, int right) { this.left = left; this.right = right; } int _sum() { return this.left + this.right; } int _avg() { return (this.left+this.right.. 2014. 12. 23.
실행중인 액티비티의 상태를 확인하기 실행결과 아래와 같이 액티비티의 상태를 확인할 수 있다. TASK kr.co.actionshin.thisan12 id=6 ACTIVITY kr.co.actionshin.thisan12/.ActivityA3 53663518 pid=957 Local Activity 534e5630 State: mResumed=true mStopped=false mFinished=false mLoadersStarted=true mChangingConfigurations=false mCurrentConfig={1.0 0mcc0mnc en_US sw768dp w768dp h1232dp xlrg port finger qwerty/v/v dpad/v s.4} FragmentManager misc state: mCurState=5 m.. 2014. 12. 23.
두 액티비티 간 생명주기 2014. 12. 23.
클래스 변수의 용도 인스턴스에 따라서 변하지 않는 값이 필요한 경우 (위의 예에서는 PI) (이런 경우 final을 이용해서 상수로 선언하는 것이 바람직 하지만 final을 아직 배우지 않았기 때문에 언급하지 않았다)인스턴스를 생성할 필요가 없는 값을 클래스에 저장하고 싶은 경우값의 변경 사항을 모든 인스턴스가 공유해야 하는 경우 2014. 12. 18.
프로세스 간의 데이터 전달 데이터를 효율적으로 전달하기 위해 데이터 직렬화를 사용한다. 서로 다른 앱은 서로 다른 프로세스다.서로 다른 프로세스에 데이터를 전달하기 위해서는 커널 공유 메모리를 사용한다.커널 메모리를 사용하기 위해서는 안드로이드는 바인더라는 것을 이용한다.매우 빈번히 바인더를 사용하게 되면 그만큼 성능은 떨어지게 된다. 그래서 데이터를 효율적으로 전달하기 위해서 데이터 직렬화가 필요하다. 안드로이드에서 사용하는 직렬화 클래스PrimitiveSerializable 2014. 12. 18.
CustomViewGroup과 CustomView 클래스를 상속받아 구현하기 CustomViewGroup 클래스는 FrameLayout을 상속받아 구현 public class CustomViewGroup extends FrameLayout { public CustomViewGroup(Context context){ super(context); } } CustomView 클래스는 View를 상속받아 구현 public class CustomView extends View { public CustomView(Context context){ super(context); } } 2014. 12. 18.
터치 이벤트를 구현하는 3가지 방법 터치 이벤트의 처리 방법은 onTouchEvent의 재정의 구현과 터치 리스너 등록 두 가지가 있다. 여기서는 터리 리스너를 이용하는 3가지 방법에 대해 정리. 내부 클래스 구현액티비티가 View.OnTouchListener를 상속받아 구현하는 방법익명의 내부 클래스 구현 2014. 12. 16.