2026/03/20
오늘의 이야기
#billcorea #운동동아리관리앱
🏸 Schneedle, một ứng dụng cần có cho các câu lạc bộ cầu lông!
👉 Đấu trận – Ghi điểm & Tìm đối thủ 🎉
Hoàn hảo cho mọi nơi, một mình, với bạn bè hoặc trong câu lạc bộ! 🤝
Nếu bạn thích cầu lông, nhất định phải thử nó
Vào ứng dụng 👉 https://play.google.com/store/apps/details?id=com.billcorea.matchplay
오늘의 이야기
챗봇에서 이미지를 그리는 무료 사이트를 정리해보았습니다.
1. QuickDraw Bot
- 장점: 빠르고 쉽게 그림을 그릴 수 있다.
- 단점: 그림의 자세한 설정이 어려우며, 그림의 크기와 색상을 조정할 수 없다.
- 링크: https://quickdraw.withgoogle.com/
2. SketchBot
- 장점: 세부적인 그림 설정이 가능하며, 레이어를 적용하여 그림을 그릴 수 있다.
- 단점: 그림을 그리는 데 시간이 조금 걸린다.
- 링크: https://sketchbot.io/
3. DrawBot
- 장점: 정교한 그림을 그릴 수 있으며, 크기와 색상을 조정할 수 있다.
- 단점: 그림 그리기에 시간이 걸리며, 처음부터 그림을 그리거나 이미지를 업로드해야 한다.
- 링크: https://www.drawbot.com/
그 이외에도 많은 챗봇 이미지 그리기 사이트가 있으니 참고하시길 바랍니다!
오늘의 이야기

어느 날 받은 구글 playstore에서 받은 메일의 본문 내용입니다. 앱을 하나 게시하고 있는 중인데 말입니다.
앱의 제목에 '할인 쿠폰 모아보기' 라는 제목을 정해서 릴리즈 요청을 드렸더니... 이런 메일이 왔지 먼가요?
흠... 저 제목에서 사용자 평점, 리뷰, 설치 수 정책 정보가 위반이라는 말인 데... 그런 느낌이 드시나요?
아무튼 알 수 없는 구글(?) 입니다. 그래서 앱의 제목을 '바코드 할인 쿠폰'이라고 변경을 했더랍니다. 그렇게 해서 다시 배포를 하고 있기는 합니다.
구글의 개발자 정책이 고지식 한 부분이 있다는 것에 대해서 이해를 하고 있기는 하지만... 말입니다. 좀 과하다는 생각이 들 때가 있습니다.
오늘도 마무리 잘 하시길 바랍니다.
오늘의 이야기
#스하리1000명프로젝트,
¿Perdido en Corea? Incluso si no hablas coreano, esta aplicación te ayuda a moverte fácilmente.
Simplemente hable su idioma: traduce, busca y muestra resultados en su idioma.
¡Genial para viajeros! Admite más de 10 idiomas, incluidos inglés, japonés, chino, vietnamita y más.
¡Pruébalo ahora!
https://play.google.com/store/apps/details?id=com.billcoreatech.opdgang1127
2026/03/19
오늘의 이야기

