2026/03/28

오늘의 이야기

다시  Eclipse을 이용한 프로젝트에 참여하면서 시작해 봅니다.   프로젝트를 하게 되면 우선 관리를 시작하게 되는 것이  여러 사람과 같이 작업을 하게 되기 때문에 


 


1. 일정관리


2. 소통관리


3. 소스관리


4. ... 등등


 


여러 가지 공유되어야 하는 부분들이 발생하게 됩니다.  그중에서도 제일 중요한 부분이 source 관리가 아닐까 하는 생각이 듭니다. 


 


source 관리

여러 사람의 한개의 project source을 만들어 내고, 수정하게 되다 보면 잘 정리가 되어야 하는 부분들이 발생하게 됩니다.  물론 그중에서도 source의 분실, 소실을 방지하기 위함 이기도 하고, 변경 이력을 관리하기 위함이기도 합니다. 


 


그럼, 방법은 어떤 것들이 있을까요?, 소소 하게 비용이 발생하는 open source 로 관리가 되는 것부터, 많은 비용이 들어가는 형상관리 시스템까지... 방법은 다양할 수 있습니다.  그중에서 Eclipse의 plugin으로 관리가 좀 쉬워 보이는 SVN을 설치해 사용해 보기로 했습니다. 


 


eclipse 메뉴 Eclipse Marketplace 가기



 


Eclise의 plugin 는 인터넷 사용이 가능한 환경에서는 메뉴 -> Help -> Eclipse Marketplace을 선택해서 plugin 을 검색 설치를 할 수 있습니다.  


 


Marketplace



 


Eclipse Marketplace 메뉴을 클릭해 나오는 창에서 Search 탭에서 svn을 입력하고 Go 버튼을 클릭해 검색을 시작해 봅니다  다음은 Subversive SVN Team Provider 4.8을 선택하고 install 버튼을 클릭해 설치를 진행하면 됩니다.  설치가 되고 나면 Eclipse 가 재시작을 하게 되고 난 후에 사용할 수 있습니다. 


 


다만, 최신 버전을 이용해 설치를 하고 난 뒤 발생하는 문제가 있더라구요.  과거에는 plugin 이 설치되면 자동으로 SVN Connector 가 설치 되어 바로 사용을 할 수 있었는 데, 접속하는 과정에서 오류가 발생하게 되더라고요.


 


preferpence  화면



먼저 접속 오류가 발생하게 되면, menu -> windows -> preferpence에서 version control(term) 아래 SVN 클릭하여 위 그림과 같이 나오는 화면에서 SVN Connector 정보가 설정할 수 있는지 확인을 해 봐야 합니다.  저 부분을 선택할 수 있어야 하는 데, 그 부분이 비어 설정을 할 수 없게 되어, 수동으로  SVN Connector을 설치해야 합니다. 


 


SVN Connector 링크 

 


https://osspit.org/eclipse/subversive-connectors/



 


Index of /eclipse/subversive-connectors


 


osspit.org




 


정보를 받아올 수 있는 정보의 현재 (2024.01.17) 기준으로는 위 링크 주소를 이용해서 가져올 수 있습니다.  가져오는 방법은 아래 그림과 같이  메뉴 -> Help -> install New SoftWare을 선택해서 진행할 수 있습니다.


 


install new software



 


install new Software 메뉴를 클릭해 나오는 창에 위 링크 주소를 복사해 붙여 넣으면 아래 화면과 같이 체크할 수 있는 연결 정보가 나타납니다.  체크 박스를 체크하고 next을 클릭해 설치를 시작하면 됩니다.


 


svn connector 설치 하기



 


이렇게 해서 간단하게 SVN connector의 설치에 대해서 자료를 찾아보았던 기억을 정리해 봅니다.  다음에 또 하게 될 때 참고가 될 수 있을 듯하고,  새로 해 보시는 분들께 작은 도움이 되시길 기원해 봅니다. 


 


 





