정의

원래 서버의 자원을 조회(read) 하는 용도로 설계된 HTTP 메서드

REST 원칙에서 GET은 멱등(idempotent) 하고 안전(safe) 해야 하기 때문에, 

여러 번 호출해도 서버 상태가 변하지 않음

웹 서버에 데이터 변경 요청 없이, 리소스의 현재 상태를 읽거나 검색할 때 주로 사용

 

특징

- 멱등성 : 서버의 데이터를 변경하지 않음

- 안전성 : 모든 데이터 URL의 쿼리 문자열을 통해 전달됨

- 요청 본문 없음 : 모든 데이터는 URL의 쿼리 문자열을 통해 전달

- 캐싱 : 브라우저가 응답 결과를 캐시하여 성능 향상 가능

 

예시

GET /static/logo.png HTTP/1.1
Host: example.com

HTTP/1.1 200 OK
Cache-Control: max-age=86400

▲ 브라우저는 로고 이미지를 하루 동안 캐시해두고, 재방문 시 서버 요청 없이 바로 보여줌

 

정리

- 안전하고 멱등한 요청, 캐시활용 가능

- 실시간성이 중요하거나 민감한 데이터는 POST/PUT과 적절한 캐시 제어 헤더 권장

 

 

 

HTTP GET 메소드와 POST 메소드의 비교

HTTP 요청 메소드는 요청 자원에 대해 웹 서버에게 내리는 명령이다. 메소드에는 GET, POST, HEAD, PUT, DELETE, TRACE, CONNECT, OPTIONS 등이 있다. 1. GET 메소드 GET 요청의 특징 URL에 데이터를 포함하여 데이터

atoz-develop.tistory.com

 

Http Method 란? (GET, POST, PUT, DELETE)

평소에 코딩을 하면서 서버와 클라이언트가 소통을 하기 위해서 보통 Http를 이용을 하게 되었습니다. 그런데 GET, POST, PUT, DELETE 등 여러가지의 Http Method 가 존재하는데 명확하게 사용하고 있을까?

velog.io

 

 

🌐 HTTP 메서드 종류 & 요청 흐름 💯 총정리

HTTP Method 종류 HTTP 메서드란 클라이언트와 서버 사이에 이루어지는 요청(Request)과 응답(Response) 데이터를 전송하는 방식을 일컫는다. 쉽게 말하면 서버에 주어진 리소스에 수행하길 원하는 행동,

inpa.tistory.com

 

poetry shell은 해당 프로젝트의 가상환경을 활성화하는 명령어이다.

그러나 poetry 버전이 2.0으로 업데이트 되면서

해당 명령어가 삭제되었다.

 

갑자기 없어진 명령어가 불편하게 느껴져 해결방법을 찾던 중,

shell 명령어를 다시 사용할 수 있는 plug-in 설치 방법을 찾았다.

poetry self add poetry-plugin-shell

 

poetry에 추가패키지를 설치하는 self명령어로 간단하게 plug-in을 설치할 수 있다.

해당 플러그인을 설치한 후 poetry shell 명령어를 실행하면,

 프로젝트/.venv/bin 경로에 있는 activate 파일을 실행하여 가상환경을 활성화한다.

 

가상환경 활성화하는 과정이 궁금해서 살펴본 activate 파일의 스크립트는 아래와 같다.

# This file must be used with "source bin/activate" *from bash*
# you cannot run it directly


if [ "${BASH_SOURCE-}" = "$0" ]; then
    echo "You must source this script: \$ source $0" >&2
    exit 33
fi

