전체 페이지뷰

2016년 12월 28일 수요일

C# delegate

GUI(Graphic User Interface)같은 프로그래밍을 할 때, Event Driven Programming을 하게 됩니다. 예를 들어서 마우스 클릭 같은 이벤트 말이죠. 그런 이벤트가 일어나면 그 사실을 프로그램에게 알려줄 주체가 필요합니다. 그렇게 이벤트가 일어났음을 Callback 해주는 것이 바로 delegate(대리자)입니다.

Delegate는 특정메소드에 대한 참조를 가지고 있다가 이벤트 발생 시 메소드를 호출해 줍니다.



2016년 12월 27일 화요일

C# Exception Handling

프로그램 실행 중 비정상적인 상황이 발생하면 CLR에게 던져진  에러메세지를 받아 출력하고 프로그램은 강제 종료됩니다. 이런 상황을 처리하는 방법에 대해 알아보도록 하겠습니다.  그런데 왜 에러가 안 나게 하는 법을 배우지 않고 에러를 처리하는 법을 배우는거냐고요? 가장 훌륭한 프로그래머들이 모여 가장 최첨단의 프로그램을 만드는 Microsoft에서 만든 윈도우도 에러가 나서 죽거나 멈추거나 하지 않습니까?

가장 나쁜 경우는 예외가 발생했을 때 처리되지 못하고 이유도 모른 채 죽어버리는 거죠.
그런 경우를 막는 것이 이번 배움의 목표 되겠습니다.

대문, 처음 페이지 만들기

이제 어떤 사이트를 클릭했을 때 나타나는 첫 페이지인 홈페이지를 만들겠습니다.
여기서는 저에게는 완전히 미지의 영역인 UI "디자인"이 중요하므로 HTML, 자바스크립트, 스타일시트 등의 지식이 필요하다고 합니다.

2016년 12월 23일 금요일

C# Generic

제네릭은 C# 2.0부터 CLR에 포함되었습니다. 형식 매개 변수라는 개념을 통해 하나 이상의 형식에 대한 메소드 등을 정의하고 인스턴스가 생성될 때에 형식을 정해주어, 불필요한 박싱을 피하고 런타임에 형식을 캐스팅하는 위험을 덜어주는 방법입니다.

2016년 12월 21일 수요일

C# Collection, Indexer

.NET 프레임워크는 배열 말고도 많은 데이터 모음에 대한 자료구조를 제공합니다.
그 중에서  ArrayList, Queue, Stack, Hashtable 에 대해서 간략히 알아보겠습니다.
(제너릭에 해당하는 List 등은 다음에 알아보겠습니다. 제너릭은 정해진 형식만을 취급할 수 있고 지금 말하는 형식은 Object에 해당하여 아무 형식이나 다 가능합니다.)

System.Collections 네임스페이스를 사용합니다.

C# Array

C나 C++ 에서도 익히 보아온 배열에 대해서 먼저 알아봅니다.
아시다시피 배열은 동일한 형식의 여러 데이터를 하나의 변수명에 저장하여 인덱스로 접근할 수 있게 하는 방법입니다.

C# Property

OOP의 기본 중에 은닉성을 보장하기 위해 지금까지 우리는 마치 C++이나 자바처럼 private이나 protected 한정자로 필드를 숨기고, 이 필드에 접근하는 메소드를 public으로 공개하여 필드를 다루는 방법을 써 왔습니다. 그러나 C#에서는 좀 더 쉽게 이런 방법을 구현할 수가 있고 이것을 property라 부릅니다.

2016년 12월 20일 화요일

C# Interface

공부하면서 가장 궁금했던게 interface의 용법이었습니다.
여기저기 검색해봐도 필요하다...필수적이다..때에 따라 필요하다..디자인패턴을 알면 반드시 필요함을 알게 될거다...우리 팀에서는 금기시 했다...등 다들 대답이 제각각이어서 감을 잡기 어려웠습니다.

2016년 12월 16일 금요일

2016년 12월 14일 수요일

C# Class, Part 1

C#은 객체 지향용 언어입니다.  우리는 어떠한 사물을 프로그래밍으로 구현하기 위해 그 사물의 이름, 크기 등의 속성과 행동양식을 설명해 줄 메소드를 작성합니다. 그렇게 표현된 개념을 클래스라 합니다.

C# Method

