7/15/2018

Apache Spark 와 Hadoop (자료수집)

Apache Spark 란?
  https://12bme.tistory.com/305

Spark+AWS S3  + R3
  https://speakerdeck.com/vcnc/spark-plus-s3-plus-r3-eul-iyonghan-deiteo-bunseog-siseutem-mandeulgi
  http://engineering.vcnc.co.kr/2015/05/data-analysis-with-spark/

Spark와 Hadoop 비교
  https://www.slideshare.net/KangDognhyun/apache-spark-70360736

Spark 의 Docker

IEEE 802.11 L1/2 와 Ethernet De/Encapsulation

1. WLAN 용어 (IEEE 802.11 Layer1,2 )

Layer 1,2의 Packet 단위에 관한 기본용어와 관리 주체들의 용어를 알아보자.

WIFI IEEE 802.11 MAC/PHY Index

  • Layer 1 (Physical Layer)
  1. PSDU (PLCP Service Data Unit, Physical layer Service Data Unit)
  2. PPDU (PLCP Protocol Data Unit, Physical layer Protocol Data Unit)
  3. PLCP  (Physical Layer Convergence Procedure): PSDU들어가는 Preamble/Header 
  4. PMD  (Physical Medium Dependent)
  5. PLME (Physical Layer Management Entity)
  6. CS/CCA (Carrier Sense/Clear Channel Assessment) 

PHY의 종류 
  1. FHSS PHY (Frequency-Hopping spread spectrum)
  2. DSSS PHY (Direct-sequence spread spectrum)
  3. IR PHY (Infrared)
  4. OFDM PHY (Orthogonal frequency division multiplexing)
  5. HR/DSSS PHY (High Rate direct sequence spread spectrum)
PHY의 따라 PLCP Header도 같이 변경됨
PHY
  http://media.techtarget.com/searchMobileComputing/downloads/CWAP_ch8.pdf

  • Layer 2 (Data Layer)
  1. MPDU (MAC Protocol Data Unit): L1의 PSDU
  2. MSDU (MAC Service Data Unit): MPDU의 내부 DATA 
  3. A-MPDU (Aggregated MAC Protocol Data Unit): Frame Aggregation 사용시 
  4. A-MSDU (Aggregated MAC Service Data Unit): Frame Aggregation 사용시
  5. MAC(Media Access Control)
  6. SAP (Service Access Point)
  7. MLME(MAC sublayer Management Entity)

  • 802.11 L2(Data)/L1(Phy) 구조 
L2를 MAC SubLayer라고 하며, 관리와 제어는 MLME라는 걸쳐 Control/Management 관리
L1은 PHY로 두개로 나뉘어지며, PLCP는 MSDU에 PLCP Header를 넣어 주고, PMD는 각각의 PHY에 따라 전송을 하는 구조이며, 이를 PLME에서 관리

http://media.techtarget.com/searchMobileComputing/downloads/CWAP_ch8.pdf


  • 802.11 L2(Data)/L1(Phy) Packet 구조 및 명칭
아래는 간단히 각 명칭을 이해하기 위해서 상위에서 선언된 Packet 구조이며, PPDU안의 Preamble과 Header는 PLCP라고 한다.
그리고, PLCP Format은 각각의 PHY에 따라 다르므로, 이 부분은 각 개별 PHY정보 참고

상위 Layer1 과 Layer2의 용어를 보면 쉽게이해가 간다.
https://en.wikipedia.org/wiki/MAC_service_data_unit


802.11 L2 의 MPDU 내의 MSDU 관련사항 

802.11 L2 의 Frame Aggregation (상위 A-MPDU 참조)
  https://www.netmanias.com/ko/post/qna/6640
  https://en.wikipedia.org/wiki/Frame_aggregation
  http://haru21.tistory.com/entry/%EB%AC%B4%EC%84%A0%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EC%9D%B4%ED%95%B4-4-Chapter3-80211n-2

802.11 기본용어 
  https://wireless.wiki.kernel.org/en/developers/documentation/glossary

세부사항 
IEEE 802.11 Part 11: Wireless LAN Medium Access Control (MAC)
and Physical Layer (PHY) Specifications



2. 802.11 Frame Layer2 MPDU 전체구조 

  • MPDU Frame 의 구조 



  • MPDU의 Address 
