17 Oct 2019
|
git
LFS(Large File Storage)
일반적으로 Git은 파일 한 개 용량이 100MB 까지만 업로드 가능합니다. 그 이상의 파일을 올리고 싶을 때는
LFS(Large File Storage)를 이용해야 합니다.
LFS 설치 방법은 다음과 같습니다.
LFS 설치 방법
Ubuntun에서는 다음 명령어를 이용해서 설치합니다. 여기를 참고하세요.
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
sudo apt install git-lfs
MAC에서는 brew를 이용해서 설치합니다. 또는 여기에서 다운로드해서 설치하세요.
brew install git-lfs
LFS 사용 방법
LFS를 사용하려는 프로젝트 루트에 가서 다음 명령어를 입력합니다. 여기서는 안드로이드 빌드 결과물인 apk 확장자로 끝나는 파일에 대해
적용을 해봅니다.
git lfs install
git lfs track "*.apk"
git add .gitattributes
그 이후 평소와 같이 파일을 commit 하고 push 하면 됩니다.
터미널에서 git lfs 명령어를 내려도 사용법을 간편하게 조회할 수 있습니다.
04 Oct 2019
|
IDE
vscode
PlantUML 설치
VSCode의 EXTENSIONS: MARKETPLACE에서 PlantUML 플러그인을 설치합니다.

Sequence Diagram
빈 텍스트를 만들어서 아래와 같은 내용을 입력합니다.
@startuml
scale 2
title My first Diagram
A -> B : Hello
B -> C : Good Morning
C --> A : Bye Bye
@enduml
그 이후 Shift + Command + P 키를 눌러서 PlantUML: Preview Current Diagram을 선택하면 아래 이미지와 같이 UML 미리보기를 할 수 있습니다.

GraphViz 설치
PlantUML은 기본적으로 Sequence Diagram을 지원합니다. Class Diagram을 그리기 위해서는 GraphViz를 설치해줘야 합니다.
MacOS 기준으로
brew install libtool
brew link libtool
brew install graphviz
brew link --overwrite graphviz
그 이후 다음과 같은 코드를 작성해서 제대로 렌더링 되는지 확인해봅니다.
@startuml
scale 2
class Event {
+startTime: DateTime
+venue: string
+registrationClosed: boolean
-notifyAttendes()
}
class ApplicationUser {
-userName: string
-password: string
+isLocked: boolean
-suggestRandomPasswod()
+changeProfilePic()
}
class Speaker {
+openForSpeaking: boolean
-callForAction()
+applyAsSpokePerson()
}
class Topic {
+title: string
+sourceCodeUrl: string
+downloadMaterials()
}
class Attendee {
-eventAttended: number
-suggestEventBasedOnPreference()
+registerForTicket()
}
ApplicationUser <|-- Speaker
ApplicationUser <|-- Attendee
Speaker "1" *-- "*" Topic
Event "1" o-- "*" Speaker
Event "1" o-- "*" Attendee
@enduml

