프로그래밍(178)
-
자바, C++ enum
C++ 에서는 다음과 같이 enum 타입을 선언하고, enum GeoSystem { kGeographic = 0, kTmWest = 1, kTmMid = 2, kTmEast = 3, kKatec = 4, kUtm52 = 5, kUtm51 = 6 }; 다음 배열을 선언해서 사용하는 것이 가능 합니다. double m_arScaleFactor[7]; ... m_arScaleFactor[kGeographic] = 1; 하지만, 자바에서는 약간 다른 방식을 사용 해야 한다는 것입니다. 다음과 같이 enum 을 선언하고, enum GeoSystem { kGeographic(0), kTmWest(1), kTmMid(2), kTmEast(3), kKatec(4), kUtm52(5), kUtm51(6); private..
2022.04.10 -
[C#] 바이너리 파일 표시기 만들기 - ByteViewer 클래스
바로 전 글에서 파일에서 BOM 표시를 제거 하는 예제를 만들어 보았습니다. https://tobee.tistory.com/10 BOM 문자 제거하기 https://www.rgagnon.com/javadetails/java-handle-utf8-file-with-bom.html Real's How-to Real's HowTo : Useful code snippets for Java, JS, PB and more www.rgagnon.com XML 파일을 파싱하려다 보니 너무 많.. tobee.tistory.com 그럼 이 BOM이 파일에서 제거 되었는 지 여부를 확인 해야하는 데요. 파일의 첫 머리 몇 바이트를 점검 해 보면 되는 바이기 때문에 간단히 프로그램을 하나 만들어 보면 어떨까 합니다. 다음 사..
2022.04.10 -
[자바]파일에서 BOM 문자 제거하기
https://www.rgagnon.com/javadetails/java-handle-utf8-file-with-bom.html Real's How-to Real's HowTo : Useful code snippets for Java, JS, PB and more www.rgagnon.com XML 파일을 파싱하려다 보니 너무 많이 걸리는 것이 이 Byte Order Mark이다. XML 파서 라이브러리를 사용하면 xml 파싱 전에 이 BOM 때문에 오류를 발생 시키는 것이었다. 아래 표는 가장 일반적으로 사용되는 BOM 내용 입니다. 바이너리 형태를 볼 수 있는 텍스트 편집기에서 열어보면 보이는 말그대로 Byte Order를 식별 해 줄수 있도록 하는 헤더정보인데 웹시스템 특히나 유닉스나 리눅스에서 구..
2022.04.10 -
Win32 어셈블리 프로그래밍 - 4. 텍스트 그리기
텍스트 그리기 이론: Windows의 텍스트는 GUI 객체 유형입니다. 각 문자는 뚜렷한 패턴으로 함께 묶인 수많은 픽셀 (점)로 구성됩니다. 이것이 "글쓰기"라고 말하는 대신 "그리기"이라고 불리는 이유입니다. 일반적으로, 당신은 자신의 클라이언트 영역에 텍스트를 칠하고 있다고 보시면 됩니다 (사실, 클라이언트 영역 밖에서 칠할 수 있지만 그것은 또 다른 이야기가 될 것입니다). Windows에서 텍스트를 화면에 놓는 것은 DOS와 크게 다릅니다. DOS에서는 80x25 크기로 화면을 생각할 수 있습니다. 그러나 Windows에서는 여러 프로그램에서 화면을 공유합니다. 프로그램이 서로의 화면을 덮지 않도록 일부 규칙을 적용 해야 합니다. Windows는 각 윈도우의 스크린 영역을 자체 클라이언트 영역으..
2022.04.04 -
Win32 어셈블리 프로그래밍 - 3. 간단한 윈도우
단순 윈도우 만들기 이 자습서에서 우리는 데스크톱에 완벽하게 작동하는 윈도우를 뿌려주는 Windows 프로그램을 작성 할 것입니다 이론: Windows 프로그램은 GUI 용 API 기능들에 크게 의존합니다. 이 접근 방식은 사용자와 프로그래머 모두에게 이득을 줍니다. 사용자는 새로운 프로그램의 GUI를 탐색하는 방법을 배울 필요가 없으며 Windows 프로그램의 GUI도 비슷합니다. 프로그래머에게는 GUI 코드가 이미 테스트되고 사용할 수 있도록 준비가 되어 있다는 것입니다. 프로그래머에게 단점이 될 수 있는 것은 복잡성이 증가한다는 것입니다. 윈도우, 메뉴 또는 아이콘과 같은 GUI 객체를 생성하거나 조작하려면 프로그래머가 엄격한 레시피를 따라야 합니다. 그러나 이는 모듈(식) 프로그래밍이나 OOP 패..
2022.04.04 -
Win32 어셈블리 프로그래밍 - 2. 메시지 박스
MessageBox 이번에는 윈도우즈 API를 사용해 본다. 메시지 박스는 여러개의 동적 라이브러리 안에 존재한다. 예를 들어 kernel32.dll, user32.dll and gdi32.dll 같은 것들이다. Kernel32.dll 는 메모리와 프로세스를 조작 할 수 있는 API 함수를 포함하고 있으며, User32.dll 는 사용자 인터페이스 면을 조정한다. Gdi32.dll 는 그래픽 조작 등을 책임진다. 윈도우 프로그램은 이런 주요 DLL들을 동적으로 링크하여 구동하게 되는 것이다 하지만 일반적으로 이 DLL 들을 다 포함 할 수 없기 때문에 실행 파일 내에서 이런 DLL이 어디에 포함되어 있는 지 정보 정도는 있어야 한다. 이게 바로 라이브러리를 임포트 하는 이유다(import librar..
2022.04.04