Address는 4개까지 가질 수 있으며, 보통은 Address3개를 사용하며, MAC Address 이용.
  1. Address 1: Receiver Address 
  2. Address 2: Transmitter Address
  3. Address 3: Recevier에 의해 Filer 목적으로 사용되어진다고 한다. 
  4. Address 4  ESS(Extended Service Set) 안에 AP들 or Mesh network Node들 간의 Data frame에서 전송시 사용된다고 한다. (AP의 Roaming 시) 


  • MPDU의 Duration /ID 
uS 단위로 CP중 PS-Poll frames을 제외한 CFP 중 전송된 HCF 아래의 모든 Frame에 기록

  • MPDU의 Sequence Control
TCP 처럼 Sequence Control을 진행



  • 기타사항 
  1. QoS Control
  2. HT Control

2.1 MPDU의 FC(Frame Control) 부분 

MPDU의 처음 FC(Frame control) Field 의 2 byte에 대한 설정으로 약간 복잡하다. 

Frame Control Field
Subfield Protocol Version Type Subtype To DS From DS More Fragments Retry Power Management More Data Protected Frame Orders
Bits 2 bits 2 bits 4 bits 1 bit 1 bit 1 bit 1 bit 1 bit 1 bit 1 bit 1 bit

  https://en.wikipedia.org/wiki/IEEE_802.11i-2004

  • FC의 Protocol Version (2bit)
보통 00으로 설정을 한다고 한다.

  • FC 의 Type (2bit) 
FC의 Type의 종류가 따라 Frame의 종류 결정 
  1. Management Frames
  2. Control Frames
  3. Data Frames

  • FC의 SubType (4bit)
FC의 Type에 의해 각 역할이 정해지고, FC의 Subtype의 세부기능결정  

  • FC의 Type 과 SubType 의 각 역할표 
Type value (b3,b2) Type description Subtype value (b7 b6 b5 b4) Subtype description
00 Management 0000 Association request
00 Management 0001 Association response
00 Management 0010 Reassociation request
00 Management 0011 Reassociation response
00 Management 0100 Probe request
00 Management 0101 Probe response
00 Management 0110-0111 Reserved
00 Management 1000 Beacon
00 Management 1001 ATIM
00 Management 1010 Disassociation
00 Management 1011 Authentication
00 Management 1100 Deauthentication
00 Management 1101 Action
00 Management 1110-1111 Reserved
01 Control 0000-0111 Reserved
01 Control 1000 Block Ack Request (BlockAckReq)
01 Control 1001 Block Ack (BlockAck)
01 Control 1010 PS-Poll
01 Control 1011 RTS
01 Control 1100 CTS
01 Control 1101 ACK
01 Control 1110 CF-End
01 Control 1111 CF-End + CF-Ack
10 Data 0000 Data
10 Data 0001 Data + CF-Ack
10 Data 0010 Data + CF-Poll
10 Data 0011 Data + CF-Ack + CF-Poll
10 Data 0100 Null (no data)
10 Data 0101 CF-Ack (no data)
10 Data 0110 CF-Poll (no data)
10 Data 0111 CF-Ack + CF-Poll (no data)
10 Data 1000 QoS Data
10 Data 1001 QoS Data + CF-Ack
10 Data 1010 QoS Data + CF-Poll
10 Data 1011 QoS Data + CF-Ack + CF-Poll
10 Data 1100 QoS Null (no data)
10 Data 1101 Reserved
10 Data 1110 QoS CF-Poll (no data)
10 Data 1111 QoS CF-Ack + CF-Poll (no data)
11 Reserved 0000–1111 Reserved


WIFI IEEE 802.11 MAC/PHY Index
상위정보는 아래 Index에서 찾아서 Spec으로 자세히 보도록하자 

  • FC의 ToDS(1bit) and From DS (1bit) 
DS(Distribution System)을 위한 Bit로 Control Frame과  Management Frame은 모두 0 설정.
Data Frame은 이 둘 중 한 Bit를 1로 설정하여 AP와 STA을 알수 있다. (infra mode),
IBBS(independent basic service set) network , 즉 ad mode에서는 모두 0으로 설정.


