MySQL LIKE연산시 \(Escape Backslash) 처리 방법

SELECT * FROM `table` WHERE `path` LIKE "%C:\\ABC\\DEF%";   위와 같은 쿼리를 날리면 빈 응답만이 돌아올 겁니다. LIKE 연산자를 사용할 경우엔 백슬래시를 네 번 써줘야 정상적으로 작동합니다. SELECT * FROM `table` WHERE `path` LIKE "%C:\\\\ABC\\\\DEF%";

DevExpress LayoutContromItem 안의 컨트롤 사이즈 꽉 채우기

  LayoutControlItem의 속성에 SizeConstraintsType을 Custom으로 변경하고 MaxSize를 0, 0으로 조정하신 뒤 컨트롤의 Properties - AutoHeight 속성을 False로 변경하시고 Anchor를 조정하고 원하는 사이즈로 조정하시면 됩니다.

DevExpress GridControl 현재 선택된 Row 가져오기

GridControl을 생성하면 자동으로 gridView1이 생성됩니다. 만약 커스텀 뷰를추가했다면 다른 뷰가 만들어졌겠죠. 바로 이 GridView.GetFocusedDataRow 메서드를 사용하면 현재 선택된 로우의 DataRow를 가져올 수 있습니다. DataRow currentRow = gridView1.GetFocusedDataRow(); var id = currentRow.Field ("id");

C# 남아도는 메모리에도 불구하고 OutOfMemoryException이 발생한다면?

이미지
  C# 코딩 중 평소 볼 수 없던 생소한 현상이 발생했습니다. 분명 메모리는 남아도는데(32기가바이트 중 26기가바이트 사용 가능) 프로그램이 돌다가 OutOfMemory 예외를 던지며 죽어버리는 현상이었죠. List 에 수많은 파싱된 데이터를 넣는 작업 중이었습니다.   그래서 메모리 프로파일러를 잘 관찰해보니 2GB의 메모리를 사용하면 무조건 뻗어버리는 현상을 발견했고, 왜 그럴까 생각해보다가 문득 예전 XP에서 4기가 메모리를 달아도 32비트 운영체제의 한계 아닌 한계로 3기가 조금 넘게밖에 인식을 못 했던 것이 생각났습니다. 생각은 자연스럽게 컴파일이 32비트로 됐구나! 쪽으로 넘어갔고 프로젝트 설정에 보니 빌드 항목에 해당되는 체크박스가 있더군요.   현재 메모리가 남아도는데도 OutOfMemory 예외가 뜬다면 100% 저게 체크된 상태일 겁니다. 그림과 같이 체크 해제 하신 후 실행하시면 특별한 경우가 아닌 이상 컴퓨터 메모리가 바닥날 때까지 저 예외를 볼 일 없게 될겁니다.

C# Invoke의 딜레이

  회사에서 서버와 클라간 통신 프로그램을 하나 짜는데 왠지 모르게 서버에서는 분명 제대로 1초에 약 16KB의 데이터를 정상적으로 보내는데도 불구하고 클라이언트에서 매 수신당 1초~1.5초의 딜레이가 생겨서 왜 그러나 찾아보니 어처구니 없는 실수를 했단 사실을 깨달았습니다.   서버에서 클라로 1초마다 16KB정도의 XML 데이터를 쏘는데, 데이터 엘리먼트가 약 90~110개 사이로 날아오고 이것을 파싱해 각 데이터 요소를 차트에 그려주는 작업을 클라이언트가 하게 되는 구조로 프로그램이 작성돼 있는데 루프를 돌기 전 Invoke를 호출하고 끝날 때 해제했어야 하는 것을 루프 안에서 매 데이터를 처리할 때마다 Invoke를 호출하는 구조로 작성 했던 것입니다. 하하... 미친...   때문에 초당 100번, 그것도 차트에 호출하는 동안 딜레이가 생겼고, 그 와중에도 소켓은 별도의 스레드에서 돌아가고 있기 때문에 소켓 버퍼는 데이터가 계속 쌓이고 있었죠. 그 결과 초당 1초에서 1.5초의 딜레이가 10초, 1분, 10분, 한시간동안 쌓이게 되고... 결국 더 이상의 자세한 설명은 생략한다.   Invoke를 루프를 돌기 전 걸어주니 완벽하게 해결됐습니다. C# Inovke의 딜레이 문제 앞으로 잘 생각해야겠네요...

디스플레이 색 교정 방법 (영상)

이미지
  색 교정의 특성상 영상으로는 차이를 확인할 수 없습니다. 영상에서 설명하는 걸 잘 들으시고 현재 자신의 모니터에 적용하시면 됩니다.

IntelliJ Idea에 JDBC Driver를 추가해도 ClassNotFoundException이 뜰 경우

이미지
  IntelliJ를 어제 설치하고 사용하는 중 SQLite를 쓸 일이 생겨서 SQLite JDBC 드라이버를 다운 받고 라이브러리에 추가한 후 웹 서비스를 시작해봤는데 ClassNotFoundException이 떠서 왜 그런가 찾다가 결국 방법을 알아내서 공유합니다.   해결 방법은 매우 간단합니다. 프로젝트 설정(기본값: Ctrl + Alt + Shift + S)에 들어가셔서 Problems 항목의 sqlite jdbc 드라이버 관련 문제를 Fix해주면 됩니다. 참 쉽죠?