Давно ничего не писал, творческий кризис своего рода был, но, думаю, уже кончился :)
В скором времени выхожу на новую работу, в связи с этим будет много публикаций по лезвийным http серверам (nginx, lighthttpd и проч), по MVC (в частности Catalyst {Perl}, RoR {Ruby}) и прочей мистической атрибутике крупных web разработок. С линуксом на пользовательском уровне уже наигрался вдоволь, так что публикации низкого-среднего уровня сложности уже вряд ли можно будет наблюдать в моём блоге, ибо решения уже решённых задач не так интересны :)
По учёбе начинаю заниматься научной работой по аппроксимации случайных величин, так что может и по этой теме будут публикации.
Искренне Ваш, Одинцов Павел.
Sunday, 23 December 2007
Tuesday, 27 November 2007
Небольшая подборка ссылок на тему разработки под ядро Линукс
Linux Loadable Kernel Module HOWTO
The Linux Kernel Module Programming Guide
Linux Loadable Kernel Module HOWTO
New Kernel Hacking HOWTO/Subsystems/Exceptions and Interrupts Handling
KernelHacking-HOWTO/Debugging Kernel
Linux Drivers
New Kernel Hacking HOWTO
KernelHacking
Введение в написание модулей ядра Linux.
Отладка:
http://oss.sgi.com/projects/kdb/faq.html
http://linuxdevices.com/articles/AT3761062961.html#resources
http://www.ddj.com/linux-open-source/184406318?pgno=1
http://www.blogger.com/post-edit.g?blogID=1386140445493682484&postID=4256783420892010761
The Linux Kernel Module Programming Guide
Linux Loadable Kernel Module HOWTO
New Kernel Hacking HOWTO/Subsystems/Exceptions and Interrupts Handling
KernelHacking-HOWTO/Debugging Kernel
Linux Drivers
New Kernel Hacking HOWTO
KernelHacking
Введение в написание модулей ядра Linux.
Отладка:
http://oss.sgi.com/projects/kdb/faq.html
http://linuxdevices.com/articles/AT3761062961.html#resources
http://www.ddj.com/linux-open-source/184406318?pgno=1
http://www.blogger.com/post-edit.g?blogID=1386140445493682484&postID=4256783420892010761
Sunday, 18 November 2007
Джаббер, пошаговое руководство по настройке клиента Psi версии 0.11 в ОС Windows
- Для начала переходим на страницу загрузки официального сайта PSI: http://psi-im.org/download/, там выбираем "Official Psi 0.11 Downloads Microsoft Windows", после щелчка на указанной ссылке нас перебросит на страницу загрузки и закачка начнётся автоматически (если этого не произошло, нажмите там ссылку"this direct link")
- После окончания загрузки клиента, устанавливаем его, тут всё тривиально и никаких специализированных настроек не требуется.
- При первом запуске нам будет предложено зарегистрировать новый (Register New account) или использовать существующий (use existing account) аккаунт джаббера, выбираем первый пункт, т.к. мы регистрируемся впервые.
- Перед нами появляется вот такое окно:
- В соответствующее поле вводим имя сервера (name of server), на котором будем регистрироваться.
- Поле "encrypt connection" управляет шифрованием данных при работе с сервером (это делает задачу перехвата вашей личной переписки почти неразрешимой). Здесь можно выставить значение либо "Always" (т.е. шифровать всегда), либо When Available (когда доступно). Я бы советовал поставить Always, дабы не допустить открытой передачи.
- *Прокси* Если в Вашей сети используется прокси сервер, то щёлкните кнопку Edit, которая справа от поля выбора прокси сервера. После этого пред нами предстанет следующего вида окошко:
- *Прокси* После этого нажимаем кнопку New и появляется новый пункт для ввода информации о нашем прокси сервере. Требуется ввести его имя (Name), хост (в моём случае 192.168.155.2), порт (чаще всего 3128) и выбрать его тип (чаще всего HTTP "Connect")
После этого жмём кнопку Save. - Теперь выбираем наш прокси из списка на главной странице:
- Теперь будет выдано сообщение о том, что сертификат нашего джаббер сервера является "самоподписным", т.е. право довериться или нет данному серверу возлагается исключительно на нас (а не на сторонний сервер сертификации) самих. Т.к. джаббер.ру является очень известным и надёжным сервером, то мы с чистой совестью можем проигнорировать это предупреждение нажатием кнопки "Continue".
- Вот мы и добрались до регистрации аккаунта, тут нужно ввести требуемое имя (name@jabber.ru, где name и есть наше имя в джаббере) и пароль для регистрации в системе:
- А вот это будет выдано, если желаемое имя уже зарегистрировано в системе (в этом случае Вам придётся выбрать другой ник):
- Поздравляю! Вы стали пользователем джаббера!
- Вот общий вид окна PSI:
- А при щелчке на панели выбора статуса (жёлтая звёздочка) показывается вот такое меню:
- Выбираем "Online", снова вылетает сообщение о том, что сертификат самоподписан, выбираем "Continue" и мы в Сети!
- Сразу после подключения Вам будет предложено заполнить информацию о себе (после заполнения нажмите Publish, это отправит все указанные данные на сервер) %)
- Можно начинать общаться!
- А для теста можете добавить меня в свой Ростер ("Roaster" или иными словами, "Контакт Лист"), для этого щёлкните по кнопке, которая располагается внизу слева (на ней нарисована буква "Пси"), потом выбираем Add Contact (добавить контакт) и там вводим мой JID (JID, он же Jabber ID - идентификатор в системе), который имеет вот такой вид nrg[собака]jabber.snc.ru и жмём Add. Потом дважды щёлкаем по моему JID в списке и отправляем сообщение %)))
- Всем спасибо за внимание и удачного использования замечательной сети джаббер!
C уважением, Одинцов Павел aka энерджи.
Создание сервера для раздачи инета в локалку на базе Opensuse 10.3
Материальная база:
Далее перезапускаем Suse Firewall2 через Yast2 и наблюдаем через команду tail -f /var/log/squid/access.log ,что теперь все запросы на указанные порты перекидываются на прокси :)
Чуть позже дополню все скриншотами и выправлю текст.
Благодарность, критика, вопросы по теме принимаются и приветствуются за исключением случаев, когда собеседник хочет, чтобы все сделали за него ("быстро и шоп работало") и ведёт себя бестактно, тогда в помощи я буду вынужден отказать, т.к. ценю своё время.
Автор: Одинцов Павел ака энерджи. Ноября 2007г. Общее время написания статьи: 1 час.
- Имеем две машины на базе OpenSuSe Linux 10.3.
- В каждой машине имеем по сетевому интерфейсу (в моём случае он ещё и беспроводной, но это картины не меняет) eth0.
- Первый компьютер, далее именуемый как "сервер" подключен к провайдеру ДомРу (замените на имя Вашего провайдера) через PPPoE (IP адрес вида 10.x.x.x выдаётся динамически, но каждый раз один и тот же, адреса DNS серверов также получаются при подключении) и в моём случае имеет внутренний IP 192.168.155.2 (в Вашем случае пропишите ему адрес 192.168.0.1, так будет привычнее) .
- Второй компьютер, далее именуемый как "клиент" соединён сетью с первым через свитч (с серверной стороны и ДомРу и локалка подключены через один интерфейс) и имеет внутренний IP 192.168.155.1 (Вы же выберите лучше 192.168.0.2)
- Обеспечить прозрачный доступ в интернет через NAT для клиентской машины
- Обеспечить поддержку внутреннего ДНС сервера в качестве ретранслятора (далее поймёте зачем это)
- IP адрес яндекса 213.180.204.8
- IP адрес гугла 64.233.187.99
- Утилита "ping", предназначенная для проверки сетевого соединения между узлами
- DNS сервер bind для удобной работы с DNS
- Прозрачный прокси на squid (факультативно), позволяющий кешировать весь хттп трафик для его экономии и увеличения скорости доступа к ресурсам.
- Suse Firewall 2, обертка для Iptables, предназначенная для удобного конфигурирования фаервола.
- Немного бутербродов и чая \ кофе, т.к. процесс не очень-то и быстрый
nrg@dell:~> ping google.com PING google.com (72.14.207.99) 56(84) bytes of data. 64 bytes from eh-in-f99.google.com (72.14.207.99): icmp_seq=1 ttl=244 time=171 ms 64 bytes from eh-in-f99.google.com (72.14.207.99): icmp_seq=2 ttl=244 time=173 ms 64 bytes from eh-in-f99.google.com (72.14.207.99): icmp_seq=3 ttl=244 time=184 ms 64 bytes from eh-in-f99.google.com (72.14.207.99): icmp_seq=4 ttl=244 time=172 ms 64 bytes from eh-in-f99.google.com (72.14.207.99): icmp_seq=5 ttl=244 time=170 msТо все отлично, можно идти дальше. Далее проверим соединение между машинами наберём на сервере команду ping 192.168.155.1, а на клиенте соответственно ping 192.168.155.2 и в ответ должны посыпаться ответы, указанные выше. Насчёт IP, как я уже сказал выше, используейте 192.168.0.1 вместо 192.168.155.2 и 192.168.0.1 вместо 192.168.155.1. Сеть работоспособна. Шаг первый, настроим трансляцию пакетов с Локальной сети в Интернет.
- Открываем Yast2 -> "Пользователи и безопасность" -> "Брандмауэр".
- Переходим на вкладку "Интерфейсы", выбираем там наше ДСЛ соединение (так зовётся PPPoE), щёлкаем кнопку изменить и выбираем "Внешняя зона", а для сетевой карты, подключённой к Локальной Сети (далее "ЛВС"), выбираем соответственно "Внутренняя зона"
- Переходим на вкладку "Трансляция сетевых адресов", в верху ставим галочку "Трансляция сетевых адресов".
- Далее щёлкаем кнопку "Добавить" и вводим следующее: сеть источника 192.168.155.0/24, протокол TCP, в полях "Требуемый порт" и "Перенаправление в порт" прописываем нули, требуемый IP вводим "0.0.0.0/0", т.е. любой. А в поле "Перенаправить в транслированный IP" наш IP, который выдаётся для dsl соединения (ifconfig dsl0 и смотрите поле inet addr:). В моём случае это адрес вида 10.65.0.x.
- Применяем настройки Брандмауэра.
- Переходим к клиентской машине.
- Ставим через Yast2 пакет bind и пакета для конфигурирования Бинда через yast2 (вбейте в поиске bind он будет показан)
- Открываем Yast2 -> "Сетевые службы" -> "Сервер DNS"
- Ставим галочку "PPP Демон устанавливает направление запроса", это означает, что если наш локальный ДНС сервер не обнаружит в своей базе IP адреса требуемого домена, то он попросит его у ДНС провайдера, а в случае указанной конфигурации он автоматически определит ДНС провайдера и будет использовать его. Щелкаем далее.
- ничего не трогаем на странице "Установка DNS сервера: DNS зоны" и щелкаем далее.
- В поле "Запуск службы" ставим галочку "При загрузке системы" и жмем завершить, тем самым применяя настройки.
http_access allow localhost # And finally deny all other access to this proxy http_access deny allИ изменяем на следующее следующее:
acl our_networks src 192.168.155.0/24 http_access allow our_networks http_access allow localhost # And finally deny all other access to this proxy http_access deny allТем самым мы как раз и добавили нашу подсеть в список допустимых и перезапускаем squid командой service squid restart дабы применить произведённые настройки. И, наконец, укажем SuSe Firewall`у, что для портов 80 и 8080 нужно использовать прокси. Для этого открываем /etc/sysconfig/SuSEfirewall2 Там ищем строку вида FW_REDIRECT="" и заменяем её на
FW_REDIRECT="192.168.155.0/24,0/0,tcp,80,3128"
Далее перезапускаем Suse Firewall2 через Yast2 и наблюдаем через команду tail -f /var/log/squid/access.log ,что теперь все запросы на указанные порты перекидываются на прокси :)
Чуть позже дополню все скриншотами и выправлю текст.
Благодарность, критика, вопросы по теме принимаются и приветствуются за исключением случаев, когда собеседник хочет, чтобы все сделали за него ("быстро и шоп работало") и ведёт себя бестактно, тогда в помощи я буду вынужден отказать, т.к. ценю своё время.
Автор: Одинцов Павел ака энерджи. Ноября 2007г. Общее время написания статьи: 1 час.
Monday, 5 November 2007
How-to: Джаббер - сеть мгновенного обмена сообщениями. Введение в предмет.
Ну вот и пришла пора немного поговорить не только об операционных системах семейства Linux, но и об ОС компании Майкрософт, т.к. инструкции будет предоставлены для обоих платформ. Цель данной серии статей достаточно проста, хочется написать добротную инструкцию по настройке джаббера для обычных пользователей, т.к. народ интересуется этой системой обмена сообщениями очень живо, но каждому рассказывать, что это такое и почему это хорошо, никакого времени не хватит.
Для начала небольшой экскурс. Так что же такое джаббер? Проще говоря - это сеть мгновенного обмена сообщениями, такая же как ICQ, Майл.Агент, MSN и прочие. Так зачем нам этот непонятный джаббер, если есть другие протоколы? У джаббера есть множество преимуществ, среди которых следует отметить следующие:
1) Открытость протокола (а этим почти никто из вышеперечисленных похвастаться не может), что позволяет каждому ознакомиться с принципами работы и даже написать свой собственный клиент.
2) Повышенная безопасность (вы всегда можете включить шифрование вашего трафика по протоколу ssl, что исключает перехват ваших переговоров злоумышленником или недобросовестным системным администратором вашей сети).
2) Децентрализованность (ух ты, какое сложное слово!), а если говорить проще, то серверов джаббера не один, и не 10, и даже не 100, а намного больше, что объясняется довольно просто - любой желающий при соответствующей квалификации может сделать свой собственный сервер джаббера и разрешить пользователям на нем регистрироваться (а может и не разрешить, если это, допустим, корпоративный чат). "Ну подумаешь, много серверов и открытый протокол что из этого? " - можете возразить Вы и будете совершенно правы. Но давайте рассмотрим довольно простую ситуацию, которая имела место в феврале прошлого года, когда корпорация Америка Онлайн (владелец сети ICQ) изменила протокол передачи сообщений в своей сети, в результате чего пользователи многих "альтернативных" клиентов (Miranda-im.com, например) данной сети на протяжении одного-двух дней не могли войти в сеть.
А если вспомнить, что уже многие фирмы ведут коммерческую деятельность посредством ICQ, то убытки от пары дней простоя тоже можно примерно оценить. В случае с джаббером такое в принципе невозможно, т.к. протокол уже устоялся и его изменения не планируются. Далее рассмотрим уже гипотетическую ситуацию (несмотря на то, что она вымышленная, не стоит отрицать и такой вариант), что владелец ICQ собирается закрыть сеть, тем самым лишая пользователей возможности общаться. В случае с джаббером такое опять же невозможно, если даже ваш сервер закрылся или сломался (но полностью вся сеть не сломается никогда!), Вы всегда можете воспользоваться другим сервером.
4) Довольно широкий выбор клиентов для данной сети, среди которых: PSI, Kopete, QIP Infium, Miranda c jabber, Bombus (для сотовых телефонов на платформе J2ME)
5) Возможность работы с другими сетями непосредственно через джаббер используя т.н. механизм транспортов (даже если Ваш jabber сервер не поддерживает определённый транспорт, то Вы всегда можете воспользоваться транспортом с другого jabber сервера, протокол позволяет и это), который предоставляет возможность общаться с клиентами из других сетей (например - icq, mail agent, yahoo, msn и даже smtp и rss) через привычный интерфейс своего любимого джаббер клиента.
6) Расширяемость. Этот пункт может быть и не будет интересен для обычных пользователей, но для руководителей ИТ отделов и администраторов крупных фирм он будет предельно интересен, т.к. обычный протокол передачи данных и сообщений может быть с лёгкостью расширен через стандартный интерфейс посредством введения нового пространства имён, что открывает неограниченные возможность для внедрения специфических для конкретного предприятия функций (например передача банковских котировок в реальном времени).
Автор: Одинцов Павел. Ноябрь 2007.
Для начала небольшой экскурс. Так что же такое джаббер? Проще говоря - это сеть мгновенного обмена сообщениями, такая же как ICQ, Майл.Агент, MSN и прочие. Так зачем нам этот непонятный джаббер, если есть другие протоколы? У джаббера есть множество преимуществ, среди которых следует отметить следующие:
1) Открытость протокола (а этим почти никто из вышеперечисленных похвастаться не может), что позволяет каждому ознакомиться с принципами работы и даже написать свой собственный клиент.
2) Повышенная безопасность (вы всегда можете включить шифрование вашего трафика по протоколу ssl, что исключает перехват ваших переговоров злоумышленником или недобросовестным системным администратором вашей сети).
2) Децентрализованность (ух ты, какое сложное слово!), а если говорить проще, то серверов джаббера не один, и не 10, и даже не 100, а намного больше, что объясняется довольно просто - любой желающий при соответствующей квалификации может сделать свой собственный сервер джаббера и разрешить пользователям на нем регистрироваться (а может и не разрешить, если это, допустим, корпоративный чат). "Ну подумаешь, много серверов и открытый протокол что из этого? " - можете возразить Вы и будете совершенно правы. Но давайте рассмотрим довольно простую ситуацию, которая имела место в феврале прошлого года, когда корпорация Америка Онлайн (владелец сети ICQ) изменила протокол передачи сообщений в своей сети, в результате чего пользователи многих "альтернативных" клиентов (Miranda-im.com, например) данной сети на протяжении одного-двух дней не могли войти в сеть.
А если вспомнить, что уже многие фирмы ведут коммерческую деятельность посредством ICQ, то убытки от пары дней простоя тоже можно примерно оценить. В случае с джаббером такое в принципе невозможно, т.к. протокол уже устоялся и его изменения не планируются. Далее рассмотрим уже гипотетическую ситуацию (несмотря на то, что она вымышленная, не стоит отрицать и такой вариант), что владелец ICQ собирается закрыть сеть, тем самым лишая пользователей возможности общаться. В случае с джаббером такое опять же невозможно, если даже ваш сервер закрылся или сломался (но полностью вся сеть не сломается никогда!), Вы всегда можете воспользоваться другим сервером.
4) Довольно широкий выбор клиентов для данной сети, среди которых: PSI, Kopete, QIP Infium, Miranda c jabber, Bombus (для сотовых телефонов на платформе J2ME)
5) Возможность работы с другими сетями непосредственно через джаббер используя т.н. механизм транспортов (даже если Ваш jabber сервер не поддерживает определённый транспорт, то Вы всегда можете воспользоваться транспортом с другого jabber сервера, протокол позволяет и это), который предоставляет возможность общаться с клиентами из других сетей (например - icq, mail agent, yahoo, msn и даже smtp и rss) через привычный интерфейс своего любимого джаббер клиента.
6) Расширяемость. Этот пункт может быть и не будет интересен для обычных пользователей, но для руководителей ИТ отделов и администраторов крупных фирм он будет предельно интересен, т.к. обычный протокол передачи данных и сообщений может быть с лёгкостью расширен через стандартный интерфейс посредством введения нового пространства имён, что открывает неограниченные возможность для внедрения специфических для конкретного предприятия функций (например передача банковских котировок в реальном времени).
Автор: Одинцов Павел. Ноябрь 2007.
Saturday, 3 November 2007
How-to: Установка OpenSuSe 10.3 без повреждения MS Windows
Мне довольно часто спрашивают, как безболезненно для Виндовса поставить Сусе, так что пора бы уже на данный вопрос ответить развернуто. В установке есть некоторая специфика, которую я постараюсь изложить в данном посте.
Если у вас остались вопросы, милости прошу nrg [собака]jabber.snc.ru :)
- Ну, во-первых, о расположении и размерах разделов. Лично я бы советовал отдать Сусе гигов 15 места на диске, из них 200 мегабайт под /boot раздел(отсюда будет осуществлять загрузка), 8 гигов под / (тут будет система) и 6 под /home (здесь будут пользовательские данные), в дальнейшем можно будет безболезненно переформатировать остальные разделы в ext3 и использовать их в Линуксе.
- При первом знакомстве с линуксом лучшим решением будет отрезать (тем же партишен меджиком) от жёсткого диска гигов 15 в конце и оставить их пустыми (строго говоря, это можно сделать и из инсталлятора Сусе, но т.к. мы только начинаем знакомство с линуксом, лучше сделать привычным для себя путём).
- Потом при установке Суси щёлкнуть на последнем экране по пункту "разбиение" и выбрать "ручное разбиение", а потом "пользовательское разбиение".
- Там уже создать указанные мной разделы с указанным размером (в качестве файловой системы настоятельно рекомендую выбрать ext3, т.к. она является наиболее оптимальной для среднестатистической настольной системы), а в пунктах точка монтирования указать соответственно /boot, / и /home.
- Всё остальное (поиск раздела с MS Windows и добавление его в загрузчик) сделает установщик Суси.
Если у вас остались вопросы, милости прошу nrg [собака]jabber.snc.ru :)
How-to: настройка PPPoE (ДомРу) в OpenSuse 10.3
- Открываем конфигурационный центр Yast2 (yast2 в консоли), вводим пароль рута, указанный при установке.
- Слева выбираем вкладку сетевые устройства.
- Справа выбираем пункт DSL (не смущайтесь названию, это подходит не только для ADSL, но и для PPPoE)
- Далее создаём подключение, тут все довольно прозрачно. Выбираем сетевую карту, к которой подключён кабель от провадера, потом добавляем нового провайдера в соответствующем пункте меню и вводим свои логин и пароль (только убираем галочку "всегда запрашивать пароль"), других настроек производить не нужно (там много всяких галочек - их не трогайте) !
- После того, как соединение создано, ищем значок knetworkmanager (нечто прямоугольное и белое или синяя лесенка в случае беспроводного соединения) в системной области, жмём правой кнопкой мыши и выбираем пункт "Коммутируемые подключения", далее выбираем нашего провайдера и соединяемся :)
- Если не нашли значок, значит выбран метод управления сетевыми соединениями через ifup нужно это исправить.
- Заходим в подпункт Сетевых устройств "Сетевая карта" и во вкладке "общие параметры" выбираем "Управляемый пользователем knetworkmanager" и применяем, значок должен появиться.
- Соединяемся и пользуем все блага Интернета %)
Monday, 29 October 2007
Сборка Live CD на основе OpenSUSE Linux 10.3 и ядра с linux-live.org
Сборка Live CD на основе OpenSUSE Linux 10.3 и ядра с linux-live.org
Ну так вот, встала такая необходимость - до понедельника собрать загружаемый Livecd с Линуксом и некоторым набором своего софта.
Давно на примете было статейка: http://mydebianblog.blogspot.com/2007/09/1-livecd.html , по которой мы и будем собирать наш LiveCd, только я буду поподробнее описывать сам процесс установки линукс-системы в эмулятор qemu.
Собирать дистрибутив мы будем на основе OpenSUSE Linux 2007.0, а не на основе Дебияна, что объяснить довольно просто - Сусю я знаю немного получше (т.к. это моя рабочая ОС). Собираться все это будет под 32 разрядной SuSe Linux 10.3 (в итоге первая часть была собрана на 32 разрядной машине под 10.3, а сам дистрибутив уже под 64 разрядной 10.2, вот так вота), но лайвсиди будет 32 разрядный %)
Для начала небольшой ликбез по qemu: http://phpsuxx.blogspot.com/2007/09/opensu...c-qemu-kvm.html и http://phpsuxx.blogspot.com/2007/09/opensu...emu-kvm_04.html.
При сборке дистрибутива будем придерживаться т.н. Linux-way, то есть не будем изобретать велосипед и соберём все на основе уже готовых и достаточно хорошо отлаженных компонентов.
Для начала сольём весь необходимый софт:
Ну так вот, встала такая необходимость - до понедельника собрать загружаемый Livecd с Линуксом и некоторым набором своего софта.
Давно на примете было статейка: http://mydebianblog.blogspot.com/2007/09/1-livecd.html , по которой мы и будем собирать наш LiveCd, только я буду поподробнее описывать сам процесс установки линукс-системы в эмулятор qemu.
Собирать дистрибутив мы будем на основе OpenSUSE Linux 2007.0, а не на основе Дебияна, что объяснить довольно просто - Сусю я знаю немного получше (т.к. это моя рабочая ОС). Собираться все это будет под 32 разрядной SuSe Linux 10.3 (в итоге первая часть была собрана на 32 разрядной машине под 10.3, а сам дистрибутив уже под 64 разрядной 10.2, вот так вота), но лайвсиди будет 32 разрядный %)
Для начала небольшой ликбез по qemu: http://phpsuxx.blogspot.com/2007/09/opensu...c-qemu-kvm.html и http://phpsuxx.blogspot.com/2007/09/opensu...emu-kvm_04.html.
При сборке дистрибутива будем придерживаться т.н. Linux-way, то есть не будем изобретать велосипед и соберём все на основе уже готовых и достаточно хорошо отлаженных компонентов.
Для начала сольём весь необходимый софт:
- http://www.linuxdevcenter.com/linux/2007/07/05/examples/hello_printk.tar.gz - пример модуля ядра.
- ftp://ftp.slax.org/source/slax/kernel/2.6.21.5/src-core/config - конфиг для Лайв ядра.
- ftp://ftp.slax.org/Linux-Live/linux-live-6.1.5.tar.gz Linux Live scripts, т.е. скрипты для создания Live дистрибутива
сайт: http://www.linux-live.org
- Качаем Linux Live Scripts и Linux Kernel c сайта: http://www.linux-live.org
- Весь софт (а он весьма увесистый) немного позже выложу на наш локальный ФТП (справедливо только для абонентов провайдера ЭрТелеком в г. Самара).
Набор софта:- Не будет графической оболочки в принципе, т.к. задача написать свой аналог Кноппикса и прочих не стоит.
- GCC
- VIM
- MC (Файловый менеджер)
- Консольные браузеры
- Исходники патченного ядра, т.к. будет необходима сборка модулей
- Perl, не, а Вы что хотели лишить меня любимого языка программирования ? И не стыдно, а ?
- Пакеты поддержки PPPoE, дабы сборку можно было использовать как Rescue CD.
- Ну это... я ещу думаю
- Не будет графической оболочки в принципе, т.к. задача написать свой аналог Кноппикса и прочих не стоит.
- Создаём виртуальный диск:
#qemu-img create vdisk.img 5G
- Запускаем инсталляцию
modprobe kqemu # грузим модули поддержки
qemu -hda vdisk.img -cdrom путь_к_исо_образу_суси.iso -boot d -m 128
либо непосредственно с DVD диска, вставленного в привод хостовой машины:
qemu -hda vdisk.img -cdrom /dev/sr0 -boot d -m 128, где /dev/sr0 - имя вашего DVD привода.
При использовании OpenSuSe 10.2 грузим модули kvm вот в данном случаеж
Запускаем установку от имени рута:
qemu-kvm -hda vdisk.img -cdrom install-x86-minimal-2007.0-r1.iso -boot d -m 128
Если в ответ получаем следующее:
QUOTE
open /dev/kvm: No such file or directory
Could not initialize KVM, will disable KVM support
То делаем modprobe kvm и modprobe kvm_amd (или kvm_intel в зависимости от процессора) и повторяем операцию, все должно заработать и Вы увидите окошко запуска инсталляции.
Чтобы загружать модули kvm автоматически при старте openSUSE отредактируйте /etc/sysconfig/kernel и добавьте модули kvm в строку MODULES_LOADED_ON_BOOT=”…” . Или настройке их загрузку с помощью yast2 sysconfig.
А также в данном случае везде используейте qemu-kvm, вместо qemu.
- Ставим Сусе, убирая все лишее.В моём случае список необходимых пакетов имеет примерной такой вид
- tar
- bzip2
- mkisofs
- GCC
- nano
- kernel-sources (хотя можно их и не ставить)
- mc
- G++
- Perl
- vim
- tar
- Ждём окончания установки системы...
- Загружаем установленную систему: qemu -hda vdisk.img -cdrom /dev/sr0 -boot c -m 128
- Кофигурируем параметры системы, задаём пользователю root пароль SSAU, а пользователю student пароль 1.
- Ставим имя узла energy-live.
- Настройку сети пропускаем.
- Потом, после окончания всех установочных процедур отключаем сусе командой shutdown -h now
- Создаём папку cdrom и монтируем к ней наш образ:
# mount vdisk.img cdrom/ -t ext3 -o loop,offset=32256
cp linux-live-6.1.5.tar.gz linux-2.6.21.5.tar.bz2 linux-2.6.21.5-i486-1.tgz hello_printk.tar.gz config cdrom/
umount cdrom
Тем самым мы скопировали требуемые файлы в наш виртуальный образ.
- Грузим систему: # qemu -hda vdisk.img -cdrom /dev/sr0 -boot c -m 128
- Открываем файл /etc/fstab любым текстовым редактором и там видим в первой строчке запись вида вида: "/dev/disk/by-id/....part1", так вот меняем это безобразие на /dev/hda1.
- Так, насчет этого пункта у меня большие сомнения, лучше этого не делайте.
Открываем файл /boot/grub/menu.lst ищем там подобную штуку и меняем её везде на /dev/sda1.
- Перезагружаемся командой reboot (о ура, новый qemu научился-такие подхватывать рестарты системы и адекватно их обрабатывать), чтобы проверить работоспособность системы.
- Распаковываем наше бинарное ядро в систему (находясь в корневой папке /) tar -xvzf linux-2.6.21.5-i486-1.tgz
- Ядро будет распаковано в папку /boot под именем vmlinuz, переименуем его до адекватного имени: mv vmlinuz vmlinuz-2.6.21.5
- Открываем /boot/grub/menu.lst и добавляем внизу следующее:
title Energy Live!
root(hd0,0)
kernel /boot/vmlinuz-2.6.21.5 root=/dev/hda1 #именно hda1 %)
А в верху default 0 исправляем на default 2 и перезагружаемся с новым ядром.
- Вылезет пачка ошибок по поводу модулей и куча ругани на modules.dep , это решаем командой #depmod и последующей перезагрузкой для проверки.
- Проверка сборки модулей. берём файл hello_printk.tar.gz и переносим его в папку /root, распаковываем командой tar -xzf hello_printk.tar.gz, переходим в его папку и выполняем make, но получаем ошибку, т.к. исходников данного ядра у нас нету!
- Берем файл linux-2.6.21.5.tar.bz и переносим в папку /usr/src/, потом распаковываем его там командой tar -xjvvf linux-2.6.21.5.tar.bz
- переносим файл config в папку /usr/src/linux-2.6.21.5 под именем .config (#mv /config /usr/src/linux-2.6.21.5/.config)
- Переходим в папку с ядром: /usr/src/linux-2.6.21.5 и выполняем команды make oldconfig && make prepare && make modules_prepare Эти команды генерирую платформозависимые участки кода ядра, которые и будут использоваться при сборку модулей.
- Возвращаемся в нашу папку с модулем и повторяем процедуру сборки, посредством вызова команды make
- Модуль должен собраться успешно, после этого подгружаем его в ядро вызовом команды: insmod hello_printk.ko
- Если в самом низу вывода команды dmesg появилис строки Hello, World! то можно очень сильно радоваться , т.к. модули функционируют успешно !
- Переносим скрипты для лайвсиди в папку /tmp уомандой mv /linux-live-6.1.5.tar.gz и распаковываем их там. После этого переходим во вновь созданную папку и открываем файл .config , ищем в нём пункт "KERNEL=$(uname -r)" и заменяем его на "KERNEL=2.6.21.5"
- Запускаем скрипт сборки ./build сначала вводим "Energy Live!", потом /boot/vmlinuz-2.6.21.5, а потом ждем сжатия основных папок, что довольно не быстро... каково же ваше "двольно небыстро?" я хз, но у меня на настольнике (П4-1600\1Гиг оперы это потребовало бы около 5 часов, почему "бы", а потому, что я прерывал на 4м часу). А на ноуте с процессором Турион (у которого виртуализация на железном уровне) управился за где-то полтора часа.
- Следуя информационным надписям, можете либо создать загрузочную флешку, либо iso образ.
- Потом монтируем виртуальную ФС к хостовой машине и вытаскиываем оттуда образ исо, а также радуемся ;)
Friday, 26 October 2007
D-Link G-520 OpenSUSe, вайфаизация
После появления в моём арсенале ноутбука с встроенным Wi-Fi меня с завидной регулярностью стала посещать идея перевода всего домашнего парка ПК (а это не много, не мало целых два компьютера) на исключительно беспроводную сеть.
И вот, после приобретения сетевого адаптера D-Link G520 моя задумка наконец-то осуществилась, чему я сам безмерно рад. Вы, наверное, помните те сложности, с которыми я столкнулся при установке драйверов на встроенный в ноутбук WiFi адаптер, в случае с G520 все было намного проще и решилось в буквально десятком кликов мышкой и парой команд с терминала.
Ну давайте по порядку. После установки сетевой карты Суся обнаружила сетевое устройство, но ругнулась, что нету на него драйвера. Шерстим инет на факт поддержки чипсета карточки (он смотрелся по lspci) каким-либо свободным пакетов драйверов и находим проект madwifi.org, который довольно успешно занимается данными моделями. Совершенно логично переходим на страницу загрузки, и видим там сие чудо:
Поехали:
Если у Вас стояло самое новое ядро на данный момент (madwifi достаточно оперативно обновляется), то все должно быть гладко, в противном случае вы получите сообщение о неудовлетворённой зависимости, а точнее о неподходящей версии ядра; эта проблема решается обновлением до нового ядра через встроенное в Yast обновление, также сделал и Ваш покорный слуга.
Ну вот, впрочем, и все, после установки перезагружаемся (хотя вполне возможно, что оно заработает сразу) и видим в сетевых устройствах наш опознанный вайфай. Далее конфигурируем через Kinternet и выкидываем на помойку все мешающиеся провода.
В итоге после т.н. вайфаизации у меня освободилось: два куска витой пары по 5 метров и 20 сантиметров соответственно, а также 8ми портовый свитч DES1008D. Кабель от интернет провайдера был подключён непосредственно в точку доступа.
Закончим на бодрой ноте слоганом "Долой провода! Даешь свободу передвижения по квартире!" %)
И вот, после приобретения сетевого адаптера D-Link G520 моя задумка наконец-то осуществилась, чему я сам безмерно рад. Вы, наверное, помните те сложности, с которыми я столкнулся при установке драйверов на встроенный в ноутбук WiFi адаптер, в случае с G520 все было намного проще и решилось в буквально десятком кликов мышкой и парой команд с терминала.
Ну давайте по порядку. После установки сетевой карты Суся обнаружила сетевое устройство, но ругнулась, что нету на него драйвера. Шерстим инет на факт поддержки чипсета карточки (он смотрелся по lspci) каким-либо свободным пакетов драйверов и находим проект madwifi.org, который довольно успешно занимается данными моделями. Совершенно логично переходим на страницу загрузки, и видим там сие чудо:
Repository URLs are:Что же это такое? Это рмп репозитории со скомпилированными (да, да, да! наконец-то никаких лишних телодвижений и извращений в консоли) под конкретное ядро модулями (точнее драйверами) !
openSUSE 10.1: http://madwifi.org/suse/10.1
openSUSE 10.2: http://madwifi.org/suse/10.2
openSUSE 10.3: http://madwifi.org/suse/10.3
Поехали:
rpm -ihv madwifi-0.9.3.3-0.1.i586.rpm
rpm -ihv madwifi-kmp-default-0.9.3.3_2.6.22.9_0.4-0.1.i586.rpm
# нижний пакет устанавливать лишь в том случае, если Вы используете виртуализацию на основе XEN.
rpm -ihv madwifi-kmp-xen-0.9.3.3_2.6.22.9_0.4-0.1.i586.rpm
Если у Вас стояло самое новое ядро на данный момент (madwifi достаточно оперативно обновляется), то все должно быть гладко, в противном случае вы получите сообщение о неудовлетворённой зависимости, а точнее о неподходящей версии ядра; эта проблема решается обновлением до нового ядра через встроенное в Yast обновление, также сделал и Ваш покорный слуга.
Ну вот, впрочем, и все, после установки перезагружаемся (хотя вполне возможно, что оно заработает сразу) и видим в сетевых устройствах наш опознанный вайфай. Далее конфигурируем через Kinternet и выкидываем на помойку все мешающиеся провода.
В итоге после т.н. вайфаизации у меня освободилось: два куска витой пары по 5 метров и 20 сантиметров соответственно, а также 8ми портовый свитч DES1008D. Кабель от интернет провайдера был подключён непосредственно в точку доступа.
Закончим на бодрой ноте слоганом "Долой провода! Даешь свободу передвижения по квартире!" %)
Wednesday, 17 October 2007
OpenSuSe 10.3, тест драйв
Вот сегодня - через две недели после официального релиза - я все же обновил тестовую машину на i386 на ОпенСусе 10.3, впечатления на твёрдую пятёрку, глюков пока не замечено.
Сразу заметил:
* Абсолютно гладкое обновление с 10.2
* Намного быстрее загружается и выключается, чем 10.2
* Новый ОпенОфис 2.3
* Поддержка мп3 включается парой очевидных кликов.
* Красивая зеленая тема smile.gif
* Намного быстрее работает система управления репозиториями
* Новое 22е ядро (а-то что-то надоело сидеть на 18ом)
* Дрова (и сразу с поддержкой 3Д !!!) на мой радеон 9600XT встали сходу
* Поправлено очень много багов и шероховатостей в софте
* Новый Yast
* Куски КДЕ4 просто потрясающие!
* Не слетела раскладка, хотя народ жаловался на это
* Полный мануал по ОпенСусе на русском (вбиваем в Yast2 opensuse-manual_ru) !! После установки ищите его вот тут: /usr/share/doc/manual/opensuse-manual_ru
* Компиз сразу работать не захотел, будем мучать дальше
Сразу заметил:
* Абсолютно гладкое обновление с 10.2
* Намного быстрее загружается и выключается, чем 10.2
* Новый ОпенОфис 2.3
* Поддержка мп3 включается парой очевидных кликов.
* Красивая зеленая тема smile.gif
* Намного быстрее работает система управления репозиториями
* Новое 22е ядро (а-то что-то надоело сидеть на 18ом)
* Дрова (и сразу с поддержкой 3Д !!!) на мой радеон 9600XT встали сходу
* Поправлено очень много багов и шероховатостей в софте
* Новый Yast
* Куски КДЕ4 просто потрясающие!
* Не слетела раскладка, хотя народ жаловался на это
* Полный мануал по ОпенСусе на русском (вбиваем в Yast2 opensuse-manual_ru) !! После установки ищите его вот тут: /usr/share/doc/manual/opensuse-manual_ru
* Компиз сразу работать не захотел, будем мучать дальше
Tuesday, 9 October 2007
Немного рутины на...Perl !
Встала довольно банальная задача - скачать список файлов, прямые ссылки на которые указаны на некоторой веб странице. Задача банальная, но какая реализация!)
Сразу пробуем wget -r http://download.videolan.org/pub/videolan/vlc/SuSE/10.2/x86_64/, но получаем только два файла, которые не являются требуемыми (robots.txt и index.html, вместо полутора десятков rpm-ок), при нормальном стечении обстоятельств подкоманда -r wget`а скачивает все файлы, но тут что-то она заработать не захотела. Видимо из-за того, что указаны не абсолютные ссылки, а относительные (ffmpeg-debuginfo-0.4.9.8723-2.1.x86_64.rpm).
Но лень на выдумки хитра, поехали:
Мало, не спорю, но время большего не позволяет. Если кто-то подскажет более простой способ, буду благодарен.
Сразу пробуем wget -r http://download.videolan.org/pub/videolan/vlc/SuSE/10.2/x86_64/, но получаем только два файла, которые не являются требуемыми (robots.txt и index.html, вместо полутора десятков rpm-ок), при нормальном стечении обстоятельств подкоманда -r wget`а скачивает все файлы, но тут что-то она заработать не захотела. Видимо из-за того, что указаны не абсолютные ссылки, а относительные (ffmpeg-debuginfo-0.4.9.8723-2.1.x86_64.rpm).
Но лень на выдумки хитра, поехали:
wget http://download.videolan.org/pub/videolan/vlc/SuSE/10.2/x86_64/ -Olist.txt
cat list.txt|perl -e 'map{print join"\n",($_="@$_")=~m/href=\"(.+?)\"/sg}[<>]' > list1.txt
cat list1.txt|perl -e 'print "http://download.videolan.org/pub/videolan/vlc/SuSE/10.2/x86_64/", $_ for<>' > links.txt
rm list*
wget -i links.txt
Мало, не спорю, но время большего не позволяет. Если кто-то подскажет более простой способ, буду благодарен.
Saturday, 29 September 2007
Сборка собственнной IDE для С/С++/Perl на основе gVim
Ну что же, слов сказано достаточно много, пора переходить к действиям.
Для начала я буду излагать одно из требований, предъявляемое к нашей среде разработки, а потом перейдём к их реализации.
#1.Табы, табы и ещё раз табы, не знаю как Вы, а я баз них просто не могу жить.
Это решение я нашёл в блоге http://allaboutvim.blogspot.com/2007/07/blog-post_22.html , за что огромное спасибо автору. Табы создаются в Виме командой :tabnew или через меню Файл -> OpenTab.
Поехали далее. Вот, допустим, у нас gvim ассоциирован с файлами типа .txt (.pl/.cpp/.c соответственно) и у нас уже есть один открытый экземпляр Вима с парой табов. Что же произойдёт, если мы откроем ещё файл, но не из вима, а посредством щелчка двойного на файле или вызова через консоль? Совершенно верно, запустится ещё один экземпляр вима, который захламит нам весь рабочий стол. Мы будем бороться с этим безобразием следующим образом:
В этот файл вбиваем следующий код:
Сохраняем файл, ставим флаг исполнения: chmod +x tvim и на этом работа со скриптом закончена.
Если Вы немного знакомы с параметрами командной строки gVim`а, то, наверное, догадались, что будет делать данный скрипт, а делает он следующее - проверяет наличие уже загруженной копии редактора и в случае, если проверка увенчалась успехом открывает файл отдельном табе, вместо создания ещё одной копии редактора.
Далее нам нужно будет произвести интеграцию данного решения в КДЕ (если кто-л. опишет, как сделать подобное в Гноме буду благодарен). Во-первых нужно будет связать файлы .pl, .c и .cpp с нашим "новым" редактором tvim. Для этого щёлкаем на файле каждого из представленных типов правой кнопкой, выбираем "Открыть в", а потом "Другое приложение"; в верхней строке вписываем tvim и ставим галочку "Запомнить связь с приложением для этого файла" и щёлкаем ОК. После данной операции все файлы указанных расширений будут открываться в tvim.
Далее вопрос уже скорее косметического характера, а именно появление на десяток секунд окошка с названием tvim в панели задач, которое лично меня просто дико раздражает и создаёт впечатление, что программа ещё грузится, хотя это не так. Для борьбы с данной напастью открываем Центр управления KDE, там выбираем вкладку "Внешний вид и темы", потом "Запуск отчета" и убираем галочку "Уведомление на панели задач", а также я бы советовал поставить поле Курсор занятости в положение "Пассивный курсор занятости" с нулевым временем индикации.
Ну вот и всё) Теперь попробуйте открыть несколько файлов, например .cpp, и последить, как они будут открываться. В итоге этих манипуляций поулчаем нечто подобное вот этому:
Для начала я буду излагать одно из требований, предъявляемое к нашей среде разработки, а потом перейдём к их реализации.
#1.Табы, табы и ещё раз табы, не знаю как Вы, а я баз них просто не могу жить.
Это решение я нашёл в блоге http://allaboutvim.blogspot.com/2007/07/blog-post_22.html , за что огромное спасибо автору. Табы создаются в Виме командой :tabnew или через меню Файл -> OpenTab.
Поехали далее. Вот, допустим, у нас gvim ассоциирован с файлами типа .txt (.pl/.cpp/.c соответственно) и у нас уже есть один открытый экземпляр Вима с парой табов. Что же произойдёт, если мы откроем ещё файл, но не из вима, а посредством щелчка двойного на файле или вызова через консоль? Совершенно верно, запустится ещё один экземпляр вима, который захламит нам весь рабочий стол. Мы будем бороться с этим безобразием следующим образом:
gvim --remote-tab-silent /etc/vimrcПри таком способе вызова gvim`а, новая копия редактора создаваться не будет (конечно же, если уже открыт один экземляр), а будет открыт отдельный таб для данного файла, что нам и нужно. Но помнить такую длиннющую команду просто нереально, поэтому нам нужно будет сделать своего рода "алиас" к данной команде, назовём мы его tvim (т.е. tab+vim).
su
cd /usr/bin
vim tvim
В этот файл вбиваем следующий код:
#!/usr/bin/perl
use strict;
use warnings;
my@m=`gvim --serverlist`;
my $q=@ARGV?"\"@ARGV\"":'';
(scalar @m)?
exec "gvim --servername TVIM --remote-tab-silent $q":
exec "gvim --servername TVIM $q";
Сохраняем файл, ставим флаг исполнения: chmod +x tvim и на этом работа со скриптом закончена.
Если Вы немного знакомы с параметрами командной строки gVim`а, то, наверное, догадались, что будет делать данный скрипт, а делает он следующее - проверяет наличие уже загруженной копии редактора и в случае, если проверка увенчалась успехом открывает файл отдельном табе, вместо создания ещё одной копии редактора.
Далее нам нужно будет произвести интеграцию данного решения в КДЕ (если кто-л. опишет, как сделать подобное в Гноме буду благодарен). Во-первых нужно будет связать файлы .pl, .c и .cpp с нашим "новым" редактором tvim. Для этого щёлкаем на файле каждого из представленных типов правой кнопкой, выбираем "Открыть в", а потом "Другое приложение"; в верхней строке вписываем tvim и ставим галочку "Запомнить связь с приложением для этого файла" и щёлкаем ОК. После данной операции все файлы указанных расширений будут открываться в tvim.
Далее вопрос уже скорее косметического характера, а именно появление на десяток секунд окошка с названием tvim в панели задач, которое лично меня просто дико раздражает и создаёт впечатление, что программа ещё грузится, хотя это не так. Для борьбы с данной напастью открываем Центр управления KDE, там выбираем вкладку "Внешний вид и темы", потом "Запуск отчета" и убираем галочку "Уведомление на панели задач", а также я бы советовал поставить поле Курсор занятости в положение "Пассивный курсор занятости" с нулевым временем индикации.
Ну вот и всё) Теперь попробуйте открыть несколько файлов, например .cpp, и последить, как они будут открываться. В итоге этих манипуляций поулчаем нечто подобное вот этому:

Friday, 28 September 2007
Выбор IDE или хождения по мукам, фильм первый
Вот в недавнее время занимался выбором удобной среды разработки для С\С++\Perl и в итоге пришёл к выводу, что удобоваримых сред разработки нету как таковых...ну, давайте по порядку.
Сначала пролистал среды разработки заточенные специально под Qt4, среди которых оказались: Edyuk, QDevrlop, MonkeyStudio, все программы собирались напрямую из SVN, дабы получить наиболее полное представление о новых функция и задумках авторов (а иногда это было уже вынужденной мерой, т.к. RPM пакетов под мою 64 разрядную систему не было как таковых).
Общее впечатление от программ весьма неплохое, почти все используют (или пытаются использовать) интеграцию с QDesigner (редактор графического интерфейса для Qt), имеют меню просмотра файлов проекта, а также просмотр структуры классов, описанных в файлах проекта. Настройки редакторов кода достаточно скудны, следовательно, гибкости ожидать не стоит. Очень порадовали шаблоны Qt4 приложений основных видов (Dialog based, Application и Console Applocation) в QDevelop, опция из разряда - мелочь, а приятно).
Ну что в итоге мы имеем, более-менее функционирующие (зависания были достаточно часты, но это не недостаток программ - все же я их брал из репозиториев разработки и этого следовало ждать), со всеми джентльменскими функциями, почти во всех программах (которые внешне были достаточно сильно похожи, что заставляет задуматься об общем их прародителе) присутствовал встроенный отладчик и возможность удобной (без привлечения внешних средств) сборки Qt4 приложений. Хотелось бы ещё отметить, что сборка QDevelop осуществляется посредством универсальной системы сборки CMAKE, что очень меня радует, т.к. я использую именно её в своих проектах, чего и вам советую.
Но все же остаётся какой-то не очень приятный осадок от этих сред разработки - вроде бы все есть, но чего-то всегда не хватает и адекватной возможности расширить функционал не предоставляется (ну, конечно, за исключением вмешательства в исходный код этих сред). Так что на данном этапе данные среды разработки я пока оставляю, хотя не исключаю вероятности вернуться к ним позже.
Пошли далее. Как бы наиболее продвинутыми (чисто субъективное мнение) по части всевозможных фич являются среды разработки на языке Java. Мы рассмотрим Netbeans и Eclipse с плагином CDT (кстати говоря, на момент написания статьи уже вышел плагин интеграции Qt Дизайнера для Eclipse).
Начнём с NetBeans6beta, опять же мы работаем с самой новейшей версией (стабильной версией в данный момент считается версия 5.5.1), список возможностей которой мягко сказать поражает (они в основном ориентированы на Java). Ну вот, поставив JDK6, дополнительные 512 мб оперативной памяти (когда было 512 мб памяти работать было просто невозможно, ибо нетбинс кушал почти всю оперативную память и система вела себя подобно улитке, завязшей в студень) я приступил к изучению данной среды и её возможностей по части разработки на С++.
При создании проекта нам предоставляется выбор из четырёх возможностей - Статическая библиотека, Динамическая библиотека, Консольное приложение и создание проекта из существующих файлов. Присутствует обёртка к отладчику GDB, что похвально, вроде даже есть возможность использовать встроенный профайлер и для проектов на С++. А вместе с достаточно удобным редактором и вовсе получаем чуть ли не требуемый идеал... если бы не одно "но".
Для справки работаю я на достаточно не слабом по современным меркам ноутбуке (Turion Tl52x2,1Гб DDR2) и, казалось бы, о тормозазах и лагах давно должен был забыть, оказывается нет - Джава и иже с ней Нетбинс заставили меня вспомнить о них. Вроде бы лаг не очень большой, но достаёт просто дико, т.к. проявляется почти всегда - при переходе от одного файла проекта к другому, перед сборкой, перед запуском, в итоге по чуть-чуть и набираем лаги, очень сильно действующие на нервы.
При разработке на языке Java c лагами ещё как-то можно мириться, но на С\С++ это, увы, непозволительная роскошь (вполне вероятно, что я слишком придираюсь, но после почти мгновенных сборок посредством связки cmake+Vim, торможение очень заметно).
Далее, Eclipse, на мой взгляд, замечательная среда разработки, но опять же только для Java проектов, по этой причине, все перечисленное для Нетбинса применимо и к ней, увы. В итоге уже пять забракованных сред разработки, неплохо для начала)
KDevelop, тут уже все намного лучше, быстрая, красивая, современная многофункциональная среда разработки с поддержкой многих языков программирования, со встроенным отладчиком. А также с поддержкой моего любимого CMAKE для С\С++ проектов. Казалось бы идеал и предел желаний, но интерфейс изобилует редко используемыми функциями и для некоторых проектов функционал излишен, а также почти всегда требуется заточка под себя. Но в итоге, данной среде разработке из всех вышеперечисленных, я бы дал максимальный балл )
Ну а что в итоге? Где же мой предел мечтаний в унифицированной среде разработки для С\С++ и Перл? Я же ведь так и не сказал ни разу, что какая-либо среда мне идеально подошла. А выбор я свой сделал (и вряд ли его изменю), а именно остановился я на редакторе Vim; "Да какая же это среда разработки, это же текстовый редактор !", - можете воскликнуть Вы, но спокойствие, сейчас объясню. Vim, во-первых, поддерживает подсветку синтаксиса огромного количества языков, во-вторых, имеет собственный язык написания модулей расширения, которые призваны расширить функционал редактора посредством добавления в него новых функции. Далее в Vim есть возможность вызова внешних команд и "забора" результата их исполнения (в идеале это как раз вызов cmake). Ну и ещё очень много всего вкусного, о чём мы поговорим в дальнейших публикациях.
На данный момент стоит несколько проблем, среди них: использование вкладок в Vim (как в FireFox), удобный просмотр файлов проекта, автодополнение имён методов\классов и переменных, вызов cmake, удобный переход в командный режим в случае текущей русской раскладки (лично у меня уже руки болят переключать раскладку), а также ещё некоторые менее важные функции, которые тем не менее будут описаны в далее. В итоге я отказался от полностью интегрированных решений в пользу связки из нескольких программ - Vim, QDesigner, KGDB, cmake и нескольких собственных скриптов, которые будут интегрированы c Vim. Ну вот для введения, пожалуй, достаточно.
P.S.В данной публикации высказано моё субъективное мнение, которое может не совпадать с Вашим, но тем не менее, хотелось бы оговориться, что я никоим образом не пытаюсь выставить в плохом свете указанные программы, я лишь утверждаю, что в условиях решаемой задачи они мне не подходят и ничего более. Сразу же оговорюсь по поводу пропуска в обзоре замечательного редактора Emacs, тут сказывается уже привычка, т.к. после нескольких лет работы на Vim считаю переход на Emacs сверхсложной задачей, хотя в будущем не исключаю возможности изучения и этой платформы.
Сначала пролистал среды разработки заточенные специально под Qt4, среди которых оказались: Edyuk, QDevrlop, MonkeyStudio, все программы собирались напрямую из SVN, дабы получить наиболее полное представление о новых функция и задумках авторов (а иногда это было уже вынужденной мерой, т.к. RPM пакетов под мою 64 разрядную систему не было как таковых).
Общее впечатление от программ весьма неплохое, почти все используют (или пытаются использовать) интеграцию с QDesigner (редактор графического интерфейса для Qt), имеют меню просмотра файлов проекта, а также просмотр структуры классов, описанных в файлах проекта. Настройки редакторов кода достаточно скудны, следовательно, гибкости ожидать не стоит. Очень порадовали шаблоны Qt4 приложений основных видов (Dialog based, Application и Console Applocation) в QDevelop, опция из разряда - мелочь, а приятно).
Ну что в итоге мы имеем, более-менее функционирующие (зависания были достаточно часты, но это не недостаток программ - все же я их брал из репозиториев разработки и этого следовало ждать), со всеми джентльменскими функциями, почти во всех программах (которые внешне были достаточно сильно похожи, что заставляет задуматься об общем их прародителе) присутствовал встроенный отладчик и возможность удобной (без привлечения внешних средств) сборки Qt4 приложений. Хотелось бы ещё отметить, что сборка QDevelop осуществляется посредством универсальной системы сборки CMAKE, что очень меня радует, т.к. я использую именно её в своих проектах, чего и вам советую.
Но все же остаётся какой-то не очень приятный осадок от этих сред разработки - вроде бы все есть, но чего-то всегда не хватает и адекватной возможности расширить функционал не предоставляется (ну, конечно, за исключением вмешательства в исходный код этих сред). Так что на данном этапе данные среды разработки я пока оставляю, хотя не исключаю вероятности вернуться к ним позже.
Пошли далее. Как бы наиболее продвинутыми (чисто субъективное мнение) по части всевозможных фич являются среды разработки на языке Java. Мы рассмотрим Netbeans и Eclipse с плагином CDT (кстати говоря, на момент написания статьи уже вышел плагин интеграции Qt Дизайнера для Eclipse).
Начнём с NetBeans6beta, опять же мы работаем с самой новейшей версией (стабильной версией в данный момент считается версия 5.5.1), список возможностей которой мягко сказать поражает (они в основном ориентированы на Java). Ну вот, поставив JDK6, дополнительные 512 мб оперативной памяти (когда было 512 мб памяти работать было просто невозможно, ибо нетбинс кушал почти всю оперативную память и система вела себя подобно улитке, завязшей в студень) я приступил к изучению данной среды и её возможностей по части разработки на С++.
При создании проекта нам предоставляется выбор из четырёх возможностей - Статическая библиотека, Динамическая библиотека, Консольное приложение и создание проекта из существующих файлов. Присутствует обёртка к отладчику GDB, что похвально, вроде даже есть возможность использовать встроенный профайлер и для проектов на С++. А вместе с достаточно удобным редактором и вовсе получаем чуть ли не требуемый идеал... если бы не одно "но".
Для справки работаю я на достаточно не слабом по современным меркам ноутбуке (Turion Tl52x2,1Гб DDR2) и, казалось бы, о тормозазах и лагах давно должен был забыть, оказывается нет - Джава и иже с ней Нетбинс заставили меня вспомнить о них. Вроде бы лаг не очень большой, но достаёт просто дико, т.к. проявляется почти всегда - при переходе от одного файла проекта к другому, перед сборкой, перед запуском, в итоге по чуть-чуть и набираем лаги, очень сильно действующие на нервы.
При разработке на языке Java c лагами ещё как-то можно мириться, но на С\С++ это, увы, непозволительная роскошь (вполне вероятно, что я слишком придираюсь, но после почти мгновенных сборок посредством связки cmake+Vim, торможение очень заметно).
Далее, Eclipse, на мой взгляд, замечательная среда разработки, но опять же только для Java проектов, по этой причине, все перечисленное для Нетбинса применимо и к ней, увы. В итоге уже пять забракованных сред разработки, неплохо для начала)
KDevelop, тут уже все намного лучше, быстрая, красивая, современная многофункциональная среда разработки с поддержкой многих языков программирования, со встроенным отладчиком. А также с поддержкой моего любимого CMAKE для С\С++ проектов. Казалось бы идеал и предел желаний, но интерфейс изобилует редко используемыми функциями и для некоторых проектов функционал излишен, а также почти всегда требуется заточка под себя. Но в итоге, данной среде разработке из всех вышеперечисленных, я бы дал максимальный балл )
Ну а что в итоге? Где же мой предел мечтаний в унифицированной среде разработки для С\С++ и Перл? Я же ведь так и не сказал ни разу, что какая-либо среда мне идеально подошла. А выбор я свой сделал (и вряд ли его изменю), а именно остановился я на редакторе Vim; "Да какая же это среда разработки, это же текстовый редактор !", - можете воскликнуть Вы, но спокойствие, сейчас объясню. Vim, во-первых, поддерживает подсветку синтаксиса огромного количества языков, во-вторых, имеет собственный язык написания модулей расширения, которые призваны расширить функционал редактора посредством добавления в него новых функции. Далее в Vim есть возможность вызова внешних команд и "забора" результата их исполнения (в идеале это как раз вызов cmake). Ну и ещё очень много всего вкусного, о чём мы поговорим в дальнейших публикациях.
На данный момент стоит несколько проблем, среди них: использование вкладок в Vim (как в FireFox), удобный просмотр файлов проекта, автодополнение имён методов\классов и переменных, вызов cmake, удобный переход в командный режим в случае текущей русской раскладки (лично у меня уже руки болят переключать раскладку), а также ещё некоторые менее важные функции, которые тем не менее будут описаны в далее. В итоге я отказался от полностью интегрированных решений в пользу связки из нескольких программ - Vim, QDesigner, KGDB, cmake и нескольких собственных скриптов, которые будут интегрированы c Vim. Ну вот для введения, пожалуй, достаточно.
P.S.В данной публикации высказано моё субъективное мнение, которое может не совпадать с Вашим, но тем не менее, хотелось бы оговориться, что я никоим образом не пытаюсь выставить в плохом свете указанные программы, я лишь утверждаю, что в условиях решаемой задачи они мне не подходят и ничего более. Сразу же оговорюсь по поводу пропуска в обзоре замечательного редактора Emacs, тут сказывается уже привычка, т.к. после нескольких лет работы на Vim считаю переход на Emacs сверхсложной задачей, хотя в будущем не исключаю возможности изучения и этой платформы.
Sunday, 23 September 2007
Установка драйверов на видеокарту ATI, OpenSuSe 10.2 x86_64
Вот решил поставить поддержку 3D, а-то как-то непривычно работать без неё. Наиболее адекватное руководство, которое я нашёл представлено здесь, но оно несколько устрело, поэтому немного модифицируем алгоритм обновления драйвера.
Переходим на этот сайт и скачиваем драйвера под 64 линукс платформу. Либо можно сделать следующее (только учтите, что ссылка со временем может устареть, поэтому лучше воспользуйтесь сайтом) прямая ссылка на драйвер. Потом переходим в папку с драйвером и делаем следующее:
Потом выполняем: # rpm -Uhv fglr*.rpm
И далее:
Переходим на этот сайт и скачиваем драйвера под 64 линукс платформу. Либо можно сделать следующее (только учтите, что ссылка со временем может устареть, поэтому лучше воспользуйтесь сайтом) прямая ссылка на драйвер. Потом переходим в папку с драйвером и делаем следующее:
# sh ati-driver-installer-*.run --listpkgВ результате этого видим, что есть пакет для ОпенСусе: "SuSE/SUSE102-AMD64" и нам его нужно собрать, чем мы и займёмся ниже:
# sh ati-driver-installer-*.run --buildpkg SuSE/SUSE102-AMD64И дожидаемся сборки пакета. После данных манипуляций в текущей папке у нас должен появиться файлик, но он может называться по-разному на различных платформах, поэтому лучше выполнить команду: # ls | grep fglrx -i и тем самым получить имя необходимого нам файла.
Потом выполняем: # rpm -Uhv fglr*.rpm
И далее:
# ldconfig # aticonfig --initial --input=/etc/X11/xorg.conf # sax2 -r -m 0=fglrxПотом перезапускаем икс сервер (выйти -> выйти из системы) и потом тестируем 3D командой # glxgears, если все прошло успешно, она должна выполняться без тормозов.
Saturday, 22 September 2007
Монтирование NTFS разделов с возможностью записи
Речь пойдёт о проекте ntfs-3g (он в свою очередь основан на разработке fuse), который уже вышел из стадии бета-тестирования (это произошло в феврале 2007) и считается стабильным. Не буду усложнять и представлю всё в форме пошагового руководства.
Сразу хотелось бы предупредить, что fuse загружает систему сильнее, чем обычный модуль ntfs (который поддерживает только чтение) по причине того, что работает в пользовательском пространстве без привлечения ядра, так что не пугайтесь, это не бага, а фича %)
- Из репозитория http://download.opensuse.org/distribution/SL-OSS-factory/inst-source/suse/x86_64/ ставим пакет ntfs-3g (можно вручную скачать пакеты по ссылке выше и поставить от имени рута посредством rpm -ihv ntfs-3g.rpm).
- Потом от имени рута открываем на редактирование файл /etc/fstab
Ищем строку (или несколько строк) со словом ntfs, например у меня она имеет вид:/dev/sda2 /windows ntfs ro,users,gid=users,umask=0002,nls=utf8 0 0
Заменяем это на строку:/dev/sda2 /windows ntfs-3g umask=0,locale=ru_RU.UTF-8 0 0
- Потом от имени рута: umount -a (отмонтировать все файловые системы, указанные в файле fstab) и потом mount -a (примонтировать все фс) и радуемся примонтированному на запись нтфс разделу)
Сразу хотелось бы предупредить, что fuse загружает систему сильнее, чем обычный модуль ntfs (который поддерживает только чтение) по причине того, что работает в пользовательском пространстве без привлечения ядра, так что не пугайтесь, это не бага, а фича %)
Subscribe to:
Posts
(
Atom
)