Серия «Программирование»

Союз Qt и JavaScript - QML

QML - это язык декларативного описания пользовательского интерфейса, основанный на JavaScript и Qt. Особенность QML заключается в том, что он позволяет создавать динамические, анимированные и интерактивные элементы интерфейса с минимальным кодом.

Союз Qt и JavaScript - QML Разработка, Программирование, Программист, IT, Web-программирование, Linux, Windows, Qt

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

Некоторые преимущества QML:

  • Быстрая разработка и отладка. QML-код можно изменять во время выполнения, не перезапуская приложение. QML также имеет встроенные средства для отображения ошибок и предупреждений.

  • Кросс-платформенность. QML-приложения могут работать на разных платформах, таких как Windows, Linux, Mac OS, Android, iOS и других, без изменения кода.

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

  • Высокая производительность. QML использует аппаратное ускорение для отрисовки графики, а также оптимизирует выполнение JavaScript-кода.

Интересные факты и фичи языков программирования у нас в канале, заходи :)

Показать полностью

Вышла новая версия Qt Creator 12

Qt Creator 12 - это новая версия интегрированной среды разработки для Qt и C++, которая содержит исправления ошибок и новые функции.

Вышла новая версия Qt Creator 12 Разработка, Программирование, Программист, IT, Qt

Среди самых важных нововведений можно отметить:

  • Интегрированный Compiler Explorer. Введите код, чтобы исследовать, как он выглядит для разных компиляторов.

  • Отладка CMake и протокол Debug Adapter. Установите точки останова в файлах CMake и выберите Отладка > Начать отладку > Начать отладку CMake, чтобы запустить отладчик CMake.

  • Запись экрана. Легко создавайте записи (части) вашего экрана для отчетов об ошибках, обмена, блогов и т.д.

Qt Creator 12 также улучшил производительность запуска, обновил инструменты Clangd и Clang analyzer до LLVM 17.0.1, добавил настройки для имени и комментариев файлов C++, расширил возможности редактора файлов CMake и многое другое.

Интересные факты и фичи языков программирования у нас в канале, заходи :)

Показать полностью

Что же такое исключения в C++

Исключения в C++ - это механизм, который позволяет обнаруживать и обрабатывать ошибки во время выполнения программы. Исключения могут быть сгенерированы оператором throw или автоматически при возникновении некоторых ошибок, таких как деление на ноль, выход за границы массива или нехватка памяти. Исключения могут быть перехвачены и обработаны с помощью конструкции try…catch, которая определяет блок кода, в котором может произойти исключение, и блок кода, в котором исключение обрабатывается.

Исключения могут иметь различные типы, которые определяют характер ошибки и передают дополнительную информацию об исключении. Некоторые типы исключений являются стандартными и определены в библиотеке <stdexcept>. Основные из них:

  • logic_error: общий тип исключений, которые возникают из-за ошибок логики или программирования.

  • invalid_argument: исключение, которое возникает, когда аргумент функции недопустим или некорректен.

  • domain_error: исключение, которое возникает, когда аргумент функции выходит за пределы допустимого домена.

  • length_error: исключение, которое возникает, когда попытка создать объект превышает его максимально допустимый размер.

  • out_of_range: исключение, которое возникает, когда попытка доступа к элементу контейнера, который находится за его границами.

  • runtime_error: общий тип исключений, которые возникают во время выполнения из-за ошибок среды или системы.

  • range_error: исключение, которое возникает, когда результат операции выходит за пределы допустимого диапазона.

  • overflow_error: исключение, которое возникает, когда результат арифметической операции превышает максимально допустимое значение.

  • underflow_error: исключение, которое возникает, когда результат арифметической операции меньше минимально допустимого значения.

Кроме стандартных типов исключений, можно определять свои собственные типы исключений, наследуясь от класса exception или его потомков. Например:

#include <iostream>

#include <exception>

using namespace std;

// Определение собственного типа исключения