ToDS FromDS ADDR1 ADDR2 ADDR3 ADDR4
To AP 1 0 BSSID SA DA Unused
From AP 0 1 DA BSSID SA Unused
Within Wireless AP 1 1 RA TA DA SA
Ad-hoc 0 0 DA SA BSSID Unused

  • FC 의 More Fragments
Data or Management Frame이 1로 설정된 것은 MSDU or MMPDU의 분할이 되었다는 것이며, multiple frames 이 분할되었을 때
마지막 Packet제외하고 모두 1로 설정 하거나 다른 Frame은 0 설정

  • FC의 Retry 
Data or Management frame 재전송되었을 때 1로 설정하며, 때때로, 재전송을 요구한다. 이것을 중복 packet을 제거하는데 도움을준다고 한다.

  • FC의 Power Management 
STA의 Power Management의 상태를 나타내며, 1일 경우 PS(Power Save) Mode, 0은 Active Mode로 나타낸다.
AP는 Power-save bit을 설정하지 않는다.

  • FC의 More Data
DS(distributed system)에서 받은 Buffer Frame에 사용되어지며, AP는 이 bit를 power-save mode에 있는 STA와 이용하기 위해 사용한다.

  • FC의 Protected Frame 
인증/보안을 위해 사용되어지며, WEP/WPA/WPA2 사용시 이 bit이 설정된다.

  • FC의 Order
이 부분은 "strict ordering" delivery method에 적용될때 사용한다고 하며, 1일 경우 Non-QoS Data frame을 전송하는 Strictly Ordered Service라고 한다.
다른 Frame에서는 0을 설정

FC(Frame Control)
  https://en.wikipedia.org/wiki/IEEE_802.11i-2004
802.11x Layer 2
  https://en.wikipedia.org/wiki/IEEE_802.11#Layer_2_.E2.80.93_Datagrams


2.2 MPDU의 FC(Frame Control) 의 Type 과 Subtype 

FC(Frame Control)->Type에 따라 아래와 같이 Frame의 종류가 결정되고, SubType에 따라 세부 Frame으로 나누어진다.
  1. Control Frame
  2. Management Frame
  3. Data Frame

FC(Frame Control)->Type의 Frame 구조

  https://flylib.com/books/en/2.799.1.29/1/

MLME 및 FC->SubType 메뉴
  http://dlrudwo.tistory.com/entry/WLAN-MAC-FRAME


2.2.1 FC(Frame Control) 의 Control Frame 
CSMA/CA 포함 한 802.11에서 사용되어지는 제어 Frame들이며, 아래는 그들 중 일부이다.
기본통신을 위해 RTS/CTS 와 ACK는 중요하며 성능향상을 위한 Block Ack Request/Block Ack도 중요하다  (9.10)


https://flylib.com/books/en/2.799.1.29/1/


  • CSMA/CA(Carrier-Sense Multiple Access/Collision Avoidance)
Ethernet CSMA/CD 거의 동일
RTS/CTS 사용목적은 Serial 통신처럼 안전한 통신을 위해서 Flow Control 이라고 보면된다.
  https://ko.wikipedia.org/wiki/IEEE_802.11_RTS/CTS
ACK Control Frame:
PS-Poll (Power Save Poll) Control Frame:


2.2.2 FC(Frame Control)의 Management Frame
MMPDU(MAC management protocol data unit)라고 불리우며, 802.11의 관리를 하는 Frame 이며, 아래의 Frame들로 구성된다.



https://flylib.com/books/en/2.799.1.29/1/


상위세부내역은 다 나오지 않으며, 상위 표에서 더 참조하시길 
IEEE 802.11 2007 문서 7.2.3 Management frames 참조해도 됨  
현재 2007년꺼 WIFI Spec 밖에 없음 

  • WIFI Scan 방식 
Passive Scan 방식 과 Active Scan 방식이 존재하며 아래와 같이 사용되어지는 Management Frame 이 다르다.  


  • WIFI Passive Scan 방식 
Management Frame 중 beacon 사용 
WIFI AP가 경우 주기적으로 Beacon 를 보내는 방식이다. 
WIFI STA의 경우 이 Beacon을 받아 WIFI AP 정보를 알아 SSID Scan 진행하는 방식으로 STA 입장에서는 Passive 방식이다. 

  • WIFI Active Scan 방식 
