전체 글 173

[github blog] jekyll hyde 테마 초기 설정하기

공식 레포지토리에서 몇 가지를 수정해야 hyde 테마를 사용할 수 있습니다. ruby 버전 확인 저는 3.2.2 입니다. ruby 3.2.2 gem 설치 gem install jekyll jekyll-gist jekyll-sitemap jekyll-seo-tag _config 수정 마크다운 종류 수정 # Dependencies markdown: kramdown jekyll-paginate 및 gist 플러그인 추가 plugins: - jekyll-paginate - jekyll-gist url 수정해주세요, 자신이 사용할 깃허브 블로그 주소로 바꾸어 주어야 포스트가 정상적으로 출력됩니다. url: https://hanarotg.github.io 구동 아래 명령을 통해 localhost:4000에서 구동할..

소프트웨어 2024.01.24

[android/java] firesbase SDK java.util.long cannot be cast to class java.lang.integer 문제 해결

개요 이 글은 안드로이드 firebase SDK 사용하여 데이터베이스 I/O를 할때, firebase 데이터를 자바 Integer에 저장 시도하는 경우 에 한해 올바른 해결 방안을 안내합니다. int count = data.get("count"); 해결 방법 안드로이드에서 데이터베이스 I/O에 사용되는 모든 숫자 변수는 long을 사용해 주세요. 또한 long으로 캐스팅해주세요. long count = (long) data.get("count"); 이유 firebase 데이터베이스의 숫자는 모두 Long 자료형으로 받습니다. 따라서 캐스팅 가능한 long으로 캐스팅해주어야 합니다. 참고 자료 https://firebase.google.com/docs/database/android/read-and-writ..

[android/java] recyclerview onClickListener에서 fragment transaction 및 startActivity 구현하기

가정 custom recyclerView를 이미 구현했다고 가정합니다. 아래와 같이 생성자 내부에 onClick 리스너가 작성된 상태에서 시작합니다. public class TestAdapter extends RecyclerView.Adapter { ... public static class ViewHolder extends RecyclerView.ViewHolder { ... private AppCompatActivity activity; public ViewHolder(View view) { super(view); ... view.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { } }); Fr..

[flutter] linearGradient opacity 조절하여 일부 투명하게 만들기

개요 플러터 개발 시 LinearGradient 위젯을 사용하는 예제, 반투명하게 사용하는 예제 코드입니다. 소스 코드 Container( height: 200, decoration: BoxDecoration( gradient: LinearGradient( begin: Alignment.topCenter, end: Alignment.bottomCenter, colors: [ ColorStyle.black, ColorStyle.white, ])), ), 아래와 같이 일부를 투명하게 만들 수도 있습니다. Container( height: 200, decoration: BoxDecoration( gradient: LinearGradient( begin: Alignment.topCenter, end: Align..

[android/java] 메소드 오버라이딩 시 super 메소드 호출의 필요성

개요 안드로이드 프로그래밍할때, 우리는 굉장히 많은 메소드를 오버라이딩합니다. 그런데 오버라이딩 시 super 문법을 통해 부모 클래스의 메소드를 호출하는 것 super.onSaveInstanceState(outState); 을 매우 자주 보았을 겁니다. 왜 사용할까요? 메소드 오버라이딩은 일반적으로 부모 클래스 메소드를 사용하지 않고 재정의한 메소드를 사용하기 위함인데, 굳이 부모 클래스의 메소드를 호출하면 오버라이딩한 의미가 별로 없지 않나요? @Override public void onSaveInstanceState(@NonNull Bundle outState) { super.onSaveInstanceState(outState); ... } super 먼저 이 상황을 이해하기 위해선 super 문법..

[java] @Override 메소드 오버라이딩에 대한 이해

개요 메소드 오버라이딩은, 부모 클래스에서 정의된 메소드를 재정의하는 것입니다. 기본 어노테이션 @Override 를 선언하여 기존 클래스의 동일한 메소드를 재정의함을 명시합니다. 아래 소스 코드는 클래스 A를 상속받는 클래스 B에서 메소드 hello()를 오버라이딩했습니다. 클래스 A에서 정의한 hello()가 아닌 클래스 B에서 정의한 hello()가 실행되었습니다. ▶ 소스 코드 class A { public void hello() { System.out.println("Hello, A"); } } class B extends A { @Override public void hello() { System.out.println("Hello, B"); } } class HelloWorld { public..

[flutter] BuildContext 그리고 ScaffoldState.of() 에 대한 이해

BuildContext 위젯 트리 내 위젯의 위치 정보를 가지는 클래스입니다. StatelessWidget.build 또는 State 객체(주로 StatefulWidget과 같이 활용되는)에서 사용가능한 메소드들을 제공합니다. StatelessWidget.build 아래 코드와 같이 StatelessWidget.build 메소드를 사용였습니다. build 메소드 하위 블록 {} 에서 context 를 이용한 작업 수행이 가능합니다. import 'package:flutter/material.dart'; void main() => runApp(const ExampleApp()); class ExampleApp extends StatelessWidget { const ExampleApp({super.key}..

[flutter] android minSdkVersion 변경하기 (flutter sdk 3.13)

또 달라졌습니다... 버전 변경 프로젝트에 사용하는 flutter sdk 디렉토리/packages/flutter_tools/gradle/src/main/groovy/flutter.groovy 에 있습니다. /** * For apps only. Provides the flutter extension used in app/build.gradle. * * The versions specified here should match the values in * packages/flutter_tools/lib/src/android/gradle_utils.dart, so when bumping, * make sure to update the versions specified there. * * Learn more ab..

[python] Firebase Admin SDK child path 활용 데이터 읽기

개요 python firebase admin sdk를 활용하여 실시간데이터베이스에서 데이터를 읽는 방법과 path를 작성하는 방법입니다. 가정 다음과 같이 데이터가 저장되어 있다고 가정합니다. - fruit : - apple : - price : "100" - size : "3" - banana : - price : "200" - size : "92" - orange : - price : "600" - people : - amy - james 기본 설정 python 스크립트에서 아래와 같이 작성합니다. import firebase_admin from firebase_admin import credentials from firebase_admin import db cred = credentials.Cert..

[android] BottomNavigationView 아이템 클릭 시 shift mode 애니메이션 비활성화하기

문제 BottomNavigationView의 아이템 선택 시 아이콘과 라벨이 동시에 커지는 애니메이션이 기본값으로 설정되어 있습니다. 이 애니메이션 효과(Shift mode)를 제거해 보겠습니다. 해결 방법 이 문제를 해결하기 위해 빌드 시 강제로 dimens.xml에 지정된 값(12sp)을 오버라이드하도록 만들어야 합니다. res/drawable/values/dimens.xml 에 아래 코드를 추가해 주세요. 12sp 바텀네비게이션 레아아웃에 아래 코드를 추가해 주세요. xmlns:tools="http://schemas.android.com/tools" tools:override="true" 애니메이션 효과가 사라졌습니다. 참고 자료 해당 이슈에서 해결 방법을 찾았습니다. Google Issue Tra..