분류 전체보기(433)
-
Tkinter를 이용한 Python GUI Programming - 1
Tkinter는 Python에 기본포함된 GUI toolkit이다. 즉, Python을 설치하면 바로 사용가능한 GUI 라이브러리이며, Tkinter는 Tk(Toolkit) interface의 약어이다. Python 2.x에서는 Tkinter라고 되어 있고 Python 3.x에서는 tkinter라고 되어 있어 import 할 때 주의해야 한다. # Python 2.x #!/usr/bin/env python from Tkinter import * # Python 3.x #!/usr/bin/env python3 from tkinter import * 또한 ttk라는 라이브러리는 Themed Tk라는 의미로써 GUI widget을 기능과 UI로 분리하여 UI를 쉽게 변경할 수 있게한 toolkit이다. 즉, ..
2017.06.14 -
라즈베리파이 전자 액자 완성
라즈베리파이로 만드는 전자액자 구상 틈틈이 작업하던 라즈베리파이 전자액자가 완성되었다. 소스는 github에 올려두었다. Github: https://github.com/jasmine125/pidf 초기계획에서 불필요한 부분(RabbitMQ를 이용한 push server)을 제거하고 python flask 라이브러리를 이용해서 웹서버를 구동하고 dropbox에 직접 webhook을 등록하도록 했다. 초반에는 대량 제작(?)이 될것을 감안해서 구상했었지만 전혀 그럴 이유가 없는 관계로... 카메라 모듈이 있으면 은밀하게(?) 액자앞의 상황을 capture 할 수 있고 PIR 모션센서가 있으면 sleep모드 전환도 가능하다. 웹서버가 있으니 http post 방식으로 외부에서 명령을 전달할 수 도 있게 해 ..
2016.12.28 -
jCardSim을 이용한 Java Card Applet 디버깅하기
Java card applet을 개발하면서 소스레벨의 디버깅을 해보고 싶었다.JCop tool이라는 이클립스 플러그인으로도 가능하긴한데, 또 다른 방법은 없을까 찾아보았다.확인해 보니 jCardSim이라는 스마트카드 시뮬레이터가 있다. 설명을 보면 NXP JCop 31/36k 카드와 거의 유사하게 구현이 되어 있다고 한다.재미 삼아 이 모듈을 한번 사용해 보았다. 불행하게도 이 모듈은 업데이트가 잘 되지 않고 있는것 같다. 깃허브에 가보니 소스들이 2~3년전에 commit되고는 방치(?) 되고 있다는 느낌이 들었다.게다가 홈페이지에 나와 있는 샘플코드가 잘 동작하지 않는다. 그래서 깃허브의 소스를 보면서 샘플 코드를 수정했다. jCardSim Github: https://github.com/licel/j..
2016.11.11 -
드롭박스 webhooks 연결하기
라즈베리파이로 만드는 전자액자 구상 드롭박스의 파일이 변경되면 Push 메시지를 받고 싶어서 IFTTT랑 연동을 했었다.그런데 push가 제대로 오지 않거나 딜레이가 발생하는 경우가 많았다.확인해 보니 드롭박스에서 Webhooks라는 서비스를 제공하고 있었다. Webhooks는 웹 어플리케이션으로 드롭박스내 파일의 변경이 있는 경우 실시간으로 노티를 주는 서비스였다.그리하여 IFTTT를 포기하고 webhooks를 사용하기로 결정하였다. 먼저 이 서비스를 이용하기 위해서는 verification request를 수행해야 한다.설명을 읽어 보니 나의 웹서버 URL을 등록하면 해당 URL로 드롭박스가 GET 방식으로 challenge라는 파라미터에 데이터 담아 전달한다.웹서버는 전달받은 challenge 값을..
2016.10.20 -
라즈베리파이로 Push 서버 만들기
라즈베리파이로 만드는 전자액자 구상 집에 놔둔 라즈베리파이로 웹서버는 구성해 두었고 이제 Push 서버를 만들어야 한다.결국 Push 서버라는건 심플하게 생각해 보면 소켓을 이용한 서버-클라이언트 프로그램과 다를게 없어 보인다. 그런데 소켓 프로그램은 클라이언트가 루프를 돌면서 메시지가 오는지 계속 체크를 해야하기 때문에 배터리 소모가 꾸준히 있을 것 같아 문제가 될것 같다. 뭔가 손쉽게 Push 서버를 만들수 있는 방법이 뭐가 없을까 찾아보는 도중 RabbitMQ를 확인하게 되었다.요즘은 Node.JS 처럼 비동기 프로그램이 유행인데 RabbitMQ가 AMQP(Advanced Message Queuing Protocol)을 이용한 비동기 메시지 전송 서버로 보여진다. 물론 내가 필요한건 대용량도 아니고..
2016.10.12 -
드롭박스 Python SDK를 이용한 동기화
라즈베리파이로 만드는 전자액자 구상 드롭박스용 Python SDK를 이용하여 드롭박스 클라이언트가 없는 OS에서 사용하려 한다.확인해 보니 v2가 배포되어 있고 예제코드도 충분해서 개발하는데 어렵지 않아 보인다. 먼저드롭박스용 Python SDK를 설치해야 한다. Download and install the SDK.pip install dropbox 이제 Python 코드에 아래와 같이 import 하면 된다.import dropbox 틈틈이 테스트하면서 먼저 단방향 동기화만 가능하도록 코드를 구현해 두었다.Github에 올려두었으니 필요하면 다운로드 받으시라.https://github.com/jasmine125/syncmanager 이것을 사용하기 위해서는 반드시 자신만의 Dropbox app과 Acc..
2016.09.22