nuclight: (Default)
Пока на больничном, есть свободное время, решил записать воспоминания про олимпиаду для Linux-администраторов — а то уже не всё помню. В этом году её честно назвали олимпиадой для Linux-администраторов, и я, будучи фряшником, хотя сомневался, всё-таки пошел попробовать. Попробовал очень даже неплохо :) Причем, что любопытно, очень даже неплохо из BSD-админов "попробовал" не только я: если во 2-й тур прошло 5 человек из 36 с канала #freebsd (shattered, dmn42, Jay, imax и ваш покорный слуга) — то в финал пробралось четверо из них. Четверо из десяти. По-моему, эти 40% на чисто линуксовой олимпиаде вполне подтверждают тезис о том, что BSDшники профессиональнее =) Причем дело не в том, что эти люди просто "случайно" оказались универсалами, знающими несколько платформ (и случайно завсегдатаями канала #freebsd). Они, как и я, еще и предпочитают эту систему, а лично я — так и вообще имел не так много опыта с другими системами. Мой опыт общения с линуксами в основном ограничивается SLES на вычислительном кластере родного политеха. И сусю эту предписывалось трогать как можно меньше (суппорт, мол, есть), и был этот кластер толком никому не нужен — увы, провинциальные реалии... так что мы большую часть времени занимались если не виндой и суппортом не умеющих писать на Си юзеров, то, кхм, саморазвитием (и отнюдь не по линуксовой части).

Но обо всём по порядку. Первые игры олимпиады — вопросы по теории, но это лишь отсев, а не что-то, способное действительно показать профессионалов в отрасли. Определяет практика, и первая практика на олимпиаде началась во втором туре. 25 октября нужно было починить, кроме мелочей, LDAP, Джумлу и Друпал (да, мне тоже было смешно), в виртуалках, доступ в которые был сделан через веб — типа консоль tmux. Видимо, специально затем, чтобы больше времени потратили — все ж к screen привыкли. Эта игра глючила и глючила, и довольно быстро вообще прекратилась, поскольку кто-то нашел дырку в реализации организаторами доступа к tmux через web — и пробрался из виртуалку и хост-машину, где еще и ответы лежали. Так что игру отменили, и я уже даже не помню, что там было.

Повторная игра 2-го тура была 27 октября, вот там уже был человеческий VNC. Правда, интерфейс "старт/стоп виртуальной машины" был сделан на вебе неудобно, впрочем, то мелочи (хотя у некоторых они вызвали большие нарекания). Итак, "физическая" консоль виртуалки по VNC, в виртуалке — Убунта. Тщательно сломанная (вообще это уровень уже даже не финала, а суперфинала прошлого года), настолько, что паникует при загрузке. И надо её починить — мониторинг снаружи проверяет сервисы этой машины, которые должны работать (ессно, пока на ней нет поднятой сети, всё горит красным). Сделать надо всё за 1 час, чем больше и раньше других сделано — тем выше место в таблице участников.

Вот тут начинается самое интересное. Я эту Ubuntu, как и вообще современный Линукс, видел вживую впервые в жизни. Камрад Jay описал чуть спустя то, что на этой игре было по заданиям. А у меня было интересное психологическое состояние, и многие из обсуждавшихся вещей меня удивили — я их не заметил, хотя и решил. Наверное, ближе всего будет описать это состояние, как "танк, рвущийся на прорыв через препятствия". Воля к победе, боевой дух, решимость, как её там еще?.. Короче, время пошло, взлетаем.
Под катом не без сисек )
Что можно сказать по итогу — в отличие от прошлого года, по этой олимпиаде уже вполне можно судить о положении дел в отрасли, её результаты показывают уже что-то реальное — всё стало гораздо ближе к практике. На прошлой было три теоретических теста (1 тур, 2 тур, финал), пусть и разных по форме, и лишь одна игра с практикой — суперфинал. В этой — только первый тур с отсевом по теории, но вот все 3 практики были однообразные — "починить упавший сервер за 1 час".

