<개요 및 프로젝트 목적>


이번에 작성하는 글은 안드로이드의 UI와는 전혀 상관이 없는 오직 오직 기능만을 위한 주제입니다.


UI를 꾸미지 않는 것은 UI가 아닌 휴대폰의 CPU사용량에 따라 베터리 소모를 줄이는 것이 핵심이기


때문입니다. 이 어플리케이션은 이미 개발이 완료된 상태이며 단계적으로 글을 쓸 것입니다.


정확도는 낮을 수 있겠지만 일단 제가 8일동안 이것만 붙들고 처음 접하는 방식의 프로그램이기 때문에


이렇게 포스팅하게 되었습니다.


기능


1. 움직임 포착


2. 걸음수 판별


3. 위치파악


3-1. GPS 사용


3-2 WIFI SCAN 사용


4. 메모장에 기록하여 TextView에 뛰우기


입니다.



 [CPU 사용량을 확인하는 방법 - battery historian 설치하기 + 

2단계 adb.ext를 이용한 bugreport.txt 추출하기]의 결과





이미지를 보시면 cpu가 잡혔닥 풀렸다가 하는게 보이시죠? 그리고 GPS WIFI도 사용할때만 잡는게 보이시죠?


안드로이드가 제공하는 베터리 히스토리안을 이용하면 이런 것들을 확인하실수 있습니다.



<사전 설치하기>


그럼 본론으로 들어가보겠습니다.


1. 베터리 히스토리안 설치하기 (battery historian)


(이미 설치되어 있는 것은 패스) 

• Go 

• Git 

• Python 2.7 

• Java


이렇게 4개를 설치하셔야 베터리 히스토리안을 사용하실수 있습니다. 하핫 귀찮으시다구요? 


하지만 사용하셔야죠


git 이나 파이썬 java는 다들 깔려있거나 까실수 있으시죠? 그럼 go만 잠깐 언급할께요


https://golang.org/doc/install  를 들어가셔서 go를 까시구요


그리고 cmd 창에 go를 쳐서 설치되었는지 확인해보세요




잘되죠? 그 다음이 중요합니다. 모든 파일 설치는 battery hitorian을 설치하기 위한 것이죠 ㅎㅎ



여기까지가 기본 설치고 이제 battery historian을 설치하고 실행해볼께요.

---------------------------------------------------------------------------------------------------------------



<battery historian 설치하기>


cmd 창에 Go get –d –u github.com/google/battery-historian/... 


를 입력하셔서 battery historian을 설치합니다.





그다음 디렉토리를 확인하시면 


C:\Go\work\src\github.com\google\battery-historian이 존재하는


것을 확인하실 수 있습니다.


(환경변수에 따라 다릅니다. 저는 위에 적힌대로 환경변수 설정해서 그래요)

그다음은 cmd 창에 • go run setup.go 를 쳐주세요

그러면 모든 설치가 끝납니다.



<battery historian 실행하기>


이제 battery historian을 실행해볼까요?


실행 명령어는 go run cmd/battery-historian/battery-historian.go 인데요 일단


저는 C:\Go\work\src\github.com\google\battery-historian 위치에 설치 되었기에 


cd C:\Go\work\src\github.com\google\battery-historian

를 쳐서 cmd 창에서 이동한 뒤에 


go run cmd/battery-historian/battery-historian.go 를 쳐주세요.



그러면 저는 액세스허용이 뜨는데요 만약 안된다면 관리자모드로실행해주세요




다음 브라우져에서 localhost:9999를 입력해주시면



battery historian이 실행된 것을 알수 있죠?


참 쉽죠? ㅎㅎ


여기까지가 battery-hitorian 사용법입니다.


다음은 안드로이드로 설치된 어플리케이션의 베터리 사용량을 알아보는 방법에 대해서 이야기 해드리겠습니다.



2단계는  battery-historian을 위한 bugreport.txt 만들기 입니다.








Posted by 구레이더

파이썬에는 list 자료형에 contains가 있는지 알고 썼는데 없더군요..


이런 오류만 뜨더라구요.





그래서 인터넷 확인에 확인해본 결과


if myitem in list: 이런형식으로 사용한답니다.


예를들어 



이런 식으로 코딩하시면 된답니다. ^^


그리고 단순하게 만약 없을 경우를 원하시면


조건 앞에 not을 붙이시면 됩니다.





