2026/04/01

오늘의 이야기

안드로이드 스튜디오의 Gemini 로부터 코드 보호: 지적 재산권 보안 보장

gemini 가 android code 배우기



• 안드로이드 스튜디오에 제미니가 도입되면서 개발자는 프로젝트 코드를 기반으로 질문을 하고 지능적인 응답을 받을 수 있게 됐다. 그러나 민감하거나 독점적인 코드를 구글과 공유하면 지적 재산권 정책이 엄격한 조직에 대한 우려가 제기될 수 있다.

• 코드를 보호하기 위해 안드로이드 스튜디오는 코드 공유를 제어하는 옵션을 제공하여 사용자가 모든 프로젝트 코드, 특정 프로젝트 또는 전혀 공유하지 않을 것인지 선택할 수 있다. 또한 '프로젝트별 결정 요청' 옵션을 통해 특정 프로젝트에 대한 선택적 공유가 가능하다.

• 포괄적인 보호를 보장하기 위해 개발자는 디렉토리의 최상위 레벨에서 '.aiexclude'라는 빈 파일을 만들 수 있으며, 이 파일은 해당 디렉토리와 모든 하위 폴더에 대한 코드 공유를 차단합니다. 이 파일은 모든 개발자가 제외 사항을 준수하도록 소스 제어에 체크할 수 있습니다.

• 보다 세분화된 제어를 위해 개발자는 '.aiexclude' 파일을 '.gitignore' 파일처럼 취급하여 제외할 파일 이름 또는 확장자를 지정할 수 있다. 이렇게 하면 코드베이스의 원하는 부분만 보호되는 동시에 일반 질문에 제미니 스튜디오 봇을 사용할 수 있다.

https://proandroiddev.com/protect-your-code-from-gemini-in-android-studio-982a58e1ea2a

Protect your code from Gemini in Android Studio

The Studio Bot is great, but be sure you are not sharing proprietary code unintentionally

proandroiddev.com





오늘의 이야기


#스하리1000명프로젝트

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

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

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

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





오늘의 이야기

코틀린 코루틴에서 런블로킹과 런칭의 차이점 이해

안드로이드



• 이 기사는 런블로킹과 론칭의 거동을 구체적으로 비교하면서 코틀린 코루틴의 메커니즘을 탐구한다.

• 런블로킹은 코루틴 작업이 완료될 때까지 현재 스레드를 차단하는 코루틴을 실행하고, 런블로킹은 새로운 코루틴을 시작하고 라이프사이클을 나타내는 잡 인스턴스를 반환한다.

• RunBlocking을 주된 방법으로 사용하고 Child RunBlocking 하위 작업을 시작할 때 모든 작업이 완료될 때까지 메인 스레드가 차단되어 순차적으로 실행됩니다.

• 실행 차단 작업을 실행된 코루틴 내에서 포장하면 예상치 못한 행동이 발생하며, 실행되기 시작하지만 완료를 기다리지 않아 작업이 순서에 맞지 않게 실행됩니다.

• job.join()을 호출하면 작업과 관련된 모든 코루틴이 계속 진행하기 전에 완료되어 예상되는 순차 실행을 복원할 수 있습니다.

• 태스크1에 런블로킹 대신 런블로킹을 사용하면 태스크2가 태스크1 전에 완료되어 태스크1의 비차단 특성을 보여준다.

• 마지막으로, 발사된 코루틴 내의 모든 작업도 발사를 사용할 때, 실행 순서는 코루틴의 비동기적 특성으로 인해 더 복잡해지며, 작업은 비결정적 순서로 완료된다.

https://medium.com/google-developer-experts/kotlin-coroutine-mechanisms-runblocking-v-launch-386e1ae8e3c2

Kotlin Coroutine mechanisms: runBlocking v. launch

Introduction to coroutine behavior through playful examples

medium.com





오늘의 이야기

신협 전자금융



 


오늘은 전자세금계산서 발급을 시도해 보겠습니다.   국세청 홈텍스에서 개인 사업자 인증이 완료된 경우 전자 세금 계산서 발행을 할 수 있습니다. 


 


그전에 해야할 일이 있습니다.  전자 세금계산서 발행을 하려면 공동 인증서을 받아야 합니다.  물론 다른 방법으로 세무서에서 제공하는 보안카드을 이용할 수 있다고도 합니다. 하지만, 보안 카드을 받아야 하고 보관 해야 하는 번거러움을을 단순에 정리할 수 있습니다. 


 


금융기관이 아닌 다른 인증 기관에서 발행 하는 개인사업장 공동인 인증서는 최소 연간 8만원 이상의 비용을 요구 하고 있습니다.  수입이 많고 해야할 일이 많다면 비용 지출을 하고 준비을 할 수 있겠지만, 아직 소소한 수입만으로 지탱하고 있는 중이라서 최소 비용(4,400원)으로 인증서을 받아 보려고 합니다.


 


