bash.im ithappens.me zadolba.li
13236

Ваше место под мостом

7 апреля 2015, 08:12

Знаете, некоторых людей надо называть не программистами, а погромистами.

Средней крупности компания. Свой штат кодеров размером в два десятка рукопар. Случилось так, что три четверти отдела заменили в довольно короткий срок. Кто круто заболел, кто ушёл из жизни, кто в декрет, кто на ПМЖ — в общем, кто куда. Новые люди и мели по-новому, так сказать. В том числе пришёл и новый начальник отдела.

И тут сверху пришёл приказ: «Реализовать программу доступа в рабочие помещения и к компьютерам по смарт-картам». А кодеры что? Кодеры — делай. Программаторы в наличии, софт пишется, чистые смарт-карты закуплены, сидят, красноглазят.

Вроде всё окей, десяток тестов, три беты и релиз — всё работает. Вроде все сотрудники должны радоваться жизни и стать тяжелее ещё на пару граммов пластика. Ан нет — не прошло и двух дней, как прибегает инженер: не работает карта. Надо сказать, что по причине перепада напряжения у инженера и бесперебойник сдох, и системник выгорел. Поставили новый. Пришли, подключили программатор к USB-порту — не работает. Подключили к другому — не работает. Задняя панель — не работает. Перепаяли новые порты — не работает. Ну, думают, мистика. Взяли новый программатор — работает. Так и оставили.

Но ведь интересно же! Проверили программатор — вроде рабочий, нигде ни КЗ на плате, ни микротрещин, дорожки целые, контакты целые, всё должно быть в порядке! А не работает. Мистика. Стали копать софт.

И вот тут наступило просветление. Оказывается, начальнику отдела было сказано «усилить безопасность доступа к ПК», и решил он втихаря прикрутить к софтине проверку по ID оборудования. Софтина вшивалась в программатор, при первом подключении считывала ID USB-порта, в который был подключён программатор, запоминала его и при переподключении производила проверку на соответствие. А сам программатор переводила в режим считывания, чтобы дюже умный юзвер в отделе кодеров не смог раскопать эту фичу.

Естественно, баг поправили, но, сказать по правде, провозились мы добрых две недели.

А начальнику отдела товарищи сверху провели противопараноидальные процедуры.

13235

Онлайн-консалтинг в пустоту

7 апреля 2015, 08:00

Странные дела происходят на этом сайте. Написал, к примеру, человек, как завис на полдня с феерически глупой ошибкой — и внезапно на следующий день появится пост, где автор подробно рассказывает, как он классно продумывает архитектуру. Если хохма случилась из-за недостаточного тестирования — жди поста про то, как славно человек юзает юнит-тесты. Нарвался один линуксоид на определённую багу в определённой сборке g++ — сразу появился пост про классные вычисления с плавающей точкой. Сделал человек ошибку — и кто-то пишет, что у него ошибок не бывает. Мучился человек с каким-нибудь языком программирования — точно жди поста о том, как надо выбирать инструменты для программирования. Из последнего: при тестировании индус попортил базу данных, и через день появился пост, как славно хранить БД в Git…

Загнал несколько подобных постов в анализатор, благо софт в конторе у меня позволяет. Вероятность того, что их писал один человек — больше 80%. Однако… Делаем выводы: среди нас есть достигший того, чего достичь нельзя ни по научному мировоззрению, ни по религиозному — абсолютной истины. Ибо её нет — или, как вариант, абсолютная истина доступна только Всевышнему. Комментировать не будем, примем как факт.

Всегда думал, что самоутверждаться нужно в своём коллективе, да и анонимность в таком деле вредит. Народ должен знать, на кого молиться. Видимо, товарищу в родном коллективе самоутверждаться уже бесполезно, поэтому посты идут на этот сайт. Тогда мне мне жалко, что такой экземпляр не постит своё фото под текстами — молиться не на кого. Хотя возможно, что этот всеблагой богоподобный айтишник анонимно и бесплатно сеет с бреющего полёта разумное и вечное… Онлайн-консалтинг в пустоту в стиле Робина Гуда.

Вообще-то мне казалось, что на этот сайт ходят отдохнуть, посмеяться над собой и другими. Ибо смех над собственными просчётами полезнее всяких консультаций. И тем, кто тут смеётся над собой, крутизну доказывать не надо. Точно знаю: среди них есть те, кто рулит электростанциями, моделирует разрушения астероидов ядерными зарядами или строит искусственный интеллект. В своих областях таких считают по пальцам одной руки. А они тут просто над глупостями смеются.