오늘의 이야기



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

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

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

그것도 구글 Gemini로다가!

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

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

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


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




오늘의 이야기

간판



 


 


https://place.map.kakao.com/2134557776



 


청석민물매운탕어탕국수


경기 광주시 청석로 248-4 1층 (쌍령동 48-60)


place.map.kakao.com




 


이번에 다녀온 곳은 청석민물 매운 탕어국숫집입니다.  위치는 위 지도를 참고하시면 됩니다.  지리적으로 잘 가볼 수 없는 위치에 있을 수 도 있기는 합니다만.  국도를 이용해 이천 등을 다녀오신다면,  참고해 보시길 바랍니다.


 


원래는 성남시에서 운영하시던 식당을 이곳으로 이전 하고 1년쯤 지났다고 하더군요.  저는 와이프와 함께 다녀왔습니다.  다른 글에서 보여 드렸던 공주에 있는 민물 매운탕집과는 유사하기도 하지만, 다른 느낌이 들기도 했습니다.


 


민물매운탕 수제비



 이 식당에서는 주방에서 얼추 잘 익힌 수제비 매운탕을 먹었습니다.  이전 공주에서는 옆에서 끊이는 수제비 였다면, 이번에는 주방장님의 손수 익혀 주시는 정성을 느낄 수 있었습니다.   깔끔함을 느낄 수 있는 국물맛이 있기는 하더군요. 


 


밑반찬 준비 완료



미리 준비된 밑반찬은 깔끔 합니다. 주인장님의 손맛이 들어간 맛을 느낄 수 있었습니다.. 부족한 반찬은 self로 추가해 먹을 수 있었습니다.  


 


메뉴판



 


이 식당을 자주 다녔다는 와이프의 추천으로 매운탕에 넣어 먹는 국수를 먹고 왔어야 했는 데, 배가 불러서 그냥 온 것이 아쉬움으로 남아 있습니다.  다음에 또 가게 되면 그때는 한번 먹어 보고 와야겠습니다.


 





오늘의 이야기


#스하리1000명프로젝트

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

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

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

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





오늘의 이야기

회사를 떠났습니다.  다음 이야기를 적어 봅니다.  이 글을 쓰는 지금 기준으로  홀로서기 (1인 개발자)를 시작 한지도 1년이 이 지나는 날이기도 합니다.


 


https://billcorea.tistory.com/383  



 


어느 날 회사를 떠났습니다.


무작정 회사를 떠났습니다. 남들이 말하는 *(준)정년 이라는 제도를 핑계 삼으며 말입니다. 이런 저런 핑계는 있었습니다. 그 동안 무작정 살았던 흔적들 때문에 힘이 들기도 했기에 더는 감당이


billcorea.tistory.com




 


이전 이야기는 위 링크를 참고 하세요.  잘 쓰는 글이 아닌지라... 지루하기 하겠습니다만..  미리 정년을 준비하시는 분들에게  미리 경험해 본 이야기를 적어 드립니다.  조금의 참고가 될까 모르겠지만...


 



혹시나 퇴직 후 집에 머무르게 된다 해도.. 저 이모티콘 처럼 삼식이(?)가 되시지는 마세요. 집에서도 퇴직(?)을 해야 할지도 모릅니다. 


 


퇴직 후 구직 활동

 


경제활동인구 라는 단어의 의미를  찾아보니 15세 에서 64세 이내의 청. 장년 인구를 말한다 라는 wiki 이야기 보입니다. 아직 일을 할 수 있는 나이라는 말입니다.  하지만,  어떤 이유에서건 회사를 떠났기 때문에, 다시 일을 할 수 있는 방안을 마련해야 했습니다. 


 


