Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Python Korea Twisted Study 2013-06-30

Bae KwonHan
July 01, 2013
150

Python Korea Twisted Study 2013-06-30

Bae KwonHan

July 01, 2013
Tweet

Transcript

  1. Twisted for beginners
    배권한
    13년 7월 1일 월요일

    View full-size slide

  2. 강의에 앞서 요청드릴

    • 강의료 대신에 부담가지 않는 금액으로
    원하는곳에 기부를 해주세요.
    • 누군가 Twisted 에 대해서 알려달라고 하
    면 알려주세요.
    • 초심자를 위한 강의입니다. 고급자는 아
    는것부터 시작합니다.
    13년 7월 1일 월요일

    View full-size slide

  3. 이 강의의 목표
    13년 7월 1일 월요일

    View full-size slide

  4. 소켓프로그래밍은 쉽
    다.
    13년 7월 1일 월요일

    View full-size slide

  5. 목차
    • socket programming is?
    • socket client / server
    • single socket
    • multi thread
    • generator
    • framework
    • gevent
    • tornadio
    • twisted
    13년 7월 1일 월요일

    View full-size slide

  6. 그전에 ..
    • pythonbrew 설치
    • twisted 설치를 합시다.
    13년 7월 1일 월요일

    View full-size slide

  7. 개발 환경 셋업
    • mac
    • xcode
    • homebrew
    • ubuntu
    • apt-get install build-essential
    13년 7월 1일 월요일

    View full-size slide

  8. pythonbrew
    • https://github.com/utahta/pythonbrew
    13년 7월 1일 월요일

    View full-size slide

  9. socket programming
    • UDP ( Datagram Sockets )
    • TCP ( Stream Sockets )
    • RAW ( RAW Sockets )
    13년 7월 1일 월요일

    View full-size slide

  10. 소켓의 특성
    • UDP
    • TCP
    • RAW
    13년 7월 1일 월요일

    View full-size slide

  11. 네트워크는 어떻게 되
    어 있는가?
    • 라우터
    • 노드 ( 써버 클라이언트 )
    • L4
    • Proxy
    13년 7월 1일 월요일

    View full-size slide

  12. network address
    • IPV4
    • IPV6 : https://en.wikipedia.org/wiki/IPV6
    • Private Network
    • 10.0.0.0/8
    • 172.16.0.0/12
    • 192.168.0.0/16
    13년 7월 1일 월요일

    View full-size slide

  13. network address
    • https://en.wikipedia.org/wiki/IPv4
    • Special USE Addresses
    13년 7월 1일 월요일

    View full-size slide

  14. IP Header
    13년 7월 1일 월요일

    View full-size slide

  15. https://en.wikipedia.org/
    wiki/IPv4#Header
    13년 7월 1일 월요일

    View full-size slide

  16. • https://en.wikipedia.org/wiki/
    User_Datagram_Protocol
    UDP
    13년 7월 1일 월요일

    View full-size slide

  17. TCP
    • https://en.wikipedia.org/wiki/
    Transmission_Control_Protocol
    13년 7월 1일 월요일

    View full-size slide

  18. TCP Header
    13년 7월 1일 월요일

    View full-size slide

  19. 13년 7월 1일 월요일

    View full-size slide

  20. TCP 상태가 어쩌고..
    13년 7월 1일 월요일

    View full-size slide

  21. 우리는 이런거 몰라도

    13년 7월 1일 월요일

    View full-size slide

  22. • 연결
    • 사용
    • 끝
    • 에러
    이것만 알면 됩니다.
    13년 7월 1일 월요일

    View full-size slide

  23. 그럼 하나씩 짜봅시
    다.
    13년 7월 1일 월요일

    View full-size slide

  24. 웹 페이지를 가져오는
    소켓 프로그래밍
    13년 7월 1일 월요일

    View full-size slide

  25. 1 #!/usr/bin/python
    2
    3 import socket
    4
    5 s = socket.socket()
    6 s.connect(("ifconfig.me",80))
    7 s.sendall("GET /\n")
    8 data = ""
    9 while True:
    10 buf = s.recv(1024)
    11 if buf == "":
    12 break
    13 else:
    14 data += buf
    15 s.close()
    16 print data
    13년 7월 1일 월요일

    View full-size slide

  26. urllib
    13년 7월 1일 월요일

    View full-size slide

  27. 1 #!/usr/bin/python
    2
    3 import urllib
    4
    5 print urllib.urlopen("http://ifconfig.me").read()
    13년 7월 1일 월요일

    View full-size slide

  28. 그런데 지금까지의 문
    제는?
    13년 7월 1일 월요일

    View full-size slide

  29. 1번에 1개만 됨
    13년 7월 1일 월요일

    View full-size slide

  30. 그럼 써버도 짜봅시
    다.
    13년 7월 1일 월요일

    View full-size slide

  31. 1 #!/usr/bin/python
    2
    3 import socket
    4
    5 s = socket.socket()
    6 s.bind(("0.0.0.0",9999))
    7 s.listen(1)
    8 conn, addr = s.accept()
    9 print 'Connected by', addr
    10 while 1:
    11 data = conn.recv(1024)
    12 if not data: break
    13 conn.sendall(data)
    14 conn.close()
    15
    13년 7월 1일 월요일

    View full-size slide

  32. tornado
    13년 7월 1일 월요일

    View full-size slide

  33. http://
    www.tornadoweb.org/
    en/stable/
    13년 7월 1일 월요일

    View full-size slide

  34. http://www.tornadoweb.org/
    en/stable/
    ioloop.html#ioloop-objects
    13년 7월 1일 월요일

    View full-size slide

  35. about twisted
    13년 7월 1일 월요일

    View full-size slide

  36. http://
    www.aosabook.org/en/
    twisted.html
    13년 7월 1일 월요일

    View full-size slide

  37. • 역사
    • socket
    • protocol
    • factory
    • process
    • threads
    • logging
    • application
    • callLater / LoopingCall
    • database call
    • twistd
    13년 7월 1일 월요일

    View full-size slide

  38. • 2002년 첫 릴리즈
    • 지금은 13.0.0
    역사?
    13년 7월 1일 월요일

    View full-size slide

  39. • Separation of protocols and transports
    • Deferreds
    • Thread Support
    • Foreign Loop support
    특징점
    13년 7월 1일 월요일

    View full-size slide

  40. socket
    • http://twistedmatrix.com/trac/wiki/
    FrequentlyAskedQuestions#HowdoImakein
    putononeconnectionresultinoutputonanoth
    er
    13년 7월 1일 월요일

    View full-size slide

  41. code examples
    • http://twistedmatrix.com/documents/
    13.0.0/core/examples/
    13년 7월 1일 월요일

    View full-size slide

  42. writing servers
    • http://twistedmatrix.com/documents/
    12.2.0/core/howto/servers.html
    13년 7월 1일 월요일

    View full-size slide

  43. run another process
    • http://twistedmatrix.com/documents/
    13.0.0/core/howto/process.html
    13년 7월 1일 월요일

    View full-size slide

  44. threads
    • http://twistedmatrix.com/documents/
    12.2.0/core/howto/threading.html
    13년 7월 1일 월요일

    View full-size slide

  45. application
    • http://twistedmatrix.com/documents/
    12.3.0/core/howto/application.html
    13년 7월 1일 월요일

    View full-size slide

  46. logging
    • http://twistedmatrix.com/documents/
    12.2.0/core/howto/logging.html
    13년 7월 1일 월요일

    View full-size slide

  47. callLater
    • http://twistedmatrix.com/documents/
    11.0.0/core/howto/time.html
    13년 7월 1일 월요일

    View full-size slide

  48. database
    • http://twistedmatrix.com/documents/
    12.2.0/core/howto/rdbms.html
    13년 7월 1일 월요일

    View full-size slide

  49. twistd
    • http://www.saltycrane.com/blog/2008/10/
    running-twisted-perspective-broker-
    example-twistd/
    13년 7월 1일 월요일

    View full-size slide