Категория: Компьютеры

Заметки о программировании и на околокомпьютерные темы

Вложенные категории: Delphi, Игры

Ищу бета-тестеров

Я пишу расширение для Оперы, которое показывает на экспресс-панели дневник, число комментариев, дискуссий и ю-мылов. Выглядит примерно так:

Когда появляются сообщения, выглядит так:

Нужны бета-тестеры, т.е. люди, которые будут проверять сырую версию, натыкаться на ошибки и приставать ко мне до тех пор, пока я их не исправлю. Знание HTML/Javasсript/CSS приветствуется. Ошибок будет много.

Про CSS

CSS – язык, который был создан для удобства разметки страницы, и за 15 лет разработки превратил простейшие задачи в Ад.

Попробуйте оформить с помощью CSS такие понятные вещи, как:
– элемент произвольного размера по центру страницы, который начинает уменьшаться, когда не влезает целиком
– заверщающий элемент (footer) произвольного размера, который находится после содержимого, а если содержимое меньше экрана – в нижней части экрана

Нет, это можно сделать! Существуют целые сайты, посвящённые “center vertically” или “sticky footer”, где приведены магические заклинания, которые для этого нужно произнести. (Правда, footer случайного размера так никто и не умеет делать иначе, чем через css-3).

…Когда-то у Каганова на сайте был конкурс на лучшее слово из трёх букв. Первая, вторая и третья буквы выбирались из списков. Казалось бы, почти все буквы в списках присутствовали, но – то в одной колонке “Х” нет, то в другой “Б” или в третьей “Я”. И за какое интересное слово не схватишься – ничего не составляется. Вот и CSS так же.

Кеширование рисунков в Опере

По умолчанию в Опере очень плохо кешируются рисунки. Изменив пару настроек, можно сильно ускорить работу с ними.

(читать дальше)

Проблема

Проведите небольшой эксперимент: откройте семь-восемь огромных (не меньше 2000×3000 пикселей) картинок в отдельных вкладках, и попереключайтесь между ними. Если не знаете, где такие взять, поройтесь на Danbooru — NSFW. Видите? Каждый раз, как вы переключаетесь на следующую вкладку, картинка медленно прорисовывается снизу вверх. Это заметно на “тяжёлых” рисунках, но происходит и на мелких, даже на одной и той же странице, когда вы скроллитесь вперёд-назад.

Дело в том, что у Оперы есть два кеша: медленный кеш на диске и быстрый в памяти. Когда вы переключаетесь на следующую картинку, предыдущая выбрасывается из кеша в памяти, и потом её придётся снова загружать с диска и распаковывать (картинки запакованы для уменьшения размера).

Но почему Опера выбрасывает картинки из памяти, хотя вы открыли всего-то 7 рисунков по 5 мегабайт каждый? Это же 40 мегабайт данных, а у вас несколько гигабайт оперативки!

На самом деле, в распакованном виде эти картинки занимают гораздо больше. Умножьте 2000 на 3000 и на 4 (размер пикселя) – получите 25 мегабайт. Такова “цена” одной картинки в памяти.

И всё-таки, даже семь таких картинок – это лишь 180 мегабайт. Однако Опера почему-то устанавливает размер кеша в памяти именно таким, – маленьким, – и спешит выкинуть лишнее, хотя в результате его придётся медленно перезагружать.

К счастью, размер кеша можно задать вручную.

Решение

  1. Откройте opera:config
  2. Найдите параметр “Cache\Figure“. По умолчанию в нём стоит 2Мб. Укажите что-нибудь вроде 1Гб (в килобайтах: “1048576”, а если памяти хватает, в 64-битной Опере можно и 2-4Гб). Сохраните настройки.
  3. Найдите параметр “UserPrefs\Automatic RAM Cache“. Отключите его.
  4. Перезагрузите Оперу

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

Если хотите, можно поднять и следующие параметры кеша:

  • Cache\Document – тоже до гигабайта-полутора
  • Disk Cache\BufferSize – до 100 мегабайт
  • Disk Cache\Size – до 200 мегабайт, или сколько места у вас есть на диске, где лежит кеш

Какой размер кеша выбрать и чем это грозит

Если у вас 32-битная Опера, не делайте общий объём Cache\Figure и Cache\Document больше гигабайта, сколько бы памяти у вас не было. В 64-битной Опере можно (и даже полезно) установить суммарный объём кеша до половины объёма вашей оперативки.

