본문 바로가기

소프트웨어-이야기

AI 활용 - 자연어로 데이터 분석하기 최근에 학습한 AI 실습에서 인상깊었던 점을 정리하고자 한다. 기존에는 데이터를 분석할 때, 숫자로 된 결과를 해석하기 위해 복잡한 차트를 만들고, 시각화를 했다. 그리고 이를 해석하여, 결론과 대응안을 준비했다. 그런데 LLM을 활용하면, 이 과정의 일부가 생략되고, 단순해진다. 숫자로 된 결과를 자연어로 변환한 후, LLM에게 질문하면, 바로 결론과 대응안을 얻을 수 있다. 기존의 분석 과정1. 데이터프레임으로 결과 확인 cluster avg_spend orders_per_person days_since_last_order0 1 48.32 1.36 384.371 2 202.34 ..
[GCP] BigQuery와 Gemini Google Cloud console에서 BigQuery를 사용할 때, Gemini를 통해 도움을 받을 수 있다.1. SQL의 의미 이해하기2. 필요한 SQL문 제안받기 간단하게 2가지를 지원받을 수 있다. 실제 동작 방식은 아래 유튜브를 참고하자. 실습을 하고 싶다면, cloud google을 신청해보자. https://www.cloudskillsboost.google/paths/236/ Google Cloud를 위한 Gemini 학습 과정 | Google Cloud Skills BoostGoogle Cloud 파트너와 초보자를 위한 무료 교육 및 자격증을 제공하는 플랫폼인 Google Cloud Skills Boost에서 학습하고 배지를 획득하세요. 지금 살펴보세요.www.cloudskillsboo..
ArchUnit: Java 아키텍처 테스트 라이브러리 (0) 애플리케이션 개발 표준팀에서는 몇가지 이유로 애플리케이션 개발 표준을 수립한다. 코드 품질과 일관성 확보 협업 효율성 향상유지보수성 확보개발속도 향상의사결정 비용 절감 예를 들어, architecture을 구성하는 요소들의 layer, 네이밍, 의존관계에 대한 규칙을 정의한다. (1) 애플리케이션 개발 표준의 한계초기에는 애플리케이션 개발 표준이 잘 지켜질 수 있다. 그러나 예외 케이스가 나와서 표준이 변경되거나, 조직 구성원에 변화가 생기게 되면 이를 지키기 어려워진다. 모든 구성원들이 지난 히스토리를 기억하며 애플리케이션을 개발하는 데에는 한계가 있기 때문이다. 그 영향으로 애플리케이션에서 서로 다른 이름 패턴을 사용하고, 패키지 구성과 의존관계가 일정하지 않은 문제가 발생하게 된다. (2) ..
prompt injection: 바이브코딩과 신규 보안 취약점 prompt injection 이란?프롬프트를 중간에 위장해서, AI 애플리케이션이 잘못된 정보를 유출하거나 의도하지 않은 동작을 하게 하는 사이버 공격을 말한다.https://docs.anthropic.com/en/docs/claude-code/security사례https://www.youtube.com/watch?v=hY-VTx7-c0g 참고 https://docs.anthropic.com/en/docs/claude-code/security Security - AnthropicHow we approach security Security foundation Your code’s security is paramount. Claude Code is built with security at its core,..
Claude Code 📒 Claude Code claude code은 claude 사에서 만든 AI 코드 작성 에이전트이다. 터미널에서 요구사항을 프롬프트로 입력하면, 실행계획을 작성한 후 이를 순차적으로 실행한다. 작업 시작 시, 프로젝트 폴더 권한을 Clade code에게 위임하게 된다. Cladue Code가 실행계획을 수행하며, 폴더 내의 코드를 변경한다. 🏃🏻‍♀️ 사용 사례 프롬프트 요구사항을 다음과 같이 작성하였다. 이를 바탕으로 Claude Code가 실행계획을 세우고, 실행계획을 수행하며 파일을 직접 수정한다. 프롬프트사용자가 더 수강할 수 있는 강좌를 편하게 조회할 수 있는 React 앱을 구축해야 한다. 요구사항 - https://abc.com 사이트에서 원하는 강좌를 조회한 후, 필터링을 해야한다..
코루틴 이해하기 (1) Thread의 한계 이해하기Thread Blocking스레드가 아무것도 하지 못하고 사용될 수 없는 상태를 말한다.스레드는 비싼 자원이다. 이런 상황이 반복되면 애플리케이션의 성능이 크게 떨어진다.var chatgptfuture: Future executorService.submit { // 오래 걸리는 작업 // 만약 API 호출이 1분이상 소요된다면, thread는 1분간 점유된다. }var result = chatgptfuture.get()executorService.shutdown() 한계스레드는 생성 및 작업 전환 비용이 높다.스레드는 보유한 스레드풀 개수만큼 병렬로 실행할 수 있다. 멀티스레드 프로그래밍으로 스레드를 재사용하더라도, Thread Blocking 을 피하..
claude desktop, playwright-mcp을 사용한 E2E 테스트 0. 시작하며 이전 프로젝트에서 playwright으로 E2E 테스트 도구로 사용한 경험이 있다. 그런데 테스트 코드를 작성하는게 굉장히 번거로웠다. 페이지에 접속하고, 버튼을 클릭하고, 기대하는 값이 출력되었는지 확인하는 흐름을 모두 코드로 작성해야했다. LLM으로 이를 자동화할 수 있기를 기대했는데, 드디어 유사한 기능이 출시되었다. 1. playwright-mcp이란? playwright-mcp 를 사용하면, 위의 동작을 프롬프트로 쉽게 제어할 수 있다. 다음 글에서는 claude desktop을 mcp client으로 사용하여, 프롬프트로 E2E 테스트를 진행하는 방법을 설명하고자 한다. GIF으로 살펴보는 시뮬레이션 위의 시뮬레이션은 "검색 페이지"에 접속하여, "검색" 이벤트를 실행한 후..
캐시 전략 종류와 사례 도메인과 아키텍처에 따라 캐시를 활용하는 방법이 다르다. 캐시 전략의 종류와 사례를 정리해보자. Look-aside애플리케이션에서 먼저 캐시를 확인하고, 캐시가 미스되면 DB 혹은 API를 호출하여 캐시를 해두는 방법을 말한다. 사용 사례:카디널리티가 높아서 모든 데이터를 캐싱해둘 수 없는 경우가 있다. 그러나 롱테일 분포에 의하여, 조회가 많이 되는 데이터는 한정적인 경우가 있다. 이럴 때에는 요청이 올 때 캐싱해두는게 현실적인 경우가 있다.예를 들어, 상품을 캐싱해둔다고 생각해보자. 수많은 상품 정보를 미리 캐싱해두는게 어려울 수 있다. 이 때, 자주 접근하는 상품 정보만 캐싱함으로써 효율적으로 캐싱을 할 수 있다.다른 MSA 서버에서 제공하는 데이터라 캐싱 갱신 시점을 모르는 경우에도 유용하다. 만..