안녕하세요, 개발자 던킨입니다.
2024. 9. 20. 00:36
잡담
안녕하세요, 글또 10기를 지원하게 된 개발자 던킨입니다.저라는 사람의 지나온 시간을 글로 풀어내 독자에게 전달하는 일이 쉽지 않지만, 진솔하고 담백하게 적어보려고 합니다.먼저, 비전공자로서 개발자의 길을 선택하게 된 계기를 나누고자 합니다. 제 인생에서 중요한 전환점이었고, 개발자가 된 이유가 저를 가장 잘 표현하는 선택이라고 생각하기 때문입니다. "제가 개발자가 되기로 한 결정은 저라는 사람을 가장 잘 나타내는 선택이라고 생각합니다. 다양한 문화와 사람들을 이해하며 자란 제 삶에서, 개발은 단순한 기술적 학습을 넘어 끊임없이 변화하고 적응하는 능력을 요구하는 분야입니다. 이는 제 삶의 태도와 닮아 있습니다. 요리를 통해 배운 섬세함과 사람들에게 가치를 전달하려는 마음이, 개발에서도 같은 방식으로 구현..
static 과 JVM 메모리 모델을 이해해보자!
2024. 9. 1. 00:13
Language/Java
객체지향 프로그래밍 시작하기Static 과 메모리의 관계를 알아보도록 해보자이 글의 목표는 static 키워드와 메모리 관계에 있어서 이해를 돕고자 또한, JVM 에 사용하는 메모리 모델을 통해 자바 프로그래임이 어떤식으로 동작하는지에 대한 원리를 학습하는것을 목표로 합니다. 1. static 과 메모리의 관계2. static 멤버 들의 접근 방법3. private 생성자와 static과의 관계4. JVM 이 상요하는 메모리 영역5. class, object, instance의 상호관계 1. static 과 메모리의 관계메인(시작) 클래스는 왜 객체 생성(new)없이 실행이 되나요?public class StaticTest { public static void main(String[] args) {..
아파치 스톰 과 아파치 카프카
2024. 7. 16. 20:59
잡담
안녕하세요, 요즘 야근에 푹 빠져 살고있어서 오랜만에 글을 적습니다.예전부터 늘 공유하고 싶었던 아파치 스톰과 카프카의 장단점에 대해 적어보도록하겠습니다.저는 FDS(이상거래방지 시스템) 과 관련된 솔루션 회사에 근무를 하고 있고,제가 오기전부터 대용량 처리를 위한 파이프라인의 한 축을 카프카 아닌 스톰을 데이터 스트림의 실시간 처리를 위해 채택을 했습니다.이런식으로 데이터가 오갈때 log 를 수집하기도 하며 룰탐지를 통해서 미리 예방할수도 있습니다. 요즘은 금감원에서 더더욱 책임을 은행에 묻고 있어서 더 견고하게 만들어야하는 경우가 생기고있습니다.왜 카프카 가 아닌 스톰을 했는지 알지는 못하여서 둘의 차이점을 살펴보면서 왜 도입하게 되었는지 알아보도록하겠습니다.먼저, 대용량 처리에 필수적인 요소인..
Database Lock 이란?
2024. 6. 18. 21:33
DB
제가 일하고 있는 분야에서 RDBMS 에 보단 NoSql(Elasticsearch) 를 주로 쓰다 보니 공부하는 겸 공유를 하게 되었습니다.예전부터 궁금했던것들중에 하나가 선착순으로 지급해주는 이벤트성은 DB에서 어떻게 처리할까? 였습니다. DB lock에서 어느정도 궁금증을 해소하게 되었습니다. 혹시나 저처럼 이러한 생각을 한 분들은 이미 DB lock에 대해서 공부를 하셨다고 생각이 들지만 그럼에도 글을 공유하게 되었습니다.DataBase는 데이터를 영속적으로 저장하는 시스템입니다. 즉 같은 자원에 대해서 동시에 접근하는 경우가 생길 수밖에 없습니다. Lock 이란 트랜잭션 처리의 순차성을 보장하는 방법이라고 했습니다. 트랜잭션이란 DB의 나누어지지 않는 최소한의 처리 단위입니다. 2가지의 lock ..
컬렉션 API 개선 - modern java in action
2024. 6. 18. 19:52
Language/Java
큰틀에서 챕터 8은 아래와 같은 내용을 공유한다.컬렉션 팩토리 사용하기리스트 및 집합과 사용할 새로운 관용 패턴 배우기맵과 사용할 새로운 관용 패턴 배우기앞서, Modern Java in Action 에서는 챕터 8~10 까지는 Part 3으로 ‘스트림과 람다를 이용한 효과적 프로그래밍’ 으로 분류를 합니다.책의 저자는 ‘컬랙션 API 가 없었다면 자바 개발자의 삶은 많이 외로웠을 것’이라고 표현합니다.책에서 표현 하듯이, 거의 모든 자바 애플리케이션에서 컬렉션을 사용하고, 지금까지 컬렉션과 스트림 API를 이용해 데이터 처리 쿼리를 어떻게 효율적으로 처리할 수 있을지 살펴보려고 합니다.컬렉션 API 에는 성가시고, 에러를 유발하는 여러 단점이 존재합니다.챕터 8에서는 자바 8,9 에서 추가되어 우리의 ..
N+1 문제 해결: Java 백엔드 개발자를 위한 데이터베이스 쿼리 최적화
2024. 6. 5. 17:57
DB
오늘은 JPA N+1의 문제 해결에 대해서 글을 공유해드리려고 합니다. * Java 백엔드 개발자를 위한 데이터베이스 쿼리 최적화에 적합한 내용입니다.개발자가 직면하는 가장 일반적인 성능 병목 현상 중 하나가 N+1입니다. 애플리케이션이 단 한 번의 쿼리로 동일한 결과를 얻을 수 있는데도 N+1번의 데이터베이스 쿼리를 수행할 때 발생합니다. 과도한 데이터베이스 Hit는 느린 응답 시간, 높은 서버 부하, 열약한 사용자 경험으로 이어질 수 있습니다. 원인을 함께 파악해 보고 개발자가 이러한 문제를 어떻게 완화할지에 대해서 다양한 전략과 기법에 대해서 적어보겠습니다.앞서, N+1 문제가 무엇인지 알아보도록 하겠습니다.N+1 문제란 무엇인가?애플리케이션이 개체목록(예시: 제품, 사용자 또는 게시물 목록)을 가..
Prompt Leaking(프롬프트 공격)
2024. 5. 28. 10:22
LangChain
개요방대한 인공 지능의 세계에서는 우리의 주의와 보호가 필요한 도전과 위협이 발생합니다.LLM 모델을 기반으로 서비스를 개발할때 프롬프트 자체를 잘 작성 해야된다는것을 깨닫게 될것입니다. 많은 노하우가 필요하고 수많은 시도를 통해서 잘 짜여진 프롬프트를 만들게 됩니다. 코드만 지적 재산권이 아닌 프롬프트 자체가 하나의 지적 재산권입니다. 프롬프트 공격 방법중에서 프롬프트 전체를 출력하게 하는 공격 방법을 Prompt Leaking 이라고 합니다. 공격으로부터 방어해야 하는 모델에 필수적인 비밀 정보에는 다음이 포함된다는 점을 기억하세요: 민감하고 독점적인 프롬프트: 기업이 인공지능 모델에서 원하는 결과를 얻기 위해 사용하는 특정 프롬프트입니다. 이러한 프롬프트에는 회사의 경쟁력을 유지하기 위해 보호해야..
Langchain 과 SerpApi 로 챗봇의 웹 기능 강화
2024. 5. 16. 11:04
LangChain
LangChain이 AI 프로젝트를 위한 원활한 웹 검색 기능을 통합하여서 chatGPT의 기능을 향상 시키는 방법을 알아보자. 개요.요즘 들어 chatGPT-4 그리고 곧 나올 5버전까지 사용자에게 예전보다 더 정확하고 편리한 정보 및 답변 지원을 제공하면서 더더욱 인기가 많아지고 있습니다. 챗봇은 더욱 더 지능적이고 뛰어난 기능을 갖추고 있습니다. 여기서는 SerpAPI와 LangChain을 사용하여서 웹 검색 기능으로 ChatGPT를 향상 시키는 방법을 살펴보겠습니다. 필요한 종속성을 설치 하는 방법, LangChain과 SerpAPI의 기본 사항을 이해하는 방법, 그리고 이러한 도구를 사용하여 챗봇의 역량을 강화하는 방법을 알아보도록 하겠습니다. 먼저 랭체인과 openai dependecies를 ..
고급 RAG 에 대해서 (Advanced RAG : Multi-Query Retriever Approach)
2024. 5. 15. 18:52
LangChain
안녕하세요, 랭체인이 작년부터 Hot해지고 서서히 여러사람들에 알려지고있는거같습니다.또한, 요즘 AI 트렌드에 따라 국내 많은 회사들이 랭체인을 사용해서 AI 챗봇을 만들고 있는것으로 알고있습니다. 랭체인에 접하시진 얼마 안되신분들을 위해 좋은 자료를 공유해보도록하겠습니다. 기본적인 RA(Retrieval-Agumented Generation)에 기본적으로 알고 계신다는 전제 하에 글을 적어보도록 하겠습니다. 우리가 알고 있듯이 단순 검색 증강 생성 즉 RAG는 2단계 프로세스를 통해 최종 결과를 생성하는데요, 먼저 쿼리를 임베딩 벡터로 변환한 다음, 미리 계산된 벡터 데이터베이스에 대해 유사성 검색을 수행하여 가장 관련성이 높은 문서를 검색하게됩니다.관련성이 있는 문서를 검색한 후 RAG 시스템은 해..
프롬프트 예시들
2024. 4. 5. 11:30
LangChain
다양한 작업을 수행하는 예시들을 통해서 좀 더 핵심 개념을 살펴보도록하겠습니다. 이번 글에서 이 글을 읽으시는 개발자님들의 관심이 될만한 주제이니 끝까지 읽어주시면 감사하겠습니다. 요즘 인스타 혹은 유튜브 보면 생성형 ai에 대한 홍보성 글과 유용한 정보들이 올라오고있습니다. 가령 유투브 비디오를 글로 요약해주거나 논문을 요약해주거나 이력서를 대신 써주는 사이트들이 있습니다. 이러한 서비스들이 어떤 식으로 프롬프트에서 작동되는지 예시로써 보겠습니다. 1. 문장요약 문장요약은 자연어 생성의 대표적인 작업 중 하나 입니다. 문장 요약은 여러 주제와 도메인을 포함합니다. 사실, 언어 모델의 가장 유망한 어플리케이션 중 하나는 기사와 개념을 빠르고 읽기 쉽게 요약할 수 있는 능력입니다. 프롬프트를 사용하여 간단..