전체 글
-
Spring boot: ChatGPT API 사용하기컴퓨터/JAVA 2023. 10. 2. 19:15
GitHub - flashvayne/chatgpt-spring-boot-starter: a chatgpt starter based on Openai Official Apis. a chatgpt starter based on Openai Official Apis. Contribute to flashvayne/chatgpt-spring-boot-starter development by creating an account on GitHub. github.com gradle 기준, 라이브러리를 추가한다. implementation 'io.github.flashvayne:chatgpt-spring-boot-starter:1.0.4' src/resouses.yml 에 아래와 같은 설정을 추가한다. (gpt-3.5-..
-
Rust: OAuth2 구글, Github, 카카오, 네이버 로그인컴퓨터/Rust 2023. 8. 6. 12:58
로그인 만든 것: 사이트 내 회원가입 (편의상 내부 Vector), 로그인 (내부 db, 구글, Github, 카카오, 네이버), 프로필 spring boot으로 처음 로그인을 만들어보다가 스프링 설정이 너무 어색해서 자주 사용하던 Rust로 간단히 만들어 보기로 했다. (Rust yew 프론트엔드 + actix-rs 백엔드) OAuth2 간단히 각 플랫폼마다 로그인하고 유저 정보를 조회하는 방법이다. Google OAuth2 클라이언트 아이디와 리다이렉트 경로가 필요하다. https://accounts.google.com/o/oauth2/v2/auth 에 forward, 코드 요청하고 (params: redirect_uri, client_id, access_type, response_type, prom..
-
Python: VBA로 엑셀 차트 이미지 이메일에 첨부하여 보내기컴퓨터/파이썬 2023. 7. 25. 23:29
엑셀 데이터와 차트를 정리하여 이메일로 전달해야 하는 상황을 자주 만날 수 있습니다. 이렇게 하기 위해 메일을 작성하고, 엑셀을 열어 차트를 캡처하고, 이 캡처한 이미지를 이메일에 첨부하는 등의 일련의 과정을 수작업으로 처리하는 것은 매우 번거로울 수 있습니다. 이번 튜토리얼에서는 파이썬과 VBA를 활용하여 이러한 과정을 자동화하는 방법을 소개합니다. 먼저 VBA를 이용해 엑셀 차트를 PNG 이미지로 저장한 후, 파이썬을 이용해 해당 이미지와 엑셀의 데이터를 이메일에 첨부하여 전송하게 됩니다. 1. 엑셀 VBA로 차트를 이미지로 저장하기 먼저 엑셀 VBA를 이용해 엑셀 차트를 PNG 이미지로 저장하는 방법을 알아보겠습니다. 아래와 같은 VBA 코드를 사용하면 특정 시트의 차트를 PNG 이미지로 저장할 수..
-
Rust: 카카오 소셜 로그인 하기 (JWT, actix-rs, react.js)컴퓨터/Rust 2023. 7. 10. 18:55
소개: 이 글에서는 React.js 프트엔드에서 간단하게 카카오 로그인을 구현한 예제이다. 프론트만으로 해결하려 했으나 redirect 등의 문제로 백엔드를 Rust로 구현하게 되었다. (React.js + Actix-rs) 왜냐하면 vercel로 배포했기 때문에 프론트만 업로드 되어있다...프론트+백엔드 같이 배포하면 더 쉬워진다. 백엔드는 fly.io와 같은 사이트를 이용해서 퍼블릭 주소로 서비스 해준다. 일단 https://developers.kakao.com/console/app 에서 앱을 만들고 카카오 로그인 기능을 켜준다. 그다음 아래에 REDIRECT URI에 개발 홈페이지 주소를 적어준다. https://developers.kakao.com/docs/latest/ko/kakaologin/r..
-
Rust: WASM async fn + 카카오맵 API 사용하기컴퓨터/Rust 2023. 6. 26. 12:05
소개 이 글에선 위와 같은 웹을 만들어 볼 것이다. 카카오맵 키워드 검색 함수를 Rust로 만들고 WASM으로 변환한다. Rust WASM으로 유명한 wasm-bindgen 라이브러리는 Rust와 JavaScript 간의 상호 운용성을 향상해, Rust에서 작성된 코드를 WASM으로 컴파일하고 JavaScript에서 이를 호출하게 할 수 있다. Rust에서 WASM으로 컴파일하는 기본 단계는 다음과 같다: Rust에서 원하는 기능(여기서는 카카오맵 키워드 검색과 같은 것)을 구현 wasm-bindgen을 사용하여 WASM과 JavaScript 간의 상호 운용성을 설정 wasm-pack 또는 비슷한 도구를 사용하여 Rust 코드를 WASM으로 컴파일 컴파일된 WASM 코드를 웹 페이지에 로드하고 JavaS..
-
Rust: actix-rs + React.js컴퓨터/Rust 2023. 6. 2. 19:53
소개: actix-rs (백엔드)에서 React.js (프론트엔드)를 간단하게 사용하는 방법이다. 우선 프론트엔드 폴더에서 프로젝트를 빌드하고 yarn build 백엔드를 아래처럼 수정한다. 1. 터미널에서 cargo add actix-files 2. main.rs actix_files로 파일 임베딩을 하는 법이다. 현재 백엔드 프로젝트 폴더가 A/ 라고 할 때 프론트엔드 빌드 결과물이 A/google-clone/build 에 있고 그 안에 index.html을 사용한다. ... use actix_files as fs; ... #[actix_web::main] async fn main() -> std::io::Result { ... // Start the HTTP server HttpServer::new..
-
Rust 문법: Box컴퓨터/Rust 2023. 5. 13. 22:47
Box 이해하기 Rust의 Box는 언어의 메모리 관리 모델에서 핵심 개념입니다. 이는 값들을 힙에 할당하는 방법을 제공하여 더 유연한 메모리 사용을 가능하게 합니다. Rust에서의 Box 타입은 힙 할당을 위한 스마트 포인터입니다. 단순한 스택 할당과 달리, Box를 사용하면 대량의 데이터를 저장하거나 값을 오랫동안 메모리에 유지하거나 런타임에서만 알 수 있는 타입의 값을 저장할 수 있습니다. Box란 무엇인가? Box는 특정 타입 T의 힙 할당을 고유하게 소유하는 포인터 타입입니다. 값이 Box에 들어가면 힙으로 이동되고 소유권이 Box로 이전됩니다. Box가 범위를 벗어날 때 소멸자가 호출되며 힙 메모리가 해제되고 값이 삭제됩니다. Box가 제공하는 메서드 Box는 생성, 사용 및 메모리 관리를 위..
-
Rust 문법: Ordering (Relaxed, Release, Acquire, AcqRel, SeqCst)컴퓨터/Rust 2023. 5. 11. 22:55
소개 Rust를 쓰다가 여러 스레드 상황에서 공유 변수를 사용해야 하는 상황이 생겼다. CTRL+C를 백그라운드에서 캡처하고 (tokio::signal::ctrl_c) CTRL+C를 누르면 exit_flag를 true로 만든다. 그러면 메인 함수 루프에서는 어떻게 읽고 종료해야 할까? 여기서 나올 수 있는 개념이 메모리 순서이다. 즉, 멀티스레드 프로그래밍에서 원자적 연산은 데이터가 여러 스레드를 통해 안전하게 처리되도록 보장하는 데 중요하다. 원자적이지 않은 연산은 여러 스레드의 상대적 타이밍에 따라 연산의 출력이 달라지는 경합 조건을 초래할 수 있으며, 이러한 조건은 디버깅하기 어려운 다양한 문제를 일으킬 수 있다. Rust의 std::sync::atomic::Ordering 열거형은 이러한 원자적 ..