Firefox나 Chrome은 초기 구동속도가 매우 느립니다. 처음에 메모리에 올려야 하기 때문인데요. HDD를 쓰는 경우 속도가 더더욱 느려서 처음에 속도가 상당히 느려서 상당히 답답함을 느끼시는 분이 많습니다.


제 시스템에서는 Firefox가 약 10초 Chrome은 40초정도의 초기 실행 성능을 지니고 있습니다. 솔직히 10초는 기다릴만하다고 생각했는데 Windows에서 IE나 Edge를 실행해보셨던 분들은 아시겠지만 얘네들은 바로바로 실행되는 모습을 볼 수 있습니다. 이유야 당연하게도 Windows에서는 미리 컴포넌트들이 메모리에 올라가 있기 때문입니다. 그래서 Chrome은 이명이 느긋한 돼지라는 별명을 지니고 있습니다. Firefox는 여우답게 날렵했지만 Chrome과의 렌더링 속도에서 져버린 이후 Chrome과 같이 초기 구동 속도가 느리지만 웹렌더링 속도를 올리는 방식을 사용합니다.


그럼 방법은 뭐가 있느나...


Chrome의 경우 처음 실행 후에는 다시 실행을 해도 금방 실행이 되는 모습을 보입니다. 왜냐하면 모든 창을 다 꺼도 백그라운드에서 숨을 죽이고 있기 때문입니다.


아래 그림과 같이 말입니다.


크롬은 한번 실행 후에 백그라운드에서 대기를 타는 방식을 사용한다.

이렇게 하면 체감 속도가 엄청 향상되는 효과를 얻습니다. 역으로 말하면 다른 브라우저들도 백그라운드에서 미리 실행을 해두면 웹브라우저를 빠르게 실행이 가능하다는 의미가 될 수 있습니다. 요즘에는 메모리관리를 열심히 해주지 않아도 충분히 사용이 가능한 시대이기 때문에 자주 쓰는 프로그램을 미리 실행해두는 것도 나쁜 생각이 아닙니다. Chrome이야 그렇다 치지만 Firefox는 메모리도 적게 먹으니까 백그라운드에 실행해 두었다고 해도 문제될 것은 없습니다.


http://hamonikr.org/board_aMBI05/52629


여기서 바람곰돌님이 초기 브라우저 속도가 너무 느리다면서 나온 이야기입니다. 그래서 제가 인터넷을 검색해서 Firefox를 백그라운드에서 실행하는 방식을 추천했지요.


https://askubuntu.com/questions/853891/how-can-i-make-firefox-run-in-the-background-like-chromium


여기에 나온방식으로 스크립트를 만들고 Firefox를 컴퓨터 실행 후에 백그라운드로 실행하니 4초만에 실행이 되면서 편하게 사용이 가능해졌다고 하시더군요.


그래서 이렇게 된 거 여기에 이 방식을 한국어로 소개하려고 합니다.


#!/usr/bin/env python3
import subprocess
import os
import signal
import gi
gi.require_version('Gtk', '3.0')
gi.require_version('AppIndicator3', '0.1')
from gi.repository import Gtk, AppIndicator3
import time

app = "firefox"
winsdir = os.path.join(os.environ["HOME"], ".config/hidden_windows")

try:
    os.mkdir(winsdir)
except FileExistsError:
    pass

def checkruns(app):
    try:
        return subprocess.check_output(["pgrep", app]).decode("utf-8").strip()
    except subprocess.CalledProcessError:
        for w in os.listdir(winsdir):
            if w.startswith(app):
                os.remove(os.path.join(winsdir, w))

def get_currentwins(pid):
    wins = subprocess.check_output(["wmctrl", "-lp"]).decode("utf-8").splitlines()
    return [l.split()[0] for l in wins if pid in l]

def hide_currentwins(matches):
    # open(os.path.join(winsdir, "windowlist"), "wt").write("\n".join(matches))
    for w in matches:
        open(os.path.join(winsdir, app+"_"+w), "wt")
        subprocess.Popen(["xdotool", "windowunmap", w])

def run_app(app):
    subprocess.Popen(app)
    while True:
        time.sleep(1)
        pid = checkruns(app)
        matches = get_currentwins(pid) if pid else None
        if matches:
            hide_currentwins(matches)
            break

def restore_wins():
    for w in [w for w in os.listdir(winsdir) if w.startswith(app)]:
        wid = w.split("_")[-1]
        subprocess.Popen(["xdotool", "windowmap", wid])
        os.remove(os.path.join(winsdir, w))

def toggle_app(*args):
    pid = checkruns(app)
    if pid:
        matches = get_currentwins(pid)
        if matches:
            hide_currentwins(matches)
        else:
            restore_wins()
    else:
        subprocess.Popen(app)

run_app(app)

class Indicator():
    def __init__(self):
        self.app = 'toggle_app'
        self.indicator = AppIndicator3.Indicator.new(
            self.app, app,
            AppIndicator3.IndicatorCategory.OTHER)
        self.indicator.set_status(AppIndicator3.IndicatorStatus.ACTIVE)       
        self.indicator.set_menu(self.create_menu())

    def create_menu(self):
        self.menu = Gtk.Menu()
        item_toggle = Gtk.MenuItem('Toggle '+app)
        item_toggle.connect("activate", toggle_app)
        self.menu.append(item_toggle)
        sep1 = Gtk.SeparatorMenuItem()
        self.menu.append(sep1)
        item_quit = Gtk.MenuItem('Quit')
        item_quit.connect('activate', self.stop)
        self.menu.append(item_quit)
        self.menu.show_all()
        return self.menu

    def stop(self, source):
        Gtk.main_quit()

Indicator()
signal.signal(signal.SIGINT, signal.SIG_DFL)
Gtk.main()





