여기에서 해보고 싶은 것은 "동탄" 키워드가 들어간 최근 블로그를 검색해서

그 제목과 본문 내용, 링크 값을 얻어오는 코드를 작성해보고자 한다.

 

0. 개발 환경

- OS: Ubuntu 20.04

- Lang: Python 3.10.9

 

 

1. 준비

① NAVER API를 사용하기 위해 API 키를 생성하자.

    - NAVER 서비스 API 사용 준비

 

② 환경변수를 다루기 위해서 dotenvx를 사용해보자.

    - 아는 사람만 쓴다는 Config 관리자 - dotenv, dotenvx

 

 

2. 코드 작성

일단 API 호출을 위해 requests 패키지를 사용하기로 했다.

 

[ requirements.txt ]

requests==2.32.3

 

가급적 클래스 구조로 작성해봤다.

[ main.py ]

import requests
import os

class BlogPost:
    def __init__(self, title, description, link):
        self.title = title.replace("<b>", "").replace("</b>", "")
        self.description = description.replace("<b>", "").replace("</b>", "")
        self.link = link

    def __str__(self):
        return f"Title: {self.title}\nDescription: {self.description}\nURL: {self.link}\n"

class NaverBlogSearcher:
    def __init__(self):
        self.client_id = os.getenv("NAVER_CLIENT_ID")  # 환경변수에서 Client ID 읽어오기
        self.client_secret = os.getenv("NAVER_CLIENT_SECRET")  # 환경변수에서 Client Secret 읽어오기

        # 환경변수 값이 없을 때 예외 처리
        if not self.client_id or not self.client_secret:
            raise ValueError("NAVER_CLIENT_ID and NAVER_CLIENT_SECRET must be set as environment variables.")

    def get_blog_posts(self, query, display=10):
        # 요청 URL 및 헤더 구성
        url = f"https://openapi.naver.com/v1/search/blog.json?query={query}&display={display}&sort=date"
        headers = {
            "X-Naver-Client-Id": self.client_id,
            "X-Naver-Client-Secret": self.client_secret,
        }

        # 네이버 API에 요청 보내기
        response = requests.get(url, headers=headers)
        
        if response.status_code == 200:
            return self.parse_response(response.json())
        else:
            print(f"Error: {response.status_code}, {response.text}")
            return []

    def parse_response(self, data):
        # 응답 데이터 파싱
        blogs = data.get("items", [])
        blog_posts = [BlogPost(blog.get("title"), blog.get("description"), blog.get("link")) for blog in blogs]
        return blog_posts

if __name__ == "__main__":
    # "동탄" 검색어로 최신 블로그 정보 가져오기
    try:
        searcher = NaverBlogSearcher()
        blog_posts = searcher.get_blog_posts("동탄", 3)
        for post in blog_posts:
            print(post)
    except ValueError as e:
        print(e)

 

환경 변수도 작성했다.

[ .env ]

NAVER_CLIENT_ID=""
NAVER_CLIENT_SECRET=""

 

 

3. 실행

dotenvx를 사용해서 실행했다.

> dotenvx run -f .env -- python main.py

 

나름 잘 진행되었다 !!! (스스로 뿌듯~)

반응형

옛날에 한 번 포스팅을 했었는데, 업데이트가 필요해서 다시 작성해본다.

- https://www.whatwant.com/entry/Naver-API-사용-준비하기

 

1. NAVER Developers

네이버 개발자 사이트에 방문해서 로그인까지 진행하자.

- https://developers.naver.com/

 

NAVER Developers

 

 

2. 서비스 API

일단 여기에서는 "검색"을 위한 API 사용 신청하는 과정을 기준으로 설명해보겠다.

 

서비스 API

 

상단 메뉴에서 "서비스 API - 검색" 메뉴를 선택해보자.

 

검색

 

3. 오픈 API 이용 신청

처음 사용자는 이용약관 동의나 계정 설정 등을 요구할 수도 있다.

