четвер, 23 грудня 2010 р.

Решаем проблему «Вне диапазона»


В первую очередь эта заметка будет полезна для Линукс-геймеров.Как я подозреваю, для них знакома такая ситуация: запускаем игру и экран тухнет, выводя табличку «Вне диапазона». После только Ctrl+Alt+Backspace помогает. Вот только борются они не с причиной проблемы, а с ее последствиями, кстати довольно нелепыми методами — правкой конфигов игры, заставляя ее запускается в оконном режиме, а потом настраивать правильные разрешения. Почему так происходит? Все дело в кривых драйверах, которые правят файл /etc/X11/xorg.conf. При нормальной настройке должны быть прописаны так называемые метамоды - разрешения экрана, в которые драйвер может переключать монитор. Игра обычно запускается  в полноэкранном режиме и с низким разрешением. Тут то драйвер не срабатывает, он просто не знает, поддерживает этот экран такой диапазон, или нет и от греха подальше отключает монитор. Метамоды отличаются в зависимости от размера экрана и соотношения сторон. Я приведу пример, как я решил эту проблему у себя на мониторе LG диагональю 17" и соотношением сторон 4:5. Итак, открываем от имени рута файл /etc/X11/xorg.conf в любимом редакторе и смотрим в секцию Section "Screen". Вот какие разрешения я туда добавил (предпоследняя строка):

Section "Screen"
    Identifier "screen1"
    Device "device1"
    Monitor "monitor1"
    
    Subsection "Display"
        Modes "nvidia-auto-select"
    EndSubsection

    Option "DPMS"

    #  Вот ниже я добавил 4 метамода разрешения экрана:
    Option "metamodes" "1280x1024_60 +0+0; 1024x768_60 +0+0; 800x600_60 +0+0; 640x480_60 +0+0"
EndSection
Теперь перезапустите Х-сервер и все должно работать!

P.S. Я думаю вы поняли смысл изложенного материала, а дальше настроите режимы так, как вам удобнее. Разрешения экрана, которые поддерживает ваш монитор, найдете в инструкции к нему. Удачи и делайте резервные копии почаще!

середа, 22 грудня 2010 р.

Консольные шрифты в Mandriva

Как бы не был X.org удобен и могуч, от Консоли мы никуда не денемся. И за ухоженной консолькой работать, может и не удобнее, но приятней — это точно. Давайте ее немного настроим — поменяем шрифт. Кстати, я имею ввиду именно Консоль, вызываемую клавишами Ctrl+Alt+F1 … Ctrl+Alt+F12, а не эмулятор терминала. Итак, мы за Mandriva, а именно за 2010.1.По умолчанию у Вас уже должен стоять пакет kbd, если нет — установим:
# urpmi kbd
В этом пакете собрано много утилит для работы с консолью, клавиатурой и консольными шрифтами. Вот именно шрифты нас сегодня и интересуют. По-умолчанию они хранятся здесь: /usr/lib/kbd/consolefonts/. Есть три типа файлов — с расширением *.cp.gz, *.psf.gz и *.psfu.gz. Что это за файлы? Давайте их распакуем и пропустим через программу file, она то точно скажет:
[keed'0'@mandrivka tmp]$ file 161.cp
161.cp: DOS code page font data (from Linux?)
[keed'0'@mandrivka tmp]$ file GohaClassic-16.psfu
GohaClassic-16.psfu: Linux/i386 PC Screen Font data, 512 characters, Unicode directory, 8x16
На счет первого не все мне понятно, а вот на счет второго файла — все ясно: шрифт на ЛИНУКС, содержащий 512 символов размером 8х16 в формате Юникод. Мы используем кириллические символы, поэтому берем  шрифты, в именах которых присутствуют такие буквосочетания, как Uni, alt и/или Cyr. Меня заинтересовал шрифт alt-sans-8x16.psf.gz. На нем и потренируемся. Открываем конфигурационный файл /etc/sysconfig/i18n, находим там строку SYSFONT=UniCyr_8x16 и вписываем туда нужный шрифт, предварительно убрав из его названия «.psf.gz». В итоге у нас  должно получится примерно следующее:
LC_TELEPHONE=uk_UA.UTF-8
LC_CTYPE=uk_UA.UTF-8
LANGUAGE=uk_UA.UTF-8:uk
LC_MONETARY=uk_UA.UTF-8
LC_ADDRESS=uk_UA.UTF-8
LC_COLLATE=uk_UA.UTF-8
LC_PAPER=uk_UA.UTF-8
LC_NAME=uk_UA.UTF-8
LC_NUMERIC=uk_UA.UTF-8
SYSFONT=alt-sans-8x16
LC_MEASUREMENT=uk_UA.UTF-8
LC_TIME=uk_UA.UTF-8
LANG=uk_UA.UTF-8
LC_IDENTIFICATION=uk_UA.UTF-8
LC_MESSAGES=uk_UA.UTF-8
Давайте опробуем его. Переключаемся на виртуальную консоль Ctrl+Alt+F1, логинимся как root и даем команду setfont. Не сработало? Жмем Ctrl+D и перелогинимся. Теперь новый шрифт должен заработать!
P.S. Эта заметка, конечно же, справедлива и для Mandriva-based дистрибьютивов, таких как PCLinuxOS, Gamma Linux, Unity и тому подобные.