Ну, а последователям Робина Гуда — в лес. Координаты Шервудского леса узнайте в Google Maps, а по приезде уточните у шерифа.

13234

Тлензадание

6 апреля 2015, 08:24

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

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

Через пару лет довелось поработать в коллективе «настоящих программистов». И тут я понял разницу: я-то как работаю? Выясняю потребности заказчика, что он хочет, что он придумал, обсуждаю, предлагаю варианты и потом уже делаю, максимально просто, чтобы не напрягаться. Иногда — с индийским кодом, но чтобы задача решалась.

А тут — «дайте детальное ТЗ». Заказчик в ступоре: он хочет кнопку «Сделать хорошо!» и не очень понимает, как именно это сделать, поэтому на вопрос «детальное ТЗ» он начинает выдумывать отсебятину в меру своей фантазии. Рисуется увиденный где-то интерфейс, всё это сопровождается комментариями «ну, вот как-то примерно так», а потом программисты честно по ТЗ лепят ему это самое «как-нибудь», не забыв аккуратно оформить исходники и воткнуть пару пасхалок, понятных только им самим. Программисты хорошие, но… ТЗ соответствует? Да. Задачу решает? Ну, какое ТЗ, так и решает.

Я бы сейчас про это не вспомнил, если бы не одна из историй на этом сайте, про настройки фильтра и три пола: мужской, женский и детский. Ну чего же тут непонятного? Какой-то товар у заказчика может иметь набор свойств вроде веса и размера, при этом предназначен для мужчин, женщин и детей. К примеру — велосипеды, они как раз могут иметь размер и быть рассчитаны на мужчин, женщин и детей.

А вот настоящему программисту это непонятно и смешно: дурацкое ТЗ какое-то!

Да, тест прав: я не программист.

13233

Всё пропало, работаем дальше

6 апреля 2015, 08:12

Не, ребята, вы как хотите, а радикальные методы — именно то, что доктор прописал. Не согласны? Попробую убедить.

Допустим, у нас супер-пупер-система, в которую 100500 лет вносились изменения и патчи «по желанию заказчика». Она стабильно работает, данные лежат на RAID-массиве, ничего не предвещает беды, но в здании происходит пожар, и серверная выгорает дотла.

Что, каким словом вы сейчас охарактеризовали ситуацию? Нет, это всего лишь затруднение и перерыв в работе.

Временный сервер поднимем в уцелевшем помещении, накатим на него свежую ОС, бэкап системы и бэкап базы. Бессонная ночь — но утром уже всё работает, а генеральный читает служебку о необходимости выделения средств на поддержание актуального резервного сервера.

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

Почему система контроля версий, а не банальный бэкап? А это на другой случай, если после очередной доработки всё сломается, чтобы можно было не только откатиться к предыдущей версии, но и увидеть, что, собственно говоря, было причиной.

А любителям вносить правки в работающую систему — большой и пламенный привет!

13232

Ищу носителя горящих глаз

6 апреля 2015, 08:00

Прочёл историю про набор персонала. Подумал, как мне со своим 20-летним опытом удовлетворить этого невзыскательного нанимателя, если я к нему попаду в качестве соискателя. И понял, что к нему я никогда не попаду. Наверное, зря: у него есть практика, он поддерживает способность к самообучению. Но подобная практика опроса при приёме на работу не совсем верна. Когда я принимаю на работу, я спрашиваю соискателя об успешных проектах и уже внутри проекта копаю в темах. Кстати, большинство соискателей — социопаты и про свои успешные проекты вспоминают с трудом.

Если бы принимали меня, то в ответ про Linux я бы честно сказал, что его не знаю. Практика заставила настраивать DNS (с A, PTR и MX-записями) на «фряхе», поставить Убунту-сервер и нахлобучивать на него Заббикс. А ещё долго ковыряться в настройках iptables на чужих линуксах, чтобы они хозяев признавали…

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

