Notice: file_put_contents(): Write of 4361 bytes failed with errno=28 No space left on device in /var/www/group-telegram/post.php on line 50
Warning: file_put_contents(): Only 16384 of 20745 bytes written, possibly out of free disk space in /var/www/group-telegram/post.php on line 50 Уставший техдир | Telegram Webview: tired_glebmikheev/2104 -
Я на протяжении всей жизни встречаю повальное непонимание природы исключений и важности работы с ними 😑
Давайте разберемся!
Программа: это алгоритм, который работает с данными. Все, только алгоритм и данные (дада, посты в соцсети, видосы, показатели с периферийных устройств, кнопки, которые ты нажал в игре и урон с ульты в доте — это все данные).
Алгоритм: это заранее предопределенная последовательность действий над данными, которые программа получила на вход. Ну и конечно дальше програмама выводит эти данные: на экран, сохраняет в бд, передает на физическую перефирию, которая приводит в движение автомобиль и так далее
Исключения: это событие, когда мы в программе получили данные, не учтенные алгоритмом, что приводит к невозможности дальнейшего его исполнения (по умолчанию это приводит к остановке работы всей системы или локализуется в рамках одного потока обработки вызова)
То есть — наш алгоритм получил такие данные, на которые он не был рассчитан. Поэтому выбрасывается ошибка, которую нужно обработать (например, получили ошибку в ответе от сервера, пользователь загрузил кривые данные, которые не были проверены, нет сети и запрос не ушел, протухла сессия, не нашелся файл и так далее). Все одно — на вход пришли кривые данные, на которые программа не была расчитана
Но исключения происходят не только из-за внешних факторов. Никто не отменял кривые руки, когда программа ломается из-за кривого алгоритма, принимая «сломанное» состояние самостоятельно. Классика — когда напутали с типами (реальный кейс). Во всех случаях программа держала в переменной объект. Но при одном кейсе (когда ты заходил в редактирование) и успешно редактировал обьект, он клался в память как массив объектов. Ломая все поведение программы до перезагрузки страницы (дада, те самые type any).
Другими словами: любое исключение, есть недостаток нашей программы. И мы обязаны обрабатывать исключения: либо нормализуя данные для продолжения работы алгоритма, либо — отказываясь от исполнения, отбрасывать ошибку потребителю (под страхом смерти нельзя ломаться молча, оставляя потребителя в неведнии).
Плюс, обязательно, логировать события в аналитические системы (журналирование, аудит, мониторинг, обзервабилити платформа). Их необходимо учесть, сделать доступными для анализа, подсчета и построения графиков. Для того, чтобы итеративно разбирая негативные кейсы увеличивать устойчивость и качество работы нашей программы
Так вот, этого понимания повально не хватает разработчикам. Недавно я потратил неадекватно много времени и сил, чтобы донести эту мысль, и, кажется, об этом пора делать доклад
Я на протяжении всей жизни встречаю повальное непонимание природы исключений и важности работы с ними 😑
Давайте разберемся!
Программа: это алгоритм, который работает с данными. Все, только алгоритм и данные (дада, посты в соцсети, видосы, показатели с периферийных устройств, кнопки, которые ты нажал в игре и урон с ульты в доте — это все данные).
Алгоритм: это заранее предопределенная последовательность действий над данными, которые программа получила на вход. Ну и конечно дальше програмама выводит эти данные: на экран, сохраняет в бд, передает на физическую перефирию, которая приводит в движение автомобиль и так далее
Исключения: это событие, когда мы в программе получили данные, не учтенные алгоритмом, что приводит к невозможности дальнейшего его исполнения (по умолчанию это приводит к остановке работы всей системы или локализуется в рамках одного потока обработки вызова)
То есть — наш алгоритм получил такие данные, на которые он не был рассчитан. Поэтому выбрасывается ошибка, которую нужно обработать (например, получили ошибку в ответе от сервера, пользователь загрузил кривые данные, которые не были проверены, нет сети и запрос не ушел, протухла сессия, не нашелся файл и так далее). Все одно — на вход пришли кривые данные, на которые программа не была расчитана
Но исключения происходят не только из-за внешних факторов. Никто не отменял кривые руки, когда программа ломается из-за кривого алгоритма, принимая «сломанное» состояние самостоятельно. Классика — когда напутали с типами (реальный кейс). Во всех случаях программа держала в переменной объект. Но при одном кейсе (когда ты заходил в редактирование) и успешно редактировал обьект, он клался в память как массив объектов. Ломая все поведение программы до перезагрузки страницы (дада, те самые type any).
Другими словами: любое исключение, есть недостаток нашей программы. И мы обязаны обрабатывать исключения: либо нормализуя данные для продолжения работы алгоритма, либо — отказываясь от исполнения, отбрасывать ошибку потребителю (под страхом смерти нельзя ломаться молча, оставляя потребителя в неведнии).
Плюс, обязательно, логировать события в аналитические системы (журналирование, аудит, мониторинг, обзервабилити платформа). Их необходимо учесть, сделать доступными для анализа, подсчета и построения графиков. Для того, чтобы итеративно разбирая негативные кейсы увеличивать устойчивость и качество работы нашей программы
Так вот, этого понимания повально не хватает разработчикам. Недавно я потратил неадекватно много времени и сил, чтобы донести эту мысль, и, кажется, об этом пора делать доклад
"Someone posing as a Ukrainian citizen just joins the chat and starts spreading misinformation, or gathers data, like the location of shelters," Tsekhanovska said, noting how false messages have urged Ukrainians to turn off their phones at a specific time of night, citing cybersafety. At this point, however, Durov had already been working on Telegram with his brother, and further planned a mobile-first social network with an explicit focus on anti-censorship. Later in April, he told TechCrunch that he had left Russia and had “no plans to go back,” saying that the nation was currently “incompatible with internet business at the moment.” He added later that he was looking for a country that matched his libertarian ideals to base his next startup. In the United States, Telegram's lower public profile has helped it mostly avoid high level scrutiny from Congress, but it has not gone unnoticed. And indeed, volatility has been a hallmark of the market environment so far in 2022, with the S&P 500 still down more than 10% for the year-to-date after first sliding into a correction last month. The CBOE Volatility Index, or VIX, has held at a lofty level of more than 30. Such instructions could actually endanger people — citizens receive air strike warnings via smartphone alerts.
from ru