Сравнение потребления памяти различными браузерами

Сегодня я расскажу, что получилось из моей давней идеи скормить каждому более-менее популярному браузеру, до которого руки дотянутся, сотню-другую вкладок, и посмотреть, сколько памяти он сожрет.

Для сих целей был взят TOP-1000000 сайтов по версии Alexa, из него выбрано первые 120 и положены в файл links.txt. Затем товарищ Voker57 помог скриптом на Ruby, читавшим этот файл, запускавшим указанный браузер и после загрузки страницы грепавшим список процессов (ps aux) по соответствующему имени. Сумма значений в столбцах, соответствующих RSS, и считалась потреблением памяти соответствующего браузера. Таким образом, учитывалась многопроцессность Chromium'а и процесс operapluginwrap Оперы. Отдельно стоит отметить, что данные результаты, возможно, завышены на 10-15% по сравнению с тем, что ты, мой читатель, можешь увидеть в своем process manager'е.

Тестировались:

  • Arora 0.10.2-r1
  • Chromium (chromium-bin-5.0.376.0_p44230) (без аддонов)
  • Firefox 3.6.3 (без аддонов)
  • LeechCraft 0.3.65-830-g57e30dc (полный боекомплект)
  • Midori 0.2.4
  • Opera 10.10-r1 (более свежие версии неработоспособны вообще) (без всяких довесков)
  • Rekonq 0.4.0
  • uzbl 2010.04.03 (без скриптов, поставка по умолчанию)

Учат в школе

Давно я не писал сюда. Это по большей части потому, что сейчас я обитаю в жуйке (да, сраный микроблоггинг поглотил и меня), учусь на втором курсе и въя^W работаю по трем направлениям.

Проблема, мой дорогой бложек. Может быть, я хороший программист. Пишу говнокод на плюсцах и немного на пейтонах, пытаюсь на хаскелях. Но вот возникает та самая проблема: не могу я работать в команде. Не получается.

Возьмем те же личкрафты. Казалось бы, отличный проект для командной работы: один программист пишет один модуль, второй — другой, третий — еще какой-то. Стандартизуешь API, если надо, между плагинами, и всё. А если плагины не связаны между собой (один пилит IM, а другой — плеер), то и этого не нужно. Но не все так просто.

Начнем с того, что ВНЕЗАПНО, несмотря на описания, хаутушки и мануалы (и даже гайд по написанию плагинов на примере простенькой скриншотилки), код среднему человеку, пытавшемуся тыкать личкрафты, кажется сложным. C++! STL! Qt! Boost!

IM, мессенджер, то бишь. Архитектура проста. Отдельным процессом ядро мессенджера, запускается, получает список .so-шек с реализациями протоколов от личкрафта, грузит их и использует для коннекта к серверу. Это чтобы от сервера не отключаться, когда личкрафты упадут. А ядро IM'а, в свою очередь, через какой-нибудь локальный IPC связывается с соответствующим плагином к личкрафтам, который уже рендерит ростер, показывает табы с чятиками и делает множество других интересных вещей.

API этого всего дела. Да не знаю я API. Не могу я сейчас предугадать, какие сегодня абстракции понадобятся для libpurple-based протокольного плагина, какие завтра — для iris-based, а через неделю — для SIP. API я буду рожать по мере написания кода. И изменять буду. И удалять старое, и добавлять новое. Да и код в моей голове. Архитектура в моей голове. Идеи и цели в моей голове. Я все это вижу, чувствую, но быстрее написать самому, нежели кому-то что-то объяснять.

Что делать, моя любимая жежешечка? И почему меня в моих физтехах учат какому-то жалкому подобию C++, учат умирающим технологиям типа SQL на примере MS SQL, но не учат таким банальным вещам?

ФП, Boost и С++ головного мозга

