2026/03/16

오늘의 이야기

나도 코딩의 파이썬 입문


파이썬 입문



오늘은 도서 하나를 소개해 볼까 합니다. 며칠 전에 facebook의 생활코딩이라는 그룹의 포스팅을 보다가 길벗 출판사에서 하시는 도서 이벤트가 있길래 신청을 했더랍니다. 오~  당첨되었다는 감사한 말씀과 함께 도서를 보내 주신다는 이야기를 듣고 마음 설래이며 기다렸더랬죠... 


 


읽어보면 좋을 대상


이 책은 철저하게 초심자를 위해서 작성된 책으로 보였습니다. 저도 구글링을 하면서 따라 하기는 하나 기초가 그리 탄탄하지는 않기 때문에 말입니다.  이제 진정한 파이썬 코딩을 해 볼 수 있을 듯합니다. 


 


비전공자가 읽어도 좋아요


이 책의 설명은 스킬업을 하고 싶은 비 전공자가 보아도 이해가 갈 수 있도록 서술되어 있습니다.  그렇다고 해서 컴퓨터와 담을 싸고 있는 경우라면 따라가기에는 쫌~


 


기초부터 차근차근 기술되어 있으니 읽어 보시면서 하나씩 따라 하고 단위마다 나오는 실습문제들을 풀어 나가다 보면 어느새 탄탄한 기초가 마련될 거라고 생각이 됩니다. 


 


초급자 분들은


저 처럼  조금은 알고 있다고 생각하시는 분들은 기초를 다진다 생각하시고 읽어 보세요... 아직도 튜플과 딕션너리가 혼란스럽다면 말입니다.  리스트는 알겠는 데, 튜플은 무엇이고 디션 너른 어떻게 다른가 하는 혼돈의 숲에서 나오실 수 있을 겁니다. 그 혼돈의 숲에서 나오면 아마 다음 책을 또 하나 사서 봐야 하지 않을까 하는 생각이 듭니다. 


 


이제 파이썬으로 떠나 보겠습니다.


저는 이제 깊숙한 파이썬의 숲으로 떠나 보렵니다.  제가 하고 싶은 것들은 자동화 스크립트를 조금 더 탄탄하게 만들어 내고 싶은 것들인데, 이 책에서 그것들의 기초를 다시 찾을 수 있을까 하는 호기심을 가지고 이제 떠나 보겠습니다. 


 


 


이 글은 길벗 출판사 이벤트에 당첨되고 얻은 책 한 권을 보면서 작성된 이야기입니다. 

 





오늘의 이야기

혼자만 있으면 심심하고 나른한 오후 챗봇과 함께 수다를 떨어 보아요...


이앱은 카카오의 Google GEMINI AI  API을 호출하여 응답을 생성합니다.

 


수다떨기


open API로 챗봇이 이런저런 것들을 대신하려고 한다는 기사가 빛발 치는 시기에 급 생각이 나서 앱을 하나 만들어 보았습니다. 
 



  • 혼자 놀기 심심할 때 누군가와

  • 대화가 필요할 때

  • 답이 정확 하지 않아도 궁금한 무엇이 생각날 때 이럴 때


한번 실행해 보세요.
 


공식 이미지


메인 화면



앱에서 동작하는 버튼은 앱정보



  • 정보 ( information ) 버튼 : 이 설명서 페이지로 연결됩니다. 

  • 지우기 ( X ) 버튼 : 대화창의 내용을 지우고자 할 때 사용 됩니다. 

  • 대화전송 ( Send Text ) 버튼 : 입력한 대화를 전송 합니다. 


다른 기능은 아무것도 없습니다.  
 


대화기능


입력한 대화는 Google GEMINI AI API 을 호출합니다.  일반 사용자 권한으로 접근 합니다.

그래서 어느 순간 답이 오지 않는 경우가 발생할 수 도 있습니다. 
 
추후 다른 챗봇 API을 알게 되면 그것도 활용해 보겠습니다.
 


개인정보관련


이 앱에서 입력한 모든 정보는 기록하지 않습니다.  앱이 실행되고 있는 동안만 화면에 보이며, 그 마저도 지우기 버튼으로 지울 수 있습니다. 
 
기타 관련 문의가 있으시면 help@billcorea.com 으로 메일을 주시기 바랍니다. 


 


코드 공유 


kotlin 코드 입니다.  미흡하지만 살펴 보세요. (2024.01.24 현재, 이 코드는 KAKAO koGPT 을 연동하는 코드 입니다. )


 


https://github.com/nari4169/SudaBot0222_share/tree/master



 


GitHub - nari4169/SudaBot0222_share


Contribute to nari4169/SudaBot0222_share development by creating an account on GitHub.


