Output

화면에 텍스트 출력

print("Hello Python")


여러 줄의 텍스트 출력

print("Hello World\nThis is a message")


변수 출력

x = 3
print(x)


다수의 변수 출력

x = 2
y = 3
print(x, ' ', y)


Input

텍스트 입력

name = raw_input("Enter a name: ")


실수 입력

x = int(input("What is x? "))
x = float(input("Write a number"))


'프로그래밍 > Python' 카테고리의 다른 글

Python Tutorial : While loop [5]  (0) 2016.04.15
Python Tutorial : For loops [4]  (0) 2016.04.15
Python Tutorial : Variables [3]  (0) 2016.04.15
Python Tutorial : If statements [2]  (0) 2016.04.15
파이썬 기초 - Python이란?  (0) 2016.04.14

파이썬은 귀도 반 로썸(Guido van Rossum) 이라는 분이 심심해서(!) 만들었다고 전해지는 프로그래밍 언어의 일종.


현재 최신 버전은 Python3.x 이지만 내가 필요한건 Python2.7 이므로 2.7 기준으로 정리할 예정.

어차피 2to3라는 모듈이 있기 때문에 필요하면 Python3.x로 코드를 변환하는 것은 어렵지 않음.


C언어를 할 줄 알면 배우기 쉽지만, 코드 들여쓰기 등에는 상당히 엄격한 문법 체계를 가지고 있다.

(그런데 Python3.x에서는 한글도 변수명으로 사용할 수 있다는 건 함정. 유니코드를 활용하게 되면서 가능해진 듯.)


iOS MDM 서버를 구축하면서.. 파이썬을 전혀 몰라서 배워야 할 필요가 있다고 느껴 파이썬을 시작하게 되었다.


import this 를 하면 이스터에그로 파이썬의 정신(?) 하여튼.. 추구하는 바라던가 하는것이 나온다.


The ZEN of Python
    Beautiful is better than ugly.
    Explicit is better than implicit.
    Simple is better than complex.
    Complex is better than complicated.
    Flat is better than nested.
    Sparse is better than dense.
    Readability counts.
    Special cases are not special enough to break the rules.
    Although practicality beats purity.
    Errors should never pass silently.
    Unless explicitly silenced.
    In the face of ambiguity, refuse the temptation to guess.
    There should be one-- and preferably only one --obvious way to do it.
    Although that way may not be obvious at first unless you're Dutch.
    Now is better than never.
    Although never is often better than *right* now.
    If the implementation is hard to explain, it's a bad idea.
    If the implementation is easy to explain, it may be a good idea.
   Namespaces are one honking great idea -- let's do more of those!
대충 해석하면 아름답고 간결하며 실용적인 코드를 작성하라는 말씀.


앞으로 포스팅할 파이썬 튜토리얼은 Python.org의 비기너 가이드를 한국어로 번역 하면서 같이 공부 할 예정.


'프로그래밍 > Python' 카테고리의 다른 글

Python Tutorial : While loop [5]  (0) 2016.04.15
Python Tutorial : For loops [4]  (0) 2016.04.15
Python Tutorial : Variables [3]  (0) 2016.04.15
Python Tutorial : If statements [2]  (0) 2016.04.15
Python Tutorial : Text input and output [1]  (0) 2016.04.15




(이번 파이3 모델은 무려 블루투스 v4.0 , 802.11n 탑재!!)


테스트 장비 : Rsapberry Pi 3 Model B  (구매처)

테스트 OS : Ubuntu Mate 15.10 Desktop (다운로드)


**필수 프로그램 : Python 2.7 


1. 우분투 Mate 설치 후 기본 환경 설정


2. Python 2.7이 설치되어 있지 않다면 설치


3. MDM 서버 동작을 위한 파이썬 모듈 설치

  - Web.py : 일반적인 아파치 톰캣 등의 서버 구동 프로그램을 사용하지 않고 파이썬 코드로 작성된 소스파일을 웹서버로 작동하게 해주는 모듈

  - M2Crypto : 파이썬 코드로 된 서버를 SSL 프로토콜을 이용하여 접속할 때 체크하는 인증서 관련 패키지

  - PyOpenSSL : 파이썬 코드로 된 서버를 SSL 프로토콜을 이용하여 접속 할 때 필요한 모듈

  - APNSWrapper : APNS를 통해 MDM 푸시 커맨드를 아이폰/아이패드에 전송할 때 이용되는 모듈


해당 모듈 설치 후 APNSWrapper의 connection.py 파일의 131 line을 수정해 줘야 하는데, 

이유는 애플에서 보안적인 이유로 SSLv3에 대한 지원을 중단하였기 때문에

해당 부분을 TLSv1 으로 수정해 줘야 합니다.

131 line : ssl_version = self.ssl_module.PROTOCOL_TLSv1,


나머지 절차는 https://github.com/project-imas/mdm-server 대로 수행

CA 인증서 및 MDM 프로파일 생성 시 실수가 있으면 서버가 동작하지 않으니 주의해서 인증서 생성


서버의 8080 Inbound 설정 및 2195 포트 Outbound 설정 후 python server.py 커맨드를 통해 서버 동작

커맨드 실행 시 Starting Server  https://0.0.0.0://8080 로그가 찍히고 커맨드라인으로 빠져나오지 않는다면 성공적으로 동작하는 것입니다.


저는 라즈베리파이를 공유기에 물려서 서버를 구축했기 때문에 아이폰에서 같은 와이파이 접속 후

 사파리 브라우저에서 https://ip 또는 host name:8080 으로 접속하였습니다.

서버 메인 페이지에서 CA인증서를 먼저 설치해야 디바이스에 MDM프로파일이 설치됩니다.


만약 서버가 구동되지 않는 다면 server.py 파일의 마지막 부분에서 에러타입 로그를 찍어서 에러를 분석하면 됩니다.

테스트 과정에서 2번의 에러가 있었는데 첫번째는 파이썬 모듈의 비정상적 설치, 

두번째는 Server.crt 인증서 파일 크기가 0byte로 비정상적으로 생성되어 재 생성 하였습니다.


**server.py 에러타입 확인하는 법


try:

print "Debug : try"

app.run()

except TypeError as e:

print "Debug : except"

print('error:',e.args[0])

sys.exit(0)




**서버 정상 동작 시 터미널에서 출력되는 로그




수고하셨습니다 ^^..

+ Recent posts