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

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

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

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

Context receivers — новые extension functions

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

Поговорим сегодня про context receivers — фиче Kotlin, про которую я узнал давно, но смог найти применение лишь пару месяцев назад. Расскажу о том, что такое context receivers, где их можно использовать, и, конечно же, про «успешный успех» — минус 60% самописного DI в OzonID SDK. Но обо всём по порядку.

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

Kotlin Coroutines. Часть 1: Первое погружение

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

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

Меня зовут Соловьев Андрей, я Java-разработчик в «Рексофт». Сегодня мы поговорим про Kotlin Coroutines. Это моя первая серьезная публикация, и я буду рад вашему фидбеку.

Ну что ж, давайте начинать!

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

Нормализация событий информационной безопасности и как ее можно выполнять с помощью языка eXtraction and Processing

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

Всем привет! На связи Михаил Максимов, я — ведущий эксперт департамента развития технологий в R&D Positive Technologies. За плечами у меня многолетний опыт по развитию экспертизы в нашей системе MaxPatrol SIEM и процессов вокруг нее. И сегодня я хочу поговорить про один из видов экспертизы в продуктах этого класса — правилах нормализации. Если вы новичок в этом направлении и ранее вам не приходилось сталкиваться на практике с SIEM-системами и правилами для нее — не пугайтесь, основы этой темы мы тоже затронем 😊

Что нас ждет:

🔻определимся с тем, что же это такое — событие информационной системы, какие разновидности событий бывают;

🔻узнаем, что такое нормализация событий и какие этапы можно в этом процессе выделить, рассмотрим нюансы, с которыми можно столкнуться;

🔻детально разберем язык eXtraction and Processing (XP) для задач нормализации, лежащий в основе правил MaxPatrol SIEM, и посмотрим на примеры кода правил разной сложности;

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

Итак, приступим
Всего голосов 8: ↑8 и ↓0+8
Комментарии1

Компиляция на этапе выполнения в C++: constexpr, consteval и constinit

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

Сегодня мы поговорим о том, как constexpr, consteval, и constinit позволяют реализовывать компиляцию на этапе выполнения. Компиляция на этапе выполнения позволяет ускорить выполнение кода за счет выполнения расчетов на этапе компиляции, а не в рантайме.

constexpr делает возможным вычисление значений переменных во время компиляции. Функции и переменные, объявленные с этим ключевым словом, могут быть вычислены на этапе компиляции consteval усиливает концепцию constexpr, требуя обязательного вычисления выражений во время компиляции. constinit используется для инициализации статических и глобальных переменных.

А теперь подробней.

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

Истории

Темная сторона Open Source

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

"Вносите вклад в открытый исходный код, это лучшее, что со мной случилось!" - все чаще и чаще слышу я в Twitter в последнее время. Хотя я не возражаю против самого высказывания, мне кажется, что в нем непреднамеренно (или намеренно) упускается приличная часть правды о вкладе и авторстве открытого кода. Это похоже на то, как если бы вы рекомендовали туристический маршрут, с которого в конце концов открывается незабываемый вид, но при этом вы не упоминаете о том, сколько трудностей и подготовки требует этот поход.

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

Читать далее
Всего голосов 33: ↑31 и ↓2+29
Комментарии62

ChatGPT для изучения программирования. Не очевидные примеры

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

Сценарии использования ИИ для учебы на поверхности. Тот же ChatGPT как стандарт по умолчанию студенты (да и преподаватели тоже) используют для написания текстов (рефераты, курсовые, дипломы и тому подобное), для анализа данных, изучения языков и, конечно же, для решения задач. Поговорим же здесь про то, как можно использовать ChatGPT для обучения программированию. Типично, студенты и школьники «скармливают» чату условие своей задачки, а на выходе получают код программы на требуемом языке. Часто чат дает еще и объяснения основных моментов в коде, рассказывает про алгоритм. Так можно учиться программированию, имея под боком «умного» консультанта. Не всегда, правда, код чата адекватен, а решения полные. Но, это очевидные вещи. Попробуем тут составить список примеров, которые могут быть полезны и тем, кто изучает программирование и тем кто учит. Начнем с простого.

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

Чему разработчики ПО могут научиться у стоматологов

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