github.com




 


** Google GEMINI 연동에 관련된 부분은 다음 Postion 정보를 참조 하세요.


https://billcorea.tistory.com/435


https://billcorea.tistory.com/439


 


Playstore 공유


playstore 에 올라간 경로 입니다. 


 


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



 


수다떨기 (챗봇 대화) - Google Play 앱


심심할 때 수다을 떨어 보세요... 챗봇이 응답해 드립니다.


play.google.com




 


즐거운 하루 되세요...





오늘의 이야기


#스하리1000명프로젝트,
Nawala sa Korea? Kahit na hindi ka nagsasalita ng Korean, tinutulungan ka ng app na ito na madaling makalibot.
Sabihin lang ang iyong wika—ito ay nagsasalin, naghahanap, at nagpapakita ng mga resulta pabalik sa iyong wika.
Mahusay para sa mga manlalakbay! Sinusuportahan ang 10+ wika kabilang ang English, Japanese, Chinese, Vietnamese, at higit pa.
Subukan ito ngayon!
https://play.google.com/store/apps/details?id=com.billcoreatech.opdgang1127




2026/03/15

오늘의 이야기



오늘도 홍보글 하나 달아요...
이 앱은 미니키오스크를 구현합니다.
휴대장치만 있으면 구현됩니다.

앱은 무료지만 기능은 필요한 건 만들어 드려요.





오늘의 이야기



이런 앱도 만들어 보기는 했지만 필요한 경우가 있을까요?

알 수 없는 일이에요...





오늘의 이야기



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

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

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

그것도 구글 Gemini로다가!

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

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

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


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




오늘의 이야기

 





홍보는???



무언가를 만들어 내기는 했지만
알림을 만드는 재주는 없으니 ...

답답하네요.

이런걸 필요로 하는 사람이 있는 지도 모르겠고...

어떻게 하면 좋을까요?


 


2025.02.11 이 앱의 새 얼굴 링크 입니다. 


 


https://youtu.be/DPfnWvX3TgU





 





오늘의 이야기


#스하리1000명프로젝트

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

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

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

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





오늘의 이야기