Posted by 구레이더

안드로이드 애플리케이션 작성 절차

 

1. 사용자 인터페이스 작성

-xml

-레이아웃, 텍스트 뷰, 버튼, 이미지뷰, 메뉴 등 정의

 

2. 코드 작성

-java 소스코드 작성

-코드에서 사용하는 리소스 준비


3. 매니페스트 파일 작성

-xml

 

코드와 리소스를 분리하는 이유

 

다양한 종류의 기기를 효과적으로 지원하기 위함

해상도 / 화면 크기 / 언어

 

동작하는 애플리케이션 로직은 동일하지만, 리소스를 다르게 하는 것이 필요한 경우

각 기기에 맞게 리소스를 준비하여 사용 

 



문자열 리소스

 

문자열도 xml로 기술하는 것이 바람직

구각별로 다른 언어 표시

                     <위치>




<strings.xml>





 

Posted by 구레이더

노드란?


node.js의 등장배격은 2008년 구글에서 크롬브라우저의 소스코드를 공개하였고,

브라우저를 분석을 하니 V8 엔진 위에서 javascript 코드를 실행시켜주는 이벤트 처리 I/O 프레임워크가 존재하였는데 이것이 node.js 였다.

node.js는 


노드의 특징 4가지


1. Chrome JavaScript Engine V8 기반의 서버 플랫폼


- V8은 Google에 의해서 C++로 개발된 오픈 소스 자바스크립트 엔진


- JavaScript를 compile하여 native machine code 변경 후 runtime시 다시 최적화하여 실행하는 구조.

[스크립트 언어]

(컴파일 과정이 없다.)

javascript code -> native machine code


- Garbage Collection을 통한 메모리의 효율적인 관리. ( memory leak는 개선의 여지가 있음 )


- Standalone 고성능 JavaScript 엔진으로 사용가능. 


2. 빠르고 확장 가능한 Network 프로그램 개발에 특화


- TCP , UDP 관련 프로그램 개발 가능


- 하지만, 거의 대부분 Web Application 작성에 활용   






3. Single Thread 기반의 Non-Blocking I/O model 사용


노드를 사용하는 가장 중요한 이유중 하나는 비동기형 방식이다.


동기형과 비동기형의 차이를 알아보자.



<동기형>


첫번째 코드는 동기형일 경우이다. 

코드를 보면 query를 날리는 구문이 있다. 

var sum = result + 100; 이 실행되려면 query()의 결과값이 나와야 실행이 된다.

동기형이 친숙한 사람들은 이것이 당연하다고 생각하실 수도 있다.


하지만 비동기형 코드를 보자.


<비동기형>


비동기형의 경우 query를 던져놓고 바로 console.log("first")를 실행한다.


그리고 결과 값이 나오면 function(result){console.log("second")}가 실행이 된다.


그렇다면 비동기형식과 동기형식중에 무엇이 더 낳을까?


이것은 상황에 따라 다르다. 비동기형식은 I/O 작업이 많을 경우 빠른 속도를 보인다.



그리고 Single Thread 기반이란  multi Thread 기반과 비교하면서 이야기해보자


다음의 그림을 참조하면 된다.






<Multi Thread>

-동시에 Service할 수 있는 Client의 수는 Thread Pool안에 있는 가용한 Thread의 수와 동일


-일반적으로 Thread Pool안의 Thread는 500~2000. ( 2000을 넘는 경우는 거의 없다. )


-할당된 Thread가 IO작업( Network, File, DB )을 하게 되면 blocking 방식으로 처리되어 해당 Thread가 CPU를 사용하지 않는 상태(wait 상태)로 변환.


-즉, IO시간만큼 Thread는 blocking.




<Single Thread>


Node.js 는 Single Thread로 구성되어 있다. 내부적으로는 Thread Pool 로 구성되어 있다.





4. Event Driven Programming Model 


이것은 간단히 말하면 node는 non-blocking 기반이기 때문에 항상 이벤트가 발생하며 이벤트에 해당하는 작업이 실행된다. 


노드에서 이벤트 처리를 하는 것은 다음 링크를 참조하자


http://posnopi13.tistory.com/9







Posted by 구레이더

안녕하세요. 


파이썬을 공부를 시작해보면서 블로그 포스팅을 하겠습니다.


첫번재 파이썬 설치입니다.


