2026/03/30

오늘의 이야기

Hilt는 안드로이드 앱 개발을 위한 의존성 주입 라이브러리로, Dagger를 기반으로 하여 더 쉽고 편리하게 의존성 주입을 구현할 수 있도록 도와줍니다. Hilt는 Dagger의 강력한 기능을 활용하면서도, 안드로이드 생명주기와 잘 통합되고, 설정이 자동화되며, 보일러플레이트 코드를 줄여주는 등의 이점을 제공합니다. 이를 통해 개발자는 더 빠르고 쉽게 안드로이드 앱을 개발할 수 있습니다



 


Definition of HILT


a handle especially of a sword or dagger… See the full definition


www.merriam-webster.com




Hilt를 안드로이드 프로젝트에 사용하면 다음과 같은 장점이 있습니다:



  1. 코드 재사용성: Hilt를 사용하면 코드를 더 잘 재사용할 수 있습니다 .

  2. 리팩토링 용이성: Hilt는 의존성을 관리하는 표준 방법을 제공하여 리팩토링을 용이하게 합니다 .

  3. 테스트 용이성: Hilt를 사용하면 테스트가 더 쉬워집니다. 의존성 주입을 통해 모의 객체(mock)를 쉽게 주입할 수 있어 테스트가 간편해집니다 .

  4. 보일러플레이트 감소: Hilt는 수동으로 의존성 주입을 하는 번거로움을 줄여줍니다. 모든 클래스와 그 의존성을 수동으로 구성하는 대신, Hilt는 이를 자동으로 관리해 줍니다 .

  5. 자동화된 생명주기 관리: Hilt는 안드로이드 클래스의 컨테이너를 제공하고 자동으로 생명주기를 관리하여, 개발자가 이에 신경 쓸 필요가 없게 해 줍니다 .

  6. Dagger의 장점 활용: Hilt는 Dagger 위에 구축되어 있어, 컴파일 시간의 정확성, 런타임 성능, 확장성 및 안드로이드 스튜디오 지원과 같은 Dagger의 장점을 그대로 활용할 수 있습니다 .


Hilt는 안드로이드 개발에서 의존성 주입을 더 쉽고 효율적으로 만들어주는 강력한 도구입니다.


https://dagger.dev/



 


Dagger


Dagger is a fully static, compile-time dependency injection framework for Java, Kotlin, and Android. It is an adaptation of an earlier version created by Square and now maintained by Google. The latest Dagger release is: Dagger 2.51.1 Dagger aims to addres


dagger.dev




Dagger와 Hilt는 모두 안드로이드 앱 개발에 사용되는 의존성 주입(Dependency Injection) 라이브러리입니다. 그러나 두 라이브러리 사이에는 몇 가지 중요한 차이점이 있습니다:



  1. 설정의 자동화: Hilt는 Dagger의 설정 코드를 자동으로 생성하여, 개발자가 많은 보일러플레이트 코드를 작성할 필요가 없게 해 줍니다 .

  2. 컴포넌트 관리: Dagger에서는 @Component 어노테이션을 사용하여 의존성 그래프를 수동으로 생성해야 하지만, Hilt에서는 @HiltAndroidApp 어노테이션을 사용하여 이 과정을 자동화합니다 .

  3. 생명주기와 스코프: Dagger에서는 개발자가 직접 스코프 어노테이션을 생성해야 하지만, Hilt는 안드로이드의 주요 컴포넌트(애플리케이션, 액티비티, 프래그먼트 등)에 대한 기본 스코프를 제공합니다 .

  4. 통합 및 호환성: Hilt는 Dagger를 기반으로 구축되었으며, Dagger의 기능을 활용하면서도 안드로이드 앱 개발에 더 특화된 기능과 통합을 제공합니다 .


이러한 차이점들은 Hilt를 사용함으로써 개발자가 더 쉽고 빠르게 의존성 주입을 구현할 수 있게 해 주며, Dagger의 복잡성을 줄여줍니다. 그러나 Dagger 자체도 매우 강력하고 유연한 의존성 주입 라이브러리이며, 세밀한 제어가 필요한 경우에는 여전히 유용합니다.


 