* 이 앱의 사용은 페이앱 (https://payapp.kr)에서 제공하는 API을 지원합니다. 
** 이 앱은 페이앱 리셀러 활동을 위해서 제작 배포 됩니다.
*** 이 앱에서 페이앱 회원 가입을 하는 경우에만 정산 수수료의 3%(부가세별도)의 지정이 가능 합니다.


앱 사용자 설명서 

이 앱에서는 이메일 회원 가입 후 로그인 및  구글 계정, 카카오톡 ID, 네이버 ID을 통한 간편 로그인도 지원됩니다. 

로그인 페이지


** 테스트 계정 안내
이 앱의 테스트 운영을 위해서 테스트 계정을 제공합니다. 

  • 이메일 로그인 시 help@billcorea.com으로 password 1qazZAQ! 을 이용해 로그인해 볼 수 있습니다.
  • kakao 톡이 설치 된 경우는 간편 로그인으로 진행이 가능 하며, 설치 되어 있지 않아도 카카오 계정으로 로그인을 지원 합니다.
  • naver 계정으로 로그인 하고자 하는 경우에도 네이버 앱이 설치 되어 있을 때는 간편 로그인이 지원 되며, 그렇지 않은 경우에는 네이버 계정으로 로그인을 지원 합니다.

 

회원 프로필 관리

프로필관리에서는 간편 로그인의 경우는 해당 사이트에서 등록된 프로필 사진, 별명, 이메일 주소가 자동을 설정됩니다.
이메일 로그인의 경우만 프로필 사진을 임의로 등록할 수 있도록 지원합니다.  
** 사진 등록을 위해서는 앱 처음 실행 시에는 카메라 권한 허가를 요청하게 되어 있습니다.
 
이 화면에서 보이는 아이콘의 기능은 다음과 같습니다.

  • 뒤로 가기 : 이전 화면으로 돌아갑니다.
  • 저장하기 : payapp 사용자 ID을 저장합니다.  꼭 저장을 해야 합니다. 그렇지 않을 경우 결제 요청등의 기능 사용이 불가능할 수 있습니다.
  • 구글 계정, 카카오 계정, 네이버 계정으로 로그인을 한 경우에는 각 계정에 등록된 간편 정보를 이용 하여 프로필 이미지, 별명, 이메일 계정 정보를 바로 확인할 수 있습니다. 
회원 프로필 관리


  • PayApp 사용자 등록 : payapp.kr에 회원 가입을 진행할 수 있도록 회원 정보 등록을 지원합니다.  회원정보 등록 후 관리자의 승인 후 정산 업무 처리가 가능합니다.
  • Payapp 사용자 ID : payapp 회원 등록 시에 사용한 ID을 입력해 줍니다.  ID입력 후 체크  아이콘으로 중복 여부를 확인해 볼 수 있습니다.

 

기본 화면

이 화면에 표시되는 아이콘의 기능은 다음과 같습니다.

  • 뒤로 가기 : 앱을 종료합니다.
  • 다시 보기 : 화면에 표시된 정보가 없을 경우 다시 읽기를 할 수 있습니다.
  • 추가하기 : 결제요청할 정보를 추가하는 화면으로 이동합니다.
  • 보고서 만들기 : 엑셀 보고서를 만들어 공유할 수 있습니다.
  • 설정하기 : 프로파일 설정 화면으로 이동합니다.

 
또한 각 목록에 달려 있는 아이콘은 다음과 같습니다.

  • 수정하기 : 입력한 정보를 수정하는 화면으로 이동합니다.
  • 공유하기 : 해당건을 근거로 해서 결제요청을 공유하는 버튼입니다. 결제가 완료되면 버튼이 나타나지 않습니다.
  • 결제취소 : 결제가 완료된 경우에 나타나며 결제 취소를 진행할 수 있습니다.
기본화면


여기까지 표시된 정보를 순서에 따라 이미지를 하나로 모아 보았습니다.  간편 로그인의 경우는 해당 사이트에서 제공하는 동의 화면에서 동의 여부를 선택해 주어야 합니다.

로그인 부터 순서대로 보기 1


 

보고서 생성해 보기

입력된 자료를 엑셀로 받아 볼 수 있도록 지원하고 있습니다.  다만, 현재 버전에서는 xls (2007 이전 버전)으로만 지원합니다. 보고서 생성 버튼을 클릭하게 되면 생성된 정보가 파일 공유하는 방식으로 필요한 곳으로 보낼 수 있습니다.  공유 방법은 사용자의 선택에 따라 달라집니다.  
 
이메일로 보내기, 카톡으로 보내기, 문자로 보내기 등등

보고서 보기 처리 순서 대로 모아보기


 

결제 공유시 사용자의 처리 방법 안내

아래 링크의 동영상 정보를 참고해 보시면 됩니다.  예제 영상은 QR코드를 인식한 이후 결제를 진행하는 영상이나, 
이 앱에서는 결제 요청을 진행하는 부분부터 시작됩니다.
https://www.instagram.com/reel/Cm_OTWTjbW_/?utm_source=ig_web_copy_link

Instagram의 BillcoreaTech님 : "#우연히사장 #간편결제 #페이앱 #payapp #billcorea #주문이요

😍 간편결제

1 Likes, 0 Comments - BillcoreaTech (@billcoreatech) on Instagram: "#우연히사장 #간편결제 #페이앱 #payapp #billcorea #주문이요 😍 간편결제는 어떻게 처리 되나요?"

www.instagram.com

 
help@billcorea.com으로 메일을 주시면 필요한 업무에 대한 지원 해 드립니다.
 
https://play.google.com/store/apps/details?id=com.billcoreatech.remotepayment0119 

리모트 페이 (결제도 공유가 되나요, 원격 결제) - Google Play 앱

매장에 오시지 않는 고객, 결제를 공유해 보세요.

play.google.com

한번 사용해 보시고 다양한 의견 주시면 감사 하겠습니다.





반응형
























오늘의 이야기

이전 이야기 


https://billcorea.tistory.com/215



 


안드로이드 앱 만들기 : 주소 API 사용해 Kakao 우편번호 서비스 활용해 보기


앱을 만들다 보니, 주소 검색을 해야 하는 경우가 생긴다. 구글에서 찾아보면 추천해주는 방법이 2가지 정도로 압축 된다고 볼 수 있을 것 같다. 1. Daum 우편번호 서비스 장정 : API 가 필요하지 않


billcorea.tistory.com




오늘은 이전 포스팅의 내용에서 일부 변형된 모습에 대한 이야기를 잠시해 보겠습니다. 


이전 포스팅에서는 webView을 layout.xml을 이용해서 구현한 모습에 대한 이야기를 했습니다. 


 


오늘 구현한 소스는 jetpack compose 을 이용해서 구현한 코드입니다. 


 


먼저 gradle 파일에 webview 사용을 위해서 선언을 해야 합니다. android API 33을 target으로 하고 있어서 아래 버전으로 설정을 해 주면 가능합니다.


// Webview
implementation "com.google.accompanist:accompanist-webview:0.24.13-rc"

 


webview을 호출하는 activity는 다음과 같이 전체 코드를 작성했습니다. 주의해서 봐야 할 부분은 다음과 같습니다.



  • MyJavaScriptInterface 함수 : 카카오 API 페이지에서 선택한 주소 정보를 받아서 전달하는 역할

  • BackHandler : 카카오 API 페이지에서 뒤로 가기를 선택했을 때 처리 하는 역할

  • webviewClient의 onPageFinished : 카카오 API 페이지 로딩이 완료되면 주소검색 함수를 호출하는 역할


이런 정도의 역할들에 문제가 없도록 구현하는 것이 체크가 되어야 할 부분으로 생각이 됩니다.


import android.annotation.SuppressLint
import android.content.Intent
import android.os.Bundle
import android.util.Log
import android.webkit.JavascriptInterface
import android.webkit.WebView
import androidx.activity.ComponentActivity
import androidx.activity.compose.BackHandler
import androidx.activity.compose.setContent
import androidx.appcompat.app.AppCompatActivity
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Surface
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import com.billcoreatech.remotepayment0119.ui.theme.RemotePayment0119Theme
import com.google.accompanist.web.*

class AddressFindActivity : ComponentActivity() {


inner class MyJavaScriptInterface {

@JavascriptInterface
fun processDATA(data: String?) {
Log.e("TAG", "error ...........................${data}")

val intent = Intent()
intent.putExtra("data", data)
setResult(AppCompatActivity.RESULT_OK, intent)
finish()
}
}

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
RemotePayment0119Theme {
// A surface container using the 'background' color from the theme
Surface(
modifier = Modifier.fillMaxSize(),
color = MaterialTheme.colors.background
) {
WebViewForAddress(this@AddressFindActivity,
doFinish = {
val intent = Intent()
setResult(AppCompatActivity.RESULT_CANCELED, intent)
finish()
}
)
}
}
}
}
}

