나름 최신의 Intel 프로세스 기반 노트북을 구입했습니다.

데스크톱에서는 아무런 문제가 없던 무선 마우스(MX Master 3)와 키보드가 버벅거림이 없어지지 않고 사용하다 멈추고, 다시 풀리고... 엄청 힘들게 하더군요.

문제는 Intel 최신 노트북 기준에서 매우 흔하게 나타나는 증상입니다.

그런데 그런 글을 따라 해도 잠시 해결되더니 다시 현상이 반복.

 

아래처럼 USB 허브의 전원 관리 옵션을 수정해서 해결 완료했습니다.

요약하면 마우스, 키보드가 물려 있는 USB 허브의 전원 관리 해제하는 것!

 

 

1. Window key + X  누르고, 장치 관리자를 선택

 

2. 장치 관리자 - 버벅거리고 있는 마우스 선택 (그런데 어느 마우스? 아래 3에서 확인)

 

3. 마우스 각각을 선택 후 '이벤트' - 정보 부분에 보이는 VID_XXX 부분을 기억

모든 마우스에 대해 확인(별도 기록 해 두세요), 마우스를 뽑습니다(혹은 무선 마우스 어댑터 뽑기)

그리고 앞서 기록 해 둔 정보 부분과 비교하여 대상 마우스를 선택합니다.

 

4. 대상 마우스(HID 규격 마우스) 선택 상태에서, 아래처럼 '보기'메뉴에서 '연결 별 디바이스' 선택합니다.

 

 

5. 아래처럼 Tree 형태로 표시됩니다.

 

6. 상위에 위치한 'USB 허브'를 찾아 선택합니다.

이번 예시에서는 '일반 USB 허브' 선택

 

7. Enter 혹은 마우스 더블 클릭으로 속성을 열고, '전원 관리'탭을 선택

마지막으로 [v]전원을 절약하기 위해 컴퓨터가 이 장치를 끌 수 있음(A) 을 선택하여 check를 없앱니다. 

아래처럼 만들면 됩니다.

 

고생하셨습니다. 이제 끊김 없는 마우스, 키보드 사용을 ~

 

** 저는 동일 허브로 무선 마우스, USB 키보드를 연결했기에 무선 마우스가 물린 허브만 찾아서 모두 해결했습니다.


집에서 java app.을 실행 하려 했더니 실행 즉시 app.이 닫혀 버리는 증상이 확인 되었습니다.

해당 app.을 다른 컴퓨터(Windows 7 구동)에서는 정상 작동 하는 것을 확인 했던 것이라 매우 이상한 상황!


Java crash log의 핵심만 요약 하면 아래와 같습니다.

. . .

# A fatal error has been detected by the Java Runtime Environment:

#

#  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x0000000062146adf, pid=8912, tid=0x00000000000009b8

#

# JRE version: Java(TM) SE Runtime Environment (8.0_131-b11) (build 1.8.0_131-b11)

# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.131-b11 mixed mode windows-amd64 compressed oops)

# Problematic frame:

# C  [msvcr100.dll+0x36adf]


. . .

. . .


Stack: [0x000000001f680000,0x000000001f780000],  sp=0x000000001f77ecc8,  free space=1019k

Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)

C  [msvcr100.dll+0x36adf]


Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)

J 2701  sun.awt.shell.Win32ShellFolder2.getDisplayNameOf(JJI)Ljava/lang/String; (0 bytes) @ 0x00000000028412c9 [0x0000000002841280+0x49]

j  sun.awt.shell.Win32ShellFolder2.access$1600(JJI)Ljava/lang/String;+4

j  sun.awt.shell.Win32ShellFolder2$13.call()Ljava/lang/String;+15

j  sun.awt.shell.Win32ShellFolder2$13.call()Ljava/lang/Object;+1

J 1987 C1 java.util.concurrent.FutureTask.run()V (126 bytes) @ 0x0000000002d4764c [0x0000000002d47400+0x24c]

. . .

. . .


결론은 아래의 bug report를 보면 되는데.

