ASP.NET Web API는 닷넷 프레임워크 위에 HTTP 기반의 Web API를 구축하도록 돕는 프레임워크입니다. 사용자 인터페이스와는 직접적인 연관이 없기 때문에 단순히 Web API 서비스 만을 제공할 수도 있고, ASP.NET Web Pages, Web Forms, MVC등과 함께 사용할 수도 있습니다. SPA(Single Page Application) 응용이나 페이지 갱신 없이 동적인 페이지 구성을 원하는 경우 Web API는 반드시 검토 해야하는 기술 요소입니다. 데스크탑의 웹 브라우저를 넘어서 스마트폰이나 태브릿등 다양한 기기를 대상으로 서비스한다면 ASP.NET Web API는 효용성이 더욱 높아질 것입니다. ASP.NET Web API는 클라이언트가 AJAX 프레임워크나 기타 방법을 ..
올해 1월 제주 올레 여행 계획을 세우고 비행기 티켓도 예매했었지만 기록적인 폭설로 출발도 하기전에 포기해야 했던 기억이 아직도 아찔합니다. 그래도 부.모.자.녀라는 관계로 가족 전체가 함께 여행할 기회가 점점 줄어들 것이므로 지난 7월에 비행기 표부터 예매해 두었습니다.올레길 걷기를 위한 저렴한 비행기 표는 역시 저가항공입니다. 왠만한 고속버스 편도보다 싼 가격으로 청주제주간 왕복 비행기 표를 구할 수 있었습니다. 한달 전인 지금시점에서 동일한 표를 조회하면 싼 비행기표도 거의 3배에 가까운 가격입니다. 6개월 단위로 오픈하는 예매표를 미리 확보하면 보다 값싼 가격으로 비행기 표를 구할 수 있습니다. ("저가항공 티켓을 더욱 값싸게 구입하는 요령" 참조) 7월과 1월은 장기 여행 계획을 위해 준비를 시..
논리 회로는 출력을 결정하는데 있어 현재 입력만을 대상으로 하는지, 아니면 현재 입력과 함께 과거 자료(메모리)를 사용하는지에 따라 현재 입력만을 가지고 출력을 결정하는 조합 논리 회로(Composite Logic Gate)와 메모리도 출력 결정에 사용하는 순서 논리 회로(Sequential Logic Gate)로 나눌 수 있으며 조합 논리 회로에는 반가산기, 전가산기, 병렬가산기, 반감산기, 디코더, 인코더, 멀티플렉스, 디멀티플렉스, 버스, ALU 등을 들 수 있습니다. 앞서 "정보처리기능사 필기 해설 1 - 논리게이트"에서 다룬 기본 논리 회로들을 기반으로 다음과 같은 조합 논리 회로들을 구성할 수 있습니다. ■ 반가산기 반가산기(HA, Half Adder)는 정보처리기능사에서 출제되는 조합 논리 ..
사람의 얼굴을 보면 그 사람이 어떤 사람인지, 그의 현재 감정과 개성까지도 읽을 수 있다고 하지요. 그만큼 얼굴이란 한 사람을 대표하는 아주 중요한 요소입니다. 이렇게 추운 날씨에 온몸을 꽁꽁 싸고 있을 지언정 얼굴만은 내밀고 다니는 것도 그런 배경이 아닌가 싶기도 합니다. 낙엽을 떨구고 가지에는 내년 봄을 기다리며 겨울눈이 자리한 나무들은 무엇이 얼굴일까요? 푸른 녹음을 자랑하는 잎, 화려한 꽃이나 열매, 무한히 뻗은 가지일 수도 있지만 필자의 경우에는 나무 껍질, 즉 수피(樹皮)가 아닐까 싶습니다. 특히 봄, 여름, 가을, 겨울이 선명한 이 땅에서 자라는 나무들은 4계절에 걸쳐 늘 볼 수 있는 수피(樹皮)가 나무의 얼굴이라 여겨집니다. 꽃복숭아 나무의 수피입니다. 전장에서 돌아온 군인의 아문 상처에서..
무언가를 설명하고 정리하는 것을 글이나 말로도 할 수 있겠지만 도표(Diagram)만큼 유용한 것은 없을 것입니다. 회사의 조직도, 마인드맵, 약도나 안내도와 같이 우리의 일상 생활과 밀접한 것부터 전자 회로 설계나 소프트웨어 공학, 프로세스 관리, 프로그램 설계와 같은 전문 분야 까지 도표가 활용되는 분야는 무궁무진합니다. 마이크로소프트의 파워포인트나 리브레오피스의 임프레스(Impress)와 같은 프리젠테이션 도구를 활용하는 경우도 있지만 도표 작성에는 도표 작성에 주안점을 둔 전문도구가 필요가 것이 사실입니다. 대표적인 것이 마이크로소프트의 Visio입니다. 대안이 있다면 리브레오피스의 드로우(Draw)와 오픈소스 도표 작성 도구입 Dia입니다.오픈 소스로(GPL - GNU General Public..
우분투는 기본적으로 root 사용자가 아닌 일반 사용자로 로그인하도록 하기 때문에 시스템 관련 작업을 할때면 가끔은 귀챦을 때도 있습니다. 시리얼(직렬) 포트와 같은 시스템 장치를 다루는 것도 마찬가지로 기본 사용자로는 권한이 없어서 단순한 프로그램인데도 왜 안되지? 하는 혼란에 빠질 수 있습니다. 이런 경우 대부분은 접근 권한이 없기 때문입니다."dmesg | grep tty" 명령은 시스템에 사용 가능한 시리얼 포트가 무엇이 있는지 확인할 수 있는 명령입니다. 위의 예제를 보면 ttyS0가 있는 것을 확인할 수 있습니다. 윈도우같으면 COM1 쯤 되는 것입니다. 그런데 시스템 디바이스가 있는 /dev/ttyS0를 ls -l로 조회해보면 소유자(root)와 그룹(dialout)에만 접근 권한이 있으므로..
C# 닷넷으로 응용 프로그램을 개발하다가 꺾은선 그래프나 바차트, 3D 차트등을 표시할 필요가 있을 경우에는 도구 상자에서 데이터>Chart 컨트롤을 추가하여 간편하여 차트를 추가할 수 있습니다.System.Windows.Forms.DataVisualization.Charting 클래스를 통해서 윈도우 폼에 추가된 컨트롤에는 데이터베이스로 부터 전달받은 DataTable 오브젝트를 직접 설정할 수 있는 등 편리하게 도표를 개발할 수 있도록 도와줍니다. 이렇게 비주얼스튜디오에서 기본적으로 제공하는 차트 클래스는 윈도우 시스템에서는 문제가 없지만 크로스플랫폼 환경에서는 정상적으로 동작하지 않는 제약이 있습니다. 다시 말해서 리눅스의 mono 플랫폼에서는 정상적으로 동작하지 않는다는 문제가 있습니다. 아직 차..
C#에서 화면을 캡처하는 두가지 방법이 있습니다. 첫번째는 GDI32, USER32 API를 사용하는 방법이고 다른 하나는 닷넷에서 제공하는 Graphics.CopyFromScreen()를 사용하는 방법입니다. class GDI32 { public const int SRCCOPY = 0x00CC0020; // BitBlt dwRop parameter [DllImport("gdi32.dll")] public static extern long BitBlt(IntPtr hdcDest, int nXDest, int nYDest, int nWidth, int nHeight, IntPtr hdcSrc, int nXSrc, int nYSrc, int dwRop); [DllImport("gdi32.dll")] publ..
겨울이 성큼 성큼 다가오면서 지난 계절을 치열하게 살았던 나무들도 나뭇잎을 떨구기에 바쁩니다. 바람이라도 불면 이 낙엽 저 낙엽이 뒤엉켜 "조금 큰 먼지인가 보다"며 지나쳐 버릴 낙엽이 밤새 조용히 내려 나무마다 그 누구도 창조하기 어려운 아름다움 패턴을 만들어 내고 있습니다. 아저씨의 대나무 빗자루가 닿기 전에 셔터를 부지런히 눌러 보았습니다. 산딸나무 낙엽. 잎맥이 선명한 산딸나무 낙엽은 잎맥과 함께 반들반들함과 다양한 색 자체로 아름답습니다. 자엽자두 나무의 낙엽. 나뭇잎과 열매 모두 자줏빛을 뽐내던 자엽자두의 낙엽은 낙엽 마저도 그 빛깔을 유지합니다. 아직 나무에 붙어있는 나뭇잎이 많지만 단풍의 대명사 단풍나무 낙엽입니다. 무수히 쏟아져 있을때와는 다른 느낌입니다. 목련의 낙엽. 꽃도 아름답고 열..
C언어를 이제 막 배우기 시작한 병아리 개발자를 위해서 실습을 위한 과제를 내주고 이에 대한 피드백을 코드와 함께 메모로 남깁니다. 코드 실습 환경은 "C언어 배우기를 위한 준비"를 참조하세요. ■ 문제마방진 출력 프로그램 작성프로그램 형태 - 콘솔 프로그램 - 프로그램 아규먼트 입력, 화면 출력 형태입력 - 3 ~ 15의 홀수를 받음 - 오류 입력에 대처해야 함출력 - 입력 오류 발생시 오류 내용과 사용방법을 출력함 - 정상 입력시 N 마방진을 가로/세로 폭을 맞추어 출력 - 자체 검증을 위해서 가로, 세로 및 한쪽 대각선 방향의 함께를 출력함 ■ 코드와 해설다른 사람의 코드를 보지 않고 문제 내용만으로 코딩하는 연습이 실력을 키우는 첩경입니다. 홀수 마방진 작성 프로그램 연습은 2차원 배열을 기반으로..
public Form1() { InitializeComponent(); label1.Text = System.Environment.OSVersion.Platform.ToString() + ":" + System.Environment.OSVersion.Version.ToString() + ":" + System.Environment.OSVersion.VersionString; } C#으로 작성한 닷넷 응용을 윈도우 뿐만아니라 리눅스에서도 실행할 수 있는 시대가 되면서 크로스 플랫폼 응용을 개발하려는 개발자에게는 운영 체제 종류나 버전을 인식해야되는 필요성이 있습니다. 닷넷(mono 포함) 프레임워크가 발전하고는 있지만 운영체제나 버전에 따라서 지원하는 수준이나 동작 형태가 다르기 때문입니다. 오로지 특정 ..
마이크로소프트사의 닷넷 프레임워크가 발전을 거듭하면서 자바(Java)진영 처럼 어느덧 크로스플랫폼(Cross platform)이라는 말에 어울리는 수준에 도달하고 있지 않나하는 생각입니다. 자바 기반의 이클립스를 리눅스에서도 윈도우에서도 동일한 사용 경험으로 사용할 수 있듯시 닷넷 기반의 응용을 윈도우 뿐만아니라 리눅스에서도 사용할 수 있다는 말입니다. 이것을 가능해주는 프로젝트가 바로 모노 프로젝트(http://www.mono-project.com/) 입니다. 이번 포스팅은 리눅스(우분투)에서 모노(mono)를 설치해서 닷넷 응용의 크로스 플랫폼 가능성을 살펴보고자 합니다. sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3..
윈도우나 리눅스를 불문하고 대부분의 운영체제에서는 [Print Screen]이라는 키에 대해서 화면을 인쇄하거나 캡처하는 동작을 수행합니다. Alt+[Print Screen]은 현재 동작하는 화면만을 캡처하는 것이 보통입니다. 화면을 캡처해서 다른 이미지 편집 프로그램이나 문서 작성기에서 붙여넣기 할 수 있도록 클립보드에 저장하거나 즉시로 파일로 저장하는 것이 일반적인 동작 형태입니다. 그런데 원격터미널 접속이나 기타 환경 구성의 원인으로 화면 인쇄 단축키가 먹히지 않을때가 있는데 이런 경우에 대처할 수 있는 방법입니다.리눅스에서는 그놈(Gnome) 데스크탑 환경과 KDE 데스크탑 환경으로 GUI 데스크탑 환경을 구성할 수 있는데 그놈 환경의 경우에는 위의 그림처럼 Accessories>Screensho..
※ LINQ 연관글 모음 LINQ는 무엇인가?LINQ 배우기를 위한 최적의 환경 LINQ to ObjectsLINQ 질의의 기본과 사전 타입LINQ 정렬 기능 사용하기LINQ 사용법 - 그룹과 집합 연산LINQ 조인 구문 사용하기LINQ 필터링 다루기LINQ 특정 항목 추출하기LINQ 사용법 - 변환 및 생성LINQ 집합 연산 다루기 데이터베이스 질의의 효용성은 특정한 키값을 가지고 있는 레코드를 찾아오는 것보다 특정한 조건을 갖는 정보들을 질의문 하나로 추출하는 과정에 있지 않나 싶습니다. where 구문을 통해 필터링한 이후에("LINQ 필터링 다루기" 참조) 그 결과에서 특정 항목들을 추출하는 것을 다룹니다. ■ 페이징(Paging) List userinfo = new List() { new Use..
※ LINQ 연관글 모음 LINQ는 무엇인가?LINQ 배우기를 위한 최적의 환경 LINQ to ObjectsLINQ 질의의 기본과 사전 타입LINQ 정렬 기능 사용하기LINQ 사용법 - 그룹과 집합 연산LINQ 조인 구문 사용하기LINQ 필터링 다루기LINQ 특정 항목 추출하기LINQ 사용법 - 변환 및 생성LINQ 집합 연산 다루기 LINQ에서 필터링은 데이터소스에서 필요한 것을 골라내는 작업으로 where 구문을 통해서 필터링 작업을 수행합니다. where 구문에 기술하는 조건문은 SQL 구문이 아니라 C# 조건문으로 기술합니다. 복합 조건인 경우 SQL의 "AND", "OR", "NOT"이 아니라 C# 구문인 &&, ||, ! 연산자를 사용합니다. public class Userinfo { publ..