Но тогда другим приложениям не хватит памяти!
Чушь. Внимательно послушайте: в системе Windows приложения не делят память. Опера может “съесть” 8Гб оперативки, и при этом для других приложений вся память будет свободна!
Чудеса? За кулисами Windows поступает так: если программе нужна память, а свободной памяти нет, она временно “убирает” часть памяти Оперы на жёсткий диск, в файл подкачки. Потом, когда Опере опять потребуется эти данные, система их вернёт в оперативку.

Получается, данные всё равно будут грузиться с диска?
Только в том случае, когда другим приложениям не хватило памяти из-за Оперы. Это должно происходить редко.

Тогда почему в 32-битной Опере нельзя поставить больше гигабайта?
Сколько бы у вас не было физической памяти, виртуальной памяти у 32-битных приложений всего по 2 гигабайта. Когда она кончится, приложение умрёт. Если вы больше гигабайта отдадите на кеш, Опере совсем не останется памяти на всё остальное.

Почему в 64-битной Опере можно поставить больше гигабайта?
У 64-битных приложений гигантский объём виртуальной памяти. Можете отвести под кеш хоть терабайт, место всё равно останется.

Но у меня всего 8 гигабайт оперативки, откуда возьмётся этот терабайт?
Система будет убирать часть этого терабайта на диск. В физической памяти будут оставаться только самые нужные его части.

Тогда почему не поставить кеш в терабайт?
Нет смысла. Нам хочется, чтобы кеш был быстрым, а для этого он должен умещаться в физической памяти. Конечно, иногда система может сбросить его на диск, но мы рассчитываем, что это будет происходить нечасто.

Что, если у меня отключен файл подкачки?
Тогда, разумеется, постарайтесь не съесть всю доступную физическую память! Сделайте кеш поменьше.

Что, если у меня постоянно запущен отжирающий 75% памяти монстро-процесс?
Тогда, разумеется, постарайтесь уместить кеш в оставшиеся 25%! Вам не нужно, чтобы система постоянно загружала-выгружала память с диска, разрываясь между вашим монстром и Оперой.

У меня SSD. У меня дисковый кеш лежит на рам-диске. Всё и так должно быть быстро.
Даже если дисковый кеш находится на рам-диске, загрузка и распаковка рисунка занимают время, в чём легко убедиться, проведя описанный в статье эксперимент. Кеш памяти быстрее.

Бонус: какими расширениями Оперы я пользуюсь.

Windows 8 Consumer Preview

Поставил себе последнюю превьюшку Windows 8.

Boy, does it suck.

Boy, does it suck.

В двух словах, это Windows 7, поверх которой навешен свистопердюлечный ланчер с квадратными неразборчивыми иконками. При первой возможности ланчер сворачивается, и остаётся обычный рабочий стол. Из которого потом в ланчер фиг вернёшься.

А кнопку “Пуск” теперь убрали. Так что чувствуешь себя, как десант с вертолёта в пустыне Гоби. Безжизненная равнина, на которой виднеются только Корзина и Проводник. Ну и как отсюда куда-нибудь попасть?

Сам ланчер настолько идиотский, что пользоваться им сил нет. Программы свалены в одну кучу, иконки похожи друг на друга, названия все в духе “Windows CardSpace” и “Windows MyPrivates“. Полный хаос.

Одного взгляда хватает, чтобы срочно пожалеть о своём решении в него зайти.

Из свистопердюлечных программ большинство не работают, так как требуют аккаунта в Майкрософт. Я вам сейчас перечислю:
Store, Photos, Calendar, Messaging, People, Mail: нужен аккаунт.
X-Box Live: нужен аккаунт (но можно оффлайн посмотреть дебильные картинки)
Солитёр: VISIT ESRB.ORG FOR RATING INFORMATION (Я серьёзно)
Weather: Спросило, где я живу, и повисло.
Music, Video: предлагает купить музыку и фильмы. Дебильный интерфейс.

Вообще практически всё перед запуском напоминает зарегистрироваться в Майкрософт. Даже Солитёр. “А вот если б у вас был аккаунт в Майкрософт, то вы смогли бы… Блин, я не знаю, что они смогли бы. Это Солитёр, чёрт подери. Почему я сижу и сочиняю эту чушь?”

В общем, одна большая маркетинговая лабуда.

Который раз встречаю в программах такую проблему: если уж строка не влазит в одном месте, то она не влазит везде. Например, описания файлов. Если уж описание не влезло в общем списке, то оно не влезет и на панели подробной информации, и в диалоге свойств файла.

