Как стать автором
Поиск
Написать публикацию
Обновить
1126.17

Программирование *

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

Сначала показывать
Порог рейтинга
Уровень сложности

Актуальность инициативы #BAAG — BattleAgainstAnyGuess

Время на прочтение4 мин
Количество просмотров1.4K

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

BAAG more

Решаем вопрос сортировки в JavaScript раз и навсегда

Время на прочтение9 мин
Количество просмотров45K

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

Читать далее

Как обновить все сцены в Unity за один клик? Автоматизируем рутину

Время на прочтение20 мин
Количество просмотров6.7K

Надоело тратить часы за обновлением уровней в Unity? Давайте автоматизируем это!

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

Погнали!

Как создавать предметы генеративного искусства с помощью L-систем на языке Python

Время на прочтение103 мин
Количество просмотров8.1K

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

Читать далее

Как компилятор C++ находит правильную функцию

Время на прочтение13 мин
Количество просмотров16K

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

Читать дальше →

Что не так с современным преподаванием информатики

Время на прочтение8 мин
Количество просмотров20K

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

Читать далее

Разработка REST-серверов на Go. Часть 1: стандартная библиотека

Время на прочтение9 мин
Количество просмотров96K
Это — первый материал из серии статей, посвящённой разработке REST-серверов на Go. В этих статьях я планирую описать реализацию простого REST-сервера с использованием нескольких различных подходов. В результате эти подходы можно будет сравнить друг с другом, можно будет понять их относительные преимущества друг перед другом.

Первый вопрос разработчиков, которые только начинают применять Go, часто выглядит так: «Какой фреймворк стоит использовать для решения задачи X». И хотя это — совершенно нормальный вопрос, если задавать его, имея в виду веб-приложения и серверы, написанные на многих других языках, в случае с Go при ответе на этот вопрос нужно принять во внимание множество тонкостей. Существуют серьёзные аргументы как «за», так и «против» использования фреймворков в Go-проектах. Я, работая над статьями из этой серии, вижу своей целью объективное разностороннее исследование этого вопроса.


Читать дальше →

15 простых советов по оптимизации производительности ASP.NET

Время на прочтение9 мин
Количество просмотров6.4K

Существует множество свидетельств того. что медленная загрузка и неуклюжее взаимодействие будут побуждать клиентов уходить. Даже в случае внутренних приложений, где у пользователей нет другого выбора, кроме как использовать приложение, их удовлетворение тесно связано со скоростью. Следовательно, производительность ASP.NET является одним из наиболее важных факторов при создании ASP.NET приложения.

Существует множество способов подойти к оптимизации производительности ASP.NET в веб-приложении, давайте рассмотрим пятнадцать из них.

Читать далее

Худшие места в C++ для написания кода

Время на прочтение7 мин
Количество просмотров9.1K

Любой язык программирования, а особенно C++, предоставляет всевозможные средства для написания кода. В начале карьеры любому программисту кажется, что для того, чтобы мастерски овладеть языком, надо использовать по максимуму его возможностей. Но так ли это? Может, лучше наоборот, ограничиться необходимым минимумом средств, и не использовать сложные, подверженные ошибками конструкции? Давайте посмотрим на те возможности C++, где код нужно стараться не писать вовсе.

Читать далее

2+1 мероприятия июня по профессиональной работе с Microsoft Teams

Время на прочтение3 мин
Количество просмотров2.2K

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

Читать далее

Функции: эта ошибка дороже, чем «null»

Время на прочтение6 мин
Количество просмотров9.1K
Каждый день мы используем шаблон программирования, из-за которого без всякой необходимости повышается стоимость создания и поддержки ПО. Он приводит к бесчисленным багам и уязвимостям в безопасности. Он требует постоянного рефакторинга. Его сложно тестировать, утомительно документировать, а его гибкость превращает каждую реализацию в уникальную снежинку, что приводит к бесконечному дублированию кода.

Имя этому шаблону — функция.

Если конкретнее, то это интерфейс, который обычно является набором функций.


Какие из языков вы узнали?

Одним из первых при изучении программирования мы узнаём принцип многократного использования логики. Это неизменно приводит нас к функции — строительному блоку каждого программного проекта. Сами по себе функции не так уж плохи, но именно из-за использования их в качестве многократно применяемого компонента написание, поддержка и масштабирование ПО становятся такими затратными.

Почему?
Читать дальше →

