Computer Programming/AI 75

TIL_Channels

기술적 의사 결정 채팅 기능: 실시간으로 AI와 메시지를 주고 받는 기능을 통해 영어 회화 능력을 향상시킬 수 있는 서비스 Channels client와 server 사이의 실시간 양방향 *통신 및 비동기 처리가 능하도록 해주는 기능들을 모아놓은 library - WebSocket - 연결이 유지되는 동안 실시간 양방향 통신을 지원 - * Redis와 연동 - 데이터를 Cache memory에 저장하기 때문에 빠르게 메시지 전달이 가능 - 여러 server에 분산시켜 관리하는 scale out 방식으로 많은 user의 handling이 가능 - *redid server에 수평적 확장(scale out)이 용이하여 트래픽 상승 대비하여 유연하게 대응이 가능 - 메시지를 전달하는 시스템으로, publishe..

TIL_장바구니 비움과 주문 내역 저장

목적 결제 시스템에서 상품이 성공적으로 결제된 후, 장바구니는 비워주고 결제 내역을 따로 기록해 두려고 함 가능한 방법들 1) 해당 장바구니의 DB 값을 비우고, 같은 내용을 order이라는 entity로 이동하여 저장CartItem(장바구니) entity의 값 중 status(상태)가 ‘paid’일 경우, 해당 user의 장바구니 값들을 for문으로 하나 씩 가져와서 OrderItem(결제 내역) entity에 저장 2) 1)의 내용과 같지만 추가적으로 ‘transaction.atomic()’으로 감싸주어 어떠한 예외가 발생하게 된다면 rollback을 하고, 예외가 발생하지 않는다면 커밋을 하도록 함 선택한 방법 2)의 ‘transaction.atomic()’ 방법을 선택하여 데이터베이스 작업이 안전..

TIL_PortOne을 이용한 결제 시스템

결제 시스템 구현 목적 웹 사이트 기능 중, AI 채팅을 요청하거나 AI Reading 부분에서 문제 생성을 할 때마다 chatGPT 토큰을 사용하게 된다. 일정량의 토큰 이상을 사용했을 경우 요금이 부과가 되는 점을 고려하여 웹사이트의 자체적인 코인을 만들어 chatGPT 토큰을 남용할 수 없도록 기획하였다. 기본으로 제공되는 코인이 부족해진다면 상품 페이지에서 원하는 만큼 코인을 구매할 수 있다. 결제 시스템 관련 페이지 상품 선택 페이지 장바구니 페이지 결제 창 PortOne 온라인에서 상품을 판매하기 위해서는 결제 서비스가 필요하다. 수많은 은행, 신용카드 회사와 직접 문의하여 결제 수단을 연동하고 발생하는 모든 거래 내역에 대한 승인을 요청할 수도 있지만 매우 복잡한 과정이 될 것이다. 그래서 ..

TIL_Generator란?

Generator은 python에서 반복 가능한 객체(iterator)를 생성하는 함수이다. 일반 함수와 비슷하지만, 'return' 대신 'yield'를 사용하여 값을 생성하고 호출자에게 반환한다. def my_generator(): yield 1 yield 2 yield 3 gen = my_generator() for value in gen: print(value) 위의 Generator 함수 예제를 보면, my_generator 함수가 호출을 통해 Generator 객체를 반환하고, yield를 통해 값을 반환하고 호출자에게 제어를 양도한다. 그리고 for loop을 통해 Generator에서 값을 하나씩 가져와 출력할 수 있다. Generator 사용의 장점 메모리 효율성: 여러 값을 한 번에 메..

TIL_Closure란?

Python에서 Closure은 함수 내에서 다른 함수를 정의하고, 이 내부 함수가 외부 함수의 local variable을 기억하고 있다가 외부 함수의 실행이 끝난 후에도 그 변수에 접근할 수 있게 만드는 메커니즘이다. def outer_function(x): # 외부 함수의 지역 변수 def inner_function(y): return x + y # outer_function의 x에 접근 가능 return inner_function # inner_function을 반환 closure_instance = outer_function(10) # outer_function을 호출하여 closure_instance에 할당 result = closure_instance(5) # closure_instance를..

TIL_정적 타입(Static Typing)과 동적 타입(Dynamic Typing)

프로그래밍에서 정적 타입과 동적 타입은 변수의 타입을 결정하는 방식을 나타낸다. 정적 타입(Static Typing) 언어에서는 변수를 선언할 때 해당 변수의 타입을 명시적으로 지정해야 하지만, 동적 타입(Dynamic Typing) 언어에서는 변수의 타입을 명시적으로 지정하지 않아도 된다. 이 두 타입의 장단점에 대한 정리를 해 보았다. 정적 타입(Static Typing) 동적 타입(Dynamic Typing) 특징 변수의 데이터 타입이 compile 시간에 결정되고, runtime 동안에는 변경할 수 없음 변수의 데이터 타입이 runtime 동안 결정되고, 동적으로 변경할 수 있음 언어 종류 C, C++, Java, Swift, Kotlin Python, JavaScript, Ruby, PHP 장점..

TIL_Interpreter와 Compiler란?

Programming 언어마다 다른 방식으로 코드를 실행하게 된다. Python은 Interpreter 방식으로, C나 Java 등은 Compiler 방식으로 코드가 구동된다. 그러면 Interpreter과 Compiler은 서로 어떻게 다른 것인지 알아보았다. Interpreter Compiler 특징 runtime 이후에 script를 한 줄씩 해석하여 프로그램을 실행하는 방식 runtime 전 binary code로 프로그래밍 언어를 변환하고 프로그램을 실행하는 방식 장점 Runtime 실행 속도가 빠름 소스 코드를 직접 실행하므로 초기 실행이 빠름 Debugging 용이 행 단위로 코드를 해석하므로 실시간 debugging이 가능 플랫폼 독립적 virtual machine을 두고 해석을 하기 때문..

LIST