вівторок, 21 грудня 2010 р.

Предложение по введению Свободного программного обеспечения в образовательные учреждения Украины

Речь пойдет о введении в оборот свободного программного обеспечения (далее "свободного ПО"), которое имеет ряд преимуществ перед дорогостоящим коммерческим ПО. Почти во всех школах, где я бывал, стоят старые аппараты, которые уже и рады бы списать, но замены найти им не могут - не хватает финансирования. При стоимости этих компьютеров в 800-1500 грн. в лучшем случае, наши образовательные стандарты еще требуют установки дорогого "софта", приобретение которого может позволить себе лишь малая часть школ. Теперь подсчитаем стоимость лицензионного коммерческого ПО, которое должно быть установлено на стандартном рабочем компьютере школьника. Привожу их цену по последним данным1:
  1. Microsoft Windows® 7 Home Basic Ru - 960 грн.;
  2. Microsoft Office® 2007 - 740 грн.;
  3. Kaspersky Antivirus® v10 - 350 грн.
Итого - 2050 грн. Хотя цена должна быть еще больше, т.к. обычно ставят и дополнительное платное ПО, для удобства подсчета будем считать по минимальной округленной цене ~2000 грн. В итоге один компьютер по стоимости получается 1500 + 2000 = 3500 грн. Для школ это обычно непосильная ноша, и ее руководству не остается ничего другого, как ставить ворованное ПО и жить в страхе проверки. А это, как известно, является преступлением и влечет за собой наказание в виде штрафа или лишение свободы.
Однако у меня есть план, как всего этого можно избежать - использовать свободное ПО. Конечно же, я не претендую на оригинальность идеи, просто выложу на "бумаге" ход своих мыслей. Сначала дадим определение СПО, которое будем использовать в данном документе. Свободное ПО - это программное обеспечение, распространяемое совершенно бесплатно (его даже запрещено продавать!), с открытыми исходными кодами и под специальной свободной лицензией2. В последней РАЗРЕШЕНО копировать и распространять продукцию в неограниченном количестве, а также самому править это ПО. Под самим термином «Свободное ПО» тут я понимаю операционную систему Linux и тысячи других бесплатных программ для ее ? OpenOffice, The GIMP, Inkscape, Free Pascal и многие другие, которые идеально подходят неподготовленным школьникам. Linux — это свободная UNIX-подобная операционная система. Распространяется под лицензией GNU GPL. Разрабатывается с 1991 года, используя принципы UNIX/POSIX, которые вот уже 40 лет служат стандартами для компьютерщиков. За почти как 20-ти летний период Линукс прошел путь от статуса «ОС для гениев» до «ОС для простого человека», с каждым годом набирая мощь и простоту использования. И сейчас уже можно с уверенностью сказать, что Линукс уже готов для использования дома, учебных учреждениях, малых и средних предприятиях. Если кто то думает иначе, осмелюсь сказать, что за 4 года учебы в университете я использовал именно Линукс — печатал рефераты, делал курсовые проекты, чертежи и сложные вычисления. И этот документ тоже набирался под Линуксом. Многие школьники, однако, сейчас не владеют компьютерной грамотой, поэтому все-равно, под чем учится работать — под Линуксом или Windows®.
Линукс сейчас используется все чаще как дома, так и на работе. Многие фирмы выступают в поддержку Линукса и OpenSource технологий: Novell, IBM, Red Hat, Google, Sun Microsystems, Oracle, Nokia и т.д. И это не просто какие-то мелкие корпорации-однодневки, которые завтра исчезнут и про них больше никто не вспомнит. Это гиганты IT-промышленности, десятки лет возглавляющие рынок. Они вкладывают крупные суммы в развитие этой ОС, и вряд ли их выбор был неверен и необдуман. Что бы доказать правоту своих слов, приведу факты. Посмотрим на таблицу, в которую занесены системы, установленные на 500 мощнейших компьютерах мира 3:
ОС Linux HP-UX MacOS X Solaris UNICOS Super-UX AIX Tru64 UNIX Windows 2003 Всего
Число компьютеров 431 15 3 4 3 4 36 2 2 500
Доля, в % 86,2 3 0,6 0,8 0,6 0,8 7,2 0,4 0,4 100
Доля Линукса тут — более 86%. И это не обычные домашние компьютеры, а самые-самые мощные, обслуживанием которых занимаются лучшие мировые профессионалы. И вряд ли они сделали неправильный выбор. Тут бесплатность Линукса для них не весомый аргумент, когда стоимоссть оборудования составляет сотни тысяч, а может и миллионы долларов.
В итоге мы получаем лицензионно чистую и совершенно бесплатную продукцию. Если на школьные компьютеры ставить Свободное ПО, то с одного рабочего места мы экономим примерно 2000 грн, а с одного класса, состоящего из 10 машин - 20 000 грн. Это весьма значительная для школы сумма, которую лучше потратить, например, на ремонт, перекрытие протекающей крыши, подключение Internet, приобретении дополнительной техники или литературы, а не на спонсирование американских корпораций-мультимиллиардеров.
Итак, давайте рассмотрим основные положительные стороны этого предложения.

