이상한모임 / Kobe Creations
김용균
C# 배우고 싶지만 쉽게 배울 수 없던 너란 언어
위대하신 저스틴님의 말씀
"걍 아무거나 만들어봐요. 그래야 늠 ㅇㅇ"
무릎을 탁!
그래서 뭐든 만들어보기로 했습니다.
using System;
using Haruair.Command;
[Command("feed", "f")]
[Usage("Feeding related commands.")]
public class FeedCommand
{
[Command("me", "m")]
[Usage("Feeding yourself.")]
public void FeedMe()
{
Console.WriteLine("I'm already full.");
}
[Command("monkey")]
[Usage("Feeding the monkey.")]
[Parameter("food", Required = false)]
public void FeedMonkey(string food)
{
Console.WriteLine("You gave {0} to the monkey.", food ?? "banana");
}
}
class ZooApp
{
public static void Main(string[] args)
{
var commander = new Commander();
commander.Add<FeedCommand>();
commander.Parse(args);
}
}
터미널 많이 사용하니까 명령행 관련 라이브러리를 만들어보자.
최대한 모르는 기능을 많이 사용해보기.
테스트 + github + CI(Appveyor) + nuget 패키지 배포.
300불 짜리 저렴저렴 노트북
- 그래도 HDMI가 있어서 발표가 가능 ;ㅅ;
- 똥컴, 윈도 너무 느림 (셀러론, 2기가 램)
- 윈도 밀고 리눅스 환경 (lubuntu 15.10) 설치
코어는 아직도 격변중. 프로젝트 구조만 달라질 뿐, C# 배우기가 목적이고 뭐든 C#이므로 모노로 선택.
Vim을 좋아하지만 Vim에서 사용할 수 있는 Omni-sharp가 VS Code 출시 이후로 지지부진.
Xamarin은 리눅스 디스트로 미지원.
Xamarin의 부모님인 MonoDevelop 사용하기로. 무료!
C# 잘 몰라서 막 작성.
- MDD (MSDN Driven Development)
- SODD (Stackoverflow Driven Development)
리플렉션 The Love.
- Type, MethodInfo, CustomAttributes, Etc.
MonoDevelop이 NUnit과 궁합이 좋다고 해서 NUnit 사용.
- 단위테스트 느낌보다는 좀 BDD 느낌에 가깝게 작성함.
Console.Out
으로 입력과 예상 출력을 비교하는 방식.- 몇 기본 클래스는 별개로 테스트.
깃헙에 그냥 넣었습니다.
이슈 트래커 - 깃헙 리포지터리 - 깃헙
깃헙 짱짱맨.
로컬에서 배포하려고 했는데 로컬 의존성 문제로 뭔가 잘 안됨.
System.NotImplementedException: The method or operation is not implemented.
흔문제 in Linux, Mac
- MSBuild, XBuild, 어쩌고 저쩌고. 해결 방법도 복잡하고 까다로움.
- AppVeyor를 통해서 빌드/배포하기로.
설정 파일 하나면 테스트도 돌려주고 빌드도 해줌
https://github.com/haruair/csharp-command/blob/master/appveyor.yml
https://ci.appveyor.com/project/haruair/csharp-command/branch/master
브랜치도 나눌 수 있고, 버전도 지정 가능하고, nuspec에 인자도 전달해서 버전도 자동으로 올릴 수 있음.
nuget 가입하고 api키 발급한 것 넣음. appveyor에서 암호화.
그래서 이렇게 패키지가 업로드 됩니다.
https://www.nuget.org/packages/Haruair.Command/
이제 누구든지 사용할 수 있는 패키지가 되었습니다.
- Option (--something) 지원
- 파라미터 타입 캐스팅
- autofac 같은 IoC 사용할 수 있도록
- mock 써서 테스트 작성
- 그 외 이것 저것...
발표는 여기까지. 궁금한 내용 있으면 질문해주세요.
- 이메일 onward.edkim@gmail.com
- 트위터 @haruair
- 블로그 http://haruair.com
- haruair/csharp-command
- NuGet
- 발표 후기
음.... 가위손용 커멘드를 만들어볼까용...? 가위손은 언제쯤 되지 그런데.;;;