Для начала немного обо мне: я и практикующий дантист, и разработчик ПО. Со вторника по четверг я пишу код, а с пятницы по воскресенье принимаю пациентов. До того, как стать дантистом, я работал в таких компаниях, как Allstate Insurance, Lockheed Martin и ICS. Освоив обе эти профессии, я заметил, что разработчики ПО могут многому научиться у дантистов и наоборот. Я решил записать эти уроки в надежде, что они кому-то могут помочь. Это просто общие рекомендации — не стоит рассчитывать, что они идеально подходят для любой ситуации.
Читать дальше →
Всего голосов 65: ↑64 и ↓1+63
Комментарии37

Самый простой гайд по созданию бота для анализа сообщений в Telegram

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

Есть Telegram-каналы, которые отслеживают определенные события в мире. А мы следим за их сообщениями, чтобы не упустить ничего важного. Если собирать и анализировать данные вручную, процесс будет отнимать много времени и требовать высокой концентрации от человека. Чтобы решить эту проблему, наш партнер и фронтенд-разработчик Владилен Минин создал Telegram-бота, который автоматизирует процесс и выдает резюме по собранной информации.

В этой статье рассказываем, как с помощью нейросети создать бота, который собирает и обрабатывает информацию из сообщений, и задеплоить его на облачный сервер.
Читать дальше →
Всего голосов 34: ↑32 и ↓2+30
Комментарии5

Rust 1.77.0: C-подобные строки, offset_of!, рекурсивные async fn, strip в release-профилях

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

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


Если у вас есть предыдущая версия Rust, установленная через rustup, то для обновления до версии 1.77.0 вам достаточно выполнить команду:


$ rustup update stable

Если у вас ещё не установлен rustup, вы можете установить его с соответствующей страницы нашего веб-сайта, а также посмотреть подробные примечания к выпуску на GitHub.


Если вы хотите помочь нам протестировать будущие выпуски, вы можете использовать канал beta (rustup default beta) или nightly (rustup default nightly). Пожалуйста, сообщайте обо всех встреченных вами ошибках.

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

Автоматическое тестирование ускорило разработку в 50 раз. Сказка от создателей FoundationDB

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров8.5K
Автоматическое тестирование по сравнению с обычным, источник

Стартап Antithesis Operations LLC создан разработчиками известной системы FoundationDB. Они говорят, что между двумя продуктами много общего: «Когда в 2010 году мы взялись за создание масштабируемой, отказоустойчивой распределённой базы данных с ACID-транзакциями, большинство людей не думали, что такое возможно. Вот и сейчас многие не верят в полную автоматизацию тестирования».

Сейчас они уверены, что произвели революцию в разработке программного обеспечения. Они сделали полностью автономную и детерминированную систему автоматического тестирования. Внедрение системы в их собственной компании ускорило разработку в 50 раз, потому что программисты теперь думают только о коде и не боятся ошибок. 100% багов выявляется автоматически. Вручную писать тесты не надо, никаких тестировщиков, SDET и QA. Двое-трое программистов выполняют работу за 100−150 человек. Настоящая сказка!
Читать дальше →
Всего голосов 43: ↑38 и ↓5+33
Комментарии13

LibreOffice под микроскопом: создаём одноклеточное расширение

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

В своё время для создания расширения к LibreOffice (LO) мне пришлось перелопатить кучу форумов и документации. Информации много, но она разбросана про крупицам. А когда если не знаешь, с какой стороны подступиться, на завершение проекта может уйти много времени.

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

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

Давайте разберёмся, что к чему
Всего голосов 23: ↑23 и ↓0+23
Комментарии6

Async/await. Куда делся thread.  Инверсия асинхронности. Разоблачение мистификации

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

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

Конечно, многие обиделись на меня за то, что я посмел возражать признанному авторитету, который вынес в заголовок своей очень известной работы фразу There is no thread (Там нет потока) ведь хорошо известно, что: «нет пророка в своем отечестве», и, видимо, быть не должно, но это все эмоции.

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

Читать далее
Всего голосов 14: ↑2 и ↓12-10
Комментарии25

Как простая интеграция Kaiten и Adesk экономит время

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

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

Я начинающий разработчик в команде MarkOnlineStudio, и хочу рассказать о своем опыте работы.

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

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

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

Ассемблер: x86/x86_64/Arm32/Arm64

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

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

