개발
-
는 저번에 자바로 했던 것의 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 입력상자 여기에 사용할…
-
웹페이지 만들면서 느꼈던 거지만 디자인패턴은 이해하기가 정말 힘든것 같다 (…..) 지난 겨울방학때 만들었던 홈페이지는 Code Igniter를 이용해서 MVC(Model-View-Controller)를 대충 봤는데 (사실 RoR로 계획하고 있었는데, RoR도 MVC였는데…?) 여튼 이번에 갑작스레 WPF를 접하게 되어서 연구실 형에게 들어보니 데이터바인딩을 해보면 신세계라고 해서 우와 나도 해봐야겠다 해서 해봤는데 아무리 생각해도 이건 윈폼에서 하던거랑 별반 다를게 없어서 조금 더 알아보고…
-
Shared Library Windows에서 .dll(동적라이브러리) 파일과 비슷하게, gcc/g++에서는 컴파일 할때 공유 라이브러리를 사용할 수 있다. 공유 라이브러리를 만들고 사용하는 방법은 다음과 같다. 공유 라이브러리로 만들 코드는 -fPIC 옵션을 사용해서 목적파일까지만 생성하고, 해당 목적파일과 -shared 옵션을 이용하여 so파일을 생성한다. 이때 생성할 파일의 이름은 lib라는 접두어가 붙는다. 생성된 so파일을 사용하는 실행파일의 코드는 다음과 같은 옵션을 붙여서 컴파일 한다.…