전체 글 378

스레드 개수 설정 및 성능 최적화와 방법들

1. 스레드란? 스레드는 프로그램에서 실행되는 가장 작은 단위의 작업 흐름입니다. 여러 개의 스레드를 사용하면 병렬 처리를 통해 성능을 향상시킬 수 있습니다. CPU가 여러 개의 스레드를 동시에 실행할 수 있기 때문에, 적절한 개수의 스레드를 사용하면 응답 속도를 개선하고 자원을 효율적으로 활용할 수 있습니다.  📌 스레드 개수 설정 방법 및 적정 개수 판단 방법비동기 작업에서 스레드 풀(ThreadPool) 크기를 설정할 때,*"최적의 스레드 개수"**를 결정하는 것은 매우 중요한데, 이를 판단하는 방법을 설명할게요. 1️⃣ 스레드 개수 설정 기준 (CPU vs. I/O 작업에 따라 다름)스레드 개수를 설정할 때는 어떤 종류의 작업을 처리하는지에 따라 다르게 결정해야 함.작업 유형 설명 스레드 개수 ..

Spring Boot 비동기 처리(@Async)로 성능 향상 원리와 동기/비동기

1. 코드 작동 방식 이 코드는 이미지 다운로드 및 변환 작업을 비동기적으로 실행하는 역할을 합니다. 🔹 실행 흐름1️⃣ 클라이언트가 processImage(imageUrl)을 호출2️⃣ @Async가 적용된 메서드이므로 새로운 스레드에서 실행3️⃣ 메서드 실행 후 즉시 CompletableFuture 객체를 반환 (메인 스레드 블로킹 없음)4️⃣ 백그라운드에서 downloadAndProcessImage(imageUrl) 실행5️⃣ 작업 완료 후 processedImageUrl을 반환2. 비동기 성능 향상 원리 (동기 vs. 비동기)구분 동기 처리 (Synchronous) 비동기 처리 (Asynchronous)실행 방식하나의 작업이 끝날 때까지 대기여러 작업을 동시에 실행스레드단일 스레드에서 순차 실행..

Spring 2025.02.19

프로젝트 : CDN과 24년 선거 대비 자체 이미지 서버 개발 및 최적화

CDN(Content Delivery Network) 적용 및 운영 경험CDN은 전 세계 여러 지역에 분산된 엣지 서버(Edge Server)를 통해 사용자에게 정적 및 동적 컨텐츠를 빠르고 안정적으로 전달하는 기술입니다. 대규모 트래픽을 효율적으로 분산하고, 웹사이트의 로딩 속도를 단축하며, 서버 부하를 줄이는 데 중요한 역할을 합니다. 프로젝트 배경24년 선거 기간 중 Kakao, RCS, MMS 메시지 대량 발송 시 서버 다운 및 전송 속도 저하 문제 발생 가능성기존 메시지 서버에서 이미지 트래픽이 혼합되어 처리되면서 부하 급증트래픽 폭증에도 안정적으로 이미지 전송을 처리할 수 있는 독립적인 이미지 서버 필요 ✅ 주요 개발 내용자체 이미지 서버 설계 및 구축메시지 본문과 이미지 트래픽을 분리하여 전..

구글 애널리틱스 활용 웹 개발 적용

구글 애널리틱스란?구글 애널리틱스는 웹사이트의 트래픽과 사용자 행동을 분석할 수 있는 무료 웹 분석 도구입니다. 웹사이트에 방문하는 사용자들의 행동, 유입 경로, 체류 시간 등 다양한 데이터를 수집하고 분석할 수 있습니다. 주요 기능과 특징1. 실시간 모니터링현재 웹사이트를 방문 중인 사용자 수사용자들이 보고 있는 페이지사용자의 지리적 위치     2. 사용자 행동 분석페이지별 방문 시간이탈률과 전환율사용자의 이동 경로 3. 트래픽 소스 분석유입 경로(검색엔진, 소셜미디어, 직접 방문 등)검색어 분석캠페인 효과 측정 왜 구글 애널리틱스인가?개발한 프로젝트는 다양한 메시징 서비스를 제공하는 플랫폼입니다. 이런 복잡한 서비스에서는 사용자들이 어떤 기능을 주로 사용하는지, 어떤 부분에서 어려움을 겪는지 파악하..

