Как стать автором
Обновить
680.94

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

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

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

Полезные расширения VScode для работы с документацией

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

Как правило, работа с документацией — это последний этап любого проекта, связанного с данными (data science, data visualization и т. д.), проектированием и разработкой ПО. Речь о создании и редактировании библиотек, файлов README, обучающих материалов и др. Среди всех преимуществ VScode — его уникальная экосистема расширений. И особенно впечатляют те, что помогают работать с документацией. В этой статье поделюсь самыми полезными из них.

Читать далее
Всего голосов 7: ↑6 и ↓1 +5
Комментарии 1

Новости

Тест на секретную вечеринку Яндекса, — ночь в финтехе

Уровень сложности Простой
Время на прочтение 9 мин
Количество просмотров 1.8K

Всем привет!
Недавно прошло событие ночь в финтехе от Яндекса и поскольку Яндекс не рассказал о нем здесь, то это сделаю я. Что бы попасть на мероприятие - нужно было решить несложную задачку (приведена ниже в тексте). Статья будет включать 4 темы: предыстория, попытки решения, решение, послесловие и мои мысли.
П.С. вся статься носит авторский хараткер и написана по типу вольного сочинения.

Короткая предыистория:
Ближе к ночи я писал код и попеременно листал ленту ВК, пока глупый и ленивый компьютер не хотел компилировать мой код каждый раз возвращаясь с новой ошибкой.
Неожиданно мое внимание привлек интересный рекламный пост в ленте. Меня заинтересовал даже не столько пост, сколько его формат. "Приглашаем крутых(?) разработчиков на закрытое "пати" для дружеского общения и дальнейшего найма (к сожалению, ссылка на сам рекламный пост у меня не сохранилась), - так можно передать суть поста и красочная картинка внизу.
Ремарка: "Крутых" я написал курсивом, потому что у меня отложилось в памяти будто речь в рекламе шла о мидл+ уровне, хотя в оригинале об этом не сказано, возможно тексты слегка расходятся, а возможно я это пирдумал.
Интересно, Я не только тратит бюджет на рекламу вакансий (что нормально), но и организует тусовки закрытого формата, а это уже что-то новенькое. Умело проработанная дизайнером картинка и не менее яркая отдельная страничка вселяли уверенность в серьезность события.
В качестве фейс-контроля выступала задача, что только придавало ажиотажа.

Задача:

Cтранное сообщение мы тут написали, что-то в нем явно не так🤔
Давай попробуем расшифровать:

10000100 11001110 10101110 00000100 00100110 01110110 10101110 11110110 01001110 10000110 00000100 11001110 10100110 00101110 10011110 01000110 00000100 00100110 01110110 10000110 00000100 11001110 00101110 10010110 01000010

Поле для ответа:
Форма отправится только в случае верно заполненного ответа

Читать далее
Всего голосов 11: ↑9 и ↓2 +7
Комментарии 10

Гонка за скоростью: сравнение производительности ведущих фреймворков JavaScript в веб-разработке. Fastify, Express, Koa

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

Недавно я задался вопросом «Какой JS фреймворк самый быстрый». Я обратился с этим запросом в гугл и нашел очевидный ответ «это fastify!». Но почему именно он?.

Я практически сразу наткнулся на статью, результаты которой меня немного расстроили, так как в качестве дополнительной нагрузки на endpoint автор использовал вычисление ряда Фибоначчи, что, по моему мнению, не раскрывает всей сути сравнения. Тогда я решил провести собственное исследование.

Читать далее
Всего голосов 8: ↑7 и ↓1 +6
Комментарии 4

Валидация данных на уровне бизнес-логики приложения

Уровень сложности Средний
Время на прочтение 2 мин
Количество просмотров 579

Данная статья продолжает тему статьи "Когда ни туда, ни сюда, или в поисках оптимальной границы Domain слоя".

Во многих бизнес приложениях для сущности User выдвигается стандартное требование: "При регистрации пользователя нужно проверять, что записываемый email уникальный, ни у одного другого пользователя такого больше нет".

Подобная задача предельно типовая и поэтому должна иметь типовое решения. Далее рассматривается решение, основанное на трёхслойной архитектуре, в которой каждый слой (layer) состоит из трёх подслоёв (sublayer). Такая архитектура была описана в статье "Пример описания многослойной архитектуры, основанной на использовании наборов подслоёв и иерархии моделей данных".

В качестве примера рассмотрим веб-сервис, который получает запрос на создание нового пользователя и сохранение его данных в базе данных.
При получении запроса функционал веб-сервиса десериализует данные пользователя в объект типа UserDTO. В этом объекте в поле Email находится
адрес электронной почты нового пользователя. Этот адрес электронной почты должен быть уникален на уровне соответствующего поля таблицы Users,
в которой в базе данных хранятся данные пользователей приложения.