Поскольку победителям прошлых лет запрещено участвовать в следующих олимпиадах, могу свободно высказать предположения, как можно было бы её еще улучшить. Например, в финале можно было бы не чинить сервер, а настраивать что-то с нуля. А в суперфинале — оттюнить медленно работающий сервер (привет, хайлоад). Или, там, разобраться с тем, почему в боевых условиях не работает поделие криворукого программера (это классическое бодание админов и программеров, вошедшее в байки и мемы, бывает даже в самом Яндексе). Одна беда — это требует больше времени, а в программе финального дня еще экскурсия в ДЦ Яндекса, затягивающаяся по московским пробкам... Может быть, стоило бы объединить финал и суперфинал, чтоб уместилось, но, наверное, это будет противоречить правилам, которых хочет придерживаться Яндекс...
nuclight: (Default)
Получил я на днях вот такую критику своей статьи "Netgraph для пользователя", в IRC (разговор сокращен):

<A_Z> Следует помнить, что в этом формате как узлы, так и хуки netgraph являются узлами изображенного графа — просто узлы netgraph изображены как прямоугольники (подписаны имя, ID, тип), а хуки netgraph — как восьмиугольники, и ребра, соединяющие узел со своими хуками, более жирные. Так сделано для большей наглядности и выделенности хуков, а также потому, что при обычном рисовании графа не получилось бы у одного ребра написать два названия (ведь ребро netgraph состоит
<A_Z> если кто-то прочитает и переварит это с первого раза, тот герой.
<A_Z> если помнить, что масло на котором мы жарим картошку является подсолнечным маслом, то можно предположить, что картошка является жареной и это потому, что мы жарили картошку
<levsha> ну может ведь и салом оказаться!
<Miha> картошка может оказаться салом!
<A_Z> Если название вызвало у Вас ассоциации из наркоманской фени. Вы правильно подумали. Netgraph действительно представляет собой краб^Wгриб
<nuclight> A_Z: конструктивные предложения есть?
<A_Z> nuclight: рассказывать? я уже говорил а) стиль изложения a-la петросян б) сложное построение предложений в) множесто неудачных аналогий и варваризма г) есть сомнения, что это для пользователей
<nuclight> A_Z: конструктивная критика направлена на то, чтобы исправить/улучшить, для чего необходимо указывать на конкретные вещи, и способы их исправления. Из чего следует, что 2 строчки никак не могут быть конструктивной критикой — ты к каждому пункту не привел даже пяток примеров, из которых можно было бы проследить тенденцию твоих субъективных впечатлений.
<nuclight> A_Z: стиль изложения — в каком месте? почему не давно изветсный прием отдыха читателя среди горы информации, напрмер? Сложное построение предложений — где? примеры, как было бы построить лучше (я вообще-то следил и слишком сложные предложения не делал)? Множество неудачных и варваризма — какие именно? в чем их неудачность и варваризм для тебя? какие были бы лучше? Есть сомнения — в чем это выражается? где следовало разжевать еще?
<nuclight> A_Z: уже сам факт того, что я тебе должен встречные вопросы задавать говорит, что это не была конструктивная критика. Литературные критики во времена оные целые эссе писали, тебе же нужно было написать от силы килобайта два, а не сорок два, как мне.
<A_Z> nuclight: вот тебе мои два килобайта


И вот текст собственно рецензии (кладу тут для истории, чтоб не потерялся):
Рецензия без запятых.

После прочтения статьи Вадима Гончарова "Netgraph для пользователя" я окунулся
в мир грибов и дисктретной математики. Read more... )
nuclight: (Default)
Из процесса ежедневного рагребания ссылок нашлось интересное.

http://moja-zhizn.livejournal.com/43961.html - Ленинскую Библиотеку, фактически, обрекают на уничтожение. Однако, нехорошо.

http://zhurnal.lib.ru/z/zlobnyj_y/fanterrors.shtml - хороший текст (правда, многабукаф, но интересно) про типичные штампы в фантастике, как в книгах, так и в фильмах. Речь идет как об очевидных сразу вещах (как те же фильмы про хакеров), так и о не очень, которые способны многие книги загубить вообще на корню :) как космические бои, например. Рассмотрены и разнообразные экологические мифы, и даже миры фэнтези - хотя последним, на мой взгляд, автор зря побоялся уделить больше внимания (ограничившись разбором экономики, оружия и орудий по историческим параллелям), разбор физики и магии был бы весьма интересен.

http://www.intuit.ru/department/os/osunix/ - хороший курс по Юниксам (наткнулся в жгучих комментах с опеннета). Отличается от других тем, что дает в большей степени философию Юниксов, нежели набор команд, более того, обосновывает это. Особенно интересны вводные лекции:

