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

Разработка

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

Разбираемся с EXCEPTION_CONTINUE_EXECUTION

C *Разработка под Windows *
Из песочницы

Механизм структурированной обработки исключений (Structured Exception Handling, SEH) позволяет не только "отловить" сгенерированное исключение, но и вернуться к инструкции, вызвавшей сбой и попробовать выполнить ее заново.

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

Читать далее
Рейтинг 0
Просмотры 1
Комментарии 0

Новости

Теория алгоритма лежащего в основе разума

Алгоритмы *Машинное обучение *Искусственный интеллект Мозг

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

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

Кастомное автоматическое обновление конфигураций клиентов Spring Cloud Config Server. Часть 2: настройка сервера

Блог компании OTUS Java *
Tutorial

Описывается, как можно инициировать автообновление клиентов Spring Cloud Config Server без использования Spring Cloud Bus или какой-либо иной вспомогательной технологии

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

Чистый код — практический подход

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

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

Поэтому я попытаюсь показать вам практический подход к чистому коду. Не вдаваясь в теорию, покажу, как я пишу Чистый Код.

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

Как избавиться от старого продукта, не удаляя продукт?

Блог компании АльфаСтрахование Программирование *Java *Анализ и проектирование систем *Проектирование и рефакторинг *

image


Привет! Согласитесь, во многих крупных компаниях рано или поздно возникает проблема — какой-то прибыльный продукт превращается в legacy. Причем обычно менеджмент это осознает, когда хочет "просто" поменять одну цифру на другую к вечеру, а разработчики оценивают это в два спринта. Или когда разработчики один за другим теряют мотивацию и покидают продукт, а новые кандидаты выбирают другие офферы.


Часто эту проблему пытаются решить переписыванием продукта с нуля. Но переписывание с нуля кроет в себе отложенную проблему, так как можно потерять мелкие нюансы и в итоге переписанный продукт будет поначалу болеть "детскими болячками", которые много лет назад были вылечены в legacy. Мы, в АльфаСтраховании считаем, что все члены команды разработки должны понимать, что их материальный успех зависит от того, сколько компания зарабатывает, используя написанный ими продукт. А сколько денег принесет продукт, который постоянно спотыкается и плюется ошибками? И клиентов не удовлетворить ответами из серии: "Ну зато у нас тут микросервисы и неблокирующие стримы". Им важно, чтобы продукт работал быстро и стабильно. А написан ли он в виде скрипта на bash или в виде микросервисов на Scala, потребителям наплевать. Конечно, разработчикам не нужно забывать и о своём развитии — регулярно изучать новые технологии, получать опыт использования их в продуктиве, но не в ущерб бизнесу.


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

Читать дальше →
Рейтинг 0
Просмотры 476
Комментарии 0

Верстка форм на примере контактной формы в Drupal

CMS *Разработка веб-сайтов *Drupal *
Tutorial

 У нас есть две задачи. Первая задача - это создать контактную форму на сайте, и темизировать её, вторая задача - это научиться темизировать формы вообще. Итак, давайте сначала рассмотрим те решения, которые подсказывает нам сообщество Drupal.

Читать далее
Рейтинг 0
Просмотры 162
Комментарии 0

Книга «Масштабируемые данные. Лучшие шаблоны высоконагруженных архитектур»

Блог компании Издательский дом «Питер» Высокая производительность *Big Data *Профессиональная литература *Распределённые системы *
image Хорошего дня, Хаброжители!

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

Архитекторы и аналитики данных, специалисты по соблюдению требований и управлению узнают, как работать с масштабируемой архитектурой и внедрять ее без больших предварительных затрат. Питхейн Стренгхольт поделится с вами идеями, принципами, наблюдениями, передовым опытом и шаблонами. 
Читать дальше →
Всего голосов 4: ↑4 и ↓0 +4
Просмотры 1.3K
Комментарии 0

Аналитик вам не инженер. Почему инженера недостаточно для работы с DLP-системой

Блог компании Angara Security Информационная безопасность *

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

Я @zlatomesto, работаю ведущим аналитиком в Angara Security. Еще в свою бытность работы аналитиком внедрения DLP-системы в одном из вендоров, неоднократно сталкивалась с тем, что внедрение DLP-системы служило хорошим обоснованием для открытия ставки в отделе информационной безопасности, так как с появлением нового программного комплекса значительно увеличивается нагрузка на сотрудников. И да, прежде всего нужен инженер, который будет заниматься поддержкой работоспособности такого сложного решения, установкой агентов. Но обеспечит ли инженер эффективность от внедрения продукта?

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

Модульный робот-манипулятор HUENIT все в одном, 3D принтер, лазерный гравер, вакуумный захват, AI камера

Программирование *Разработка на Raspberry Pi *Робототехника Искусственный интеллект 3D-принтеры
HUENIT modular robot arm

