분류 전체보기 13

티스토리 장애를 겪고 나서

며칠간 지속됐던 카카오 서비스 장애가 슬슬 마무리되는 것 같다. 모바일 페이지로만 접속 가능했던 티스토리도 어느 정도 복구가 완료됐는지 다시 PC 버전으로 돌아왔다. 티스토리를 선택한 이유 중 하나가 대기업이 운영하는 서비스라 서버 문제에서 자유로울 것 같아서였는데, 이렇게 뒷통수를 맞을 줄은 몰랐다. 계란조차 한 바구니에 다 담지 말아라 했는데 대기업이 서버를 이렇게 관리할 것이라고는 예상하지 못했다. 그래도 여러 가지 장점이 있어서 티스토리를 버리지는 않을 것이지만, 앞으로 티스토리 블로그 글을 자동으로 스크랩해서 개인 PC에 저장해 두어야 할 것 같다.

잡담 2022.10.19

Python과 thecampy로 육군훈련소 인편 자동화하기

기획의도 입대해 본 분은 아시겠지만 훈련소에서는 저녁에 틀어주는 뉴스 외에는 바깥 소식을 접할 기회가 많이 부족합니다. 따라서 매일 받는 인편 한 통이 큰 위안이 됩니다. 입대를 앞둔 필자는 훈련소에서도 최신 정보와 금융 시세를 놓치고 싶지 않았습니다. 하지만 매일 지인에게 뉴스를 스크랩해서 보내 달라고 할 수는 없는 노릇이니 무언가 자동화할 방법이 필요했습니다. 이에 입대 며칠 전, Python으로 인편 전송을 자동화하여 분야별 일일 뉴스 헤드라인과 가상화폐 시세를 받아볼 수 있도록 기획 및 구현해 보았습니다. 결론부터 말하자면 결과는 매우 성공적이었고, 매일 빠짐없이 고급(?) 정보를 챙겨볼 수 있었습니다. 다음은 실제 전송된 인편 사진입니다. 본 게시글에서는 이를 어떻게 구현했는지 설명할 것입니다...

프로젝트 2022.10.09

2022.03 블로그 디자인 리뉴얼

