История поиска одного бага

Debugging Довольно много времени потратил на поиск “плавающего” бага. За это время успел отрефакторить кучу кода, до которого руки не доходили ранее. Но баг не ловился. И в его поимке не смогли помочь ни Xcode Instruments, ни Xcode Analyzer (фронтэнд к статическому анализатору llvm).

Баг проявлялся редко и далеко не на всех девайсах. Я никак не мог понять условия его проявления. Пробовал записывать направление и температуру ветра, положение звезд на небе и длительность соседского ора. Но это никак не помогало в поиске проблемы.

Падения игры под отладчиком и backtrace давали BAD EXC, что как бы намекало на испорченную где-то ранее память. Но где именно? Статический анализатор, по идее, должен на раз находить access out of bounds. Но анализатор молчал, типа вообще все пучком.

От безысходности и обиды на самого себя, решил синхронизировать линуксовую версию с main branch, т.к. в процессе поиска бага был сделан серьезный рефакторинг кода. Ну и очевидно, что погонять движок под valgrind никогда лишним не будет.
И valgrind сразу же нашел memory corruption (тот самый “плавающий” баг, на поиски которого я убил много времени. И мелкий ничего не значащий memory leak.

Linux и valgrind рулят!

Неизвестный Синклер

ZX-Spectrum 48

ZX-Spectrum 48

Весьма занимательное чтиво об истории становления компьютера ZX-Spectrum, Клайве Синклере и компании Sinclair Research.

Цветной, с полноценной клавиатурой, дешевый

К декабрю 1981 года количество проданных ZX81 превысило 250 тысяч. На волне этого успеха, как пена, всплыли недостатки, свойственные полукалькулятору-полукомпьютеру, которым, по сути, и являлся ZX81. Прежде всего, это было отсутствие цветной графики и недостаточный даже по меркам 1981 года объем ОЗУ (RAM). И если недостаток памяти компенсировался низкой ценой и возможностью «прилепить» дополнительные килобайты в виде коробочки RAM Pack, то отсутствие цвета было для ZX81 неисправимо.

В начале 80-х годов в Великобритании больше половины выпускаемых и импортируемых телевизоров — цветные. В Америке аналогичные показатели достигали 80 %. Черно-белый компьютер, подключенный к цветному телевизору, выглядел «инвалидом». И хотя на витринах компьютерных магазинов уже красовались цветные Apple, Commodore и Acorn, сделать очередной ZX цветным было очень непросто.

По аналогии с предыдущими моделями, в качестве монитора предполагалось использовать телевизор. Только теперь вместо черно-белой картинки (ZX80, ZX81) нужно было передавать цветную. Сложность состояла в формировании качественного видеосигнала в стандарте PAL. Далее сигнал преобразовывался в высокочастотный (UHF). Это позволяло подсоединить телевизор через антенный (UHF) вход. Добиться качественного изображения было непросто, но такое решение давало максимально простое подключение.

ZX-Spectrum +

ZX-Spectrum +

Полная история доступна по ссылкам Неизвестный Синклер ч.1 и Неизвестный Синклер ч.2.

Сказ о том, как сильные магниты перевозили

Слышали, как ящик с магнитами в поезде везли? Ну, там одни в купе ящик с сильными магнитами везли, а другие тоже ящик, но с часами на продажу. И на руках часы еще у всех. Слава. Не Партии, Правительству, Президенту, т. е. Генеральному секретарю, лично и дорогому. А часы Слава, или Командирские, а может быть и простой Полет. Или приборы всякие, что магнитов боятся, несмотря на то, что дорогие очень. И все сразу в одном купе. Часы, конечно, встали у всех, приборы вышли из строя и т. д. Все знают байку? Мне, так, часто рассказывали.

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

Билл Гейтс – 11 жизненных советов

  • Жизнь несправедлива, привыкай к этому.
  • Миру наплевать на твою самооценку. Люди ждут что ты сначала что-то сделаешь, а уже потом будешь гордиться этим.
  • Ты не будешь зарабатывать $40,000 сразу после школы. Чтобы стать вице-президентом и заиметь телефон в машине придется попотеть.
  • Если ты думаешь твой учитель слишком требователен, посмотрим что ты скажешь о своем боссе.
  • Переворачивать бургеры в McDonald не ниже твоего достоинства. У твоих дедов было другое слово для такой работы: шанс.
  • Если ты облажался, в этом нет вины твоих родителей. Если ты ошибся, не ной, а учись на ошибках.
  • До того как ты родился, твои родители не были такими нудными как сейчас. Они стали такими оплачивая твое образование, стирая твои штаны и слушая твои россказни о том, какой ты клевый чувак. Поэтому перед тем как спасать джунгли от врагов в виде старшего поколения, приберись в своей комнате.
  • Возможно в твоей школе учеников не делили на победителей и лузеров. В некоторых школах тебе дадут возможность переделать домашку до тех пор, пока ты не сделаешь все правильно. Это не имеет ни малейшего отношения к тому что происходит в реальной жизни.
  • Жизнь не делится на семестры. В ней не бывает летних каникул и очень немногие работодатели заинтересованы помочь тебе найти себя. Тебе придется заниматься этим в свободное от работы время.
  • Картинка в телевизоре не имеет отношения жизни. В жизни люди идут на работу, а не просиживают штаны в кофейнях.
  • Дружи с ботанами. Не исключено, что в итоге один из них станет твоим боссом.

Украдено с LOR.

UPD:
14 правил Чарльза Сайкса, более известные как 11 Правил Билла Гейтса.

Linux и Chromium

Вот так “работает у меня Chromium. Сборка бинарная. Некоторые сайты он отображает, большинство нет.
В динамике это выглядит так – вводим адрес, грузится страница, рендерится, через секунду-пол она перекрывается этой фигней. Если нажать Ctrl + T (открыть новую закладку), то сразу получаем эту страницу.
Раньше Хром “радовал” меня падениями при попытке открыть локально картинку в формате JPEG. В консоль и лог ничего не писал. Просто тихо падал. С другими форматами у него проблем я не замечал.
За приличное время использования Chromium (тогда он еще работал, хотя периодически и доставал сообщениями о недоступности страницы) я не нашел ничего сильно выдающегося относительно других браузеров.

Так что теперь я снова пересел на “тормозной” Firefox + Vimperator + NoScript + Flashblock.

Венгерская нотация

Статья “Как заставить неправильный код выглядеть неправильно”, поясняет в чем отличие Венгерской для Приложений (Apps Hungarian) от Системной Венгерской.
Я давно перестал использовать Венгерскую нотацию, которая на самом деле была Системной Венгерской. Но только сейчас понял, почему мне она казалась несколько странной.

Системная Венгерская:

char szVar[]; // ясен только тип переменной, но не ее назначение
unsigned long ulVar; // аналогично

Венгерская для Приложений:

float spriteWidth; // ширина спрайта
int currentPage; // индекс текущей страницы

Более подробно написано в статье и в ссылках в конце статьи.

ADSL-модем “зроблена у Беларуси”

Белорусский ADS-модем “Промсвязь ADS модем М-101 А” – белая, далеко не маленькая коробка. Кто был дизайнером не знаю. Но мозгов у него не было – часть портов повернуты языками вниз, часть вверх. Крепление на стену предполагается только в одном положении – кабелями вверх.
Шел этот хлам без упаковки, с совершенно бесполезной инструкцией на пару страничек. В которой не были описаны дефольтные настройки (IP, логин/пароль к админке). Кроме того, модем был не настроен.
» Read more

1 2 3 9