전체 글 44

파이썬으로 슬랙 봇 만들기 (2) - Beautifulsoup4로 크롤링하기

1. beautifulsoup4 라이브러리 설치하기 파이썬으로 크롤링을 할 때 beautifulsoup4 라이브러리를 사용한다. 터미널에 아래와 같이 입력하여 라이브러리를 설치한다. >> pip install beautifulsoup4​ BeautifulSoup 공식문서 >> https://www.crummy.com/software/BeautifulSoup/bs4/doc/ Beautiful Soup Documentation — Beautiful Soup 4.12.0 documentation Beautiful Soup Documentation Beautiful Soup is a Python library for pulling data out of HTML and XML files. It works with..

심심해서 2024.03.04

파이썬으로 슬랙 봇 만들기 (1) - Hello World! 전송

1. Slack SDK 라이브러리 설치 나중에 크롤링 기능을 구현할 예정이기 때문에 파이썬으로 슬랙봇을 만들기 위해 Slack_SDK 라이브러리를 설치해야한다. 터미널에 아래 코드를 입력하면 라이브러리가 설치된다. Slack_SDK 라이브러리 >> https://github.com/slackapi/python-slack-sdk GitHub - slackapi/python-slack-sdk: Slack Developer Kit for Python Slack Developer Kit for Python. Contribute to slackapi/python-slack-sdk development by creating an account on GitHub. github.com >> pip install sla..

심심해서 2024.03.03

[Spring] 스프링 프레임워크 계층

1. 프레임워크 계층 1 - Presentation Layer = Web Layer웹브라우저를 통해 클라이언트의 요청 및 응답을 처리한다. 사용자 인터페이스라고 생각하면 된다.그냥 controller 클래스를 의미한다! @Controller 애너테이션을 사용한다. 뷰 영역을 담당하는 템플릿도 여기에 속한다. Exception handlers도 여기다!~ 2. 프레임워크 계층 2 - Buisness Layer = Service Layer컨트롤러와 DAO의 중간 영역에서 사용한다. (DAO가 뭐지? 따로 자세히 공부해야겠다) 두 사이를 연결하여 두 계층이 직접적으로 통신하지 않도록 한다.-> 클라이언트 - Controller - Service - DAO(Repository)  - DB 순서 @Service ..

Tech/Spring 2024.03.03

다중화와 역다중화

다중화와 역다중화를 알기 전에 Trans-L와 Net-L, 소켓이 무엇인지 알아야 한다. Transport vs Network layer Net-L는 서로 다른 호스트 간 논리적 통신을 제공하고 Trans-L는 프로세스들(서로 다른 호스트 안에서 동작) 간 논리적 통신을 제공한다. 이 차이를 이해할 수 있는 예제가 있다. 집A에 있는 12명의 아이들이 집B에 있는 또다른 12명의 아이들에게 편지를 보낸다고 가정하자. 이 때 집A와 집B는 각각 호스트A, 호스트B가 된다. 아이들은 프로세스이고 편지는 application messages = 데이터이다. 편지가 집A에서 집B로 이동하는 과정(postal service)은 Net-L 프로토콜이다. (라우팅) 편지가 집B에 도착하고, 12명의 아이들에게 편지를..

CS/Network 2024.02.01

OSI 7계층 모델과 TCP/IP 4계층 모델 비교

1. 물리계층 (Physical Layer) 실제 장치를 연결하는 데 필요한 전기적, 물리적 세부 사항을 정의한다. 상위 계층에서 전송된 데이터를 물리 매체를 통해 다른 시스템에 전기적 신호로 전송한다. 주요 네트워크 장치로 리피터, 허브 등의 기기가 있다. 2. 데이터 링크 계층 (Data Link Layer) 물리 링크를 통한 데이터 전송의 신뢰성을 보장하기 위한 계층이다. 대표적인 예로 이더넷이 있다. 시스템 간 오류없이 데이터를 전송하기 위해서 패킷을 프레임으로 구성하여 물리 계층에 전송한다.(캡슐화 과정) 데이터 링크 계층에서 물리적 주소, MAC 주소를 결정한다. 대표적인 네트워크 기기로 스위치가 있다. 3. 네트워크 계층 (Network Layer) LAN에서 벗어난 통신을 위하여 IP 주소..

