<수업노트> 비공학계열 학생을 위한 (디지털 기술 입문) 4주차 수업
4주차 수업에서는 4차산업혁명의 구성요소인 '빅데이터'를 배웠습니다. 빅데이터는 뭘까요? 큰 데이터? 많은 데이터터 사실 이름만 들으면 방대한 양의 데이터를 떠오르게합니다.
빅데이터의 '정의'
빅 데이터는 전체적인 정보 관리 전략으로, 전통적인 데이터를 비롯한 다양한 유형의 데이터와 데이터 관리를 포함하고 통합한다. 빅 데이터는 네개의 V로 정의 할 수 있습니다.
- 볼륨(Volume). 데이터의 양입니다. 볼륨은 더 많은 데이터를 의미하지만 데이터의 세분성은 매우 독특한 특성입니다. 빅 데이터는 대량의 밀도가 낮은, 비구조화 데이터를 처리합니다. 즉, Twitter 데이터 피드나 웹 페이지와 모바일 앱의 클릭 스트림, 네트워크 트래픽, 순식간에 데이터를 수집하는 센서 활성화 장치 등과 같이 값을 알 수 없는 데이터를 뜻합니다. 빅 데이터는 이러한 Hadoop 데이터를 귀중한 정보로 변환합니다. 어떤 기관은 이런 빅 데이터가 수십 테라바이트지만, 어떤 기관은 수백 페타바이트에 달할 수도 있습니다.
- 속도(Velocity). 데이터를 수신하는 속도입니다. 데이터를 받아서 동작을 취하는 속도까지 포함할 수도 있습니다. 일반적으로 고속 데이터는 디스크에 기록되지 않고 메모리에 직접 스트리밍됩니다. 어떤 사물인터넷(IoT) 애플리케이션은 실시간 평가와 동작이 필요한 건강 및 안전 정보를 포함할 수도 있습니다. 인터넷에 연결된 스마트 상품은 실시간 또는 그에 가까운 빠르기로 작동합니다. 예를 들어, 소비자 전자 상거래 애플리케이션은 모바일 장치 위치와 개인의 기호를 종합하여 시간에 따른 마케팅 상품을 만들어냅니다. 운영적 측면에서, 모바일 애플리케이션 경험은 사용 인구가 많아서 네트워크 트래픽을 증가시킵니다. 사람들은 모바일 애플리케이션이 즉시 반응하기를 기대합니다.
- 다양성(Variety). 새로운 비구조화 데이터 유형. 비구조화 데이터 유형과 반구조화 데이터 유형(예: 텍스트, 오디오, 비디오)은 의미와 보조 메타데이터를 도출하려면 추가적인 처리가 필요합니다. 비구조화 데이터는 한 번 이해하고 나면 구조화 데이터와 마찬가지로 요약, 계보, 감사 가능성, 개인정보 보호 등의 여러 가지 동일한 요구 사항이 적용됩니다. 알려진 소스의 데이터가 예고 없이 바뀌면 복잡성은 더욱 증가합니다. 잦은 또는 실시간 스키마 변화는 트랜잭션이나 분석 환경에 모두 부담으로 작용합니다.
- 가치(Value). 데이터에는 내재적 가치가 존재하지만, 누군가 발견해야 드러납니다. 데이터에서 가치를 추출하는 정량 및 조사 기법은 여러 가지가 있습니다. 가령 소비자 기호나 심리를 발견하거나, 위치별 관련 상품을 만들거나, 고장 나려는 장비를 알아내는 등이 이에 해당합니다. 데이터 저장과 처리 비용이 기하급수적으로 감소하면서 예전에는 샘플만 이용할 수 있었지만 지금은 전체 데이터 세트에 통계 분석을 적용하여 풍부한 데이터를 추출할 수 있게 되는 기술 혁신이 일어났습니다. 기술 혁신으로 훨씬 더 정확하고 정밀한 결정을 내릴 수 있게 되었습니다. 그러나 가치를 찾기 위해서는 명석하고 통찰력 있는 분석가와 비즈니스 사용자, 경영진이 관여하는 새로운 발견 과정이 필요합니다. 실질적인 빅 데이터의 문제는 인간적입니다. 적절한 질문을 던지고, 패턴을 인식하고, 정보에 입각한 가정을 하고, 행동을 예측해야 하기 때문입니다.
데이터를 이루는 '단위'
가장 작은 단위인 비트(bit) 컴퓨터는 기계입니다. 이 말의 의미는 생각할 수 있는 두뇌가 없다는 뜻입니다. 단순히 데이터를 저장할 메모리와 이를 처리하는 연산장치, 그리고 입출력 장치로 구성되어 있습니다. 여기서 우선 알아야 할 것은 데이터입니다. 컴퓨터는 전원을 이용한 기계이기 때문에 전원이 On되었을 때(충전) 혹은 전원이 Off(방전)되었을때의 두가지 상태만을 감지할 수 있습니다. 이 것은 간단히 2진수로서 표현이 있습니다. 2진수 한 자리는 두가지 상태의 정보를 표현 가능합니다. 1과 0 이 바로 그것이다. 데이터를 저장할 메모리 소자가 충전 혹은 방전되거나 하는 상태를 기점으로 1과 0 이 세트되게 됩니다.
바이트(Byte)이제 좀더 큰 단위의 데이터 크기를 알아봅시다. 앞서 말했던 비트는 실제로는 너무나 작은 단위입니다.그래서 이를 8개씩 모아서 사용하는 경우가 많습니다. 그리고 이것을 1 바이트(Byte)라고 부릅니다.
데이터의 크기를 표현하는 방법에는 비트와 바이트, 워드가 있지만 이들이 표현할 수 있는 크기는 매우 작습니다. 그렇다면 보다 큰 단위는 어떻게 표현할까요? 여기에는 접미어로서 붙는 단위가 있으며, 각각 K(kilo), M(mega), G(giga), T(tera) 등이 있습니다.
4주차 코딩수업은 지난주와 비슷하게 헬스케어앱인 BMI계산기를 만들어 보았습니다.
BMI는 Body Mass Index, 즉 체질량지수입니다. 체중(kg)과 키(m)를 사용하여 계산하는데 단위에 주의해야 합니다.
BMI=체중/(키*키)
BMI < 20, 저체중
20<=BMI<25, 정상체중
25<=BMI<30, 경도비만
30<=BMI<40, 비만
BMI >= 40, 고도비만
그럼 블록코딩에 앞서서 디자인을 해보겠습니다.
위 사진과 같이 키와 체중을 입력할 수 있도록 두개의 TextBox를 드래그합니다. 입력을 쉽게 하도록 TextBox의 속성창에서 Hint에 키(m), 체중(kg)을 써줍니다. 이름은 txtH, txtW로 하고 둘 다 TextAlignment는 Center로 둡니다. 그럼 위 사진처럼 중앙에 위치하게 됩니다.
버튼은 이름을 btnCalc로 바꾸고 Text 속성에 "BMI계산"이라고 입력합니다.
그 아래 두개의 Label을 드래그하고 각각 이름을 lblBMI, lblResult로 바꿉니다. lblBMI의 Text 속성은 "당신의 BMI는?"으로 바꾸고 lblResult의 Text는 지웁니다. lblResult는 BMI 값에 따라 비만등급을 측정해줍니다.
다음으로 블록코딩을 해보겠습니다!
최종 블록코딩은 위 사진과 같습니다.
하나씩 살펴보면 btnCalc 버튼이 클릭되면 bmi, w, h 로컬 변수를 선언하고 0으로 초기화 합니다. w는 txtW의 값을, h는 txtH의 값을 갖게 합니다. bmi = w / (h*h)의 공식으로 계산합니다.
계산된 bmi 값은 format as decimal 블록을 사용하여 소숫점 한자리로 lblBMI에 표시합니다. 그 아래는 if~else if~else 블록을 사용하여 bmi값에 따른 비만 정도를 lblResult에 표시합니다.
제가만든 BMI앱입니다. BMI측정 한번 해보세요^^