Hilt 이미지



 


여기 까지는 coPilot와 알아본 Hilt 이야기입니다.





오늘의 이야기

제트팩 컴포즈의 핵심 개념과 효과 핸들러

• 제트팩 컴포즈의 핵심 개념과 효과 핸들러에 대해 설명합니다.

• 컴포저블은 데이터를 UI 요소로 변환하는 함수입니다.

• 구성은 컴포저블을 실행하여 UI의 청사진을 만드는 과정입니다.

• 레이아웃은 UI 요소를 배치하는 위치를 결정하는 과정입니다.

• 도면은 UI 요소를 캔버스/장치 화면에 렌더링하는 과정입니다.

https://blog.kotlin-academy.com/the-lesson-we-skipped-in-jetpack-compose-255d61db6f12

The Lesson we Skipped in Jetpack Compose ☄

Core concepts of Composables and its helping hands — Episode III

blog.kotlin-academy.com


Key Concepts and Effects Handlers of Jetpack Compose

• Describes the core concepts and effect handlers of Jetpack Compose.

• Composible is a function that converts data into UI elements.

• The configuration is the process of creating a blueprint for the UI by running the Composible.

• Layout is the process of determining where to place UI elements.

• The drawing shows the process of rendering UI elements on canvas/device screen.

https://blog.kotlin-academy.com/the-lesson-we-skipped-in-jetpack-compose-255d61db6f12

The Lesson we Skipped in Jetpack Compose ☄

Core concepts of Composables and its helping hands — Episode III

blog.kotlin-academy.com





오늘의 이야기


#스하리1000명프로젝트,
In Korea verloren? Auch wenn Sie kein Koreanisch sprechen, hilft Ihnen diese App dabei, sich problemlos fortzubewegen.
Sprechen Sie einfach Ihre Sprache – es übersetzt, sucht und zeigt Ergebnisse in Ihrer Sprache an.
Ideal für Reisende! Unterstützt mehr als 10 Sprachen, darunter Englisch, Japanisch, Chinesisch, Vietnamesisch und mehr.
Probieren Sie es jetzt aus!
https://play.google.com/store/apps/details?id=com.billcoreatech.opdgang1127




2026/03/29

오늘의 이야기




엡데이트


업데이트를 해 봅니다.  이제 갤럭시 S23에서도 AI을 사용해 이런 저런 걸 해 볼 수 있을까요???





오늘의 이야기







봄 기운이 완연 합니다.
처음 와 봅니다.





오늘의 이야기



#스치니1000프로젝트 #재미 #행운기원 #Compose #Firebase

🎯 야 너 토요일마다 로또 확인하냐?
나도 맨날 "혹시나~" 하면서 봤거든 ㅋㅋ

근데 이제는 그냥 안 해
AI한테 맡겼어 🤖✨

그것도 구글 Gemini로다가!

그래서 앱 하나 만들었지
👉 "로또 예상번호 by Gemini" 🎱

AI가 분석해서 번호 딱! 뽑아줌
그냥 보고 참고만 하면 됨

재미로 해도 좋고…
혹시 모르는 거잖아? 😏


https://play.google.com/store/apps/details?id=com.billcorea.gptlotto1127




오늘의 이야기

Android Studio Koala | 2023.3.2 Canary 2
Build #AI-233.14475.28.2332.11606850, built on March 21, 2024
Runtime version: 17.0.10+0--11572160 amd64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
Windows 11.0
GC: G1 Young Generation, G1 Old Generation
Memory: 5120M
Cores: 8
Registry:
  ide.instant.shutdown=false
  ide.experimental.ui=true
Non-Bundled Plugins:
  wu.seal.tool.jsontokotlin (3.7.4)
  idea.plugin.protoeditor (233.13135.65)
  lermitage.intellij.battery.status (2.3.1)
  com.developerphil.adbidea (1.6.15)


 


