Forwarded from Хабр
Собираем и запускаем калькулятор из Windows XP в среде Windows 10 c помощью GCC x64
В этой статье мы немного проанализируем код Windows XP, a также соберём калькулятор c использованием GCC x64 в среде Windows 10. Будут показаны ошибки, с которыми автор столкнулся в процессе сборки, и подробно расписаны способы их решения. В конце будет продемонстрирован рабочий билд аппликации calc.exe.
В этой статье мы немного проанализируем код Windows XP, a также соберём калькулятор c использованием GCC x64 в среде Windows 10. Будут показаны ошибки, с которыми автор столкнулся в процессе сборки, и подробно расписаны способы их решения. В конце будет продемонстрирован рабочий билд аппликации calc.exe.
Forwarded from ДЕВОПСИНА | DevOps | Linux
This media is not supported in your browser
VIEW IN TELEGRAM
Forwarded from Senior SQL Developer
Функция WEEK в MySQL
Функция WEEK используется для извлечения номера недели из даты.
Базовый синтаксис функции выглядит следующим образом:
WEEK( date_value, [ mode ] )
- date_value - значение даты или даты/времени, из которого извлекается неделя.
- mode - Необязательный. Он используется для указания дня недели. Это может быть один из следующих вариантов:
Примечание:
1. Функция WEEK возвращает значение от 0 до 53 или от 1 до 53 в зависимости от указанного режима.
2. Если вы используете MySQL 4.0.14+, а режим не указан, функция WEEK будет использовать значение в системной переменной default_week_format в качестве режима.
3. Если вы используете версию MySQL, которая старше 4.0.14, а режим не указан, функция WEEK будет использовать 0 в качестве режима.
4. Функция WEEKOFYEAR возвращает то же самое, что и функция WEEK с синтаксисом WEEK (date_value, 3).
Функция WEEK используется для извлечения номера недели из даты.
Базовый синтаксис функции выглядит следующим образом:
WEEK( date_value, [ mode ] )
- date_value - значение даты или даты/времени, из которого извлекается неделя.
- mode - Необязательный. Он используется для указания дня недели. Это может быть один из следующих вариантов:
Примечание:
1. Функция WEEK возвращает значение от 0 до 53 или от 1 до 53 в зависимости от указанного режима.
2. Если вы используете MySQL 4.0.14+, а режим не указан, функция WEEK будет использовать значение в системной переменной default_week_format в качестве режима.
3. Если вы используете версию MySQL, которая старше 4.0.14, а режим не указан, функция WEEK будет использовать 0 в качестве режима.
4. Функция WEEKOFYEAR возвращает то же самое, что и функция WEEK с синтаксисом WEEK (date_value, 3).
Forwarded from Rozetked (Антон Курилов)
This media is not supported in your browser
VIEW IN TELEGRAM
Революция в мире мемосоздания
Приложение Paint теперь умеет автоматически удалять фон в изображении. Пока фишку могут опробовать участники бета-тестирования Windows 11.
Осталось добавить слои.
rozetked.me/news/30443
Приложение Paint теперь умеет автоматически удалять фон в изображении. Пока фишку могут опробовать участники бета-тестирования Windows 11.
Осталось добавить слои.
rozetked.me/news/30443
Forwarded from ДЕВОПСИНА | DevOps | Linux
This media is not supported in your browser
VIEW IN TELEGRAM
Forwarded from Хабр
Сам написал, сам поиграл: 2D-игра для Android полностью с нуля весом менее 1мб
Многие программисты так или иначе имеют тягу и интерес к разработке игр. Немалое количество спецов было замечено за написанием маленьких и миленьких игрушек, которые были разработаны за короткое время just for fun. Большинству разработчиков за счастье взять готовый игровой движок по типу Unity/UE и попытаться создать что-то своё с их помощью, особенно упорные изучают и пытаются что-то сделать в экзотических движках типа Godot/Urho, а совсем прожжённые ребята любят писать игрушки… с нуля. Таковым любителем писать всё сам оказался и автор этой статьи. И в один день ему просто захотелось написать что-нибудь прикольное, мобильное и обязательно — двадэшное!
Из этой статьи вы узнаете про написание производительного 2D-рендерера с нуля на базе OpenGL ES, обработку «сырого» ввода в мобильных играх, организацию архитектуры и игровой логики и адаптацию игры под любые устройства
Многие программисты так или иначе имеют тягу и интерес к разработке игр. Немалое количество спецов было замечено за написанием маленьких и миленьких игрушек, которые были разработаны за короткое время just for fun. Большинству разработчиков за счастье взять готовый игровой движок по типу Unity/UE и попытаться создать что-то своё с их помощью, особенно упорные изучают и пытаются что-то сделать в экзотических движках типа Godot/Urho, а совсем прожжённые ребята любят писать игрушки… с нуля. Таковым любителем писать всё сам оказался и автор этой статьи. И в один день ему просто захотелось написать что-нибудь прикольное, мобильное и обязательно — двадэшное!
Из этой статьи вы узнаете про написание производительного 2D-рендерера с нуля на базе OpenGL ES, обработку «сырого» ввода в мобильных играх, организацию архитектуры и игровой логики и адаптацию игры под любые устройства
Forwarded from Senior SQL Developer
Партиционирование в SQL (ч.1)
Партиционирование - техника, позволяющая разбить таблицу на несколько физических или логических разделов. Это улучшает производительность и эффективность работы с базой данных.
В SQL партиционирование может быть реализовано путем разделения таблицы на физические или логические единицы хранения данных. Разделение может основываться на различных критериях, таких как диапазон значений столбца, хеш-значение, список значений и т. д.
Данные операции, такие как выборка, вставка, обновление и удаление, выполняются над каждой партицией независимо друг от друга. Это позволяет реализовать параллельную обработку данных, что положительно влияет на производительность запросов.
Варианты партиционирования: горизонтальное и вертикальное
Существует два основных варианта партиционирования в SQL — горизонтальное и вертикальное.
Горизонтальное партиционирование - разделение таблицы на партиции по строкам. Это полезно для таблиц с большим объемом данных, так как обработка становится более эффективной.
Вертикальное партиционирование - разделяет таблицу по столбцам. Это может быть полезно для таблиц с множеством столбцов, из которых используются только некоторые.
Выбор типа партиционирования зависит от требований базы данных. При правильном применении, партиционирование может значительно улучшить производительность работы с SQL-базами данных.
Партиционирование - техника, позволяющая разбить таблицу на несколько физических или логических разделов. Это улучшает производительность и эффективность работы с базой данных.
В SQL партиционирование может быть реализовано путем разделения таблицы на физические или логические единицы хранения данных. Разделение может основываться на различных критериях, таких как диапазон значений столбца, хеш-значение, список значений и т. д.
Данные операции, такие как выборка, вставка, обновление и удаление, выполняются над каждой партицией независимо друг от друга. Это позволяет реализовать параллельную обработку данных, что положительно влияет на производительность запросов.
Варианты партиционирования: горизонтальное и вертикальное
Существует два основных варианта партиционирования в SQL — горизонтальное и вертикальное.
Горизонтальное партиционирование - разделение таблицы на партиции по строкам. Это полезно для таблиц с большим объемом данных, так как обработка становится более эффективной.
Вертикальное партиционирование - разделяет таблицу по столбцам. Это может быть полезно для таблиц с множеством столбцов, из которых используются только некоторые.
Выбор типа партиционирования зависит от требований базы данных. При правильном применении, партиционирование может значительно улучшить производительность работы с SQL-базами данных.
Forwarded from Postgres Guru | Базы данных 💐
🧾 Работа с JSON в PostgreSQL (часть 1).
В этой заметке начнем разговаривать о знаменитой возможности PostgreSQL работать с форматом данных JSON. Разберемся что такое JSON, чем он удобен и за чем он нужен.
JSON расшифровывается как JavaScript Object Notation. Фактически, это еще один формат представления данных по типу XML. JSON стал популярен, благодаря своей простоте и гибкости. Этот формат легко читается как человеком так и машиной и поддерживается практически всеми языками программирования.
PostgreSQL, когда получила возможность хранить в своих базах данных и извлекать информацию в формате JSON, зашла на территорию так называемых NoSQL баз данных. Эта возможность дала PostgreSQL более гибко работать с данными чем это дает реляционная модель.
Представим пример. У нас есть какой-то объект и мы хотим дать пользователю возможность самостоятельно добавлять атрибуты к этому объекту. Реляционная модель не даст нам хранить кучу атрибутов в одной ячейке таблицы, это противоречит правилам нормализации данных. По этому нам придется что-то выдумывать для решения такой задачи, либо добавлять новую колонку в таблицу при каждом добавлении нового атрибута, либо организовывать данные по модели Entity Attribute Value (о ней мы с вами как-нибудь поговорим в будущих постах). Т.е. фактически, JSON в PostgreSQL нам становится нужен, когда возникает необходимость в работе с неструктурированными данными.
И тут к нам на помощь приходит JSON. Сам формат выглядит очень просто, ниже пример:
В фигурных скобках у нас находится объект, который представляет собой набор пар ключ-значение. Ключ записывается до знака двоеточия в кавычках, значение - после, все пары разделены между собой запятыми. В рамках одного объекта ключ должен быть уникальным. Значение может быть разными типами данных: цифра, строка, булево, другой объект, ноль или массив. Пары можно записывать и в одну строку, но запись в столбик (как в примере) повышает удобство их чтения.
Массивы в JSON записываются так:
Т.е. массив начинается с квадратной скобки и представляет собой упорядоченный набор объектов.
В PostgreSQL есть два варианта работы с JSON. Это собственно сам JSON и JSONB. JSONB считается более продвинутой технологией для работы с форматом JSON в PostgreSQL. О различиях этих двух подходов, а так же о дальнейшей работе с JSON в PostgreSQL мы с вами поговорим в будущих постах.
#pgbase #queries #pgjson
В этой заметке начнем разговаривать о знаменитой возможности PostgreSQL работать с форматом данных JSON. Разберемся что такое JSON, чем он удобен и за чем он нужен.
JSON расшифровывается как JavaScript Object Notation. Фактически, это еще один формат представления данных по типу XML. JSON стал популярен, благодаря своей простоте и гибкости. Этот формат легко читается как человеком так и машиной и поддерживается практически всеми языками программирования.
PostgreSQL, когда получила возможность хранить в своих базах данных и извлекать информацию в формате JSON, зашла на территорию так называемых NoSQL баз данных. Эта возможность дала PostgreSQL более гибко работать с данными чем это дает реляционная модель.
Представим пример. У нас есть какой-то объект и мы хотим дать пользователю возможность самостоятельно добавлять атрибуты к этому объекту. Реляционная модель не даст нам хранить кучу атрибутов в одной ячейке таблицы, это противоречит правилам нормализации данных. По этому нам придется что-то выдумывать для решения такой задачи, либо добавлять новую колонку в таблицу при каждом добавлении нового атрибута, либо организовывать данные по модели Entity Attribute Value (о ней мы с вами как-нибудь поговорим в будущих постах). Т.е. фактически, JSON в PostgreSQL нам становится нужен, когда возникает необходимость в работе с неструктурированными данными.
И тут к нам на помощь приходит JSON. Сам формат выглядит очень просто, ниже пример:
{ "id": "1", "username": "Ilya", "location": "Moscow"}В фигурных скобках у нас находится объект, который представляет собой набор пар ключ-значение. Ключ записывается до знака двоеточия в кавычках, значение - после, все пары разделены между собой запятыми. В рамках одного объекта ключ должен быть уникальным. Значение может быть разными типами данных: цифра, строка, булево, другой объект, ноль или массив. Пары можно записывать и в одну строку, но запись в столбик (как в примере) повышает удобство их чтения.
Массивы в JSON записываются так:
{ "username": "Ilya", "location": "Moscow", "posts": [ { "id":"1", "title":"Hello" }, { "id":"4", "title":"Enjoy" } ]}Т.е. массив начинается с квадратной скобки и представляет собой упорядоченный набор объектов.
В PostgreSQL есть два варианта работы с JSON. Это собственно сам JSON и JSONB. JSONB считается более продвинутой технологией для работы с форматом JSON в PostgreSQL. О различиях этих двух подходов, а так же о дальнейшей работе с JSON в PostgreSQL мы с вами поговорим в будущих постах.
#pgbase #queries #pgjson
Forwarded from vc.ru
Microsoft добавит первые ИИ-функции в Windows 11 для всех пользователей уже 26 сентября и представит Microsoft 365 Copilot платным клиентам с 1 ноября.
Первым бот поможет упорядочить открытые окна и удалить фон с изображения из интернета. Вторым перескажет непрочитанные письма, составит план мероприятия на основе данных из Excel-таблиц и поможет завести «тикет» в Jira
vc.ru/services/847081
Первым бот поможет упорядочить открытые окна и удалить фон с изображения из интернета. Вторым перескажет непрочитанные письма, составит план мероприятия на основе данных из Excel-таблиц и поможет завести «тикет» в Jira
vc.ru/services/847081
Forwarded from Однажды в трендах
Конституция try-except
При использовании конструкции try-except мы обрабатываем ошибки в коде. Если в блоке try происходит ошибка, то программа переходит в блок except, где можно обработать ошибку и продолжить выполнение программы.
В этом примере мы используем конструкцию try-except для обработки ошибки, которая может возникнуть при попытке преобразовать введенную пользователем строку в целое число. Если введенная строка не может быть преобразована в целое число, то программа переходит в блок except и выводит сообщение об ошибке.
При использовании конструкции try-except мы обрабатываем ошибки в коде. Если в блоке try происходит ошибка, то программа переходит в блок except, где можно обработать ошибку и продолжить выполнение программы.
В этом примере мы используем конструкцию try-except для обработки ошибки, которая может возникнуть при попытке преобразовать введенную пользователем строку в целое число. Если введенная строка не может быть преобразована в целое число, то программа переходит в блок except и выводит сообщение об ошибке.
Forwarded from Senior SQL Developer
Ближайший общий предок в дереве SQL
В SQL, деревья представляют собой структуры данных, которые используются для организации иерархических данных. Одним из интересных аспектов работы с деревьями в SQL является поиск ближайшего общего предка.
Поиск ближайшего общего предка
Для поиска общего предка в дереве SQL можно использовать алгоритм поиска в глубину или алгоритм поиска в ширину. Оба алгоритма имеют свои преимущества и недостатки, и выбор зависит от задачи.
Алгоритм поиска в глубину начинает с корневого узла и рекурсивно обходит все его потомки. При нахождении искомого узла, возвращается путь от корневого узла до него. Затем можно выполнить аналогичный обход для второго искомого узла и найти их общего предка.
Алгоритм поиска в ширину, наоборот, начинает с корневого узла и последовательно обходит все узлы на каждом уровне дерева. При нахождении искомого узла, возвращается путь от корневого узла до него. Затем можно выполнить аналогичный обход для второго искомого узла и найти их общего предка.
В SQL, деревья представляют собой структуры данных, которые используются для организации иерархических данных. Одним из интересных аспектов работы с деревьями в SQL является поиск ближайшего общего предка.
Поиск ближайшего общего предка
Для поиска общего предка в дереве SQL можно использовать алгоритм поиска в глубину или алгоритм поиска в ширину. Оба алгоритма имеют свои преимущества и недостатки, и выбор зависит от задачи.
Алгоритм поиска в глубину начинает с корневого узла и рекурсивно обходит все его потомки. При нахождении искомого узла, возвращается путь от корневого узла до него. Затем можно выполнить аналогичный обход для второго искомого узла и найти их общего предка.
Алгоритм поиска в ширину, наоборот, начинает с корневого узла и последовательно обходит все узлы на каждом уровне дерева. При нахождении искомого узла, возвращается путь от корневого узла до него. Затем можно выполнить аналогичный обход для второго искомого узла и найти их общего предка.