전체 글 592

Python 프로젝트 패키지 관리하기: pip freeze requirements.txt

파이썬 프로젝트에 설치한 수많은 라이브러리의 의존성을 관리하기 위하기 위한 방법이다. 이것이 왜 중요하냐면, 당연하게도 프로그램이 언제나 내 컴퓨터에서만 돌아가는 것은 아니기 때문이다. 다양한 환경에서 배포되고 실행될 수 있어야하며, 그때마다 프로젝트에서 사용한 모듈을 설치해주어야하는데... 아래 명령어를 이용하면 현재 가상환경에 설치되어있는 패키지 목록을 requirements.txt 파일에 작성해준다. pip freeze > requirements.txt 다른 환경에서 requirements.txt에 적힌 모듈들을 모두 설치하는 방법은 아래와 같다. pip install -r requirements.txt install 명령어의 -r 옵션은 --requirement로, 주어진 requirement 파..

Unity XR Toolkit 활용 이동(Locomotion) 구현하기

레이저(Raycaster) 추가하기 [Scene 우클릭 > XR > Device-based > Ray Interactor] 를 추가한다. 추가된 Ray Interactor는 [VR Rig > Camera Offset] 아래에 추가한다. 우측 손에 대해서 적용시킬 것이기 때문에, 이름을 Right Teleport Ray로 변경하고, XR Controller Component의 Controller Noe를 Right Hand로 설정한다. Teleportation Area 추가하기 [Scene 우클릭 > XR > Teleportation Area]

[안드로이드] 카카오웹툰 앱에서 쓴 오픈소스 라이브러리를 알아보자

카카오 웹툰이 처음 나왔을때, 나도 부정적인 시선으로 보는 사람들 중에 하나였다. 웹툰을 보지는 않지만 예전에 웹툰을 봤을때 요일별로 나눠져있는게 그야말로 정석이었고, 앱을 켤때도 [O요일 웹툰 봐야지!] 라는 생각으로 켜곤했다. 하지만 카카오 웹툰은 그 정석과는 다른 방향으로 개발되었다. AI 추천 웹툰이 먼저고, 요일별 웹툰은 조금 더 숨겨져있다. 새로운 것에대한 거부감일지, 정말로 유저가 원하는 것과 맞지 않아서일지는 조금 더 두고보면 알겠지만, 개발자로서 카카오 웹툰의 혁신적인 UI/UX는 분명 엄청났다! 가장 궁금한건 역시 "어떻게 만들었을까"다. 카카오 웹툰을 다운받아서 APK 파일을 추출 후 압축을 해제하면 사용한 에셋들이 나온다. 그중에서 oss_notice.html이라는 카카오 웹툰 앱을..

[안드로이드] Jetpack Compose 테마와 스타일 정의하기

Jetpack Compose를 시작하기 위한 강의는 구글에서 제공한다. 레이아웃을 어떻게 만들지는 한 번만 따라해도 어느정도 각이 나온다. 어떻게 디자인하는지 알려주는 강의는 너무 많다. 하지만 중요한건 Integration! 앞으로 블로그에서 다룰 Jetpack Compose 관련 주제가 바로 Integration이 될 것이다. 어떻게 내 프로젝트에 통합시킬 수 있을지! Theming 그 첫번째로 테마(Theme)와 스타일에 관해서 알아보려고한다. Jetpack Compose에서 아주 쉽게 Material Design을 적용시킬 수 있다고는 하지만, 디자이너들은(93% 확률로 아이폰을 이용중) 우리에게 Material Design을 던져주지 않는다. 앱 고유의 스타일을 어떻게 확립하고 적용시킬 수 있는..

Unity XR Toolkit을 이용한 VR Input 설정 방법

XR = AR + VR [1] XR Interaction Toolkit 설치 [Window > Package Manager > Advanced > Show preview packages] XR Interaction Toolkit을 다운로드한다. [2] XR Plugin Management 설정 [Edit > Project Settings > XR Plugin Management] Import XR Plugin Management 클릭 컴퓨터 모양에서 Oculus / Windows Mixed Reality 체크 안드로이드 모양에서 Oculus 체크 [3] 시선 XR Rig 설정 GameObject 생성 후 "XR Rig"라고 네이밍, XR Rig Component를 추가해준다. XR Rig GameObje..

Android Studio 한글 깨짐 현상 해결법 (Arctic Fox)

전엔 안그러다가 Arctic Fox 업데이트 이후 글자가 네모로 나오면서 한글이 깨졌다. 해결방법은 아주 간단하다. Preferences > Appearance & Behavior > Appearance > Use custom font에 체크 후 원하는 폰트를 골라주면 된다. 자칫 우리에게 익숙한 Courier나 Monospaced등 코딩용 폰트를 고르기가 쉽지만, 시스템 UI용 폰트이므로 San-serif 고딕 스타일의 폰트가 눈에 편하다. Noto Sans KR을 추천한다! 다운받기가 귀찮다면 Arial 폰트도 추천이다.

[Jetpack Compose] 왜 Jetpack Compose가 나와야만 했을까?

Jetpack Compose를 눈여겨 본지 1년정도 된 것같다. 오랫동안 xml로 레이아웃을 구성하면서 큰 불편함이 없어서인지, (불편함에 길들여졌었겠지) 이 새로운 기술이 정착될지, 도태될지 지켜보기만하고 실제로 시도해보지는 않았다. 원래는 Android Studio Preview에서만 지원되었으나 이제는 정식 지원하게 되었다. 내가 Jetpack Compose와 마주할때가 된 것 같다. Seperation of concerns xml을 사용하는 UI 디자인 방식에 무슨 문제가 있길래 Jetpack Compose가 등장했을까? 그것이 가장 궁금했다. SoC(관심사의 분리, Seperation of concerns) 원칙에 대해 들어봤을 것이다. 우리 프로그램은 하나의 거대한 시스템이고, 처리해야할 부분..

[안드로이드] Retrofit2 오프라인 캐시 구현하기 (Offline cache interceptor)

캐싱의 이점 서버 대역폭 낭비를 줄일 수 있다. 응답을 받기까지 기다리는 시간을 줄일 수 있다. 서버 트래픽을 줄여준다. Cache-Control이란 무엇인가? Cache-Control은 브라우저단의 캐싱 정책을 정의하는 HTTP 캐시 헤더다. 클라이언트가 서버에게 요청을 호출하면, 브라우저는 자원 사본을 캐싱 하여 다음 번 접근 시에 서버에 처음부터 다시 파일을 요청하는 일이 없도록 할 수 있다. Cache-Control을 통해서 캐시 정책을 세울 수 있다. 자주 쓰는 Cache-Control Directives Directives를 한국말로 뭘로 하면좋을까.. 지시사항? 아무튼 그걸 살펴보려하는데, 여러 Directive들은 콤마(,)로 구분 가능하다. Directive를 이용하여 응답(Respons..

나중에 읽을 좋은 글 모음

시스템 디자인 https://medium.com/hackernoon/fundamentals-of-system-design-part-1-c87b1d2bfd31 https://gist.github.com/vasanthk/485d1c25737e8e72759f Jetpack Compose 기초 https://medium.com/captech-corner/jetpack-compose-concepts-every-developer-should-know-5bcb47914542 https://developer.android.com/courses/pathways/compose 시스템 디자인 인터뷰 https://www.educative.io/courses/grokking-the-system-design-interview