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을 활용해 코드 작성의 도움을 받아 볼 수 있습니다. 


codeGPT 활용해 보기



 


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


 


codeGPT 설치



이미 설치 되었기 때문에 market에서 검색을 했을 때 installed라고 나오지만, 설치 전이라면 초록색으로 install이라고 나옵니다.  install을 클릭해 설치를 해 봅니다. 


 


오늘은 Flask 을 이용해서 간단한 데이터 조회하는 화면을 만들어 보겠습니다. 


 


1. 설치가 되고 나면 pycham 오른쪽 상단에 codeGPT 탭이 보입니다. 해당 탭을 클릭해서 명령어 입력창이 나오게 한 다음,  잘 안 되는 영어로 질문을 해 봅니다. 


 


flask use for firebase realtime database refence data list view


 


문법이 맞지 않는 엉터리 영어이기는 하지만, 알아 들었나 봅니다. 


 


생성된 코드



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


 


data.html 코드도 만들어 줍니다.



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


 


에러 코드가 발생 했을 때 응답해 주는 codeGPT



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. **연속 번호 간 간격:** 각 회차의 번호들 ...