728x90

지음 : 배나영
펴냄 : 한빛라이프

코로나 때 국내 여행 다녀볼려고 샀던 책인데 시간이 안나서 읽다가 말았었다. 다시 여유가 생겨서 읽어봤는데 국내여행은 차가 없으면 다닐만한 곳이 광역시 급이 아니면 힘들 것 같다. 

유툽이나 sns 를 통해 여행 영상이나 사진을 보다보니 정보만 나열되어 있는 여행 서적보다는 상상력을 자극하는 여행 에세이가 더 마음이 간다.

728x90

기본적인 cpu 사용량은 작업 관리자를 통해 눈으로 확인할 수 있다.

왼쪽에서 '세부 정보' 탭을 선택해 프로세스 명, PID 등도 같이 확인할 수 있다.

https://learn.microsoft.com/en-us/sysinternals/downloads/process-explorer

 

Process Explorer - Sysinternals

Find out what files, registry keys and other objects processes have open, which DLLs they have loaded, and more.

learn.microsoft.com

그래프 형태로 확인하고 싶다면 Microsoft Sysinternals Process Explorer 를 이용하면 된다.

해당 프로세스에 마우스 오른쪽 버튼 메뉴에서 'Properties...' 선택 후

Performance Graph 탭에서 CPU Usage History 를 통해 확인할 수 있다.

성능 모니터(perfmon) 을 통해 측정할 수도 있다.

상단의 녹색 + 버튼을 눌러 카운터 추가 창을 띄운다. Process > % Processor Time 을 선택하고 모니터링할 프로세스를 선택하고 추가 버튼을 누르고 확인 버튼을 누른다.

아래쪽에 추가된 카운터가 표시되고 그래프 형태로 확인할 수 있다.

728x90

자주 사용하는 키캡 일부가 벗겨졌다.

키캡 알아보다가 K8 레트로 교체 세트가 있길래 주문했다.

키캡 프로파일이라는 걸 이번에 알게 됐는데 기존이 OEM 이길래 OEM 제품으로 골랐다.

와이어 리무버 보다는 풀러 리무버가 작업하기 편했다.

냥이 털이 장난 아니다.

대충 청소하고 새 키캡으로 교체했다. 문구가 마음에 안들어서 alt(한/영), 백스페이스, 엔터는 예전 키캡을 다시 사용했다.

728x90

오랜만에 서울둘레길을 걸었다. 당고개 주변을 도는 1-2는 내키질 않아서 당고개역에서 화랑대역을 걷는 1-3을 걸었다.

당고개 1번 출구로 나와서 불암산 둘레길 방향을 따라가 철쭉동산 방향으로 가면 된다.

철쭉 시즌도 슬슬 끝나가나보다.

철쭉공원에 스탬프가 있다. 요새는 QR 코드도 있었다.

6.6 km 정도 거리인가 보다.

오랜만에 산행이라 계단 올라갈 때 힘들었지만 전체적으로 쉬운 코스였다.

가는 길에 전망대가 있다. 엘레베이터가 있길래 뭔가 싶었는데 휠체어로도 올라올 수 있는 길이 있었다.

남산 타워도 롯데 타워도 보이지 않아 도심 뷰는 별로였다.

산쪽 뷰가 괜찮았다.

이런 코스로도 다리가 후덜거렸지만 어쨌든 화랑대역까지 무난히 완주했다.

화랑대역 근처 경춘선숲길을 따라 공릉동 도깨비시장에 가서 가볍게 분석으로 하루를 마무리했다.

서울둘레길도 1-2, 8-1 ~ 8-5 까지 6구역밖에 안남았는데 집 밖을 나갈 마음 먹는게 쉽지 않다.

728x90

윈도우즈에서 dll, exe, lib, obj 등 바이너리 빌드에 사용한 Visual Studio 버전을 확인하고 싶을 때가 있다.

> dumpbin /?
Microsoft (R) COFF/PE Dumper Version 14.33.31629.0
Copyright (C) Microsoft Corporation.  All rights reserved.

사용법: DUMPBIN [options] [files]
...

dumpbin 이라고 visual studio 에 포함된 프로그램을 이용할 수 있다.

> dumpbin /dependents test.exe
Microsoft (R) COFF/PE Dumper Version 14.33.31629.0
Copyright (C) Microsoft Corporation.  All rights reserved.


Dump of file test.exe

File Type: EXECUTABLE IMAGE

  Image has the following dependencies:

    KERNEL32.dll
    MSVCP140D.dll
    WS2_32.dll
    VCRUNTIME140D.dll
    VCRUNTIME140_1D.dll
    ucrtbased.dll

  Summary

        ...

exe 나 dll 같은 경우 dumpbin /dependents 를 이용해 VCRUNTIMMxxx.dll 을 통해 빌드에 사용된 버전을 추론할 수 있다.

> dumpbin [binary file] /rawdata | find "_MSC_VER"
> dumpbin test.obj /rawdata | find "_MSC_VER"
  00000010: 43 48 3A 22 5F 4D 53 43 5F 56 45 52 3D 31 39 30  CH:"_MSC_VER=190

lib 나 obj 파일은 dumpbin /rawdata 결과에서 _MSC_VER 을 찾는 방식인데 짤려서 검색이 안되거나 결과가 제대로 안보일 수 있다.

$ strings test.obj | grep -Po '_MSC_VER=\d+'
_MSC_VER=1900

