전체 글 491

Beelink MINI S : 미친 가성비의 미니 PC

나는 너굴 리스트, 김래일의 애니캐 테스트 두 서비스를 운영하기 위해서 Vultr에서 서버를 빌려 쓰고 있다. 둘 다 그렇게 사용자가 많지도 않아서 수익도 거의 없다시피하고 의리로 올려두었는데, 서버 비용이 꽤 부담스러웠다. 너굴리스트는 2019년에 출시해서 무려 4년된 서비스다...ㅋㅋㅋㅋ 세월이 정말 빠르군... 초반에 유저가 폭발적일때는 월 $88짜리 서버를 사용했다가, 동물의 숲 인기가 줄어들며 3년 전에 $44로 줄여서 쓰다 작년 말부터는 $31로 줄였다. 서버비가 많이 줄어든 것 같지만, 환율은 나를 냅두지 않았다. 3년전 1100원대이던 달러 환율은 지금 1355원...! $31는 이제 한국돈으로 42,000원이다. 1년에 도메인 비용, Apple Developer 갱신 비용까지 합하면 너굴..

나/리뷰 2023.10.27

[Steam] 스팀 보류중인 거래 취소하는 방법

구매를 하려다 중간에 취소하고, 다시 장바구니에서 결제하려할때 보류 중인 다른거래에 의해 결제가 막히는 경우가 있다. 당신에 계정에 대해 보류 중인 또 다른 거래가 있기 때문에 처리가 이루어 질 수 없었습니다. 내 지갑 보기 > 내 계정 정보 보기(오른쪽 아래) > 구매 기록보기에서 문제가 있는 보류된 결제건의 영수증 아래 취소하기를 눌러주면 된다.

나/이슈 2023.10.21

Build was configured to prefer settings repositories over project repositories but repository 'maven' was added by build file 오류 해결방법

오류 해석 빌드가 project/build.gradle에 선언된 repository보다 settings.gradle에 선언된 repositories를 선호하도록 설정되어 있으나, 프로젝트단에서 "maven"이라는 repositories를 선언해버렸다는 의미이다. 원인 내 settings.gradle.kts 파일에는 RepositoriesMode가 FAIL_ON_PROJECT_REPOS로 설정되어 있다. 이 RepositoriesMode는 3가지 종류가 있다. RepositoriesMode.PREFER_PROJECT 기본 값, settings.gradle에 선언된 repositories를 무시하고, project단의 repositories를 참조한다. RepositoriesMode.FAIL_ON_PROJE..

Mainframer - 리모트 서버에서 빌드를 돌려보자

안드로이드 프로젝트 빌드 시간으로 고민하는 사람들이 많을 거라고 생각한다. 좋은 장비가 도움을 줄수는 있지만, 남아도는 좋은 서버가 있다면? (꽤 희망적인 가정인데) Mainframer나 Mirakle을 이용하면 SSH를 통해 리모트 머신에서 프로젝트를 빌드하고 결과를 로컬에 동기화 할 수 있다. 이것이 가능한데에는 rsync가 큰 역할을 한다. 우선 빌드서버와 SSH 연결이 가능한 상태를 가정하도록 하겠다. SSH 연결만 된다면 리모트 머신에서 딱히 준비할 건 없기때문이다. Mainframer Releases 페이지에서 최신 버전의 mainframer.sh를 다운받는다. . └── MyAndroidProject/ ├── app ├── .mainframer/ │ ├── config │ ├── ignore..

Gradle의 이해: Plugin

Plugins 플러그인은 총 3종류로 구분할 수 있다. Gradle Core Plugin Gradle에서 제공하는 플러그인으로 Plugin의 namespace가 org.gradle인 플러그인 들이다. 앞서 보았던 ‘java-library’도 이에 해당한다. Version 정의가 필요 없다. Community Plugin 보통 gradlePluginPortal()에 위치하고 있으며 ID와 Version으로 구성되어 있다. Convention Plugin 로컬에서 직접 구성하는 플러그인이다. 많은 하위 프로젝트가 있는 프로젝트에서, 동일한 빌드 구성 또는 빌드 로직을 반복작업해야하는 번거로움이 생기는데, Convention Plugin을 구성해두면 빌드 구성을 캡슐화해서 단 한줄만으로 원하는 빌드 구성을 적..

Gradle의 이해: Task

