분류 전체보기 418

LangChain study 1주차

랭체인 스터디 1주차 (~ CH01까지)공부 출처위키독스: 랭체인 공식 문서범위1~3장내용1장: 환경 설정Python 환경 설정 및 프로젝트 클론2장: OpenAI APIOpenAI에서 API 키 발급받기3장: LangChainSmithLangChainSmith API 키 발급 및 환경 설정4장: OpenAI API 사용객체 생성객체 생성 시 옵션값 지정 가능: llm = ChatOpenAI( temperature=0.1, # 창의성 (0.0 ~ 2.0) model_name="gpt-4o", # 모델명 )- **흥미로운 점**: 일반 ChatGPT 서비스는 이러한 옵션값을 조정하지 않음. 실제 서비스에서는 어떻게 동작할까? - ..

AI 2025.06.10

부하테스트 개념 및 작업 흐름 정리

처리량(throughput) -> 서버가 1초 안에 최대 수용가능한 요청수지연시간 (letency) -> 요청 응답시간부하테스트 주의점부하테스트를 할때는 부하테스트 하고자 하는 환경과 분리된 곳에서 하는 것이 좋다. 부하테스트 툴도 결국 컴퓨터 자원을 쓰기 때문에 타겟 서버의 부하를 트래킹 하기 힘들기 때문개인용 컴퓨터로 하면 안된다.개인용 컴퓨터는 컴퓨터 자체적으로 부하를 발생시킬 때 제한이 걸릴 때가 종종 있다. EC2 같은 클라우드서버 띄워서 사용하는 것을 권장.병목지점에 스로풋이 곧 전체 스로풋이라고 좀 보수적으로 보는 관점을 권장.적절한 부하 테스트 시간모니터링 환경에 맞게 최소 부하테스트 시간 설정프로덕션 환경과 비슷한 데이터 세팅부하테스트 흐름부하테스트 흐름 인식트래픽 예측에 대한 불확실성이..

카테고리 없음 2025.05.31

Google Cloud Model Armor 정리

Google Cloud에 Model Armor라는 서비스가 나왔습니다.최근 SK사태 (물론 AI관련 보안이슈는 아니였지만..)를 통해 보안에 대한 경각심이 일깨워지는 요즘... 재밌는 서비스가 있어서 정리해 봅니다.출처 : https://cloud.google.com/security-command-center/docs/model-armor-overview?hl=koModel Armor?Google Cloud의 Model Armor는 생성형 AI 애플리케이션의 보안과 안전성을 강화하기 위한 완전 관리형 서비스입니다. 이 서비스는 대규모 언어 모델(LLM)의 프롬프트와 응답을 분석하여 다양한 보안 및 안전 위험 요소를 탐지하고 차단합니다Model Armor의 주요 기능모델 및 클라우드 독립성Model Arm..

AI 2025.05.02

DB Replication 개념 (feat. MySQL)

DB Replication?운영중인 대규모 애플리케이션 환경에서는 데이터의 지속적인 가용성과 신뢰성이 매우 중요하기 때문에 원본 서버와 복제 서버 간의 데이터 동기화는 필수이다.바이너리 로그를 저장하는 방식은?Replication은Source 서버에서 발생하는 모든 데이터 변경 사항을 Replica 서버로 복제해서 두 서버 간의 데이터 일관성을 유지하는 메커니즘이다. 이러한 과정은 주로 바이너리로그를 기반으로 이루어진다.바이너리 로그는 Source서버에서 실행된 모든 데이터 변경 쿼리를 기록하는 역할을 한다. MySQL에서는 바이너리를 저장하는 방식으로 Row, Statement, Mixed의 세가지 방식을 제공하며, 각 방식은 고유한 장단점을 가지고 있다.Rowrow 방식은 데이터베이스의 각 행별로 변..

DB 2025.02.27

JS 비동기 프로그래밍 최종 정리

비동기 프로그래밍비동기 프로그래밍 탄생 배경CPU와 I/O 속도의 차이CPU는 매우 빠르게 연산을 수행하지만, 디스크, 네트워크, DB 등 I/O 작업은 상대적으로 느림.동기(Synchronous) 방식으로 실행하면 I/O 대기 시간 동안 CPU가 낭비됨.멀티태스킹과 병렬 처리의 필요성하나의 요청이 완료될 때까지 기다리면 다른 작업을 동시에 처리할 수 없음.여러 작업을 동시에 실행하기 위해 스레드 기반의 멀티태스킹이 등장.하지만 스레드 생성 비용이 높고, 컨텍스트 스위칭이 성능 저하를 초래함.이벤트 기반 & 논블로킹 방식 등장효율적인 리소스 사용을 위해 이벤트 루프(Event Loop)와 콜백 기반의 비동기 처리가 개발됨.대표적으로 Node.js, JavaScript Promise, Java의 Compl..

JavaScript 2025.02.14

내가 체크 해 봐야할 API들의 보안 취약점들

OWASPOWASP 웹 애플리케이션 보안을 목표로 무료 콘텐츠와 도구를 만드는 비영리 재단. 가장 일반적인 API취약점 10가지를 정리하여 발표했다.정보 누출API응답, 코드 저장소, 검색 결과, 소셜 미디어, 대상의 웹사이트, 공개 API 디렉터리 같은 공개된 소스를 통해 누출될 수 있다.불필요하게 자세한 응답메시지"제공된 사용자 ID가 존재하지 않습니다"라는 메시지를 통해 다른 ID를 넣어서 계속 시도를 했는데 만약 "잘못된 비밀번호입니다"라는 메시지가 나왔다면? 아! 이 메시지를 뱉으면 ID는 있는데 비밀번호만 찾으면 되겠네?! 하는 힌트를 주게된다.API응답시 사용자 이름을 반환하여 공격자가 응답을 통해 취한 사용자 이름으로 무차별 비밀번호 대입, 비밀번호 스프레이등으로 로그인시도BOLABOLA(..

보안 2025.02.03

API 침투 프로세스

API 보안테스트 범위를 정하기 위해서는 방법론, 테스트 규모, 대상 기능, 테스트 제한, 보고서 작성 요건, 개선 테스트 진행 여부같은 몇 가지 요인을 결정해야한다.API 침투 순서1. 권한 받기API 공격하기 전 공격범위를 명확히 정하고 정해진 시간동안 클라이언트를 공격해도 된다는 권한 부여 계약서에 서명을 받아야한다. 즉 해커가 아닌 보안태스트를 위한 침투계획에는 명확히 대표혹은 챔임자와 상의하에 권한을 부여받고 어떤일이 벌어질지 어떻게 침투할지에 대한 조율 및 협의가 이루어져야한다.2. API 테스트의 위협 모델링위협 모델링은 API 공급자에 대한 위협을 모델화하는 프로세스입니다. 관련된 위협을 기반으로 API 침투 테스트모델을 만들어 해당 공격에 대응책을 마련할 수 있도록 위협들을 모델링하는것이..

보안 2025.01.20

11/27일 부산 센텀 디지털 워크

AI시대에 개발자로 살아남기인공지능 증강 개발지금 프로그래머들의 위치? 자동차가 발명되기 전 마차를 운전하던 마부의 위치와 같다. 곧 자동차의 시대가 오고있음을 예감한 지금 어떻게 생존해야할까?야생 학습이제 생성형 AI의 발달로 어떠한 기술에 대해 정통화된 커리큘럼에 대한 중요성은 점점 사라지고 있다. 또한, 어떠한 기술이 업로드되고 정석적인 튜터가 나오기전에 이미 새로운 버전이나오거나 상위벨류의 기술이 나오게 되낟. 그렇기 때문에 앞으로는 그때 그때 필요한것 배우고싶은것을 생성형 AI로 빠르게 시작하여 경험을 먼저 쌓아나가는 것이 중요하다.효율적인 야생학습법협력적 활용기술블로그, 스터디 등등 내가 야생학습 한 것에 대한 아웃풋을 만들어라비순차적필요한것을 그때그때 학습하고 빠르게 나아가라 (사전을 처음부..

카테고리 없음 2024.11.27

2024부산 센텀 디지털 테크밋업 "센디톡"참여

부산에는 오프라인 네트워킹기회가 잘 없는데 이런 태크밋업이 열려줘서 부산에 계시는 여러 개발자분들과 소통할 수 있는 장이 열려서 너무 좋다.평범한 개발자가 aws자격증을 12개를 따면 벌어지는 일들(두실청년 김태우 님)https://dev.classmethod.jp/articles/epilogue-in-korean-aws-12x-certified/위 블로그에 발표하신 내용이 잘 정리 돼 있었다. 발표를 들으며 느낀 점은 회사 혹은 혼자서 고민하고 공부하는 것도 물론 좋지만, 다양한 개발 행사들을 참여하고 다양한 개발자들과 소통하면서 지금 내가 어디로 가고 있는지 나는 어떤 점이 부족한지 에 대한 메타인지를 키워가는 점이 커리어에 좋은 영향력이 생긴다는 점이다.그렇게 다양한 사람들이 하는 고민을 들어보며 ..

카테고리 없음 2024.08.17

useContext 쭉쭉 파보기

리엑트의 Context리엑트는 트리구조를 갖고 있다. 그래서 부모가 자식에게 데이터를 물려줄때 props로 데이터를 넘겨주는데 먼 자식일수록 코드가 복잡해 진다. 첫째한테 알려주고 둘째한테 할려주고.. 셋쩨...어쩌구.. 이렇게 멀어질수록 코드가 복잡해 진다. 이걸 props drilling이라고 함이때 Context를 사용하면 props전달 없이도 선언한 하위 컴포넌트 모두에서 원하는 값을 사용할 수 있다. 사용법1. 생성import React, { createContext, useState, useContext } from 'react';const MyContext = createContext();2. 사용const MyProvider = ({ children }) => { const [value,..

React 2024.06.27