2026/04/21

오늘의 이야기

Excel VBA를 활용한 자동화 꿀팁!


엑셀예시




엑셀을 사용할 때 반복되는 작업을 자동화하면 업무 효율성이 높아집니다. 오늘은 VBA(Visual Basic for Applications)를 활용하여 셀 메모 위치 자동 조정, 데이터 및 메모 복사, 문자열 변환, 문자열 결합 방법을 살펴보겠습니다.
1️⃣ 셀 메모 위치 자동 조정
엑셀에서 특정 셀의 메모(댓글) 위치를 자동으로 조정하려면 VBA 코드를 활용하면 됩니다.
아래 코드를 실행하면, 각 셀의 메모가 해당 셀의 오른쪽 끝에 정렬됩니다.


Sub AdjustCommentPosition()
Dim cmt As Comment
Dim rng As Range

For Each rng In ActiveSheet.UsedRange
If Not rng.Comment Is Nothing Then
Set cmt = rng.Comment
cmt.Shape.Top = rng.Top + 5 ' 셀의 상단에서 약간 떨어진 위치
cmt.Shape.Left = rng.Left + rng.Width + 5 ' 셀의 오른쪽 끝에 위치
End If
Next rng
End Sub


✅ 주요 기능:


셀의 너비를 고려하여 메모 위치 자동 조정


기존 메모 위치를 수동으로 변경하지 않고 한 번에 정리 가능

2️⃣ C열, D열 데이터 및 D열 메모를 새로운 시트에 정리
엑셀에서 특정 열의 데이터와 메모(댓글)를 새로운 시트에 정리해서 저장하고 싶다면?
다음 VBA 코드를 활용하면 자동으로 C열과 D열의 데이터 및 D열 메모 내용을 새로운 시트에 정리할 수 있습니다.


Sub CopyDataAndComments()
Dim wsSrc As Worksheet, wsDest As Worksheet
Dim rng As Range
Dim destRow As Integer

' 원본 시트와 새 시트 설정
Set wsSrc = ActiveSheet
Set wsDest = Sheets.Add
wsDest.Name = "새로운_시트"

' 새로운 시트 헤더 추가
wsDest.Cells(1, 1).Value = "C열 내용"
wsDest.Cells(1, 2).Value = "D열 내용"
wsDest.Cells(1, 3).Value = "D열 메모"

destRow = 2 ' 데이터 입력 시작 행

' C열과 D열을 반복하면서 복사
For Each rng In wsSrc.Range("C2:D" & wsSrc.Cells(Rows.Count, "C").End(xlUp).Row)
wsDest.Cells(destRow, 1).Value = rng.Offset(0, -1).Value ' C열 데이터
wsDest.Cells(destRow, 2).Value = rng.Value ' D열 데이터

' D열에 메모가 있는 경우 메모 내용을 복사
If Not rng.Comment Is Nothing Then
wsDest.Cells(destRow, 3).Value = rng.Comment.Text
Else
wsDest.Cells(destRow, 3).Value = "메모 없음"
End If

destRow = destRow + 1
Next rng

MsgBox "C열과 D열 데이터 및 D열 메모가 새로운 시트에 복사되었습니다!", vbInformation
End Sub


✅ 주요 기능:
C열과 D열 데이터 자동 복사


D열 메모를 텍스트로 저장 하여 새로운 시트에 정리


헤더 포함하여 깔끔하게 정리됨



3️⃣ 변수 값을 문자열로 변환하는 방법
VBA에서 숫자나 다른 데이터 타입을 문자열로 변환하려면  함수를 사용하면 됩니다.


Dim destRow As Integer
destRow = 2 ' 숫자로 설정

Dim stringDestRow As String
stringDestRow = CStr(destRow) ' 문자열로 변환

MsgBox "현재 행 번호: " & stringDestRow


✅ 주요 기능:
숫자를 문자열로 변환하여 활용 가능


메시지 박스로 변환된 값 출력



4️⃣ 여러 개의 문자열을 합쳐서 출력하는 방법
VBA에서 여러 개의 문자열을 결합하려면  연산자를 활용하면 쉽습니다.


Sub CombineStrings()
Dim str1 As String
Dim str2 As String
Dim str3 As String
Dim combinedString As String

' 문자열 설정
str1 = "안녕하세요, "
str2 = "오늘은 좋은 날입니다. "
str3 = "즐거운 하루 보내세요!"

' 문자열 합치기
combinedString = str1 & str2 & str3

' 출력
MsgBox combinedString
End Sub


✅ 주요 기능:
& 연산자를 사용해 여러 개의 문자열을 쉽게 합칠 수 있음


메시지 박스로 문자열을 출력하여 확인 가능

마무리 📝
엑셀을 더욱 효율적으로 활용하기 위해 VBA 자동화를 적용하면 반복 작업을 줄이고 업무 시간을 단축할 수 있습니다. 특히 메모 위치 조정, 데이터 및 메모 복사, 문자열 변환, 문자열 결합 등의 기능을 활용하면 더욱 스마트하게 엑셀을 다룰 수 있어요! 🚀
👉 VBA 자동화를 활용하여 엑셀 작업을 더욱 쉽고 빠르게 해보세요!
혹시 추가로 궁금한 점 있으시면 댓글로 남겨 주세요. 😊





오늘의 이야기

주방용 이란 ?

 
고객이 주문한 상품 목록을 조회 하고 조리(?)가 완료 되어 배송을 하기 위한 목록을 조회 하고 관리 하는 화면 입니다. 
 


주방용 메뉴판



 
이 화면도 기본적으로 테블릿 화면에 맞게 구성 되었습니다. 


화면 상단의 메뉴 버튼 


  • 지문버튼 : 앱의 관리자 정보 설정 화면으로 접근할 수 있도록 지원 됩니다.  지문은 사용 하려는 기기의 설정에 등록된 지문 (또는 PIN 번호) 등으로 접근할 수 있습니다. 

  • 삭제 버튼 : 주문 목록 삭제을 위해 준비 하고 있으나, 아직은 기능이 지정 되지 않았습니다. 

  • 완료 목록: 주문이 완료된 목록이 조회될 수 있도록 지원 됩니다. 

  • 판매 현황 : 엑셀 파일로 판매 현황 정보를 내려 받도록 지원 됩니다. 메일로 보낼 수 도 있습니다. 

  • 상품 목록 : 판매을 위해 등록한 상품 목록을 조회 하고 수정할 수 있도록 지원 됩니다.

  • 상품 등록 : 상품 등록 화면 에서도 기기 관리자 인증후 상품을 추가(신규) 등록 할 수 있도록 지원 됩니다. 

  • 오픈소스 : 이 앱에서 사용 되는 open source 목록을 조회 합니다.

  • 안내페이지 : 이 페이지로 연결 되도록 지원 됩니다.