구직활동을 할 수 있는 창구(?)는 다양하게 분포하고 있기는 하더군요.   저의 경우는  퇴직전 1년 넘어하던 일을 계속하고 싶기 했고, 현직에 있을 때 하던 일의 연속성을 유지하고 싶다는 소망이 있었기 때문에  무작정 1인 개발자로 사업자 등록을 했습니다.  그렇다고 해서 사업준비를 했다거나 한 것이 아니기 때문에 소득이 생기거나 하지는 않았습니다. 


 


소득이 없는 시간이 길어지기 시작하니 조바심이 나기 시작 합니다. 그래서 찾아보았던 것들이


 


사람인,  위시캣, 이랜서, 사람인 긱, 숨고 전문가, 크몽 전문가,  지식인 엑스퍼트 ... 하다 못해 토스앱,  준장년을 위한 일자리 앱, 구청 등에서 운영하는 장년 일자리 등등, 많은 곳에서 구인 정보를 제공하기는 합니다.  


 


다만, 프리랜서로 일을 시작 하기에는 연줄(?) 없이는 힘이 들었습니다. 직장생활만 하다가 정년을 코앞으로 남겨준 나이를 가진 사람에게는 더 그런 인력 시장이라는 생각을 하게 됩니다.   이런 인력시장(?)에 이력서울 수십 장 등록을 해 보기는 했습니다.  프리랜서 구인 사이트 이곳저곳에 프로필을 등록하고, 이런저런 자격사항을 챙기는 것부터...


 


프리랜서 시장에서 일을 시작하는 건 그렇게 녹녹하지 않았습니다.  실은 그렇게 죽을 만큼의 노력을 했는지는 자문해 보고 싶기는 합니다만... 취준을 준비하는 대졸 친구들의 노력에 비할 까 하는 생각이 들기도 합니다.  어쩌면 절박하기는 하나, 방향을 알 수 없기도 하고, 될까 하는 자신감 부족도 있었지 않을까 하는 생각이 들기도 합니다. 


 


혹시나 프리랜서 개발자로 시작해 보시려 한다면,  KOSA (한국소프트웨어 산업협회) 등에 기술자격에 대한 등록을 해 두시길 권해 드립니다.  등록에는 비용이 발생하기는 합니다만, 증빙을 챙겨 두시는 것이 도움이 될 수 있습니다. 또한 퇴직 전 직장에 근무 경력을 증빙할 수 있는 자료를 요청해 받아 두시는 것도 도움이 될 수 있습니다. 


갑. 을. 병. 정에 참여하기

퇴직할 때부터, 혹시나 했던 일과 연관해서 전 직장과 연관된 프로젝트에  개발자로 일을 시작하게 됩니다. 지금도 그때 연결 되었던 회사와 연줄을 달고 일을 하고 있기도 하고요. 


 


갑도 을도 아닌 병이 되어 일을 하고 있으시면, 현직에 있는 갑들을 보면서 (그렇다고 갑질 이야기는 아닙니다.), 현직에 있는 그들의 삶도 언젠가 퇴직 후의 삶을 준비하고 있는 가 하는 생각이 듭니다.  내가 현직에 있을 때 지금이 영원할 것 처럼 믿고 지냈던 시간들 처럼 말입니다.


 


나름 현직에 있을 떄 하던 일을 연속하게 하고 있게 되어 감사한 마음이기도 합니다. 연속성을 가지고 일을 하고 있는 동안만큼은 나름 보수도 나쁘지 않게 받을 수 있고 하니 말입니다.  그래도 마음 한 구석에 남는 허함은 어쩔 수 없는 가 봅니다.  나의 현직 시절을 추억하게 되니 말입니다.  


 


장년층의 일자리로 나오는 일들은 실제 해보지 않았던 일을 시작해야 하기에 망설임이 앞서게 됩니다. 그래서 일을 찾는 게 더 어려워지지 않을까 하는 생각을 하게 됩니다. 


 



 


오늘도 수고하셨습니다.  파이팅 하실 수 있도록 응원하겠습니다. 현직에 계실 때 누릴 수 있는 것들을 누리는 시간이 되시길 기원합니다.


 


