본문 바로가기

SW 개발104

Python Dataframe Visualization: matplotlib로 chart 그리기 (sample code) Python visualization lib 중 가장 많이 사용하고 유명한 패키지는 Matplotlib입니다. Matplotlib는 numpy, pandas dataframe과 호환 잘되며 다양한 종류의 데이터와 그래프를 쉽게 구현할 수 있습니다. Matplotlib를 기반으로 보다 쉽게 구현할 수 있거나, 다양한 옵션을 제공하는 seaborn과 같은 lib도 매우 유용하게 사용할 수 있습니다. matplotlib Sample code 얻는 법 Matplotlib Gallery 사이트에서 matplotlib로 구현하고자 하는 Graph 먼저 선택합니다. Bar, Line, Stacked plot, Scatter 2D/3D, 등 많은 종류의 그래프를 지원하고 있습니다. 그중에서 구현하고자 하는 그래프를 선.. 2021. 7. 28.
Random Number를 가지는 Pandas Dataframe 생성 (좋은 code와 나쁜 code 비교) Pandas Dataframe은 보통 df.read_csv() 함수로 CSV 파일을 읽어 dataframe을 생성하지만, 성능 테스트 목적으로 random number를 가지는 dataframe 생성해야 하는 경우가 아래와 같이 가끔 있습니다. [SW 개발/Data 분석 (RDB, NoSQL, Dataframe)] - Pandas Dataframe 처리 속도 향상을 위한 병렬 처리 방법: Swifter 모듈 (사용법 쉬움)) Random number 생성은 Numpy random 또는 Built 모듈인 random 모듈 모두 사용 가능합니다. 구현 방법에 따라서 Dataframe의 생성 속도 차이는 상당히 발생합니다. 테스트 결과 10,000,000개 사이즈의 실행 속도를 비교하는 성능이 빠른 code는.. 2021. 7. 27.
Pandas Dataframe 처리 속도 향상을 위한 병렬 처리 방법: Swifter 모듈 (사용법 쉬움) Python Panadas의 Dataframe는 기본적으로 각각의 row 또는 column을 순차(squencial) 처리합니다. 데이터의 크기가 증가하면 처리 속도는 기하급수적으로 저하가 있으며, 이는 병렬 처리를 통해서 처리 속도를 향상시킬 수 있습니다. Python 병렬 처리를 지원하는 다양한 라이브러리가 있으며(참고 링크), 본 포스팅에서는 Pandas Dataframe에 특화된 Swifter 모듈 사용법과 테스트 결과를 설명합니다. Swifter 설치 Swifter는 Python package 매니저인 PyPI로 설치할 수 있습니다. Swifter 설치 시 dask, bleach 등 관련 모듈도 같이 설치됩니다. $ sudo pip3 install swifter Swifter 사용법 Swifte.. 2021. 7. 26.
Pandas Dataframe Groupby() 함수로 그룹별 연산하기: Split, Apply, Combine Pandas DataFrame에서 가장 많이 사용하는 Groupy 사용법을 설명하도록 하겠습니다. SQL 개발 경험을 가지고 있는 분이라면 GROUPBY를 높은 빈도로 사용했을 것입니다. Groupby 동작 방식은 Pandas 공식 사이트(링크)에 자세히 설명되어 있습니다. Groupby()는 ① 전체 데이터를 그룹별로 분할(split)하고, ② mean(), sum(), count()와 같은 Aggregate function을 사용하여 연산(apply)하고, 연산 결과를 ③ 다시 합치는(combine) 과정을 거치게 됩니다. Splitting the data into groups based on some criteria. Applying a function to each group independent.. 2021. 7. 25.
Python Pandas로 Excel과 CSV 파일 입출력 방법 Pandas에서는 다양한 파일 입력을 지원하고 있습니다. 현재 Pandas는 버전 V1.3.0이며, 현 버전 기준으로 Pickling, Flat file, Clipboard, Excel, JSON, Html, Laxtex, HDF, SAS, SPASS, SQL, Google BigQuery, STATA의 파일 포맷을 지원하고 있으며, 이 중에서 일반적으로 가장 많이 사용하고 있는 Excel과 CSV 파일을 읽고 쓰는 방법을 설명합니다. Pandas로 Excel 파일 읽기: Local File과 Http URL도 지원함 Pandas에서 Excel 파일을 읽기 위해서는 Excel Reader를 설치해야 합니다. Pandas에서 기본적으로 xlrd를 사용하고 있으며 xls포맷만 지원합니다. 만일 xlsx인 엑.. 2021. 7. 21.
Python 정규식(Regular Expression) re 모듈 사용법 및 예제 정규식 표현식(Regular Expression)은 문자열을 처리하는 방법 중 하나로 "특정 조건 또는 패턴"을 치환하는 과정을 쉽게 처리할 수 있는 방법입니다. Python에서 정규식 처리 모듈은 re 로, re 모듈에 대한 사용법과 예제를 설명하도록 하겠습니다. 정규식 re import re를 사용하기 위해서는 import re를 선언하고, re 내부 함수와 pattern을 정의하여 호출합니다. import re 정규식 re 함수 Python에서 re 모듈에 대한 설명은 링크에 있고, 주요 함수는 다음과 같습니다. re 함수 설명 사용 예 re.compile(pattern, flags=0) 정규식 객체로 compile함 정규식 객체는 match()와 search()에 사용 prog = re.compi.. 2021. 7. 19.
Python KoNLPy와 WordCloud를 활용하여 WordCloud 생성하기 (Sample code 포함) WordCloud는 텍스트 기반의 문서에서 키워드, 단어, 자주 사용하는 단어를 추출하여 핵심 내용을 직관적으로 파악할 수 있도록 그래픽으로 가시화하는 방법입니다. Python으로 WordCloud를 생성하기 위해서는 아래와 같은 3가지 단계가 필요합니다. KoNLPy와 nltk lib를 사용해서 문서에서 각각의 형태소(≒ 주로 명사인 단어)로 추출 Collection Counter() 모듈을 사용해서 명사가 언급된 횟수를 계산 WordCloud Lib를 사용하여 형태소(단어) 빈도에 따른 WordCloud 이미지 생성 및 저장 한국어 형태소 분석 KoNLPy (Korean NLP in Python) 한국어 자연어 처리 Python 오픈소스인 KoNLPy를 사용합니다. KoNLPy의 소스 코드와 홈 페이.. 2021. 7. 19.
Python: JSON 개념과 json 모듈 사용법 Python JSON 사용 방법에 대해서 정리하고자 합니다. JSON은 Key-value를 양식을 가지는 텍스트 파일로 인터넷 상의 서버-클라이언트의 데이터 교환에 많이 사용되고 있습니다. 최근에서는 Web 서버와 client간의 통신 및 프로그램과 프로그램 사이의 데이터 표현 및 교환하는데 사용되는 사실 상의 표준입니다. Python에서는 json 모듈을 지원하고 있으면 인코딩/디코딩을 지원하고 있고, JSON 데이터와 Python 데이터는 1:1로 맵핑되어 사용하기 쉽니다. Python JSON 공식 문서는 여기를 참고해주세요. 1. JSON 이란 JSON 에 설명 및 예제를 참고해주세요. (출처: 위키백과) JSON(JavaScript Object Notation)은 속성-값 쌍(attribute–.. 2021. 7. 16.
Python으로 개행 문자(\n)가 포함된 JSON 읽기: JSONDecodeError 수정하기 Python json 모듈에서 개행 문자 "\r\n" 또는 " \n" 포함된 string을 json.loads() 함수로 dictionary로 객체로 변환할 때 발생하는 에러입니다. 개행 문자가 포함된 경우 json.loads() 함수 호출 시 "JSONDecodeError():Invalid control character" 에러가 발생하며 수정 방법은 ① json.loads() 호출 시 strict=True 값으로 전달하는 방법과 ② 원본 스트링에서 문구를 치환하는 방법 2가지가 있습니다. 에러 발생 예제 import json json_str = """{ "이름": "홍길동", "나이": 25, "문장": "첫 줄 문장 \n 두 번째 문장" }""" jdata_obj = json.loads(json_s.. 2021. 7. 14.
Apple App Store 사용자 댓글(리뷰) 데이터 수집하기 (Sample code 포함) 이전 포스팅 (https://kibua20.tistory.com/192)에서는 Python Selenium과 BeatifulSoup을 사용해서 Google Play Store에서 App에 대한 사용자, 작성일, 좋아요, 리뷰 내용의 데이터를 크롤링하는 방법에 대해서 설명했습니다. Apple App Store에서는 사용자 리뷰 정보를 웹 페이지와 RSS Feed로 제공하고 있으며, 이를 수집하는 방법을 설명합니다. Apple App 앱 스트에서 사용자 리뷰는 아래 그림과 같이 사용자 리뷰 내용을 제공하고 있습니다. 아래 사이트를 Selenium을 사용해서 크롤링도 가능하지만, RSS Feed가 보다 정형적인 데이터를 제공하고 구현이 쉽게 때문에 RSS Feed를 사용합니다. 예를 들어 Youtube의 RS.. 2021. 7. 14.
Python Selenium과 BeautifulSoup을 활용하여 Google PlayStore 사용자 리뷰 (댓글) 가져오기 (Sample Code 포함) 데이터 수집 목적으로 웹 크롤러를 사용해서 인터넷 사이트에 공개된 정보를 모아 CSV (Comman Seprated Values) 파일로 저장하는 경우가 많습니다. 예를 들어, 구글이나 네이버에서 주식 종목별 주가, 인터넷 댓글, 날씨 정보, 부동산 정보를 Crawler를 통해서 데이터를 수집하여 CSV 로 저장하고, 이를 인공지능이나 Machine Learning의 입력 데이터로 활용할 수 있습니다. 각 인터넷 사이트에서 Open API를 제공하면 API를 통해서 데이터를 수집하지만, 그렇지 않는 경우 어쩔 수 없이 크롤러를 사용해서 데이터를 수집해야 합니다. 본 포스팅은 Google Play의 사용자 리뷰 정보를 모아서 CSV 파일로 저장하는 방법을 설명하고자 합니다. 각 앱의 Playstore 리뷰.. 2021. 7. 14.
Panda Dataframe 날짜 기준으로 데이터 조회 및 처리하기 Dataframe 날짜 기준으로 데이터 조회 데이터 분석 시 일정 시간에 저장된 시계열 데이터를 처리하거나, 특정 기간 (예를 들어, 최근 한 달 또는 두 달간) 데이터를 기준으로 통계치를 산출하고자 할 때 날짜 기준으로 데이터를 필터링하고 처리하는 것이 필요합니다. Pandas Dataframe에서는 아래와 같이 다양한 방법으로 날짜 기준의 데이터 행의 선택 가능합니다. 직관적으로로 이해가 쉬운 것은 isin() 함수와 between() 함수이고, 다양한 조건의 데이터 (예를 들어, 매주 월요일, 매주 1일 기준, 일주일 기간)를 얻어오는 함수는 query()가 적절합니다. pandas.DataFrame.isin()은 두 날짜 사이에서DataFrame 행을 선택 pandas.Series.between(.. 2021. 6. 20.
Pandas Dataframe 여러 열과 행에 apply() 함수 적용 (Sample code 포함) Padas Dataframe apply() 함수 사용법 Panda dataframe을 엑셀의 매크로 함수처럼 각 열에 대한 연산을 하는 방법입니다. Pandas의 apply()를 사용하고 이는 가장 많이 사용하고 강력한 기능입니다. 각 항목을 요약하면 아래와 같습니다. 본 포스팅에서 설명한 내용은 Github에 test code를 올렸놨습니다. 기존의 Column 값을 연산하여 신규 Column을 추가하는 경우: df.apply(func, axis =1) axis=0은 row이고, axis=1은 column입니다. Row 값을 추가하는 경우에는 df.loc[] = df.apply(func, axis =0)으로 추가합니다. Column과 Row은 바꾸는 경우 df.transpose() 함수를 사용합니다. .. 2021. 6. 20.
Dataframe(또는 Numpy)를 JSON 출력 시 에러: TypeError: Object of type int64 is not JSON serializable Pandas dataframe 또는 Numpy를 사용해서 JSON으로 출력하는 경우 발생하는 에러입니다. Pandas dataframe의 value list는 numpy를 사용하고 있고, Numpy의 data type은 Python에서 정의하고 있는 data type보다 많기 때문에 표준 Python data type만 처리하는 Json encoder에서 에러가 발생합니다. 이러한 문제점을 수정하기 위해서 custom json encoder를 정의하거나, numpyencoder를 설치해서 사용할 수 있습니다. Custome Json encoder 코드는 GitHub 링크를 확인해주세요. 에러 메시지: File "dataframe_to_json_test.py", line 22, in test print (.. 2021. 6. 20.
자주 사용하는 curl 명령어 옵션과 예제 curl은 오픈 소스로 개발되어 윈도우와 리눅스에 기본 설치되고 있는 웹 개발 툴로써 http, https, ftp, sftps, smtp, telnet 등의 다양한 프로토콜과 Proxy, Header, Cookie 등의 세부 옵션까지 쉽게 설정할 수 있습니다. 이러한 장점 때문에 Client를 코딩을 시작하기 전에 curl 명령어로 서버 동작을 먼저 확인함으로써 좀 더 빠르게 개발을 진행할 수 있습니다. 본 포스팅은 curl 옵션 중 자주 사용하는 옵션 위주로 예제와 설명을 정리하였습니다. 연속된 URL 로 요청하고 결과 파일로 지정하기 네이버나 카카오의 HLS 동영상을 다운로드할 때 연속된 URL을 하나의 명령어로 처리할 수 도 있습니다. $ curl "https://example_url/[00000.. 2021. 6. 13.
우분투 20.04에서 MariaDB 설치 및 기본 동작 확인 명령어 관계형 데이터 베이스의 대표 주자는 Oracle입니다. 관계형 데이터베이스 업체는 오라클, IBM, 마이크로소프트 순이고, Oracle의 DBMS의 가장 높으며, 오픈 소스 진영의 DBMS는 MySQL, PostgreSQL, SQLite을 많이 사용하고 있습니다. 최근에 MySQL이 오라클 인수된 영향으로 기능 개선에 다소 미흡한 부분이 있고, 라이선스가 모호한 점이 있어 최근에는 MariaDB를 많이 사용합니다. MariaDB는 MySQL를 소스를 기반으로 성능 개선한 DBMS라 기능이 호환되며, 성능 개선 내용이 반영되어 있다고 합니다. 아직까지는 MySQL 을 사용하는 비율이 높지만, MariaDB는 최근 사용율이 급격하게 증가하고 있습니다. 관계형 데이터 베이스란 (출처: Oracle) 관계형 데.. 2021. 6. 6.
MariaDB의 Python Connector 설치와 사용 방법 MariDB Programming Language / InterfaceConnector DB 서버에 MariaDB를 설치(링크)하고 Client에서 DB를 사용하기 위해서는 Connector를 사용해야 합니다. DB Connector는 아래와 같은 다양한 언어를 지원하고 있고, 각 개발 언어에 맞는 Connector를 사용하면 됩니다. 여러 프로그래밍 언어 중에서 Python으로 MariaDB 연동하는 방법을 설명할 예정입니다. MariaDB Python connector 사용 방법은 아래 링크에 설명되어 있고 본 포스팅은 아래 MariaDB blog를 실습 후 정리한 내용입니다. https://mariadb.com/ko/resources/blog/how-to-connect-python-programs-.. 2021. 6. 5.
MariaDB 또는 MySQL에서 지원하는 Built-in 함수 설명 및 예제 MariaDB 또는 MySQL에서 수많은 내장 함수를 지원합니다. C언어나 Python에서 지원하는 String함수, Numeric 함수뿐 아니라 관계형 DB에서만 지원하는 함수도 있습니다. MariaDB의 함수 리스트는 https://mariadb.com/kb/en/function-and-operator-reference/에서 확인이 가능하면 관계형 DB에서만 사용되는 독특한 함수 예제 위주로 설명하도록 하겠습니다. 각각의 함수는 굳이 암기할 필요는 없고, 대략의 함수 지원 범위만 알고 있고 함수를 사용할 때 마다 Reference 사이트를 참고하는 것을 추천드립니다. Built Function 종류 String Functions Date & Time Funcitons Aggregate Function.. 2021. 5. 25.
CSV 파일에서 MariaDB(또는 MySQL)로 데이터 가져오는 방법 CSV(Comma Serparated Values) 파일을 MariaDB나 MySQL DB로 가져오는 방법을 설명합니다. CVS 파일을 관계형 DB 파일로 만들어서 SQL Query문을 사용하고자 할 때 유용합니다. 로드할 데이터가 1GB 보다 많거나 데이터를 한번에 처리하기 힘든 경우 CSV 파일을 적당한 크기로 파일을 분할하고 DB에 로드할 수 있습니다. CSV 파일을 분할은 split 유틸리티를 사용할 수 있으면 이에 대한 사용 방법 이전 포스팅의 링크를 참조해주세요. # CVS 파일을 1024MB 단위로 나눔 $ split -C 1024m --additional-suffix=.csv --numeric-suffixes=0 Myfile.csv Myfile_part_ 위의 명령을 실행하면 Myfile... 2021. 5. 24.
MariaDB 또는 MySQL에서 사용하는 Data type 정리 관계형 데이터 베이스에서 처리하는 데이터 타입은 C, Python, Java와 같은 프로그래밍 언어의 데이터 타입보다 세부적으로 정의되어 있습니다. Maria DB에서 정의하는 데이터 타입은 아래와 같습니다. Numeric Data Type String Data Types Date & Time Data Types Other Data Types: Geometry Types 1. Numeric Data Types Numeric Data Type은 숫자를 표현합니다. 프로그래밍 언어의 Integer, Float, Double형과 동일합니다. TinyInt는 1 Byte, SmallInt는 2 Byte, Medium Int는 3 Byte, Int는 4 Byte로 표현됩니다. 소수점 실수의 정밀도에 따라서 Flo.. 2021. 5. 23.
우분투 20.04에서 Jupyter Notebook 사용법: Web browser에서 Python 개발 환경 구축 Jupypter Notebook은 https://jupyter.org/에서 개발한 Web 기반의 interface로 Browser상에서 Python 코드를 한 줄씩 실행하여 출력 결과를 확인할 수 있는 개발환경을 제공하는 오픈 소스의 개발 툴입니다. Local PC에서 Python 개발뿐 아니라, 브라우저 기반의 Interface를 사용하는 특성 때문에 때문에 AWS과 Goolge Cloud에서 Jupyter Notebook 형태로 Python code를 샘플 코드를 배포하기도 합니다. 또한 원격 서버에 Jupyter Notebook을 설치하고 Browser에서 원격으로 Python 코드를 개발할 수 있습니다. 예를 들어 AWS EC2에서 Jupyter를 설치하여 원격 소스 작업을 할 수 있습니다. Ju.. 2021. 5. 16.
Android 스마폰을 PC 화면으로 미러링: Mirroid Mirroid 악성 코드 주의 Mirroid windows용 Version 1.6.0.5 설치 파일 중 하나(MirroidUnistall.exe)에서 악성 코드인 트로이목마가 검출되었습니다. V3와 Window defender로는 검출되지 않고, 알약(다운로드 링크)으로 검출됩니다. 해당 파일의 악성 코드 진성여부와, 악성코드로 감염된 파일로 실수로 배포한 것인지 의도적으로 배포한 것인지는 알 수 없습니다. 악성 코드에 의해서 피해가 없도록 다운로드 시 주의 부탁드립니다. 알약으로 치료는 되지만 혹시 몰라 Windows OS를 다시 설치하였습니다. Mirroid 카페의 (cafe.naver.com/mirroid)에서 바이러스 공지 내용 참고하세요. Mirroid 소개 안드로이드 스마트 폰을 PC 화면으로.. 2021. 2. 1.
Python으로 개발된 Android Apk Decompile Tool: androguard Android apk 분석 tool로 python으로 개발된 androguard를 설명합니다. Android apk 분석 tool은 ① SDK에 포함된 apkanalyzer, aapt가 있고, ② Java로 개발된 apktool을 사용할 수 있으나, 이는 실행 파일과 Jar형태로 배포되어 Python으로 개발된 프로그램에서 import 할 수 없고, system command로 Integration해야 합니다. [모바일 SW 개발/Android] - Android apk Decompile 과 분석 tool: apktool 사용법 [모바일 SW 개발/Android] - Command line 기반 Android Apk 분석 툴: apkanalyzer Androguard의 fork로써 apk_parse가 있.. 2021. 1. 27.
Python으로 압축 파일 다루기: Zipfile 과 shutil.make_archive() Python에서 압축 파일은 내장 모듈인 Zipfile 모듈과 shutil.make_archive()와 shutil.unpack_archive()을 이용하여 다룰 수 있습니다. Zipfile 모듈은 python 기본 내장 모듈로, Zip 파일을 압축하고, 읽고, 저장, 리스트를 얻어올 수 있습니다. 압축 알고리즘은 Deflate, BZip, LZMA 알고리즘을 지원합니다. 또한 4GB 이상의 Zip 파일인 Zip64도 처리할 수 있습니다. Zipfile 모듈의 문서는 링크를 참고해주세요. shutil.make_archive() 함수와 shutil.unpack_archive()은 zip, tar, gztar, bztar를 지원합니다. 코드 한줄로 폴더를 압축할 수 있습니다. Zipfile 모듈 - zip .. 2021. 1. 14.
Android apk Decompile 과 분석 tool: apktool 사용법 Android apk 분석 시 사용할 수 있는 Tool은 크게 Anroid SDK에 포함된 apkanalyzer (사용법 링크), aapt2, SDK 에는 포함되지 않은 Android studio에서 사용된다고 하는 apktool이 있습니다. apktool 은 원래 Apk의 Reverse engineering을 위해서 만든 것으로 Apk를 decode 해서 code를 만들고, 이를 다시 apk를 재 빌드하는 것이 가능합니다. Apk에 디코딩을 통해서 resources.asrc, class.dex, AndroidManifest, 리소스 xml, png 등을 추출할 수 있습니다. 이 중에서 AndroidManifest를 분석하고 해당 apk의 package name, version code, permissi.. 2021. 1. 14.
Python 음수 인덱스: line.split('+')[-1] 또는 line.split('/')[-1] 의미 C 언어인 경우 array에 '음수'인덱스는 허용하지 않지만, Python인 경우 음수 인덱스를 허용하고 있습니다. list 나 array와 같은 sqeunce 객체의 인덱스를 음수로 지정하면 마지막 항목부터 접근하게 됩니다. 음수 인덱스는 "마지막 항목"부터 접근하면 다양한 경우에 유용하게 사용할 수 있습니다. 예제 #1 a = (0,1,2,3,4,5,6) a[-1]=6 a[-2]=5 a[-3]=4 a[-4]=3 예제 #2 line = http://abc.example.com/def/ghi line.split('/') → ['abc.example.com', 'def', 'ghi'] line.split('/')[-1] → 'ghi' 예제 #3 line = 'a+b+c+d' line.split('+') →.. 2021. 1. 8.
Python에서 URL 한글 깨짐 현상: quote_plus()와 unquote_plus() Python으로 URL 처리 시 한글이 포함되어 있는 경우 한글 깨짐 현상이 있을 수 있습니다. 이는 URL 처리 시 특수 문자는 포함될 수 없어 ascii로 변환하여 발생하는 현상으로 url.parse 모듈의 quote_plus()와 unquote_plus()를 통해서 해결할 수 있습니다. ※ 만일 quote()와 unqute() 함수로도 한글이 깨져 있다면 인코딩 scheme을 확인해야 합니다. 기본적으로 'utf8'로 인코딩 되어 있는 경우 문제가 없으나, euc-kr이나 cpc-949로 인코딩 된 경우라면 아래 함수 encoding 값을 설정해야 합니다. URL에 한글이 포함되어 있는 경우 Before https://apkpure.com/t-map-%EB%82%B4%EB%B9%84%EA%B2%8C.. 2021. 1. 8.
Python BeautifulSoup으로 만든 Apk download 자동화 (Sample code) 이전 포스팅에서 Python 크롤러인 Selenium으로 https://apkpure.com 사이트에서 Android apk를 package name을 기준으로 apk으로 다운로드하는 방법을 설명하였습니다. [모바일 SW 개발/Android] - 파이썬으로 Apk Download 자동화: Selenium기반의 Apk 크롤러 Python selenium 모듈을 활용 방법은 chrome driver를 사용하고 있기 때문에 ① Chrome 버전 업데이트되면 driver도 같이 업데이트해야 하고 ② apk 다운로드를 완료를 시점을 정확하게 모르기 때문에 일정 시간 동안 sleep()으로 대기를 해야 합니다. 일반적으로 apk 사이즈가 100MB 이하에는 1~2분 안에 다운로드가 완료하지만, 일부 게임은 2GB가.. 2021. 1. 8.
파이썬으로 Apk Download 자동화: Selenium기반의 Apk 크롤러 Android를 개발하다 보면 목적에 따라서 APK를 다운로드해야 하는 경우가 있습니다. Google Play Store에서는 APK 자체를 다운로드할 수 있는 방법은 없고, APK Mirror 사이트를 통해서 다운로드할 수 있습니다. 일반 사용자인 경우에는 Android로 기반의 내비게이션에 APK를 다운로드하고 SD 카드로 복사하여 설치 가능합니다. 본 포스팅에서는 다운로드하고자 하는 APK 의 package name의 list를 기반으로 Python의 selenium과 chrome webdriver를 사용해서 '자동'으로 apk를 다운로드합니다. 이 방법은 APK 뿐 만 아니라 다른 Web site에서 특정 파일을 다운로드하는데 활용될 수 있습니다. 참고로, 다운로드한 apk를 상업적인 목적이나 추.. 2021. 1. 8.
라이딩 앱 Strava API 사용해보기: Webhook 구현 Webhook 이란 Webhook은 'user-defined http callback'으로 서버에서 데이터 변경이 발생한 경우 클라이언트로 변경 사항을 알려주는 메커니즘입니다. 서버에서 데이터 변경이 있을 경우 사용자가 등록한 Trigger URL(callback url)을 호출하는 방식을 사용합니다. Webhook의 유용한 점은 서버에서 데이터 변경 시점을 알려주시기 때문에 클라이언트에서 주기적으로 서버 데이터를 체크하는 Polling을 사용하지 않아 데이터 Traffic을 줄일 수 있고, Polling으로 인한 서버 부하를 줄일 수 있습니다. Webhook 이란 (출처: 위키 백과) A webhook in web development is a method of augmenting or altering.. 2020. 12. 26.