PRIMARY KEY와 똑같은 필드로 인덱스를 중복해서 만든다 참고 : https://blog.naver.com/birdparang/221574304831
https://t.me/dailycpp
[distutils] index-servers = pypi [pypi] repository: https://pypi.python.org/pypi username: password: 1. C:\Users\유저네임\.pypirc 파일 생성 후 위의 내용 입력 2. username / password 입력 2-1. (콘솔..
SELECT DATEADD(wk, DATEDIFF(wk, 0, GETDATE()), 0) 참조 : https://blog.sqlauthority.com/2007/08/20/sql-server-find-monday-of-the-current-week/
git branch | grep -v "master\|exceptbranch1\|exceptbranch2" | xargs git branch -D
Visual Studio를 이용하여 catch 블록 내부를 디버깅하는 경우라면 조사식(watch) 창에 $exception을 입력하여 현재 발생한 예외가 무엇인지 확인할 수 있다. - CLR via C#
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.
* 일회용 1. Run > cmd 2. w32tm /resync 입력 후 실행 * 스케쥴링 1. Run > regedit HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\W32Time\TimeProviders\NtpClient\SpecialPollInterval 값 수정 60480..
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. 위의..
다른건 필요없고 딱 내가 원했던 명령어 git update-index --assume-unchanged [filename] 참고 : http://codethug.com/2013/09/20/4-ways-to-ignore-files-with-git/
echo [answer]|[script] ex) echo y|del *.*
배치파일을 이용해서 cd 로 폴더를 옮기고 원하는 파일을 실행하고 다른 폴더로 또 옮겨서 파일실행을 하다가 다음 문장이 실행이 안되는 문제를 겪었는데 구글링 끝에 해답을 얻음 "앞에 call 을 붙여준다." 참고..
repository 에서 특정 폴더만 내려받고 싶을때 그럴때!! * git init <repository> * cd <repository> * git remote add -f origin <URL> - [-f] : fetch the remote branches * git checkout <branch> * git confi..
cmd 창에 nbtstat -a [computer name] nbtstat -a [IP address] 컴퓨터 이름이나 아이피 주소를 입력하면 해당 정보로 네트워크 내 연결 정보를 조회할 수 있다 출처 : https://technet.microsoft.com/en-us/libra..
Windows 10 을 설치하고 기존에 DriveInfo.GetDrives() 로 잘 가져오던 네트워크 드라이브 정보를 못가져오는 사태가 발생해서 구글링 (탐색기로 네트워크 드라이브 연결함) cmd 창에서 드라이브 마다 요 net use..
Windows Forms Application 개발시 Debug 모드일때만 Cross-thread operation not valid: ??? Control accessed from a thread other than the thread it was created on. 이라는 예외가 발생한다면 CheckForIlleg..
GitHub 로 PR 을 날리면 line ending 문제로 아래 그림처럼 x같이 나오는 경우가 있는데 <이미지 출처 : http://www.hanselman.com/blog/YoureJustAnotherCarriageReturnLineFeedInTheWall.aspx> cmd 창에 아래..
Windows NT부터 Windows 7에서 까지 ‘시스템 속성 > 성능 > 설정 > 성능 옵션 > 고급 > 프로세서 사용 계획’에 ‘프로그램’과 ‘백그라운드 서비스’ 옵션 두 가지 중 하나를 사용자가 선택할 수 있습니다. 이..
참조 : 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을 리턴한다
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..
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 - listBox1.TopIndex = listBox1.Items.Count - 1; * ListView - listView1.Items[listView1.Items.Count -1].EnsureVisible(); * TextBox - tbMessage.SelectionStart = tbMessage.Text.Length; - tbMe..
가장 큰 차이는 ListView 는 멀티컬럼이 된다는 것!
* When a Windows Forms application starts - Control.HandleCreated - Control.BindingContextChanged - Form.Load - Control.VisibleChanged - Form.Activated - Form.Shown * When an application closes - Fo..
_netrc 라는 이름의 파일을 (확장자 없음) C:\Users\<Your-Username> 폴더에 생성하고 내용으로 machine github.com login <Username> password <Password> 입력하고 저장 명령 프롬프트 창을 열고 setx home C:\U..
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 은 메소드 내에서 반드시 한번은 값을 할당해야한다 속도(Performance) 테스트 결과 out 을 쓴 경우가 더 빠른 것으로 나타남 (.NET 4.0 기준)
출처 : http://www.gnu.org/licenses/gpl-howto.html
출처 : https://wiki.kldp.org/wiki.php/OpenSourceLicenseGuide
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..
5. 싱글턴 패턴 싱글턴패턴은 인스턴스가 하나 뿐인 특별한 객체를 만들 수 있게 해주는 패턴이다. 어떤 용도로 쓰는 건가? 스레드 풀이라던가, 캐시, 대화상자, 사용자설정, 디바이스드라이버 등등 객체가 전체프..
확률을 계산하려면 경우의 수를 헤아려야 한다고 했습니다. 전체의 갯수 n개에서 일부의 r개를 뽑을 때, 뽑는 순서를 고려해야 하는 지와 고려하지 않아도 되는 지를 구별하는 것은 중요합니다. (같은 의미로 r개..
※ C++ 소스 코드 상에서 현재 윈도우가 32bit 버전인지 64bit 버전인지 구분하는 방법에 대한 자료는 검색해보면 금방 구할 수 있습니다. 근데 그 중 많은 자료들이 IsWow64Process 함수 하나만 가지고 64bit 여..
VisualStudio 2012, .NET Framework 4.5부터 지원하는 대표적인 기능 중 하나가 바로 비동기 프로그래밍 입니다. 여기서는 비동기 프로그래밍이 무엇인지 정리 드리고자 합니다.. 비동기가 왜 필요할까? 웹 2.0 시..
Windows 에서는 __int64 타입의 변수를 플랫폼(x86/x64)에 관계없이 printf("%I64d", val) 형태로 출력할 수 있다. Linux 에서는 플랫폼에 영향이 없이 처리할려면 고려할 사항들이 있다. x86에서는 long long int..
#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..
1. Active Mode (1) 연결 진행 절차 - 1단계 : 클라이언트에서 서버의 TCP/21번 포트로 접속 시도 및 클라이언트가 사용할 두번째 포트를 서버에게 알려준다. (연결방향 : 클라이언트 → 서버) - 2단계 : 서버는 T..
하나의 프로시져로 입력과 수정을 같이 처리하는 경우가 종종 있는데 굳이 Update, Insert를 분기 처리 하지 않고 다음처럼 한번에 처리 할 수 있다. update table1 set column1 = @column1 where id = @id if @@r..
// NamedPipeServer.h #pragma once namespace EventType { enum EventType { Exit, Connect, Max }; } class NamedPipeServer { public: NamedPipeServer(LPCWSTR name); ~NamedPipeServer(); BOOL Start(); VOID..
Windows에서 Named Pipe를 실제로 사용하기 위해서는 Read/Write를 비동기적으로 처리해야 하는데, 이를 위해 흔히 사용되는 방법은 Overlapped I/O와 Event를 기반으로 하는 것입니다. 다시 말해서, 파이프를 생..
CreateWindow를 할때 보통 많이 쓰는 윈도우 스타일은 WS_OVERLAPPEDWINDOW이며 여기에는 크기 조정용 WS_THICKFRAME이 포함되어있기때문에 실 작업영역은 (설정한 윈도우 사이즈 - 프레임 사이즈) 만큼 감소되서..
C++에서 Singleton의 구현은 몇가지 방법이 있다. 이중 내가 주로 사용하는 방법은 아래의 방법이다. class A { private: static A* m_Instance; public: static A* Instance() { if( m_instance == NULL ) { m_In..
#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() 함수는 현재 폴더를 가져오고 GetModuleFileName() 함수는 실행파일이 있는 폴더의 위치를 가져온다는 차이가 있다.
[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명의..
string.Join() 이 더 빠르다 자세한 사항은 아래에서 확인 출처 : http://blog.naver.com/vactorman/80208961985
[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..
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은 아주 유용한 Control이면서 아주 기본적인 Control입니다. 우리가 알고 있는 대부분의 Control이 ContentControl을 상속받고 있죠. 일단 모든 Button류가 상속하고 있고 ListBoxItem등도 상속하..
명령 프롬프트에서 ipconfig /flushdns 입력하고 실행!
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 1. 웹사이트를 만드는 마크업 언어로써 가장 쉽고 대부분 언어인줄 모르고 많이들 쓴다. 가령 <img src ="image.jpg"> 이런거나 Youtube 나 Vimeo 링크 딸때 <iframe 어쩌구> 하는 그런걸 말한다. 암튼 이것..
git update-index --assume-unchanged 파일명 명령을 실행하면 대상 파일은 commit 대상에서 제외된다. git update-index --no-assume-unchanged 파일명 명령은 복원.
Random 클래스는 난수를 얻고자 할 때 쓰는 클래스다. 생성자는 2가지가 있는데 public Random(); // 시간에 따라 달라지는 시드 값을 사용 public Random(int seed); // seed 인수에 지정된 시드 값을 사용 * See..
변수값 음수화는 보통 양수값 앞에 -를 붙이거나 -1 을 곱하는데 문득 속도 차이가 얼마나 날지 궁금해서 테스트를 해보았다. #include <iostream> using namespace std; #include <windows.h> int main() { int t..
Text="{StringFormat={}{0\,11:'#'#\,#}}" {0\,11} 자릿수가 총 11자리가 된다는 거 '#' 샾 문자를 삽입 #\,# 3자리 수 마다 콤마 찍힘 출처 : http://msdn.microsoft.com/en-us/library/0c899ak8.aspx
설치프로그램 등을 직접 만드는 경우, 파일명에 setup 등과 같은 이름이 들어가면, 종료 후 다음과 같은 경고창이 뜰 수 있습니다. (Vista / Win7 이상) 파일명이 qqqq.exe 라고 하더라도 발생하였습니다. 이런 정..
_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()는 복사되었으면 하는 문자열의 길이를 넘어서지 않게 복사해 준다. 그리고 대상 버퍼를 넘어서게 되면 NULL로 끝나지 않는 문자열까지 복사하게 된다. 예를 들면 아래와 같다. strncpy(dest, 8, "123456..
함수 포인터의 타입은 함수가 취하는 인수들의 타입과 리턴값까지 정확하게 밝혀야 하기 때문에 타입의 형식이 너무 길어서 쓰기에 번거롭다. 또한 함수 포인터로부터 파생된 타입을 만드는 것도 헷갈리고 생소한..
#define 과 얼핏 비슷해 보이지만, 비슷한 유형별의 데이터를 표현하기 위해 반드시 필요한 C++의 필수 타입인 enum 의 몇 가지 재미있고 유용한 팁을 소개합니다. 1. namespace 와 결합하기 일반적으로 enum 을..
#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..
#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 는 erase 를 한 후에 다음 위치를 반환하지만 map 은 반환이 없으므로 이런식으로 짜야한다 v 는 vector m 은 map for( it = v.begin(); it != v.end(); ) { if( (*it) % 2 ) it = v.erase( it ); else ++i..
printf 뿐만 아니라 sprintf 나 CString 의 Format 에서도 사용 가능합니다. 64비트 숫자를 %d 로만 출력했을시 int 32bit 의 수가 넘어가면 이상하게 출력되는 것을 막아주는 코드입니다. INT64 i64; printf( "%I..
보통 Try, Catch 문이라고 하면 이런식으로 쓰게 될 것입니다. void function() { Try { } Catch { Throw; } } 하지만 throw 를 하게 되면 내부적으로 다소 많은 부하가 걸릴 수 있다고 합니다. (이 부분에 대해서..
* Formula * Source sqrt( pos( x1 - x2, 2 ) + pow( y1 - y2, 2 ) + pow( z1 - z2, 2 ) ); 속도는 모르겠다 ㅋㅋ
<stdlib.h> #define EXIT_SUCCESS 0 #define EXIT_FAILURE 1 int main() { return EXIT_SUCCESS; } return 0; 보다 좀더 간지남 ㅋ
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..
Proxy Pattern 으로 구현된 vector<bool>은 이런저런 문제가 있다는 것만 기억해 두시기 바랍니다 그러니 vector<bool>을 사용할 것이라면 bitset을 사용하세요 출처 : http://cafe.naver.com/cafec.cafe?iframe_u..
1. 포인터가 가리키는 변수의 상수화 void main() { int a = 10; const int* p = &a; *p = 20; // 에러 a = 20; // 정상 출력 } 즉, p가 가리키는 대상이 상수화가 된다. 그렇기 때문에 *p = 20 했을 때, *p가 가..
override 꽤 갈망해왔던 키워드이다. base class에 있는 virtual을 상속받아서 쓰는경우에 base class에 있는 함수를 바꾸고 drived class 의 함수를 바꾸지 않았을 때 오작동하는 잡기 쉽지 않은 버그가 컴파일할..
소스를 분석하다가 switch 문을 여러개로 분할해서 호출하는 것을 보고 의구심이 들어 테스트를 해보았다 ㅋ #include <iostream> using namespace std; #include <windows.h> const DWORD TEST_COUNT = 100000000..
15-3.가변 인수 15-3-가.가변 인수 함수 여기서는 가변 인수 함수에 대해서 알아 본다. 가변 인수의 함수를 만드는 방법에 대해서는 물론이고 가변 인수 함수가 동작하는 원리에 대해서도 자세하게 분석해 볼 것이..
#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..
출처 : http://msdn.microsoft.com/en-us/library/aa383701(VS.85).aspx
코딩을 하다보면 발생하는 버그중 가장 악질적인 것중 하나가 디버그 버전에서는 나타나지 않고 릴리즈 버전에서만 나타나는 버그다. 그것도 랜덤하게.... 랜덤하게 나타나는 버그 중에서도 자신이 만든 루틴에서..
이것은 XOR 이라는 비트연산의 특성을 이용한 방법 XOR은 같은 값으로 연산을 두번 시켜주면 다시 원래대로 돌아오는 특성을 가지고 있다 예를 들어 두 값 A, B 가 있고 처음 XOR을 했을 때의 값을 X 라 한다면 A..
#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..
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 );
AI 시간에 짰던 틱택토 소스 절대 컴퓨터를 이길 수 없다!
//////////////////////////////////////////////////////////////////////////////// // Title : 소수판정 알고리즘 // Author : 최민혁 // Revision : 2006. 9. 29 First implementation //////////////////////..
대각선 마방진 짝수차 마방진 홀수차 마방진
Linked List 를 이용한 계산기 소스
//////////////////////////////////////////////////////////////////////////////// // Title : 하노이탑 // Author : 최민혁 // Revision : 2006. 9. 29 First implementation ///////////////////////////////..
역시 과제로 짰던 피보나치 검색 소스
//////////////////////////////////////////////////////////////////////////////// // Title : Euclid 알고리즘 // Author : 최민혁 // Revision : 2006. 9. 29 First implementation ////////////////////////..
대학시절 과제로 짰던 주소록 관리 프로그램 소스
//////////////////////////////////////////////////////////////////////////////// // Title : 달팽이 배열 // Author : 최민혁 // Revision : 2006. 10. 12 First implementation ///////////////////////////..
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을 설치할 때는 Daemon 들이 root 소유자로 실행되지 않도록 하는 것이 좋다. 보안상 MySQL의 취약성이 발결되어 공격을 당하게 되면 곧바로 root shell을 획득하는 것이 가능하기 때문이다. 따라서 MySQL을..
49.7일 후에 0부터 다시 카운트가 올라갑니다. 50일 이상 계속 켜 있는 시스템에서 사용하시는거라면 단순 증가비교만으로는 곤란한 일을 당하실수도 있습니다. The return value wraps around to 0 every 2^32 mi..
BOOL UpdateData( BOOL bSaveAndValidate = TRUE ); UpdateData( TRUE ); // 함수 시작부분에 많이 쓰이며 데이터를 가져올 때 쓰인다. UpdateData( FALSE ); // 함수 끝부분에 많이 쓰이며 변경된 데이터를 출력..
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...
DWORD SetExtendedStyle( DWORD dwNewStyle ); int InsertColumn( int nCol, LPCTSTR lpszColumnHeading, int nFormat = LVCFMT_LEFT, int nWidth = -1, int nSubItem = -1 ); void CSampleDlg::InitListControl()..
GetAsyncKeyState() 함수를 호출할 경우 키가 눌려져 있으면 최상위 비트가 1인 short형(2Byte) 리턴값을 리턴합니다 키가 눌려져 있지않으면 최상위 비트가 1이 아닌 어떠한 값을 리턴합니다 그래서 0x8000(최상..
Postgresql 설치 관련해서 정리해봅니다. 아래의 원문을 기반으로 작업을 해보면서 다시 정리를 한 내용입니다. 환경에 따라서는 에러가 나는 경우가 있어서 제 환경에 맞게 다시 정리해본 내용입니다. * 필자의 O..
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TCPIP\Parameters 에 REG_DWORD 타입으로 MaxUserPort 를 추가하고 60000 이라고 입력하면 이론상 60000까지 됩니다. 출처 : http://www.gpgstudy.com/foru..
SELECT TOP [출력갯수] * FROM [테이블 명] WHERE [열 이름] NOT IN(SELECT TOP [시작줄] [열 이름] FROM [테이블 명]) 예) SELECT * FROM MyTable WHERE idx LIMIT 5,20 변환 SELECT TOP 20 * FROM MyTable WHERE..
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..
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시간을 더해주고 빼주는 처리를 해줘야하기..
네트웍 게임을 개발할때 부딪히는 물리적 한계가 두가지 있습니다. Bandwidth 와 Latency Bandwidth의 한계로 신호를 많이 보낼 수 없는 것 뿐만아니라, 자주 보낼 수도 없습니다. 기본적으로 리얼타임게임에서는..
요약 : 사설 IP주소를 공인 IP주소로 바꿔주는데 사용하는 통신망의 주소 변환기이다. 본문 : NAT를 사용하는 목적에는 2가지가 있는데, 첫째는 인터넷의 공인 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 알고리즘을 요약하자면 다음과 같다. ACK를 받지 못한 데이터가 있는 상황에서는, 조그만 세그먼트들은 ACK를 받을 때까지 보낼 수 없다. 대신 이 조그만 세그먼트들은 하나로 합쳐져서 ACK가 도착했을 때..
FROM_UNIXTIME( int ); int -> datetime UNIX_TIMESTAMP( datetime ); datetime -> int 아우~ 헷갈려~ ㅋ FROM_UNIXTIME( timestamp ) 주어진 타임스탬프 값으로부터 'yyyy-mm-dd hh:mm:ss' 또는 yyyymmddhhmmss..
* strcpy 등의 길이제한이 없는 함수는 사용하지 않는다 -> strncpy, memcpy와 같은 함수를 사용하고, 스트링 맨 끝에, 0을 넣어주는 것이 안전하다. 특히나 클라이언트에서 올라온 데이터는 더더욱 그렇다. * 포..
디버깅할때 아래와 같은 한줄을 추가하면 int x = WSAGetLastError(); 가장 최근에 일어난 윈속에러를 변수 x 를 통해 알 수 있다. x 에 대입된 값을 MSDN 이나 컴파일러의 Error Lookup 에 입력해서 원인을 파악..
커멘드명령창에 wmic BASEBOARD 라고 입력하면 됨
KB971033
xcopy "srcDirectory" "dstDirectory" /s /i /y 일을 하다보면 특정폴더끼리의 복사를 빈번하게 사용해야 될 경우가 있다 이때 xcopy 로 배치파일을 만들어두면 편하다 /s 는 하위폴더까지 복사한다는 옵션 /i 는..
Fetch & Merge 로컬에서 작업을 하다보면 원격저장소에 변경사항이 생긴다. 클론받은 이후에 원격저장소에 누군가 소스를 푸시하면 이 변경사항을 다시 로컬로 가져와야 하는데 이 과정을 fetch로 원격저장소의 변..
좀 어렵기는 하지만 Git은 정말 좋은 도구이다. Git을 쓰기 시작하면서 SVN이 얼마나 불편하고 구린지를 이해할 수 있다. 어쨌든 GitHub의 엄청난 성장아래 이제는 대부분의 오프소스 프로젝트들이 GitHub로 이전..
parameter argument C++ 표준 에서는 정확하게 argument와 parameter를 정의했다. (C++ 기초플러스 4판 320p ~ p321p) 파라미터(parameter)란 무엇인가? ※ 함수의 전달되는 값을 넘겨받는 데 쓰이는 변수 ※ 파라..
컴파일러는 컴파일한 결과를 에러와 경고라는 진단 메시지로 출력한다. 모든 문법이 정확하다면 아무런 진단 메시지도 출력되지 않지만 사람이 컴퓨터가 아닌 한 보통은 한 두 개 정도의 메시지를 받게 된다. 이..
C++로 코드를 짜는 경우 중복컴파일을 막기위해 헤더파일에 #ifndef AAA_H #define AAA_H . . . #endif 를 써주는 데 이것 대신 맨 윗줄에 #pragma once 한줄만 써주면 동일한 효과를 얻을 수 있다. 게임 프로그래..
닷넷 프레임워크 기반 프로그래밍에서 회자되는 내용 중에 "어려운 범주"에 속하는 주제들이 몇 가지 있는데, 그 중 하나가 AppDomain에 관련된 것입니다. 닷넷 프레임워크는 전통적인 프로그래밍 모델인 프로세스..
未处理 System.InvalidOperationException Message=无法关闭撤消单元,因为不存在已打开的单元。 Source=PresentationFramework StackTrace: 在 MS.Internal.Documents.UndoManager.Close(IParentUndoUnit unit, U..
https://msdn.microsoft.com/en-us/library/hh925568(v=vs.110).aspx
작성 : 김수영(Microsoft Visual C# MVP) .NET N'Gene(http://www.dotnetngene.kr) 훈스닷넷 SYSOP(http://www.hoons.kr) 버전 : 1.0 보통은 사용하려는 객체를 모두 초기화 하고 사용한다. 하지만 때에 따라서(메..
Process.Start(new ProcessStartInfo("explorer.exe", "\"" + @"http://mhchoi8423.tistory.com/" + "\"")); 출처 : http://stackoverflow.com/questions/14585709/openning-a-url-containing-a-query-string
String.IsNullOrEmpty - 지정된 문자열이 Nothing 이거나 Empty 문자열인지 여부를 나타냅니다. - null 이거나 String.Empty String.IsNullOrWhiteSpace - 지정된 문자열이 Nothing 이거나 비어있거나 공백문자로..
다양한 프레임워크와 라이브러리를 사용하는 요즘의 프로그래밍을 하다가 보면 의례 빠지지 않고 나오는 이름이 Context 다. 웹 프로그래밍을 하는 경우에도 보면 심심찮게 등장하는 클래스들 중에 Context 라는..
앞선 글에 이어 SynchronizationContext 에 관해서 좀더 이야기 해 보자. 이제까지 코드 혹은 객체와 Thread를 커플링 시키는 방식으로 동기화를 구현하는 것에 관해서 이야기 했는데, 여기서 한가지 필수적인 메..
우선 Synchronization, 동기화의 의미에 대해 좀 살펴봐야 겠는데, 일단 동기화 라고 하는 것은 멀티스레드와 관련이 있는 단어다. 즉 싱글스레드에서는 동기화라고 하는 개념은 없다고 생각하자. 그럼 멀티스레드..
사용 방법 view source print? 1. string strUrl = "http://mhchoi8423.tistory.com" ; 2. // 총 2개의 POST 데이터 만들기 3. string strPostData = string .Format( "id={0}&pw={1}" , "idvalue" , "passwordval..
예전에, .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..
void RegisterDLL(string filename) { var process = new Process(); process.StartInfo.FileName = "regsvr32.exe"; process.StartInfo.Arguments = "/s \"" + filename + "\""; process.StartInfo.UseShellExecu..
<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; } 주의할 점은 -, ], \ 앞에는 \를 하..
Console.WriteLine("{0:+00;-00}", 10); 출력 : +10 Console.WriteLine("{0:+00;-00}", -10); 출력 : -10
C# 코드 파일은 C 계열 언어와 달리 .cs 파일 하나에 코드를 구현한다. 구현에 있어 클래스가 길어질 수 있는데(클래스가 장대하게 길어지면 그것도 디자인을 잘못한듯) #region-#endregion을 이용하여 코드를 문..
https://msdn.microsoft.com/ko-kr/magazine/dd419663.aspx
Win32 API나 윈폼에서 한글 입력을 막기 위해 IME 관련 메시지들을 처리했던 기억이 있습니다. WPF와 Silverlight에서는 InputMethod 클래스의 SetIsInputMethodEnabled 메서드를 사용해서 쉽게 처리할 수 있습니..
.NET 프로그래밍을 하는 데에 있어 한가지 장점을 꼽으라면 전에 비해 상당히 쉬워진 멀티쓰레드 프로그래밍이라고 할 수 있다. 하지만 많은 개발자들이 놓치는 부분이 쓰레드에서 UI를 접근하는 부분이다. 우선..
(1) Intro 윈폼을 건드려본 사람은 Label 과 TextBox 컨트롤은 매우 친숙할 것이다. WPF 에서는 여기에 TextBlock 이라는 컨트롤이 추가되었는데, 무엇이 다른걸까? 우선 MSDN 에서 각각의 컨트롤을 어떻게 정의했..
WPF에서는 메인스레드에서 생성한 컨트롤에 다른 스레드가 접근하지 못하도록 되어있습니다. 접근하려고 하면 다음과 같은 에러메시지에 직면하죠 : “다른 스레드가 이 개체를 소유하고 있어 호출한 스레드가 해..
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..
ControlTemplate을 정의할때 부모 컨트롤의 속성을 받아들이기 위해 TemplateBinding을 사용한다. 즉, ControlTemplate을 버튼 내부에 정의한다고 가정했을때 해당 ControlTemplate 내의 Rectangle 요소와 버튼의..