Большинство роботов-манипуляторов созданы для переноски и управлениями различных грузов. Но инженеры из Германии и Южной Кореи решили пойти дальше и создали универсальный модульный робот-манипулятор. Созданный робот HUENIT более универсален большинства роботов, поскольку помимо традиционного механизма захвата и переноса вещей, поддерживает такие модули, как 3D-принтер, лазерный гравер, вакуумный захват, держатель ручки для чертежей и интерфейсный модуль для создания кастомных насадок.

Рука робота удерживает полезную нагрузку до 750 граммов, может вытягиваться в длину на 39 сантиметров при движении по окружности в 220° (без модуля), поддерживает подключение по стандартам Wi-Fi и Bluetooth, а также может быть дополнительно оснащен 2MP AI модулем камеры на базе Kendryte K210 RISC-V со встроенным ускорителем AI.
Читать дальше →
Всего голосов 8: ↑8 и ↓0 +8
Просмотры 1.5K
Комментарии 12

HTML, CSS: какие символы можно использовать в названиях классов CSS

Веб-дизайн *Разработка веб-сайтов *CSS *HTML *

При разборе кода HTML-страницы возникает вопрос: какие символы можно использовать в названиях классов CSS? Например, можно ли названия классов писать по-русски? Или китайскими иероглифами? Или с помощью эмодзи? В этой статье я разбираю этот вопрос со ссылками на действующие стандарты HTML и CSS, даю ответы, привожу примеры с проверкой соответствующими валидаторами.

Читать далее
Рейтинг 0
Просмотры 972
Комментарии 7

Summ3r of h4ck 2022. Итоги программы

Блог компании Digital Security Информационная безопасность *Карьера в IT-индустрии

Летняя обучающая программа завершилась, но для наших студентов это только начало. Итоги Summ3r 0f h4ck 2022 глазами ее участников и кураторов.

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

i18n в Go: работа с переводами — Часть 1

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

Недавно мне впервые довелось создавать полностью интернационализированное (i18n) и локализированное (L10n) веб-приложение, в котором я задействоал набор пакетов Go golang.org/x/text. Я обнаружил, что пакеты и инструменты, собранные в golang.org/x/text, невероятно полезны и очень хорошо спроектированы. Однако мне было довольно сложно понять, как объединить все это вместе в реальном приложении.

В этом руководстве я постараюсь объяснить, как вы можете использовать golang.org/x/text для работы с переводами в вашем приложении.

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

Самопишущийся код

Блог компании JUG Ru Group Программирование *Java *Искусственный интеллект

Когда речь идёт о технологиях, позволяющих компьютеру написать часть кода за человека, разговор вечно соскальзывает в гадания на кофейной гуще. Уволят через десять лет всех программистов или нет?


Но вообще-то тут есть о чём поговорить помимо этих спекуляций, причём разговор может быть куда предметнее. Как все эти разнообразные «copilot» вообще работают (вот сейчас, а не через десять лет)? Какие сложности возникают при их создании? Где эти сложности можно преодолеть, а где есть принципиальные ограничения формата?


На конференции Joker об этом рассказывали Никита Поваров allfather и Роман Поборчий p0b0rchy. На момент доклада оба работали в JetBrains, так что получилось не просто абстрактное описание вопроса, а «взгляд изнутри» со стороны тех, кто делает инструменты для разработчиков.



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

Пятничный дебаг: насколько глубока кроличья нора?

Блог компании Selectel Системное администрирование *Python *IT-инфраструктура *

Привет, Хабр! Меня зовут Рома, и я системный администратор объектного хранилища Selectel. Когда меня спрашивают, за что я люблю свою работу, на ум приходит множество вещей. Но лучшее в жизни каждого инженера, как по мне, это столкновение с необъяснимым — ошибки и неполадки, находящиеся, казалось бы, на грани невозможного. И расследование таких случаев.

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

Первая история больше философская, чем техническая. Про долгий поиск ошибки сначала в нашем мониторинге, а после – в софте, и все более глубоком погружении в слои абстракций. Бывало у вас такое, что глубина кроличьей норы с каждым шагом казалась все более неизмеримой? Под катом как раз про это.
Читать дальше →
Всего голосов 27: ↑27 и ↓0 +27
Просмотры 1.3K
Комментарии 7

Не обновлениями едиными: как получить привилегии администратора домена без эксплуатации уязвимостей

Блог компании Инфосистемы Джет Информационная безопасность *Тестирование IT-систем *

Всем привет. Я чуть больше полутора лет занимаюсь внутренним пентестом. И вроде бы уже многое знаю, но всегда кажется, что этого недостаточно и хочется знать больше. Когда часто делаешь похожую работу, привыкаешь к одним и тем же действиям, инструментам, и нет идей, что бы еще попробовать. Иногда я черпаю вдохновение в отчетах своих коллег, но всегда интересно почитать о том, как работают и что используют другие команды. А раз это интересно мне, может, это интересно кому-то еще. Мы c командой решили тоже поделиться несколькими интересными киллчейнами. В этой статье я расскажу о последовательности шагов, которая привела к получению привилегий администратора домена в компании, в которой «почти все безопасно».