deactivate () {
    unset -f pydoc >/dev/null 2>&1 || true

    # reset old environment variables
    # ! [ -z ${VAR+_} ] returns true if VAR is declared at all
    if ! [ -z "${_OLD_VIRTUAL_PATH:+_}" ] ; then
        PATH="$_OLD_VIRTUAL_PATH"
        export PATH
        unset _OLD_VIRTUAL_PATH
    fi
    if ! [ -z "${_OLD_VIRTUAL_PYTHONHOME+_}" ] ; then
        PYTHONHOME="$_OLD_VIRTUAL_PYTHONHOME"
        export PYTHONHOME
        unset _OLD_VIRTUAL_PYTHONHOME
    fi

    # The hash command must be called to get it to forget past
    # commands. Without forgetting past commands the $PATH changes
    # we made may not be respected
    hash -r 2>/dev/null

    if ! [ -z "${_OLD_VIRTUAL_PS1+_}" ] ; then
        PS1="$_OLD_VIRTUAL_PS1"
        export PS1
        unset _OLD_VIRTUAL_PS1
    fi

    unset VIRTUAL_ENV
    unset VIRTUAL_ENV_PROMPT
    if [ ! "${1-}" = "nondestructive" ] ; then
    # Self destruct!
        unset -f deactivate
    fi
}

# unset irrelevant variables
deactivate nondestructive

VIRTUAL_ENV=/home/cybot_RAG/.venv
if ([ "$OSTYPE" = "cygwin" ] || [ "$OSTYPE" = "msys" ]) && $(command -v cygpath &> /dev/null) ; then
    VIRTUAL_ENV=$(cygpath -u "$VIRTUAL_ENV")
fi
export VIRTUAL_ENV

_OLD_VIRTUAL_PATH="$PATH"
PATH="$VIRTUAL_ENV/"bin":$PATH"
export PATH

if [ "x"cybot-rag-py3.11 != x ] ; then
    VIRTUAL_ENV_PROMPT=cybot-rag-py3.11
else
    VIRTUAL_ENV_PROMPT=$(basename "$VIRTUAL_ENV")
fi
export VIRTUAL_ENV_PROMPT

# unset PYTHONHOME if set
if ! [ -z "${PYTHONHOME+_}" ] ; then
    _OLD_VIRTUAL_PYTHONHOME="$PYTHONHOME"
    unset PYTHONHOME
fi

if [ -z "${VIRTUAL_ENV_DISABLE_PROMPT-}" ] ; then
    _OLD_VIRTUAL_PS1="${PS1-}"
    PS1="(${VIRTUAL_ENV_PROMPT}) ${PS1-}"
    export PS1
fi

# Make sure to unalias pydoc if it's already there
alias pydoc 2>/dev/null >/dev/null && unalias pydoc || true

pydoc () {
    python -m pydoc "$@"
}

# The hash command must be called to get it to forget past
# commands. Without forgetting past commands the $PATH changes
# we made may not be respected
hash -r 2>/dev/null || true

1. 기존 가상환경을 정리

2. 새로운 가상환경을 활성화

3. 쉘 프롬프트 표시 변경

 

스크립트 주요 내용은 위와 같은 것을 확인할 수 있었다.

 

참고: 

https://github.com/python-poetry/poetry/issues/9962

 

The command "shell" does not exist. on Poetry 2.0.0 · Issue #9962 · python-poetry/poetry

Description While running poetry shell in any of my repositories I am getting The command "shell" does not exist.. poetry run is working fine, which is even more confusing. Workarounds Downgrading ...

github.com

 

'Language > Python' 카테고리의 다른 글

[Python] 깊은 복사(deepcopy)  (0) 2025.02.12

클래스의 인스턴스 변수를,
특정 메서드에서 다른 파라미터값으로 초기화하기 위한 방법을 고민하였다.

해당 문제는 깊은 복사 방법으로 해결하려 한다.
의사코드로 구현하면 아래와 같다.

import copy

class TestClass:
	def __init__(self):
    	'''초기화할 때는 temperature를 0.3으로 설정'''
        self.llm_model = modelInit(
            name = os.getenv("MODEL_NAME"),
            url = os.getenv("MODEL_URL"),
            temperature = 0.3,
        )
    
    def create_Achain(self):
    	'''A체인을 생성할 때는, temperature를 0.0으로 설정'''
    	auto_complete_llm_model = copy.deepcopy(self.llm_model)
        auto_complete_llm_model.temperature = 0.0
        
        chain = prompt | auto_complete_llm_model | parser
        
        return chain


