2017년 11월 2일 목요일

[파이선-네트워크 엔지니어]02. python을 시작하기 전에..

1. 파이썬은 object 기반의 프로그램입니다.
   하지만, procedural programming 또한 가능합니다.

   프로시져 프로그램은 전통적인 프로그램 방식이며, 이는 흡사
    해야할 일을 순차적으로 적는 방식과 같습니다.
    예를 들면, 마트에서 장을 본다면,  아래처럼 할일을 적을 수 있을 것입니다.

      0. 마트에서 장보기
        -0.0 카트를 가지고,
        -0.1 샴프를 카트에 담고
        -0.2 빵을 카트에 담고
        -0.3 식용류를 카트에 담고
        -0.4 계산대에 물건을 내려놓고
        -0.5 카드결재를 하고
       

이중에서 자주 실행할 step을 함수로 만들어 실행하게 할수도 있습니다.

아래는 procedural 형태로 작성한 파이썬 예제입니다.
===================================
Def addition(number1,number2):
return number1 + number2

x=4
y=8

print addition(x,y)
===================================


2. 이 반면 파이썬은 object-oriented programming 또한 가능합니다.
  오브젝트 프로그램은 실제세상의 모델처럼 프로그램을 오브젝화해서 프로그램을 하는 방법입니다.
 이를 위해서, classes,objects,attributes,methods등을 만들어 사용합니다.
 이 개념을 살펴보면
   동물중에 개를 살펴보면..
   object는 실제 집에서 기르는 개의 이름을 나타냅니다.
              바둑이,뽀삐...등등 이 될수 있겠죠
   class는 모든 개가 가지고 있는 추상화된 청사진으로
             각 실제 개가 가지고 있을수 있는 특징이나 행동을 정의할수 있습니다.
             예를 들면 개->털색깔이 있고
                           개=> 멍멍 짖을수 있습니다.
             이런 특징/행동을 class를 통해서 정의합니다.

   attribute는 개가 가지는 특징을 표현합니다.
                 뽀삐.털색깔==갈색
   method 는 개가 할수 있는 액션을 표현합니다.
                 뽀삐.짖기 => 멍멍

다음은 object-oriented code 예제입니다.

Class person(object):
   def __init__(self,name,age):
          self.name = name
          self.age = age
   def great(self,person):
        print "hello %s, how are you today?" % (person)

John = person("john",31)
Erik =person(Erik",31)

print "john says:",
john.great("Erik")
print "Erik says:",
Erik.great("john")


[파이선-네트워크 엔지니어]01. 왜? 프로그램을 배워야할까요?

1. 왜 우리는 프로그래밍을 배울까요?

-   운영의 효율성 때문입니다
    즉, 주어진 시간에 더 많은 일을 하고, 시간과 노력을 아끼기 위해서 입니다.


- 사람은 가끔 실수를 합니다.
  네트워크 장애중 51% 휴먼에러 (2010,  Ponemon instatitue's national survey on Datacenter)
  네트워크 보안에 이슈가 66%가 장비설정에 관련된 휴먼에러(2011, algo sec survey)


 이런 이유로 자동화 및 프로그램은 이런 이슈를 해결할 수 있습니다.

 시간을 단축시키는것은 비용을 세이브 시킵니다.

현재 대세가된 기술들은 (예를 들면 SDN, NFV,  NETCONF/YANG...) 모두 네트워크 엔지니어가 프로그래밍을 요구하고 있습니다.


2. 그럼 어떤 프로그램 언어를 배워야 할까요?

소위 대세가 되는 프로그램을 배워야 하는데.. 그 대세 프로그램중의 하나가 Python입니다.
TIOBE programming community index는 인터넷상의 어떤 언어가 가장 인기인지 그 순위를 보여줍니다.
2017년 10월기준으로 python이 5위를 차지하고 있습니다.

그외에 많은 다른언어가 있지만, 이글에서는 python을 타겟으로 하겠습니다.


3. python 버젼
  python version 1.0 - 1994.1월
  python version 2.0 - 2000.10월
  python version 3.0 - 2008.12

현재 python 2.x 와 3.x 버젼이 많이 쓰이고 있는데, 문법이 미묘하게 약간 다릅니다.

이 글에서는  2.7 버젼을 타켓으로 하겠습니다.
그이유는  아직 많은 인기있는 library들이 아직 pyhon 3.0으로 포팅되지 않았습니다.






   
 

네트워크 시뮬레이터 (eve-ng) 설치 방법

안녕하세요. eve-ng란 가상 시뮬레이터 환경을제공하는 플랫폼입니다.              시스코 스위치, 주니퍼 방화벽, window , linux등을 가상환경에 설치해서              lab을 할수 있도록 합니다. e...