PlatUML 장점
PlantUML은 텍스트 스크립트 기반 UML이라서 진입 장벽이 조금 있습니다. 물론, 그 문법이 어렵지는 않아서 금방 사용할 수 있습니다.
텍스트 기반이라 가장 큰 장점은 협업이 쉽다는 점입니다. git을 이용해서 서로 공유 및 편집이 쉽습니다.
물론 무료라서 라이센스 걱정 없는 것도 큰 장점입니다.
24 Sep 2019
|
Android
Kotlin
androidx로 마이그레이션하기
2018년 Google IO에서 기존의 android.support.* 라이브러리들을 AndroidX로 교체하기로 발표했습니다.
기존에 만들어진 프로그램들은 Android Studio에서 Migrate to AndroidX 기능을 이용해서 마이그레이션할 수 있기는 한데
완벽하지 않기 때문에 수동으로 변경해줘야 하는 부분들이 존재합니다.
만약 Migrate to AndroidX 기능으로 마이그레이션이 정상적으로 되면, 프로젝트 내에 있는
gradle.properties 파일에 다음과 같은 라인이 추가됩니다.
android.useAndroidX=true
android.enableJetifier=true
build.gralde (모듈)
또한, 각 모듈에 있는 build.gradle 은 다음과 같은 변화가 생깁니다.
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test:rules:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support:design:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
들이
androidTestImplementation 'androidx.test:runner:1.1.0'
androidTestImplementation 'androidx.test:rules:1.1.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0'
implementation 'androidx.appcompat:appcompat:1.0.0'
implementation 'com.google.android.material:material:1.0.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
컴포넌트 변경
그 외에도 많은 부분들이 변경됩니다.
| 변경 전 |
변경 후 |
| android.support.v4.widget.DrawerLayout |
androidx.drawerlayout.widget.DrawerLayout |
| android.support.design.widget.NavigationView |
com.google.android.material.navigation.NavigationView |
| android.support.design.widget.CoordinatorLayout |
androidx.coordinatorlayout.widget.CoordinatorLayout |
| android.support.design.widget.AppBarLayout |
com.google.android.material.appbar.AppBarLayout |
| android.support.v7.widget.Toolbar |
androidx.appcompat.widget.Toolbar |
| android.support.v7.widget.CardView |
androidx.cardview.widget.CardView |
등과 같이 support 라이브러리의 대부분 컴포넌트가 androidX로 바뀌며, 위의 예시 외에도 AppCompatActivity나 Fragment, AlertDialog 등의 컴포넌트들도 전부 변경됩니다.
22 Sep 2019
|
MAC OS
프로그램 실행 명령어 할당
예를 들어 비주얼 스튜디오 코드를 사이트에서 dmg 파일을 다운받아 설치할 경우
터미널에 vscode 나 code 같은 프로그램 실행 명령어가 동작하지 않습니다.
(리눅스에서 snap 등으로 VSCode를 설치했을 경우, 과거에는 단축 명령어가 vscode, 현재는 code 입니다.)
alias
이 경우 alias 명령어를 통해 특정 프로그램 실행 명령어를 할당할 수 있습니다.
alias code='open -a "Visual Studio Code"'
함수 생성
터미널용 함수를 만들어서 사용할 수도 있습니다.
code () {
if [[ $# = 0 ]]
then
open -a "Visual Studio Code"
else
echo "Opening: "$@
"/Applications/Visual Studio Code.app/Contents/MacOS/Electron" $@
fi
}
Symbolic Link
아래와 같은 방법으로 심볼릭 링크(Synmolic link)를 이용해서 실행 명령어를 생성할 수 있습니다.
ln -s /Applications/Visual\ Studio\ Code.app/Contents/Resources/app/bin/code ~/bin/code
VSCode 내에서 할당
VSCode 같은 경우는 Command + Shift + P를 누르고 Shell을 타이핑하고
Shell Command: Install 'code' Command in PATH 항목을 선택하면 됩니다.
이 경우는 /usr/local/bin/code에 실행파일이 생성되며, which code로 확인할 수 있습니다.
그 외 자주 쓰는 것들
alias clion='open -a "/Applications/CLion.app"'
21 Sep 2019
|
MAC OS
Total Finder
맥OS에 기본적으로 탑재되어 있는 Finder는 지원하는 기능이 너무 부족합니다. 멀티 윈도우 기능부터 잘라내기, 붙여넣기 등의 기능들이
불편하거나 지원하지 않아서 많이 불편을 느껴서 유료 앱은 Total Finder와 ForkLift 3를 구매했습니다.
두 프로그램은 장단점이 있는데, 일단 여기서는 Total Finder에 대해서 포스팅합니다. Total Finder는 완전히 새로운 프로그램이 아니라
기존의 Finder의 애드온(Add-On) 형태로 설치하는 프로그램입니다.
다운로드 및 구매는 여기에서 할 수 있습니다.
설정
Total Finder 설치 후 Preferences에서 다음과 같이 설정을 해줍니다.
먼저 Finder 기본 설정입니다.
General의 New Finder windows show: 는 Home으로 설정해줍니다.
Sidebar에서도 필요한 항목들을 체크해줍니다. Home 같은 경우는 체크를 해 주는 것이 편합니다.
Advanced 탭에서는 Show all filename extensions 옵션을 체크합니다.
그리고 TotalFinder 설정도 아래와 같이 해줍니다.
Dock에서는 Show progress bar in the Dock 체크
Menues에서는 Allow path copying from Context Menus 및 Show CutPaste buttons in Context Menus 체크
File Browser에서는 Automatically adjust widths in Column View 맟 Colored Labels 체크
Tabs에서는 Open new tabs with previous location 체크
정도 해 주면 되고, Visor 는 취향에 따라 활성화하면 될 것 같습니다.