Wednesday, September 1, 2021

갑자기 Step Into가 안될 때

요약: Short-circuit 당해서 그냥 step into 안 해버리는 경우가 있다.


원래 이랬던 프로그램을

void f1() { /* do something */ }

void f2() { }

void f3() {}

void f() {f1(); f2(); f3(); }

이것을 각 단계 별로 실행하다 한 번이라도 실패하면 바로 중단하기 위해서 bool을 리턴하게 바꿨다:

bool f1r() { /*Side effects*/ if(...) return true; else return false; }

bool f2r() { /*Side effects*/ if(...) return true; else return false; }

bool f3r() { /*Side effects*/ if(...) return true; else return false; }

그리고 중간에 모종의 이유로,
일단 f1, f2, f3를 무조건 다 실행시키고 b값을 마지막에 비교하기로 계획을 바꾼다(if(!b) return 주석화).

void f() {

 bool b = f1(); 

 // if(!b) return;  

 b = b && f2();

// if(!b) return;

 b = b && f3();

// if(!b) return;

// Do rest

}

그랬더니 f2, f3가 실행되지 않았다. 그래서 디버깅을 했더니 step into가 먹히지 않는 것이다!

 f1, f2, f3가 위치한 행에서 step into (F11)를 시도하면 break point를 무시한다. f1/f2/f3 내부에 break point를 둬도 무시한다.

그리고 더 무서운 것은 이것이 "intermittent"하게 일어난다는 것이다.
(사실 b = false일 때만 무시되는 것)




Visual studio 임시 파일 지우고 이것저것 해 보기 전에...

* 다른 함수에 대해서는 step into가 잘 작동하는 지 확인해 보자.

* 함수의 반환값은 무적권 별도의 변수로 저장하는 게 디버깅하기에 좋다.

* 원래의 의도와 다르게 뭔가를 사용할 때는 문제가 생기기 쉽다(...)


예전에도 이거 당했는데 또 당하면 매우 억울하다. 하하

Thursday, January 14, 2021

ListView에서 Column Headers 표시되지 않는다 왜?

외부 코드에서 ctrl-C ctrl-V로 가져온 경우에

OwnerDraw가 true가 아닌 지 확인해 보자. false로 바꾸면 잘 나올 것이다.

OwnerDraw==true인 경우 DrawColumnHeader, DrawItem, DrawSubItem events에 대한 handers 구현해야 한다.

Item/SubItem은 대개 스스로 구현하겠지만 header에 대해서는 default로 충분할 텐데,

        private void listView1_DrawColumnHeader(object sender, DrawListViewColumnHeaderEventArgs e)

        {

            e.DrawDefault = true;

        }


이전 프로젝트에서 OwnerDraw를 구현해 뒀다가 오랜만에 꺼내서 쓰려고 할 때 이런 일이 생길 수 있다.



그 밖에 흔히들 하는 실수는 

 * View property가 Details로 맞춰져 있지 않은 경우

 * listView1.Items.Clear() 하지 않고 listView1.Clear() 해 버리는 경우 

등이 있다.

Tuesday, December 29, 2020

Windows 10 20H2 업데이트 후 그림/동영상 파일 미리보기가 안 보인다면

 파일 탐색기 옵션에서 '미리 보기에 파일 아이콘 표시' 항목에 체크돼 있다면 해제한다.

기본값이 (미리보기 대신) 아이콘 표시로 바뀐 듯하다.



파일 탐색기 옵션은 제어판 항목 중에도 있고, 탐색기 창의 메뉴(보기 탭 속)에도 있다.



몇 달 간 포기하고 살다가 지금 고침 훠훠

Thursday, August 27, 2020

아이폰 핫스팟 USB 연결 Windows 10 설치 (iTunes 전체 설치 없이)

1. 아이튠즈 다운로드

https://www.apple.com/kr/itunes/download/


1-0) 흑우 같이 검정색 Get it from Microsoft 버튼 누르고 스토어 들어가지 말고

1-1) 아래로 내려가서 다른 버전을 찾고 있다면? Windows를 클릭

1-2) 앞의 Get it from MS 버튼이 지금 다운로드하기(64비트) 하늘색 버튼으로 바뀐다.

  (위아래로 오르락내리락 하게 만들었다 나쁜놈들...)

1-3) iTunes64Setup.exe 파일이 다운로드된다.


2. 압축 풀기

2-0) 혹시 exe 속을 열어볼 압축 프로그램이 없다면 하나 설치한다(eg, 7-zip).

2-1) 7-Zip Context menu에서 "iTunes64Setup\"에 풀기 선택

2-2) 열어 보면 여러 개가 있는데 이 중 필요한 것은

 * AppleApplicationsSupport64.msi

 * AppleMobileDeviceSupport64.msi

두 개다(2020년 8월 27일 현재. 예전에는 mobile device support만 설치해도 됐는데 ㅗ). 

차례대로 설치(오른쪽 클릭, 설치)한다.

 - AppleApplicationSupport64.msi를 설치하지 않으면 Apple Mobile Device Service 서비스가 시작하지 않는다.

2-3) Windows 재시작이 필요하다.


3. iPhone Wifi 끄고 핫스팟 켜고 PC에 연결하면 유선으로 연결된다.

# 왜 유선으로 연결하느냐 하면 

아이폰은 원래 Wifi 핫스팟이 간헐적으로 끊어지기 때문입니다(이 글을 쓴 목적).

원래 그렇게 쓰는 겁니다.





