안녕하세요. OCOL 입니다.
OCOL의 여섯 번째 쿠키🍪
2020.11.15

여섯 번째 쿠키에서는,
  • 아두이노 시리얼 통신하기
  • 패킷 가로채기
  • 넘파이(Numpy)와 함께 땅따먹기를 - 01
  • 오늘의 음악은?
순서로 구성되어 있습니다. 마지막에 본글 링크가 모여 있으니 끝까지 편하게 읽으셔도 좋습니다. 오늘 쿠키도 즐겨주세요😉
by TULA
아두이노 시리얼 통신하기
통신의 기초 다지기 - 2
안녕하세요, 오늘은 저번주에 소개해드린 시리얼 통신을 실제로 사용해보려고 합니다. 실제로 아두이노에선 시리얼 통신이 어떻게 이루어지는지, 어떻게 사용하면 되는지 간단하게 설명해보는 시간을 가져보도록 하겠습니다. 보너스로 아두이노의 led도 제어하는 방법도 첨부했습니다. 그럼 오늘도 힘내서 달려봐요!
준비물: 아두이노, USB 2.0 AB 케이블
일단 아두이노가 필요합니다. 그리고 아두이노와 컴퓨터(노트북)을 연결할 케이블도 하나 준비해주세요. 아두이노 케이블이라고 쳐서 구매하셔도 좋고, USB 2.0 AB 케이블이라고 쳐서 구매해주셔도 됩니다.
1. 아두이노 프로그램 설치 (Arduino IDE)
이 사이트에서 아두이노 IDE를 설치해주세요. 위 프로그램을 통해 아두이노와 시리얼 통신을 해볼 예정입니다. 준비가 다 되셨다면 다음 단계로 넘어가봐요.
2. 아두이노 연결하기
아두이노와 컴퓨터를 연결하면 세팅해줘야 할 것이 있습니다. 바로 아두이노가 잘 연결되었는지 확인하는 작업인데요. 작업하시는 환경에서 장치관리자를 찾아 들어가주세요. 장치관리자에서 포트 항목으로 가시면, COM 뒤에 일정한 숫자로 지정되어 연결되어 있습니다. 그렇다면 연결이 잘 된 거랍니다.
만약 장치 드라이버가 없다면 ‘기타 장치-알 수 없는 장치’ 와 비슷하게 나타나실 수도 있습니다. 그렇다면 우클릭을 통해 드라이버 소프트웨어를 설치해주셔야 합니다. 포트 하단에 아두이노가 아닌 다른 이름으도 아두이노가 연결되어 있을 수도 있습니다. 참고해주세요!
좀 더 간단하게 아까 설치한 아두이노 프로그램을 통해 확인하실 수도 있습니다. 아두이노 툴을 실행시켜 상단의 ‘툴-포트’ 메뉴를 들어가보시면 아두이노가 잘 연결되었는지 확인 가능합니다. 잘 연결되었다면 연결되어있는 아두이노를 클릭하세요.
3. 통신하기
이제 준비는 끝났습니다. 이제 코딩을 하면 간단하게 통신을 할 수 있습니다. 일단 아두이노에 간단하게 코딩을 해보도록 하겠습니다. 아두이노 보드에 있는 led를 5를 전송하면 깜빡거리도록 하는 코드를 작성해봤습니다. 추후에 아두이노 코딩과 관련된 설명을 하겠지만, 일단 간단하게 setup()은 맨 처음에 1번만 실행되는 함수입니다. loop는 이름대로 계속해서 반복 실행되는 부분입니다.
void setup() {
    // put your setup code here, to run once:
    Serial.begin(9600);
    pinMode(13, OUTPUT);
}

void loop() {
    // put your main code here, to run repeatedly:
    int test = Serial.parseInt(); //input int
    if (test==5) {
        Serial.println(test); //print test
        digitalWrite(13, HIGH); //led on
        delay(3000); 
        digitalWrite(13, LOW); //led off
        delay(3000);
    }
}
 
begin을 통하여 통신의 시작을 알린 뒤, loop 안에서 숫자를 입력 받아 만약 5가 입력되면 그 숫자를 출력하고, 아두이노에 달려있는 led를 3초동안 켰다가 꺼는 작업을 실행하는 코드입니다. 위의 코드만으로 간단하게 시리얼 통신으로 아두이노를 제어할 수 있습니다.  

글을 마치며
오늘은 실제 아두이노에서 시리얼 통신을 하고, 더 나아가 아두이노를 제어하는 방법을 가볍게 실습해봤습니다. 간단하죠? 사실상 연결만 하면 끝이랍니다! 이제 여기서 아두이노에 다양한 센서를 연결하고, 값을 전달받아 그걸 웹에 뿌려준 뒤 제어한다면 그게 바로 IoT의 시작이라고 생각합니다. 여러분도 충분히 해보실 수 있을 거라 믿어요. 앞으로도 함께 IoT 개발자를 향해 열심히 달려나가 봅시다.
by 한닢
패킷 가로채기
네트워크 해킹-02
우리는 웹에 어떻게 접속하나요? 일단 인터넷 브라우저를 클릭한 후, 웹 주소를 입력하죠. 웹 주소를 입력하는 과정을 통해 우리는 서버에 일종의 "요청"을 하는 것입니다. "나 이 웹페이지로 들어가고 싶어. 웹페이지의 정보를 나한테 보내줘." 이러한 요청을 말이죠. (이때의 우리는 클라이언트가 됩니다.) 요청을 받은 서버는 해당 웹페이지의 정보를 우리에게 보내줍니다. 이때 보내주는 데이터 블록을 "패킷"이라고 부릅니다.

