Embox отправляется на Vostok
Как, наверное, многие на хабре знают, мы в проекте Embox любим запускаться на отечественных процессорах.
Эта статья – своеобразный (расширенный) анонс того, что Embox перенесен на микроконтроллеры еще одного производителя микроэлектроники в РФ. Речь идет о технологической платформе «Vostok» от ООО «Новатор» базирующейся на микроконтроллерах ГК «Элемент».
https://habr.com/ru/articles/777302/
👉 @bookflow
Как, наверное, многие на хабре знают, мы в проекте Embox любим запускаться на отечественных процессорах.
Эта статья – своеобразный (расширенный) анонс того, что Embox перенесен на микроконтроллеры еще одного производителя микроэлектроники в РФ. Речь идет о технологической платформе «Vostok» от ООО «Новатор» базирующейся на микроконтроллерах ГК «Элемент».
https://habr.com/ru/articles/777302/
👉 @bookflow
👍6💩1
Не нужно блокировать кнопки
Одна из наиболее распространенных проблем доступности, которую я нахожу (и исправляю) в проектах своих клиентов – это динамическое блокирование кнопок в формах после отправки последних. Сегодня я хотел бы рассказать, почему разработчики так делают, почему это не работает и что нужно делать вместо этого. Давайте разбираться!
Почему разработчики деактивируют кнопки
По моим наблюдениям, паттерн используется для того, чтобы исключить возможность повторной отправки формы в процессе ожидания, пока обрабатывается первая. Часто случается, что нужно дождаться ответа API и на это требуется несколько секунд; нежелательно, чтобы пользователь успел отослать еще одну форму, пока система не закончит реагировать на предыдущую.
При блокировании button еще раз нажать на кнопку не получится.
Почему этот паттерн не работает
Начнем с того, что он не делает того, на что рассчитан. Одно то, что кнопка блокирована, не означает, что отправить форму становится невозможно. Можно перейти на какое-нибудь из полей формы, нажать на клавишу enter или return – и форма будет отправлена.
Но, помимо этого, метод никуда не годится с точки зрения доступности. Элементы с атрибутом disabled не могут принимать на себя фокус, а это создает путаницу для тех, кто использует скринридеры или перемещается по вебсайтам при помощи клавиатуры.
Если кнопка находится в фокусе в тот момент, когда вы задаете ей атрибут disabled (скажем, пользователь только что нажал на нее, чтобы отправить форму), то фокус переходит с нее на элемент document. Человека со скринридером это собьет с толку – он окажется совершенно в другой части страницы.
То есть, если обобщить сказанное, этот способ не помогает вам достичь поставленной цели и вдобавок портит опыт определенному сегменту ваших пользователей.
Более удачный способ
Что же тогда делать? Лично я предпочитаю добавлять атрибут для элемента form, а затем убирать его, когда все необходимые действия с формой будут произведены. Всякий раз, когда происходит событие submit, в первую очередь проводится проверка на наличие атрибута. Если он в наличии, я прерываю обработчик событий, чтобы предотвратить многократную отправку формы.
Таким образом, фокус на элементах формы сохраняется, никаких проблем с доступностью не возникает, дублирование форм предотвращается, а также блокируется возможность отправить форму путем ввода команд клавишами в других полях.
Вдобавок вы можете придать элементам особый «деактивированный» вид при помощи CSS-селектора [data-submitting]…
Не забывайте также включать ARIA live region и отображать оповещения о статусе обработки формы на протяжении всего процесса.
👉 @bookflow
Одна из наиболее распространенных проблем доступности, которую я нахожу (и исправляю) в проектах своих клиентов – это динамическое блокирование кнопок в формах после отправки последних. Сегодня я хотел бы рассказать, почему разработчики так делают, почему это не работает и что нужно делать вместо этого. Давайте разбираться!
Почему разработчики деактивируют кнопки
По моим наблюдениям, паттерн используется для того, чтобы исключить возможность повторной отправки формы в процессе ожидания, пока обрабатывается первая. Часто случается, что нужно дождаться ответа API и на это требуется несколько секунд; нежелательно, чтобы пользователь успел отослать еще одну форму, пока система не закончит реагировать на предыдущую.
form.addEventListener('submit', function (event) {
// Don't let the form reload the page
event.preventDefault();
// Get the submit button and disable it
let btn = form.querySelector('button');
btn.addAttribute('disabled', '');
// Do more form stuff...
// re-enable the button after the API responds
btn.removeAttribute('disabled');
});
При блокировании button еще раз нажать на кнопку не получится.
Почему этот паттерн не работает
Начнем с того, что он не делает того, на что рассчитан. Одно то, что кнопка блокирована, не означает, что отправить форму становится невозможно. Можно перейти на какое-нибудь из полей формы, нажать на клавишу enter или return – и форма будет отправлена.
Но, помимо этого, метод никуда не годится с точки зрения доступности. Элементы с атрибутом disabled не могут принимать на себя фокус, а это создает путаницу для тех, кто использует скринридеры или перемещается по вебсайтам при помощи клавиатуры.
Если кнопка находится в фокусе в тот момент, когда вы задаете ей атрибут disabled (скажем, пользователь только что нажал на нее, чтобы отправить форму), то фокус переходит с нее на элемент document. Человека со скринридером это собьет с толку – он окажется совершенно в другой части страницы.
То есть, если обобщить сказанное, этот способ не помогает вам достичь поставленной цели и вдобавок портит опыт определенному сегменту ваших пользователей.
Более удачный способ
Что же тогда делать? Лично я предпочитаю добавлять атрибут для элемента form, а затем убирать его, когда все необходимые действия с формой будут произведены. Всякий раз, когда происходит событие submit, в первую очередь проводится проверка на наличие атрибута. Если он в наличии, я прерываю обработчик событий, чтобы предотвратить многократную отправку формы.
form.addEventListener('submit', function (event) {
// Don't let the form reload the page
event.preventDefault();
// If the form is already submitting, do nothing
if (form.hasAttribute('data-submitting')) return;
// Add the [data-submitting] attribute to stop multiple submissions
form.setAttribute('data-submitting', '');
// Do more form stuff...
// Remove the [data-submitting] attribute
form.removeAttribute('data-submitting');
});Таким образом, фокус на элементах формы сохраняется, никаких проблем с доступностью не возникает, дублирование форм предотвращается, а также блокируется возможность отправить форму путем ввода команд клавишами в других полях.
Вдобавок вы можете придать элементам особый «деактивированный» вид при помощи CSS-селектора [data-submitting]…
[data-submitting] button {
opacity: 0.8;
}Не забывайте также включать ARIA live region и отображать оповещения о статусе обработки формы на протяжении всего процесса.
👉 @bookflow
👍11👎1
Действительно ли C++ — лучший язык, чтобы выстрелить себе в ногу?
В 2023 году одной из главных IT-новостей стала публикация гайда от Агентства национальной безопасности (NSA) США, в котором языки С/C+ признавались «опасными» и требующими перехода на «безопасные» C#, Go, Java, Ruby и Swift.
В этой статье я с позиции Security Champion в KasperskyOS, собственной микроядерной операционной системе «Лаборатории Касперского», расскажу, так ли плохо обстоят дела с безопасностью в С++ на самом деле, а также разберу различные подходы к митигации описанных проблем, которые современная индустрия предлагает для решения данного вопроса.
https://habr.com/ru/companies/kaspersky/articles/787586/
👉 @bookflow
В 2023 году одной из главных IT-новостей стала публикация гайда от Агентства национальной безопасности (NSA) США, в котором языки С/C+ признавались «опасными» и требующими перехода на «безопасные» C#, Go, Java, Ruby и Swift.
В этой статье я с позиции Security Champion в KasperskyOS, собственной микроядерной операционной системе «Лаборатории Касперского», расскажу, так ли плохо обстоят дела с безопасностью в С++ на самом деле, а также разберу различные подходы к митигации описанных проблем, которые современная индустрия предлагает для решения данного вопроса.
https://habr.com/ru/companies/kaspersky/articles/787586/
👉 @bookflow
👍4
This media is not supported in your browser
VIEW IN TELEGRAM
Что такое Обработка данных?
Это относится к сбору, обработке и анализу данных для извлечения полезных исследовательских или информационных выводов. Включает в себя преобразование сырых данных в удобный для анализа и использования формат с использованием различных инструментов, методов и алгоритмов. Обработка данных может принимать множество форм, включая пакетную обработку, обработку в реальном времени и потоковую обработку. При пакетной обработке большие объемы данных обрабатываются одновременно, часто ночью или в периоды низкой активности, в то время как обработка в реальном времени включает в себя обработку данных по мере их поступления.
Есть несколько этапов, включенных в обработку данных:
1. Сбор данных: Первый шаг в обработке данных - сбор данных. Это может быть выполнено различными методами, такими как опросы, сенсоры, парсинг веб-страниц и использование API.
2. Очистка данных: Сырые данные, собранные из различных источников, часто содержат ошибки, дубликаты и пропущенные значения. Очистка данных включает в себя выявление и коррекцию этих ошибок для обеспечения точности и последовательности данных.
3. Трансформация: После очистки данные нужно преобразовать в формат, удобный для анализа. Это может включать в себя агрегацию данных, преобразование типов данных или нормализацию данных.
4. Анализ: После трансформации данных следующим шагом является их анализ. Это может быть выполнено с использованием различных статистических и машинно-обучающих методов для извлечения идей и паттернов из данных.
5. Визуализация: Визуализация данных включает в себя представление анализированных данных в визуальном формате, таком как диаграммы, графики или карты, чтобы помочь заинтересованным сторонам понимать и интерпретировать полученные исследования.
👉 @bookflow
Это относится к сбору, обработке и анализу данных для извлечения полезных исследовательских или информационных выводов. Включает в себя преобразование сырых данных в удобный для анализа и использования формат с использованием различных инструментов, методов и алгоритмов. Обработка данных может принимать множество форм, включая пакетную обработку, обработку в реальном времени и потоковую обработку. При пакетной обработке большие объемы данных обрабатываются одновременно, часто ночью или в периоды низкой активности, в то время как обработка в реальном времени включает в себя обработку данных по мере их поступления.
Есть несколько этапов, включенных в обработку данных:
1. Сбор данных: Первый шаг в обработке данных - сбор данных. Это может быть выполнено различными методами, такими как опросы, сенсоры, парсинг веб-страниц и использование API.
2. Очистка данных: Сырые данные, собранные из различных источников, часто содержат ошибки, дубликаты и пропущенные значения. Очистка данных включает в себя выявление и коррекцию этих ошибок для обеспечения точности и последовательности данных.
3. Трансформация: После очистки данные нужно преобразовать в формат, удобный для анализа. Это может включать в себя агрегацию данных, преобразование типов данных или нормализацию данных.
4. Анализ: После трансформации данных следующим шагом является их анализ. Это может быть выполнено с использованием различных статистических и машинно-обучающих методов для извлечения идей и паттернов из данных.
5. Визуализация: Визуализация данных включает в себя представление анализированных данных в визуальном формате, таком как диаграммы, графики или карты, чтобы помочь заинтересованным сторонам понимать и интерпретировать полученные исследования.
👉 @bookflow
👍5⚡1
«Отучаем» WinFXNet от жадности (часть 1)
Предыстория
В сфере АСУ ТП инженерам по работе приходится не только писать ПО, но и использовать готовое ПО от производителей оборудования. В связи с санкциями, многие поставщики покинули РФ, а оборудование и ПО необходимо продолжать эксплуатировать дальше.
В данной статье будет расмотрена WinFXNet - программа производителя Schneider Electric (ESMI) для конфигурирования станций пожарной сигнализации серии Esmi FX. К сожалению, из-за санкций, ключ USB Esmi FX FFS00393016 приобрести нельзя, а он, в свою очередь, имеет встроенный таймер, который настроен на 4-летний период. У многих данный ключ по времени уже закончился, плюс скоро закончится и лицензия на само ПО (файл формата lic). Поэтому достаем дизассемблеры и посмотрим, можно ли обойти данную защиту.
Disclaimer: Данная заметка написана в ознакомительных целях и не является руководством к действиям. Хотя, понимая всю безвыходность данной ситуации, как временное решение имеет право на жизнь, но решать только вам. Статья написана как туториал, поэтому постараюсь детально описать все шаги поиска нужных мест в программе.
https://habr.com/ru/articles/790564/
👉 @bookflow
Предыстория
В сфере АСУ ТП инженерам по работе приходится не только писать ПО, но и использовать готовое ПО от производителей оборудования. В связи с санкциями, многие поставщики покинули РФ, а оборудование и ПО необходимо продолжать эксплуатировать дальше.
В данной статье будет расмотрена WinFXNet - программа производителя Schneider Electric (ESMI) для конфигурирования станций пожарной сигнализации серии Esmi FX. К сожалению, из-за санкций, ключ USB Esmi FX FFS00393016 приобрести нельзя, а он, в свою очередь, имеет встроенный таймер, который настроен на 4-летний период. У многих данный ключ по времени уже закончился, плюс скоро закончится и лицензия на само ПО (файл формата lic). Поэтому достаем дизассемблеры и посмотрим, можно ли обойти данную защиту.
Disclaimer: Данная заметка написана в ознакомительных целях и не является руководством к действиям. Хотя, понимая всю безвыходность данной ситуации, как временное решение имеет право на жизнь, но решать только вам. Статья написана как туториал, поэтому постараюсь детально описать все шаги поиска нужных мест в программе.
https://habr.com/ru/articles/790564/
👉 @bookflow
⚡3👍2💩1
Что такое Bug Bounty и почему корпорации платят за поиск ошибок?
Bug Bounty — это программа вознаграждения за найденные ошибки в программном обеспечении или на сайтах компаний.
Почему корпорации это делают? Потому что если кто-то найдет ошибку и сообщит об этом, компания может быстро исправить баг, прежде чем кто-то им злоупотребит.
Это помогает сохранить данные и защищает от реальных хакеров. Кроме того, такие программы позволяют привлечь талантливых людей, которые могут помочь им стать еще более безопасными.
Есть ли у российских корпораций Bug Bounty? Да, для крупных IT-компаний это обычная практика. Недавно как раз Яндекс обновил свою программу, подняв вознаграждение за критическую находку до миллиона рублей (!) Тестить можно даже новые устройства: Станцию Дуо Макс, Миди и ТВ Станции.
👉 @bookflow
Bug Bounty — это программа вознаграждения за найденные ошибки в программном обеспечении или на сайтах компаний.
Почему корпорации это делают? Потому что если кто-то найдет ошибку и сообщит об этом, компания может быстро исправить баг, прежде чем кто-то им злоупотребит.
Это помогает сохранить данные и защищает от реальных хакеров. Кроме того, такие программы позволяют привлечь талантливых людей, которые могут помочь им стать еще более безопасными.
Есть ли у российских корпораций Bug Bounty? Да, для крупных IT-компаний это обычная практика. Недавно как раз Яндекс обновил свою программу, подняв вознаграждение за критическую находку до миллиона рублей (!) Тестить можно даже новые устройства: Станцию Дуо Макс, Миди и ТВ Станции.
👉 @bookflow
👍1
Каково это, создавать язык программирования сегодня?
«Эта книга – классика. Относитесь к ней бережно».
Такую фразу произнёс архитектор из нашей команды, передавая мне The Dragon Book. Разработкой компиляторов я увлёкся где-то 15 лет назад ещё на заре своей карьеры. Как-то раз, читая эту книгу поздно вечером, я заснул, небрежно уронив её на пол. Надеюсь, владелец не заметил небольшую вмятину на обложке после того, как я ему её вернул.
Вышла эта книжка в 1986 году. В те времена создание компиляторов было крайне сложной задачей, требовавшей обладания различными навыками в области компьютерных наук в целом и программирования в частности. Теперь, почти четыре десятилетия спустя, этой задачей занимаюсь я. Насколько сложна она сегодня? Приглашаю вместе разобрать процесс создания языка и посмотреть, насколько современные инструменты его упростили.
https://habr.com/ru/companies/ruvds/articles/790868/
original https://blog.whimslab.io/how-much-work-does-it-take-to-build-a-programming-language-784a6868f4e9
👉 @bookflow
«Эта книга – классика. Относитесь к ней бережно».
Такую фразу произнёс архитектор из нашей команды, передавая мне The Dragon Book. Разработкой компиляторов я увлёкся где-то 15 лет назад ещё на заре своей карьеры. Как-то раз, читая эту книгу поздно вечером, я заснул, небрежно уронив её на пол. Надеюсь, владелец не заметил небольшую вмятину на обложке после того, как я ему её вернул.
Вышла эта книжка в 1986 году. В те времена создание компиляторов было крайне сложной задачей, требовавшей обладания различными навыками в области компьютерных наук в целом и программирования в частности. Теперь, почти четыре десятилетия спустя, этой задачей занимаюсь я. Насколько сложна она сегодня? Приглашаю вместе разобрать процесс создания языка и посмотреть, насколько современные инструменты его упростили.
https://habr.com/ru/companies/ruvds/articles/790868/
original https://blog.whimslab.io/how-much-work-does-it-take-to-build-a-programming-language-784a6868f4e9
👉 @bookflow
👍2
Как я поменял профессию: из тканевой инженерии в adult-индустрию
Если ты DevOps, который работает с adult‑проектами, то твой типичный «взрослый контент» будет выглядеть примерно так.
Одна из самых традиционных тем на Хабре — это внезапные карьерные перемещения из различных профессий в IT и обратно. У меня, вот, чудесный коллега — профессиональный мясник с соответствующим образованием. Мониторинг настраивает как боженька и умеет убедительно отстаивать свою точку зрения. Образование позволяет.
Меня тоже можете принимать в свои ряды людей со странной сменой профессии. Как многие помнят по моим старым постам — я изначально врач, который свернул в направлении фундаментальной науки и тканевой инженерии. Все вот эти развлечения со стволовыми клетками, выращиванием органов в биореакторах и прочими нетиповыми экспериментальными задачами. И вот тут меня внезапно позвали на собеседование в крупный телеком… Короче, очнулся я уже будучи DevOps в компании, которая занимается сложными проектами, некоторые из которых про adult‑видео. Ну вот те самые специальные обучающие фильмы для взрослых, которые двигатель прогресса. С петабайтами отданного трафика, набегами миллионов пользователей и прочими радостями.
Работает у нас это примерно так — у бизнеса наступает момент, когда приходит осознание, что все. Приехали. Инфраструктура работает, вроде бы все в порядке, но построена на костылях, которые заботливо укладывали три поколения сотрудников назад. Документации нет, как все это работает — никто не помнит. Если сервер сдохнет, воскресить в случае чего никто не сможет.
И вот где‑то в этот момент обычно появляемся мы с командой WiseOps и начинаем перебирать по винтику все археологические слои кода, архитектуры и бизнес‑логики. У нас уже есть несколько десятков клиентов и три из них про видеоконтент.
Предлагаю перейти под кат, а я попробую рассказать, как выглядит вся эта индустрия глазами врача/био‑инженера/DevOps.
https://habr.com/ru/companies/wiseops/articles/791774/
👉 @bookflow
Если ты DevOps, который работает с adult‑проектами, то твой типичный «взрослый контент» будет выглядеть примерно так.
Одна из самых традиционных тем на Хабре — это внезапные карьерные перемещения из различных профессий в IT и обратно. У меня, вот, чудесный коллега — профессиональный мясник с соответствующим образованием. Мониторинг настраивает как боженька и умеет убедительно отстаивать свою точку зрения. Образование позволяет.
Меня тоже можете принимать в свои ряды людей со странной сменой профессии. Как многие помнят по моим старым постам — я изначально врач, который свернул в направлении фундаментальной науки и тканевой инженерии. Все вот эти развлечения со стволовыми клетками, выращиванием органов в биореакторах и прочими нетиповыми экспериментальными задачами. И вот тут меня внезапно позвали на собеседование в крупный телеком… Короче, очнулся я уже будучи DevOps в компании, которая занимается сложными проектами, некоторые из которых про adult‑видео. Ну вот те самые специальные обучающие фильмы для взрослых, которые двигатель прогресса. С петабайтами отданного трафика, набегами миллионов пользователей и прочими радостями.
Работает у нас это примерно так — у бизнеса наступает момент, когда приходит осознание, что все. Приехали. Инфраструктура работает, вроде бы все в порядке, но построена на костылях, которые заботливо укладывали три поколения сотрудников назад. Документации нет, как все это работает — никто не помнит. Если сервер сдохнет, воскресить в случае чего никто не сможет.
И вот где‑то в этот момент обычно появляемся мы с командой WiseOps и начинаем перебирать по винтику все археологические слои кода, архитектуры и бизнес‑логики. У нас уже есть несколько десятков клиентов и три из них про видеоконтент.
Предлагаю перейти под кат, а я попробую рассказать, как выглядит вся эта индустрия глазами врача/био‑инженера/DevOps.
https://habr.com/ru/companies/wiseops/articles/791774/
👉 @bookflow
👍2
Я мыслю MOV EAX, 1
Чем больше усилий ты прикладываешь, тем лучше это у тебя получается. Программирование не исключение, и чтобы с уверенностью сказать: "Я могу написать это" нужно много работать. Эта статья о том с какого языка начать путь в программировании и о том как понять принципы работы компьютера на низком уровне.
https://habr.com/ru/articles/721420/
👉 @bookflow
Чем больше усилий ты прикладываешь, тем лучше это у тебя получается. Программирование не исключение, и чтобы с уверенностью сказать: "Я могу написать это" нужно много работать. Эта статья о том с какого языка начать путь в программировании и о том как понять принципы работы компьютера на низком уровне.
https://habr.com/ru/articles/721420/
👉 @bookflow
👍4
Вороной, Манхэттен, рандом
Это история про то, как не довести дело до конца, но получить уйму опыта, и вообще ни разу не обломаться.
Итак, у нас был один программист, один художник, абсолютное непонимание рабочего процесса, незнакомый нам игровой движок и желание что-то намутить. Если вам интересно, как в одном месте сошлись карта Вороного, частный случай расстояния Минковского, преобразования над полигонами, процедурная генерация и шумы — и все это в красивой стилизованной обертке.
https://habr.com/ru/articles/794572/
👉 @bookflow
Это история про то, как не довести дело до конца, но получить уйму опыта, и вообще ни разу не обломаться.
Итак, у нас был один программист, один художник, абсолютное непонимание рабочего процесса, незнакомый нам игровой движок и желание что-то намутить. Если вам интересно, как в одном месте сошлись карта Вороного, частный случай расстояния Минковского, преобразования над полигонами, процедурная генерация и шумы — и все это в красивой стилизованной обертке.
https://habr.com/ru/articles/794572/
👉 @bookflow
👍4👎1
Как работает Git - из рабочего каталога в удаленный репозиторий
[1]. Рабочая директория:
Ваш проект начинается здесь. Рабочая директория - это место, где вы активно вносите изменения в свои файлы.
[2]. Область постановки (Index):
После модификации файлов используйте git add для сохранения изменений. Это подготавливает их к следующей фиксации, действуя как контрольная точка.
[3]. Локальный репозиторий:
После постановки выполните git commit для записи изменений в локальный репозиторий. Коммиты создают снимки проекта в определённых точках.
[4]. Stash (необязательно):
При необходимости используйте git stash для временного сохранения изменений без фиксации. Полезно при переключении веток или выполнении других задач.
[5]. Удаленный репозиторий:
Удаленный репозиторий, размещенный на таких платформах, как GitHub, - это версия вашего проекта, доступная другим пользователям. Используйте git push для отправки локальных коммитов и git pull для получения удаленных изменений.
[6]. Отслеживание удаленных веток:
Локальные ветки могут быть настроены на отслеживание соответствующих веток на удаленном ресурсе. Это облегчает синхронизацию с git pull или git push.
👉 @bookflow
[1]. Рабочая директория:
Ваш проект начинается здесь. Рабочая директория - это место, где вы активно вносите изменения в свои файлы.
[2]. Область постановки (Index):
После модификации файлов используйте git add для сохранения изменений. Это подготавливает их к следующей фиксации, действуя как контрольная точка.
[3]. Локальный репозиторий:
После постановки выполните git commit для записи изменений в локальный репозиторий. Коммиты создают снимки проекта в определённых точках.
[4]. Stash (необязательно):
При необходимости используйте git stash для временного сохранения изменений без фиксации. Полезно при переключении веток или выполнении других задач.
[5]. Удаленный репозиторий:
Удаленный репозиторий, размещенный на таких платформах, как GitHub, - это версия вашего проекта, доступная другим пользователям. Используйте git push для отправки локальных коммитов и git pull для получения удаленных изменений.
[6]. Отслеживание удаленных веток:
Локальные ветки могут быть настроены на отслеживание соответствующих веток на удаленном ресурсе. Это облегчает синхронизацию с git pull или git push.
👉 @bookflow
👍4⚡1
Media is too big
VIEW IN TELEGRAM
Нужна ли математика DevOps-инженеру, программисту, SRE, тестировщику?
Постоянно ведутся холивары нужна ли математика айтишникам. Кто-то говорит, что математика нужна програмистам определенных направлений. Кто-то говорит, что в большинстве своем математика не нужна в IT. А я считаю что математика нужна DevOps-инженеру, программисту, SRE, тестировщику и другим айтишникам без исключения.
источник
👉 @bookflow
Постоянно ведутся холивары нужна ли математика айтишникам. Кто-то говорит, что математика нужна програмистам определенных направлений. Кто-то говорит, что в большинстве своем математика не нужна в IT. А я считаю что математика нужна DevOps-инженеру, программисту, SRE, тестировщику и другим айтишникам без исключения.
источник
👉 @bookflow
👍6👎1
👍2❤1⚡1💩1