기존에 초기화했던 self.llm_model의 인스턴스 변수를,
create_Achain이란 메서드에서 호출할때에만 다른 값으로 초기화하여 사용하고 싶었다.

파이썬의 경우, copy모듈에 정의된 deepcopy()를 활용하여 쉽게 깊은복사를 사용할 수 있었다.

깊은 복사의 trade-off로 객체를 생성하고 메모리를 할당하는 과정에서 비용이 발생한다는 점에 유의해야할 것 같다.


참고:
https://kevinitcoding.tistory.com/entry/%ED%8C%8C%EC%9D%B4%EC%8D%ACPython-%EC%96%95%EC%9D%80-%EB%B3%B5%EC%82%ACShallow-copy%EC%99%80-%EA%B9%8A%EC%9D%80-%EB%B3%B5%EC%82%ACdeep-copy%EC%97%90-%EB%8C%80%ED%95%9C-%EC%99%84%EB%B2%BD-%EC%A0%95%EB%A6%AC

1. 스왑 메모리란?

리눅스에서 메모리를 확인하는 free 명령어를 사용하면, 다음과 같은 결과를 확인할 수 있다.

free -h

크게보면 '메모리'와 '스왑'으로 나뉜다.
'메모리'는 물리메모리(RAM),
'스왑'은 가상메모리(HDD/SDD 등)를 의미한다.

'스왑'은 시스템의 물리 메모리가 부족할 때, 가용 메모리를 논리적으로 확장시키기 위한 메모리이다.

HDD/SDD에 데이터를 옮기는 swap in/out 과정을 거치다보니, 물리메모리에 비해 속도가 느리다.

2. 스왑 메모리 설정 방법(파일 방식)

스왑메모리를 설정하는 방법은 파일 방식과 파티션 방식이 있다.
아래는 파일 방식으로 스왑 메모리를 설정하는 방법이다.

1) 활성화 된 스왑메모리 확인

swapon --show

 

2) 전체 스왑메모리 비활성화(전체)

swapoff -a

 

3) 스왑메모리 파일 생성(크기 : 10G, 경로 : /, 파일명 : swapfile)

fallocate -l 10G /swapfile

 

4) 스왑메모리 권한 설정

chmod 600 /swapfile

 

5) 스왑 메모리 영역 적용

mkswap /swapfile

 

6) 스왑 메모리 활성화(전체)

swapon -a

 

7) 재부팅 상관없이 스왑메모리 설정 영구 적용

vi /etc/fstab

#해당 파일 맨 아래줄에 다음의 소스 추가
/swapfile none swap sw 0 0

 

번외)

# 스왑메모리파일 용량 변경 fallocate -l {변경용량} {기존스왑메모리파일 경로}
swapoff -a
fallocate -l 4G /swapfile
mkswap /swapfile
swapon -a

# 스왑 메모리 삭제
swapoff -a
rm -f /swapfile

 

참조: 
https://byungwoo.oopy.io/6971d74b-e13b-4e45-b855-ef891e29c260
http://www.chlux.co.kr/bbs/board.php?bo_table=board02&wr_id=290

딥러닝에서 사용하는 tensor는 무슨 의미일까?

텐서는 데이터타입으로, 다차원 배열을 일컫는다.

0차원 텐서(스칼라), 1차원 텐서(벡터), 2차원 텐서(행렬), 3차원 이상의 고차원 텐서 등 다양한 형태가 존재한다.

'n차원 텐서'에서 차원은 축(order 혹은 rank로 표현)을 일컫는다.

수학에서의 벡터는 가지고있는 성분 개수에 따라 2차원 벡터, 3차원 벡터... n차원 벡터로 지칭하니

텐서의 차원과 혼동에 유의할 것.

 

 

참고

https://medium.com/@chk971001/%EB%94%A5%EB%9F%AC%EB%8B%9D%EC%97%90%EC%84%9C-%ED%98%BC%EB%8F%99%ED%95%A0-%EC%88%98%EC%9E%88%EB%8A%94-%ED%85%90%EC%84%9C-tensor-%EC%9D%98-%EA%B0%9C%EB%85%90-a22ff55cf22e

 