요약 하면 Windows 10 최신 update로 인하여 GOD mode를 설정한 폴더명이 NULL 로 처리 되어 java awt내부 code에서 crash를 일어키는 현상 입니다.

MS를 미워할 수는 없는것이 결국 java에서 exception handling을 안해서 여서...


그런데 수정 내용을 보니, 원 Java 9에서만 수정 반영 했다는 것! 

Java 8은 그냥 쌩....


그래서 해결 방법은 만일 바탕화면에 GOD mode 설정한 폴더가 있다면 (이름이 없습니다) 이것을 삭제 하거나 다른 폴더로 이동 후 java app.을 실행 하면 됩니다.


Java 9 을 사용할 계획이 없다면 가장 적절한 선택일 것 같습니다.


위 내용에 대한 java bug report는 아래 URL에서 확인 가능 합니다.

http://bugs.java.com/bugdatabase/view_bug.do?bug_id=8179014


관련 사항은 아래와 같이 여러 리포트가 있습니다.

Backport:
Backport:
Duplicate:
Duplicate:
Duplicate:
Duplicate:
Duplicate:
Duplicate:
Duplicate:
Duplicate:
Duplicate:
Duplicate:
Duplicate:
Duplicate:
Duplicate:
Duplicate:
Duplicate:
Relates:
Relates:


이로서 Bug는 가만히 있어도 (남들에 의해서) 만들어 진다는 진리? 를 아주 큰 S/W 기업에서도 확인이 되었네요^^ (그렇다고 엄청난 예외 code를 넣는 것도 쉽지 않으니)


보너스~ 해당 문제 해결 code 변경 사항은 아래와 같습니다.

http://hg.openjdk.java.net/jdk9/jdk9/jdk/rev/a7c8147f1891


files src/java.desktop/windows/native/libawt/windows/ShellFolder2.cpp test/javax/swing/JFileChooser/GodMode/JFileChooserTest.java

--- a/src/java.desktop/windows/native/libawt/windows/ShellFolder2.cpp	Tue May 09 12:19:08 2017 -0700
+++ b/src/java.desktop/windows/native/libawt/windows/ShellFolder2.cpp	Thu May 11 12:41:35 2017 +0530
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -205,14 +205,19 @@
 static jstring jstringFromSTRRET(JNIEnv* env, LPITEMIDLIST pidl, STRRET* pStrret) {
     switch (pStrret->uType) {
         case STRRET_CSTR :
-            return JNU_NewStringPlatform(env, reinterpret_cast<const char*>(pStrret->cStr));
+            if (pStrret->cStr != NULL) {
+                return JNU_NewStringPlatform(env, reinterpret_cast<const char*>(pStrret->cStr));
+            }
+            break;
         case STRRET_OFFSET :
             // Note : this may need to be WCHAR instead
             return JNU_NewStringPlatform(env,
                                          (CHAR*)pidl + pStrret->uOffset);
         case STRRET_WSTR :
-            return env->NewString(reinterpret_cast<const jchar*>(pStrret->pOleStr),
-                static_cast<jsize>(wcslen(pStrret->pOleStr)));
+            if (pStrret->pOleStr != NULL) {
+                return env->NewString(reinterpret_cast<const jchar*>(pStrret->pOleStr),
+                    static_cast<jsize>(wcslen(pStrret->pOleStr)));
+            }
     }
     return NULL; 

} 


즐 개발 / 즐 컴퓨팅 되시길~


Android play store에서 대용량 게임 업그레이드 후 실행 문제 해결 내용을 잊기 전에 정리 해 봅니다.




최근 업데이트한 게임(Angry Birds 2 이하 AB 2)이 갑자기 실행이 되지 않고... 이상한 메시지만 보이는 문제가 있었습니다.


문제 보고 메시지가 단지 ". Google Play" 라고만 나오는데, 황당할 따름이죠.

더욱이 AB 2 의 경우 Google 계정으로는 백업이 되지 않습니다. 

결국 Rovio 쪽으로도 contact 했지만 - 역시나 그들도 뭘 알겠습니까?!