Или статус в скайпе. Читаешь чей-нибудь статус: “Может, без меня мир был бы лучше, н…”. Дважды кликаешь, чтоб дочитать, открываются сведения о пользователе, и там то же самое – урезано. И прокрутить нельзя.
(Кстати, статус: “Может, без меня мир был бы лучше, но, блин, увы”)

Зачем вставлять одно и то же в трёх местах, если оно везде отображается одинаково?
Очевидно, что вкладки “подробная информация” должны быть рассчитаны на все крайности, даже на те, которые в обычном интерфейсе ради простоты и удобства не обрабатывают.

Это спам!!

Обычный человек проверяет почту через браузер, в крайнем случае почтовым клиентом. У меня этих клиентов четыре: на домашнем, рабочем компьютере, ноутбуке и на мобильнике. Каждый борется со спамом как может.

То один пометит нужное письмо как спам. То другой. То третий. Когда садишься за новый компьютер – нужно сначала всех успокаивать и утешать, и объяснять, что это письмо от друга, он мне тысячу писем уже присылал. А это нужная рассылка, я всегда её читаю.
Научишь так один компьютер – а в это время другой помечает как спам те же самые письма.

И главное, один пометил – а три других мотают на ус. “Вижу, это письмо в папке спам. Наверное, по заслугам. Буду знать, в другой раз сам забаню”. Их четверо, а я один! Чувствую себя школьником, портфель которого перекидывают друг другу старшие товарищи.

Про блюреи

С блюреями интересная ситуация. До сих пор запросы на свободное место росли быстрее, чем доступные объёмы. То есть, фантазию всегда сдерживали технические ограничения. Когда-то видео на компьютере казалось чудом, затем 320×200 – хорошим разрешением (я так лавхину смотрел), потом завоевали популярность DVD, стали появляться энкоды в 640×480…

И вот получилась ситуация, когда реально всем пофигу на блюреи.
Ладно блюреи, БД-рипы в 1080p никто не качает!
Ладно 1080p, я сейчас скажу крамолу, но вы обратите внимание: 720p для архива не всегда перекачивают. Люди с восьмиядерными процессорами и видюхой, которая может в реальном времени обсчитывать половину Московской области, качают 480p-реенкоды в AVI и так архивят.

Отчасти потому, что 480p быстрее скачать. Отчасти потому, что перекачивать лень. И отчасти – потому, что нет разницы.

Некоторые сериалы от 1080p выигрывают. Я могу вспомнить Баке и Сенсея с их чёткой шафтовской рисовкой, полнометражки с облаками или сражениями, на минуты которых тратились человеконедели. Но большая часть аниме и тем более фильмов смотрится после 720p уже лучше не становится. А многим и 480p выше крыши (Кальмарка из нынешних).

Часто я перекачиваю 720p только чтоб посмотрел опенинг. Потому, что это реально единственное стильное место во всём сериале (Мираи Никки). А весь остальной сюжет по сути неважно, в каком разрешении (Штайнс Гейт, Level E).

Есть и другая сторона. 480p-энкоды пойдут на любом оборудовании, от нетбука до кофеварки. Что толку архивировать 1440p, если смотреть 480p всё равно куда удобнее?

Wikidot-FB2

Написал набор PHP-скриптов для генерации книг в форматах FB2 и TXT из страниц Wikidot. Поддерживается почти вся викидот-разметка, указание в теле страницы информации о книге (автор, переводчик и т.п.). Сделана неплохая система кеширования.

Справка внутри архива, в файле readme.txt. Об ошибках и неисправностях докладывайте, если кто захочет улучшить – пишите, сделаю SVN.

Скачать wdotfb2.zip

(Как подготовить книгу)

Как подготовить книгу к превращению в FB2

Всё содержимое книги должно быть собрано на одной странице. Если книга состоит из нескольких глав, нужно создать страницу-сборку вот таким образом:

++ Глава 1.
[[include chapter1]]
++ Глава 2.
[[include chapter2]]
...

Заголовок страницы станет названием книги. Остальные подробности можно указать в комментариях в её тексте:

[!-- author=Танигава Нагару --]
[!-- author=Иван Васильевич Пупкин,,,pupkin@pupkin.ru --]
[!-- author=Пупкин,,www.pupkin.ru --]