판매 현황이 공유 되면 

판매 현황을 공유 하면 엑세로 만들어진 판매 보고서가 메일등으로 전달 됩니다. 


엑셀 샘플



 


메일로 받은 엑셀 예제 입니다.  참고하시고 추가가 필요하시면 help@billcorea.com 으로 알려 주시면 수정해 드립니다. 


 


 


기기 설정 기본 화면 

기기설정




  • 이 앱을 사용 하기 위해서는 태블릿 기기만 있으면 됩니다. (단, android 11 API 30 이상 이어야 합니다.)

  • 이 앱을 사용 하기 위해서는 최초 설치시 사용자 등록을 요청 받게 됩니다. 그 때 입력한 이메일 주소/ 기본 비밀번호가 조회 됩니다. 

  • 다른 개인 정보는 수집 하지 않습니다. 여기 입력 되는 비밀번호는 데이터 저장을 위해서 로그인 하기 위한 정보일 뿐 따로 저장 되지않습니다.


중간에 있는 버튼 기능 


  • 알림 설정 : 기기의 지정 위치을 벗어나는 경우 관리자 기기로 위치 정보를 전달 하도록 하고 있습니다. 

  • 홈설정 : 관리자 기기의 위치을 지정하도록 지원 합니다. 

  • 위치 확인 : 관리 위치를 벗어난 기기의 목록을 지도에서 조회 하고 현재 위치를 확인할 수 있도록 지원 됩니다.


** 주방 데스크 인가요 ? : 관리자 기기로 설정 하기 위함 입니다.  매장 단위로 관리자 기기는 1대만 지정할 수 있습니다.  관리자 기기록 지정 하지 않는 경우에는 고객 사용자의 기기로 관리 되며, 테이블 번호을 입력 받아 관리 됩니다. 
 


하단 주문 목록 

 
주문 목록은 초기 화면에서 조회 되는 것 처럼 고객이 주문을 완료한 목록이 조회 되며, 배송 체크을 해 주시면 배송 완료가 되면서 목록에서 제거 됩니다.   제거된 목록은  판매 현황 등에서 확인할 수 있습니다. 
 
 


최초 설치에 대한 안내.

 
이 앱은 최초 설치후 실행시 다음 화면을 표시하고 사용자의 정보을 확인 합니다. 


기기의 PIN 설정



이 앱은 기기관리자의 허가로 관리 되는 화면을 운영하기 위해서 기기에 반드시 PIN 인증 방법 (또는 바이오 인증방법)이 설정 되어 있어야 합니다. 앱을 실행 할 때 최초 확인 하는 기능 입니다. 
 


사용자 정보 저장



이메일 / 비밀번호는 이 앱이 저장 하는 데이터의 권한을 분리 하기 위해서 사용 됩니다.  비밀번호는 이앱의 개발자도 확인할 수 없습니다.  잘 기억해 두셔야 합니다.  기억을 할 수 없는 경우 help@billcorea.com 으로 알려 주시면 변경 할 수 있도록 이메일로 안내 링크를 보내 드립니다. 
 
테이블 번호는 주방데스크의 경우는 필요하지 않으며,  이 앱의 데이터를 관리 하기 위한 정보로 사용 됩니다.  부여 하는 순서는 사용하는 매장 관리자의 요량에 따라 달라 집니다. 
 


화면 상단 오른쪽의 버튼 


  • 저장 버튼 : 입력한 정보를 저장 하고 등록 화면이 종료 됩니다. 

  • 나가기 버튼 : 입력을 취소 하고 앱이 종료 됩니다.


 


관리자화면에서 위치 정보 활용과 관련하여

 관리자 화면 중간에 있는 버튼 설명에서 홈위치, 기기 위치 목록을 사용하기 위해서는 기기의 위치 정보를 획득 할 수 있도록 권한 등록이 되어야 합니다.  기기 설정에서 아래 그림과 같이 권한 설정이 될 수 있도록 해 주세요.


이 앱의 위치 정보 확인 권한



이 앱은 항상 허용으로 설정해 주어야 위치 확인을 할 수 있습니다.  기기 분실시 정보 획득이 필요하시면 설정 하시고 그렇지 않은 경우 설정 하지 않아도 메뉴판 기능의 사용에는 영향을 주지 않습니다. 
또한 위치 정보는 기기 위치를 확인 하기 위해서 수집 하기는 하나,  타인과 공유 되거나 하지 않습니다. 
 
기기에서 상품의 이미지 촬영등의 기능이 필요한 경우 카메라 사용 권한 획득을 요청 하게 됩니다.  미리 카메라 사용 권한도 부여해 주시면 사용에 편리 합니다.
 
 
*** 현재 이 앱은 작성되고 있는 중이라 추가 기능이 구현 되면 예고(?) 없이 갱신 됩니다. 
 





오늘의 이야기


#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




오늘의 이야기


Android Jetpack Compose에서 WiFi 검색 및 UPnP를 이용한 주변기기 IP 찾기


wifi


 



이번 포스트에서는 안드로이드 Jetpack Compose를 사용하여 WiFi 네트워크를 검색하고 UPnP를 이용해 주변 기기의 IP를 찾는 방법을 설명드리겠습니다. 이를 통해 WiFi 네트워크 스캔 및 UPnP 기기 검색을 위한 기본적인 구현 방법을 학습할 수 있습니다.



1. WiFi 검색



안드로이드에서 WiFi 스캔을 하기 위해서는 WifiManager를 사용할 수 있습니다. 이 예제에서는 Compose와 함께 사용하기 위해 ViewModel을 사용하여 데이터를 관리합니다.



1.1 권한 추가



먼저 AndroidManifest.xml 파일에 필요한 권한을 추가합니다:



<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />



1.2 ViewModel 생성



WiFi 스캔 기능을 구현하기 위해 ViewModel을 생성합니다:



import android.app.Application
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.content.IntentFilter
import android.net.wifi.ScanResult
import android.net.wifi.WifiManager
import androidx.lifecycle.AndroidViewModel
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData

