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

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

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

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

Тайное знание: синхронизация, многопоточность, очереди

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

Может ли быть так, что в большинстве популярных языков отсутствует самый эффективный механизм синхронизации? Что инженеры Microsoft, Oracle и мн. др., не говоря уже об остальных, вплоть до 2024 года так и не догадались, как же эффективнее всего синхронизировать доступ к данным? А все что знает абсолютное большинство программистов, в том числе топовых IT компаний (за исключением редких разработчиков платформ Apple) о синхронизации - ошибочно? Сегодня попробуем разобраться.

Эта статья подразумевает, что вы уже имеете базовое представление о механизмах синхронизации. Код написан на C#, но конкретный язык особого значения не имеет.

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

Новости

Дизайн высоконагруженных приложений будущего. Путешествие без сценария с Мартином Клеппманом

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

Jesse Anderson, директор Big Data Institute, и Martin Kleppmann, автор книги «Высоконагруженные приложения. Программирование, масштабирование, поддержка», вместе исследуют меняющийся ландшафт обработки данных. Они начинают с истории создания книги Мартина, подчеркивая важность искусства задавать правильные вопросы. Мартин рассказывает об изменениях, произошедших в отрасли с 2017 года, подчеркивая рост облачных сервисов. Затем беседа приобретает новый поворот, когда Мартин погружается в академические круги, делясь своими соображениями о программном обеспечении для совместной работы на основе локального подхода и увлекательном мире Automerge. Начинающие инженеры‑программисты получат несколько советов о том, как найти тонкий баланс между простотой и гибкостью. В завершение обсуждают о различных карьерных путях в динамичной сфере инженерии данных, что делает разговор полезным для профессионалов на любом этапе их пути.

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

Знакомьтесь, SafeTest — новый подход к тестированию фронтенда

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


В этой статье мы поговорим о SafeTest — революционной библиотеке, которая предлагает свежий взгляд на сквозные (E2E) тесты для веб-приложений с пользовательским интерфейсом.
Читать далее
Всего голосов 13: ↑12 и ↓1 +11
Комментарии 2

Context receivers — новые extension functions

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

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

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

Истории

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

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

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

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

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

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

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

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

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

Что нас ждет:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Читать далее
Всего голосов 30: ↑28 и ↓2 +26
Комментарии 50

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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


$ rustup update stable

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


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

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

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

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

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

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

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

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн

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

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

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

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

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

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

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

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

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

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

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

Читать далее
Всего голосов 13: ↑2 и ↓11 -9
Комментарии 18

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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