Рассмотрим самый, на наш взгляд, естественный алгоритм решения любой задачи:
1. уяснить задачу;
2. выбрать самый подходящий инструмент решения (самый подходящий, а не самый знакомый!);
3. освоить этот инструмент (начиная с изучения документации).
4. придумать по возможности красивое решение;
5. зафиксировать это решение (чтобы можно было в случае чего повторить);
6. применить его.

Казалось бы, спорить не с чем, но как часто мы поступаем строго наоборот!

Желая "сэкономить время", мы нередко начинаем с того, что так и эдак применяем попавшиеся под руку инструменты (6) и даже начинаем набрасывать кое-какие сценарии или проекты решения (5). Потом мы задумываемся над тем, как же решить нашу задачу "по уму" (4), и понимаем, что инструмент нам, в сущности, незнаком, что надо изучать руководство (3). Из руководства выясняется, что инструмент нам не подходит, и приходится искать другой (2). И только тогда мы понимаем, что для этого надо разобраться, какую именно задачу мы решаем (1).


Напоминает "Как правильно задавать вопросы", не правда ли? Было сравнение даже с дзен-буддизмом. Следуют рассуждения о проективных человеко-машинных системах (те же юниксы как пример) в противовес процедурным:

Процедура как суррогат поступка

Процедурной мы будем называть человеко-машинную систему, доступную человеку в виде набора функций (процедур) внутри прикладной области, описываемых в терминах прикладной области и приводящих к наглядному или гарантированному изменению свойств объекта. Например, человеко-телевизор - полностью процедурная система: все задачи, которые ставит перед ней человек, описываются в терминах "программа", "громкость", "контраст" и т. п. Телевизор же (вернее, инструкция к нему) общается с пользователем на том же языке (кажется, в нем есть только один новый термин - "кнопка", все остальные, включая названия кнопок, повторяют известное пользователю).


Казалось бы, чем плохи процедурные систмы, они ведь говорят с пользователем на понятном ему языке, обучение не нужно? Ну, в частности тем, что:

Пользователь процедурной системы зачастую не знает, как именно он добился от нее желаемого результата и далеко не всегда может с первого раза воспроизвести свои действия. Нажимал-нажимал на кнопки - и вышло. Как? А кто ж ее знает. Здесь работает накопленный опыт общения с системой, возможно, даже некое представление об ее истинном устройстве, добытое из системы в обход предусмотренных каналов информации и оттого не поддающееся формализации. Явление это имеет название black magic (черная магия) или voodoo.


И много других очень жызненных вещей. Читать, однозначно.
nuclight: (Default)
Есть у нас в сети общаги уже долгое время две подсети, с серыми и белыми адресами, при этом бегают по одной физике. Не очень кошерная конфигурация, конечно, ну да так вышло по историческим причинам (тяжелое детство, деревянные игрушки бедные студенты, провайдер-жмот). Суть в том, что хостам желательно бы видеть друг друга напрямую, а не нагружать роутер, который раздает им Интернет, так как у него те же 100 Мбит на вход, если роутить подсети, будут жаловаться, что скорость низкая. Значит, каждому юзеру надо прописать себе постоянный статический маршрут на другую подсеть, тогда будет ходить как положено, напрямую, в обход роутера.

И тут вступает в дело человеческий фактор. Как заставить их прописать? Они ж бестолковые. Желательно бы автоматизировать. Но тут напарываемся на свойства винды. ICMP-редиректы она не принимает (от роутера, который знает, что физическая-то подсеть та же), указание маршрута на интерфейс без указания шлюза (который должен быть адресом этой же машины) она не понимает... Маздай, одним словом. В DHCP есть опция статических маршрутов, но они в ней считаются поклассово - это тогда, как более 10 лет используется CIDR, то есть для нынешних условий неприменимо.

После поисков обнаружилась такая замечательная штука, как RFC 3442, описывающий DHCP-опцию раздачи classless-маршрутов, как раз то, что нужно, даже случай другой подсети на той же физике предусмотрен. Но - его не поддерживает не то что винда, а и другие DHCP-клиенты не всех версий... В результате на сайте сети была просто вывешена динамически генерируемая инструкция, выполнить строчку вида route -p add 172.18.46.0 mask 255.255.255.0 82.117.64.2, где адресом шлюза является адрес самой машины. Инструкцию выполняли, но, конечно, не все и не всегда. Например, забывали выполнить после переустановки винды. Или просто "ниасиливали". Нагрузка на роутер от непрописавших возросла, и на нем это дело было прикрыто файрволом, в надежде, что когда перестанет работать, таки соизволят наконец прочитать инструкцию (в которой увеличилось количество выделений большими буквами и жирным шрифтом). Но толку...