Подробнее — под катом.

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

Django и PWA

Python *JavaScript *Django *HTML *
Из песочницы

Всем привет! Гуляя по Хабру, мне ни разу не доводилось обнаружить статью на тему Django + PWA. А ведь тема интересная (лично мне пришлось потратить 4 дня на то, чтобы с ней разобраться). И дабы сэкономить ваше время, в данной статье я попытался представить достаточно простой способ для создания прогрессивного веб приложения (PWA) вместе с Django без сторонних библиотек.

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

Сразу три причины, из-за которых контроллер GD32F450 теряет UDP пакеты

Системное программирование *Программирование микроконтроллеров *Компьютерное железо
Периодически на Хабре проскакивают статьи, где проверяется двоичная совместимость контроллеров GD32 с их аналогом STM32. Так получилось, что нам довелось поймать пусть и не на двоичном уровне, а на уровне исходников, ситуацию, где одно и то же проявление проблемы (теряются сетевые пакеты) было вызвано не одной, не двумя, а сразу тремя причинами, из которых две оказались признаками несовместимости с STM32. Вот о том, как мы эти причины ловили, я и хочу сегодня рассказать. Будет детектив, аналогичный тому, какой я приводил в своей старенькой статье про поддельную «голубую пилюлю». Ну, и выводы, куда же без них. Они тоже будут.


Читать дальше →
Всего голосов 19: ↑18 и ↓1 +17
Просмотры 1.6K
Комментарии 16

#2 Нейронные сети для начинающих. NumPy. MatplotLib. Операции с изображениями в OpenCV

Блог компании RUVDS.com Python *Обработка изображений *Big Data *
Tutorial

Это вторая статья из серии введения в «Нейронные сети для начинающих». Здесь и далее мы постараемся разобраться с таким понятием — как обработка графических данных, визуализация данных, а также на практике решим пару простых задач. Предыдущая статья — #1 Нейронные сети для начинающих. Решение задачи классификации Ирисов Фишера
Маленький совет из будущего: «В данной статье будут затронуты некоторые понятия, о которых я писал раньше, так что для полного понимания темы, советую прочитать и предыдущую статью»
На самом деле, на хабре было множество публикаций по этой теме, но все они говорят о разных вещах. Давайте разберёмся и соберём всё в одну кучку, для полноценного понимания картины мира.
Читать дальше →
Всего голосов 24: ↑23 и ↓1 +22
Просмотры 1.4K
Комментарии 2

Управление транзакциями в спринге: @Transactional в деталях

Java *
Перевод

Вы можете использовать это руководство, чтобы получить простое и практическое понимание того, как работает управление транзакциями в Спринге (Spring) с помощью аннотации @Transacional .

Единственное необходимое условие? Вы должны иметь приблизительное представление об "Эйсид" (ACID), то есть о том, что такое транзакции баз данных и зачем их использовать. Также здесь не рассматриваются распределенные транзакции или реактивные транзакции, хотя общие принципы, с точки зрения Сприга всё же применимы.

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

showcert: проверяем сертификаты (без боли)

Информационная безопасность *Системное администрирование **nix *

Этот пост не про какой-то большой и сложный проект, а про очень маленькую, простую утилитку showcert, мой маленький самодельный велосипед, который экономит время и нервы. Она не для тех, кто не знает, про утилиту openssl, а для тех, кто все знает, но когда хочет проверить дату истечения почтового сертификата яндекса, немного гуглит, потом сноровисто пишет:

$echo | openssl s_client -connect mx.yandex.ru:25 -starttls smtp 2>&1 | openssl x509 -noout -dates
notBefore=Jul 25 11:16:45 2022 GMT
notAfter=Jan 22 20:59:59 2023 GMT

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

А теперь сравните с:

$ showcert mx.yandex.ru:25
Names: mx.yandex.ru mx.yandex.net
notBefore: 2022-07-25 11:16:45 (15 days old)
notAfter: 2023-01-22 20:59:59 (165 days left)
Issuer: C=BE O=GlobalSign nv-sa CN=GlobalSign RSA OV SSL CA 2018

Ну разве не проще? showcertсам, по номеру порта догадывается, как начать STARTTLS (но конечно же, это можно переопределить через опцию -t / --starttls, например -t no или -t imap)

Предупредить о том, что сертификат скоро протухнет? Окей!

$ showcert mx.yandex.ru:25 -qw 200 || echo PROBLEM
mx.yandex.ru:25 expires in 165 days
PROBLEM

-q - тихий режим, не печатать лишнего, только предупреждения, -w 200 - завершаться с кодом 1, если до протухания меньше 200 дней. (-w без значения, проверка на 20 дней, без -w проверка валидности сегодня).

Проверки файлов:

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