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

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

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

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

Реверс-инжиниринг  GDB для работы с Pwndbg

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

Функционал GDB существенно сужается, когда приходится иметь дело с файлами, из которых убраны отладочные символы (получаются так называемые «урезанные бинарники»). Функции и имена переменных превращаются в бессмысленные адреса. Для установки контрольных точек приходится отслеживать адреса нужных нам функций из внешнего источника. Также нужно выводить в консоль структурированные значения и после этого корпеть над дампом памяти, пытаясь вычленить, где именно пролегают границы полей.

Вот почему этим летом, работая в Trail of Bits, я расширил Pwndbg — плагин для GDB. Поддерживает его мой наставник Доминик Чарнота. Я добавил в инструмент две фичи, благодаря которым практическая отладка урезанных бинарников сближается с аналогичной работой, знакомой нам из работы с отладчиком в IDE. Теперь в Pwndbg интегрирован инструмент Binary Ninja, позволяющий лучше выяснять специфику GDB+Pwndbg, а также выводить дамп структур Go, чтобы отлаживать бинарники Go стало удобнее.

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

OpenAI о новых LLM, которые умеют рассуждать

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

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

В статье об ограничениях бета-версии, о том, как работает новая модель OpenAI, особенностях промптинга и других тонкостях.

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

Спидран карьеры software-архитектора

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров8.8K
О software-архитекторах сейчас не говорит только ленивый. По мере усложнения структуры современных приложений команды разработки все больше нуждаются в «дирижере» для своего «оркестра», в специалисте, который предсказывает, какими нефункциональными требованиями будет обладать система и как довести ее до нужных характеристик.



Однако у рядового разработчика вопросов о сути работы «софтварных» архитекторов нередко остается больше, чем ответов:

Чем именно архитектор занимается? Какими навыками должен обладать? Да и как им вообще можно стать?

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

Чтобы узнать, как этот «путь» выглядит в архитектуре ПО, мы пообщались с Анной Мелеховой (AnnaTref), Software Architect & Software Development Group Manager в KasperskyOS — собственной микроядерной операционной системе «Лаборатории Касперского». Мы пройдем путь героя вместе: посмотрим на основные карьерные треки, выявим их особенности и выясним, каких драконов надо победить. Поехали!

Читать дальше →
Всего голосов 33: ↑28 и ↓5+26
Комментарии8

Amplicode Launch Event – конвейер для Spring-приложений прямо в IntelliJ IDEA

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

На прошлой неделе команда Amplicode провела митап, который длился целых 3,5 часа! За это время состоялось шесть докладов, затрагивающих все аспекты разработки приложений на Spring — от настройки окружения до создания бизнес-логики и реализации админки на React Admin.

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

Истории

Пошаговое руководство по созданию синтетических данных в Python

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

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

Представьте: вы только что написали модель машинного обучения и вам нужно протестировать её работу в конкретном сценарии. Или вы собираетесь опубликовать научную статью о пользовательском решении в области Data Science, но имеющиеся датасеты нельзя использовать из-за юридических ограничений. А может быть, в рамках проекта машинного обучения вы занимаетесь отладкой и исправлением ошибок и вам нужны данные, чтобы идентифицировать и устранить проблемы.

В этих, да и во многих других ситуациях могут пригодиться синтетические данные. Реальные данные часто недоступны: уже кому-то принадлежат или дорого стоят. Так что умение создавать синтетические данные — важный навык для дата-сайентистов.

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

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

Оптимизация, которая невозможна в Rust

Уровень сложностиСложный
Время на прочтение15 мин
Количество просмотров14K

В этой статье я опишу, как я реализовывал German string и с какими трудностями столкнулся в Rust. В особенности я рассмотрю, как добавить общее владение для подобной структуры данных.

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

Mojo: убийца Python и будущее Ai?

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

Всем привет! Меня зовут Вадим, я Data Scientist в компании Raft, и сегодня мы погрузимся в Mojo. Я уже делал обзор данного языка программирования и рассмотрел его преимущества, примеры использования, а также провел сравнение с Python.