Затем, после дальнейших поисков, было обнаружено, что виндовый DHCP-клиент, начиная с XP, поддерживает приватную опцию за нумером 249, отвечающую ровно за это же и имеющую абсолютно тот же формат, что и опция с кодом 121 из RFC 3442 (зачем они сменили номер, непонятно). Ну, с тем лишь отличием, что RFC предписывает игнорировать опцию routers и указывать маршрут по умолчанию внутри этой нововведенной опции, а опция от MS задает дополнительные к routers маршруты. Итак, Гугль в конце концов подсказал страничку http://scott.yang.id.au/2003/04/getting-stuck-with-dhcpd/ с вот таким примером для конфига DHCP (в котором эта опция тоже не поддерживается, но можно описывать их свои любые, какие хочется):
# MS routes: adds extras to supplement routers option
option ms-classless-static-routes code 249 = array of integer 8;
# RFC3442 routes: overrides routers option
option rfc3442-classless-static-routes code 121 = array of integer 8;
option routers 172.22.0.1;
option ms-classless-static-routes 24, 172, 22, 99, 172, 22, 0, 1 ;
option rfc3442-classless-static-routes 24, 172, 22, 99, 172, 22, 0, 1, 0, 172, 22, 0, 1 ;


Всё бы нормально, но это маршрут, указывающий на сеть, находящуюся за настоящим маршрутизатором. Популярный случай, но у нас несколько другая ситуация, сеть-то должна быть доступна напрямую. RFC 3442 в этом случае говорит, что надо указать в качестве адреса шлюза 0.0.0.0, и клиент должен понять, что это маршрут на интерфейс. Пробуем указать option ms-classless-static-routes 24, 172, 18, 46, 0, 0, 0, 0; ...и наблюдаем, как винда радостно кладет на это большой и толстый болт. Ага, думаем мы, не лыком шиты, чай, винда тупая, просто применяет сеть, маску и шлюз как в команде route. То есть, если указать адрес шлюза, должно подействовать. Пробуем option ms-classless-static-routes 24, 172, 18, 46, 82, 117, 46, 2; - ага, сожрала!

Здесь самое время почесать репу - это, значит, придется для каждого клиента в dhcpd.conf описывать индивидуальную натсройку?! Ладно здесь, когда адреса описаны статически (привязка к MAC-адресу), потеряется только изящность указания адреса в единой точке (DNS) и избыточность конфига - а если у кого-то адреса раздаются динамически, что тогда?..

После загрузочной кружки чая с шоколадом в голову приходит мысль перечитать dhcp-eval(5). Вдумчивое укуривание им и dhcp-options(5) рожает идею генерировать эту опцию для каждого клиента на ходу из его адреса. Немного правки, и возникает конструкция:

option ms-classless-static-routes = concat (24, 82, 117, 64, leased-address);

На что нас посылает нахуй уже dhcpd. С невнятной синтаксической ошибкой 117 exceeds max (255) for precision. Рытье в исходниках и манах приводит к озарению: я дебил у dhcpd разная трактовка numeric-expressions и data-expressions. То бишь, надо преобразовать форматы его встроенными функциями. И в конечном счете получаем несколько громоздкую, но работающую конструкцию:
...
# Define option codes and types for later use in subnet declarations
option ms-classless-static-routes code 249 = array of integer 8;
option rfc3442-classless-static-routes code 121 = array of integer 8;
# Classless routing:
# RFC3442 provides way to store classless routes in option 121 with
# format of 1 byte masklen, 0 to 4 bytes of destination network (rounding
# up mask bits to next byte), and 4 bytes of router address, e.g.
# 128.93.40.0/17 -> 1.2.3.4 will be bytes 17 128 93 40 1 2 3 4;
# then any number of routes in the same format. MS routes (XP+)
# are using the same format, but option code 249. Also, RFC3442
# routes require including default route (masklen 0 then IP of router)
# which overrides routers option, and MS routes don't need to
# include default route, they still use routers option.
# When destination net is directly attached to client's interface,
# as in our case below, RFC3442 requires using gate IP 0.0.0.0,
# but Windows client do not understand it, they want their own IP as
# gate IP, so we must generate this option for them from "leased-address". 