Вот что ФП с мозгами делает:

  1. void Call (F f)
  2. {
  3. Q_FOREACH (QWidget *w, createdWidgets ())
  4. f (static_cast<QComboBox*> (w));
  5. }
  6.  
  7. Call (boost::bind (&QComboBox::setCurrentIndex, _1,
  8. boost::bind (std::minus<int> (),
  9. boost::bind (&QComboBox::count, _1),
  10. 1)));

Проходит по коллекции комбобоксов и для каждого комбобокса активирует самый последний для него в списке элемент. Кроме этого места Call юзается еще в куче подобных конструкций.

Олсо. C++ — одновременно говно и офигенен. Говно, ибо вместо «-» приходится юзать std::minus, а офигенен потому, что это можно сделать.

Не серьезно же

Поигрался немного ночью с планшетом.

Образ
(Кликабельно, 121kB)

И да, это не обо мне. У меня нет e-ink :)

WYFV (Watch Your Fuc^W Funny Video)

Теперь не нужен флеш, чтобы смотреть видео на ютубе. Плагин Poshuku WYFV юзает любой установленный плагин для медиа-плеера, чтобы заменить стандартный флешевый плеер:
Образ
(Кликабельно, 193kB)

Соответственно, есть поддержка выбора желаемого качества: от 3gp, 176x144 до HD, 1280x720, но не у всех файлов поддерживается каждое разрешение. Скоро добавлю навигацию по related videos.

И да, ищутся могущие добавить поддержку других видеохостингов. Там не особо сложно, я б и сам мог, да траффик сильно дорогой.

We contribute!

Накатал вот статью в википедию про Теорему Кёнига.
Перепиливаю потихоньку статью про дальнодействие и короткодействие.

Не говорите потом, что я только личкрафты лоббирую.

Неделя

Написал письмо в Яндекс, что у них невалидная верстка на http://slovari.yandex.ru, и что вообще там DOCTYPE-декларация неправильно написана. Пофиксили, заработало. Расспросили, зачем мне это. Рассказал про Qt и их SAX-парсер, про ненахождение Opensearch на их странице. Упомянул про личкрафты. Как-то так.

Помог авторам Qt/KWin-темы Bespin, которую можно видеть на моих скринах, пофиксить хитрый баг. Исключительно приятные люди, не то, что лиддев qutIM'а, страдающий терминальной стадией ФГМ. Хотя, может, у кутимовцев за год и поменялось чо.

Сдал ТРЯП на отлично. Это радует, учитывая отношение семера ко мне.

Теормех затягивает.

Научился играть Breaking Benjamin — So Cold. Легко.

Поставил UT2004 на линух. Ностальгирую.

Трололо

Письмо с восстановлением пароля от ютюба попало в спам-фолдер на гмейле. Забавно.

Чем больше я учу хаскель...

...тем больше я понимаю, что, скорее всего, никогда не буду на нем писать ничего, кроме прототипов или чего-нибудь академического-научного. Лучше после такого мощного, жесткого, но офигенно драйвового погружения в ФП выучу за вечерок-другой Erlang/OCaml и буду писать на них.

Haskell vs C++

Задали мне тут по информатике задание на пол-семестра, дабы не приходил и не стебался на семинарах. Нужно написать программу, читающую файл с расписанием запуска программ из строк в формате
<количество секунд от запуска> <путь к программе>

Сначала написал на C++ за 30 минут — 118 строк. Этак строк 100, если убрать проверку на ошибки.

Потом подумал и решил, что неплохо было бы написать на Haskell, ибо как раз учу язык, попрактиковаться лишний раз неплохо, да и просто посмотреть на реакцию препода. Да, заняло часа два. Да, обратился к помощи коллег. Но язык непривычный, не знал, как лучше сделать те или иные вещи, да и вообще. Итог: 43 строки, прозрачный код и никакого лоу-левела. Приятно и фапабельно.

C++-вариант (код говно, знаю).
Haskell-вариант (код еще большее говно, знаю).

Да, с радостью выслушаю критику обоих вариантов.

Экспорт фидов в fb2