역병 같은 존재 iTunes (Windows 버전)

×

역병 같은 존재 Microsoft Store

= iTunes 전체 설치 

하는 흑우 없제?

Sunday, June 21, 2020

Javascript의 async를 보고 있으면

C++/C#의 virtual이 떠오른다.

그냥 function은 다 async라고 하면 되잖아.








Monday, March 18, 2019

Chrome App의 아이콘을 올바르게 표시하는 방법

크롬에서 웹앱의 바로가기를 만들어 데스크톱 앱처럼 쓰는 방법이 있다.

문제는 아이콘이 제대로 표시되지 않고 죄다 Chrome 아이콘으로 표시되는 것이다.

아주 간단한 방법이 있다.
BAT 파일을 만들고, 그 바로가기를 만들어 바로가기의 아이콘을 바꾸는 것이다.
(bat의 아이콘을 바로 바꿀 수 있으면 좋을 텐데, 그럴 수 없다.)

단점: 1) 크롬 웹앱이 아니라 별도의 데스크톱 앱(.bat)을 실행하는 것으로 인식되므로 타일 배경은 시스템 색으로 고정된다. 그런데 타일 배경은 크롬의 배경색(회색)이었으므로, 시스템 색으로 고정되느냐 회색으로 고정되느냐의 차이일 뿐이다. 2) Chrome Apps 폴더에 아이콘이 두 배로 생긴다.
.bat 파일의 바로가기(.lnk)를 만들기 전에, 원래의 .lnk의 이름을 바꿔야 이름 충돌이 생기지 않는다.

기존의 복잡한 방법(chrome.VisualElementsManifest.xml 지우기, chrome.exe 다른 이름으로 복사하기 등)은 크롬이나 Windows OS 업데이트 때마다 초기화되기 때문에 이 .bat 파일 만들기가 그나마 나은 방법인 것 같다.

Thursday, March 14, 2019

De Quervain의 발음에 대하여

노뼈붓돌기힘줄윤활막염[드퀘르벵](Radial styloid tenosynovitis[de Quervain])

용어에 웬만하면 사람 이름 붙이지 말자는 그런 얘기는 건너뛰기로 하고...
상병코드 일람표 등에 나오는 '드퀘르벵'이라는 표기에 대해서만 써 본다.

이 이름의 발음이 어려운 것은 아마 이 사람의 국적 때문일 것이다. De Quervain은 스위스 사람이었는데, 스위스는 공용어만 4개인(프랑스어, 독일어, 이탈리아어, ...) 나라이다. 또 그의 first name은 Fritz여서 모국어로 뭘 썼는지 후대인으로서는 알 수가 없다(20세기 초반 학회에서 본 분이 계시다면 제보 바람). Von이 아니라 de가 붙은 걸 보면 조상은 프랑스계인 것 같긴 한데 후손이 모국어가 꼭 같으라는 법은 없으니 알 수 없다.

아무튼 상병코드 일람표 등에 나오는 '드퀘르벵'은 '헤르미온느' 급으로 애매한 표기라 할 만하다. 
프랑스어를 가정하고 읽는다면 [də kɛʁvɛ̃]으로, 통상적인 프랑스어 발음 규칙 그대로다.*
한글로 억지로 옮긴다면 드 께흐방 (외래어 표기법에서 허용하는 정도로 타협한다면 케르벵/뱅 정도**) 정도 될 것이다.
영어 식으로 읽으면 (어차피 잘못 읽는 거지만) 더(드) 쿼r베인 ("kwer-vein") 정도 될 것이다.
즉, quer의 u sound를 살리고자 한다면 마지막 음절이 벵이 될 수 없다는 얘기다.

* g/q -ue-의 u는 발음 안 한다. 스페인어(Miguel미겔, Rodriguez로드리게스)나 이탈리아어에도 비슷한 규칙이 있다. e/i 앞에서 g가 j sound가 나기 때문에 g sound를 구분하기 위해서 u를 쓴 데서 비롯했을 것이다. Diacritic 붙은 Güell은 구엘이다.
** 1) 무성음에 된소리를 쓰지 않고 거센소리만 사용, 2) r은 그냥 ㄹ로 씀(포르투갈어 Ronaldo는 호나우도라고 잘 쓰면서 왜 프랑스어에만 고집을 부리는지는 알 수 없지만 그냥 넘어가자). 3) ɛ̃은 실제로는 앵보다는 앙에 가깝게 들리는데, 이유는 모르지만 발음기호도 저렇게 쓰고(a가 아니라 epsilon 모양 위에 ~를 올려놓음), 한국의 외래어 표기법도 '앵'으로 옮기게 돼 있다. 그래서인지 Moulin rouge의 옛날 버전들은 '물랭루주'로, 비교적 최근의 영화는 '물랑루즈'로 번역돼서 나왔다(이건 영화가 프랑스 영화가 아니어서 그럴 수도 있다).

# 이 질환의 검사법으로 나오는 Finkelstein test의 Finkelstein도 성은 저래 보여도 first name이 "Harry"인 New York 출신 미국인이기 때문에 아마 휭켈슈타인이 아니라 핑클스틴일 것이다.

iOS26 거울 아이콘

오래 전에 iPhone을 기울이면(tilt) 아이콘이 살짝 움직이는 업데이트가 있었다. Motion toggle이라고 한다... (Reddit 포스트조차 5년 전이다) https://www.reddit.com/r/jailbreak/comments/gg...