본문 바로가기

프로그래밍

C++11 새로운 Rand 함수를 써보자 이전의 rand()함수의 문제점은 난수함수의 최대 문제점인 데이터가 고르게 분포되지 않다는 점이,, 라고 한다라고 하지만, 가장 큰 문제점은 전역함수이므로 시드값을 프로그램 전체가 공유한다는 점이다. 때문에 사용자가 모르는 사이에 어디선가 호출이 되고, 시드가 변경되는 것을 컨트롤 하기가 다소 불편한점 있었다. static long holdrand = 1L; void srand(unsigned int seed) { holdrand = (long) seed;} int rand() { return (((holdrand = holdrand * 214013L + 2531011L) >> 16) & 0x7fff);}// 기존의 난수함수는 시드값이 전역변수라는게 문제였다! 대체방안으로 메르센 트위스터(MT.Merse.. 더보기
메모장 프로그램 후기 7~8년전에 MFC로 간단한 메모장을 제작을 해보았다. 당시엔 데이터파일을 암호화해서 보안이라는 요소를 첨부한 간단한 메모장 컨셉이었는데.. 사실 여러가지 문제가 있어서 완성은 하였지만, 사용도 거의 안해보고 한동안 쳐다보지 않았다. 그러다가 얼마전 우연한 기회에 다시 유물이 된 프로젝트를 열어 보았고, vs2015로 마이그레이션 하면서 조금 손을 보았다. UI는 완전 다 갈아버려 최소한의 메뉴버튼만 남겨놓았다. 암호파일 관리문제는 zip라이브러리를 사용하였고, 간단한 컨트롤 제어도 생각이 나지않아 msdn 참조와 구글링을 얼마나 했는지 모르겠다. 암튼, 짬짬히 조금씩 다듬어 얼추 사용할만한 수준이 되어 공개를 해본다;; 소스코드도 공개를 할까 생각중이었는데, 워낙 급하게 짜는 바람에 엉망진창이 되어버려.. 더보기
초간단 메모장 - 마이메모 윈도우 메모장을 대체할 초간단 메모장 - 마이메모에 대한 간단한 설명입니다. 광고 그딴거 없고 완전 무료입니다 파일사이즈: 약 1.1mb (zip파일) 첨부파일은 인스톨이 필요없는 미설치버전 파일입니다. 1. 파일 로드, 저장기능메뉴버튼 또는 드래그앤 드랍을 통해 로딩이 가능합니다.메뉴버튼 또는 CTRL+S 단축키로 저장이 가능합니다. 2. 드래그 앤 드랍기능파일을 끌어다 메인창에 놓으면 로딩이 됩니다. 3. 폰트 변경가능옵션을 통하여 다양한 폰트를 사용할 수 있습니다. 4. 폰트사이즈 변경가능옵션 또는 CTRL + 마우스휠 로 사이즈를 마음껏 변경할 수 있습니다. 5. 폰트색깔 및 배경색 변경폰트색깔과 배경색을 변경할 수 있습니다. 6. 반투명 모드 지원상단 슬라이더바 또는 ALT+마우스휠 로 조절이 .. 더보기
닷넷프레임워크 버전확인 방법(.NET Framework Version) 자신의 PC에 설치된 .NET 프레임웍크 버전을 확인 하는 방법은 다음과 같다. 1. dir %windir%\Microsoft.NET\Framework | findstr DIR (콘솔창) 2. %systemroot%\Microsoft.NET\Framework (원도우명령어) 두가지 중 하나를 사용하면 된다. 더보기
string::shrink_to_fit C++11 부터 std::string 에 shrink_to_fit() 이라는 함수가 추가 되었다. resize() 가 말그대로 size를 줄인다면, shrink_to_fit() 는 capacity를 줄이는 함수이다. 따라서 문자열을 축소할때 resize와 shrink_to_fit를 동시에 사용하면 실제 길이와 용량을 적절하게 줄일 수 있다. 그런데, shrink_to_fit 를 호출한다고 해서 반드시 capacity가 size와 일치하지는 않는다. VC에서 string의 기본메모리인 15이하는 줄어들지 않으며, 실제테스트 해 본 결과, 약간의 버퍼를 유지하고 있다. Shrink to fitRequests the string to reduce its capacity to fit its size. The r.. 더보기
WINVER 정의 Minimum system requiredMinimum value for _WIN32_WINNT and WINVERWindows 8.1_WIN32_WINNT_WINBLUE (0x0602)Windows 8_WIN32_WINNT_WIN8 (0x0602)Windows 7_WIN32_WINNT_WIN7 (0x0601)Windows Server 2008_WIN32_WINNT_WS08 (0x0600)Windows Vista_WIN32_WINNT_VISTA (0x0600)Windows Server 2003 with SP1, Windows XP with SP2_WIN32_WINNT_WS03 (0x0502)Windows Server 2003, Windows XP_WIN32_WINNT_WINXP (0x0501)OS 마다 .. 더보기
C++ 컴파일오류 빌드오류 링크 https://msdn.microsoft.com/ko-kr/library/8x5x43k7.aspx 에러 번호별로 링크가 달려 있다 더보기
Visual Studio 버전별 정보 - _MSC_VER 1000 : Visual C++ 4.x (4.0) 1100 : Visual C++ 5 (5.0) 1200 : Visual C++ 6 (6.0) 1300 : Visual C++ .NET (7.0) 1310 : Visual C++ .NET 2003 (7.1) 1400 : Visual C++ .NET 2005 (8.0) 1500 : Visual C++ .NET 2008 (9.0) 1600 : Visual C++ 2010 (10.0) 1700 : Visual C++ 2012 (11.0) 1900 : Visual C++ 2015 (14.0) 괄호안의 숫자는 컴파일러 버전 더보기
Visual Studio Selector 가 잘못된 버전을 실행할때 여러개의 VS 프로그램을 사용하고 있을때.. 예를 들면 VS2010, VS2012, VS2015 설치한 버전이 여러개일 경우, 솔루션파일을 실행하면 Visual Studio Selector 적절한 버전의 VS 프로그램을 가동시켜 준다. 그런데 분명히 2015버전으로 저장한 솔루션파일이 잘못된 버전 예를 들면 2012로 가동되는 경우가 생긴다. 보통 sln파일이 미묘하게 손상되었을 경우 이런 현상이 발생하는데.. 해결책은 간단하다. 원하는 버전으로 실행시킨 다음 sln파일을 살짝 수정하여 재저장하면 해당 버전으로 저장이 된다. 다시 sln파일을 누르면 마지막으로 저장이 되었던 버전으로 로딩이 된다. 끝. 더보기
VS2012 에서 VS2015 마이그레이션(Migration) 현재 개발하고 있는 프로젝트의 vs2012 -> vs2015 마이그레이션은 그다지 어렵지 않았다. 먼저 hashmap 에서 걸리는 부분은 _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS 매크로 추가 back_inserter 인식문제로 헤더 추가 그리고 외부라이브러리 에서 몇개 수정할 필요가 있었는데, 오픈소스인 FreeFont Library를 vs2015에서 빌드하여 static lib 를 다시 만들었다. 그밖에 보안모듈에서는 해당업체에 vs2015버전을 달라고 요청하여 받아 적용. 마지막으로 인라인함수인데.. 헤더 선언부에는 inline 키워드가 없는데, 정의부 cpp에는 키워드가 있는경우 릴리즈에서 링크에러가 발생하여 이부분 수정. 끝. 더보기