반응형

 

 

 

Python 프로그램을 개발을 할 때 개발 환경을 격리하기 위한 가장 간편한 방법은 어플리케이션 레벨 격리 입니다.

격리 방법은 파이썬 내장 모듈인 venv을 활용하면 됩니다.

 

 

 

  격리(가상) 환경  생성 명령어

# 1. 격리 환경(디렉토리) 생성
python3.<버전> -m venv <격리 환경 이름>

# 2. 격리 환경 활성화
source <격리 환경 이름>/bin/activate

# 3. python3 경로 출력
(<격리 환경 이름>) $ which python3

# 4. 격리 환경 비활성화
(<격리 환경 이름>) $ deactivate

# 5. python3 경로 출력
which python3

 

 

위 명령어를 실행해보면 which python3 명령어를 입력했을 때

격리 환경과 격리되지 않은 환경에서의 python3 경로가 다른 것을 확인할 수 있습니다.

위 명령어를 참고하셔서 Python 프로그램을 개발할 때 안전 하게 격리환경 안에서 개발을 진행하시면 됩니다.

 

 

이 글 이 도움이 되셨기를 바랍니다.

caul334@gmail.com

내용이 유용하셨다면 좋아요&댓글 부탁드립니다.
이 블로그를 이끌어갈 수 있는 강력한 힘입니다!

 

반응형
반응형

 

 

 

 

  Poetry는?

패키지 버전을 관리하지 않아도 손쉽게 Dependency 관리를 가능하게 해주는 도구

즉 poetry를 이용한 프로젝트는 패키지 버전에 종속되지 않고 어느 환경에서든 잘 돌아가게 만들어주는 도구이다.

 

pip를 이용하여 패키지를 설치하면 패키지를 설치할 때마다 requirements.txt를 작성해야 Dependency 문제가 해결됩니다.

하지만 poetry add <package_name> 명령어를 이용하면 따로 패키지 버전을 관리하지 않아도

편하게 Dependency 관리가 가능해집니다.

 

 

  Poetry 설치 방법

1. Ubuntu (linux)
sudo apt install python3-poetry

