[리니지M] 리니지M 발열 해결 방법


리니지가 15년전 게임이라고 해도 모바일로 오면서 사양이 절대 낮은 게임은 아니다.


물론 기능도 더 많아졌고



그리고 구동환경은 PC가 아니라 핸드폰


어마어마한 발열에 시달리게 된다.



이런 핸드폰 발열을 잡는 방법에 대해서 알아보자



1. 밝기 조절


어차피 실내에서 할거면 핸드폰 밝기를 줄이는 것이 전력소모 면에서나 발열에서나 좋다


요즘 핸드폰 밝아서 밝기를 반으로만 해놔도 실내 형광등 아래에서는 충분히 볼 수 있다.


그리고 어차피 오토버튼 눌러놓고 가끔씩 확인 할 거라면 그냥 밝기를 다 내려놔도 괜찮다.




2. 옵션


리니지M 설정에 가서 그래픽 관련 설정들을 낮춰놓고 플레이 하면 아주 직접적으로


발열에 영향을 끼친다. 




3. 핸드폰 커버


핸드폰 커버를 벗겨놓고 플레이 하도록 하자. 핸드폰을 감싸고 있는 커버가 열을 밖으로 빠져나가지 못하게 해서


더 핸드폰이 뜨거워 지는 경우가 있기 때문이다.



4. 핸드폰 받침대


핸드폰을 그냥 바닥이나 책상위에 올려놓지 말고 핸드폰과 바닥 사이의 공간을 만들어서 


일종의 통풍구를 만드는 것이다.


핸드폰 아래부분과 책상이나 바닥사이가 떨어져 있으면 그 사이로 공기가 지나가면서


일종의 냉각 효과를 내어 주기 때문이다.




이 팁들은 핸드폰 게임들을 하면서 체감한 것들이니 믿어도 좋다 그리고 사실


많은 사람들이 알고 있을 팁이지만 혹시나 아재들 핸드폰 발열때문에 걱정 할까 싶어서


포스팅을 해 본다.

리니지2 레볼루션 녹스 튕김현상 해결 방법



모바일게임이라는 말이 과연 의미가 있을까 싶을정도로 녹스, 미뉴 등 VM을 이용하여 PC로 즐기는 사람들이


참 많아졌다. 물론 PC의 편리성보다 다중아이디 동시접속 부케키우기가 목적인 사람들이 더 많겠지만 말이다.



리니지2 레볼루션의 녹스 실행방법은 딱히 언급하지 않겠다. 여러군데 방법들도 많이 퍼져있고 


대신 게임 실행도중 튕기는 방법에 대한 해결책에 대해서 이야기 해 보려고 한다.



1. 고급설정


녹스의 우측 상단 톱니바퀴 모양 아이콘을 클릭해


설정창을 열고


고급설정에서 성능설정을 사용자지정 으로 놓는다


그리고 CPU 개수는 1 메모리는 2048로 지정


그래픽모드는 호환모드로 놓으면


팅김이 줄어들게 된다.


컴퓨터 사양이 좋지 않을 경우 메모리는 2048에서 1024로 지정해 놓으면 된다.



CPU개수를 2개 이상으로 해놓으면 튕김이 더 자주일어나는 것 같다.




2. 게임 설정


게임내 옵션에서 속도는 최고  품질은 낮음으로 하고


사운드 채널품질 낮음  이팩트보이기 모두끔


최대인원표시 0%로 해놓으면 팅김이나 렉이 줄어든다


최대인원 표시가 0%라고 해도 주변 사람들은 어지간히 보일만큼 보인다.




3. 최신버전 유지


녹스는 최신버전으로 유지하고 가끔씩 새로 패치된 것이 있나 확인하러 간다


패치를 자주 해주는 편이기 떄문에 팅김이 심할땐 패치사항이 있나 확인해보도록 하자







2016/12/23 - [Yame Game Life/Lineage2 revolution] - [리니지2 레볼루션] 크리스마스 이벤트

2016/12/23 - [Yame Game Life/Lineage2 revolution] - [리니지2 레볼루션] 탄력의 효과는 무엇인가 [답변]

2016/12/22 - [Yame Game Life/Lineage2 revolution] - [리니지2 레볼루션] 시체렉 해결 방법

2016/12/22 - [Yame Game Life/Lineage2 revolution] - [리니지2 레볼루션] 혈맹 만들기, 포상, 혈원초대

2016/12/22 - [Yame Game Life/Lineage2 revolution] - [리니지2 레볼루션] 합성, 승급, 강화, 집혼석, 승급석, 주문서 관련한 정보

2016/12/20 - [Yame Game Life/Lineage2 revolution] - [리니지2 레볼루션] 집혼석 싸게 제거,추출 하기 개꿀팁

