Рубрика «отладка» - 25

За свой относительно небольшой опыт работы (порядка 6 лет) я довольно часто слышал фразы опытных и начинающих программистов — «Я чувствую, что это должно работать», «У меня есть ощущение, что этот метод работать не будет», «Давайте сделаем интуитивно-понятный интерфейс» и так далее. Всё это — проявление интуиции в процессе разработки и программировании.
О ней и пойдёт дальше разговор.

Интуитивное программирование - 1

Взято с сайта oprah.com

Читать полностью »

Однажды мне пришлось вычислять сумму векторов целых чисел.

Звучит необычно. Кому понадобится делать это в реальной жизни? Обычно такие вычисления встречаются только в задачках из начальной школы или бенчмарках компилятора. Но сейчас это случилось на самом деле.

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

  • её можно эффективно выполнить с помощью процессорной инструкции ADC (к сожалению, эта функция недоступна в C);
  • её можно выполнить на словах любого размера (можете добавить по желанию восьмибайтные значения, только результат следует уменьшить до двух байт и добавить все биты переполнения);
  • она нечувствительна к порядку следования байтов (удивительно, но это так).

Читать полностью »

tmux example

Вступление

Довольно долгое время я использовал в своей работе screen. Но со временем он меня перестал устраивать. Я начал искать альтернативы. Такой альтернативой является tmux. На многих порталах его описывают так: «Это тот-же screen, только на стероидах». Сначала я не мог понять почему такое сравнение пока не попробовал. Скажу честно, я на него не с первого раза перешел. Раза три-четыре пробовал, возвращался к screen’у. Но tmux все же победил.
Читать полностью »

В Go может быть запущенно больше миллиона goroutine, и этот механизм вызывает восторг до того момента, пока не появляется какая-либо проблема. Например, утечка памяти или dead-lock.

Первое, что хочется сделать это разобраться, посмотреть на то, что же происходит.
image

Это можно сделать так.

Читать полностью »

По следам аналогичной публикации о технических ошибках систем, приводящих к ошибкам в расчётах с клиентами, публикую обещанную историю с МТС. Не реклама. :)

Был август. До 2-го курса студента Василия Задёрганова (персональные данные изменены) оставалось несколько дней. Он был доволен летним интернетом от МТС на тарифе «МТС Коннект-4» по услуге «МТС-Планшет» — 4 ГБ трафика в месяц. И оставался последний день услуги и последний нескачанный гигабайт.

«Эх, скачаю фильм, и укачу на последние дни на природу!» — безмятежно подумал Василий. У него было просчитано всё. Он знал истории об облапошенных велосипедистах-любителях, у которых из-за незакрытого велозамка на прокате массово списывают тысячу рублей. Он знал, что вернут деньги лишь избранным, кто хорошо и красиво напишет об этом и прославит сервис на всю страну. Но это — не его путь. Он сделал всё, чтобы не пострадать. Он — стратег.

1) заранее для интернета завёл отдельную сим-карту;
2) заранее оставил для подлых крохоборов лишь 20 непотраченных рублей на счёте; а мог и меньше; но верил им, что побрезгуют такой мелочью;
3) в Личном Кабинете отключил опции законного жульничества — автоматической оплаты сверхлимитного трафика по повышенному тарифу;
4) там же отключил опцию «передавать трафик на услуге сверх лимита».

Вы поняли, какая перестраховка? Это вам не тракторист Федя, которого вы в этом сезоне обули на рекламе. Кто-то бы успокоился на отключении первой опции, а тут ему — вторая, не автоматическая. Вася — не такой.
… До конца его сим-карты оставалась пара часов.
Читать полностью »

Отладка вашей ОС: урок по выделению памяти - 1

Всё началось, как и многие другие расследования, с баг-репорта.

Название отчёта было довольно простым: «При HTTP-подключении iter_content медленно работает с чанками большого размера». Подобное название немедленно включило у меня в голове сирену по двум причинам. Во-первых, довольно сложно определить, что здесь означает «медленно»? Насколько медленно? Насколько велик «большой размер»? Во-вторых, если бы описанное проявлялось действительно серьёзно, то мы бы об этом уже знали. Метод iter_content используется давно, и если бы он существенно притормаживал в распространённом пользовательском режиме, то мимо нас такая информация не прошла бы.
Читать полностью »

Консоль в массы. Переход на светлую сторону. Часть первая - 1

Вступление

Всем привет! Данная серия статей — это текстовый вариант моего доклада на WSD в Киеве 26 ноября. Решил написать, чтобы дать более развернутое описание темам, которые были затронуты, а некоторые моменты уточнить. Кроме того, есть возможность рассмотреть больше примеров, услышать мнение от тебя, уважаемый читатель. И, конечно же, поделиться информацией с более широкой аудиторией.
Читать полностью »

В 1971 году СССР доставили на Марс первые в мире планетоходы «на лыжах», которые должны были щупом (динамический пенетрометр и гамма-лучевой плотномер) ткнуть поверхность, и сказать — Марс твердый или жидкий пыльный. Первый аппарат разбился 27 ноября, второй совершил мягкую посадку 2 декабря, но марсоходик не смог выбраться из «скорлупы» посадочного модуля, поэтому попытку не засчитали.

Прошло 25 лет.
4 июля 1997 года на Марс прилетел американский аппарат и привез «пришельца» с первым багом.

Первый баг на Марсе - 1
Кадр из к/ф «Марсианин». Главный герой держит в руках марсоход Sojourner

Проект был под угрозой, но мощные инструменты отладки операционной системы и отличная работа программистов на Земле (парни, что надо) позволили в кратчайшие сроки все быстренько исправить.
Читать полностью »

Система отчётов: как получать 50 млн. отчетов и сохранить Дзен - 1

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

Как провести связь третьего и четвертого поколения туда, где в ходу лишь 2G из-за того, что горы мешают прямой видимости базовых станций, а для установки дополнительных БС нет необходимых энергомощностей? Наш эксперт Константин Кильбер расскажет о соответствующем опыте компании МТС – на примере установки активного ретранслятора для радиорелейной линии в маленьком поселке в Республике Адыгея в 2015 году. Итак, передаем слово нашему специалисту.

image

Задача перед нами стояла непростая: обеспечить максимальную пропускную скорость от базовой станции в поселке Гузерипль, Республика Адыгея. Это такое место у подножия Главного Кавказского хребта, на высоте 670 метров над уровнем моря, с населением чуть более 100 человек.

Главной проблемой стали горы – они мешали прямой видимости радиорелейных станций (РРС), которые являются транспортной составляющей для базовых станций. Ранее был построен пассивный ретранслятор (без активного оборудования): две радиорелейные антенны, соединенные между собой волноводом. Сигнал от радиорелейной станции (РРС 1) приходит на одну антенну, через волновод сигнал попадает на вторую антенну, далее сигнал идет на вторую часть радиорелейной станции (РРС 2). Пропускная способность радиорелейной линии с пассивным ретранслятором составляла не более 30 Мбит/с, что для современной связи очень мало. При таком раскладе может работать только базовая станция 2G, а вот с 3G и LTE уже возникают сложности.

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js