프로그래머스 코딩 기초 트레이닝 Python Day16 ~ Day25

DAY16 문자열 대문자로 바꾸기def solution(myString): return myString.upper()테스트:print(solution("aBcDeFg"))# "ABCDEFG"print(solution("AAA"))# "AAA"설명:upper() 메서드는 문자열의 모든 알파벳을 대문자로 변환이미 대문자인 경우는 그대로 유지됨 소문자로 바꾸기def solution(myString): return myString.lower()테스트:print(solution("aBcDeFg"))# "abcdefg"print(solution("aaa"))# "aaa"설명:lower() 메서드는 문자열의 모든 알파벳을 소문자로 변환이미 소문자인 경우는 그대로 유지됨 배열에서 문자열 대소문자 변환하기def ..

프로그래머스 코딩 기초 트레이닝 Python Day6 ~ Day15출처

DAY6 조건문 반복문 마지막 두 원소def solution(num_list):# 마지막 원소와 그 전 원소 비교 if num_list[-1] > num_list[-2]:# 마지막 원소가 더 크면 그 차이를 추가 num_list.append(num_list[-1] - num_list[-2]) else:# 마지막 원소가 더 크지 않으면 마지막 원소의 두 배를 추가 num_list.append(num_list[-1] * 2) return num_list설명:리스트의 마지막 원소와 그 전 원소 비교:num_list[-1]은 마지막 원소num_list[-2]는 마지막에서 두 번째 원소조건에 따른 값 추가:마지막 원소가 더 크면: 두 원소의 차이를 추가마지막 원소가 더 크..

레거시 프로젝트 장애 처리 ORA-00001

[장애발생]기존 회사에는 20년이 넘은 메세지 관리자 레거시 프로젝트가 남아있다. 최근 해당 코드는 아에 업데이트를 하지않고 일부 계정만 사용을 하는데 관리자가 계정등록이 안된다는 메일을 확인하였다. 해당 계정이 등록되지 않은 이유는 0.1초 사이에 클릭이 2번 연속 되어 해당 DB에 값을 넣는 중 2번 넣어서 발생하는 문제였다. TBL_STAT_CONFIG -> TBL_ROUTING -> TBL_CPINFO -> TBL_DETAIL_CPINFO                                                 TBL_STAT_CONFIG -> TBL_ROUTING -> TBL_CPINFO -> TBL_DETAIL_CPINFO 이런식으로 디비에 값이 들어가는 중 중복으로 값이 들어가는..

Error 2025.02.06

프로그래머스 코딩 기초 트레이닝 Python Day1 ~ Day5

DAY 1문자열 출력str = input()print(str) a, b 출력a, b = map(int, input().strip().split(' '))print("a =", a)print("b =", b)a, b = map(int, input().strip().split(' '))input(): 사용자로부터 문자열을 입력받습니다.strip(): 입력된 문자열의 앞뒤 공백을 제거합니다.split(' '): 문자열을 공백을 기준으로 나누어 리스트로 만듭니다map(int, ...): 리스트의 각 문자열을 정수로 변환합니다a, b = ...: 변환된 두 정수를 변수 a와 b에 각각 할당합니다예시: 입력이 "4 5"인 경우"4 5" (입력) → "4 5" (strip) → ["4", "5"] (split) → ..

데이터베이스 종류 와 선택(PostgreSQL,MySQL,MongoDB,Redis,Elasticsearch,Cassandra,Neo4j)

