Create TOC

2006년 10월 25일

Python/Opera 설정 백업 스크립트

여러 PC를 쓰다보면 Opera 설정을 동일하게 맞추기 위해서 설정 파일들을 수집해야 한다. 이 스크립트는 설치된 PC에서 Opera 설정파일을 수집하기 위해서 제작되었다.

사용법

fetchOperaSetting.py zip 파일명

변경 내역

  • 2006-10-25 0.0.2 Yun-yong Choi
  • 노트장, 쿠키, 주소록, 암호관리자 를 추가 수집
  • 사용자 css 파일 수집
  • 2006-10-24 0.0.1 Yun-yong Choi
  • first release

todo

  • OS/X 지원
  • Widget 등 나머지 설정 수집
  • 압축 파일을 원하는 계정으로 복원 해주는 기능
  • source

    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    #   @brief  Opera 설정을 백업하는 script
    import os
    import sys
    import dircache
    import zipfile
    
    
    ##  @brief  사용방법을 출력한다.
    def printUsing():
        print sys.argv[0], ''
    
    if len(sys.argv) < 2:
        printUsing()
        sys.exit(1)
    
    zipname = sys.argv[1]
    
    # 현재 사용자의 profile folder를 구한다.
    homeenv = 'USERPROFILE' if sys.platform == 'win32' else 'HOME'
    
    # opera 설정 파일이 저장된 폴더
    operaprofile = '.opera' + os.path.sep if sys.platform == 'win32' else 'Application Data' + os.path.sep + 'Opera' + os.path.sep + 'Opera' + os.path.sep + 'Profile' + os.path.sep
    
    homepath = os.getenv(homeenv)
    
    # 실제 오페라 설정이 저장된 폴더
    myopera = homepath + os.path.sep + operaprofile
    
    # myopera 하부에서 수집할 폴더들
    subfolders = [
        'menu',  # 메뉴
        'mouse',  # 마우스 제스쳐
        'keyboard',  # 키보드
        'toolbar',  # 도구 모음
        'styles' + os.path.sep + 'user',  # 사용자 CSS
    ]
    subfolders = map(lambda x: myopera + x + os.path.sep, subfolders)
    
    # myopera 하부에서 수집할 파일들
    files = [
        'opera6.ini',       # opera 설정파일
        'urlfilter.ini',    # 컨텐트 차단 파일
        'ua.ini',
        'search.ini',       # 검색 환경
        'override_downloaded.ini',
        'opera6.adr',       # 북마크
        'notes.adr',        # 노트장
        'contacts.adr',     # 주소록
        'cookies4.dat',     # 쿠기
        'wand.dat',         # 암호관리자
        'opcacrt6.dat',     # 인증서
        'opcert6.dat',      # 인증서
        'opssl6.dat',       # 인증서
    ]
    files = map(lambda x: myopera + x, files)
    
    # User Script 설정이 있는지 확인하고 있으면 해당 폴더를 수집해야 한다.
    # 오페라의 ini는 정상적인 ini 형식이 아니기 때문에 ConfigParser를 사용할 수 없다.
    userjs = ''
    with file(files[0], 'rt') as f:
        for line in f:
            idx = line.find('User JavaScript File=')
            if idx == 0:
                userjs = line[len('User JavaScript File='):].rstrip('\r\n')
                break
        f.close()
    
    if userjs[-1] != os.path.sep:
        userjs = userjs + os.path.sep
    
    # 파일 수집
    subfiles = []
    for subfolder in subfolders:
        a = dircache.listdir(subfolder)
        if len(a) > 0:
            a = a[:]
            for file in a:
                subfiles.append(subfolder + file)
    
    # subfiles 와 subfolder를 수집하면 된다.
    # zip 파일 생성
    with zipfile.ZipFile(zipname, 'w', zipfile.ZIP_DEFLATED) as zipf:
        # opera 파일들
        for file in files:
            if os.path.isfile(file):
                compname = file.replace(myopera, '')
                zipf.write(file, compname)
        # sub folder에 있는 파일들
        for file in subfiles:
            if os.path.isfile(file):
                compname = file.replace(myopera, '')
                zipf.write(file, compname)
        userjsfiles = []
        # userjs 수집
        if len(userjs) > 0:
            a = dircache.listdir(userjs)
            a = a[:]
            if len(a) > 0:
                a = a[:]
                for file in a:
                    userjsfiles.append(userjs + file)
        for file in userjsfiles:
            # remove drive letter
            if os.path.isfile(file):
                compname = file
                if sys.platform == 'win32' and file[1] == ':':
                    compname = file[3:]
                zipf.write(file, compname)
    
    ##  @mainpage   fetch opera settings
    #   @version    0.0.2
    #   @section    intro_sec   소개
    # Opera의 설정파일을 수집한다.
    #   @section    requ_sec   요구사항
    #       - Windows 2000 이상의 OS
    #       - python 2.4 또는 이상 버전
    #   @section    install_sec 설치
    #       - 압축파일을 적당한 폴더에 푼다.
    #   @section    using_sec   사용방법
    #   @verbatim
    #fetchOperaSetting.py [저장할 파일이름]@endverbatim
    #   예)
    #   @verbatim
    #fetchOperaSetting.py MyOperaSetting.zip@endverbatim
    #
    #   @todo
    #       - OS/X 지원
    #       - Widget 등 나머지 설정 수집
    #       - 압축 파일을 원하는 계정으로 복원 해주는 기능
    #
    #   @since
    #       - 2006-10-25 0.0.2
    #           - 노트장, 쿠키, 주소록, 암호관리자 를 추가 수집
    #           - 사용자 css 파일 수집
    #       - 2006-10-24 0.0.1
    #           - first release
    
    ##  @brief  프로그램 버전
    VERSION = '0.0.2'

