본문 바로가기
[py] 네이버 오픈 api 지역 검색 예제 네이버 지역 검색 오픈 api 를 이용하여 지역 원하는 데이터를 수집합니다. 오픈 API 개발 문서 먼저 네이버에서 application을 만들고, client id와 client secret 키를 발급받아야 합니다. 개발문서를 보면서 요청 url과 파라미터, 사용 방법을 확인합니다. 네이버 오픈 api 불러오기 코드 import requests headers = { 'X-Naver-Client-Id': '클라이언트 아이디', 'X-Naver-Client-Secret': '클라이언트 시크릿 코드' } query = '세곡동 맛집' params = { 'query' : query, 'display':3, 'sort' : 'comment' } search_url = 'https://openapi.naver...
[php] Warning: mysqli_connect(): (HY000/1045): Access denied for user 오류 이전 코드 로컬 호스트에서 디비 연결을 하기 위한 코드 오류 Warning: mysqli_connect(): (HY000/1045): Access denied for user 'root'@'localhost' (using password: NO) in C:\xampp\htdocs\php\index.php on line 8 해결 확인을 해보니 이전에 xampp control 에서 MySQL 실행시 3306이 이미 사용중 오류가 떠서 3307로 변경한 적이 있었는데 찾아보니 호스트에 포트를 붙여야 한다고 합니다. 변경코드
[css] 줄바꿈, 공백, 띄우기 css 처리 (ft. white-space) white-space white space는 여백이라고 하는데 css의 white-space 속성은 문장의 공백, 공란이라고 생각하면 됩니다. 다음 줄(공백이 여러개일경우) 공백, 들여쓰기 자동 줄바꿈(영역안 처리) normal 공백 1개만 표시 공백 1개만 표시 O nowrap 공백 1개만 표시 공백 1개만 표시 X pre 공백 있는 그대로 표시 공백 있는 그대로 표시 X pre-wrap 공백 있는 그대로 표시 공백 있는 그대로 표시 O pre-line 공백 있는 그대로 표시 공백 1개만 표시 O 문장 띄우기, 공백, 줄바꿈 보여주기 연속된 공백을 그대로 표시하고, 긴 줄도 줄 바꿈하지 않고 표시 메모장 구현시 저장된 데이터를 불러올때, 사용자가 입력한 공백, 띄어쓰기 그대로를 출력해야 하므로, whi..
[css] 체크박스 스타일 커스텀 체크 박스 스타일 커스텀 체크 전 input[type="checkbox"].클래스명 { appearance: none; width: 넓이 값; height: 높이 값; background-image: url("이미지 주소"); } 체크 후 input[type="checkbox"].클래스명:checked { background-image: url("이미지 주소"); }
[js] 숫자가 정수인지 소수점인지 체크 (ft. inInteger(), parseInt()) 숫자가 정수인지 소수점인지 체크하기 Number.inInteger() 예제 Number.isInteger(3) //true Number.isInteger(0.8) //false 문자열 숫자로 반환하기, 소수점 정수로 변환하기 parseInt(value) 예제 parseInt('11') //문자열 > 숫자 11 parseInt(5.333) //소수점 > 정수 5 parseInt('-5') //문자열 -> 숫자 -5 parseInt(' ') //숫자가 안들어간 문자열, 공백의 경우, NaN 반환 NaN
[js] input 이벤트 (ft. input 박스) input박스가 이벤트 onchange focus 발생 전 후 비교하여 변화가 일어났을때 발생하는 이벤트 ... } /> onfocus focus 되었을때 발생하는 이벤트 ... } /> onblur focus가 해제 되었을때 발생하는 이벤트 ... } /> onkeypress 문자 값을 생성하는 키보드의 키를 눌렀을때 발생하는 이벤트 ... } /> 모바일웹앱(안드로이드)의 키패드에서 이동을 눌렀을 경우 if (e.key === 'Enter' || e.keyCode === 13) { //함수 코드 }} /> onkeydown 키보드의 키를 눌렀을때 발생하는 이벤트 ... } /> onkeyup 키보드의 키를 눌렀다가 떼었을때 발생하는 이벤트 ... } />
[py] 웹 이미지 저장 (ft. requests) 웹이미지 저장 이미지 주소를 복사하여 requests 라이브러리를 이용해 이미지를 저장합니다. #pip install requests 로 라이브러리 설치 #이미지 저장 import requests url = '이미지 url' #해당 url로 서버에게 요청 img_response = requests.get(url) #요청에 성공했다면 if img_response.status_code == 200: #200일 경우 정상 #print(img_response.content) print('이미지 저장') with open('text.jpg', 'wb') as fp: 결과 wb는 파일 모드를 지정 읽기(r), 쓰기(w), 수정(+), 텍스트파일(t), 바이너리 파일(b) 이미지 파일을 저장하고자 하는 것이기 때문에..
[py] 카카오 이미지 검색 오픈 api 카카오 오픈 이미지 검색 api 를 이용하여 원하는 이미지를 수집합니다. 카카오 이미지 검색 오픈 api 개발 문서 사이트 https://developers.kakao.com/docs/latest/ko/daum-search/dev-guide Kakao Developers 카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다. developers.kakao.com 오픈 API 개발 문서 오픈 API로 원하는 이미지 저장하기 #카카오 오픈 API 이미지 저장 import requests import json #img_url로 file_name 파일로 저장하기 def save_imgFn(img_url, file_name): ..
[py] 파일 읽기 쓰기 파이썬을 이용해 text 파일에 텍스트를 쓰고, 그것을 읽는 방법을 알아보겠습니다. 파일 쓰기 #파일 쓰기 data = 'hello' with open('text.txt', 'w') as fp: fp.write(data) 결과 작업 폴더 text.txt 파일이 생성되었고, 파일을 열면 hello라고 입력되었습니다. 파일읽기 #파일 읽기 with open('text.txt', 'r') as fp: print('파일 읽기') print(fp.read()) 결과
[react] 라이프 사이클, useEffect 정리 라이프사이클 componentDidMount() {} 컴포넌트가 처음 렌더링 된 직 후 동작 setState를 렌더 안에서 사용할 수 없음 (무한 렌더링 발생하기 때문에) componentDidUpdate() {} setState 또는 props로 리렌더링 되었을때 동작 componentWillUnmount() {} 컴포넌트가 제거되기 직전 비동기 요청 수동으로 clear 처리 해야 함 안하면 메모리 누수 문제 발생 showcomponentupdate() {} useEffect useEffect(() => { componentDidmount 역할 코드 return () => { componentWillUnmount 역할 코드 } }, [바뀌는 state 값, componentDidUpdate 기능]) 라..
[js] 숫자 여부 확인 isNaN() is not a number의 약자 true 일 경우 숫자가 아니고, false일 경우 숫자 isNaN(value) isNaN() 예제 isNaN(50) //number //false isNaN('goddino') //string //true
[react] 스크립트 추가하기 리액트 컴포넌트 내부에 스크립트 추가하는 방법 useEffect(() => { const script = document.createElement("script") script.src = "..." script.async = true document.body.appendChild(script) })
[react] 자동 로그인 자동 로그인 모바일에서 자동 생성된 token을 url로부터 가져와 내부 저장소에 저장하고, 백엔드로 전달 const params = new URL(document.location).searchParams //모바일에서 자동 생성된 firebaseToken 가져오기 const firebaseToken = params.get("firebaseToken") const onAutoLogin = useCallback(() => { //자동 로그인 if (firebaseToken !== null && firebaseToken !== "") {//token 있을때 window.sessionStorage.setItem("token", firebaseToken) //토큰 저장 api.post(`로그인 api`, { f..
[jquery] 아코디언 기능 구현 쇼핑몰에서 상품 목록 상세내역에 많이 사용되는 아코디언을 제이쿼리로 구현하였습니다. 구현 화면 구현 영상 제이쿼리 스크립트 및 css 아코디언 jQuery 코드 html 구조 title ... subtitle1 .../ subtitle2 .../ subtitle3 .../
[react] browser-image-compression 이미지 리사이징 적용 커뮤니티를 구현하다가 이미지를 별도의 처리 없이 서버로 보낸 후, 가져오다 보니 로딩 시간이 많이 걸려 프론트에서 이미지를 압축한 뒤 서버로 보내어 로딩속도를 개선했습니다. 구현방법 react, redux-toolkit 사용 자바스크립트 imageㄹ 리사이징 압축 라이브러리, browser-image-compression를 사용 총 3개의 이미지까지 보낼 수 있어서 for문을 이용 문제점 Promise로 만들어진 browser-image-compression 라이브러리를 그대로 이용하여 actionImgCompress 함수의 리턴값을 변수에 저장하니 결과값이 array가 아닌 promise {}[[prototype]]: promise[[promise state]]: "fulfilled"[[promiser..
[py] 파일 입출력 자동화 구현 내용 텍스트 파일에 있는 텍스트를 그대로 불러와서 프린트 텍스트 파일에 입력하기 파일 입출력 자동화 코드 encoding='UTF8' 없을 경우, UnicodeDecodeError: 'cp949' codec can't decode byte 0xeb in position 0: illegal multibyte sequence 라는 오류가 발생 불러오기 open('불러올 파일경로', 'r', encoding='UTF8') 쓰기 open('저장할 파일 경로', 'w', encoding='utf-8') 구현 코드 //읽기 f = open('네이버_연관검색어.txt', 'r', encoding='UTF8') msg = f.read() print(msg) //쓰기 f = open('네이버_연관검색어.txt', ..
[py] 네이버 블로그 좋아요 자동화 (ft. 셀레니움 actionchains) 구현 내용 1. 셀레니움 라이브러리의 웹드라이버 크롬 실행 2. 네이버 자동 로그인 3. 네이버 블로그로 이동 (3~5번 무한 반복) 4. 최근 포스팅 클릭 5. 좋아요 클릭 actionchains 매크로 프로그램을 만들때 사용하는 pyautogui를 웹에서 작동할 수 있도록 물리적 기능을 지원하는 라이브러리 특정사이트가 자동화나 크롤링을 사전에 막아서 element의 click이 작동하지 않는다면 actionchains를 이용하여 물리적으로 실행 elements로 마우스 이동: ActionChains(driver).move_to_element(요소 변수) 주의 사항 실제 작동시에는 스팸 처리를 당하지 않기 위해 random 함수를 사용합니다. 구현 코드 from selenium import webdri..
[py] 사이트 로그인 방법 (ft. 보안 처리 유무) 구현 과정 셀레니움 라이브러리의 웹드라이버 크롬 실행 사이트 자동 로그인 실행 로그인 자동화(단순 로그인, 보안 처리 없음) id = driver.find_element(By.XPATH, 'id xpath') #xpath, css selector, id, class명 다양하게 사용 가능 id.click() id.send_keys('아이디') time.sleep(2) pw = driver.find_element(By.XPATH, 'pw xpath') pw.click() pw.send_keys('비번') time.sleep(2) pw.submit() time.sleep(10) 로그인 자동화(보안 처리 있음) send_keys(Keys.COMMAND, 'v') 를 위해 webdriver.common.keys ..
[py] 인스타그램 좋아요 자동화 구현 화면 구현 내용 인스타그램 로그인 후 '좋아요반사' 태그 페이지 호출 페이지 내 모든 게시물 클릭 후 세부 페이지에서 좋아요 후 닫기 아쉬운 점 현재 페이지에 9개의 피드가 올라와 9가지 좋아요 자동화가 가능하지만, 페이지네이션 부분이 안보여, 쿼리를 찾을 수 가 없어 다른 페이지로 이동처리를 하지 않음 클래스명이 자주 바뀌는 것 같음 구현 코드 from selenium import webdriver from selenium.webdriver.chrome.service import Service from selenium.webdriver.chrome.options import Options from webdriver_manager.chrome import ChromeDriverManager #크롬 ..
[api] api 사이트 모음 더미 api를 제공하는 사이트들 입니다. 여러가지 API 모음 https://github.com/public-apis/public-apis GitHub - public-apis/public-apis: A collective list of free APIs A collective list of free APIs. Contribute to public-apis/public-apis development by creating an account on GitHub. github.com https://github.com/dl0312/open-apis-korea GitHub - dl0312/open-apis-korea: 🇰🇷 한국어 사용자를 위한 서비스에 사용하기 위한 오픈 API 모음 🇰🇷 한국어 사용자를 위한 ..
[git] git commit 없이 강제 git pull git 최신버전으로 커밋 없이 강제 git pull로 덮어쓰는 방법입니다. 홈페이지를 여러 개발자가 작업하다보면 git pull시 merge 오류와 git commit 하라는 메시지가 뜨는데요. 로컬 상태에 상관없이 commit 없이 git pull로 덮어쓰는 방법입니다. 강제 git pull 하기 --all 옵션을 통해 모든 커밋 정보를 가져옴 $git fetch --all git reset을 통해 head의 포인트를 최신 커밋으로 옮김 --hard 옵션은 강제로 head를 옮기는 것 $git reset --hard origin/master git pull 로 최신 커밋 덮어쓰기 $git pull
[py] 네이버 블로그 이웃 추가 자동화 1, 2, 3단계에 걸친 네이버 블로그 이웃추가 자동화입니다. 구현내용 flow 네이버 로그인 자동화 모바일 페이지 검색후 뷰탭으로 이동 검색 옵션은 블로그, 최신순 쿼리 주소 첫번째 포스팅 블로그 아이디 클릭 이웃 추가 버튼 클릭(가능할때만 - 이미 이웃인 상태, 이웃 받지 않을 경우 불가능) 서로 이웃 버튼 클릭(서로 이웃 신청 받지 않을 경우 불가능) 이웃 신청 멘트 기존의 것 삭제 후 새로운 멘트 작성 확인 클릭 1단계 1명 자동으로 이웃 추가 2단계 처음 로딩된 페이지 내 모든 이웃 자동으로 이웃 추가 3단계 n명 만큼 자동으로 이웃 추가 1단계 try, except 구문으로 예외 처리하는 이유: (서로)이웃추가 금지로 이웃추가가 안되는 경우를 처리해야 함 이웃추가 버튼, 서로이웃추가 버튼 클릭..
[py] 파이썬 gui (ft. pyqt5 설치, 기본 세팅, Qt designer 설치) PyQt 파이썬 gui 라이브러리 Qt designer 설치 Qt designer는 PyQt 디자인 편집기 구글에서 qt desinger download 검색하여 다운로드 Mac 오류 해결 방법 개발자를 확인할 수 없기 때문에 열 수 없습니다. 알림창 해결 방법 - 시스템 환경설정 -> 보안 및 개인 정보 보호 - 다음에서 다운로드한 앱 허용 -> 확인 Qt designer 설치 후 화면이 이상할때 Preferences -> Appearance -> User Interface Mode -> Docked Window pyqt5 설치 pip install pyqt5 #window pip3 install pyqt5 #mac pyqt5 기본 세팅 from PyQt5.QtWidgets import * from P..
[py] 네이버 연관검색어 결과 크롤링 ajax를 이용한 네이버 자동검색 결과 크롤링 구현 내용 네이버 검색어 입력시 연관 검색어 리스트 크롤링 ajax를 호출하는 request url을 이용해 페이지 호출 검색어 + ㄱ ~ ㅎ까지 추출하여 메모장(.txt)에 저장 구현 코드 json.loads(data) 를 통해 딕셔너리 형태로 변환 import requests import json import pyautogui keyword = pyautogui.prompt('검색어를 입력하세요.') letters = ['ㄱ','ㄴ','ㄷ','ㄹ','ㅁ','ㅂ','ㅅ','ㅇ','ㅈ','ㅊ','ㅋ','ㅌ','ㅍ','ㅎ'] f = open(f'{keyword}.txt', 'w', encoding='utf-8') # 파일 열기 모드 w : 새로 만들기, a :..
[react] 검색어 자동완성 구현하기 검색어 자동완성 구현하기 구현화면 구현내용 react hooks를 이용한 검색어 자동완성 기능 useSelect, useDispatch 사용 searchForFood 함수는 음식 찾기 api onResetSearchedFood 찾은 음식 없애기 api searchedFoodLists 필터링된 음식 리스트 - 최종 결과 데이터 검색어 자동완성 코드 그동안 검색어 자동완성 구현 방법을 여러가지 사용해왔었는데 주로 value값의 길이가 2이상부터 api 콜을 불러오는 식으로 하였으나, 이번에는 value값이 있을때마다 0.2초간 api 를 불러 데이터를 찾아주고, value 값이 없을때 데이터 리스트를 없애주는 방법으로 구현하였습니다. useEffect(() => { //검색어 자동 완성 let params ..
[css] 텍스트 줄바꿈 해결 텍스트가 영역을 넘칠때 줄바꿈 처리하는 css 줄바꿈 처리 css 태그 안에 텍스트 입력을 하고 바로 출력시 줄바꿈이 적용안되었을 경우, 줄바꿈을 그대로 적용해주는 css white-space: pre-line; before after
[py] 크롤링 데이터 엑셀에 저장 예제는 스타트 코딩, 파이썬 크롤링 강의를 들으면서 공부한 내용입니다. 구현 내용 openpyxl 라이브러리 사용 네이버 주식정보의 3가지 종목 현재가 크롤링 현재가만 비워진 엑셀파일 미리 저장 크롤링 데이터 엑셀에 저장 적용 코드 import requests from bs4 import BeautifulSoup import openpyxl fpath = r'C:\project\python\practice\data.xlsx' #현재가만 비워진 미리 저장된 엑셀시트 wb = openpyxl.load_workbook(fpath) #엑셀 불러오기 ws = wb.active #현재 활성화된 기본 시트 # 종목코드리스트 codes = ['005930','000660', '035720'] row = 2 #행값을 돌..
[react] throttle 적용하기 react에 throttle를 적용한 코드입니다. throttle 동일한 이벤트가 반복적으로 시행되는 경우 이벤트의 실제 반복 주기와 상관없이 임의로 설정한 일정 시간 간격으로 콜백 함수의 실행을 보장합니다. 즉 일정시간동안 1개의 콜백함수를 실행하게 하여 짧은시간 동안 불필요하게 동일한 함수 실행을 막습니다. 화면 구현 throttle 코드 제로초님의 블로그를 참조한 코드 rottle: 동일 이벤트가 반복적으로 시행되는 경우 이벤트의 실제 반복 주기와 상관없이 임의로 설정한 일정 시간 간격(밀리세컨드)으로 콜백 함수의 실행을 보장합니다. function throttle(fetchData, delay = 600) { //throttle 사용코드 let timer; return function () { i..
반응형