버그 같은게 아니고 저 옵션의 기본 값이 제공으로 바뀐듯...

번역 옵션 제공을 비활성화하면 안 뜸.



Chrome에서 웹페이지 번역

모르는 언어로 작성된 페이지를 방문할 때 다음 단계에 따라 Chrome이 페이지를 번역하도록 할 수 있습니다.

  1. 컴퓨터에서 Chrome을 엽니다.
  2. 다른 언어로 작성된 웹페이지로 이동합니다.
  3. 상단의 번역을 클릭합니다.
  4. Chrome이 웹페이지를 이번 한 번만 번역합니다.

작동하지 않나요? 웹페이지를 새로고침해 보세요. 그래도 작동하지 않을 경우 마우스 오른쪽 버튼으로 페이지의 아무 곳이나 클릭한 다음 [언어](으)로 번역을 클릭합니다.

번역 사용 또는 사용 중지

Chrome은 기본적으로 모르는 언어로 작성된 페이지를 번역하도록 제안합니다.

Chrome의 웹페이지 번역 제안 여부를 관리할 수 있습니다.

  1. 컴퓨터에서 Chrome을 엽니다.
  2. 오른쪽 상단에서 더보기 더보기 다음 설정을 클릭합니다.
  3. 하단에서 고급을 클릭합니다.
  4. '언어'에서 언어를 클릭합니다.
  5. '이 언어로 된 페이지에 대한 번역 옵션 제공'을 선택 또는 선택 해제합니다.




출처: Chrome 언어 변경 및 웹페이지 번역 - 컴퓨터 - Google Chrome 고객센터 || https://support.google.com/chrome/answer/173424?co=GENIE.Platform%3DDesktop&hl=ko




1. 접근성 > 키보드 > 고정키 토글 여부 확인. 켬이면 꺼줌.
2. 꺼져 있다면 화상 키보드 실행하여 눌려 있는 것으로 인식하는지 확인
3. 눌려 있다면 TouchEn key 등 키보드 보안 프로그램 제거
4. 제거 해도 안되면 노트북? 제조사 쪽 드라이버 재설치
5. 그래도 안 되면 키보드 물리적 고장


참고자료

HP EliteBook 8460p 노트북 PC - Ctrl 키가 계속 눌려 있는 것처럼 노트북이 동작함 | HP® 고객 지원 | https://support.hp.com/kr-ko/document/c03150784
bbs > FAQ > Ctrl (컨트롤키 눌려지는 현상) 원인과 해결 방법 | http://cherryko.co.kr/bbs/bbs/board.php?bo_table=faq&wr_id=11


https://yangbuk.blogspot.kr/2018/01/windows-ctrl.html

[.Windows] 윈도우 단축키와 실행창 명령어 모음

2010/04/19 07:37
Apr192010

MaruKimm Online/OS, Software windows View Comments


안녕하세요. 마루군입니다.

오늘 끄적일 내용은.
각종 윈도우 단축키 & 실행창 명령어 모음입니다.

이리저리 키보드 가지고 끄적이다 보면.
마우스를 이용하기 위해 손을 움직이는게. 엄청나게 귀찮아지는데요.

조금이나마 마우스를 덜 쓰기 위해.
쓸 수 있는 명령어 들입니다.

Windows Vista / 7 에서는 '시작' 메뉴에.
설정을 검색해서 사용할 수도 있지만.
그래도 명령어를 친다면 신속하게 쓸 수 있겠네요.
물론 Windows XP에서도 잘 쓸 수 있습니다.

하지만, OS에 해당 메뉴 자체가 없다면 실행이 안되겠죠. ^^;;

참고하시길 바랍니다.


  

1. 윈도우 단축키 모음

   



윈도우 단축키

단축키 기능

기타



윈도우 키 + E

윈도우 탐색기 실행

'내 컴퓨터' 와 동일



윈도우 키 + F

윈도우 검색창 실행

'시작 - 검색' 과 동일



윈도우 키 + R

윈도우 실행창 실행

'시작 - 실행' 과 동일



윈도우 키 + D

모든 창 최소화

다시 단축키 누르면 창이 원래대로 돌아옴



윈도우 키 + M

모든 창을 최소화

다시 단축키를 눌러도 창이 최대화되지 않음



윈도우 키 + Shift + M

최소화한 창을 최대화

'윈도우 키 + M' 단축키의 반대 동작



윈도우 키 + L

컴퓨터 잠금

잠금 해제시 사용지 비밀번호 필요



윈도우 키 + Pause/Break

시스템 등록정보 창을 띄움

'시작 - 제어판 - 시스템' 과 동일





   

   

2. 실행창 명령어 모음

   



2.1. 실행창 명령어 사용 방법



'시작-실행' (단축키 : 윈도우즈키 + R )을 하셔서 입력하면 됩니다.

  





   

   



2.2. 실행창 명령어 목록



 

2.2.1. 기본 명령어

   

notepad : 메모장

regedit : 레지스트리 편집기

calc : 계산기

mspaint : 그림판

clipbrd : 클립북 뷰어

cmd : 도스창

dxdiag : 다이렉트X 진단도구

iexplore : 익스플로러

mstsc : 원격 데스크탑

osk : 화상 키보드

winword : MS Office 워드

powerpnt : MS Office 파워포인트

excel : MS Office 엑셀

outlook : MS Office 아웃룩

wordpad : 워드패드

winmine : 지뢰찾기

sndvol : 볼륨조절