Вопрос про экранированную витую пару, наверное, нужен. Однако я бы ответил нанимателю, что там, где требуется именно экранированная, лучше забодяжить оптику. От греха. Видел экранированную витую пару, соединявшую до поры до времени на 80 метрах два девайса, с экранами, выведенными с обоих сторон под джеки с экраном. Всё было прекрасно, пока земля на одной из сторон не умерла на питании с заземлением. А фазы были разные. Ну, в итоге чуток плазмы и интересный оплавленный шнурок в пыли за навесным потолком. Раньше такие же приколы были, когда землили коаксиал с обеих сторон.

Свитчи с хабами я не путаю, однако соискателей понимаю: на сленге уже лет десять неуправляемый L2-свитч весь мир называет хабом. Функции, как ни странно, те же, а то, что не орёт на каждый пакет по широковещалке — ну и хорошо. Последний хаб, который я гуглил по маркировке, отозвался страничкой «Лучший товар 1997 года».

Порты почты, веба и HTTPS, как ни странно, ещё помню, как и пару десятков других. Забываю — гуглю. То, что UDP не гарантирует доставку, тоже помню. Однако на практике TCP, оказывается, тоже плохо гарантирует доставку пакетов, если работает внутри глючной VPN, которая свой трафик преобразует в UDP. Не, конечно, пытается гарантировать. но у него не всегда это получается… А вот про уровни выше третьей модели OSI я бы сам кого-нибудь спросил. В RFC одно написано, а в жизни всё, что выше Layer 3 — уже хаос. Ниже нельзя: трафика не будет. Про MTU — песня отдельная: половина вендоров железа и почти все софта почему-то игнорировали RFC долго, а современные файрволы идут изначально с запретом всего ICMP по умолчанию. Так что это, как правило, авторская работа.

Про APIPA я бы, наверное, тоже не вспомнил, особенно если меня до этого долго мурыжили по дополнительным разделам DHCP-сервера (шлюз, DNS, NTP и ещё до кучи). Вот если бы спросили «по IP-адресу», тогда да…

В блоке питания PC 12 и 5 вольт я всегда ищу тестером. Ибо разные они мне в жизни попадались, блоки питания. И цвет проводов ничего не гарантирует. Устанавливал я один раз блок, у которого все провода были белыми. Сигналы BIOS, на мой взгляд, если их больше одного, сообщают о необходимости вспомнить маркировку материнской платы и загуглить, что они хотят нам сказать своим пищанием. На ноуте старичке 2007 года, с которого пишу, два сигнала всегда говорят, что кулер неисправен. Врёт BIOS. Работает кулер. А ноут не променяю: в нём все коммуникации есть, а если каких нет, то при надобности будут.

Про телефонию — ну, 64К на один поток голоса. E1 — 2048К (в битах, естественно). Делить лень. О, калькулятор сказал, что 32. Да, там ещё синхронизация есть на два, так что 30 каналов вроде. А вы пробовали по этому E1 ещё и передавать данные, когда 30 придурков почти одновременно названивают, а QoS, естественно, выставлен на приоритет голосового трафика? Какая разница, что человек знает это число 30? Пусть лучше расскажет, как данные передать.

Вот я думаю, что автору как соискатель не подхожу: нет у меня системных (по его опросам) знаний. Да и про базы данных я не знаю ничего. Загуглить, что такое SELECT, и написать его, наверное, могу, но практики нет.

Так что плохой я соискатель, наверное.

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

13231

Кесарю — чижевское

Хоть я и юрист, я регулярно почитываю IT happens. И недавно вспомнил, что и у меня есть история из мира IT, которую я могу рассказать.

Дело было в далёком 1997 году, мне было десять лет, и я вовсю развлекался своим первым компом с Pentium 133 на борту. Немножко программирования, изучение винды и, само собой, игры. Играл я по вечерам, сделав уроки, и во время, когда случилась эта история, в Caesar III.

Однажды вечером стали происходить странные вещи: мышь переставала работать на две секунды примерно через каждые две секунды. Очень неудобно играть, как вы понимаете. В попытке найти причину я перепробовал всё: менял мышей, переставлял ПО, искал ответы в журналах. Мучения мои были неиллюзорны, но наличие свободного времени и желание играть не оставляли мне выбора.

Прошло несколько недель. Однажды, когда моя мама ушла в детскую укладывать спать моего младшего брата, снова начались сбои. Внезапно смутная догадка посетила меня, и я направился в комнату. Открыв дверь, я увидел её — люстру Чижевского, подвешенную к потолку. Уже зная, что я прав, как во сне я наблюдал непрерывный цикл: щёлк — две секунды — щёлк — две секунды. Не слыша вопросов матери, почему я им мешаю, я выключил аппарат и побежал к компу.

