파일별 편집 속성 설정 – EditorConfig

https://editorconfig.org/

일단 BS는 개발환경을 Windows를 사용하므로…
VisualStudio, Notepad++, Android Studio 등등…
각종 IDE에서 소스 파일에 대한 처리들을 매번 설정하기 힘들었는데,
EditorConfig를 사용하면 파일로 관리할 수 있어서 편리합니다.
혼자 사용할 때에는 각 IDE 설정을 한번 만져주면 되긴 하지만…
파일로 남겨두면 재설치 했을 때에도 문제없고,
에디터 설정도 SCM으로 관리가 되고,
팀으로 여럿이 함께 개발할 때, 각자의 IDE 설정에 더해져서 코드가 일관성을 유지할 수 있게 합니다.

Visual Studio 2017 이전 버전
확장 프로그램을 설치해야 합니다.
https://marketplace.visualstudio.com/items?itemName=EditorConfigTeam.EditorConfig

Visual Studio 2017 이후 버전
기본으로 제공합니다.

Notepad++
https://github.com/editorconfig/editorconfig-notepad-plus-plus

jQuery 특정 패턴의 CSS class 제거하기

<div id="hello" class="test-1 test-2 test-a test-qwer my-class">
...
</div>

위와 같은 HTML 내용에서 test-xxx 이름의 CSS Class를 모두 지우려면

$("#hello").removeClass((_i, className) => {
    return (className.match (/(^|\s)test-\S+/g) || []).join(' ');
});

이렇게 하면 됩니다.

<div id="hello" class="my-class">
...
</div>

Adobe CC 언어를 영어로 변경하기

한글판으로 설치한 후 다시 제거하고 영어를 선택해서 설치를 한다고 했는데…
왜 한글이 계속나오는지…
이래 저래 찾아보니 아래와 같은 방법으로 영문을 사용할 수 있었습니다.

Adobe CC 프로그램들 설치 경로에 있는 painter.ini 파일을 관리자 권한으로 열어서 아래 내용을 추가합니다.

ForceLanguage=1
Language=en_EN

참고 자료: https://www.quora.com/How-do-I-change-the-Adobe-illustrator-CC-2017-language

Cordova로 Android 앱 만들기

초간단으로 초간단한 안드로이드 앱을 만들어 봤습니다.
Windows 기준입니다.

준비

  • Android Studio 와 SDK 를 설치합니다.
    BS는 [구글 다운로드 사이트]에서 무설치 압축 파일로 받았습니다.
  • 환경변수 설정 (Win 키 누르고 환경변수 검색해서 계정 환경변수에…)
    • ANDROID_SDK_ROOT=X:\android-sdk
    • JAVA_HOME=X:\android-studio\jre
    • PATH=%PATH%;X:\android-sdk\platform-tools;X:\android-sdk\tools
  • Cordova 설치
    npm install -g cordova

프로젝트 만들기

아래 내용을 차례로 실행해서
프로젝트 만들고 -> 플랫폼에 안드로이드를 추가하고 -> 요구사항 정상인지 확인 -> 플러그인 추가(이건 필요한 것들만)

cordova create ytm4bs kr.pe.bspfp.ytm4bs YTM4BS
cd ytm4bs
cordova platform add android
cordova requirements
cordova plugin add cordova-plugin-inappbrowser

빌드를 위한 Key Store 만들기

정상적인 APK를 만들기 위해서 키스토어를 생성합니다.

keytool -genkey -v -keystore android.keystore -alias mykey1 -keyalg RSA -keysize 2048 -validity 36500

이제 프로젝트 폴더에 build.json 파일을 만들어 키스토어를 지정합니다.

{
    "android": {
        "debug": {
            "keystore": "../android.keystore",
            "storePassword": "android",
            "alias": "mykey1",
            "password" : "password",
            "keystoreType": ""
        },
        "release": {
            "keystore": "../android.keystore",
            "storePassword": "",
            "alias": "mykey1",
            "password" : "password",
            "keystoreType": ""
        }
    }
}