CS/Network 2024.01.31

HTTP란 무엇인가?

HTTP란?HTTP(HyperText Transfer Protocol)는 웹의 app-L 프로토콜이다. HTTP의 특징client/server 모델이다.client: HTTP 프로토콜로 요청(request)을 보내고 응답을 받는 브라우저이다. server: HTTP 프로토콜로 요청에 대한 응답(reponse)을 보낸다.일반적으로, 사용자가 웹 페이지를 요청할 때 (1) 브라우저는 페이지 내부의 객체에 대한 HTTP 요청 메시지를 서버에게 전송한다.(2) 서버는 요청을 수신하고, 객체를 포함하는 HTTP 응답 메시지로 응답한다. HTTP의 TCP 사용클라이언트가 서버에게 TCP connection을 보낸다. (이 때 소켓을 만든다.)서버는 클라이언트로부터 온 TCP connection에 접속한다. (소켓 ..

CS/Network 2024.01.30

OSI 7계층: 7계층 응용 계층(Application Layer)이란?

Computer Networking: A Top-Down Approach, 8th Edition의 내용을 기반으로 작성한 글입니다. OSI(Open System Interconnection) 네트워크 모델 - OSI 7계층이란? ISO(International Organization for Standardization)는 1980년대 초, 여러 업체가 만든 시스템에 대해 상호연동이 가능한 표준 네트워크 모델을 제정할 필요성을 인식하고 1984년에 OSI 네트워크 모델을 발표했다. 7계층 - 응용 계층(Application Layer)이란? 여러 가지 프로토콜에 대한 사용자 인터페이스를 제공한다. 사용자나 응용 프로그램 사이에 데이터 교환을 가능하게 하는 계층이다. HTTP, FTP, 메일 프로그램 등을 ..

CS/Network 2024.01.29

alembic 에러

alembic revision - -autogenerate, alembic current 명령을 입력하면 무조건 이렇게 뜸 INFO [alembic.runtime.migration] Context impl SQLiteImpl.INFO [alembic.runtime.migration] Will assume non-transactional DDL.ERROR [alembic.util.messaging] Can't locate revision identified by '30e4c2d93125 'FAILED: Can't locate revision identified by '30e4c2d93125 ' 근데 30e4c2d93125은 잘 존재하는 파일인데…. 하루종일 이거저거 만지다가 스택오버플로우랑 이런 저런 곳에..

Tech/FastAPI 2024.01.16

FastAPI Depends 클래스 - Dependency Injection 의존성 주입

을 읽고 공부한 내용을 정리한 글입니다. 의존성이란? 의존성이란 두 클래스나 모듈의 연결, 관계를 의미한다. 만약 A와 B라는 두 모듈이 있을 때 A가 B에 의존한다면, B의 일부가 변경될 때 이것이 A에 영향을 끼친다는 의미이다. 자바 코드로는 아래와 같이 작성할 수 있다. // 예제 1 public class A{ private B b; public A(B b){ this.b = b; } } // 예제 2 public class A{ private B b; public A(){ this.b = new B(); } } 클래스 B의 객체가 클래스 A의 멤버 변수로, A는 B에 의존한다. // 예제 3 public class A{ public void doSomething(){ B b = new B(); ..

Tech/FastAPI 2024.01.12

FastAPI - app.get과 router.get 차이 (FastAPI와 APIRouter)

을 읽고 공부한 내용을 정리한 글입니다. app.get과 router.get의 코드가 둘 다 get이나 post를 쓰고 뒤에 URL이 온다는 점에서 쓰임새가 똑같아 보이는데 언제는 app.get을 쓰고 router.get을 쓰길래 둘의 차이가 궁금해졌다. app은 FastAPI 객체를 만들고 from fastapi import FastAPI app = FastAPI() @app.get("/hello") def hello(): return {"message": "Hello World"} router는 APIRouter 객체를 만든다. from fastapi import APIRouter, FastAPI app = FastAPI() router = APIRouter() @router.get("/items/"..

Tech/FastAPI 2024.01.09