티스토리 뷰
1. requests란?
- Python에서 HTTP 요청을 쉽게 보낼 수 있도록 도와주는 라이브러리
- 웹 페이지에서 데이터를 가져오거나 API와 통신할 때 사용
2. API란?
- 프로그램 간 데이터를 주고받을 수 있도록 규칙을 정해놓은 인터페이스
3. 인터페이스란?
- 서로 다른 시스템, 소프트웨어, 또는 하드웨어가 소통할 수 있도록 규칙을 정해놓은 것
4. HTTP 요청이란?
- 클라이언트(사용자)가 서버(웹사이트, API)에 데이터를 요청하는 방식
- GET, POST, PUT(PETCH-기존 것을 수정), DELETE
* 자바스크립트 fetch는 어디서 가져오는 것
5. 크롤링이란?
- 웹사이트에서 자동으로 데이터를 수집하는 과정
- requests 등
6. 스크래핑이란?
- 크롤링한 데이터에서 필요한 정보만 추출하는 과정
- beautifulsoup 등
7. 파싱이란?
- 데이터를 특정한 구조로 분석하고 변환하는 과정, 데이터를 이해할 수 있는 형태로 분석
- beautifulsoup 은 HTML을 파싱한 후 특정 태그를 선택(스크래핑)
8. 동적 크롤링이란?
- Javascript가 실행된후의 웹페이지에서 데이터를 가져오는 크롤링 방식
9. 정적 크롤링이란?
- 서버에서 반환된HTML 코드만 가져오는 크롤링 방식
10. selenium이란?
- 웹 브라우저를 자동화하는 라이브러리(사람이 브라우저에서 하는 행동을 코드로 자동 수행)
11. 크롤링 시 태그 클래스 이름이 계속 바뀐다면?
1) 태그의 구조가 규칙적이면 클래스 없이 찾기
soup.select('div > span:nth-of-type(2)')
# div 태그 아래의 span 태그 중 2번째 요소를 선택
------------------------------------------
<div>
<span>첫 번째</span>
<span>두 번째</span> <!-- 이걸 선택 -->
<span>세 번째</span>
</div>
2) 고정된 글자(레이블)을 기준으로 찾기
soup.find('span', string='가격').find_next('span').text
3) 클래스 이름 중 고정된 부분만 사용하기(부분 일치)
soup.select("[class*=price]")
# 클래스 이름 중 고정된 부분만 사용(클래스명에 'price' 포함)
4) XPath 활용(Selenium일 경우)
driver.find_element(By.XPATH, "//span[contains(text(),'가격')]")
# '가격'이라는 텍스트가 포함된 span 태그를 찾아라
12. 프로토콜
- 어떻게 데이터를 주고받을지에 대한 약속
- 통신할 때 지켜야 할 규칙
- 예: HTTP, FTP, TCP/IP
- 예: HTTP는 웹에서 데이터를 주고 받는 프로토콜
13. 인터페이스
- 서로 다른 두 대상이 만나는 연결 지점
- 연결 부분에서 서로 상호작용하는 수단
- API, USB, UI
- 예: API는 HTTP 프로토콜을 사용하여 데이터를 주고받을 수 있게 만들어 놓은 인터페이스
- 예: 한국인과 미국인이 전화로 대화한다고 할때, 사용하는 언어(한국어/영어)가 프로토콜, 대화를 주고받는 수단인 전화기가 인터페이스
14. docker란?
- 애플리케이션을 컨테이너라는 독립된 공간에 묶어서 쉽게 배포, 실행할 수 있게 만든 기술
- 장점: 어디서나 같은 환경에서 실행 가능(개발 → 운영 환경 통일), 빠르고 가벼운 배포, 환경 구성 시간 단축(의존성 충돌 방지)
- 컨테이너: 애플리케이션과 그 실행환경을 독립된 공간으로 패키징한 것
- 이미지: 컨테이너 실행을 위한 템플릿
- Dockerfile: 이미지를 만드는 설명서(레시피)
15. httpx란?
- python에서 사용하는 http요청 라이브러리
- requests의 업그레이드 버전(비동기 지원, HTTP/2지원, 속도가 빠르고 가볍다)
16. 비동기란?
- 한 개의 스레드 안에서 여러 작업을 빠르게 번갈아 수행하는 방식(대기시간 활용)
- 동시 실행(병렬 처리-멀티스레드, 멀티 프로세스)은 아님, 기다리는 동안 다른 작업을 실행해 동시처럼 보일 뿐
17. 동기란?
- 작업을 순차적으로 처리하는 방식, 하나의 작업이 끝날 때까지 기다린 후 다음 작업을 실행
18. HTTP/2
- 멀티플렉싱,하나의 연결 내에서 여러 요청을 잘게 쪼개서 빠르게 번갈아 보냄(네트워크 TCP 통신)
* 비동기랑 비슷해보이나 비동기는 코드 작업 처리 방식을 설계하는 방식이고, HTTP/2 멀티플렉싱은 데이터를 보내는 방식
19. Redis란?
- 메모리 기반의 초고속 NoSQL 데이터 베이스
- Key-Value 구조로 데이터를 저장
- 캐싱, 세션관리, 실시간 데이터 처리에 최적화됨
20. crewai란?
- 여러 개의 AI 에이전트를 협력해서 작업하도록 만드는 프레임 워크
21. 에이전트란?
- 특정 목표를 수행하는 자율적인 프로그램 또는 AI 시스템
22. 벡터DB란?
- 고차원 벡터(숫자 배열)로 저장된 데이터를 빠르게 검색하는 데이터베이스
- FAISS, Pinecone, Weaviate, Milvus
23. 벡터임베딩이란?
- 데이터를 고차원 벡터(숫자 배열)로 변환하는 과정
24. RAG란?
- 정보 검색 + 생성 모델을 결합한 AI 방식 (검색, 보강, 생성)
- 외부 데이터베이스(벡터 DB)에서 관련 정보를 검색, 검색된 정보를 LLM 입력으로 추가, LLM이 검색된 정보를 활용해 답변 생성
25. FastAPI란?
- python 기반의 빠르고 간단한 웹 API 프레임워크(비동기 지원, 자동 문서 생성, 타입 검증-pydantic, 간결한 코드)
26. Pydantic이란?
- Python 데이터 검증 및 직렬화 라이브러리(타입 검증, 자동 변환(문자열을 숫자로), 데이터 직렬화(Json 변환), BaseModel
27. BaseModel이란?
- python 객체를 Json처럼 다루면서 타입 검증을 수행하는 모델
* 웹 API에서 데이터를 주고받을 때 Json이 표준이기 때문
28. python이란?
- 문법이 간결하고 직관적, 광범위한 라이브러리 지원(데이터분석, 웹개발, AI 등), 인터프리터 언어로 코드 실행이 빠르고 유연함, 멀티패러다임 지원(객체지향, 절차적, 함수형 프로그래밍 가능)
29. MySQL이란?
- 오픈소스 관계형 데이터베이스 관리 시스템(RDBMS)
30. Nginx란?
- 높은 성능과 확장성을 갖춘 오픈 소스 웹 서버이자, 리버스 프록시 서버
- 비동기 이벤트 기반, 고성능, 매우빠름
31. 웹서버란?
- 클라이언트(브라우저)의 HTTP 요청을 처리하고 응답을 반환하는 서버
32. 리버스 프록시 서버란?
- 클라이언트 요청을 벡엔드 서버로 전달하고 응답을 반환하는 서버
- 로드 밸런싱(여러 서버로 트래픽 분산), 보안 강화(직접적인 서버 노출 ㅂ아지), 캐싱(요청된 데이터를 저장하여 속도 향상),SSL/TLS(처리): HTTPS 통신을 프록시 서버에서 담당
33. Apache 란?
- Apache HTTP Server는 가장 널리 사용되는 오픈 소스 웹 서버 중 하나로, 동적 및 정적 콘텐츠를 처리하는 기능을 제공
- 멀티스레드 기반으로, 동적 콘텐츠 처리에 강점이 있다.(php 기반 서비스)
'AI > AI 서비스 개발' 카테고리의 다른 글
[AI 서비스 개발] 리눅스에 미니포지 설치하기 (0) | 2025.03.28 |
---|---|
[AI 서비스 개발] 크롤링 방지 기법, 크롤링 정책 (0) | 2025.03.17 |
[AI 서비스 개발] RAG의 패러다임 변화 (0) | 2025.03.16 |
[AI 서비스 개발] LLM의 Reasoning, Deepseek R1, 파인튜닝과 강화학습 (0) | 2025.03.11 |
[AI 서비스 개발] RAG 파이프라인 (0) | 2025.03.06 |
- Total
- Today
- Yesterday
- SQL
- 갓생
- 티스토리챌린지
- 운동
- 다이어트
- 습관
- 프로그래머스
- 30분
- opic
- 영어회화
- 실기
- 루틴
- 뉴스
- 줄넘기
- 미라클모닝
- 기초
- IH
- 고득점 Kit
- 아침
- Python
- 빅데이터 분석기사
- 경제
- 오블완
- 아침운동
- Ai
- 스크랩
- C언어
- ChatGPT
- llm
- 오픽
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |