💻 프로그래밍/Python
-
비동기로 Third-party API 처리하기 (feat. aiohttp, asyncio)💻 프로그래밍/Python 2021. 4. 7. 16:13
안녕하세요! 운동하는 개발자 제이입니다! 오늘은 비동기로 Third-party API를 처리하는 방법, 그리고 제가 왜 비동기를 사용했는지에 대한 과정을 설명해보겠습니다. 제가 비동기에 관심을 갖게 된 이유는 현재 개발 중인 토이 프로젝트에서 Github API를 호출하기 때문입니다. 근데 단순히 1번 호출해서 사용하는 게 아니라 Github 사용자에 따라 10번 일수도 100번 일수도 있습니다. 현재 개발 중인 토이 프로젝트는 등록한 Github 유저의 정보를 가지고 API를 호출해서 정보를 보여주는 서비스입니다. 여기에 DB에 read, write 등의 작업들을 하게 되면 엄청난 시간이 걸리게 됩니다. 지금까지 가장 오래 걸리는 user의 경우 43초 정도가 걸렸네요... 코드와 실행결과를 보면서 좀..
-
filter() + lambda VS list comprehension💻 프로그래밍/Python 2020. 8. 10. 19:39
안녕하세요! 운동하는 개발자 Jay입니다!! 오늘은 list의 내용을 필터링해서 새로운 list로 반환하는 두 가지 방법에 대해서 알아보겠습니다! 1. filter, lambda 함수를 이용 filter함수와 lambda 함수로 list를 입력받아 조건으로 필터링하는 간단한 코드를 보겠습니다. # python2.x test_list = [1, 2, 3, 4, 5] filter(lambda a : a > 2, test_list) filter(lambda 값 : 조건문, 리스트) 문법은 굉장히 간단합니다. lambda 함수를 정의하고 filter로 감싸주면 됩니다. 결과를 확인해 보겠습니다. 오 상당히 쉽습니다. 하지만 이렇게 쉽게 끝나면 글을 쓰지 않았겠죠? filter함수의 return값이 python3..
-
[RxPy] 디버깅, 오류 처리하기💻 프로그래밍/Python 2020. 7. 15. 17:52
안녕하세요! 운동하는 개발자 Jay입니다! 오늘은 RxPy의 디버깅과 오류 처리에 대해서 알아보겠습니다. 1. do() 연산자로 디버깅하기 🐛 RxPy의 유틸리티 연산자 중 do_action()이 있습니다. do_action()은 rx.core.operators.do에 _do_action()을 wrapping 하고 있죠! rx.core.operators.do 에는 do 관련된 함수들이 모여있습니다. 왜 다른 do 함수들은 wrapping이 안되어 있는지 모르겠네요ㅎㅎ - 개인적인 생각으로는 do_action()으로 다른 do 함수들의 동작을 다 할 수 있어서 그런 것 같아요. 어떤 함수들이 있는지 한 번 봐볼까요? _do_action() : on_next, on_error, on_complted 호출 후..
-
[RxPy] CPU Concurrency와 Muliti Thread로 Rx하기💻 프로그래밍/Python 2020. 7. 14. 19:13
안녕하세요! 운동하는 개발자 JAY 입니다! 오늘은 드디어! RxPY를 Multi Thread(멀티 쓰레드)로 사용하는 방법에 대해 설명하려고 합니다! 직접 코드를 실행해보기에 앞서 몇 가지 개념에 대해서 알아보고 들어가겠습니다! 1. Concurrency(병행성) VS Parallelism(병렬성) 🌏 RxPy 3.1.0 문서에 보면 Multi Thread 관련된 설명에 이렇게 나와 있습니다. Concurrency(병행성)이라는 개념이 살짝 헷갈릴 수도 있는데, 보통 Multi Thread하면 Paralle(평행) 이라고 생각을 할 수 있는데, 다른 언어는 어떤지 모르겠지만 RxPy에서는 Concurrency(병행)입니다. 즉, 실제로 동시에 실행하는 것이 아닌 동시에 실행하는 것처럼 보이는 것입니다...
-
[RxPy] Operator 응용과 Custom Operator 만들기(feat. 메서드 체이닝(Method Chaning))💻 프로그래밍/Python 2020. 6. 29. 02:56
안녕하세요! 운동하는 개발자 JAY입니다. 오늘은 RxPy 연산자를 응용해서 몇 가지 문제를 풀어보도록 하겠습니다. RxPy에 대한 기본 설명은 여기를 참고해주시기 바랍니다. Rx에서 제공하는 연산자들이 궁금하다면 여기에서 확인해 주세요! 문제를 풀기전 메서드 체이닝에 대해서 알아보고 가겠습니다! 1. 메서드 체이닝? 그게 뭐입니까 휴먼? 🤔 일단 메서드 체이닝이란 method().filter().map() 이런 식으로 메서드를 연속적으로 이어서(체이닝) 쓸 수 있는 방식을 말합니다. 다만 RxPy에서는 메서드 체이닝을 지원하지 않습니다. RxJava 와같은 언어도요 ㅎㅎ 메서드 체이닝을 지원하지 않는 다면, 여러 Observable을 연속적으로 사용할 때 매우 비효율적으로 사용하게 됩니다. 예를 들면 ..
-
[RxPy] Reactive Programming? Rx? 그게뭐야?💻 프로그래밍/Python 2020. 6. 23. 02:30
안녕하세요! 개발자 JAY 입니다! 오늘은 Reactive Programming 그리고 Rx에 대해서 이야기 해보겠습니다. 처음 Rx에 대해서 들어본 건 iOS 개발자 동료들이 RxSwift를 맨날 이야기하길래 ㅋㅋ 궁금해서 물어봤더니 비동기 프로그래밍 관련된 내용이라고 하더라고요! 그리고 요즘 유행(?)이라고 ㅋㅋㅋ 그래서 "아~그런가 보다" 하고 지나가다가 회사 안드로이드 개발자분이 Rx스터디를 열어서 바로 한다고 했습니다. (평소 Rx가 궁금하긴 했지만 의지박약이라 실천에 못 옮겼었는데.. 매우 잘.. 되었습니다 ㅋㅋ) 1. What is Reactive Programming? 🤔 먼저 Reactive Progrming에 대해서 간단히 알아보겠습니다. 늘 그렇듯 위키피디아 를 참고하였습니다. In ..
-
[BitBar] 오픈소스 플러그인 내맘대로 만들어보기 (Mac OS 메뉴바 플러그인)💻 프로그래밍/Python 2020. 6. 14. 05:32
안녕하세요! Jay 입니다. 오늘은 평소에 사용하고 있던 BitBar라는 오픈소스의 플러그인을 만들어 보겠습니다! 1. What is BitBar? BitBar는 Mac OS의 상단에 있는 메뉴바에 어떤 상태등을 쉽게 표시할 수 있도록 해주는 오픈소스 프로그램입니다. 그리고 이 BitBar와 함께 다양한 플러그인으로 여러 가지 상태를 표시할 수 있습니다. BitBar 홈페이지에 가보면 많은 개발자들이 편리하고 재밌는(?) 플러그인 들을 만들어 놓았습니다. https://getbitbar.com/ BitBar - Put anything in your Mac OS X menu bar BitBar: the free app that lets you put the anything into your Mac OS X..
-
[Python]메타클래스 & 인스턴스, 클래스, 스태틱 메소드 개념 정리💻 프로그래밍/Python 2018. 4. 30. 18:53
안녕하세요! 코딩하는 JAY입니다. 오늘은 파이썬 메타클래스, 인스턴스 메소드, 클래스 메소드, 스태틱 메소드에 대해 정리해보도록 하겠습니다.처음 Python에서 클래스 개념을 공부할때, C++이랑 개념이 조금 달라 많이 헷갈렸던 것 같습니다. * 메타클래스(metaclass) : 클래스를 만드는 무언가(?)뭔가 설명이 이상해 보이네요 ㅎㅎ C++과는 다르게 파이썬에서 클래스는 그 자체로 객체입니다. 클래스가 정의되면서 메모리에 공간을 차지하게 됩니다. 그리고 메타클래스는 이런 클래스를 만들어 주는 역할을 합니다. 실제로 예제를 통해 메타클래스에 대해서 좀 더 알아보도록 해보겠습니다. 파이썬에서는 데이터 타입을 확인하기 위해 type() 키워드를 사용합니다. 123print(type(100)) # int..