shared-network AVTF.NET {

subnet 172.18.46.0 netmask 255.255.255.0 {
        option routers 172.18.46.1;
        option broadcast-address 172.18.46.255;
        option domain-name-servers 172.18.46.1;

        option ms-classless-static-routes = concat(encode-int(24,  8),
                                                   encode-int(82,  8),
                                                   encode-int(117, 8),
                                                   encode-int(64,  8),
                                                   leased-address);
        option rfc3442-classless-static-routes 24, 82, 117, 64, 0, 0, 0, 0,
                                                0, 172, 18, 46, 1;

и т.д.


Жаль, это не работает для Windows 2000 (да и в Висте, судя по ссылкам во время поиска в гугле, в этом что-то поломали), но для большинства XPёвых машин в сети теперь будет всё нормально :)

UPDATE: Сообщили, что за прошедшие сутки с момента включения этих опций наблюдались проблемы у некоторых юзеров - Виста не может получить адрес. В инете нашлось по теме http://users.livejournal.com/_pacak_/48017.html и http://support.microsoft.com/default.aspx/kb/928233. Блядский Мелкософт. Поймаю живую Висту, поэкспериментирую, а пока что отключил опцию (странно, оно же раньше получало, в статье-то речь про другое)...

UPD2: Была найдена также ссылка http://forums.microsoft.com/TechNet/ShowPost.aspx?PostID=1383260&SiteID=17 и вышедший с тех пор хотфикс http://support.microsoft.com/kb/933340/ (должен был войти в Vista SP1). По ссылке сообщается, что Виста понимает как опцию 249, так и опцию 121 (по стандарту), но не будет принимать дублирующиеся маршруты - а в моем конфиге в обеих опциях маршруты как раз дублировались. Однако, экспериментов с этим все равно не проводил (и человеку по ссылке тоже не помогло, впрочем, у него это было до хотфикса).
nuclight: (Default)
Читаю http://apcmag.com/node/6735/ - Con Kolivas, один из разработчиков ядра Linux, известный своей веткой пачтей к ядру -ck (увеличивает интерактивность работы на десктопе, пользовалась большой популярностью), дает интервью по поводу своего ухода из разработки.
Начал он издалека, с тех дней в конце 80-х - начале 90-х, когда рынок персональных компьютеров наполняло все новое и новое оригинальное железо, была конкуренция, чем стимулировались инновации и развитие. Затем постепенно Microsoft подмял рынок софта под себя, и постепенно пришли к ситуации резкого снижения конкуренции, количество производителей железа сильно уменьшилось, оно стало производиться под конкретную ОС. В результате сейчас имеем, что вычислительная мощность растет, а без толку (заметна разве что в непосредственно вычислительных задачах, скажем, сжатию видео и т.п.), каких-либо новых разработок не наблюдается.
Подстегивающую конкуренцию теперь могут оказать разве что только альтернативные ОС, прежде всего Линукс, но тут возникает другая проблема - его разработчики нифига не ориентируются на десктоп. Они смотрят на корпорации, на сервера, а корпоративные пользователи, по его словам, заинтересованы прежде всего в том, что бы выжать еще один процент в очередном бенчмарке базы данных, и т.п. Соответственно, когда ему надоело, что одно приложение может "заткнуть" другое из-за неравномерного распределения ресурсов, в 2002 году он взялся за Си, и стал патчить. Постепенно обрел популярность у очень большого числа пользователей, но в основное ядро его патчи так и не включили. Точнее, включали отдельные мелочи, но толку, когда надо менять архитектуру?..
A scheduler that was deterministic and predictable and still interactive is a much better option long term than the hack after hack approach we were maintaining.

Тогда он написал новый планировщик. Но разработчики ядра, увы, его патчи не принимают, мол, есть более важные дела, тогда как на деле заняты "бесконечным переписыванием работающих подсистем" (он вообще едко о других разработчиках отзывается). Проблему убеждения в необходимости существования нескольких планировщиков можно было бы решить, наверное, голосами рядовых пользователей. Но...
If there is any one big problem with kernel development and Linux it is the complete disconnection of the development process from normal users. You know, the ones who constitute 99.9% of the Linux user base.

Вплоть до того, что хоть он и общается с пользователями сам, ибо в мэйллистах разработчиков их заклюют, они начинают бояться даже его самого, так что ему приходится иногда самому бегать и искать багрепорты:
Just trawl the normal support forums (which I did for Gentoo users as a way of finding bug reports often because the users were afraid to tell me) and see how many obvious kernel related issues there are. I'd love to tell them all to suddenly flood lkml with their reports of failed boots with various kernels, hardware disappearing, stopping working suddenly, memory disappearing, trying to use software suspend and having your balls blown off by your laptop, and so on.

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

Вот такие дела. Стоит читать все интервью целиком, да.
nuclight: (Default)
Сегодня Sendmail празднует свою 25 годовщину. Старейший почтовик Интернета по-прежнему используется на многих загруженных серверах, и, как многие продукты UC Berkeley, скромно и хорошо делает свою работу "за сценой" (большинство людей и не подозревают о существовании таких вещей).
С праздником, sendmail, и так держать!
nuclight: (Default)
Выловлено в RU.ANTI.NATO - прочитал начало и подумал, что это стеб над RMS :) Этакая акцентуация на хронический недотрах (знакомые с некоторыми его идеями, достаточно бредовыми, поймут). Однако похоже, что это таки всерьез...
Так что знайте - говорят, что царь - ненастоящий! Буш пришел к власти незаконно - его купил Гейтс, так что другие страны должны срочно оккупировать америку и сбросить тирана!

