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

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

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

Сначала показывать
  • Новые
  • Лучшие
Порог рейтинга
  • Все
  • ≥0
  • ≥10
  • ≥25
  • ≥50
  • ≥100

Spring @Transactional — ошибки, которые совершали все

Блог компании OTUSПрограммирование*Java*

Вероятно, одной из наиболее часто используемых аннотаций Spring является @Transactional. Несмотря на ее популярность, иногда она используется неправильно, в результате чего получается не совсем то, что задумал инженер-программист.

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

1. Вызовы в пределах одного класса

@Transactional редко подвергается достаточному количеству тестов, и это приводит к тому, что какие-то проблемы не видны на первый взгляд. В результате вы можете столкнуться со следующим кодом:

Аннотация не работает в методе registerAccount:

Читать далее
Всего голосов 2: ↑2 и ↓0+2
Просмотры1.1K
Комментарии 2

Новости

Показать еще

XSS: атака и защита с точки зрения C# программирования

Блог компании PVS-StudioИнформационная безопасность*Программирование*.NET*C#*

XSS, или межсайтовый скриптинг, является одной из самых часто встречающихся уязвимостей в веб-приложениях. Она уже долгое время входит в OWASP Top 10 – список самых критичных угроз безопасности веб-приложений. Давайте вместе разберемся, как в вашем браузере может выполниться скрипт, полученный со стороннего сайта, и к чему это может привести (спойлер: например, к краже cookie). Заодно поговорим о том, что необходимо предпринять, чтобы обезопаситься от XSS.

Читать далее
Всего голосов 4: ↑4 и ↓0+4
Просмотры1.9K
Комментарии 2

Имплементация простых фьючерсов с помощью корутин

Блог компании OTUSПрограммирование*C++*
Перевод

Вместо return в корутине используется co_return, возвращающий результат. В этой заметке я хочу реализовать простую корутину с использованием co_return.

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

Разбор алгоритмов генерации псевдослучайных чисел

Блог компании Mail.ru GroupПрограммирование*Алгоритмы*Математика*

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

Читать далее
Всего голосов 10: ↑10 и ↓0+10
Просмотры1.7K
Комментарии 4

Новые API в .NET 6

Блог компании MicrosoftПрограммирование*.NET*API*C#*

.NET 6 в процессе разработки, и я хотел поделиться некоторыми из моих любимых новых API в .NET и ASP.NET Core, которые вам обязательно понравятся. Почему они понравятся? Потому что они разработаны при прямом участии нашего фантастического сообщества разработчиков .NET. Подробнее в статье.

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

Задача, которую предлагали разработчикам на собеседованиях в Reddit: разбор и решение от сотрудника компании

Блог компании Productivity InsidePython*Программирование*Алгоритмы*Карьера в IT-индустрии
Перевод
Впервые я столкнулся с техническими собеседованиями еще в 2012 году, когда искал свою первую работу в IT. Я выслушал условия задачи, нацарапал решение на доске, ответил на несколько вопросов и ушел, весь перепачканный черный маркером. В то время я совершенно не представлял, как выглядит весь этот процесс с другой стороны; всё, что мне оставалось – в тревоге ждать результатов и надеяться, что я вписался в неизвестные мне критерии тех, кто проводил собеседование.

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

Для этой цели я разберу реальную задачу, которую мы раньше предлагали желающим присоединиться к Reddit, пока не решили, что ей пора на покой. Объяснив решение, я расскажу о том, что учитывалось при оценке и почему это задание кажется мне подходящим для собеседований. Надеюсь, к концу статьи вы подойдете с чувством, что узнали больше о механизмах отбора и стали лучше подготовлены к процессу найма.
Читать дальше →
Всего голосов 17: ↑16 и ↓1+15
Просмотры9.1K
Комментарии 31

Заметки KPHP: тестирование и бенчмарки

Блог компании ВКонтактеOpen source*PHP*Программирование*

Заметки KPHP: тестирование и бенчмарки


Перед вами первая статья из серии «Как использовать KPHP в open source?».


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


В сегодняшнем выпуске обсудим:


  • базовое использование composer с KPHP;
  • как писать и запускать unit-тесты для KPHP;
  • бенчмаркинг KPHP-кода (профилирование затронем в другой раз);
  • как правильно сравнивать результаты бенчмарков.

Читать дальше →
Всего голосов 11: ↑10 и ↓1+9
Просмотры876
Комментарии 2

Как повысить качество кода в тестовом проекте

Блог компании WrikeПрограммирование*Java*Совершенный код*Тестирование веб-сервисов*

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

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

Вместо 24 JOIN в SQL запросе — реализация в графовой базе данных

Блог компании Фактор групПрограммирование*SQL*NoSQL*Администрирование баз данных*
Перевод

Многие не знают, что некоторые сложные для написания и неэффективные для выполнения SQL-запросы можно легко выразить и эффективно выполнить в графовой базе данных. Это справедливо даже для тех, кто уже знает, что графовые алгоритмы являются наиболее эффективным, а иногда и единственным решением для сложных бизнес-задач, таких как кластеризация пользователей (с использованием Лувенского алгоритма), поиск инфлюенсеров - людей или компаний (алгоритмом PageRank) или прогнозирование поведения пользователей для персональных рекомендаций (алгоритмом label propagation).