새로운 버전이 release 되었습니다. 


 


koala release



 


Build a Generative AI app using the Gemini API template 

Gemini API 템플릿을 사용하여 Generative AI 앱 구축


 


You can now use Android Studio to build an app that implements Generative AI using the Google AI SDK. The Gemini API template in Android Studio lets you incorporate AI-powered features, such as those that rely on text generation and image recognition, in your app to delight your users.


 


이제 Android Studio를 사용하여 Google AI SDK를 사용하여 Generative AI를 구현하는 앱을 빌드할 수 있습니다. Android Studio의 Gemini API 템플릿을 사용하면 텍스트 생성 및 이미지 인식에 의존하는 기능과 같은 AI 기반 기능을 앱에 통합하여 사용자를 즐겁게 할 수 있습니다.


 


https://developer.android.com/studio/preview/gemini-template?hl=en



 


Android 스튜디오에서 첫 번째 생성형 AI 앱 빌드하기  |  Android Studio  |  Android Developers


Android 스튜디오의 새 템플릿을 사용하여 생성형 AI 앱을 실행하세요.


developer.android.com




 


Launch Android Studio in Safe Mode

안전 모드에서 Android Studio 실행


 


Android Studio offers the ability to launch Android Studio in Safe Mode. This mode can be useful if you run into a situation where certain features don't work or the entire IDE fails to launch. Using Safe Mode temporarily returns the IDE to a set of default configurations that might allow it to launch, so that you can troubleshoot from there to identify the issue and restore functionality.


 


Android Studio는 안전 모드에서 Android Studio를 실행하는 기능을 제공합니다. 이 모드는 특정 기능이 작동하지 않거나 전체 IDE가 실행되지 않는 상황에 처했을 때 유용할 수 있습니다. 안전 모드를 사용하면 IDE가 실행을 허용할 수 있는 일련의 기본 구성으로 일시적으로 돌아가므로 거기서부터 문제를 해결하여 문제를 식별하고 기능을 복원할 수 있습니다.


 


https://developer.android.com/studio/preview/features?hl=en#safe-mode



 


Android 스튜디오 미리보기의 새로운 기능  |  Android Studio  |  Android Developers


Android 스튜디오 미리보기의 새로운 기능을 확인하세요.


developer.android.com




이상으로 새로운 릴리즈에 대한 이야기를 번역해 보았습니다.


 


 


 


 


 





오늘의 이야기


#스하리1000명프로젝트

스치니들!
내가 만든 이 앱은, 내 폰에 오는 알림 중에서 중요한 키워드가 있는 경우
등록해둔 친구에게 자동으로 전달해주는 앱이야 📲

예를 들어, 카드 결제 알림을 와이프나 자녀에게 보내주거나
이번 달 지출을 달력처럼 확인할 수도 있어!

앱을 함께 쓰려면 친구도 설치 & 로그인해줘야 해.
그래야 친구 목록에서 서로 선택할 수 있으니까~
서로 써보고 불편한 점 있으면 알려줘 🙏

👉 https://play.google.com/store/apps/details?id=com.nari.notify2kakao





오늘의 이야기

 앱을 만들고 playstore에 등록을 하고, firebase에 등록을 해야 하다 보면 singing report을 통해서 SHA-1 SHA-256 값들을 구해야 하는 경우가 생기게 됩니다. 


 


안정화된 버전의 android studio 의 경우는 다를 수 도 있겠으나,  Canary 버전을 사용하고 있는 지금은  기본 Setting으로는 그것을 보여 주지 않도록 하고 있는 것으로 보입니다. 


 


--- Android Studio 버전 정보 ---


Android Studio Jellyfish | 2023.3.1 Canary 13
Build #AI-233.14475.28.2331.11543046, built on March 7, 2024
Runtime version: 17.0.10+0--11446219 amd64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
Windows 11.0
GC: G1 Young Generation, G1 Old Generation
Memory: 5120M
Cores: 8
Registry:
  ide.instant.shutdown=false
  ide.experimental.ui=true