Management Frame 중 Prove Request/Probe Response 사용 
WIFI STA 입장에서 직접 WIFI AP의 정보를 얻어 가는 방식이라서 Active Scan이라고 한다.
WIFi STA이 Prove Request를 WIFI AP에게 보내고 이에 응답으로 Probe Response 받는 방식이다. 


https://mrncciew.com/2014/10/27/cwap-802-11-probe-requestresponse/

WIFI Passive Scan/Active Scan 차이 

Authentiction Frame 관련
인증에 관련된 부분 

Action Frame


2.2.3 FC(Frame Control)의 Data Frame

  • MPDU / MPDU+QoS Data Frame 비교 

https://flylib.com/books/en/2.799.1.29/1/


Address4의 경우는 사용될 경우가 있고 , 사용되지 않을 경우가 있다.
관련사항은 아래의 MPDU->FC->ToDS/FromDS를 참고



3. WIFI(802.11) 과 Ethernet 의 De/Encapsulation

802.11의 Data Frames은 일반적으로 802.3(Ethernet 2)기반으로 통신한다.
802.11 Layer에 포함해서 802.3 Data 넣는 방법이 802.2 LLC/SNAP을 사용하여 전송한다.

  • 802.2 LLC PDU 
802.2 LLC Header Information
DSAP address SSAP address Control
8 bits 8 bits 8 or 16 bits multiple of 8 bits

SAP(Service Acess Points) 
DSAP(Destination SAP)
SSAP(Source SAP)

  • 802.2 LLC에서 SNAP(SubNetwork Access Protocol) 추가확장 
802.2 LLC Header SNAP extension Upper layer data
DSAP SSAP Control OUI Protocol ID
8 bits 8 bits 8 or 16 bits 24 bits 16 bits multiple of 8 bits

  • 802.2 LLC/SNAP를 802.11 적용의 예 
  1. DSAP/SSAP는 0xAA 설정 (SNAP 적용) 
  2. Control은 8bit로 0x03 설정
  3. OUI는 모두 0으로 설정
  4. Protocol ID는 EtherType으로 설정
802.11 LLC/SNAP Header
LLC Header SNAP-OUI SNAP-EtherType
AA-AA-03 00-00-00 08-00

LSAP:  0xAA : SNAP 
EtherType: 0x0800 : IPv4  


상위 세부사항은 아래 사이트에서 참고하며, EtherType은 각 역할에 따라변경되므로 주의 

802.3 기반의 Layer2 Ethernet Type
802.11->802.3 에서 사용되어지는 Ethernet Type이며, 인증관련부분도 간단히 소개 

LAN Layer2 
 



  • Ethernet/802.3 LAN to 802.11 LAN Encapsulation Example
상위에서 적용된 것을 802.11 LLC Header 에 적용하여 Encapsulation 의 예제 
Protocol Type/Length LLC Header
802.11 LLC Header
IP 08-00 --
AA-AA-03-00-00-00-08-00
IP 802.3 length AA-AA-03-00-00-00-08-00
AA-AA-03-00-00-00-08-00
IP ARP 08-06 --
AA-AA-03-00-00-00-08-06
AppleTalk (1) 80-9B --
AA-AA-03-00-00-00-80-9B
AppleTalk (2) length AA-AA-03-08-00-07-80-9B
AA-AA-03-08-00-07-80-9B
AppleTalk AARP (1) 80-F3 --
AA-AA-03-00-00-F8-80-F3
AppleTalk AARP (2) length AA-AA-03-00-00-00-80-F3
AA-AA-03-00-00-00-80-F3
IPX Ethernet II 81-37 --
AA-AA-03-00-00-F8-81-37
IPX SNAP length AA-AA-03-00-00-00-81-37
AA-AA-03-00-00-00-81-37
IPX 802.2 length E0-E0-03
E0-E0-03
IPX 802.3 length FF-FF
FF-FF




  • 802.11 LAN to Ethernet/802.3 LAN Decapsulation Example 

