Как стать автором
Поиск
Написать публикацию
Обновить
-9
0.6

Пользователь

Отправить сообщение

Вот совсем не смоделированная ситуация из личного опыта.

Пилится ЕГРН. Назрел конфликт: мы (миграция данных, питонисты); бэкендщики, рубероиды; data engineers, XML-щицы.

Последние были крайне дружны с рубероидами, возможно, в чем-то от них зависимыми, следовательно, XSD у них выходили по согласованию с бэкендщиками, на миграцию, которая должна сформировать эти самые записи в XML по заданным схемам, внимания не обращали.

Мне как-то поручили то ли доделать, то ли облагородить модуль, который эти самые записи формировал. Изначально оно сидело в качестве pl/python хранимок в базах постгреса. Работало на голом lxml.

Первым делом я запросил документацию по тому, как выглядит стандарт XML записи. Мне показали репозиторий с XSD, рассказали, которые из схем касаются данного модуля. Что ж, XSD — это очень круто (без сарказма, до сих пор считаю его лучшим форматом описания формата обмена данными). Расчехляю PyXB, кормлю ему схемы… получаю жопу: в сгенерированных классах огромное количество анонимных, потому что девочки из data engineering посчитали лишним на каждый вложенный тип делать отдельное объявление, и так и оставили в XSD анонимные ad-hoc декларации типов.

Начинаю разгребать это дерьмо, натыкаюсь на декларации, где у типа есть поле object, которое определяется анонимным типом, у которого тоже есть поле object, которое тоже определяется анонимным типом. Ну, то есть, что-то вида SomeType.object.object, где оба object — анонимные (и, естественно, разные) типы.

PyXB такое прожевывает, но результатом будет являться анонимный тип с суффиксом вида «порядковый номер встреченного при разборе анонимного типа». Например, Java просто упадет, потому что два класса с именем Object в одном файле существовать не могут, не скомпилируется. Это, если вообще забыть про то, что происходит сокрытие встроенного класса Object. Даже статья на ibm.com про это была.

Пишу менеджеру, так и так, есть проблема, необходимо решить, потому как схемы меняются довольно часто, и при каждом изменении версии схемы приходится заново искать анонимные классы (нумерация постоянно съезжает) и обновлять маппинг в нашем генераторе выходных данных. При этом нет никаких разумных причин не дать анонимным типам имена.

Встреча:

Я: описываю проблему

Лид data engineers: да, проблема, нет, не титанические усилия с нашей стороны

Лид бэкендеров: нам половину бэка перелопатить придется, у нас всё на lxml (примечание от меня: если там lxml, то ничего им переписывать не придется, что так руками поля доставали, что так, всегда по строго заданному адресу)

Главный босс (менеджер менеджеров): а нахера?

Я: чтобы миграции не приходилось при каждом изменении схемы данных долго ползать и искать съехавшую нумерацию; чтобы любые другие потребители этих данных смогли работать с ними в удобном виде, а не только через lxml, как рубисты, которым, похоже, маппер не завезли; к примеру, Java (показываю на статью IBM)

Мой менеджер: ой, и всего-то? Нашёл из-за чего шум поднимать

Так и остались в схеме данных анонимные типы, схема укладки которых ломала парсеры в статически типизированных языках. А мы так и продолжили по несколько часов ползать по сгенерированным классам и обновлять маппинг анонимных типов.

А потом я уволился (по другой причине, исключительно связанной с неспособностью работодателя следовать закону при трудоустройстве).

А ещё чуть позже мне лично звонил главный менеджер главных менеджеров и просил вернуться, видимо, не смогли осилить собственную магию анонимных классов, порождаемую анонимными типами (но мы не сошлись в деньгах). Но это я злорадствую, конечно, я понятия не имею, с чем у них возникли трудности, что они решили попытаться вернуть меня в проект. Может, просто разбежались все.

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

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

Да нет же. Разработчикам гита следует намеренно сломать `push --force`. Котята, которые используют его неправильно, не смогут и починить. А пацаны, которые знают, что делают, знают и как починить.

