14 лет назад, в июне 2007го, Алекс Горбачев, в то время еще CTO Pythian, основал BAAG Party — Battle Against Any Guess — инициативу против любых гаданий при решении технических проблем. Уже тогда это становилось большой проблемой: все чаще на форумах и публичных мейл-листах на вопросы о специфических проблемах, вместо запроса необходимых технических деталей, приходили ответы в духе «а попробуйте то, если не поможет — попробуйте это», «я когда-то видел похожее, мне помогло XXX», «а мне ХХХ не помогло, зато помогло YYY». Рождались различные мифы и порождали еще большее новых, оттуда и всякое «шаманство» и «танцы с бубном» (частично и «работает — не трожь»). Все это вполне объяснимо: сложность ПО и железа экспоненциально увеличивается; количество недостоверной информации а-ля «for dummies» в сети растет как снежный ком; IT отрасли нужно все больше и больше работников на «конвейеры» — «бери больше, кидай дальше». Появление #BAAG тогда было абсолютно закономерным и неотвратимым, но насколько она актуальна сейчас? Почему после ее расцвета и популярности в течение нескольких лет, она в забвении? Что и когда должно появиться ей на замену на данный период развития IT?

Программирование *
Искусство создания компьютерных программ
Решаем вопрос сортировки в JavaScript раз и навсегда

Многим JavaScript разработчикам доводилось сортировать данные на стороне клиента. К сожалению, существующие библиотеки имеют мелкие недостатки. Но эти недостатки складываются и ограничивают то как программисты думают о сортировке. Чтобы преодолеть эти ограничения, давайте рассмотрим сортировку в разных языках. Вооруженные этими знаниями, мы сможем выбрать наиболее удобный и строгий интерфейс.
Как обновить все сцены в Unity за один клик? Автоматизируем рутину

Надоело тратить часы за обновлением уровней в Unity? Давайте автоматизируем это!
В этой статье мы напишем простой и понятный инструмент, благодаря которому вы сможете делать всё, что вам угодно, за считанные клики: сериализовать поля, менять иерархию на сценах, настраивать Fuse/IClone/DAZ и других персонажей, добавлять новые префабы, менять интерфейс и многое другое!
Как создавать предметы генеративного искусства с помощью L-систем на языке Python

Мы уже писали о поле течений, при помощи которого можно генеративно рисовать невероятно красивые, завораживающие линии. Сегодня, к старту курса о Fullstack-разработке на Python, мы решили продолжить тему. Представляем перевод статьи, автор которой рассказывает, как генерировать рисунки деревьев при помощи L-систем, которые состоят из алфавита и могут применяться для создания порождающих правил подстановки.
Как компилятор C++ находит правильную функцию

Увлекательный пересказ того, как компилятор C++ находит правильную функцию, которую надо вызвать, когда в коде вызывается функция. По сути, это просто сжатое объяснение алгоритма, уже описанного на cppreference.com, который, в свою очередь, является сокращенной версией стандарта C++.
Что не так с современным преподаванием информатики

Привет, Хабр! Меня зовут Анна Агабекян, я ментор и автор курсов по направлениям "Тестировщик-автоматизатор на Python" (QAP-тестирование) и «Fullstack-разработчик на JavaScript» в SkillFactory, а также преподаю физику и информатику в лицее. Параллельно с преподаванием я веду научную работу, посвящённую проблемам образования, и на её основе решила сделать статью для Хабра, так как, на мой взгляд, проблема качественного образования в области информатики и IT сейчас стоит очень остро, но остаётся неосвёщенной. Как преподаватель я вижу, что сейчас процесс развития образовательных организаций отстает от требований IT-сферы. Хотела бы с вами поделиться своим видением данной проблемы и возможных путей решения.
Разработка REST-серверов на Go. Часть 1: стандартная библиотека