rstrui : 시스템 복원

msconfig : 시작프로그램 제어 등 시스템 상태 기초 환경설정

sysedit : 시스템구성편집기 (autoexec.bat , config.sys ,win.ini, system.ini)



 

2.2.2. 제어판 명령어

   

control : 제어판

Access.cpl : 내게 필요한 옵션

appwiz.cpl : 프로그램 추가/제거

bthprops.cpl : 블루투스장치설정

desk.cpl : 디스플레이 등록정보

firewall.cpl : Windows방화벽

hdwwiz.cpl : 새하드웨어추가마법사

inetcpl.cpl : 인터넷등록정보

intl.cpl : 국가및언어옵션

irprops.cpl : 적외선포트 설정

joy.cpl : 게임컨트롤러

main.cpl : 마우스등록정보

mmsys.cpl : 사운드및 오디오장치등록정보

ncpa.cpl : 네트워크연결

netsetup.cpl : 네트워크설정마법사

nusrmgr.cpl : 사용자계정

nwc.cpl : 네트워크 게이트웨이

odbccp32.cpl : ODBC데이터원본 관리자

powercfg.cpl :  전원옵션 등록정보

sysdm.cpl : 시스템등록정보

telephon.cpl : 전화및모뎀 옵션  

timedate.cpl : 날짜 및 시간 등록정보

wscui.cpl : Windows보안센터

wuaucpl.cpl : 자동업데이트

Sapi.cpl : 텍스트 음성 변환설정

control admintools : 관리도구

control folders : 폴더옵션

control userpasswords : 사용자 계정



 

2.2.3. 관리콘솔 명령어

   

certmgr.msc : 인증서

ciadv.msc : 인덱싱서비스

ntmsmgr.msc : 이동식저장소

ntmsoprq.msc : 이동식저장소 운영자 요청

secpol.msc : 로컬보안정책

wmimgmt.msc : WMI(Windows Management Infrastructure)

compmgmt.msc : 컴퓨터 관리

devmgmt.msc : 장치관리자

diskmgmt.msc : 디스크 관리

dfrg.msc : 디스크 조각모음

eventvwr.msc : 이벤트 뷰어

fsmgmt.msc : 공유폴더

gpedit.msc : 로컬 컴퓨터 정책

lusrmgr.msc : 로컬 사용자 및 그룹

perfmon.msc : 성능모니터뷰

rsop.msc : 정책의 결과와 집합

secpol.msc : 로컬 보안설정

services.msc : 서비스

C:\WINDOWS\system32\Com\comexp.msc : 구성요소서비스

C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\mscorcfg.msc : .NET Configuration 1.1





   



2.3. Tip



단순 실행 파일이라면 C:\Windows\System32 폴더에 집어 넣으면,

시작 - 실행에 해당 파일 이름을 실행시키는 것으로 편하게 사용할 수 있습니다.

   

ex) Putty.exe 파일을 System32 폴더에 집어넣고. 이런식으로 사용 가능합니다.

  





   

   

   

이상입니다.





마루군

였지요

const TAXRATE = .925; 
 상수와 변수를 생성하는 데 있어 가장 큰 차이점은 var 대신 const 키워드를 사용하는 것이다. 상수명은 변수와 쉽게 구별하기 위해 통상적으로 모두 대문자를 사용한다.


출처:  자바스크립트에서의 상수 선언


        <activity

            android:name="액티비티 이름Activity"

            android:configChanges="keyboardHidden|orientation"

            android:label="@string/app_name" 

            android:screenOrientation="sensorLandscape">


센서를 감지하되 가로로 긴 상태는 유지됨.

Android: 안드로이드에서 db(sqlite) 쉽게 보기

[블로그 링크] http://onjo.tistory.com/2052

안드로이드에서 db(sqlite) 정보를 
쉽게 보는 방법을 정리해 보았습니다.
(초보자를 위한 팁 이라고 생각합니다.)
핵심만 정리하면 아래와 같습니다.
(1) db 내보내기 (db export / data.sqlite)
=> 이클립스 혹은 Droid Explorer 이용
(2) db 보기
=> firefox 확장 도구인 SQLite Manager를 이용하여
    (1) 에서 추출한 db(data.sqlite)를 열면 됩니다.
    * mysql에서 mysqlyog를 사용하는 것과 비슷한 개념
안드로이드에서 db(sqlite) 쉽게 보기
1. Run Eclipse (이클립스 실행)
2. Select Project (프로젝트 선택) 
   -> Run Android Emulator (안드로이드 에뮬레이터 실행)
3. Select "DDMS perspective" (DDMS 선택)
   -> File Explorer
   -> data - data - package name (패키지명)
      - databases - data 선택
4. select "pull a file from the device" (pull 선택)
   -> save the "data.sqlite" (db export / db 내보내기)
======================================================
5. View DB (DB 내용 보기)
  1) Firefox :: SQLite Manager
      => firefox browser, click the *.xpi (firefox에서 xpi 클릭하면 설치됨)
  2) click the "Connect Database" (DB 연결 버튼 클릭)
======================================================
※ Eclipse the not view "File Explorer"
(이클립스에서 File Explorer가 내용이 안보일 경우)
=> Droid Explorer 이용해 db export
- Droid Explorer : http://de.codeplex.com/
6. Conclusion (정리)
  1) db export (db 내보내기)
     - eclipse DDMS 혹은 Droid Explorer
  2) view db (db 보기)
    - firefox SQLite Manager


web font 

