Как стать автором
Обновить
742.35
Рейтинг

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

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

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

А вы давно заглядывали внутрь ваших зависимостей?

Сложный Сложный
Время прочтения 8 мин
Просмотры 4.2K
Информационная безопасность *Open source *Программирование *Реверс-инжиниринг *
Из песочницы

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

Последние истории с node‑ipc и CTX заставили задуматься о том, что лежит внутри этих репозиториев. Оказалось, не только легитимный код. Там есть и попытки заработать без особых усилий, просто собирая информацию, и даже полноценные стиллеры. Причем негативных изменений стало больше после известных событий.

За подробностями о сканировании пакетов npm и PyPI добро пожаловать под кат.

Читать далее
Всего голосов 34: ↑31 и ↓3 +28
Комментарии 16

Новости

Конвертация MIDI-времени в такты и доли

Простой Простой
Время прочтения 12 мин
Просмотры 715
Программирование *.NET *C# *
Туториал

Представьте: вы создаёте новый шедевр в любимой DAW, вставляете в проект MIDI-файл, редактор показывает, что ноты в нём имеют восьмую длительность. Не обращая на это внимания, вы продолжаете творить. Но, постойте. А как DAW, собственно, понимает, что ноты в файле восьмые?

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

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

Нужно ли проверять библиотеки перед их использованием? Разберём на примере MudBlazor

Время прочтения 5 мин
Просмотры 1.5K
Блог компании PVS-Studio Программирование *.NET *C# *

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

Читать далее
Всего голосов 14: ↑13 и ↓1 +12
Комментарии 1

Борьба за человекочитаемость кода: опыт Хабра

Простой Простой
Время прочтения 8 мин
Просмотры 6K
Блог компании Хабр Программирование *Совершенный код *Проектирование и рефакторинг *
Мнение

Код Хабра день за днём впитывает в себя время, мысли и чаяния многих людей. Этому коду более 10 лет: он оброс множеством знаний, в том числе и тайных. Места c bus factor = 1 — не эка невидаль, а вполне конкретные люди с ответами на часто задаваемые вопросы.

Меня зовут Антон Каракулов, я тимлид команды бэкенд-разработки Хабра. Хабр стартовал в 2006 году, и за всё время здесь поработало, наверное, команд пять. Мне посчастливилось быть в двух из них, забегал в третью.

Эту статью я написал в рамках проекта Хабра «IT-гид», где разработчики рассказывают про свои направления. Постарался собрать в ней главные практические выводы и интересные грабли, которые нам попадались в процессе превращения старого хабракода в чистый, масштабируемый и понятный для всех — то есть человекочитаемый.

Все события утрированы, а совпадения — беспочвенны.

Читать далее
Всего голосов 67: ↑65 и ↓2 +63
Комментарии 16

Концепция постpоения локальной вычислительной сети. Взгляд из «лихих» 90-х

Средний Средний
Время прочтения 25 мин
Просмотры 2.8K
Информационная безопасность *Программирование *Сетевые технологии *История IT Старое железо
Ретроспектива
В процессе подготовки заключительной части своего повествования «Пятьдесят лет на стезе программирования» мне в руки попал материал под названием «Концепция постpоения локальной вычислительной сети». Эта концепция была написана 30 лет назад в НИИ СВТ (г. Киров), когда мы планировали модернизацию вычислительной сети 4-го ЦНИИ МО, её перевода с протокола TokenRing на протокол EThernet. Эта концепция стала основой для ОКР «Интерсеть».
Я несколько раз её перечитывал и снова возвращался к ней. Мне кажется, что будет обидно, если этот материал просто канет в лету. Эта концепция отражает дух того времени, когда стали доступны все IT-технологии, когда в одночасье исчезла отечественная вычислительная техника в широком смысле этого слова. Эти плоды мы пожинаем сегодня, когда говорим об импортозамещение в IT-отрасли.
Сохранил этот труд для истории Акулёнок Михаил Тихофееевич, мой боевой заместитель по 4 ЦНИИ МО и верный товарищ (на фотографии справа):
Читать дальше →
Всего голосов 12: ↑11 и ↓1 +10
Комментарии 12

.NET Reflection. Упрощаем работу и используем в тестировании

Сложный Сложный
Время прочтения 28 мин
Просмотры 2K
Тестирование IT-систем *Программирование *.NET *C# *
Из песочницы