딥러닝에서 혼동할 수있는 텐서(Tensor)의 개념

텐서(Tensor)는 딥러닝을 입문하면 한번쯤은 들어봤을 개념이다. 이젠 PyTorch에 밀린 Tensorflow의 텐서도 같은 텐서이다. 그럼 텐서란 무엇일까? 먼저 요즘 많이쓰는 LLM의 일종인 ChatGPT의 답변이다.

medium.com

 

https://finnsplace.tistory.com/21

 

딥러닝 필수개념: 텐서 TENSOR 이해하기

​ 안녕하세요 IT 범생이 Finn 입니다~! ​ 오늘은 다차원 데이터 형태 중에서도 악명이 높은 텐서 (Tensor) 데이터에 대해 정리해 보고자 합니다. 사실 텐서는 텐서플로우가 유명해지며 데이터를 공

finnsplace.tistory.com

https://wikidocs.net/219431

 

1) 벡터(Vector) vs 스칼라(Scalar)

**1. 스칼라 (Scalar):** - 스칼라는 크기만을 가진 값입니다. - 예를 들어, 온도(25도), 무게(50kg), 또는 거리(10km)와 같…

wikidocs.net

 

딥러닝을 공부하다가, 신경망과 퍼셉트론의 차이에 대해 궁금해 알아보게 되었다.

먼저, 딥러닝은 인공지능과 머신러닝의 하위 분야이다. (인공지능 > 머신러닝 > 딥러닝)

인공지능 AI(Artificial Intelligence) : 사고나 학습 등 인간이 가진 지적능력을 컴퓨터를 통해 구현하는 기술.

머신러닝 ML(Machine Learning) : 컴퓨터가 학습하여 인공지능의 성능을 향상시키는 기술방법.

딥러닝 DL(Deep Learning) : 인간의 뉴런과 비슷한 인공신경망 방식으로 정보를 처리하는 인공지능.

 

딥러닝의 기반기술이 되는 것이 바로 "인공신경망ANN(Artificial Neural Network)"이다.

인공신경망은 인간의 신경계 특징을 모사하여 만들어진 연산 모델이다.

뉴런은 여러개의 뉴런으로부터 입력값을 받아 세포체에 저장하다가,

자신의 용량을 넘어서면 외부로 출력값을 내보낸다.

이와같은 뉴런의 특징을 모사하여

인공신경망 뉴런(노드)도 여러 입력값을 받아 일정 수준이 넘어서면 활성화 되어 출력값을 내보낸다.

 

이러한 인공신경망은 많은 종류가 개발되어 있다.

 

퍼셉트론Perceptron은 이러한 인공신경망의 초기모델(1957년 개발)로, 매우 단순한 구조이다. 

입력노드(x1, x2)가 출력노드(y)에 값을 전달할 때, 고유한 가중치(w1, w2)가 곱해진다.

출력노드에서 합산한 입력값이 임계값(theta)을 넘어서면 1을 출력하고, 넘지 못하면 0을 출력한다. 

즉, 퍼셉트론은 입력신호를 받아 0혹은 1의 출력을 내는 알고리즘이다.

 

최초의 질문으로 돌아가보자. "딥러닝 인공신경망과 퍼셉트론 무슨 차이인가?"

딥러닝 인공신경망은 인간의 신경계 특징을 모사하여 만들어진 연산 모델이며, 수많은 종류가 있다.

퍼셉트론은 그러한 인공신경망의 초기모델이다.

퍼셉트론에서 시작한 인공신경망이 발전을 거듭해, 오늘날 수많은 인공신경망이 개발되었다.

 

참조
https://www.wbridge.or.kr/platform/careersport/info/selectTrendDetail.do?ntt_sn=632

 

한국여성과학기술인육성재단 W브릿지

W-bridge는 여성과학기술인의 전 생애주기에 걸친 성장을 지원합니다. 교육, 일자리, 네트워킹, 커리어지원 등 다양한 성장 지원 프로그램 제공

www.wbridge.or.kr

https://brunch.co.kr/@gdhan/6

 

인공신경망 개념(Neural Network)