Non-Bundled Plugins:
  wu.seal.tool.jsontokotlin (3.7.4)
  lermitage.intellij.battery.status (2.3.1)
  com.developerphil.adbidea (1.6.13)


 


 화면 오른쪽 상단에 있는 코끼리 버튼을 클릭 하여 gradle 창을 열어 보면 이렇게 보여서 혹시 당황스럽더라도...


 




 


 


다음과 같이 해 보세요... 먼저 설정 (Setting)을 들어가 봅니다.    아래 그림 처럼  되는  Gradle에 체크되지 않은 옵션 2개가 보입니다. 그걸 2개다 일단 체크합니다.




 


 


다음은 File 메뉴에서 Sync Project with Gradle Files을 선택하여 Gradle을 다시 실행합니다. 


 




 


 


시간이 좀 흐른 다음... 다시 Gradle 창을 들어가 보면  아래 그림처럼 android 탭이 생기고 그 안에 signing report 가 보입니다.  이제 그걸 더블 클릭하고 실행하게 되면  singing report 가 출력 되는 것을 볼 수 있습니다. 


 




 


 


이제 그 안에서 SHA-1 값을 찾아 사용해 볼 수 있습니다.  다만 그것은 debug 모드에서 사용할 수 있는 내용이고요. release key에 해당하는 값을 구하는 방법은  다음 그림과 같이 터미널 창에서 입력해 실행해 보세요.


 




 


마지막에 있는 파일 이름은 release 할 때 사용하는 key 파일 이름입니다. 


 


이상으로 오늘 이야기를 마무리하겠습니다.   이렇게 정리를 두는 것도... 다 나중에 다시 보기 위해서.... 오늘도 파이팅입니다.





오늘의 이야기

https://play.google.com/store/apps/details?id=com.billcoreatech.opdgang1127&pli=1



 


옵데강 (제주맛집 리스트 모아보기) - Google Play 앱


인터넷에 널린(?) 제주 맛집 정보를 모아 봅니다.


play.google.com




 


조금은 허접한(?) 앱 이기는 합니다만... 그래도 나름 재미있는 프로젝트 이기는 합니다.   이 앱을 구동하기 위해서는 


1. python 을 이용한 앱 스크래핑을 해야 합니다. 


2. firebase RealtimeDatabase에 저장을 해야 합니다.


3. android 앱이 realtime database 의 정보를 수신해 보여주는 기능을 구현해야 합니다.


4. 덤으로 제주버스정보을 API 호출을 통해 수신하고 관리합니다.


5. 앱에서는 구글 지도를 이용해 해당 정보를 표시해 줄 수 있어야 합니다.


 


이걸 하기 위해서는 24시간 구동이 가능한 서버 구성이 필요하기도 합니다. python을 24시간 구동하는 방법으로는 Google Cloud Function을 이용할 수 도 있겠지만, 시간 단위로 트리거를 해야 하는 등등 절차가 필요합니다.  그래서 현재는 raspberry pi 4를 이용해서 집에서 구동해 보고 있습니다.


 


그럼 오늘의 이야기는  python으로 주소 정보를 수집하는 것에 대한 이야기를 적어 보겠습니다.


 


 


import urllib
import requests
from bs4 import BeautifulSoup

searchKey = '제주맛집'
for idx in range(1, 100):
print(idx)
url = "https://search.daum.net/search?w=fusion&nil_search=btn&DA=STC&q={0}&p={1}&col=blog".format(
urllib.parse.quote_plus(searchKey), idx)
response = requests.get(url, verify=True)
# print(response.text)
bs = BeautifulSoup(response.text, 'html.parser')
# print(bs)
# print('---------------------------------------------------------------------------------------------')
for item in bs.find_all('c-menu-share'):
print(item['data-link'])

 


다음 포털의 검색을 위해서 '제주맛집'이라는 검색을 입력해 보면 위 URL을 통해서 검색된 정보를 노출하고 있는 것을 알 수 있었습니다.   html을 파싱 하기 위해서 BeautifulSoup을 이용해 보았습니다. 


 


