Тег «грабли»

OpenOffice Impress во всей красе

Вчера весь день работал над своей SITOPовской презентацией в OO Impress 3.1.1 под Fedora 11. Работал — и получал от этого реальное удовольствие, настолько удобная программа. И что особенно приятно, думал я, не тормозит, радость моя, даже на моем стареньком рабочем P4. Ну просто счастье.

Сегодня прихожу на работу, открываю ту же презентацию, и… Иду пить чай. Отклика от интерфейса нет вообще. Смотрю в top — за звание самого прожорливого процесса борются simpress.bin и convert. Последний, очевидно, что-то делал со встроенными в презентацию картинками в формате EPS. Наверное, преобразовывал в какой-то свой внутренний формат. Ладно, минуты 4 попреобразовывал и перестал.

Но вот процесс simpress.bin после этого решил, что он теперь тут главный и ему все можно. Минут через пять интерфейс, наконец, начал неторопливо отвечать на мои действия. Все это время загрузка процессора одним этим процессом держалась на уровне 95%. Еще минут через пять тормоза почти окончательно пропали. Но стоит только просто поелозить колесиком мышки, как Impress тут же начинает жрать 20–40%. И основательно тормозит при любом редактировании. Xorg тоже хорош — глядя на Impress, выдает до 40% при прокрутке слайдов. Они что думают, я их за ушком чешу?.. Откуда такая гипервозбудимость?

Нет, правда, может кто-то знает? Уж очень не хочется для подготовки презентаций загружать винду.

Проблемы с microtype и шрифтами

Я уже писал про одну из возможностей пакета microtypeвисячую пунктуацию (кстати, это частный случай margin kerning — кернинга крайних символов в строке для визуального выравнивания границ текста). Так вот, этот пакет позволяет делать еще множество всяких микротипографских трюков (см. инструкцию). Один из основных — автоматическое растягивание шрифта (font expansion) для выравнивания пробелов между словами.

Не сказать чтобы мне это самое растягивание позарез как нужно, но после очередного обновления (у меня Fedora 11) моя статья перестала собираться, мотивируя это примерно так:

ERROR: pdfTeX error (font expansion): auto expansion is only possible with scalable fonts

Это загнало меня в тупик на несколько часов. Конечно, Гугль знает о такой проблеме. И в инструкции к microtype все подробно написано. Ответ очевиден: использовать масштабируемый шрифт. Проблема только в том, что используемый по умолчанию шрифт cmr из пакета cm-super очень даже масштабируемый. Лог сборки по этому поводу тоже не особенно внятен.

Решение нашлось практически случайно. Некая загадочная редиска закомментировала в файле updmap.cfg строки, содержащие «cm-super». Мне достаточно было раскомментировать строку (я использую кодировку T2A):

MixedMap cm-super-t2a.map

и выполнить

sudo updmap

Все заработало. За помощь в поимке редиски объявлено вознаграждение.

УжасноПлохоНормальноХорошоОтлично (2 голосов, средний: 5,00 из 5)
Loading ... Loading ...

Как не надо ремонтировать жесткий диск

История со мной произошла пренеприятнейшая, но со счастливым концом и мощным назидательным содержанием.

Есть такие люди, которые идут-идут своей тропинкой, посматривают по сторонам, и вдруг — бац! Наступают на грабли. Другие заранее замечают разложенный на дороге коварный садовый инвентарь, и обходят опасное место кустиками. Мой случай более интересен — я наступил в метафорическую кучу дерьма. И вместо того, чтобы обтереть ботинок листиком, я поперся в бурелом на поиски крана с водой, и уже там наступил на свои грабли. Причем несколько раз.

Кого интересовала философская сторона вопроса, могут дальше не читать. А я все же приведу немного подробностей.

Компьютер внезапно перестал грузиться. Проходит POST, появляется надпись о попытке загрузить с CD — и тишина. Ни сообщений, ни воплей спикера — ничего. Ну, думаю, первичный загрузчик накрылся. Мелькнула у меня мысль вроде «А с чего бы он вдруг вот так взял и накрылся?», но симптомы были слишком очевидны. Достал с дальней полки установочный диск древней Slackware, загрузился. Смотрю — диск целый, таблица разделов в сохранности, сами разделы монтируются, fsck не ругается. Мистика просто: кто-то взял, и аккуратно так испортил начало MBR.

Ладно, зря что ли я писал свой загрузчик? Нахожу GRUB, командую ему «фас», он послушно пишет первую ступень в MBR. Перезагрузка. Тишина. Повторяем с другими настройками. То же самое. Через 20 минут я начинаю тихо закипать. Скачал Live CD Fedora 10 с ноутбука, может дело в версии GRUB?.. То же самое.

Тут вспоминаю, что вроде бы я делал бэкап первого сектора. Лезу в недра домашнего каталога — вот он, голубчик! Вооружившись dd, лихим кавалерийским наскоком переписываю резервную копию на диск. И когда уже палец опускался на Enter, я вспоминаю, что бэкап-то был от другого диска… Но поздно. Таблица разделов безвозвратно утеряна. Диск превратился в груду бессмысленных секторов.

Но не все потеряно! Есть же gpart — моя последняя надежда! Запускаю его на полное сканирование, вижу как он успешно находит раздел NTFS и со спокойной душой иду спать — работать он будет (по опыту) долго. Утром gpart показывает кашу из незнакомых мне разделов. «Не шмогла». Иду гуглить. Оказывается, есть еще одна подобная утилита — testdisk. Ставлю ее, запускаю сканирование. От силы через две секунды (!) она мне выдает правильный список разделов. Фууф, гора с плеч. Save. GRUB. Перезагрузка. Опять тишина…

Вдумчивый читатель, наверное, уже догадался, чем окончилась моя история. Я наконец-то зашел в настройки BIOS и увидел, что сбился порядок загрузки с носителей. Компьютер все время пытался грузиться с диска, на котором загрузчика просто не было. А от моих манипуляций с другим диском, разумеется, ничего не менялось.

Вот такая история. А мораль простая — надо чаще думать головой.

УжасноПлохоНормальноХорошоОтлично (3 голосов, средний: 5,00 из 5)
Loading ... Loading ...

Грабли: замена макросов на функции в C

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

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

Через пару дней прибегает представитель соседнего отдела и говорит, что у них все падает и плющится, и все по вине моих функций. Иду разбираться. Гляжу — компоновщик не может найти функции, которые вызывались в старых макросах. Ну делов-то, говорю, пересоберите проект, я там макросы на функции заменил. Какой тут крик начался… У них же софтина уже прошла испытания, и они ее в архив сдали, вместе с контрольной суммой. Пересобрать ее — значит заново кучу бумажной волокиты произвести. Ой…

Что поделать, пересобрали. А я с тех пор к макросам отношусь с большой осторожностью.

УжасноПлохоНормальноХорошоОтлично (2 голосов, средний: 4,00 из 5)
Loading ... Loading ...