2. Powershell (Windows)
(Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | py -

3. curl 이용
curl -sSL https://install.python-poetry.org | python3

 

 

  Poetry 기본 명령어

# 설치 및 버전 확인
poetry --version

# 새 프로젝트 생성
$ poetry new <project_name>

# 가상환경 실행
$ cd <project_name>
$ poetry shell

# 패키지 설치
$ poetry add <package_name>

 

 

해당 글이 도움이 되셨기를 바랍니다.

 

caul334@gmail.com

내용이 유용하셨다면 좋아요&댓글 부탁드립니다.
이 블로그를 이끌어갈 수 있는 강력한 힘입니다!

 

반응형
반응형

 

 

Ubuntu(Linux) 에서 파이썬 디펜던시와 가상환경 관리를 위해 poetry(포어트리)를 설치하려 했습니다.

 

하지만 아래와 같은 에러를 만났습니다.

 

  에러 메시지 내용

nick@ubuntu:~/python$ pip install --user poetry

error: externally-managed-environment

 

 

  에러 발생 원인

에러 발생 원인은 python 3.11 이상 버전부터 패키지 관리 정책이 변경되어
pip 명령어를 이용한 직접 설치 보다는 Ubuntu 시스템 패키지 관리자인 apt를 통해 패키지를 설치하도록 권장하기 때문입니다.

 

 

  문제 해결 방법

아래 3가지 해결 방법 중 원하는 것을 선택해 해결할 수 있습니다.

 

1. 시스템 패키지 관리자를 이용하여 설치

# 무조건 가상 환경 밖에 설치해야 하는 경우
sudo apt install python3-<package_name>

 

 

2. 프로젝트가 가상환경 안에 있다면 가상환경 안에 설치

# 격리 환경(디렉토리) 생성
python3.<버전> -m venv <가상 환경 이름>

# 격리 환경 활성화
source <가상 환경 이름>/bin/activate

# 패키지 설치
pip install <package name>

 

 

3. curl 유틸리티 이용한 설치

# 유틸리티를 이용한 설치
curl -sSL https://install.python-poetry.org | python3

 

 

 

위 방법을 통해 문제가 해결 되셨기를 바랍니다.

 

caul334@gmail.com

내용이 유용하셨다면 좋아요&댓글 부탁드립니다.
이 블로그를 이끌어갈 수 있는 강력한 힘입니다!

 

반응형
반응형



elasticsearch

 

 

엘라스틱서치를 Python으로 연동하면서 사용하고 있는데 갑자기 아래와 같은 에러가 발생하였다.

에러 메시지 화면

 

에러 메시지 내용

elasticsearch.BadRequestError: BadRequestError(400, 'search_phase_execution_exception', 'Result window is too large, from + size must be less than or equal to: [10000] but was [10005].

 

에러 원인

에러의 원인은 요청한 Index에 결과가 1만건 이상이기 때문에 발생한 것으로써 index.max_result_window 임계치를 넘어갔기 때문에 발생한 것이다. max_result_window의 기본 설정은 1만건이다.

 

 

  임시 해결 조치 방법

시간이 없을 때 일단 빠르게 해결 할 수 있는 방법은 문제가 발생한 Index에 대해 windows size를 늘리는 것이다.

기본 설정 값인 10000건에서 그 이상으로 늘리면 된다. 참고로 아래는 5만건으로 늘려 주었다

아래 코드는 Kibana > Dev Tools에서 실행 가능한 코드

PUT /<your index name>/_settings
{
  "max_result_window" : 50000
}

 

 

  영구 해결 방법

영구 해결 방법으로 가장 좋은 방법은 Scroll API를 사용하는 것 입니다.

Scroll API는 대량의 데이터를 효율적으로 검색할 때 사용하면 좋습니다.

# 검색할 인덱스와 쿼리 정의
index_name = "your_index_name"
query = {
    "query": {
        "match_all": {}  # 모든 문서를 검색하는 쿼리
    }
}

# Scroll 초기화
scroll_timeout = "2m"  # Scroll 세션 유지 시간
batch_size = 1000      # 한 번에 가져올 문서 수

# 첫 번째 Scroll 요청
response = es.search(index=index_name, body=query, scroll=scroll_timeout, size=batch_size)

 

 

이 글을 통해 문제가 해결 되셨기를 바랍니다^^

 

caul334@gmail.com

내용이 유용하셨다면 좋아요&댓글 부탁드립니다.
이 블로그를 이끌어갈 수 있는 강력한 힘입니다!

 

반응형
반응형

 

 

회사 업무를 수행하다보면 종종 통계를 위해 메일 제목 또는 메일 내에 있는 특정 문구가 얼마나 있는지 필요한 경우가 있습니다.

 

아래 Python 코드로 그러한 어려움을 해결할 수 있습니다.

 

필요하신 분은 자유롭게 사용하시면 되겠습니다^^

 

Python 코드

# mail_extractor.py
import re
import os
import extract_msg
# pip install extract-msg

def extract_subjects_from_msg(folder_path):
    # 메일에서 제목과 내용 return

    # 결과를 저장할 리스트
    objects = []

    for file_name in os.listdir(folder_path):
        tmp = []
        if file_name.endswith(".msg"):
            file_path = os.path.join(folder_path, file_name)
            try:
                # .msg 파일 열기
                with extract_msg.Message(file_path) as message:

                    # 메일 제목
                    subject = message.subject
                    # 메일 본문
                    body = message.body

                    tmp.append(subject)
                    tmp.append(body)
                    objects.append(tmp)

            except Exception as e:
                print(f"Error reading {file_name}: {e}")

    return objects



def find_content(pattern, body):
    # 일치하는 내용 메일 본문에서 찾기
    content = []

    # 일치 여부
    matches = re.findall(pattern, body)

    # 결과 저장
    for i, match in enumerate(matches, start=1):
        content.append(i)
        content.append(match)

    return content



if __name__ == '__main__':

    # 메일 들이 저장되어 있는 특정 폴더 경로
    folder_path = r"C:\Users\<경로>"

    # 제목, 내용 추출
    results = extract_subjects_from_msg(folder_path)

    # 결과 출력
    for subject, body in results:
        # 제목과 메일 본분만 출력
        print(f"Subject: {subject}, Body: {body}")

        # 찾을 특정패턴이 있는 경우 (아래 코드 활용)
        # 패턴 정의
        pattern = r"\[Rule\]\s*\n(.+)"
        content = find_content(pattern, body)
        print("Subject: {}, Content: {}".format(subject, content))

 

 

 

부족한 부분 또는 개선이 필요한 사항은 댓글 남겨주시기 바라면서

이 글이 도움이 되셨기를 바랍니다.

 

caul334@gmail.com

내용이 유용하셨다면 좋아요&댓글 부탁드립니다.
이 블로그를 이끌어갈 수 있는 강력한 힘입니다!

반응형
반응형

 

Visual Studio

 

25년도에는 Back to Basic 마인드로 다시 C언어를 처음부터 시작해보자는 마음으로 Visual Studio 2022를 설치했습니다.

하지만 책에 있는 실습 예제들을 따라하는데 예기치 못한 에러를 만났습니다.

 


[Error Message]

빌드 오류가 발생했습니다. 계속하고 마지막으로 성공한 빌드를 실행하시겠습니까?


 

 

 

에러 발생 원인 C/C++에서 각 실행 가능한 프로그램은 단 하나의 main() 함수만 가질 수 있는데

위 에러는 두개 이상의 소스파일(.c)에서 각각 main() 함수를 가지고 있기 때문에 오류가 발생하게 됩니다.

 

 

 

  에러 해결 방법

 

에러를 해결하는 방법으로는 main() 함수를 가지는 하나의  소스코드 파일을 남기고 나머지 소스코드는 빌드에서 제외하면 됩니다.

 

빌드 제외 방법 : (비쥬얼 스튜디오 2022 기준) 소스코드 선택 > 오른쪽클릭 > 속성 > 빌드에서 제외 > 예 (선택)

 

빌드에서 제외 과정

 

 

빌드에서 제외하면 제외된 소스파일은 아래와 같이 파일 왼쪽에 빨간색 동그라미가 표시된 것을 확인할 수 있습니다.

 

빌드에서 제외한 소스코드

 

이후 실행하면 깔끔하게 에러가 없어지게 됩니다^^

 

에러 해결 후 실행 화면

 

문제가 해결 되셨기를 바랍니다.

 

caul334@gmail.com

내용이 유용하셨다면 좋아요&댓글 부탁드립니다.
이 블로그를 이끌어갈 수 있는 강력한 힘입니다!

반응형
반응형

 

Sourcetree는 Git을 시각적으로 관리할 수 있는 무료 그래픽 사용자 인터페이스(GUI) 응용 프로그램입니다.

Atlassian에서 개발했으며, 복잡한 Git 명령어를 명령줄에서 입력하지 않고도 직관적으로 사용할 수 있게 해줍니다.

이번 포스팅에는 SourceTree 설치 방법에 대해 공유드립니다.

 

  설치 방법

 

1. 프로그램 다운로드 홈페이지(https://www.sourcetreeapp.com/) 접속

 

download for windows

 

2. 설치 파일(.exe) 실행

 

기본 설치를 위해 다른 것은 클릭하지 말고 바로 "건너뛰기"를 클릭합니다.

 

기본 설치

 

Mercurial 선택 해제 후 "다음" 클릭

Mercurial은 Git과 같은 버전관리 툴이지만 저희는 필요 없으므로 선택해제합니다.

궁금하신 분들은 설치하셔도 무방합니다.

 

Mercurial 설치 여부

 

 

Github의 Username과 Email 정보를 입력 후 "다음" 클릭

 

username, email 정보 입력

 

 

SSH 키를 불러오겠다는 물음에는 "아니오"를 선택합니다.

 

SSH 키 로드

 

 

설치가 완료 되었다면

Remote > 계정 추가 > GitHub > "OAuth 토큰 새로고침"을 클릭합니다.

 

GitHub 연동 방법

 

 

Github 로그인 후 Authorize atlassian을 클릭

 

 

Atlassian 연동 확인

 

 

연동이 완료되면 "인증성공" 확인 후 확인 클릭

 

Oauth 토큰

 

원격 저장소에 GitHub 정보가 연동되어 있는 것을 확인하면 설치와 GitHub 연동이 완료됩니다.

 

GitHub 연동

 

도움이 되셨기를 바랍니다.

 

 

caul334@gmail.com

내용이 유용하셨다면 좋아요&댓글 부탁드립니다.
이 블로그를 이끌어갈 수 있는 강력한 힘입니다!

 

반응형
반응형

 

 

형상관리(버전관리) 시스템인 Git을 Windows와 Linux(Ubuntu)에 설치하는 방법을 공유드리겠습니다.

 

 

  Windows 설치 방법

 

1. Git 홈페이지 접속

Git 홈페이지(https://git-scm.com/downloads) 이동하여 Download for Windows를 클릭합니다.

 

git 홈페이지

 

 

2. 64-bit Git for Windows Setup 클릭

대부분의 Windows는 64bit 이기 때문에 아래 "64-bit Git for Windows Setup"을 클릭합니다.

 

64-bit 다운로드 페이지

 

 

3. 다운로드 받은 파일 실행

다운받은 실행파일(.exe)을 실행하고 Install을 클릭합니다.

 

설치 파일 실행

 

(기본설정) Editor는 "use Vim"으로 확인 후 Next를 클릭합니다.

이후 아래 Branch 설정하는 부분이 나올 때까지 계속 기본 설정으로 진행합니다.

 

use vim 설정 확인

 

 

(설정변경 필요!!!) Override the defaut branch를 선택 후 main이 맞는 지 확인 후 Next를 클릭합니다.

이후 설치가 완료될 때까지 계속 기본 설정으로 Next를 클릭하여 진행합니다.

 

main 브랜치 설정 변경

 

설치가 완료되었다는 메시지를 확인하고 Finish를 클릭하여 마무리해줍니다.

 

Finish

 

 

4. 정상 설치 확인

 

설치가 정상적으로 되었는지 확인해 줍니다.

먼저 Windows 버튼 또는 검색을 클릭한 후 git bash를 입력합니다.

잘 설치 되었다면 아래와 같이 Git Bash 앱이 보이는 것을 확인할 수 있습니다.

 

 

 

 

  Ubuntu(Linux) 설치 방법

Linux 설치는 아주 간단해서 아래 코드와 주석으로 설명드리겠습니다.

 

# apt 업데이트
sudo apt-get update

# git 설치
sudo apt-get install git

# git 설치 확인
git --version

# main을 기본 브랜치로 설정
git config --global init.defaultBranch main

 

 

정상 설치 되면 아래와 같이 Git 버전을 확인할 수 있습니다.

 

git version 확인 명령어

 

 

도움이 되셨기를 바랍니다.

 

caul334@gmail.com

내용이 유용하셨다면 좋아요&댓글 부탁드립니다.
이 블로그를 이끌어갈 수 있는 강력한 힘입니다!

 

반응형
반응형

 

nodejs

 

테스트를 위해 웹 서버를 빠르게 구축해야할 경우가 있습니다.

npm으로 간단히 웹서버를 구축하는 방법을 공유드리겠습니다.

 

npm

 

 

웹서버 구축 방법

 

1. Ubuntu에서 apt 명령어를 통해 nodejs와 npm을 설치합니다

# nodejs 설치
sudo apt-get install nodejs

# 버전 확인
nodejs -v

# npm 설치
sudo apt-get install npm

 

 

2. 웹 개발 프레임워크를 설치하고 및 프로젝트 이름의 폴더를 생성합니다.

# Express.js(웹 백엔드 개발 프레임워크) 설치
sudo npm install express-generator -g

# Node.js 웹 애플리케이션 프로젝트 생성
expresss <Project이름> --no-view

# 프로젝트 폴더 이동
cd <Project이름>

 

 

 

3. 프로젝트에 필요한 패키지를 설치하고 및 서버를 실행합니다.

# 프로젝트에 필요한 패키지 설치
npm install

# (나오는 경우) 취약점 조치
npm audit fix --force

# express 서버 실행
npm start

 

 

4. 서버 동작 확인

위 모든 작업이 완료되면 이제는 서버가 정상 동작하고 있는지 확인하는 작업만 남았습니다.

확인하는 방법은 아래 2가지 방법 중 하나만 하셔도 됩니다.

# 웹 브라우저 띄우고 접속 확인
http://localhost:3000

# 새 터미널 띄우고 접속 확인
curl http://localhost:3000

 

 

웹서버(Express) 동작 화면 - 웹 브라우저

 

 

웹서버(Express) 동작 화면 - CLI

 

 

도움이 되셨기를 바랍니다.

 

caul334@gmail.com

내용이 유용하셨다면 좋아요&댓글 부탁드립니다.
이 블로그를 이끌어갈 수 있는 강력한 힘입니다!

 

반응형
반응형

 

프로 개발자 분들은 이미 Git과 Github에 대해 이미 잘 아실겁니다.

만약 제 지인이 처음 개발에 입문하거나 개발자가 아닌데 Git을 배우고 싶은 사람이 있다면 저는 무조건 이 사이트를 추천할 겁니다.

 

추천 사이트 : https://skills.github.com/

 

GitHub Skills

Develop with AI-powered code suggestions using GitHub Copilot, Codespaces, and VS Code.

skills.github.com

도메인을 확인해 보시면 아시겠지만 위 사이트는 Github에서 학습을 위해 운영하는 공식 홈페이지 입니다.

일반적으로 많은 사람들은 처음 Github을 배울 때 Docs 또는 Guide 문서를 찾아서 봅니다.

Docs와 Guide는 모든 정보가 들어있지만 처음 접하기에는 필요없는 정보도 많고 읽다보면 지루해서 잠이 옵니다ㅠㅠ

 

하지만 skills.github.com은 각 코스 마다 repository가 따로 있고 그 안에 수행해야 하는 미션이 있어서 미션을 수행하면서 재미도 있고 실력도 늘 수 있다는 장점이 있습니다.

 

가장 처음은 introduction to GitHub 코스부터 시작하시면 되고 진행 시간은 코스당 1시간 미만으로 걸립니다.

하루에 1 코스씩 진행하면 1달 이내에는 Git을 매우 잘 사용할 수 있겠네요^^

 

skills github 코스

 

하지만 이 사이트에도 단점이 없는 것은 아닙니다.

이 사이트의 유일한 단점은 영어라는 점....

 

학습에 도움이 됐기를 바라겠습니다.

 

 

caul334@gmail.com

내용이 유용하셨다면 좋아요&댓글 부탁드립니다.
이 블로그를 이끌어갈 수 있는 강력한 힘입니다!

반응형

+ Recent posts