Miscellanea III

Видят пользователи список. В списке значения. Имена. Или числа какие. Или картинки. И частенько пользователи гадают, как оно отсортировано. Теории сортировки. Может, по цвету? Или по первой букве? Только разработчик знает, что сортировки явной там нет. Есть неявная — какой-нибудь default базы, из которой выгребают. А она может сортировать по primary key. Или использовать какой-нибудь служебный порядок типа natural в MongoDB. Почему? Да потому. Страшная тайна “сортировок” этой планеты.

Уверен, следующий кардинально новый рывок разработки — софт не для людей, но для животных. И не залипухи с рыбками для котов, но полноценные системы. Шлем VR хомяку с богатым внутренним миром. Экзоскелеты для мопсов, чтобы ротвейлеров кошмарили. Управляемые настроением кормилки и поилки для коров. Всё такое. Возможно, животные начнут эволюционировать, развиваясь от использования интерфейсов, тут-то и наступит эра зоокиберпанка.

Не стесняйтесь устраивать своим сервисам нагрузочное тестирование. Даже если штатно собираетесь жить под 10 RPS, влепите 1K RPS и посмотрите, как себя ведёт потребление ресурсов, как и куда деградирует приложение, ловите баги, которые стреляют на 100500-м запросе. Скучно, банально, но важно.

Абзац итальянской кухни: помимо Spaghetti code (лапшевидный код с огромным количеством ветвлений) есть ещё Ravioli code и Lasagna code. Равиоли — исходник состоит из множества маленьких атомарных кусочков, апофеоз декомпозиции с инкапсуляцией, от чего ориентироваться в этом блюде сложно, да и мелкой копипасты хватает. Лазанья — исходник состоит из слоёв (layers), общающихся друг с другом строго через строго определённые строгие интерфейсы, в чём по сути нет ничего плохого, но при упоротой реализации приводит к тому, что в рамках сервиса передача одного байта из одного модуля в другой превращается в приключение “байт отдать в layer A, там его сунут в layer B, откуда он пойдёт в layer C, а там подхватится в layer D”.

И снова про AI. Вангую, что самой массовой стратегией борьбы (игровой или натуральной) с AI будет хаотичный рандом. Что-то вроде направленного fuzz testing’а. Вы должны быть тем голубем из анекдота (“Как с голубем в шахматы играть — прилетел, перевернул фигуры, насрал и улетел, считая себя победившим”). Взять тех же Терминаторов. У них нейронки и базы внутри заточены на 99.99% человеческих поведений. Вы даже не успеете подумать о выстреле, а уже ответка прилетает. А вот если человек перед Терминатором голышом начнёт прыгать и гимн СССР орать на туркменском, есть вероятность закоротить схемы и вызвать зависание.

Добавить комментарий