Protocol 802.11 LLC Header
Type/Length 802.3 LLC Header
IP AA-AA-03-00-00-00-08-00
08-00 --
IP 802.3 AA-AA-03-00-00-00-08-00
08-00 --
IP ARP AA-AA-03-00-00-00-08-06
08-06 --
AppleTalk (1) AA-AA-03-00-00-00-80-9B
80-9B --
AppleTalk (2) AA-AA-03-08-00-07-80-9B
length AA-AA-03-08-00-07-80-9B
AppleTalk AARP (1) AA-AA-03-00-00-F8-80-F3
80-F3 --
AppleTalk AARP (2) AA-AA-03-00-00-00-80-F3
length AA-AA-03-00-00-00-80-F3
IPX Ethernet II AA-AA-03-00-00-F8-81-37
81-37 --
IPX SNAP AA-AA-03-00-00-00-81-37
length AA-AA-03-00-00-00-81-37
IPX 802.2 E0-E0-03
length E0-E0-03
IPX 802.3 FF-FF
length FF-FF


  Ethernet/802.3 LAN to 802.11 LAN Encapsulation 관련문서

https://flylib.com/books/en/2.519.1/encapsulation_of_higher_layer_protocols_within_80211.html


3.1 WLAN과 LAN과 호환 

1.2에서 설명했듯이 LLC/SNAP을 이용하여 WLAN(802.11)과 LAN(802.3)은 서로 호환이 가능하며, WLAN은 User 입장에서는 LAN처럼 사용이 가능하다.
Ethernet Encapulation 기능을 Soft로 진행을 하면, SoftMac이라 호칭하며, WLAN Chip에서 처리를 하면 이를 FullMac이라고 한다.
802.11 의 Layer 2 Frame 단위를 MPDU(Media access control Protocol Data unit)

  • Data Frames의 구성 
802.11 Layer기반에 LLC/SNAP 추가하여 사용을 하여 아래그림과 같이802.3과 802.11을 호환되도록 한다.

  • Ethernet De/Encapsulation 
  1. Ethernet Encapsulation 은 AP/STA/IBSS의 TX 
  2. Ethernet De-Encapsulation 은 AP/STA/IBSS의 RX 

  • 802.11 Layer의  전체 구성 
Frame Control의 Type에 의해 Data Frame들에게만 적용되고 Layer의 구성은 다음과 같다.
  1. Frame Control :  상위 참조 
  2. Duration ID
  3. Address1/2/3 
  4. Sequence Control 
  5. LLC/SNAP : 전체 8 Byte 사용, 상위 참조 
  6. DATA : Ethernet Data
  7. FCS

  •  Address 3개의 사용
  1. Address 1 : RA( Receiver Address)
  2. Address 2 : TA( Transmitter Address)
  3. Address 3 : Recevier에 의해 Filer 목적으로 사용. 


3.2 WIFI AP 와 STA 의 Ethernet De/Encapsulation 

  • Data Frame 구조 
802.11 내에 LLC/SNAP 포함하고 있으며, LLC/SNAP 설정과 EtherType은 상위 3번의 예제를 참고하자.
Data Frame은 송신자가 ACK Frame을 받지 못한다면 재수신 한다.


802.11 Data Frame
802.11 Header 24bytes 802.2 LLC/SNAP 8bytes 802.11-DATA 802.11-CRC
Frame Control Duration /ID Addr1 (RA) Addr2 (TA) Addr3 Sequence Control DSAP SSAP Control ORGCode (OUI) LLC-Type (PrtocolID) Data FCS
2 B 2 B 6 B 6 B 6 B 2 B 1 B 1 B 1 B 3 B 2 B 0~ 2304 B 4 B

재전송 구조
일반적인 전송은 ACK를 사용하지만, 상위 Frame Aggregation를 이용할 경우, RTS/CTS 도 같이 이용
  https://warpproject.org/trac/wiki/802.11/MAC/Lower/Retransmissions
  https://witestlab.poly.edu/blog/802-11-wireless-lan-2/


https://support.mangocomm.com/docs/wlan-user-guide/mac/framework_high_eth_encap.html

AP기능
  https://warpproject.org/trac/wiki/802.11/MAC/Upper/AP


https://support.mangocomm.com/docs/wlan-user-guide/mac/framework_high_eth_encap.html


STA의 기능
  https://warpproject.org/trac/wiki/802.11/MAC/Upper/STA

상위구조를 보면, BSSID와 Wireless Mac Address가 별도로 존재하며, 이는 AP에서는 두 주소가 구분이 될 필요가 없지만, STA에서는 구분이 되어 사용이 되어진다.

  • AP->STA 통신 