이미지를 그리는 GPT 프롬프트 20개입니다.
1. Draw a beautiful sunset over the ocean.
2. Draw a cute puppy playing with a ball.
3. Draw a majestic mountain range with snow on the peaks.
4. Draw a delicious-looking pizza with all your favorite toppings.
5. Draw a serene forest with a small stream running through it.
6. Draw a futuristic city with flying cars and neon lights.
7. Draw a cozy cabin in the woods with a roaring fire inside.
8. Draw a magical castle with turrets and a moat.
9. Draw a peaceful garden with blooming flowers and a pond.
10. Draw a group of friends having a picnic in a park.
11. Draw a spooky haunted house with ghosts and bats.
12. Draw a bustling city street filled with people and shops.
13. Draw a beautiful butterfly perched on a flower.
14. Draw a majestic unicorn running through a meadow.
15. Draw a delicious-looking ice cream sundae with all the toppings.
16. Draw a serene beach with palm trees and clear blue water.
17. Draw a playful dolphin jumping out of the ocean.
18. Draw a beautiful rainbow over a field of flowers.
19. Draw a cozy coffee shop with comfortable chairs and good music.
20. Draw a fierce dragon guarding its treasure hoard.
이것들이 도움이 되었기를 바랍니다!
오늘의 이야기
#스치니1000프로젝트 #재미 #행운기원 #Compose #Firebase
🎯 야 너 토요일마다 로또 확인하냐?
나도 맨날 "혹시나~" 하면서 봤거든 ㅋㅋ
근데 이제는 그냥 안 해
AI한테 맡겼어 🤖✨
그것도 구글 Gemini로다가!
그래서 앱 하나 만들었지
👉 "로또 예상번호 by Gemini" 🎱
AI가 분석해서 번호 딱! 뽑아줌
그냥 보고 참고만 하면 됨
재미로 해도 좋고…
혹시 모르는 거잖아? 😏
https://play.google.com/store/apps/details?id=com.billcorea.gptlotto1127
오늘의 이야기
대전의 2023년 5월 18일 날씨
2023년 5월 18일 목요일 대전의 날씨에 대한 자세한 정보를 제공합니다.
대전 날씨 요약: 대전의 날씨는 목요일에 흐리고 비가 올 것으로 예상됩니다. 최고 기온은 화씨 68도, 최저 기온은 화씨 63도입니다. 바람은 시속 6~8마일로 남동쪽에서 불 것입니다.
하루 종일 날씨: 아침에는 흐린 하늘과 가벼운 비가 내릴 것으로 예상됩니다. 최고 기온은 화씨 68도입니다. 오후에는 여전히 흐린 하늘과 가끔 비가 내릴 것으로 예상됩니다. 최저 기온은 화씨 63도입니다.
아침 의상: 아침에는 흐린 하늘과 가벼운 비가 내릴 것으로 예상되므로 우산을 가져오는 것이 좋습니다. 편안한 옷을 입고 따뜻하게 유지하십시오.
낮 의상: 오후에는 여전히 흐린 하늘과 가끔 비가 내릴 것으로 예상되므로 우산을 가져오는 것이 좋습니다. 편안한 옷을 입고 따뜻하게 유지하십시오.
저녁 의상: 저녁에는 흐린 하늘과 가끔 비가 내릴 것으로 예상되므로 우산을 가져오는 것이 좋습니다. 편안한 옷을 입고 따뜻하게 유지하십시오.
대전에서 즐거운 시간 보내시기 바랍니다!
이상은 구글 bard가 말해 주는 이야기입니다.

오늘의 이야기
#스하리1000명프로젝트
스치니들!
내가 만든 이 앱은, 내 폰에 오는 알림 중에서 중요한 키워드가 있는 경우
등록해둔 친구에게 자동으로 전달해주는 앱이야 📲
예를 들어, 카드 결제 알림을 와이프나 자녀에게 보내주거나
이번 달 지출을 달력처럼 확인할 수도 있어!
앱을 함께 쓰려면 친구도 설치 & 로그인해줘야 해.
그래야 친구 목록에서 서로 선택할 수 있으니까~
서로 써보고 불편한 점 있으면 알려줘 🙏
👉 https://play.google.com/store/apps/details?id=com.nari.notify2kakao
오늘의 이야기
PyCharm 2021.2 (Community Edition)에서 codeGPT을 활용해 코드 작성의 도움을 받아 볼 수 있습니다.

먼저 할 일은 Setting - plugin 에서 codeGPT 을 찾아서 설치를 해 보는 것입니다.

이미 설치 되었기 때문에 market에서 검색을 했을 때 installed라고 나오지만, 설치 전이라면 초록색으로 install이라고 나옵니다. install을 클릭해 설치를 해 봅니다.
오늘은 Flask 을 이용해서 간단한 데이터 조회하는 화면을 만들어 보겠습니다.
1. 설치가 되고 나면 pycham 오른쪽 상단에 codeGPT 탭이 보입니다. 해당 탭을 클릭해서 명령어 입력창이 나오게 한 다음, 잘 안 되는 영어로 질문을 해 봅니다.
flask use for firebase realtime database refence data list view
문법이 맞지 않는 엉터리 영어이기는 하지만, 알아 들었나 봅니다.

python 코드을 생성해 주었습니다.

data html 코드도 생성을 해 줍니다.

