Forwarded from Типичный программист
Media is too big
VIEW IN TELEGRAM
Кажется, с появлением Unreal Engine 5 появился новый тренд — создавать на движке всё подряд. Кто-то воссоздаёт гиперреалистичные сцены из реального мира. Кто-то фантазирует, как будут выглядеть персонажи из ожидаемых игр. А кто-то — решил показать, как бы могла выглядеть игра Super Mario, будь у её создателей в то время такие технологии.
Как вам? Сыграли бы?
#gamedev
Как вам? Сыграли бы?
#gamedev
Forwarded from LEFT JOIN
🌀 Критика критики SQL (Запутались? Сейчас будем разбираться!) 📚
Язык SQL впервые появился в 1974 году как часть базы данных IBM System R. Прошло почти 50 лет, и SQL де-факто является языком для работы с большинством баз данных (реляционных, конечно же).
Карлин Энг работал инженером и аналитиков данных 12 лет и у него накопилось много вопросов к SQL. В статье он, как настоящий аналитик, структурированно изложил, что именно его не устраивает. Конечно, он был не первым критиком SQL, а лишь прокомментировал идеи, описанные в книге 1984 года выпуска «Критика языка баз данных SQL» математика Си Джей Дейта. Дейт был бывшим сотрудником IBM, известным исследователем баз данных и другом Э. Ф. Кодда. Однако, те замечания, которые были описаны в его книге, частично устарели и ниже будет краткая выжимка из рассуждения Карлина (которое я рекомендую прочесть в оригинале).
🤔 Что не так с SQL по версии Си Джей Дейта?
Для начала разберемся с тем, что такое ортогональность. Суть ортогональности по мнению автора в следующем: конструкции языка подобны блокам Lego — небольшое количество базовых частей можно рекомбинировать простыми и интуитивно понятными способами. Отсутствие ортогональности означает, что в языке есть много исключений в том, как компоненты могут быть объединены, что делает его сложным для изучения.
1. Отсутствие ортогональности выражений
Раньше использование FROM в SELECT было ограничено указанием только имен таблиц или представлений, а не подзапросов или общих табличных выражений (CTE). Однако, современный SQL предоставляет возможность ссылаться на CTE или подзапрос в операторе FROM.
2. Отсутствие ортогональности функций
Автор приводит множество конкретных примеров этого критического замечания, которые возникают при разном написании запроса. Один из них – оператор HAVING, которое мы разбирали в предыдущем посте. Спойлер: использование HAVING и GROUP BY теперь гораздо проще и шире, чем, например, в SQL 1983 года.
3. Отсутствие ортогональности в целом
Это замечание касается ряда небольших проблем, например, ограничение для «длинных» полей (строки больше 254 символов): на «длинное» поле нельзя было сослаться в предложении WHERE или GROUP BY. Конечно, современные системы баз данных больше не имеют этих ограничений.
4. Ключи
SQL образца 1983 года мог легко игнорировать первичные ключи, а внешних ключей даже не существовало. Хотя SQL образца 2022 допускает внешние ключи, и многие базы данных обеспечивают ссылочную целостность, последняя версия языка по-прежнему не полностью понимает семантику первичных и внешних ключей.
5. Домены или типы данных
В первоначальном SQL были только примитивные типы (int, char, float и т. д.). Сегодня Postgres обеспечивает поддержку пользовательских типов произвольной сложности, однако, большинство хранилищ данных OLAP не поддерживают определяемые пользователем типы, и SQL тут бессилен.
6. Назначение отношений
Критика здесь заключалась в следующем: Ограниченная форма присваивания отношения поддерживается через INSERT ... SELECT, но эта операция не перезаписывает предыдущее содержимое таблицы, а источником присваивания не может быть произвольное алгебраическое выражение (или эквивалент SELECT). Это уже не так. Назначение отношения может быть выполнено с помощью CREATE OR REPLACE TABLE AS. Для подзапросов и CTE источником может быть любое произвольное алгебраическое выражение.
7. Явные операторы JOIN, INTERSECT и DIFFERENCE
SQL 1983 года их не поддерживал, но в современном SQL это уже давно исправлено.
💭 Выводы
Хотя многие критические замечания в отношении SQL были исправлены обновлениями стандарта ANSI, некоторые из них все еще присутствуют, например, отсутствие ортогональности. Несмотря на несовершенство SQL, его доминирование на рынке означает, что каждый начинающий аналитик и программист должен его изучить. Однако, мне кажется, что при всех известных недостатках и попытках регулярно улучшить язык, SQL остается очень удобным и интутитивно понятным языком для работы с данными.
А вы что думаете — удобнее писать SELECT к табличке 💯или обработать массив с помощью pandas 🤡?
Язык SQL впервые появился в 1974 году как часть базы данных IBM System R. Прошло почти 50 лет, и SQL де-факто является языком для работы с большинством баз данных (реляционных, конечно же).
Карлин Энг работал инженером и аналитиков данных 12 лет и у него накопилось много вопросов к SQL. В статье он, как настоящий аналитик, структурированно изложил, что именно его не устраивает. Конечно, он был не первым критиком SQL, а лишь прокомментировал идеи, описанные в книге 1984 года выпуска «Критика языка баз данных SQL» математика Си Джей Дейта. Дейт был бывшим сотрудником IBM, известным исследователем баз данных и другом Э. Ф. Кодда. Однако, те замечания, которые были описаны в его книге, частично устарели и ниже будет краткая выжимка из рассуждения Карлина (которое я рекомендую прочесть в оригинале).
🤔 Что не так с SQL по версии Си Джей Дейта?
Для начала разберемся с тем, что такое ортогональность. Суть ортогональности по мнению автора в следующем: конструкции языка подобны блокам Lego — небольшое количество базовых частей можно рекомбинировать простыми и интуитивно понятными способами. Отсутствие ортогональности означает, что в языке есть много исключений в том, как компоненты могут быть объединены, что делает его сложным для изучения.
1. Отсутствие ортогональности выражений
Раньше использование FROM в SELECT было ограничено указанием только имен таблиц или представлений, а не подзапросов или общих табличных выражений (CTE). Однако, современный SQL предоставляет возможность ссылаться на CTE или подзапрос в операторе FROM.
2. Отсутствие ортогональности функций
Автор приводит множество конкретных примеров этого критического замечания, которые возникают при разном написании запроса. Один из них – оператор HAVING, которое мы разбирали в предыдущем посте. Спойлер: использование HAVING и GROUP BY теперь гораздо проще и шире, чем, например, в SQL 1983 года.
3. Отсутствие ортогональности в целом
Это замечание касается ряда небольших проблем, например, ограничение для «длинных» полей (строки больше 254 символов): на «длинное» поле нельзя было сослаться в предложении WHERE или GROUP BY. Конечно, современные системы баз данных больше не имеют этих ограничений.
4. Ключи
SQL образца 1983 года мог легко игнорировать первичные ключи, а внешних ключей даже не существовало. Хотя SQL образца 2022 допускает внешние ключи, и многие базы данных обеспечивают ссылочную целостность, последняя версия языка по-прежнему не полностью понимает семантику первичных и внешних ключей.
5. Домены или типы данных
В первоначальном SQL были только примитивные типы (int, char, float и т. д.). Сегодня Postgres обеспечивает поддержку пользовательских типов произвольной сложности, однако, большинство хранилищ данных OLAP не поддерживают определяемые пользователем типы, и SQL тут бессилен.
6. Назначение отношений
Критика здесь заключалась в следующем: Ограниченная форма присваивания отношения поддерживается через INSERT ... SELECT, но эта операция не перезаписывает предыдущее содержимое таблицы, а источником присваивания не может быть произвольное алгебраическое выражение (или эквивалент SELECT). Это уже не так. Назначение отношения может быть выполнено с помощью CREATE OR REPLACE TABLE AS. Для подзапросов и CTE источником может быть любое произвольное алгебраическое выражение.
7. Явные операторы JOIN, INTERSECT и DIFFERENCE
SQL 1983 года их не поддерживал, но в современном SQL это уже давно исправлено.
💭 Выводы
Хотя многие критические замечания в отношении SQL были исправлены обновлениями стандарта ANSI, некоторые из них все еще присутствуют, например, отсутствие ортогональности. Несмотря на несовершенство SQL, его доминирование на рынке означает, что каждый начинающий аналитик и программист должен его изучить. Однако, мне кажется, что при всех известных недостатках и попытках регулярно улучшить язык, SQL остается очень удобным и интутитивно понятным языком для работы с данными.
А вы что думаете — удобнее писать SELECT к табличке 💯или обработать массив с помощью pandas 🤡?
Carlineng
Carlin Eng
Homepage of Carlin Eng
== Loki - access logs the smart way
https://anaisurl.com/loki-access-logs-the-smart-way/
https://anaisurl.com/loki-access-logs-the-smart-way/
Anais Urlichs
Loki - Access logs the smart way
In this tutorial, we will learn how to access logs in Grafana through Grafana Loki. This includes installing your observability tools incl. Prometheus, Grafana, Loki and Promtail inside your Kubernetes cluster. Video included
Qibec (pronounce "Quebec") is a simple educational CPU - not a complete computer - made from discrete transistors.
This CPU (Central Processing Unit) only has 1 single native instruction, which operates on 1 data-bit.
https://mircad.com/q/index.html
This CPU (Central Processing Unit) only has 1 single native instruction, which operates on 1 data-bit.
https://mircad.com/q/index.html
Forwarded from JavaScript.Ninja News (Illya Klymov 🇺🇦)
YouTube
Ілля Климов про Vue 3, GitLab, GraphQL, npm та Node.js.
Зустрічайте 6-ий випуск подкасту "Right Tool For The Job". Гість цього випуску Ілля Климов — Senior Frontend Developer at GitLab Inc та лідер проєкту JavaScript.Ninja.
Наш ведучий Олександр Соловйов разом з Іллею поспілкувалися про Vue 3, GraphQL, npm та…
Наш ведучий Олександр Соловйов разом з Іллею поспілкувалися про Vue 3, GraphQL, npm та…
Название кликбейтное но чтото для себя даже нашел
== 8 первоклассных инструкций SQL на каждый день
https://telegra.ph/8-pervoklassnyh-instrukcij-SQL-na-kazhdyj-den-07-14
- OVER и OVER (PARTITION BY)
- Общие табличные выражения (ОТВ)
- Условные выражения
- Count (1) вместо count (*)
- Мониторинг использования индекса
- Показ N-числа наиболее затратных запросов
- Показ индексов схемы базы данных
- Поиск повторяющихся строк по имени столбца
== SQL-запросов, о которых должен знать каждый дата-инженер
https://telegra.ph/6-SQL-zaprosov-o-kotoryh-dolzhen-znat-kazhdyj-data-inzhener-07-04
- Нарастающий итог
- Обобщенные табличные выражения
- Упорядочение данных
- Добавление подытогов
- Временные функции
- Дисперсия и среднеквадратическое отклонение
== ТОП-20 хитрых вопросов по SQL для собеседования
https://proglib.io/p/sql-questions
- Как найти дубликат записи?
- Как, используя
- Напишите SQL-запрос, с применением
- Чем отличается
- Что такое план запросов? Когда бы вы его использовали? Как посмотреть план?
- Как из таблицы выбрать все записи c четными ID? А с нечетными?
- Важен ли в составном индексе порядок столбцов?
- В чем разница между однорядными и многорядными функциями? Для чего используется
- В чем разница между условиями
- Как получить последний
- Чем отличается
== 8 первоклассных инструкций SQL на каждый день
https://telegra.ph/8-pervoklassnyh-instrukcij-SQL-na-kazhdyj-den-07-14
- OVER и OVER (PARTITION BY)
- Общие табличные выражения (ОТВ)
- Условные выражения
- Count (1) вместо count (*)
- Мониторинг использования индекса
- Показ N-числа наиболее затратных запросов
- Показ индексов схемы базы данных
- Поиск повторяющихся строк по имени столбца
== SQL-запросов, о которых должен знать каждый дата-инженер
https://telegra.ph/6-SQL-zaprosov-o-kotoryh-dolzhen-znat-kazhdyj-data-inzhener-07-04
- Нарастающий итог
- Обобщенные табличные выражения
- Упорядочение данных
- Добавление подытогов
- Временные функции
- Дисперсия и среднеквадратическое отклонение
== ТОП-20 хитрых вопросов по SQL для собеседования
https://proglib.io/p/sql-questions
- Как найти дубликат записи?
- Как, используя
CTE, найти пятый по величине оклад в таблице?- Напишите SQL-запрос, с применением
UNION ALL (не UNION), использующий WHERE для устранения дубликатов.- Чем отличается
VARCHAR от NVARCHAR?- Что такое план запросов? Когда бы вы его использовали? Как посмотреть план?
- Как из таблицы выбрать все записи c четными ID? А с нечетными?
- Важен ли в составном индексе порядок столбцов?
- В чем разница между однорядными и многорядными функциями? Для чего используется
GROUP BY?- В чем разница между условиями
WHERE и HAVING?- Как получить последний
id без использования функции max?- Чем отличается
IN от EXISTS?Telegraph
8 первоклассных инструкций SQL на каждый день
Предлагаем вашему вниманию 8 инструкций SQL для экономии рабочего времени. Одни из них базовые, другие немного посложнее, но все из них вам пригодятся. Поэтому начнем без лишних разговоров. 1. Поиск повторяющихся строк по имени столбца С помощью этого простого…
== This is How IBM Will Revolutionize PC Gaming
https://youtu.be/z6u_oNIXFuU
https://youtu.be/z6u_oNIXFuU
YouTube
This is How IBM Will Revolutionize PC Gaming
We've been told by AMD (and @Hardwareunboxed) that cache matters for gaming. So how about giving everyone more cache? Not just L3, but a stonkingly massive L2 cache as well. IBM has the technology, and IBM has a deal with Intel. Coming soon, perhaps?
If…
If…
Forwarded from Типичный программист
Одному программисту настолько не понравился ненатуральный звук автомобильных двигателей в играх, что он взял и создал точный эмулятор для движков автомобилей
По сути он создал физический движок, программу, которая производит точное компьютерное моделирование того, как взаимодействуют цилиндры, поршни, маховики, воздух и топливо. Физический движок также рассчитывает скорость распространения огня, количество энергии, выделяемое при сгорании воздушно-топливной смеси. И генерирует звук исходя из давления в виртуальной выхлопной трубе. И всё это с 80 000 FPS.
Более того, разработчик так заморочился, что по пути почти создал свой язык программирования для описания двигателей — число цилиндров, расположение элементов, передачи и т. д.
Исходный код открыт и доступен на гитхабе: https://github.com/ange-yaghi/engine-sim
А посмотреть за процессом создания и послушать звуки самых разных двигателей можно в 12-минутном оригинальном видео: https://youtu.be/RKT-sKtR970
#кек #cpp #opensource
По сути он создал физический движок, программу, которая производит точное компьютерное моделирование того, как взаимодействуют цилиндры, поршни, маховики, воздух и топливо. Физический движок также рассчитывает скорость распространения огня, количество энергии, выделяемое при сгорании воздушно-топливной смеси. И генерирует звук исходя из давления в виртуальной выхлопной трубе. И всё это с 80 000 FPS.
Более того, разработчик так заморочился, что по пути почти создал свой язык программирования для описания двигателей — число цилиндров, расположение элементов, передачи и т. д.
Исходный код открыт и доступен на гитхабе: https://github.com/ange-yaghi/engine-sim
А посмотреть за процессом создания и послушать звуки самых разных двигателей можно в 12-минутном оригинальном видео: https://youtu.be/RKT-sKtR970
#кек #cpp #opensource
== Алгоритмы машинного обучения. Наивный байесовский алгоритм классификации: преимущества и недостатки
https://uproger.com/algoritmy-mashinnogo-obucheniya-naivnyj-bajesovskij-algoritm-klassifikaczii-preimushhestva-i-nedostatki/
https://uproger.com/algoritmy-mashinnogo-obucheniya-naivnyj-bajesovskij-algoritm-klassifikaczii-preimushhestva-i-nedostatki/
UPROGER | Программирование
Алгоритмы машинного обучения. Наивный байесовский алгоритм классификации: преимущества и недостатки
Наивный байесовский классификатор (Naive Bayes classifier) – это очень популярный в машинном обучении алгоритм, который в основном используется для получения базовой точности набора данных. Изучим его преимущества и недостатки, а также реализацию на языке…
== Градиентый бустинг — подробный разбор алгоритма машинного обучения.
https://uproger.com/gradientyj-busting-podrobnyj-razbor-algoritma-mashinnogo-obucheniya/
https://uproger.com/gradientyj-busting-podrobnyj-razbor-algoritma-mashinnogo-obucheniya/
UPROGER | Программирование
Градиентый бустинг — подробный разбор алгоритма машинного обучения.
Хотя большинство победителей соревнований на Kaggle используют композицию разных моделей, одна из них заслуживает особого внимания, так как является почти обязательной частью. Речь, конечно, про Градиентный бустинг (GBM) и его вариации. Возьмем, например.…
== ЗАБУДЬТЕ Wi-Fi | Технология Li-Fi В 100 РАЗ БЫСТРЕЕ
https://youtu.be/nsZbrpzv5ro
круто конечно. но ночью не позалипаешь)
https://youtu.be/nsZbrpzv5ro
круто конечно. но ночью не позалипаешь)
YouTube
ЗАБУДЬТЕ Wi-Fi | Технология Li-Fi В 100 РАЗ БЫСТРЕЕ
Школа Ноутбук1: https://notebook1.online/?utm=radio
____________________________________________________
Wi-Fi реле: https://alli.pub/70663l?erid=2SDnjetyoBx
Умная розетка: https://alli.pub/70664r?erid=2SDnjc4RWPc
Сенсорные Wi-Fi выключатели: https://al…
____________________________________________________
Wi-Fi реле: https://alli.pub/70663l?erid=2SDnjetyoBx
Умная розетка: https://alli.pub/70664r?erid=2SDnjc4RWPc
Сенсорные Wi-Fi выключатели: https://al…
== HTTP/1 to HTTP/2 to HTTP/3
https://youtu.be/a-sBfyiXysI
https://youtu.be/a-sBfyiXysI
YouTube
HTTP/1 to HTTP/2 to HTTP/3
Subscribe to our weekly system design newsletter: https://bit.ly/3tfAlYD
Checkout our bestselling System Design Interview books:
Volume 1: https://amzn.to/3Ou7gkd
Volume 2: https://amzn.to/3HqGozy
Other things we made:
Digital version of System Design…
Checkout our bestselling System Design Interview books:
Volume 1: https://amzn.to/3Ou7gkd
Volume 2: https://amzn.to/3HqGozy
Other things we made:
Digital version of System Design…
== 7 Database Paradigms
https://youtu.be/W2Z7fbCLSTw
- key-value
- wide-column
- document
- relational
- graph
- search engine
- multi-model
https://youtu.be/W2Z7fbCLSTw
- key-value
- wide-column
- document
- relational
- graph
- search engine
- multi-model
YouTube
7 Database Paradigms
Learn about seven different database paradigms and what they do best. https://fireship.io/lessons/top-seven-database-paradigms/
00:00 Intro
00:45 Key-value
01:48 Wide Column
02:47 Document
04:05 Relational
06:21 Graph
07:22 Search Engine
08:27 Multi-model…
00:00 Intro
00:45 Key-value
01:48 Wide Column
02:47 Document
04:05 Relational
06:21 Graph
07:22 Search Engine
08:27 Multi-model…
Forwarded from Библиотека питониста | Python, Django, Flask
Создание графиков в вашем терминале с помощью Plotext.
https://pybit.es/articles/terminal-plotting-with-plotext/
https://pybit.es/articles/terminal-plotting-with-plotext/
Pybites
Making Plots In Your Terminal With Plotext - Pybites
Making a plot with plotext is as simple as picking the type of graph and feeding it labels and values:
Canary flags in GCC / CLANG
https://developers.redhat.com/articles/2022/06/02/use-compiler-flags-stack-protection-gcc-and-clang#summary
Both GCC and Clang provide a wide range of compiler flags to prevent stack-based attacks. Some of these flags relate to a specific kind of exploit. Others introduce generic protection. And some flags give feedback like warnings and reports to the user, providing a better understanding of the behavior of the stack program. Depending on the attack scenario, code size constraints, and execution speed, compilers provide a wide range of tools to address the attack.
https://developers.redhat.com/articles/2022/06/02/use-compiler-flags-stack-protection-gcc-and-clang#summary
Both GCC and Clang provide a wide range of compiler flags to prevent stack-based attacks. Some of these flags relate to a specific kind of exploit. Others introduce generic protection. And some flags give feedback like warnings and reports to the user, providing a better understanding of the behavior of the stack program. Depending on the attack scenario, code size constraints, and execution speed, compilers provide a wide range of tools to address the attack.
Red Hat Developer
Use compiler flags for stack protection in GCC and Clang | Red Hat Developer
A binary may be subject to a wide range of attacks, but smashing the stack for fun and profit is one of the most venerable ones. Stack-based attacks are also the lowest-cost form of attack: Stack
== Алгоритмы и структуры данных ПОЛНЫЙ КУРС на JAVASCRIPT
https://youtu.be/NErrGZ64OdE
- План на урок
- Что такое алгоритм? Оценка сложности
- Линейный поиск
- Бинарный поиск. Итеративный подход (цикл)
- Сортировка выбором. SelectionSort
- Сортировка пузырьком. BubbleSort
- Рекурсия. Рекурсивные функции. Факториал. Числа Фибоначчи
- Быстрая сортировка. Сортировка Хоара
- Графы. Поиск в ширину
- Структура данных Очередь
- Матрица смежности
- Алгоритм Дейкстры для поиска кратчайшего пути
- Рекурсивный обход дерева n-размерности
- Итеративный обход дерева n-размерности
- Структура данных Стек
- Кеширование вычислений
- Массивы. Сложность основных операций
- Связный список. Простая реализация и теория
- Бинарное дерево поиска. Простая реализация и теория
- Set и Map
https://youtu.be/NErrGZ64OdE
- План на урок
- Что такое алгоритм? Оценка сложности
- Линейный поиск
- Бинарный поиск. Итеративный подход (цикл)
- Сортировка выбором. SelectionSort
- Сортировка пузырьком. BubbleSort
- Рекурсия. Рекурсивные функции. Факториал. Числа Фибоначчи
- Быстрая сортировка. Сортировка Хоара
- Графы. Поиск в ширину
- Структура данных Очередь
- Матрица смежности
- Алгоритм Дейкстры для поиска кратчайшего пути
- Рекурсивный обход дерева n-размерности
- Итеративный обход дерева n-размерности
- Структура данных Стек
- Кеширование вычислений
- Массивы. Сложность основных операций
- Связный список. Простая реализация и теория
- Бинарное дерево поиска. Простая реализация и теория
- Set и Map
YouTube
Алгоритмы и структуры данных ПОЛНЫЙ КУРС на JAVASCRIPT
В этом ролике мы кратко пройдемся по самым популярным алгоритмам, таким как поиск, сортировка, обходы графа, деревьев, кеширование и рассмотрим основные структуры данных: массивы, списки, деревья, стек, очередь, сет и мэп. Js алгоритмы и структуры данных.…