class MyException : public exception {

public:

// Переопределение метода what(), который возвращает сообщение об исключении

const char* what() const noexcept override {

return "My exception occurred";

}

};

// Функция, которая генерирует исключение типа MyException

void func() {

throw MyException();

}

int main() {

try {

func(); // Вызов функции, которая генерирует исключение

}

catch (MyException& e) { // Перехват исключения типа MyException

cout << e.what() << endl; // Вывод сообщения об исключении

}

return 0;

}

В этом примере определяется класс MyException, который наследуется от класса exception и переопределяет метод what(), который возвращает сообщение об исключении. Затем в функции func() генерируется исключение типа MyException с помощью оператора throw. В функции main() используется конструкция try…catch для перехвата и обработки исключения типа MyException. В блоке catch выводится сообщение об исключении с помощью метода what().

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

Интересные факты и фичи языков программирования у нас в канале, заходи :)

Показать полностью

Про мютексы в golang

Мьютекс в golang - это способ синхронизации доступа к общим ресурсам, которые могут быть одновременно использованы несколькими горутинами.

Мьютекс имеет два состояния:

  • Заблокирован

  • Разблокирован

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

Для работы с мьютексами в golang используется пакет sync, который предоставляет тип sync.Mutex. У мьютекса есть методы Lock() и Unlock(), которые позволяют блокировать и разблокировать доступ к общему ресурсу. Например, если у нас есть переменная counter, которая может быть изменена несколькими горутинами, то мы можем использовать мьютекс для защиты ее значения от гонки данных. Вот пример кода, который демонстрирует это:

package main

import (

"fmt"

"sync"

)

var counter int = 0 // общий ресурс

var mutex sync.Mutex // мьютекс

func main() {

ch := make(chan bool) // канал

for i := 1; i < 5; i++ {

go work(i, ch) // запускаем горутину

}

for i := 1; i < 5; i++ {

<-ch // ожидаем завершения горутины

}

fmt.Println("The End")

}

func work(number int, ch chan bool) {

mutex.Lock() // блокируем мьютекс

counter = 0 // сбрасываем значение счетчика

for k := 1; k <= 5; k++ {

counter++ // увеличиваем счетчик

fmt.Println("Goroutine", number, "-", counter) // выводим результат

}

mutex.Unlock() // разблокируем мьютекс

ch <- true // отправляем сигнал в канал

}

Этот код гарантирует, что только одна горутина имеет доступ к переменной counter в один момент времени, и выводит корректный результат.

Интересные факты и фичи языков программирования у нас в канале, заходи :)

Показать полностью

Реализация собственного контейнера с помощью initializer_list

Initializer_list - это специальный класс шаблона, который представляет собой список инициализации, то есть набор значений, заключенных в фигурные скобки. Например, {1, 2, 3} - это список инициализации, который содержит три целых числа. Initializer_list позволяет передавать такие списки в качестве аргументов функций или конструкторов, а также использовать их для инициализации объектов различных типов, включая собственные контейнеры1.

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

  • Определить класс контейнера, который хранит элементы в некоторой структуре данных, например, в массиве, векторе или списке. Класс контейнера должен иметь методы для доступа, добавления и удаления элементов, а также другие операции, которые необходимы для работы с контейнером.

  • Определить конструктор контейнера, который принимает в качестве параметра объект типа initializer_list. В теле конструктора нужно скопировать элементы из initializer_list в структуру данных контейнера, используя методы begin() и end() для получения итераторов на начало и конец списка инициализации.

  • Определить оператор присваивания контейнера, который также принимает в качестве параметра объект типа initializer_list. В теле оператора нужно очистить старые данные контейнера и скопировать элементы из initializer_list в структуру данных контейнера, аналогично конструктору.

Вот пример реализации собственного контейнера, который хранит элементы в векторе:

#include <iostream>

#include <vector>

#include <initializer_list>

// Класс контейнера

template <typename T>