Первый вопрос разработчиков, которые только начинают применять Go, часто выглядит так: «Какой фреймворк стоит использовать для решения задачи X». И хотя это — совершенно нормальный вопрос, если задавать его, имея в виду веб-приложения и серверы, написанные на многих других языках, в случае с Go при ответе на этот вопрос нужно принять во внимание множество тонкостей. Существуют серьёзные аргументы как «за», так и «против» использования фреймворков в Go-проектах. Я, работая над статьями из этой серии, вижу своей целью объективное разностороннее исследование этого вопроса.
Разработка REST-серверов на Go. Часть 2: применение маршрутизатора gorilla/mux
Разработка REST-серверов на Go. Часть 3: использование веб-фреймворка Gin
Разработка REST-серверов на Go. Часть 4: применение OpenAPI и Swagger
Разработка REST-серверов на Go. Часть 5: Middleware
Разработка REST-серверов на Go. Часть 6: аутентификация
15 простых советов по оптимизации производительности ASP.NET

Существует множество свидетельств того. что медленная загрузка и неуклюжее взаимодействие будут побуждать клиентов уходить. Даже в случае внутренних приложений, где у пользователей нет другого выбора, кроме как использовать приложение, их удовлетворение тесно связано со скоростью. Следовательно, производительность ASP.NET является одним из наиболее важных факторов при создании ASP.NET приложения.
Существует множество способов подойти к оптимизации производительности ASP.NET в веб-приложении, давайте рассмотрим пятнадцать из них.
Худшие места в C++ для написания кода
Любой язык программирования, а особенно C++, предоставляет всевозможные средства для написания кода. В начале карьеры любому программисту кажется, что для того, чтобы мастерски овладеть языком, надо использовать по максимуму его возможностей. Но так ли это? Может, лучше наоборот, ограничиться необходимым минимумом средств, и не использовать сложные, подверженные ошибками конструкции? Давайте посмотрим на те возможности C++, где код нужно стараться не писать вовсе.
2+1 мероприятия июня по профессиональной работе с Microsoft Teams

В этой ежемесячной подборке я расскажу вам о трех наших мероприятиях, которые помогут вам профессионально настроить работу в Microsoft Teams (как собственную, так и всех в вашей компании). Один из эвентов на английском с субтитрами русском, 2 других полностью на русском. Присоединяйтесь!
Функции: эта ошибка дороже, чем «null»
Имя этому шаблону — функция.
Если конкретнее, то это интерфейс, который обычно является набором функций.

Какие из языков вы узнали?
Одним из первых при изучении программирования мы узнаём принцип многократного использования логики. Это неизменно приводит нас к функции — строительному блоку каждого программного проекта. Сами по себе функции не так уж плохи, но именно из-за использования их в качестве многократно применяемого компонента написание, поддержка и масштабирование ПО становятся такими затратными.
Почему?
Принцип подстановки Барбары Лисков (предусловия и постусловия)
Почему у многих возникают проблемы с этим принципом? Если ли более простое объяснение?
️В данной статье мы НЕ будем рассматривать общие примеры данного принципа, о которых уже есть много материалов (пример с квадратом и прямоугольником или управления термостатами). Здесь мы немного подробнее остановимся на таких понятиях как «Предусловия», «Постусловия», рассмотрим что такое ковариантность, контравариантность и инвариантность, а также что такое «исторические ограничения» или «правило истории».
7 лучших библиотек для создания молниеносно быстрых приложений ReactJS

ReactJS по умолчанию обладает высокой производительностью. Но время от времени у вас появляется шанс сделать его еще лучше. И замечательное сообщество React придумало для этого несколько фантастических библиотек.
Сегодня мы поговорим о семи таких библиотеках, которые могут улучшить качество вашего кода и при этом повысить производительность.
Давайте начнем.
. . .
Ближайшие события
Подкаст «Хочу в геймдев» #25 — текстовая версия

Двадцать пятый выпуск - мы говорим о профессии Разработчик игр на Unity. Каковы особенности этой профессии? Каковы обязанности Разработчика игр на Unity? Что нужно, чтобы устроиться на такую работу? Об этом и не только вы узнаете в 25-м выпуске!
Обратная отладка в большом масштабе