다만, 금융기관에서 인증서을 받으려면 최초 1회는 창구 방문이 필요 합니다.  사업자등록증을 가지고 방문을 해서 등록을 해야 합니다.  그 다음 부터는  해당 은행의 전자금융 페이지에서 발급 가능 합니다.


 


해마다 갱신을 해야 하는 데, 이번에 갱신 기간을 지난 다음 세금 계산서 발급을 하려다... 기억을 정리해 두고자 합니다.


전자세금계산서 발행은 국세청 홈텍스을 참고하시면 됩니다.


 


 





오늘의 이야기


#스하리1000명프로젝트,
外国人労働者と話すのが難しいこともありますよね?
簡単に役立つアプリを作りました!あなたは自分の言語で書き、他の人は自分の言語でそれを見ます。
設定に基づいて自動翻訳します。
簡単なチャットに非常に便利です。機会があったら見てみてください!
https://play.google.com/store/apps/details?id=com.billcoreatech.multichat416




오늘의 이야기

제트팩 구성에서 중첩된 게으름 칼럼 문제 해결

리스트뷰



• 이 기사에서는 제트팩 컴포즈 UI에서 중첩 목록 보기(LazyColumn)를 구현할 때 직면하는 일반적인 문제에 대해 논의하며, 이는 RecyclerView를 사용하여 Kotlin에서 직접 구현하는 것과 다르다.

• 과제는  lazy column  내부에 있는 동안 외부 lazy column 의 스크롤 동작을 제어하는 데 있다.

• 저자는 여러 목록으로 보기를 만드는 자세한 예를 제공하여 문제와 그 결과를 보여준다.

• 가장 간단한 접근법은 자식 목록에 대해 부모 LazyColumn을 생성한 다음 다른 LazyColumn을 생성하는 것을 포함하지만 이는 무한대 최대 높이 제약과 관련된 오류를 초래한다.

• 정적 높이와 동적 높이 솔루션이 탐색되지만 고정 높이와 하위 목록별 동적 높이 계산 측면에서 한계가 있다.

• 저자는 컬럼 내에 새로운 레이지컬럼을 만드는 대신 모든 합성물을 모체 레이지컬럼 내부에 감싸는 것을 포함하는 더 간단한 솔루션을 제안한다.

• 이 접근법은 부드러운 스크롤링 및 다양한 UI 또는 동적 높이를 갖는 항목의 추가를 허용한다.

https://medium.com/@neha-saini/android-jetpack-compose-nested-lazycolumn-issue-infinity-maximum-height-constraints-28c105f114f6

Android Jetpack Compose nested LazyColumn Issue (infinity maximum height constraints )

Hello Everyone,

medium.com





오늘의 이야기

파이썬 및 데이터 계약으로 웹 스크래핑 파이프라인 구축

스크래핑



• 이 기사에서는 데이터 계약을 통합한 실용적인 종단 간 데이터 파이프라인 시연을 제시한다. 목표는 2023/24 시즌 프리미어리그 테이블 순위를 긁어내고 여러 단계를 거쳐 AWS S3 버킷에 데이터를 업로드하는 것이다.

• 파이프라인은 웹 스크래핑이 허용되는지 확인하고 스크래핑 봇을 사용하여 데이터를 추출하고 데이터를 변환하여 AWS S3에 로드하는 것을 포함한다. 데이터 계약은 데이터가 데이터 소비자의 기대에 부합하도록 하기 위해 활용된다.

• 데이터 출처는 프리미어리그 홈페이지이며, 셀레늄을 사용하여 데이터를 스크래핑한다. 데이터 계약은 추출 및 변환된 데이터에 대한 예상 스키마 및 데이터 품질 검사를 정의하는 데 사용된다.

• 파이프라인은 파이썬과 소다, 보토3, 판다, 요청 등 다양한 라이브러리를 사용하여 구현된다. 코드는 모듈로 구성되며 명확한 구조를 따릅니다.

• 결과는 데이터가 성공적으로 스크래핑, 변환 및 AWS S3에 로드됨을 보여준다. 파이프라인은 데이터 거버넌스를 개선하고 데이터 품질을 보장하는 데 데이터 계약을 사용하는 이점을 보여준다.

• 이 기사는 또한 웹사이트의 서비스 조건을 존중하는 것의 중요성과 추가 도구와 고려 사항이 있는 생산 환경에서 데이터 계약을 사용할 수 있는 가능성에 대해 논의한다.

https://levelup.gitconnected.com/create-a-web-scraping-pipeline-with-python-using-data-contracts-281a30440442

Create a web scraping pipeline with Python using data contracts

Add data quality to each source layer for quality in, quality out

levelup.gitconnected.com





오늘의 이야기


#billcorea #운동동아리관리앱
🏸スチーニーたち、バドミントン同好会必須アプリ登場!
👉マッチプレイ - スコア記録&試合相手を探す🎉
一人で、友達、同好会どこでもぴったりです! 🤝
バドミントン好きならぜひ使ってみてください

アプリショートカット👉 https://play.google.com/store/apps/details?id=com.billcorea.matchplay




