목록STUDY (40)
일지
추후에 oracle db 에 대한 쿼리를 만들어야하거나, 관련 도메인 질문을 할 때 "xxx 관련 컬럼 찾아줘!"라고 LLM에 질문을 하면 agent가 RAG에서 관련된거 쫙 긁어와서 뭔가를 생성해줘야하는 상황임. 그냥 뭐 지식을 카탈로그화 하고싶다는거임그래서 전부 넣을 수는 없으니 자주사용하는 table이랑 column 을 Milvus에 냅다 집어넣고 쿼리를 계속 던저봤음근데 각각의 column 들이 표준화 되어 있지 않고 번역이 되어 있지 않은 상태여서 좀 처참했다. 초기의 컬랙션 스키마는 아래처럼 설계를 했었음idschema_{table}_{column}vector(embedding)contents를 임베딩table{table}column{column}comment{comment}contents{t..
일단 이전의 방식으로 로그를 분석해서 어느정도 데이터를 뽑아내는데 성공하긴 했음근데 문제는 전체 로그가 너무 많고 SQL 파싱 연산을 하는데에 시간이 너무 많이 걸린다는것..내 사무용 PC로는 너무 느리다.일단 work flow는 다음과 같음1. 특정 시간의 log의 metaData 수집 (log key값)2. 해당 metaData의 log key값을 통해서 특정 로그의 sql 문을 전부 수집3. 각 sql에 대해서 sqlglot으로 파싱4. 취합하여 pandas로 분석1,2에 대해서는 속도가 그렇게 느리지는 않은것 같은데3,4부분에서 속도가 확 느려지는게 느껴진다. 아니 사무용 PC 좀 바꿔줬으면 좋겠다. RTX달린거로다가..회사는 요즘 돈 잘버는 것 같은데 모니터도 꾸진거 쓰고있고 좀 그렇긴함. 아무..
제미나이 이놈이랑 대화를 하면 뭔가 인사이트를 얻는것 같으면서도 실제로 적용을 해보면 생각대로 안되는 경우가 많은 것 같다.설 연휴동안 이것저것 생각하고 따로 개발해둔거 실제로 올렸더니 생각대로 안되서 살짝 실망한 상태임(생각해보면 내가 멍청이임)하지만 결과를 볼 때 까지 계속 해야할거같아서 다시 시도이벤트 로그를 LLM이 이해할 수 있도록 명세화를 해야함.로그에는 여러가지 정보가 있지만 일단 oracle sql이 찍히는게 주요한 내용이라 그거 위주로 생각을 해봤는데 상황은 아래와 같음 각 이벤트에는 적게는 10개 많게는 수천개의 DML이 발생함해당 시스템에서 사용되는 테이블은 수백개가 되지만 실제로 사용되는 주요 테이블은 100개 미만임이벤트의 종류는 대략적으로 3천개가 넘음초당 500~1000개의 이..
아니 Copilot은 무적인가? 그냥 대충 말해도 찰떡같이 말하고 순서도를 그려주는 코드를 작성해준다. 이렇게까지 해주는데 내가 공부를 할 필요가 있을까 생각이 든다. 1. newInstance()시점평소에 소스코드만 보고 설정값은 안봤는데 여기서 Transaction에서 순서가 끊어짐을 느꼈다.분명 DataSource에서 connection은 가지고 오는데 남는것은 session만 있는게 아닌가? 그래서 하나씩 끼워맞추면서 이해는 했는데 이부분 정리가 필요한 것 같다. SqlSessionManager에서 Connection을 가지고 오는 순서도를 그려달라고 했다.일단 여기까지는 문제가 없다. 문제는 getConnection부분이다. build나 create같은거는 application 시작 시점에 그대..
연휴라서 시간이 남는다.이것저것 하느라 바빠서 이제서야 고민해볼 시간이 생긴것 같다.. 아직도 의문인게 왜 회사에서 직접 프레임워크를 만들어쓰는지다. 뭐 특별한게 있으면 모르겠는데 몇몇 부분 빼면 죄다 Springboot에서 구현이 가능함Application에서 DB접속 관련해서도 라이브러리를 그냥 사용하지 않고 상속받아서 커스텀을 한다. 의미있는지는 모르겠는데 모니터링 용도로 그렇게 만든 것 같다. DataSource를 상속받아서 직접 만들고, Apache Common Pool을 가져다가 GenericObjectPool을 이용해서 커스텀이 되어있는 상태다. 회사소스를 가지고 올 수 없기 때문에 대충 Copilot한태 만들라고 했다. Custom GenericObjectPool 구현import org.a..
Promise.all ~~~) 이렇게 해서 exception handling해도 되는데 한번에 값을 다 받와서 사용하려고 await 붙이면 그렇게 할 수도 없고 try - catch로 해도 소용이 없음 input * 400ms만큼 쉬었다가 홀수면 resolve, 짝수면 reject나게 만든 Promise들에 대해서 실행을 시킴 function promise(value) { return new Promise((resolve, reject) => { setTimeout(() => { if (value % 2 === 1) { resolve(`${value} -> PASS`); } else { reject(`${value} -> FAIL`); } }, value * 400); }) } async function..
영화 상영 시간표 사용해서 뭔가 만들어보고 싶은게 생겼었음 영화 정보라 던가 meta정보는 open api가 있는데 상영 스케쥴에 관한거는 내가 못 찾은건지 없었던거같음 그래서 다른사람들 정보를 찾아보니깐 다들 그냥 상영관(시지븨, 메박, 롯머)에서 크롤링 하더라거 https://kobis.or.kr/kobis/business/mast/thea/findTheaterSchedule.do KOFIC 영화관 입장권 통합전산망 :: 상영스케줄 kobis.or.kr 이렇게 이쁘게 나와있는게 있었음.. 문제는 API로 안해주고 크롤링을 해야한다는 점임 그리고 url 쿼리로 값을 뽑을 수 없고 동적으로 클릭 하나씩 해야한다는점 여기서 광역 선택 기초 선택 상영관 선택 이렇게 3번 눌러야 동작을 함 클릭 하고 바로 나..
일반 java proxy 말고 CGLIB에서 제공하는 proxy사용법 1. MethodInterceptor를 구현 methodProxy 객체가 있는것 말고는 여기까지는 비슷함 그리고 method.invoke보다 저게 더 빠르다고 하는데 몰루겠슴. @Slf4j public class TimeMethodInterceptor implements MethodInterceptor { private final Object target; public TimeMethodInterceptor(Object target) { this.target = target; } @Override public Object intercept(Object obj, Method method, Object[] args, MethodProxy ..