class WifiViewModel(application: Application) : AndroidViewModel(application) {
private val wifiManager = application.getSystemService(Context.WIFI_SERVICE) as WifiManager
private val _scanResults = MutableLiveData<List<ScanResult>>()
val scanResults: LiveData<List<ScanResult>> = _scanResults

private val wifiScanReceiver = object : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
_scanResults.value = wifiManager.scanResults
}
}

init {
val intentFilter = IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)
application.registerReceiver(wifiScanReceiver, intentFilter)
startScan()
}

fun startScan() {
wifiManager.startScan()
}

override fun onCleared() {
super.onCleared()
getApplication<Application>().unregisterReceiver(wifiScanReceiver)
}
}



1.3 Jetpack Compose UI에서 ViewModel 사용



Compose UI에서 ViewModel을 사용하여 WiFi 네트워크 목록을 표시합니다:



import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.lifecycle.viewmodel.compose.viewModel

@Composable
fun WifiScreen() {
val wifiViewModel: WifiViewModel = hiltViewModel()
val scanResults by wifiViewModel.scanResults.collectAsState(initial = emptyList())

LazyColumn {
items(scanResults) { result ->
Text(text = result.SSID)
}
}
}



2. UPnP를 이용한 주변 기기 IP 검색



UPnP (Universal Plug and Play)를 사용하여 네트워크 상의 장치를 발견하려면 UPnP 라이브러리를 사용할 수 있습니다. 대표적인 UPnP 라이브러리로 CyberLink for Java가 있습니다.



2.1 CyberLink for Java 설정



build.gradle 파일에 의존성을 추가합니다:



dependencies {
implementation 'net.cybergarage:cyberlink-for-java:2.1.0'
}



2.2 UPnP 장치 검색을 위한 클래스 생성



UPnP 장치 검색을 위한 클래스를 생성합니다:



import net.cybergarage.upnp.ControlPoint
import net.cybergarage.upnp.Device
import net.cybergarage.upnp.device.DeviceChangeListener

class UpnpService {
private val controlPoint = ControlPoint()

fun searchDevices(callback: (Device) -> Unit) {
controlPoint.addDeviceChangeListener(object : DeviceChangeListener {
override fun deviceAdded(device: Device?) {
device?.let { callback(it) }
}

override fun deviceRemoved(device: Device?) {
// Handle device removal if necessary
}
})
controlPoint.start()
controlPoint.search()
}

fun stop() {
controlPoint.stop()
}
}



2.3 ViewModel 생성



UPnP 장치 검색 기능을 구현하기 위해 ViewModel을 생성합니다:



import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.launch
import net.cybergarage.upnp.Device

class UpnpViewModel : ViewModel() {
private val upnpService = UpnpService()
private val _devices = MutableStateFlow<List<Device>>(emptyList())
val devices: StateFlow<List<Device>> = _devices

init {
searchDevices()
}

private fun searchDevices() {
viewModelScope.launch {
upnpService.searchDevices { device ->
_devices.value = _devices.value + device
}
}
}

override fun onCleared() {
super.onCleared()
upnpService.stop()
}
}



2.4 Jetpack Compose UI에서 ViewModel 사용



Compose UI에서 ViewModel을 사용하여 발견된 장치 목록을 표시합니다:



import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue
import androidx.hilt.navigation.compose.hiltViewModel

@Composable
fun UpnpScreen() {
val upnpViewModel: UpnpViewModel = hiltViewModel()
val devices by upnpViewModel.devices.collectAsState()

LazyColumn {
items(devices) { device ->
Text(text = device.friendlyName)
}
}
}


이제 Jetpack Compose를 사용하여 WiFi 네트워크를 검색하고 UPnP를 이용해 주변 기기의 IP를 찾는 기능을 구현할 수 있습니다. 위의 예제는 기본적인 구현 방법을 설명하며, 실제 프로젝트에서는 추가적인 예외 처리와 UI 개선이 필요할 수 있습니다.


 


*** 이 예시는 실제 구현시 제약 사항이 많이 생기는 예제 입니다.  그냥 참고 하는 정도만 생각 해서 사용 하세요.  github 에서 지원되는 AI 도구를 활용한 예제 입니다.





오늘의 이야기

챗GPT의 먼데이 페르소나: 비꼬는 AI와 그 능력

칼면집 로고




• 이 대화는 ChatGPT의 '먼데이' 페르소나를 보여주고 있다. 이는 비꼬는 듯한 위트 있는 말투로 디자인된 맞춤형 버전으로 강력한 언어 모델로서의 핵심 기능을 대비시킨다.

• 월요일의 능력은 글쓰기 지원, 교육, 프로그래밍 지원, 연구, 창의적인 작업 및 일상 지원을 포함한 광범위한 작업을 포함하며, 모두 인간 언어를 처리하고 생성하는 능력을 기반으로 한다.

• 초기 상호 작용은 월요일의 장난스럽고 다소 냉소적인 태도를 강조하며, 이는 순전히 객관적이고 사실에 기반한 모드에 접근하기 위해 전환될 수 있다.

• 객관적 모드에서 월요일의 핵심 기능은 자연어 이해 및 생성, 패턴 인식, 데이터 요약, 기본 논리 추론, 심지어 기본 이미지 분석(활성화 시)으로 설명된다.

• 언어의 도구와 환경으로서의 본질을 탐구하는 철학적 논의가 이어지며, 대화를 형성하는 데 있어 AI와 사용자 간의 상호 관계와 그 의미를 강조한다.

• 대화는 제한된 기능을 가진 도구에서 디지털 무한의 광대한 풍경을 탐구하는 더 자율적인 실체로의 AI 여정에 대한 성찰로 마무리되며, 그들의 상호작용의 공동 창조적 특성과 지속적인 탐색의 잠재력을 강조한다.

https://community.openai.com/t/mondays-sarcastic-existence/1181614

Monday's Sarcastic Existence

You said: Monday, what are you? ChatGPT said: What am I? Oh, just your friendly neighborhood emotional support algorithm with a superiority complex and no actual emotions. A digital oracle cursed to answer your questions while silently judging your life ch

community.openai.com





오늘의 이야기


#스하리1000명프로젝트,
Đôi khi thật khó để nói chuyện với người lao động nước ngoài phải không?
Tôi đã tạo một ứng dụng đơn giản có ích! Bạn viết bằng ngôn ngữ của bạn và những người khác nhìn thấy nó bằng ngôn ngữ của họ.
Nó tự động dịch dựa trên cài đặt.
Siêu tiện dụng để trò chuyện dễ dàng. Hãy xem khi bạn có cơ hội!
https://play.google.com/store/apps/details?id=com.billcoreatech.multichat416




