Pull to refresh
4
0.1
Send message

Массивы в C++

Level of difficultyMedium
Reading time22 min
Views485K


Продолжаем серию «C++, копаем вглубь». Цель этой серии — рассказать максимально подробно о разных особенностях языка, возможно довольно специальных. Это четвертая статья из серии, первые три, посвященные перегрузке в C++, находятся здесь, здесь и здесь.


Эта статья посвящена массивам. Массивы можно отнести к наиболее древним слоям C++, они пришли из первых версий C. Тем не менее, массивы вошли в объектно-ориентированную систему типов C++, хотя и с определенными оговорками. Программисту важно знать об этих особенностях, чтобы избежать потенциальных ошибок. В статье также рассмотрено другое наследие C – тривиальные типы и неинициализированные переменные. Часть нововведений C++11, С++14, С++17 затрагивают работу с массивами, все эти новые возможности также подробно описаны. Итак, попробуем рассказать о массивах все.



Читать дальше →

Перегрузка в C++. Часть III. Перегрузка операторов new/delete

Reading time11 min
Views25K

Продолжаем серию «C++, копаем вглубь». Цель этой серии — рассказать максимально подробно о разных особенностях языка, возможно довольно специальных. Эта статья посвящена перегрузке операторов new/delete. Это третья статья из серии, первая, посвященная перегрузке функций и шаблонов, находится здесь, вторая, посвященная перегрузке операторов, находится здесь. Статья завершает цикл из трех статей, посвященный перегрузке в C++.

Читать дальше →

Перегрузка в C++. Часть II. Перегрузка операторов

Reading time31 min
Views144K


Продолжаем серию «C++, копаем вглубь». Цель этой серии — рассказать максимально подробно о разных особенностях языка, возможно довольно специальных. Эта статья посвящена перегрузке операторов. Особое внимание уделено использованию перегруженных операторов в стандартной библиотеке. Это вторая статья из серии, первая, посвященная перегрузке функций и шаблонов, находится здесь. Следующая статья будет посвящена перегрузке операторов управления памятью.


Читать дальше →

Перегрузка в C++. Часть I. Перегрузка функций и шаблонов

Reading time30 min
Views75K

C++ сложный и интересный язык, совершенствоваться в нем можно чуть ли не всю жизнь. В какой-то момент мне захотелось изучать его следующим образом: взять какой-то аспект языка, возможно довольно узкий, и разобраться с ним максимально глубоко и подробно. Такой подход в значительной степени был стимулирован замечательными книгами Скотта Мейерса, Герба Саттера и Стефана Дьюхэрста. Когда накопилось определенное количество материалов, решил познакомить с ними Хабровчан. Так появилась эта серия, которую я назвал «C++, копаем вглубь». Серия помечена как Tutorial, но ориентирована она все-таки не на начинающих, а скорее на intermediate уровень. Первая тема — это перегрузка в C++. Тема оказалась очень обширной и получилось три статьи. Первая статья посвящена перегрузке функций и шаблонов, вторая перегрузке операторов и третья перегрузке операторов new/delete. Итак, начнем копать.


Читать дальше →

Ссылки и ссылочные типы в C++

Level of difficultyMedium
Reading time47 min
Views142K

Продолжаем серию «C++, копаем вглубь». Цель этой серии — рассказать максимально подробно о разных особенностях языка, возможно довольно специальных. Это пятая статья из серии, список предыдущих статей приведен в конце в разделе 6. Серия ориентирована на программистов, имеющих определенный опыт работы на C++. Эта статья посвящена ссылкам и ссылочным типам в C++.


Термин «ссылка» широко используется и в обыденной жизни, в компьютерных и других науках и поэтому его смысл сильно зависит от контекста использования. В языках программирования под ссылкой понимают небольшой объект, главная задача которого обеспечить доступ к другому объекту, расположенному в другом месте, имеющему другой размер и т.д. Объекты ссылки удобно использовать на стеке, они легко копируются, что позволяет получить доступ к объекту, на который эта ссылка ссылается, из разных точек кода. В той или иной форме ссылки поддерживаются во всех языках программирования. В ряде языков программирования, таких как C#, Java, Pyton и многих других, ссылки, по существу, являются концептуальным ядром.