Tasks gradle :project:tasks 를 입력하면 프로젝트에서 수행 가능한 Task들을 알 수 있다. Gradle 작업의 중요한 측면은 증분성에 있다. 이는 Gradle이 이전 빌드의 결과를 재사용 할 수 있다는 것을 의미한다. 따라서 프로젝트를 빌드하고 소스 코드의 작은 부분만 변경했다면, 다시 빌드하더라도 다시 수행해야하는 Task들은 처음 빌드보다 적어진다. > Task :app:processProductionDebugGoogleServices UP-TO-DATE > Task :app:productionDebugOssDependencyTask UP-TO-DATE > Task :app:productionDebugOssLicensesTask UP-TO-DATE > Task :app:merg..

주석은 중요하다

지난 2주는 아주 고통스러웠다. 긴 연휴가 끝나고 마법처럼 이슈들이 빵빵 터졌다. 마치 잘 쉬었냐고 인사하는 것처럼... 긴 이슈의 터널을 통과하면서 "주석은 중요하다"라는 것이 뼈저리게 느껴졌다. (모든 것이 주석때문은 아니었지만) 물론, 주석은 해가 되기도 한다. - 별다른 주석 없이 주석처리된 코드 - 코드와 맞지 않는 Outdated된 주석 - 쓸모없는(redundant) 주석 Clean Code 열풍과 함께 주석 없는 코드가 완전히 대세가 되었다. "주석 없이도 읽힐 수 있는 코드가 잘 짜여진 코드다"라는 말 한번쯤 들어보셨으리라 생각한다. 나도 그에 동의했고, 되도록이면 주석을 적지 않으려고 했다. 마틴 파울러 선생님이 틀렸다고는 생각하지 않지만, 내가 틀렸다고는 생각한다. 내가 쓴 코드가 정..

Gradle의 이해: build.gradle

The Build Files Gradle이 각 모듈을 빌드할 수 있으려면 build.gradle.kts 파일이 필요하다. Plugin, Extension, Dependencies의 3가지 구성으로 이루어져 있다. Plugin 플러그인은 Gradle Task의 집합이다. 예시로 든 java-library 플러그인은 source set내의 파일들을 “jar” 파일로 빌드하는 Task들이 정의되어있다. 이처럼 플러그인 선언은 하위 프로젝트가 어떻게 빌드될 것인가에 대한 룰을 설정한다. plugins { id("java-library") } Extension Compile할때 특정한 Java 버전이 필요할 수 있다. 이러한 작업을 위해 플러그인은 Extension을 제공한다. java { toolchain.la..

Gradle의 이해: settings.gradle

The Settings File 새 Gradle 프로젝트를 만드려면 프로젝트에 settings.gradle.kts를 추가해야한다. rootProject.name으로 프로젝트에 이름을 지정한다. rootProject.name = "my-project" dependencyResolutionManagement 에서 프로젝트의 모든 하위 프로젝트들에서 이용되는 Repository와 종속성을 구성한다. dependencyResolutionManagement { repositories { mavenCentral() ... } includeBuild("../my-other-project") } pluginManagement로 플러그인을 찾을 수 있는 위치를 지정한다. pluginManagement { reposito..

[발더스 게이트3] 캔들할로우의 무덤 들어가는 법: 위치 및 비밀번호

캔들 할로우의 묘비상점 위치 바실리스크 게이트에서 북쪽으로 가다보면 잠긴 문이 있습니다. 살인 조사 퀘스트를 완료했다면 캔들할로우의 묘비 상점에 들어올 수 있는 상점 열쇠를 가지고 있을 겁니다. 하지만 완료하지 않았다면 문을 따거나 부시고 들어가세요. 상점에 들어오면 별 거없으니 파밍하지마시고 가장 안쪽의 방으로 들어가 우측에 걸린 "해골 위의 나비" 그림을 떼어내면 버튼이 보일겁니다. 버튼을 클릭하면 좌측의 숨겨진 문이 드러나게 됩니다. 하지만 들어가려면 암호가 필요하다며 돌려보내죠... 암호를 얻는방법 엘프송 여관(와인축제)에서 "코라 하이베리"를 만나서 그녀를 독살하려고 하는 빨간 갑옷의 드워프 돌로와 싸웁니다. 이때 드워프는 페이스 메이커의 부띠끄에 있는 다음 희생자인 피가로 페니굿에게로 도망가게..