Blog

  • 라즈베리파이로 시작하는 핸드메이드 IoT

    요즘 사정이 있어서 관련 내용이 있을지도 모르는 책을 훑어보고 있다. 이 책은 라즈베리파이로 할 수 있는 다양한 소품 만들기가 잘 설명되어 있는 것 같다.

  • QR code:스마트폰이 가져온 패러다임의 변화, 2차원에 세상을 담아라!

    참고로 책 표지 QR코드를 스캔하면 더 이상 관리가 되지 않는 웹사이트로 연결이 된다.

    QR 코드를 만드는 방법을 알아야 할 것 같아서, 빌려본 책이다. QR코드에 대한 많은 내용들을 다루고 있다. 덴소 웨이브에서 특허를 가지고 있지만 특허료를 받지 않는 다는 것 부터 시작하여 마케팅 측면에서 관련 내용들을 알려준다. 마케팅 내용이 많은 것은 저자가 해당 분야 종사자이기 때문이다. 초기에 QR 코드를 실제로 스캔하도록 만들기 위한 여러 실험들을 설명하고 있다.

    예전에 나온 책이지만 지금도 유용하게 써먹을 수 있을 것 같은 내용은 QR 코드 변형이다. 사람들이 QR 코드를 실제로 스캔을 하게 하여야만 가치가 있는 것이기 때문에, 조금 더 예쁘게 변형하는 것도 필요하다는 주장한다. 이것이 가능한 것은 QR 코드에는 오류 보정 기능이 있기 때문이다.

    그리고 QR 코드를 생성하는 방법에 대하여 3가지를 제시하고 있다. 그 중에서 가장 믿을만한 구글 Chart API를 실제로 이용해 보았다.

    https://developers.google.com/chart/infographics/docs/qr_codes

    설명하고 있는 규칙대로 인터넷 주소창에 입력하면 그림 파일이 생성된다. 이 블로그 주소인 www.welovedoctor.com을 오류 보정 30% 옵션으로 만들려면 다음과 같이 한다.

    https://chart.googleapis.com/chart?cht=qr&chs=150×150&chld=H&chl=www.welovedoctor.com

  • 성취 습관, 버나드 로스

    Stanford University 에 The Hasso Plattner Institute of Design이 있는데, 이 학부(?)를 일컬어 d.school 이라고 한다. 책의 말미에 Wall Street Journal에 관련 기사가 나왔다는 정보를 바탕으로 검색한 결과 다음의 링크를 찾을 수 있었다.

    https://www.wsj.com/articles/SB10001424052702303506404577446832178537716

    비범한 내부 계단을 한 번 살펴 보자.

    https://s.wsj.net/public/resources/images/MK-BU799_DSCHOO_G_20120606181530.jpg

    기존 Business School과의 차이점을 WSJ에서는 다음과 같이 설명하고 있다.

    https://s.wsj.net/public/resources/images/MK-BU811_DSCHOO_G_20120606175403.jpg

    이 책은 주요 가르침 10개에 대하여 다루고 있으며, 내용은 다음과 같다.

    • 생각 그대로인 것은 없다
    • 이유는 헛소리다
    • 정체에서 벗어나는 법
    • 도움을 구하라
    • 행동이 전부다
    • 말을 조심하라
    • 함께하는 습관의 힘
    • 자아상을 디자인하라
    • 큰 그림 그리기
    • 성취를 습관화하라

    기존의 자기 계발 서적과 유사한 내용을 다룬다고 생각할 수 있다. 그렇게 생각한다면 그런 공통점이 지속적으로 왜 제시하는지를 생각해 보면 될 것이다. 중요한 부분은 중요한 것이다.

    이 책의 구절 중에서 가장 마음에 와 닿았던 구절들은 다음과 같다.

    당신이 무언가를 정말로 하고 싶어 하지 않는다면 세상은 친절하게도 당신이 그 일을 실행하지 못 할 퍽이나 좋은 이유를 선사한다. 반대로, 그 일을 하고 싶은 마음이 진심이라면 세상이 제시한 이유들이 당신을 막지 못할 것이다.

    170p

    당신이 성취하려고 노력하는 것이 무엇이든 간에 자신이 ‘그러나’라는 말로 대화를 차단함으로써 스스로 저지하고 있는 부분이 어딘지 살펴보라.

    200p

    그 다음으로 가능한 한 적게 사용해야 할 표현은 ‘해야 한다 have to’이다. 일반적으로 실제 상황을 가장 잘 묘사하는 표현은 ‘하고 싶다 want to’이다.

    202p

    나는 누구인가? 나는 무엇을 하고 싶은가? 나의 목적은 무엇인가?

    나는 ‘정말로’ 무엇을 원하는가?

    341p
  • 키보드 입력을 Python에서 이용하기

    Linux의 Python에서 키보드나 마우스, 기타 장치의 입력을 받아서 이용하고 싶을 때가 있다.

    이러한 입력은 /dev/input 하위의 여러 장치로 들어온다. 이 폴더들은 기본적으로 root 소유이며 755 속성을 가지고 있다. chmod로 속성을 변경하여도 재부팅하면 다시 돌아온다. 따라서 주로 이용하는 계정에 권한을 부여하는 방법을 이용한다. 다음과 같이 계정에 input 권한을 준다.

    $ sudo adduser 계정 input

    다음으로 PIP로 evdev를 설치한다.

    $ pip3 install evdev

    장치에 배정된 event 번호를 알기 위해서 Python에서 다음의 코드를 실행한다. 주의할 점은 부팅 이후에 장치를 연결한 경우와 부팅 과정에서부터 연결된 경우는 순서가 바뀔 수 있다는 것이다. 구글 검색을 하면 나오는 명령어와 거의 유사한데, 버전이 업그레이드 되면서 device.path로 변경하도록 하는 메세지가 나오니 해당 내용에 맞추어 존다.

    >>> devices = [evdev.InputDevice(path) for path in evdev.list_devices()]
    >>> for device in devices:
    
            print(device.path, device.name, device.phys)

    원하는 장치를 다음과 같이 지정해 준다.

    >>> dev = evdev.InputDevice('/dev/input/event0')

    키보드 입력에 대한 예제가 많이 있고, 보통 다음과 같이 loop를 돌려서 입력 결과를 받는다. list 형식으로 받아서 이용하는 것이 일반적인 것 같다. key_down과 key_up 등이 나오는데 구글 검색으로는 보통 key_down를 이용하는 것 같다. 아마도, 키보드를 누르면서 입력하는 것이니 그렇게 처리되는게 아닌가 싶었다.

    입력 값들을 모으기 위해서는 보통 .keystate == 1를 이용하는 것 같다.

    >>> for event in device.read_loop():
            if event.type == evdev.ecodes.EV_KEY:
                inputs = evdev.categorize(event)
                print(inputs)
                if inputs.keystate == 1:
                    text += inputs.keycode