전체 글

꾸준히 성장하는 개발자 WONOW 입니다. 🤗
누워서 SNS를 보고 있다보면 초등학생 아이가 게임을 만들었다.. 등의 이야기를 심심치 않게 볼 수 있다.처음엔 회의적으로 바라보았다. 어차피 AI 로 개발하면 유지보수도 안 되고, 오류 터지면 누가 고치는 거야?날이 지날 수록 영상으로 올라오는 개발 결과의 퀄리티가 점점 높아지고..같이 일하던 동료가 모든 도메인을 하루만에 3레이어를 헥사고날로 다 바꿔서 온 날이게 강한 트리거로 작동했다. 음.. 나도 웹에서 물어만보지말고 요즘 유행한다는 커서를 써볼까?첫 커서 사용은 되게 불만족스러웠다.코드가 중간에서 끊기고, 코드의 전체적인 맥락을 이해하지 못하며이미 앞단에서 Valid 에서 다 거쳐서 올라왔는데 서비스단에서 다시 한번 쓰잘데기 없는 검증 로직을 끼워놓거나객체 지향언어에서 객체지향성을 무시하며 코드..
ThreadLocal 정리ThreadLocal 은 각 쓰레드마다 독립된 변수 값을 저장하게 해주는 클래스다.즉 쓰레드마다 다른 값을 가지게 해준다. private static final ThreadLocal threadLocal = new ThreadLocal();threadLocal.set("A"); // 현재 쓰레드에 값 저장threadLocal.get(); // 현재 쓰레드의 값 가져오기threadLocal.remove(); // 반드시 정리 필요 주의 사항1. 비동기 코드 / 쓰레드 변경 구간에 주의해야한다.ThreadLocal 은 쓰레드 단위로 값이 저장이 된다. 그래서 다른 쓰레드로 넘어가면 값이 공유되지 않는다.ThreadLocal local = new ThreadLocal();loca..
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 등이..
저는 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그냥 데이터 주고 받는 통로채팅이..
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_