Pull to refresh

Comments 43

Задним числом все умны, но неужели нельзя было сделать триггер на 90% для оповещения DBA/SA?

В этом и состоит главная проблема алертинга — правила алертинга появляются после инцидентов, а не до. Всё очень сложно предусмотреть заранее.

О, серьёзно? То есть проблема с теми же айпишниками и системным временем никого ничему не научила и за четыре года эволюции проекта никто не осознал, что аудитория как-то разрослась?

Предварительный рефакторинг не нужен.

Думаю создатели ресурса изначально не предполагали, что он станет настолько популярным. А потом навалились другие таски, и никто не задумывался, тем более что бэкапы небось все время делают — ведь по сути никто не пострадал.
UFO just landed and posted this here
В ней могло быть и меньше 4. Но для этого всё равно надо иногда смотреть внутрь базы.

Такой триггер не имеет смысла. Тот, кто знает о возможной проблеме — он сразу закладывает 64 бита. А тот кто не знает — он и про триггер не догадается.

Нигде нет информации, сколько конкретно из 16 млн школьников хотя бы залогинилось 20 января?

Баг конечно забавный и поучительный, но «потеря домашней работы» явно не критичная…
Тут критична не столь «потеря домашней работы», а тот факт что в продукте для пользователей затаился подобный баг. А если вместо кода школьников хранилась бы история болезней пациентов? В общем мотать на ус.
Кажется продукт некоммерческий. С чего бы им вообще кому либо что либо обещать? Они делают проект из альтруистических побуждений. А вы с них ещё чего-то требуете.
Если я альтруистически делаю автомобиль — у него не должны на 100т.км пробега отваливаться колеса. Особенно когда им пользуются другие. И продукт для пользователей != коммерческий продукт.
Никто никому ничего не должен.
К слову, ребята достойно вышли из положения. Не зассали. Спокойно объявили о произошедшем инциденте, признали свои ошибки, закрыли сервис, внесли корректировки и отчитались.
Профессионально и вполне качественно.
Если посмотреть на эту проблему философски, то 20 января 2017 года ученики на курсах программирования получили по-настоящему ценный практический урок из реального мира.

Думаю что некоторые поняли то, что нужно в программках просто для каждой переменной давать float/строку.
И потом получать оценку в 4.9999999997 балла.
С отбрасыванием дробной части вместо округления в формировании ведомостей и других учебных документов
А зарплату надо считать на PHP и JS, с переменными типа float/строка, желательно ещё и чередуя типы на разных этапах вычислений.
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
Конечно зависит, любое «золотое правило» имеет исключения. Вот только проблема с 32-битным ключом возникает намного чаще, чем проблема из-за того, что ключ был bigint, даже сложно представить, когда это будет иметь существенное отрицательное влияние.
UFO just landed and posted this here

Только не индексы, а суррогатные ключи.

UFO just landed and posted this here
UFO just landed and posted this here

Это называется "внешний ключ", а не "внешний индекс".

вроде бы UUID тоже хорошо работает, и от подобных проблем неплохо застрахован

Там свои приколы. Например, куча утилит для ORM для генерации модели по базе или базы по модели не понимает как это UUID может генерироваться на стороне СУБД. А это обычно требуется если его надо сделать последовательным.


А последовательным его делать надо, чтобы записи в кластерный индекс были локальные, а не по всему объему...

"Я сделал домашку, но 32-битный индекс переполнился" :-)

Тебе все равно никто не поверит.jpg

UFO just landed and posted this here

Дааа, вот также помню в X-COM: UFO Defense, качаешь солдат качаешь, качаешь-качаешь, а потом у них характеристики становятся больше 255 и их приходится отправлять в отставку

UFO just landed and posted this here
Ну тогда уж вспомним еще Цивилизацию, где когда ИИ играл за Индию и прокачивал максимальный пацифизм, переменная агрессии переполнялась через ноль до максимального значения, у Ганди сносило крышу, и он шел всех кромсать в капусту…
Не в отставку, а в элитный отряд, который пойдет на штурм марсианской базы в конце. Единственное нужно успеть отравить в резерв за одну миссию до переполнения одной из критически важных характеристик типа скорости (у меня 1м чаще всего переполнялось здоровье, которое ближе к концу игры уже не важно — энергоброню редко пробивают, а когда это все-таки случается урон здоровью обычно небольшой).
Кстати, хороший повод объяснить детям, что такое разрядность числа, и в каких случаях нужно использовать 32-битные, а в каких 64-битные числа. Хорошо запомнится, особенно тем, у кого домашка пропала. На чужих ошибках тоже нужно учиться.
Подскажите пожалуйста на скрине Code.org русскоязычный интерфейс, но зарегался/зашел все англ.
Я правильно понял, что скрин получили транслейтом сайта?
Есть какой-нибудь подобный ресурс на русском (чтобы ре мог все сам, самостоятельно)?
На Code.org внизу справа выбирается язык.

Так кто должен извлечь урок?
Взрослый: Агаа! Так-так. Буду аккуратнее и сделаю бэкапы.
Ребенок: Моё творчество пропало. Прграммировання полно факапов и это урок. Ок. Пойду пока поиграю в мяч.
Yet another code bite the 32-bits indexes.

Уж сколько лет твердили свету — не использовать 32-битные id'шники… Но воз и ныне там.
Sign up to leave a comment.

Articles