Lenovo S540-14API

아내의 업무를 위해 노트북을 하나 샀다. 레노버 데스크탑이 마음에 들어 이번에도 레노버 노트북으로 구매했다. 이것 저것 맞춤으로 설정해 주었지만, 아내는 배우기 어렵다며 데스크탑을 계속 썼다. 몇 달을 방치하다, 내가 쓰기 시작했는데 기대 이상으로 좋다.

가성비에 중점을 둔 모델이라 스펙이 대단하지는 않다.  하지만, 써보니 마감이 좋아 만족할 노트북이다. 

사용하면서 마음에 드는 점을 꼽자면 아래와 같다.

  • 카메라 우측에 동작을 표시하는 램프가 있다. 그리고, 물리적으로 카메라를 가리는 미닫이 커버가 또 있다.
  • 키보드의 키와 배치, 각각 키가 넓고, 오타가 잘 나지 않는다.
  • 지문 인식이 잘 된다.
  • 터치패드가 넓고 잘 된다.
  • 키보드 양쪽에 달린 스피커가 좋다.
  • 무게가 남자 성인에게는 무겁지 않다. (체감상은 충분히 가볍다.)
  • 우측, 측면에 달린 전원 LED가 유용하다.
  • 가격이 저렴하다.

 만족하지만 그래도 아쉬운 점이 있다면,

  • 우측하단에 위치한 방향 키 중에서 위/아래 키는 좀 더 크게 만들어줬으면 좋았을텐데 아쉽다. 하지만, 익숙해지면 생각보다는 오타가 안난다.

데스크탑에 이어 레노버 피시에 한번 더 만족하고 쓰고 있다. 유사 모델의 구매를 고려하는 분들은 긍정적으로 생각하셔도 좋을 것 같다.

 

참조

Bing Wallpaper

마이크로소프트 사의 검색엔진 빙에서는 하루 1장의 월페이퍼를 공개한다.

아름다울 뿐 아니라, 고해상도라 이 월페이퍼를 받아주는 앱이나 pc용 프로그램이 많다. 마이크로소프트에서 20년 4월에 정식 프로그램을 출시했으니, 광고 없이 편하게 써보자.

참조

  • 다운로드 : https://www.microsoft.com/ko-kr/bing/bing-wallpaper

안드로이드 스투디오에 내장된 JRE에 인증서 추가하기

안드로이드 스투디오에 내장된 JRE에 인증서를 추가해보자.

$ keytool -import -noprompt -trustcacerts -alias aliasname -file "<인증서 파일>" -keystore "<안드로이드 스투디오 설치 경로>\Android Studio\jre\jre\lib\security\cacerts" -storepass changeit

안드로이드의 BuildConfig 활용

안드로이드는 앱을 빌드하는 과정에서 여러 파일을 자동으로 생성한다. BuildConfig 클래스도 그 중 하나로, 현재 빌드에 관한 정보를 상수 필드로 갖고 있어 코드에서 직접 참고할 수 있다.

package me.sunphiz.kotlin.myapplication;

public final class BuildConfig {
  public static final boolean DEBUG = Boolean.parseBoolean("true");
  public static final String APPLICATION_ID = "me.sunphiz.kotlin.myapplication";
  public static final String BUILD_TYPE = "debug";
  public static final String FLAVOR = "";
  public static final int VERSION_CODE = 1;
  public static final String VERSION_NAME = "1.0";
}
if( BuildConfig.DEBUG )
{
    // 내 코드
}

파일은 /build/generated/source/buildConfig/.. 이하에 위치하고, <application id>.BuildConfig 의 이름을 갖는다.

기본 상수 외에 build.gradle를 통해 내가 필요한 필드를 직접 추가할 수도 있다. 이 상수는 빌드 타입에 따라 buildType 뿐 아니라 defaultConfig, productFlavors에도 선언이 가능하다. buildConfig를 여러 개 선언하다보면 번거로워진다. 이 때 Groovy의 맵 자료 구조 iteration을 이용하면, 아래처럼 buildConfig 값을 맵 형식으로 따로 정리할 수 있다.

ext {
    extraStringBuildConfig = [ NAME : '"Dog발자"' ]
    extraBooleanBuildConfig = [ KOREAN : 'true' ]
}

android {
    defaultConfig {
        ...

        extraStringBuildConfig.each{ k, v ->
            buildConfigField 'String', k, v
        }

        extraBooleanBuildConfig.each{ k, v ->
            buildConfigField 'boolean', k, v
        }
    }
    ...
}

그 밖에

참조