본문 바로가기
반응형

분류 전체보기136

[Python] 예외처리 try, except, finally and raise | LIM 📌 python의 예외처리 1. try & except 우리가 대표적으로 예외처리를 하는 방법이다. def exception_test(self): try: abc = 321 abc.lower() except Exception as e: print("err message:", e) err message: 'int' object has no attribute 'lower' 2. try & except & finally finally 까지 추가하면 에러 발생과 관계 없이 항상 실행되는 코드를 추가로 구성할 수 있다. def exception_test_with_finally(self): try: abc = 321 abc.lower() except Exception as e: print("err message:".. 2022. 6. 24.
[Python] 추상 메서드 ABC의 정의와 사용 | LIM python의 ABC 클래스는 Base 클래스를 상속받는 파생 클래스가 반드시 Base 클래스의 메서드를 명시적으로 선언해서 구현하도록 강제하는 추상화 클래스 기능이다. 따라서 상속받는 클래스에서 메서드를 구현하지 않으면 에러가 발생한다. 이 추상메서드를 이해하기 전에 먼저 상속과 다형성에 대한 개념을 잡아보도록 하자. 📌 상속(Inheritance)과 다형성 📚상속 OOP의 가장 강력한 기능중 하나인 상속은 클래스의 재사용성을 높임으로서, 코드의 반복에 따른 유지 보수 비용을 낮추는데 큰 역할을 했다. 예시) Country의 속성을 상속받은 Korea 클래스이다. 오버라이딩한 show 메서드에서는 Korea에서 정의한 대로 출력되고 나머지의경우 오버라이딩 되지 않아서 부모 클래스에서 정의된대로 출력되게.. 2022. 6. 19.
[Airflow] Airflow Connection with Google Secret Manager | LIM 현재 회사에서 Airflow를 Google Composer(composer v1)로 사용하고 있다. 하지만 Cloud Composer내에 Version Upgrade가 아직 Beta version이라 완벽하게 진행되지 않고 롤백된 경험이 있다..😔 이때 새로운 환경을 만들어서 기존 환경에 있던 Connection들을 수동으로 모두 다시 기입했었는데 이러한 사태를 막고자 개인 로컬에 Connection 정보를 저장해두고 새로운 환경으로 이관할 때마다 API를 통해 이관하기로 했다. 그러나 알다시피 개인 로컬에 계정 정보를 저장한다는게 사실 안전하지 않기도 하고 누군가가 추가할때마다 로컬에서 정확하게 관리가 되어야 하기 때문에 관리적인 측면에서도 비효율적이었다. 어떻게 할까 찾아보던 와중 Google에 Se.. 2022. 6. 16.
[Python] Thread & Lock ( 쓰레드와 락 ) | LIM 📌 Thread(스레드)란? 스레드(thread)란 프로세스(process) 내에서 실제로 작업을 수행하는 주체를 의미한다. 한 프로세스 내에서 여러 개의 작업들이 동시에 실행될 수 있어야 하는데 이것이 스레드이다. 스레드는 프로세스가 가지고 있는 메모리를 공유한다. 또한, 두 개 이상의 스레드를 가지는 프로세스를 멀티스레드 프로세스(multi-threaded process)라고 한다. 파이썬 프로그램은 기본적으로 하나의 쓰레드(single thread)에서 실행된다.(파이썬의 GIL 정책) 따라서 코드를 병렬로 실행하기 위해서는 별도의 쓰레드를 생성해야 하는데, 파이썬 쓰레드를 생성하기 위해서는 threading모듈을 사용할 수 있다. 그렇다면 프로세스와 스레드의 차이는 무엇인가? 프로세스는 프로그램이.. 2022. 6. 15.
[Airflow] CustomOperator 생성 | LIM 회사에서 task를 생성할 때 task가 단순 request만 요청하는 작업이 많아졌고 기존에는 requests.get()하고 return값을 처리하는 함수를 따로 만들었는데 이 함수가 간단하게 operator로 생성되면 좋을 것 같아서 CustomOperator 생성하는 방법을 찾아보게 되었다. airflow 공식 document와 BaseOperator, PythonOperator를 참조해서 만들었다. ✅ airflow 공식 document https://airflow.apache.org/docs/apache-airflow/2.2.3/howto/custom-operator.html airflow를 사용하면서 느끼는 거지만 공식 document 설명이 좀 불친절한 것 같다. 특히 원래 CustomDec.. 2022. 6. 12.
[MySQL] Transaction의 모든 것 | LIM MySQL/MariaDB의 InnoDB 스토리지 엔진은 Transaction(트랜잭션) 기능을 지원한다. 📌 Transaction 단어의 뜻은 이러하다. 거래, 매매 처리과정 컴퓨터 과학 분야에서의 트랜잭션은 “더이상 분할이 불가능한 업무처리의 단위" 를 뜻한다. ✔️ 이것은 하나의 작업을 위해 더이상 분할될 수 없는 명령어들의 모음, 즉 한꺼번에 수행되어야 할 일련의 연산모음을 의미한다. 예로, 사용자가 바라보는 db에 이런 작업을 한다고 하자 매일 오후 11시에 delete 후 새로운 정보를 합해서 insert 하는 작업이 있다. 이 작업은 delete 후 insert 가 완벽히 하나의 작업으로 끝나야 사용자는 새로운 정보를 받아볼 수 있다. transaction을 이상하게 묶으면 delete 도중 .. 2022. 5. 21.
반응형