Et cetera2013. 4. 17. 04:05

블로그 포스팅을 본격적으로 하려다 보니, 주제도 주제이니 만큼 코드를 올려야 할 일이 많아질 것 같아서, 블로그에 코드를 예쁘게 추가하는 법을 찾아보다 Syntax Highlighter라는 라이브러리를 알게 되었다.


티스토리에 적용하는 법도 수 많은 블로그에 정리가 잘 되어있길래 나도 한번 설치해보려고 했다.


하지만 아무리 정리되어 있는 곳에서 하라는대로 해도 적용이 되지 않았다. (거의 3시간을 허비)


내 지식으로는 안되는 이유를 이해할 수가 없었다;;


결국 자포자기 하려는 순간 다음의 포스팅을 발견했다.


포스팅 링크


왜 저런식으로 추가해주면 적용이 되는지는 잘 모르겠으나.


shCore.js, shAutoloader.js, shThemeXXX.css 이 세가지 파일은 티스토리에 업로드한 스크립트 파일을 불러왔을땐 적용이 안되고, 저 포스팅처럼 퍼블릭 링크에서 가져오는 것만 적용이 되었다. (파일의 문제인가?)


나중에 이유를 알아봐야겠다.


지금은 아래와 같이 하이라이팅이 잘 사용되는 듯 하다.



import os

os.system("/bin/sh")

print "안녕하세요"

'Et cetera' 카테고리의 다른 글

Coursera 등록  (0) 2013.05.04
MS Word 사용시 한영 자동 변경  (0) 2013.04.30
휴대폰 젤리빈 업그레이드  (0) 2013.04.25
넋두리  (0) 2013.04.24
영화  (0) 2013.04.22
Posted by Tanto
Programming/Python2013. 4. 17. 02:05

옛날에 쓰던 개인 노트북을 서버로 만든 후 이것 저것 잡다한 것들을 하다보니, 문득 날씨 정보를 가져오고 싶은 생각이 들었다.


이미 우분투에는 weather-util 이라는 유틸리티를 apt-get으로 받을 수 있기도 하고, 다른 많은 사람들이 펄이라거나 기타등등의 것들로 많이 개발해 두었지만, 내 힘으로 직접 해보고 싶었다.


그래서 아래와 같은 쓰레기코드 ...가 탄생했다...(와 지금 다시봐도 아주 허접하네;;...)


#!/usr/bin/env python

import os
import re
import traceback
from time import localtime, strftime

def display(result):
    print
    print 'Weather in Seoul, Asia at ' + strftime('%H:%M', localtime()) + '\n'
    print 'Condition: ' + result['Condition']
    print 'Temparature: ' + result['Temparature'] + u"\N{DEGREE SIGN}" + 'C'
    print 'RealFeel: ' + result['RealFeel'] + u"\N{DEGREE SIGN}" + 'C'
    print 'Humidity: ' + result['Humidity']
    print 'Cloud Cover: ' + result['Cloud Cover']
    print

def parse(lines):
    result = dict()
    lines = lines.split('\n')
    for line in lines:
        if 'cond' in line:
            result['Condition'] = line[line.find('cond')+6:line.find('</span>')]
            result['Temparature'] = line[line.find('temp')+6:line.find('<span>°')]
            result['RealFeel'] = line[re.search('RealFeel.*; ', line).end():line.find('<span>°</span></span> </div>')]
        elif 'Humidity' in line:
            result['Humidity'] = line[line.find('strong')+7:line.find('</strong')]
        elif 'Cloud Cover' in line:
            result['Cloud Cover'] = line[line.find('strong')+7:line.find('</strong')]

    return result

def main():
    os.system("w3m -dump_source -no-cookie http://www.accuweather.com/en/kr/seoul/226081/current-weather/226081 > /var/tmp/currentweather.gz")
    os.system("gunzip -cf /var/tmp/currentweather.gz > /var/tmp/currentweather.tmp")

    fp = open("/var/tmp/currentweather.tmp", "r")
    lines = fp.readlines()
    fp.close()

    result = ""
    flag = False

    for line in lines:
        if '<div class="info"> <span' in line:
            result = result + line

        if flag:
            if '</ul>' in line:
                flag = False
            else:
                result = result + line

        if '<ul class="stats">' in line:
            flag = True

    display(parse(result))

if __name__ == '__main__':
    try:
        main()
    except:
        print "Error... Sorry"
        traceback.print_exc()

w3m 브라우저의 -dump를 이용해서 페이지 덤프 후 그냥 노가다로 필요한 부분만 긁어내는 것 뿐이다.

그런데 dump를 하면 그 파일이 이유는 모르겠지만 gz로 압축된 파일이어서...;; gunzip으로 압축도 풀고...

어쨌든 그래서 잘 작동은 하지만 좀 느리다... 날씨정보 띄워주는데까지 빠르면 0.5초 ~ 느리면 1.5초 정도까지 걸리는 것 같다.


아무튼 저러던 차에.. 아래 링크를 발견하게 되었다.


Beautiful Soup 라이브러리 포스팅


위와같은 저런 노가다 하지않고.. 라이브러리를 통해서 정상적인 HTML 파서를 나중에 한번 짜봐야겠다.


'Programming > Python' 카테고리의 다른 글

A* algorithm implementation  (1) 2013.06.14
pygame 설치  (0) 2013.05.02
날씨 가져오는 스크립트의 수정  (1) 2013.04.18
쉬워 보이는 언어 Python  (0) 2011.12.27
점프 투 파이썬(Jump to Python)  (0) 2011.12.20
Posted by Tanto
Linux2013. 4. 17. 00:26

리눅스에 접속하게 되면 쉘이 다음과 같은 형태일 것이다.


id@hostname:~$


저기서 보이는 hostname을 변경하고 싶었다.


/etc/hostname 파일과 /etc/hosts를 수정한 후 재부팅 해도 되지만.. (처음엔 이렇게 바꿈)


그냥 루트 권한으로 hostname 변경하고싶은이름 을 치면 되는거였다;


리눅스는 ubuntu 12.04 이용중이며 다른 계열의 리눅스는 어떻게 되는지 모르겠다.

Posted by Tanto