Dev/Go

    AI와 채팅

    AI와 채팅

    chat-ai 간단하게 AI와 채팅을 구현 하고자 합니다. AI는 https://beta.openai.com/docs/guides/completion/conversation의 내용을 사용합니다. openai.com 에서는 영문만 지원하기 때문에, naver의 papago api를 사용해서 번역합니다. 현재는 한글도 지원합니다. 제약사항 openai.com은 가입하면 베타 버전이라 3달간만 무료로 사용할 수 있습니다. 서비스가 아닌 스터디 목적이니 3달만 사용하려 합니다. (만기: 23년 1월 중순) 만료 되었네요. naver papago api는 하루 10,000 글자만 번역이 무료 입니다. 번역 대상은 내가 입력한 내용 + AI가 대답한 내용 입니다. 10,000글자를 초과하면 translater fa..

    Oracle 에서 MariaDB로 데이터 마이그레이션

    Oracle에서 MariaDB로 DB 전환 프로젝트를 진행하면서 데이터를 마이그레이션해야 했습니다. 별도 솔루션을 사용하기 어려웠고 ssh 터미널에서만 작업이 가능했으며, 마이그레이션 해야하는 테이블이 많은 상황이었습니다. 직접 구현하기로 결정했고, 생산성 좋고 동시성 개발이 편한 go 언어를 사용했습니다. DB 설정을 euckr로 해야 했습니다. Oracle은 euckr이 아닌 데이터도 저장되는데 MariaDB는 euckr이 아닌 데이터를 저장하려면 오류가 발생하기 때문에, euckr 캐릭터셋 체크 및 로그 저장 기능이 들어갔습니다. 전체 소스코드는 여기(https://github.com/lmk/migrationOracle2Maria)서 볼수 있습니다. 버그 테이블 하나에 데이터가 많은 경우 처리하지 ..

    Cobra로 Command 입력

    개요 jeager의 소스 코드를 보다보니, cobra라는 package를 사용하고 있었고 검색해보니, 복잡한 파라미터를 사용하는 cli app 개발에 유용하며 kubeneties, jeager, promethtus등 go로 만들어진 많은 app 에서 사용하고 있다고 한다. cobra를 활용한 간단한 프로젝트를 해보려고한다. 데모 프로젝트 go_google_images 단어를 입력받아, 이미지를 검색해서 다운로드하는 간단한 프로그램입니다. cobra를 사용해서 커맨드 파라미터를 입력받을 것입니다. 기능 cobra로 param을 입력 받는다. 입력받은 검색어를 아래 URL로 google에 요청한다. "https://www.google.co.in/search?q="+QUERY+"&source=lnms&tbm=..

    go 에서 time 없는 난수 발생

    목적 랜덤 대진표를 만드려고 한다. local 환경에서 만드는 경우는 난수 생성시 seed 값을 time을 사용하는데, go playground 에서 실행해보니 항상 같은 값이 나왔다. 아마도 go-playground가 일종의 vm 이라서 최초 생성시 동일한 시간으로 생성되는것으로 추정된다. go-playground 에서도 랜덤하게 생성되도록 구현해보자. 방법 아래 예제에서는 crypto로 값을 seed를 초기화 하고 있다(init 함수). go-playground 에서도 Run 버튼 옆에 "Go dev branch"를 선택해야 정상 동작한다. package main import ( cryptoRand "crypto/rand" "encoding/binary" "fmt" mathRand "math/rand..

    Golang으로 Synology 연동 Telegram 봇 만들기

    Golang으로 Synology 연동 Telegram 봇 만들기

    재택근무를 하면서 q10에서 타오 나스를 구매했습니다. 주 용도는 마크 서버 및 torrent 머신인데, 헤놀로지 세팅을 하다 보니 욕심이 생겨서 외부에서도 텔레그램 봇을 통해 torrent파일이나 마그넷 링크로 다운로드할 수 있게 했습니다. 여기서는 그 방법을 공유하려고 합니다. 목표 Telegram bot: 예전에 python으로는 만들어본 적이 있는데, 이번에는 Golang으로 만들어 보려고 합니다. Torrent 파일은 disk station의 감시 경로에 넣어주면 되고, magnet은 Synology API(SYNO API)에서 지원하네요. 시놀로지 세팅: Download Station 감시 설정, API 설정, API 연동용 계정 생성 등을 해야 합니다. 그리고 시놀로지에서는 Golang을 지..