Опишем каждый пункт по-подробнее:
  1. Значительная экономия. Комментарии, думаю, не требуются.
  2. Резкое снижение уровня пиратства из-за возможности легального распространения свободного ПО. А это, в свою очередь, и в какой-то степени снижает уровень преступности в сфере информационных технологий.
  3. Помощь всемирному антимонопольному комитету. Он уже очень много лет борется с корпорацией Microsoft, которая крепкой хваткой держит под контролем свободное и не только ПО, агрессивно пропагандируя свои системы и программы. Комитету это будет большой поддержкой.
  4. Возвращение в службу старых слабых компьютеров. Так как Linux может запустится и успешно работать даже на очень старых компьютерах уровня 1995-го года (например, CPU i486 + 32MB RAM), их можно возвратить обратно на службу вместо того, что бы выбросить. Это тоже экономия средств.
  5. Возможность сконцентрировать производство ПО в Украине и не зависеть от США. Так как Линукс не имеет "гражданства" и его можно изменять любому человеку, ничего не мешает заняться разработкой собственного, украинского Линукса, сделанного специально для наших пользователей и образовательных нужд.
  6. Регулярный и быстрый выход обновлений. Обычно новая версия Линукса выходит каждые пол года, поэтому всегда можно бесплатно обновится. В отличии от Windows, где что бы поставить свежую систему, нужно выложить трехзначную сумму гривен. А денег нет, вот многие люди и до сих пор живут на Windows XP 2001-го года выпуска.
  7. Линукс прост и удобен. Его использование на уровне пользователя не требует каких- нибудь специальных знаний. Линукс прост в использовании и настройке.
