전체 글 50

[스나이퍼팩토리] 한컴AI아카데미(26.06.08) Selenium

Selenium# Selenum이란?Selenium은 원래 웹 애플리케이션의 테스트를 자동화하기 위해 만들어진 도구입니다. 하지만 실제 브라우저를 제어할 수 있다는 강력한 기능 덕분에, 최근에는 동적 크롤링에 가장 많이 활용 왜 Selenium인가?정적 크롤링(requests+BeautifulSoup): 서버가 응답하는 HTML 원문만 가져옵니다. 자바스크립트로 데이터를 불러오는 경우 데이터를 수집할 수 없습니다.동적 크롤링(Selenium): 실제 크롬 브라우저를 띄워 자바스크립트를 모두 실행한 뒤, 사용자가 보는 최종 화면의 HTML을 가져올 수 있습니다.# 코드 분석## 라이브러리별 역할from selenium import webdriverfrom selenium.webdriver.common.by..

학습일지 2026.06.09

[스나이퍼팩토리] 한컴AI아카데미(26.06.05) 웹 스크랩핑(BeautifulSoup)

BeautifulSoup- HTML 및 XML 문서를 파싱하고 데이터를 쉽게 추출할 수 있게 도와주는 라이브러리- 웹 스크래핑(웹 페이지에서 정보를 수집)하는데 자주 사용 # HTML 예시 1## 내장 번역기(html.parser)from bs4 import BeautifulSouphtml_doc = '''안녕하세요나도 컨텐츠 내용컨텐츠 내용링크'''soup = BeautifulSoup(html_doc, 'html.parser')'''html_doc (무엇을?)분석할 대상인 HTML 문자열을 의미합니다. 위에서 정의한 ... 텍스트가 여기에 들어갑니다.'html.parser' (어떻게?)문자열을 해석할 구문 분석기(Parser)를 지정하는 것입니다.(내장 번역기)파이썬에 기본으로 내장된 번역기를 쓰겠다..

학습일지 2026.06.05

[스나이퍼팩토리] 한컴AI아카데미(26.06.04) urllib

urllib(얼리브, 유얼리브)# urllib.request의 핵심함수urlopen(url): URL을 열고 HTTP 요청을 보내는 가장 기본적이고 핵심적인 함수로 url 인자에는 일반 문자열 주소나 Request 객체를 모두 넣을 수 있습니다.Request(url, headers={}): 복잡한 HTTP 요청을 정의할 수 있는 클래스로 headers에 User-Agent(브라우저 정보)를 숨겨 넣거나, method에 'POST', 'PUT', 'DELETE' 등을 명시하여 단순 GET 외의 요청을 커스텀할 때 생성하여 urlopen에 전달합니다.urlretrieve(url): 네트워크의 파일을 로컬 컴퓨터로 즉시 다운로드하고 저장하는 편리한 함수입니다.## urllib을 활용한 데이터 수집import ..

학습일지 2026.06.04

[스나이퍼팩토리] 한컴AI아카데미(26.06.02) GitHub CI/CD

CI/CD란 무엇인가?CI (Continuous Integration, 지속적 통합): 개발자가 수정한 코드를 자주 중앙 저장소(GitHub)에 병합하고, 자동으로 빌드 및 테스트를 수행하여 코드의 품질을 유지하는 과정입니다.CD (Continuous Deployment/Delivery, 지속적 배포): 빌드된 코드를 테스트 서버 또는 실제 운영 서버에 자동으로 배포하는 과정입니다.요약: "코드를 저장소에 올리기만 하면, 서버에 적용되기까지의 모든 과정을 자동으로 처리하는 시스템"입니다.# CI/CD 파이프라인의 이점휴먼 에러 방지: 매번 직접 SSH로 접속해 git pull하고 restart하는 번거로움과 실수를 줄입니다.즉각적인 피드백: 코드 수정 후 바로 서버에 반영되어 결과를 확인할 수 있습니다...

학습일지 2026.06.04

[스나이퍼팩토리] 한컴AI아카데미(26.05.29) Docker compose

Docker Compose여러 개의 컨테이너를 모아서 하나의 애플리케이션 서비스로 정의하고, 한 번에 묶어서 관리(실행, 종료 등)할 수 있게 도와주는 도구# 일반 컨테이너 실행(docker run) vs 컴포즈 실행(docker compose up)구분일반 컨테이너 실행 (docker run)컴포즈 실행 (docker compose up)관리 방식명령어를 터미널에 매번 직접 입력docker-compose.yml 파일로 저장하여 관리실행 대상단일(1개) 컨테이너 실행 위주여러 개(다중) 컨테이너를 동시에 실행네트워크 구성컨테이너끼리 연결하려면 설정을 매번 추가해야 함같은 파일에 있으면 자동으로 내부 네트워크 연결휴먼 에러오타나 옵션 누락 가능성이 매우 높음설정이 파일로 고정되어 있어 실행 결과가 항상 일..

학습일지 2026.05.29