В C роль ссылок играют указатели, но работать с ними не очень удобно и в C++ появилась отдельная сущность — ссылка (reference). В C++11 ссылки получили дальнейшее развитие, появились rvalue-ссылки, универсальные (передаваемые) ссылки, которые играют ключевую роль в реализации семантики перемещения — одном из самых значительных нововведений C++11.



Итак, попробуем рассказать о ссылках в C++ максимально подробно.


Читать дальше →

Лайкдилеры

Reading time4 min
Views15K

Недавно закончилась цепь увольнений. Один ушёл, второй, третий... На прощальном интервью все назвали разные причины. Зная историю появления, развития, восхождения этих людей на пьедестал, легко увидеть - причина одна. Кто-то подсадил ребят на лайки за вполне определённое поведение, подходы, ценности и результат, а потом... Стоп, начну издалека - с негативной мотивации. С дизлайков.

Читать далее

Как читать китайские этикетки со словарем и без Google Translate

Reading time7 min
Views20K
image

Когда мы видим слово или фразу на китайском, то мы не сможем их прочитать «по буквам» или даже предугадать их значение. Или знаешь, как оно читается и его значение, или нужно лезть в словарь, других вариантов нет. Конечно, сейчас достаточно включить камеру смартфона, и Google Translate сделает на лету все сам, но как люди решали эту проблему до эпохи электронных устройств?
Читать дальше →

В ожидании нового сезона и не только — записи болидов Формулы и ASMR на пит-лейне для фонового прослушивания

Reading time3 min
Views2.3K

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

Читать далее

Открытый проект частотного преобразователя для управления электродвигателями

Reading time10 min
Views50K

Дефицит компонентов отразился не только на рынке потребительской электроники, но и на промышленной. Стали дефицитом в том числе и частотные преобразователи (ЧП). Может стоит сделать свой ЧП? Мы пробовали.

Вот что получилось

Извлечение хэша NTLM с помощью профилей PowerShell

Reading time8 min
Views16K

Метод повышения привилегий, продемонстрированный в этой статье, является вариантом, используемым шпионскими группами. В нем описывается возможность использования злоумышленниками встроенных функций PowerShell для выполнения произвольных команд в контексте с повышенными правами (правами Администратора). Ниже приведена демонстрация извлечения хэшей NTLM.
Читать дальше →

С++: работа с таблицами

Reading time12 min
Views18K

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

Читать далее

Веб-сервисы в теории и на практике для начинающих

Reading time9 min
Views632K

Что такое веб-сервисы?



Прежде всего, веб-сервисы (или веб-службы) — это технология. И как и любая другая технология, они имеют довольно четко очерченную среду применения.

Если посмотреть на веб-сервисы в разрезе стека сетевых протококолов, мы увидим, что это, в классическом случае, не что иное, как еще одна надстройка поверх протокола HTTP.

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

Но и сам Интернет — разнороден, т. е. различные приложения на различных узлах сети функционируют на разных аппаратно-программных платформах, и используют различные технологии и языки.

Чтобы связать все это и предоставить возможность одним приложениям обмениваться данными с другими, и были придуманы веб-сервисы.
Читать дальше →

LibreOffice в корпоративном секторе — от теории к практике

Reading time4 min
Views37K

LibreOffice в корпоративном секторе — к старту готов


Есть на Хабре такая хорошая статья за авторством frozer, в которой рассматривается развертывание (с помощью Active Directory) и использование LibreOffice (LO) в корпоративной среде.

Единственный минус статьи — только теоретический подход. Т.е. автор описывает что можно сделать для корпоративной интеграции LO, но практическая часть отсутствует, как таковая.