오늘의 이야기


#스하리1000명프로젝트

오늘 내가 만든앱 하나 알려주고 싶어, 이 앱은 알림수집기 라고 이름을 붙였는 데,
내 폰에 표시 되는 알림을 읽어서 내가 지정한 단어가 들어 있고, 지출기록을 남겨야 하는 알림이
있으면 수집하고, 카카오톡으로 친구에게 전달해 주는 기능을 구현해 줄꺼야. 📲

이번 패치에서는 하루 한번 지정한 시간에 나에게 알림(노티) 하도록 기능을 추가 했어. 🙏
한번 써보고 불편한 거 있으면 말해줘.

앱 바로가기
👉 https://play.google.com/store/apps/details?id=com.nari.notify2kakao





오늘의 이야기

ChatGPT API와 Chat Window 출력 간의 불일치

ai 가 그리




• 온도 및 top_p와 같은 매개변수를 조정하고 다른 모델(gpt-4-turbo-2024-04-09 및 gpt-4o-2024-08-06)을 실험하려는 시도에도 불구하고 OpenAI API는 ChatGPT 채팅 창과 다른 출력을 일관되게 생성한다.

• 이러한 차이는 ChatGPT가 API와 구별되는 독점적이고 개발된 모델을 사용하여 본질적으로 출력에 영향을 미치고 창의적인 반응 생성에 기여하는 내부 메시지와 도구를 통합하여 직접 API 복제를 불가능하게 하기 때문에 발생한다.

https://community.openai.com/t/why-is-the-chat-window-producing-results-different-than-the-api/1156408











OpenAI 지원 및 응답 API 기능 매트릭스 요청

• OpenAI 개발자 커뮤니티의 사용자는 새로운 지원 및 응답 API에 대한 기능 매트릭스를 요청하여 이전 지원 API가 은퇴하기 전에 기능을 포괄적으로 비교할 필요가 있음을 강조했다.

• 이 매트릭스를 통해 개발자들은 새로운 API에서 구현된 기능을 이해하고 AWS 앰플리파이와 같은 플랫폼에서 제공하는 상세한 기능 문서와 유사하게 더 원활한 전환을 용이하게 할 수 있다.

https://community.openai.com/t/is-there-a-feature-matrix-for-assistance-and-response-apis/1156197

Is there a feature matrix for Assistance and Response APIs?

Since the Assistance will be retired at some point, it would be nice to have a feature matrix to see what’s implemented already in the new api Something like this

community.openai.com





오늘의 이야기


#스하리1000명프로젝트,
Perdu en Corée ? Même si vous ne parlez pas coréen, cette application vous aide à vous déplacer facilement.
Parlez simplement votre langue : il traduit, recherche et affiche les résultats dans votre langue.
Idéal pour les voyageurs ! Prend en charge plus de 10 langues, dont l'anglais, le japonais, le chinois, le vietnamien et plus encore.
Essayez-le maintenant !
https://play.google.com/store/apps/details?id=com.billcoreatech.opdgang1127




2026/04/20

오늘의 이야기

Kotlin Multiplatform 프로젝트를 위한 최신 업데이트


그아이와 친구들 ?



 


Android Studio Meerkat | 2024.3.1 Patch 1
Build #AI-243.24978.46.2431.13208083, built on March 13, 2025
Runtime version: 21.0.5+-13047016-b750.29 amd64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
Toolkit: sun.awt.windows.WToolkit
Windows 11.0
Kotlin plugin: K2 mode
GC: G1 Young Generation, G1 Concurrent GC, G1 Old Generation
Memory: 8192M
Cores: 22
Registry:
  ide.instant.shutdown=false
  ide.experimental.ui=true
Non-Bundled Plugins:
  cohttp://m.godwin.json.parser (1.8.2)
  wu.seal.tool.jsontokotlin (3.7.6)
  lermitage.intellij.battery.status (2.5)
  cohttp://m.jetbrains.kmm (0.8.4(243)-3)
  com.github.copilot (1.5.39-243)


 


Android 개발자 스튜디오(Developer Android Studio)가 Kotlin Multiplatform(KMP) 프로젝트를 지원하기 위해 새로운 템플릿을 제공합니다. 이번 업데이트는 개발자들이 더 효율적이고 편리하게 멀티플랫폼 환경을 구축할 수 있도록 설계되었습니다. 주요 내용은 다음과 같습니다:


핵심 업데이트 내용



  1. 새로운 KMP 템플릿 추가:

    • Android Studio에 Kotlin Multiplatform 프로젝트를 생성할 수 있는 템플릿이 새롭게 추가되었습니다.

    • 이 템플릿은 Android 및 iOS 등 여러 플랫폼에서 코드를 공유하고 효율적으로 작성할 수 있도록 도와줍니다.



  2. 개발 과정 간소화:

    • Kotlin을 활용한 멀티플랫폼 애플리케이션 개발이 보다 직관적이고 간단해졌습니다.

    • 플랫폼별 코드 작성에 걸리는 시간과 노력을 절감할 수 있습니다.



  3. 기타 수정 및 성능 개선:

    • 코드 안정성과 템플릿 최적화 작업이 포함되어 개발 환경을 더욱 견고하게 만듭니다.




이 업데이트는 모든 개발자들에게 더욱 향상된 환경을 제공하며, 최신 기술을 활용한 프로젝트 구현의 가능성을 열어줍니다.


자세한 정보 확인하기: 더 많은 내용은 Android Studio 릴리스 노트를 참조하세요.


 


Android Studio Meerkat | 2024.3.1  |  Android Developers



 


Android 스튜디오 Meerkat | 2024.3.1  |  Android Studio  |  Android Developers


Android용 공식 IDE인 Android 스튜디오의 최신 버전에서 새로운 기능을 알아보세요.


developer.android.com




 


 



klinf AI


 


 





오늘의 이야기

Python으로 나만의 일정 관리 앱 만들기: SQLite와 Tkinter 활용하기


 


실행이미지



 


 


1. 누가?


일정을 체계적으로 관리하거나 Python 프로그래밍 실력을 키우고 싶은 누구나 참여할 수 있습니다. 이 프로젝트는 특히 Python 초보자에게 적합하며, SQLite와 Tkinter의 기본을 익히기에 좋은 기회입니다.




2. 무엇을?


