12월 2023

Svelte - TinyMCE 사용하기

TinyMCE는 Svelte에서 활용할 수 있는 가장 유용한 Editor중 하나이다. 실제 필자가 Svelte에서 사용할 만한 Editor를 비교한 글을 작성한 적이 있는데, 그중 당연히 제일 좋았던 기억이 난다. 기본 사용 먼저 가장 기본적으로 사용...

allmnet 1 1월, 2024

SQLAlchemy로 MySQL 데이터베이스 연결 및 쿼리하기

SQLAlchemy는 Python에서 데이터베이스를 연결하고 쿼리하는 데 사용할 수 있는 강력한 라이브러리이. MySQL을 포함한 다양한 데이터베이스와 호환된다. 데이터베이스 연결 SQLAlchemy를 사용하여 MySQL 데이터베이스에 연결하려면 먼저...

allmnet 1 1월, 2024

Python - 파이썬 코드 실행 시간 측정 perf_counter, process_time 차이점

파이썬 코드 실행 시간 측정 파이썬 코드를 작성하다 보면 특정 코드가 얼마나 걸리는지 확인하고 싶을 때가 있다. 이때 사용할 수 있는 함수가 time 라이브러리의 perf_counter()와 process_time()이다. perf_counter, ...

allmnet 1 1월, 2024

Python - 지역 변수와 전역 변수 그리고 global

지역 변수와 전역 변수 파이썬에서 변수는 크게 지역 변수와 전역 변수로 나뉜다. 지역 변수는 함수 안에서만 사용 가능한 변수를 의미한다. 함수 밖에서 호출하면 에러가 발생한다. def 지역변수():     a = '지역변수'     pr...

allmnet 1 1월, 2024

Python - 도메인, 서브도메인, URL 확/구분 방법 tldextract

Python을 이용해서 도메인과 서브 도메인을 구분하는 방법은 Regex를 사용할 수도 있지만, .com과 같은 2차 도메인과 .co.kr 3차 도메인의 차이점, 그리고 서브에 서브도메인을 구분하기 위해서는 많은 조건이 필요해지게 된다. 이를 효과적...

allmnet 1 1월, 2024

Python - 특정 문자열(str) 포함 유무(contains) 확인 방법

