2026/02/24

오늘의 이야기

그것도 종이로 말이에요.


ㅋㅋㅋ

이런일이 아직 갈길이 멀어요...






오늘의 이야기

https://developer.android.com/courses/pathways/android-basics-kotlin-four



 


Add a button to an app  |  Android Basics in Kotlin - Intro - Add a button  |  Android Developers


Learn more concepts in Kotlin—including classes, objects, and conditionals—to create an interactive app for your users.


developer.android.com




앱을 하나 만들어 보았다. Kotlin 으로 하는 첫번째 프로젝트. 이 걸 해 보는 이유는 java 만으로 하는 앱은 많이 해 보았는데, kotlin 으로 하는 코딩은 처음인지라, 배워보고자 해서 developer 에서 코트랩을 살펴보았다.


 


ㅋ 구현되는 모습은 어떨까 ?


 



주사위 동작


동작은 그냥 하는 주사위 모양이다.  동작하는 기능 구현은 아래 소스를 보는 도움이 될 것 같다. 


import android.os.Bundle
import android.util.Log
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import com.billcoreatech.kotlinexam0115.databinding.ActivityMain2Binding

class MainActivity2 : AppCompatActivity() {
var TAG: String = "MainActivity2";

lateinit var binding: ActivityMain2Binding ;

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMain2Binding.inflate(layoutInflater)
setContentView(binding.root)

binding.button.setOnClickListener{
Log.e(TAG, "");
Toast.makeText(this, rollDice(), Toast.LENGTH_SHORT).show()

}
}

private fun rollDice(): String {
val dice = Dice(6)
val diceRoll = dice.roll()
binding.textView3.setText(diceRoll.toString())
when(diceRoll) {
1 -> binding.imageView2.setImageResource(R.drawable.dice_1)
2 -> binding.imageView2.setImageResource(R.drawable.dice_2)
3 -> binding.imageView2.setImageResource(R.drawable.dice_3)
4 -> binding.imageView2.setImageResource(R.drawable.dice_4)
5 -> binding.imageView2.setImageResource(R.drawable.dice_5)
6 -> binding.imageView2.setImageResource(R.drawable.dice_6)
}
return diceRoll.toString()
}
}

 


이게 java 로 구현이 되면 아래와 같이 이렇게 구현이 될 것 같다.


import android.os.Bundle;
import android.view.View;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

import com.billcoreatech.kotlinexam0115.databinding.ActivityMain2Binding;

public class MainActivity3 extends AppCompatActivity {

ActivityMain2Binding binding ;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = ActivityMain2Binding.inflate(getLayoutInflater());
setContentView(binding.getRoot());

binding.button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(getApplicationContext(), rollDice() , Toast.LENGTH_SHORT).show();
}
});
}

private String rollDice() {
Dice dice = new Dice(6);
int iDice = dice.roll() ;
binding.textView3.setText(String.valueOf(iDice));
switch (iDice) {
case 1: binding.imageView2.setImageResource(R.drawable.dice_1); break ;
case 2: binding.imageView2.setImageResource(R.drawable.dice_2); break ;
case 3: binding.imageView2.setImageResource(R.drawable.dice_3); break ;
case 4: binding.imageView2.setImageResource(R.drawable.dice_4); break ;
case 5: binding.imageView2.setImageResource(R.drawable.dice_5); break ;
case 6: binding.imageView2.setImageResource(R.drawable.dice_6); break ;
}

return String.valueOf(iDice) ;
}

}

아직은 어떤게 더 코드 작업이 수월하지는 잘 모르겠다.  이런 걸 여러번 하다 보면,  알게 될려는지...  layout 은 그대로 하나 만들어서 했고,  구현하는 부분만 kotlin 으로, java 로 만들어 보았다.


 


어떻게 달라질지...





오늘의 이야기



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

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

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

그것도 구글 Gemini로다가!

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

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

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


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




오늘의 이야기

https://www.raspberrypi.com/products/raspberry-pi-high-quality-camera/



 


Buy a Raspberry Pi High Quality Camera – Raspberry Pi


12.3 megapixel Sony IMX477 sensor, 7.9mm diagonal image size, and back-illuminated sensor architecture, with adjustable back focus and support for C- and CS-mount lenses


www.raspberrypi.com




 


라즈베리파이... 그것의 활용 가능성은 어디까지 인가?


음... 지금은 그저 그냥 우리 집 반려 거북이 shot을 찍어 인스타에 게시하는 정도의 활용을 하고 있다.  다음에 하고 싶은 건 하늘을 찍어 올려보는 것이다. 


 


지금 쓰고 있는 카메라 모듈은 그렇게 좋은 화질을 제공하지 못한다. 그래서 좀 아쉽다. 어느 날 보니 메일에 이런 게 있었다. 고화질 카메라...  그런데 좀 가격이 나온다. 모듈과 렌즈를 따로 구매를 해야 하는 것 같다.


 


https://www.devicemart.co.kr/goods/view?no=12543579&src=raspberrypi 



 