@SuppressLint("JavascriptInterface")
@Composable
fun WebViewForAddress(addressFindActivity: AddressFindActivity, doFinish:() -> Unit) {

val blogspot = "https://billcoreatech.blogspot.com/2022/06/blog-post.html"

val webViewState =
rememberWebViewState(
url = blogspot,
additionalHttpHeaders = emptyMap()
)
val webChromeClient = AccompanistWebChromeClient()
val webViewNavigator = rememberWebViewNavigator()

WebView(
state = webViewState,
client = object : AccompanistWebViewClient() {
override fun onPageFinished(view: WebView?, url: String?) {
view?.loadUrl("javascript:sample2_execDaumPostcode();")
}
},
chromeClient = webChromeClient,
navigator = webViewNavigator,
onCreated = { webView ->
with(webView) {
settings.run {
javaScriptEnabled = true
domStorageEnabled = true
javaScriptCanOpenWindowsAutomatically = true
}
addJavascriptInterface(addressFindActivity.MyJavaScriptInterface(), "Android")
}
}
)

BackHandler(enabled = true) {
if (webViewNavigator.canGoBack) {
webViewNavigator.navigateBack()
} else {
doFinish()
}
}
}

코드 중에 있는 blogspot의 URL 은 제가 만들어둔 blog의 URL 페이지입니다. 서버가 없기 때문에 blog 을 이용해서 사용하는 페이지 입니다.  실제 처리는 카카오 API에서 하는 것이기 때문에 특별한 문제는 없을 듯합니다. 


 


실행되는 이미지



 


이렇게 해서 실행해 보면 카카오 API에서 선택한 주소 정보를 받아와서 작업 중인 입력창에 값이 채워지는 것을 확인할 수 있었습니다. 


 


주소 검색창을 작성하시는 데 도움이 되기 바랍니다.


 





오늘의 이야기


#스하리1000명프로젝트,
บางครั้งการพูดคุยกับแรงงานต่างด้าวก็ยากใช่ไหม?
ฉันสร้างแอปง่ายๆ ที่ช่วยได้! คุณเขียนเป็นภาษาของคุณ และคนอื่นๆ ก็เห็นเป็นภาษาของพวกเขา
มันแปลอัตโนมัติตามการตั้งค่า
มีประโยชน์มากสำหรับการแชทที่ง่ายดาย ควรดูเมื่อมีโอกาส!
https://play.google.com/store/apps/details?id=com.billcoreatech.multichat416




오늘의 이야기

어느덧 우리 집 둘째 아들 녀석이 고등학교에 입학하게 되었다. 중학교 때까지만 해도 그냥저냥 공부 좀 하는 아이였는데, 고등학교에 진학하니 다른 세상인 듯하다. 학원에서도 상위권 학생들이 많이 다니는 곳이라 그런지 성적차이가 너무 크게 느껴진다. 그래...