개발

  • const는 무조건 앞에 있는 것을 수식한다. 가령 const int* p; 의 경우에는 p가 가리키는 int의 값을 수정하지 못한다. [code language=”c”] int n = 3; const int* p = &n; *p = 4; // error! [/code] int const* p의 경우에도 위와 마찬가지다. 그러나 int* const p의 경우에는 p의 값을 변경하지 못한다. 즉, 한번 가리킨 곳을 계속…

  • 직순열을 출력하려면 ‘이미 출력한 숫자들의 정보’를 알아야한다. 그런데 문제는 ‘순열’이라면 조합과는 다르게 순서가 다르면 다른 종류라는 것이다. 이런저런 생각을 해보면 위와같은 정보를 담기 위해서는 boolean 배열을 넘기는 것이 좋아보이기는 하지만 ‘배열’은 포인터로 넘어가기 때문에 경우에따라 다르게 사용하려면 깊은 복사를 해야하고, 그러면 그만큼 오래걸린다. 10!만해도 3628800가지가 나오기 때문이다. 그래서 떠올린 것은 액세스도 빠르고 표시하는 것도 빠르도록…

  • 는 저번에 자바로 했던 것의 C#판이다. 자바에서 어떤 패키지 내부의 클래스 이름을 가져오는 것은 (내가 다른 방법을 안찾아보기는 했지만) 패키지에 들어가서 자바 바이너리파일 이름을 가져오는 것으로 구현했지만, C#의 경우에는 네임스페이스를 가지고 내부 클래스들을 가지고올 수 있으므로 그렇게 하면 될 듯싶다. 당연한 얘기지만 리플렉션을 이용한다. 1. 현재 실행중인 어셈블리를 가져온다. 2. 1의 어셈블리에 정의되어 있는 모든…

  • 자바는 뭔가 C#보다 엄격한 면이 있다. 자바 파일(.java)당 퍼블릭클래스가 하나뿐이라던가 하는? 그거 말고도 패키지로 묶으면 해당 패키지의 이름과 똑같은 디렉터리 내부에 해당 클래스가 존재해야한다는 것도 그렇다. 가령 다음과 같은 코드를 보자. [code language=”java” title=”MainClass.java”] import mypackage.*; public class MainClass { public static void main(String[] args){ SuperClass s = new SubClass1(); SuperClass s2 = new SubClass2();…

  • 사실 내가 맨처음 배웠던 건 4.0이었는데, 4.0에는 dynamic이나 람다같은게 추가된걸로 알고… 5.0은 잘 모르겠는데 async, await등등 이었던 걸로 기억하고… 오늘 VS를 켰는데 C# 6.0에 관한 내용이 있길래 들어가봤는데 포스팅은 4월 29일에 된거 (…) 그래서 살펴봤더니 뭔가 이건 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 일단 출처 읽기 전용 프로퍼티 get만 가지고 있는 프로퍼티는 선언과 동시에 초기화하거나 생성자에서 초기화가 가능하다.(readonly와 비슷하게) 이것은…

  • virtual / override와 new 모두 다형성과 관련된 키워드이다. 1. virtual/override virtual로 지정된 부모클래스의 메서드는 가상메서드가 된다. 이 메서드는 override로 지정된 같은 이름(같은 리턴형식, 같은 파라미터 형식)을 가진 자식 클래스의 메서드가 가려버린다. [code language=”csharp”] class Program { public static void Main(string[] args) { BaseClass instance = new SubClass1(); instance.Func1(); instance.Func2(); } } class BaseClass { public…

  • 1. 일단 MinGW를 설치한다. 기본적으로 gcc만 설치되는데 필요하면 g++이나 mingw32-make도 설치한다. 2. 환경변수를 수정한다. (Windows 10 기준으로) 시작버튼 우클릭 -> 시스템 -> 시스템 고급 설정 -> 환경변수 -> 시스템변수에서 PATH를 찾아 더블클릭 후 맨 뒤에 ;C:\MinGW\bin을 추가한다. 물론 경로라서 케바케인데 경로는 gcc.exe, g++.exe등이 존재하는 경로를 추가한다. 3. 저번에 만들어둔 프로필을 수정한다. PowerShell에서 Edit-Profile을 실행시키면 저번에…

  • 출처 일단 vim을 설치한다. (http://www.vim.org) 그리고 나서 실행해본다. ((vim설치폴더)/vim.exe) 문제는 얘를 어떻게 vim만 입력해서 불러오느냐의 문제이다. 얘는 alias를 설정해야한다. 무턱대고 다음을 입력해본다. set-alias vim ‘c:/program files/vim/vim74/vim.exe’ 그러고나서 vim을 입력해보면 vim이 잘 실행된다. 그런데 문제는 얘는 일시적인 명령이라서 PowerShell을 껐다가 다시 실행하면 vim을 입력하면 찾지를 못한다. 그래서 얘를 유지시키는게 위의 출처의 주 내용이다. 1. 일단 get-executionpolicy를…

  • 용어를 뭐라고 해야할지 모르겠어서 막 써보면 커스텀 스타일은 리소스에 정의를 하고, x:Key가 존재하면 해당 키를 스타일로 참조하는 컨트롤만 적용이되고, 키를 정의하지 않으면 해당 컨트롤의 하위의 모든 컨트롤에 적용된다. 가령 다음과 같은 그리드에 버튼을 만든다고 한다. 간단히 만들어보기 다음과 같은 버튼 두개를 만든다 버튼에 스타일을 적용하기 위해서는 버튼의 상위인 그리드나 윈도우(혹은 유저컨트롤)의 리소스에 등록해야한다. 그리드에 정의를…

  • ListView나 ListBox는 하나의 객체만 바인딩하는게 아니라, 객체의 묶음을 바인딩해야하기 때문에, 데이터 클래스도 저번하고는 좀 다르게 설계해야한다. 그러기 위해서는 다음과 같은 클래스를 상속한다. 사실 저 제네릭클래스는 상속하기만 하면 상관이 없다. 여기서 T는 그냥 데이터만 저장하는 용도로만 사용해도 된다. INotifyPropertyChanged같은 것을 상속하지 않아도 상관이 없다. 테스트로 만들 WPF 어플리케이션은 다음과 같이 생겼다. ListView ListBox 입력상자 여기에 사용할…