2016/12/20 - [Yame Game Life/Lineage2 revolution] - [리니지2 레볼루션] 아데나 모으기, 노가다 방법

2016/12/18 - [Yame Game Life/Lineage2 revolution] - [리니지2 레볼루션] 글자 이벤트 획득경로 및 보상 정보

2016/12/16 - [Yame Game Life/Lineage2 revolution] - [리니지2 레볼루션] 무한뽑기 버그 발생

2016/12/16 - [Yame Game Life/Lineage2 revolution] - [리니지2 레볼루션] 피의증거 노가다

2016/12/16 - [Yame Game Life/Lineage2 revolution] - [리니지2 레볼루션] 31렙 전직퀘스트 공략

2016/12/16 - [Yame Game Life/Lineage2 revolution] - [리니지2 레볼루션] 초반 퀘스트 보스몹 잡기 팁

2016/12/16 - [Yame Game Life/Lineage2 revolution] - [리니지2 레볼루션] 레벨업 공략, 레벨업 막힐때 팁

2016/12/15 - [Yame Game Life/Lineage2 revolution] - [리니지2 레볼루션] 비정상적인 동작으로 인하여 팝업 튕김현상

2016/12/15 - [Yame Game Life/Lineage2 revolution] - [리니지2 레볼루션] 무과금러 공략&소소한 팁

2016/12/15 - [Yame Game Life/Lineage2 revolution] - [리니지2 레볼루션] security detection 해결방법




보통 전자정부같은 Spring기반의 프로젝트를 할때 에러가 나던가 혹은 서버에서 어떤 액션이 일어나면 이클립스 콘솔창에


많은 정보들이 후두두둑 하고 올라간다.


내가 날린 쿼리가 무엇인지, 내가 요청한 URL은 무엇있지 버그나 오류가 있을땐 어떤 오류인지 온갖 정보들이 나타나는데


가끔 쿼리를 실행해도 어떤 쿼리를 실행했는지 나타나지 않는 경우가 있다. 단지 오류가 났을때만 콘솔창에 로그를 뿌려주는 경우


이럴때 버그가 있더라도 시스템에서 오류가 나지 않는다면  어떤 쿼리를 실행시켰는지 어떤 url을 요청했는지 알기 힘들게 된다.



이런경우의 대부분은 로깅 프로퍼티의 설정 레벨이 warn 정도로 되어 있는 경우 인것 같다.


정상적인 쿼리도 콘솔창에 보이게 할수 있도록 설정하는 방법을 알아보자.



log4j를 쓰던 log4j2를 쓰던 logback를 쓰던 설정 xml파일의 이름엔 [log]가 들어간다


프로젝트의 구성,설계에 따라 해당 xml파일은 리소스에 들어가는 경우도 있고 web-inf에 들어가는 경우도 있다


파일을 열어 보면


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration 
    xmlns:log4j="http://jakarta.apache.org/log4j/" 
    debug="false">
    
    <appender name="console" class="org.apache.log4j.ConsoleAppender">
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d %5p [%c] %m%n" />
        </layout>   
    </appender>
    
    <logger name="egovframework" additivity="false">
        <level value="DEBUG"/>
        <appender-ref ref="console"/>
    </logger>
 
    <!-- log SQL with timing information, post execution -->
    <logger name="jdbc.sqltiming" additivity="false">
        <level value="WARN" />
        <appender-ref ref="console" />
    </logger>
 
    <logger name="jdbc.audit" additivity="false">
        <level value="WARN" />
        <appender-ref ref="console" />
    </logger>
    
    <logger name="jdbc.resultset" additivity="false">
        <level value="WARN" />
        <appender-ref ref="console" />
    </logger>
    
    <logger name="org.springframework" additivity="false">
        <level value="INFO" />
        <appender-ref ref="console" />
    </logger>
    
    <logger name="java.sql" additivity="false">
        <level value="WARN"/
        <appender-ref ref="console"/
    </logger
    
    <root>
        <level value="INFO" />
        <appender-ref ref="console" />
    </root>
                       
</log4j:configuration>
 
cs


이런식으로 되어 있을 것이다. 이부분은 log4j나 logback나 크게 다른 부분은 없다.


단지 로거 안에 레벨이 들어가냐 안들어가냐 어펜드가 포함되냐 안되냐 그리고 최상단에의 정보들같은  이런 약간의 차이만 있을 뿐이다.



보면 <level value="warn"/> 이라고 되어있는데


여기서 밸류값에 들어가는 종류는


DEBUG, INFO, WARN, ERROR, FATAL, ALL, OFF 가 있다.



ALL은 모든 로깅

OFF는 로깅 해제


DEBUG = 디버깅

INFO = 강조정보

