[LangChain] AI 애플리케이션 개발한다고? 그럼 이건 알아야지❗️❗️❗️
·
LangChain
LangChain 소개LangChain은 대규모 언어 모델(LLM)을 활용한 애플리케이션을 개발하기 위한 프레임워크이다.이 프레임워크는 언어 모델에 기반한 애플리케이션을 더 쉽게 만들 수 있도록 설계되었으며,특히 언어 모델과 다른 데이터 소스나 계산 리소스를 연결하는 작업을 단순화한다. LangChain은 2022년에 Harrison Chase에 의해 시작되었으며, 처음에는 주로 Python으로 개발되었다가 나중에 JavaScript/TypeScript 버전도 추가되었다. (프론트 개발자는 이득이네~)이 프레임워크의 핵심 목표는 개발자가 LLM의 능력을 최대한 활용하면서도, 필요한 부분을 쉽게 커스터마이징할 수 있게 하는 것이다.LangChain의 가장 큰 강점은 모듈화된 구조로, 다양한 컴포넌트들을 조..
[알고리즘] 백준 10818번 - 최소, 최대 문제 풀이 (Java)
·
알고리즘
백준 10818번 문제 "최소, 최대"를 풀면서 알게 된 내용을 공유하려 한다.두 가지 방법을 사용할건데 하나는 정렬, 다른 하나는 단일 순회 방식을 사용할 것이다.이 문제는 N개의 정수가 주어졌을 때 최솟값과 최댓값을 구하는 간단한 문제다.처음 작성한 코드 (정렬 사용)처음에는 배열을 정렬한 후 첫 번째 요소와 마지막 요소를 출력하는 방식으로 접근했다.import java.util.*;import java.io.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); St..
[알고리즘] 백준 3052번 - 나머지 문제 풀이와 자바 Stream API 활용하기 (Java)
·
알고리즘
오늘은 백준 3052번 '나머지' 문제를 풀어보았다.알고리즘 공부를 시작한 지 얼마 되지 않아 기초적인 문제부터 차근차근 풀어나가고 있는데,이 문제에서 Java의 Stream API를 활용해볼 수 있어서 좋은 경험이 되었다.문제 요약 문제 해석과 접근 방법이 문제는 단순해 보이지만 몇 가지 중요한 개념을 포함하고 있다.우선 나머지 연산(modulo)을 이해해야 하고, 중복된 값을 제거하는 방법을 알아야 한다. 처음에는 HashSet을 사용해 중복을 제거하는 방법을 생각했다.HashSet은 중복을 허용하지 않는 자료구조이기 때문이다. 하지만 최근에 Java Stream API에 대해 공부하고 있어서 이를 활용해보고 싶었다.Stream API를 사용하면 컬렉션의 요소를 함수형 프로그래밍 방식으로 처리할 수 ..
[React] 메모이제이션 알아보기(useMemo & useCallback)
·
React
최근에 다른 개발자와 이야기를 나누다가 메모이제이션에 대해 제대로 이해하지 못한체로 사용하고 있는 것을 발견했다.그래서 그런 사람들을 위해서라도 개념을 정리해보고자 한다.🚨React19 부터는 useMemo와 useCallback을 사용하지 않아도 자동으로 리액트 컴파일러가 최적화 해준다고 한다.🚨메모이제이션이란?메모이제이션(Memoization)은 컴퓨터 프로그래밍에서 사용되는 최적화 기법 중 하나.이 기법은 함수 호출의 결과를 저장해두고, 동일한 입력이 다시 발생했을 때 함수를 재실행하는 대신 저장해둔 결과를 반환하는 방식으로 작동한다.이를 통해 동일한 계산을 반복하는 상황에서 성능을 크게 향상시킬 수 있다.React에서는 컴포넌트가 불필요하게 재렌더링되는 것을 방지하기 위해 메모이제이션 기법을 ..
[알고리즘] 백준 2675번 - 문자열 반복 문제 풀이 (Java)
·
알고리즘
문제 소개백준 2675번은 "문자열 반복"이라는 제목의 문제다.이 문제는 주어진 문자열의 각 문자를 특정 횟수만큼 반복하여 새로운 문자열을 만드는 것이 목표이다. 문제 해석이 문제는 다음과 같은 내용을 담고 있다. 테스트 케이스의 개수 T가 주어진다 (1 ≤ T ≤ 1,000).각 테스트 케이스는 반복 횟수 R(1 ≤ R ≤ 8)과 문자열 S가 공백으로 구분되어 주어진다.S의 길이는 적어도 1이며, 20글자를 넘지 않는다.S에는 QR Code "alphanumeric" 문자만 들어있다 (0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ$%*+-./:).각 테스트 케이스에 대해 S의 각 문자를 R번 반복한 새 문자열 P를 출력해야 한다.예시:입력: 3 ABC일 경우출력: AAABBBCCC ..
[React] Tesseract.js를 활용한 이미지 텍스트 인식(OCR) 구현하기📖
·
React
OCR 기술이란?OCR(Optical Character Recognition)은 광학 문자 인식 기술로, 이미지나 스캔된 문서에서 텍스트를 추출하는 기술이다.손으로 쓴 글씨, 인쇄된 텍스트, 혹은 사진 속 텍스트를 인식하여 편집 가능한 디지털 텍스트로 변환해준다.(일상에서는 명함 스캔, 영수증 디지털화, 책이나 문서 스캔 등에 활용됨.) OCR 기술은 크게 이미지 전처리, 문자 감지, 문자 인식, 후처리의 과정으로 나뉜다고 보면 된다.이미지를 조정하고 노이즈를 제거한 후 -> 텍스트 영역을 감지하고 -> 각 문자를 인식한 다음 ->오류를 수정하는 과정을 거친다.이러한 복잡한 과정은 프로그래머가 직접 구현하기 어렵지만, 다행히 Tesseract와 같은 라이브러리가 이 과정을 단순화해주어 웹 애플리케이션에서..
[Brew] Tree 명령어로 프로젝트 구조 시각화하기
·
Brew
GitHub에 있는 레포지토리의 리드미를 보면 가끔 프로젝트 구조가 Tree로 시각화되어 표현되어 있는 것을 본적이 있을 것이다.한 눈에 프로젝트 구조가 들어오는데 이것을 직접 하나하나 그려가며 하기엔 프로젝트가 커질 수록 힘들지 않을까?(사실 필자도 필요한 툴이었다...)이것을 명령어 하나로 해결해주는게 바로 Brew의 tree이다!!!Brew 설치Homebrew 설치가 안되어있다면관련해서는 아래 글을 참고하면 좋을 것 같다!!! [Python] macOS에서 Python 버전 관리하기(Homebrew vs pyenv)최근에 AI개론이라는 수업을 듣다가 spacy란 라이브러리를 사용해야되는 경우가 있었다.하지만 필자가 brew로 설치한 파이썬의 버전은 3.13버전이었고, spacy 라이브러리는 파이썬 ..
[Python] macOS에서 Python 버전 관리하기(Homebrew vs pyenv)
·
Python
최근에 AI개론이라는 수업을 듣다가 spacy란 라이브러리를 사용해야되는 경우가 있었다.하지만 필자가 brew로 설치한 파이썬의 버전은 3.13버전이었고, spacy 라이브러리는 파이썬 3.12버전까지만 지원을 하고 있었다.(항상 버전 오류가 개발자를 힘들게 하는 것 같다,,,)그러다가 문득 들었던 생각이 그저 brew로 파이썬 3.12를 따로 설치하는 것이 아닌 버전관리를 쉽게 왔다갔다 할 수 있는 방법이 없을까?라는 생각이 문득 들었다.그러다가 pyenv란 것을 알게 되었다.이번 글에서는 macOS에서 Python 버전을 관리하는 두 가지 주요 방법인 Homebrew와 pyenv에 대해 자세히 알아보고, 각각의 장단점을 비교해보려 한다.Homebrew란 무엇인가Homebrew는 macOS(또는 Lin..
[컴퓨터그래픽스] GPU의 구조와 작동 원리
·
컴퓨터그래픽스
GPU의 개요와 병렬 연산컴퓨터 그래픽스 분야를 공부하면서 가장 흥미로웠던 부분은 GPU(Graphics Processing Unit)의 병렬 처리 능력이었다.CPU가 복잡한 연산을 순차적으로 처리하는 것과 달리,GPU는 단순하지만 수많은 연산을 동시에 처리할 수 있는 구조로 설계되어 있다.GPU는 수천 개의 코어를 가지고 있어 동시에 여러 작업을 처리할 수 있다.이러한 특성은 3D 그래픽스와 같이 동일한 연산을 다른 데이터에 적용하는 SIMD(Single Instruction Multiple Data) 방식의 연산에 매우 효율적이다.예를 들어, 화면에 표시되는 각 픽셀의 색상을 계산하는 작업은 서로 독립적으로 수행될 수 있기 때문에 GPU의 병렬 구조를 활용하면 훨씬 빠르게 처리할 수 있다.셰이더(Sh..
[Next.js] layout.tsx에서의 metadata 이해하기 🔍
·
Next.js
Next.js Metadata란?Next.js 13버전부터 도입된 App Router에서는 metadata API를 통해 웹 페이지의 메타데이터를 쉽게 관리할 수 있게 되었다.메타데이터란 HTML 문서의 태그 내에 존재하는 정보들로, 웹 페이지의 제목, 설명, 키워드, Open Graph 태그 등을 포함.이러한 메타데이터는 검색 엔진 최적화(SEO)에 중요한 역할을 하며, 소셜 미디어에서 공유될 때 웹 페이지가 어떻게 표시될지 결정한다. Next.js의 metadata API는 개발자가 각 페이지 또는 레이아웃 컴포넌트에서 메타데이터를 직접 정의할 수 있게 해주어, 페이지별로 맞춤화된 메타데이터 설정이 가능하다.특히 TypeScript와 함께 사용하면 타입 안정성을 보장받으면서 메타데이터를 관리할 수 ..