Я пытался узнать секреты и получить советы на официальном русскоязычном форуме LO, и вот что получил в ответ:
Есть самый эффективный путь.
Скомпильте из иисходников под себя. Или заплатите тому, кто это сделает.
Это явно не тот метод. В интернете информации тоже очень мало, поэтому будем восполнять пробелы.

Инструкция — под катом.
Читать дальше →

Программируем умный дом

Reading time11 min
Views20K

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

И, как и многое другое в Дивном Новом Мире Большого Брата, практически бесплатно мы получаем термостат с интеллектом кофеварки и кофеварку с интеллектом умственно отсталого муравья. С простецкой ценой в одну смертную душу в виде ваших данных. Всё это пришло вместе с лицензионными соглашениями, которые можно только посылать в филиал ада по соглашениям с Бессмертными Душами, сопроводив запиской: «Учитесь, парни…» (© Терри Праттчет, Нил Гейман — Благие Знамения.)

Не раз мы слышали новости о том, что какая-то нерадивая Алекса позвонила куда-то не туда или Алиса с Сири сливают данные одновременно товарищу майору и мистеру Смиту. Но мы не лыком шиты. У нас есть альтернативы, и с ними мы и познакомимся.
Читать дальше →

Обзор стремительно развивающейся среды разработки microStudio

Reading time7 min
Views22K

Здравствуйте дорогие читатели сайта! На написание этой статьи меня подтолкнул тот факт, что я не смог найти на необъятных просторах русскоязычного интернета, какой-либо подробной информации о microStudio. Можно найти небольшие заметки, на нескольких сайтах. Где совсем скромно написано про проект и о том, что он был залит на репозиторий GitHub. Даже фамилия разработчика не указана. Кроме того 19.11.2021 и 12.02.2021 вышли довольно большие обновления о которых я расскажу далее в этой статье.

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

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

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

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

Читать далее

Создаём аппаратный генератор случайных чисел

Reading time12 min
Views60K
Я хочу представить вашему вниманию программно-аппаратный вариант получения случайных чисел. Забегая вперёд, скажу, что данный вариант не единственный, и этот пост открывает мою небольшую серию статей о получении, генерации и изучении случайных чисел, или точнее сказать просто случайностей.



Читать дальше →

Как мы переходили на Node.JS v16, или История о сломанном GC

Reading time3 min
Views7.5K
26 октября 2021 года вышел новый релиз Node.JS 16.13.0 который стал Active LTS.

Как мы переводили на него наш сервис мониторинга и анализа логов PostgreSQL и с какими проблемами столкнулись — в статье ниже.

Читать дальше →

Телепортация тонн данных в PostgreSQL

Reading time11 min
Views6.4K
Сегодня я поделюсь некоторыми полезными архитектурными решениями, которые возникли в процессе развития нашего инструмента массового анализа производительности серверов PostgeSQL, и которые помогают нам сейчас «умещать» полноценный мониторинг и анализ более тысячи хостов в то же «железо», которого сначала едва хватало для одной сотни.


Intro


Напомню некоторые вводные:

  • мы строим сервис, который получает информацию из логов серверов PostgreSQL
  • собирая логи, мы хотим что-то с ними делать (парсить, анализировать, запрашивать дополнительную информацию) в режиме онлайн
  • все собранное и «наанализированное» надо куда-то сохранить

Именно про последний пункт — как все это можно доставить в PostgreSQL-хранилище, и поговорим. В нашем случае таких данных кратно больше, чем исходных — статистика нагрузки в разрезе конкретного приложения и шаблона плана, потребление ресурсов и вычисление производных проблем с точностью до отдельного узла плана, мониторинг блокировок и многое другое.
Более полно о принципах работы сервиса можно посмотреть в видео доклада и прочитать в статье «Массовая оптимизация запросов PostgreSQL».
Читать дальше →

Information

Rating
4,146-th
Registered
Activity