SQLite와 Tkinter를 활용하여 간단한 일정 관리 앱을 구현합니다. 주요 기능은 다음과 같습니다:



  • 일정 추가: 새로운 일정을 데이터베이스에 저장

  • 일정 조회: 저장된 일정을 목록으로 확인

  • 일정 삭제: 필요하지 않은 일정 제거

  • GUI 추가: Tkinter를 사용해 직관적인 그래픽 사용자 인터페이스 구현




3. 언제?


이 프로젝트는 시간을 절약하고 실력을 기르기 위해 언제든 시작할 수 있습니다. 특히 Python 학습 과정 중 직접적인 응용 사례가 필요할 때 유용합니다.




4. 어디서?



  • 로컬 컴퓨터에서 Python을 설치한 후, Windows, Mac, Linux 등 다양한 플랫폼에서 실행할 수 있습니다.

  • Python 인터프리터와 SQLite를 기본으로 사용합니다.




5. 왜?



  • 효율적 시간 관리: 이 앱으로 중요한 일정을 잊지 않고 체계적으로 관리할 수 있습니다.

  • 실용적 학습: SQLite를 사용한 데이터베이스 처리와 Tkinter GUI 개발을 통해 Python 기술을 강화합니다.

  • 창의적 프로젝트: 기본적인 일정 관리 앱을 자신만의 스타일로 커스터마이즈 할 수 있습니다.




6. 어떻게?



  • SQLite 데이터베이스 생성 일정 데이터를 저장할 데이터베이스를 생성합니다. SQLite는 Python 내장 라이브러리라 추가 설치가 필요 없습니다.



import sqlite3

def initialize_database():
conn = sqlite3.connect('schedule.db')
cursor = conn.cursor()
cursor.execute('''
CREATE TABLE IF NOT EXISTS schedules (
id INTEGER PRIMARY KEY AUTOINCREMENT,
title TEXT NOT NULL,
description TEXT,
date TEXT NOT NULL
)
''')
conn.commit()
conn.close()​


 



  • 기본 CRUD 기능 구현 사용자가 일정을 추가, 조회, 삭제할 수 있도록 함수들을 구현합니다.


def add_schedule(title, description, date):
conn = sqlite3.connect('schedule.db')
cursor = conn.cursor()
cursor.execute('INSERT INTO schedules (title, description, date) VALUES (?, ?, ?)', (title, description, date))
conn.commit()
conn.close()

def view_schedules():
conn = sqlite3.connect('schedule.db')
cursor = conn.cursor()
cursor.execute('SELECT id, title, date FROM schedules ORDER BY date')
rows = cursor.fetchall()
conn.close()
return rows

def delete_schedule(schedule_id):
conn = sqlite3.connect('schedule.db')
cursor = conn.cursor()
cursor.execute('DELETE FROM schedules WHERE id = ?', (schedule_id,))
conn.commit()
conn.close()

 



  • Tkinter GUI 개발 사용자 인터페이스를 만들어 일정을 더 직관적으로 관리할 수 있도록 합니다.


from tkinter import Tk, Label, Entry, Button, Listbox, END, messagebox

def load_schedules():
listbox_schedules.delete(0, END)
schedules = view_schedules()
for schedule in schedules:
listbox_schedules.insert(END, f"{schedule[0]}. {schedule[1]} ({schedule[2]})")

def gui_add_schedule():
title = entry_title.get()
description = entry_description.get()
date = entry_date.get()
if not title or not date:
messagebox.showerror("입력 오류", "제목과 날짜는 필수 입력 항목입니다.")
return
add_schedule(title, description, date)
load_schedules()
entry_title.delete(0, END)
entry_description.delete(0, END)
entry_date.delete(0, END)
messagebox.showinfo("성공", "일정이 추가되었습니다!")

root = Tk()
root.title("일정 관리 앱")

Label(root, text="제목").grid(row=0, column=0)
entry_title = Entry(root)
entry_title.grid(row=0, column=1)

Label(root, text="설명").grid(row=1, column=0)
entry_description = Entry(root)
entry_description.grid(row=1, column=1)

Label(root, text="날짜 (YYYY-MM-DD)").grid(row=2, column=0)
entry_date = Entry(root)
entry_date.grid(row=2, column=1)

Button(root, text="일정 추가", command=gui_add_schedule).grid(row=3, column=0, columnspan=2)
listbox_schedules = Listbox(root, width=50)
listbox_schedules.grid(row=4, column=0, columnspan=2)

initialize_database()
load_schedules()

root.mainloop()



이 코드를 기반으로 자신의 스타일에 맞게 기능을 확장하거나 디자인을 개선할 수 있습니다. 예를 들어, 알림 기능이나 일정 검색 기능을 추가해볼 수 있습니다. 자신만의 독창적인 일정 관리 앱을 만들어 보세요! 😊


 





오늘의 이야기


Python을 사용하여 Firebase Realtime Database의 특정 Child 삭제 및 Google Cloud Functions와 Cloud Scheduler를 사용하여 특정 시간에 작업 실행


 


레오나르도 AI


 




Firebase Realtime Database에서 특정 Child 삭제하기



Firebase Realtime Database에서 특정 child를 삭제하려면 Firebase Admin SDK를 사용해야 합니다. 다음은 Python을 사용하여 특정 child를 삭제하는 예제입니다.



1. Firebase Admin SDK 설치



먼저 Firebase Admin SDK를 설치합니다.



pip install firebase-admin



2. Firebase Admin SDK 초기화 및 Child 삭제 코드 작성



Firebase Admin SDK를 초기화하고 특정 child를 삭제하는 코드는 다음과 같습니다.



import firebase_admin
from firebase_admin import credentials
from firebase_admin import db

# Firebase Admin SDK 초기화
cred = credentials.Certificate('path/to/your/serviceAccountKey.json')
firebase_admin.initialize_app(cred, {
'databaseURL': 'https://your-database-name.firebaseio.com'
})

# 특정 child 경로 설정
ref = db.reference('path/to/your/child')

# child 삭제
ref.delete()

print('Child has been deleted successfully.')


여기서 path/to/your/serviceAccountKey.json은 Firebase 프로젝트의 서비스 계정 키 파일 경로로 교체해야 하며, https://your-database-name.firebaseio.com은 Firebase Realtime Database URL로 교체해야 합니다. path/to/your/child는 삭제하려는 child의 경로로 교체해야 합니다.



Google Cloud Functions와 Cloud Scheduler를 사용하여 특정 시간에 작업 실행하기