Принцип подстановки Барбары Лисков (предусловия и постусловия)

Время на прочтение4 мин
Количество просмотров21K

​Почему у многих возникают проблемы с этим принципом? Если ли более простое объяснение?

​️В данной статье мы НЕ будем рассматривать общие примеры данного принципа, о которых уже есть много материалов (пример с квадратом и прямоугольником или управления термостатами). Здесь мы немного подробнее остановимся на таких понятиях как «Предусловия», «Постусловия», рассмотрим что такое ковариантность, контравариантность и инвариантность, а также что такое «исторические ограничения» или «правило истории».

Интересно...

7 лучших библиотек для создания молниеносно быстрых приложений ReactJS

Время на прочтение6 мин
Количество просмотров20K

ReactJS по умолчанию обладает высокой производительностью. Но время от времени у вас появляется шанс сделать его еще лучше. И замечательное сообщество React придумало для этого несколько фантастических библиотек.

Сегодня мы поговорим о семи таких библиотеках, которые могут улучшить качество вашего кода и при этом повысить производительность.

Давайте начнем.   

.     .     .

Читать далее

Ближайшие события

Подкаст «Хочу в геймдев» #25 — текстовая версия

Время на прочтение4 мин
Количество просмотров3.3K

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

Читать далее

Обратная отладка в большом масштабе

Время на прочтение6 мин
Количество просмотров2.3K

Отладка — неотъемлемая часть профессионального программирования. К старту курса о Fullstack-разработке на Python делимся переводом о том, как отладка устроена в Facebook; в статье вы найдёте ссылку на разработанный FB плагин трассировки для LLDB, который преобразует необработанную трассировку в удобочитаемый формат.

Допустим, вы получаете уведомление по электронной почте о том, что сервис терпит крах сразу после развёртывания вашего последнего изменения кода. Сбой происходит только на 0,1 % серверов, где запущен сервис. Но вы работаете в крупной компании, поэтому 0,1 % равняется тысячам серверов, и эту проблему будет трудно воспроизвести. Несколько часов спустя вы всё ещё не можете воспроизвести проблему, хотя потратили целый день на её решение.

Читать далее

Майнкрафт для геологов: 3D-рендеринг миллиарда ячеек на встроенной видеокарте (часть 2)

Время на прочтение30 мин
Количество просмотров3.5K

В первой части статьи мы реализовали простой (и не очень эффективный) рендерер сетки ГУТ, и пообещали, что оптимизируем рендерер настолько, что он сможет отобразить заявленный в заголовке миллиард ячеек.

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

Читать далее

Оценка трудности изменений в коде с помощью O большое

Время на прочтение2 мин
Количество просмотров1.9K

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

Читать далее

11 анонсов конференции Microsoft Build для разработчиков

Время на прочтение4 мин
Количество просмотров12K

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

* пообещали это мы во вчерашней подборке 8 анонсов конференции Microsoft Build 2021, которую подготовила наша бизнес-команда.

Читать далее

SberCloud + Intel oneAPI = льготное облако для ML-разработчиков

Время на прочтение2 мин
Количество просмотров1.9K

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

Развитие проекта arataga: пара рефакторингов по результатам натурных испытаний

Время на прочтение10 мин
Количество просмотров1.2K

OpenSource-проект arataga -- это работающий прототип производительного socks5+http/1.1 прокси-сервера. Реализован arataga на базе Asio, SObjectizer и RESTinio. Об arataga уже рассказывалось несколько месяцев назад именно как о хорошем примере того, как выглядит реальный код на SObjectizer-е. Ведь одно дело повествовать о сильных сторонах SObjectizer-а с иллюстрациями из игрушечных примеров. Совсем другое -- иметь возможность показать почти что продакшен-код. За время, прошедшее с первой публикации, удалось погонять arataga под более серьезной нагрузкой. Можно сказать, повезло провести первые натурные испытания. Эти испытания выявили пару узких мест, устранение которых, как мне показалось, можно привести в качестве хороших примеров применения возможностей SObjectizer-а в ситуациях "вот здесь у нас обнаружилась неведомая хрень и от нее нужно как можно быстрее избавиться". В частности, мы сегодня поговорим о том, что взаимодействие агентов друг с другом только посредством асинхронных сообщений -- это не догма. И что диспетчеры SObjectizer-а влияют на безопасность многопоточного программирования не менее серьезно, чем этот самый обмен сообщениями.

Читать далее

Вклад авторов