AP의 TX Encapsulation (상위 그림참조)
  1. Addr1-RA :  DA
  2. Addr2-TA :  BSSID
  3. Addr3 :  SA

STA RX Decapsulation (상위 그림 참조)
  1. Addr1-RA :  DA
  2. Addr2-TA :  BSSID
  3. Addr3 :  SA
AP에는 Addr2-TA는 Wireless Mac Address or BSSID로 설정

  • STA->AP 통신 
STA의 TX Encapsulation (상위 그림 참조)
  1. Addr1-RA:  BSSID
  2. Addr2-TA:  STA-Wireless MAC Address
  3. Addr3 :  DA

AP RX Decapsulation (상위 그림 참조)
  1. Addr1-RA:  BSSID
  2. Addr2-TA:  SA
  3. Addr3:  DA

DA/SA : 802.3 Mac Layer 의 주소


3.3 WIFI IBBS 의 Ethernet De/Encapsulation  

IBBS(independent basic service set)로 ad hoc이라고 하며 P2P통신을 할때 한다.
Wireless Mac Address로 서로를 구분

  • IBBS->IBBS 통신 
IBBS의 TX Encapsulation
  1. Addr1-RA :  DA
  2. Addr2-TA :  Wireless MAC Address
  3. Addr3 :  BSSID

IBBS RX Decapsulation
  1. Addr1-RA :  DA
  2. Addr2-TA :  SA 
  3. Addr3 :  BSSID

DA/SA : 802.3 Mac Layer 의 주소

https://support.mangocomm.com/docs/wlan-user-guide/mac/framework_high_eth_encap.html


IBBS의 기능 
  https://warpproject.org/trac/wiki/802.11/MAC/Upper/IBSS

Ethernet Encapsulation
  https://warpproject.org/trac/wiki/802.11/MAC/Upper/MACHighFramework/EthEncap
  https://dot11ap.wordpress.com/ieee-802-11-frame-format-vs-ieee-802-3-frame-format/

WNIC (SoftMac vs FullMac)
  https://en.wikipedia.org/wiki/Wireless_network_interface_controller


4. 기타사항 링크

  • WIFI Driver 종류 및 지원사항 (중요)
  1. Interface 부분확인 (SDIO/USB/PCI)
  2. WIFI Driver에서 각 지원되는 인증사항 확인
  3. Monitor Mode 지원사항 확인
  4. AP Mode 지원사항 확인
  5. Ad-Hoc Mode지원여부 확인 
broadcom의 경우 
  1. brcmfmac:  Full MAC의 경우 Ad-hoc mode 미지원
  2. brcmsmac:  Soft MAC의 경우 Ad-hoc mode 지원 
  https://en.wikipedia.org/wiki/Comparison_of_open-source_wireless_drivers


MAC Format 및 Capture
  https://witestlab.poly.edu/blog/802-11-wireless-lan-2/
  https://zone13.io/post/wifi-monitoring-using-raspberry-pi/


LLC/SNAP
  https://en.wikipedia.org/wiki/Subnetwork_Access_Protocol
  https://tools.ietf.org/id/draft-ietf-ipwave-ipv6-over-80211ocb-20.html
  https://tools.ietf.org/id/draft-ietf-ipwave-ipv6-over-80211ocb-20.html#epd
  https://stackoverflow.com/questions/32233879/is-there-an-ethertype-field-in-802-11-header
  http://www.uniroma2.it/didattica/TPI1/deposito/tpi1-1112-03-wlan-v1.pdf
  ftp://ftp.informatik.hu-berlin.de/pub/doc/o-reilly/9780735612914/cd_contents/TrainingSlides/01_LAN_Technologies.PPT

Roaming 구조
  https://www.cs.auckland.ac.nz/courses/compsci314s1t/lectures/314s1-17-19-ether-4up.pdf

7/01/2018

python 자료정리 및 링크

1. Python 기본내용 

Python은 쉽게 배울수 있으며, 다양한 Library에 연결되어 사용되어지고 있어 테스트 용도 혹은 간단한 프로그램은 Python으로 쉽게 생성가능하다. 

