본문 바로가기

Programming

OpenCV(Python) + PyQt OpenCV로 영상처리나 컴퓨터 비전을 처리하고 나서 결과를 화면에 표시하려면 결국 창을 띄워야 하는데, OpenCV의 imshow() 함수 만으로는 역부족인 경우가 많습니다. 파이썬 언어에서 인기 있는 멀티 플랫폼 GUI 프레임웤인 PyQt5로 멋지게 GUI를 구현하고 영상만 OpenCV로 처리해서 보여주고 싶을때 어떻게 하는지 설명하는 포스트입니다. PyQt를 설치하고 사용을 어떻게 하는지는 여러 블로그와 유튜브에 올라와 있는 강좌를 이용해서 공부하시구요. 여기서는 단순히 OpenCV-Python가 읽은 이미지를 어떻게 PyQt로 출력 하는지만 설명합니다. OpenCV-Python에서는 모든 이미지 정보는 NumPy의 ndarray 객체에 담겨 있습니다. 결국 ndarray 객체를 어떻게 PyQt로 .. 더보기
객체인식 = 라즈베리파이 + Coral EdgeTPU 구글에서 Coral Edge TPU라는 제품을 내 놓은게 좀 됐습니다. https://coral.withgoogle.com/products/accelerator/ 이것을 라즈베리파이에 USB로 연결하면 빠른 병렬 연산이 가능해 지기 때문에 실시간 객체 인식도 가능합니다. 이번 포스트에서 어떻게 하는지 단계적으로 알아보겠습니다. 장치 구매 먼저 Coral Edge TPU 장치를 구매해야겠죠. 위 링크에서 "BUY" 버튼을 누르면 여러 distributor 목록이 나오는데 국내에서 구매하기에는 Mouse가 적당해 보입니다. https://www.mouser.com/ProductDetail/Coral/G950-01456-01?qs=sGAEpiMZZMve4%2FbfQkoj%252BNzzHFZgWGqIphwvwT.. 더보기
왜 OpenCV는 BGR 포맷을 쓸까? OpenCV를 처음 접하고나서 제가 가졌던 첫 의문이었습니다. 왜 OpenCV는 BGR 포맷을 쓸까? 대부분의 사람들에게 익숙한 RGB를 쓰지 않고 말이죠. 이 때문에 RGB 포맷으로 바꾸려면 파이썬의 경우 아래와 같은 코드를 꼭 거쳐야 하는 불편함이 있습니다. rgb = bgr[:,:,::-1] 저는 의문이 한번 들면 그게 쓸모가 있든 없든, 문제 해결에 도움이 되든 안되든, 그 이유를 찾아야 속이 후련해 지는 타입입니다. 물론 이 주제에 대해 찾아 본건 아주 오래전이기는 합니다만, 머리가 복잡한 일이 생겨서 오랜만에 과거에 메모해두었던 노트들을 뒤젹이다 이 주제가 눈에 띄어서 포스팅해 봅니다. 일단 구글링을 했더니 OpenCV와 관련해서 많은 포스팅을 하는 learnopencv.com의 사타야 말릭 .. 더보기
멀티캠퍼스 강좌 개설 오랜만에 블로그 포스팅인데 광고글이네요.올해 제가 국내 IT교육 센터의 1등으로 자리잡고 있는 멀티캠퍼스에 정규 과정으로 라즈베리파이 관련 강좌를 개설했습니다. 강좌 이름은 "라즈베리파이와 파이썬을 활용한 IoT 프로젝트"입니다.과정 링크는 아래와 같구요.http://ksp.multicampus.com/ksp/servlet/controller.gate.course.MOffLinkServlet?p_subj=Q29980 과정 내용은 제가 살고 있는 땅콩집에 설치한 스마트 홈을 구현하는데 필요한 모든 내용을 담고 있습니다.단순히 어떻게 만드는가만 다루는게 아니라 어떤 원리로 동작하는지를 전달하는데까지 목적을 두고 있으니 어떤 강좌보다 내실있을 꺼라고 확신합니다. 블로그에 강의를 듣고 싶다는 의견이 종종 있었는.. 더보기
라즈베리파이 NodeJs 설치 라즈베리파이에 NodeJs를 설치하는 방법을 설명합니다. 1. 자신이 사용하는 라즈베리파이 CPU 아키텍처 알아보기 nodejs.org에서 ARM용으로 빌드된 바이너리 파일을 다운로드 받으려면 라즈베리파이의 CPU 아키텍쳐를 알아야 합니다. 아래 명령어로 확인합니다. pi@raspberrypi:~ $ lscpu 제가 사용하는 라즈베리파이3B 에서 확인한결과 armv7입니다. 원래 라즈베리파이3 SoC인 BCM2837은 ARM Cortex A53(ARMv8)이지만 라즈비안 운영체제가 32비트이기 때문에 ARMv7l로 나타나니까 이에 맞게 설치해야 합니다. 2. nodejs.org 에서 알맞는 바이너리 다운로드 주소 얻기 http://nodejs.org 사이트에서 메인 페이지에 “Other Download”.. 더보기
라즈베리파이 카메라 OpenCV 라즈베리파이에 OpenCV를 설치하고 나면 카메라로 부터 이미지를 얻고 싶을 텐데요. 라즈베리파이에 카메라를 연결해서 OpenCV를 프로그래밍 하는 방법을 알아 보려고 해요. 라즈베리파이에 카메라를 연결 할 수 있는 방법은 2가지 입니다. 1. 라즈파이 카메라를 CSI 포트에 연결해서 사용 2. 웹 캠을 USB에 연결해서 사용 위 2가지 방법 각각은 물론 모두 사용하는 것도 가능합니다. USB 웹캠 USB 타입의 웹캠은 무얼 사야하나 고민이 될텐데요, “UVC(USB video device class)”를 지원하는 웹캠이면 아무것이나 잘 인식이 됩니다.(https://en.wikipedia.org/wiki/USB_video_device_class) 보통 오픈마켓에서 웹캠을 검색하면 대부분 UVC 지원이라.. 더보기
라즈베리파이 OpenCV 설치(빌드 없이 설치파일로) Update : 2018.02.02 , OpenCV 3.4.0Update : 2020.01.07라즈비안 버스터 버전에서 종속 라이브러리가 달라져서 설치가 되지 않는것으로 보입니다. 버스터 버전에서부터는 제가 제공하는 설치 파일 말고 piwheel.org에서 제공하는 버전을 사용하시는게 좀 더 편하실것 같습니다. sudo pip3 install opencv-contrib-python 으로 설치하시고 아래 명령어로 종속 라이브러리를 추가 설치해 주시면 될겁니다. sudo apt install libqt4-test libhdf5-dev libatlas-base-dev libjasper-dev libqtgui4 라즈베리파이에 OpenCV를 설치하는 방법을 알아 봅니다. OpenCV는 인텔에서 시작해서 현재는 오.. 더보기
원격 터미널로(윈도우, 맥) 라즈베리파이 GUI 띄우기 VNC로 원격 데스크탑 연결이 아니라 터미널에서 X-Window 띄우기 라즈베리파이의 화면을 윈도우나 맥에서 띄우는 방법은 VNC나 Xrdp를 이용하면 되기는 합니다. 그런데, 원격 데스크탑을 연결해서 작업하다보면 아무래도 반응이 느릴 수 밖에 없습니다. 그래서, 일반적으로 터미널 하나 열어서 ssh로 접속해서 명령어 위주로 작업하는 것이 빠른데요. 터미널로 작업하던 중에 작업한 결과가 GUI가 있는 X-Window 화면을 띄워야 할때가 필요하면, 다시 VNC나 Xrdp를 이용해서 원격 데스크탑으로 접속해야 하는 것은 많이 불편합니다. 이번 포스팅에서는 VNC나 Xrdp 없이 단순한 ssh 터미널에서 라즈베리파이의 X-window 화면을 윈도우와 맥에서 띄우는 방법을 차례대로 설명하겠습니다.(사실, 라즈.. 더보기
키보드/모니터 없이 랜선만으로 raspberry pi 사용하기- 인터넷 공유 앞서 라즈베리파이를 키보드/모니터/마우스 없이 사용하는 방법을 시리즈로 포스팅 했습니다. http://blog.xcoda.net/83 2017.10.12 추가분 ssh가 보안 문제로 기본 상태에서는 비활성화 되어 있어서 아래의 두가지 방법 중 하나로 먼저 ssh를 활성화 시키고나서 진행해야 합니다. 1. 시리얼 모니터로 접속해서 ssh를 활성화 한다.2. SD 카드를 PC에 연결해서 ssh라는 이름의 파일을 생성한다. (확장자 없고 내용도 무관함, 부팅 과정에서 이 파일의 유무에 따라 ssh 활성화 후 해당 파일은 삭제됩니다.)참고 : https://www.raspberrypi.org/documentation/remote-access/ssh/ 이번에는 시리얼 tty말고 다른 방법으로 Raspberry-P.. 더보기
라즈베리파이 GPIO에 이름표를 붙이자! Raspberry Leaf Raspberry-pi(라즈베리파이) GPIO 헤더핀에 작은 종이를 붙여서 어떤핀이 어떤핀인지 알수 있게 해주는 Raspberry Leaf를 소개해 봅니다. [Raspberry Leaf, 출처 : https://www.raspberrypi.org/blog/raspberry-leaf/ ] Raspberry-pi(라즈베리파이) GPIO는 Arduino(아두이노)의 GPIO 처럼 친절하지 않습니다. 각 핀이 무엇인지 알려주는 핀헤더 번호나 역할에 대한 프린트가 없기 때문입니다. [Arduino(아두이노) Pin header] [Raspberry-Pi Pin header] 그래서 Raspberry-pi(라즈베리파이)에 GPIO를 이용해서 회로를 구성할 때 무척 시간이 오래 걸리고, 잘 못 연결하는 경우가 많습니.. 더보기
라즈베리파이 모니터없이 원격에서 화면 보기(VNC 화면 공유) 이전 포스트에서 라즈베리파이 개발환경 꾸미기에 대해서 시리즈로 연재했는데요, 주요 컨셉은 라즈베리파이를 하나의 컴퓨터 처럼 모니터, 키보드, 마우스 연결해서 쓰는 형식이 아닌 개발보드로 연결해서 터미널로만 연결해서 사용할 수 있는 방법에 대해서 알아 보았어요. 라즈비안 OS 설치하기 키보드 모니터 없이 라즈베리파이 Login 하기 Wifi 설정 / 기본 설정하기 파이썬 + Eclipse로 라즈베리파이 개발하기 라즈베리파이에 NodeJs 설치하기 NodeJs + Eclipse로 라즈베리파이 개발하기 C/C++ Cross Compiler(Tool Chain) 설치하기 Eclipse + C/C++ 로 라즈베리파이 개발하기 그런데, 때에 따라서는 라즈베리파이 데스크탑 환경, 즉 GUI를 출력하는 프로젝트를 해야.. 더보기
라즈베리파이 개발환경 꾸미기 #8. Eclipse + C/C++로 라즈베리파이 개발하기 이 포스트는 라즈베리파이 개발환경 꾸미기를 주제로 아래와 같은 시리즈 연재로 이루어 집니다. 라즈비안 OS 설치하기 키보드 모니터 없이 라즈베리파이 Login 하기 Wifi 설정 / 기본 설정하기 파이썬 + Eclipse로 라즈베리파이 개발하기 라즈베리파이에 NodeJs 설치하기 NodeJs + Eclipse로 라즈베리파이 개발하기 C/C++ Cross Compiler(Tool Chain) 설치하기 >> Eclipse + C/C++ 로 라즈베리파이 개발하기 더보기
라즈베리파이 개발환경 꾸미기 #7.C/C++ Cross Compiler(Tool Chain) 설치하기(윈도우/맥) 이 포스트는 라즈베리파이 개발환경 꾸미기를 주제로 아래와 같은 시리즈 연재로 이루어 집니다. 라즈비안 OS 설치하기 키보드 모니터 없이 라즈베리파이 Login 하기Wifi 설정 / 기본 설정하기파이썬 + Eclipse로 라즈베리파이 개발하기라즈베리파이에 NodeJs 설치하기NodeJs + Eclipse로 라즈베리파이 개발하기>> C/C++ Cross Compiler(Tool Chain) 설치하기 더보기
라즈베리파이 개발환경 꾸미기 #6. NodeJs + Eclipse로 라즈베리파이 개발하기 이 포스트는 라즈베리파이 개발환경 꾸미기를 주제로 아래와 같은 시리즈 연재로 이루어 집니다. 라즈비안 OS 설치하기 키보드 모니터 없이 라즈베리파이 Login 하기Wifi 설정 / 기본 설정하기파이썬 + Eclipse로 라즈베리파이 개발하기라즈베리파이에 NodeJs 설치하기>> NodeJs + Eclipse로 라즈베리파이 개발하기 Show view > Other”에 가셔서 “Show View”창을 띄웁니다. “Show View”창에서 “Team > Synchronize” 항목을 선택합니다. 그러면 Synchronize 뷰가 나타나는데, 이렇게 해 놓고 파일을 약간 수정해 봅니다. 파일을 수정하고 저장하면 아래의 Synchronize View에 수정된 목록이 나타나고, 선택하고 “Put” 해서 적용할 수 .. 더보기
라즈베리파이 개발환경 꾸미기 #5. 라즈베리파이에 NodeJs 설치하기 이 포스트는 라즈베리파이 개발환경 꾸미기를 주제로 아래와 같은 시리즈 연재로 이루어 집니다. 라즈비안 OS 설치하기 키보드 모니터 없이 라즈베리파이 Login 하기Wifi 설정 / 기본 설정하기파이썬 + Eclipse로 라즈베리파이 개발하기>> 라즈베리파이에 NodeJs 설치하기 더보기
라즈베리파이 개발환경 꾸미기 #4. 파이썬 + Eclipse 로 라즈베리파이 개발하기 이 포스트는 라즈베리파이 개발환경 꾸미기를 주제로 아래와 같은 시리즈 연재로 이루어 집니다. 라즈비안 OS 설치하기 키보드 모니터 없이 라즈베리파이 Login 하기Wifi 설정 / 기본 설정하기>> 파이썬 + Eclipse로 라즈베리파이 개발하기 Eclipse Marketplace 에서 “python”으로 검색해서 나오는 “PyDev”를 설치하면 됩니다. “Install” 버튼을 눌러 설치를 진행하면 뜨는 창에서 “Next” 버튼 만 눌러 주면 설치는 문제 없이 진행됩니다. Eclipse에 PyDev를 설치하고 나서 PyDev가 Python을 인식할 수 있도록 설정을 해줘야 합니다. Eclipse Preferences 화면에서 “PyDev” > “Interpreters” > “Python Interpre.. 더보기
라즈베리파이 개발환경 꾸미기 #3. 유무선랜 설정/ 기본 설정하기 이 포스트는 라즈베리파이 개발환경 꾸미기를 주제로 아래와 같은 시리즈 연재로 이루어 집니다. 라즈비안 OS 설치하기 키보드 모니터 없이 라즈베리파이 Login 하기>> Wifi 설정 / 기본 설정하기 Seoul 을 선택합니다 Change Local > en_US.ISO-8859, en_US.UTF-8, ko_KR.EUC-KR, ko_KR.UTF-8 을 선택합니다. Default : en_US.UTF-8 그 밖에 9 Advanced Options 메뉴를 이용해서 SSH 연결 설정과 Serial Shell login 설정 등을 변경 할 수 있습니다. 앞서 USB-to-Serial 장치로 로그인 할 수 있었던것은 바로 Serial Shell login설정이 기본으로 켜져 있기 때문입니다. 만약, 라즈베리파이의.. 더보기
라즈베리파이 개발환경 꾸미기 #2. 키보드 모니터 없이 라즈베리파이 Login 하기 이 포스트는 라즈베리파이 개발환경 꾸미기를 주제로 아래와 같은 시리즈 연재로 이루어 집니다. 라즈비안 OS 설치하기 >> 키보드 모니터 없이 라즈베리파이 Login 하기 키보드 모니터 없이 라즈베리파이 Login 하기 더보기
라즈베리파이 개발환경 꾸미기 #1. 라즈비안 OS 설치하기 이 포스트는 라즈베리파이 개발환경 꾸미기를 주제로 아래와 같은 시리즈 연재로 이루어 집니다. >> 라즈비안 OS 설치하기 더보기
아두이노 디지털 핀에 24V 입력받기(저항으로 전압강하, 전압분배) 아두이노나 라즈베리파이 같은 보드는 GPIO라는 입출력 핀들을 제공하는데요. 입출력 신호로 사용하는 전압은 각각 5v와 3.3v입니다. 이런 신호를 TTL(Transistor to Transistor Logic, 네트웍에서 말하는 TTL하고 다름)라고 하는데요. 보통 자체 동작전압을 가지고 입출력을 받는 회로를 만드는 경우에는 아무 문제가 없는데 별도 자체 전원으로 동작하는 외부 장치에서 신호를 받는 경우는 전압 때문에 입력을 받을 수가 없는 경우가 많습니다. 가장 대표적인 예가 PC하고 연결할때 시리얼포트를 쓰는 경우가 있는데, PC는 HIGH/LOW를 +12V/-12V로 표현하는데, 이걸 직접 아두이노나 라즈베리파이에 연결하면 당연히 보드가 타버리게 되죠. 또 다른 예로는 아파트나 사무실 천정에 하나.. 더보기
DIY 스마트 홈 프로젝트 라즈베리파이와 아두이노를 이용해서 DIY Smart Home 시스템을 만들어 봤습니다. 예전에 모형을 이용해서 스마트홈 시스템을 만들었다고 포스팅한 적이 있었지요. 이걸로 작년 한해 IoT강의도 많이 얻어서 먹고 살기도 했는데요. 이번엔 모형이 아닌 진짜 제가 살고 있는 땅콩집에 설치해서 사용할 수 있는 스마트홈 프로젝트를 진행했습니다. 전체 구성도는 아래와 같습니다. 라즈베리파이에 NodeJs와 MySQL을 설치해서 메인 서버로 사용하구요. NodeJs의 OnOff 모듈을 이용해서 GPIO를 제어할 수 있습니다. Express로 웹 서비스를 할 수 있구요. 아두이노는 NFC 리더를 연결해서 현관 밖에 설치하고 출입 제어 시스템으로 사용합니다. 아두이노와 라즈베리는 시리얼(UART) 통신으로 연결되어 있.. 더보기
아두이노로 알아보는 적외선 센서 아두이노와 같은 마이크로 콘트롤러를 이용해서 할 수 있는 것 들 중에 적외선을 이용하면 할 수 있는 것이 많은데요, 이번에는 적외선을 인식하는 센서와 적외선을 만들어내는 LED를 이용해서 실험해보고 원리를 알아 보려고 합니다. 이번 실험에서는 적외선LED와 수신기를 이용해서 장애물 센서와 근접센서를 만들어 볼겁니다. 이 실험을 위해서 필요한 부품은 아래와 같습니다. 포토트랜지스터(적외선 수신) 1개 포토다이오드(적외선 송신) 1개 저항 1M옴 , 저항 40옴~100옴 중 1개 우선 적외선을 인식하기 위해서는 포토트랜지스터(Phototransister)라는 것이 필요합니다. 이름이 어렵게 느껴지지만 별것 아닙니다. 가격도 저렴한 것은 130원 밖에 안합니다. 이번 실험에서 사용할 부품은 아래 링크에서 구입.. 더보기
풀업(Pull-up)저항,  풀다운(Pull-down)저항 아두이노와 같은 메이커들를 위한 플랫폼은 물론이고, 임베디드 개발 영역에 꼭 필요한게 전자회로 관련 지식인데요. 저 같은 소프트웨어 개발자 출신들이 이 분야에 들어서서 막막한게 바로 전자회로 분야 입니다. 그 중에서도 처음으로 만나는 장애물이 바로 풀업(Pull-Up), 풀다운(Pull-Down)저항을 이해하는 것같아서 오늘은 이것에 대해 이야기 해보려고 합니다. 아두이노나 AVR 등을 처음 접하면 LED 깜박이는 것 다음으로 하는 것이 스위치를 누르고 뗐을때 디지털 신호를 입력 받는 것일 겁니다. 아래 그림은 바로 그때 보라고 만들어 놓은 아두이노 사이트에 있는 버튼 스위치 입력 예제에서 가져온 그림입니다. 여기에 스위치와 함께 필요로 하는 부품이 바로 저항입니다. 근데 이게 왜 필요한 것인지, 그리고.. 더보기
안드로이드 SoundPool(사운드 풀)로 효과음 내기 안드로이드에서 효과음과 배경음을 내는데 필요한 SoundPool 이라는 것의 사용법을 살펴봅니다. 안드로이드 프로그래밍에서 소리를 낼 수 있는 방법은 많은데요, 대표적으로 MediaPlayer를 사용 할 수 있습니다.그런데, 게임이나 기타 앱에서 특정 행동에 따른 효과음 또는 배경음(BGM)으로 사용하려고 할때에는타이밍 이슈가 있을 수 있습니다. 다시말해 정확한 그 시점에 준비된 소리가 나는것에 대한 이슈가 있습니다.이름에서 풍기는것과 같이 필요한 사운드를 미리 로드해놓고 필요할때 출력만 하겠다는 것입니다. 이것을 해결하기 위해 있는 API가 android.medial.SoundPool 입니다.순차적으로 사용법을 알아 보겠습니다. 1. SoundPool 생성 SoundPool sound = new Sou.. 더보기
IoT 무료 교육을 소개합니다 포스팅에 본이 아니게 광고를 좀 해야 할것 같습니다. 제가 "IoT를 활용한 Smart Watch 앱 개발" 이라는 교육을 맡아 진행하게 되었습니다.교육 과정 설계에서 부터 강의까지 많은 부분을 제가 관여하고 있습니다.교육 주관은 한국전파진흥협외 부설 교육원인 전파방송통신인재개발교육원에서 합니다. 교육 과정은 아래 브로셔를 보시면 대충 나와 있구요.총 20주의 교육 기간이며 교육 비용은 전액 무료 입니다. 교육 과정에 대해서 제가 부연 설명을 드리자면,Java 프로그래밍에서 시작해서 Android App Programming 까지 모바일부분,Servlet/JSP와 Spring, iBatis 까지 해서 서버 백엔드 프로그래밍,jQuery와 HTML5 까지 해서 웹 프론트엔드 프로그래밍까지 다양한 분야를 찬.. 더보기
아두이노로 만드는 가장 쉬운 RC 카 아이들이 좋아 할 만한 장남감을 하나 만들 생각에 아두이노로 RC카를 만들어 보기로 했습니다.이래저래 조사해서 가장 값싸고 설득력 있는 수준에서 아이들이 좋아 할 만한 물건을 아이들과 함께 만들어 봅니다.여기서 RC카의 본래 의미는 Radio Control의 의미 인데, Remote Control로 이해 해 주시기 바랍니다. 우선 전체적인 구조는 안드로이드 핸드폰에 원격조종 앱을 설치해서 아두이노에 명령을 보내면 아두이노가 모터를 움직이는 겁니다.그러기 위해서 우선 첫번째로 모터와 바퀴가 달린 차체를 구해야 합니다.그런데 말입니다. RC 베이스라 불리우는 이게 여간 비싸지 않습니다.보통 라인트레이서라는 것으로 검색하면 여기저기 판매하는 곳이 있는데, 몸체만 5~8만원 선입니다.바퀴만 몇 만원 하는 경우도.. 더보기
Velostat으로 직접 만드는 감압센서 SCSA 교육 중에 수강생들 프로젝트에서 똑똑한 의자(방석)을 만든다고 해서 여기에 필요한 감압센서를 만들어 봤습니다. 감압센서 (FSR:Force Sensitivie Resistor)라는 것은 누르는 힘을 전기적 신호로 알아 내는 것으로 누르는 힘에 따라 저항 값이 바뀝니다. 이런 센서는 전자부품 판매 쇼핑몰에서 작은것은 8천원에서 만원선에서 판매하고 있고 크기에 따라 가격이 올라갑니다.가격도 부담되고 너무 작아서 센싱하는 포인트가 좁다는 문제점이 있습니다. 그래서 Velostat(벨로스텟)이라는 포장재로 쓰이는 전도성 필름을 이용해서 감압센서를 저렴하게 만들어 봤습니다. 필요한 재료는 다음과 같습니다.Velostat : 5,500원 (판매처 : 메카솔루션)주방용 호일 스카치 테잎가위전선(랜케이블 약간.. 더보기
Arduino + Android를 이용한 Home-Automation/Security 아두이노와 안드로이드를 이용해서 홈오토메이션+홈방범방재 시스템을 구성해 봤습니다. 제가 지금 살고 있는 땅콩집에 이사 오면서 단독주택이다 보니 보안이 문제가 될것 같아서 ADT 캡스를 방범 서비스로 사용하고 있습니다. 그런데, 이게 비용 등 불합리한게 한 두가지가 아니더군요.우선 비싸고, 경보가 울려도 출동 대신 전화가 오고 출동하면 출동비 따로 내야 하고,설비는 현관 신발장 한칸을 모두 차지하고 있으며, 덩치도 커서 전기료도 많이 나옵니다. 그래서 제가 직접 만들기로 했습니다.출동은 어차피 하지도 않으니 외출 중 전화나 문자로 침입을 알려 주거나 경찰이나 소방서에 전화 신고를 자동화하는 기능을 만들면 될겁니다. 아두이노와 Node.js를 연동하는 사례는 많이 있기도 하고, SCSA 강의했을때 학생들이 .. 더보기
Tizen Web App 개발, 몇가지 단상 엊그제(2013.5.14) OK JSP 소모임에 나가서 "Tizen Web App 개발"이라는 주제로 간략하게 발표를 했습니다.그 때 사용한 발표자료를 공유합니다. Tizen Web App 개발 from xcoda 발표 내용은 뭐 소개 정도 입니다. 20분 남짓한 시간이 할애 되었기 때문에 그 이상 다룰 수도 없기도 했구요.슬라이드에 없는 내용 중에 발표때 언급하지 못했던 몇가지 단상을 덧붙여서 이야기를 해볼까 합니다. 타이젠 앱은 C++로 만드는 Native App과 HTML/CSS/JS로 만드는 Web App, 이렇게 두가지를 SDK를 통해 개발 할 수 있게 제공합니다.그 중에도 Web 기술을 이용해서 App을 개발할 수 있는 방법을 제시하는 요즘 신흥 플랫폼의 추세를 따르고 있다는데있어서 그냥 평범.. 더보기
Javascript 함수 생성 2가지 방법의 차이점 자바스크립트에서 함수를 생성하는 방법은 여러가지가 있습니다. 방법 하나. function a(str){ alert(str); } 방법 둘. var a = function(str){ alert(str); } 방법 셋.var a = new Function('str', 'alert(str)'); 위의 세가지 방법 모두 아래와 같은 방법으로 호출 할 수 있습니다. a('hello'); new 키워드를 사용해서 함수 객체를 생성하는 세번째 방법은 문자열로 함수 body를 작성해야 하기때문에 불편하죠.그래서 거의 사용되지 않는 방법 일겁니다.나머지 두가지 방법은 자주 사용하는 것인데, 이 둘간의 차이가 무엇일까요? 첫번째 방법은 함수 선언부에서 함수의 이름을 지정하고, 두번째 방법은 함수를 변수에 할당하고 있습니다.. 더보기