WARN = 경고

ERROR = 오류

FATAL = 심각한 오류


라는 의미 이며


WARN은 경고수준 이하 레벨의 정보는 로깅하지 않는 다는 뜻이다

그러니 정상적으로 돌아가는 SQL쿼리문은 콘솔창에 나타나지 않으니


레벨의 밸류를 전부 DEBUG 로 바꿔주자


로거 name="" << 이부분의 네임은 어떤 부분에서 로그를 띄워줄지 적는 부분이다.


뭔지 모르겠고 sql만 띄우고 싶다면 jdbc.sqltiming  이부분의 레벨만 DEBUG 로 바꿔보도록 하자


설정에 따라  


1
2
3
4
5
6
7
<logger name="org.springframework" level="DEBUG " additivity="false">
     <appender-ref ref="console" />
</logger>
  
<logger name="org.mybatis" level="DEBUG "  additivity="false">
    <appender-ref ref="console" />
</logger>
cs


이런식의 스프링프레임워크나 마이바티스에 관한 로그를 띄울 수도 있다.



아무튼 원하는 부분의 레벨을 DEBUG로 설정한 후 구동시키면 정상적으로 실행되는 정보들도 출력이 된다.


additivity 이부분은 

http://seosh81.info/?p=404  << 이분의 블로그에서 잘 설명이 되어 있으니 궁금하면 들어가서 보자


간단히 설명하자면 로그이벤트를 부모에게 전달하도록 하느냐 마느냐 정도의 설정부분인것 같은데


어차피 나는 야매개발자라서 정확하고 자세하겐 모른다.



 <appender name="console" class="org.apache.log4j.ConsoleAppender">
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d %5p [%c] %m%n" />
        </layout>   
    </appender>


이부분에서 ConversionPattern이부분의 밸류는 콘솔에 표현되는 표현식을 지정하는 부분이다.


표현식은 아래와 같다.


%m: 로그 내용 출력
%p: debug, info, warn, error, fatal 등의 priority 출력
%r: 어플이 시작 후 이벤트가 발생하는 시점까지의 경과시간 밀리세컨드로 출력
%c: package 출력
%c{n}: n(숫자) 만큼의 package를 가장 하단 부터 역으로 출력
        예) %c{2} 일때 a.b.c 는 b.c 로 출력된다.
%n: 개행문자 출력. 플렛폼에 따라 \r\n 또는 \n 출력.
%d: 이벤트 발생 날짜 출력 ( 프로그램의 실행속도를 느리게 한다.)
        예) %d{HH:mm:ss} 또는 %d{dd MMMM yyyy HH:mm:ss}
%C: 호출자의 클래스명 출력
        예) %C{2} 일때 a.b.c.TestClass 는 c.TestClass 로 출력된다.
%M: method 이름.
%F: 프로그램 파일명.
%l: caller의 정보
%L: caller의 라인수
%x: thread와 관련된 NDC(nested diagnostic context) 
%X: thread와 관련된 MDC(mapped diagnostic context) 
%%: % 표시를 출력  
%t: 쓰레드 이름


로그띄울줄 몰라서 들어온 사람이라면 어차피 저 표현식을 쓸일은 없을테니 그냥 이런게 있다는것만 알아두고 넘어가자.



안드로이드


android 2d Game 기초



android setting



안드로이드 플랫폼 구성.


flatform - linux


안드로이드에서 사용하는 자바는 구글이 배포하고 제공하는 실행환경임.

구글에서 배포하는 라이브러리들은 자바가 아니라 안드로이드 플랫폼임.


단 그 플랫폼을 이용하기 위한 언어가 자바와 같은 뿐이다.


자바버츄얼 머신이 아니라 달빅 버츄얼 머신을 사용.

OpenGL, SQLite 등 라이브러리를 제공하는데 C로 만들어져 있으나

그것을 자바로 사용 할수 있도록 자바라이브러리로 제공


안드로이드 플랫폼 구조






프로젝트 기본구조 익히기.




시작함수는 잊자.


절차적 프로그램의 기본함수인 Main()이 없다.


단 메인을 대신하는 설정파일이 있다.(MainAtivity, MainFrame)


안드로이드는 도스에서 개발 못함.


그래들 - 개발할땐 필요없음 지워도 됨, 하지만 나중에 어차피 추가 해야함


안드로이드 프로그램을 위한 필수 요소


manifest - 어플리케이션에 대한 전반적인 정보를 담고있는 파일. 프로필.


메인 -> 자바  -> 클래스생성(메인엑티비티) -> 엑티비티 이즈상속


여러개의 액티비티 중 가장 먼저 실행되어야 할 놈을 <intent-filter>로 지정


   <action android:name="android.intent.action.MAIN"/> 메니페스트에서 제일 먼저 떠야할 엑티비티 라고 말해주는 거.