라즈베리파이 HQ 카메라모듈 12.3MP (Raspberry Pi High Quality Camera)


12.3 메가픽셀 고해상도 Sony IMX477 센서 / 기존 IMX219 대비 저조도 퍼포먼스 향상 / 백포커스, C 마운트 및 CS 마운트 렌즈 지원


www.devicemart.co.kr




 


https://www.devicemart.co.kr/goods/view?no=12543581 



 


라즈베리파이 HQ 카메라모듈용 16mm 망원 렌즈 10MP (16mm Telephoto Lens for Raspberry Pi High Quality Camera)


라즈베리파이 HQ 카메라 모듈 전용 16mm 10MP 망원 렌즈 / 멀리 있는 물체를 Zoom으로 당겨서 촬영하는 프로젝트에 적합한 렌즈 / 렌즈 보호용 덮개 포함


www.devicemart.co.kr




 


두 개를 다 사려면... 13만 원 정도... 취미 생활하기도 힘드네 (?) ㅠㅠ;;


 


뭐 아무튼 준비를 해 봐야겠다.  좋은 정보인 것 같다.





오늘의 이야기


#스하리1000명프로젝트

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

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

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

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





오늘의 이야기

몇일쨰 -10도를 오가는 날씨가 이어지고 있습니다. 날이 많이 춥네요. 날이 추우는 따듯한 무언가가 필요하 시점인 것 같아요. 그래서 오늘은 바라클라바를 찾아 보았어요.


 


바라클라바 사전적 의미



초록창이 알려주는 의미는 머리에서 어깨까지 내려오는 대형 모자라고 하네요.  예전에는 귀막이 하나만 있어도 따스겠다고 생각을 했었는데,  이런 것도 있었네요.   


 


구글에서 찾은 이미지를 봐도 딱 알겠네요. 


 


바라클라바 이미지



상품광고 이미지를 퍼온거라, 조심 스럽기는 한데, 뭐... 돌아다니는 거니...  암튼 오늘은 추운 날씨에 필요할 것 같은 잇템 하나 찾아 보았습니다.


 





오늘의 이야기

인용 URL : https://namu.wiki/w/%ED%95%AB%ED%8C%A9


핫팩 이미지



오늘은 갑짜기 날이 많이 추워졌습니다.  이런 날은 방구성에 앉아서 날이 따스해지길 기다리는 것이 제일 일 것 같은데,  그냥 지난번 어딘가에서 보았던 차박 이야기가 생각이 나서, 핫팩을 찾아 보게 되었습니다. wiki 에서 말하는 핫팩은 이런 거 였어요.


 


--- 내용 퍼오기 ---


 


부직포 주머니 안에 쇳가루와 촉매[1]가 들어있어서, 포장비닐을 뜯어서 흔들면 이 촉매와 혼합, 산화되면서 이 발생한다.[2] 부피가 작아서 주머니에 넣고 다니는 형태 뿐 아니라, 속옷에 붙이거나 신발에 깔거나, 겨울철 생물배송(주로 수생생물)을 할 때 집어넣거나 하는 다양한 형태의 변용이 가능하다. 일회용이라는 게[3] 역시 장점이자 단점. 오래 만지작거리다보면 부직포에서 미세한 산화철 입자들이 새어 나오기 때문에 손에서 쇠냄새가 난다.

산소와 반응하는 철가루라는 특성을 이용해, 생존주의자들이 곡물을 장기보관하는데 산소제거용으로 쓰는 경우도 있다. 포대 안에 핫팩 하나 까넣고 최대한 공기를 뺀 뒤 밀봉하면 산소를 제거하는 것으로, 동일원리/목적으로 냉동피자나 비엔나 포장지 안에 보존제로 자그맣게 들어있는 경우도 있다.

핫팩의 원리를 응용하여 여러번 사용하는 편법도 있는데, 공기가 안통하도록 비닐로 꼭 묶어두면 금세 식어버린다. 비닐을 뜯으면 다시 산화하면서 발열.


 


--- 


 


어떻게 보면 작은 물건이기는 하나,  차박 하다가 일산화탄소 중독 사고가 나는 걸 보면서 그것 보다는 이것이 낮지 않나 하는 생각이 듭니다. 다만, 개인적으로 핫팩은 사용하고나서 잘 버려야 할 것 같은 생각이 들었습니다. 


 


그래서 구글에게 물어 봤습니다.  여러가지 답이 있기는 하지만, 아무래도 재활용이 불가능해 보이니, 일반쓰레기로 배출해야 할 것 같습니다.  그안에 철가루가 들어 있다고 하니, 잘 버려야 후손들에게도 민폐가 되지 않을 것 같아요.


 







오늘의 이야기


#스하리1000명프로젝트,
A veces es difícil hablar con trabajadores extranjeros, ¿verdad?
¡Hice una aplicación sencilla que ayuda! Escribes en tu idioma y los demás lo ven en el suyo.
Se traduce automáticamente según la configuración.
Súper útil para chatear fácilmente. ¡Echa un vistazo cuando tengas la oportunidad!
https://play.google.com/store/apps/details?id=com.billcoreatech.multichat416




