2010년 4월 9일 금요일

파이썬(Python) 언어 확장

ctypes

파이썬(Python) 한글 다루기

원래 파이썬은 미국 지역에서 개발되었기 때문에, 한글이나 한자와 같은 2바이트 문자를 지원하지 않았다.
그러나 Python 2.0 에서 유니코드 문자형이 새롭게 도입되어 다국어를 취급할 수 있게 되었다.
다른 스크립트 언어와 달리, 파이썬에서는 문자의 인코딩과 내부 유니코드 표현을 명확하게 구별한다.
유니코드 문자는 메모리에 저장되는 추상적인 개체이다. 화면에 나타내거나 파일 입출력을 할 때는 변환 코덱의 힘을 빌려서 특정 인코딩으로 변환한다. 또, 소스 코드의 문자 코드를 인식하는 기능이 있어, 다른 문자 코드로 쓰여진 프로그램의 동작이 달라질 위험을 해소하고 있다.
파이썬 2.4 에서는, CJK 코덱이 표준으로 배포판에 포함되게 되었기 때문에, 현재는 한글 처리에 문제는 거의 없다. 통합 개발 환경 IDLE에서의 한글 입출력도 기본적으로 가능하다고 한다.

파이썬(Python) 라이브러리

파이썬에는 「건전지 포함("Battery Included")」이란 기본개념이 있어, 프로그래머가 바로 사용할 수 있는 라이브러리와 통합 환경이 이미 배포판과 함께 제공된다.
이 때문에 파이썬의 표준 라이브러리는 매우 충실하다. 여기에는 정규 표현식을 비롯해 운영체제의 시스템 콜이나 XML 처리, 직렬화, HTTP ,FTP 등의 각종 네트워크 프로토콜, 전자 메일이나 CSV파일의 처리, 데이터베이스 접속, GUI, HTML, 파이썬 코드 구문 분석 툴 등이 포함된다.
써드파티 라이브러리도 풍부하며, 행렬 연산 패키지 Numeric Python 이나 이미지 처리용 Python Imaging Library, SDL 랩퍼인 PyGame 등은 잘 알려져 있다.
다만, 마이너 라이브러리까지 포함하면 너무 많아서 수습이 되지 않기 때문에, 최근 PyPI (Python Packages Index) 로 불리는 라이브러리의 저장소(repository)를 관리하는 기구가 새롭게 도입되었다.

파이썬(Python) 데이터형

파이썬은 기본 데이터형으로 정수형, 긴 정수형(long integer),부동 소수점수형, 복소수형, 문자형, 유니코드 문자형, 함수형을 갖고 있다.
긴 정수형(long integer)은 메모리가 허락하는 한 무제한의 자리수로 정수 계산이 가능하다.
여기에 집합적 데이터형으로 리스트형, 터퓰(tuple)형, 사전형, 중복을 허락하지 않는 집합형이 있다. 리스트형, 사전형은 내부의 값을 나중에 바꿀 수 있고, 터퓰형은 한 번 값을 정하면 내부의 값을 바꿀 수 없다.
집합형은 변경 가능하게도 변경 불능으로도 만들 수 있다. 또 많은 객체 지향 언어와 같이, 유저가 새롭게 자신의 형을 정의하는 것도 가능하다.
파이썬은
동적 타이핑 언어이기 때문에, 변수가 아닌 값이 타입을 가지고 있고, 변수는 모두 값의 참조(C++의 reference)이다.

파이썬(Python) 문법

파이썬의 문법에서 가장 잘 알려진 특징은 들여쓰기를 이용한 블럭 구조를 들 수 있다. 이것은 통상 C등에서 쓰이는 괄호를 이용한 블럭 구조를 대신한 것으로 매줄에서 처음오는 공백에 의해 눈에 보이는 블록 구조가 논리적인 제어구조와 일치하게 하는 방식이다. 아래는 C와 파이썬으로 재귀호출을 사용한 차례곱을 계산하는 함수를 정의한 것이다.

Python:
def factorial(x):
if x == 0:
return 1
else:
return x * factorial(x - 1)

들여쓰기가 잘 된 C:
int factorial(int x)
{
if(x == 0) {
return 1;
} else {
return x * factorial(x - 1);
}
}

이렇게 비교하여 보면 파이썬과 정리되어 들여쓰기가 된 C 언어와는 차이가 거의 없어 보인다. 그러나 여기서 중요한 것은 위쪽의 C 형식은 가능한 여러가지 스타일 중에 하나일 뿐이라는 사실이다.
즉 C로는 똑같은 구문을 다음과 같이 쓸 수도 있다.
읽기 어렵게 쓰인 C:int factorial(int x) {
if(x == 0) {return 1;} else
{return x * factorial(x - 1); } }
파이썬으로는 이렇게 쓰는 것이 허용되지 않는다. 파이썬에서 들여쓰기는 한가지 스타일이 아니라 필수적인 문법에 속한다. 파이썬의 이러한 엄격한 스타일 제한은 쓰는 사람에 관계없이 통일성을 유지하게 하며, 그 결과 가독성이 향상될 수 있는 장점이 있지만, 다른 한편 프로그램을 쓰는 스타일을 선택할 자유를 제약하는 것이란 의견도 있다.

파이썬(Python) 언어의 기능

파이썬은 언어 자신의 기능은 작게하여 사용자가 언제나 필요로 하는 최소한의 기능만을 제공하도록 만들어져 있다.
이것은 펄의 TIMTOWTDI (there's more than one way to do it - 문제를 해결하는 방법은 단 한가지가 아니다) 철학과는 대조적인 것이며, 파이썬에서는 다른 유저가 썼더라도 동일한 일을 하는 프로그램은 대체로 모두 비슷한 코드로 수렴한다.
기본 기능에 없는 많은 기능이 라이브러리에 의해서 제공되고 있다.
또, 파이썬 에서는 프로그램의 문서화가 매우 중시되고 있어 언어의 기본 기능에 포함되어 있다.
파이썬은 원래 교육용으로 설계되었기 때문에 읽기 쉽고, 그래서 효율적인 코드를 가능한 간단하게 쓸 수 있도록 하려는 철학이 구석구석까지 침투하고 있어, 파이썬 커뮤니티에서도 알기 쉬운 코드를 선호하는 경향이 강하다.

2010년 4월 8일 목요일

원격 접속 시 강제로 PC 리부팅 하는 방법

원격 접속을 한 후에 원격 PC를 리부팅 해야 하는데 리부팅 버튼이 없는 경우가 있습니다.
이런 상황에서 어떻게 하면 리부팅을 할 수 있을까요?
그 방법 아래와 같이 하시면 됩니다.

1. 실행 창에 cmd 입력 후 도스창을 하나 띄움
2. shutdown -r -f -t 00 이렇게 치면 바로 리부팅 합니다.
(-r 은 리부팅 옵션이고 -f 는 응용프로그램 강제로 종료하는 것이고 -t 00은 0초 후에
 바로 리부팅 하라는 말입니다. -t 옵션을 안주면 1분 후에 리부팅합니다.)