군 입대 등으로 인해 블로그를 방치하다, 올해부터는 다시 활용해 보기 위해 디자인 공사를 진행하였다. 전체적인 틀은 유지하되 세부적인 부분에 많은 변화를 주었다. 새로운 색상 조합을 사용했고, 폰트 패밀리도 갈음했다. 이제는 다크 모드도 지원한다. Pretendard 여러분이 지금 보고 있는 본문의 폰트이며 요즘 많이들 사용하는 글꼴이다. 한글의 경우 Noto Sans 기반으로 만들어져 이전과 크게 다르지 않으나, 기타 문자는 Inter을 기반으로 하여 더 정돈되어 보인다. 특히 로마자 글꼴이 애플의 San Francisco와 비슷하다는 점이 Pretendard를 선택한 가장 큰 이유였다. 적용한 결과가 상당히 만족스러웠다. 레이아웃 수정 낭비되는 공간을 조금 줄였는데 (예를 들어 내비게이션 바 상하단의..

안내 2022.03.26 (1)

C언어로 게임 만들기 2. 시분할 (3) 시분할 구현, (4) 키 입력 함수 바꾸기

C언어로 게임 만들기 2. 시분할 (3) 시분할 구현, (4) 키 입력 함수 바꾸기 반갑습니다. 이번 강의에서는 지난 강의에서 만들었던 기초적인 게임 구조 위에 시분할을 구현하고 적용해 보도록 하겠습니다. ​게임에 시분할을 적용하려면 어떻게 해야 할까? 시분할이 적용된 전체 코드를 보기 전, 대략적인 구조를 먼저 예상해 봅시다. 화면을 업데이트하고, 키 입력을 받고, 여러 정보들을 출력하는 루틴이 있어야 하겠죠. 이를 간단하게 표현해 보겠습니다. while (...) { updateScreen(); getInput(); printPlayerInfo(); ... } 그러나 여기에서 문제가 발생하게 됩니다. 우리가 지금껏 써 왔던 키 입력 함수는 사용자가 키를 누르기 전까지 무한정 대기하거나, 키를 누르더라..

C언어로 게임 만들기 2. 시분할 (2) 필자가 만든 프로그램

C언어로 게임 만들기 2. 시분할 (2) 필자가 만든 프로그램 반갑습니다. 이번 강의에서는 조금 쉬어 가는 뜻으로 필자의 초등학생 시절 프로그램을 분석해 볼 것입니다. 이를 통해 잘못 구현된 게임의 예와 시분할의 중요성에 대해 알아보도록 하겠습니다. ​필자가 약 8년 전에 만들었던 프로그램 필자가 초등학생이던 시절, C언어를 사용하여 처음으로 슈팅 게임을 만들어 보았습니다. 아무 것도 몰라 기분 내키는 대로 키보드를 두드렸던 기억이 납니다. 그때 짰던 저의 코드를 요약하여 공개합니다. ... int main(void) { ... while (1) // 게임 시작 { input = getch(); // 키 입력받기 ... gotoxy(x, y); printf("O"); // 플레이어 출력 ... ex = ..

C언어로 게임 만들기 2. 시분할 (1) 시분할이란?

C언어로 게임 만들기 2. 시분할 (1) 시분할이란? 반갑습니다. 이번 강의에서는 슈팅 게임을 개발할 때 필수적으로 구현해야 할 시분할 기법에 대해 다룰 것입니다. 시분할은 무엇이며, 왜 쓸까? 우선 시분할이 무엇인지 알아야겠죠? 쉬운 예를 들어 봅시다. 0.3초마다 ‘A’를 출력하고, 0.4초마다 ‘B’를 출력하는 작업을 동시에 수행하는 프로그램을 작성해야 합니다. 이 때 여러분은 어떻게 코드를 작성할 것인가요? while (true) { printf("A"); Sleep(300); // usleep(300000); printf("B"); Sleep(400); } 이런 코드를 작성했다고 가정합시다. 분명히 'A'를 출력하는 부분과 'B'를 출력하는 부분을 모두 작성하긴 했습니다. 문제는 두 개의 작업이..

C언어로 게임 만들기 1. 기초 & 플레이어 움직이기 (2) 플레이어 움직이기

C언어로 게임 만들기 1. 기초 & 플레이어 움직이기 (2) 플레이어 움직이기 반갑습니다. 이번 강의에서는 키를 눌러 플레이어를 움직이는 방법에 대해 설명하겠습니다. 플레이어를 움직이려면? 먼저 플레이어를 움직이는 간단한 로직을 알아봅시다. 1. 키를 입력받는다. - w, s, a, d 등 조작 키를 입력받아야 합니다. 2. 출력되었던 플레이어를 지운다. - 새로운 위치에 플레이어가 출력될 때 잔상이 생기는 것을 막습니다. 3. 플레이어의 위치를 조사한다. - 현재 플레이어의 좌표가 어디인지 조사해야 합니다. 4. 플레이어의 위치를 제한 범위 내에서 옮긴다. - 플레이어의 좌표를 조사한 후, 화면을 벗어나지 않게 좌표를 옮깁니다. 5. 새 위치에 플레이어를 출력한다. 위의 다섯 가지만 구현하면 플레이어를..

C언어로 게임 만들기 1. 기초 & 플레이어 움직이기 (1) 기초 함수들

C언어로 게임 만들기 1. 기초 & 플레이어 움직이기 (1) 기초 함수들 반갑습니다. 본격적인 첫 강의입니다. 1장에서는 윈도우 콘솔 게임을 만들 때 쓰이는 기초 함수의 구현과, 플레이어를 움직이는 방법에 대해 설명합니다. 그중 (1)은 가장 중요한 기초 함수들에 대한 내용입니다. gotoxy() 함수 우리가 만드는 게임은 텍스트 모드에서 돌아갑니다. 플레이어를 움직이라는 명령을 내리면, 먼저 터미널 위의 커서가 이동하고 그 위에 플레이어를 출력하게 됩니다. 이때, 커서의 위치를 지정된 좌표로 옮기는 함수가 gotoxy() 함수입니다. gotoxy(x좌표값, y좌표값); 의 형태로 사용합니다. // WINAPI 버전 void gotoxy(int x, int y) { COORD CursorPosition ..

1 2