Читать далее
Всего голосов 3: ↑1 и ↓2 -1
Комментарии 6

Истории

Как мы тестируем устройства, которые производим: Python, Grafana и крафтовые стенды

Уровень сложности Простой
Время на прочтение 10 мин
Количество просмотров 1.6K

Мы продолжаем рассказывать о внутренней кухне Wiren Board. В предыдущей статье мы заставили работать китайский паяльный робот, который выполняет рутинную часть работы монтажников на нашем производстве.

Все наши «железки» должны поступать клиентам в рабочем состоянии и служить максимально долго. Именно по этой причине после производства все устройства проходят тестирование.

Расскажем, как разрабатывали фирменный тестовый пакет test-suite, с какими проблемами столкнулись и как мы их решили. Также покажем наши стенды, на которых тестируем все выпускаемые продукты.

Интересно? Ныряйте под кат.

Читать далее
Всего голосов 19: ↑19 и ↓0 +19
Комментарии 4

В общих словах про ЯП Dart

Уровень сложности Простой
Время на прочтение 7 мин
Количество просмотров 3.8K

Привет, Хабр!

История Darth Vader началась в 2011 году. Целью создания Dart было предложить альтернативу JavaScript, которая позволила бы создавать более сложные, высокопроизводительные веб-приложения, облегчая при этом процесс разработки.

Со временем Dart претерпел множество апдейтов, но его основной рывок произошел с запуском Flutter — фреймворка для создания нативных интерфейсов для мобильных, веб- и настольных приложений из единой кодовой базы.

Язык поддерживает ООП с классами и множественным наследованием, а также функциональные возможности, такие как высшие порядки функций, замыкания и асинхронность и т.п.

Система типов в Dart поддерживает как статическую типизацию, так и типизацию во время выполнения.

Читать далее
Всего голосов 17: ↑10 и ↓7 +3
Комментарии 5

Программированию конец?

Уровень сложности Средний
Время на прочтение 27 мин
Количество просмотров 38K

Данная статья является переводом видеоролика с канала Мэтта Вулфи, который в основном посвящен теме искусственного интеллекта.

В данном видео Мэтт Вулфи обсуждает вопрос, который волнует многих: сможет ли искусственный интеллект заменить программистов? Он рассматривает текущее состояние дел и будущие возможности ИИ в программировании.

Основные моменты видео:

Разногласия в части темы замены программистов Искусственным Интеллектом.

Автоматизация задач с помощью ИИ: написание и отладка кода.

Влияние ИИ на участие разработчиков в процессе.

Необходимость наличия связующего звена между ИИ и конечными пользователями.

А также много другое и капелька теории!

Читать далее
Всего голосов 84: ↑25 и ↓59 -34
Комментарии 328

Бобры-п[р]огромисты

Уровень сложности Простой
Время на прочтение 4 мин
Количество просмотров 7.9K

Эта история навеяна недавним интервью в одну контору, которая считает, что желтые и красные конторы, не такие синие. Все случайные совпадения неслучайны, имена скрыты. Ни один случайный бобёр за время интервью не пострадал.

Бобер-HRобер: я увидела как грызете дерево в соседнем лесу, не хотите перебраться к нам? У нас деревья синие и потолще ваших, зеленые деревья нынче не в моде.
Бобер-погромист: хм, наверное нет, толщина текущих деревьeв меня устраивает.

Бобер-HRобер: ну вы всё-таки приходите, мы заложили пару делянок, где самые опытные бобры будут распиливать очень старую монолитную сосну с ветками длиной 98 см, на доски очень модной нынче длины 23 см, а еще у вас также будет возможность повлиять на толщину досок длиной 26 см.
Бобер-погромист: а вот это интересно, отправляйте соловья.

Через неделю, на комфортабельной полянке где-то в синем лесу.

Senior-Бобер: Итак, вы считаете себя хорошим бобром?
Бобер-погромист: Всё верно. Грызу деревья разной толщины уже лет двадцать.

Lead-Бобер: А ветки какой длины предпочитаете?
Бобер-погромист: Ветки 17см самые вкусные

Бобры идут, бобрам дорогу!
Всего голосов 91: ↑81 и ↓10 +71
Комментарии 20

Деплоим сайт в облако за рубль в месяц

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

Как часто бывает: делаешь pet-проект, разрабатываешь фронтенд лендинга, а потом понимаешь, что это нужно протестировать. Посмотреть, как отображается страница на разных устройствах, чтобы корректно ее адаптировать. Ведь не всегда DevTools отражают «полную картину».