이제 결과를 통해서 제주맛집으로 검색되는 블로그의 URL 임을 확인해 볼 수 있었습니다.


 


실행 결과



 


다음은 저 URL을 읽어서 해당 페이지의 html을 읽어 보도록 하겠습니다.


 


def parseText(baseUrl):
try:
response = requests.get(baseUrl, verify=True)
bs = BeautifulSoup(response.text, 'html.parser')
text1 = ''
if 'blog.naver' in baseUrl:
iframexx = bs.find_all('iframe')
for iframe in iframexx:
res = requests.get('https://blog.naver.com/' + iframe.attrs['src'])
bs = BeautifulSoup(res.text, 'html.parser')
text1 = re.sub('(<([^>]+)>)', '', bs.get_text())
else:
text1 = re.sub('(<([^>]+)>)', '', bs.get_text())

 


 


html 에서 text 만 html tag 을 다 제거한 경우의 결과값



 


이렇게 해서 블로그 페이지에서 text 만 추출하는 작업을 해 보았습니다.   


 


이제 오늘 해 보고 싶었던 이야기... 저 글에서 추출해 보고 싶은 정보인  블로그 안에서 찾을 수 있는 맛집 정보를 GEMINI AI을 활용해서 추출하는 프롬프트를 작성해 보겠습니다. 


 


def getGeminiResponse(text):
# Or use `os.getenv('GOOGLE_API_KEY')` to fetch an environment variable.
GOOGLE_API_KEY = 'AIz....................TQ3A'
genai.configure(api_key=GOOGLE_API_KEY)
prompt = '''
From now on, you will be analyzing sentences and finding addresses in South Korea within them.
You will also be tasked with finding out the name of the store located at that address.
Are you familiar with the address format in Korea?
The address will be written separately into street number address and road name address.
Although it is not possible to know which address is contained in the following sentence,
you will be able to find it well.
And find a phone number or cell phone number where you can be contacted.

The response format is
"상호: Company name or Business name, 주소: Korean address, 전화: Phone Number or Telephone Number"

The answer must always be in Korean.
Now, find the address and business name and phone number or telephone number in the next sentence and let me know.
{0}
'''.format(text)

model = genai.GenerativeModel(model_name='gemini-pro',
generation_config = generation_config,
safety_settings = safety_settings)
response = model.generate_content(prompt)
return response.text

 


나름 한글로 정리한 요건을 영문으로 번역해 프롬프트를 만들어 보았습니다. 아직 한글로 요청하면 이해도가 떨어지기 때문이기 때문입니다.   아직 까지는 비용 발생 없이 잘 활용하고 있습니다. 


 


이 코드들을 잘 활용한 결과를 만들어야 할 텐데... 걱정입니다.   현재 운영 중이 앱은 xml layout으로 구현되어 앱을 수정해야 할 필요성을 느끼고 있어서(?) 수정 작업을 해 볼 예정입니다. 


 


다음 이야기는 정리가 되면 다시 적어 보겠습니다.


 


 





오늘의 이야기


#스하리1000명프로젝트,
Soms is het moeilijk om met buitenlandse werknemers te praten, toch?
Ik heb een eenvoudige app gemaakt die helpt! Jij schrijft in jouw taal, en anderen zien het in hun taal.
Het vertaalt automatisch op basis van instellingen.
Superhandig voor makkelijke chats. Neem eens een kijkje als je de kans krijgt!
https://play.google.com/store/apps/details?id=com.billcoreatech.multichat416




오늘의 이야기

안드로이드 14의 새로운 기능 안드로이드 14 • 안드로이드 14는 이미 출시되었으며, 대부분의 애플리케이션 개발자에게 영향을 미칠 모든 중요한 변경 사항을 정리했습니다. • 배경 모드에 대한 새로운 제한, 전경 서비스의 변경, 의도 및 방송 수신자의...