허무해 ? by 빙챗






오늘의 이야기

예제앱 샘플



 


구글도 생성형 AI 프로젝트를 진행하고 있는가 봅니다.  그중에서 일반에게 열려 있는 생성형 AI 프로젝트 만들기를 도전해 볼 생각입니다. 


 


먼저, 이 프로젝트을 생성하기 위해서는 Android Studio의 환경이 좀 달라야 하기 때문에 먼저 보도록 하겠습니다. 


 


Android Studio Jellyfish | 2023.3.1 Canary 2
Build #AI-233.13135.103.2331.11259770, built on December 29, 2023
Runtime version: 17.0.9+0--11255266 amd64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
Windows 11.0
GC: G1 Young Generation, G1 Old Generation
Memory: 2048M
Cores: 8
Registry:
  ide.experimental.ui=true
Non-Bundled Plugins:
  com.intellij.marketplace (233.13135.108)
  wu.seal.tool.jsontokotlin (3.7.4)
  lermitage.intellij.battery.status (2.2)
  com.developerphil.adbidea (1.6.13)


 


현재 제가 사용하고 있는 Android Studio의 버전 copy 입니다. Canary 버전은 좀 불안정한 면이 있기 때문에 일을 할 때는 추천하지는 않지만, 이번과 같이 새로운 기능을 도전해 보고자 한다면 사용해 볼 가치가 있습니다. 


 


https://developer.android.com/studio/preview/gemini-template?hl=ko



 


Android 스튜디오에서 첫 번째 생성형 AI 앱 빌드하기  |  Android Developers


Android 스튜디오의 새 템플릿을 사용하여 생성형 AI 앱을 실행하세요.


developer.android.com




 


Project 의 생성에 관련된 부분은 개발자 페이지의 가이드를 참조하시면 될 듯합니다. 프로젝트를 생성하고 그냥 빌드만 하는 방법으로 첫 프로젝트를 만들어 진행해 볼 수 있었습니다. 


 


질문을 하면 답을 해 주는 방식 인데, 빙의 코파일럿의 경우는 실시간 검색을 통해 검색을 요약해 주는 기술을 보인다면, 이 앱은 그냥 빌드만 했더라도 그 정도의 기술 수준은 보여 주고 있습니다. 


 


**다만, 독도에 대한 의견을 요약해 달라고 했더니,  조금 미흡한 결과를 보여 주기는 했습니다.  우리가 생각하는 것처럼, 조선 시대 등의 이야기는 연관시켜 답을 주지 않기 때문입니다. 


 


 



package com.billcorea.gemini01031.summarize

import android.util.Log
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.google.ai.client.generativeai.GenerativeModel
import com.google.mlkit.nl.translate.Translator
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.asStateFlow
import kotlinx.coroutines.launch

class SummarizeViewModel(
private val generativeModel: GenerativeModel
) : ViewModel() {

private val _uiState: MutableStateFlow<SummarizeUiState> =
MutableStateFlow(SummarizeUiState.Initial)
val uiState: StateFlow<SummarizeUiState> =
_uiState.asStateFlow()

fun summarize(inputText: String, englishGermanTranslator: Translator) {
_uiState.value = SummarizeUiState.Loading

val prompt = "Summarize the following text for me: $inputText"

viewModelScope.launch {
try {
val response = generativeModel.generateContent(prompt)
response.text?.let { outputContent ->
englishGermanTranslator.translate(outputContent)
.addOnCompleteListener { result ->
Log.e("", "result = ${result.result}")
_uiState.value = SummarizeUiState.Success(outputContent + "\n" + result.result)
}
.addOnFailureListener { exception ->
Log.e("", "addOnFailureListener ${exception.localizedMessage}")
_uiState.value = SummarizeUiState.Success(outputContent)
}
.addOnCanceledListener {
Log.e("", "addOnCanceledListener")
_uiState.value = SummarizeUiState.Success(outputContent)
}
}
} catch (e: Exception) {
_uiState.value = SummarizeUiState.Error(e.localizedMessage ?: "")
}
}
}
}


 


