1월, 2016의 게시물 표시

TNT 40,200개 폭발! With SEUS Shader Mod

이미지
  작년 초에 i7 5960x CPU와 GTX980 GPU, 32기가 램을 사놓고 정작 한 건 서버 돌리기와 개발 뿐... 이런 사치스러운 짓도 한 번쯤 해보는 게 어떨까 싶어서 돌려봤습니다.   장관이네요.

Naturally 7 - Fix You (Official Music Video-Extended Version) (Coldplay Cover)

이미지
  유튜브에서 발견한 아카펠라 그룹 Naturally 7의 Fix You(Coldplay) 커버 영상입니다.   중학교 때 아카펠라를 했었는데 이 영상을 보니 다시 그 때로 돌아가 아카펠라에 미쳐보고 싶네요 ㅠㅠ   당시 베이스 파트를 맡았었는데 처음에 두 두 두 하며 베이스 나오는게 인상적입니다. 흐어 다시 하고싶어요ㅠㅠㅠ

Image.Save 호출 중 ExternalException 발생시 확인사항

  회사일을 하다가 Image.Save 메서드를 호출했는데 ExternalException이 발생해서 처음엔 using문 사용으로 dispose된 객체를 호출해서  그랬나 싶어 확인했지만 코드가 아래와 같이 돼 있었기에 그럴 일은 없었습니다. using (var thumb = originalImg.Clone() as Image) { //... thumb.Save($"{path}{filename}.jpg", ImageFormat.JPEG); //... thumb.Save($"{path}{filename}.jpg", ImageFormat.JPEG); }   가장 흔한 이유인 삭제된 객체에 접근하는 에러 가 아니라면 대체 뭘까? 하고 고민하다가 아주 어처구니 없는 사실을 깨달았습니다.   첫 번째 Save 호출 후 중간에 path가 변경되었고, 그 path는 존재하지 않는 경로 였던 겁니다. 경로를 생성한 뒤 호출 하니 System.Runtime.InteropServices.ExternalException 에러 없이 정상적으로 작동 하더군요. 젠장. using (var thumb = originalImg.Clone() as Image) { //... thumb.Save(); if (!Directory.Exists(path)) Directory.CreateDirectory(path); thumb.Save($"{path}{filename}.jpg", ImageFormat.JPEG); }   허허허허... 뭐 이런 어처구니 없는 경우가... 저와 같은 실수를 하는 분이 많진 않을 거라 봅니다만 혹시라도 저처럼 자신의 머리를 과신해서 가까운 이유를 놔두고 멀리서 원인을 찾고 계신 분들이 이 글을 보시고 도움이 되길 바라며 적어봤습니다. 즐코딩하세요.

응용 프로그램이 중단 모드에 있습니다 해결 방법 (Visual Studio)

이미지
  Visual Studio 2015로 여느 때와 같이 C# 프로그램을 디버깅하는 도중 뜬금없이 건든 것도 없는데 아래와 같은 메세지가 떴습니다.   FormMain의 Load 이벤트 핸들러에 중단점을 걸어놓았는데 뜬금없이 응용 프로그램이 중단 모드에 있습니다 라는 메세지와 함께 중단점 소스는 안 보이고 중단 모드로 진입하더군요.   그래서 구글링 한 결과, 해결 방법은 매우 간단했습니다.   위와 같이 도구 - 옵션 - 디버깅 - 일반에서 관리되는 호환성 모드 사용을 체크 하시면 더이상 응용 프로그램이 중단 모드에 있습니다가 뜨지 않고 정상적으로 디버깅 할 수 있습니다.

얼음 비눗방울 예쁘당

Frozen soap bubbles from ZALUSKArt on Vimeo . Vimeo에서 발견한 얼음 비눗방울 영상 유리구슬에 눈꽃 내리는것같댜

C# 이 SocketAsyncEventArgs를 사용해 비동기 작업이 이미 진행중입니다 해결 방법

  C# 소켓 프로그래밍 중, Socket.SendAsync(SocketAsyncEventArgs e) 메서드를 사용해 List 의 모든 클라이언트에 대해 전송 작업을 하다 보니 클라이언트가 두 개 이상이 될 경우 SocketAsyncEventArgs를 사용해 비동기 작업이 이미 진행중이라는 에러가 발생했습니다.   그래서 이것 저것 시도해보다가 결국 SendAsync를 BeginSend로 바꿔 해결했습니다. 기존 코드: foreach (var client in clients) { client.SendAsync(args); } 변환 후 코드: foreach (var client in clients) { client.BeginSend(data, 0, data.Length, SocketFlags.None, new AsyncCallback(SendCallback), client); } // SendCallback private void SendCallback(IAsyncResult IAR) { Socket client = IAR.AsyncStatus as Socket; client?.EndSend(IAR); }

윈도우 Telnet(텔넷) 기능 활성화

이미지
Telnet   서버 개발을 하다 보면 Telnet으로 값이 잘 들어오는지 간단하게 확인하고 싶어질 때가 있습니다. 하지만, 정확히 어떤 윈도우 버전부터인진 기억이 안 나지만 윈도우 기본 컴포넌트에 텔넷이 깔려있지 않아 실행할 수 없는 경우가 발생했습니다. (서비스 목록에도 Telnet이 없더군요)   그래서 이번엔 Telnet을 활성화하는 방법을 써볼까 합니다. Telnet 활성화하기 첫 번째 방법: 윈도우 구성 관리자 사용하기   우선 실행 - appwiz.cpl - 엔터 로 프로그램 추가/제거 창을 엽니다.   그리고 왼쪽의 Windows 기능 켜기/끄기  링크를 눌러줍니다.   그리고 나타난 다이얼로그에서 텔넷 클라이언트  혹은 Telnet Client 를 체크하시고 확인을 눌러주고 설치를 진행해주세요. 두 번째 방법: 콘솔에서 DISM 사용하기   관리자 권한으로 실행된 명령 프롬프트에서 DISM /online /Enable-Feature /FeatureName:TelnetClient  를 입력해 활성화하시면 끝납니다. 완료   이제 텔넷을 사용할 수 있습니다.

C# 함수 안에서 함수 선언하기 (C# Function inside a function)

  루아, 루비, F# 등등 수많은 언어에는 함수 안에서 함수를 선언할 수 있는 기능이 있습니다. 예를 들어 루아의 경우 아래와 같이 간단하게 함수 안에서 함수를 선언할 수 있죠. function MainFunction() -- LOGIC local function Print = function(str) print(str) end end   하지만 C#에서 아래와 같이 코딩을 한다면 에러가 나게 됩니다. public static void Main(string[] args) { void Print(string a) { Console.WriteLine(a); } }   그렇다면, C#에선 함수 안에서 함수를 선언하기란 불가능한 것일까요? 만약 그랬다면 제가 이 글을 쓰고 있지 않겠죠. 당연히 방법은 있습니다. Action 대리자와 Func 대리자를 사용 하시면 됩니다. Action 대리자   Action 대리자는 함수에 반환값이 없을 때 사용 합니다. 즉, 어떤 함수 내부에 void형 함수를 선언하고 싶을 땐 Action 대리자를 사용하시면 됩니다.   Action 대리자의 선언부에선 최대 16개의 요소가 인수의 형식으로 지정 됩니다. public static void Main(string[] args) { Action PrintMessageRepeat = (message, count) => { for (int i = 0; i < count - 1; i++) { Console.Write(message); } } PrintMessageRepeat("안녕! ", 3); } // 결과: ["안녕! 안녕! 안녕!"] Func 대리자   Func대리자는 함수에 반환값이 있을 때 사용 합니다. 즉, 어떤 함수 내부에 void형이 아닌, int, stri