Рубрика «Программирование» - 217

Многие думают, что точки входа это такие инструкции в setup.py, которые позволяют сделать пакет доступным для запуска из командной строки. Это, в целом, верно, но возможности точек входа не ограничиваются этим.

Ниже я покажу как можно реализовать систему плагинов для пакета, чтобы другие люди могли с ним взаимодействовать или, например, расширять его функциональность динамически.

Точки входа в Python - 1

Осторожно: специфический юмор далее по тексту.
Читать полностью »

Что такое энтропия в ПО и как ею управлять? - 1

Сегодня солнечный день. Вы едете по дороге в вашу деревню, в которой живут все ваши друзья, ваша семья и ваша любимая собака. Прекрасный день! Неожиданно вы слышите ужасный, кошмарный вопль, разрывающий окрестности. Огромная отвратительная Гидра приближается к деревне, чтобы её уничтожить! Вы хватаете меч (конечно, у вас есть меч!) и стараетесь защитить всех, кого любите. Но есть небольшая проблема: у чудовища много голов, и когда вы отрубаете одну из них, быстро вырастает новая!

Кажется, что вы не можете победить в этой битве. Возможно, вы сможете играть с Гидрой достаточно долго, так чтобы вся деревня успела улететь от ужасной угрозы? Наконец, вы станете настоящий героем всего мира! Кому этого не хочется?

В роли Гидры выступает энтропия в ПО: это ваш враг, он вас измотает, но вы никогда не сможете полностью от него избавиться. Но с ним всё равно нужно бороться, чтобы ваши приложения (и коллеги) оставались здоровыми и вменяемыми.

Мы узнаем:

  1. Что такое энтропия в ПО и как заметить её в своём коде.
  2. Что является её возможными причинами и как сохранить энтропию на низком уровне.

Хватит болтовни, к делу!
Читать полностью »

По данным StackOverflow Python — это самый быстрорастущий язык программирования. Например, в одном из отчётов Forbes речь идёт о том, что использование Python выросло на 456%. Python применяется в Netflix, в IBM, и ещё в тысячах компаний по всему миру. Давайте не забывать и о Dropbox. Сервисы этой компании тоже написаны на Python. В соответствии с исследованием Dice, знания в области Python весьма востребованы в наши дни, а индекс популярности языков программирования говорит о том, что Python — это сегодня самый популярный язык в мире. Если сравнить Python с другими языками, то окажется, что у него есть следующие сильные стороны:

  1. Совместимость с подавляющим большинством платформ и операционных систем.
  2. Наличие множества опенсорсных фреймворков и инструментов.
  3. Код, который легко читать и поддерживать.
  4. Надёжная стандартная библиотека.
  5. Стандартный механизм разработки через тестирование.

10 хитростей Python, о которых полезно знать - 1
Читать полностью »

Разбираем WTF задачки в JavaScript - 1

JavaScript язык особенный. Сколько его не изучай, всегда найдутся моменты, которые заставят даже матёрого профессионала начать чесать репу.

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

Задачка 1 — «BANANA»

Разбираем WTF задачки в JavaScript - 2

Читать полностью »

Привет! Совсем недавно мы выложили первую часть серии подборок полезных обучающий курсов для программистов. И вот незаметно подкралась последняя пятая часть. В ней мы перечислили некоторые из самых популярных IT-курсов, которые доступны на нашей учебной платформе Microsoft Learn. Все они, конечно же, бесплатны. Подробности и ссылки на курсы под катом!

Темы курсов в этой подборке:

  • Python
  • Xamarin
  • Visual Studio Code
  • Microsoft 365
  • Power BI
  • Azure
  • ML

Все статьи из серии

10 самых популярных курсов Microsoft на русском - 1Читать полностью »

Если данные не помещаются в память. Простейшие методы - 1

Самка трубкозуба с детёнышем. Фото: Scotto Bear, CC BY-SA 2.0

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

