Language 10

[Python] Excel 파일 암호화

1. 개요 파이썬을 사용하여 Excel 파일을 생성하거나 편집하는 작업은 많은 분들이 경험해 보셨을 겁니다. 하지만 Excel 파일 암호화를 수행한 적은 얼마나 되시나요? 물론 Excel 응용 프로그램을 통해서는 간단히 암호 설정이 가능하지만, 파이썬 코드를 사용해 이를 수행한 경우는 드물 것입니다. 따라서 이번 글에서는 파이썬 코드로 Excel 파일에 암호를 설정하는 방법에 대해 알아보겠습니다. 2. xlwings xlwings는 파이썬에서 Excel 파일을 다룰 수 있게 해주는 라이브러리입니다. 이를 활용하면 쉽게 Excel 파일 암호화를 수행할 수 있습니다. (참고) 3. 예시 코드를 작성하기 전에, 우선 xlwings 라이브러리를 설치해야 합니다. 이는 간단히 pip install xlwings ..

Language/Python 2023.11.12

[Python] 정적 타입 검사 - mypy

오늘은 파이썬 관련 정적 타입 검사에 대해서 소개하는 시간을 가져보도록 하겠습니다. 정적 타입 검사가 왜 필요한 이유 파이썬은 동적 타입 언어로 구성되어 있기 때문에 다른 언어에 비해서 유연하고 빠르게 개발을 할 수 있습니다. 그렇다면 정적 타입 검사는 왜 필요할까요? 정적 타입 검사가 필요한 이유를 알기 위해서는 동적 타입 언어의 특징에 대해서 이해를 하고 있어야 합니다. 동적 타입 언어의 특징은 크게 두 가지가 있습니다. 첫 번째는 코드가 실행될 때 타입을 체크하는 것입니다. 위 코드를 보면 if False: 부분은 실행이 되지 않기 때문에 1 + "two"가 타입 에러를 발생시키는 코드이지만 에러가 발생하지 않습니다. 두 번째는 실행 시간 동안 변수의 타입을 변경할 수 있다는 것입니다. thing ..

Language/Python 2023.07.16

[Python] Decimal이란

float 모듈 파이썬에서는 보통 float 타입으로 소수를 표현합니다. 하지만 소수점 이하의 정밀도가 항상 정확하지 않다는 문제점이 있어서 금융 계산과 같이 정확한 계산이 필요한 경우 Decimal을 사용하는 것이 좋습니다. float을 사용하면 왜 소수점 이하의 정밀도가 항상 정확하지 않을까요? 바로 부동소수점 방식을 통해 숫자를 표현하기 때문입니다. 예를 들어, 300은 3 x 10^2로 표현할 수 있고, 0.003은 3 x 10^-3로 표현할 수 있습니다. 부동소수점에서 숫자는 가수와 지수의 두 부분으로 분리되는데 가수는 숫자의 실제 자릿수를, 지수는 소수점의 위치를 결정합니다. 이렇게 설명하는 것보다 구체적인 예시를 보여주는 게 더 이해가 빠를 것이라고 생각하는데요. 0.75를 float타입으로..

Language/Python 2023.07.09

[ Python ] 점프 투 파이썬 전면 개정 2판 서평

