분류 전체보기 142

파이썬에서 OpenAPI를 통해 이미지 수집하기

파이썬으로 간단한 예제를 만들어보려고 한다. OpenAPI를 통해 고독한 박명수 이미지를 수집할 것이다. 웹 크롤링으로 이미지를 가져올 수도 있지만 간단히 OpenAPI를 사용하겠다. OpenAPI는 카카오나 네이버 등에서 벡엔드를 미리 구축해 놓고, 사용자에게 그 벡엔드를 이용하는 방법을 제공한다. 즉, 사용자는 이미 만들어진 백엔드를 사용법만 알면 백엔드 자원을 사용할 수 있다. 즉, 프런트엔드만 신경쓰고 개발하면 되는 것이다. 이번 포스팅에서는 파이썬과 주피터 노트북을 이용하여, 카카오, 네이버에서 제공한 OpenAPI로 고독한 박명수 짤을 수집해 볼 것이며, 최종 목표는 아래와 같다. 최종 목표 사전 준비 1. 파이썬과 주피터가 설치되어 있지 않다면 파이썬 3.11 설치와 주피터 노트북 사용법 포..

Backend/Python 2023.02.05

카카오, 네이버 OpenAPI 앱 키 발급받는 방법

카카오나 네이버에서 제공하는 OpenAPI를 사용하려면, 먼저 개발자 사이트에서 앱을 만들고 앱 키를 발급받아야 한다. 계정이 없다면 회원가입을 해야 한다. 지금부터 카카오, 네이버의 앱 키를 발급받는 방법을 포스팅하려고 한다. 카카오 앱 키 발급받기 카카오 개발자 사이트에서 로그인 한 뒤 메뉴에서 [내 애플리케이션]을 클릭한 뒤 [애플리케이션 추가하기] 버튼을 클릭한다. 애플리케이션 추가하는 팝업창이 뜨는데, 앱 이름과 사업자명을 자유롭게 입력한 후 저장 버튼을 클릭한다. 앱 이름: 서비스 이름 사업자명: 서비스의 사업자 이름 생성된 애플리케이션이 목록이 보인다. 방금 생성한 애플리케이션을 클릭하자. 아래와 같이 발급된 앱 키를 확인할 수 있다. 앱 키는 4종류가 존재한다. 앱을 생성하면 플랫폼별로 앱..

절차지향과 객체지향에 관한 고찰

누군가 내게 "자바의 특징이 무엇인가?" 라고 묻는다면 반사적으로 객체지향 언어라고 말할 것이다. 그만큼 '자바는 객체지향 언어'라는 인식이 강하게 박혔기 때문이다. 그러나 남에게 핵심을 간추려 설명할 만큼 제대로 알고 있지는 못했다. 스파게티코드님이 절차지향과 객체지향을 비교하여 깔끔하게 설명한 글을 토대로 포스팅 하였다. 설명이 꽤 길지만 읽을 만한 가치가 있는 글이라고 생각한다. 절차지향 이 말에 한 번쯤 의구심을 품어본 적이 없는가? 위 사진은 절차지향과 객체지향의 차이점을 설명하는 단순화된 사례이다. 이를 바탕으로 실제로 자판기 프로그램을 구현한다고 생각해보자.​ 먼저 절차지향 방식을 보면, 차근차근 순서대로 따라가는 전형적인 절차식 프로그램임에 틀림이 없다. 그렇다면 객체지향 방식을 살펴보자...

Backend/Java 2022.10.09

톰캣 실행시, 이미 사용중인 8080 포트 에러(Port 8080 is already in use) 해결

문제 발생 톰캣을 실행시키는데 다음과 같은 에러가 발생한다. org.springframework.boot.web.server.PortInUseException: Port 8080 is already in use 말 그대로 이미 8080 포트가 사용 중이라고 뜨는 것인데, 이럴 경우에는 현재 8080 포트로 동작중인 프로세스를 강제로 종료시키면 된다. 해결 방법 윈도우+R를 입력하여 cmd 창을 열어보자. netstat 라는 명령어를 입력하면 현재 TCP/IP 네트워크 연결 상태를 확인할 수 있다. 이제 좀 더 세부적으로 확인하기 위해 Ctrl+C를 눌러 되돌아간 후 netstat -ano 명령어를 입력하여 어떤 프로세스가 8080 포트를 사용 중인지 확인해 보자. a : 모든 연결 및 수신 대기 포트를 ..

Oracle offset (오라클 페이징 처리)