앞서 이상한 메시지라도 바로 보기 위해 device 언어를 한글 -> 영어로 바꾸어서 실행하니 문제가 명확 해 지더군요.

요약하면 "Asset 을 읽어 들일 수 없다. 삭제 후 재설치 해라" 라는 영문 메시지가 이제 서야 잘 보이더군요. 한글 상태에서는 어떤 이유에서인지 - 아마도 번역이 제대로 되지 않았지 않을까 상상만.


어찌 되었건 문제를 해결하려면 재설치 인데 - 그러면 data가 모조리 날아 가기에 제가 했던 게임 내용도 포기 해야 합니다. 그렇게는 할 수 없고... APK를 직접 구해서 재설치 하는 방향으로 바꾸었습니다.


다행이 AB 2 의 경우 유명 게임이기도 하고 해서 apkplz.com 이라는 곳에서 APK를 쉽게 구할 수 있습니다.


그리고 알아낸 것이 게임의 경우 한개의 초 대용량 APK가 아닌, OBB 파일을 따로 두어서 별도 리소스 부분은 이 OBB에 두는 형식 이더군요!


문제가 분명 해 졌습니다!

Play store에서 분명 업그레이드를 했음에도 불구하고(Google이 잘못 했네?) APK는 제대로 설치(실행은 되니) 별도 리소스 파일인 OBB에 문제가 있었던 것이죠.


아래 위치에 있어야 할 data파일이 누락되어 있었던 것입니다.

문제 상황에서 아래의 obb/com.rovio.baba 가 통으로 존재 하지 않았다는 문제!

/storage/emulated/0/Android/obb/com.rovio.baba/main.2060008.com.rovio.baba.obb


그런데 디렉토리 흔적은 아래에서 확인이 됩니다. 즉 파일은 미존재 상태.

/storage/extSdCard/Android/obb/com.rovio.baba/



결국 앞서 언급한 APK 저장 사이트(apkplz.com)에서 패키지를 다운로드 후, 수작업으로 .obb 파일을 올려 두니 이제 서야 게임이 정상 작동!



요약

(게임과 같은 단일 APK로 설치가 완료 되지 않는 경우)

실행이 되지 않는 문제가 있을 경우 .OBB 파일이 제대로 설치 되었는지 확인 후 적절히 해당 파일을 복사 하면 잘 실행 됨.


아래는 apkplz.com 에서 언급한 해당 사항입니다.


This download file have .apk and .obb (data) file.

Install APK and OBB on your android phone:


Place the APK file in your phone’s SDcard or Internal memory (preferably external SDcard).

Browse your phone memory/external memory and tap on the APK file.

Click ‘install’

Wait for the APK to install.

Do not run the application yet.

Copy the OBB folder to SDCard, ex: SDCARD/Android/obb/com.rovio.baba/obb_filename*

What are .OBB file?

.OBB file are APK Expansion Files Developers create OBB files to contain and bundle larger assets using the JOBB tool for Android SDK. They hold additional encrypted format data not stored in the main application package, including graphics and media files. They can be uploaded with the APK file using the Google Play Developer Console.



기술 자료를 좀더 보니, .obb 파일에 대한 관리를 application에서 직접 할 수 있더군요.

즉 실행 시점에 해당 파일이 없거나 문제가 있을 경우, 혹은 의도적으로 처음 실행시에 .obb 파일을 application에서 직접 다운로드가 가능 하다는 것!

즉 1차 잘못은 구글 설치자에 있었겠지만, 궁극적으로는 Rovio 의 AB 2에서 실행 시점에 해당 파일이 어떤 연유로 없거나 사용 불가면 다시 한번 다운로드 처리 해야 하는데 그러한 예외 처리가 빠져 있는 것 같네요.


Most of the time, Google Play downloads and saves your expansion files at the same time it downloads the APK to the device. However, in some cases Google Play cannot download the expansion files or the user might have deleted previously downloaded expansion files. To handle these situations, your app must be able to download the files itself when the main activity starts, using a URL provided by Google Play.