В этой статье мы опишем SQL запрос с 24 JOIN в корпоративный knowledge graph и покажем, что задачу можно решить в графовой базе данных - и это будет понятней, более легко поддерживаться и эффективно выполняться. Пример взят из проблемы, описанной в сообществе: https://community.tigergraph.com/

Читать далее
Всего голосов 7: ↑3 и ↓4-1
Просмотры1.6K
Комментарии 15

Менеджер мечты в разработке ИТ-продуктов

Блог компании ДомКликПрограммирование*Управление проектами*Управление продуктом*

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

Листай дальше
Всего голосов 17: ↑15 и ↓2+13
Просмотры2K
Комментарии 2

Натирал вилки, пока учился программировать

Блог компании Kolesa GroupПрограммирование*Карьера в IT-индустрии

Всем привет, я Павел – Junior Backend Developer в Kolesa Group. Хочу поделиться историей и рассказать о пути, который прошел, чтобы оказаться там, где я сейчас.  

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

Читать далее
Всего голосов 9: ↑3 и ↓6-3
Просмотры1.5K
Комментарии 10

Статья для тех, кто не попал на Летнюю школу по компьютерному зрению

Блог компании IntelПрограммирование*Обработка изображений*Машинное обучение*Учебный процесс в IT

Полноценных школ по компьютерному зрению, таких, чтобы участники могли получить опыт от разработчиков алгоритмов из крупных технологических компаний, осталось очень немного. В этом плане больше всего повезло студентам из Нижнего Новгорода, ведь каждое лето силами преподавателей Университета Лобачевского и инженеров компании Intel проводится Computer Vision Summer Camp - Летняя школа по компьютерному зрению. А для тех, кому не удалось на нее попасть, мы расскажем самое важное и интересное…

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

Разбиения чисел и магические шестиугольники

Программирование*Разработка игр*Алгоритмы*Математика*Поисковая оптимизация

Среди свойств разбиений чисел на части можно указать одно, не называемое другими авторами, которое в ряде случаев оказывается весьма полезным. Речь идет о свойстве разбиений числа, закрепляющем за конкретными слагаемыми подмножества позиций (точек) дискретной плоскости, в котором эти слагаемые могут перемещаться, не выходя за его пределы. Например, рассмотрим такую задачу. Имеется 2 спицы длиной 12 ед и 7 шаровых бусин с диаметрами 2,2,2,3,3,4,4 ед и сквозными отверстиями, проходящими через центры бусин. Как распределить и нанизать бусины на спицы, чтобы спицы после вставки их в кольцо с диаметром большим 12 образовали симметричную фигуру?

Читать далее
Всего голосов 5: ↑3 и ↓2+1
Просмотры1.1K
Комментарии 2

rusEFI: Hellen и новости

Open source*Программирование*Программирование микроконтроллеров*

TL,DR: gerbmerge+pdf merge+non-kicad interactivebom позволяет нам эффективно склеивать очень похожие, но при этом разные по форме и нюансам платы электронных блоков управления ДВС. Другие новости про rusEFI, до сих пор ищем единомышленников :)

В статье от 2014 года https://habr.com/ru/post/244737/ рассказ об открытом электронном блоке управления двигателями внутреннего сгорания rusEFI остановился на плате Frankenso. За четыре года мы продали 100 юнитов rusEFI, потом за последние 12 месяцев мы продали ещё 100 более современных юнитов, многому научились - но всё равно продолжаем пытаться понять, чего же именно мы хотим. Сейчас мы смещаем фокус с универсальности на устройства для конкретных семейств автомобилей с конкретными разъёмами и схожими распиновками ЭБУ, этим мы в том числе мечтаем привлекать программистов, которым не комфортно паять.

Давайте для начала я расскажу про Hellen https://github.com/andreika-git/hellen-one - это наш инструментарий разработки семейства модульных, склеенных из кусочков похожих, но всё-таки разных плат под конкретные проводки конкретных автомобилей.

Примерно год назад стало понятно, что универсальные блоки слишком сложны в поддержке: возможность управлять практически любым бензиновым двигателем с почти любыми оригинальными датчиками и формами сигналов ДПКВ/ДПРВ достигается только за счёт огромных усилий по поддержке нашей очень небольшой командой экспертов. При этом результат механически и электрически обычно выглядит всё равно очень плачевно. И со своей стороны мы устали сильно много допаивать руками после изготовления платы сервисом JLCPCB. Вместо большого универсального https://rusefi.com/s/proteus и маленького универсального https://rusefi.com/s/microrusefi ЭБУ мы решили сделать пару десятков ЭБУ под конкретные распиновки конкретных популярных автомобилей, изначально оптимизированных именно под JLCPCB каталог компонентов. Не хотелось разрабатывать и поддерживать много плат под конкретные автомобили ручным копированием блоков схемы и блоков трассировки. Наше решение: Hellen One Framework, это набор скриптов для склеивания gerber, PDF схем, описаний монтажа и HTML просмотрщика плат.