Теперь давайте посмотрим, как обучить простую сверточную нейронную сеть, и разберём один из методов машинного обучения — линейную регрессию. В качестве примеров задач возьмем стандартные соревнования машинного обучения: предсказание стоимости жилья и классификацию рукописных цифр MNIST. Для проведения экспериментов на Python используем фреймворк машинного обучения PyTorch. А на Mojo — фреймворк машинного обучения Basalt.

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

IntelliJ IDEA 2024.3 EAP: Новые Возможности и Улучшения

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

Команда Spring АйО рада поделиться с вами свежей новостью от JetBrains: стала доступна первая EAP-версия IntelliJ IDEA 2024.3. Среди нововведений улучшения для java и kotlin, прокаченный AI Assistant, а также улучшенный UX.

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

Как это было: Хакатон Экспохак 1-10 августа 2024

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

Привет, Хабр! Меня по-прежнему зовут Иван Клюев и я занимаюсь организацией и продвижением хакатонов с 2018 года. На календаре начало осени и скоро наступит время «высокого сезона » в ИТ‑отрасли. Самое время поучаствовать в хакатонах, попробовать себя в соревновательном программировании и брейнштормах, получить призы и офферы. А сегодня для вас — небольшой отчет о хакатоне Экспохак от Экспобанка с комментариями победителей.
И да, в следующий раз среди победителей можешь быть ты 😊.

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

Программирование 10 лет спустя: мы протёрли пыль с хрустального шара

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров6.8K
— Скажи триста!
— Триста
— С днём программиста!


Предсказывать что-либо — дело неблагодарное, последние лет пять преподали нам отличный урок. Однако, если вы встретите программиста конца 80-х — начала 90-х, то он наверняка расскажет вам, сколько раз за 30 лет умирала страшно невостребованная профессия программиста. Её убивали декларативные языки, платформы разработки, low-code, no-code, теперь очередь AI. А программисты знай себе живут, раскаляют рынок зарплат, придумывают новые языки программирования и пишут тот самый искусственный интеллект, который и должен уничтожить программирование как деятельность. Потому что знают — здесь, как с врачами скорой помощи: что бы в мире ни случилось, без разработчиков ничего не обойдётся. Или… нет? В общем, давайте посмотрим в будущее. Мы под это дело даже КДПВ нагенерили (надеемся, вы не генерируете код, который выглядит, как этот кот).


Начнём, конечно, с главного. Ну как с главного — с самого заметного и обсуждаемого. Как известно, пустая бочка громче всех звенит.
Читать дальше →
Всего голосов 32: ↑29 и ↓3+39
Комментарии8

IT с человеческим лицом: портрет типичного программиста-2024

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

Всем привет! Не так давно мы с GitVerse, платформой для работы с исходным кодом от СберТеха, проводили опрос, чтобы выяснить, как сегодня выглядит типичный программист. Не в смысле внешности, а в плане своих личных и профессиональных качеств. Опрос прошли почти 2,5 тысячи человек. Мы очень рады, что наша затея оказалась такой популярной. Теперь настало время поделиться результатами. Кто он такой — Типичный Программист-2024? Заходите под кат, чтобы узнать о нём всё.

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

IT с человеческим лицом: портрет типичного программиста — 2024

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

Всем привет! Не так давно Хабр и GitVerse, платформа для работы с исходным кодом от СберТеха, проводили опрос, чтобы выяснить, как сегодня выглядит типичный программист. Не в смысле внешности, а в плане своих личных и профессиональных качеств. Опрос прошли почти 2,5 тысячи человек. Мы очень рады, что наша затея оказалась такой популярной. Теперь настало время поделиться результатами. Кто он такой — типичный программист 2024 года? Заходите под кат, чтобы узнать о нём всё.

Узнать всё
Всего голосов 20: ↑18 и ↓2+26
Комментарии6

Как мы учили Yandex Code Assistant помогать разработчикам с написанием кода и делать их счастливыми

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

Привет, Хабр! Меня зовут Виктор Плошихин, я руковожу ML‑лабораторией в Yandex Infrastructure, команде, которая создаёт платформу для разработчиков Яндекса. Мой коллега Константин Моксин @kamoksin работает разработчиком‑аналитиком в этой же лаборатории — и мы сами пишем очень много кода. Этой осенью мы запустили Yandex Code Assistant — помощник для работы с кодом — и открыли к нему бесплатный доступ в режиме тестирования на платформе Yandex Cloud. И нам было важно не просто научить нейросеть писать код, но и сделать так, чтобы разработчики были довольны работой этого помощника.