앱을 구현하기

BS는 초간단 앱을 만들고 있으므로 많이 수정하지 않았습니다.

www/img/logo.png 를 원하는 아이콘 이미지로 바꾸고
config.xml에 아이콘으로 지정합니다.

<icon src="www/img/logo.png" />

www/index.html 에 jqeury 를 포함시키고

<script type="text/javascript" src="cordova.js"></script>
<script type="text/javascript" src="jquery/jquery-3.4.1.min.js"></script>
<script type="text/javascript" src="js/index.js"></script>

www/js/index.js에 로직을 구현합니다.

class App {
    constructor() {
        document.addEventListener('deviceready', this.onDeviceReady.bind(this), false);
    }

    onDeviceReady() {
    }
}

var app = new App();

www/css/index.css 도 편집합니다.

빌드해서 기기에 넣기

BS의 초간단앱은 이제 완성되었습니다.
안드로이드 기기를 USB로 연결하여, USB 디버깅을 켜고, 아래 명령을 실행합니다.

cordova run --debug --device android

기기에서 앱이 실행되는 것을 확인합니다.

참고: 연습 프로젝트 내용
YTM4BS는 명시적으로 종료할 때에만 종료되게 설정해서 사용하는 앱입니다.

Notepad++ 테마

BS가 VSCode를 텍스트 편집기로 사용하다가…
역시나 Chrome 기반이다보니 무겁고, 뭔가… IDE라고 하기에는 좀 부족하고, 텍스트 편집기라 하기에는 기능이 엉뚱한 방향이고 하여…
다시 Notepad++로 돌아왔습니다.

근데 기본 테마가 한결같이 맘에 들지 않습니다.

그래서 조금 검색 해 봤습니다.

설치 방법
Notepad++ 한글 설정을 기준으로 메뉴에서
설정 > 가져오기 > 테마 가져오기
를 들어가서 테마 파일을 가져오면 됩니다.

BS의 선택은 VS2015 Dark + 현재 줄 강조 색상 변경 + D2Coding

Cordova browser 로 테스트 할 때

https://www.npmjs.com/package/cordova-plugin-browsersync

BS가 이걸 사용해서 테스트를 했었는데, Cordova 를 최신 버전으로 변경하면서 동작을 하지 않습니다.

그래서 다른 방법을 찾다가…
그냥 browser-sync를 플러그인이 아닌 형태로 사용하기로…

npm i -g browser-sync

그리고 cordova 프로젝트 폴더에 browser-sync 로 실행하는 배치 파일을 하나 만듭니다.

@CALL cordova build browser
@CALL browser-sync start -s www -w --port 8000 --ss platforms/browser/platform_www

이제 배치 파일을 실행하면 수정 내용이 바로 싱크되는 테스트 환경을 사용할 수 있습니다.

Windows 10 업데이트 KB4493509 설치 중 0x8e5e03fa 발생할 경우

Windows Update 문제 해결사를 실행해 본다

Windows 설정 > 업데이트 및 보안 > 문제 해결 > Windows 업데이트
이렇게 해서 문제 하결이 안되면 다음으로

Windows Update 서비스 관련 초기화

관리자 쉘을 엽니다. (이제 Windows 10 에서 기본이 PowerShell 인데, 명령 프롬프트여도 무방)
아래 명령을 하나씩 실행합니다.

net stop wuauserv
net stop cryptsvc
net stop bits
net stop msiserver
ren C:\Windows\SoftwareDistribution SoftwareDistribution.old
ren C:\Windows\System32\catroot2 catroot2.old
net start wuauserv
net start cryptsvc
net start bits
net start msiserver

이제 컴퓨터릴 재시작 하고 나서 업데이트를 재시도 합니다.
그리고 나서 이제 불필요해진 .old 폴더를 찾아가서 삭제합니다.
그래도 안되면…

이제 희망이 거의 없다

마지막으로 기대 볼 만한 것은​