출처: SUPERJANG http://superjang.com/?p=904


그동안 웹에서 사용가능한 폰트는 사용자의 컴퓨터에 설치되어 있는 폰트에 한정되어 있었습니다.

font-family: 내가좋아하는 폰트명,  두번 째로 좋아하는 폰트명, …. ; 식으로 폰트를 지정해봤자

사용자에 컴퓨터에 없으면 아무 소용이 없었습니다.

그래서 많은 사람들이 이미지로 폰트를 대체했었습니다.

이로인해 접근성이라던지, 데스크탑 브라우저에서 확대했을경우 폰트가 일그러진다던지 모바일의 경우 다른요소들은

다 확대되는데 이미지파일만 원사이즈를 유지하여 의도하지 않은 레이아웃을 보여주는 문제가 생깁니다.

@font-face를 사용하면 기존의 ttf와 같은 폰트를 사용자의 폰트 설치 여부에 상관없이 웹에서도 사용할 수 있게됩니다.

 

@font-face{

font-family:helvetica;

src:url(‘txt/helvetica.ttf’) format(‘truetype’); //src:url(‘폰트경로’) format(‘파일 유형’);

}

h1{

font-family:helvetica;

}

이렇게 하시면 웹에서도 원하는 폰트를 사용하실 수 있습니다.

단 IE에서는 ttf, ote가 아닌 eot확장자 폰트만을 사용할 수 있습니다.

이를위해 아래와 같이 작성하시면 문제없이 이용할 수 있습니다.

 

@font-face{

font-family:helvetica;

src:url(‘txt/helvetica.eot’); //only IE를 위한 css추가

url(‘txt/helvetica.ttf’) format(‘truetype’), //src:url(‘폰트경로’) format(‘파일 유형’); ttf  크롬 파폭 사파리 

url(‘txt/helvetica.woff’) format(‘woff’)//woff 크롬 파폭 사파리

}

ie(9) ff(10.0) safari(5.12) chrome(16)테스트 해보니까 ttf,woff는 크롬,파폭,사파리 에서 eot는 ie에서만 인식을 합니다.

크기는 나눔고딕의경우 eot(608kb), woff(717kb), ttf(1.49mb) 순입니다.

h1{

font-family:helvetica;

}

아래 링크로 가면 이미 많이보유하고 계신 ttf폰트파일을 손쉽게 eot파일로 변환할 수 있습니다.

(압축 해제 후 폴더안의 OETFAST-1.exe 위로 ttf파일을 드래그하면 해당폴더에 자동으로 eot파일이 생성됩니다.)

http://eotfast.com/

 

그리고 다양한 글꼴 사용시에 로딩시간이 길어질 수 있습니다.

사용자의 local에 이미 설치되어있는 글꼴은 local(‘helvetica’)로 확인하면 로딩 시간을 줄일 수 있습니다.

@font-face{

font-family:helvetica;

src:url(‘txt/helvetica.eot’); //IE를 위한 css추가

src:local(‘helvetica’), url(‘txt/helvetica.ttf’) format(‘truetype’); //src:url(‘폰트경로’) format(‘파일 유형’);

}

h1{

font-family:helvetica;

}

 

마지막으로 웹에서 사용전에 라이센스를 꼭 확인하시길 바랍니다.

무료로 배포된 폰트가 아닌 경우는 함부로 사용하지 말아야 합니다.

아래 링크에 가시면 공개된 폰트를 많이 찾을 수 있습니다. *사용전에 라이센스 확인은 필수입니다.


http://webfonts.info

 

http://www.fontsquirrel.com

 

http://www.google.com/webfonts#ChoosePlace:select


출처: http://www.moreagile.net/
정말 좋은 포스팅이 많은 곳입니다 꼭 가보세요~

TDD는 벌거벗은 임금님의 투명옷인가? (1) - TDD는 죽었다. 테스트여 영원하라!

지난주 금요일 밤 10시.
StackOverflow를 비롯해 많은 IT커뮤니티를 술렁거리게한 IT업계의 드림매치가 30분간 차분히 이루어졌다.

발단은 Ruby on Rails의 개발자로 유명한 David Heinemeier Hansson(이하 DHH)가 자신의 블로그에 'TDD는 죽었다. 테스트여 영원하라!TDD is dead. Long live testing.'라는 다소 자극적인 제목으로 블로그 포스트를 올린데서 시작되었다.

David Heinemeier Hansson. 덴마크 출신 프로그래머로 Ruby on Rails의 제작자로 알려져 있지만 르망 24에 출전하는등 프로 레이서 로서의 일면도 가지고 있다.(엄친아?) 사진의 포즈는 보통 중딩들이 새로 산 시계를 자랑하고 싶을때 하는 포즈이지만 신경쓰지 말도록 하자.

여기에 XP와 TDD의 창시자인 Kent Beck선생은 RIP TDD 라는 페이스북 포스팅을 통해 DHH의 의견에한 자신의 생각을 밝힌다.

여기에 쌈구경에 재미가 들린 Martin Fowker선생이 멍석을 깔아준다.
바로 구글 플러스를 통해 두사람의 토론을 온라인 생방송 이벤트로 만들어 버린 것이다.
Is TDD dead?

일단 내용이 만만치 않으므로 이번 포스팅은 세 단원으로 나눠서 작성할 예정이다.

  1. TDD는 죽었다. 테스트여 영원하라! - David Heinemeier Hansson의 블로그 번역
  2. TDD여 편히 잠들라 - Kent Beck의 페이스북 번역
  3. TDD는 죽었는가? - DHH, Kent Beck, Martin Fowler의 온라인 토론 이벤트 정리