Но как всегда для практики надо быть подготовленным, а как оказалось, я был не подготовлен...

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

Как я выиграл Хакатон, едва не потеряв рассудок

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

Несколько недель назад мы с моим другом Беном выиграли JumboHack, Хакатон, проводившийся в Университете Тафтса. Нашим проектом было приложение, которое в стиле Spotify Wrapped генерирует отчёт по питанию в университетских столовых среди студентов на основе данных из раздела «Meal Plan» портала оплаты услуг. Благодаря грамотному продвижению проекта Беном, мы смогли буквально за пару дней привлечь к использованию нашего приложения сотни студентов. В итоге мы победили в общей номинации, а также в номинации «самый завершённый проект» и стали абсолютными победителями конкурса.

Живое демо нашего проекта доступно здесь.
Читать дальше →
Всего голосов 40: ↑38 и ↓2+36
Комментарии8

Web3: Фантастические SDAPPS и где они обитают

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

Сейчас разработка Web3 проектов стала уже обычным делом и выпустить свой токен может каждый школьник (даже отстающий, если спросит у ChatGPT, где какую кнопку нажать). Останется лишь написать DAPP (Decentralized application), добавить к нему пользовательский интерфейс (UI), разместить его на сервере и вот Web3 проект готов.

Но подождите! Мы говорим о «разместить на сервере»? Разве проект, размещенный на одном сервере, может называться «Decentralized»? Или надо разместить его на нескольких серверах, чтобы он стал «Decentralized»?

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

Впрочем, традиционно мы успокаиваем себя и нашего пользователя тем, что на сервере лишь UI, а вот само приложение уже в блокчейне и вот уж оно‑то по‑настоящему децентрализовано.

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

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

Что будет, если в мире исчезнут все специалисты по кибербезопасности

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

Привет! Меня зовут Роман Панин, я руководитель направления архитектуры ИБ в МТС. Сегодня мы поговорим о том, что произойдет, если в мире не останется специалистов по кибербезопасности. Возникнет серьезная угроза не только для мира IT, но и для всего человечества, которое пользуется плодами информационных технологий.

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

Механика Async Await

Время на прочтение8 мин
Количество просмотров7.9K
В этом посте исследована механика async await на языке Elixir. Принятая в Elixir модель конкурентности отлично подходит в качестве платформы для реализации такой механики. Тем не менее, не расценивайте этот пост как руководство для разработки реальных приложений на Elixir.

Код к этому посту выложен на GitHub
Читать дальше →
Всего голосов 10: ↑10 и ↓0+10
Комментарии1

Респонс по да Винчи: как мы перевернули систему работы security-аналитика и что из этого вышло

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров2.5K
Как обычно происходит стандартное реагирование в SOC? Получил аналитик оповещение об инциденте от какой-то системы безопасности, посмотрел логи SIEM, чтобы собрать дополнительные данные, уведомил заказчика и составил для него короткий отчет о произошедшем.

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

Такова «хрестоматийная», стандартная схема работы аналитика в коммерческом SOC. Это и не хорошо, и не плохо — это, как правило, просто данность. Однако формат действий security-аналитика можно сделать кардинально иным, и за счет этого помочь амбициозному специалисту расти быстрее и шире, а компании-заказчику — дополнительно укрепить свою безопасность.



Я, Никита Чистяков, тимлид команды security-аналитиков в «Лаборатории Касперского». Под катом я расскажу, как и зачем в Kaspersky помогаю выстраивать новые условия работы для security-аналитиков и как эти условия помогают им стать эдакими витрувианскими ИБшниками эпохи Возрождения.

Если вы сами аналитик или в целом работаете в инфобезе, хотите узнать, какой скрытый потенциал есть у профессии и как его раскрыть, эта статья — для вас.
Читать дальше →
Всего голосов 28: ↑27 и ↓1+26
Комментарии4

Эффективные трассировки в Go

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

Пакет runtime/trace содержит мощный инструмент для понимания программ Go и устранения неполадок. Функциональность внутри позволяет создавать трассировку исполнения каждой горутины за определенный период времени. С помощью go tool trace command (или превосходного инструмента gotraceui с открытым исходным кодом) можно визуализировать и исследовать данные в этих трассировках.

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

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

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