다른 언어(C#, Java등)을 사용하다 Python으로 전환하면서 가장 헷갈렸던 부분이 문자열 검색 부분이다. 보통 C# 기준으로 str에 .contains를 통해 특정 문자열이 포함 하고 있는지를 확인 할 수 있는데, Python에서는 아래와 같은...

allmnet 1 1월, 2024

Python - smtplib 기본 라이브러리를 이용한 text/html 메일 보내기

대부분 프로그래밍에서는 메일 전달과 관련된 기본 라이브러리 및 예제 코드를 제공하고 있다. 오늘은 Python 부분에 대해서 메일 전송 방안에 대해 정리해 보고자 한다. 여기에서는 기본 라이브러리를 활용한 방안에 대해서 정리해 보도록 하겠다. Mail...

allmnet 31 12월, 2023

Python - Workday, 나라별 비즈니스(공휴일) 날짜 인지 확인

업무일자에만 실행해야 하는 경우 어떻게 만들 수 있을까? 필자의 경우 알람을 개발하는데, 공휴일에 알람이 온다면 알람을 받는 사람도 괴롭고, 실제 알람의 효과도 없을 것으로 이를 개선하기 위해서 비즈니스(업무일자)에만 알람을 전달하는 기능을 개발하기 ...

allmnet 31 12월, 2023

Python - 함수 주석 설명 팁

프로그램이 길어지고 호출해야 하는 함수가 다양한 파일에 존재한다면, 함수 호출을 위해 도움을 줄 수 있는 설명을 달아주는 것이 효율적이다. 여기서는 함수 설명을 어떻게 달 수 있는지와 알아두면 좋은 3가지 항목에 대해서 설명해 보도록 하겠다. 아래와...

allmnet 31 12월, 2023

Python - Pylint Error Code 테이블 전체

예외할 때 에러 코드 기준으로 해야 해서 여기에 정리해 본다. Ctrl + F 키로 에러 이름을 이용해 검색해서 보기를 권장한다. GitHub - janjur/readable-pylint-messages: List of pylint human read...

allmnet 31 12월, 2023

Python - reverse/reversed 리스트 역순으로 뒤집기

프로그램을 실행하다보면, list을 뒤에서 부터 실행해야하는 경우가 종종 발생한다. 이때 유용한 명령이 reverse/reversed 이다. 이 둘의 결과를 반환 유무의 차이가 있다. reverse 지정한 list를 역순으로 뒤집는다. test = [...

allmnet 31 12월, 2023

Python - 코드 네이밍 스타일, (snake_case, camel_case, upper_case)

코드 네이밍은 서로 몇가지 규칙을 개발자들 사이에서 코드 가독성과 공유시 보다 이해가 쉽도록 하는데 있다. 필수도 지킬 필요는 없지만, 동일한 규칙을 사용하게 되면, 서로 다른 개발자가 개발한 코드라도 이해도가 높아지고 코드의 완성도가 높아지기 때문에...

allmnet 31 12월, 2023

Python - Boto3 S3 대량 데이터 가져오기, paginator

Boto3 라이브러리는 Python에서 AWS 리소스를 사용하기 위해 가장 많이 사용되는 라이브러리로 여기에서 최근 알게된 팁을 하나 정리해 본다. 아마 가장 많이 사용하는 기본적인 코드 방식은 다음과 같을 것이다. import boto3   clie...

allmnet 31 12월, 2023

VSCode - Pylint로 Python 코드 퀄리티 올리기

https://code.visualstudio.com/docs/python/linting 이전 글에서 에러 해결과 함께 정리해보았는데, 여기서 조금 Lint 부분만 정리해 본다. 우선 python 용 Linting 기능을 담당하는 pylint를 ...

allmnet 31 12월, 2023

VSCode Error - Sorry, something went wrong activating IntelliCode support for Python. Please check the "Python" and "VS IntelliCode" output windows for details.

한동안 Python을  VS Code로 쓰면서 크게 의식하고 있지 않았는데, 오늘은 왠지 모르게 위 오류가 정말 거슬리는 하루 였다. 그래서 한번 위 오류를 해결한 내용을 정리해 본다. 위 오류가 발생하는 원인은 크게 2가지로 고민해 볼 수 있다....

allmnet 31 12월, 2023

Python - 백그라운드/포그라운드 실행 유무 체크

가끔 스스로 내가 현재 백그라운드 실행인지, 포그라운드 실행인지를 체크해야 하는 경우가 발생한다. 이때 유용하게 사용할 수 있는 것이 바로 os.getpgrp() 를 통해 현재 프로세스의 그룹과 제어 터미털의 값이 같으면 포그라운드라고 볼 수 있으며,...

allmnet 31 12월, 2023

Python - string 문자열 원하는 구분자 기준으로 나누기

오늘은 최근에 특정 문자열 갯수를 넘어가는 글에 대해서 조금 더 이쁘게 잘라 낼 수 있을까에 대한 고민하던 부분중에 개발을 진행한 부분에 대한 내용이다. 고민한 내용은 간단하다. \n 기준으로 문자열을 자르고 싶은데, \n을 기준으로 자르자니 너무 많...

allmnet 31 12월, 2023

Python - Http Retry 및 while 을 통한 반복문

요즘 REST API 참으로 많이 사용된다. 그런데 HTTP 호출을 사용하다보면, 받아주는 서버가 정상적으로 회신을 주지 않는 경우가 있다. 이러한 경우 어떻게 조치하는게 좋을지 Python에서 제공하는 모듈과 일반적인 방법에 대해서 정리해 본다. 1...

allmnet 31 12월, 2023

Python - subprocess, Popen, call차이, 작업경로(WorkDirectory) 변경

Python에서 실행중 추가로 프로그램을 실행해야 하는 경우가 발생할 경우 subprocess 모듈을 이용해서 사용할 수 있다. 아마 이모듈을 사용할 때 가장 많은 찾아보게 되는 부분이 Popen과 Call의 차이 그리고 WorkDirectory 변경...

allmnet 31 12월, 2023

Python - sqlalchemy bigint 사용한 id 값 고려

Python 의 기본 ORM 을 사용한다면, id 필드를 통한 unique 값 생성이 기본이다. 기본값은 INT인데, INT로 생성할 경우 최대 생성 가능한 컬럼이 2,147,483,647 까지 가능하다. 만약 이값을 넘어간다면, 추후 BIGINT로 ...

allmnet 31 12월, 2023

Python - 리소스 및 코드 하나로 실행, Single-file executables

프로그램을 제작하다보면, 간편하게 배포 할 수 있도록 하나의 파일로 생성해야 하는 경우가 많다. 이유는 프로그램을 실행하는 사람 입장에서는 개발자의 개발 의도를 온전히 이해하기가 어렵기 때문에 운용해야 하는 파일이 많거나 실행 단계가 많다는 것은 사용...

allmnet 31 12월, 2023

Docker - 이미지, 컨테이너, 레이어, 가상화 이해

Docker를 사용하는 이유는 사용해보면 쉽게 알 수 있지만, 여기에서는 사용하기 전, 즉 왜 필요한지에 대해서 얘기해보고자 한다. Docker는 현재 많은 업체에서 배포환경에 사용하고 있는 CI/CD 기술에 필수요소로 자리잡은 기술이라고 할 수 있다...

allmnet 31 12월, 2023

제로트러스트 보안 가이드라인 - 핵심 원칙 및 철학

과학기술정보통신부에서 보다 알맞은 보안 프레임워크로 제로트러스트 가이드라인을 발표 했다. 핫하고 최근 관심을 많이 받는 자료이니 읽어보시면 도움이 될듯 하다. 제로트러스트가이드라인 1.0 요약서 10.55MB 제로트러스트가이드라인 1.0 전체본 4.87MB

allmnet 31 12월, 2023

스타레일 - 무과금 캐릭터 육성 및 유물 공략

스타레일도 역시 자원이 무지막지하게 들어가는 게임이다 보니, 초반에 선택과 집중이 중요하다. 이때 가장 고민되는 부분이 유물은 어떻게 할지와, 캐릭터 육성은 누구를 해야 할지 일 것이다. 그럼 여기서 캐릭터 육성과 유물을 공략할때 고려해야 할 것에 대...

allmnet 31 12월, 2023

Docker - 기본 배포/실행 방법

Docker를 이용한 기본 배포 시나리오는 다음과 같이 3단계로 이루어진다. 이미지 다운로드 ->  컨테이너 실행 -> 포트 매핑 (선택, 네트워크 연결) 로 진행된다. 이를 기본적으로 실행하는 방법을 각 단계별로 순서대로 알아보고자 한...

allmnet 31 12월, 2023