아직 국내에는 이름이 생소한 DHH이지만 비교적 젊은 나이에도 불구하고 (79년생) 프레임워크에 있어서 Ruby on Rails가 지닌 지위와 영향력을 생각해 본다면 결코 무시할 수 있는 인물이 아니다.

오늘은 첫번째로 DHH의 주장을 담은 블로그의 글을 번역하는것으로 TDD에 대한 논쟁을 시작해 보고자 한다.

TDD는 죽었다. 테스트여 영원하라!

원문: TDD is dead. Long live testing.

테스트 우선Test-first개발 근본주의는 금욕만을 강조한 성교육과 같이 자기혐오를 불러오는 비현실적이자 비효율적인 도덕 캠페인과 같다.

처음시작은 달랐다. 내가 처음 TDD를 접했을때, 그것은 마치 프로그래밍의 신세계가 내 눈앞에서 열리는것 같았다. 그것은 테스트가 없는 세계로부터 테스트를 당연히 여기는 세계로의 의식개혁과도 같은 것 이었다. TDD는 제대로 테스트된 코드가 주는 평온함에 눈을 뜨게 해 주었고, 소프트웨어 변경시에 안정감을 가져다 주었다.

테스트 우선 개발은 자전거의 보조바퀴와도 같은것으로, 테스트를 통해 프로그램을 보다 싶도있게 통찰 하는데 많은 도움이 되었으나 나는 곧 그만두었다.

시간이 흐르면서 테스트 우선이란 슬로건은 점점 더 큰고 격렬한 목소리를 내기 시작했다. 테스트우선 개발을 실행하지 않는것은 죄악시 되었고 나 자신도 그러한 근본주의 소용돌이에 휘말려 들었는데, 그것은 마치 종교적인 금욕주의 가르침을 따라가지 못하는 자신이 부끄러워지는 느낌이었다. 그리하여 나도 테스트 우선 개발을 시험해 보기로 했지만 몇주만에 결국 그만 두었다. 테스트 우선 개발이 내 설계를 망쳐놓기 시작했기 때문이다.

테스트 우선 개발은 마치 광신도의 자부심과도 같이, 오직 교리에 적힌 한구절 한마디를 충실히 지키는 것 만이 천국에 이르는 유일한 길이고, 그대로 하지 않으면 지옥에 떨어진다고 하는 희열과 절망의 요요였다. 그리고 그것을 그만둔 나는 모두 함께 가는 버스에서 혼자만 내린 기분이었다.

아마도 처음에는 자동화된 회귀 테스트 따위는 없어도 된다라고 하는 업계의 관행을 부수기 위한 충격요법으로서 테스트 우선 개발이 필요 했을지도 모른다. 아마도 처음에는 글자 곧이곳대로 일상적으로 수행하는 프로그램 개발에 적용하는것을 의도하지는 않았을지도 모른다. 하지만 어찌되었든 시작을 한다고는 해도 금방 중단되기 일쑤였지만, 불경한자를 단죄하는 헤머와도 같이 TDD를 성실히 행하지 않는것은 프로 소프트웨어 개발자로서의 자격이 없다고 낙인 찍혀 버린다. 이것은 리트머스 테스트이다. (단순한 기준으로 흑백이 구분되어버린다는 뜻:역자주)

이제 충분하다. 그만 두겠다. 나 데이빗은 더이상 테스트 우선 개발을 하지 않는다. 나는 더이상 그것에 대해서 사과하지도 숨기지도 않겠다. 나는 TDD가 회귀 테스트에 눈 뜨게 해 준것에 감사한다. 하지만 더이상 TDD에 끼워 맞춰 프로그램을 설계하지는 않는다.

나는 여러분께 TDD적인 접근이 정말로 당신의 시스템의 완전성과 일관성에 어떠한 영향을 주고 있는가를 진지하게 다시 검토해 보기를 권한다. 만약 이것이 정말 좋은것은 아닐지도 모른다는 가능성을 심각하게 받아들이게 된다면, 당신은 메트릭스에 등장하는 붉은 알약을 먹는것이 될 수도 있다. 그리하여 직면하게된 현실 세계는 당신이 원하던 것이 아닐 수도 있다.

그럼 이제 어디를 향해야 하는 것 인가?

최초의 한걸음은 문제의 존재를 인정하는 것 이다. 여러분도 여기까지는 동의할 것으로 생각한다.  그 다음은 메소드에서 시작해 시스템 전체에 이르는 다양한 범위의 테스트에 대해 균형을 잡는것이다. 지금의 열광적인 TDD열풍은 유닛(메소드) 단위의 테스트에 초점이 맟춰져 있다. 왜냐하면 이름 그대로 유닛테스트의 범위는 유닛에 한정되어 버리기 때문이다. (원래부터 테스트 우선 개발의 근거가 이것이다.)
하지만 나는 이것이 올바르지 않다고 생각한다. 테스트 우선개발의 유닛테스트는 중간적인 오브젝트나 간접적이고 지나치게 복잡한 구조를 낳기 십상이다. 게다가 느려지는것을 피하려고 하다보니 데이터베이스나 I/O관련 테스트도 기피하게 된다. 브라우저를 이용한 시스템 전체의 테스트도 지양하게 되어 버린다. 그 결과, 진정 무서운 괴물과도 같은 프로그램 구조가 탄생하게 된다. 서비스오브젝트라던지 커맨드패턴이 형편없이 얽히고 설킨 정글과도 같은 아키텍쳐 말이다.