오늘의 이야기

코틀린 코루틴 플로우와 안드로이드 서비스

천사표



• 이 글에서는 클라이언트 구성 요소(활동, 뷰 모델 등)와 서비스 간의 양방향 통신 메커니즘에 대한 구현을 제시합니다.

• 구현은 명령 패러다임과 달리 반응적 접근 방식을 취할 것입니다.

• 현대 응용 프로그램은 여러 가지 이유로 명령형 구현 대신 반응형 구현을 사용하는 경향이 있습니다.

• 구성 요소 간의 느슨한 결합: 구성 요소는 다른 구성 요소가 소비할 데이터를 생성할 뿐이며 데이터 소스는 소비자에 대한 지식이 없으며 그 반대의 경우도 마찬가지입니다.

• 구성 요소 간의 유일한 계약은 데이터 정의입니다.

• 구성 요소는 서로의 인스턴스가 필요하지 않으며 이상적으로는 다른 구성 요소 인터페이스에 의해 노출된 방법을 호출할 필요가 없습니다.

• 역방향 호환성에 대한 문제는 거의 없습니다.

https://blog.stackademic.com/kotlin-coroutine-flows-and-android-services-af665f2a9f8f

Kotlin Coroutine Flows and Android Services

A reactive approach to service communication

blog.stackademic.com





오늘의 이야기

Compose에서 스핀 휠 만들기

spin wheel




• 블리츠위에서 빙고, 솔리테어, 매치3, 풀 등의 클래식 게임을 플레이할 수 있는 애플리케이션을 개발하고 있습니다. 또한 무작위 보너스 금액과 같은 무작위 아이템이 있으므로 사용자에게 일종의 행운의 바퀴를 표시하고 싶었습니다.

• 안드로이드 앱은 전체 구성으로 되어 있습니다. 바퀴를 재창조하기 위해 라이브러리를 찾았지만 디자인이나 기술적인 측면에서 나에게 맞는 라이브러리는 없었습니다.

• https://github.com/commandiron/SpinWheelCompose에서 약간의 영감을 얻었지만 거의 모든 것을 다시 작업했습니다. 내 물레바퀴는 매개변수로 섹션 목록을 받아들여야 합니다. 각 섹션에는 브러시 배경이 있으며 섹션에는 컴포저블 그림이 있습니다. 이 구성 가능한 것은 섹션의 회전을 따라야 합니다. 단면이 거꾸로 되어 있으면 컴포지트도 거꾸로 되어 있어야 합니다.

• 내 물레바퀴는 다음과 같은 기능을 할 수 있어야 합니다.

• - 애니메이션 없이 특정 섹션으로 이동

• - 무기한 회전

• - 특정 섹션에서 부드럽게 멈출 수 있어야 합니다.

• 섹션을 만들어야 합니다. 구성에서는 끌어올리기라는 수식어 덕분에 호를 그리는 것이 쉽습니다(sweepAngle은 도 단위의 호 크기입니다). 그리고 함수 끌어올리기 아크: 박스(수식어 = 수식어.크기(200.dp).drawBehind {드로아크(브러시 = 브러시.수직 구배(listOf(color.Red, color.Yellow)startAngle = 0f, sweepAngle = 30f, useCenter = true,)}) {}} 좋아요, 이제 섹션을 상단으로 옮기고 중앙으로 이동해야 브러시를 올바르게 바르고 섹션 내용을 쉽게 배치할 수 있습니다.

• 시작각 = -90f - (sweepAngle / 2) 더 좋은데 제 붓이 전체 원에 적용되어 있어서 노란색이 보이지 않아요. 그래서 브러시를 반쯤 멈추라고 말해야 합니다. 이에 대한 파라미터가 있습니다. endY = 200.dp.toPx() /2f 야, 기대되는 결과가 있어.

• 이제 콘텐츠로 넘어갈 수 있습니다. 먼저 데이터 클래스에서 섹션을 설정합니다.

https://medium.com/voodoo-engineering/creating-a-spin-wheel-in-compose-b71d1b0c7b77

Creating a spin-wheel in Compose

Introduction

medium.com





오늘의 이야기


#스하리1000명프로젝트,
한국에서 길을 잃었나요? 한국어를 못하더라도 이 앱을 사용하면 쉽게 돌아다닐 수 있습니다.
귀하의 언어로 말하면 귀하의 언어로 번역, 검색 및 결과가 표시됩니다.
여행자에게 좋습니다! 영어, 일본어, 중국어, 베트남어 등 10개 이상의 언어를 지원합니다.
지금 사용해 보세요!
https://play.google.com/store/apps/details?id=com.billcoreatech.opdgang1127




오늘의 이야기

제트팩 구성에서 더 나은 성능을 위해 재구성 최적화 Android jetpack compose ... by AI • 제트팩 컴포즈는 안드로이드의 네이티브 UI 구축을 위한 현대 툴킷으로, 더 적은 코드, 강력한...