data.html 이 있기는 하지만 에러가 발생합니다. 해서 해당 에러 내용을 그대로 복사해서 물어보았습니다. data.html 파일의 경로가 문제인 듯합니다. templates라는 폴더를 생성하고 그 안에 data.html을 넣어야 한다고 친절하게 설며을 해 줍니다.
그래도 계속 되는 에러에 열받은(?) 저는 한글로 질문을 해 봅니다.

친절한(?) 설명이 계속됩니다.

여기까지의 설명을 듣고 난 저는 이해를 하였습니다. 그래서 생성된 코드는 다음과 같습니다. ㅋ~
from flask import Flask, render_template
import firebase_admin
from firebase_admin import credentials
from firebase_admin import db
# initialize the Flask app
app = Flask(__name__)
# initialize the Firebase app
cred = credentials.Certificate("./barcodevoucher.json")
firebase_admin.initialize_app(cred, {"databaseURL": "https://barcod........database.app/"})
# define a route to display the data
@app.route("/")
def view_data():
# get a reference to the data in Firebase Realtime Database
ref = db.reference("userInfo").child('4i0HjuGb......0MO1Rvpx2')
# retrieve the data as a dictionary
data = ref.get()
# pass the data to the template and render it
return render_template("data.html", data=data)
# run the Flask app
if __name__ == "__main__":
app.run(debug=True)firebase의 프로젝트 설정에서 받아온 barcode... json 파일과 realtime database의 URL을 입력해 주었고, 데어터를 읽어오기 위해서 uid 값을 넣어서 데이터를 가져올 수 있도록 하였습니다.

참고로 realtime database 의 규칙 설정에 위 그림과 같이 설정을 하고 있기 때문에 $uid을 확인하지 못하면 실제 데이터를 읽어 올 수 없습니다. 그래서 코드에는
ref = db.reference("userInfo").child('4i0HjuGb......0MO1Rvpx2') 와 같이 해서 child 안에 uid 값을 강제로 넣어 주게 됩니다.
<!DOCTYPE html>
<html>
<head>
<title>Data</title>
</head>
<body>
<h1>Data</h1>
<table>
<thead>
<tr>
<th>key</th>
<th>user Name</th>
<th>Tel No</th>
</tr>
</thead>
<tbody>
{% for key in data %}
<tr>
<td>{{ data[key]['key'] }}</td>
<td>{{ data[key]['userName'] }}</td>
<td>{{ data[key]['telNo'] }}</td>
</tr>
{% endfor %}
</tbody>
</table>
</body>
</html>
다음은 data.html 의 코드 구성을 codeGPT 가 알려준 방식으로 수정해 주었습니다.
짜~잔... 이제 실행된 모습을 살펴보겠습니다.