В статье расскажем, для чего мы сделали кодового ассистента, как начинали с нуля, и как замеряли его качество метрикой «Счастье разработчиков».

Читать далее
Всего голосов 41: ↑39 и ↓2+43
Комментарии26

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

27 августа – 7 октября
Премия digital-кейсов «Проксима»
МоскваОнлайн
20 – 22 сентября
BCI Hack Moscow
Москва
24 сентября
Конференция Fin.Bot 2024
МоскваОнлайн
24 сентября
Astra DevConf 2024
МоскваОнлайн
25 сентября
Конференция Yandex Scale 2024
МоскваОнлайн
28 – 29 сентября
Конференция E-CODE
МоскваОнлайн
28 сентября – 5 октября
О! Хакатон
Онлайн
30 сентября – 1 октября
Конференция фронтенд-разработчиков FrontendConf 2024
МоскваОнлайн
3 – 18 октября
Kokoc Hackathon 2024
Онлайн
7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн

Дорогая, я уменьшил {fmt}: уменьшил размер до 14kB и избавился от рантайма C++

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

Библиотека форматирования {fmt} известна своим небольшим влиянием на размер бинарников. Чаще всего её код в несколько раз меньше по сравнению с такими библиотеками, как IOStreams, Boost Format или, что иронично, tinyformat.

Давайте разберем, как можно уменьшить размер бинарников еще больше!

Читать далее
Всего голосов 37: ↑35 и ↓2+44
Комментарии22

Функциональные опции в Go

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

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

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

Как я Капсулу Нео от VK взломал

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

Всем привет. Раз уж все исправления давно в проде, а конфа OFFZONE 2024, на которой я хотел выступить (и выступил) с данным докладом, закончилась, пришло время рассказать о найденной мной уязвимости и на Хабре.

Как можно понять из заголовка, речь пойдёт о найденной мной уязвимости в умном девайсе от VK под названием Капсула Нео (далее - Капсула). Бага оказалась критическая, с возможностью исполнять собственный код на колонке по сети (RCE). Собственно, если интересно, как мне удалось её найти, с чем пришлось столкнуться за время проекта, и почему виноваты в итоге не VK - читайте под катом.

Шаг за шагом к RCE
Всего голосов 87: ↑87 и ↓0+105
Комментарии24

std::execution принят в C++26 — пора знакомиться

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

Единый фреймворк асинхронности и параллелизма, возможность делить вычислительные ресурсы разными кодовыми базами без сложной интеграции, простота использования и гибкость - все это то, чего в C++ никогда не было.

В конце июня стандартный комитет одобрил включение std::execution (P2300) в C++26. Это пропозал, который призван решить вышеуказанные проблемы. Давайте разбираться!

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

Структурное логирование в Spring Boot 3.4

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

С выходом Spring Boot 3.4 логирование стало ещё удобнее: теперь логи можно записывать в более унифицированном формате, что упрощает их анализ и обработку.

В новом переводе от команды Spring АйО мы разберем основные шаги для настройки и использования этой технологии в проекте.

Читать далее
Всего голосов 20: ↑18 и ↓2+17
Комментарии3

JavaScript: структуры данных и алгоритмы. Часть 5

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


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


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



Сегодня мы рассмотрим систему непересекающихся множеств, фильтр Блума и кэш актуальных данных.


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


Интересно? Тогда прошу под кат.

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

Кратко про библиотеку Range в C++

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

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

С выходом C++20 библиотека Range получила свое официальное место в языке, что ознаменовало некоторый важный шаг в развитии работы с контейнерами и итераторами. Это обновление ввело новый подход к манипуляциям с данными.

Итак, что же делает Range таким важным? Традиционные итераторы требуют большого объема кода для выполнения простых операций вроде фильтрации или сортировки данных. Range позволяет избавиться от этой сложности, предлагая интуитивно понятный и лаконичный способ работы с коллекциями данных. В этой статье мы и рассмотрим основные концепции библиотеки Range.

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

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