class MyContainer {

private:

std::vector<T> data; // Структура данных для хранения элементов

public:

// Конструктор по умолчанию

MyContainer() {}

// Конструктор, принимающий список инициализации

MyContainer(std::initializer_list<T> il) {

// Копирование элементов из списка инициализации в вектор

for (auto it = il.begin(); it != il.end(); ++it) {

data.push_back(*it);

}

}

// Оператор присваивания, принимающий список инициализации

MyContainer& operator=(std::initializer_list<T> il) {

// Очистка старых данных

data.clear();

// Копирование элементов из списка инициализации в вектор

for (auto it = il.begin(); it != il.end(); ++it) {

data.push_back(*it);

}

return *this;

}

// Метод для вывода элементов контейнера на экран

void print() const {

for (const auto& elem : data) {

std::cout << elem << " ";

}

std::cout << std::endl;

}

};

int main() {

// Создание объекта контейнера с помощью списка инициализации

MyContainer<int> c1 = {1, 2, 3, 4, 5};

c1.print(); // 1 2 3 4 5

// Присваивание контейнеру нового списка инициализации

c1 = {6, 7, 8, 9, 10};

c1.print(); // 6 7 8 9 10

return 0;

}

Интересные факты и фичи языков программирования у нас в канале, заходи :)

Показать полностью

Почему синтаксис языка C именно такой

Синтаксис языка C был разработан Деннисом Ритчи в 1970-х годах как упрощенная и универсальная версия языка B, который в свою очередь был основан на языке BCPL.

Почему синтаксис языка C именно такой Разработка, Программирование, Программист, IT, Инновации, Linux

Язык C был спроектирован так, чтобы быть близким к машинному коду и эффективно работать с памятью и процессором. Он также был вдохновлен некоторыми идеями из других языков, таких как ALGOL 68 и PL/I.

Синтаксис языка C характеризуется следующими особенностями:

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

  • Использование фигурных скобок для обозначения блоков кода и точки с запятой для разделения операторов.

  • Использование префиксной нотации для объявления переменных и функций, а также для указания их типов и модификаторов.

  • Использование инфиксной нотации для арифметических, логических и битовых операций, а также для сравнения и присваивания значений.

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

  • Использование указателей для работы с адресами памяти и динамическим выделением памяти.

  • Использование препроцессора для включения других файлов, определения макросов и условной компиляции.

Синтаксис языка C оказал влияние на многие другие языки программирования, такие как C++, C#, Java и Objective-C, которые расширили или модифицировали его для своих целей. Некоторые языки, такие как Perl и Python, также заимствовали некоторые элементы синтаксиса C, такие как операторы и скобки, но сильно отличаются в других аспектах.

Интересные факты и фичи языков программирования у нас в канале, заходи :)

Показать полностью 1

Немного подкопотника компиляторов

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

Компиляторы могут быть разными по своему устройству, функциональности и целям. Например, есть компиляторы, которые транслируют код с одного языка на другой, например, Babel или TypeScript. Есть компиляторы, которые оптимизируют код для конкретной архитектуры или платформы, например, GCC или LLVM. Есть компиляторы, которые используют динамическую компиляцию, то есть компилируют код во время его исполнения, например, JIT-компиляторы в Java или .NET. Есть компиляторы, которые реализуют специальные возможности или фичи языков, например, векторизация, макросы, рефлексия и т.д.

Интересные факты и фичи языков программирования у нас в канале, заходи :)

Товары для летнего спорта

Перейти

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

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

Что купить, чтобы заниматься спортом на улице Спорт, Магазин, Длиннопост

Мегамаркет дарит пикабушникам промокод килобайт. Он дает скидку 2 000 рублей на первую покупку от 4 000 рублей и действует до 31 мая. Полные правила здесь.

Для тех, кто привык заниматься один

Сумка для бега TOPROCK RUNTOP

Что купить, чтобы заниматься спортом на улице Спорт, Магазин, Длиннопост

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

Фитнес резинка Shark Fit

Что купить, чтобы заниматься спортом на улице Спорт, Магазин, Длиннопост