모양은 허접해 보입니다만, 일단, 오늘의 목표는 달성 입니다. 이렇게 하나둘씩 코드 작업을 배우다 보면 어느 날 문득 그런 생각이 들 것 같습니다.
단순 코딩을 하는 코더는 앞으로 할일이 없어질 거라는... 요즘 읽고 있는 책에서 말하는 것과 같이 사라질 직업 중에 하나가 개발자가 될 것 같은 생각이 드는 시간입니다.
** 이것도 사용량에 따른 요금 부과가 발생할 지도 모릅니다. 참고하세요.
오늘의 이야기
Jetpack Compose는 개발자가 아름답고 반응이 빠르고 효율적인 사용자 인터페이스를 쉽게 빌드할 수 있는 최신 Android UI 도구 키트입니다. Android 개발의 일반적인 작업 중 하나는 뒤로 버튼 누름 이벤트를 처리하는 것입니다.
이 블로그 게시물에서는 Jetpack Compose에서 뒤로 버튼 누르기 이벤트를 처리하는 방법을 살펴보겠습니다.
Android에서 뒤로 버튼은 거의 모든 Android 기기에 있는 하드웨어 버튼입니다.
뒤로 버튼은 앱의 이전 화면이나 활동으로 돌아가는 데 사용됩니다. 뒤로 버튼 누르기 이벤트는 기본적으로 Android 시스템에서 처리하지만 때때로 이 동작을 재정의하고 뒤로 버튼 누르기 이벤트를 직접 처리하려고 합니다.
Jetpack Compose에서는 속성을 사용하여 뒤로 버튼 누름 이벤트를 처리할 수 있습니다 onBackPressedDispatcher. 이 onBackPressedDispatcher속성은 뒤로 버튼 누름 이벤트를 처리하기 위해 개체를 OnBackPressedDispatcherOwner등록할 수 있는 인터페이스입니다
OnBackPressedCallback.
onBackPressedDispatcher속성을 사용하여 Jetpack Compose에서 뒤로 버튼 누름 이벤트를 처리하는 방법을 살펴보겠습니다 .
import androidx.activity.OnBackPressedCallback
import androidx.activity.OnBackPressedDispatcherOwner
import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember
import androidx.compose.ui.platform.LocalContext
@Composable
fun BackPressHandler(
enabled: Boolean = true,
onBackPressed: () -> Unit
) {
val backPressedDispatcher = (LocalContext.current as? OnBackPressedDispatcherOwner)?.onBackPressedDispatcher
val callback = remember {
object : OnBackPressedCallback(enabled) {
override fun handleOnBackPressed() {
onBackPressed()
}
}
}
DisposableEffect(callback) {
backPressedDispatcher?.addCallback(callback)
onDispose {
callback.remove()
}
}
}
위의 코드에서 이름이 구성 가능한 함수를 만들었습니다 BackPressHandler. 이 함수는 두 개의 매개변수를 사용합니다.
- enabled: 뒤로 버튼 누름 이벤트 처리 여부를 지정하는 부울 값입니다. 기본적으로 로 설정되어 있습니다 true.
- onBackPressed: 뒤로 버튼을 눌렀을 때 호출되는 람다 함수입니다.
함수에서 먼저 속성 에서 개체를 BackPressHandler가져옵니다 . 그런 다음 함수를 사용하여 개체를 만듭니다 . 객체 는 뒤로 버튼을 누를 때 호출되는 함수를 재정의합니다 . 함수 에서 뒤로 버튼 누름 이벤트를 처리하기 위해 람다 함수를 호출합니다
. onBackPressedDispatcherLocalContext.currentOnBackPressedCallbac krememberOnBackPressedCallbackhandleOnBackPressedhandleOnBackPr essedonBackPressed
그런 다음 함수를 사용하여 개체에 개체를 DisposableEffect등록 및 등록 취소합니다 . 개체가 생성 되면 메서드를 사용하여 개체 에 추가합니다. 컴포저블이 삭제되면 메서드를 사용하여 객체에서 객체를 제거합니다
. OnBackPressedCallbackonBackPressedDispatchercallbackonBackPress edDispatcheraddCallbackBackPressHandlercallbackonBackPressedDis patcherremove
컴포저블을 사용하려면 BackPressHandlerJetpack Compose 계층 구조에서 간단히 호출하고 onBackPressed람다 함수를 전달하여 뒤로 버튼 누르기 이벤트를 처리하면 됩니다.
@Composable
fun MyScreen() {
BackPressHandler(onBackPressed = { /* Handle back button press event */ }) {
// Screen content
}
}MyScreen. 은 BackPressHandler위의 코드에서는 컴포저블 내부에서 컴포저블을 호출했습니다
화면의 내용은 BackPressHandler onBackPressed뒤로 버튼 누름 이벤트를 처리하기 위해 람다 함수를 전달했습니다.
이렇게 오늘도 글 하나를 open GPT을 활용해서 작성해 보았습니다. 직역을 하고 있어서 말의 앞 뒤가 좀 애매한 구석이 없지 않지만, 나름 기술적인 부분에 대해서는 구글 검색을 하는 것만큼이나 기술해 주고 있습니다.
이제 이 코드를 실전에 적용해 보도록 하겠습니다. 도전해 볼 필요가 있는 것 같습니다.
아래는 참고 글 하나 찾아보았습니다.
https://medium.com/better-programming/back-press-handling-in-android-jetpack-compose-42d9ed402d40
Back Press Handling in Android Jetpack Compose
Create a handler function to customize your back press events
betterprogramming.pub
오늘의 이야기
## 로또 번호 분석 및 추천 **데이터 분석 요약:** 총 20회차 데이터를 분석하여 각 회차별 번호 패턴을 파악하고, 이를 바탕으로 다음 회차 번호를 예측합니다. 분석 항목은 다음과 같습니다. 1. **연속 번호 간 간격:** 각 회차의 번호들 ...