В данной статье хочу немного рассказать о классе Reflector, который был написан для облегчения работы с объектами и методами предоставляемыми.NET Reflection API из пространства имен System.Reflection. Отражение позволяет выполнять задачи по исследованию сборок, типов, интерфейсов, методов с их параметрами, полей, свойств и событий путем получения информации, описывающей их структуру. Эта информация хранится в метаданных сборки и получить ее можно, используя предназначенные для этого объекты и методы API отражения. Она может потребоваться как просто для получения метаданных об интересуемых объектах, так и для генерации используемого их кода в момент работы приложения либо через сам Reflection API из пространства имен System.Reflection.Emit, либо через API LINQ Expressions из пространства имен System.Linq.Expressions. В данной статье мы не будем касаться генерации кода, а рассмотрим другую возможность, которую предоставляет отражение — это доступ к членам типов или к членам их экземпляров, вызов их методов и активацию событий.

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

Лучшие техники ревью кода

Средний Средний
Время прочтения 5 мин
Просмотры 4K
Программирование *Совершенный код *Управление разработкой *
Из песочницы

Обзор кода - один и составляющих процессов поддержания качества программного обеспечения. В ходе него один или несколько человек изучают и оценивают программу в основном путем просмотра и чтения отдельных фрагментов его исходного кода. 

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

5 неочевидных возможностей FastAPI: упрощаем работу с бэкендом на Python

Средний Средний
Время прочтения 11 мин
Просмотры 1.6K
Блог компании FirstVDS Python *Программирование *API *
Туториал
Перевод

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

Пользовательские API-интерфейсы могут быть реализованы на Python с использованием нескольких фреймворков. В этой статье остановимся на особенностях работы с одним из самых популярных вариантов — платформой FastAPI, библиотеки которой активно используют такие технологические гиганты, как Microsoft, Netflix, Uber. Речь пойдет о некоторых расширенных функциях FastAPI, которые могут использовать в своих проектах те разработчики, у кого уже есть базовые знания о фреймворке.

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

Как правила линтинга влияют на архитектуру приложения

Средний Средний
Время прочтения 3 мин
Просмотры 1.4K
Блог компании Okko JavaScript *Программирование *Анализ и проектирование систем *Совершенный код *
Туториал

В eslint есть одно простое, но мощное правило, которое поможет вам в поддержании архитектуры приложения.

Читать далее
Всего голосов 15: ↑14 и ↓1 +13
Комментарии 11

Динамическая База данных на Turbo Prolog

Средний Средний
Время прочтения 11 мин
Просмотры 2.1K
Программирование *Prolog *
Из песочницы

Реализация динамической базы данных на Turbo prolog с сохранением в CSV файл.

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

[Научпоп с кодом] Что такое «жидкая» нейросеть и как научить её играть в Atari?

Средний Средний
Время прочтения 12 мин
Просмотры 4.5K
Блог компании SkillFactory Python *Программирование *Искусственный интеллект TensorFlow *
Кейс
Перевод


Алгоритмы в основе традиционных сетей настраиваются во время обучения, когда подается огромное количество данных для калибровки наилучших значений их весов, ликвидные («текучие») нейронные сети лучше адаптируются.


«Они способны изменять свои основные уравнения на основе входных данных, которые они наблюдают», в частности, изменяя скорость реакции нейронов, — рассказывает директор Лаборатории компьютерных наук и искусственного интеллекта Массачусетского технологического института Даниэла Рус.
Читать дальше →
Всего голосов 6: ↑6 и ↓0 +6
Комментарии 4

Просто о RCU (Read–Copy-Update). Часть 2

Средний Средний
Время прочтения 4 мин
Просмотры 858
Программирование *C++ *C *Разработка под Linux *

Продолжим тему использования механизма RCU в системном программировании Linux. В первой части мы создали примитивный цикл неблокирующего изменения одной переменной, в данной части разберем пример неблокирующего изменения списка значений.

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

Оптимизация OneToMany коллекций Doctrine

Время прочтения 13 мин
Просмотры 1.2K
PHP *Программирование *Symfony *Doctrine ORM *

В этой статье будет показан пример того, как уменьшить количество запросов к базе данных до одного при работе с коллекциями сущностей иерархической структуры в контексте PHP и Doctrine ORM. Полный пример решения вы можете посмотреть в специальном репозитории. Статья основана на решении проблемы из обсуждения на StackOverflow.

Поехали!
Всего голосов 7: ↑7 и ↓0 +7
Комментарии 7

Почему освоить Python невозможно, и почему это нормально | Pydon't

