본문 바로가기

전체 글

(220)
[人터뷰] 모스크바에서 만난 개발자, 알렉세이 안녕하세요, 개발자 윤진입니다. 모스크바, 어느 추운 겨울날,한 건물 귀퉁이에 위치한 커피숍에서 러시아 개발자와 수다를 떨었습니다. 이런저런 얘기를 나누다가 몇가지 흥미로운 사실이 있어,사전에 허락을 받고 짧고 간단하게 블로깅을 합니다. 러시아 개발자의 이름은 알렉세이 콘드라쇼프(Alexey Kondrashov)입니다.현재 모스크바 오블라스찌 동쪽에 위치한 Ре́утов라는 마을에 살고 있습니다. 알렉세이는 만 14세때 방과후 수업으로 파스칼을 배웠습니다.알렉세이 뿐만 아니라 많은 학생들이 위의 과정에서 파스칼을 배웠다고 합니다.현재는 학생들이 학교 정규수업으로 컴퓨터 프로그래밍을 배우고 있습니다. 이후 모스크바 시내에 위치한 РЭУ 대학교에서 Applied Informatics in Economics를..
[C#] delegate, anonymous delegate, lambda 용례비교 안녕하세요, 모스크바에서 생활하고 있는 개발자 윤진입니다. C#에는 여러가지 흥미로운 기능이 많이 있습니다.C는 포인터를 통해 함수를 변수처럼 이 함수, 저 함수로 전달할 수 있는데요,C#에서도 delegate나 anonymous delegate, lambda 기능을 이용하여 메소드를 전달할 수 있습니다. 위의 방법들은 결국 메소드를 아규먼트로 전달하려는 목적으로 탄생했기에 큰 틀에서 보면 유사합니다.1) 우선 전달하고자 하는 메소드의 원형을 선언합니다.2) 그리고, 원형에 맞는 메소드(들)을 정의합니다.3) 마지막으로 정의된 메소드를 아규먼트로 넣어 다른 메소드로 전달합니다. - delegatedelegate를 선언하기 위해서는 일반 메소드처럼 선언하고 delegate 키워드만 앞에 추가하면 됩니다.(..
[C#] using과 Dispose()로 리소스 정리하기 안녕하세요, 모스크바에서 생활하고 있는 개발자 윤진입니다. C#을 뒤적거리며 보다가 using 구문에 감탄하지 않을 수가 없었습니다.C는 코딩시작부터 끝까지 메모리 관리에 각별히 신경써야하는데요.C#의 using은 문제상황에서 알아서 리소스를 정리할 수 있는 메소드를 불러주니,메모리는 물론 각종 커넥션까지 분명하게 맺고 끊을 수 있겠네요.원래 예외상황처리로 코드가 지저분해기 마련인데 using이라면 지저분할 일도 적겠죠. using 구문에 사용하려는 class는,우선 리소스 정리를 위한 메소드를 만들어두어야 합니다.- IDisposable interface를 상속하고,- 리소스 정리를 위한 void Dispose()를 구현해 두어야 합니다.C#에서는 '인터페이스를 Dispose 패턴으로 구현'할 수 있게..
[C#] 필드 사용가능? - interface, abstract class, partial class, virtual method 안녕하세요, 모스크바에 살고 있는 개발자 윤진입니다. C로 개발을 할때는 헤더파일에 온갖 함수선언을 하며,공동작업을 하는 개발자들끼리 전체적인 그림을 그리곤 했습니다.그럴때마다 Java의 interface 기능이 무척이나 부러웠죠. :) C#에서는 다양한 방법으로 모듈을 설계&구현할 수 있습니다.- interface- abstract class- partial class- virtual method 그렇지만, 각각이 목적과 쓰임이 다릅니다.interface는 1) 메소드, 2) 속성, 3) 인덱서, 4) 이벤트 만을 사전에 선언하여,해당 interface를 상속받는 class가 빈 껍데기를 구현하도록 유도하고 있습니다.만약 아래 코드처럼 interface에 필드를 넣으면, 컴파일 에러가 발생합니다.컴파일..
[C#] 속성에 대한 간단한 테스트 안녕하세요, 요즘 도통 개발을 하지 않는 개발자 윤진입니다. C#의 속성과 관련된 부분을 보다가 간단히 코드로 확인하고 싶은 바가 있어 남깁니다. namespace ConsoleApplication2 { class Program { class Man { private int age; public string Name { get; set; } public int Age { get { return age; } set { if (value > 10) age = 10; } } } static void Main(string[] args) { Man man = new Man(); man.Name = "Jin"; man.Age = 2; Console.WriteLine(man.Name + " : " + man.Age)..
[C#] 늘 헛갈리 Modal vs Modeless 안녕하세요, 모스크바에서 생활하고 있는 개발자 윤진입니다.벌써 2월이 넘었네요.이제 3월이면 한국으로 귀국합니다. 우훗. 윈도우 프로그래밍을 하려고 이곳저곳 기웃거리며 귀동냥을 하다가,Modal과 Modeless의 작명 이유에 대해 쓰여진 글을 발견하였습니다.예전부터 왜 저런식으로 작명했는지 궁금했었는데 오늘에서야 드디어 답을 얻었습니다. With a modal dialog, you set your application in a particular mode (a different "state" if you will), whereby only actions pertaining to that "mode" are accepted, hence preventing UI actions outside of the d..
[C#] 소수점이 있는 숫자는 float일까 double일까. 안녕하세요,이번에는 아주 간단한 사실 하나만 확인하고 넘어가겠습니다. 소수점이 있는 숫자 뒤에 'f'(float0나 'd'(double)를 붙이지 않으면,해당 숫자는 어떤 타입이 될까요?정답은 C나 C++과 마찬가지로 double 타입입니다. class Program { static void Main(string[] args) { Console.WriteLine((3.14).GetType()); } } 위의 코드를 실행하면,"System.Double"이라는 결과가 나옵니다. 그렇다면, float 변수에 아무 suffix가 없는 숫자를 넘기면 어떻게 될까요? class Program { static void Main(string[] args) { float f = 3.14; Console.WriteLine..
[C#] readonly 변수를 사용하는 이유는? 안녕하세요,모스크바에서 개발과 담을 쌓고 살고 있는 개발자 윤진입니다. C#에는 readonly라는 직설적인 이름의 키워드가 있습니다.변수를 상수로 만들어버려, 변수값을 바꿀 수 없게 만드는 const와 유사해보이기도 하는데요. readonly는 const와는 다르게 compile 시점에 값을 확정하지 않습니다.반면, const는 소스코드에 명시된 변수값을 compile 시점에 확정하지요. readonly는 프로그램이 메모리에 올라가는 runtime 시점에 이르러서야 값을 확정할 수 있습니다.다음 두 경우에만 변수를 초기화할 수 있고 이후에는 갱신할 수 없습니다. 1) 변수를 선언하는 경우2) 생성자 안에서 변수값을 바꾸는 경우 기기가 부팅하면서부터 함께 초기화되는 풀 스크린 UI 앱의 경우,디스플레이의..