2006년 10월 24일

Opera 브라우저

소개

독자적인 html 렌더링 엔진을 가지는 브라우저. Internet Explorer 나 Firefox 보다 훨씬 빠르다.

설치 파일은 http://opera.com 에서 무료로 받을 수 있다.

Opera에서 기능 확장은 Firefox와는 다르게 User Script(Firefox의 Greasemonkey 와 같은 개념)와 설정 파일(ini 포맷) 수정으로 이루어진다.

User Script

대부분 User Script는 http://userjs.org 에서 구할 수 있다.

script를 적당한 폴더에 저장한 다음 도구 - 환경설정 - 고급 - 컨텐트 - JavaScript 옵션 에서 사용자 JavaScript 폴더 에 script를 저장한 폴더를 지정하면 된다.

이때 여러 폴더를 지정해야 하면 세미콜론(;)을 사용하면 되고, 파일 이름을 직접 입력할 수도 있다.

c:\foo\bar\haha.js;c:\myscript
Extra download links페이지 안의 이미지나 기타 object를 다운 받기 쉽게 패널에 링크에 표시해준다.(ctrl + j 로도 확인 가능)
Operadepia구글 검색 결과에 Wikidepia 검색 결과를 보여준다
Google image frame bypasser구글 이미지 검색 결과에서 이미지를 클릭하면 해당 이미지만 표시해준다.
Flash block for OperaFirefox의 flash block 확장처럼 flash 실행을 막아준다.

Menu 수정

수정하기 전에 기본 메뉴 파일opera 설치 폴더에서 menu.iniprofile 폴더로 복사해서 사용한다.

profile 폴더위치는 OS 별로 다르다.

  • Windows
    %USERPROFILE%\Application Data\Opera\Opera\profile\menu
  • Unix
    ~/.opera/menu
  • OS/X
    ~/Library/Preferences/Opera\ Preferences/menu/

편집시 항상 Opera를 종료한 상태에서 해야 하며 menu.ini 처음을 아래처럼 바꾼다.

[Version]
File Version=적당한숫자

[Info]
Name=오페라 메뉴에서 나타나는 이름
Description=메뉴설명
Author=작성자
Version=적당한숫자

opera에서 사용하는 ini 파일은 utf-8 형식으로 저장해야 한다.

메뉴를 저장한 후 Opera를 실행해서 도구 - 환경설정 - 고급 - 도구모음을 선택하면 아래 그림과 같은 화면이 뜬다.

여기에서 위 Description에 적은 내용과 동일한 메뉴를 선택해주면 된다.

User Script 기능 on/off

[Quick Preferences Menu]
Item, "사용자 JavaScript 사용"	= Set preference, "User Prefs|User JavaScript=1" | Set preference, "User Prefs|User JavaScript=0"

현재 페이지를 번역하기

아래 section에 내용을 추가한다.

