전체 글 536

NGINX 서브 도메인 설정하기 (feat.CloudFlare)

1. 서브도메인 추가하기 (CloudFlare) CloudFlare > DNS > Add record에서 서브 도메인 레코드를 추가한다. Type은 CNAME, name에 해당 서브도메인이 들어간다. test.com에 api 서브도메인을 추가하고 싶을때 설정은 다음과 같다. 2. NGINX 설정파일 작성 새로운 nginx 설정파일을 추가한다. 내용은 다음과 같다. server { listen 80; listen [::]:80; server_name api.test.com; // 서브도메인 rewrite ^ https://api.test.com/$request_uri; // https로 보내기 } server { listen 443 ssl; server_name api.test.com; // 서브도메인 s..

[안드로이드] HiltWorker 오류 Could not create Worker 해결방법

HiltWorker로 Worker에 의존성 주입받기 우선 필요한 dependency는 다음과 같다. Coroutine은 예시에서 CoroutineWorker를 만들 것이기때문에 넣어주었다. implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.1" implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.1' implementation "com.google.dagger:hilt-android:2.38.1" kapt "com.google.dagger:hilt-android-compiler:2.38.1" implementation("androidx.hilt:hilt-work:1...

[안드로이드] WorkManager Worker 디버깅하기

AndroidStudio의 App Inspector > Background Task Inspector에서 현재 돌아가고있는 Background Task 목록과 상태를 확인할 수 있다. 하지만 사진처럼 Status가 Failed가 떴을때는 정확한 원인을 진단하기가 힘든데, 이때 Worker에 생긴일을 디버깅하는 방법을 소개한다. adb logcat | grep -e "WM-WorkerWrapper" 터미널에서 위 명령어를 사용하면 WorkerManager 관련 로그들이 필터링된다. adb가 낯설다면 이 포스트(adb 개념과 사용방법)를 참조하면된다. 아니면 AndroidStudio내 logcat에서 로그 수준을 Info로 낮추고 찾아도된다! 09-13 16:54:01.737 14800 14838 I WM-..

프로그래밍을 위한 수학 - 마찰력 모델링

마찰력(Friction)은 두 물체의 접촉면 사이에서 물체의 운동을 방해하는 힘이다. 그림에서처럼, 썰매와 눈이내린 언덕사이의 마찰력때문에 이 썰매는 언젠가 멈추게 될 것이다. 그러면 프로그래밍에서 이 썰매를 어떻게 멈추게 할 것인가? 이 글에서는 두 물체가 상대적으로 움직이면서 문질러질때 발생하는 운동 마찰력만을 다루려고 한다. 마찰력의 공식은 다음과 같다. 이제 마찰력을 크기와 방향 두 성분으로 나누어 어떻게 계산하면 되는지 살펴볼 것이다. 먼저 방향이다. 마찰력의 방향은 물체에 작용하고 있는 힘과 반대로 작용한다. 공식에서 v는 속도 벡터를 의미하는데, 속도 벡터에 -1을 곱해 방향을 반대로 틀었다. // 벡터의 크기 구하기 function getMagnitude(x, y) { return Math..

김래일의 애니캐 테스트 - 첫 React 프로젝트 회고

https://rail-otaku.nooks-list.com/ 시작은 충동적으로 나는 웹 개발을 가장 싫어했다. 왜냐면 도전적인 부분이 없어서였다. 모바일 앱 개발을 하다보면 부족한 메모리와 씨름하고, 멀티 스레딩을 하고, 필요에 따라 캐시해둘것도 많이 만나게 된다. 백엔드는 말할 것도 없다. 웹에서는 좀 다르게 느껴진다. 물론 웹도 최적화 같은건 필요하겠지만, CDN쓰냐 마냐나, 파일 용량부분에서 싸우는게 많다. 나는 React, Vue.js 같은 웹 프론트엔드 프레임워크가 만들어지기 전에 웹을 개발하는 방법을 배웠다. jQuery로 DOM element들을 직접 움직이는 방식인데, 지금은 패러다임이 완전히 바뀌었다. 웹을 Component 단위로 조각 조각 나누고, 각 Component들은 상태의 변..

TinyDoge - 하루만에 만든 PNG 손실압축 프로그램 회고

만들게 된 계기 회사에서 안드로이드 앱을 만들때 Lottie 애니메이션을 많이 쓰면서 개발하고 있다. 벡터기반의 Lottie 애니메이션이라면 용량걱정은 없겠지만, 3D 렌더링된 이미지를 프레임별로 재생하는 형식의 Lottie 애니메이션이기 때문에 용량 부담이 컸다. 애니메이션을 줄이고 줄여서 14mb가 되었는데, 이건 좀 아니다 싶어서 결국 시작시에 인터넷 여건이 좋으면 다운로드 받아두는 걸로 구현을 해두긴 했다. 애니메이션이 나에게 처음오면 zip으로 압축했을때 1~2MB 정도의 사이즈다. 보통 이게 3개정도 넣어달라고 우르르 몰려오는데...순식간에 6MB가 앱 용량에 추가되는거다. 디자이너분들도 PINGoo같은 툴을 써서 압축해서 주시지만, TinyPNG만큼은 압축률이 좋지않다. PINGoo가 평균 ..

[batch] Windows 바탕화면에 바로가기 만들기 배치 스크립트

바탕화면에 현재 bat이 위치하는 디렉토리의 TinyDoge.exe에 대한 바로가기를 만드는 스크립트이다. @echo off set SCRIPT="%TEMP%\%RANDOM%-%RANDOM%-%RANDOM%-%RANDOM%.vbs" echo Set oWS = WScript.CreateObject("WScript.Shell") >> %SCRIPT% echo sLinkFile = "%USERPROFILE%\Desktop\TinyDoge.lnk" >> %SCRIPT% echo Set oLink = oWS.CreateShortcut(sLinkFile) >> %SCRIPT% echo oLink.TargetPath = "%cd%\TinyDoge.exe" >> %SCRIPT% echo oLink.Save >> %SC..

프로그래밍을 위한 수학 - 뉴턴의 운동 법칙

움직이는 물체는 위치, 속도, 가속도 벡터를 가진다. 가속도는 속도에 영향을 미치고, 속도는 위치에 영향을 미치는 관계다. 프레임마다 물체가 움직인다는 것은 accX가 가속도, velocityX가 속도라고 하면 위치 (x,y)는 대략적으로 다음과 같이 쓸 수 있다. function move() { this.velocityX += this.accX this.velocityY += this.accY this.x += this.velocityX this.y += this.velocityY } 힘(Force)은 뭘까? 여기서 말하는 힘은 물리학에서 말하는 힘이다. "힘은 질량을 지닌 물체를 가속하는 벡터"이다. 단순히 한 프레임이 지나면 특정 거리만큼 이동하는 물체가 아니라 "자연"스럽게 이동하는 물체를 구현하..

[Windows] Git Bash에 tmux 설치해서 사용하기

Git Bash는 설치되어 있다고 가정하도록 하겠다. 먼저 MSYS2를 설치해야하는데, 윈도우에서 사용할 수 있는 GCC 지원 프로그램은 MINGW, MSYS2, CYGWIN 3가지가 있다. Git Bash는 MINGW에 해당한다. MSYS2 설치 https://www.msys2.org/ 에들어가서 Installer를 다운받아서 설치한다. 아래 링크를 이용해도 되지만, 최신버전을 원한다면 홈페이지에 들어가기~! https://github.com/msys2/msys2-installer/releases/download/2022-06-03/msys2-x86_64-20220603.exe MSYS2 관리자 권한으로 실행 설치가 완료되었다면, MSYS2 터미널을 관리자 권한으로 실행한다. TMUX 설치 이제 pac..

<자네, 좌뇌한테 속았네!> - 크리스 나이바우어

도서관에서 신착도서 중 우연히 고른 책인데, 생각보다 흥미롭다. 아직은 초장이라 조금 더 읽어봐야 전체 내용을 알겠지만. 이 책에 소개된 뇌 연구에 따르면, 대부분의 사람들에게는 우측을 선호하는 경향이 있다고한다. 엇비슷한 물건들을 늘어놓고 골라보라하면 오른편에 있는 물건을 집는다는 말이다. "이걸 고른 이유가 뭡니까?"라고 물어보면 "이뻐서 그랬다"라거나 그럴싸한 이유를 얘기한다. 어느 누구도 오른쪽에 있어서 골랐다라고 하지않는다. 식당에서 계산할때 카드뽑기에서 승리할 확률을 높이는 방법!으로 쓸만하지 않을까? 조커뽑기 게임처럼 타인에게 어느정도 선택을 강요해야할 순간에 쓸 수 있는 트릭인 것 같다 ㅎㅎ. 이 책을 쓴 작가는 아버지가 돌아가셨을때 크나 큰 슬픔에 좌절을 겪었는데, 육체적으로 다친게 아님..

나/독후감 2022.08.29