Да, это была она. Да! Я прибежал снова в детскую, снова включил люстру, снова к компьютеру — это она. Счастье десятилетнего мальчишки, который нашёл причину своих ежевечерних страданий, невообразимо.

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

После разгадки несколько недель мы спорили, что важнее — компьютер или ионизированный воздух, пока не пришли к компромиссу, но к какому — хоть убейте, не помню.

13230

Семь бед — один рестор

5 апреля 2015, 08:00

Пословицу «Семь бед — один ресет» я услышал, когда был ещё мало разбирающимся в компьютерах подростком. Она стала для меня своего рода аксиомой, ведь во времена Windows ME, XP без сервис-паков и Vista (особенно когда она была ещё только «Лонгхорном») тормоза и зависания и так не слишком сильной машинки легче всего решались именно нажатием на эту волшебную кнопку, а потеря данных обычно сводилась к 15–20 минутам несохранённой игры.

Чуть позже, когда я уже собирал и разбирал компьютер на время, а установка системы стала простым и понятным процессом, к панацеям была с лёгкой руки записана полная переустановка ОС. Ведь если запорол что-то кривыми драйверами или удалил какой-то «неоправданно большой» файл с такого маленького раздела С:, то вместо того, чтобы долго искать решение проблемы (а Гугл тогда ещё не был таким всезнающим, как сегодня), можно было за час по накатанной процедуре полностью переустановить систему. Опять-таки, потеря данных тогда была минимальной, ведь всегда был раздел D:, на котором хранилось «самое важное».

Уже когда я был начинающим айтишником, мне быстро и доходчиво объяснили, что необоснованный ресет компьютера в бухгалтерии может закончиться истерикой и выговором со штрафом, а система, полеченная от знакомой болячки через Safe Mode, а не переустановкой, экономит очень много времени и усилий по восстановлению очень древнего и уже не поддерживаемого, но такого необходимого софта. Именно тогда я раз и навсегда решил, что радикальные методы — это не наше и использовать их можно только в самом крайнем случае.

Сейчас я работаю в компании, которая пишет очень специфический софт для очень специфических клиентов с базой данных на основе PostgreSQL. Так как и софт и клиенты специфические, то в каждую конкретную БД могут вноситься точечные изменения по просьбе клиента. Все изменения документируются и учитываются в последующих патчах. Я работаю в команде, отвечающей за установку и обновления, а также решение внезапных проблем, но у каждого региона есть команда техников, которые должны решать мелкие проблемы самостоятельно и передавать нам то, что решить уже не в состоянии.

Это всё была присказка, а сказка начинается скорее как анекдот.

Итак, встретились как-то раз индус и русский. Индус должен был тестировать новую версию софта перед обновлением, а русский по мере возможности помогать. Звонят они как-то и говорят: так и так, есть проблема, программа не поднимается, выдаёт кучу ошибок, всю голову уже сломали, но понять ничего не можем.

Так как эту конкретную систему ставил и базово проверял я сам, то сразу почуял неладное. Лезу в систему — правда не поднимается, в логах полная истерика, ошибок столько, что читать сложно, но через какое-то время понимаю, что всё сводится к чтению данных из БД. Лезу в БД, первым делом проверяю версию и наличие хоть каких-то данных. Версия правильная, записи существуют, тогда почему же оно не работает? На всякий случай проверяю, когда установлена БД. Так, что значит три дня назад? Я ж систему на проверку уже две недели как передал!

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

Спрашиваю индуса, что делал. Говорит, что начал тестировать систему, но некоторые конфигурации через клиент у него «по-старому» не вносились, поэтому он их сделал напрямую через БД. Ясно, через клиент срабатывала «защита от дурака», но так как текст ошибки читать недосуг, то этот самый дурак кривые параметры запихал в БД напрямую, потому что там такой защиты нет.

Идём опять к русскому — сначала DROP DATABASE, потом CREATE DATABASE по новой схеме и затем pg_restore на всякий случай с флагом -c, чтобы быстрее. Откуда бэкап взял? Ну так вот же он. Фух, теперь всё ясно: бэкап брался с живой системы, со старой версии БД. Естественно, на новую схему восстановился он криво, а логи читать — это не для нас, система-то тестовая все равно.