Проблема в нехватке памяти. Если у вас 16 гигабайт ОЗУ, вы не сможете туда загрузить стогигабайтный файл. В какой-то момент у ОС закончится память, она не сможет выделить новую, и программа вылетит.

Что делать?
Читать полностью »

В этой статье я хотел бы рассказать, как быстро и просто сделать каркас приложения на Java с поддержкой динамической загрузки плагинов. Читателю наверняка сразу в голову придёт, что такая задача уже давно решена, и можно просто использовать готовые фреймворки или написать свой загрузчик классов, но в предлагаемом мною решении ничего этого не потребуется:

  • Нам не понадобятся специальные библиотеки или фреймворки (OSGi, Guice и т.п.)
  • Мы не будем использовать парсинг байткода с помощью ASM и подобных библиотек.
  • Не будем писать свой загрузчик классов.
  • Не будем использовать рефлексию и аннотации.
  • Не понадобится возня с classpath для поиска плагинов. Мы вообще не будем трогать classpath.
  • Также мы не будем использовать XML, YAML или какие-либо другие декларативные языки для описания точек расширений (extension point’ов в плагинах).

Однако всё же есть одно требование — такое решение будет работать только на Java 9 или выше. Потому что оно будет основано на модулях и сервисах.
Читать полностью »

История ещё одного бана.

Всем привет! Слышали ли вы когда-то про баны приложений и разработчиков в Google Play? Вот вам ещё одна такая история. Плюс попытка собрать в одном месте похожие случаи и предложить какой-то план действий по предотвращению произвола Google в этой области. Ибо нехорошо, когда тебя банят за легальное использование свободного материала. А мне лично нравится идея лицензий на контент типа CC BY-SA, которые разрешают любое оного использование, включая коммерческое. В частности, в том числе из-за такой лицензии, мы, разработчики, имеем такие прекрасные сайты как StackOverflow, где я даже модератором избран. К сожалению, такие компании как Google не уважают идеи, лежащие в основе таких лицензий. Вот вам моя история.

Читать полностью »

Привет!

Многие уже начинают готовиться к новогодним праздникам, закупать подарки, кто-то планирует путешествия на длинные новогодние выходные. А у нас в JetBrains пока еще горячая пора выпуска релизов продуктов. Cегодня я спешу поделиться с вами новостями о недавно вышедшем релизе нашей кроссплатформенной среды разработки для C и C++ — CLion 2019.3.

CLion release

Основной целью этого релиза было, как бы пафосно это ни прозвучало, качество. Мы решили сфокусироваться на проблемах, которые давно беспокоят наших пользователей, — в первую очередь, производительность и отзывчивость редактора, а во вторую — баги, недоделки и очень востребованные, но отсутствующие возможности.

Для начала, коротко о самом главном в этом релизе:

  • Улучшения быстродействия и отзывчивости редактора, в первую очередь автодополнение, реализованное в нашем движке на базе Clangd.
  • Ninja-генератор в CMake, настройки CMake по умолчанию и другие улучшения проектной модели.
  • Обновления в интеграции с отладчиками.
  • Новое действие для переключения между заголовочными и сорс-файлами.
  • Более точный анализ кода: новая проверка для виртуальных функций, а также проверка правописания в CMake и в комментариях Doxygen.
  • Поддержка концептов из стандарта C++20.
  • Метрики покрытия кода.
  • WSL2, правила форматирования и именования от Microsoft, обновления VCS поддержки и многое другое.

Ниже поговорим подробнее, но если вы готовы попробовать уже сейчас, то заходите и скачивайте билд с нашего сайта. Как обычно, доступна бесплатная пробная версия на 30 дней.
Читать полностью »

Значения null, при бездумном их использовании, могут сделать вашу жизнь невыносимой и вы, возможно, даже не понимаете, что именно в них причиняет такую боль. Позвольте мне объяснить.

«Нулевой» ад и как из него выбраться - 1

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js