воскресенье
COPEAC R.I.P.
Effective immediately Copeac.com has ceased all operations.
Помянем добрым словом и отправим в последний путь очередную партнерку.
Ярлыки: Партнерки
суббота
OpenSuSe 11.4 и некорректное размонтирование дисков при выключении
Не так давно заметил багу. При включении OpenSuSe 11.4 замечал, что иногда диски определялись как некорректно выключенные (Transaction replayed ...). И подумал, а что за хрень, почему это происходит?
Оказалось, что при выключении компьютера скрипты выполняются параллельно, и иногда выключение происходит до того, как раздел диска был корректно размонтирован. Эта бага лечится очень просто, надо лишь отключить параллельный запуск скриптов, т.е. в файле /etc/sysconfig/boot прописать RUN_PARALLEL="no" (у меня этот параметр был установлен в "yes").
С тех пор диски размонтируются корректно при выключении
Старый ноутбук и KDE4
Есть у меня древний ноутбук (Dell Latitude L110 с 512Mb RAM), на который я установил OpenSuSe 11.4. В качестве оконного менеджера я с дуру поставил KDE4, о чем в последствии сильно пожалел. KDE4 штука красивая, но жутко требовательная к ресурсам - сам оконный менеджер стартует секунд 30, и съедает практически всю доступную память, и все приложения начинают дико тормозить
Оптимизировать KDE до определенных пределов можно, но все же это полумеры. Наиболее радикальным решением была бы смена оконного менеджера на что-нибудь более легковесное. И я решил попробовать icewm lite вместо KDE.
В OpenSuSe 11.4 сменить оконный менеджер очень легко, сначала через Yast надо его установить (там буквально 2-3 пакета), и далее редактором /etc/sysconfig в секции Desktop => Window manager => DEFAULT_WM заменить на icewm.
Запускаю иксы и удивляюсь - оконный менеджер загрузился моментально. Выглядит он, мягко говоря, по-спартански (в стиле Windows 95), эффектов графических нет, и благодаря этому примерно 256 мегабайт памяти было свободно. Ура, казалось бы, долгожданный эффект достигнут.
Однако две вещи меня не устроили. По умолчанию язык у меня был английский, и возможности переключения на русский не было. На привычные мне сочетания клавиш (Ctrl+Shift) оконный менеджер никак не реагировал.
Эта проблема решилась очень просто. Я создал конфигурационный файл /etc/X11/xorg.conf.d/90-keytable.conf следующего содержания:
Section "InputClass"
Identifier "LocalKeyboard"
MatchIsKeyboard "on"
Option "XkbLayout" "us,ru"
Option "XkbVariant" ",winkeys"
Option "XkbOptions" "grp:ctrl_shift_toggle"
EndSectionИ со следующего запуска иксов у меня стала нормально работать русская раскладка клавиатуры с переключением между языками по нажатию Ctrl+Shift.
Вторая проблема - отсутствие звука. В KDE у меня звук регулировался приложением kmix, и я его решил добавить в автозагрузку icewm, чтобы привычными горячими клавишами его включать, выключать и регулировать громкость.
Для этого я создал файл /etc/icewm/startup со следующим содержимым:
#!/bin/sh kmix &
На файл добавил права на исполнение:
# chmod a+x /etc/icewm/startup
И все. После запуска звук легко регулируется горячими клавишами (правда, в трее его не видно - но это уже мелочь).
Еще статьи об OpenSuSe 11.4:
Ярлыки: Linux, Интересное, Полезное
четверг
OpenSuSe 11.4 и старый матричный принтер
Так случилось, что есть у меня чудо буржуйской техники - древний, но все еще вполне рабочий принтер Epson LX 300+, который служит мне верой и правдой уже много лет. Решил я его подружить с OpenSuSe 11.4 - и тут обнаружил, что во-первых, принтер не определяется системой; и во-вторых, драйверов под него нет.
Выяснилось, что для автоматического определения принтера на порту LPT, необходимо, чтобы были загружены следующие модули ядра:
- parport
- parport_pc
- lp
Почему-то модуль lp по умолчанию не загружается в OpenSuSe 11.4, так что этот модуль надо поставить в автозагрузку (например, можно через Yast: Редактор /etc/sysconfig => System => Kernel => MODULES_LOADED_ON_BOOT или любым другим удобным способом).
С драйверами хуже, родных драйверов именно для этого принтера в OpenSuSe нет. Но вместо них прекрасно подходит Epson Dot Matrix driver (OpenPrintingPPD/ghostscript/Epson-Dot_Matrix.epsonc.ppd.gz), который доступен через кнопку "Пакеты драйверов".
пятница
Управление ответом в php скрипте
Однажды мне понадобилось отправлять ответ пользователю в браузер до завершения работы php-скрипта. Известно, что даже такой простой скрипт не отпустит посетителя со страницы в течение 20 секунд:
<?php
header("Location: http://www.bloged.org",TRUE,301);
sleep(20);
?>
Т.е. пока скрипт не завершит свою работу, по умолчанию результат не уйдет в браузер и редиректа не случится. Однако, это ограничение можно обойти, например так:
<?php
set_time_limit(80);
header("Location: http://www.bloged.org",TRUE,301);
header("Content-Length: 0");
header("Connection: close");
flush();
error_log("Это пишется сразу в лог\n", 3, "/ramdisk/log.txt");
sleep(60);
error_log("А это через минуту\n", 3, "/ramdisk/log.txt");
?>
Несмотря на то, что пользователь уже перенаправлен в другое место, скрипт будет работать еще минуту и в логи запишет все, что надо.
Ярлыки: Полезное, Программирование