자바하면 eclipse가 떠오르고 c하면 비주얼 스튜디오 이렇게 떠오르는데요.


파이썬하면 떠오르는 IDE가 없습니다.  흠... 그렇다면 어떤 것이 좋을까요?


저도 잘 모르겠습니다. 저는 일단 학교에서 추천한 통합 IDE인 

Enthought Canopy를 설치

https://www.enthought.com/products/canopy/

하겠습니다.


1. 먼저 홈페이지를 접속한다.


2. Get Canopy를 설치한다.


3. Free Downlaod를 클릭한다.




4. 운영체제에 맞게 DOWNLOAD Canopy를 한다.



6. 프로그램 설치 [그냥 next하시면 됩니다.]

7. 바탕화면에 바로가기 아이콘이 생성되었습니다.



--------------------------------------------------------------------------------



이제 파이썬이 깔렸습니다.그러면 코딩을 해야 하는데 코딩을 하는 곳이 두곳이 사실 cmd 창까지하면 3군데군요. 일단 cmd 창을 제외하고 2곳이 존재합니다.


첫번째, IDE의 에디터

두번째, Ipython 의 notebook이 존재합니다. 

세번째, cmd 창의 python 이 있구요.


첫번째로 IDE의 에티터는 간단합니다.


이제 통합 IDE를 설치한 뒤 프로그램을 실행하면


다음과 같은 창이 뜹니다.




그리고 Editor를 클릭하면 에디터가 나와서 여기서 작업을 할 수도 있구요.




너무 쉽죠 ^^?



두번째 Ipython 의 notebook 




1. cmd 창을 뛰웁니다.



2. 적합단 디렉토리를 만들기 위해서 dir 를 처보고 파일을 한번 훓고 ~ 맘에 드는 파일이 없으면




3. "mkdir 이름" 을이용해서 test 폴더를 만든뒤 접속하여 ipython notebook을 치면


 



4. 다음과 같은 창이 켜지는데 이것은 작은 아파치 서버라고 생각하시면 됩니다. 일종의 저장소입니다.

Upload 옆에 New 파일에서 python2를 클릭하시면 





5. 또 다른 어떤 창이 켜지는데 여기서도 코딩이 가능합니다. 그리고 추가로 문서처럼 꾸밀수도 있죠



6. 간단하게

a = 1

b = 2

print a+b 

를 코딩하고 재생버튼을 누르니 실행이 됩니다.



7. 여기서는 Markdown 언어를 지원합니다. 그렇기에 문서화 작업을 하셔도 좋습니다.







그리고 저장은 컨트롤 + s를 누르시면 저장이 되며 


창을 나와서 Home 화면을 보면저장이 된것을 확인하실 수 있습니다.




그리고 아까 잊혀진... cmd창 을보시면 각종 log들이 찍혀있을 겁니다.


요기서 control + c 를 두번 누르시면 프로그램이 종료 됩니다.





요기서 dir 명령어로 파일 내부 목록을 보시면 Untitled.ipynb 파일이 생성된 것을 확인 가능합니다.






여태까지 파이썬 통합 IDE 설치와 코딩할 수 있는 에디터 들에 대해서 알아 보았습니다.


다음에는 MARKDOWN 언어를 어떻게 꾸미는가와 파이썬이란 무엇인가 


이런 이야기를 공부해서 포스팅 해보겠습니다.


















Posted by 구레이더

갑자기 error: failed to find Build Tools revision 23.0.0 rc3 오류가 났다.


인터넷을 뒤벼보니 gradle에서 새로이 세팅하라고 한다.


나는 gradle Scripts 에 있는 build.gradle(Module.app)에 있는 


compileSdkVersion 22
buildToolsVersion '23.0.0' 를 암만 고쳐봐야 소용이 없었다. 그래서

File -> Project Structure 에 들어가서



다음과 같이 설정한 뒤에 확인을 누르니 해결되었다.


참조 : http://stackoverflow.com/questions/32111579/errorfailed-to-find-build-tools-revision-23-0-0-rc3


Posted by 구레이더

이것은 기본지식이라고 할수도 있으며 아니라고 할수도 있다.


가끔 ContentProvier에서 insert() 메소드 속에서 볼 수 있는 구문이다.


많은 컨텐트 프로바이더가 존재하며 컨텐트 프로바이더는 DB를 사용하기 위하여 선언을 한다.


