Pull to refresh
14
0
Дмитрий Лобзин @dimm1f

Пользователь

Send message

Rust — это не «memory safe C»

Level of difficultyMedium
Reading time27 min
Views43K

TL;DR:
— в Rust намного больше достоинств, чем просто скорость и безопасность
— в Rust по умолчанию CDD (compiler-driven development, разработка через компилирование). Это как TDD, только CDD
— Rust — не сложный язык, особенно если не гнаться за максимальной производительностью

В этой статье я бы хотел рассказать:
— почему взгляд на Rust как на "memory safe C" очень сильно сужает область его возможного применения
— почему я смотрю на Rust как на очень удобный в разработке язык высокого уровня, которому просто случайно повезло оказаться невероятно быстрым
— почему разработка на Rust быстрее, чем многие думают
— почему Rust — это один из лучших языков общего назначения

Читать далее
Total votes 172: ↑167 and ↓5+162
Comments552

Идемпотентность: больше, чем кажется

Level of difficultyEasy
Reading time10 min
Views18K

image


Друзья, всем привет! Идемпотентность в проектировании API — не просто формальность. Это свойство, часто рассматриваемое как способ получения одинакового ответа на повторяющийся запрос, на самом деле означает гораздо больше...

Читать дальше →
Total votes 32: ↑32 and ↓0+32
Comments9

В Java 21 собираются реализовать сопоставление с образцом – так, глядишь, я снова на этот язык перейду

Reading time23 min
Views17K

Преуведомление

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

Выпуск Java 21 состоялся 19 сентября 2023 года. В этой версии поддерживаются паттерны записи в switch-блоках и выражениях. Такой синтаксис выглядит монументально (как минимум, по меркам Java). Это водораздел, после которого мы вправе говорить, что в Java полноценно поддерживаются паттерны функционального программирования, подобно тому, как это сделано в Kotlin, Rust или C#. Вот и первый пункт, который пробуждает во мне зависть (я Kotlin-разработчик).

Читать далее
Total votes 29: ↑29 and ↓0+29
Comments12

Разница между загрузкой и инициализацией классов в Java на любопытном примере

Level of difficultyMedium
Reading time9 min
Views13K

Привет, сегодняшняя статья будет о некоторых тонкостях загрузки и инициализации классов и немного о производительности (совсем чуть-чуть и в самом конце).


Поводом для написания статьи стал вопрос на StackOverflow. Откройте, но не торопитесь читать ответ ;)

Читать дальше →
Total votes 25: ↑24 and ↓1+23
Comments2

Интервалы: грядущая эволюция C++

Reading time8 min
Views22K
Уже скоро появится стандарт C++20, в который, скорее всего, добавят концепцию интервалов (ranges), однако мало кто знает, что они из себя представляют и с чем их едят. Доступных широкой аудитории русскоязычных источников про этого зверя мне найти не удалось, вследствие чего в данной статье я бы хотел подробнее про него рассказать, базируясь на лекции Arno Schödl «From Iterators to Ranges: The Upcoming Evolution Of the STL» с конференции Meeting C++ 2015-го года. Я постараюсь сделать эту статью максимально понятной для тех, кто впервые сталкивается с этим понятием, и одновременно расскажу про всевозможные фишки вроде интервальных адаптеров для тех, кто с этим понятием уже знаком и хочет узнать больше.

Библиотеки с ranges


На момент написания данной статьи можно выделить три основные библиотеки, реализующие интервалы:


Первая библиотека, по сути, прародитель данной концепции (что неудивительно, ведь чего только нет в собрании библиотек Boost :) ). Вторая — библиотека Эрика Ниблера (Eric Niebler), про неё будет рассказано позднее. И наконец, последняя библиотека, как нетрудно догадаться, написана компанией think-cell, которая, можно сказать, развила и усовершенствовала Boost.Range.
Читать дальше →
Total votes 40: ↑38 and ↓2+36
Comments36

Новые уязвимости 4G LTE: массовая рассылка сообщений, имперсонификация абонентских устройств и другие

Reading time5 min
Views11K

Сетевая архитектура LTE

На прошедшей конференции по безопасности сетей и распределённых систем в Сан-Диего NDSS 2018 было немало интересного, но самое большое внимание привлёк доклад американских исследователей из Университета Айовы и Университета Пердью по уязвимостям в сетях связи четвёртого поколения (4G): LTEInspector: A Systematic Approach for Adversarial Testing of 4G LTE (pdf). Такое внимание объяснимо, учитывая широкую распространённость сетей 4G LTE.

Исследователи сосредоточились на анализе трёх критических процедур, которые используются в протоколе:

  • Attach — процедура, которая связывает абонентское устройство с сетью (например, при включении телефона).
  • Detach — осуществляется при выключении устройства или отключении сети (например из-за плохого качества сигнала или если телефон не может пройти проверку подлинности в сети).
  • Paging — этот протокол является частью установки вызова, чтобы форсировать на устройстве повторный приём системной информации, а также сообщений экстренного характера.
Читать дальше →
Total votes 21: ↑21 and ↓0+21
Comments7

Местоопределение Wi-FI источников в AR и котелок

Reading time5 min
Views17K



Мы уже подсвечивали пеленги Wi-Fi точек в дополненной реальности, сегодня поговорим об их местоопределении.

Кому интересны технические подробности и при чём тут котелок, добро пожаловать под кат.
Также вашему вниманию предлагается фото- и видеоотчет о том, что получилось.
Total votes 19: ↑19 and ↓0+19
Comments8

Information

Rating
Does not participate
Location
Россия
Registered
Activity