본문 바로가기

2017/02

(12)
[人터뷰] 개발자의 길에서 벗어나 영업으로 떠난 С군 안녕하세요,모스크바에서 생활하며 개발은 하지 않는 개발자 윤진입니다. 이 곳에서 정말 다양한 개발자를 만났습니다.한 사람 건너면 반드시 프로그래머를 찾을 수 있을 정도로 많습니다. С군의 요청으로 오로라 사진으로 대체 이번에 만난 사람은 현재는 영업업무를 하고 있는 '전직' 개발자 С군입니다.С군과의 인터뷰는 개인적으로 굉장히 흥미로웠는데 실명을 밝히지 못해 아쉽습니다. С군은 외고를 나와 컴퓨터공학과를 나왔습니다.C군이 대학을 다니던 때는, Java가 대학수업의 헤게모니를 장악하던 때라정규수업과정의 60% 혹은 그 이상이 Java로 이뤄졌습니다.그래서 대학교 수업때 자연스럽게 Java를 중급 레벨 정도까지 익혔습니다.그렇지만, 취직한 이후 Java를 사용한 적이 없어서 이제는 초심자와 다를바 없다고 하..
[알고리즘] 유클리드 호제법, 간단하게 증명하기 안녕하세요, 모처럼 맑은 날씨의 모스크바에서 겨울을 지내고 있는 개발자 윤진입니다. 알고리즘 책을 뒤적거리다가 유클리드 호제법을 이용하여 최대공약수를 구하는 코드를 읽었습니다.호제법 자체가 워낙 깔끔한 공식인지라 코드도 군더더기가 없더군요. 학창시절때 호제법을 증명했었던 기억이 나는데요,문득 다시 증명을 도출하고 싶어 기억을 더듬고자 합니다. 호제법 증명법에서 가장 재미난 국면은 2군데입니다.처음은 나머지값의 공약수를 구하는 곳이죠. 그리고 두번째는,나머지의 공약수가 최대공약수인 것을 귀류법으로 도출해내는 국면입니다. 비록, 코드는 없지만,이런 깔끔한 알고리즘은 경이롭네요. :)
[C#] Linq 기초용례 기록- 안녕하세요, 모스크바에서 생활하고 있는 개발자 윤진입니다. C#에서는 Language-INtegrated Query를 사용하여 데이터를 조작할 수 있습니다.SQL문에서나 사용했던 쿼리문을-C# 소스코드에서 다른 함수들과 뒤섞어 사용한다는게 흥미롭습니다. 물론, Linq가 SQL 쿼리문과 완전 동일하진 않습니다.변수를 먼저 정의하고 연산문을 사용하는 C# 프로그래밍 루틴과 동일하게,from - in 문을 우선적으로 배치하여 쿼리문에서 사용할 데이터를 한정짓습니다. 그리고 연산을 위한 where문이 나옵니다.where문에서는 from - in에서 추려진 데이터를 가지고 조건연산을 수행합니다. 최종적으로 select는 from - in과 where 문을 거쳐 나온 결과물을 재가공하여 투사해줍니다.select는..
[人터뷰] 모스크바에서 만난 개발자, 알렉세이 안녕하세요, 개발자 윤진입니다. 모스크바, 어느 추운 겨울날,한 건물 귀퉁이에 위치한 커피숍에서 러시아 개발자와 수다를 떨었습니다. 이런저런 얘기를 나누다가 몇가지 흥미로운 사실이 있어,사전에 허락을 받고 짧고 간단하게 블로깅을 합니다. 러시아 개발자의 이름은 알렉세이 콘드라쇼프(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)..