폰 설정

환경설정 -> 애플리케이션 관리자 -> usb디버깅 체크



뷰 그룹.


액티비티엔 하나의 뷰만 가질수 있다


하지만 뷰 그룹을 사용하면 여러개를 사용할수 있다?

ViewGroup - 추상클래스

 - 어떻게 배치할 것인가


Linear - 일렬 옆으로 쭉

Relative - 상대적인 기준 정하고…. 설정

Frame - 여러개가 있지만 일렬(맨 마지막것만 보이게)(카드 덱 처럼)

Grid- 격자형

Absolute- 절대 위치좌표 집어주고  설정




리소스를 활용한 배치.


리소스를 이용한 방식???

XML로 코드를 대신 작성하라고?


dpi :: 1인치당 160개의 픽셀 - 1 기준


픽셀단위로 크기를 정하면 폰마다 다르게 나옴


DP로 해야댐




안드로이드 어플리케이션의 구성 요소는 다음과 같다.

* 액티비티(Activity)

* 서비스(Service)

* 브로드캐스트 리시버(Broadcast Receiver)

* 콘텐트 프로바이더(Content Provider)



app_hier.png

1. 액티비티(Activity)

- 어플리케이션의 한 '화면'을 의미한다.

- 휴대용 단말기의 성능은 PC에 비하면 메모리가 턱없이 부족하다. 때문에 액티비티는 액티비티의 상태(활성/비활성)와 액티비티 생애주기(Activity Lifecycle)에 따라 생성되거나 소멸된다.

- 화면에 표시되어 있는 상태가 아니라면 비활성 상태(Inactive)가 되어 액티비티 내에서 처리되는 작업 또한 중단된다.



2. 서비스(Service)

- 백그라운드에서 실행되는 컴포넌트.

- 예를 들면 음악 재생 어플리케이션.

- 서비스는 UI가 없기때문에 자신의 동작 여부를 알림 메세지 혹은 토스트를 통해 사용자에게 알린다.



3. 브로드캐스트 리시버(Broadcast Receiver)

- 인텐트(Intent) 형태의 방송 메시지(Broadcast Message)를 수신하는 역할을 한다.

- 주로 시스템의 상태(배터리 상태, 통신 상태, SD카드 삽입 등)를 알리기 위해 사용하지만, 어플리케이션에서 특정 작업이 완료되었을 때 처리할 동작을 구현할 때도 사용한다.

- 서비스와 마찬가지로 UI를 가지고 있지 않기 때문에 사용자에게 작업의 진행정도나 상태 등을 알리기 위해 알림 메시지나 토스트를 사용한다.



4. 콘텐트 프로바이더(Content Provider)

- 한 어플리케이션 내의 데이터를 다른 어플리케이션에서도 사용할 수 있게 해준다.(SD카드가 아닌 내부)

- 공유하려는 데이터가 있는 어플리케이션에 데이터를 공유할 수 있는 '통로'의 역할을 한다.

- 콘텐트 프로바이더를 통해 외부에서 접근할 수 있는 데이터의 범위, 방법 등을 지정하여 어플리케이션내의 데이터를 안전하고 공유할 수 있다.

- 콘텐트 프로바이더에 접근하려면 콘텐트 리졸버(Content Resolver)가 필요하다.



5. 인텐트(Intent)

- 액티비티, 서비스 호출 및 브로드캐스트 리시버에 메시지를 전달할 떄 사용.

- 내부에 어떤 형식의 정보가 담겨 있느냐에 따라 명시적 인텐트(Explicit Intent)와 암시적 인텐트(Implicit Intent)로 나뉜다.


- 명시적 인텐트 : 호출하거나 메시지를 보낼 컴포넌트가 명확하게 지정되어 있다. ex) 철수

- 암시적 인텐트 : 대상 컴포넌트가 명확하게 지정되어 있지 않고, 대상의 속성만 지정되어 있다. ex) 학생

이러한 암시적 인텐트를 처리하려면, 인텐트 필터(Intent Filter)를 사용하여 해당 컴포넌트의 속성을 안드로이드 시스템에 등록해야 한다.



6. 알림 메시지(Notification)

- 알림 바(Notification bar)나 알림 패널(Notification Panel), 소리, 진동, LED 점멸 등을 통해 사용자에게 특정 이벤트를 알릴 때 사용.

- 서비스, 브로드캐스트 리시버가 사용.



7. 토스트(Toast)

- 특정 이벤트를 사용자에게 알릴 때 사용하며, 주로 간단한 메시지를 표시한다.



클릭 이벤트 처리하기

- 레이아웃 구성과 Toasts활용하기

+ Recent posts