summarize class의 소스 코드입니다.  기본 생성된 코드에 Google ML translate 을 이용해 결과를 한국어로 번역하는 정도만 추가해 보았습니다.   


 


** prompt 을 주의 깊게 봐야 할 것 같습니다.  여기서는 단순하게 요약(summarize) 해 줄 것을 요청하고 있기 때문에 사용자가 요청한 질문에 대해서 요약된 정보만을 생성해 내는 것으로 이해할 수 있습니다. 


 


여기서 다시 한번 prompt 의 중요성에 대한 인식을 가지게 됩니다.  prompt의 내용을 다르게 하게 되면 생성해 내는 결과의 값이 달라지지 않을까 하는 생각이 듭니다. 


 


아무튼 이로 인해서 달라지는 앱들의 모습이 보일 것으로 생각이 듭니다. 아주 다양한 생성 봇(bot) 앱이 나타나지 않을 까 하는 생각이 듭니다. 


 





오늘의 이야기


#스하리1000명프로젝트,
Kadang-kadang susah nak bercakap dengan pekerja asing kan?
Saya membuat aplikasi mudah yang membantu! Anda menulis dalam bahasa anda, dan orang lain melihatnya dalam bahasa mereka.
Ia auto-terjemah berdasarkan tetapan.
Sangat berguna untuk sembang mudah. Lihatlah apabila anda mendapat peluang!
https://play.google.com/store/apps/details?id=com.billcoreatech.multichat416




오늘의 이야기

Compose to Kotlin Compatibility 을 구글에서 검색을 해 보았습니다. 


 


검색결과



 


여기서 첫번째 나온 것을 클릭해 봅니다.  한국에  위치하고 있고 크롬의 설정에 따라 다른 결과를 얻을지도 모르지만, 저의 경우는 아래와 같이 한국어에 페이지가 나옵니다. 


 


이 페이지에서 나오는 것으로 봐서는 1.4.3 까지 패치된 것으로 오해할 수 있도록 보여 주고 있습니다. (2024.01.04 현재까지)  하지만, 이는 구글이 페이지를 한국어로 전환을 하지 않아 발생하는 현상으로 보입니다. 


 


 


한국어 페이지



 


그래서 저는 저기 나온 url 의 ko을 en으로 변경해 보겠습니다.


 


여기서 나오는 버전의 표기는 1.5.7 이 최신 버전으로 보입니다. (2024.01.04 현재) 


향상 최신 버전을 확인하고 작성을 해 두는 것이 최선(?)일 것으로 보이는 데, 구글의 페이지 전환은 생각보다 그렇게 따르게 되지 않습니다. 


 


개발을 하시는 분들 께 소소한 정보를 알려 드렸습니다.


 


영문 페이지



 


 


동일한 URL(?) 의 경우도 한글 버전과 영문 버전의 내용 차이가 있으므로 항상 영문 버전을 찾아 최신 정보를 습득하는 지혜를 가지시길 바랍니다. 


 


오늘도 즐~~~ 코딩 하세요.





오늘의 이야기

서울역 앞에서


야듀... 2023
8월 26일 인가부터 서울로 출근을 했습니다.  오랜만에  주말 부부도 해 보고,  1인 개발자로 살아보기 하며 수입이 멈춘 시간을 보내고 다시 일을 시작했습니다.

벌써 2023년의 마지막 업무일이 되었습니다. 시간은 빠르게 흐릅니다.  다시 정기적인 수입이 생기는 시간이 되기는 했습니다. 조금의 마음의 여유도 있고, 해서 이전에 어떻게 버텨 왔는지 잊어가고 있는 듯합니다.