그렇다면 이 패킷을 어떻게 볼 수 있는지, 또 이 패킷을 통해 어떤 것을 할 수 있는지 궁금하시지 않으신가요? 일단 이 패킷을 가로채기 위해서는 우리(클라이언트)와 서버 사이의 하나의 문인, "프록시 서버"가 필요합니다. 하나의 문이라고 표현한 것처럼, 프록시 서버를 만들고 나면, 우리와 서버 사이의 모든 정보가 이 프록시 서버를 거치게 됩니다. 그렇다면 바로 이 곳을 주목하면 우리가 원하는 패킷을 가로챌 수 있겠죠?

*본글에서는 "Burp Suite"라는 툴을 사용해서 패킷을 잡는 과정이 Step by Step으로 나와있습니다. Burp Suite를 통해 직접 패킷을 가로채보실 분은 본글을 참고해주세요!
by TULA
인문학적 시선으로 인공지능 파헤치기 [7호]
넘파이(Numpy)와 함께 땅따먹기를 - 01
데이터 타입: 파이썬의 데이터 구조는 단순하지 않다.
컴퓨터 언어의 성격에 따라 변수를 저장할 때 이 변수 안에 어떤 데이터 타입이 들어갈 예정인지 미리 알려주지 않아도 되는 언어가 있다. 대표적인 예시가 파이썬, 루비와 같은 동적 언어다. 이들은 데이터 타입을 동적으로 추론하기 때문에 개발자는 편하다. 반면, 컴퓨터는 힘들다. 파이썬의 변수는 단순히 값을 저장하는 것이 아니라 값이 저장된 메모리의 ‘주소를 가리키고’ 있기 때문이다. 포인터 개념이 없는 파이썬에게 이들은 모두 ‘객체’다. 주소 뿐만 아니라 참조 횟수 등 여러 정보들이 담겨 있는 셈이다. 이렇게 느린데 어떻게 파이썬으로 머신러닝, 딥러닝, 인공지능 연구를 한다는 것일까? 해결책은 역시 넘파이다. 넘파이는 데이터 관리법과 효율적인 계산법을 제공한다. 그래서 넘파이 배열은 파이썬의 리스트처럼 다양한 값을 하나의 배열에 온전히 저장하지 못한다.
넘파이 배열 만들기 (속성편)
1. 파이썬 리스트를 np.array()의 패러미터로 건네주기
    np.array([1, 2, 3, 4, 5])
2. 다섯 개의 요소를 가지며 모든 배열값이 정수 0인 넘파이 배열 만들기
    np.zeros(5, dtype = int)
3. 부동소수점 데이터 1로 온 배열을 채우고, 2x4의 2차원 배열로 만들기
    np.ones((2, 4), dtype = float)
4. 8로 2x4 배열 도배하기
    np.full((2, 4), 8)
5. 0부터 30에 도달할 때까지 3씩 건너뛰며 만들기
    np.arrange(0, 30, 3)
6. 0과 30 사이, 일정한 간격을 가진 7개의 값으로 채운 배열 만들기
    np.linspace(0, 30, 7)
7. 3x3 크기의 단위 행렬
    np.eye(3)
8. 5 크기의 배열만 달랑 만들기
    np.empty(5)

이하 생략! 이 이상은 넘파이 문서를 참고하라.
넘파이 배열의 호패
넘파이 배열은 호패를 가지고 있다. 그리고 마치 신분증 검사를 하듯이 이끌어낼 수 있다.
어떻게?
1. 배열의 크기: {배열의 이름}.size
2. 차원의 개수: {배열의 이름}.ndim
3. 각 차원에는 요소가 몇 개 있는가?: {배열의 이름}.shape
짧은 도감이 모두 끝났다. 마치 컨닝페이퍼와 같다. 하지만 이는 어디까지나 도감일 뿐이며, 여러 주의사항, 참고할 만한 레퍼런스, 무엇보다 저자의 깃헙 실습 노트북을 즐기려면, 본글을 꼭 정독하길 바란다.
by Suyeon Park
오늘의 음악은?

🎵 Sucker for You - Matt Terry
오늘 쿠키의 글 링크를 아래에 모아두었습니다. 이번 주도 수고 많으셨습니다! 🌼
오늘의 쿠키는 여기까지 입니다.
여섯 번째 쿠키는 어떠셨나요?
오늘의 쿠키가 좋았다면?
👆👆👆
친구나 동료에게 공유해주세요!
😉좋은 건 나눠 먹어야죠!
OCOL
one.cookie.one.line@gmail.com