Обычная трагедия пушек и воробьев, в общем. Малятки подумали, что они все kernel.org, и давай без разбора шмалять сложнейшим инструментом для управления сотнями и тысячами бранчей и патчей по своим «пет проектам» (которые не пет проекты, а всего лишь домашка на вайтишном курсе). Прямо, как дети, которые ставят на свой игровой комп Windows Server, «потому что десктопная винда говно, а серверная — кристаллизованное высококонцентрированное качество».

Ну что, сисадмины, на вашей улице перевернулся грузовик с белорусскими устрицами. Одна просьба: не продешевите на вопросе согласования оклада. Ни в итоговой сумме, ни в окладной её части.

Не иначе. Спец. олимпиада «назови аутентификацию авторизацией»

Оттуда, что аутентификация не заявлялась, из чего следует, что все пользователи анонимны.

Вопрос тот же: авторизация при анонимности пользователей.

А можно хотя бы один жизнеспособный пример авторизации в отношении анонимных пользователей?

Overkill на этапе выбора БД. Поскольку сервис заявлен, как крайне примитивный, а в метаданных очень сложно придумать отношения, то реляционная база данных здесь не нужна, и гораздо лучше подошла бы NoSQL база (например, GDB, MDB, dBase), которые работают вообще, как пулемет, имеют весьма лаконичный и строгий API и дадут огромный выигрыш уже тем, что этапы разбора запроса и планирование его выполнения отсутствуют как таковые.

Вспомним, хотя бы, бенчмарки openldap (штатный сторадж у нее GDB, если не изменяет память), которая (даже с парсером LDAP запроса) показывала сотни тысяч RPS в начале 2000-х, естественно, на железе того времени.

Будет у меня своя /8 (10/8 и 127/8 не предлагать), как у этих пацанов, и у всех, с кем общаюсь тоже своя /8, тогда с радостью. А то, что кто-то там что-то придумал — ни о чем не говорит. Мало ли тупых идей вполне умные люди способны нагенерировать.

If the use of "all ones" in a field of an IP address means "broadcast", using "all zeros" could be viewed as meaning "unspecified". There is probably no reason for such addresses to appear anywhere but as the source address of an ICMP Information Request datagram. However, as a notational convention, we refer to networks (as opposed to hosts) by using addresses with zero fields. For example, 36.0.0.0 means "network number 36" while 36.255.255.255 means "all hosts on network number 36".

Очень «полезный» RFC.

Во-первых, в этих наших интернетах мы постоянно оперируем сетями (префиксами), однако, наличие у этих префиксов на L2 среды для рассылки бродкастов не то, что предполагается, наоборот, было бы исключительной наивностью предполагать ее наличие, поэтому в общем случае никого не волнует.

Во-вторых, “network number 36” — это чушь собачья, поскольку существует 26 комбинаций определить префикс 36.0.0.0

В-третьих, как уже говорил, если следовать этому «стандарту» (а правильные стандарты содержат исчерпывающий перечень исключений, чего здесь не наблюдается), то в /31 мы имеем 1 unspecified и 1 broadcast. А хост куда сажать? А в /32 даже unspecified и broadcast конфликтуют.

В-четвертых, префикс с достаточной достоверностью определяется любым адресом из его диапазона плюс маской, поэтому указывать именно первый адрес из префикса в данном случае является хоть и достаточным условием, но не необходимым (всего лишь частный случай любого адреса)

Кстати:

In practice, broadcasts are usually used where multicasts are what is wanted; packets are broadcast at the hardware level, but filtering software in the receiving hosts gives the effect of multicasting

Прямо в «стандарте» пишут, что он не нужен.

В общем, «стандарт» от таких же ушлепков, которые автомобиль называют «колесо/автомобиль», дверной звонок «сигнальное устройство/дверной звонок», а IP «TCP/IP». Тоже мне ориентир для подражания.

Собственно, DHCP Opt28 отлично показывает, где серьезные пацаны вертели этот «стандарт».

