리눅스 업데이트 미러에 카카오 미러 적용
·
Study/Others
간만에 라즈베리 파이를 켜서 이것저것 설정했다.업데이트 경로를 바꾸려는데, 원래 하던 대로 수정하려고 하니 이런 창이 날 반긴다. ``/etc/apt/sources.list.d/ubuntu.sources``라는 경로로 옮겼다는 내용이다.그럼 저기로 가보자. 오우... 먼가 다르긴 다르다.찾아보니, 다음과 같은 내용을 아래에 추가하고 저장하면 된다. # Kakao Update PathTypes: debURIs: http://mirror.kakao.com/ubuntu/Suites: noble noble-updates noble-securityComponents: main universe restricted multiverseSigned-By: /usr/share/keyrings/ubuntu-archive-k..
티스토리 인라인 코드 태그 래핑 스크립트
·
Study/Javascript
티스토리엔 다음과 같이 코드 블럭을 넣을 수 있습니다.#include #include using namespace std;int doubleDotProduct(const vector& a, const vector& b);int main() { vector vec1 = {1, 2, 3}; vector vec2 = {4, 5, 6}; int result = doubleDotProduct(vec1, vec2); cout 티스토리에서 자체 지원하는 기능이라 사용이 매우 간편합니다. 그런데 ``인라인 코드``를 넣으려면 어떻게 해야 할까요?마크다운 에디터를 쓰거나 html 에디터로 가서 ````와 ````를 필요한 곳에 일일이 지정해 주어야 했습니다.일반 에디터에서도 지원하는데 제가 ..
[C++] 채팅서버에 DB 실장
·
Study/C++ & C#
하기는 금방 했는데, 인생 한 치 앞을 알 수가 없게 돼서 이제야 올린다.  1. DB 설치MariaDB를 사용하기로 했다.Sapphire 프로젝트에서 MariaDB를 사용하고 있기도 하고,나중에 샤딩을 위해서도 좋지 않을까 싶었다. C++에서 마리아 DB와 연동하기 위해선 MariaDB Connector/C++가 필요하다.설치 후 포함 및 라이브러리 경로를 프로젝트 설정에서 잡아주면 끝.  2. DB 구조 잡기유저들은 무작위 16진수 문자열 배열을 ID이자 닉네임으로 사용하게 된다.로그인도 필요 없고 서버에서 임의로 부여한다.오고 가는 것은 클라이언트가 접속했는지, 어떤 채팅을 쳤는지 정도일 뿐이다. 사용자 정보 - 부여받은 ID - IP 주소 - 최초/최근 접속 시간대화 정보 - 메시지를 보낸 사용자..
[C#] ###Clicker 동작 개선
·
Study/C++ & C#
https://u-bvm.tistory.com/91 [C#] ###Clicker 개선판개선은 진작 했지만, 관련해서 포스팅하지 않은 이유는 "티스토리 계정을 까먹어서..." 자동 로그인 해둔 것들은 포맷 후에 다시 로그인해야 하니 여간 귀찮은 일이 아니다. 어찌어찌 로그인해서u-bvm.tistory.com여기에서 이어진다.  최근에 돌리면서 마음에 안 드는 부분이 좀 있었기 때문에 고쳐보고자 했다. 파이어폭스 지원 - 크롬이 자원을 많이 먹는다는 느낌이 들어서 파폭이라면 괜찮지 않을까 싶었다.URL 캐싱 - 아무래도 지금까지의 방식으론 이미 클릭해서 포인트를 얻을 수 없는 부분도 클릭을 계속하기 때문에 - 불필요한 부하를 만들고 있다고 생각했다. - 사실 처음 만들 때부터 의도한 부분이긴 한데, 하다 보..
[C++] ChatRoom 구현
·
Study/C++ & C#
본격적으로 채팅 시스템을 만들어 보기 위한 기초 작업이라고 봐도 되겠다. 이전과의 차이점은 아래와 같다. Session 정의 변경 - 이제 세션은 서버와 클라이언트 간의 연결 상태를 나타낸다. - 기존 Room처럼 쓸 수 없고 단일 연결을 나타낸다. ChatServer 구현 - io_context를 가지고 전체 서버를 관리할 객체 - 이후에 io_context를 활용하는 객체들은 전부 이 객체로부터 레퍼런스를 받는다. ChatRoom 구현 - ChatServer 아래에서 실제 채팅방의 역할을 할 객체 핸들러 구현 - 메세지 핸들링을 분리해 코드 관리를 용이하게 할 목적으로 별도 클래스로 구현 1. Session #ifndef SESSION_H_ #define SESSION_H_ #include #incl..
[C++] Session 다중 접속
·
Study/C++ & C#
이전에 에코서버를 만들어 봤었는데, 그건 세션 당 하나의 소켓만 처리할 수 있었다. 이걸 하나의 세션에서 여러 개의 소켓을 처리할 수 있게 수정했다. 하물며 채팅에서도 1:1 채팅만 하는 것은 아니지 않은가. 1. Server Server 클래스 자체는 거의 원형을 유지하고 있다. class Server { public: Server(boost::asio::io_context& io_context, short port) : io_context_(io_context), acceptor_(io_context, tcp::endpoint(tcp::v4(), port)), session_(std::make_shared(io_context)) { DoAccept(); } private: boost::asio::io..
[C++] Boost.Asio 에코 서버
·
Study/C++ & C#
Sapphire라는 FF14의 서버를 에뮬레이팅 하는 프로젝트가 있다. 개발사가 사용하는 실제 서버 코드와 동일할 수는 없겠지만, 기본적인 처리는 되어 있기에 이를 통해 나만의 세계에서 FF14를 탐험할 수 있다. 에뮬레이팅 된 서버가 클라이언트와 정상적으로 통신하고 있으며, 서버도 적절한 처리를 해 준다는 의미이다. 그리고 난 이 프로젝트에 사용된 Boost.Asio가 매우 궁금해졌다. 이를 처음부터 공부하며 이 프로젝트에 사용된 비동기 통신 개념을 진정 나의 것으로 만들기 위한 첫걸음을 떼려고 한다. 그전에 Boost.Asio에 대해 알 필요가 있다. 이 글에서 그 내용을 설명할 수도 있지만, 매우 잘 설명해 준 어떤 블로그의 글을 발견해 링크를 남긴다. Boost Asio에 대해서 알아보자 물론 공..
[C#] ###Clicker 개선판
·
Study/C++ & C#
개선은 진작 했지만, 관련해서 포스팅하지 않은 이유는 "티스토리 계정을 까먹어서..." 자동 로그인 해둔 것들은 포맷 후에 다시 로그인해야 하니 여간 귀찮은 일이 아니다. 어찌어찌 로그인해서 쓴다. 이전과의 차이점 자격증명 체크 개선 프로세스 생명주기 관리 개선 진행상황 트래킹 개선 이터레이션 처리 개선 일부 클래스 개선 1. 자격증명 체크 개선 포맷으로 인해 기존 암호회 데이터를 사용하지 못하게 됐으니, 새로운 데이터를 만들 필요가 있다. 그래서 난 "어차피 실행해서 로그인이 불가능하면 새로운 자격증명을 입력하면 된다"라는 생각으로 실행했다. 하지만 이전 버전에서는 각 스레드마다 로그인 체크를 하기 때문에 모든 스레드가 동시에 새로운 자격증명 입력 요구를 하게 되는 상황이 발생했다. 몇 번이고 그걸 입..
[C#] 심플한 게임 런처
·
Study/C++ & C#
내가 하는 모 게임은 게임을 구동하기 위해 런처에서 로그인 후 게임을 실행해야 한다. 그리고 그 과정은 대단히 귀찮다. 심지어 난 비밀번호가 크롬에서 자동생성 해주는 복잡한 그거라 일일이 크롬에서 그걸 가져왔다. 그게 귀찮다고 다른 데 메모해 두면 보안의 의미가 없으니까... 그래서 이 번거로운 과정을 건너뛰고 한방에 게임을 켜고 싶었다. 계정의 세션ID는 변경되지 않고 고유하며, 게임 실행 시에 그 인자로 들어간다. 이를 포함한 정보를 저장했다가 다시 불러와 사용할 수 있게 하고 싶었던 것. 이전에 내가 의도하는 기능을 하는 어떤 개인 개발 프로그램이 있었는데, 유감스럽게도 소스코드나 .pdb 파일이 없었기 때문에 이를 리버싱 할 필요가 있었다. 프로그램을 디컴파일하고, 그 코드를 보기 좋게 고친 다음..
[C#] ###Clicker
·
Study/C++ & C#
모 웹사이트는 페이지에 있는 어떤 영역을 클릭하면, 그 사이트 내에서 사용할 수 있는 재화를 지급한다. 하지만 그 영역의 수가 결코 적지 않다. 일일이 클릭하기에 꽤 번거로운 양이고 특정 주기로 갱신 또한 이루어진다. 이제 자동화로 편해져 보려 한다. 하지만 여기선 클릭 자동화에 대한 얘기 보단 다른 걸 설명하려고 한다. 그런 자동화는 다른 데 더 좋은 설명이 많다. 1. Main 프로그램의 주요 동작만 알아보기 위해 Main()만 가져왔다. /// /// Holds constant values to be used throughout the application for configuration purposes. /// static class Constants { /// /// Maximum number ..