왜 데이터베이스 선택이 중요할까요?데이터베이스는 애플리케이션의 근간을 이루는 핵심 요소입니다. 잘못된 선택은 나중에 돌이키기 어려운 문제를 초래할 수 있습니다. 예를 들어, SNS 서비스를 만든다고 가정해보겠습니다. 관계형 데이터베이스만을 고집하다가 나중에 대용량 트래픽을 감당하지 못하는 상황이 발생할 수 있습니다. 반대로, NoSQL을 선택했는데 데이터의 일관성이 중요해지는 경우도 있을 수 있죠.  데이터베이스의 종류와 특징관계형 데이터베이스 (RDBMS)PostgreSQL과 MySQL은 가장 널리 사용되는 관계형 데이터베이스입니다. 이들은 데이터의 일관성과 무결성이 중요한 상황에서 탁월한 선택이 됩니다.PostgreSQL기업용 데이터베이스의 강자입니다. 복잡한 쿼리 처리, 트랜잭션 관리가 필요한 금융..

DB 2024.11.27

코틀린 디자인 패턴과 아키텍처

1. 디자인 패턴이란? 🤔1.1 쉬운 비유로 이해하기디자인 패턴은 집을 지을 때 사용하는 설계도와 같습니다:검증된 방법으로 문제 해결유지보수가 쉬워짐다른 개발자들과 소통이 쉬워짐예를 들어, 아파트를 지을 때 주방, 화장실, 거실의 위치를 계획하는 것처럼, 앱을 만들 때도 각 부분의 역할과 위치를 계획합니다.2. MVVM 패턴 🏗️2.1 MVVM이란?쉽게 설명하면, 앱을 세 부분으로 나누는 방법입니다:Model: 데이터View: 화면ViewModel: 데이터를 화면에 맞게 가공2.2 실생활 비유레스토랑으로 비유하면:Model: 주방에서 요리하는 셰프 (데이터 처리)View: 손님이 보는 메뉴판과 음식 (화면)ViewModel: 주문을 받고 전달하는 웨이터 (중간 역할)2.3 간단한 예제// Model:..

Kotlin 2024.11.26

코틀린(Kotlin)데이터 클래스와 sealed 클래스

1. 데이터 클래스 (Data Class) 📦1.1 데이터 클래스란?데이터 클래스는 데이터를 보관하고 전달하는 것이 주 목적인 클래스입니다. 일반적으로 다음과 같은 상황에서 사용됩니다:API 응답 데이터 모델링// API 응답을 표현하는 데이터 클래스data class UserResponse( val id: Int, val name: String, val email: String, val age: Int)UI 상태 표현// 화면에 표시할 사용자 정보를 담는 데이터 클래스data class UserUiState( val userName: String, val userImage: String, val followersCount: Int, val isFollowin..

Kotlin 2024.11.25

React와 Next.js 란?

# 실생활 비유로 이해하기Next.js를 레스토랑에 비유하면:React는 요리사: UI 컴포넌트를 만듦Next.js는 레스토랑 전체 시스템:주문 접수 (라우팅)주방 관리 (서버 사이드 렌더링)서빙 (페이지 전달)매장 관리 (최적화) 등을 모두 관리 1. React란? 🎯1.1 React 소개React는 Facebook(현 Meta)에서 만든 JavaScript 라이브러리로, 사용자 인터페이스(UI)를 만들기 위한 도구입니다.1.2 React의 특징1) 컴포넌트 기반웹사이트를 레고 블록처럼 작은 조각(컴포넌트)으로 나누어 개발합니다.// 버튼 컴포넌트 예시function Button({ text, onClick }) { return ( {text} );}// 사용 예시funct..

Next.js 2024.11.24

Hibernate 란?? (주요특징, 아키텍쳐, 장단점 등)

1. Hibernate의 기본 개념 🌟 실생활 비유:통역사가 두 나라 사람의 대화를 돕는 것처럼Hibernate는 Java/Kotlin 객체와 데이터베이스 사이의 '통역사' 역할1.1 ORM이란?정의: Object-Relational Mapping의 약자역할: 객체 지향 프로그래밍과 관계형 데이터베이스 사이의 다리 역할작동 방식: 자바/코틀린 객체를 데이터베이스 테이블로 자동 매핑1.2 실생활 비유레스토랑 시스템으로 비유하면:테이블(Table) = 메뉴 카테고리로우(Row) = 개별 메뉴 항목컬럼(Column) = 메뉴의 속성(이름, 가격, 설명 등)Hibernate = 주방과 홀을 연결하는 서빙 직원 2. Hibernate 아키텍처 🏗️2.1 주요 컴포넌트 Session Factory ..

