본문 바로가기

Dev33

SQL EXPLAIN: 쿼리 성능 분석의 핵심 DB에서 쿼리를 실행할때, 아래의 단계를 거칩니다. 파싱: SQL 쿼리의 문법을 검사최적화: 가장 효율적인 쿼리 실행 방법 옵티마이저실행: 최적화된 계획에 따라 데이터를 처리 및 결과 메모리 로드결과 반환: 사용자에게 최종 결과 전달쿼리가 느릴 때, 어디서 문제가 발생하는지 파악하고 성능을 최적화하는 데 필수적인 도구로 EXPLAIN에 대해 알아보고자 합니다. 1. EXPLAIN 항목 설명id: 쿼리 내에서 각 작업의 순서를 나타냄. 숫자가 같으면 동시에 실행될 수 있는 작업이며 숫자가 다르면 숫자가 큰 것부터 먼저 실행select_type: 쿼리의 유형SIMPLE: 가장 기본적인 SELECT 문으로 서브쿼리나 UNION 등이 없는 단일 쿼리PRIMARY: 복잡한 쿼리(UNION, 서브쿼리 등)에서 가장.. 2025. 7. 15.
Nginx 성능 최적화 Nginx, 왜 성능 최적화가 필요할까요?Nginx는 Apache보다 가벼워 정적 페이지 처리에 특히 강한 웹 서버입니다. 하지만 기본 설정으로는 많은 사용자를 감당하기 어렵고\대량 트래픽을 처리하려면 시스템과 Nginx 설정을 조정해야 의도하지 않은 결과를 피할 수 있습니다.1. 시스템 설정 확인: ulimitNginx 설정 별개로 시스템 자체가 허용하는 최대 프로세스 수나 오픈 파일 수가 적으면 이미 file IO에서 손해ulimit 으로 현재 설정을 확인하고 늘려야함# 현재 ulimit 설정 확인ulimit -a특히 open files (오픈 파일 수)와 max user processes (최대 사용자 프로세스 수) 확인이 수치가 낮다면 /etc/security/limits.conf 파일을 수정해서.. 2025. 7. 13.
파이썬 에코시스템 왜 파이썬은 전 세계 개발자들의 선택이 되었을까?파이썬이 오늘날 가장 인기 있는 프로그래밍 언어 중 하나로 자리잡은 것은 단순히 "배우기 쉽다" 는 이유만으로는 설명할 수 없습니다. 물론 직관적인 문법과 낮은 러닝커브가 초보자들에게 매력적인 진입점을 제공한 것은 사실입이나파이썬의 진정한 힘은 풍부하고 다양한 생태계에 있습니다.생태계가 만들어낸 선순환 구조파이썬의 성공 비결은 언어 자체의 단순함과 생태계의 복잡함 사이의 절묘한 균형에 있습니다.빠른 프로토타이핑: 아이디어를 코드로 구현하는 속도가 빠름풍부한 라이브러리: 바퀴를 재발명할 필요 없는 Ready-to-use 솔루션들활발한 커뮤니티: 지속적인 개선과 새로운 도구들의 등장범용성: 웹 개발부터 AI까지 거의 모든 분야를 아우름이러한 요소들이 서로 맞물.. 2025. 6. 9.
JS에서 이터레이터와 이터러블 차이 IterableSymbol.iterable 메서드를 가진 객체 - 반복 가능한 객체//내장 이터러블const arr = [1,2,3];const str = 'STRING';const map = new Map();const set = new Set();//커스텀 이터러블const myIerable = { data:[1,2,3], [Symbol.iterator](){ let idx = 0; const data = this.data; return{ next(){ if(idx Iteratornext() 메서드를 가진 객체 - 실제 값을 하나씩 반환하는 객체// 이터레이터 직접 사용const arr = [1, 2, 3].. 2025. 6. 8.
Redux 직접 구현해보는 과정 Redux는 JavaScript 애플리케이션의 상태 관리를 위한 라이브러리로 널리 사용되고 있으며 그 핵심 개념은 매우 단순합니다.이번 포스트에서는 Redux의 핵심 기능을 처음부터 직접 구현해 보면서 그 동작 원리를 이해해보고자 합니다.Redux의 핵심 개념Redux는 다음 세 가지 핵심 원칙을 기반으로 합니다:단일 스토어(Single Source of Truth): 애플리케이션의 모든 상태는 하나의 스토어에 저장됩니다.상태는 읽기 전용(State is Read-Only): 상태를 변경하는 유일한 방법은 액션을 디스패치하는 것입니다.순수 함수로 변경(Changes are made with Pure Functions): 리듀서는 이전 상태와 액션을 받아 새로운 상태를 반환하는 순수 함수입니다.Redux .. 2025. 3. 17.
Pandas활용한 데이터 처리 최적화 팁 Pandas Python을 활용한 데이터 처리 최적화 연산에 대해 알아보려고 합니다.1) 벡터화된 연산(Vectorized operations)일반적으로 df(dataframe)을 읽어 처리하고자 한다면 for 방식을 취하게 됩니다.for idx in file.index: con = file.loc[idx, "@message"] email = re.findall(r'(?어떤 메세지(@message)에서 email을 추출하여 새로운 필드에 넣는 코드인데,이 방식은 각 행을 하나씩 순회하기에 속도가 느립니다. 벡터화된 연산으로 변경하면,df['email'] = df['@message'].str.extract(r'(?이 방식은 Pandas가 내부적으로 C로 구현된 최적화된 연산을 이용하여 모든 행을.. 2025. 1. 15.
[책리뷰] 테라폼으로 시작하는 IaC 현대 클라우드 환경에서 인프라 관리는 더 이상 수동적인 작업이 아닌 코드를 통한 자동화가 필수가 되었습니다. HashiCorp사의 Terraform은 이러한 IaC (Infrastructure as Code) 패러다임을 실현하는 대표적인 오픈소스 도구입니다.IaC라고 불리는 컨셉을 이용하여 기존의 베어메탈을 매뉴얼 하게 관리하기에는 요즘 사용하는 서비스들은 code로 관리하고자 하는 니즈가 굉장히 많아지게 되었습니다. 이런 흐름에서 한빛미디어의 테라폼으로 시작하는 IaC 도서를 리뷰해보고자 합니다. 왜 사용하는가?Terraform은 인프라스트럭처를 코드로 정의하고 관리할 수 있는 기능을 제공하여,프로비저닝 및 인프라 관리의 효율성을 크게 향상시킵니다. 일반적으로 Docker를 활용해 이미지를 생성한 후,.. 2024. 10. 27.
SSH known_host 원격에서 실행하는 스크립트를 작성하고 있는데 SSH기반이다.(참고로 다른 플젝에서 사용하는 Ansible 역시 SSH) SSH로 다른 HOST에 접근하기 위해서는 접속하려는 서버의 FingerPrint를 등록하는 과정이 필요한데접속할 건지 물어보는 프롬프트 때문에 스크립트 중간에 멈춰버리거니 입력을 받지 못하는 경우가 발생한다. 한번 Fingerorint를 등록해 놓으면 상관없지만 좀 더 알아보니~/.ssh/known_hosts라는 파일에 등록되기에 보안상 문제없이 접속하게 하는 방법이 필요하다이때 사용하는게 ssh-keyscan으로 원격 호스트의 SSH키를 수집하여 등록할 수 있다.ssh-ketscan -p {PORT} -t rsa {IP} 1> ~/.ssh/known_hosts 2>/dev/null .. 2024. 10. 9.
24년 주목해야할 LLM 비교 2023년에 오픈소스 AI의 빠른 성장을 이룬 것 같습니다.특히, 2022년에는 OpenAI의 11월 ChatGPT 출시가 큰 관심을 끌었으며, 이후로 연구 및 상업적 용도의 고성능 오픈소스 대규모 언어 모델(LLM)이 계속해서 등장하고 있습니다.이런 사전 학습된 파운데이션 LLM 모델은 아직까지 GPT-4와 같은 독점 AI 모델의 성능을 완전히 능가하는 수준은 아니지만, GPT-3.5와 같은 LLM을 대체할 수 있는 대안으로 주목되며 기존의 AI관련 산업의 방식을 통채로 변화하게 된 계기가 된 것 같습니다.2024년에는 오픈 소스 AI 생태계가 더 발전함에 따라 주목해야 할 6가지 상위 LLM이 등장할 것으로 예상됩니다. 이러한 모델은 다양한 분야에서 활용될 것으로 예상되며, 우리가 이를 알아두면 좋을.. 2024. 2. 23.
[docker] AMP환경 구축하기 1. 목표 Docker composer를 이용하여 APM환격을 구축하여 그누보드 설치하여 개발환경 구축 2. 파일구성 2-1. docker-compose.yml version: '3.9' services: web: build: context: . dockerfile: Dockerfile depends_on: - db volumes: - ./www:/var/www/html/ #볼륜마운드 ports: - 8080:80 db: container_name: mysql8 image: mysql:8.0 command: --default-authentication-plugin=mysql_native_password environment: MYSQL_DATABASE: ***** #db이름 MYSQL_USER: ****.. 2024. 1. 22.
Styled-Components사용하기 (Next.js v14) CSS-in-JS 스타일드 컴포넌트를 Next.js에 적용하기Next.js 프로젝트에서 styled-components를 사용하는 방법에 대해 설명드리겠습니다.1. Next.js 설치먼저 create-next-app을 사용하여 TypeScript 기반의 Next.js 프로젝트를 생성합니다:npx create-next-app@latest --typescript use_styled_component 설치 과정에서 다음과 같은 옵션을 선택합니다:ESLint 사용 여부Tailwind CSS 사용 여부src/ 디렉토리 사용 여부App Router 사용 여부 (권장)기본 import alias 설정 여부⚠️ 주의: Node.js 버전이 낮을 경우 다음과 같은 오류가 발생할 수 있습니다:class NextReques.. 2023. 11. 14.
LLM 프레임워크 LangChain 🦜️🔗 LangChain 요즘 다양한 LLM들이 많이 나오고 있는데 실재 AI관련 앱을 개발한다고 하면 Prompt엔지니어링이라고 하는 다양한 프롬프트들을 변수치환해서 사용와고 여러 데이터들과 사용하는데 여러 문제점에 봉착하는데 LangChain을 활용하여 이런 문제들을 쉽게 핸들링 할수 있는 프레임워크인 랭체인을 소개한고자 한다. https://github.com/hwchase17/langchain 랭체인은 Star히스토리를 보면 얼마나 관심이 많은 오픈소스인지 볼 수 있는데 그만큼 높은 관심도를 확인해 볼수 있다. 랭체인이란? LangChain is a framework for developing applications powered by language models. 즉 GPT3.5같은 LLM모델을.. 2023. 7. 6.