BufWriter<Master<'_>> – Telegram
BufWriter<Master<'_>>
105 subscribers
451 photos
28 videos
34 files
1.7K links
https://www.patreon.com/alxe_master

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

#os, #cloud, #rust, #golang, #python, #javaScript, #cpp, etc
Download Telegram
Forwarded from Типичный программист
Media is too big
VIEW IN TELEGRAM
Кажется, с появлением Unreal Engine 5 появился новый тренд — создавать на движке всё подряд. Кто-то воссоздаёт гиперреалистичные сцены из реального мира. Кто-то фантазирует, как будут выглядеть персонажи из ожидаемых игр. А кто-то — решил показать, как бы могла выглядеть игра Super Mario, будь у её создателей в то время такие технологии.

Как вам? Сыграли бы?

#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 🤡?
Forwarded from RWPS::Mirror
😁3
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
Название кликбейтное но чтото для себя даже нашел

== 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?
Forwarded from Типичный программист
​​Одному программисту настолько не понравился ненатуральный звук автомобильных двигателей в играх, что он взял и создал точный эмулятор для движков автомобилей

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

Более того, разработчик так заморочился, что по пути почти создал свой язык программирования для описания двигателей — число цилиндров, расположение элементов, передачи и т. д.

Исходный код открыт и доступен на гитхабе: https://github.com/ange-yaghi/engine-sim

А посмотреть за процессом создания и послушать звуки самых разных двигателей можно в 12-минутном оригинальном видео: https://youtu.be/RKT-sKtR970

#кек #cpp #opensource
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.