Указывает автора книги. Авторов может быть несколько. Формат: Фамилия Имя Отчество, псевдоним, сайт, почта. Любые параметры можно пропустить, пустые параметры в конце можно отбросить. Вместо полного имени можно указать Фамилию Имя или только Фамилию. Примеры:

[!-- translator=,randomdude,,dude@dudemail.com --]

Переводчик книги. Переводчиков может быть несколько. Формат тот же, что у “Автора”.

[!-- lang=ru --]
[!-- src-lang=jp --]

Язык книги и язык оригинала, если это перевод.

[!-- sequence=Хандра Ивана Пупкина, 1 --]

Серия, в которую входит книга, и её номер в ней.

[!-- annotation=Описание книги, выполненное в разметке викидот.
Можно переходить на новую строку, использовать **жирный шрифт** и //курсив//, даже [[include pagename]] вставлять страницы.
Нельзя только использовать комментарии. --]

Аннотация к книге. Если ваша аннотация слишком длинна или содержит разметку, которую нельзя указать в комментарии, сохраните её как отдельную страницу, и включите инкладом.

[!-- cover=v01t01-images/v01t01_cover_cut.jpg --]

Ссылка на файл с рисунком, который станет обложкой книги.

Про страницы

В последнем билде Opera Labs поддерживается экспериментальное расширение CSS “разбивка на страницы“. Достаточно написать:

@media -o-paged {
html {
  height: 100%;
  overflow: -o-paged-x;
}
}

…и браузер разобъёт ваш текст на страницы размером в экран, которые можно листать клавишами вправо-влево, как в книге.

Звучит это здорово, но сделано сыро. Я установил билд и поигрался с разбиением на больших текстах. Неудобно. Скроллить можно колёсиком мыши, а страницы тягать – только клавиатурой и пальцем. Хотя подхват rel-ссылок – это удобно (можно сделать, чтоб правее последней страницы автоматически грузился rel=next, и rel=prev левее первой).

Текст бьётся некрасиво – как, в общем-то, всегда и бился при печати. Из-за рисунка (css float) на предыдущей странице может образоваться дыра, заголовок может оказаться последней строчке на странице, и т.п. Думаю, ничего нового здесь нет: нужно доводить до ума разметку страниц для печати, а страничный показ на экране получится автоматически.

Кто хочет поиграться, весь сайт boku.ru поддерживает страницы (в записях слева-направо, в индексе сверху-вниз), а также rel-навигацию (потяните пальцем страницу, и сбоку подгрузится следующий пост). На судзумии.ру тоже включено (книги достаточно удобно так листать).

Как установить на Андроид нормальные японские шрифты

В двух словах, если это кому-то понадобится:
Ситуация со шрифтами в Андроиде плохая. Есть стандартные системные шрифты трёх семейств (DroidSans, DroidSerif и DroidMonospace). Кроме того, любое приложение может установить шрифт только для себя самого.

На европейских мобильниках установлены европейские и кириллические шрифты, а также DroidSansFallback.ttf, который используется для всего остального. Он содержит только китайские написания кандзи, кроме того – не все (даже популярные кандзи, такие, как 北, 不 или 更, отсутствуют).

Чтобы установить нормальную поддержку японского на Андроид, нужно скачать DroidSansJapanese.ttf (шрифт, поставляющийся с японскими андроидами) и залить его в /system/fonts. (подробнее)

Подробнее:
1. Телефон нужно зарутить (гуглите “root android [your phone model]”).
2. Должен быть установлен busybox (можно найти на маркете)
3. Нужно скачать программу adb (можно найти в Android SDK или, например, в комплекте Super One Click root).

Теперь сама процедура:
1. Подключите телефон к ПК (все драйверы должны стоять, подключать как SD-карту телефон не надо).
2. Запустите командную строку в папке с adb. Положите туда же файл DroidSansJapanese.
3. Выполняйте:

adb push DroidSansJapanese.ttf /mnt/sdcard/
adb shell
su

В этот момент на телефоне появится запрос подтверждения. Дайте разрешение, продолжайте:

cp /mnt/sdcard/DroidSansJapanese.ttf /system/fonts/
reboot

Проверяйте, должно работать.

Посылаем лучи ненависти криворуким людям из гугла, которые не смогли сделать нормальной системы управления шрифтами, когда в Windows она существует с 1991 года (с альясами, виртуальными шрифтами, настраиваемыми цепочками фоллбэков и пользовательским интерфейсом).
Что Windows, в любом современном браузере есть собственная система переназначения шрифтов. 2011 год на дворе, гугл.