나는 예전에 신청했던 이력이 있어서인지 바로 애플리케이션 등록 창으로 이동되었다.

 

애플리케이션 등록

 

"애플리케이션 이름" 적절하게 창작하면 되고,

"사용 API"는 검색을 선택했다. 각자 필요한 것 추가해도 된다.

 

"비로그인 오픈 API 서비스 환경"은 사용할 상황에 따라 잡아주면 되는데,

나는 일단 "WEB 설정"으로 하고 적당한 도메인 정보를 넣어주었다.

 

4. 애플리케이션 정보

사용할 때 필요한 "Client ID"와 "Client Secret"이 발행되었다.

 

애플리케이션 정보

 

하루에 2만5천번 호출할 수 있네!!!!

 

반응형

PDF, DOCX, PPTX 같은 문서 파일이나 이미지, HTML 등을

여러 용도로 사용하기 좋게 Markdown, Json 형식으로 변환해주는 도구를 찾았다.

 

사실 너무 유명해서 알만한 사람들은 이미 다 알고 있는 것 같지만 ^^

- https://ds4sd.github.io/docling/

 

Docling

 

MIT 라이선스인 오픈소스 프로젝트이다.

- https://github.com/DS4SD/docling

 

GitHub

 

파이썬 패키지이기 때문에 파이썬 개발 환경이 필요하다 ^^

 

다양한 버전의 파이썬 활용을 위한 pyenv 환경이 필요하다면 아래 포스팅을 참고하기 바란다.

- https://www.whatwant.com/entry/pyenv

 

1. Installation

가상환경 생성 후 docling 설치까지 진행해보자.

cuda, torch 및 의존성 있는 패키지들이 엄청 많이 설치되고 용량도 커서 시간도 좀 걸린다.

 

> python -m venv .venv

> source .venv/bin/activate

> pip install docling

 

2. Usage

공식적으로 알려주는 샘플 코드를 작성 후 실행해보자.

- https://ds4sd.github.io/docling/usage/

 

from docling.document_converter import DocumentConverter

source = "https://arxiv.org/pdf/2408.09869"  # PDF path or URL
converter = DocumentConverter()
result = converter.convert(source)
print(result.document.export_to_markdown())  # output: "### Docling Technical Report[...]"

 

우쒸... GPU 환경이 필수인가보다.

그런데, Colab 환경에서도 정상적인 결과가 나오진 않는다.

 

 

 

3분 정도가 소요되어 정상 완료한 것처럼 나오지만,

출력되는 내용이 없다.

 

잘못된 것인줄 알았는데, 출력 결과 전체 화면 보기를 하니 제대로 보였다.

 

 

엔터(줄바꿈) 없이 너무 길게 string이 나와서 출력 결과가 안보였던 것이다.

뭐 일단, Colab으로 테스트를 해볼 수는 있었다.

 

음... 재미있긴 하지만,

속도가 그다지 빠르지 않아서... (A100이나 H100 환경에서는 조금 빠르려나!? 함 해볼까...!?)

자주 사용할 아이는 아닐 것 같다.

반응형

여기에서는 실습 개념으로

Vite를 이용해서 React 앱 생성하는 과정만 빠르게 살펴볼 것이다.

 

0. 실습 환경

- Ubuntu 20.04

 

1. Node

- Vite를 사용하기 위해서는 node가 설치되어 있어야 한다.

- 아직 설치가 안되어 있다면, 아래 포스팅을 통해 nvm 기반으로 설치하자.

  . https://www.whatwant.com/entry/npm

nvm

 

- 원활하게 Vite를 사용하기 위해서는 node 버전이 18 이상이어야 한다고 한다.

node version

 

2. Vite 설치

- npm을 이용하여 vite를 설치하면 된다.

> npm install vite@latest

install vite

 

3. Project 생성