С фитнес-резинкой можно тренировать все группы мышц: руки, ноги, кор, ягодицы. А еще она облегчает подтягивания и помогает мягко растягиваться. В сети можно найти огромное количество роликов с упражнениями разной степени сложности. Нагрузка легко дозируется: новичкам подойдет резинка с сопротивлением до 23 кг, опытным атлетам — до 57 кг. При этом оборудование максимально компактно и поместится даже в небольшую сумку.

Слэклайн Speedise AKS85-20

Что купить, чтобы заниматься спортом на улице Спорт, Магазин, Длиннопост

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

Для активных занятий вдвоем

Набор для настольного тенниса Torres Control 10

Что купить, чтобы заниматься спортом на улице Спорт, Магазин, Длиннопост

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

Набор для бадминтона Wish Steeltec

Что купить, чтобы заниматься спортом на улице Спорт, Магазин, Длиннопост

Еще один вид спорта, которым можно заниматься, даже не имея серьезной подготовки — бадминтон. С набором от Wish Steeltec вы сможете потренировать силу удара, побегать и просто хорошо провести время. Детали яркие, так что их трудно потерять даже на природе. Леска натянута прочно, ресурса ракеток должно хватить не на один сезон.

Фрисби Wham-O Ultimate 52000

Что купить, чтобы заниматься спортом на улице Спорт, Магазин, Длиннопост

Фрисби воспринимается как простое пляжное развлечение. Тем не менее перекидывание друг другу тарелки задействует все группы мышц и развивает скорость реакции. Эта тарелка летит далеко и по понятной траектории — отличный снаряд для начала. Кстати, фрисби — это еще и ряд спортивных дисциплин со своими правилами и техническими сложностями, так что игра с друзьями может перерасти в серьезное увлечение.

Для большой компании

Мяч баскетбольный Jogel Streets

Что купить, чтобы заниматься спортом на улице Спорт, Магазин, Длиннопост

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

Футбольный мяч Torres Striker

Что купить, чтобы заниматься спортом на улице Спорт, Магазин, Длиннопост

Футбол — один из самых популярных в России видов спорта. Играя, можно отлично побегать, потренировать меткость и отработать взаимодействие в команде. Футбольный мяч Torres Striker выполнен из качественного полиуретана и резины и выдержит не один десяток матчей, не потеряв упругости. Отличная балансировка и оптимальный размер делают его подходящим как для взрослых, так и для подростков. Он достаточно тяжелый, почти как в профессиональном спорте, так что совсем малышам не понравится.

Мяч волейбольный TORRES SIMPLE COLOR

Что купить, чтобы заниматься спортом на улице Спорт, Магазин, Длиннопост

Пляжный или обычный волейбол? А может быть, пионербол, как в детском лагере? Мяч TORRES SIMPLE COLOR подойдет для любой из этих игр. Камера отлично держит давление, поэтому вам не придется постоянно подкачивать его, а качественные материалы (полиуретан и бутил) сохраняют все характеристики даже при интенсивном использовании.

Для совмещения приятного и полезного

Велосипед STELS Pilot

Что купить, чтобы заниматься спортом на улице Спорт, Магазин, Длиннопост

Многоскоростной велосипед с рамой 19-го размера подойдет как мужчинам, так и женщинам. Это отличный вариант для новичков: модель доступная, удобная. Поможет понять, нравится ли вам велоспорт. Конструкция велосипеда позволяет ездить по дорогам разных типов, поэтому вы сможете перемещаться по городу или отправиться в поход. Есть складной механизм — велосипед с ним легко возить в машине, на электричке и просто хранить в кладовке.

Горный велосипед Format

Что купить, чтобы заниматься спортом на улице Спорт, Магазин, Длиннопост

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

Самокат PLANK Magic 200

Что купить, чтобы заниматься спортом на улице Спорт, Магазин, Длиннопост