[스나이퍼팩토리] 한컴AI아카데미(26.05.28) Docker Hub

Docker HubDocker Hub란?Docker에서 운영하는 세계 최대의 클라우드 기반 컨테이너 이미지 저장소(Registry)1. 핵심 기능이미지 리포지토리 (Repositories): Docker 이미지를 업로드(Push)하고 다운로드(Pull)할 수 있는 공간입니다. 누구나 볼 수 있는 Public(공개) 저장소와 나 또는 지정된 팀원만 볼 수 있는 Private(비공개) 저장소를 제공합니다.공식 이미지 제공 (Official Images): Ubuntu, CentOS 같은 OS부터 Python, Node.js, MySQL, Nginx 등 전 세계적으로 많이 쓰이는 오픈소스 소프트웨어의 공인된 오피셜 이미지를 제공합니다. Docker 측에서 보안과 최적화를 검증하기 때문에 안심하고 베이스 이미지..

학습일지 2026.05.28

[스나이퍼팩토리] 한컴AI아카데미(26.05.27) Docker

Docker란?도커(Docker)는 컨테이너 기반의 오픈 소스 플랫폼으로애플리케이션을 표준화된 환경에서 개발, 배포 및 실행할 수 있도록 지원애플리케이션과 그 의존성을 함께 패키징하여, 어떤 환경에서도 일관되게 실행될 수 있도록 합니다.도커의 주요 의미컨테이너화: 애플리케이션과 그 실행에 필요한 모든 파일, 라이브러리, 설정을 포함한 컨테이너를 생성합니다.이식성: 개발 환경, 테스트 환경, 프로덕션 환경 간에 애플리케이션을 쉽게 이동할 수 있습니다.격리성: 각 컨테이너는 독립적으로 실행되므로, 서로의 영향을 주지 않습니다.도커를 사용하는 이유일관된 환경: 개발, 테스트, 배포 환경에서 동일한 설정을 유지하여 "작동하지 않음" 문제를 줄입니다.효율적인 자원 사용: 가상 머신(VM)보다 가볍고 빠르며, 시스..

학습일지 2026.05.27

[스나이퍼팩토리] 한컴AI아카데미(26.05.22) GitHub

Git 명령어1. 중요 파일 잘못 올렸을 때git rm --cached -r hancomAIacademygit commit -m "Clean up repository root"2. 에러코드error: failed to push some refs to 'https://github.com/ramcd01/hancomAIacademy.git'❓ 왜 이런 일이 생겼을까요?GitHub 웹사이트에서 직접 파일을 수정하거나 추가했을 때: (예: GitHub에서 직접 README.md를 편집했거나, 저장소를 만들 때 .gitignore나 License 파일을 자동으로 생성한 경우)내 컴퓨터에는 아직 그 파일들이 없는데, 내가 내 컴퓨터에서 만든 새 파일을 push(업로드) 하려고 하니까 깃이 "잠깐! 인터넷(GitHub..

학습일지 2026.05.23

[스나이퍼팩토리] 한컴AI아카데미(26.05.21) Git

Git1. Git프로그램의 소스 코드가 변경되는 과정을 기록하고 관리하는 '분산 버전 관리 시스템(Version Control System)'Git을 쓰는 핵심 이유 (3가지)① 완벽한 버전 관리 (히스토리 추적)코드에 버그가 생겼을 때, "어제 오후 3시, 누가 어떤 코드를 고쳐서 이 버그가 생겼는지" 정확하게 찾아낼 수 있습니다. 마치 타임머신을 타듯 원하는 과거의 특정 시점으로 코드를 되돌리는 것도 가능합니다.② 안전한 협업 (브랜치 기능)여러 사람이 같은 프로젝트를 동시에 개발할 수 있습니다. 메인 코드 줄기에서 각자 독립된 복사본인 브랜치(Branch, 가지)를 만들어 눈치 보지 않고 기능을 개발한 뒤, 나중에 하나로 안전하게 합칠(Merge) 수 있습니다.③ 분산 저장 (안전성)프로젝트의 전체..

학습일지 2026.05.21

[스나이퍼팩토리] 한컴AI아카데미(26.05.18)

[WSL2] 다중 인스턴스 IP 공유의 비밀과 Nginx 로드 밸런싱(Load Balancing) 1. WSL2에서 여러 가상환경을 만들었는데 IP가 같은 이유wsl --install -d Ubuntu-24.04 --name Ubuntu-24.04-Web 과 같은 명령어를 사용해 우분투 인스턴스를 2개 이상 만들고 ip addr을 확인해 보면, 모든 가상환경이 동일한 IP 주소를 가지고 있는 것을 볼 수 있습니다.또한, 특정 인스턴스에서 아래와 같이 IP를 추가하거나 삭제하더라도 모든 가상환경에 공통적으로 적용되어 버립니다.# 가상 IP 추가sudo ip addr add 192.168.14.116/24 dev eth0 label eth0:1# 가상 IP 삭제sudo ip addr del 192.168.1..

학습일지 2026.05.18