mhchoi8423의 등록된 링크

 mhchoi8423로 등록된 티스토리 포스트 수는 159건입니다.

[MariaDB(MySQL)] SELECT COUNT(*) 의 수행 속도 개선 방법 [내부링크]

PRIMARY KEY와 똑같은 필드로 인덱스를 중복해서 만든다 참고 : https://blog.naver.com/birdparang/221574304831

C++ 텔레그램 채널 [내부링크]

https://t.me/dailycpp

PyPI upload failed (403) 에러 해결방법 [내부링크]

[distutils] index-servers = pypi [pypi] repository: https://pypi.python.org/pypi username: password: 1. C:\Users\유저네임\.pypirc 파일 생성 후 위의 내용 입력 2. username / password 입력 2-1. (콘솔..

Get monday of current week [내부링크]

SELECT DATEADD(wk, DATEDIFF(wk, 0, GETDATE()), 0) 참조 : https://blog.sqlauthority.com/2007/08/20/sql-server-find-monday-of-the-current-week/

Remove all your local git branches except some branches [내부링크]

git branch | grep -v "master\|exceptbranch1\|exceptbranch2" | xargs git branch -D

SQL joins [내부링크]

출처 : http://blog.naver.com/gksshdk8003/220723307634

Visual Studio 에서 예외 확인하는 방법 [내부링크]

Visual Studio를 이용하여 catch 블록 내부를 디버깅하는 경우라면 조사식(watch) 창에 $exception을 입력하여 현재 발생한 예외가 무엇인지 확인할 수 있다. - CLR via C#

[Visual Studio] Useful Keyboard Shortcuts [내부링크]

CTRL + M + O will collapse all regions. CTRL + M + L will expand all regions. CTRL + K + D to format the entire document. CTRL + K + E to format the selection only.

Windows Server 2008 R2 시간 동기화 [내부링크]

* 일회용 1. Run > cmd 2. w32tm /resync 입력 후 실행 * 스케쥴링 1. Run > regedit HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\W32Time\TimeProviders\NtpClient\SpecialPollInterval 값 수정 60480..

MTU size 변경하는 방법 [내부링크]

1. Click the Windows button on the task bar. 2. Click All Programs. 3. Click Accessories. 4. Right-click on Command Prompt and click Run as administrator. 5. If prompted click the Allow button. 위의..

4 Ways to Ignore Files with Git [내부링크]

다른건 필요없고 딱 내가 원했던 명령어 git update-index --assume-unchanged [filename] 참고 : http://codethug.com/2013/09/20/4-ways-to-ignore-files-with-git/

Batch 파일에서 다음줄이 실행되지 않을때 [내부링크]

배치파일을 이용해서 cd 로 폴더를 옮기고 원하는 파일을 실행하고 다른 폴더로 또 옮겨서 파일실행을 하다가 다음 문장이 실행이 안되는 문제를 겪었는데 구글링 끝에 해답을 얻음 "앞에 call 을 붙여준다." 참고..

git checkout specific directory (sparse checkout) [내부링크]

repository 에서 특정 폴더만 내려받고 싶을때 그럴때!! * git init <repository> * cd <repository> * git remote add -f origin <URL> - [-f] : fetch the remote branches * git checkout <branch> * git confi..

nbtstat command [내부링크]

cmd 창에 nbtstat -a [computer name] nbtstat -a [IP address] 컴퓨터 이름이나 아이피 주소를 입력하면 해당 정보로 네트워크 내 연결 정보를 조회할 수 있다 출처 : https://technet.microsoft.com/en-us/libra..

How do I check programmatically whether a network drive has been mapped? [내부링크]

Windows 10 을 설치하고 기존에 DriveInfo.GetDrives() 로 잘 가져오던 네트워크 드라이브 정보를 못가져오는 사태가 발생해서 구글링 (탐색기로 네트워크 드라이브 연결함) cmd 창에서 드라이브 마다 요 net use..

Why the cross-threading exception raises only when debugging? [내부링크]

Windows Forms Application 개발시 Debug 모드일때만 Cross-thread operation not valid: ??? Control accessed from a thread other than the thread it was created on. 이라는 예외가 발생한다면 CheckForIlleg..

GitHub line ending problem [내부링크]

GitHub 로 PR 을 날리면 line ending 문제로 아래 그림처럼 x같이 나오는 경우가 있는데 <이미지 출처 : http://www.hanselman.com/blog/YoureJustAnotherCarriageReturnLineFeedInTheWall.aspx> cmd 창에 아래..

프로그램 vs 백그라운드 서비스 (프로세서 사용 계획) [내부링크]

Windows NT부터 Windows 7에서 까지 ‘시스템 속성 > 성능 > 설정 > 성능 옵션 > 고급 > 프로세서 사용 계획’에 ‘프로그램’과 ‘백그라운드 서비스’ 옵션 두 가지 중 하나를 사용자가 선택할 수 있습니다. 이..

How to get time between two dates in sql [내부링크]

참조 : https://msdn.microsoft.com/en-us/library/ms189794.aspx DATEDIFF(datepart, startdate, enddate) 를 이용한다 ex) DATEDIFF(s, '2016-04-27 12:00:00', '2016-04-27 12:00:30') 은 30을 리턴한다

How to remote control windows firewall via CLI [내부링크]