서드파티 보안 솔루션 삭제 (쉽게 얘기하면 은행 사이트, 정부 사이트 등에서 마구 설치하는 잡다하고 세상 쓸모 없는 녀석들)

​그래도 안되면… 정상적인 업데이트 파일을 받을 수 있는지 확인…
당연히 인터넷이 안정적이여야 하고,

Windows 설정 > 시간 및 언어 > 지역 > 국가 또는 지역… 지역이 이상하면 해당 지역과 언어에 맞는 업데이트 파일을 받지 못할 수 있다고 하네요…

​그래도 안되면 시스템 파일 검사 (당연히 관리자 권한으로)

sfc /scannow
DISM /Online /Cleanup-Image /RestoreHealth

그래도 안되면 msconfig를 실행해서 일반 > 시작 모드 선택 을 선택 모드로 하고
시스템 서비스만 로드하고, 시작 항목은 로드 하지 않도록 한 뒤,
서비스 탭 (msconfig 의 3번째 탭)에서 Microsoft의 서비스를 제외한 나머지를 모두 사용 안함 처리
그리고 재시작 해서 시도…

아마 여기까지 오면 포맷 하거나 초기화를 하는 것이 나을지도 모르겠습니다.

마지막으로는 Windows Update Catalog 사이트에서 해당 업데이트를 받아서 직접 설치를 시도해 봅니다.

https://www.catalog.update.microsoft.com/Home.aspx

​이제 해결이 되었나요?

해결 되었으면 좋겠네요…
BS는 서비스 관련 초기화를 했더니 해결 되었습니다.

x86 CPU 에서 Android 사용하기

오늘은 게임에 대해 적어봅니다.

BS가 ebook 용으로 구매를 하긴 했지만 그래도 게임도 가끔 하고 싶은 생각에 크루세이더 퀘스트를 설치해 봤습니다.

이런… 실행 불가…
Virtual Box 에도 설치해 보았지만 역시 불가…
아무래도 x86 에서는 힘든가 봅니다.

​크루세이더 퀘스트가 오작동 하는 것이 아니라
Unity 엔진 자체에서 오류를 출력하며 동작하지 않습니다.

https://blogs.unity3d.com/kr/2019/03/05/android-support-update-64-bit-and-app-bundles-backported-to-2017-4-lts/

​Unity 공식 블로그에 따르면 x86 사용자가 극히 적기 때문에 지원을 중단할 것이라고 합니다.

​즉, Windows 태블릿으로, 정확히는 x86계열 CPU를 사용하는 기기로 Android를 사용하게 되면 용도가 확 줄어든다… 입니다.

​아직도 다나와에는 아래와 같은 물건들이 판매되고 있습니다.
(낮은 가격 순으로 정렬된 일부입니다.)​

듀얼 OS 제품
포유디지털 iMUZ 컨버터8 (안드로이드 전용 롬을 제공하지만… 결국은 x86)
피포 X8, X9
Chuwi Hi8
MPGIO 레전드 Z

​안드로이드 전용 제품
온다 V80 Se

​앞으로 어떤 상황들이 될지 모르지만 아마도 Unity 와 같은 결정을 하는 업체들이 점점 많아지지 않을까 생각됩니다.

​결론

Android를 생각한다면 무조건 ARM 계열 CPU를 권장합니다.
그나마 아직 진행형인 LineageOS 가 가능한 제품으로 구매하면 더욱 좋을 것 같습니다.
제조사의 업데이트가 중단 되어도 커스텀 롬으로 조금 더 버티면서 사용이 가능하니까요…

​참고 LineageOS 다운로드 페이지

https://download.lineageos.org/

Lenovo Miix 2 8 Windows Tablet에 Android-x86 설치하기

BS가 Windows 태블릿을 하나 샀습니다. 중고로 싸게…
그런데 생각보다 Windows 태블릿용 앱이 너무 없었습니다.
그리고 국내 도서관, Ebook 등의 PC 뷰어가 너무 너무 허접해서 태블릿에서 사용할 수 없었습니다.
태블릿을 산 이유가 ebook을 좀 편하게 보려고 한 것이었는데…