바이러스 없는 세상이면 좋겠지만. 바이러스에 걸리시는 분들! 계시죠!
아무거나 받아서 설치 하면 그렇게 됩니다! 특히 꼬맹이들... 혹은 여러 초보분들 등등
뭐 멀쩡한 저도 예외는 아닙니다만 ㅋ~.

이 경우 대부분 바이러스 백신 소프트웨어에서 문제의 파일을 삭제, 치료해 주게 되어 큰 피해는 면하게 되는데...
다른 문제가 하나씩 남습니다.

그 중에 하나!

치료 후, 부팅 할때 마다 나타나는 귀찮은 메시지! 없던 현상인데 자꾸만 에러라고 표시가 되는데 귀찮죠!
이 부분을 해결 하는 법을 설명 드리겠습니다.

윈도우 기본 프로그램으로 해결 할 수도 있지만, 꾀나 복잡한 작업이 필요 합니다.
대신 "Sysinternals" 에서 제공하는 "Autoruns"라는 프로그램을 이용하도록 하겠습니다.
이 프로그램은 초보자 뿐만 아니라 한가닥 한다는(? 믿거나 말거나) 저에게도 매우 유용한 프로그램입니다. 제가 사용하는 왠간한 컴퓨터에 이 프로그램은 설치가 되어 있습니다.
 - 이 글을 쓰게끔 만든(?!) 제 동생 컴퓨터에도 설치 되어 있습니다. (본인은 몰랐겠지만 ㅋ~)

* 불필요한 시작 프로그램 삭제에도 사용하면 좋은 프로그램입니다.




0. 부팅 직후 표시되는 에러메시지의 마지막 이름을 기록 해 둡니다.
여기서는 예제로 " f_npm.sys " 라고 하겠습니다.


1. 아래 프로그램을 다운로드 받습니다.
1.1. 클릭해서 적당한(보통 바탕화면에 많이들 ...) 곳에 저장 합니다.

참고로 위 프로그램의 최신 버전은 아래 URL을 접속하시면 됩니다. 
마이크로소프트웨어에 인수된 Sysinternals에서 만든 믿을 수 있는 강력한 유틸리티입니다.
컴퓨터 부팅 후 실행되는 모든 요소들에 대해 확인이 가능합니다.

위 파일을 클릭하면 아래와 같이 저장 유무를 확인 합니다.
1.2. [저장] 버턴을 누릅니다.
  


그리고
1.3. 바탕화면 혹은 본인이 원하는 위치에 저장 합니다. (클릭하면 전체 크기 이미지)


바탕화면에 저장되었네요 (보통 저는 바탕화면에 저장하지 않습니다^^)
  




2. 다운로드 받은 파일의 압축을 해제 합니다.
아래는 windows XP 기본 설치시의 과정을 예로서 안내 드립니다. Win7 등도 도일합니다.
이미 아시거나 다른 압축 유틸리티라면 그에 맞는 동작으로 압축을 해제 합니다.

2.1. 저장한 파일 위에서 마우스 오른쪽 버턴을 눌러서 빠른 메뉴를 표시 합니다.
      그리고 '압축 플기'를 선택
  


2.2. 아래 과정을 쭈~욱 진행 하여 바탕화면에 파일을 압축 해제 합니다.
  <개별 이미지 클릭하면 큰 이미지를 보실 수 있습니다.>
  
     

  


3. Autoruns.exe 파일을 실행 합니다.
처음 나타나는 라이센스 동의에 꾹 눌러 동의 합니다. <이 프로그램은 MS사람이 만든 프로그램이라 믿을 수 있습니다>
3.1. 실행파일인 Autoruns.exe 를 두번 클릭(Double click) 혹은 선택 후 Enter  키를 눌러 실행!
  


3.2. 보안 경고 확인 아래의 [v] 부분은 지워 주세요 - 믿을 수 있는 프로그램이니깐요
  

3.3. 라이센스 동의를 거칩니다. - 걍 [Agree] 버턴 눌러 주세요
  



