전체 글 11

집에 서버를 놓으면 전기세가 얼마나 나올까?

설명에 앞서 이 글을 쓰게 된 계기는 당연히 내가 전기세 폭탄을 맞았기 때문... 혼자 사는 원룸에 약 세 달 전에 서버랙을 구매해서 아래와 같이 약 4대의 서버와 스위치를 설치했다. 원래는 부모님이랑 같이 살던 집에 서버를 두어서 전기세가 얼마나 증가하는지 가늠하기 어려웠는데, 매번 비슷한 양을 사용하는 나(심지어 전기장판이나 선풍기같은 계절 가전도 사용하지 않음)는 추가로 서버만 설치했기에 늘어난 전기 사용량을 거의 정확하게 측정할 수 있었다. 위와 같이 서버를 12월 중순에 설치했고, 12월 전력량은 중간부터 측정되기 때문에 1월까지 데이터를 봐야 정확했다. 무려 약 520kWh가 증가한 모습을 볼 수 있다. 처음에는 뭐지? 누전인가? 싶어서 혹시 몰라서 계산을 해봤는데... 30일간 520kWh를..

프로그래밍 2023.02.24

ChatGPT에게 커밋 메시지 생성, 코드 리팩터링을 맡기면 어떻게 될까?

리팩터링 책을 기반으로 책 스터디를 진행하고 있는데, 역시 리팩터링은 대부분 코드를 따라치면서 리팩터링 과정을 따라가는 것이 글로 읽는 것보다 몇 배는 더 나은 효과를 가져오는 것 같다. 그러면서 Git에 커밋 메시지를 영어로 해서 찍어보는 걸 주로 연습하고 있는데, 얼마 전에 ChatGPT를 알고 난 후 영어 커밋 메시지를 작성할 때 문장에 대한 조언을 자주 물어보는 편이다. 예를 들어 문장이 자연스러운지에 대한 질문을 할 수 있다. 대충 Is this sentence natural?: "Blahblah" 처럼 질문하면... 문장이 깔끔하고 자연스럽다. 문장이 거의 자연스럽긴 한데, 이렇게 고치면 좋을 것 같다. (고치면 좋을 법한 내용) 이런식으로 답장이 온다. 그러다가 중간에 코드를 작성하고 커밋하..

프로그래밍 2023.02.15

[중단됨] 배달의 민족 단골 관리 프로그램 개발기 - #1 구조 및 로그인 데이터 분석

해당 프로젝트는 중단되었으므로 더 이상 후속 글이 작성되지 않을 예정입니다. 미리 알립니다: 해당 문서는 현재 작업과 동시에 작성되고 있으므로, 업데이트가 다소 느릴 수 있음을 양해 바랍니다. 미리 알립니다: 해당 문서는 리버스 엔지니어링에 익숙하지 않은 초보자를 기준으로 작성되었습니다. 다소 불필요한 내용과 주절거림이 많아도 양해 부탁드립니다. 익숙하지 않은 내용은 댓글 남겨주시면 도와드리겠습니다. 지인 중에 음식 장사를 시작한 분이 계시는데, 배달의 민족 주문 접수 프로그램을 사용해서 배달 및 포장 주문을 받고 계신다고 했다. 그런데 혹시 배달의 민족 주문이 들어오면, 그 주문자가 몇번이나 주문했는지 알 수 없냐고 물어봤다. 주문 횟수에 비례해서 단골 고객에게 어느 정도 서비스를 주려고 하는 목적인 ..

[UE] 언리얼 엔진 액터 내용 압축 정리

해당 글의 내용은 프로그래밍 숙련자를 위해 작성되었습니다. 프로그래밍은 어느 정도 하시지만 언리얼 엔진은 처음인 분들에게 유용하도록 구성하였습니다. 글을 작성하기에 앞서, 글 작성 기준 저도 언리얼 엔진을 독학한 사람이기에 틀린 내용이 있을 수 있습니다. 댓글로 알려주시면 수정하도록 하겠습니다. Actor (액터): 액터는 월드에 배치되는 오브젝트입니다. C++에서는 AActor라는 이름으로 정의되며, UObject를 상속받습니다. 액터는 하위 구성요소로 'Actor Component (액터 컴포넌트)'를 가집니다. 가장 상위 레벨에 구성 된 컴포넌트는 특별히 'Root Component (루트 컴포넌트)'라고 불립니다. 액터는 생성과 동시에 기본적으로 DefaultRootScene이라는 루트 컴포넌트이..

[Windows] __fastfail (int 29h)

호출한 프로세스를 최소한의 오버헤드(성능 낭비없이)로 즉시 종료시키기 위한 함수. x86, x64 환경에서는 int 29h를 통해서 호출 된다. ARM, ARM64는 MSDN 문서 참고. code 매개 변수는 ecx를 통하여 전달된다. 장단점 및 특징을 정리한 결과... 1. 빠른 실패 매커니즘은 Windows 8부터 지원된다. 그 이하의 운영 체제에서는 종료 작업은 수행되지만, 액세스 위반이나 UNEXPECTED_KERNEL_MODE_TRAP를 throw하는 방식으로 처리되어 종료 속도가 느려질 수 있다. 2. 명령 포인터(Instruction Pointer; IP) 이외에 다른 메모리 종속성을 가지지 않기 때문에, 메모리가 손상 된 경우에도 안정적인 처리가 가능하다. 3. 유저 모드에서 호출될 경우,..