Windows 태블릿은 도킹 키보드 + 터치 패드가 아니면 사용할 수 없으니 왠만하면 구매하지 마세요.

본론으로 들어가서
Windows PC에 Android를 설치해서 활용해보기로 했습니다.

준비물

  • WinPE ISO
    기존 Tablet의 파티션을 마음대로 편집하기 위해서는 USB로 부팅을 해야 합니다. 다른 것으로도 할 수 있지만 WinPE 부팅해서 편하게 할 수 있습니다.
    단, Miix 2는 UEFI 부팅만 가능하기 때문에 잘 찾아야 합니다.
  • Rufus
    https://rufus.ie
    ISO 파일을 부팅 USB로 만들기 위해 사용합니다.
  • MiniTool Partition Magic
    https://www.partitionwizard.com/partitionmagic/portable-partition-magic.html
    파티션 편집용 프로그램. Windows의 디스크 관리를 이용해도 되지만 조금 더 편리합니다.
  • BOOTICE
    https://sites.google.com/site/gbrtools/home/software/bootice-portable/bootice-downloads
    UEFI 부팅 엔트리 편집을 위해 사용합니다.
  • Android-x86 ISO
    http://www.android-x86.org
    현재 기준 android-x86_64-8.1-r1.iso 입니다.
    반드시 64비트 이미지를 사용해야 합니다.
    ReleaseNote를 잘 읽어보면, 32비트 이미지에서는 Google Play Service가 정상 작동 하지 않는다고 되어 있습니다.
  • USB 허브
    Miix 2 기준으로는 무조건 별도 전원을 연결하는 제품이어야 합니다. 무전원 USB 허브로는 USB 메모리와 USB 키보드를 사용할 경우 전원 부족으로 인식이 되지 않습니다.
  • USB 키보드
    설치 과정에서 터치 입력과 가상 키보드 사용이 불가능하므로 반드시 키보드를 유선으로 연결해야 합니다.
  • Micro 5핀 -> USB 젠더
    보통 OTG 젠더라고도 부르는 그것이 필요합니다.
  • USB 메모리
    여러 개 있으면 편리합니다. WinPE, Windows (BS는 듀얼 부팅 할 거라서…), Android
    BS는 이렇게 3개로 했습니다.