netsh advfirewall firewall set rule [name=<string>] [dir=in|out] new [enable=yes|no] [remoteip=<address>] 위 명령어로 제어가 가능하다 [name=<string>] : rule name [dir=in|out] : direction (inbound or..

TortoiseGit 에서 fetch 후 rebase dialog 가 자동으로 열리지 않을 때 [내부링크]

regedit 를 실행 HKEY_CURRENT_USER\Software\TortoiseGit 에 OpenRebaseRemoteBranchUnchanged 키를 지우면 다시 자동으로 열것인지를 물어본다 출처 : https://gitlab.com/tortoisegit/tortoisegit/issues/2653

엔터 키 눌렀을 때 소리(비프음, 띵) 안나게 하기 [내부링크]

Check out the Form.AcceptButton property 출처 : http://stackoverflow.com/questions/6290967/stop-the-ding-when-pressing-enter

ListBox, ListView, TextBox 의 자동스크롤 (Auto Scroll) [내부링크]

* ListBox - listBox1.TopIndex = listBox1.Items.Count - 1; * ListView - listView1.Items[listView1.Items.Count -1].EnsureVisible(); * TextBox - tbMessage.SelectionStart = tbMessage.Text.Length; - tbMe..

ListBox 와 ListView 의 차이 [내부링크]

가장 큰 차이는 ListView 는 멀티컬럼이 된다는 것!

Windows Forms 의 Startup 과 Shutdown 이벤트 순서 [내부링크]

* When a Windows Forms application starts - Control.HandleCreated - Control.BindingContextChanged - Form.Load - Control.VisibleChanged - Form.Activated - Form.Shown * When an application closes - Fo..

TortoiseGit 에서 Username, Password 저장하기 [내부링크]

_netrc 라는 이름의 파일을 (확장자 없음) C:\Users\<Your-Username> 폴더에 생성하고 내용으로 machine github.com login <Username> password <Password> 입력하고 저장 명령 프롬프트 창을 열고 setx home C:\U..

Debug.Assert and Debug.Fail [내부링크]

Debug.Assert(bool condition) { if (condition == false) Debug.Fail(); } 위와 같단다

다른 컴퓨터 정보 가져오기 [내부링크]

http://www.codeproject.com/Articles/8804/Collecting-Remote-System-Information-With-WMI System.Management 를 References 에 등록하고 ManagementScope class 를 이용하여 구현

ref 와 out 차이 [내부링크]

ref 는 메소드 호출 전에 초기화 해야되고 out 은 메소드 내에서 반드시 한번은 값을 할당해야한다 속도(Performance) 테스트 결과 out 을 쓴 경우가 더 빠른 것으로 나타남 (.NET 4.0 기준)

How to use GNU licenses for your own software [내부링크]

출처 : http://www.gnu.org/licenses/gpl-howto.html

Open Source Software License Guide [내부링크]

출처 : https://wiki.kldp.org/wiki.php/OpenSourceLicenseGuide

Macros for Build Commands and Properties [내부링크]

Macro Description $(RemoteMachine) Set to the value of the Remote Machine property on the Debug property page. SeeChanging Project Settings for a C/C++ Debug Configuration for more information. $(Re..

Singleton Pattern [내부링크]

5. 싱글턴 패턴 싱글턴패턴은 인스턴스가 하나 뿐인 특별한 객체를 만들 수 있게 해주는 패턴이다. 어떤 용도로 쓰는 건가? 스레드 풀이라던가, 캐시, 대화상자, 사용자설정, 디바이스드라이버 등등 객체가 전체프..

순열(Permutation)과 조합(Combination) [내부링크]

확률을 계산하려면 경우의 수를 헤아려야 한다고 했습니다. 전체의 갯수 n개에서 일부의 r개를 뽑을 때, 뽑는 순서를 고려해야 하는 지와 고려하지 않아도 되는 지를 구별하는 것은 중요합니다. (같은 의미로 r개..

How to detect programmatically whether you are running on 64-bit Windows [내부링크]

※ C++ 소스 코드 상에서 현재 윈도우가 32bit 버전인지 64bit 버전인지 구분하는 방법에 대한 자료는 검색해보면 금방 구할 수 있습니다. 근데 그 중 많은 자료들이 IsWow64Process 함수 하나만 가지고 64bit 여..

async, await를 이용한 비동기 프로그래밍 [내부링크]

VisualStudio 2012, .NET Framework 4.5부터 지원하는 대표적인 기능 중 하나가 바로 비동기 프로그래밍 입니다. 여기서는 비동기 프로그래밍이 무엇인지 정리 드리고자 합니다.. 비동기가 왜 필요할까? 웹 2.0 시..

int64_t 값 출력하기 [내부링크]

Windows 에서는 __int64 타입의 변수를 플랫폼(x86/x64)에 관계없이 printf("%I64d", val) 형태로 출력할 수 있다. Linux 에서는 플랫폼에 영향이 없이 처리할려면 고려할 사항들이 있다. x86에서는 long long int..

to read UTF-8 XML using TinyXML [내부링크]

#include <iostream> using namespace std; #include <atlstr.h> int main() { char* src = "한글"; // ANSI CP949 CA2W unicode1(src); // ANSI -> UNICODE CW2A utf8(unicode1, CP_UTF8); // UNICODE -> UTF8 CA..

FTP Active 모드와 Passive 모드 [내부링크]

1. Active Mode (1) 연결 진행 절차 - 1단계 : 클라이언트에서 서버의 TCP/21번 포트로 접속 시도 및 클라이언트가 사용할 두번째 포트를 서버에게 알려준다. (연결방향 : 클라이언트 → 서버) - 2단계 : 서버는 T..

update / insert 처리시 @@rowcount 사용하기 [내부링크]

하나의 프로시져로 입력과 수정을 같이 처리하는 경우가 종종 있는데 굳이 Update, Insert를 분기 처리 하지 않고 다음처럼 한번에 처리 할 수 있다. update table1 set column1 = @column1 where id = @id if @@r..

Named Pipe Server Using Overlapped I/O and Client [내부링크]

// NamedPipeServer.h #pragma once namespace EventType { enum EventType { Exit, Connect, Max }; } class NamedPipeServer { public: NamedPipeServer(LPCWSTR name); ~NamedPipeServer(); BOOL Start(); VOID..

Windows Named Pipe 구현 간단 정리 [내부링크]

Windows에서 Named Pipe를 실제로 사용하기 위해서는 Read/Write를 비동기적으로 처리해야 하는데, 이를 위해 흔히 사용되는 방법은 Overlapped I/O와 Event를 기반으로 하는 것입니다. 다시 말해서, 파이프를 생..

GetSystemMetrics [내부링크]

CreateWindow를 할때 보통 많이 쓰는 윈도우 스타일은 WS_OVERLAPPEDWINDOW이며 여기에는 크기 조정용 WS_THICKFRAME이 포함되어있기때문에 실 작업영역은 (설정한 윈도우 사이즈 - 프레임 사이즈) 만큼 감소되서..

Singleton [내부링크]

C++에서 Singleton의 구현은 몇가지 방법이 있다. 이중 내가 주로 사용하는 방법은 아래의 방법이다. class A { private: static A* m_Instance; public: static A* Instance() { if( m_instance == NULL ) { m_In..

URLDownloadToFile example [내부링크]

#pragma comment(lib, "urlmon.lib") #include <urlmon.h> BOOL Download(LPCWSTR url, LPCWSTR filename) { DeleteUrlCacheEntry(url); HRESULT result = URLDownloadToFile(NULL, url, filename, 0, NULL); if (..

GetCurrentDirectory() vs GetModuleFileName() [내부링크]

GetCurrentDirectory() 함수는 현재 폴더를 가져오고 GetModuleFileName() 함수는 실행파일이 있는 폴더의 위치를 가져온다는 차이가 있다.

Communication between C# and C++ through named pipe [내부링크]

[Server - C#] using System; using System.IO; using System.IO.Pipes; namespace NamedPipeCs { class Program { static void Main(string[] args) { while (true) { using (var server = new NamedPipeServerSt..

게임 개발 성과 측정 프로젝트 마지막편: 위대한 팀은 어떻게 일하는가? [내부링크]

이번 기사의 내용은 2014 게임 개발 성과 측정 프로젝트에서 가장 중요한 40가지 발견의 요약입니다. 우리는 상관계수의 값을 기준으로 가장 중요한 요인부터 내림차순으로 정렬하였습니다. 우리의 연구는 273명의..

Aggregate() vs string.Join() [내부링크]

string.Join() 이 더 빠르다 자세한 사항은 아래에서 확인 출처 : http://blog.naver.com/vactorman/80208961985

C# Using PostMessage [내부링크]

[DllImport("user32.dll")] static extern bool PostMessage(IntPtr hWnd, uint msg, int wParam, int lParam); const uint WM_USER_CUSTOM = WM_USER + 8423; public void Post() { // Get Processes var process..

Control Lifecycle [내부링크]

What happens when you create a Control? When do overrides get called and events get raised? When do styles get applied? In response to this thread on silverlight.net, I've whipped this simple table..

ContentControl ContentPresenter [내부링크]

ContentControl은 아주 유용한 Control이면서 아주 기본적인 Control입니다. 우리가 알고 있는 대부분의 Control이 ContentControl을 상속받고 있죠. 일단 모든 Button류가 상속하고 있고 ListBoxItem등도 상속하..

DNS(도메인 네임 서버) 초기화 하는 방법 [내부링크]

명령 프롬프트에서 ipconfig /flushdns 입력하고 실행!

What is a tight loop? [내부링크]

From Wiktionary: (computing) In assembly languages, a loop which contains few instructions and iterates many times. (computing) Such a loop which heavily uses I/O or processing resources, failing to..

HTML5 vs PhoneGap vs Unity3D vs Native [내부링크]

HTML5 1. 웹사이트를 만드는 마크업 언어로써 가장 쉽고 대부분 언어인줄 모르고 많이들 쓴다. 가령 <img src ="image.jpg"> 이런거나 Youtube 나 Vimeo 링크 딸때 <iframe 어쩌구> 하는 그런걸 말한다. 암튼 이것..

git update-index --assume-unchanged [내부링크]

git update-index --assume-unchanged 파일명 명령을 실행하면 대상 파일은 commit 대상에서 제외된다. git update-index --no-assume-unchanged 파일명 명령은 복원.

Random Class [내부링크]

Random 클래스는 난수를 얻고자 할 때 쓰는 클래스다. 생성자는 2가지가 있는데 public Random(); // 시간에 따라 달라지는 시드 값을 사용 public Random(int seed); // seed 인수에 지정된 시드 값을 사용 * See..

빠른 음수화 [내부링크]

변수값 음수화는 보통 양수값 앞에 -를 붙이거나 -1 을 곱하는데 문득 속도 차이가 얼마나 날지 궁금해서 테스트를 해보았다. #include <iostream> using namespace std; #include <windows.h> int main() { int t..

Custom Numeric Format Strings [내부링크]

Text="{StringFormat={}{0\,11:'#'#\,#}}" {0\,11} 자릿수가 총 11자리가 된다는 거 '#' 샾 문자를 삽입 #\,# 3자리 수 마다 콤마 찍힘 출처 : http://msdn.microsoft.com/en-us/library/0c899ak8.aspx

This program might not have installed correctly [내부링크]

설치프로그램 등을 직접 만드는 경우, 파일명에 setup 등과 같은 이름이 들어가면, 종료 후 다음과 같은 경고창이 뜰 수 있습니다. (Vista / Win7 이상) 파일명이 qqqq.exe 라고 하더라도 발생하였습니다. 이런 정..

문자열 _T("")와 L"" [내부링크]

_T 매크로는 _T("문자열") 이라고 썼을때 _UNICODE가 define 되어 있으면 L"문자열" 을 리턴하고 define되어있지 않으면 그냥 "문자열" 을 리턴 합니다. 문자열 앞에 L 접두사가 붙으면 그 문자열은 유니코드 형태..

레지스트리의 값 가져오기 [내부링크]

#include <iostream> using namespace std; #include <atlbase.h> // add int main() { HKEY hKey; TCHAR szDefaultPath[MAX_PATH] = { 0, }; DWORD dwBufLen = MAX_PATH; RegOpenKeyEx( HKEY_CURRENT_USER, L"Sof..

# 과 ## [내부링크]

#과 ##은 전처리기의 연산자로서 컴파일러가 #define 전처리 과정에서만 사용하는 특수한 연산자이다. C 언어 자체의 연산자는 아니므로 우선 순위나 결합 규칙 등은 적용되지 않는다. 둘 다 사용 빈도가 높지는..

strncpy 와 strncpy_s 에 대한 오해 [내부링크]

strncpy()는 복사되었으면 하는 문자열의 길이를 넘어서지 않게 복사해 준다. 그리고 대상 버퍼를 넘어서게 되면 NULL로 끝나지 않는 문자열까지 복사하게 된다. 예를 들면 아래와 같다. strncpy(dest, 8, "123456..

함수 포인터 typedef [내부링크]

함수 포인터의 타입은 함수가 취하는 인수들의 타입과 리턴값까지 정확하게 밝혀야 하기 때문에 타입의 형식이 너무 길어서 쓰기에 번거롭다. 또한 함수 포인터로부터 파생된 타입을 만드는 것도 헷갈리고 생소한..

enum, 보다 나은 enum [내부링크]

#define 과 얼핏 비슷해 보이지만, 비슷한 유형별의 데이터를 표현하기 위해 반드시 필요한 C++의 필수 타입인 enum 의 몇 가지 재미있고 유용한 팁을 소개합니다. 1. namespace 와 결합하기 일반적으로 enum 을..

stringstream [내부링크]

#include <iostream> using namespace std; #include <sstream> int main() { stringstream ss("/exp 1000"); // ss << "/exp 1000"; char command[20] = {0}; int val = 0; ss >> command; ss >> val; assert( !s..

bitset 을 이용한 퀘스트 완료목록 관리 [내부링크]

#include <bitset> #include <limits> using namespace std; const int QUEST_SECTION = numeric_limits<char>::digits; const int QUEST_SECTION_MAX = numeric_limits<char>::max(); const int QUEST_COUNT_COLU..

vector 와 map 의 erase 를 할때 주의점 [내부링크]

vector 는 erase 를 한 후에 다음 위치를 반환하지만 map 은 반환이 없으므로 이런식으로 짜야한다 v 는 vector m 은 map for( it = v.begin(); it != v.end(); ) { if( (*it) % 2 ) it = v.erase( it ); else ++i..

64비트 int (INT64) printf 에서 출력하기 [내부링크]

printf 뿐만 아니라 sprintf 나 CString 의 Format 에서도 사용 가능합니다. 64비트 숫자를 %d 로만 출력했을시 int 32bit 의 수가 넘어가면 이상하게 출력되는 것을 막아주는 코드입니다. INT64 i64; printf( "%I..

try catch 문 대체 [내부링크]

보통 Try, Catch 문이라고 하면 이런식으로 쓰게 될 것입니다. void function() { Try { } Catch { Throw; } } 하지만 throw 를 하게 되면 내부적으로 다소 많은 부하가 걸릴 수 있다고 합니다. (이 부분에 대해서..

공간 속의 두 점 사이의 거리 [내부링크]

* Formula * Source sqrt( pos( x1 - x2, 2 ) + pow( y1 - y2, 2 ) + pow( z1 - z2, 2 ) ); 속도는 모르겠다 ㅋㅋ

EXIT_SUCCESS / EXIT_FAILURE [내부링크]

<stdlib.h> #define EXIT_SUCCESS 0 #define EXIT_FAILURE 1 int main() { return EXIT_SUCCESS; } return 0; 보다 좀더 간지남 ㅋ

numeric_limits [내부링크]

This class is specialized for each of the fundamental types, with its members returning or set to the different values that define the properties that type has in the specific platform in which it c..

bitset [내부링크]

Proxy Pattern 으로 구현된 vector<bool>은 이런저런 문제가 있다는 것만 기억해 두시기 바랍니다 그러니 vector<bool>을 사용할 것이라면 bitset을 사용하세요 출처 : http://cafe.naver.com/cafec.cafe?iframe_u..

const 를 이용한 포인터 상수화 [내부링크]

1. 포인터가 가리키는 변수의 상수화 void main() { int a = 10; const int* p = &a; *p = 20; // 에러 a = 20; // 정상 출력 } 즉, p가 가리키는 대상이 상수화가 된다. 그렇기 때문에 *p = 20 했을 때, *p가 가..

override, abstract, __interface, sealed [내부링크]

override 꽤 갈망해왔던 키워드이다. base class에 있는 virtual을 상속받아서 쓰는경우에 base class에 있는 함수를 바꾸고 drived class 의 함수를 바꾸지 않았을 때 오작동하는 잡기 쉽지 않은 버그가 컴파일할..

switch 분할 호출 [내부링크]

소스를 분석하다가 switch 문을 여러개로 분할해서 호출하는 것을 보고 의구심이 들어 테스트를 해보았다 ㅋ #include <iostream> using namespace std; #include <windows.h> const DWORD TEST_COUNT = 100000000..

가변 인수 [내부링크]

15-3.가변 인수 15-3-가.가변 인수 함수 여기서는 가변 인수 함수에 대해서 알아 본다. 가변 인수의 함수를 만드는 방법에 대해서는 물론이고 가변 인수 함수가 동작하는 원리에 대해서도 자세하게 분석해 볼 것이..

STL without warnings [내부링크]

#pragma warning(disable: 4018) // signed/unsigned mismatch #pragma warning(disable: 4100) // unreferenced formal parameter #pragma warning(disable: 4146) // unary minus operator applied to unsigned..

구조체 초기화 [내부링크]

MS의 구조체 중에는 첫번째 인자가 구조체의 사이즈인 경우가 많습니다. 흔히 사용하는 CreateProcess의 STARTUPINFO구조체를 예로 들자면... STARTUPINFO StartupInfo; ZeroMemory(&StartupInfo, sizeof(STARTUPI..

자료형의 종류와 범위 [내부링크]

자료형의 종류와 범위 구분 자료형 크기(byte) 범위 문자형 char 1 byte -128 ~ 127 unsigned char 1 byte 0 ~ 255 정수형 __int8 1 byte -128 ~ 127 __int16 2 byte -32,768 to 32,767 unsigned int 2 byte -32,7..

__IN & __OUT [내부링크]

출처 : http://msdn.microsoft.com/en-us/library/aa383701(VS.85).aspx

strncpy 의 함정 [내부링크]

코딩을 하다보면 발생하는 버그중 가장 악질적인 것중 하나가 디버그 버전에서는 나타나지 않고 릴리즈 버전에서만 나타나는 버그다. 그것도 랜덤하게.... 랜덤하게 나타나는 버그 중에서도 자신이 만든 루틴에서..

XOR Swap [내부링크]

이것은 XOR 이라는 비트연산의 특성을 이용한 방법 XOR은 같은 값으로 연산을 두번 시켜주면 다시 원래대로 돌아오는 특성을 가지고 있다 예를 들어 두 값 A, B 가 있고 처음 XOR을 했을 때의 값을 X 라 한다면 A..

struct tm [내부링크]

#include <time.h> struct tm { // seconds after the minute - [0,59] int tm_sec; // minutes after the hour - [0,59] int tm_min; // hours since midnight - [0,23] int tm_hour; // day of the month - [1,3..

_strtime [내부링크]

char* _strtime( char* timestr ); Parameter timestr : Time string Return Value Returns a pointer to the resulting character string timestr 전달된 char형 포인터에 현재시간을 문자열로 저장해준다.

소수점 둘째자리이하 자르기 [내부링크]

float fValue = 12.3456789f; fValue = float( int( fValue * 100.0f ) ) / 100.0f; assert( 12.34f == fValue );

WELL512 [내부링크]

출처 : http://www.gamedevforever.com/114

Tic Tac Toe [내부링크]

AI 시간에 짰던 틱택토 소스 절대 컴퓨터를 이길 수 없다!

RSA [내부링크]

암호학 과제로 짰던 소스

Prime Number [내부링크]

//////////////////////////////////////////////////////////////////////////////// // Title : 소수판정 알고리즘 // Author : 최민혁 // Revision : 2006. 9. 29 First implementation //////////////////////..

Magic Square [내부링크]

대각선 마방진 짝수차 마방진 홀수차 마방진

Linked List Calculator [내부링크]

Linked List 를 이용한 계산기 소스

Hanoi Tower [내부링크]

//////////////////////////////////////////////////////////////////////////////// // Title : 하노이탑 // Author : 최민혁 // Revision : 2006. 9. 29 First implementation ///////////////////////////////..

Fibonacci Search [내부링크]

역시 과제로 짰던 피보나치 검색 소스

Euclid [내부링크]

//////////////////////////////////////////////////////////////////////////////// // Title : Euclid 알고리즘 // Author : 최민혁 // Revision : 2006. 9. 29 First implementation ////////////////////////..

Double Linked List [내부링크]

대학시절 과제로 짰던 주소록 관리 프로그램 소스

DES [내부링크]

대학시절 암호학 과제로 짰던 소스

달팽이 배열 [내부링크]

//////////////////////////////////////////////////////////////////////////////// // Title : 달팽이 배열 // Author : 최민혁 // Revision : 2006. 10. 12 First implementation ///////////////////////////..

Random Swap [내부링크]

for( size_t i = 0 ; i < DEF_MAX - 1; i++ ) { srand( time(NULL) ); nRandIdx = (rand() % (DEF_MAX - (i + 1))) + (i + 1); std::swap( m_nTable[i], m_nTable[nRandIdx] ); } nixie77 님이 알려줘서 짜본 소스..

[MySQL] 부팅시 자동실행 되도록 서비스 등록하기 [내부링크]

MySQL을 설치할 때는 Daemon 들이 root 소유자로 실행되지 않도록 하는 것이 좋다. 보안상 MySQL의 취약성이 발결되어 공격을 당하게 되면 곧바로 root shell을 획득하는 것이 가능하기 때문이다. 따라서 MySQL을..

GetTickCount 와 timGetTime 주의사항 [내부링크]

49.7일 후에 0부터 다시 카운트가 올라갑니다. 50일 이상 계속 켜 있는 시스템에서 사용하시는거라면 단순 증가비교만으로는 곤란한 일을 당하실수도 있습니다. The return value wraps around to 0 every 2^32 mi..

CWnd::UpdateData [내부링크]

BOOL UpdateData( BOOL bSaveAndValidate = TRUE ); UpdateData( TRUE ); // 함수 시작부분에 많이 쓰이며 데이터를 가져올 때 쓰인다. UpdateData( FALSE ); // 함수 끝부분에 많이 쓰이며 변경된 데이터를 출력..

CListCtrl Add Item [내부링크]

BOOL InsertItem( int nItem, LPCTSTR lpszItem ); BOOL SetItemText( int nItem, int nSubItem, LPCTSTR lpszText ); ex) INT nRowCount = 0; ::CString strBuff; m_List.InsertItem( nRowCount, NULL ); m_List...

CListCtrl Initialize [내부링크]

DWORD SetExtendedStyle( DWORD dwNewStyle ); int InsertColumn( int nCol, LPCTSTR lpszColumnHeading, int nFormat = LVCFMT_LEFT, int nWidth = -1, int nSubItem = -1 ); void CSampleDlg::InitListControl()..

GetAsyncKeyState [내부링크]

GetAsyncKeyState() 함수를 호출할 경우 키가 눌려져 있으면 최상위 비트가 1인 short형(2Byte) 리턴값을 리턴합니다 키가 눌려져 있지않으면 최상위 비트가 1이 아닌 어떠한 값을 리턴합니다 그래서 0x8000(최상..

Postgresql 설치 정리 [내부링크]

Postgresql 설치 관련해서 정리해봅니다. 아래의 원문을 기반으로 작업을 해보면서 다시 정리를 한 내용입니다. 환경에 따라서는 에러가 나는 경우가 있어서 제 환경에 맞게 다시 정리해본 내용입니다. * 필자의 O..

레지스트리의 MaxUserPort 수정 [내부링크]

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TCPIP\Parameters 에 REG_DWORD 타입으로 MaxUserPort 를 추가하고 60000 이라고 입력하면 이론상 60000까지 됩니다. 출처 : http://www.gpgstudy.com/foru..

[MS-SQL] TOP [내부링크]

SELECT TOP [출력갯수] * FROM [테이블 명] WHERE [열 이름] NOT IN(SELECT TOP [시작줄] [열 이름] FROM [테이블 명]) 예) SELECT * FROM MyTable WHERE idx LIMIT 5,20 변환 SELECT TOP 20 * FROM MyTable WHERE..

[MS-SQL] @@ERROR 와 @@ROWCOUNT 를 이용한 에러 처리 [내부링크]

INSERT INTO Table (Col1, Col2) VALUES (@Val1, @Val2) SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT IF @Error != 0 OR @RowCount != 1 BEGIN SET @ErrMsg = 'FAILURE: Cannot insert row' GOTO ERROR END..

[MS-SQL] datetime => second & second => datetime [내부링크]

datetime -> second SELECT DATEDIFF( S, '1970-01-01 09:00:00', datetime ) second -> datetime SELECT DATEADD( S, second, '1970-01-01 09:00:00' ) * 우리나라는 9시간을 더해주고 빼주는 처리를 해줘야하기..

Dead Reckoning [내부링크]

네트웍 게임을 개발할때 부딪히는 물리적 한계가 두가지 있습니다. Bandwidth 와 Latency Bandwidth의 한계로 신호를 많이 보낼 수 없는 것 뿐만아니라, 자주 보낼 수도 없습니다. 기본적으로 리얼타임게임에서는..

NAT (Network Address Translation) [내부링크]

요약 : 사설 IP주소를 공인 IP주소로 바꿔주는데 사용하는 통신망의 주소 변환기이다. 본문 : NAT를 사용하는 목적에는 2가지가 있는데, 첫째는 인터넷의 공인 IP주소를 절약할 수 있다는 점이고 둘째는 인터넷이..

공인 IP / 사설 IP [내부링크]

공인 IP는 말그대로 외부에 공개가 되어있는 IP입니다. 때문에 각 호스트당 한개밖에 사용을 할수 없다고 하죠 이 말인즉슨 외부에는 공인IP를 찾아가기 위한 라우팅 경로가 항상 존재합니다. 때문에 제가 공인IP..

"온라인 게임서버 프로그래밍 벤치마크" 초간단 정리 [내부링크]

1. 소켓 이벤트 핸들링 IOCP > Overlapped Callback > select > WSAAyncSelect > WSAEventSelect 순서로 좋다고 합니다. 제 기억으로 2003년까지만 하더라도 IOCP 방식의 유용성에 대한 논란이 있었지만 이후 Wind..

최적의 스레드 수를 찾기 위한 시작점 [내부링크]

SYSTEM_INFO lpSystemInfo; GetSystemInfo( lpSystemInfo ); lpSystemInfo.dwNumberOfProcessors * 2 + 2 이 숫자가 적당하다는 얘기지 최적이란 얘기는 아니다!

Nagle Algorithm [내부링크]

Nagle 알고리즘을 요약하자면 다음과 같다. ACK를 받지 못한 데이터가 있는 상황에서는, 조그만 세그먼트들은 ACK를 받을 때까지 보낼 수 없다. 대신 이 조그만 세그먼트들은 하나로 합쳐져서 ACK가 도착했을 때..

[MySQL] FROM_UNIXTIME & UNIX_TIMESTAMP [내부링크]

FROM_UNIXTIME( int ); int -> datetime UNIX_TIMESTAMP( datetime ); datetime -> int 아우~ 헷갈려~ ㅋ FROM_UNIXTIME( timestamp ) 주어진 타임스탬프 값으로부터 'yyyy-mm-dd hh:mm:ss' 또는 yyyymmddhhmmss..

서버 프로그래밍시 주의점 [내부링크]

* strcpy 등의 길이제한이 없는 함수는 사용하지 않는다 -> strncpy, memcpy와 같은 함수를 사용하고, 스트링 맨 끝에, 0을 넣어주는 것이 안전하다. 특히나 클라이언트에서 올라온 데이터는 더더욱 그렇다. * 포..

WSAGetLastError [내부링크]

디버깅할때 아래와 같은 한줄을 추가하면 int x = WSAGetLastError(); 가장 최근에 일어난 윈속에러를 변수 x 를 통해 알 수 있다. x 에 대입된 값을 MSDN 이나 컴파일러의 Error Lookup 에 입력해서 원인을 파악..

wmic 로 메인보드 모델명 알아내기 [내부링크]

커멘드명령창에 wmic BASEBOARD 라고 입력하면 됨

xcopy [내부링크]

xcopy "srcDirectory" "dstDirectory" /s /i /y 일을 하다보면 특정폴더끼리의 복사를 빈번하게 사용해야 될 경우가 있다 이때 xcopy 로 배치파일을 만들어두면 편하다 /s 는 하위폴더까지 복사한다는 옵션 /i 는..

GitHub 를 이용하는 전체 흐름 이해하기 #2 [내부링크]

Fetch & Merge 로컬에서 작업을 하다보면 원격저장소에 변경사항이 생긴다. 클론받은 이후에 원격저장소에 누군가 소스를 푸시하면 이 변경사항을 다시 로컬로 가져와야 하는데 이 과정을 fetch로 원격저장소의 변..

GitHub 를 이용하는 전체 흐름 이해하기 #1 [내부링크]

좀 어렵기는 하지만 Git은 정말 좋은 도구이다. Git을 쓰기 시작하면서 SVN이 얼마나 불편하고 구린지를 이해할 수 있다. 어쨌든 GitHub의 엄청난 성장아래 이제는 대부분의 오프소스 프로젝트들이 GitHub로 이전..

파라미터(parameter) & 아규먼트(argument) [내부링크]

parameter argument C++ 표준 에서는 정확하게 argument와 parameter를 정의했다. (C++ 기초플러스 4판 320p ~ p321p) 파라미터(parameter)란 무엇인가? ※ 함수의 전달되는 값을 넘겨받는 데 쓰이는 변수 ※ 파라..

#pragma warning [내부링크]

컴파일러는 컴파일한 결과를 에러와 경고라는 진단 메시지로 출력한다. 모든 문법이 정확하다면 아무런 진단 메시지도 출력되지 않지만 사람이 컴퓨터가 아닌 한 보통은 한 두 개 정도의 메시지를 받게 된다. 이..

#pragma once [내부링크]

C++로 코드를 짜는 경우 중복컴파일을 막기위해 헤더파일에 #ifndef AAA_H #define AAA_H . . . #endif 를 써주는 데 이것 대신 맨 윗줄에 #pragma once 한줄만 써주면 동일한 효과를 얻을 수 있다. 게임 프로그래..

AppDomain 프로그래밍에 대한 이야기 [내부링크]

닷넷 프레임워크 기반 프로그래밍에서 회자되는 내용 중에 "어려운 범주"에 속하는 주제들이 몇 가지 있는데, 그 중 하나가 AppDomain에 관련된 것입니다. 닷넷 프레임워크는 전통적인 프로그래밍 모델인 프로세스..

TextBox.OnTextChanged 에서 발생하는 예외 처리 [내부링크]

未处理 System.InvalidOperationException Message=无法关闭撤消单元,因为不存在已打开的单元。 Source=PresentationFramework StackTrace: 在 MS.Internal.Documents.UndoManager.Close(IParentUndoUnit unit, U..

How to: Determine Which .NET Framework Versions Are Installed [내부링크]

https://msdn.microsoft.com/en-us/library/hh925568(v=vs.110).aspx

Lazy Initialization [내부링크]

작성 : 김수영(Microsoft Visual C# MVP) .NET N'Gene(http://www.dotnetngene.kr) 훈스닷넷 SYSOP(http://www.hoons.kr) 버전 : 1.0 보통은 사용하려는 객체를 모두 초기화 하고 사용한다. 하지만 때에 따라서(메..

Openning a URL containing a query string [내부링크]

Process.Start(new ProcessStartInfo("explorer.exe", "\"" + @"http://mhchoi8423.tistory.com/" + "\"")); 출처 : http://stackoverflow.com/questions/14585709/openning-a-url-containing-a-query-string

String.IsNullOrEmpty 와 String.IsNullOrWhiteSpace 차이점 [내부링크]

String.IsNullOrEmpty - 지정된 문자열이 Nothing 이거나 Empty 문자열인지 여부를 나타냅니다. - null 이거나 String.Empty String.IsNullOrWhiteSpace - 지정된 문자열이 Nothing 이거나 비어있거나 공백문자로..

도대체 Context 가 무슨 뜻이지? [내부링크]

다양한 프레임워크와 라이브러리를 사용하는 요즘의 프로그래밍을 하다가 보면 의례 빠지지 않고 나오는 이름이 Context 다. 웹 프로그래밍을 하는 경우에도 보면 심심찮게 등장하는 클래스들 중에 Context 라는..

SynchronizationContext 가 추구하는 동기화 #2 [내부링크]

앞선 글에 이어 SynchronizationContext 에 관해서 좀더 이야기 해 보자. 이제까지 코드 혹은 객체와 Thread를 커플링 시키는 방식으로 동기화를 구현하는 것에 관해서 이야기 했는데, 여기서 한가지 필수적인 메..

SynchronizationContext 가 추구하는 동기화 #1 [내부링크]

우선 Synchronization, 동기화의 의미에 대해 좀 살펴봐야 겠는데, 일단 동기화 라고 하는 것은 멀티스레드와 관련이 있는 단어다. 즉 싱글스레드에서는 동기화라고 하는 개념은 없다고 생각하자. 그럼 멀티스레드..

WebBrowser 컨트롤에서 Navigate 메소드 이용시 Post 데이터를 넘기는 방법 [내부링크]

사용 방법 view source print? 1. string strUrl = "http://mhchoi8423.tistory.com" ; 2. // 총 2개의 POST 데이터 만들기 3. string strPostData = string .Format( "id={0}&pw={1}" , "idvalue" , "passwordval..

WPF 데이터 바인딩 시의 예외 처리 방법 [내부링크]

예전에, .NET 응용 프로그램에서 예외 처리를 하는 방법에 관해 정리해놓았지요. ^^ .NET 예외 처리 정리 ; http://www.sysnet.pe.kr/Default.aspx?mode=2&sub=0&detail=1&wid=316 WPF - 전역 예외 처리 ; http://..

바로가기에 링크된 실행파일명 바꾸기 [내부링크]

void ModifyShortcutTargetName(string shortcutFilename) { WshShell shell = new WshShell(); FileInfo LinkFile = new FileInfo(shortcutFilename); if (LinkFile.Exists) { IWshShortcut link = (IWshShortcut..

DLL을 regsvr32.exe로 등록하기 [내부링크]

void RegisterDLL(string filename) { var process = new Process(); process.StartInfo.FileName = "regsvr32.exe"; process.StartInfo.Arguments = "/s \"" + filename + "\""; process.StartInfo.UseShellExecu..

How to bind multiple values to a single WPF TextBlock? [내부링크]

<TextBlock> <TextBlock.Text> <MultiBinding StringFormat="{}{0} + {1}"> <Binding Path="Name" /> <Binding Path="ID" /> </MultiBinding> </TextBlock.Text> </TextBlock> 출처 : http://stackoverflow.com/qu..

비밀번호 입력을 알파벳, 숫자, 특수문자로 제한하기 [내부링크]

public bool CheckPassword(string password) { if (Regex.IsMatch(password, @"[a-zA-Z0-9~`!@#$%^&*()_\-+={}[\]|\\;:'""<>,.?/]") == false) return false; return true; } 주의할 점은 -, ], \ 앞에는 \를 하..

StringFormat 양수(+) / 음수(-) 표시 [내부링크]

Console.WriteLine("{0:+00;-00}", 10); 출력 : +10 Console.WriteLine("{0:+00;-00}", -10); 출력 : -10

#region #endregion [내부링크]

C# 코드 파일은 C 계열 언어와 달리 .cs 파일 하나에 코드를 구현한다. 구현에 있어 클래스가 길어질 수 있는데(클래스가 장대하게 길어지면 그것도 디자인을 잘못한듯) #region-#endregion을 이용하여 코드를 문..

MVVM 디자인 패턴을 사용한 WPF 응용 프로그램 [내부링크]

https://msdn.microsoft.com/ko-kr/magazine/dd419663.aspx

WPF와 Silverlight 에서 TextBox 의 한글 입력을 막는 방법 [내부링크]

Win32 API나 윈폼에서 한글 입력을 막기 위해 IME 관련 메시지들을 처리했던 기억이 있습니다. WPF와 Silverlight에서는 InputMethod 클래스의 SetIsInputMethodEnabled 메서드를 사용해서 쉽게 처리할 수 있습니..

UI Thread Marshalling - Invoke, BeginInvoke [내부링크]

.NET 프로그래밍을 하는 데에 있어 한가지 장점을 꼽으라면 전에 비해 상당히 쉬워진 멀티쓰레드 프로그래밍이라고 할 수 있다. 하지만 많은 개발자들이 놓치는 부분이 쓰레드에서 UI를 접근하는 부분이다. 우선..

Label, TextBlock, TextBox [내부링크]

(1) Intro 윈폼을 건드려본 사람은 Label 과 TextBox 컨트롤은 매우 친숙할 것이다. WPF 에서는 여기에 TextBlock 이라는 컨트롤이 추가되었는데, 무엇이 다른걸까? 우선 MSDN 에서 각각의 컨트롤을 어떻게 정의했..

다른 스레드가 이 개체를 소유하고 있어 호출한 스레드가 해당 개체에 액세스할 수 없습니다 [내부링크]

WPF에서는 메인스레드에서 생성한 컨트롤에 다른 스레드가 접근하지 못하도록 되어있습니다. 접근하려고 하면 다음과 같은 에러메시지에 직면하죠 : “다른 스레드가 이 개체를 소유하고 있어 호출한 스레드가 해..

C# String Formatting [내부링크]

C# String Formatting UPDATE: I show alternate ways to use string formats in WPF in this post:WPF String Formatting This entry has been copied from SteveX (http://blog.stevex.net/index.php/string-for..

TemplateBinding 과 Binding 의 차이 [내부링크]

ControlTemplate을 정의할때 부모 컨트롤의 속성을 받아들이기 위해 TemplateBinding을 사용한다. 즉, ControlTemplate을 버튼 내부에 정의한다고 가정했을때 해당 ControlTemplate 내의 Rectangle 요소와 버튼의..