안녕하세요 ! 이번에 좋은 기회가 생겨 '점프 투 파이썬 전면 개정 2판 서평'에 참여하게 되었습니다 👏👏. 책에 대한 후기를 말하기 전 간략하게 제 상황에 대해서 말씀드리겠습니다~! (궁금하지 않으셔도,,) 현재 파이썬을 주언어로 쓴 지 3년이 되어가고 있습니다. 3년이라는 시간이 적을 수도 있지만 개인적으로는 초급 단계를 넘어 중급 단계를 바라봐야 하는 시기라고 생각하였습니다. 따라서 지금까지 수행했던 프로젝트를 돌아보는 것뿐만 아니라 파이썬과 관련된 초급, 중급 개발서 1권씩 정독한 후 스스로의 레벨을 확인하고 싶었습니다. 초급 개발서로 가장 먼저 떠오른 것은 점프 투 파이썬이었습니다. 파이썬 공부를 시작할 때 가장 먼저 읽었던 책이기도 하고 개발에 재미를 느끼게 해 준 책이기 때문입니다. (중급 ..

Language/Python 2023.07.01

[Hive] Managed Table vs External Table

하이브에서 테이블을 생성할 때 Managed 또는 External 중 어떤 유형으로 생성할 것인지 결정할 수 있습니다. Managed 테이블은 내부 테이블이라고도 불립니다. Hive가 데이터와 메타데이터의 모든 부분을 관리하기 때문에 내부 테이블이라고 부루는 것 같네요. Managed 테이블 혹은 테이블의 특정 파티션을 삭제하면 해당 데이터도 삭제됩니다. External 테이블은 외부 테이블이라고도 불립니다. Hive 외부에 데이터가 저장되고, Hive는 메타데이터만을 관리하기 때문에 외부 테이블이라고 부르는 것 같네요. Managed 테이블과 다르게 External 테이블 혹은 특정 파티션을 삭제하면 Hive 메타데이터가 삭제되지만, 실제 데이터는 그대로 유지됩니다. 하이브 3.0 이전의 버전에서는 M..

Language/Hive 2023.01.09

[Python] *args, **kwargs

C언어를 배우신 분이라면 *을 보고 당황할 수 있다. C언어의 포인터가 생각나기 때문이다. 다행(?)이지만 파이썬에는 포인터가 존재하지 않는다. 그렇다면 *args, **kwargs가 무엇인지 알아보도록 하자. *args란? args는 arguments의 약자이고 *은 가변 인자를 표현하는 문자이다. (args 이름을 사용하지 않아도 된다) 함수를 구현하다 보면 고정된 개수의 인자가 아닌 경우가 존재한다. 이럴 때 유용하게 사용할 수 있다. # 두 개의 인자 덧셈 def add(a, b): return a + b # 여러 개의 인자 덧셈 def add(*args): total = 0 for num in args: total += num return total print(add(1, 2, 3, 4, 5))..

Language/Python 2022.07.03

[Python] mac 경로 설정

1. 개요 Python 경로 설정을 신경 쓰지 않아서 에러를 잡는데 많은 시간을 소비한 경험이 있다. [발생 에러] python file.py parameter 코드를 실행하니 Syntax Error가 발생하였다. 처음에는 Syntax Error라서 코드에 문제가 있다고 생각하였다. 하지만, python3 버전을 설치한 후 경로 설정을 해주지 않아 python 2.x 버전이 수행되어 발생한 에러였다. [해결 방법] 1. python3 으로 코드 실행하기 2. python 경로 변경 python2 버전보다 python3 버전을 자주 사용하고 python 명령어를 수행할 때마다 3을 붙이는 것은 번거롭기 때문에 python 경로를 수정하여 위 문제를 해결하였다. 2. Python 경로 변경 2.1 Pytho..

Language/Python 2022.01.14

JVM(Java Virtual Machine)이란?

Goal JVM의 개념을 이해할 수 있다. JVM에 의한 Java의 장단점을 이해할 수 있다. 자바 프로그램 개발 과정 1. .java 소스 파일 생성 2. 컴파일러(javac.exe)로 바이트 코드 파일(.class) 생성 3. JVM 구동 명령어(java.exe)로 실행 여기서 JVM은 자바 프로그램을 실행하는 가상의 운영체제 역할을 합니다. 운영체제별로 프로그램을 실행하고 관리하는 방법이 다르기 때문에 운영체제별로 자바 프로그램을 별도로 개발하는 것보다는 운영체제와 자바 프로그램을 중계하는 JVM을 두어 자바 프로그램이 여러 운영체제에서 동일한 실행 결과가 나오도록 설계한 것입니다. 바이트 코드는 모든 JVM에서 동일한 실행 결과를 보장하지만, JVM은 운영체제에 종속적입니다. 자바 프로그램을 운영..

Language/Java 2020.12.30

Garbage Collection

이번 글에서는 Garbage Colleciton이 무엇인지에 대해서 알아보도록 하자. 1. GC(Garbage Collection)란? 쓰레기 수집(Garbage Collection, GC)은 메모리 관리 기법 중 하나이다. 프로그램이 동적으로 할당했던 메모리 영역 중에서 필요 없게 된 영역을 해제하는 기능이다. C#, JS, Python 등의 언어는 GC를 기본적으로 제공하며, C와 C++는 malloc(), free()와 같은 저수준의 메모리 관리 함수를 제공한다. 물론, libgc를 활용하여 GC를 library 형태로 사용할 수 있다. 2. GC(Garbage Collection) 구현 Python의 GC는 레퍼런스 카운팅(reference counting)과 세대별 가비지 컬렉션(generati..

Language/Python 2020.12.12

Python의 장점과 단점

Python은 최근 들어서 많은 사람들이 사용하고 있는 대표적인 언어 중 하나이다. 위 그림은 2020년도 12월 프로그래밍 언어들의 인기 순위인데 Python은 3위에 랭크되어 있으며 성장률이 가장 높다. Python을 사용하는 주변 사람들에게 사용하는 이유를 물어보면 대부분 배우기 쉽고, 가독성이 좋다는 이유를 말한다. 이밖에도 어떠한 장단점이 있는지 알아보도록 하자. 장점 1. 코드가 단순하고, 길이가 짧아 접근성이 좋다. 2. 쉬운 문법과 간결한 코딩으로 인해 프로그래밍에 입문하기 좋은 언어이다. 3. 운영체제에 종속되어 있지 않다. (windows나 Mac, Linux 등에 모두 무리 없이 동작한다) 4. 들여쓰기를 하지 않으면 오류를 발생시킨다. 이러한 강제적인 들여쓰기는 코드를 더 가독성 좋..

Language/Python 2020.12.12