포터블기기 강좌


컴퓨터를 켤때마다 매일 인용문이 나오면 좋겠다는 생각을 해봤습니다.

cowsay같은거도 있지만 실없는 소리보다는 뭔가 의미있는 내용이 나오는걸 찾아봤네요

그러다보니 theysaidso.com 에서 매일 서비스하는 인용글 서비스가 있네요

이걸 i3스테이터스 바에 띄우는걸 만들어 봤습니다.


그런데 이 i3스테이터스바를 그려주는 것은 시계등 자주 업데이트해야하는데 그때마다 저 REST서비스를 이용하면 안되겠죠

그래서 간단한 캐싱기법을 생각해봤습니다.

.cache/quotes로 한시간정도 최근의 인용문이 유지되도록 했습니다.

물론 bash상에서도 간단히 될거같은데 다른 파이선스크립트상에서 쓰려고 파이선모듈로 만들었습니다.




다음을 ~/bin에 넣고 conky에서 json으로 표시하면 됩니다.

만일 터미널실행시 표시하고 싶다면  .bashrc 에 quotes라고 추가하세요



먼저 캐시 모듈

cache.py

-------8<-------------------8<-------------------8<-------------------8<-------------------8<------------


#!/usr/bin/env python
import os,sys
import time as tm, datetime as dt


class Cache:
    def __init__(self, interval ):
        """ Use sys.argv joined by delimeter_ as key """
        a = []
        a.append(sys.argv[0].split("/")[-1])
        a += sys.argv[1:]
        self.key = "_".join(a)
        self.interval = interval
        self.file_name = os.environ['HOME']+"/.cache/"+self.key

    def read(self):
        value = None  # Assume cache is exprired by default
        timestamp = -1
        try:
            f = open(self.file_name, 'r')
            content = f.readlines()
            line = content[-1].rsplit(' ',1)
            value,timestamp = str(line[0]), float(line[1])
                 
        except IOError:
            pass
        if timestamp + self.interval < tm.time():  # means expired
            value = None
        return value

    def write(self,  value):
        f = open(self.file_name, 'w+')
        f.write(str(value) + " " + str(tm.time()))
        f.close()

    def clear():
        os.remove(self.file_name)







quotes  실행화일

(chmod +x quotes 로 실행권한주고 ~/bin에 넣습니다)

-------8<-------------------8<-------------------8<-------------------8<-------------------8<------------


#!/usr/bin/env python
import urllib, json
from cache import Cache

def get_quotes():
    """ Read cached data if exists """
    q_cache = Cache(3600)
    value = q_cache.read()

    if value == None:
        url="http://quotes.rest/qod.json?category=inspire"
        response = urllib.urlopen(url)
        data = json.loads(response.read())
        try:
            value = data["contents"]["quotes"][0]["quote"] + " - " +\
                data["contents"]["quotes"][0]["author"]
            q_cache.write(value)
        except KeyError:
            print "key error"
            print data
            pass   # return old value
    return value

msg = get_quotes()
print msg




screenshot
번호 제목 작성자 작성일 조회
201 팜 IIIe 쓰는 법 (업무용, 학습용, 오락용, 오소독스~~) [7] 성야무인 02.12 3497
200 일본어 학도를 위한 아이폰(팟터치) 사용기 [8] file minki 02.13 3745
199 SKT 미라지 세팅방법 [2] Freedom^^ 02.13 3396
198 [노키아] 노키아를 무선 AP기기로 만드는 어플 JOIKU 소개 [2] file 미케니컬 02.17 3517
197 심비안 OS의 어플 OPDA 사이트를 통해 쉽게 인증하기!!! [7] tubebell 02.20 4206
196 이이폰(팟터치) 잠재우는 어플 테스트 후기 (첫째날+둘째날) [5] minki 02.23 3615
195 아이폰(팟터치)가 공유기로 싱크 잘 안 될 때 (내부 네크워크 접속 불량 등) [1] minki 02.25 3849
194 KPUG 강좌, KPUG 자료실 2,000점 이벤트 KPUG.KR 03.03 3780
193 때늦은 클리에 T650 개조기 - 슈퍼 T650을 만들어 보자.. [8] 피델리티 03.04 4333
192 아이폰 테더링을 위한 블루투스 페어링(연결)이 잘 안될 때 채리새우 03.08 19576
191 때늦은 팜 강좌 - 꼭꼭 숨어라 시리즈 강좌 1. 핫싱크 데이터 전송 피하기 [5] file 피델리티 03.10 3416
190 때늦은 팜 강좌 - 꼭꼭 숨어라 시리즈 강좌 2. 어플리케이션 숨기기 [2] file 피델리티 03.10 3684
189 때늦은 팜 강좌 - 꼭꼭 숨어라 시리즈 강좌 3. 개인 데이터베이스 백업 [4] file 피델리티 03.10 3330
188 구PIMS(TC) 를 신규PIMS(ZIre72)로 업그레이드 file 부릉이 03.13 3706
187 조디악용 팜데스크 실행시 에러 해결법 [2] 권동휘 03.17 3592
186 대용량 메모는 아웃룩 작업 또는 연락처에 기재하자 거스파이 03.18 4194
185 유럽판 드로이드 마일스톤스 단략 사용기와 카메라 성능 샘플 사진들 (안드로이드폰) [3] file 거스파이 03.18 3480
184 WM폰에서 페이스북 사용하는 3가지 방법 (동영상 첨부) [1] 거스파이 03.18 3396
183 (맥 소개6) 하드만 물리면 다중 백업이 됩니다. [5] minki 03.29 4457
182 120v 전용 아답터 220v으로 만들기 [4] file 와늬 03.29 5062

오늘:
154
어제:
703
전체:
15,937,985