우선 이 방식은 Firefox를 wmctrl을 이용해서 보이지 않게 뒤로 실행하는 방식입니다.

따라서 wmctrl과 xdotool이 필요합니다.


sudo apt-get install wmctrl xdotool


그 다음 python3를 이용해서 firefox를 실행한 후 wmctrl에게 프로세스 ID를 넘겨 보이지 않게 하는 것입니다. 뭐... 이건 그냥 쓰시는 분께는 어려우니까 자세한 설명은 하지 않겠습니다.


위의 스크립트를 복사해서 firefox_bg.py 라고 만들어둡시다.


물론 Python3는 당연히 있다고 생각하고 만드는 것입니다.

해당 스크립트는 만들고 싶은 곳에 만들어 두시면 됩니다.

저는 ~/.firefox_bg/ 에다가 만들었습니다.


그리고 시작프로그램에 해당 스크립트를 실행하게끔 등록합시다.

LinuxMint나 우분투에서는 시작프로그램을 설정 창을 통해 설정할 수 있습니다.


여기서 추가버튼을 누르시고


이름은 마음대로 알기 쉬운 것으로 해주시고

명령은


/bin/bash -c "sleep 5 && python3 ~/.firefox_bg/firefox_bg.py"


이렇게 해둡시다.

뒤의 ~/.firefox_bg/firefox_bg.py 는 제가 해당 위치에 스크립트를 만들어 두었기 때문입니다. 여러분들은 여러분들에게 맞는 위치를 지정해주세요.


설명 부분은 비워도 됩니다.


이제 등록이 되면... 한번 시스템을 껐다 켜 봅시다.


Firefox가 크롬처럼 미리 메모리에 올라와 있습니다. 생각보다 메모리 먹는 양은 많지 않습니다.


그리고 한 가지 더 생각해야 할 것이 있는데 의외로 우리는 웹브라우저를 제일 많이 사용한답니다. 그러니까 Firefox를 미리 메모리에 올렸다고 해도 문제될 것이 없습니다. 물론 크롬을 주로 사용하신다고 하면 Chrome을 이런 식으로 실행해두는 것도 방법입니다.

,

Firerox Quamtum은 Chrome과 Opera등에 밀리기 시작한 Firefox의 야심작입니다. 그동안 멀티코어와 GPU사용등의 하드웨어 사용면에서 열세였던 Mozilla에서 칼을 갈아서 만들어낸 개량Firefox라고 할 수 있습니다.


실제로 GPU사용면에서 Chrome보다 효율이 그다지 좋지 않아서 firefox는 버벅거린다는 인상을 많이 받았는데요.(대신 메모리 사용량은 현저히 적었지요.) 멀티코어와 GPU사용면에서 완전히 갈아치운 새로운 모습으로 Firefox가 찾아왔습니다.


확실히 빨라졌다는 느낌과 함께 UI도 오랜만에 바뀌었습니다.

주소창의 크기가 줄어들면서 약간 허전해졌다는 느낌도 생겼지만 여전히 깔끔하다.


자세히 보면 많이 Flat하다는 인상이네요.


실제로 스크롤 할 때 기존 Firefox는 IE8시절의 스크롤 느낌이었다면 이번 Firefox는 Quantum은 Chrome과 같은 느낌으로 쓰실 수 있습니다. 물론 원래부터 성능좋고 GPU가 빠방한 PC였다면 큰 차이는 못 느끼실 거에요.


하지만 AMD의 CPU처럼 코어가 많은 PC라면 멀티코어 효율이 좋아져서 느낌이 달라지게 됩니다. 특히 올해 제일 많은 관심을 받았던 Ryzen은 이 효율을 제대로 느낄 수 있는 그런 CPU가 될 겁니다. (전 4Core물건인데도 상당한 성능 향상을 느꼈으니 8Core나 그보다 많은 Core라면... 상상이 안 되네요.)


만약 리눅스 민트나 우분투를 쓰고 계신 분이라면 당장 Firefox를 업데이트를 해보세요.


Firefox가 상당히 달라져 있을 겁니다!

,

사실 생각 외로 간단한 문제인데...http://mzl.la/MejhsC 여기에 보면 적당히 나와있지만 문제는 이게 아니라 윈도에서는 문제없이 잘만 되던 곳이 어째서인지 다른 OS에서는 문제가 일어난다는 것이다.


사실 이게 다 "한국정부"탓인데  정부의 인증서는 GPKI란 기관에서 발급해주는데 이게 국제적으로는 정부인증서로 인증을 못 받은 탓이다. 각국 정부의 인증서는 당연히 국제적으로 인증을 받았기에 SSL인증시 모든 브라우저에서 신뢰된 연결로 생각해주는 반면 GPKI는 한국정부가 아닌 한국의 어느 인증기관(?) 되어진 것이다. 그런데 한국의 대부분 SSL인증서는 GPKI것이니 이렇게 될 수밖에 

그렇다면 GPKI인증서를 브라우저에 인식만 시키면 그만이다. 브라우저 인식 방법의 경우 크롬은 별 문제 없고(그냥 GPKI는 예외 시키던지 확장 기능을 쓰면 된다.) Firefox의 경우 로그인을 가능케 하기위해 다음과 같은 파일이 필요하다.


gpki.zip

이 파일이 바로 GPKI인증서 되겠습니다.

출처 : http://forums.mozilla.or.kr/viewtopic.php?p=46026#p46025


파이어폭스의 -설정-고급-인증서 탭으로 이동후에

인증서 보기를 누릅시다.


겨져오기를 누른다음 위의 첨부파일의 압축을 풀고 나온 파일을 선택하면 끝.


이제 신뢰받는 연결이 되었습니다.

,