Может быть и другой сценарий. Порой нужно опубликовать в интернете страничку, например, с примерами работ по фотографии или дизайну. В подобных ситуациях есть статистические HTML-страницы, которые должны быть просто доступны для просмотра. И не всегда целесообразно арендовывать полноценный сервер, чтобы закрывать столь мелкие задачи.

Привет, Хабр! Меня зовут Саша, в этой статье я расскажу, как задеплоить в облако статический веб-сайт с помощью объектного хранилища стоимостью около 1₽/мес. А также — настроить красивый домен. Подробности под катом.
Читать дальше →
Всего голосов 32: ↑32 и ↓0 +32
Комментарии 28

Подкаст «Скрамное IT»: о чем говорят айтишники (и что они недоговаривают)

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

Привет, уважаемые хабровчане!

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

Читать далее
Всего голосов 15: ↑9 и ↓6 +3
Комментарии 2

Как перестать переусложнять и начать жить

Уровень сложности Простой
Время на прочтение 10 мин
Количество просмотров 21K

Мое наблюдение состоит в том, что мы — разработчики и продукты, сильно переусложняем, осознанно или нет, но всякие «„Архитектурные комитеты“, „Планирования“, „Апрувы у 50 отделов“ и деплои в 2-часовые окна, простыни текста сопровождающие простейшие фичи — это просто какой‑то бич современной разработки. Умные дяди с 20 летним опытом за плечами, с невозмутимыми лицами сутки напролет на созвонах обсасывают простейшие вещи вроде замены кнопки. Что это? Следствие усложнения программного обеспечения или засилие не тех людей не на тех местах? Или следствие входа в индустрию новичков, стремящихся простое сделать сложным?

В статье мы разберем что такое „переусложнение“, дадим ему определение и на реальных примерах разберем во что это выражается и как с этим бороться.

Читать далее
Всего голосов 44: ↑39 и ↓5 +34
Комментарии 55

Дави жуков

Уровень сложности Средний
Время на прочтение 6 мин
Количество просмотров 2.4K

Существует много курсов программирования и повышения IT-квалификации, но ни на одном из них не учат системно искать и исправлять ошибки. В реальных крупных проектах до 30% времени может уходить не на написание нового кода и фич, а на поиск первопричин неисправностей и их устранения. Именно недочёты и ошибки будут мешать вашему клиенту составить положительное впечатление о продукте, а в некоторых случаях они полностью блокируют процесс. Кроме того, инженер, который только пишет новый код и не решает ошибки, не получает архитектурный опыт и не расширяет кругозор, что приводит к появлению новых недочётов в проектах. Я опишу наш инструментарий для исправления ошибок в веб-приложениях и поделюсь опытом.

Читать далее
Всего голосов 17: ↑14 и ↓3 +11
Комментарии 8

Как расширить возможности стандартного Enum

Уровень сложности Простой
Время на прочтение 5 мин
Количество просмотров 7.5K

А может всё-таки есть способ сделать такой Enum, используя стандартную библиотеку Python?!

Под катом будем разбираться в существующих вариантах решения. 

Читать далее
Всего голосов 17: ↑15 и ↓2 +13
Комментарии 4

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

Moscow QA #3 — митап по тестированию ПО
Дата 14 марта
Время 18:30 – 21:30
Место
Москва Онлайн
Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн

Что нового в планировщике / оптимизаторе запросов Postgres 16

Уровень сложности Средний
Время на прочтение 18 мин
Количество просмотров 4.1K

PostgreSQL 16 вносит немало улучшений в планировщик запросов и позволяет выполнять многие SQL-запросы быстрее, чем в предыдущих версиях PostgreSQL.

Если вы посмотрите на PG16 release notes, то увидите некоторые из этих улучшений. Но из-за объема изменений, вносимых в каждом выпуске PostgreSQL, невозможно предоставить достаточно подробную информацию о каждом изменении.

В этом посте вы получите глубокое представление о 10 улучшениях, внесенных в планировщик запросов PostgreSQL 16. Для каждого из улучшений будет сравнения выходных данных планировщика PG15 и PG16, а также примеры того, что изменилось, в виде автономного теста, который вы можете попробовать сами.

Читать далее
Всего голосов 19: ↑19 и ↓0 +19
Комментарии 0

Типы-расширения в Dart

Уровень сложности Средний
Время на прочтение 9 мин
Количество просмотров 839

Тип-расширение (extension type) – это абстракция, которая происходит на этапе компиляции и "оборачивает" существующий тип, предоставляя для него новый, сугубо статический интерфейс. Типы-расширения являются важным компонентом статической интеграции с JavaScript (static JS interop), поскольку они позволяют легко изменять интерфейс существующего типа (что критически важно для любого вида взаимодействия) без затрат на создание реального объекта-обёртки.