linux 명령어인 strings 를 통해 _MSC_VER 를 찾는게 더 깔끔하게 보인다.

> sls -Ca '_MSC_VER=\d+' .\test.obj |% {$_.matches} | select value

Value
-----
_MSC_VER=1900

powershell 명령어로도 동일하게 할 수 있다.

출처 : https://stackoverflow.com/questions/20503675/detecting-the-msc-ver-of-a-lib

 

Detecting the MSC_VER of a lib

I have a code base that I am compiling in to a library. Normally I would send the library as MSVC++ 10.0 _MSC_VER == 1600 (Visual Studio 2010) but my customer is asking for it as MSVC++ 11.0 _MSC_V...

stackoverflow.com

 

728x90

명령줄 실행 시 기본적으로는 해당 실행파일의 경로가 표시된다.

title 명령어를 사용하면 명령줄 이름을 바꿀 수 있다.

>start /?
지정한 프로그램이나 명령을 실행할 수 있도록 별도의 창을 시작합니다.

START ["title"] [/D path] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]
      [/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL]
      [/NODE <NUMA node>] [/AFFINITY <hex affinity mask>] [/WAIT] [/B]
      [/MACHINE <x86|amd64|arm|arm64>][command/program] [parameters]

    "title"      창 제목 표시줄에 나타낼 제목입니다.
    ...

start 명령어를 사용해 프로그램이나 배치파일을 실행할 경우 start 명령어 다음에 "title" 로 적어주면 된다.

728x90

장애 상황 테스트를 위해 프로세스를 멈췄다가 실행할 일이 생겼다. 

콘솔 프로그램이라서 예전처럼 드래그하면 멈출 줄 알았는데 윈도우즈11 명령창은 멈추지 않았다.

예전엔 작업관리자에 Suspend 같은게 있었던 것 같은데 윈도우즈 11에서는 없었다.

https://stackoverflow.com/questions/11010165/how-to-suspend-resume-a-process-in-windows

 

How to suspend/resume a process in Windows?

In Unix we can suspend a process execution temporarily and resume it with signals SIGSTOP and SIGCONT. How can I suspend a single-threaded process in Windows without programming ?

stackoverflow.com

검색해보니 아래와 같은 방법들이 있었다.

1. SuspendThread, ResumeThread / NtSuspendProcess / DebugActiveProcess 를 이용하는 프로그램 만들기
2. Invoke-WindowApi 를 통해 DebugActiveProcess 를 호출하는 PowerShell Script 만들기
3. SysInternals 의 Process Explorer 이용하기

Process Explorer 를 이용하는 방식이 제일 간편했다. 프로세스 목록에서 대상 프로세스 선택 후 오른쪽 마우스 메뉴에서 Suspend / Resume 을 선택하면 된다.

728x90
// a.cpp

const std::string STR_A = "abcd";

// b.cpp

B g_b;

B::B()
{
	std::cout << "B::B()" << std::endl;
	std::cout << "a : " << STR_A.c_str() << std::endl;
	
	v = STR_A;
}

void B::testFunc()
{
	std::cout << "B::testFunc()" << std::endl;
	std::cout << "v : " << v << std::endl;
}

// main.cpp

int main()
{
	g_b.testFunc();
}

a.cpp : STR_A 라는 글로벌 변수가 있다.
b.cpp : g_b 라는 글로벌 변수가 있는데 STR_A 를 사용한다.
main.cpp : main 에서 g_b 를 사용한다.

$ g++ -c a.cpp b.cpp c.cpp
$ g++ a.o b.o c.o
$ ./a.out
B::B()
a : abcd
B::testFunc()
v : abcd

컴파일하고 링크했을 때 g_b 가 잘 초기화된 걸로 보인다.

$ g++ b.o a.o c.o
$ ./a.out
B::B()
a :

하지만 오브젝트 파일 순서를 바꿔서 링크하면 main 호출 전에 crash 가 발생한다. STR_A 가 초기화 되기 전에 g_b 가 사용하려고 해서 access violation 이 발생한 것 같다.

g++ 은 입력된 object 순서대로 link 된 것 같은데 컴파일러마다 순서가 다를 수도 있으니 주의하자.

참고 : https://isocpp.org/wiki/faq/ctors#static-init-order

 

Standard C++

 

isocpp.org

 

728x90

바디 제품을 최근까지 멤버쉽 유지 때문에 이니스프리 제품을 주로 사용했는데 좋아하던 자몽향도 품절이고 새로운 향도 안나와서 시들해졌다.

록시땅 버베나 제품은 호텔 어메니티로 처음 접해봤는데 상큼한 향이 마음에 들었다. 계속 망설이다가 날씨가 따뜻해진 김에 생각나서 구매했다.

예전 명칭은 레몬 버베나 였던 것 같은데 매장가서 보니깐 시트러스 버베나 제품이 나와서 그런지 버베나라고 바뀌어 있었다. 버베나 샤월 젤은 레몬버베나 잎 추출물(0.0995%)이 들어가는데 시트러스 버베나 제품은 레몬버베나 잎 추출물(0.0004%)을 줄이고 왕귤수, 레몬버베나꽃추출물(0.1%) 중심으로 향을 잡았나 보다. 시트러스 버베나도 괜찮았지만 전에 사용해본 버베나 제품을 골랐다.

땀 흘리고 나서 샤워할 때 상큼한 향 덕분에 기분이 개운하다.

728x90

+ Recent posts