[인공지능 이야기] 생물학적 신경망, 인공신경망, 퍼셉트론, MLP | 인공신경망은 두뇌의 신경세포, 즉 뉴런이 연결된 형태를 모방한 모델이다. 인공신경망(ANN, Artificial Neural Network)은 간략히 신경

brunch.co.kr

https://untitledtblog.tistory.com/154

 

[머신 러닝/딥 러닝] 인공신경망 (Artificial Neural Network, ANN)의 종류와 구조 및 개념

그림으로 보는 인공신경망의 종류 및 구조 그림 1은 다양한 인공신경망 (Artificial Neural Network, ANN)의 종류와 개념을 시각적으로 보여주며, 원본 그림은 The Asimov Institute에서 확인할 수 있다. 이 글

untitledtblog.tistory.com

https://0-sunny.tistory.com/72

 

퍼셉트론의 개념 (단층 퍼셉트론 / 다층 퍼셉트론)

퍼셉트론이란 ? 퍼셉트론은 다수의 신호를 입력으로 받아 하나의 신호를 출력한다. 쉽게 말하면 입출력을 갖춘 알고리즘이며 입력을 주면 정해진 규칙에 따른 값을 출력하는 것이다. 다시 말하

0-sunny.tistory.com

https://m.blog.naver.com/saegot/222555580272

 

[인공 신경망] 2. 퍼셉트론

퍼셉트론의 구조 대부분의 자료에서 퍼셉트론을 설명할 때 위와 같은 형태를 띠고 있다. 퍼셉트론은 입력 ...

blog.naver.com

https://velog.io/@citizenyves/Perceptron-%ED%8D%BC%EC%85%89%ED%8A%B8%EB%A1%A0%EA%B3%BC-%EB%8B%A8%EC%88%9C-%EB%85%BC%EB%A6%AC-%ED%9A%8C%EB%A1%9C

 

Perceptron - 퍼셉트론과 단순 논리 회로

퍼셉트론의 개념 및 논리 게이트 정리

velog.io

 

 

'AI' 카테고리의 다른 글

딥러닝에서 사용하는 텐서(Tensor) 개념  (2) 2024.09.23

실행 컨텍스트란, 식별자를 등록하고 관리하며 코드의 실행 순서를 구현한 자바스크립트 내부 메커니즘이다.

 

 

 

소스코드의 평가와 실행

자바스크립트 엔진은 소스코드를 '평가', '실행' 2가지 과정으로 나누어 처리한다.

  • 평가 : 실행 컨텍스트를 생성하고 변수, 함수 등의 선언문만 먼저 실행한다. 생성된 변수/함수 식별자를 실행 컨텍스트가 관리하는 스코프에 등록한다.
  • 실행 : 평가 과정이 끝나고 선언문을 제외한 소스코드가 순차적으로 실행된다. 이때, 소스코드 실행에 필요한 정보(변수나 함수의 참조 등)는 실행 컨텍스트가 관리하는 스코프를 검색하여 취득한다. 실행 결과는 다시 실행 컨텍스트가 관리하는 스코프에 등록된다.

자바스크립트 엔진은 먼저 전역 코드를 평가하여 전역 실행 컨텍스트를 실행한다.
그리고 함수가 호출되면 함수 코드를 평가하여 함수 실행 컨텍스트를 생성한다.
생성된 실행컨텍스트들은 스택 자료구조로 관리되며, 이를 실행 컨텍스트 스택이라고 부른다.
가장 마지막에 추가push된 컨텍스트가 가장먼저 제거pop된다.

UML의 구성 요소 : 사물(Things), 관계(Relationship), 다이어그램(Diagram)   #사관다

1) 사물(Things) : 구조 사물, 행동 사물, 그룹 사물, 주해 사물   #그구행주

 

2) 관계(Relationships)   #연일의실 집포

2-1) 연관(Association) 관계 : 기호 로 표시하고 관련되어 있어

- 두 사물간의 구조적 관계. 한 사물 객체가 다른 사물 객체와 연결되어 있음 ('has-a')관계