설치 과정

  1. Rufus + WinPE ISO로 부팅 USB를 만듭니다.
    반드시 GPT + UEFI + FAT32 옵션으로 만들어야 합니다. MBR로 만들거나 하면 Miix 2 에서는 부팅할 수 없습니다.
    그리고 USB에 Partition Magic과 BOOTICE를 넣어 줍니다.

  2. 볼륨 업 버튼을 누른 채로 전원을 켭니다.
    그러면 메뉴 선택이 나오는데 거기서 부트 메뉴를 선택하여 USB로 부팅합니다.

  3. 파티션을 편집합니다.
    BS는 Windows 10 과 Android 듀얼로 사용할 것이라서 총 3개의 파티션으로 만들었습니다.
    편집 후에는 반드시 왼쪽 위 Apply를 눌려야 합니다.
    Miix 2는 eMMC 30GiB 정도를 가지고 있습니다.
    • EFI 시스템 파티션 (FAT32, 할당 단위 크기 4K)
      나중에 파티션 크기를 조정하거나 하려면 디스크 제일 앞에 두는 것이 좋습니다. 용량은 100MB
    • Android 파티션(EXT4)
      10GiB를 할당했습니다.
    • Windows 용 공간
      이건 미할당 공간으로 두었습니다. 약 20GiB
      Windows 10 이라는 PC용 OS는 생각보다 많은 용량을 차지하기 때문에 20GiB는 있어야 합니다. (처음에 10, 다음에 15 했다가 자꾸 용량 문제가 발생해서 결국 20을 줬습니다.)

  4. EFI 시스템 파티션의 ID를 설정합니다.
    3번으로 만들면 그냥 일반 FAT32 파티션이 되는데, EFI System Partition으로 바꿔야 합니다.
    관리자 권한 명령 프롬프트에서 DISKPART 를 실행해서
    LIST DISK 로 eMMC 디스크의 번호를 확인한 후
    SELECT DISK <디스크 번호>로 디스크를 선택하고
    LIST PARTITION 으로 EFI 시스템 파티션용 100MB 공간을 확인한 뒤
    SELECT PARTITION <파티션 번호> 로 해당 파티션을 선택
    SET ID=C12A7328-F81F-11D2-BA4B-00A0C93EC93B
    참고: 기본 데이터 파티션 ID: EBD0A0A2-B9E5-4433-87C0-68B6B72699C7
    https://ko.wikipedia.org/wiki/GUID_%ED%8C%8C%ED%8B%B0%EC%85%98_%ED%85%8C%EC%9D%B4%EB%B8%94

  5. Windows 10 을 3에서 준비해둔 미할당 공간에 설치합니다.
    Windows 10 설치용 USB를 넣고 2번과 동일한 방법으로 부팅해서 설치를 합니다.

  6. Android-x86을 설치합니다.
    부팅 방법은 동일합니다. 주의할 점은 GRUB2 EFI를 반드시 설치해야 하며, system 영역을 read-write 가능하게 해야 한다는 것!!! 이유는 아래에서 다시 설명합니다.

  7. Android로 부팅
    설치가 끝나면 다시 볼륨 버튼을 이용해 부트 메뉴에서 Android-x86을 선택해 Android로 부팅합니다.
    그리고 아래 2가지를 반드시 설정해야 합니다.
    • 설정 > Android-x86 options > Enable native bridge 활성화
      앱이 ARM용 native 바이너리를 사용했을 경우, 이 옵션이 활성화 되어 있지 않으면 아주 골치 아픈 상황이 됩니다.
      BS의 경우 비활성화 상태에서 Sudoku 앱 하나 설치했더니 태블릿이 먹통이 되고, 강제 리붓해도 먹통이 되는 현상이…
    • 터미널 앱을 사용해 /system/build.prop 파일에 아래 내용을 추가합니다. (이것 때문에 /system 이 read-write 여야 합니다.)
      sleep.state=none
      그리고 아래 명령으로 해당 내용을 현재 상태에도 바로 반영합니다.
      setprop sleep.state none

  8. 다시 Windows로 부팅하여 BOOTICE로 UEFI 부티 엔트리 순서를 조정합니다.

보충 설명

이렇게 해서 Windows Tablet인 Lenovo Miix 2 8 을 듀얼 OS 태블릿으로 바꿨습니다. 뭐 나쁘지는 않지만 Android는 역시 정식으로 된 펌웨어를 설치한 것이 아니라서 조금 부족함이 있습니다.

위 설명에서 7번 항목의 sleep.state에 대해 추가로 설명 드리겠습니다.
Android-x86 사이트의 ReleaseNote에도 설명이 나온 것 처럼 일부 기기에서 suspend/resume이 안되는 문제가 있습니다. 그래서 Sleep 시키려고 파워 버튼을 누르면 먹통이 되 버립니다. (파워 버튼 아주 오래 누르면 강제로 꺼집니다.)

https://groups.google.com/d/msg/android-x86/_vU8nNLKicI/gMfWTkzABgAJ

이 포스트에 따르면 Cherry-Trail / Bay-Trail CPU를 사용하는 PC에서 나타나는 현상이라고 하고 (물론 다른 CPU도 발생할 수 있음), 해당 CPU를 kernel.org 에서 아직 완전히 작업하지 않았기 때문에 Android의 기반이 되는 Linux 자체가 불안한 모양입니다.