У такого подхода, конечно же, есть и свои минусы. Во-первых, нужно перерабатывать учебную программу по информатике, распечатывать учебники. Во-вторых, учителя должны пройти специальные курсы или прочесть специальную литературу. Это не должно вызвать особого затруднения, многие учителя уже сталкивались в работе с Линуксом. Я знаю нескольких школьников лет 14-16-ти, которые Линукс знают лучше некоторых знакомых программистов. Ну а если дети освоили...
На линуксе в Украине, и в частности в моем городе Кривой Рог, уже работают:
  1. Приват-Банк. Могли ли руководители крупнейшего украинского банка возложить такую ответственность на слабую и не надежную систему? Нет, конечно же!
  2. Криворожская 11-ая электронная библиотека (9 компьютеров). Тут Линукс я ставил с целью эксперимента - хотел посмотреть, как обычные люди будут вести себя с абсолютно незнакомой для них системой. Опыт удался, посетители довольны.
  3. Криворожские библиотеки тоже работают на Линуксе, и тоже с моей помощью.
О том, какое ПО может входить в состав Свободного обучающего комплекта (СОК), в рамки этого документа не входит и будет рассмотрено отдельно.
Прошу чиновников рассмотреть это предложение. Мне очень важно Ваше мнение. Главная помеха — это наши образовательные стандарты. Именно они затрудняют использование свободного ПО в Украине. Именно они заставляют людей идти на преступления. Прошу, по возможности, сделать образование наших школьников более «свободным». Или, хотя бы, смешанным — дать возможность директорам самим выбирать тот путь, по которому пойдет их школа. Можно для начала применить данный план в качестве эксперимента в нескольких школах. В зависимости от полученных результатов будем определять дальнейшие действия. Я всегда готов помогать, до конца вкладывать свои силы в поддержку этого проекта и бороться за права свободного ПО. Одному это сделать сложно, поэтому прошу у Вас помощи. Тем более, лет через 5, а может и раньше, Украина все-же перейдет на свободное ПО. Лучше это сделать сейчас, стать одними из первых в своем роде. Ведь правительство Германии уже использует OpenOffice (входящий в состав многих версий Линукса) для обмена документацией. Российская Федерация, Франция, Куба, Новая Зеландия, Мальта и Китай уже готовят масштабные планы по внедрению OpenSource технологий. Сделаем так, что бы Украина тоже в этом плане не отставала!

Сноски:
1. Магазин «Comfy» состоянием на 06 марта 2010г.
2. Обычно это GNU GPL, BSD, Mozilla Public License, Apache Public License и тому подобные.
3. http://www.top500.org/stats/list/29/os

понеділок, 20 грудня 2010 р.

Вычисляем число π через задницу

Вот вчера нашел довольно интересный код на языке C. Посмотрел на него, и вообще ничего не понял. Погуглил - как оказалось, никто не понял, как этот код работает:) Хотя вот общий механизм - в теле функции F_OO() содержится «рисованный» круг. А как мы знаем из геометрии, число π вычесляется по размеру круга. Вот и рассчитывается по этому кругу число π =/. И чем больше этот круг, тем точнее результат! Вот исходник - pi.c:
/* (c) Brian Westley, 1988 */
#define _ 0xF<00? --F<00||--F-OO--:-F<00||--F-OO--;
int F=00,OO=00;
main(){F_OO();printf("%1.3f\n",4.*-F/OO/OO);}F_OO()
{
         _-_-_-_
     _-_-_-_-_-_-_-_-_
   _-_-_-_-_-_-_-_-_-_-_-_
  _-_-_-_-_-_-_-_-_-_-_-_-_-_
 _-_-_-_-_-_-_-_-_-_-_-_-_-_-_
 _-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
 _-_-_-_-_-_-_-_-_-_-_-_-_-_-_
 _-_-_-_-_-_-_-_-_-_-_-_-_-_-_
  _-_-_-_-_-_-_-_-_-_-_-_-_-_
   _-_-_-_-_-_-_-_-_-_-_-_
      _-_-_-_-_-_-_-_
         _-_-_-_
}
Теперь скомпилируем и запустим код:
[keed'0'@mandrivka ~]$ gcc -o pi pi.c
pi.c: In function ‘main’:
pi.c:4: warning: incompatible implicit declaration of built-in function 'printf'
[keed'0'@mandrivka ~]$ ./pi
3.141
[keed'0'@mandrivka ~]$
Как видим, он собирается и запускается нормально! Оно работает!
Мои познания языка C не велики, поэтому, если кто-то все-таки
разберет - напишите в комменты!