본문 바로가기

Mono

[mono] Mono 웹 서버와 OWIN 웹 서버의 크래시 이슈 패치 Mono 웹 서버와 OWIN 웹 서버의 크래시 이슈 패치 OWIN 웹 서버 크래시 OWIN(Open Web Interface for .NET) 를 이용하여 mono 환경에서 웹 서버를 띄후 특정 명령으로 웹 서버 프로세스가 크래시가 발생한다. 간단한 아래의 OWIN 호스트를 mono 런타임으로 실행한 후 서버 크래시를 발생해 보자. mono ./OwinConsoleApp1.exe 그리고 터미널을 열어 아래의 명령을 실행해보자. curl -X POST http://localhost:8080 그러면 아래와 같이 서버 프로세스가 비정상 종료되고 아래와 같은 오류 메시지를 보여준다. Unhandled Exception: System.ObjectDisposedException: Cannot access a dis.. 더보기
[mono] mono-service 버그 패치 개요 mono-service 는 .NET Framework 로 작성된 윈도우 서비스(Windows Services) 를 mono 환경에서 구동할 수 있는 도구이다. 윈도우 서비스는 일반적으로 GUI 가 없는 백그라운드로 동작하는 실행 바이너리로 윈도우 운영체제가 서비스를 안정적으로 동작하도록 지원해 준다. mono-service 는 .NET Framework 로 컴파일된 바이너리 및 실행 파일을 AppDomain 을 생성한 후 로드한다. mono-service 가 하는 역할은 일반적으로 POSIX 가 정의하는 유닉스 시그널(Unix Signals) 를 받아 처리하기 위한 용도이다. 맥 또는 리눅스 운영체제는 윈도우 운영체제가 제공하는 서비스의 시작/중지 명령을 이해할 수 없기 때문에 SIGINT, SIG.. 더보기
[MonoDevelop] 두 번째 한글화 버전 승인완료 최근 MonoDevelop 개발툴의 한글화를 좀 더 고도화(?)하여 Pull Request 를 보냈다. 하루가 지나고 바로 approve 되어 차기 릴리즈 버전에 바로 적용이 가능하리라 생각한다. 또한, Xamarin Studio 에도 더 부드러운 한글화를 만나볼 수 있게 되었다.필자가 개별적으로 배포하는 곳은 monodevelop.co.kr 에서 받아볼 수 있다.1차 번역은 오로지 한글화에 목표를 두었다면, 2차 번역은 잘못된 번역과 좀 더 부드러운 번역에 중점을 두었다. 그리고 버전업이 되면서 기존 영문 메시지가 많이 변경이 되었는데, 이 또한 적절하게 수정되었다.번역 품질에도 조그마한 변화를 느낄 수 있길 바라는데, 가령 "View" 를 번역한다면, 뭐라고 번역해야 할까? "뷰", "보기" 등으로 .. 더보기
[MonoDevelop] v5.7.2.2 한글 버전 배포 공지 - MonoDevelop v5.7.2.2 한글 버전 빌드 업데이트 2013년부터 꾸준히 진행해 오던 MonoDevelop v5.7.2.2 한글 버전의 새로운 빌드를 업데이트 했습니다. MonoDevelop v5.7.2.2 한글 버전은 다음의 링크에서 다운로드 받을 수 있습니다. 다운로드 : http://monodevelop.co.kr - 왜 MonoDevelop을 써야하나? 외국 Xamarin 기업에서 Mono 오픈소스 재단을 인수하면서 Mono 가 폭풍성장을 하고 있습니다. 이제 따른 부작용이 Xamarin이 Mono를 통해 수익을 얻으려 하는 것이죠. 물론 돈은 벌어야 하니까요. 따라서 Xamarin Studio 를 사용하고 Xamarin.*.dll 라이브러리에도 GPL 라이선스 제한을 받게 됩니다... 더보기
[Mono] Mono 플랫폼에서 데스크탑 응용 프로그램 개발 3가지 방법 Mono 데스크탑 응용 프로그램 개발 3가지 방법 클라이언트 응용 프로그램 또는 데스크탑 응용 프로그램을 Mono로 만든다면, 어떤 방법으로 만들면 좋을까? 이 세 가지 방법을 알아본다. 1. System.Windows.Forms System.Windows.Forms(일명 윈폼-WinForm)으로 GDI(그래픽 장치 인터페이스(Graphics Device Interface)의 APIs를 객체지향적으로 제공하는 것을 일컷는다. 이제 대한 자세한 설명은 GDI+ 링크를 참고 하기 바란다. 그러나 Mono 환경에서 Windows Forms 개발은 사용자에게 좋은 사용자 인터페이스를 제공하지 못한다. virtual OnPaint(PaintEventArgs e) 가 적절하게 동작하지 않는다. 화면의 창 사이즈를 .. 더보기
크로스 플랫폼 개발 환경 만들기 - (8/11) Mono 개발 환경 만들기 이제 이 정도면 우분투에서 개발하기 위한 환경으로 쓰기에 큰 부족함은 없을 겁니다. 단지 부족한 면이 있다만 LibreOffice로 오피스 작업은 어느 정도 가능하지만, OutLook과 같은 강력한 오피스 소프트웨어가 없는 것이 아쉽네요. 이제 Mono개발 도구인 MonoDevelop과 몇 가지 유용한 소프트웨어를 찾아서 설치해 봅시다. 이번에는 우분투의 "우분투 소프트웨어 센터"를 통해 설치하려고 합니다. 지금까지 터미널로 작업했던 소프트웨어 설치 작업은 이 우분투 소프트웨어 센터를 통해 가능합니다만, 터미널은 리눅스 사용에 있어서 꼭 익숙해져야 하기에 좀 고생해서 터미널로 작업을 한 것이니, 이 전의 터미널 작업들은 꼭 반복해서 외우시기 바래요. 먼저 아래와 같이 프로그램에서 우분투 소프트웨어 센터를.. 더보기
크로스 플랫폼 개발 환경 만들기 - (7/11) 우분투 OS를 개발자 스타일로 최적화 여기까지 따라오시면서 우분투의 사용자 인터페이스와 몇 가지 명령어가 어느 정도 자연스러워 지셨는지요? 몇 번 우분투를 사용해 보시면 알겠지만, "우분투 소프트웨어 센터"에서 필요하신 소프트웨어를 편하게 모두 다운로드 받으실 수 있답니다. 급하신 분들은 먼저 개발 도구와 툴 들을 설치하셔도 됩니다. ^^* 어제 오늘 할 것은 우분투의 테마를 좀 바꾸어볼까 합니다. 기본 테마가 나쁘지는 않지만, 제가 주로 사용하는 개발 툴은 아이콘을 크기를 줄이고, 더 넓은 화면으로 쓰고 싶습니다. 이럴 때 유용한 소프트웨어가 있으니, 다음의 링크를 참고하시기 바랍니다. Gnaom Classic 테마입니다. 다음의 링크에 자세한 내용을 소개하고 있습니다. http://ioriy2k.pe.kr/archives/4357 자! .. 더보기
크로스 플랫폼 개발 환경 만들기 - (6/11) 윈도우 Active Directory 가입 윈도우 서버의 Active Directory로 전사적인 리소스를 관리하는 회사가 많이 있을 겁니다. 그래서 로그인을 도메인 계정으로 로그인을 해야 할 필요가 있는데, 우분투에서는 likewise 로 도메인 서비스에 가입하여 로그인을 할 수 있답니다. 도메인 계정으로 로그인해야 하는 환경이 아니라면 패스!! 도메인 가입 우선 도메인을 가입하기 위해 필요한 likewise-open 패키지를 다운로드 받아 설치합시다. 다음과 같이 입력하세요. sudo apt-get install likewise-open 이제 도메인에 가입할 도메인 주소와 도메인 계정을 알고 있으면 됩니다. 저는 저희 집에 Active Directory가 POWERUMC.KR 주소로 되어있습니다. FQDN 은 대소문자를 구분하니 정확히 입력하.. 더보기
크로스 플랫폼 개발 환경 만들기 - (5/11) 한글 입력 문제 이 부분은 우분투의 한글 드라이버인 ibus가 좀 오동작을 합니다. 쩝.. (한글 입력기라고 부르는군요.). 안 불편하시면 걍 쓰시고, 전 불편해서 다른 한글 입력기로 바꿀겁니다. 다음과 같이 입력해서 앱 스토어에서 nabi 한글 입력기를 다운로드 받습니다. (앱 스토어는 그냥 친숙한 의미로 부르는 것이니, 또 이런 문장 문장 하나에 죽자고 덤비지 마시길) 다음과 같이 입력하여 nabi를 설치합니다. sudo apt-get install nabi 혹시 노트북을 쓰신다면, 한글 키보드 101/104 가 ALT L과 한/영 키를 구분 못하는 경우가 있습니다. 그래서 ALT L 단축키를 다른 키로 변경할겁니다. 그래야 한/영 키가 올바로 먹습니다. 윈도우 키 + Space 로 변경 더보기
크로스 플랫폼 개발 환경 만들기 - (4/11) 한글 업데이트 영어 울렁증이 있으시다면 한글 우분투로 변신시켜 봅시다. 영어 버전도 충분하시면 패스!! 재 부팅 후 더보기
크로스 플랫폼 개발 환경 만들기 - (3/11) 기본 구성 이제 우분투에 로그인이 되셨습니까? 그럼 우분투에서 매우 자주 쓰는 몇 가지 명령어를 터미널을 이용해서 작업을 할겁니다. 우분투는 X-Windows 환경도 좋지만, 리눅스답게 터미널을 못쓰면 리눅스답게 쓰기가 힘들 수 있습니다. 터미널 작업은 매우 강력하고, GUI 기반+마우스 작업으로 하는 것보다 훨씬 빨라서 터미널이 점점 재미있어질 겁니다. 윈도우의 커맨드 라인 작업은 왠지 지루한 감이 있지만, 리눅스의 터미널 작업은 왠지 즐기게 되는… 음… 그 기분… 아마 써보지 않은 분들은 못 느끼실 겁니다. 터미널 실행하기 아래의 마우스 위치가 바로 "Dash Home" 아이콘 입니다. 그곳을 클릭해서 terminal을 검색하시면 됩니다. 근데 CTRL+ALT+T 키를 누르면 바로 터미널 뜬답니다. ROOT 계.. 더보기
크로스 플랫폼 개발 환경 만들기 - (2/11) 우분투 12 설치 첫 회부터 너무 쌘건가? 독자 분들도 제목에서 볼 수 있듯이 "크로스 플랫폼 개발 환경 만들기"라는 주제인데, 혹여 뭔가 대단한 것을 만들려고 하는 것은 아니니 너무 큰 기대는 하지 않길 바랍니다. 이 글은 필자가 크로스 플랫폼 개발 환경을 만들면서 여러 번 수행 착오를 겪은 부분을 공유하기 위함입니다. 일단, 크로스 플랫폼 개발 환경을 만들기 위해 필자가 선택한 운영체제는 우분투 12 LTS 버전입니다. 맥OS는 리눅스 기반이면서 맥에서만 100% 설치 성공 가능한 운영체제입니다. 뭐 해적판도 있겠지만, 그런 고생은 불법적인 방법이므로 피하는게 좋겟지요. 우분투12를 선택한 김에 우분투 운영체제에 대한 소개 좀 해봅니다. 우분투는 리눅스라고 하는 수 십 년 전 멀티 테스킹(멀티 쓰레딩)을 지원하는 운영.. 더보기
크로스 플랫폼 개발 환경 만들기 - (1/11) 도전하라 개발자여 2012년 4월 26일, 고대하던 우분투 12 LTS 가 릴리즈 되었습니다. 우분투는 데비안 계열에서 파생된 사용자에게 친숙한 데스크탑 운영체제입니다. (더 자세한 내용은 이 링크를 참고하세요) 왜 갑자기 쌩뚱맞게 우분투 얘기가 나오는 것인가라고 의아할 수 있을 겁니다. 이유는 우분투에서 Mono를 이용하여 크로스 플랫폼을 지원하는 소프트웨어를 만들자는 것에 의미가 있습니다. 그 중, Mono는 .NET 플랫폼과 .NET Framework를 충실하게 구현한 오픈 소스이며, 크로스플랫폼을 위한 내부적인 기술 및 지원은 오히려 .NET 보다 앞섭니다. .NET의 복제품이 아닌, .NET의 확장판으로 보시기 바랍니다. .NET 플랫폼이라는 어떤 무형/유형의 구현체는 ECMA라는 비영리 표준화 기구와 ISO인 .. 더보기