전체 글

꾸준히 성장하는 개발자 WONOW 입니다. 🤗
Git SubmoduleGit Submodule 은 Git 레포지토리 내에 다른 레포지토리를 두는 것으로, 모듈화에 필요한 것들을 넣어두면 편하게 사용할 수 있다.일단 파이파이, 메이븐 등에 안올려도 되고, Git 이여서 익숙하고 편하다. 그래서 선택했다. 개요Submodule 에 엔티티 등 서브모듈들을 정의했는데, 변동사항이 많아서 인터페이스로 최소한으로 남겨두고 구현체에서 변동사항만 구현하고 나머지는 정의하고 싶었다. // 서브모듈@MappedSuperclass@Getter@NoArgsConstructor(access = AccessLevel.PROTECTED)public abstract BaseUser { @Id @GeneratedValue(strategy = GenerationType...
CS
의문다른 프레임워크를 하며 의문점이 생겼다. 다른 프레임워크들은 직접 쿼리문을 쓰거나 ORM 등을 이용하여 쿼리를 작성하여 객체의 필드값을 하나하나 빼서 저장을 하는 경우가 있는데, Spring 에서 아니, JPA/Hibernate 에서는 @Getter 등이 없어도 repository.save(entity) 만 하면 값이 저장이 된다. 어떻게 이게 가능한 걸까? @Getter 없이 어떻게 값을 읽고 전부 저장할까?Hibernate 는 기본적으로 엔티티의 상태를 읽고 쓸 때 Java 의 리플렉션 기능을 이용한다. 예를 들어 Entity 클래스 필드에 @Id 같은 어노테이션이 붙어 있으면, Hibernate 는 해당 필드에 직접 접근 하여 값을 읽고 쓴다.이러한 방법이 있기에 Getter, Setter 등이..
짧으면 짧고 길면 긴 위커밋과의 여정을 마치며 글을 씁니다. 위커밋은 genDoc(문서 AI Agent), 노쇼핑(노쇼 상품 중개 서비스), 다미(AI 목표 관리) 등의 서비스를 만드는 회사입니다.저는 위 프로젝트들에 상당한 관심이 생겨서 위커밋에 지원하고 인턴으로 합류하게 되었습니다. 인턴 생활첫 인턴 생활에서 가장 집중했던 것은 회사 코드에 바로 익숙해지는 것이 아니라 이 회사가 진정으로 원하는 것이 뭔가를 알아내는 것이었습니다.서비스를 100% 이해하고 BM 과 계열사, 어떤 것을 준비하고 어떻게 소개를 하는지에 대해서 먼저 파악을 했습니다.코드는 천천히 익숙해지면 됩니다. 가장 중요한 것은 본질인 서비스입니다. 인턴 기간에 대표님에게 이 서비스가 개발이 느려지는 이유를 말하고 개선점과 저를 믿고 ..
저는 Spring 을 쓸 때 손이 엄청 바빠져요엔티티,, 컨트롤러,, DTO,,, 서비스,,, 하나하나 만드느라 엄청 귀찮거덩요아 이거 누가 대신좀 해줬으면 좋겠다... 했는데...나 개발자지?? 내가 만들 수 있지?? 그래서 만들었습니다.Spring CRUD 생성기Python 기반으로 되어 있으며 pip 로 깔아서 사용할 수 있어요3Layer, Hexa 일단 이 두개 대중적인거 위주로 해놨습니다. https://github.com/wonowonow/spring-boot-crud-generator GitHub - wonowonow/spring-boot-crud-generator: ✍️ Spring Boot 단순 crud 작업 귀찮아서 만들었습니다.✍️ Spring Boot 단순 crud 작업 귀찮아서 만..
WebRTC 란실시간 오디오나 비디오 데이터 통신을 가능하게 해주는 오픈 소스 프로젝트다 핵심 기능실시간으로 오디오랑 비디오를 전송 할 수 있다.P2P 통신을 통해서 브라우저끼리 직접 데이터를 주고 받을 수 있다. 이거 쓰려면 시그널링 서버가 필요하다 이게 뭐냐서로 연결해서 정보 주고 받기 위한 webSocket 등이다. 와 그럼 이거 어디서 쓰냐google Meet, discord 등에서 쓴다.아 이해했다. 그럼 어떻게 동작하냐일단 기본적으로 세개다. getUserMedia카메라, 마이크 가져오는 거얼굴이나 목소리 받아올 때 쓴다.RTCPeerConnection이게 핵심브라우저끼리 직접 연결해서 주고받게 해준다오디오, 비디오 다 여기서 처리된다.RTCDataChannel그냥 데이터 주고 받는 통로채팅이..
임베딩이 모냐 임베딩은 여러 개념이 있는데 우선은 word_embedding 을 기준으로 설명하려고 한다.사람은 king - queen 이라는 두 단어를 봤을 때 유사한 단어라고 인지를 한다.하지만 컴퓨터는 이걸 못한다. 그래서 AI 가 이 단어가 어떤 단어에 근접한지 판단을 해서 점수를 적어, 좌표에 놓는다. 예를 들면 이런식이다. 성별에 관한 용어임?남자임?여자임?멋있음?킹0.91-11퀸0.9-111 ㅋㅋ 이걸로 하나하나 정해서 좌표에 던져 놓는다. 저 질문 하나하나를 차원이라고 한다. Ollama 의 임베딩 모델은 1024text-embedding-3-small 은 1536 개 였나 그렇다. (large 하면 더 많아짐) 어쨌든 이렇게 차원이 있는데 이 차원이 많아질 수록 당연히 임베딩하는데 돈이..
ToolCalling 이란?도구 부르기다. LangChain 과 LangGraph 에서 통용되는 개념이다LLM 이 어떤 도구를 쓸지 알아서 정해서 그 도구를 사용한다는 것이다.알아보자Tool도구다.무슨 도구냐 이 도구는 뭐든지 될 수 있다.API 호출, 요즘 유행인 MDC, 심지어 LangChain 과 LangGraph 또한 도구가 될 수 있으며, 날짜 계산, 라이브러리 등등 모든 것이 도구가 될 수 있다.하지만 지켜야 될 것이 있다 단일 책임의 원칙 이건 지켜야된다. 그래야 도구로써 사용하기에 적합하게 된다. 도구는 세가지 정보를 가진다.이름: 도구의 이름을 정한다. (ex. 날씨 도구)설명: LLM 이 이 설명을 보고 도구를 고를 수 있게 설명을 적어야한다. (ex. 사용자가 날짜를 입력하면 해당 날..
LangGraph 위주로 작성하겠습니다.둘은 철학 자체가 다르다⛓️‍💥 - 체인은 서로 순서대로 연결이 되어있다.즉 선형적으로 이루어져있다. 그렇다. 랭Chain 은 선형적인 구조를 이룬다.파이프라인을 만든다는 것이다. Graph - 그래프는 각자 연결이 되어있다.알고리즘 풀면서 그래프 문제 많이 풀었을텐데 그 그래프 맞다.즉 그래프 문제 풀면서 사이클 조정이나, 우선 순위를 조정했듯이 랭Graph 도 상황에 따라 세밀한 조정이 가능하다!!이게 무슨 소리냐? 파이프 라인이 아닌 각 노드에 따라서 자동으로 왔다갔다 한다는 것이다!!이해가 됐으려나? LangGraph 단어 설명Langgraph 는 다중 에이전트 프레임워크 입니다.사이클 지원과 세밀한 제어가 가능하며 내장 지속성 기능으로 상태 및 흐름을 정..
6버전 기준으로 작성되었습니다.Clerk 란?인증과 사용자 관리를 제공하는 SaaS 서비스이다.구글, 깃허브, 페이스북, X, 노션 등..OAuth, 이메일/비밀번호, Magic Link, Web3 Wallet 등 다양한 로그인 방식을 지원한다.Next.js, Remix, React Native 등과 쉽게 통합을 할 수 있어서 스타트업, 1인 개발자 등 프로토타입 개발 환경에서 개발 시간을 단축시키는 데 도움을 줄 수 있다.물론, 각 Provider 마다 어느정도 설정은 해줘야한다. 이건 Clerk 에서 못한다. Clerk 설정 이 설정을 기본으로 하고 시작 Personal Information 의 Name 은 하는 순간 귀찮아지니 생략저게 뭐냐면 Google 로그인 시 구글의 First Name, La..
wonow_
wonow_