그렇기에 DB를 변경하고 나면 그 변경된 사항에 대해서 나머지 컨텐트 프로베이더를 위하여 알려주어야 한다.


일단, 인터넷에서 보았을 때 이것에 대해서는 선택사항이라고 봤다.


다른 컨텐트프로바이더들에게 알리는 구문은 

getContext().getContentResolver().notifyChange(insertUri, null) 이다.

여기서 insertUri를 주목하라. 

이전에 컨텐트 프로바이더를 사용하기 위한 기본지식 1.에서도잠깐 언급하였는데

 URI는 다음과 같이 구성되어있다.



맨끝에 4번의 경우 해당 DB의 행이다. 예를들면, 다음과 같이 

화살표가 가리키는 행은 4번째 행에 해당한다.


SQLiteDatabase의 insert 메소드는 return 값으로 새로운 행에 대한 정수를 return을 한다.

이때 새로운 행이 데이터베이스에 추가가 되었고 나머지 컨텐트 프로바이더들은 ㅇ이것을 알아야 한다. 

그리고 그 알리는 소스가 아까 언급하였던 

getContext().getContentResolver().notifyChange(insertUri, null) 이다.

notifyChange()함수에서 첫번째 인자 uri 는 무엇을 말할까?

변경된 부분의 Uri 즉 경로를 말한다.


예를 들어, Uri가

content://com.provider.students/students/4

와 같다면

students 테이블의 4번째 id 레코드가 삭제되었다는 것을 의미 하는 것이다.

 

content://com.provider.students/students

와 같다면

students 테이블의 여러개의 레코드가 삭제되었다는 것을 의미 하는 것이다.


그렇다면 insert 구문이 생성될 때마다 1,2,3 부분의 값과 4번을 합쳐서 URI 객체를 만들고 해야할까?

이것에 대한 해답이 바로 ContentUris.withAppendedId()이다. 

ContentUris.withAppendedId()은 2개의 인자가 들어간다. 

URI 와 id값이다.

  •  

    (Uri contentUri, long id)

    Parameters
    contentUri- 시작되는 URI 객체
    id

    - 추가될 id 값(insert시 return 되는 값)

    Returns
    • contentUri 와 id가 합처진 Uri 객체 값 - contentUri/id 형태

이렇게 ContentUris.withAppendedId(uri,di)값을 새로운 URL 객체에 저장하여서

getContext().getContentResolver().notifyChange(insertUri, null)로 사용하면 된다.

사용예)

Uri insertUri = ContentUris.withAppendedId(uri, id);
getContext().getContentResolver().notifyChange(insertUri, null);



Posted by 구레이더

http://developer.android.com/reference/android/content/UriMatcher.html#NO_MATCH

<안드로이드 디벨러퍼 사이트>


UriMatcher란 무엇일까? 라는 질문이 언제 생각날까? 바로 사용할 때이다. 


그렇다면 언제 사용할까? 필자의 경우에는 ContentProvider를 마주하는 순간 이것이 무엇에 쓰는지 궁금했다.


왜냐하면 그렇지 아니하고는 ContentProvider 예제를 보아도 이해가 가지 않았기 때문이다.


그렇다면 본론으로 UriMatcher란 무엇인가? 

이름에서도 유추가 가능하다시피 두개의 Uri값을 비교하여 해당하는 값(약속된 값을)을 출력해주는 기능을 하는 class이다.


UriMatcher는 2개의 메소드만을 가진다. 

1. 바로 약속된 값을 등록할 때 사용하는 addURI()

2. 새로운 URI를 가져와서 등록된 URI와 비교하여 해당하는 정수값을 반환해주는 match()이다.




URI 크게 authority 와 path로 구성되어 있다.


1. 컨텐트 프로바이더에 의해 제공되는 데이터임을 알립니다. 이 부분은 변하지 않습니다.
2. 컨텐트 프로바이더의 authority부분입니다. 각 컨텐트 프로바이더의 고유 이름입니다.
3. 컨텐트 프로바이더의 Path 부분이며, 어떤 데이터를 반환할지를 이 부분을 통해 지정합니다. 
4. 3번 부분의 Path 하위의 데이터 중 하나를 가리키는 것으로, 해당 데이터의 ID를 나타냅니다.


1) addURI

addURI 를 사용할 때 인자는  3개가 있다.

authority : 컨텐트 프로바이더 중에서 어느 authority는 해당하는지 구분을 할 때 사용 지정된 값이 있다. 

