Windows에서 Linux의 wget 이나 curl 비슷한 기능 실행하기

아무래도 GUI를 기본으로 하는 Windows라는 OS는 Command line 도구들이 조금 빈약합니다.
간단한 테스트나 다운로드를 위해 Linux에서 wget이나 curl을 많이 사용했는데,
Windows에 없어서 조금 불편할 때가 있습니다.
그나마 PowerShell을 통해 아래 명령어로 약간 비슷하게 흉내는 낼 수 있습니다.

# System.Net.WebClient 사용하기
$client = New-Object System.Net.WebClient
$client.DownloadFile("http://www.example.com/file.txt","C:\tmp\file.txt")
# Invoke-WebRequest 사용하기
Invoke-WebRequest -OutFile index.html http://www.example.com

그래도 영… wget이나 curl을 Windows 버전으로 구하는 게…

Cordova 로 안드로이드 앱 작성시 AndroidManifest.xml 수정하기

Cordova로 안드로이드 앱을 작성하기 위해 platform에 android를 추가하면 platforms/android 폴더가 생성됩니다.

SCM으로 소스 관리를 할 때에는 외부에서 Download하는 platforms, plugins 폴더를 굳이 포함시키지 않아도 되는데…
(포함하게 되면 하위에 있는 의존성 엮인 엄청난 파일들이…)

따라서 해당 platforms 하위의 파일을 직접 수정하게 되면 소스 관리가 안되는 문제가…
이런 경우 config.xml을 통해 특정 파일을 수정할 수 있습니다.

<edit-config file="AndroidManifest.xml" target="/manifest/uses-sdk" mode="merge">
    <uses-sdk android:minSdkVersion="16" android:maxSdkVersion="23" />
</edit-config>

위와 같이 config.xml에 적으면 빌드 과정에서 AndroidManifest.xml 파일에서 XPath 경로로 /manifest/uses-sdk 노드를 찾아서 하위 노드에 가 merge됩니다.

참고사항: https://cordova.apache.org/docs/en/latest/plugin_ref/spec.html#edit-config

LibreOffice – 무료 오피스 소프트웨어

https://ko.libreoffice.org/

BS가 집에서 MS Office 365를 쓰다가 한달에 한 번을 실행하지 않는 오피스에 돈이 아까워서 LibreOffice로 갈아탔습니다.
가끔 HWP를 보거나 수정할 일이 있어서 아내의 태블릿에는 PolarisOffice를 설치…

그런데 왜 PolarisOffice가 아닌 LibreOffice를 선택했냐면…
역시 완전한 무료라는 점이 가장 큽니다.

최근에 설치형 Office보다는 Google의 문서나 스프레드시트를 더 많이 쓰고 있었기 때문에 설치형은 최대한 가볍고 무료인 것으로 결정 했습니다.

LibreOffice는 Ubuntu를 비롯한 상당수의 리눅스 배포판의 기본 프로그램으로 이미 충분히 검증된 점도 있습니다.
그리고 오라클의 횡포로 인해 망해가는 OpenOffice보다는 나을 것이라는 생각에…

결론…
HWP 수정이 필요하면 PolarisOffice 또는 네이버
일반적인 사용은 LibreOffice
그리고 진짜로 MS Office가 필요할 때에는 온라인으로…

Node.js 로 작성한 서버 프로그램을 Linux 에 daemon 으로 실행하기

myservice 라는 daemon 을 만드는 예제

/etc/systemd/system/myservice.service 이름으로 아래의 내용을 넣는다.

[Unit]
Description=myservice-daemon
After=network.target

[Service]
ExecStart=/usr/bin/node app.js
Restart=on-failure
User=myservice-user
Group=myservice-group
Environment=PATH=/usr/bin:/usr/local/bin
Environment=NODE_ENV=production
WorkingDirectory=/some/nodejs/myservice

[Install]
WantedBy=multi-user.target

아래 명령으로 방금 작성한 파일을 systemd 에게 읽도록 한다.
daemon 을 실행한다.
시스템이 부팅될 때 자동으로 실행되도록 활성화 시킨다.

systemctl daemon-reload
systemctl start myservice
systemctl enable myservice

파일별 편집 속성 설정 – 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