Посмотрел я сегодня с утра на 674 непрочитанных новости в слешдоте и решил сделать экспорт фидов в fb2, дабы прочитать потом все с КПК по дороге куда-нибудь.

Вот так выглядит диалог экспорта:
Образ
(Кликабельно, 126kB)

Можно выделить несколько разных фидов, выбрать категории для экспорта, а также экспортировать либо все новости, либо только непрочитанные.

И вот так потом все это смотрится в Okular:
Образ
(Кликабельно, 210kB)

AlReader на КПК тоже читает. Уже проверено :)

Кое-что новое в личкрафтах

Почитал я RSS-фиды и решил теперь освещать всякие новые фичи в LeechCraft. Понтовые и не очень, грандиозные и не очень, трудновыполнимые и не очень.

Начнем с предложения добавить некие стандартные RSS-фиды и OpenSearch-поисковики в мастере первого запуска. Выглядит это так:
Образ
(Кликабельно, 223kB)

LeechCraft автоматически определяет пользовательскую локаль и выводит релевантные фиды. Кроме того, есть набор неких глобальных (возможно, интересных всем) фидов (Slashdot, Euronews), которые добавляются ко всем локализованным наборам и выводятся, если для данной локали нет набора. Аналогично с OpenSearch'ем. Кстати, по-прежнему принимаются предложения на тему фидов по умолчанию.

Вторым пунктом идет упрощенная и переработанная система поиска. С пылу, с жару, только что закоммитил и push'нул:
Образ
(Кликабельно, 148kB)

По умолчанию предлагается простой поиск, где пользователь может выбрать одну или несколько категорий (автоматически сразу подхватываются новые из плагинов по мере их появления) и тип поиска, а потом ввести обычную строку, без всяких логических выражений. Сняв галочку с чекбокса, он активирует продвинутый режим, который соответствует поведению LeechCraft до этого. В этом режиме пользователь сам может целиком и полностью сформировать самый извращенный запрос, который только пожелает.

Ну и напоследок, представим новый плагин с символичным названием AnHero. При наличии кед позволяет личкрафтам падать красиво и со спецэффектами, удобно посмотреть бектрейс и отправить кому-нибудь отчет:
Образ
(Кликабельно, 151kB)

LeechCraft в rion overlay

Благодаря славному товарищу Andor личкрафты появились в gentoo-оверлее rion. Так что делаем layman -a rion и эмержим leechcraft-9999 с полным набором юз-флагов. Ну, кроме DC, она пока еще не компилится под гентой почему-то. Если кто разберется, почему — сто интернетов тому.

Break teh promise

Внезапно, в связи с добавлением ссылки на мой уютненький в статью на Википедии про личкрафты, да и с тотальным пониманием, что не важно, доля Programming в JABAPLS вырастет, а Life упадет. Упадет, но никуда не денется, и будет сраться под замочек в жежешечку. Под замочек до сих пор я еще никода не писал, а в жежешечку не писал с появления этого блога — этак с января-марта 2008. Такие дела.

Но это всё тоже не важно.

Teh lulz

19 августа выпущен LeechCraft 0.3.0, наконец, почти через полтора года после предыдущего, выпущенного 5 апреля 2008 года. И я попал на глагне Хабра и ЛОРа с этой новостью. В конференцию leechcraft@c.j.r подтянулись посанчеги с упомянутых сайтов.

В тот день количество скачиваний личкрафта — около 300, на следующий — больше 100, хотя обычно в последнее время в день скачивают 20-30 раз.

Почти сразу после поста на Хабре статью на Википедии один товарищ поставил под удаление, хотя остальные товарищи против. Посмотрим, что будет. Да, особенно интересно сравнить со статьями про rTorrent и CTorrent, например. Эти клиенты тоже упомянуты в BitTorrent-шаблонах, тоже ни одного официального ресурса, и никто не сомневается в их значимости. Чую личный интерес.

Какой-то чувак зачем-то добавил ссылочку на мой бложек. Я уже выпилил и попросил у него в обсуждении обосновать, схренали. Нефиг. Посмотрим.