어쩌든지 간에 한 해를 마무리하면서 좋은 기억만 가지고 이 한 해의 마무리를 해 볼 수 있기를 바라봅니다.

눈내린 산


잠시 여유의 시간이 생긴 다면 산을 가보고 싶습니다. 오르막의 힘듦과 내려가는 길의 여유를 느끼게 말입니다.  정상으로 가는 길에는 많은 어려움과 힘듦이 있을 텐데 그 길이 힘이 들 지라도 잘 버텨 낼 수 있기를 바라보고 내려가는 길이 초라해 보이지 않도록 자랑스럽게 매려 갈 수 있기를 바라봅니다.

아자 아자  남은 2023년도 잘 보내고 돌아오겠습니다.
다들 행복 행복한 시간이 되시길 기원 합니다.






오늘의 이야기


#billcorea #운동동아리관리앱
🏸 Schneedle, aplikasi mesti ada untuk kelab badminton!
👉 Main Perlawanan – Rekod Markah & Cari Lawan 🎉
Sesuai untuk mana-mana sahaja, bersendirian, bersama rakan-rakan atau dalam kelab! 🤝
Jika anda suka badminton, pasti mencubanya

Pergi ke aplikasi 👉 https://play.google.com/store/apps/details?id=com.billcorea.matchplay




오늘의 이야기

노량: 죽음의 바다



 


노량: 죽음의 바다  영화본 이야기입니다.

 


전작들을 다 보았었기 때문에  나름의 기대를 앉고 영화관을 향해 가 보았습니다. 다른 분들은 어떨지 모르겠지만, 나름의 기대가 너무 높았었나 봅니다.  이전에 보았던 명량: 한산에서 다가왔던 기대감이나, 애절함 보다는 덜한 느낌이었습니다.


 


그렇다고 해서 김윤석 배우님의 열연을 추앙하지 않을 수는 없습니다. 뿐만 아니라, 중국어, 일본어 대사를 거부감 1도 느낄 수 없도록 열연해 주신 배우님들의 노고을 깎아 내릴 용기도 없습니다. 


 


노량 해전의 애절함은...

역사책에서 보았던 것과 다름이 있기는 하겠으나, 조선을 지켜내고 백성을 지켜 내기 위해  그 차가운 바다로 사라져 간 수많은 군사들의 애국심과  자신의 죽음을 앞에 두고도 이 전쟁의 끝을 지켜내려고 하는 이순신 장군님의 충심을... 이 시대를 살아가는 나는?  저기 여의도에 계시는 분들은?  그런 생각이 들었습니다. 


 


영화는...

152분의 러닝 타임이 순삭 이기는 했습니다. 애절함에, 애통함에 시간감을 느낄 수는 없었습니다.  다시 한번  이순신 장군의 지략과 책략에 감동했으며, 그 시절에도 자신의 안일함에 빠진 명나라 도독의 마음에서 다시 한번 이 나라가 힘 있는 나라가 되어야 하겠구나 하는 생각을 하기도 했습니다. 


 


어느 계절에 촬영을 했는지 모르겠으나, 그 차가운 바다에서 수고하셨을 모든 분들께 감사를 드리고 싶습니다.  (내가?  뭐라고... ㅋㅋㅋ)  아무튼 영화는 애절하게 잘 보았으니 까요.


 


이제 임진왜란을 배경으로 한 영화는 더 이상 나오지 않을 것 같습니다.  재미나게 보고 오시길 바라봅니다.  자세한 영화 이야기는 스포일러가 될 수 있으므로 생략 합니다.


 





오늘의 이야기

  수다 떨기 (GEMINI) 개발 이야기   메인화면   이번 이야기는 이전 버전에서 달라지는 수다 떨기(GEMINI) 버전에 대한 이야기입니다.  이전 버전은 koGPT을 활용한 버전이었습니다. 다만, KAKAO API 가 제공하는 koGPT의 기...