이번 프로젝트에서 SQL 튜닝 가이드를 받아 쿼리를 수정하면서 offset 키워드를 알게 되어 포스팅한다. 오라클은 12c 버전부터 offset과 limit가 추가되었다. Oracle 12c 이전 Oracle 12c 이전에는 ROW_NUM을 사용하여 페이징 처리를 했다. 단점은 쿼리를 view로 감싸므로 쿼리가 복잡해진다. SELECT * FROM ( SELECT a.*, ROWNUM AS "ROWNUM" FROM ( 사용자 정의 쿼리 QUERY ) a WHERE ROWNUM = start_number Oracle 12c 이후 Oracle 12c 이후부터는 행 제한(row limitng)을 이용하여 간단하게 페이징 처리할 수 있다. 오라클의 지저분한 페이징 처리를 간결하게 할 수 있는 장점이 있다. of..

Computer Science/DB 2022.10.05

2022년 2회차 정보처리기사 실기 합격 및 정리요약본 공유

2022년 9월, 정보처리기사 2회 차 실기를 합격했다. 필기에 이어 실기도 턱걸이로 붙어버리기.... 작고 소중한 내 60점🙈💗 공부 방법 2022년도 1회 차 필기에 붙고난 뒤 곧바로 1회 차 실기를 볼까 생각했지만, 도저히 바로 공부할 자신이 없어서 1회 차 실기는 건너뛰었다. 열심히 공부했으니 그만큼 쉬어줘야 된다고 생각했고, 그렇게 고삐 풀린 망아지처럼 놀고 애써 외면하다가 실기 2주 전쯤부터 본격적으로 공부를 한 것 같다...(하기 싫어 죽을뻔한 몸뚱아리와, 그를 이겨낸 정신력에 박수...) 나는 필기 때와 마찬가지로, 실기에도 서적에 돈을 쓰지 않았다. 그러다 보니 예상하지 못한 문제가 발생했는데, 필기는 문제은행만 열심히 풀면 됐지만 실기는 어떻게 공부를 해야 할지 감이 잡히질 않았다. 감..

IT Note/자격증 2022.09.02

문자열은 불변한다(String is Immutable)

자바에서 문자열을 만들 때 아래처럼 2가지 방법을 이용할 수 있다. String str1 = "개발새발"; // ""을 이용하여 문자열 생성 (String literal) String str2 = new String("개발새발"); // new 연산자로 문자열 생성 (String Object) 위의 출력결과는 동일하며, 사람들은 흔히 첫번째 방법으로 많이 쓴다. 그런데 메모리에 저장되는 공간은 엄연히 다르다는 것을 알고 있는가? 첫번째 방식인 String literal으로 생성하면 문자열은 힙영역의 String Pool에 저장되어 문자열이 동일하면 저장소를 공유할 수 있다. 반면 두번째 방식인 new 연산자로 생성하면 문자열은 힙영역에 저장되어 문자열이 같더라도 저장소 공유가 불가능하다. 이 차이점을 기..

Backend/Java 2022.08.14

Lombok(롬복) 설치 및 활용법

Lombok(롬복)이란 Lombok(롬복)은 소스가 깔끔한 것을 선호하는 사람이 좋아할 법한 라이브러리이다. getter, setter와 같이 반복되는 형태의 코드를 줄여주는 역할을 한다. 예를 들어 @Getter, @Setter와 같이 어노테이션(Annotation)으로 선언만 하면 그 기능을 함축적으로 갖고 있게 된다. 1. Lombok 라이브러리 다운받기 Lombok 사이트에 들어가서 jar 파일을 직접 설치하자. 2022년 5월 기준으로 최신 버전은 1.18.24이다. 파일의 다운로드가 완료되었으면, 이클립스 또는 STS가 설치된 경로에 lombok.jar를 붙여넣은 후 해당 파일을 실행한다. 그러면 인스톨러 창이 실행이 될 것이다. 아래와 같이 내 PC에서 IDE를 찾을 수 없다는 경고창이 나오..

배치파일로 여러 프로그램 실행하기

배치파일(.bat)을 이용해서 여러가지 프로그램을 동시에 실행시키고 싶을 때가 있다. 예를 들어 배치를 실행하면 크롬, 엣지, 엑셀을 한번에 열리게끔 하고 싶다. 그리기 위해선 먼저 실행할 프로그램의 경로를 알면 되는데, 해당 아이콘을 마우스 우클릭후 '속성'을 누르면 대상 경로를 확인할 수 있다. 내가 실행하고 싶은 크롬, 엣지, 엑셀의 경로를 순서대로 적어놨다. C:\Program Files\Google\Chrome\Application\chrome.exe C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe C:\Program Files (x86)\Microsoft Office\root\Office16\EXCEL.EXE 이제 메모장을 열어 아래..