포터블기기 강좌


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

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 중국 저가 AP 7세대의 운명과 8세대의 향방 [7] 星夜舞人 12.10 2165
200 중국에서 구입한 갤럭시S6 갤럭시노트5 같은폰은 폰카의 셔트음이 무음으로 되나요, [9] 그린 11.25 2363
199 다이어트 방법 공유? [8] Freedom^^ 09.16 3161
198 DIY 철상자를 책 테이블로 [6] file 파리 07.16 3237
197 Palm Desktop to Google [6] dow 10.08 3241
196 때늦은 팜 강좌 - 꼭꼭 숨어라 시리즈 강좌 3. 개인 데이터베이스 백업 [4] file 피델리티 03.10 3330
195 WebOS 기기에 대한 질문글입니다. (고수님들 꾸벅~) [3] 패드패드패드 03.19 3335
194 iBooks 의 화끈한 샘플 양 [9] file 파리 06.24 3337
193 위룰 하고 싶은데, 미국계정으로 앱스토어 접속해야하나요? [2] 바보남자 07.02 3345
192 [PalmPilot] Palm OS 2.0에서 HappyDays 사용하기 [1] 유태신 03.29 3351
191 휴대기기 이북리더 활용 [6] 마루 05.24 3360
190 EKEN M001 안드로이드 타블렛 FAQs [7] 성야무인 06.20 3380
189 PD10 시스템 업그레이드 방법 [1] file 하늘마루 08.01 3380
188 미친척하고 비영리 Kickstarter 프로젝트 진행하기 (1편) 星夜舞人 12.28 3382
187 노키아 N5800 하드리셋 방법 [3] 준용군 07.12 3395
186 SKT 미라지 세팅방법 [2] Freedom^^ 02.13 3396
185 WM폰에서 페이스북 사용하는 3가지 방법 (동영상 첨부) [1] 거스파이 03.18 3396
184 때늦은 팜 강좌 - 꼭꼭 숨어라 시리즈 강좌 1. 핫싱크 데이터 전송 피하기 [5] file 피델리티 03.10 3416
183 윈모바일 기기 속도향상방법(PDA 포함)-아시는 분도 많을듯 합니다~ [4] 아브라함 09.03 3425
182 한성탭 (U9gt2)에서 내장 주소록 사용하기. [3] file Eric 03.19 3433

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