오늘의 이야기

https://www.webcodegeeks.com/python/sort-numpy-arrays-in-python/



 


Sort NumPy arrays in Python - Web Code Geeks - 2022


Many of Python's popular libraries use NumPy under the hood as a fundamental pillar of their infrastructure. Beyond slicing, dicing, and manipulating


www.webcodegeeks.com




인터넷에 나와 있는 자료를 공유해 드립니다. 이글의 번역은 구글 번역기를 이용했습니다.


Python에서 NumPy 배열 정렬


많은 Python의 인기 있는 라이브러리는 NumPy 를 인프라의 기본 기둥으로 사용합니다. NumPy 라이브러리는 배열 슬라이싱, 다이싱 및 조작 외에도 배열의 요소를 정렬할 수 있는 다양한 기능을 제공합니다.
배열 정렬은 컴퓨터 과학의 많은 응용 프로그램에서 유용합니다.
데이터를 정렬된 형식으로 구성하고 요소를 빠르게 조회하며 공간 효율적인 방식으로 데이터를 저장할 수 있습니다.
패키지를 설치했으면 다음 명령을 실행하여 가져옵니다.


NumPy 정렬 알고리즘


numpy.sort() 함수를 사용하면 다양한 정렬 알고리즘을 사용하여 배열을 정렬할 수 있습니다. 'kind' 매개변수를 설정하여 사용할 알고리즘의 종류를 지정할 수 있습니다.
기본값은 '빠른 정렬'을 사용합니다. NumPy가 지원하는 다른 정렬 알고리즘에는 mergesort, heapsort, introsort 및 stable이 있습니다.
종류 매개변수를 'stable'로 설정하면 함수가 배열 데이터 유형을 기반으로 가장 안정적인 정렬 알고리즘을 자동으로 선택합니다.
일반적으로 'mergesort'와 'stable'은 데이터 유형에 따라 모두 timesort와 radixsort에 매핑됩니다.
정렬 알고리즘은 평균 실행 속도, 공간 복잡성 및 최악의 경우 성능으로 특징지을 수 있습니다.
또한 안정적인 정렬 알고리즘은 동일한 키를 가지고 있는 경우에도 항목을 상대적인 순서로 유지합니다. 다음은 NumPy 정렬 알고리즘의 속성에 대한 요약입니다.

...

기타의 내용은 인용된 본문을 참고하세요.... 이글의 번역은 구글 번역기를 이용했습니다.


Numpy 함수의 활용성에 대한 이해가 되는 하루였습니다.   작성자 분께 심심한 감사를 드립니다.





오늘의 이야기

오늘은 서핑을 하다 발견한 걸 옮겨 적어 본다. qrcode 스캔 하는 앱도 만들어 보았으니 qrcode 도 만들어 보는 거다.
https://diyver.tistory.com/170?category=980809







파이썬 QR코드 쉽게 생성하기


qrcode 모듈을 이용하여 파이썬으로 간단하게 QR코드를 생성할 수 있다. 1. qrcode 모듈 설치하기 아나콘다를 실행하고 아나콘다 명령 프롬프트를 켜서 아래 명령어를 입력한다. >>> pip install qrcode 2. Q


diyver.tistory.com




이 블로그에서 퍼 왔음을 밝힌다.

쉽기는 했다. 다면 import qrcode 을 했더니, install 해야 한다고 하는데, qrcode 로 설치된 것이 다른 버전이 있는 것 같은 생각이 든다. 설치하기 전에 잘 살펴보고 해야 할 것 같다.

qrcode 이미지



생성된 이미지 파일은 위와 같고. 하는 방법은 위의 블로그를 그대로 따라 했다. 단지, 내 컴퓨터에서는 qrcode 라이브러리 탐색에 문제가 있는 것 같다.

그래서 내가 아끼는 라즈베리파이 에서 설치하고 실행 했다. 하는 방법은 위 블로그에 나와 있고, 난 그저 옮겼을 뿐.


pip install qrcode
pip 설치 예시


소스 코드는 그대로


import qrcode url = "https://billcorea.tistory.com" qr_img = qrcode.make(url) qr_img.save('qr_url.png')

url 경로만 나의 것으로 변경 하기 생성된 이미지에 카메라로 찍어 보았더니, 그대로 나의 블로그의 url 이 보이고, 클릭하니 바로 넘어왔다. ㅋ~





오늘의 이야기


#billcorea #운동동아리관리앱
🏸 Schneedle, ¡una aplicación imprescindible para los clubes de bádminton!
👉 Match Play: registra puntuaciones y encuentra oponentes 🎉
¡Perfecto para cualquier lugar, solo, con amigos o en un club! 🤝
Si te gusta el bádminton, definitivamente pruébalo.

Ir a la aplicación 👉 https://play.google.com/store/apps/details?id=com.billcorea.matchplay




오늘의 이야기

그것도 종이로 말이에요. ㅋㅋㅋ 이런일이 아직 갈길이 멀어요...