나는 전통적인 의미의 유닛테스트는 거의 하지 않는다. 모든 의존관계를 목(Mock)으로 하면, 수천건의 테스트가 수초만에 끝나는 유닛테스트 이지만, 레일즈Rails 어플리케이션의 테스트에 있어서 좋은 방법은 아니라는, 단지 그 이유 한가지이다. 나는 실제레코드를 직접 데이터베이스에 억세스하여 동작시키는 방식으로 테스트를 진행한다. 상위레이어에는 컨트롤러 테스트가 있지만, 나는 어느쪽인가 하면 상위레이어에 대한 시스템 테스트는 Capybara나 이와 비슷한 것을 사용하여 테스트하는 편이다.

나는 이것이 우리가 가야 할 방향이라 생각한다. 유닛테스트의 중요도를 내리고, 설계의 일부로서 테스트 우선 개발을 사용하지 않는것이다. 그리고, 보다 시간이 오래 걸리긴 하지만 시스템 테스트의 중요성을 부각시켜야 한다.(게다가, 클라우드의 등장으로 테스트조차도 클러스터링이 가능해 짐에 따라 더이상 시스템 테스트도 느리지만은 않다.)

Rails는 이러한 전환에 도움이 된다. 오늘, 우리는 풀 시스템 테스트 자동화를 권장하기 위한 아무것도 가지지않고 있다. 정답은 미리 준비되어있지 않다. 단지 실수를 고쳐나갈 뿐이다. 하지만, 여러분은 실수가 일어나기를 기다릴 필요는 없다. 오늘 당장 Capybara를 돌려보라. 그리고 내일이면 좋은 아이디어가 우리들 머리속에 가득할 것이다.

자, 우선은 심호흡을 하자. 우리가 지금 하려는 것은 신성한 암소를 도살하는 것 이다. 고통스럽고 피를 보는 과정이 수반될 것이다. TDD는 이미 성공적으로 많은 프로그래머들의 머리속에 자리잡고 있다. TDD는 그들이 하는 행위가 아닌 그들 자신이 되어버린 것 이다. 그러한 사람들을 원래대로 돌리기 위해서는 커뮤니티를 만들어 진지하게 임하지 않으면 안되고, 시간또한 오래 걸릴 것 이다.

여기서 우리가 선택 할 수 있는 최악의 방법은 또다른 테스트 종교를 만드는 것이다. 이를테면 "시스템 테스트야 말로 진리이다!"와 같은 또다른 황금소의 우상을 만드는것이 눈앞에 선하다. 제발 그러지는 말았으면 한다.

그렇다. 나에게 있어서 테스트 주도 개발은 죽었다. 하지만 그 죽음을 축하하며 무덤앞에서 춤을 춘다던지 단점을 조롱하기 보다는, TDD가 소프트웨어 개발에 가져온 기여에 존경을 표하고자 한다. TDD는 우리들의 역사에 중요한 족적을 남겼다. 그리고 지금은 그 다음을 향해 가야할 시간이다.

테스트여 영원하라!

내용 정리가 정말 잘 되어 있어서 스크랩했습니다. 원본 페이지에 좋은 댓글들도 많으니 꼭 가보시길.


안드로이드 4.4 킷캣 에뮬레이터에서 한글 출력하기

서른여섯 번째 이야기: 안드로이드 4.4 킷캣 에뮬레이터에서 한글 출력하기

작성일: 2013년 11월 12일

작성자: 배장열

=====================================================================================================

1부 시작하는 말

우선, 안드로이드 에뮬레이터 즉, avd에 관해 말씀드리겠습니다. avd가 실행될 때 화면에 표시되는 글꼴은 다음과 같이 몇 가지로 나누어 생각할 수 있습니다.

  • DroidSans.ttf - 기본 영문 글꼴
  • DroidSans-Bold.ttf - 영문 볼드용 글꼴
  • DroidSansFallback.ttf - 영문으로 표시하지 못하는 나머지 언어용 글꼴

여기서 주목해야 할 글꼴이 DroidSansFallback.ttf입니다. 이 글꼴은 안드로이드가 기본적인 영문 글꼴로 표현되지 못할 때 대신 사용됩니다. 한글은 바로 DroidSansFallback.ttf에 내장되어 있는데, 안드로이드 4.2.2부터 이 글꼴에 버그가 있는 것 같습니다. 그 결과 ,안드로이드 4.2.2와 4.3, 그리고 4.4에서는 한글을 표현해야 할 때 DroidSansFallback.ttf가 올바로 로드되지 않아 한글 표현에 문제가 있는 것으로 보입니다.

그러니까 안드로이드 4.2.2부터 에뮬레이터에서 DroidSansFallback.ttf를 로드할 때 어떤 버그로 인해 한글 글꼴이 올바로 로드되지 않은 것입니다. 웃긴 것은 물리적인 단말기를 이클립스에 직접 연결하면 단말기에서 한글이 올바로 표현된다는 점입니다.

어찌 됐든 알 수 없는 버그 때문에 중국어나 일본어는 올바로 표현되는데, 공교롭게도 한글만 찬밥 신세가 되었습니다. 안드로이드에 한글 글꼴이 없어서 지금과 같은 문제가 생긴 것으로 생각하기도 하는데, 안드로이드 에뮬레이터 이미지 파일에서 DroidSansFallback.ttf를 버전별로 추출하여 일일이 확인해 본 결과 한글 글꼴이 없는 것은 아니었습니다.

