본문 바로가기

프로그래밍

SonicFileFinder - 비쥬얼스튜디오 파일찾기 Free Add-In 비쥬얼 스튜디오에서 어시스트를 사용하지 못할 경우, 파일서치에서 다소 불편한감을 느낄수밖에 없는데 그럴때 사용하는 Free Add In 중 하나를 소개하고자 한다. SonicFileFinder 라는 프로그램인데, 메인화면을 보니 다운로드는 vs2005 부터 vs2015 최신버전까지 지원하고 있다. 링크 다운을 받으면 위와 같이 3개의 파일이 있는데, 비쥬얼스튜디오를 끈 상태에서 SonicFileFinder3.1.vsix 를 실행해 주면 된다. 설치 완료후, 다시 vs를 실행하면 도구 탭에 추가되어 있다. 처음에 단축키가 설정되어 있지 않은데, 도구->옵션에서 VS 핫키를 설정을 해야 한다. 여하튼 Start Search를 클릭하면 다음과 같은 팝업창이 뜨게 되는데.. 위와 같이 창은 2개의 모드를 지원한.. 더보기
C# nullable 형식 - 포인터화? C# 문법을 접하면서 놀라운것중 하나는 바로 nullable 형식이다. nullable 형식은 System.Nullable 구조체의 인스턴스이다. 바로 nullable 형식은 내부 값 형식의 올바른 값 범위뿐 아니라 null 값도 나타낼 수 있다 포인터는 아니지만 null 대입 허용을 하겠다는 것이다. Nullable nullInt = null; Nullable nullInt = 100; 이런식으로 기본형 데이터 말고 null값을 대입할 수 있게 해준다. 또한 귀차니즘을 위해 축약형도 제공을 하고 있는데 바로 '?' 라는 키워드이다. bool? nullBool = null; bool? nullBool = true; 바로 타입 바로뒤에 ? 를 붙여주면 null 대입이 허용된다. null허용이 된다면 해당데.. 더보기
데이터 해쉬 - 해킹방지 서버 클라이언트 상관없이 해킹에 쉽게 노출이 될 수 있는 데이터들은 여러가지 방법이 있겠지만, 일반적으로 해쉬코드를 이용하여 메모리 해킹에 대비한다. 해쉬코드를 이용한 가장 흔한 예는 바로 웹사이트의 비밀번호이다. 사용자 비밀번호를 MD5 같은 해쉬코드로 생성하여 저장하기 때문에 관리자도 알 수 없게 만드는 방법이다. MD5 해쉬는 가장 많이 쓰이는 해쉬코드이며 인터넷 검색만으로도 생성기를 쉽게 찾을 수 있다. 그래서 분실된 비밀번호는 가르쳐주지 않고, 재설정해야 한다. 이렇게 공용으로 쓰이는 해쉬제너레이터는 인코딩에 비해, 디코딩은 극도로 어렵게 만들어야 한다. MD5, SHA 같은 해쉬가 괜히 유명해진 것이 아니다. 게임에 쓰이는 데이터들도 비슷한 방법을 사용한다. 이벤트가 발생할때마다 얻어오는 형태.. 더보기
스택과 힙 메모리 - 값으로 참조형식 참조로 참조형식 struct는 밸류타입 class는 참조타입이라고 이전에 설명을 하였다.http://honestgame.tistory.com/2 일반 변수의 경우, Call by value 이냐 Call by refrence 차이는 너무나도 많은 예제와 내용이 있다 뭐 Swap함수로 함수 파라미터를 value로 전달하면 바뀌지 않고 ref로 전달하면 잘 바뀐다는 그런 예제는 많으니 여기서는 생략. C#에서는 밸류타입이냐 참조타입이냐를 잘 구분해야는데 기본데이터타입, 열거형, 구조체를 제외한 클래스, 배열(제너릭포함), 델리게이트, 인터페이스는 참조타입이다. class PassingRefByVal { static void Change(int[] pArray) { pArray[0] = 888; // This change a.. 더보기
Property - Get, Set C++ 에서 멤버의 은폐를 위해 Get(), Set() 하던짓을 C# 에서는 프로퍼티 제공으로 귀찮음이 덜하게 되었다. public int itemCode { get; set; } 이렇게 하면 자동으로 구현이 된다. public int itemCode { get; } 이렇게 하면 읽기 전용 여기부터는 에러사례.. public int itemCode { set; } - 에러!!이렇게 하면 쓰기 전용이 될 것 같지만, 에러를 내며 VS 님이 친절히 자동구현 속성은 접근자가 필요하다고 설명한다. 그래서public int itemCode { protected set; } - 에러!!이렇게 하면 다시 한번 접근자의 엑세스 가능 한정자는 get, set 이 모두 필요하다고 에러를 뿜어 내신다. 잘못된 사례를 더 소.. 더보기
파티셜 클래스와 파티셜 메소드 public partial class CoOrds { private int x; private int y; public CoOrds(int x, int y) { this.x = x; this.y = y; } } public partial class CoOrds { public void PrintCoOrds() { Console.WriteLine("CoOrds: {0},{1}", x, y); } } class TestCoOrds { static void Main() { CoOrds myCoOrds = new CoOrds(10, 15); myCoOrds.PrintCoOrds(); } } // Output: CoOrds: 10,15 C# 에서는 이렇게 partial 이라는 키워드를 사용하여클래스의 필드와 메소.. 더보기
비쥬얼스튜디오에서 활성화된 파일 추적 VsisualStudio에서 현재 활성화된 파일이 솔루션 탐색기에서 추적이 되는 옵션이 있다. 작업을 하다보면 현재파일이 어디에 속해 있는지 확인할 필요가 있는데 이때 필요한 옵션이다. 대부분 디폴트 설정이 꺼져 있어 켜줄려면 도구-> 옵션에서 켜줘야 한다. 프로젝트 및 솔루션 -> 일반 항목에서 솔루션 탐색기에서 활성화된 항목 추적을 켜주면 된다. 끝. 더보기
유니티에서 카메라 2대이상 설정하기 유니티에서도 여러개의 카메라를 지원하는데, 특히 3D 게임에서는 2대이상이 필수일 것이다. 하나는 캐릭터같은 3D 오브젝트를 렌더하는 카메라, 그리고 다른 하나는 UI전용 카메라를 예로 들수 있을 것이다. 좀 더 디테일하고 다양하게 하기 위해 3,4 대 이상의 카메라를 사용하는 경우도 있다. 일단 레이어의 개념만 잘 이해하면 카메라 설정은 그다지 어렵지 않다. 하나의 씬 안에 여러개의 오브젝트가 있으면 각각 렌더할 카메라를 지정하는 개념이 레이어이다. 먼저 카메라 셋팅전 화면상의 오브젝트의 레이어를 각각 구분해 준다. 그리고 어떤 레이어로 설정된 오브젝트를 그릴지 카메라 컴퍼넌트의 레이어를 수정해 준다. 이 레이어와 연결되는 개념이 Culling Mask인데, 어떤 레이어를 렌더할 것인지 지정해주며 복수.. 더보기
IComparable, IComparer 비교정렬 int CompareTo( Object obj ) 정렬함수로써리턴값이 0보다 크면 해당 인스턴스가 정렬에서 앞으로 오고, 작으면 그 반대이다. C#에서 기본타입은 IComparable 를 상속받으며 CompareTo() 함수를 지원하고 있다. public sealed class String : IConvertible, IComparable, IEnumerable, ICloneable, IComparable, IEquatable, IEnumerable{public int CompareTo(String strB);} public struct Int32 : IFormattable, IConvertible, IComparable, IComparable, IEquatable{public Int32 CompareT.. 더보기
Raknet 네트웍 게임엔진 한글번역 UDP패킷 패킷의 전달은 UDP와 TCP로 보내는 방식이 있다. UDP는 전송딜레이가 적은 대신 데이터의 신뢰성이 떨어지고 TCP는 그 반대다. 따라서 게임에는 UDP가 적격이다. 하지만, UDP의 문제점들이 있다. 1. 전송도중에 패킷이 소실될 가능성 있다(재전송이 요구된다) 2. 수신측에서 수신받은 패킷들의 순서가 바뀔 수 있다(수신측에서 순서의 재배치가 필요) 3. 일단 수신된 패킷의 데이터는 무결하지만, 전송중에 가로채어 수정될 수 있다(패킷데이터의 변경여부의 체크필요) 4. UDP패킷은 접속허용의 선행처리가 필요없다. 즉, 권한없는 데이터를 받을 위험이 있다(권한부여필요) 5. UDP전송은 흐름제어와 데이터집적이 없다. 그래서 수신자의 수신용량이 초과되어 더 이상의 전송이 무의미해질 수도 있다(.. 더보기