이 프로젝트는 카카오 OpenAPI를 사용하여 나에게 카카오톡 메시지를 전송하는 프로젝트이다. REST API를 사용한 카카오 로그인 과정 카카오 인증 서버와 통신하기 위해선 '인가 코드'와 '토큰'이 필요하다. 카카오 메시지 API 사용 권한을 받기 위해서도 필요하다. requests 라이브러리로 해당 url과 통신할 때 data에 인가 코드를 담아 요청하면 토큰을 발급받을 수 있다. import requests url = "https://kauth.kakao.com/oauth/token" data = { "grant_type" : "authorization_code", "client_id" : "", "redirect_uri" : "https://localhost.com", "code" : "" } ..
상대경로란 말그대로 상대적인 경로이며, 내가 작업하는 위치를 기준으로 경로를 설정하는 것을 말한다. 절대경로란 내가 작업하는 위치와는 상관없이 절대적인 경로를 설정하며, 변하지 않는 경로이다. Hello.txt라는 파일이 있을 때, 절대경로 : C:\Users\user\Desktop 상대경로 : (현재 위치가 Users 폴더일 때) user\Desktop 즉, 내가 작업하는 위치에 따라 경로가 결정된다! 파일을 읽거나 쓸 때 경로를 확인하는 것이 중요하다. 프로젝트에서 사용하는 코드는 대부분 상대경로로 작성되어 있다. 절대경로를 사용한다면 그 코드를 사용하는 모두가 해당 경로에 해당하는 디렉토리가 존재해야 한다. ex. C:\Users\user\Desktop 로 경로가 작성될 경우 사용자 모두가 C 드라..
개발을 하는 과정에서 코드를 간결하고 깔끔하게 작성하는 것 만큼 중요한 작업이 하나 있다. 바로 내가 작성한 코드를 테스트하는 것이다. 실제 개발 환경에서는 계속해서 코드가 수정되고 이에 따라 예상 값과 실제 값이 다르게 나올 수 있기 때문에 테스트하는 습관을 들이는 것이 좋다. 그저 단순히 print해서 결과 값을 확인한다면 간편하긴 하지만 그 경우가 많아질 경우 시간이 많이 걸릴 것이다. 이때 이러한 과정을 하나의 클래스를 통해 True/False를 알 수 있다면 훨씬 편할 것이다. 여러 테스트 케이스를 작성함으로써 코드를 테스트하는 과정을 유닛 테스트(Unit Test)라고 한다. import unittest def double(a): return a * 2 class TestDouble(unitt..
이 프로젝트는 파이썬을 이용하여 '크롤링'하는 방법을 배우기 위한 프로젝트로 HTML 소스를 가져오기 위한 Requests와 소스를 파싱(분석)하는 BeautifulSoup 라이브러리를 사용한다. 기존에 테크보이 워니 강의를 따라하면서 BeautifulSoup를 처음 사용했는데 너무 뜬금없어서 처음엔 당황했지만 이번 프로젝트를 따라 해보면서 이 라이브러리가 어떤 기능들을 수행하는지 알 수 있었다. BeautifulSoup 라이브러리는 많은 기능이 있기 때문에 자세한 정보는 다음 링크에서 확인 가능하다. : https://www.crummy.com/software/BeautifulSoup/bs4/doc/ Beautiful Soup Documentation — Beautiful Soup 4.9.0 docum..
이 프로젝트는 카카오 오픈 API를 사용하여 구현 되었다. 이미지 검색에 있어서 다음 검색 엔진이 사용 되므로, 검색량에 있어서 한계가 있다. 따라서 query의 값(검색 이름)에 따라 출력 결과가 다를 수 있다. import requests import json # 이미지가 있는 image_url을 통해 file_name 파일로 저장하는 함수 def save_image(image_url, file_name): img_response = requests.get(image_url) #요청에 성공했다면 if img_response.status_code == 200: #파일 저장 with open(file_name, "wb") as fp: fp.write(img_response.content) # 이미지 검색..
1. 모의고사 풀이 전략) 각각의 수포자들이 찍는 방식이 패턴이 정해져 있으므로 이 패턴을 하나의 배열로 만든 뒤 일정 수만큼 반복하면 된다. 풀이에 필요한 수학적 원리) 일정한 패턴을 가진 배열(List)의 길이 = n일 때, List[a] = List[a%n] // n만큼 반복되므로 나눴을 때 나머지들은 모두 같은 수를 갖는다. def solution(answers): # 수포자들의 답안 패턴이 존재함 : 배열로 구성 # 각각의 배열을 순회하면서 답안 배열과 같으면 점수 배열 +1 # 점수 배열 중 가장 높은 점수를 받은 인덱스만 출력(+1) supo = [[1,2,3,4,5,],[2,1,2,3,2,4,2,5],[3,3,1,1,2,2,4,4,5,5]] right = [0,0,0] answer = []..