Типы-расширения позволяют строго определить набор операций (или интерфейс), доступных для объектов базового типа, который называется типом представления. При определении интерфейса для типа-расширения вы можете оставить некоторые методы типа представления, отбросить другие, заменить некоторые из них и добавить новую функциональность.

Читать далее
Всего голосов 6: ↑5 и ↓1 +4
Комментарии 0

Сравнение различных схем квантования для LLM

Уровень сложности Простой
Время на прочтение 4 мин
Количество просмотров 3K

Как запустить локально LLM 70B параметров на 1 видеокарте с 24gb? Нужно квантование!

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

Читать далее
Всего голосов 7: ↑6 и ↓1 +5
Комментарии 5

Pkl — новый язык конфигураций от Apple. Обзор и сравнение с YAML и JSON

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

Каждое приложение требует определенного уровня конфигурации. С помощью специальных языков можно создавать файлы, которые способны автоматизировать инициализацию системы. Эти файлы обычно читаются и интерпретируются только один раз. Наиболее распространенный пример — конфигурации INI Windows, которые обрабатываются с использованием API Microsoft.

Популярность конфигураций вроде INI с годами менялась. По мере развития приложений росла и сложность конфигурирования. Поэтому особенно важно правильно выбрать язык конфигураций, чтобы не усложнить жизнь себе и своему pet-проекту. Под катом рассказываем о пикулях и Pkl — новом решении от Apple.
Читать дальше →
Всего голосов 31: ↑29 и ↓2 +27
Комментарии 27

Книга «Объектно-ориентированный Python, 4-е изд.»

Время на прочтение 19 мин
Количество просмотров 4.9K
image Привет, Хаброжители!

Глубоко погрузитесь в различные аспекты объектно-ориентированного программирования на Python, паттерны проектирования, приемы манипулирования данными и вопросы тестирования сложных объектно-ориентированных систем. Обсуждение всех понятий подкрепляется примерами, написанными специально для этого издания, и практическими упражнениями в конце каждой главы. Код всех примеров совместим с синтаксисом Python 3.9+ и дополнен аннотациями типов для упрощения изучения.

Стивен и Дасти предлагают вашему вниманию понятный и всесторонний обзор важных концепций ООП, таких как наследование, композиция и полиморфизм, и объясняют их работу на примерах классов и структур данных Python, что заметно облегчает проектирование. В тексте широко используются UML-диаграммы классов, чтобы было проще понять взаимоотношения между классами. Помимо ООП, в книге подробно рассматривается обработка исключений в Python, а также приемы функционального программирования, пересекающиеся с приемами ООП. В издании представлены не одна, а две очень мощные системы автоматического тестирования: unittest и pytest, а в последней главе детально обсуждается экосистема параллельного программирования в Python.

Получите полное представление о том, как применять принципы объектно-ориентированного программирования с использованием синтаксиса Python, и научитесь создавать надежные и устойчивые программы.
Читать дальше →
Всего голосов 11: ↑10 и ↓1 +9
Комментарии 3

Изучение Java в 2024 году: что стоит почитать. 6 книг, которые можно рекомендовать

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

В 2024 г. Java никуда не делась и в ближайшие много лет явно не исчезнет. Язык продолжает развиваться. ПО, написанного на этом ЯП, всё больше. Разработчиков тоже нужно много и сразу, причём хороших. Для того чтобы стать таким специалистом, нужно, конечно, учиться и практиковаться. Сильно помогают книги, о которых сегодня и поговорим. Под катом — подборка пособий по Java.

Читать далее
Всего голосов 12: ↑10 и ↓2 +8
Комментарии 6

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

Уровень сложности Простой
Время на прочтение 6 мин
Количество просмотров 20K

В основном я учился программированию самостоятельно. Когда у меня появлялась захватывающая идея, я разбирался, что необходимо для решения этой задачи. Например, когда я заинтересовался работой поисковых движков, то начал читать о вычислительной эффективности множеств. Так я обнаружил задачу «как понять, что я уже выполнил краулинг этого URL?», если их уже были тысячи. Чтобы ускорить ответ на этот вопрос, я использовал множество, поиск по которому занимает O(1), а не O(n).

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

В тот момент, когда я начал понимать вычислительную эффективность и стремиться к ускорению своих программ, я как раз решал задачу, связанную с поисковым движком. С тех пор я иногда задаюсь вопросом: что стоит сделать дальше? Каким будет моё следующее сложное задание? Это сильно зависит от имеющихся у вас на текущий момент знаний; некоторые идеи имеют смысл, другие пока недостижимы. Так мы и учимся.

Я решил составить собственный список проектов, поддерживающих мой интерес к программированию. Это список в стиле серии Challenging projects every programmer should try Остина Хенли.

Читать далее
Всего голосов 19: ↑18 и ↓1 +17
Комментарии 7

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