[C++] Select Model
·
Study/C++ & C#
학교에서 처음 소켓 프로그래밍을 배웠던 기억이 난다. 리눅스 환경도 낯선데, 갑자기 처음 보는 함수가 엄청 나와서 많이 당황했었다. 어찌저찌 실행시키니 정상적으로 작동하는 것을 보고 신기해했었던 것 같다. 하지만 그런 블로킹 방식의 소켓 구현으로는 실용적인 서버를 개발할 수 없다. 기본적인 모델이면서도 다양하게 활용될 수 있는 Select 모델에 대해 알아봤다. 1. Select 모델의 개념 Select 모델은 select 라는 함수가 핵심이 되기 때문에 이런 이름이 붙었다. 서버단에선 이 모델을 활용해서 수백 또는 수천의 세션을 관리하기엔 무리가 있을 수 있다. 하지만 대규모 동시 접속이 필요없는 클라이언트단에선 여전히 사용되기도 한다. 네트워크 프로그래밍의 지식을 쌓는다는 목적으로도 좋다. Selec..
[Python] DeepL 번역 API 써보기
·
Study/Python
DeepL 번역이 성능이 썩 괜찮고 가끔 써봄직 하여 봇에 추가해 봤다. 1. 번역 API 선정 사실 처음부터 DeepL을 사용하기로 한 건 아니었다. 후보로 여러 번역기들을 생각해 봤다. GPT 비싸다. 그냥 비싸다. 그리고 번역이 메인인 모델이 아니기 때문에 번역 품질의 신뢰성이 가장 높다고 보기 힘들다. Papago 이미 kd()를 위해 사용하고 있다. 제한 토큰 수가 적기 때문에 패스. Google Translate 번역 품질이 나쁜 것은 아니지만, 마냥 좋다고도 할 수 없고 돈을 내지 많으면 사실상 사용하는 것이 무의미한 수준이다. DeepL 그나마 무료 플랜으로도 제한이 널널하고 번역 품질도 생각보다 괜찮아서 낙점했다. 그래서 DeepL의 홈페이지로 가서 등록하려니... 국내 카드를 안 먹는다..
워썬더의 현 사태에 대하여
·
Thoughts
워썬더는 현재 게임이 출시되고 난 후 전례 없는 역사적 사건에 직면해 있다. 개발사와 유저가 싸우는 게임. 사실 돌아보면 서로 싸우는 것이 그리 드문 일은 아니다. 하지만 이번엔 케이스가 조금 다르다. 1. 경제 경제 시스템 변경은 이번 사태의 직접적 기폭제가 되었다. 예전엔 좋았는데 이제 와서 나빠졌다는 것은 아니다. 가이진은 지속적으로 경제 시스템을 너프(보상을 줄이는)해 왔다. 게임의 수명을 늘리고 유저들의 플레이 타임을 확보하기 위한 합리적 근거가 있는 경제 시스템 조정은 당연히 납득이 가능하다. 하지만 가이진은 「유저에게 적대적」이기 때문에 유저가 납득할 수 없는, 장기적으로도 유저에게 손해를 끼치는 경제 너프를 몇번이고 반복해 왔다. 워썬더의 작금의 경제의 문제점에 대해 지적한 아래의 커뮤니티..
[Python] 단위 변환
·
Study/Python
우리는 임페리얼 단위를 영구히 퇴출시키기 위해 노력할 필요가 있다. 1. 클래스 from Utils.Log import Logger as lg class unit(): # Convert Imperial to Metric def imperial_to_metric(value, unit): if unit == "in": return value * 2.54, "cm" elif unit == "ft": return value * 0.3048, "m" elif unit == "yd": return value * 0.9144, "m" elif unit == "mi": return value * 1.60934, "Km" elif unit == "gal": return value * 3.78541, "L" elif un..
[Python / GPT] 봇 코드 리팩터링
·
Study/Python
사실 이번 글을 이 카테고리에 써도 되나 모르겠다. 그래도 배우는 것이긴 하니 일단 여기에 쓴다. 1. Log 요즘 GPT 모르는 사람이 없다. 얘가 코드도 짜준다더라. 있는 걸 갖다 넣으면 리팩터링도 해주고. 그래서 내 기존 봇 코드를 이를 활용해 리팩터링 해 보기로 했다. 아래는 기존에 내가 작성한 코드다. class types(Enum): INFO = 1 ERROR = 2 DEBUG = 3 UNKNOWN = 4 class Colors: BLACK = '[\033[30m' RED = '[\033[31m' GREEN = '[\033[32m' YELLOW = '[\033[33m' BLUE = '[\033[34m' MAGENTA = '[\033[35m' CYAN = '[\033[36m' WHITE = '[..
アイドル에 나오는 金輪際의 의미와 그 유래
·
Study/Japanese
「押しの子」라는 작품을 아는가? 확실히 요즘 이 작품으로 서브컬처계는 어느 정도 달아올라 있는 듯하다. YOASOBI가 담당한 주제곡 「アイドル」 또한 매우 높은 완성도로 작품의 흥행에 기여하고 있다. https://youtu.be/ZRtdQ81jPUQ 처음 들었을 땐 이게 요아소비의 곡이란 것을 눈치채지 못했다. 기존의 요아소비의 곡과는 분위기가 정말 다르다고나 할까... 보컬 스타일도 달라서 정말 놀랬다. 그렇게 곡의 완성도에 감탄하고 있는 도중... 1. 金輪際現れない 라는 구절이 들렸다. 金輪際가 뭘까? 한글로 보면 「금륜제」인데, 전혀 그 어원이 짐작되지 않는다. 의미를 유추해 보기 위해 그 이전 구절과 이후 구절을 같이 보기로 하자. 君は完璧で究極のアイドル 「金輪際現れない」 一番星の生まれ変わり..
[Python, AWS] csv에서 DynamoDB에로의 교체
·
Study/Python
원래 봇 로그 데이터 저장엔 Pandas를 활용해 csv 형태로 저장했지만, Cloudtype 상에서 csv를 확인한다는 게 여간 귀찮은 일이 아니었다. 접근성이 떨어지는 만큼 보려는 의욕 자체가 떨어진다고 할까... 그래서 이 불편함을 타파하고 나름대로 DB 공부를 해보고자 이걸 DB로 전부 교체하기로 결정했다. 원래는 Cloudtype에서 제공하는 MariaDB 템플릿을 쓰려고 했지만... HeidiSQL 상에서 접속을 시도했는데 안되더라? 클라우드에서 제공한 가이드도 현재의 UI랑 달랐다. 외부에서 TCP 접속이 막힌 느낌이긴 한데 그냥 안 되는 김에 다른 DB를 찾아보기로 했다. 집에 있는 라즈베리파이를 DB로 쓸까 잠깐 스쳐 지나가듯 생각했지만 파기. 적은 트래픽을 사용한다면 무료로 쓸 수 있는..
[C++] STL : Vector
·
Study/C++ & C#
눈에 딱 들어온 것이 STL이었기 때문에 STL부터 복습했다. 1. Vector의 원리 Vector는 단순히 말하면 동적 배열이다. 기존의 배열은 유동적으로 사이즈를 늘리기 번거로웠는데, 이를 간편하게 해 준다. 벡터는 아래와 같이 동작한다. 여유분을 두고 메모리 할당 부족할 시 추가로 할당 해당 영역에 추가 할당할 수 있으면 할당 불가능할 시 다른 영역에 데이터를 복사해 할당 아래의 코드로 확인해 보자. vector v1; // 1. 여유분을 두고 메모리 할당 // 2. 부족하면 추가 할당 for (int i = 0; i < 100; i++) { v1.push_back(i); if ((i % 10) != 0 || i == 0) cout
[Python] 로깅 클래스 추가
·
Study/Python
역시 무슨 일이 벌어지는지 알기 위해선 필요한 로그를 남겨놔야 한다. 간단한 로깅 클래스를 만들고 봇의 로깅이 필요한 곳에 추가했다. 1. 부가 클래스 작성 class types(Enum): INFO = 1 ERROR = 2 DEBUG = 3 UNKNOWN = 4 class Colors: BLACK = '[\033[30m' RED = '[\033[31m' GREEN = '[\033[32m' YELLOW = '[\033[33m' BLUE = '[\033[34m' MAGENTA = '[\033[35m' CYAN = '[\033[36m' WHITE = '[\033[37m' UNDERLINE = '[\033[4m' RESET = '\033[0m]' 먼저 enum클래스와 컬러링을 위한 Colors 클래스를 만들었..
[Python] 봇에 Epoch Converter 추가
·
Study/Python
근래 타임스탬프를 사용할 일이 많아서 아래의 사이트를 자주 이용하고 있었다. https://www.epochconverter.com/ Epoch Converter Convert Unix Timestamps (and many other date formats) to regular dates. www.epochconverter.com 필요한 기능만 딱 있고 매우 편리한 사이트이지만... 역시 웹사이트에 접속해야 한다는 것 자체가 나에겐 매우 큰 귀찮음으로 다가왔기 때문에, 이를 봇에 올렸다. 1. 클래스 작성 당연히 메인 봇에 코드를 다 때려 넣으면 정신 사나우니 별도의 클래스로 관리한다. from datetime import datetime from math import trunc import time c..