Не буду утверждать, что это придумали цискари, но они этому буквально учат.

Бродкаст — всего лишь соглашение внутри бродкаст-сегмента. При условии, что все хосты в сегменте используют DHCP, кроме, собственно, DHCP-сервера, по понятным причинам, администратор может менять бродкаст-адрес хоть каждую минуту (ограничением веселья будет только lease time).

Однако, есть ещё одна засада: не все префиксы маршрутизируются в бродкаст-сегменты. Например, выделенный под модемный пул, или под пул VPN-подключений типа point-to-point. Такой префикс можно раздать реальным хостам весь, без остатка, включая первый адрес префикса и «бродкаст», которого в этом префиксе вообще нет.

<адрес сети> = <адрес хоста> & <нетмаска>

Тише-тише! А то сейчас набегут CCNP и будут с пеной у рта доказывать, что адрес сети — строго первый адрес в префиксе (а бродкаст — строго последний). Но на CCNP есть управа: /31 и /32. Тут их корёжит и схлопывает.

Что касается ifconfig, то линупсятиной отдаёт (хотя вывод маски не похож, не помню в линупсах hex-представление). На фряшечке (примерно 4.8) и, тем более, опёнке тех же времен, насколько помню, такие финты не проходили.

А тут мы уже вылезаем далеко за рамки обсуждения процессуальной проблематики судебного процесса по «взысканию» доли.

Это что за реализация IP стека такая кривая? Смысл в маске в количестве идущих подряд бит, которые не могут меняться в пределах данной подсети. Все реализации, что я щупал, неиллюзорно отказывались устанавливать адрес на интерфейсе, если в маске после первого встреченного нуля попадается единица.

Собственно, CIDR нотация как раз и указывает «количество фиксированных бит» в максимально простой и понятной форме.

После такого опыта несколько раз подумаю, прежде чем там что-то заказывать.

Ну и кому от этого хуже будет?

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

какой путь для вас более приемлем

От суммы зависит, конечно же. Если там доля оценивается в 100 тысяч рублей без всяких перспектив к росту, то и ладно. Но что-то думается мне, что в том случае было немножко сильно больше, на пару порядков, скорее всего.

Если не будет багодельни, QA останутся без работы.

Однако суд отказал: передача доли — это строго формальная процедура. Устных договорённостей, мессенджеров и показаний свидетелей недостаточно.

А этого человека точно юрист представлял? Факт выполнения работы, я так понимаю, ответчиком не оспаривался. Следовательно, у грамотного юриста сразу возник бы к ответчику вопрос о встречном предоставлении. А его не было. И вот тут на первый план выходят договоренности, пусть и в мессенджере. Их, как таковые, как я понимаю, ответчик тоже не оспаривал, лишь компрометировал эти доказательства под видом «это не на бумаге — значит, не было». И вот теперь уже дело начинает играть новыми красками:

  • работа выполнена

  • за работу обещана доля в компании

  • иного способа компенсации за данную работу нет

  • права на результат труда отчуждаются в пользу компании

Следовательно, у суда нет оснований в отказе обязать компанию передать долю. А то, что это формальный процесс, к делу не относится, поскольку есть всего лишь детали исполнения решения суда.

И да, на какой стадии данное дело остановилось? Хотя бы до кассации дошло?

За этим, естественно, необходимо обратиться к своему работодателю. Раз уж они такие крутые, то точно должны иметь и такой инструментарий в активе.

Зачем всё это, мистер Андерсон? Для чего? Неужели возня с лаптопами лучше DevBox, который готов к работе через несколько минут с момента нажатия кнопки «создать», несет на себе невообразимые по меркам любых лаптопов количества памяти, места на дисках, ядра процессора (вплоть до EPYC), а вместо электричества на домашнем счетчике потребляет только RDP?

бурлят

Бурлестают. И результаты потом тоже подтверждают, что это бурлеск.

1
23 ...

Информация

В рейтинге
3 251-й
Зарегистрирован
Активность