- vite를 이용해서 React project를 생성해보자.

  . 아래 캡처한 내역과 같이 3가지 정보를 작성 및 선택해주면 된다.

> npm create vite@latest

create project

 

4. App 실행

- vite가 알려준대로 진행해보면 된다.

> cd gemini-nagger

> npm install

> npm run dev

run

 

- 웹브라우저를 통해 확인해보자.

WEB

 

간략히 살펴보았다.

반응형

'Programming > Web' 카테고리의 다른 글

백엔드 프레임워크 - KeystoneJS  (1) 2023.07.13
npm, node 그리고 nvm  (0) 2023.01.04

업무로 API 서비스를 만들 때,

최근에는 Python을 이용하는 것이 편하다보니 주로 FastAPI를 이용하곤 한다.

 

그러다가 2달 전쯤 새로운 웹-프레임워크(Web-Framework) 소식을 듣게 되었다.

- https://news.hada.io/topic?id=16091

GeekNews

 

새로운 프레임워크임에도 불구하고 의외로(?) 반응이 꽤 괜찮다.

 

사이트도 산뜻하게 디자인되어 있다.

- https://fastht.ml/

FastHTML

 

FastHTML 스스로 만든 페이지이겠지?! ㅋㅋㅋ

어!? 나처럼 생각하는 사람이 많아서인지..... 그렇다고 한다!!!

FastHTML

 

5천개가 넘는 Star와 200건이 넘는 Fork를 자랑하는 프로젝트이다.

- https://github.com/AnswerDotAI/fasthtml

GitHub

 

GeekNews에서 괜히 경쟁력이 있다는 말을 한 것이 아니다.

의외로 많은 것들이 제공/지원되고 있다.

- https://gallery.fastht.ml/

FastHTML Gallery

 

1. Installation

설치 과정은 Python 패키지답게 정말 심플하다.

- https://github.com/AnswerDotAI/fasthtml?tab=readme-ov-file#installation

Installation

 

그래서, Python 가상환경 만들고 pip 설치를 진행했는데...

Error

 

얼라료?!

에러!? 이런!!

 

패키지를 아예 찾지 못하는 것이 이상해서...

혹시나 하고 Python 버전을 올려봤다.

Python 3.10.9

 

이런, Python 3.8.x 버전은 지원하지 않는 것으로 보인다.

짧게 살펴봤지만, Document 어디에서도 Python 버전 제약에 대한 설명이 없었는데....

 

 

2. Usage

준비가 되었으니 빨리 Hello를 외쳐보자.

 

main.py

 

실행은 그냥 하면 된다.

Execute

 

실행 결과에서 안내해주는 주소를 참고해서

웹-브라우저로 결과를 확인해보자.

Chrome

 

소스코드를 확인해보면 다음과 같다.

View Source

 

그런데, 웹-브라우저에서 "Hello World!" 부분을 클릭해도 아무런 일이 발생하지 않는다.

(내부적으로는 404 에러가 발생하겠지만 ^^)

 

소스코드에 8-9 라인을 다음과 같이 추가하고 Save를 해보자.

update

 

그러면, 다음과 같이 파일이 변경된 것을 감지하고 자동으로 Reloading을 한다!!!

브라보 !!!

Reloading

 

웹-브라우저에서 "Hello World!" 부분을 클릭하면

다음과 같이 다른 내용이 출력된다.

Click

 

호오~ 정말 심플하네!!!

 

 

3. Example

여러 예시들을 참고하면 도움이 될 것이다.

- https://github.com/AnswerDotAI/fasthtml-example

GitHub

 

다양한 App 예시들을 볼 수 있다.

Exaples

 

음... 과연 앞으로도 지속적으로 성장을 할 것인지

관심있게 지켜봐야겠다.

반응형

정리 한 번 하려다가 만날 미뤄뒀던 아이템을 광복절을 맞이하여 드디어 포스팅해본다.

 

소스코드를 Local PC에 두지 않고, 원격 서버에 저장해놓고 사용해야할 경우가 있다.