4. 실행 후 동작이 완료 될 때 까지 잠시 기다립니다.



5. 앞서 '0' 번 과정에서 기록한 문자열을 찾습니다.
5.1. [File]-[Find] 를 선택 하거나 직접 키보드에서 Ctrl+F 를 누릅니다.


5.2. 그리고 '0'번 과정에 기록 해 둔 'n_npm' 을 입력합니다. 전체 입력하셔도 됩니다.
 그리고 [다음 찾기] 버턴을 누르면 해당 항목을 찾아 줍니다.


아래가 찾은 결과 입니다.



6. 항목 삭제 하기
6.1. 찾은 항목으로 마우스 포인터를 옮긴 후 마우스 오른쪽 버턴을 눌러서 빠른 메뉴를 표시 합니다.


그리고 "Delete" 를 선택하면
6.2. 삭제 확인을 합니다.
      [ 예 ] 를 꾹 눌러주시면, 지긋 지긋한 문제 항목을 완전히 보내어 버리게 됩니다.



7. 최종 확인을 위해 리부팅 다시 해 주시면 되겠습니다.
  혹시나 다른 문제도 위의 과정을 반복 해 주시면 되겠네요~


즐 컴퓨팅 되시길~~~

PS. 넘 과도하게 상세한 설명이 된듯 합니다. 초보를 위한 사항이니, 아시는 사항은 적당히 skip 하셨겠죠?

최근 두대의 XP 컴퓨터에서 동일하게 발생한 .NET 업데이트를 해도 해도 또 하고, 또해도 다시 하는 문제가 있었습니다.
외국에서도 동일 증상이 있는데, 그 중에서 해결책에 가까운 내용이 있군요.

저는 아래의 Update가 무한 반복이었습니다.
  KB979909
  KB983583
  KB982168

아마도 KIES 관련 업데이트 하시다가 동일 증상을 격는 분도 많으신듯 하네요.
우선 아래의 원문을 소개 드립니다.

관련 자료 URL: http://social.answers.microsoft.com/Forums/en-US/vistawu/thread/ed51b544-6561-4d22-bdcc-df3984e98369#ed51b544-6561-4d22-bdcc-df3984e98369

그중 참고할 답변은 저아래에 별도로 원문으로 두었습니다.

그냥 원문대로 잘 되면 좋겠지만 저는 아래와 같이 해결을 했네요.
*모든 .NET frame work 인스톨 내용을 제거 한다.
*최신 .NET 3.5 인스톨본을 설치
*Windows update 수행

상세 과정은 아래와 같이 하면 되겠습니다.
1. [시작]-[제어판]- [프로그램 추가/제거] 선택
2. "Microsoft .NET Framewokr"로 시작하는 모든 항목을 [제거] 한다
3. 선택적으로 아래 원문에서 알려주는 제거 프로그램을 추가로 적용 한다
   .NET 삭제 도구로 원본 URL을 이용하시거나 아래의 첨부 파일을 받아서 사용
    첨부:
4. 최신 .NET 버전 인스톨 수행 (.NET 3.5 설치본)
5. Windows update 수행
6. 반복 update 여부 확인  


해결방법 소개글:
Francisco2

I just run into this problem and I check with microsoft:
the problem turned out to be a currupted/damaged .net framework component. it required to uninstall the whole .net framework and then install it again.

this is what I was asked to do and what I did:

to uninstall the whole .net framework I was asked to use this tool
http://cid-27e6a35d1a492af7.skydrive.live.com/self.aspx/Blog_Tools/dotnetfx_cleanup_tool.zip
(*** make sure you select all versions****)

then I just dowloaded the .net framework with sp1 again from here:
http://download.microsoft.com/download/2/0/E/20E90413-712F-438C-988E-FDAA79A8AC3D/dotnetfx35.exe

after that I uninstalled manually the 3 updates I was having problems with (KB982524, KB982168 and KB979909), then windows updates took care of the remainder updates and I've believe my problem was resolved.

goodl luck!


+ Recent posts