Pull to refresh

Минкомсвязи предложило отдать под 5G телевизионные частоты и поделить регионы между операторами «четверки»

IT Infrastructure *Wireless technologies *Development of communication systems *Network standards *Cellular communication
imageФото: iStock

Минкомсвязи выступило с идеей передать частоты 694–790 МГц, которые используют телевещательные компании, под нужды развития мобильной связи пятого поколения (5G). Также ведомство считает, что управление сетями можно разделить между операторами «Большой четверки».
Читать дальше →
Total votes 7: ↑6 and ↓1 +5
Views 4.2K
Comments 22

Глава Ростелекома: европейскую часть РФ невозможно подключить к 5G

Wireless technologies *Network standards *Cellular communication
image

Министр цифрового развития Максут Шадаев заявил, что для развития сетей 5G в России планируется полностью выделить диапазон частот 4,7-4,9 ГГц. Но президент Ростелекома Михаил Осеевский отметил, выбор данного спектра не позволит покрыть 5G большую часть европейской территории страны. По его словам, в данном диапазоне в регионе уже работают системы оповещения «свой-чужой» для самолетов.
Читать дальше →
Total votes 35: ↑34 and ↓1 +33
Views 18K
Comments 92

Глава «МегаФона» рассказал, когда деградирует качество сетей 4G

Wireless technologies *Network standards *Cellular communication

Гендиректор «МегаФона» Хачатур Помбухчан считает, что качество связи в мобильных сетях четвертого поколения (4G) может ухудшиться, если операторам не выделят новые частоты. «Если в наших агломерациях в течение какого-то осмысленного времени не появится нормальный стандарт 5G, то качество обычного пользовательского опыта мобильной связи начнет деградировать», — уверен он.

Читать далее
Total votes 8: ↑7 and ↓1 +6
Views 3.7K
Comments 3

Как указывать диапазоны дат в интерфейсах?

Interfaces *Usability *
Однозначного и исчерпывающего ответа на вопрос поверхностный поиск не дал, справочники академического характера чаще всего выдают результаты для изданий (в т.ч. с вариантами использования римских цифр, что не очень подходит для интерфейсов), поэтому хочется понять, как лучше указывать именно диапазоны именно дат и именно в интерфейсах и попробовать сформулировать правило или выявить закономерности. Для этого я вспомнил все, какие мог, кейсы, и упорядочил их в таблице — кейс, числовой пример, формат полный и сокращенный, для дней, недель, месяцев, кварталов, полугодий и лет (внутри поста).

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

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

Например, получаются вот такие странные штуки:


Читать дальше →
Total votes 20: ↑17 and ↓3 +14
Views 31K
Comments 28

Идиома Ranges

C++ *Algorithms *D *
image
Идиома ranges — крайне удачное развитие итераторов. Она позволяет писать высокопроизводительный код, не выделяющий память, где это не надо, находясь на предельно высоком уровне абстракции. Кроме того делает библиотеки гораздо более универсальными, а их интерфейсы гибкими. Под катом краткое описание и практические примеры использования идиомы, тесты производительности, а так же сравнение с популярными реализациями итераторов в C++ и C#.
Читать дальше →
Total votes 22: ↑20 and ↓2 +18
Views 14K
Comments 23

Ленивые итераторы и диапазоны в C++

Programming *C++ *Algorithms *

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


Однако есть и классическая, более распространённая техника для борьбы с циклами — использование итераторов и диапазонов для ленивых операций над последовательностями. Всё это уже сто лет есть в Бусте и других сторонних библиотеках (к примеру, range-v3) и постепенно просачивается в стандартную библиотеку.


Хотя, в некотором смысле, и в стандартной библиотеке ленивые итераторы уже есть давно (см. std::reverse_iterator).

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

Читать дальше →
Total votes 10: ↑10 and ↓0 +10
Views 6.2K
Comments 0

Ленивые операции над множествами в C++

Programming *C++ *Algorithms *

В C++ нет понятия "множество". Есть std::set, но это всё-таки конкретный контейнер. Есть функции для работы с упорядоченными диапазонами: merge, inplace_merge, includes, set_difference, set_intersection, set_symmetric_difference, set_union, но это алгоритмы, они не ленивые, и при вызове сразу вычисляют результат. К тому же они предназначены для работы строго с двумя диапазонами.


Что же делать, если, во-первых, диапазонов много (больше двух), а во-вторых, мы хотим вычислять результат не сразу, а по необходимости?


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


В публикации Ленивые итераторы и диапазоны в C++ я разбирал, что такое ленивые диапазоны.
Читать дальше →
Total votes 7: ↑7 and ↓0 +7
Views 10K
Comments 4

Ленивые диапазоны и стирание типов

Programming *C++ *

В публикации Ленивые операции над множествами в C++ я показал, как можно проектировать ленивые операции над несколькими диапазонами. Теперь я хочу подробнее рассказать о важном решении, делающем такие операции удобными в использовании.


Один из основных моментов в интерфейсе ленивых операций над диапазонами — это возможность следующей записи


burst::merge(std::tie(range1, range2, ...));

То есть возможность работать с произвольным набором исходных диапазонов.


В коде это будет выглядеть как-то так:


const auto odd = std::vector{1, 3, 5, 7};
const auto even = std::list{0, 2, 4, 6, 8};

const auto merged_range = burst::merge(std::tie(odd, even));

const auto expected = {0, 1, 2, 3, 4, 5, 6, 7, 8};
assert(merged_range == expected);

Почему же это так важно, и что стоит за этой записью?


Ответ на вопрос "почему это важно" понятен. Во-первых, это красиво. Кроме того, удобно.
А вот что за этим стоит — и есть суть данной публикации.

Читать дальше →
Total votes 11: ↑11 and ↓0 +11
Views 4K
Comments 8

Как Mozilla упустила (не)очевидную уязвимость

SkillFactory corporate blog Information Security *Programming *C *Reading room
Translation

Эксперт из Project Zero рассказывает об уязвимости, простота и очевидность которой поразили его. Но как же эта уязвимость проникла в тестируемый код Mozilla? Разбираемся под катом, пока стартует наш курс по этичному хакингу.

Читать далее
Total votes 24: ↑21 and ↓3 +18
Views 10K
Comments 9

Алгоритмы диапазонов C++20 — 7 немодифицирующих операций

SkillFactory corporate blog Programming *C++ *Algorithms *
Translation


Библиотека Ranges для C++20 предлагает альтернативы для большинства алгоритмов. На этот раз я хочу показать вам десять немодифицирующих операций. Мы сравним их со «старой» стандартной версией и увидим их преимущества и ограничения.


Подробности — к старту нашего курса по разработке на C++.

Читать дальше →
Total votes 7: ↑6 and ↓1 +5
Views 3.4K
Comments 30