그래서 Android-x86 프로젝트 관리자인 Chih-Wei Huang 알려준 sleep.state=none 을 해서 조금 완화?시키는 것인데…
이렇게 하고 나서 파워 버튼을 누르면 화면은 블랙으로 바뀌는데 BLU(Back Light Unit)이 꺼지지 않는 문제가 있습니다. 그리고 CPU, RAM 모두 잠들지 않는 상태이기 때문에 Sleep 모드보다 배터리 소모가 심합니다. 추가로 알 수 없는 조건이 되면 이것도 의미없게 먹통이 되네요.

추가 참고 사항) 일반 PC에 설치했는데 전원 버튼이 Sleep이 아니라 종료로 동작하면
/system/build.prop 에 아래 내용을 추가
poweroff.doubleclick=1

결론… 집에서 버려질 위기의 Windows PC나 Tablet이 있다면 Android로 바꿔서 수명을 연장하는 방법도 있다. 하지만 이걸 위해서 Windows PC 또는 Tablet을 구매해서는 안된다!!!

포토샵 브러시 + 태블릿 + 펜 압력 갖가지 문제!!!

Windows 10 1809 64bit + WACOM CTL-490 + Photoshop CC 2015
이 조합입니다.

펜 압력이 인식되지 않는다

인터넷에 아래와 같은 방법이 돌아다니고 있습니다.
BS도 아래의 방법을 사용했으나…
설정의 이름대로 시스템의 기능을 사용하는 것이 아니라서 성능에 큰 지장이 있음을 확인하였습니다.
아래의 방법은 사용하지 않도록 합니다.

%APPDATA%\Adobe\Adobe Photoshop CC 2015.5\Adobe Photoshop CC 2015.5 Settings\
위 경로에 PSUserConfig.txt 이란 이름의 텍스트 파일을 만들고 아래의 내용을 입력합니다.

# Use WinTab
UseSystemStylus 0

Windows 의 펜 입력 기능에 의한 문제

Windows 에서 누르고 시간을 보내면 우클릭으로 입력되는 기능이 있습니다.
이걸로도 문제가 발생할 수도 있다고 합니다.
제어판 > 펜 및 터치 > 길게 누르기 끄기
이건 BS는 잘 느끼지 못하겠네요.

Windows Ink 기능과 충돌

UseSystemStylus 설정과 연관된 항목입니다.
인터넷에 검색하면 Windows Ink 문제이니 끄라고 나오지만
UseSystemStylus 를 0으로 하는 방법을 사용하지 않기 때문에 오히려 Ink를 켜 두는 것(기본값)이 맞는 듯 합니다.

드라이버를 설치하면 와콤 데스크탑 센터라는 앱이 설치됩니다.
여기서 펜 설정의 매핑 설정으로 들어가면 Ink 사용 옵션이 있습니다.
사용하지 않도록 합니다.

너무 느리다

이렇게 해서 포토샵에서 펜 압력이 감지되게 되었는데…
엄청나게 느립니다.
아… 이건 정말…
이것도 UseSystemStylus 문제입니다.
0으로 하면 뭔가 소프트웨어적인 방법을 사용하는 것 같습니다.
위 항목을 0으로 강제하는 것을 하지 않으면 빠르게 동작함을 확인하였습니다.
다행히 누군가가 원인을 찾았네요.
느려터진 그래픽 카드 가속이 원인입니다.
포토샵 성능 설정에서 그래픽 카드 가속을 사용하지 않도록 합니다.
와우!!! 그래픽카드를 사용하지 않으니까 정말 쾌적하게 빨라졌습니다.


뭐지??? 이건 좀 아닌 것 같은데? MS와 Adobe 중 누구의 잘못이냐!!!
일단 MS의 설정을 만지지 않고 대부분 해결되었으니 Adobe 네 녀석의 잘못이다!!!

결론

Windows 10 이 나오고 Windows Ink 기능이 나오면서 스타일러스의 처리를 Windows가 가져갔는데… 포토샵 버전이 Ink를 제대로 인식하지 못하면서 벌어진 일로 보입니다.

Windows Ink 이후의 포토샵을 사용하고, 와콤 설정에서 Ink 사용을 켜면 잘 동작하네요…