HTTP의 진화, HTTP/3
·
IT/Web
HTTP의 진화, HTTP/3HTTP/3는 전송 계층에서 TCP 대신 QUIC을 사용한다.QUICHTTP/3에서 QUIC 기능을 통해 지연 시간 단축, 네트워크 안정성, 빠른 성능을 가능하게 한다.훨씬 낮은 대기 시간 제공TCP는 핸드쉐이크 후 별도로 TLS 과정을 수행하지만 QUIC은 핸드쉐이크 단일 과정에서 처리UDP를 통해 개별 스트림이 독립적으로 실행연결 ID(Connection ID)로 세션 유지 가능Wifi에서 Lan으로 변경 등 네트워크 변경 상황에서도 연결 ID를 통해 연결 유지할 수 있다.네트워크 전환 중에도 연결을 유지할 수 있다.개별 스트림 기반 전송으로 손실된 스트림만 재전송 가능HTTP/2는 다중화 프로토콜로 여러개의 동시 HTTP 트랜잭션을 허용하지만, 단일 TCP 연결에서 다중..
Consistent hashing, 일관된 해싱
·
IT/알고리즘
Consistent hashing, 일관된 해싱  일관된 해싱(Consistent hashing)은 해싱 기법중 하나로 해싱 테이블 크기가 조정될 때 전체 키중에서 n/m 만 remmaping하면 되는 방법 이다. (n: 키의 개수, m: 슬롯 개수)* 일반 해시 테이블에서는 거의 모든 키를 다시 매핑 해야 한다.우선 Hash에 대한 부분부터 짚고 넘어가자.  Hash table(=Hash map)  해시(Hash)는 임의의 데이터를 고정된 크기의 값으로 변환하는 과정으로 변환된 값을 해시 값 또는 해시 코드라고 하다. 이렇게 변환된 해시 값을 배열의 인덱스에 사용하는 자료구조로 Dictionary 혹은 Map 이라고도 부르며 이를 해시 테이블이라 하며 이런 특징을 이용하여 빠른 접근, 빠른 삽입, 빠른..
[분산 시스템] Raft Consensus Algorithm, 뗏목 합의 알고리즘
·
Infrastructure
Distributed Consensus Algorithm(분산 합의 알고리즘)분산 합의 알고리즘은 여러 노드로 구성된 분산 시스템에서 모든 노드들이 특정 값에 대해서 동의(consensus) 하도록 만드는 알고리즘으로 분산 환경에서 데이터 일관성, 장애 허용성, 시스템 안정성을 보장하는데 사용 된다.주요한 3가지 특징을 가지고 있다.Consistency (일관성): 모든 노드가 동일한 데이터를 공유Fault Tolerance (장애 허용성): 일부 노드가 장애가 나더라도 시스템은 정상적으로 작동Eventual Agreement (최종 동의): 네트워크 상태가 안정적이면 모든 노드가 같은 결론으로 동작 Raft Consensus Algorithm, 뗏목 합의 알고리즘Raft 는 분산 합의 알고리즘 중 하나..
[분산 시스템] CAP Theorem: Consistency, Availability, Partition tolerance
·
Infrastructure
CAP Theorem : Consistency, Availability, Partition tolerance 이전에 소프트웨어 시스템의 성능을 향상시키는 방법은 하드웨어 성능을 올리거나(scale up) 구현 알고리즘을 수정하는 방향이였고 현재에 들어서는 수평적 확장의 방법(scale out)의 세번째 옵션을 선택할 수 있게 되었다. 2010년도에 들어서 글로벌 서비스와 클라우드화 복잡한 애플리케이션 요구사항에 따라 성능 요구가 증가함에 따라서 수평적 확장이 필요해졌고 현재에서 비지니스를 진행하게 위해서는 분산 환경이 필요로 하고 수평적 확장으로 가져온 성능 이점은 복잡성이라는 비용을 지불한다.  CAP Theorem은 분산 시스템에서 Consistency(일관성), Availability(가용성), P..
Ollama Model Update 모델 일괄 업데이트 방법
·
IT/AI
Ollama Model Update 모델 일괄 업데이트 방법#!/bin/bashollama list | tail -n +2 | awk '{print $1}' | while read -r model; do ollama pull $modeldone
HTTP의 진화, HTTP/2
·
IT/Web
HTTP의 진화, HTTP/2 Stream, Stream Multiplexing (다중 요청 처리)하나의 TCP 연결에서 여러 개의 요청과 응답을 동시에 처리할 수 있습니다. 이를 통해 지연 시간(latency)을 줄이고 더 빠른 웹 페이지 로딩을 가능하게 합니다.HTTP/2는 하나의 TCP Connection에서 요청을 처리할 수 있는 반면 HTTP/1.1은 여러개 Connection을 가지는 것을 확인서버 푸시(Server Push)HTTP/2는 서버 푸시(Server Push) 기능을 제공하여, 클라이언트가 요청하지 않은 리소스도 미리 보내는 방식으로 성능을 향상시킬 수 있습니다. 헤더 압축 (HPACK)HTTP/2는 헤더 압축을 통해 요청과 응답의 크기를 줄이고, 네트워크 효율성을 높입니다. 이를..
HTTP의 진화
·
IT/Web
HTTP의 진화HTTP/0.9 – 원-라인 프로토콜HTTP 초기 버전에는 버전 번호가 없었습니다. HTTP/0.9는 이후 버전과 구별하기 위해 0.9로 불리게 되었습니다. 리소스에 대한 경로는 GET이 유일 했으며 HTML 파일 전송만 가능했고 다른 유형의 파일들은 전송할 수 없었습니다. 문제가 발생했을 경우 문제에 대한 내용이 포함된 HTML 파일을 생성 했었습니다.GET /mypage.html A very simple HTML page HTTP/1.0 – 확장성 만들기HTTP 요구사항을 충족하고 표준화 하기 위한 HTTP WG 조직이 탄생했고 1996년 HTTP WG는 HTTP에 관련된 사양들을 종합해서 발표 했는데 이를 HTTP/1.0 으로 불렀습니다. 이 때 최초 HTML 버전을 HTTP/0.9..
의존성 주입에 대한 생각
·
IT
의존성 주입에 대한 생각오늘 회사에서 스프링 코어에 대한 얘기를 나누던 중 의존성 주입 얘기가 나왔고 그냥 생각나는 부분들에 대해서 끄적끄적해본다.웹 개발을 하다보면 스프링 프레임워크 사용 여부와 상관없이 최소 한번 정도는 그 단어 Dependency injection(DI, 의존성 주입)를 보거나 듣게 된 경험이 있다고 생각하고 없다면 간첩 신고 하면 되나? 사실, 객체지향과 객체지향 원칙을 제대로 이해하고 있다면 의존성 주입은 학습을 통해 배우는 것이 아니라, 자연스럽게 코드에 녹아서 이미 그렇게 코드를 작성하고 있을 것이다.의존성 주입이라는 개념만 단순히 학습하고 넘어가기보다는 객체지향의 본질과 원칙을 이해하는 데 학습의 초점을 맞추는 것이 훨씬 더 중요하다. 이 원칙들이 지켜지지 않으면 테스트 코..
[AI] 오디오 녹음 요약하기 (OpenAI Whisper, Langchain, Exaone)
·
IT/AI
[AI] 오디오 녹음 요약하기 (OpenAI Whisper, Langchain, Exaone)클로바 회의 요약 기능을 보고 이것도 어느정도 단계는 쉽게 구현할 수 있지 않나 해서 그냥 재미로 구현해봤다. 녹음은 내가 떠들수는 없으니 슈코 틀어서 녹음 시켰다.https://www.youtube.com/watch?v=95-2hZQGHyQ 실제로 구현해보니 만약 토이 프로젝트로 어느정도 구현을 한다고 한다면, 프론트에서 오디오 관련 라이브러리를 통해서 녹음을 한 뒤 백엔드로 업로드 하고 백엔드에서는 업로드 오디오 파일들을 이벤트 아키텍쳐 구성하여 Audio-to-Text 와 Summarize에 대해서 이벤트 처리 하도록 하면 쉽고 간단하게 토이 프로젝트를 구현할 수 있겠다. 오디오 녹음import osimpo..
ORM 사용에 관한 에이전트 토론 들어보기
·
IT/AI
ORM 사용에 관한 에이전트 토론 들어보기ORM 사용에 있어서 개발자들의 태도가 서로 다른 경우를 종종 겪는데요. 그래서 한번 해보았습니다.프롬트는 아래와 같이 설정 하였습니다.ORM 미사용 주장 에이전트:"당신은 'ORM 사용은 안티 패턴이며 예측하지 못한 버그나 동작들이 있어서 사용을 피해야 한다.' 의견을 주장하고 있습니다." ORM 사용 주장 에이전트:"당신은 'ORM 사용은 현재 개발시장에서 필연적이며 생산성을 위해 사용을 해야 한다.' 의견을 주장하고 있습니다."  에이전트 토론 내용왜 ORM을 사용해야 하나요?--------------------------------------------------------------------------------ORM(Object-Relational M..
[Langchain] Chatbot 챗봇 구현
·
IT/Langchain
[Langchain] Chatbot 챗봇 구현Codeimport enumfrom typing import Listimport streamlit as stfrom langchain.chains.combine_documents import create_stuff_documents_chainfrom langchain.chains.retrieval import create_retrieval_chainfrom langchain.embeddings import CacheBackedEmbeddingsfrom langchain.globals import set_debugfrom langchain.retrievers import EnsembleRetrieverfrom langchain.storage import Loc..
[Langchain] 이미지 분석
·
IT/Langchain
[Langchain] 이미지 분석Codeimport base64import os.pathfrom io import BytesIOfrom PIL import Image, ImageFilefrom langchain_ollama import OllamaLLMfrom langchain_demos.utils.dev import green, magentadef convert_to_base64(image: ImageFile.ImageFile) -> str: buffered = BytesIO() image.save(buffered, format="JPEG") return base64.b64encode(buffered.getvalue()).decode("utf-8")def summarize_image(b..
[Langchain] 계엄령 기념, 집밥 같은 랭체인 코드로 계엄령 뉴스 보기
·
IT/Langchain
[Langchain] 계엄령 기념, 집밥 같은 랭체인 코드로 계엄령 뉴스 보기계엄령 기념으로 계엄령 뉴스들을 몇개 선택한 후 마치 집밥을 먹는것 같은! 마치 기본적인 반찬들이 있는 것 같은! 랭체인 기본 코드를 작성했다.Codeimport osfrom typing import Listimport bs4from dotenv import load_dotenvfrom langchain.embeddings import CacheBackedEmbeddingsfrom langchain.retrievers import EnsembleRetrieverfrom langchain.storage import LocalFileStorefrom langchain_chroma import Chromafrom langchain_c..
[Langchain] AI vs AI 토론을 가장한 말싸움 하기
·
IT/Langchain
[Langchain] AI vs AI 토론을 가장한 말싸움 하기Codeimport uuidfrom typing import Callablefrom langchain_core.language_models import BaseChatModelfrom langchain_core.output_parsers import StrOutputParserfrom langchain_core.prompts import ChatPromptTemplatefrom langchain_core.runnables.utils import Outputfrom langchain_ollama import ChatOllamafrom langchain_demos.utils.dev import cyan, green, yellowclass Disc..
[Stable Diffusion] Stable Diffusion 3.5 Text to Image 이미지 생성
·
IT/AI
[Stable Diffusion] Stable Diffusion 3.5 Text to Image 이미지 생성테스트 환경Mac m1 proCodeimport osimport uuidfrom datetime import datetimeimport torchfrom diffusers import StableDiffusion3Pipelinefrom dotenv import load_dotenvload_dotenv()HUGGING_FACE_ACCESS_TOKEN = os.getenv("HUGGING_FACE_ACCESS_TOKEN")"""https://prompthero.com/stable-diffusion-cartoon-prompts"""# torch.backends.mps.enable_fallback_impl..
[Langchain] 웹 요약 Agent
·
IT/Langchain
[Langchain] 웹 요약 AgentCodeimport osimport uuidfrom dotenv import load_dotenvfrom langchain.agents import create_react_agent, AgentExecutorfrom langchain_community.chat_message_histories import ChatMessageHistoryfrom langchain_community.document_loaders import WebBaseLoaderfrom langchain_community.tools import TavilySearchResultsfrom langchain_community.vectorstores import Chromafrom langchain_co..
[Langchain] PDF 요약 Agent
·
IT/Langchain
[Langchain] PDF 요약 AgentCodeimport osfrom langchain_community.document_loaders import PDFMinerLoaderfrom langchain_core.output_parsers import StrOutputParserfrom langchain_core.prompts import ChatPromptTemplatefrom langchain_ollama import ChatOllamapdf_filepath = os.path.join("../../../data", "SK_ESG_2023.pdf")loader = PDFMinerLoader(pdf_filepath)docs = loader.load()template = """# Instruction이 ..
[Langchain] Math Agent
·
IT/Langchain
[Langchain] Math AgentLangChain은 LLM(대규모 언어 모델) 기반 애플리케이션을 개발할 때 유용한 도구로, 여러 유틸리티를 쉽게 통합할 수 있습니다. 이번 글에서는 Python과 LangChain을 활용해 수학 질문에 답변할 수 있는 에이전트를 구현하는 코드를 분석하고, 실무에서 주의해야 할 점과 개선 아이디어를 논의합니다.1. 툴 정의LangChain 에이전트는 작업을 수행할 수 있는 다양한 “툴”로 구성됩니다. 아래 코드는 세 가지 툴을 제공합니다: • basic_calculator_tool: 간단한 계산을 수행하는 계산기 툴입니다. • eval 함수를 사용해 수식을 계산합니다. • 주의: eval은 외부 입력값을 실행하기 때문에 보안 취약점이 있을 수 있습니다. 예: 사용..
[Langchain] 네이버 뉴스 요약
·
IT/Langchain
[Langchain] 네이버 뉴스 요약이번 글에서는 Python과 LangChain, Ollama 모델을 활용해 웹에서 텍스트를 스크래핑하고, 이를 요약 및 구조화하는 방법을 다룹니다.  뉴스 기사를 처리한 사례를 통해 기술적 구현 방법과 활용 가능성을 살펴보겠습니다.1. 웹 스크래핑 도구: WebBaseLoaderWebBaseLoader는 BeautifulSoup(bs4)를 기반으로 동작하며, 특정 HTML 태그나 속성을 기반으로 데이터를 필터링합니다.loader = WebBaseLoader( web_paths=urls, bs_kwargs=dict( parse_only=bs4.SoupStrainer("article", attrs={"id": ["dic_area"]}), ),..
Prompt Engineering Guide: Prompting Techniques
·
IT/AI
Prompt Engineering Guide: Prompting Techniques테스트 모델llama3.1:8bbenedict/linkbricks-llama3.1-korean:8bZero-shot promptingPromptClassify the text into neutral, negative or positive then just give me the sentiment. Text: I think the vacation is okay.Sentiment:OutputNeutralFew-shot promptingPrompt`네카라`는 네이버, 카카오, 라인 회사들의 줄임말 입니다. `네카라` 단어 사용 예시 문장: "교육 이수시 네카라 취업 100%!"`인터넷 방송`은 회선을 통해 프로그램을 내보내는 방..