아래의 내용은 Python 관련책의 예제내용 및 Python 사이트 참조 

  • 파이썬으로 배우는 알고리즘 트레이딩  
주식관련 Python 이며, 쉽게 Python 문법부터 설치를 배울 수 있어 너무 좋으며, PyQT기반으로 구성을 하여 증권사 Open API로 로그인하여 동작한다.
관심을 가지는 것은 주식으로 자동매매하는 프로그램 때문에 이 사이트에 관심을 많이 가졌다.
  https://wikidocs.net/2814

상위사이트는 대체적으로 Window 기반으로 설명을 하므로 Linux 기반에서 조금씩은 다른 것으로 보인다. 

  • The Hitchhiker Guide to python
외국서적으로 간단하게 Python에 대해 소개해주고 있음 
  https://python-guide-kr.readthedocs.io/ko/latest/

  • Python Index   
기본문법을 자세히 알려주기 때문에,  관련 함수 및 내용은 찾아보자.
그리고, 모르는 문법이나, 구조는 구글링을 하면, 대충 동작방식을 알수 있다.
  https://docs.python.org/ko/3/index.html

  • Python Tips

  • Python 3.x Tutorial  
Python의 기본 설명서로 상위 책처럼 각각의 예제가 있으므로 각 부분들을 보고 쉽게 익히자.
  https://docs.python.org/3.8/tutorial/index.html
  • Python 2.7 Tutorial  
  https://docs.python.org/2.7/

  • Python 관련정리자료 
  https://ahyuo79.blogspot.com/2016/06/python-and-django.html


1.1  Python 설치 및 기본문법 


  • Python의 Module 관련내용 
Module 생성 및 사용방법이며 추후 시간되며 나만의 모듈도 만들어보자 
  https://wikidocs.net/1074
  https://python-guide-kr.readthedocs.io/ko/latest/writing/structure.html#modules

  • Python 기본 제어 및 내장함수 
Python을 하다보면 매번 기본문법들이 조금씩 헷갈려서 보게되어진다.
  https://wikidocs.net/2864

  • Python의 기본자료구조

  • Python의 변수와 문자열
Python으로 작성하다보면, 항상 문자열과 변수사이의 변환 및 문자열 변환때문에 보게되어짐

  • Python 의 Class 생성방법
  https://book.pythontips.com/en/latest/classes.html


1.2 Python 의 Style Guide

기본문법과 설치 및 관련내용을 알아봤으니, Naming Convention 과 관련된 Code Convention 등을 알아보자.
  https://www.python.org/dev/peps/pep-0008/


2. Python 개발환경구성  

  • 개발환경에 관련된 내용을 아래에서 참고
vim/vscode/ecplise/pycharm 등 
  https://python-guide-kr.readthedocs.io/ko/latest/dev/env.html

Python을 개발하기 위해서 제공해주는 IDE Tool
  https://python-guide-kr.readthedocs.io/ko/latest/dev/env.html#ides


2.1  각 OS 별로 Package 지원 및 설치 

  • Linux (Ubuntu)
python을 제공해주고 있으며, 필요한 패키지를 pip or conda 별도로 설치를 진행하면 되겠다.
구지 Manual로 보면 아래 참조 

  • Window 
현재 나의 경우는 Window에서 사용할 일이 없기에 추후 관련자료만 링크
  https://python-guide-kr.readthedocs.io/ko/latest/starting/install/win.html

  • Python의 Package 관리 및 가상화   
Python에서 Package는 주로 보면 pip/pip3기반으로 주로 관리가 되어지며, conda로도 관리가 되어진다. 
pip기반으로는 venv로 가상환경을 만들고 conda 역시 virtuaenv를 만들기 때문에 둘다 같이 봐야한다.

Windw에서 conda 설치 

pip 와 virtualenv 설명 

python -m pip  install

virualenv (venv)


2.2 Python 와 C언어 확장 

  • PyPi 와 Cython 관련내용 
PyPi 와 Cython에대한 비교 및 관련내용 
  http://www.itworld.co.kr/news/122334

  • C/C++  Library 를 Python 연결확장 (Cython)
Python Extending 관련 및 관련함수 


Python 과 C의 실제 연결방법의 예제 

  • Cython 과 SWIG 
C/C++ Libaryr 기반의 Python 이며 상위 설명의 기술을 적용한 것