아직 데이터형 중 배열과 컬렉션에 대해서는 알아보지 않았지만, 그에 앞서 메소드(method, C에서는 함수라 불러왔던)에 대해서 공부하겠습니다. 컬렉션에는 인터페이스라는 개념이 들어가므로 선행 지식이 필요하다 생각되므로 좀 뒤에서 알아보기로 합니다.

Blog 앱 만들기 6, 템플릿 코딩

이제 지금까지 구현한 것들을 화면에 보여줄 템플릿을 코딩해야 합니다. 상당히 많습니다.
post_all.html, post_detail.html, post_archive.html, post_archive_year.html, post_archive_month.html, post_day_archive.html 의 6가지를 구현합니다.

2016년 12월 12일 월요일

C# 번외편 Console.WriteLine, ReadLine

출력 포매팅에도 놀랍도록 많은 옵션이 존재합니다. 자세한 내용은 MSDN을 참고해서 찾아보시기 바라며, 몇가지만 짚어 보고 넘어가겠습니다.

C# 연산자

산술연산자

연산자란 하나 이상의 피연산자에 적용되는 프로그램 요소입니다.
++나 new와 같이 하나에만 적용되는 것을 단항연산자,
산술연산자(+, -, *, /)와 같이 두개에 적용되는 것이 이항연산자,
그리고 조건연산자(?)는 유일한 삼항연산자입니다.

C# 상수, 열거형, Nullable, var

언제든지 다른 값을 대입할 수 있는 변수와 달리 상수와 열거형은 데이터를 바꿀수 없습니다.

C# 형식변환(Type Conversion)

서로 다른 형식의 데이터 간의 변환에 대해 알아보겠습니다.
이 때 늘 염두에 두어야 할 것은 최대값, 최소값을 넘어가는 범위의 변환을 할 떄 생기는 오버플로우, 언더플로우입니다.

Blog 앱 만들기 5, view 코딩

앞의 URLconf에서 지정한 제너릭뷰를 코딩합니다.
필요한 제너릭뷰가 상당히 많아 코드가 좀 깁니다.

Blog 앱 만들기 4, URLconf 코딩

앞서 북마크 앱을 만들 때에 URLconf를 각각의 계층에 따로 만들어주는 것이 재사용 측면에서 유리하다고 했습니다. 따라서 이제부터 mysite/urls.pyblog/urls.py의 두 곳으로 나누어서 작성하고, 나누지 않고 한군데에만 작성했던 북마크의 url도 두 군데로 나누어 주겠습니다.

2016년 12월 10일 토요일

C# 데이터형



프로그래밍이란 결국 데이터를 얻고 가공하여 새로운 정보를 얻는 일인것 같습니다.
그것을 잘 다루기 위해서 많은 데이터의 형식이 생겨납니다.
그러나 프로그래밍 언어들 중에서는 Python처럼 그 형식을 엄격하게 지정하지 않고 컴퓨터가 유추하게 하는 프로그램이 있는가 하면 C계열의 언어들처럼 강력하게 타입을 제한해 두는 경우가 있습니다.

C# 골격 이해하기


비주얼스튜디오 2015에 대한 이미지 검색결과


저는 앞으로 Visual studio 2015 community 버전을 Windows10 환경에서 사용하겠습니다.

다만 이 블로그에 글을 올릴 때 코드를 예쁘게 하기 위해 칼라스크립터라는 사이트를 이용하는데, 비주얼스튜디오 모양 설정이 없어서 서브라임으로 설정하니 색이 좀 다를 겁니다.

Blog 앱 만들기 3, Github에 작업 올리기

사실 진작에 github에 올렸어야 하는데 버릇이 되지 않다보니 잊고 있었습니다.
로직의 변경이 있을 때마다 올리는 것이 맞다고 배웠으니 예를 들어 모델의 변경, URLconf의 수정시 마다 했어야 했는데 많이 늦었죠. 지금이라도 한번 해보겠습니다.

Blog 앱 만들기 2, 모델 코딩

앞서서 models.py 파일을 수정해 테이블을 정의해 봤습니다.
이제 이 테이블이 Admin사이트에 보이도록 하고 Admin 사이트의 모습도 좀 바꾸도록 하겠습니다.

2016년 12월 9일 금요일

.NET과 C#