[Document Popup Menu]
Submenu, "현재 페이지를 번역하기", Translations Menu
Item, "자동번역"="Go to page, "http://translate.google.co.kr/translate_c?u=%u""
--------------------1
Item, "일본어를 한국어로"="Go to page, "http://translate.google.co.kr/translate?u=%u&sl=ja&tl=ko&hl=ko&ie=UTF-8""
Item, "영어를 한국어로"="Go to page, "http://translate.google.co.kr/translate?u=%u&sl=en&tl=ko&hl=ko&ie=UTF-8""
--------------------2
Item, "한국어를 영어로"="Go to page, "http://translate.google.co.kr/translate?u=%u&sl=ko&tl=en&hl=ko&ie=UTF-8""
Item, "한국어를 일본어로"="Go to page, "http://translate.google.co.kr/translate?u=%u&sl=ko&tl=ja&hl=ko&ie=UTF-8""
Item, "한국어를 중국어(간체)로"="Go to page, "http://translate.google.co.kr/translate?u=%u&sl=ko&tl=zh-CN&hl=ko&ie=UTF-8""
Item, "한국어를 중국어(번체)로"="Go to page, "http://translate.google.co.kr/translate?u=%u&sl=ko&tl=zh-TW&hl=ko&ie=UTF-8""
--------------------3
Item, "일본어를 영어로"="Go to page, "http://translate.google.co.kr/translate?u=%u&sl=ja&tl=en&hl=ko&ie=UTF-8""

핫 클릭 팝업 메뉴의 번역 메뉴에 구글 번역 추가

아래 section에 내용을 추가한다.

[Translate menu]
--------------------7
Item, "자동번역"="Go to page, "http://translate.google.co.kr/?hl=ko#auto|ko|%t""
--------------------8
Item, "일본어를 한국어로"="Go to page, "http://translate.google.co.kr/?hl=ko#ja|ko|%t""
Item, "영어를 한국어로"="Go to page, "http://translate.google.co.kr/?hl=ko#en|ko|%t""
--------------------9
Item, "한국어를 영어로"="Go to page, "http://translate.google.co.kr/?hl=ko#ko|en|%t""
Item, "한국어를 일본어로"="Go to page, "http://translate.google.co.kr/?hl=ko#ko|ja|%t""
Item, "한국어를 중국어(간체)로"="Go to page, "http://translate.google.co.kr/?hl=ko#ko|zh-CN|%t""
Item, "한국어를 중국어(번체)로"="Go to page, "http://translate.google.co.kr/?hl=ko#ko|zh-TW|%t""
--------------------10
Item, "일본어를 영어로"="Go to page, "http://translate.google.co.kr/?hl=ko#ja|en|%t""

툴바 버튼 추가

http://operawiki.info/CustomButtons 등의 사이트에서 버튼을 클릭하면 커스텀 버튼이 등록된다.

직접 toolbar.ini를 편집해도 된다.

[Customize Toolbar Custom.content]
Button0, 749810497="Enable menu bar, , , 749810497, "Menu" | Disable menu bar, , , , "749810497" + Show popup menu, "Browser Menu Bar""
Button1, 278263762=Leave fullscreen, , , "FullScreen", "Enter Fullscreen" > Enter fullscreen & Set alignment, "document toolbar", 2 & Enable scroll bars & Set alignment, "pagebar", 2
Button2, "Validate"="Go to page, "http://validator.w3.org/check?uri=%u", , "Validate", "Select user mode""
Button3, "Validate CSS"="Go to page, "http://jigsaw.w3.org/css-validator/validator?uri=%u&warning=1&profile=css2", , "Validate CSS", "Select user mode""

속도 향상

아래 내용은 주소 창에 opera:config를 입력한 후 나오는 설정 창에서 해당 값을 찾아 수정한다.

Network 관련 수정

HTTP Error Strategy: 2
Max Connections Server: 16
Max Connections Total: 64
Network Buffer Size: 32
No Connection Keepalive: False
Non-Compliant Server 100 Continue: False
Reduce Max Persistent HTTP Connections: False
Synchronous DNS Lookup: False

큰 이미지가 있는 사이트에서 느려질때

Turbo Mode: False

favicon 사용하지 않게 수정

alway load favison: 0

2006년 10월 5일

Debian/ATI 드라이버 설치

package 설치

# apt-get install fglrx-control
# apt-get install fglrx-driver
# apt-get install fglrx-kernel-src module-assistant

커널 모듈 컴파일

# module-assistant prepare
# module-assistant update
# module-assistant a-i fglrx

설치

컴파일이 끝나면 /usr/src/fglrx-kernel-커널버전-*.deb 파일이 생긴다.

이 파일을 설치하면 된다.

# dpkg -i /usr/src/fglrx-kernel-커널버전-*.deb

X.org 설정

aticonfig 툴을 이용해 설정한다.

Reference

http://wiki.cchtml.com/index.php/Debian_Installation_Guide