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 можно использовать алгоритм поиска в глубину или алгоритм поиска в ширину. Оба алгоритма имеют свои преимущества и недостатки, и выбор зависит от задачи.
Алгоритм поиска в глубину начинает с корневого узла и рекурсивно обходит все его потомки. При нахождении искомого узла, возвращается путь от корневого узла до него. Затем можно выполнить аналогичный обход для второго искомого узла и найти их общего предка.
Алгоритм поиска в ширину, наоборот, начинает с корневого узла и последовательно обходит все узлы на каждом уровне дерева. При нахождении искомого узла, возвращается путь от корневого узла до него. Затем можно выполнить аналогичный обход для второго искомого узла и найти их общего предка.
Forwarded from Однажды в трендах
Модуль os.path
Модуль реализует некоторые полезные функции для имён путей. Для чтения или записи файлов open(), а для доступа к файловой системе модуль os. Параметры пути могут передаваться в виде строк или байтов. Приложениям рекомендуется представлять имена файлов в виде Юникод строк. К сожалению, некоторые имена файлов не могут быть представлены в виде строк в Unix, поэтому приложения, которым необходимо поддерживать произвольные имена файлов в Unix, должны использовать байтовые объекты для представления имён путей.
И наоборот, использование байтовых объектов не может представлять все имена файлов в Windows (в стандартной кодировке mbcs), поэтому приложения Windows должны использовать строковые объекты для доступа ко всем файлам.
Модуль реализует некоторые полезные функции для имён путей. Для чтения или записи файлов open(), а для доступа к файловой системе модуль os. Параметры пути могут передаваться в виде строк или байтов. Приложениям рекомендуется представлять имена файлов в виде Юникод строк. К сожалению, некоторые имена файлов не могут быть представлены в виде строк в Unix, поэтому приложения, которым необходимо поддерживать произвольные имена файлов в Unix, должны использовать байтовые объекты для представления имён путей.
И наоборот, использование байтовых объектов не может представлять все имена файлов в Windows (в стандартной кодировке mbcs), поэтому приложения Windows должны использовать строковые объекты для доступа ко всем файлам.
Forwarded from Senior SQL Developer
usql
usql – это мощный инструмент, который позволяет легко работать с базами данных SQL и NoSQL через командную строку. Созданный на основе популярного psql от PostgreSQL, usql предоставляет удобный интерфейс для выполнения запросов и манипуляций с данными.
Одной из главных особенностей usql является поддержка множества баз данных. Вы можете легко переключаться между разными базами данных, копировать данные между ними и выполнять другие операции без необходимости покидать командную строку.
usql также предоставляет множество удобных функций, таких как подсветка синтаксиса и завершение на основе контекста. Это помогает сделать процесс написания и отладки запросов более эффективным.
usql – это мощный инструмент, который позволяет легко работать с базами данных SQL и NoSQL через командную строку. Созданный на основе популярного psql от PostgreSQL, usql предоставляет удобный интерфейс для выполнения запросов и манипуляций с данными.
Одной из главных особенностей usql является поддержка множества баз данных. Вы можете легко переключаться между разными базами данных, копировать данные между ними и выполнять другие операции без необходимости покидать командную строку.
usql также предоставляет множество удобных функций, таких как подсветка синтаксиса и завершение на основе контекста. Это помогает сделать процесс написания и отладки запросов более эффективным.
Forwarded from ТЕХНО: Яндекс про технологии
💻🤔🥤Сегодня многие компании используют нейросети для генерации названий своих продуктов. Но впервые это опробовали 60 лет назад. Рассказываем историю, когда для этих целей компании Coca-Cola потребовался дорогостоящий компьютер.
В 1963 году Coca-Cola решила выпустить на рынок свой первый напиток без сахара. Само решение было для того времени необычным, поэтому дать новому напитку название тоже решили нестандартным способом.
В распоряжении компании был компьютер IBM 1401 — один из первых компьютеров, который пошёл в массовое производство. Хотя занимал он целую комнату, а его месячная аренда стоила в современных ценах около $25 000. При поддержке инженеров IBM сотрудники Coca-Cola сгенерировали с помощью компьютера 185 тысяч односложных слов из четырёх букв — изначально предполагалось, что название должно состоять именно из такого количества знаков. Затем при помощи компьютера были отброшены все труднопроизносимые слова, потом отбраковали те, что напоминали ругательства или вызывали ассоциации с другими брендами. В самом конце из нескольких десятков слов вручную был выбран вариант Tabb.
Он и должен был стать названием нового напитка, но в последний момент его сократили до TaB — так он и поступил в продажу и продавался десятилетия. Увы, попробовать его сегодня не получится: в 2020 году выпуск прекратили. В интернете даже появились петиции с требованием вернуть TaB, но они ни к чему не привели.
Подписывайтесь 👉@techno_yandex
Не пропускайте новости Яндекса тут @yandex
В 1963 году Coca-Cola решила выпустить на рынок свой первый напиток без сахара. Само решение было для того времени необычным, поэтому дать новому напитку название тоже решили нестандартным способом.
В распоряжении компании был компьютер IBM 1401 — один из первых компьютеров, который пошёл в массовое производство. Хотя занимал он целую комнату, а его месячная аренда стоила в современных ценах около $25 000. При поддержке инженеров IBM сотрудники Coca-Cola сгенерировали с помощью компьютера 185 тысяч односложных слов из четырёх букв — изначально предполагалось, что название должно состоять именно из такого количества знаков. Затем при помощи компьютера были отброшены все труднопроизносимые слова, потом отбраковали те, что напоминали ругательства или вызывали ассоциации с другими брендами. В самом конце из нескольких десятков слов вручную был выбран вариант Tabb.
Он и должен был стать названием нового напитка, но в последний момент его сократили до TaB — так он и поступил в продажу и продавался десятилетия. Увы, попробовать его сегодня не получится: в 2020 году выпуск прекратили. В интернете даже появились петиции с требованием вернуть TaB, но они ни к чему не привели.
Подписывайтесь 👉@techno_yandex
Не пропускайте новости Яндекса тут @yandex
Forwarded from Журнал «Код»
Как добавить бесящую плашку про куки себе на сайт
Иногда без этого не обойтись
https://v.thecode.media/8yw3h
#проект_Код #лучшее_Код
Иногда без этого не обойтись
https://v.thecode.media/8yw3h
#проект_Код #лучшее_Код
Forwarded from Senior SQL Developer
Агрегация данных
В это видео автор рассказывает про агрегацию данных. Существуют такие статистические показатели, как минимум, максимум, среднее и сумма. Приводятся примеры работы с функциями: SUM, MIN, MAX, AVG.
📖Видео урок
В это видео автор рассказывает про агрегацию данных. Существуют такие статистические показатели, как минимум, максимум, среднее и сумма. Приводятся примеры работы с функциями: SUM, MIN, MAX, AVG.
📖Видео урок
Forwarded from Журнал «Код»
Теория игр — это набор инструментов, которые помогают принимать взвешенные, рациональные и точные решения, а также понимать данные. Чем больше данных об игроках и ситуациях — тем точнее анализ и прогноз.
https://v.thecode.media/1859e
#разбор_Код
https://v.thecode.media/1859e
#разбор_Код