자, 그럼 해결 방법을 알아볼까요? 두 가지 방법으로 우리의 아름다운 한글을 에뮬레이터에서 제대로 표현할 수 있습니다.

* 첫 번째: DroidSansFallback.ttf를 올바로 동작했던 이전 버전(안드로이드 4.1.2)의 DroidSansFallback.ttf로 교체하는 방법

* 두 번째: 적당한 한글 글꼴을 지접 추가하는 방법

첫 번째 방법을 사용하면 안드로이드 4.1.2의 한글 글꼴을 사용해야 하는 단점(?)이 있습니다. 안드로이드 4.2.2부터 한글 글꼴이 나눔고딕으로 바뀌었기 때문입니다.

에뮬레이터에서 필요한 글꼴이 없을 때 마지막으로 사용되는 글꼴이 DroidSansFallback.ttf이므로 두 번째 방법에서는 적당한 한글 글꼴을 추가하면 굳이 버그가 있는 DroidSansFallback.ttf를 사용하지 않아도 됩니다. 다만, 안드로이드 4.2.2부터 기본 한글 글꼴이 네이버의 나눔고딕체로 변경되었고, 에뮬레이터에는 글꼴을 선택할 수 있는 기능이 지원되지 않기 때문에 추가하려는 한글 글꼴의 이름을 NanumGothic.ttf와 NanumGothic_Bold.ttf로 변경해야 합니다.

그런 이유로 여기서는 네이버의 나눔바른고딕체가 훨씬 보기 좋아 나눔바른고딕의 이름을 나눔고딕으로 바꿔 에뮬레이터에 추가하겠습니다.

이제 작업 환경에 관해 소개하겠습니다. 가장 편하게 작업할 수 있는 환경은 리눅스입니다. 작업 완료 시간이 20여 분도 채 걸리지 않습니다. 리눅스 환경에서 안드로이드 앱을 개발하는 프로그래머라면 대단히 간편하게 전체 과정을 진행할 수 있습니다. 필요한 것도 에뮬레이터의 시스템 이미지(sdk/system-images/android-19/armeabi-v7a/system.img) 뿐입니다. 리눅스 환경에서 진행하는 과정은 이 글 말미에 말씀드리겠습니다.

리눅스를 사용하지 않는 사용자, 즉 OS X이나 Windows를 사용하는 경우에는 시간이 많이 걸립니다. 에뮬레이터의 시스템 이미지도 필요하지만 이클립스의 DDMS도 사용해야 합니다. 그리고 OS X에서는 터미널, Windows에서는 명령 프롬프트를 사용해야 합니다. 이 글에서는 Windows 환경부터 먼저 말씀드리고, 뒤이어 OS X 환경을 다루겠습니다.

필요한 것들