윈도우즈 업데이트를 하게 되면 Microsoft .NET 프레임워크가 함께 업데이트 됩니다.
저는 늘 저것이 뭐길래 버전이 어떻고 어떤 게임과 버전이 안 맞으니 업그레이드 하라는 건가...하는 생각을 해 왔는데, 이제야 알게 되었습니다. 참 무식합니다...ㅠㅠ

C# 공부를 시작하며

사실 저는 몇달전 C# 문법책을 사서 공부한 적이 있습니다. 그러나, 다른 모든 초보자 분들과 마찬가지로 '문법은 익혔는데 어떤 식으로 프로그램을 짜야할지 감이 안 잡힌다'는 증상에 시달리고 있습니다. 비록 어찌어찌 해서 Swift로 앱을 몇개 만들긴 했지만 그래도 현장에 있는 사람이 아니기 때문에 실제 프로젝트에선 어떻게 해야 하는가 궁금하고, 다른 강좌를 보다가도 다른 분들이 짜 놓은 코드를 보면 숨이 턱턱 막혀옵니다.

2016년 12월 7일 수요일

Blog 앱 만들기 1, 디자인과 모델 코딩

**장고걸스 튜토리얼, 장고 공식 튜토리얼, 김석훈 님의 저서 "파이썬 웹프로그래밍:실전편"을 토대로 자습 중입니다. **

Bookmark 앱 만들기 4, 완성

이번에는 템플릿을 작성해 보겠습니다.

지금까지 모델을 만들고 conf를 설정하고 view를 작성했다면 이제 실제 화면에 보여지는 템플릿을 만드는 단계입니다. 앞서 bookmark_list.html, bookmark_detail.html이 생성된다고 했습니다. 이 두가지 파일을 구현해 보겠습니다.

2016년 12월 6일 화요일

Bookmark 앱 만들기 3

view 코딩

앞서 URLconf에 클래스 기반의 뷰를 정의했습니다. 이제 실제적으로 view의 내용을 코딩해 보겠습니다.

Regular expression with Python, Optimization Recommendations

지금까지 긴 시간동안 파이썬 정규표현식에 대해 살펴보았습니다.

이제 정규식을 최적으로 사용하기 위한 권장 사항을 가볍게 살펴보고 마칠까 합니다.

Regular expression with Python, look behind

look behind


Positive look behind(긍정형 후방 탐색)

Look behind는 look ahead와 정확히 반대방향의 연산이라고 생각하시면 됩니다.

Regular expression with Python, Look ahead

지금까지 우리는 문자를 매칭하는 방법들에 대해 배워왔습니다. 그러나 그것은 동시에 그것은 매칭된 문자들을 버리는 방법이기도 했습니다. 무슨 말인가 하면 특정 패턴에 한번 매칭된 문자들은 그 연산 내에서는 다시 비교될 수 없다는 것입니다.

2016년 12월 3일 토요일

Regular expression with Python, Grouping

Grouping






그룹핑은 매우 유용한 도구입니다.
1. qunatifier를 subgroup에 적용하기 편리합니다.
2. 전체 식으로부터 변형해야 할 정확한 부위를 지정할 수 있습니다.
3. 매칭된 패턴으로부터 정보를 얻어낼 수 있습니다.
4. 식 안에서 추출된 정보를 반복 사용할 수 있습니다.

Regular expression with Python, Module & Compile

Module Operation

re 모듈을 사용하는 두가지 유용한 메소드들을 확인해 봅시다.

2016년 12월 2일 금요일

Regular expression with Python, MatchObject

MatchObject



match, search, finditer의 방법을 통해 얻어진 결과물을 MatchObject라고 합니다.
지금부터 이 object를 다루는 법을 살펴 보겠습니다.


Regular expression with Python, Modifyng a string


Modifyng a string

지금부터는 정규식 내부에서의 문자열 
변환에 대해 알아보겠습니다.


2016년 12월 1일 목요일

Regular expression with Python, Searching

Searching

RegexObject의 중요한 메소드들을 알아보겠습니다. 다른 언어들이 match만 있는 반면에 파이썬에는 match와 search의 두 가지 operation이 있음을 주목하시기 바랍니다.

Regular expression with Python, "re"

파이썬 정규표현식은 re 모듈에 의해 지원되므로 파이썬 쉘에서

>>> import re

Regular expression 4

Greedy quantifier와 Reluctant quantifier

/".+"/와 같은 quantifier를 적용할 때 어떤 일이 일어나는가를 보겠습니다.