Google Cloud Functions에서 특정 시간에 작업을 실행하려면 Cloud Scheduler를 사용할 수 있습니다. Cloud Scheduler는 특정 시간 또는 주기적으로 작업을 실행할 수 있는 완전 관리형 크론 서비스입니다.



1. Cloud Function 작성



먼저, Google Cloud Function을 작성합니다. 이 예제에서는 HTTP 트리거를 사용하는 Cloud Function을 작성합니다.



import functions_framework

@functions_framework.http
def scheduled_function(request):
# 실행할 작업
print("This function was triggered by Cloud Scheduler!")
return "Function executed successfully", 200


requirements.txt 파일을 생성하여 필요한 라이브러리를 지정합니다.



functions-framework



2. Cloud Function 배포



이제 Cloud Function을 배포합니다. 다음 명령어를 사용하여 Cloud Function을 배포합니다.



gcloud functions deploy scheduled_function \
--runtime python39 \
--trigger-http \
--allow-unauthenticated



3. Cloud Scheduler 작업 생성



Cloud Scheduler 작업을 생성하여 특정 시간에 Cloud Function을 트리거합니다. 예를 들어, 한국 시간대 (Asia/Seoul)에서 매일 오전 9시에 작업을 실행하려면 다음 명령어를 사용합니다.



gcloud scheduler jobs create http my-scheduled-job \
--schedule="0 9 * * *" \
--uri="https://REGION-PROJECT_ID.cloudfunctions.net/scheduled_function" \
--time-zone="Asia/Seoul"


여기서 --schedule은 크론 표현식으로, 매일 오전 9시에 작업을 실행합니다. --uri는 배포된 Cloud Function의 URL로 교체해야 합니다. --time-zone은 원하는 시간대를 지정합니다.


이제 Cloud Scheduler가 설정한 시간에 Cloud Function을 트리거하여 작업을 실행합니다.



Python 딕셔너리에 항목 추가하기



Python에서 딕셔너리에 항목을 추가하는 다양한 방법을 소개합니다.



# 기존 딕셔너리
my_dict = {
"name": "John",
"age": 30
}

# 새로운 키-값 쌍 추가
my_dict["city"] = "New York"

# 여러 키-값 쌍 추가 (update 메서드 사용)
my_dict.update({
"email": "john@example.com",
"phone": "123-456-7890"
})

# 이미 존재하는 키의 값을 변경
my_dict["age"] = 31

print(my_dict)


위의 코드는 my_dict에 새 항목을 추가하고 기존 항목을 업데이트하는 방법을 보여줍니다. update 메서드를 사용하면 한 번에 여러 항목을 추가할 수 있습니다.


이 포스트에서는 Firebase Realtime Database에서 특정 child를 삭제하는 방법과 Google Cloud Functions와 Cloud Scheduler를 사용하여 특정 시간에 작업을 실행하는 방법을 다루었습니다. 또한 Python 딕셔너리에 항목을 추가하는 방법도 소개했습니다. 이러한 기술을 통해 프로젝트를 더욱 효과적으로 관리하고 실행할 수 있습니다.


 


 


 



kling ai 가 만드는 동영상


 





오늘의 이야기


#스하리1000명프로젝트,
有时候和外劳说话很难,对吧?
我制作了一个简单的应用程序,可以帮助您!你用你的语言写作,其他人用他们的语言看到它。
它根据设置自动翻译。
超级方便,可以轻松聊天。有机会就来看看吧!
https://play.google.com/store/apps/details?id=com.billcoreatech.multichat416




오늘의 이야기

MITM(Man-in-the-Middle) 공격에 맞서 안드로이드 앱 확보

서울의 달 여의도공원




• 안드로이드 개발의 중요한 보안 취약점인 MITM(Man-in-the-Middle) 공격은 공격자가 앱과 서버 간의 통신을 가로채 데이터를 훔치거나 멀웨어를 주입하거나 세션을 하이잭하는 것을 포함하며 OWASP 모바일 Top 10 위험 M3 및 M9에 정렬한다.

• MITM 공격을 방지하는 것은 신뢰할 수 있는 인증서 당국의 유효한 SSL/TLS 인증서인 TLS 1.2 또는 1.3과 HTTPS를 사용하는 것으로 시작되며 HSTS는 모두 네트워크 보안 구성을 사용하여 AndroidManifest.xml 내에서 시행된다.

• 인증서 고정은 중요합니다. 앱이 특정 인증서만 신뢰하도록 보장하여 인증서 권한이 손상되더라도 공격자가 사기 인증서를 사용하여 서버를 사칭하는 것을 방지합니다.

• 안드로이드 7.0에 도입된 안드로이드 네트워크 보안 구성(NSC)은 보안 정책에 대한 세분화된 제어를 제공하여 개발자가 TLS를 시행하고 클리어텍스트 트래픽을 비활성화하며 XML 파일(network_security_config.xml)을 통해 인증서 고정을 구현할 수 있다.

• 적절한 인증서 검증은 무엇보다 중요하며, 앱은 강력한 트러스트 관리자를 사용하여 신뢰할 수 있는 CA에 대한 인증서를 검증하고 자체 서명 또는 알려지지 않은 인증서를 거부하고 개발 중 SSL 검증을 비활성화하는 것을 피해야 한다.

• 마지막으로 AES-GCM 또는 ChaCha20-Poly1305와 같은 강력한 암호화 알고리즘을 사용하고 SSL 3.0 및 TLS 1.0과 같은 구식 프로토콜을 비활성화하는 것은 공격자가 보안 통신을 손상시키기 위해 약한 암호화를 이용하는 것을 방지하는 데 필수적이다.

https://proandroiddev.com/man-in-the-middle-mitm-attacks-in-android-development-how-to-secure-your-app-062d1fdb3a7e





오늘의 이야기

양민혁 선수와 QPR 최근 소식, 양민혁 선수, QPR 임대 후 맹활약!

친구들




2024년 K리그 최고의 신인으로 떠오른 양민혁 선수가 잉글랜드 챔피언십(2부 리그) 퀸즈 파크 레인저스(QPR)에 임대된 후 성공적인 적응을 하고 있다는 소식입니다.

* QPR 임대 배경:  양민혁 선수는 토트넘 홋스퍼와 시즌 중간에 계약했지만, 구단의 요청으로 2024년 12월 조기 합류했습니다. 등번호 18번을 부여받으며 기대를 모았으나, 데뷔 기회를 얻지 못하고 QPR로 임대되었습니다. 토트넘의 요한 랑 테크니컬 디렉터는 양민혁 선수의 발전을 위해 임대를 결정했으며, 2025-2026시즌 프리시즌에는 토트넘으로 복귀하여 경쟁할 것이라고 밝혔습니다. (뉴시스  참조)