[도타 2] 2013년에 플레이했던 복귀 유저가 느낀 달라진 점

도타 2는 넥슨에서 서비스 되었을 때 처음 시작했다. 게임 갈라파고스화가 많이 진행되는 우리나라 특성 상, 리그 오브 레전드가 이미 상당한 시장 점유율을 확보한 상태에서 후발주자로 게임을 퍼블리싱하기로 한 것은 상당한 도박이었을 것으로 판단되는데, 상당한 금액을 투자했음에도 결국 2015년에 서비스 종료를 하면서 사실 상 패배를 인정한 셈이 됐다. 계정에 첫 매치는 2013년 7월 경에 기록되어있고, 2015년까지 아마 도타를 즐겼을 것으로 추정되는데... 사실 너무 오랜 시간이 지나서 기억이 잘 나질 않는다. 서론이 조금 길었는데, 그 6~8년 이상이 지난 패치 노트를 전부 하나하나 읽어볼 수는 없으므로, 일반에서 두들겨 맞아가면서 알아냈는데 혹시 다른 사람들도 복귀하면서 혼란이 있지 않을까 싶어서 한..

게임/Dota 2 2021.04.28

[Omron] CX-Programmer 인덱스 레지스터로 반복 구현하기

PLC 래더 프로그래밍을 하는 과정에서 반복적인 회로가 필요할 때가 있습니다. 제목에 '인덱스 레지스터'라는 생소한 용어가 하나 보일텐데, 이 레지스터는 값을 저장하는 레지스터가 아닌 메모리의 위치를 저장하는 레지스터라고 할 수 있겠습니다. 대충 PC 계열의 프로그래밍에서는 '포인터'라는 개념과 상당히 유사합니다. 이 '포인터'라는 개념만큼 어렵지는 않지만, 나름 사람에 따라 난이도가 있다고 느낄 수도 있습니다. 하지만 알아두면 프로그래밍이 상당히 간결해지고 편리해지는 장점이 있죠. 인덱스 레지스터는 총 IR0~IR15까지 넉넉하게 제공이 되고, 태스크마다 IR/DR을 공유할 것인지, 별도로 사용할 것인지에 대한 부분을 PLC 설정에서 바꿀 수 있습니다. 간단하게 예를 들기 위해서 예제 회로 하나를 준비..

프로그래밍/PLC 2020.06.22

C Style String Formatting vs C# Style String Formatting

주의: C의 printf와 C#의 string.Format을 비교하는 글입니다. 특히, Console.WriteLine은 서식 방법이 많이 다릅니다. 유의해서 읽어주세요. 0. 기본적인 구조 C char* str = "Hello, World!"; printf("Formatted String: %s", str); /* Hello, World! */ C# string str = "Hello, World!"; string.Format("Formatted String: {0}", str); /* Hello, World! */ C는 printf 함수 자체에서 formatted string을 print하는 구조이지만, C#은 String의 Format 함수가 포맷팅을 제공한다. 또한 기본적으로 object형으로 캐..

프로그래밍/C# 2020.05.31

윈도우 10(RS2~)에서 '앱 알림 받기' 목록의 앱 지우기

윈도우 10을 사용하다가, 어떠한 자료를 받기 위해서 adf.ly를 거치게 되는 일이 한번 있었는데 이 사이트가 새로운 양아치 방식으로 수익을 창출하더라구요. 예전의 adf.ly라면 그냥 5초 후에 광고를 넘기면 그만이었는데, 이번에는 광고를 넘기려고하면 팝업까지 하나 띄우고 게다가 강제로 알림 허용을 요구하더라구요. 어떤 원리인지는 자세히 모르겠는데 혹시라도 버티면 넘어가질까했는데, 푸시 알림을 허용을 안하고는 넘길 수가 없는 구조를 만들어놨더라구요. 그래서 울며 겨자먹기로 어쩔 수 없이 허용하고 나중에 삭제하려는 마인드로 있었는데, 마침 날아오는 푸시가 있길래 그걸 클릭하고 '이 사이트에서 알림 차단'을 눌렀더니 웬걸... 대놓고 '앱 알림 받기' 목록에 그게 사이트명까지 포함되어서 생기더라구요? 이..

정보/Windows 2019.11.03

윈도우 10(~RS3)에서 IEEE1394 커널 디버깅하기

2019-08-21 수정: 윈도우 10 Redstone 3(빌드 1709)까지만 지원됩니다. Redstone 4(빌드 1803)에서는 동작하지 않습니다. 대안으로 나중에 KDNET을 이용한 네트워크 기반 커널 디버깅 방법에 대해서 소개할 예정입니다. 며칠을 붙잡고 헤메던 문제, 혹시나 누군가 같은 상황을 겪을까봐 올려봅니다. 호스트 PC와 타겟 PC의 주요 사양은 다음과 같습니다. 호스트 PC는 디버거를 실행하고 디버깅을 진행 할 PC, 타겟 PC는 디버깅을 당하는 디버기(Debuggee)가 되는 PC입니다. 호스트 PC : NEXT-1394VT EX, Windows 10 19H1 (1903, 18362.295) 타겟 PC : NEXT-1394TI, Windows 10 Redstone 3 (1709, 1..