blockquote cite 속성에 넣은 링크를 CSS로 자동으로 표시하기 edit

http://www.holovaty.com/writing/176/

망할 윈도우즈 익스플로러에선 동작하지 않는다. blockquote태그에 설정한 cite링크를 자동으로 표시하려면 자바스크립트의 도움이 필요하다.

blockquote[cite]:before {
  content: attr(cite);
  display: block;
  margin-bottom: 0.5em;
  color: #aaa;}

모빌리스에서 제공하는 무료 웹폰트 사용하기 edit

http://api.mobilis.co.kr/webfonts/

모빌리스하면 소액결제밖에 생각이 안나는데 왠 웹폰트인가!? 사이트에서 원하는 폰트를 선택하고 아래와 같이 헤더에 추가한다음 스타일시트에 그냥 폰트 설정하듯이 추가해주면 끝이다. 자세한 사항은 사이트 참조.

<link href='http://api.mobilis.co.kr/webfonts/css/?fontface=NanumGothicWeb' rel='stylesheet' type='text/css'/>
<link href='http://api.mobilis.co.kr/webfonts/css/?fontface=UnDotumWeb' rel='stylesheet' type='text/css'/>

위처럼 추가해 주고 아래처럼 스타일시트에서 설정한다.

.selector { font-family: NanumGothicWeb;}

이외에도 웹폰트를 제공하는 서비스들은 cufón, fontface, google 등 엄청많다.

아싸라비야깐따삐야

커널 패닉 이후 자동으로 리붓시키기. edit

만약 원격지에 있는 서버가 갑자기 응답하지 않는다면 어떻게 해야 할까. 원격으로 컴퓨터를 조종할 수 있는 IP KVM이나 네트워크 콘솔따위가 없다면, 원격지에 있는 멍청한 서버는 기본값으로 사람이 물리적으로 리셋해줄때까지 기다린다.

설정값이 아래와 같이 설정되어 있다면 해당 시스템은 패닉 후 사람의 손길만을 기다린채 전기만 계속 우걱우걱 하신다.

[root@linux23 ~]# cat /proc/sys/kernel/panic
0
[root@linux23 ~]# sysctl -a | grep kernel.panic
kernel.panic = 0
[root@linux23 ~]# 

최근에 내 서버에도 일어난 일이었고, 인터넷으로 온갖 방법을 찾아봤지만 예방법밖에 없다. 결국 커널 패닉 이후 동작을 미리 설정하지 않은 상태에서 일어난 커널 패닉은 원격지에서 물리적인 방법으로 리셋시켜주는 방법밖에 없다.

두가지 커널 옵션이 있다.

  • kernel.panic = n : 커널 패닉이 발생했을때 n초 후에 시스템을 리부팅 한다.(0==off)
  • kernel.panic_on_oops = 0/1 : 1이면 oops를 커널 패닉으로 간주한다.

바로 적용하려면 아래와 같이 한다.

[root@linux23 ~]# echo "10" > /proc/sys/kernel/panic
0
[root@linux23 ~]# cat /proc/sys/kernel/panic
kernel.panic = 10
[root@linux23 ~]# 

영구적으로 적용하고자 /etc/sysctl.conf를 수정한다.

/etc/sysctl.conf:
kernel.panic = 10
kernel.panic_on_oops = 1

sysrq 명령을 원격으로 할 수 있게 해주는 ipt_sysrq

http://marek.terminus.sk/prog/ipt_sysrq.shtml

Sometimes a remote server hangs and only responds to icmp echo request (ping). Every administrator of such machine is very unhappy because (s)he must go there and press the reset button. It takes a long time and it's inconvenient. So here is a solution. Use the Network Magic SysRq and you will be able to do more than just pressing a reset button. You can remotely sync disks, remount them read-only, then do a reboot. And everything comfortably and only in a few seconds. ;-)

YES!!!

Online XML Escape edit

http://escapehtmlforxml.com/

블로거에 포스팅할때 포스트에 HTML태그를 출력해야할 경우가 종종 생긴다.

모든 블로거 포스트에 날짜 표시하기 edit

http://www.anshuldudeja.com/2009/11/how-show-post-date-for-blogger-posts.html

블로거는 기본적으로 같은날에 쓴 포스트들에는 날짜를 맨 처음 포스트에만 표시한다. —기본 스킨설정이 날짜는 제목 위에 나타나게 되어 있어서 하위에 다른 포스트들은 그 날짜에 쓰여졌다는걸 암시한다.

dateHeader: The date of this post, only present if this is the first post in the list that was posted on this day.

이와 같은 기본 스킨설정을 입맛에 맞게 바꾸려면 트윅이 필요한데, 스킨을 수정하는 곳에서 Expand Widget Template를 체크한 다음 아래와 비슷한 태그를 찾는다. 해당 태그는 스킨에 따라 다를 수 있어서 만약 찾을 수 없다면 data:post.dateHeader키워드로 검색해본다.

<b:if cond='data:post.dateHeader'>
 <span class='date-header'><data:post.dateHeader/></span>,
</b:if>

해당 if구문을 아래와 같이 변경해준다.

<b:if cond='data:post.dateHeader'>
 <script>var dateHeader = &#39;<data:post.dateHeader/>&#39;;</script>
 <span class='date-header'><data:post.dateHeader/></span>,
<b:else/>
 <span class='date-header'><script>document.write(dateHeader);</script></span>,
</b:if>

<data:post.dateHeader/>가 날짜를 표시해주는 블로거 태그이다. —블로거 템플릿은 마치 서버사이드 스크립트처럼 동작하여서 페이지가 표시될때 치환된다.

data:post.dateHeader에 값이 있으면(참이면: 해당 포스트가 가장 최근의, 가장 위에 자리잡은 포스트이면) 자바스크립트 구문을 실행하여 dateHeader변수에 날짜를 임시 저장한 다음 표시한다. 그다음 포스트에 값이 없으면(거짓이면) 자바스크립트로 임시 저장된 dateHeader를 표시한다. 만약 값이 있으면(참이면) 새로운 날짜에 쓰여진 포스트 이므로 다시 새로운 날짜로 임시 저장되고 이 루틴이 반복된다.

그런데 이상한점은 <script>태그에 type="javascript"옵션을 주면 안된다는 것이다. 자바스크립트를 인라인 스크립트로 사용할땐 생략해야하는 것 같다.

갤럭시S1 스크린샷 찍기 edit

취소 버튼을 누르고 전원키를 누르고 떼면 스크린샷이 찍히고 저장된 사진은 SD카드의 ScreenCapture디렉토리에 들어가 있다. (/mnt/sdcard/ScreenCapture)

그러나 해외판 갤럭시S1에도 똑같이 적용되는지는 미확인, 버튼이 다를것으로 추측됨.

윈도우즈7 네트워크 인터페이스 MTU값 변경하기 edit

http://www.coolenjoy.net/bbs/cboard.php?board=32&no=2255

레지스트리로 바꾸기

레지스트리 HKEY_LOCAL_MACHINE > System > CurrentControlSet > Services > Tcpip > Prameters > Interfaces 에서 하위 노드들에 보면 바꾸고자 하는 인터페이스의 아이피를 속성으로 가지고있는 노드가 있다.

그 노드에서 DWORD 값을 MTU로 새로만들어서 설정하면 된다.

cmd로 바꾸기

netsh interface ipv4 set subinterface "로컬 영역 연결" mtu=XXX store=persistent
로컬 영역 연결은 원하는 네트워크 인터페이스 이름으로 지정해준다.

Python handling exceptions edit

http://docs.python.org/tutorial/errors.html#handling-exceptions

def divide(x, y):
    r = 0
    while r < 3:
        try:
            result = x / y
        except ZeroDivisionError:
            print "division by zero!"
            r += 1
            continue
        else:
            print "result is", result
            return 'haha'
        finally:
            print "executing finally clause"
    return "end"

print divide(2, 3)

위의 예외 구문에서 예외가 발생하지 않을때 return을 한다.

문제는 과연 finally:~ 구문을 실행할까?

result is 0
executing finally clause
haha

return 이전에 finally 구문을 실행하고 return 된다.

Python metaWeblog upload a file using newMediaObject edit

파일을 읽은 이진데이터를 구조체안에 넣을때 xmlrpclib.Binary()를 써야한다.

import xmlrpclib
import mimetypes

USERID = "userid"
PASSWORD = "password"
BLOGID = 123456 # API KEY
URL = "http://yourblog.com/api"

mw = xmlrpclib.ServerProxy(URL).metaWeblog

# Open file
fp = open("test.jpg", "rb")

# Upload image
url = mw.newMediaObject(BLOGID, USERID, PASSWORD,
                {"name": fp.name, "type": mimetypes.guess_type(fp.name)[0],
                "bits": xmlrpclib.Binary(fp.read())})["url"]

print url
Newer -> <- Older