Ладно, восстанавливаем старую базу со старой схемой, патчим до новой версии, проверяем систему. Два имейла — и волшебные пендели и индусу, и русскому обеспечены. Чёрт, как так рабочий день закончился? Я ж сегодня ничего не успел… Ясно, опять из дома на выходных работать.

Ребят, честное слово, пословица «Семь раз отмерь, один раз отрежь» намного умнее. Лучше сначала инструкции перечитайте или спросите. Радикальные методы — это не наше, правда-правда.

13229

Final Fantasy вслепую

4 апреля 2015, 08:12

Люблю старые приставочные игры, до сих пор играю на «Фамикоме» и «Сеге», но больше всего мне нравятся игры для «Супер-Нинтендо». Сейчас приставка стоит больших денег и есть некоторые проблемы с картриджами, поэтому единственным выходом был эмулятор.

Как-то на днях я случайно забрёл в магазинчик, торгующий б/у комплектухой к компам, вспомнить молодость, так сказать. Руки зачесались, и в голове сразу родился План. Берём мамку на Атоме с пассивным охлаждением, покупаем корпус Mini-ITX в стиле игровой консоли, накатываем ось с эмуляторами, а в тумбе под телевизором как раз есть подходящее место. Я сразу взял мамку в сборе (Атом 1,6, два гига оперативки, встроенное видео с разъёмом VGA), винчестер был дома, корпус заказал в соседнем магазине. Расходов всего на 4000 рублей, а получилась отличная система для запуска эмуляторов и нетребовательных нативных игр.

Всё собрал, протестировал, эмуляторы работают. Красота! Поставил свою мегаконсоль на место, протянул провода. Разворачиваю телевизор, сморю на разъёмы: антенна, тарелка, несколько USB и HDMI, LAN, CI, SCART, AV, гнездо наушников, аудиовход…

А входа VGA нет.

13228

Лихо закручено

4 апреля 2015, 08:00

Сидим мы как-то с мужем за компами бок о бок, занимаемся своими делами. Как вдруг — бац! — свет вырубается. Упсами мы всё время обзавестись собираемся, но никак не соберёмся. Поэтому компы, жалобно моргнув экранами, вырубаются тоже.

Через пару минут электричество снова побежало по проводам, но у мужа комп включился, а у меня нет. Сколько я ни тыкала кнопку, ни щёлкала переключателем на БП и ни ждала с отключённым кабелем питания — дохлый номер. И сильные подозрения насчёт какого-нибудь не менее дохлого компонента системника.

Время было уже позднее, муж пошёл спать, ибо вставать рано, а я упёрлась: не пойду, пока не выясню, в чём дело!

Что же делать, с чего начать? Мультиметра дома нет, да и отвёртка с трудом отыскалась. Битых два часа я раскурочивала системник и осматривала материнку и плату вскрытого блока питания на предмет погорелостей, вздутых кондёров и прочих возможных повреждений — всё чисто. И только тут до меня дошло, что вообще-то неплохо было бы для начала проверить БП отдельно от прочего добра.

Подключать к компу мужа не вариант — мало ли, вдруг и у него что-то сгорит. Вспомнила про метод «замкнуть чёрный и зелёный провод в коннекторе питания материнки». Но чем? Как назло, в доме ни одной скрепки, шпильки и т. д. Меня осенило: беру скрутку для проводов, одну из тех, которые в изобилии валялись в коробке из-под железа, путём зачистки концов оголяю скрытую внутри проволоку, сгибаю скрутку U-образно… Вуаля! Сую это доморощенное изделие в означенные дырки коннектора, подключаю на всякий нагрузку в виде DVD-ROM, который не жалко, включаю питание… Блок тихо заводится и работает как ни в чём не бывало.

Но это меня не то чтобы обрадовало. Значит, проблема с мамкой или процессором. Сижу я в тихой задумчивости, попутно в -надцатый раз обозревая поверхность материнки, и вдруг меня что-то осеняет. Блок питания подключается на своё место, а самодельный стартер из скрутки подносится к контактам PWR_ON на мамке. POST, загрузка ОС — всё в порядке.

Оказывается, просто в кнопке включения контакт отошёл, а я ведь уже морально приготовилась менять компьютерные запчасти.