Если вы не фанат велоспорта, но хотите получить свою дозу физической нагрузки, перемещаясь по городу, выбирайте самокат. В модели PLANK Magic 200 есть регулировка руля по высоте, надежные тормоза и прочная увеличенная дека из алюминия. Когда вы катаетесь на самокате, работают мышцы ног, ягодиц, спины и живота, а заодно добираетесь, куда нужно. Если вы решите сделать паузу в тренировках, самокат легко складывается для хранения.

Экипировка

Кроссовки Hoka RINCON 3

Что купить, чтобы заниматься спортом на улице Спорт, Магазин, Длиннопост

Любая активность на свежем воздухе требует хорошей обуви, специально сделанной для занятий спортом. Яркие кроссовки Hoka RINCON 3 с облегченным весом амортизируют, снижают нагрузку на суставы. Выраженный рельеф подошвы обеспечивает сцепление с поверхностью вне зависимости от того, где проходит тренировка: на специальной площадке, асфальте или грунте.

Кроссовки Hoka CLIFTON

Что купить, чтобы заниматься спортом на улице Спорт, Магазин, Длиннопост

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

Защита от солнца и перегрева

Бейсболка GLHF

Что купить, чтобы заниматься спортом на улице Спорт, Магазин, Длиннопост

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

Крем для лица и тела Librederm

Что купить, чтобы заниматься спортом на улице Спорт, Магазин, Длиннопост

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

Спортивные солнцезащитные Exenza Empire

Что купить, чтобы заниматься спортом на улице Спорт, Магазин, Длиннопост

Удобные и стильные солнцезащитные очки защищают глаза благодаря фильтру UV400, который поглощает до 99.99% ультрафиолета. Они выполнены из легких материалов и плотно прилегают к голове. Ударопрочные поликарбонатные линзы с антибликовым покрытием подходят для разных видов спорта.

Используйте промокод килобайт на Мегамаркете. Он дает скидку 2 000 рублей на первую покупку от 4 000 рублей и действует до 31 мая. Полные правила здесь.

Реклама ООО «МАРКЕТПЛЕЙС» (агрегатор) (ОГРН: 1167746803180, ИНН: 9701048328), юридический адрес: 105082, г. Москва, ул. Спартаковская площадь, д. 16/15, стр. 6

Показать полностью 17

Небольшая история golang

Язык программирования Go, или Golang, был разработан в компании Google в 2007-2009 годах. Его создатели - Роберт Гризмер, Роб Пайки Кен Томпсон - хотели сделать современный, быстрый и производительный язык для распределенных систем и многоядерных процессоров. Они вдохновлялись такими языками, как Си, Паскаль, Оберон, Python и другими. Официально язык был представлен 10 ноября 2009 года.

Небольшая история golang Программирование, Программист, IT, Инновации, Google, Разработка

Go - компилируемый, многопоточный, статически типизированный язык с простым синтаксисом и мощными возможностями для параллельного программирования. Он поддерживает такие концепции, как интерфейсы, структуры, отложенный вызов, рефлексия, анонимные функции и замыкания. Он также имеет встроенную поддержку тестирования, документирования и форматирования кода.

Go широко используется во многих компаниях и проектах, таких как Google, Dropbox, Netflix, Uber, Яндекс, ВКонтакте и других. Он подходит для разработки веб-сервисов, клиент-серверных приложений, микросервисов, системного программирования и других областей. Go также имеет большое и активное сообщество разработчиков, которые постоянно улучшают язык и создают полезные библиотеки и инструменты.

Последняя версия языка Go - это 1.21.4, выпущенная 7 ноября 2023 года. Эта версия включает в себя несколько исправлений ошибок и улучшений безопасности, а также новые функции, такие как:

  • Поддержка модулей - нового способа управления зависимостями и версиями пакетов.

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

  • Поддержка встроенных типов - типов данных, которые определяются внутри пакета, а не в отдельном файле.

  • Поддержка контекстов - механизма для передачи метаданных и сигналов отмены между горутинами.

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

Интересные факты и фичи языков программирования у нас в канале, заходи :)

Показать полностью 1
Отличная работа, все прочитано!