Я всегда был фанатом музыкальных клипов, но то, как сейчас используют AI, действительно впечатляет. Недавно пересмотрел клип Linkin Park - Lost — и это просто что-то невероятное.
🎧 Визуальные эффекты, созданные с помощью искусственного интеллекта, буквально оживляют музыку.
Меня поразило, как AI может добавлять новые слои смысла и эмоций в песню. В клипе
Lost ощущается не только ностальгия по золотой эпохе Linkin Park, но и что-то абсолютно новое и футуристичное. Это идеальный баланс прошлого и будущего, и для меня это стало чем-то вроде путешествия во времени Я думаю, технологии уже меняют восприятие искусства и мне интересно, куда это всё приведёт.
🔥 BTW
Вышел новый трек
Linkin Park, группа планирует возвращаться на сцену с новым вокалом Linkin Park - The Emptiness Machine
#music
Please open Telegram to view this post
VIEW IN TELEGRAM
👀2
Please open Telegram to view this post
VIEW IN TELEGRAM
😁2😎1
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
😁2❤1🤓1
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
😁2
🔸 Помните статью как мошенники начали активно использовать дипфейки для обмана людей, у меня сложилось мнение, что технологии, помогающие создавать подобный обман, стали настоящим "оружием массового дезинформирования". Конечно, круто, что ИИ достиг такого, но это еще раз напоминает о необходимости быть осторожным в сети.
🔸 Мошенники, создающие дипфейки, могут легко с имитировать голос вашего босса или даже любимого актера, и кто знает, что они потребуют в следующий раз? Ладно бы просто позабавится или позвонить кому нибудь от моего имени, но дело-то идет о крупных суммах и личных данных!
🔸 Ущерб от мошенничества с использованием дипфейков в мире уже исчисляется миллионами долларов. В прошлом году одна компания потеряла $35 млн из-за фальшивого видео-звонка, где подделали внешность директора.
Итог: будьте бдительны, ведь
видеть это не значит верить!#story
Please open Telegram to view this post
VIEW IN TELEGRAM
👏1
Please open Telegram to view this post
VIEW IN TELEGRAM
😁3
🧙🏻♂️ Быстрая оценка в System Design
📝 Быстрая оценка — это метод, который сочетает математику и интуицию для приблизительного расчета. Он помогает быстро понять масштаб задачи, опуская сложные детали, округляя цифры и фокусируясь на главном. С помощью этой техники можно определить, например, количество запросов на сервер или объем данных, которые нужно обработать.
📝 Пример
Представим, что мы запускаем платформу для потокового воспроизведения видео. Средний пользователь смотрит 1 час видео в день — это примерно 1 ГБ данных. При 1 миллионе активных пользователей это уже 1 миллион гигабайт ежедневно. Это количество данных нужно передавать и обрабатывать в режиме реального времени.
📝 Расчет инфраструктуры
Если платформа поддерживает 10 Гбит/с на сервер, а каждый пользователь потребляет 5 Мбит/с, один сервер сможет обслуживать около 2000 одновременных пользователей. Для 1 миллиона пользователей потребуется примерно 500 серверов.
📝 Хранение данных
Предположим, что каждое видео занимает 2 ГБ, и загружается 1000 новых видео ежедневно — это 2 ТБ в день, или 730 ТБ в год. Для этого нужно планировать резервное копирование и достаточное хранилище.
📝 Эти оценки помогают заранее определить нужные ресурсы и бюджет, выявить возможные узкие места и более эффективно спланировать проект.
📎 Быстрая оценка — важный навык для любого инженера и продукт-менеджера. Она помогает фокусироваться на главных аспектах и быть готовым к неожиданностям.
#systemdesign
💡 Channel | ✏ Chat
Представим, что мы запускаем платформу для потокового воспроизведения видео. Средний пользователь смотрит 1 час видео в день — это примерно 1 ГБ данных. При 1 миллионе активных пользователей это уже 1 миллион гигабайт ежедневно. Это количество данных нужно передавать и обрабатывать в режиме реального времени.
Если платформа поддерживает 10 Гбит/с на сервер, а каждый пользователь потребляет 5 Мбит/с, один сервер сможет обслуживать около 2000 одновременных пользователей. Для 1 миллиона пользователей потребуется примерно 500 серверов.
Предположим, что каждое видео занимает 2 ГБ, и загружается 1000 новых видео ежедневно — это 2 ТБ в день, или 730 ТБ в год. Для этого нужно планировать резервное копирование и достаточное хранилище.
📎 Быстрая оценка — важный навык для любого инженера и продукт-менеджера. Она помогает фокусироваться на главных аспектах и быть готовым к неожиданностям.
#systemdesign
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Знали ли вы, что SpaceX использует JavaScript и Chromium в своих системах? 🤯 Да-да, технологии, которые работают в вашем браузере, помогают управлять ракетами Falcon 9! Но на этом новости не заканчиваются. SpaceX только что совершила новый прорыв: они впервые запустили полностью частный космический полёт с гражданским экипажем, и это не просто прогулка!
🧑🏼🚀 Впервые частный экипаж выполнит выход в открытый космос! Полёт состоялся в рамках программы Polaris Dawn, возглавляемой миллиардером и пилотом Джаредом Айзекманом, который уже летал на орбиту в миссии Inspiration4. Falcon 9 стартовала с мыса Канаверал, и на борту — целая команда, готовая переписать космическую историю.
Четверо членов экипажа, возглавляемых предпринимателем-миллиардером Джаредом Айзекманом, стремятся достичь высоты 1400 километров (870 миль), что значительно превышает орбиту МКС на высоте 400 километров. Их цель — провести до пяти дней 🫣 на орбите Земли, проводя различные научные эксперименты, и в итоге выполнить первый в истории частный выход в открытый космос
Polaris Dawn — это первая из трёх миссий, финансируемых Айзекманом, которая направлена на расширение границ коммерческих космических исследований, повышение сотрудничества с SpaceX и развитие новых технологий, включая системы связи в космосе и диагностику здоровья космических аппаратов.
👨🏻💻 Факт для IT: многие системы управления и дисплеи SpaceX работают на основе Chromium и JavaScript. Вообщем мы дожили до того что технологии, которыми мы пользуемся каждый день, будут отправлять людей в космос.
📎 Ссылки: SpaceX, Watch live as Falcon 9 launches
#news
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Branch Prediction: Как ваш процессор уже как 35 лет предсказывает будущее.
🧙🏻♂️ Современные процессоры уже давно получили свои экстрасенсорные способности. С помощью Branch Prediction они способны заглядывать в будущее и предугадывать, какой путь выполнится в вашем коде. Это как если бы ваш компьютер знал, что вам нужно сделать следующее, еще до того, как вы это сами осознаете!
Branch Prediction — это технология в процессорах, которая помогает предсказать, какой путь выберет программа, когда встречается условный переход (например, if или switch) и в условиях неопределённости. При выполнении условных инструкций (ветвлений) процессор должен решить, какой из возможных путей будет выбран, чтобы минимизировать задержки и улучшить производительность.
🙉 Почему это важно?
Когда процессор сталкивается с условным переходом, он должен решить, какой путь выполнить. Если процессор не знает, какой путь выбрать, он может просто сидеть и ждать, что замедляет работу. Branch Prediction помогает процессору заранее выбрать путь и продолжить выполнение инструкций, что значительно ускоряет работу.
🧐 Как это работает?
Процессор использует предыдущие результаты и алгоритмы, чтобы предсказать, какой путь будет выбран. На основе предсказания процессор начинает выполнять инструкции, даже прежде чем точно узнать, правильный ли путь выбран. Если предсказание оказывается неверным, процессор отменяет неверные инструкции и переходит к правильному пути. Это вызывает небольшую задержку, но обычно минимизирует ее.
👨🏻💻 Факт для IT
90% точность прогнозирования ветвлений выдают современные процессоры.
3 ns нужно процессору для обработки неверного предсказания ветвления и да это аппаратная и программная функция.
🔎 Проверим это всё кодом
Один и тот же метод, который обрабатывает каждый элемент массива одинаково. Возьмём: массив с рандомными числами, тот же но отсортированный массив, массив с только чётными числами и массив с чередующимися числами чёт/нечёт
👨💻 Код
😮 Benchmark
Остортированный массив становится в 6 раз быстрее чем массив с неотсортированными числами👨💻
🗿 Так что в следующий раз, когда ваш ноут/пк начнёт тупить, не переживайте — он просто пытается угадать, когда вы наконец закончите свою работу и перестанете его нагружать.
#computerscience #dotnet
💡 Channel | ✏ Chat
🧙🏻♂️ Современные процессоры уже давно получили свои экстрасенсорные способности. С помощью Branch Prediction они способны заглядывать в будущее и предугадывать, какой путь выполнится в вашем коде. Это как если бы ваш компьютер знал, что вам нужно сделать следующее, еще до того, как вы это сами осознаете!
Branch Prediction — это технология в процессорах, которая помогает предсказать, какой путь выберет программа, когда встречается условный переход (например, if или switch) и в условиях неопределённости. При выполнении условных инструкций (ветвлений) процессор должен решить, какой из возможных путей будет выбран, чтобы минимизировать задержки и улучшить производительность.
Когда процессор сталкивается с условным переходом, он должен решить, какой путь выполнить. Если процессор не знает, какой путь выбрать, он может просто сидеть и ждать, что замедляет работу. Branch Prediction помогает процессору заранее выбрать путь и продолжить выполнение инструкций, что значительно ускоряет работу.
Процессор использует предыдущие результаты и алгоритмы, чтобы предсказать, какой путь будет выбран. На основе предсказания процессор начинает выполнять инструкции, даже прежде чем точно узнать, правильный ли путь выбран. Если предсказание оказывается неверным, процессор отменяет неверные инструкции и переходит к правильному пути. Это вызывает небольшую задержку, но обычно минимизирует ее.
👨🏻💻 Факт для IT
90% точность прогнозирования ветвлений выдают современные процессоры.
3 ns нужно процессору для обработки неверного предсказания ветвления и да это аппаратная и программная функция.
Один и тот же метод, который обрабатывает каждый элемент массива одинаково. Возьмём: массив с рандомными числами, тот же но отсортированный массив, массив с только чётными числами и массив с чередующимися числами чёт/нечёт
using BenchmarkDotNet.Attributes;
using BenchmarkDotNet.Columns;
using BenchmarkDotNet.Running;
BenchmarkRunner.Run<BranchPrediction>();
[HideColumns(Column.Error, Column.StdDev), MemoryDiagnoser]
public class BranchPrediction
{
private const int N = 12_09_2024;
private int[] _unorderedArray = new int[N];
private int[] _ordered = new int[N];
private int[] _allAreOdd = new int[N];
private int[] _alternating = new int[N];
[GlobalSetup]
public void Setup()
{
_unorderedArray = Enumerable.Range(0, N).Select(_ => Random.Shared.Next()).ToArray();
_ordered = _unorderedArray.OrderBy(x => x % 2).ToArray();
_allAreOdd = Enumerable.Repeat(42, N).ToArray();
_alternating = Enumerable.Range(0, N).Select(i => i % 2 == 0 ? 42 : 777).ToArray();
}
[Benchmark]
public int Ordered() => GetEvensCount(_ordered);
[Benchmark]
public int Unordered() => GetEvensCount(_unorderedArray);
[Benchmark]
public int AllAreOdd() => GetEvensCount(_allAreOdd);
[Benchmark]
public int Alternating() => GetEvensCount(_alternating);
private static int GetEvensCount(int[] arr)
{
var evens = 0;
for (var i = 0; i < arr.Length; i++)
if (arr[i] % 2 == 0)
evens++;
return evens;
}
}
Остортированный массив становится в 6 раз быстрее чем массив с неотсортированными числами
| Method | Mean |
|------------ |----------:|
| Ordered | 7.897 ms |
| Unordered | 47.648 ms |
| AllAreOdd | 7.985 ms |
| Alternating | 9.585 ms |
#computerscience #dotnet
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥1
Please open Telegram to view this post
VIEW IN TELEGRAM
😁1🤣1
Please open Telegram to view this post
VIEW IN TELEGRAM
😁1
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣1
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1😁1
B-Tree (Balanced Tree) — это основной тип индексов в PostgreSQL.
Вот почему они так
B-Tree индексы ускоряют запросы на поиск, сортировку и диапазонные запросы, уменьшая количество данных, которые нужно просмотреть.
Дерево всегда сбалансировано, поэтому глубина дерева минимальная, и доступ к данным происходит быстро независимо от размера таблицы.
Если ваши запросы часто используют операторы сравнения (>, <, =, и их комбинации), то B-Tree индекс ваш лучший друг.
Индексы автоматически обновляются при добавлении или изменении данных — не нужно беспокоиться о поддержке актуальности (autovacuum привет)
Отличное свежее видео по B-Tree в PostgreSql: YouTube
Сложность видео: 7 из 10
#sql #postgresql
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Владимир Ситников — B-tree индексы в базах данных на примере .NET Entity Framework и PostgreSQL
Подробнее о конференции DotNext: https://jrg.su/3WmFRE
— —
Доклад о том, как работают обычные™ индексы в базах данных. Доклад будет крайне полезен как тем, кто начинает работать с базами данных, так и тем, кто работал, но подзабыл. У вас бэкенд на PostgreSQL?…
— —
Доклад о том, как работают обычные™ индексы в базах данных. Доклад будет крайне полезен как тем, кто начинает работать с базами данных, так и тем, кто работал, но подзабыл. У вас бэкенд на PostgreSQL?…
🔥2👍1
Open source: Какие бывают лицензии на ПО и как они работают
📌 Однажды я делал ревизую проекта и нужно было просмотреть какие библиотеки используются у нас. Вопрос стал о лицензиях на программный продукт. Давайте разберём самые популярные Open Source лицензий на ПО.
📌 Лицензии на программное обеспечение — это как правила пользования продуктом. Они определяют, что можно делать с кодом, а что нельзя.
Свободные лицензии грубо делятся на два вида:
Copyleft и Permissive License
➡️ Permissive License
Permissive лицензии, такие как MIT, BSD и Apache дают максимальную свободу разработчикам. Любой может использовать код в любом виде, изменять его, интегрировать в свои проекты и не делиться изменениями. Главное требование — указать оригинального автора. Так же они могут распространяться под любой лицензией, но есть нюансы.
🟦 MIT License
Самая простая и популярная лицензия. Вы можете делать с кодом почти всё, что угодно — копировать, модифицировать, даже продавать, но с одним условием: указать оригинального автора. Пример: React.js
🟦 Apache License 2.0
Очень похожа на MIT, но с дополнительной защитой от патентных претензий. Если вы используете код под этой лицензией, никто не может вас засудить за использование их патентов. Пример: Apache HTTP Server.
🟦 BSD License
Похожа на MIT, но позволяет вам изменять и распространять код, не требуя открывать исходники. Вы можете делать с ним что угодно, даже внедрять в проприетарные продукты. Пример: Git
➡️ Copyleft
Концепция, такие как GPL, которая обязывает сохранять свободу программного обеспечения. Любые изменения или дополнения к коду должны быть также доступны всем. Это обеспечивает развитие программного обеспечения в рамках open-source сообщества, сохраняя его открытым и доступным для всех
🟥 GPL (General Public License)
Под этой лицензией код полностью открытый, но есть условия. Любые модификации или улучшения, которые вы сделаете, тоже должны быть открыты и распространяться под той же лицензией. Пример: Linux.
©️ Заключение
Выбор лицензии зависит от того, насколько вы хотите открытым сделать свой код и какие правила использования других людей вам важны. Разработчики часто выбирают MIT или Apache для свободы использования и распространения, но GPL тоже остаётся популярной среди сторонников Open Source.
#opensource
💡 Channel | ✏ Chat
Свободные лицензии грубо делятся на два вида:
Copyleft и Permissive License
Permissive лицензии, такие как MIT, BSD и Apache дают максимальную свободу разработчикам. Любой может использовать код в любом виде, изменять его, интегрировать в свои проекты и не делиться изменениями. Главное требование — указать оригинального автора. Так же они могут распространяться под любой лицензией, но есть нюансы.
Самая простая и популярная лицензия. Вы можете делать с кодом почти всё, что угодно — копировать, модифицировать, даже продавать, но с одним условием: указать оригинального автора. Пример: React.js
Очень похожа на MIT, но с дополнительной защитой от патентных претензий. Если вы используете код под этой лицензией, никто не может вас засудить за использование их патентов. Пример: Apache HTTP Server.
Похожа на MIT, но позволяет вам изменять и распространять код, не требуя открывать исходники. Вы можете делать с ним что угодно, даже внедрять в проприетарные продукты. Пример: Git
Концепция, такие как GPL, которая обязывает сохранять свободу программного обеспечения. Любые изменения или дополнения к коду должны быть также доступны всем. Это обеспечивает развитие программного обеспечения в рамках open-source сообщества, сохраняя его открытым и доступным для всех
Под этой лицензией код полностью открытый, но есть условия. Любые модификации или улучшения, которые вы сделаете, тоже должны быть открыты и распространяться под той же лицензией. Пример: Linux.
Выбор лицензии зависит от того, насколько вы хотите открытым сделать свой код и какие правила использования других людей вам важны. Разработчики часто выбирают MIT или Apache для свободы использования и распространения, но GPL тоже остаётся популярной среди сторонников Open Source.
#opensource
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Garbage Collector: Что это такое и помогает ли он разработчикам?
📌 По простому
📌
🙉 Зачем нужен этот ваш GC?
Это всё для упрощения управлением памяти и сделать ПО более безопасными и избежать ошибки. Он освобождает разработчиков от необходимости думать о том, когда и как освобождать объекты, что особенно важно в сложных и многопоточных приложениях. C# и другие современные языки выбирают GC для повышения продуктивности разработчиков и улучшения общей стабильности программ.
Почему GC внедряют в современных языках программирования
▶️ Автоматизация управления памятью
В C# и подобных языках программисты не занимаются ручным управлением памятью, как это нужно в C или C++. Вручную выделять и освобождать память можно, но это сложно и чревато ошибками. GC делает этот процесс автоматическим. GC отслеживает объекты, которые больше не нужны и освобождает память, предотвращая утечки памяти. Помним только новое, а не давно забытое старое 🤓
▶️ Предотвращение утечек памяти
Когда объекты больше не используются, но остаются в памяти, это называется утечкой памяти. В ручном управлении памятью разработчику нужно помнить, когда освобождать объекты. GC в C# берет это на себя, минимизируя вероятность утечек.
▶️ Циклические ссылки
Если два объекта ссылаются друг на друга, но больше не нужны программе, в ручном управлении памятью их нельзя просто так удалить. GC может найти такие циклические ссылки и освободить их. Это делает код более безопасным и предотвращает зависание ненужных объектов в памяти.
▶️ Упрощение разработки и быстрое прототипирование
GC сильно упрощает жизнь программистам, потому что они могут сосредоточиться на логике программы, а не на низкоуровневом управлении памятью.
▶️ Повышение безопасности
Языки с GC более "безопасны", не будет таких ошибок как с CrowdStrike. Т.е. не будет объектов, которые больше не существуют, но к ним продолжают обращаться или когда программа пытается дважды освободить одну и ту же область памяти, что может вызвать ошибки или сбои.
▶️ Оптимизация использования памяти
GC использует разные алгоритмы для оптимизации управления памятью. Разбитие на поколения, Перемещение или дефрагментация памяти для эффективного использования памяти
Как работает Garbage Collector
➡️ Сбор мусора. Когда программа больше не использует объект, GC идентифицирует его как "мусор". Это происходит, когда на объект больше нет ссылок, то есть он больше не доступен программе или не нужен.
➡️ Освобождение памяти: GC освобождает память, занимаемую этими объектами, возвращая её системе для дальнейшего использования.
➡️ Механизмы отслеживания. Разные реализации GC используют разные алгоритмы для отслеживания неиспользуемых объектов.
Какие плюсы
➡️ Автоматизация управления памятью. Сборка мусора делается сама.
➡️ Упрощение разработки. Меньше необходимости беспокоиться о низкоуровневых деталях управления памятью (С++ привет)
➡️ "Безопасность". Сборка мусора снижает вероятность доступа к уже освобождённой памяти.
А вот и минусы
➡️ Паузы во время выполнения программы. GC должен приостановить выполнение програмы.
➡️ Потеря контроля. Сборка мусора может начаться внезапно.
➡️ Издержки производительности. В языках с GC некоторые ресурсы тратятся на работу самого сборщика мусора.
📝 В Итоге
Помогает GC - безусловно да, GC позволяет сосредоточиться на задачах, не отвлекаясь на ручное управление памятью. Однако в высокопроизводительных или системах реальном времени может потребоваться ручная оптимизация работы с памятью, и тогда GC может быть как и минусом.
#NoAI #GC #s01e01
💡 Channel | ✏ Chat
Garbage Collector (GC) — это уборщик, который автоматически наводит порядок в вашем доме (программе), чтобы вам не приходилось самому думать о том, когда и как выбросить ненужные вещи (объекты). Garbage Collector — это механизм автоматического управления памятью в некоторых языках программирования, таких как C#, Python, Go и другие. Его основная задача — освобождать память, которая больше не используется программой, чтобы предотвратить утечки памяти и улучшить производительность. 🙉 Зачем нужен этот ваш GC?
Это всё для упрощения управлением памяти и сделать ПО более безопасными и избежать ошибки. Он освобождает разработчиков от необходимости думать о том, когда и как освобождать объекты, что особенно важно в сложных и многопоточных приложениях. C# и другие современные языки выбирают GC для повышения продуктивности разработчиков и улучшения общей стабильности программ.
Почему GC внедряют в современных языках программирования
В C# и подобных языках программисты не занимаются ручным управлением памятью, как это нужно в C или C++. Вручную выделять и освобождать память можно, но это сложно и чревато ошибками. GC делает этот процесс автоматическим. GC отслеживает объекты, которые больше не нужны и освобождает память, предотвращая утечки памяти. Помним только новое, а не давно забытое старое 🤓
Когда объекты больше не используются, но остаются в памяти, это называется утечкой памяти. В ручном управлении памятью разработчику нужно помнить, когда освобождать объекты. GC в C# берет это на себя, минимизируя вероятность утечек.
Если два объекта ссылаются друг на друга, но больше не нужны программе, в ручном управлении памятью их нельзя просто так удалить. GC может найти такие циклические ссылки и освободить их. Это делает код более безопасным и предотвращает зависание ненужных объектов в памяти.
GC сильно упрощает жизнь программистам, потому что они могут сосредоточиться на логике программы, а не на низкоуровневом управлении памятью.
Языки с GC более "безопасны", не будет таких ошибок как с CrowdStrike. Т.е. не будет объектов, которые больше не существуют, но к ним продолжают обращаться или когда программа пытается дважды освободить одну и ту же область памяти, что может вызвать ошибки или сбои.
GC использует разные алгоритмы для оптимизации управления памятью. Разбитие на поколения, Перемещение или дефрагментация памяти для эффективного использования памяти
Как работает Garbage Collector
Какие плюсы
А вот и минусы
Помогает GC - безусловно да, GC позволяет сосредоточиться на задачах, не отвлекаясь на ручное управление памятью. Однако в высокопроизводительных или системах реальном времени может потребоваться ручная оптимизация работы с памятью, и тогда GC может быть как и минусом.
#NoAI #GC #s01e01
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1