주로 실행 환경의 제약이 있어서 그렇게 해야하기도 하고,

아니면 에디터(IDE)를 따로 사용하고자 하는 경우에 그렇게 하기도 한다.

 

지금 하고자 하는 것을 그림으로 표현해보면 다음과 같다.

출처: https://www.whatwant.com

 

1. SSH

  - 일단, Local PC에서 Remote PC로 SSH 접속이 가능한 환경이어야 한다.

  - 그리고 가급적 SSH Public Key 방식으로 접근하는 것이 보안적으로도, 사용성 측면에서도 좋다.

    . SSH Public Key - SSH 공개키

    . 조금 더 알아보는 SSH Public Key

 

출처: https://www.whatwant.com

 

2. VSCode

  - Local PC에 VSCode가 설치되어 있어야 한다.

    . https://code.visualstudio.com

VSCode

 

  - Extensions 중에서 "Remote - SSH"를 선택해서 설치해야 한다.

Extensions : Remote - SSH

 

  - 설치가 완료되면, 오른쪽 메뉴에 뭔가 하나 더 추가된 것을 볼 수 있다.

Extensions : Remote - SSH

 

  - "Remote Explorer" 메뉴를 클릭하면 다음과 같은 화면을 볼 수 있다.

Extensions : Remote - SSH

 

3. Connect

  - 이제 Remote PC/Server에 연결을 해보자.

  - Remote Explorer에서 추가를 해도 좋고,

New Remote

 

  - "Ctrl + Shift + p" 해서 "Remote-SSH ..." 메뉴 중에서 "Connect Current Window to Host ..."를 선택하자.

Connect Current Window to Host ...

 

  - "+ Add New SSH Host..."를 선택하자.

+ Add New SSH Host...

 

  - 가이드 해주는대로 서버 정보를 입력하면 된다.

input

 

  - 뒤의 "-A" 옵션은 선택적이긴 하지만 같이 넣어주자.

input

 

  - 어디에 저장된 Key 값으로 입력할 것인지를 물어본다. 골라주면 된다.

select SSH Config

 

  - 접속 정보 입력은 끝났다.

  - "Connect"를 클릭하면, Remote PC/Server에 연결을 하면서 필요한 패키지들을 추가 설치한다.

Host added!

 

  - 짜잔! 되었다!

connected

 

4. Extensions of Remote

  - 그런데, 이렇게 Remote PC/Server를 연결하게 되면 기존에 사용하던 Extension들이 안보인다.

  - 필요한 것들을 하나씩 추가로 설치해줘야 된다. 이해가 되긴 하지만, 뭔가 불편하기도 하고....

Extensions

 

  - 하지만, 너무 좋다 !!!

VSCode for Remote

 

  - 지금 현재 작업하고 있는 위치가 어디인지는 오른쪽 아래 파란 내용을 보면 된다.

  - Terminal 환경도 너무 편하고, 작업 후 저장한 것이 바로 Remote PC/Server에 반영이 되니 이거 뭔가 좋다 !!!

 

 

반응형

'Programming' 카테고리의 다른 글

NAVER 서비스 API 사용 준비  (0) 2024.11.22
개발자라면 ... Google for Developers  (0) 2023.12.06
개발자들을 위한 AI 검색엔진 - phind  (0) 2023.04.30
Naver API 사용 준비하기  (0) 2019.04.07

요즘 저녁에 러닝을 하기 위해 격일로 조금 일찍 퇴근을 하는데.

비 예보가 있다는 것을 미처 인지하지 못해서 일도 못하고 러닝도 못하는 그런 사태가...

 

이런 핑계(?)로 갑자기 날씨 정보를 API로 얻어오는 것을 한 번 해보고 싶어졌다.

갑자기? 갑자기!

 

날씨 정보를 어디에서 얻어와야 할까!?

당연히 기상청 !!!