DB 2024.11.23

개발자와 비개발자와의 효과적인 협업 가이드: 소통의 벽을 허물다

1. 서론: 왜 협업이 어려운가? 🤔개발자와 비개발자 사이에는 종종 '소통의 벽'이 존재합니다. 이는 단순히 기술적 지식의 차이가 아닌, 서로 다른 관점과 용어, 우선순위에서 비롯됩니다.흔한 오해와 어려움개발자: "요구사항이 자주 변경되고 모호해요."비개발자: "왜 이렇게 개발이 오래 걸리나요?"개발자: "기술적 제약을 이해하지 못하시네요."비개발자: "개발자가 비즈니스를 이해하지 못해요." 2. 효과적인 소통 전략 💬2.1 전문 용어 사용 줄이기❌ 나쁜 예:"REST API 엔드포인트를 구현하고 JWT 인증을 추가했습니다."✅ 좋은 예:"로그인 기능을 만들고 보안 기능을 추가했습니다."2.2 시각적 자료 활용와이어프레임플로우차트프로토타입간단한 데모2.3 단계적 설명1단계: 큰 그림 설명2단계: 주요..

업무 기록/ETC 2024.11.22

Kotlin(코틀린) FLow 란?

1. Flow란? 🌊Flow는 시간이 지남에 따라 여러 값을 발행할 수 있는 데이터 스트림입니다.Flow는 코틀린에서 제공하는 비동기 스트림 처리를 위한 API입니다. RxJava의 Observable이나 LiveData와 유사하지만, 코루틴을 기반으로 하며 더 간단하고 효율적인 API를 제공합니다.쉽게 설명하면:실시간으로 업데이트되는 주식 가격 알림타이핑할 때마다 바뀌는 검색 결과SNS의 실시간 피드 업데이트 같은 것들을 처리할 때 사용합니다.1.1 Flow의 특징비동기적으로 데이터 스트림 처리Cold Stream 특성 (구독할 때만 데이터 발행)코루틴 기반의 백프레셔(Backpressure) 지원구조화된 동시성 제공1.2 기본 사용 예제fun simple(): Flow = flow { for ..

Kotlin 2024.11.21

Kotlin(코틀린) 코루틴으로 비동기 프로그래밍

Kotlin의 강력한 기능 중 하나인 코루틴(Coroutines)에 대해 자세히 알아보도록 하겠습니다. 비동기 프로그래밍을 쉽고 효율적으로 구현할 수 있는 코루틴의 기본 개념부터 실전 활용법까지 살펴보겠습니다.1. 코루틴이 뭔가요? 🤔코루틴은 비동기 프로그래밍을 위한 코틀린의 솔루션입니다. 기존의 콜백이나 Future/Promise 패턴의 복잡성을 줄이고, 동시성 프로그래밍을 더욱 직관적으로 작성할 수 있게 해줍니다.실생활 비유로 이해하기식당에서 일하는 웨이터를 생각해봅시다. 웨이터가 한 테이블의 주문을 받고 주방에 전달한 후, 음식이 나올 때까지 그 자리에서 기다린다면 어떨까요? 매우 비효율적이겠죠! 실제로는 주문을 전달한 후 다른 테이블의 손님도 응대합니다.코루틴도 이와 같습니다! 시간이 오래 걸리..

업무 기록/ETC 2024.11.20

코틀린이란? (Kotlin)

1. 코틀린이란? 🎯코틀린(Kotlin)은 JetBrains사가 2011년에 공개한 현대적인 프로그래밍 언어입니다. Java 플랫폼에서 완벽하게 동작하면서도, 더 간결하고 안전한 코드 작성을 가능하게 하는 실용적인 언어입니다.1.1 코틀린의 탄생 배경JetBrains의 필요성: 자사 제품 개발에서 Java의 한계를 느낌현대적 기능 요구: 함수형 프로그래밍, Null 안전성 등 필요생산성 향상: 보일러플레이트 코드 감소 목적Java와의 호환성: 기존 Java 자산 활용 필요 Java vs Kotlin 코드 비교Java 코드:public class Person { private String name; private int age; public Person(String name, int ag..

Kotlin 2024.11.19

ELK 란? (Elasticsearch , Logstash , Kibana, Beats ) 스택

회사에서 메세지 발송 간 ELK를 활용한 메세지 발송 처리량, 성공, 지연, 문제 등을 실시간으로 시각화하면서 배운 내용을 정리해보기로 하였다. ELK란?ELK는 세 가지 오픈소스 도구의 조합입니다:Elasticsearch (E): 검색 및 분석 엔진Logstash (L): 데이터 수집 및 처리 도구Kibana (K): 데이터 시각화 도구쉽게 비유하면:Logstash는 정보를 수집하는 '청소부'Elasticsearch는 수집된 정보를 저장하고 검색하는 '창고'Kibana는 저장된 정보를 보기 좋게 보여주는 '전시장' # Beats란?Beats는 서버에 설치하여 다양한 유형의 데이터를 Elasticsearch나 Logstash로 전송하는 경량 데이터 수집기입니다. 각각의 Beat는 특정 유형의 데이터 수집..

LLM(Open AI) 2024.11.18

[Python/AI] Hugging Face 감정 분석 웹 애플리케이션 코드 분석 - 2편

0.전체 코드https://hunseop2772.tistory.com/373 [Python/AI] Hugging Face와 Streamlit으로 구현하는 감정 분석 웹 애플리케이션 -1편 코드개요이번 포스팅에서는 Hugging Face의 Transformers 라이브러리와 Streamlit을 활용하여 감정 분석 웹 애플리케이션을 구현하는 방법을 다룹니다. 프로덕션 레벨의 코드 구조와 실제 구현 방법에 중점을hunseop2772.tistory.com 1. 프로젝트 아키텍처 분석1.1 전체 구조sentiment_analysis/├── src/│ ├── analyzer.py # 핵심 감정 분석 로직│ ├── utils.py # 유틸리티 함수│ └── app.py # ..

LLM(Open AI) 2024.11.17

[Python/AI] Hugging Face와 Streamlit으로 구현하는 감정 분석 웹 애플리케이션 -1편 코드

개요이번 포스팅에서는 Hugging Face의 Transformers 라이브러리와 Streamlit을 활용하여 감정 분석 웹 애플리케이션을 구현하는 방법을 다룹니다. 프로덕션 레벨의 코드 구조와 실제 구현 방법에 중점을 두어 설명하겠습니다.기술 스택Python 3.8+Hugging Face TransformersStreamlitPyTorchVS Code프로젝트 구조sentiment_analysis/├── .vscode/ # VSCode 설정│ └── settings.json├── src/ # 소스 코드│ ├── __init__.py│ ├── analyzer.py # 감정 분석 핵심 로직│ ├── utils.py ..

LLM(Open AI) 2024.11.16

Hugging Face 회원가입, 토큰 발급, APIKEY 발급 방법, 개발 환경 설정

허깅페이스란? 어원? https://hunseop2772.tistory.com/371 NLP와 Hugging Face 란 어원 등 사용법🌟 AI가 언어를 이해한다는 것상상해보세요. 여러분의 스마트폰이 "배고파"라는 메시지를 받았을 때, 가까운 맛집을 추천해주거나, 긴 문서를 몇 줄로 요약해주거나, 외국어를 실시간으로 번역hunseop2772.tistory.com  1️⃣ Hugging Face 계정 만들기 Step 1: 회원가입웹사이트 접속huggingface.co 방문우측 상단 'Sign Up' 클릭 필수 정보 입력Username: 영문/숫자 조합 (예: john_doe123)Email: 실제 사용하는 이메일Password: 8자 이상, 특수문자 포함이메일 인증인증 메일 확인링크 클릭하여 인증 완료 ..

LLM(Open AI) 2024.11.15

NLP와 Hugging Face 란 어원 등 사용법

🌟 AI가 언어를 이해한다는 것상상해보세요. 여러분의 스마트폰이 "배고파"라는 메시지를 받았을 때, 가까운 맛집을 추천해주거나, 긴 문서를 몇 줄로 요약해주거나, 외국어를 실시간으로 번역해주는 상황을... 이것이 바로 자연어 처리(NLP)의 마법입니다. NLP란 무엇일까요?자연어 처리(Natural Language Processing, NLP)는 컴퓨터가 인간의 언어를 이해하고 처리하는 기술입니다. 쉽게 말해서:카카오톡 자동 답장 추천네이버 검색어 자동 완성유튜브 자막 자동 생성 이 모든 것이 NLP 기술입니다. 🤗 Hugging Face의 이름과 역사이름의 유래Hugging Face라는 이름은 아이폰의 이모지 '🤗' (hugging face 이모지)에서 왔습니다. 이 이모지는 포옹하는 얼굴을 나타..

LLM(Open AI) 2024.11.14

React 애플리케이션의 고급 권한 관리 시스템 구현하기: 실제 코드와 주석으로 이해하기

0. React 애플리케이션의 권한 관리 시스템 흐름도초기 접근 프로세스사용자 접근토큰 확인토큰 유효성 검사권한 검증기능별 권한 검증 프로세스CRUD 작업별 권한 확인권한에 따른 UI 요소 표시/숨김기능 실행 전 권한 재확인에러 처리 프로세스권한 없음 처리토큰 만료 처리리프레시 실패 처리1. 소개안녕하세요! 오늘은 프로덕션 레벨의 React 애플리케이션에서 권한 관리 시스템을 어떻게 구현하는지, 상세한 코드와 주석을 통해 알아보겠습니다.2. 권한 관리의 핵심 구조2.1 withAuth HOC (Higher-Order Component)/** * 권한 검증을 위한 Higher-Order Component *@paramgssp - getServerSideProps 함수 *@paramrequiredPermis..

Next.js 2024.11.13

Next.js의 라우팅 시스템 이란

1. 기본 용어 설명1.1 주요 용어라우팅(Routing): 웹 애플리케이션에서 URL에 따라 다른 페이지를 보여주는 시스템페이지(Page): Next.js에서 route와 연결된 React 컴포넌트동적 라우팅(Dynamic Routing): URL 파라미터를 사용하여 동적으로 페이지를 생성하는 방식Middleware: 페이지 렌더링 전에 실행되는 코드SSR(Server Side Rendering): 서버에서 페이지를 렌더링하는 방식CSt Side Rendering: 브라우저에서 페이지를 렌더링하는 방식1.2 Next.js 라우팅 흐름도 2. File-based 라우팅 시스템2.1 기본 구조 설명pages/ ├── index.tsx # 홈페이지 (/) ├── about.tsx # 정적 페이지 (/abou..

Next.js 2024.11.12

Next.js의 렌더링 전략: SSR과 CSR, SSG (Hydration, Pre-rendering, Dynamic Routes, Build Time, ISR )

1. 웹 렌더링의 이해1.1 렌더링이란?렌더링은 코드를 사용자가 볼 수 있는 인터페이스로 변환하는 과정입니다. 웹에서는 HTML, CSS, JavaScript를 브라우저가 이해하고 화면에 표시할 수 있는 형태로 바꾸는 것을 의미합니다.1.2 주요 용어 설명Hydration: 서버에서 보낸 정적 HTML에 JavaScript 이벤트 핸들러와 상태를 입히는 과정Pre-rendering: 미리 HTML을 생성하는 과정Dynamic Routes: URL 패턴에 따라 다른 콘텐츠를 보여주는 페이지Build Time: 애플리케이션을 배포용으로 빌드하는 시점 2. 클라이언트 사이드 렌더링 (CSR)2.1 CSR의 작동 방식const ProductPage = () => {// 상태 관리 const [product..

Next.js 2024.11.11

React의 고차 컴포넌트(HOC)

1. HOC(High Order Component)란?고차 컴포넌트(HOC)는 React에서 컴포넌트 로직을 재사용하기 위한 고급 기술입니다. 코드로 보면 다음과 같습니다:/** * 기본적인 HOC 구조 *@paramWrappedComponent - 감싸질 컴포넌트 *@returns 새로운 컴포넌트 */const withSomething = (WrappedComponent) => { return class extends React.Component { render() {// 추가적인 props와 함께 컴포넌트 반환 return ; } }} 2. HOC가 필요한 이유2.1 횡단 관심사(Cross-Cutting Concerns) 해결여러 컴포넌트에서 공..

Next.js 2024.11.10

React 기본 용어 및 개념 (Component, Props, State, 랜더링....) 핵심 흐름

0. React Component의 핵심 흐름React Component는 크게 4가지 핵심 요소로 구성되며, 이들이 서로 상호작용하며 동작합니다: 1. Props와 State Props: 부모가 자식에게 전달하는 데이터 State: 컴포넌트 자체적으로 관리하는 데이터 이 두 데이터는 Data Flow를 통해 앱 전체의 데이터 흐름을 만듭니다. 2. Lifecycle (생명주기) 컴포넌트가 생성되고(mount), 업데이트되고(update), 제거되는(unmount) 전체 과정을 관리 각 단계에서 필요한 작업을 수행할 수 있게 해줍니다. 3. Rendering Props나 State가 변경되면 컴포넌트를 다시 그립니다. Virtual DOM을 통해 변경사항을 효율적으로 실제 화면에 반영합니다. 4. Dat..

Next.js 2024.11.09

Asterisk : AI 음성처리 시스템 흐름 및 설정

Asterisk와 AI 음성처리 시스템의 대화 흐름을 정리하면서 간단하게 예시를 들어보겠습니다. 사전에 Asterisk PBK 간단한 설명/설정과 구조에 대해서 확인하기 위해서는 하단 링크를 이동하세요 https://hunseop2772.tistory.com/363 Asterisk PBK 란? 간단한 설명/설정과 구조Asterisk PBX( 사설교환기) 1. 개요통신회사에서 음성 및 메세징 발송 관리를 하면서 이번에  Astrisk를 활용한 음성 메세지 시스템을 구축하면서 간단하게 공부한 내용을 정리하게 되었다. Asterisk란hunseop2772.tistory.com   1. 기본 대화 흐름도   2. 실제 대화 예시와 처리 과정[dialog-flow]; 1. 초기 인사exten => s,1,Answ..

LLM(Open AI) 2024.11.08

Oracle 데이터베이스 컬럼 조회 시 발생하는 ORA-00904 에러 해결하기

1. 문제 상황기존 웹 사이트에는 9개의 서버와 DB가 연결되어 있고 해당 GW를 1개만 작업한 경우에 발생한 문제이다. 프로젝트에서 Oracle 데이터베이스의 테이블 컬럼을 조회하는 과정에서 ORA-00904: "TYPE": invalid identifier 에러가 발생했습니다. 이 에러는 주로 존재하지 않는 컬럼을 참조하거나, 컬럼의 권한 문제로 인해 발생합니다.  1.1 에러 로그Caused by: java.sql.SQLSyntaxErrorException: ORA-00904: "TYPE": invalid identifier at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:509) at oracle.jdbc.driver.T..

Error 2024.11.07

Asterisk PBK 란? 간단한 설명/설정과 구조

Asterisk PBX( 사설교환기) 1. 개요통신회사에서 음성 및 메세징 발송 관리를 하면서 이번에  Astrisk를 활용한 음성 메세지 시스템을 구축하면서 간단하게 공부한 내용을 정리하게 되었다. Asterisk란?오픈소스 PBX(Private Branch Exchange) 시스템1999년 Mark Spencer가 개발소프트웨어 기반 전화교환 시스템기존 하드웨어 기반 교환기의 대안  주요 특징유연한 확장성다양한 프로토콜 지원 (SIP, H.323, IAX2 등)무료 오픈소스커스터마이징 가능강력한 API 지원  통화 흐름 기본 구조주요 구성 요소Caller (발신자) : 통화를 시작하는 주체, 내선 전화기 또는 외부 전화 -> 수신 요청 !Channel Driver (채널 드라이버) : 다양한 통신 프..

LLM(Open AI) 2024.11.04