path : authority 중에서 다음 path에 해당하며 path/# 으로 하는 경우 path 다음에 모든 숫자를 지칭하며

       path/* 의 경우 숫자와 문자를 포함한다.

code  : match() 메소드 사용시 일치한다면 반환하는 정수를 의미한다.


사용 예 )

private static final int PEOPLE = 1;
   
private static final int PEOPLE_ID = 2;
   
private static final int PEOPLE_PHONES = 3;
   
private static final int PEOPLE_PHONES_ID = 4;
   
private static final int PEOPLE_CONTACTMETHODS = 7;
   
private static final int PEOPLE_CONTACTMETHODS_ID = 8;

   
private static final int DELETED_PEOPLE = 20;

   
private static final int PHONES = 9;
   
private static final int PHONES_ID = 10;
   
private static final int PHONES_FILTER = 14;

   
private static final int CONTACTMETHODS = 18;
   
private static final int CONTACTMETHODS_ID = 19;

   
private static final int CALLS = 11;
   
private static final int CALLS_ID = 12;
   
private static final int CALLS_FILTER = 15;

   
private static final UriMatcher sURIMatcher = new UriMatcher(UriMatcher.NO_MATCH);

   
static
   
{
        sURIMatcher
.addURI("contacts", "people", PEOPLE);
        sURIMatcher
.addURI("contacts", "people/#", PEOPLE_ID);
        sURIMatcher
.addURI("contacts", "people/#/phones", PEOPLE_PHONES);
        sURIMatcher
.addURI("contacts", "people/#/phones/#", PEOPLE_PHONES_ID);
        sURIMatcher
.addURI("contacts", "people/#/contact_methods", PEOPLE_CONTACTMETHODS);
        sURIMatcher
.addURI("contacts", "people/#/contact_methods/#", PEOPLE_CONTACTMETHODS_ID);
        sURIMatcher
.addURI("contacts", "deleted_people", DELETED_PEOPLE);
        sURIMatcher
.addURI("contacts", "phones", PHONES);
        sURIMatcher
.addURI("contacts", "phones/filter/*", PHONES_FILTER);
        sURIMatcher
.addURI("contacts", "phones/#", PHONES_ID);
        sURIMatcher
.addURI("contacts", "contact_methods", CONTACTMETHODS);
        sURIMatcher
.addURI("contacts", "contact_methods/#", CONTACTMETHODS_ID);
        sURIMatcher
.addURI("call_log", "calls", CALLS);
        sURIMatcher
.addURI("call_log", "calls/filter/*", CALLS_FILTER);
        sURIMatcher
.addURI("call_log", "calls/#", CALLS_ID);
   
}


2) match


addURI로 등록된 URI들과 새로운 URI를 비교하여 return 값을 받는다.


인자로는 uri 하나를 가진다.


사용예)


보통 switch문을 활용하여 사용한다.

public String getType(Uri url)
   
{
       
int match = sURIMatcher.match(url);
       
switch (match)
       
{
           
case PEOPLE:
               
return "vnd.android.cursor.dir/person";
           
case PEOPLE_ID:
               
return "vnd.android.cursor.item/person";
... snip ...
               
return "vnd.android.cursor.dir/snail-mail";
           
case PEOPLE_ADDRESS_ID:
               
return "vnd.android.cursor.item/snail-mail";
           
default:
               
return null;
       
}
   
}



Content Provider 사용을 위한 기본지식 1. UriMatcher 사용법


Posted by 구레이더

안녕하세요. 요즘 안드로이드를 공부하고 있는데 역시 자바에 대한 깊이의 부족함을 느끼곤 합니다.


이번에 제가 만난 코드는 static 초기화였습니다.



이게 어디에 있냐하면 클래스를 정의하는 멤버변수를 선언하는 곳에 있는겁니다. 

그래서 검색을 해보니 static 초기화라고 합니다.


그래서~!!


쇠뿔도 단김에 빼라고 자바의 대표적인 초기화 4가지를

포스팅하겠습니다.


제가 생각하는 자바에서의 초기화는 4가지가 있습니다. 지극히 주관적이고 아는게 4개 뿐입니다;; 더 아시는 분이 계시다면 댓글로 알려주세요

1. 아까도 말씀드린 staic 초기화

2. 인스턴스 초기화

3. 명백한 초기화

4. 생성자 초기화 

가 존재합니다.

일단 개념부터 말씀드린 뒤에 어디에 사용되는지 알려드리면서 각각의 초기화의 순서에 대하여 알아보겠습니다.

-개념-

1. static 초기화란 staic을 선언한뒤 블록 안에다가 값을 넣어 초기화 하는 기법입니다. 사실 초기화 말고도 다른 역활을 할 수 있습니다. 형식은 


2. 인스턴스 초기화란 staic이 없는 상황에서 블록으로 감싸 그안에 로직을 정의하는 것입니다.

3. 명백한 초기화란 다들 아시다시피 저글링이라는 클래스를 정의를 한다면 모든 저글링의 체력은 35이며 공격력과 방여력이 모두 일정합니다. 그렇다면 다른 값이 없으니 명백한 초기화

}

이런 형식이 되는것이죠.

4. 마지막으로 생성자 초기화는 다들 아시다 시피 생성자를 호출할 때 값을 넘겨 값에 따라 다르게 초기화를 하는 기법입니다.

대충 이런 형식입니다.


자 그러면 이들이 무엇이 다르냐 하는 것은 바로 실행 순서 입니다.


언제 실행되느냐 어떤 점이 좋으냐가 바로 중요한 점이죠.


3. 명백한 초기화와 4. 생성자 초기화는 대강 감이 잡히실 겁니다.

명백한 초기화는 초기화를 한번하면 그 객체를 몇번생성하든 초기화를 한번만 하면 된 다는 것이 장점이며

생성자 초기화는 객체에 따라 다른 상태를 주어서 객체마다 다른 특성을 나타내도록 할 수 있습니다.


그렇다면 1. static 초기화와 2. 인스턴스 초기화는 어떤 점이 다를가요? 

바로 실행 순서와 실행되는 조건입니다.

static 초기화 블록은 클래스 변수의 복잡한 초기화에 사용된다. 클래스가 처음 로딩될 때 한번만 수행된다.

인스턴스 초기화 블럭은 인스턴스 변수의 복잡한 초기화에 사용된다. 인스턴스가 생성될때 마다 수행된다. (생성자보다 먼저 수행된다.)


여기에 관해서는 


Powerful Programming 님의 블로그를 참조하였습니다.

http://warmz.tistory.com/50


인스턴스 변수의 초기화는 주로 생성자를 사용하기 때문에, 인스턴스 초기화 블럭은 잘 사용되지 않는다. 대신 클래스의 모든 생성자에서 공통적으로 수행되어져야 하는 코드가 있는 경우 생성자에 넣지 않고 인스턴스 초기화 블럭에 넣어 두면 코드의 중복을 줄일 수 있어서 좋다.

Car(){
    System.out.println("Car 인스턴스 생성");
    color="White";
    gearType="Auto";
}
Car(String color, String gearType){
    System.out.println("Car 인스턴스 생성");
    this.color = color;
    this.gearType=gearType;
// 인스턴스 블럭
{  System.out.println("Car인스턴스 생성");  }

Car(){
   color="White";
   gearType="Auto";
}
Car(String Color, String gearType){
   this.color=color;
   this.gearType=gearType;


이처럼 코드의 중복을 제거할 수 있다.


자 그렇다면 파일을 실행 했을 때 무엇이 먼저 실행되는 지를 살펴 보자.



결과 값

1. static { }

2. BlockTest bt = new BlockTest(); 

3. { }

4. 생성자

5. BlockTset bt2 = new BlockTest();

6. { }

7. 생성자



이상으로   static 초기화 / 인스턴스 초기화 / 명백한 초기화 / 생성자 초기화 

에 대한 포스팅을 마치겠다.

Posted by 구레이더

안녕하세요. 이클립스 한글 주석 크기 작을 때 해결방법을 가르쳐 드리겠습니다.


메뉴창에서 

Windows -> Preferences -> General -> appearnce

 를 들어가면 다음과 같은 창이 나옵니다.



여기서 text Font를 들어가면 다음과 같은 창이 나옴



그 다음 스크립트를 [키릴자모]로 설정하면 


보시는 바와 같이 한글이 커지게 된것을 확인하실 수 있습니다.



'컴공 > 이클립스' 카테고리의 다른 글

이클립스 한글 주석 크기 작을때 해결방법!!  (0) 2015.08.18
Posted by 구레이더