Время прочтения 10 мин
Просмотры 26K
Блог компании Издательский дом «Питер» Python *Программирование *Алгоритмы *Профессиональная литература *
Перевод
image

Фото Migle Siauciulyte на Unsplash

Введение


Говорят, что для овладения каким-либо навыком необходимо 10 000 часов. Я не буду спорить, правда это или нет. Я скажу вам, что даже если это правда, я не уверен, что это применимо к Python!

В этой статье я объясню, почему я считаю, что вы не можете по-настоящему освоить Python, но я также скажу вам, почему я считаю, что это нормально. Я дам ряд практических советов, которые вы сможете использовать, чтобы постоянно совершенствовать свои знания Python.
Наконец, в конце я поделюсь небольшим случаем из моего личного опыта работы с Python, подкрепляющий мои тезисы.
Читать дальше →
Всего голосов 37: ↑24 и ↓13 +11
Комментарии 23

Истории

Главное из мира Python за январь 2023

Время прочтения 3 мин
Просмотры 3.4K
Разработка веб-сайтов *Python *Программирование *Django *Flask *
Дайджест

Раз в месяц мы в Moscow Python Podcast собираемся и обсуждаем новые релизы, PEP, заинтересовавшие нас инструменты и статьи. Под катом — текстовая выжимка из обсуждения.

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

Архитектурные шаблоны взаимодействия с базами данных

Простой Простой
Время прочтения 11 мин
Просмотры 2.7K
Блог компании OTUS Высокая производительность *Программирование *Java *Администрирование баз данных *

В первой статье мы рассмотрели шаблоны проектирования, применимые в программировании приложений. Однако сейчас сложно представить серьезное бизнес-приложение без базы данных. Большие объемы данных требуют хранения и обработки. И то насколько оптимально построена связь между уровнем прикладного кода и уровнем БД во многом зависит быстродействие системы в целом. Поэтому важно правильно построить взаимодействие с СУБД. В этой статье мы рассмотрим шаблоны взаимодействия с базами данных. Правильно выбранный шаблон взаимодействия позволит избежать многих проблем при разработке и получить качественное приложение.

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

Делай нейминг как сеньор

Время прочтения 13 мин
Просмотры 12K
Блог компании Dodo Engineering Программирование *Анализ и проектирование систем *Совершенный код *Управление разработкой *

Это объект Pizza, там хранится инфа о латте, а заказали его в Restaurant или в Pizzeria? Неудобно? Максимально. Мы читаем код существенно больше, чем пишем. И хочется сразу понимать, что происходит, не играя в квесты «что имел в виду автор», «да как это работает» и «я снова ничего не понял». Без навыка давать хороший нейминг невозможно писать качественный и поддерживаемый код. Про нейминг говорят заодно, в рамках архитектуры и общих инженерных практик. В статье поговорим про него отдельно.

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

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

Найди себя в React

Время прочтения 1 мин
Просмотры 5.1K
Блог компании Московский кредитный банк JavaScript *Программирование *ReactJS *Карьера в IT-индустрии
Мегапроект

Хотя в IT и разработана шкала оценки программистов (Trainee, Junior, Middle, Senior, Tech Lead), с которой более или менее все согласны, единого определения каждого уровня среди работодателей пока нет. В итоге каждая компания устанавливает собственные требования к навыкам на каждом уровне.

Этот тест поможет вам прикинуть, какой бы у вас был грейд, если бы вы собеседовались в МКБ.

Пройти тест
Всего голосов 13: ↑10 и ↓3 +7
Комментарии 7

Столетний язык программирования — какой он

Простой Простой
Время прочтения 14 мин
Просмотры 27K
Блог компании Cloud4Y Программирование *C++ *Ruby on Rails *Fortran *
Ретроспектива
Перевод

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

И всё же интересно, какие языки все еще будут использоваться через 100 лет?

Читать далее
Всего голосов 61: ↑52 и ↓9 +43
Комментарии 158

Генератор случайных чисел на базе неопределённого поведения состояния гонки

Средний Средний
Время прочтения 15 мин
Просмотры 2.2K
Криптография *Программирование *C *Go *Параллельное программирование *

Генерация случайных чисел окружает нас везде. Любой шаг, дыхание, дуновение ветра, шум кулера, частота мяуканья кошки и т.п. уже может рассматриваться как некая генерация случайности. Так например, насколько вы контролируете вашу ходьбу? Можете ли вы с точностью до нанометра определить точку опоры? Если не можете, то сама погрешность в неопределённости расстояния начинает становиться для вас генератором случайности.

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

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