https://www.data.go.kr/data/15084084/openapi.do

 

무료인데다가 심지어 샘플 코드까지 제공해주고 있다.

샘플코드 - Python

 

사용을 위해서는 오른쪽 상단에 위치한 "활용신청"을 클릭하면 된다.

활용신청

 

적절한 내용으로 작성하여 신청하면, 즉시 승인이 된다.

신청 결과

 

상세 내용을 보면 다음과 같이 인증키 정보를 확인할 수 있다.

상세 내용

 

이제 잘 동작하는지 검증을 해보자.

 

1. Python 환경을 맞춰야 한다.

- requests 모듈을 사용하기 위해 설치가 필요하다.

 

2. 지역 위경도값을 확인하자.

- 공공데이터 포털에서 제공하는 참고문서를 다운로드 받아야 한다.

  . 기상청41_단기예보 조회서비스_오픈API활용가이드_(240715).zip

 

- 압축을 풀면 문서 파일이 2개 나오는데, 위경도 정보가 있는 엑셀 파일을 확인하면 된다.

 

- 내가 확인하고자 하는 지역의 X, Y 값을 확인하면 된다.

 

3. 코드 작성

- 다음과 같이 간단한 코드를 작성해보자.

  . API 키는 일반 인증키(Decoding )으로 사용했다.

 

- 실행 결과는 다음과 같이 나온다.

 

 

각 값들의 의미나 활용 관련하여서는 다운로드 받은 참고 자료 中 워드 파일을 살펴보면 된다.

sample

 

일단 기본적인 확인을 해봤으니,

아침에 자동으로 알람 오도록 만들어봐야겠다! ^^

반응형

[문제] Python으로 "Hello world!"를 가장 간단하게 출력하는 방법은?

[정답] 다음과 같은 방법을 생각해낸 사람은 파이썬 고수!!!

Hello world!

 

 

[문제] "python -m antigravity"를 실행하면 어떤 결과가 나올까?

[정답] 'antigravity'의 뜻은 반중력이며, 모든 것을 밀어내는 성질을 의미한다.

antigravity

 

응?! 아무것도 출력되는 것 없이 그냥 끝난다. 그런데... 갑자기 웹 브라우져가 실행되는데...

https://xkcd.com/353/

 

설마 XKCD를 처음보는 분이 계실리가.....?!

 

계실 수도 있으니 ^^ 설명을 해보자면,

 

랜들 먼로(Randall Munroe)가 일주일에 3번 연재하는 Web-Comic으로

공대 개그, Geek스러운 개그가 주된 유머 코드이다.

 

XKCD

 

웹사이트 메뉴 中 WHAT IF? 컨텐츠를 기반으로 책도 출간했다. 번역본도 있다.

아주 위험한 과학책

 

재밌지 않나!?

python CLI 가지고 별 이상한 일이 다 생긴다 ^^

 

 

[문제] python 으로 그래픽 UI를 어떻게 표현할 수 있는지 쉽게 설명할 수 있는 방법은?

[정답] python 에는 오랜 역사(?)를 갖고 있는 거북이(turtle) 모듈이 있다.

turtle demo

 

응!? turtle demo도 지원해준다고!?

turtle example

 

신기한(?) 윈도우가 하나 실행된다.

examples

 

하나 골라 보자.

clock example

 

turtle 모듈을 이용한 예제 코드도 볼 수 있고,

윈도우 하단의 "START"를 클릭하면 실행 결과도 확인할 수 있다.

 

"python -m turtledemo" 실행 하나만으로 이런 어플이 뜬다니,

대체 이런 것들은 어디에 숨어있었던 것인지...

 

그동안 Python을 몇 년 동안 만져왔는데, 지금까지 이런 것들을 전혀 몰랐다니!

 

 

생각보다 재미있어서 이런 것들 찾아서 몇 번 더 포스팅해보겠다 ^^

 

 

반응형

+ Recent posts