читать далее
Всего голосов 20: ↑20 и ↓0+20
Просмотры1.7K
Комментарии 6

Cambalache: новый инструмент для быстрой разработки

Блог компании ITSOFTПрограммирование*Разработка под Linux*

На конференции GUADEC 2021  был представлен новый инструмент для быстрой разработки интерфейсов GTK3 и GTK4 под названием Cambalache. В отличии от Glade, он способен поддерживать создание нескольких интерфейсов пользователя в одном проекте.

Читать далее
Всего голосов 2: ↑1 и ↓10
Просмотры1.3K
Комментарии 0

React: немного о работе с формами

Блог компании TimewebРазработка веб-сайтов*JavaScript*Программирование*


Привет, друзья!


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



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


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


Для большей правдоподобности мы напишем простой express-сервер, который будет возвращать некоторые пользовательские данные (например, jwt-токен и хешированный пароль), а также некоторые типичные для процесса авторизации ошибки (например, 404 User not found или 409 Email already in use).


При разработке хука и компонентов приложения мы применим несколько продвинутых паттернов, которые, смею надеяться, покажутся вам интересными.


Исходный код проекта находится здесь.


Демо приложения:



Возможно, для того, чтобы в песочнице все заработало, потребуется ввести команду yarn dev в терминале.


Хук в форме npm-пакета — simple-form-react.

Всего голосов 5: ↑3 и ↓2+1
Просмотры2.7K
Комментарии 22

Особенности валидации моделей на Xgboost

Python*Программирование*Машинное обучение*

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

На данный момент одной из лидеров в машинном обучении для многих задач является библиотека XGBoost, основанная на алгоритме дерева решений и реализующая методы градиентного бустинга. Почему? Библиотека наиболее эффективна при построении моделей предсказания на структурированных больших данных, XGBoost поддерживает реализацию на Hadoop, имеется встроенная регуляризация и правила для обработки пропущенных значений, а также с помощью множества настроек можно улучшать качество прогнозирования модели за кратчайшие сроки, ведь имеется возможность параллельной обработки.

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

Тестирование контракта потребителя сервиса — часть 4

Блог компании OTUSПрограммирование*
Перевод

В этой серии блогов мы рассмотрели:

Введение

Тесты контрактов на основе Pact для сервисов, взаимодействующих синхронно

Тесты контрактов на основе Pact для сервисов, взаимодействующих асинхронно

Давайте перейдем к следующей теме. Pact брокер!

До сих пор мы видели, что потребитель публикует контракт в локальной директории. Провайдер забирает контракт из этой директории. Это самый простой способ обмена контрактами. И, возможно, наиболее подходящий в процессе его изучения. Однако в реальных проектах это не сработает. Часто в разработке участвуют несколько человек, команд, поэтому нам нужно централизованное место для размещения всех контрактов. Pact Foundation решил эту проблему с помощью брокера. Брокер — это структура, где потребители могут публиковать свои контракты, а провайдеры — результаты проверки.

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

Как мы использовали расширенную статистику Postgres и ускорились в 2850 раз

Блог компании SkillFactoryРазработка веб-сайтов*PostgreSQL*Программирование*Серверная оптимизация*
Перевод

В этом переводе к старту курса по Fullstack-разработке на Python напоминаем о том, насколько важно знать технологии в деталях, грамотно применять их и планировать работу в целом. Цифра 2850 в заголовке — не преувеличение: ранее занимавший две минуты запрос в базе данных компании Affinity сегодня выполняется за 42 миллисекунды. Подробности, как всегда, под катом. А если вам нужен план развития навыков с большим количеством практики, вы можете обратить внимание на наши курсы.

Читать далее
Всего голосов 22: ↑19 и ↓3+16
Просмотры8.3K
Комментарии 4

Что такое v9s, и почему потребовалось писать еще одну библиотеку валидации?

JavaScript*Программирование*VueJS*TypeScript*

Примерно год назад фронтенд нашего проекта, в качестве фреймворка для которого используется Vue.js 2, дошел до состояния, хорошо описываемого словами "проще сжечь".

К тому времени наш нетипизированный корабль уже трещал по всем швам, и решено было убить сразу нескольких зайцев одним выстрелом: полностью перевести проект на TypeScript, внедрить Vue Composition API и решить проблемы валидации сложных форм.

А проблемы были. Vuelidate - отличная библиотека с массой готовых валидаторов и остается таковой до тех пор, пока мы имеем дело с, так сказать, плоскими формами - формами, не использующими вложенных компонентов, также требующих валидации. Vuelidate работает на уровне компонента, требует наличия миксина, содержит массу правил, которые нам не были нужны, но все равно тянулись в составе пакета, поддержка TypeScript и Composition API на тот момент отсутствовала, и мы не могли более с этим миритьcя.

Читать далее
Всего голосов 5: ↑5 и ↓0+5
Просмотры3.6K
Комментарии 25

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