2-2) 일반화(Generalization) 관계 : 기호 ㅡ▷로 표시하고 일반적인지 구체적인지

- 일반화된 사물과 좀 더 특수화된 사물 사이의 관계

- 일반적인 개념을 상위(부모), 구체적인 개념을 하위(자식)이라고 함 ('is-a')관계

2-3) 의존(Dependency) 관계 : 기호 -->로 표시하고 클래스가 다른 클래스 사용

- 한 사물의 명세가 바뀌면 다른 사물에 영향을 준다.

- 일반적으로 한 클래스가 다른 클래스를 오퍼레이션의 매개변수로 사용하는 경우에 나타나는 관계

2-4) 실체화(Realization) 관계 : 기호 --로 표시하고 기능으로 묶인 관계

- 한 객체가 다른 객체에게 오퍼레이션 수행하도록 지정하는 의미적 관계이다.

- 클래스나 인터페이스를 상속받아 자식클래스가 추상 메서드를 구현할 때 사용

2-5) 집합(Aggeregation) 관계 : 포함하지만 독립적 [부분-◇전체]   // 기호 ◇- -◇로 표시

2-6) 포함(Composition) 관계 : 포함하고 생명주기를 함께 해       // 기호 ◆- -◆로 표시

 

3) 다이어그램

 

3-1) 정적 다이어그램(Structural Diagram) => 구조적(Structural)   #클객컴복 패배

● 클래스 다이어그램(Class Diagram) : 클래스 간 관계를 표현

- 문제 해결을 위한 도메인 구조를 나타내어 보이지 않는 도메인 안의 개념과 같은 추상적인 개념을 기술하기 위해 나타낸 것이다. 또한 소프트웨어의 설계 혹은 완성된 소프트웨어의 구현 설명을 목적으로 사용할 수 있다. 이 다이어그램은 속성(attribute)과 메서드(method)를 포함한다.

- 구성요소 : 클래스 이름, 속성, 연산, 접근제어자, 관계

● 객체 다이어그램(Object Diagram) : 객체 간 관계 표현. 연관된 모든 인스턴스를 표현

● 컴포넌트 다이어그램(Component Diagram) : 컴포넌트 간 관계 표현

 - 구성요소 : 컴포넌트, 인터페이스, 의존 관계

● 복합체 구조 다이어그램(Composite Structure Diagram) : 복합 구조인 경우 내부구조를 표현

● 패키지 다이어그램(Package Diagram) : 패키지 간 관계 표현

- 구성요소 : 패키지, 의존관계

● 배치 다이어그램(Deployment Diagram) : 물리적 요소의 위치 표현

 

3-2) 동적 다이어그램(Behavioral Diagram) => 행위(Behavioral)   #유시커 상상활타

● 유스케이스 다이어그램(Use Case Diagram) : 사용자 관점에서 표현 (사용자의 요구를 추출하고 분석)

  - 구성요소 : 유스케이스, 액터, 시스템, 시나리오, 이벤트의 흐름

● 시퀀스(순차) 다이어그램(Sequence Diagram) : "시간적 개념" 중심으로 메시지 흐름 표현

 - 구성요소 : 객체, 생명선, 실행, 메시지

● 커뮤니케이션 다이어그램(Communication Diagram) : 객체들이 주고 받는 메시지와, 상호작용 표현

- 구성요소 : 상태, 시작상태, 종료상태, 전이, 이벤트, 전이조건

● 상태 다이어그램(State Diagram) : 객체의 상태와 상태 변화를 표현

  - 구성요소 : 상태, 시작상태, 종료상태, 전이, 이벤트, 전이조건

● 상호작용 개요 다이어그램(Interaction Overview Diagram) : 상호작용 다이어그램 간의 제어흐름 표현

● 활동 다이어그램 (Activity Diagram) : 시스템이 수행하는 활동을 표현

- 구성요소 : 시작점, 전이, 액션/액티비티, 종료점, 조건노드, 병합노드, 포크노드, 조인노드, 구획면

● 타이밍 다이어그램(Timing Diagram) : 객체의 상태 변화와 시간 제약을 표현

+ Recent posts