2024/03 6

[DB] Super key, Candidate key, Primary key란

1. Super key Super key는 데이터에 관계에서 tuple을 유일하게 식별할 수 있는 속성의 집합이다. 2. Candidate key Candidate key는 Super key 중 minimal한 집합을 의미한다. 여기서 minimal이란 속성의 개수가 적다는 것을 의미하는 것이 아니다. minimal은 key의 unique를 유지하면서 가장 적은 속성을 의미한다. 예를 들어 아래와 같은 예시가 있다고 하자. MyStudent(student-id, name, national-id, address, phone) 여기에서 student-id와 national-id는 학생들을 구별할 수 있는 unique한 키다. 이 때 나올 수 있는 Super key는 - (student-id), (studen..

CS/Database 2024.03.31

TCP flow control이란?

0. 배경 송신자가 전송한 데이터를 수신자가 받아서 버퍼에 저장한다. 이 때, 송신자가 데이터를 전송하는 속도와 수신자가 데이터를 수신하는 속도가 다를 수 있다. 만약 송신지의 데이터 전송속도가 수신자의 데이터 수신속도보다 빠르다면 수신자의 버퍼는 들어오는 데이터의 속도를 이기지 못하고 결국 버퍼가 넘칠 것이다. 이 과정에서 데이터가 유실될 가능성이 있다. 송신자와 수신자 간 데이터 전송 속도차로 인한 데이터 유실이 발생하는 것이다. TCP는 데이터 유실을 방지하기 위해 송신자의 전송 속도를 조절하는 방법을 택했다. 이것이 flow control이다. 1. flow control 과정 TCP는 flow control을 위해 receive window(=rwnd)라는 변수를 사용한다. 이 변수를 사용하여 ..

CS/Network 2024.03.18

스프링부트 슬랙봇 연동 - 메시지 전송

크롤링 하는 슬랙봇을 만들고 있었고 크롤링 코드를 파이썬으로 짰기 때문에 당연히 파이썬으로 슬랙에 연동하고 요청 날려야겠다고 생각하고 공부했다. 그런데 크롤링 결과를 DB에 저장하고 CDC로 새로운 글을 감지해야겠다고 정리하니까 DB에서 데이터를 가져오는 부분은 스프링으로 해도 될 것 같았다. 그래서 크롤링해서 DB에 저장하는 부분만 파이썬으로 짜보고 나머지는 스프링으로 하려고 슬랙봇을 다시 연동했다.  1. 슬랙봇 연동하기먼저 스프링 프로젝트를 만들고 슬랙봇 의존성을 주입해야 한다. https://slack.dev/java-slack-sdk/guides/getting-started-with-bolt#gradle Getting Started with Bolt | Slack SDK for JavaSLACK..

심심해서 2024.03.11

파이썬으로 슬랙 봇 만들기 (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