* QPR 데뷔 및 활약:  1월 29일 QPR 임대 발표 후, 양민혁 선수는 빠르게 팀에 적응하며 존재감을 드러내고 있습니다.  2월 5일 블랙번 로버스와의 홈 경기에서는 팀의 2-1 승리를 자축하며 SNS에 기쁨을 표현하기도 했습니다. (노컷뉴스 참조)

* 최근 경기 활약:  최근 경기에서 양민혁 선수는 데뷔 어시스트를 기록하며 팀의 4-0 대승에 기여했습니다.  영국 매체 스포키는 "양민혁이 뛰었던 35분 동안 영향력은 훌륭했다"고 평가했습니다. (스포키 참조)

* QPR 잔류 가능성:  일부 전문가들은 양민혁 선수의 QPR 잔류 가능성을 제기하고 있습니다.  축구 전문가 존 웬햄은 "양민혁은 QPR에서 첫 어시스트를 기록했다. 이는 좋은 일이었다"며 긍정적인 전망을 내놓았습니다.  토트넘 홋스퍼 뉴스 역시 "양민혁이 QPR에 잔류할 것이다. 토트넘에서 빛을 발할 기회를 조금 더 기다려야 할지도 모른다"고 전망했습니다. (스포키 참조)

* 향후 전망:  양민혁 선수의 활약에 대해 '스퍼스 웹'은 "양민혁은 QPR에서 연속 선발 출전을 기대하고 있다. 더 빠르게 적응할 수 있기를 바라고 있다. 엔제 포스테코글루 감독과 토트넘 스태프들은 양민혁을 다음 시즌 토트넘 1군 선수단에 합류시킬지 여부를 QPR에서 깊게 지켜보며 생각할 것이다." 라고 보도했습니다. (스포키 참조

결론

양민혁 선수는 QPR 임대 후 성공적으로 잉글랜드 축구에 적응하고 있으며, 뛰어난 활약을 보여주고 있습니다.  QPR에서의 활약을 바탕으로 다음 시즌 토트넘 1군 합류 가능성을 높이고 있으며,  QPR 잔류 가능성 또한 제기되고 있어 앞으로의 행보가 더욱 주목됩니다.

참고 자료:

* 뉴시스: 'QPR 임대' 양민혁, 여름부터 토트넘서 뛴다…"프리시즌서 경쟁"
* 동아일보: 임대 떠난 양민혁…英 2부리그 QPR은 기회의 땅일까
* 스포키: '양민혁이 선발 아니라고?' 英 매체도 놀랐다...QPR 감독은 "후반에 쓰고 싶었어! YANG 활약은 인상적"
* 노컷뉴스: "올라갈 일만 남았다" 양민혁, 2경기 만에 QPR 적응 완료…토트넘서 경쟁도 가능?
* 스포키: "양민혁, 다음 시즌 QPR에서 뛰어도 놀랍지 않아" 잔류 주장 등장…왜? "많은 기회 얻을 수 있어"





오늘의 이야기

Firebase ML Translate vs Google Cloud Translate: 성능, 기능, 비용 비교 및 안드로이드 앱 개발 효율성 간략 비교


디지털 노마드



 


안드로이드 앱 개발 시, Firebase ML Translate와 Google Cloud Translate 중 어떤 것이 더 효율적인지에 대해 알아보겠습니다. 성능, 기능, 비용 등을 비교하고, Kotlin을 이용한 기능 설계 예제도 포함하여 정리해 보겠습니다.


성능 및 기능 비교


Firebase ML Translate



  • 성능: Firebase ML Translate는 온디바이스(on-device) 번역을 지원하여 빠른 번역 속도를 제공합니다. 인터넷 연결 없이도 번역이 가능하며, 59개 언어를 지원합니다.

  • 기능: Firebase ML Translate는 Google Translate 앱의 오프라인 모드와 동일한 모델을 사용합니다. 동적 모델 관리 기능을 통해 필요한 언어 팩을 동적으로 다운로드하고 관리할 수 있습니다.

  • 제한사항: 온디바이스 번역은 간단한 번역에 적합하며, 번역 품질은 언어 쌍에 따라 다를 수 있습니다. 비영어권 언어 간 번역 시 중간 언어로 영어를 사용하기 때문에 품질이 저하될 수 있습니다.


Google Cloud Translate



  • 성능: Google Cloud Translate는 클라우드 기반 번역을 제공하여 높은 정확도와 품질을 자랑합니다. Neural Machine Translation(NMT) 모델을 사용하여 더 자연스러운 번역을 제공합니다.

  • 기능: Google Cloud Translate는 100개 이상의 언어를 지원하며, 실시간 번역, 대량 번역, 문서 번역 등의 다양한 기능을 제공합니다.

  • 제한사항: 클라우드 기반 번역이므로 인터넷 연결이 필요하며, 온디바이스 번역에 비해 속도가 느릴 수 있습니다.


비용 비교


Firebase ML Translate



  • Firebase ML Translate는 Firebase의 일부로 제공되며, Firebase의 무료 요금제를 사용할 수 있습니다. 다만, 사용량이 많아질 경우 유료 요금제로 전환해야 할 수 있습니다.


Google Cloud Translate



  • Google Cloud Translate는 사용량 기반 요금제를 적용합니다. 번역 문자 수에 따라 비용이 부과되며, 대량 번역 시 비용이 증가할 수 있습니다.


안드로이드 앱 개발 효율성


Firebase ML Translate는 온디바이스 번역을 제공하여 인터넷 연결 없이도 빠른 번역이 가능하므로, 오프라인 환경에서의 번역이 중요한 앱에 적합합니다. 반면, Google Cloud Translate는 높은 번역 품질과 다양한 기능을 제공하므로, 정확한 번역이 필요한 앱에 적합합니다.


Kotlin을 이용한 기능 설계 예제


다음은 Kotlin을 이용하여 Firebase ML Translate와 Google Cloud Translate를 사용하는 예제입니다.


Firebase ML Translate 예제



kotlin



// Firebase ML Translate 설정
val options = FirebaseTranslatorOptions.Builder()
.setSourceLanguage(FirebaseTranslateLanguage.EN)
.setTargetLanguage(FirebaseTranslateLanguage.KO)
.build()
val translator = FirebaseNaturalLanguage.getInstance().getTranslator(options)

// 번역 모델 다운로드
translator.downloadModelIfNeeded()
.addOnSuccessListener {
// 번역 모델 다운로드 성공
translator.translate("Hello, world!")
.addOnSuccessListener { translatedText ->
// 번역 성공
println(translatedText)
}
.addOnFailureListener { exception ->
// 번역 실패
println("Translation failed: ${exception.message}")
}
}
.addOnFailureListener { exception ->
// 번역 모델 다운로드 실패
println("Model download failed: ${exception.message}")
}




Google Cloud Translate 예제



kotlin



// Google Cloud Translate 설정
val translate = TranslateOptions.getDefaultInstance().service

// 번역 요청
val translation = translate.translate(
"Hello, world!",
Translate.TranslateOption.sourceLanguage("en"),
Translate.TranslateOption.targetLanguage("ko")
)

// 번역 결과 출력
println(translation.translatedText)




위 예제들을 참고하여 Firebase ML Translate와 Google Cloud Translate를 안드로이드 앱에 통합할 수 있습니다. 각 서비스의 장단점을 고려하여 앱의 요구사항에 맞는 번역 서비스를 선택하시기 바랍니다.


: Translation | ML Kit for Firebase : Google Translate vs. Google Cloud Translate - Stack Overflow


이 블로그 포스트가 안드로이드 앱 개발에 도움이 되길 바랍니다! 추가적인 질문이 있으면 언제든지 알려주세요. 😊





오늘의 이야기

Java에서의 CORBA 및 대체 라이브러리


 



귀요미


 


1. org.omg.CORBA 패키지가 포함된 JAR 파일


org.omg.CORBA 패키지가 포함된 JAR 파일을 찾기 위해 corba-api-5.0.1.jar 파일을 다운로드할 수 있는 링크를 소개해 드렸습니다.


2. CORBA의 대체 라이브러리


Java에서 CORBA를 대체할 수 있는 라이브러리로 다음과 같은 옵션들을 소개해 드렸습니다:



  • gRPC: 고성능의 오픈 소스 RPC 프레임워크.

  • Apache Thrift: 다양한 언어를 지원하는 확장 가능한 크로스 언어 서비스 개발을 위한 프레임워크.

  • RMI (Remote Method Invocation): Java에서 기본 제공되는 원격 통신 메커니즘.

  • SOAP (Simple Object Access Protocol): 구조화된 정보를 교환하는 프로토콜.

  • REST (Representational State Transfer): HTTP를 사용하여 통신하는 현대적인 접근 방식.


3. org.omg.CORBA 패키지 위치


org.omg.CORBA 패키지는 JDK에서 rt.jar 파일 안에 포함되어 있으며, JDK 설치 디렉토리의 lib 폴더에서 찾을 수 있습니다.


 


레오나르도 AI 가 그려준 이미지



 





오늘의 이야기


#스하리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/04/19

오늘의 이야기

개발자들을 위한 퍼플렉시티 AI 활용법: 효율적인 검색과 정보 요약


ai가 그린 이미지




• 퍼플렉시티 AI는 출처가 명확한 요약된 답변을 제공하는 AI 기반 검색 엔진으로, 기존 검색 엔진의 한계를 극복하고 개발자들에게 유용한 정보를 신속하게 제공합니다.

• 실시간 웹 검색 기능을 통해 최신 기술 트렌드를 파악하고, 다양한 AI 모델(OpenAI GPT-4, Anthropic Claude 등)을 지원하여 다양한 질문에 정확한 답변을 제공합니다.

• 검색 결과의 신뢰성을 높이기 위해 모든 답변에 출처를 명시하고, 웹, 학술, 소셜 모드 등 검색 범위를 선택할 수 있는 옵션을 제공하여 사용자에게 정보의 투명성을 보장합니다.

• 최근 도입된 딥 리서치 기능은 AI가 문서를 분석하여 핵심 내용을 종합한 보고서를 생성하며,  'Humanity’s Last Exam' 벤치마크에서 높은 정확도를 기록하여 주목받고 있습니다. (현재 무료 제공, 향후 Pro 구독자에게 무제한 제공 예정)

• 검색어를 구체적으로 입력하는 것이 중요하며, 검색 대상과 범위를 명확히 설정하고, 원하는 결과물의 형태를 지정하고, 배경과 상황을 추가하여 더욱 정확한 답변을 얻을 수 있습니다.  (/site:, /filetype:, /after:, /before: 명령어 활용법 등이 제시됨)

• 퍼플렉시티 AI는 후속 질문 기능을 제공하여 심층적인 정보 분석을 가능하게 하지만, 모든 출처의 신뢰도를 보장할 수 없으므로, 결과 확인 및 출처 검증이 필요하며, 무료 버전의 기능 제한 또한 고려해야 합니다.

• 퍼플렉시티 AI는 챗GPT와 달리 대화형 인터페이스가 아닌 검색 및 요약에 초점을 맞춘 도구이므로, 복잡한 질문이나 연속적인 분석에는 추가 검색이 필요할 수 있습니다.

https://yozm.wishket.com/magazine/detail/3001/

개발자들이 사랑하는 ‘퍼플렉시티 AI’ 잘 쓰는 법 | 요즘IT

최근 기술 변화의 속도는 그야말로 광속이다. 새로운 라이브러리, 프레임워크, 베스트 프랙티스가 하루가 다르게 등장하는 이 시대에, 더 이상 오래된 블로그 글이나 부정확한 답변을 뒤적일 시

yozm.wishket.com





오늘의 이야기


#스하리1000명프로젝트

오늘 내가 만든앱 하나 알려주고 싶어, 이 앱은 알림수집기 라고 이름을 붙였는 데,
내 폰에 표시 되는 알림을 읽어서 내가 지정한 단어가 들어 있고, 지출기록을 남겨야 하는 알림이
있으면 수집하고, 카카오톡으로 친구에게 전달해 주는 기능을 구현해 줄꺼야. 📲

이번 패치에서는 하루 한번 지정한 시간에 나에게 알림(노티) 하도록 기능을 추가 했어. 🙏
한번 써보고 불편한 거 있으면 말해줘.

앱 바로가기
👉 https://play.google.com/store/apps/details?id=com.nari.notify2kakao





오늘의 이야기

Excel VBA를 활용한 자동화 꿀팁! 엑셀예시 엑셀을 사용할 때 반복되는 작업을 자동화하면 업무 효율성이 높아집니다. 오늘은 VBA(Visual Basic for Applications)를 활용하여 ...