Отладка — неотъемлемая часть профессионального программирования. К старту курса о Fullstack-разработке на Python делимся переводом о том, как отладка устроена в Facebook; в статье вы найдёте ссылку на разработанный FB плагин трассировки для LLDB, который преобразует необработанную трассировку в удобочитаемый формат.
Допустим, вы получаете уведомление по электронной почте о том, что сервис терпит крах сразу после развёртывания вашего последнего изменения кода. Сбой происходит только на 0,1 % серверов, где запущен сервис. Но вы работаете в крупной компании, поэтому 0,1 % равняется тысячам серверов, и эту проблему будет трудно воспроизвести. Несколько часов спустя вы всё ещё не можете воспроизвести проблему, хотя потратили целый день на её решение.
Майнкрафт для геологов: 3D-рендеринг миллиарда ячеек на встроенной видеокарте (часть 2)

В первой части статьи мы реализовали простой (и не очень эффективный) рендерер сетки ГУТ, и пообещали, что оптимизируем рендерер настолько, что он сможет отобразить заявленный в заголовке миллиард ячеек.
Для этого нам придётся значительно сократить объём потребляемой видеопамяти — в текущем виде даже на игровых видеокартах (если бы их можно было купить в наше время!) памяти может не хватить, не говоря уж о видеокартах в офисных компьютерах.
Оценка трудности изменений в коде с помощью O большое

Иногда к программистам приходят изменения от бизнеса. И программисты должны доработать код. Как понять - у нас хорошая архитектура кода, или плохая? Для этого можно использовать оценку сложности изменения кода на основе O большое. В этой статье на небольшом примере я показываю как можно количественно (измеримо) оценить плохая у тебя архитектура кода или хорошая.
11 анонсов конференции Microsoft Build для разработчиков

Привет, Хабр! Сегодня, как и обещали*, делимся подборкой самых интересных для разработчиков конференции Microsoft Build 2021. Их получилось 11, но это не значит, что это все. Чтобы узнать еще больше, изучайте сайт конференции.
* пообещали это мы во вчерашней подборке 8 анонсов конференции Microsoft Build 2021, которую подготовила наша бизнес-команда.
SberCloud + Intel oneAPI = льготное облако для ML-разработчиков

На прошедшей 20 мая первой технологической конференции Сбера для разработчиков SmartDev был анонсирован ряд инициатив и продуктов компании, в последнее время активно развивающейся в области финтеха, «цифры» и технологий AI. Одна из новостей: Сбер открывает льготный доступ к облаку ML Space, оснащенному продуктами семейства Intel oneAPI. Двойная польза для всех, кто занимается машинным обучением.
Развитие проекта arataga: пара рефакторингов по результатам натурных испытаний

OpenSource-проект arataga -- это работающий прототип производительного socks5+http/1.1 прокси-сервера. Реализован arataga на базе Asio, SObjectizer и RESTinio. Об arataga уже рассказывалось несколько месяцев назад именно как о хорошем примере того, как выглядит реальный код на SObjectizer-е. Ведь одно дело повествовать о сильных сторонах SObjectizer-а с иллюстрациями из игрушечных примеров. Совсем другое -- иметь возможность показать почти что продакшен-код. За время, прошедшее с первой публикации, удалось погонять arataga под более серьезной нагрузкой. Можно сказать, повезло провести первые натурные испытания. Эти испытания выявили пару узких мест, устранение которых, как мне показалось, можно привести в качестве хороших примеров применения возможностей SObjectizer-а в ситуациях "вот здесь у нас обнаружилась неведомая хрень и от нее нужно как можно быстрее избавиться". В частности, мы сегодня поговорим о том, что взаимодействие агентов друг с другом только посредством асинхронных сообщений -- это не догма. И что диспетчеры SObjectizer-а влияют на безопасность многопоточного программирования не менее серьезно, чем этот самый обмен сообщениями.
Вклад авторов
alizar 4446.2ru_vds 4222.8olegchir 3644.4badcasedaily1 3039.0haqreu 2951.0tangro 2672.2nmivan 2585.0kesn 2578.0MaxRokatansky 2523.0DmitrySpb79 2296.0