* adt 최신 버전(안드로이드 sdk 4.4 킷캣) 32비트 또는 64비트(http://developer.android.com/sdk/index.html)

* 나눔바른고딕체(http://hangeul.naver.com)

* 인내심과 약간은 세심한 주의력

이제 본격적으로 시작해 볼까요?

2부 첫 번째 _ Windows에서

우선, 에뮬레이터의 시스템 이미지(sdk\system-images\android-19\armeabi-v7a\system.img)를 적당한 곳으로 복사합니다. 바탕 화면에 복사하면 작업하기 편합니다. 복사된 이미지 파일의 이름을 system-ori.img로 변경합니다.

이클립스에서 안드로이드 킷캣용으로 에뮬레이터를 새로 만듭니다. 이때, SD Card의 용량을 2048MB 또는 1536MB로 지정합니다(그림 36-1).

그림 36-1

에뮬레이터의 부팅이 완료되면, 이클립스에서 DDMS를 실행합니다(그림 36-2).

그림 36-2

DDMS에서 그림 36-3처럼 File Explorer를 클릭하고, storage의 sdcard를 클릭합니다.

그림 36-3

그림 36-4

그림 36-4처럼 Push a file onto the device 아이콘을 클릭하여 system-ori.img를 에뮬레이터의 storage/sdcard에 복사합니다. 여기까지 진행한 화면이 그림 36-5입니다.

그림 36-5

여기서 잠깐! 

복사가 완료되기 까지 오랜 시간이 걸립니다. 저는 OS X에서 패러렐즈로 Windows 7 가상 머신을 사용하기 때문에 시간이 더 걸리는 듯합니다. 이미지 파일이 복사되려면 1시간은 족히 걸립니다. 그리고 안드로이드는 리눅스의 일종입니다. 그리고 Windows에서 디렉터리를 구별하는 데는 \ 문자를 사용하지만, 리눅스나 맥에서는 /를 사용합니다. 이 점 주의하셔야 합니다.

이미지 파일의 복사가 완료되면 Windows에서 명령 프롬프트를 실행합니다. 디렉터리를 그림 36-6처럼 변경합니다. 저는 adt를 C:\에 설치했습니다. 각 상황에 맞게 올바른 디렉터리로 이동하셔야 합니다.

그림 36-6

우리가 사용할 유틸리티는 그림에 나타나 있듯이 adb.exe입니다.

adb를 다음처럼 입력하여 실행합니다. 이제부터는 Windows가 아니라 리눅스입니다. 잊지 마세요.

   adb shell

adb의 쉘로 들어오면 프롬프트의 모양이 달라집니다. 여기서 SD Card로 이동해야 합니다. 다음처럼 입력합니다(그림 36-7).

   cd storage/sdcard

그림 36-7

이제 디렉터리를 하나 새로 만들고 여기에 system-ori.img를 마운트합니다(그림 36-8).

   mkdir qqq

   mount -t ext4 -o loop system-ori.img qqq/

그림 36-8

이제 DDMS로 돌아가 결과를 확인하고 한글 글꼴을 올바른 위치에 복사합니다(그림 36-9). storage/sdcard 아래에 qqq 디렉터리가 만들어졌고, 이 qqq에 system-ori.img가 올바로 마운트되었습니다. 그림 36-9처럼 fonts 디렉터리를 선택한 뒤, Push a file onto the device 아이콘을 클릭하여 한글 글꼴을 복사합니다.

그림 36-9

여기서 잠깐!

앞에서도 말씀드린 것처럼 미리 나눔바른고딕체의 이름을 각각 NanumGothic.ttf와 NanumGothic_Bold.ttf로 변경했습니다. 안드로이드 4.2.2부터 기본 한글 글꼴이 나눔고딕으로 변경된 데다, 안드로이드 에뮬레이터에서는 글꼴을 변경하는 기능이 지원되지 않기 때문에 추가할 글꼴의 이름은 NanumGothic.ttf와 NanumGothic_Bold.ttf이어야 합니다. 그리고 에뮬레이터에 파일을 추가할 때는 한 번에 하나만 복사할 수 있습니다.

8. 여기까지 진행된 화면이 그림 36-10입니다. 그런데 가만히 들여다보니 추가된 글꼴들의 권한이 좀 이상하죠?

그림 36-10

다른 글꼴과 같은 권한으로 변경하겠습니다. 우선, 명령 프롬프트에서 해당 디렉터리로 이동합니다.

   cd qqq/fonts

   chmod 644 NanumGothic.ttf

   chmod 644 NanumGothic_Bold.ttf

결과 화면은 그림 36-11입니다. 변경된 권한을 확인할 수 있죠?

그림 36-11

자, 이제 막바지에 다다랐습니다. 원하는 글꼴을 추가했으니 마운트했던 system-ori.img를 언마운트할 차례입니다. 명령 프롬프트에서 상위 디렉터리로 이동한 뒤, system-ori.img를 언마운트합니다(그림 36-12).

   cd ../..

   umount qqq/

그림 36-12

그림 36-12를 보면 system-ori.img의 시간이 바뀐 것을 알 수 있습니다. 이 파일을 다시 Windows로 추출하겠습니다. 일단, 명령 프롬프트에서 exit를 입력하여 adb 쉘을 종료합니다(그림 36-13). 명령 프롬프트도 닫습니다.

그림 36-13

DDMS에서 Pull a file from the device 아이콘을 클릭하여 system-ori.img 파일을 Windows로 복사합니다(그림 36-14).

그림 36-14

여기서 잠깐!

에뮬레이터에 파일을 넣을 때처럼 빼내올 때도 많은 시간이 걸립니다. 느긋하게 차 한 잔을 즐기시는 것도 좋을 듯...

이제 마무리 정리 시간입니다. 에뮬레이터를 종료합니다. DDMS에서 Windows로 복사된 system-ori.img 파일의 이름을 system.img로 변경한 뒤, 원래 있던 자리인 sdk\system-images\android-19\armeabi-v7a에 복사합니다. 이클립스에서 에뮬레이터를 새로 하나 만듭니다. 기존 에뮬레이터는 나중을 위해 잠시 그대로 둡니다(그림 36-15). SD Card의 용량을 적당하게 지정합니다.

그림 36-15

제가 미리 준비해 둔 안드로이드 앱을 실행하여 한글이 올바로 표시되는지 확인하겠습니다. 언어 설정이 영어일 때는 "Hello world!"를, 한국어일 때는 "안녕하세요? 제가 보이시나요? 한글은 참 아름답죠?"를 출력하는 앱입니다. 우선, 언어 설정이 영어일 때 화면을 볼까요? 그림 36-16입니다.

그림 36-16

이제 언어 설정 옵션으로 이동합니다. 그림 36-17처럼 "한국어"가 보입니다. 참 반갑죠?

그림 36-17

다시 앱을 실행하면 한글이 올바로 출력됩니다(그림 36-18).

그림 36-18

이제 아까 만들었던 에뮬레이터(qq-sample)는 필요 없겠네요. 과감히 삭제~

부연 설명, 하나

DroidSansFallback.ttf 파일 기억하시죠? 나눔 글꼴을 추가하지 않고 DroidSansFallback.ttf 파일을 교체해도 한글은 올바로 표현됩니다. 다만, 안드로이드 4.1.2에 내장된 DroidSansFallback.ttf가 올바로 동작하는 파일이니 먼저 해당 파일을 구하셔야 합니다. 이클립스에서 안드로이드 SDK 4.1.2를 다운로드하고, 4.1.2용 에뮬레이터를 만든 뒤, DDMS에서 DroidSansFallback.ttf를 Windows로 복사하면 됩니다. 앞서 설명드린 과정대로 하되 상황에 맞게 약간씩 수정하여 진행하면 아무런 문제가 없을 것입니다.

부연 설명, 둘

안드로이드 4.1.2에 내장된 DroidSansFallback.ttf의 크기는 약 4.5MB이고 4.2.2부터 제공되는 DroidSansFallback.ttf의 크기는 약 5.4MB입니다. 내장된 한글 글꼴이 바뀌었다고 앞에서 말씀드렸죠?

부연 설명, 셋

항상 원본은 백업하시고 진행하세요. 어떤 이유로든 문제가 발생하면 되돌리기가 한결 편해집니다.

부연 설명, 넷

안드로이드 4.3이나 4.2.2에서는 어떻게 해야 할까요? 제이펍 블로그에 올렸던 "안드로이드 젤리 빈 4.3 에뮬레이터에서 한글 출력하기"를 참고하시면 될 듯합니다. 다만, 나중을 위해서라도 한 가지 말씀드릴 것이 있습니다. 킷캣의 ARM 에뮬레이터에 사용되는 이미지 파일인 system.img에는 ext4라는 파일시스템이 적용되었습니다. 젤리빈까지는 yaffs2라는 파일시스템이 적용되었고요. 그런데 이전 글 본문에서 언급한 Windows용 yaffey 유틸리티는 ext4를 지원하지 않습니다. 아래 그림 36-19를 한번 볼까요? 아래 그림은 4.4 킷캣용 에뮬레이터를 시작한 뒤, adb shell을 실행하여 에뮬레이터 안으로 들어와

그림 36-19

마운트된 장치를 출력한 결과입니다. /system은 ext4로 마운트되었음을 알 수 있습니다. 4.3 젤리빈에서는 어떤 결과가 나올까요? 아래 그림 36-20을 확인해 보겠습니다.

그림 36-20

그림에서 알 수 있듯, 적용된 파일시스템은 yaffs2입니다. Windows용 yaffey 유틸리티가 이 파일시스템을 지원하기 때문에 지난번처럼 작업할 수 있었습니다. 그럼 이번 글에서처럼 작업할 수는 없을까요? 할 수 있습니다. 전체 과정을 그대로 따라 하되, adb 쉘에서 마운트하는 명령만 다음과 같이 수정하면 됩니다.

   mount -t yaffs2 -o loop system-ori.img qqq/

이제 두 번째 환경인 OS X을 살펴보겠습니다.

OS X에서

전체 과정은 Windows에서와 같습니다. 다만, OS X의 디렉터리 구조가 Windows와 다르니, 이 점만 주의하면 됩니다. OS X에서는 명령 프롬프트 대신 터미널을 사용해야 하므로, 이와 관련된 부분만 언급하겠습니다.

1. adb 쉘 실행 방법. 터미널에서는 dab shell 대신 ./adb shell을 입력해야 합니다. 또한, 리눅스에서와 마찬가지로 디렉터리 구분 기호는 \가 아니라 /입니다.

2. 나머지는 Windows에서와 동일한 과정대로 진행하면 됩니다.

마지막으로 세 번째 환경인 리눅스입니다.

2부 세 번째 _ 리눅스에서

리눅스에서는 이클립스나 DDMS를 사용할 까닭이 없습니다. 단지 system.img 파일을 어떤 디렉터리에 마운트한 뒤 한글 글꼴을 추가하고, system.img를 언마운트하면 됩니다.

저는 홈 디렉터리 아래의 Downloads에서 작업할 것입니다. 우선 이곳에 필요한 파일들을 복사합니다. NanumGothic.ttf와 NanumGothic_Bold.ttf, 그리고 system-ori.img 파일이 필요합니다.

~/Downloads에서 다음을 진행합니다.

   ~$ cd Downloads

   ~/Downloads$ mkdir qqq

   ~/Downloads$ sudo mount -t ext4 -o loop system-ori.img qqq/

   ~/Downloads$ cd qqq/fonts

   ~/Downloads/qqq/fonts$ sudo cp ../../NanumGothic.ttf .

   ~/Downloads/qqq/fonts$ sudo cp ../../NanumGothic_Bold.ttf .

   ~/Downloads/qqq/fonts$ sudo chmod 644 NanumGothic.ttf

   ~/Downloads/qqq/fonts$ sudo chmod 644 NanumGothic_Bold.ttf

   ~/Downloads/qqq/fonts$ cd ../..

   ~/Downloads$ sudo umount qqq/

이제 system-ori.img 파일의 이름을 system.img로 변경한 뒤, 원래 있던 자리인 sdk/system-images/android-19/armeabi-v7a에 복사해 넣습니다.

에뮬레이터를 새로 하나 만들어 한글이 올바로 표현되는지 확인합니다.

부연 설명, 하나

리눅스에서는 대단히 쉽게 작업할 수 있습니다. 리눅스가 사용하는 파일시스템이 바로 ext4이기 때문입니다. 안드로이드의 ARM 에뮬레이터 또한 리눅스이기 때문에, 에뮬레이터를 생성할 때 SD Card의 용량을 늘려 그 안에서 작업한 것입니다.

어찌 보면 쉬운 길을 멀리 돌아왔는지도 모르겠습니다. 아무쪼록 여러분에게 조금이라도 도움이 되었으면 하는 마음입니다. 긴 글 읽어 주셔서 정말 고맙습니다.

=====================================================================================================

저작자 표시 비영리 동일 조건 변경 허락

크리에이티브 커먼즈 라이선스


안드로이드 이클립스에는 -XX:+AggressiveOpts 를 eclipse.ini 에 넣으면 안된다.
14-5-12

DX를 만들 때 null을 반환해서 에러가 발생함.


+ Recent posts