bash.im ithappens.me zadolba.li

Программизмы

10698

Целая буква U

Привет из Бонча! Пишем контрольную лабу по циклам и вводу-выводу в С. Девушка моя, Юлька, юный программист, пишет первая, потом я. Она сдаёт свою программу успешно. Наша староста, у которой вариант совпадает с Юлькиным, просит Юльку помочь, так как я занят. Юлька так подсказала, эдак — не понимает староста. Тогда Юлька просто код фоткает и отдаёт. Всё равно не работает. Староста (полноватая блондинка, где блондинка — это не только цвет волос, но и состояние души и мозга) спрашивает: «А у тебя тоже не работает программа? Всё время нули выводит, да?» Юлька идёт разбираться. Проверяет код, понимает, что он идентичен её коду. Говорит: «Давай-ка, Лера, запусти программу, посмотрим, что она выводит».

Теперь, чтобы прочувствовать всю прелесть происходящего, текст задачи: «С клавиатуры семь раз ввести целые числа U и V. Для каждой пары значений вывести значение S = 100U, если U + V < 10, и 3 + 11V + 2U в противном случае».

Лера запускает программу, комментирует: «Во-о-от, программа выводит, типа, введите числа U и V. Вот, я ввожу U (нажимает клавишу U, потом пробел) и V (нажимает клавишу V) — и не работает!» (Делает детское обиженное лицо и разводит руками.)

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

Девушки, вы такие классные, когда прогаете! С прошедшим вас!

10690

ЗОЖ не обойдёшь

Вчера ближе к ночи отправился с товарищем в красный супермаркет. Набрали еды на неделю, товарища с двумя большими пакетами рассчитали, а за мной материализовалась симпатичная девушка и скромно попросила пропустить вперёд, чтобы успеть пробить две бутылочки пива (время 21:58, после 22:00 в области спиртное не продают — и пиво тоже).

По доброте душевной пропускаю девушку. Кассир пробивает — и девушка даёт банковскую карточку. Время 21:59:30, кассир медлит, но снять денежку с карты успевает, после чего стукает 22:00:00, и кассовый терминал благополучно блокирует продажу спиртного. Банковская транзакция проведена, а кассовый аппарат не разрешает продажу. Мы с другом хихикаем, девушка смущённо краснеет. Покупка не закрывается, ибо спиртное, и не отменяется, ибо денежка с карточки снята, а возвращать денежку на карточку банк не умеет.

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

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

10685

Линукс? Да, слышали

Однажды, что называется, припёрло, и решили мы взять на работу второго программера в помощь мне. Свободный график, белая зарплата четыре штуки зелени чистыми (дело в Москве было), соцпакет и все дела. Один минус: работать надо. Программировать под линукс. Знать ОС так, чтоб от зубов отлетало, не требовалось. О POSIX понятие иметь, gcc, gdb — малый джентльменский набор. Ну, и дебилизм в крайней форме не приветствовался.

Два года. Собеседования примерно раз в неделю (это после фильтрации кандидатов нашим HR). 80% в строгом соответствии с Этвудом не могли написать FizzBuzz-тест. Остальные не могли прочитать доку на английском, не имели представления о «взрывной» рекурсии и отрисовывали функцию вычисления чисел Фибоначчи в строгом соответствии с математическим определением. А далее — приз в студию: ни один кандидат не имел приличного понятия о линуксе. «Я видел, как коллега что-то в Убунте писал» — самый распространённый вариант знакомства.

Человека так и не нашли. Бабу-Ягу вырастили в своём коллективе, как в фильме Рязанова. Проект адскими усилиями сделали. Актуальность вакансии сошла на нет, и её закрыли. А недавно я узнал, что в похожей ситуации мой знакомый привёз программера аж из Челябинска.

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

10681

Стерильная компиляция

Пишу на Javа, используя сине-квадратную среду. Все, кто с ней сталкивался, знают, что там очень неплохой прекомпилятор.

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

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

10668

Особенности нормализации детей

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

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

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

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

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

Так вот, когда сообщение попадает в систему полнотекстового поиска, то слово «дети» приводится к морфоформе «ребёнок», в то время как модуль, который, собственно, считает статистику популярных слов, по умолчанию приводит слово «дети» к слову «дитя». Вот и не складываются эти разные дети и ребёнки в один детский сад.

Уф, нашли, полечили, запустили пересчёт. Волнуемся. Покурить всё равно не успеем, да и бросаем же, разве что чай быстренько налить — и бегом смотреть, как там наши дети. Ура, все детишки на месте, сложились, пересчитались, проанализировались. Счастье есть.

И вот не говорите мне, что у других разработчиков не бывает таких интересных демографических багов и таких тупнячков в коллективе!

10654

Некоторые предпочитают стриминг

Пришёл к выводу, что пора в отпуск, когда ляпнул годовалому сыну, рвущемуся в ванну купаться:

— Погоди, вода ещё не загрузилась!

10651

Индийский дренаж

Так уж заведено, что каждый программист обс… критикует код предшественника, но это, похоже, не только программистская специфика. У меня последовательно работали четыре сантехника, и я, побыв с другой стороны, понял, как чувствует себя заказчик.

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

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

10591

Who watches the watchdogs?

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

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

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

10526

Ни шага в сторону

Начальника моего по молодости коллеги не любили. Потому что работал на БЭСМ-6. Потому что программировал на автокоде (разновидность ассемблера такая была). А ещё потому, что на БЭСМ-6 была корпоративная многозадачность. Переключение с задачи на задачу происходило только тогда, когда исполняемая программа обращалась к функциям ОС или, например, к стандартной математической библиотеке.

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

Пришлось начальника повысить в должности, чтоб бросил программировать.