"Билл Гейтс следит за тобой" ("La Vanguardia", Испания). Интервью с Ричардом
Столлменом (Richard Stallman), "хакером" и основателем Фонда свободного
программного обеспечения.
Мне 52 года, родился в Hью-Йорке, живу в Кембридже (Массачусетс). Получил
диплом физика в Гарвардском Университете и 10 лет проработал в Массачусетском
Технологическом Институте (MIT). Уволился, чтобы создать свободную оперативную
систему - GNU, которая сегодня стала GNU/Linux. Одинок и без невесты. Hо у меня
есть ребенок: движение свободного софта. Атеист. Верю в свободу: призываю всех
делать ставку на свободу!

- Так что невесты у Вас нет. . .
- Что? Кричите громче! Я почти ничего не слышу!
- А-а. . . Так что невесты у Вас нет!
- Девушки не любят меня. . .
- Может, это оттого, что Вы слишком много времени проводите за компьютером?
- Hаоборот: я провожу время за компьютером, потому что девушки не хотят
проводить со мной время.
- Понятно.
- Мой компьютер - это моя душа: он моя невеста.
Read more... )
nuclight: (Default)
Увидел тут у [livejournal.com profile] metaclass ссылку на статью "Крах иллюзий" Роба Пайка (того самого, соавтора первого Unix'а, Plan 9 и других концептов), повествующую о кризисе научного развития IT в области системного ПО (исследования нафиг никому не нужны, интересуются финансовой отдачей).
Автор намеренно рассматривает проблему с пессимистической стороны. Не последним тормозом, кстати, является (по его мнению) Open Source (т.е. главным образом Linux, в рассматриваемой сфере).

Читать.
nuclight: (Default)
notebook# ping download.windowsupdate.com
PING download.windowsupdate.com.c.footprint.net (213.254.235.30): 56 data bytes
64 bytes from 213.254.235.30: icmp_seq=0 ttl=50 time=83.735 ms
64 bytes from 213.254.235.30: icmp_seq=1 ttl=50 time=84.035 ms
64 bytes from 213.254.235.30: icmp_seq=2 ttl=50 time=83.046 ms
^C
--- download.windowsupdate.com.c.footprint.net ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max/stddev = 83.046/83.605/84.035/0.414 ms

notebook# nmap -O 213.254.235.30

Starting nmap 3.90 ( http://www.insecure.org/nmap/ ) at 2005-10-27 13:43 NOVST
Interesting ports on 213.254.235.30:
(The 1666 ports scanned but not shown below are in state: closed)
PORT STATE SERVICE
80/tcp open http
445/tcp filtered microsoft-ds
Device type: general purpose
Running: FreeBSD 5.X
OS details: FreeBSD 5.0-RELEASE, FreeBSD 5.2 - 5.3, FreeBSD 5.2.1 (SPARC), FreeBSD 5.4-RELEASE

Uptime 38.191 days (since Mon Sep 19 09:10:53 2005)

Nmap finished: 1 IP address (1 host up) scanned in 94.159 seconds


Выловлено тут.
nuclight: (Default)
[livejournal.com profile] vitus_wagner пишет (via [livejournal.com profile] netch):
Ни одна из существующих моделей не обеспечивает сочетания одновременно
- соблюдения принципа фон Неймана(т.е. возможности обращения с программами как данными)
- простоты
- надежности.

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

Угу. Только я бы, вспоминая старый прикол про "красота девушки X её ум X её доступность = const", слегка поправил и добавил - здесь градации (с тем же пермножением). То есть, например, добавляя простоты в user-friendly linux-дистрибутивах, автоматически получаем снижение по другим шкалам, прежде всего надежности. О чем, собственно, [livejournal.com profile] vitus_wagner в исходном постинге и писал.
nuclight: (Default)
Таки наконец написал, сдал и защитил летнюю практику. Темой я себе выбрал написание клиент-серверной системы с unix-сервером. Чтобы, значится, научиться программировать под юниксы (ну в общем-то так и есть...) и все такое. Ну вот стало быть, летом я сначала колотил балду, потом три недели сочинял протокол ("может сегодня перевыполнить план и написать 2 абзаца?"), потом за 6 дней настрочил клиента на Delphi, без тестирования, ибо нечем. В процессе оценил удобства редактора Delphi, вроде autocompletion. Потом неспеша принялся за сервер.. опаньки, а тут в Томск пора ехать.
В Томске к этому делу изъявил желание подключиться сосед-линуксоид. Положили под CVS и поехали. Впрочем, писал он совершеннейшую чушь (в commands.c), пришлось переделывать.
В процессе, как водится, выловили огромное количество багов. Начиная от смешных, когда & вместо && в if вываливал сервер в корку сразу при старте, продолжая "невозможными", когда сервер терминировала проверка указателя на NULL там, где он казалось бы, ну никак не может попасть в этот кусок кода, если этот указатель равен NULL, и заканчивая вообще странными проблемами с портабельностью. Например, инициализацию демона с вызовами отадочных syslog() в процессе:
openlog(...);
//daemonize here
for (i=0; i < 20; i++) /*we guaranted to have at least 20 descriptors */
  close(i);            /* close them as W.R.Stevens suggests */
...
socket(); bind(); listen();
...
select(); //in endless loop

С этим куском обнаружились интересные вещи - сервер порт то слушал, то не слушал! Причем в зависимости от уровня записи отладочной инфы в syslog было разное поведение, тестировалось на FreeBSD 4.11 и Linux 2.6.11 (Slackware 10.2). В процессе разборок, когда уже пришлось спрашивать у опытных товарищей ([livejournal.com profile] netch'у привет, ага), выяснилось, что это тут трюки в syslog - он этот дескриптор перехватывал, а на разных системах разная реализация - тут глюки есть, там нет. Мораль: не закрывайте в демоне дескрипторы, кроме 0,1 и 2 (эти лучше открыть на /dev/null).

Итак, под конец этот простенький чат (многоканальный, а-ля IRC) заработал нормально. Качество кода, имхо... э-э-э... среднеопенсорсное :) Точнее, оставил на закуску один специфический race condition, с подробным описанием бага и путей решения в последнем commit'е.

Архив с этой поделкой (исходники клиента, сервера, CVS-репозиторий сервера, протокол и отчет по практике) выложен тут. Вполне может пригодиться кому как курсовая, например. Или просто поизучать на простом примере, как пишется сетевой сервер по модели однопроцессной FSM (FAQ fido7.ru.unix.prog, appendix 1, п. 2) - в этом случае также полезно посмотреть изменения от ревизии к ревизии для изучения ошибок :)

P.S. Программу в работе у меня никто не смотрел. Даже не спрашивали толком :)

February 2017

S M T W T F S
   1 234
567891011
12131415161718
19202122232425
262728    

Syndicate

RSS Atom

Style Credit

Expand Cut Tags

No cut tags
Page generated Aug. 20th, 2025 04:03 am
Powered by Dreamwidth Studios