Yuriy Gavrilov

Welcome to my personal place for love, peace and happiness❣️

Почему мы перешли с Dremio на Trino

В нашей постоянно развивающейся индустрии данных, выбор правильного инструмента может существенно повлиять на эффективность и гибкость работы. Мы недавно перешли с Dremio на Trino. Решение об этом шаге было принято после анализа и испытаний, и в этой статье я расскажу о причинах этого перехода, особенностях каждого продукта, а также о том, как это повлияет на нашу работу в рамках концепции Data Mesh.

Московский художник Даниил Кудряшов https://kudryashovdd.com/allartworks
Московский художник Даниил Кудряшов https://kudryashovdd.com/allartworks

Dremio и Trino: Основные Отличия

Dremio позиционируется как коробочный продукт, который предоставляет целый набор инструментов “из коробки”. Эта платформа позволяет пользователям выполнять аналитические запросы на больших наборах данных с использованием своего движка SQL. По своей природе Dremio старается исполнять запросы внутри себя, что зачастую приводит к необходимости выгрузки значительных объёмов данных из источника, прежде чем приступать к анализу. Это, в свою очередь, увеличивает время ожидания для пользователей и потребляет дополнительные ресурсы.

Dremio имеет свои плюсы и минусы:

Плюсы:

  • Лёгкость в использовании и интеграции.
  • Поддержка современных форматов данных.
  • Концепция data-as-code.

Минусы:

  • Высокая стоимость лицензий и серверов.
  • Особеннсоти исполнения запросов, которые нагружают систему источник.
  • Ограниченные настройки и закрытый код.
  • Ограниченная возможность кастомизации.

И конечно отсутствие обновлений, поддержки, что фактически является тупиком в развитии для нас.

Trino

Trino, ранее известный как PrestoSQL, представляет собой SQL-движок, который отлично подходит для платформ данных, требующих высокой степени кастомизации. В отличие от Dremio, Trino выполняет запросы ровно так, как это указано в SQL, что позволяет избежать излишних выгрузок данных и оптимизировать процесс обработки запросов. Благодаря своей открытой архитектуре, Trino предоставляет гибкость в настройках и кастомизации, что является ключевым преимуществом. Trino хорошо интегрируется с такими технологиями как Iceberg и Data Build Tool, kafka и многими другими, что обеспечивает более эффективное управление данными и их структурой. Позволяет нам выполнять запросы к данным в топиках Kafka, что особенно востребовано в текущий момент, а также легко добавлять новые типы коннекторов, Dremio так не умеет.

Плюсы:

  • Открытая архитектура и возможность кастомизации.
  • Высокая производительность и эффективность.
  • Поддержка современных форматов данных и подключений.
  • Развитое сообщество и документация.

Компания CedrusData – полностью российская компания и занимается ускорением базового Trino, Cedrus это фактически Trino на стероидах. Компания занимается развитием как новой функциональности, так и разрешением ошибок и просто поддержкой.

Минусы:

  • Необходимость дополнительных настроек и конфигураций.
  • Потребность в более глубоком техническом знании.

Причины Перехода

Гибкость и Настраиваемость

Одной из основных причин перехода с Dremio на Trino является гибкость и настраиваемость последнего. Trino позволяет легко адаптировать платформу данных под любые потребности, что особенно важно в рамках нашей концепции Data Mesh. Это значительно упрощает управление данными и позволяет экономить ресурсы, разделяя хранение данных от вычислительных мощностей.

Открытая Архитектура и Сообщество

Trino имеет открытую архитектуру, что позволяет любому внести изменения или предложить улучшения. Это делает платформу более гибкой и быстро адаптирующейся к изменяющимся требованиям. Большое сообщество пользователей и разработчиков обеспечивает постоянное обновление и улучшение функциональности, что гарантирует высокую производительность и актуальность продукта.

Экономия Ресурсов

Trino требует меньших затрат на исполнение запросов, что уменьшает нагрузку на инфраструктуру и сокращает расходы. Пользователи могут обращаться с данными на любом хранении, будь то Oracle или файлы CSV, благодаря единому SQL-интерфейсу.

Безопасность и Управление

Хотя Dremio предлагал платные функции безопасности, бесплатная версия не могла удовлетворить наши требования. Trino, напротив, предлагает широкий спектр настроек безопасности, а также возможность интеграции с различными инструментами управления данными.

Поддержка и Документация

Trino имеет обширную документацию и активное сообщество, что обеспечивает поддержку и обмен опытом между пользователями. В отличие от Dremio, где настройки часто являются закрытыми и требуют вмешательства поддержки, которой у нас уже нет, Trino предоставляет полный доступ к настройкам и их описаниям.

Влияние на Платформу

Переход на Trino позволит нам лучше следовать Data Mesh и основным принципым, а именно:

  • Видимость: данные станут более доступными и легко находимыми для пользователей.
  • Доступность: пользователи смогут быстро извлекать данные из различных систем и форматов.
  • Понимание: наличие описаний данных поможет лучше понимать контекст и содержание.
  • Связность: пользователи смогут легко использовать дополнительные атрибуты благодаря связям в данных.
  • Доверие: уверенность в качестве данных будет повышена.
  • Совместимость: общие представления о данных у производителей и потребителей.
  • Безопасность: данные будут защищены от несанкционированного доступа и манипуляций.

Что такое Data Mesh?

Заключение

Переход с Dremio на Trino – это важный шаг на пути к улучшению нашей платформы данных. Мы уверены, что гибкость, высокая производительность и открытая архитектура Trino помогут нам достигнуть новых высот в управлении и анализе данных. Следите за новостями и присоединяйтесь к обсуждению в нашем чате поддержки!

Всем хороших выходных! Напишите в комментариях, как вам запомнился Dremio, и что вы пожелаете новому ядру на базе Trino.

Калининград, выезд БИТа
18 d   AI

Kolors — диффузионная модель для генерации изображений

⚡️ Встречайте Kolors — диффузионная модель для генерации изображений с упором на фотореализм

Kolors — это большая диффузионная модель, опубликованная вчера командой Kuaishou Kolors.

Kolors была обучена на миллиардах пар “текст-изображение” и показывает отличные результаты в генерации сложных фотореалистичных изображений.

По результатам оценки 50 независимых экспертов, модель Kolors генерирует более реалистчиные и красивые изображения, чем Midjourney-v6, Stable Diffusion 3, DALL-E 3 и другие модели

🟡 Страничка Kolors https://kwai-kolors.github.io/post/post-2/
🟡 Попробовать https://huggingface.co/spaces/gokaygokay/Kolors
🖥 GitHub https://github.com/Kwai-Kolors/Kolors

@ai_machinelearning_big_data

19 d   AI   art

Представляем обновленную версию дистрибутива OpenScaler 24.03 LTS

Важные новости! 😎

На днях мы поделились информацией о том, что:
Специалисты нашего сообщества активно работают над новой версией OpenScaler на базе openEuler 24.03 LTS. Скоро анонсируем. Следите за новостями!

Обещание выполнено!

Представляем обновленную версию дистрибутива OpenScaler 24.03 LTS!

Ключевые нововведения:
🌟 Улучшенное ядро Linux 6
🌟 Интеллектуальное планирование и настройка с помощью алгоритмов ИИ
🌟 Расширенные возможности на различных платформах для повышения производительности и надежности приложений и многое другое.

📤 Установочные образы OpenScaler 24.03 LTS доступны для архитектур Arm и x86.

Подробнее о релизе дистрибутива OpenScaler 24.03 LTS читайте в нашем анонсе. https://openscaler.ru/2024/07/04/openscaler-23-03-release/

Хотите протестировать новую версию дистрибутива? OpenScaler 24.03 LTS уже доступен дня скачивания на официальном сайте сообщества в разделе “Загрузки”!
https://openscaler.ru/downloads/

Будем рады ответить на ваши вопросы. Загляните к нам на форум 😉
https://openscaler.ru/forum/

20 d   Linux

Woodpecker — мощный расширяемый движок CI/CD

🖥 Woodpecker — мощный расширяемый движок CI/CD

Woodpecker ориентирован на создание конвейеров внутри контейнеров Docker

— Woodpecker полностью open-source

— Woodpecker использует контейнеры Docker; если возможностей обычного Docker-образа не хватит, можно создать плагины для расширения возможностей

— Woodpecker позволяет легко создавать несколько рабочих процессов и они могут даже зависеть друг от друга

🖥 GitHub https://github.com/woodpecker-ci/woodpecker
🟡 Доки https://woodpecker-ci.org/docs/usage/intro

Docker

20 d   CI/CD

Lance — современный колоночный формат данных для ML

🌟 Lance — современный колоночный формат данных для ML-приложений, реализованный на Rust

— pip install pylance

Lance идеально подходит для создания поисковых систем и хранилищ данных, для масштабного обучения ML-моделей, для хранения таких данных как облака точек.
Поддерживает конвертацию из Parquet в 2 строки кода, при этом он быстрее Parquet в 100 раз.
Lance можно без проблем использовать с pandas, DuckDB, Polars, pyarrow и не только.

🖥 GitHub https://github.com/lancedb/lance
🟡 Примеры использования https://lancedb.github.io/lance/examples/examples.html

@data_analysis_ml

20 d   AI   big data

Как Binance строил 100PB сервис для обработки логов на Quickwit

Оригинал: https://quickwit.io/blog/quickwit-binance-story

Три года назад мы открыли исходный код Quickwit, распределенного поискового движка для работы с большими объемами данных. Наша цель была амбициозной: создать новый тип полнотекстового поискового движка, который был бы в десять раз более экономичным, чем Elasticsearch, значительно проще в настройке и управлении, и способным масштабироваться до петабайт данных.

Хотя мы знали потенциал Quickwit, наши тесты обычно не превышали 100 ТБ данных и 1 ГБ/с скорости индексации. У нас не было реальных наборов данных и вычислительных ресурсов для тестирования Quickwit в масштабе нескольких петабайт.

Это изменилось шесть месяцев назад, когда два инженера из Binance, ведущей криптовалютной биржи, обнаружили Quickwit и начали экспериментировать с ним. В течение нескольких месяцев они достигли того, о чем мы только мечтали: они успешно перенесли несколько кластеров Elasticsearch объемом в петабайты на Quickwit, достигнув при этом следующих результатов:

  • Масштабирование индексации до 1,6 ПБ в день.
  • Операция поискового кластера, обрабатывающего 100 ПБ логов.
  • Экономия миллионов долларов ежегодно за счет сокращения затрат на вычисления на 80% и затрат на хранение в 20 раз (при том же периоде хранения).
  • Значительное увеличение возможностей хранения данных.
  • Упрощение управления и эксплуатации кластера благодаря хорошо спроектированной многокластерной установке.

В этом блоге я расскажу вам, как Binance построила сервис логов объемом в петабайты и преодолела вызовы масштабирования Quickwit до нескольких петабайт.

Вызов Binance

Как ведущая криптовалютная биржа, Binance обрабатывает огромное количество транзакций, каждая из которых генерирует логи, важные для безопасности, соответствия и оперативных аналитических данных. Это приводит к обработке примерно 21 миллиона строк логов в секунду, что эквивалентно 18,5 ГБ/с или 1,6 ПБ в день.

Для управления таким объемом Binance ранее полагалась на 20 кластеров Elasticsearch. Около 600 модулей Vector извлекали логи из различных тем Kafka и обрабатывали их перед отправкой в Elasticsearch.

Настройка Elasticsearch в Binance

Однако эта установка не удовлетворяла требованиям Binance в нескольких критических областях:

  • Операционная сложность: Управление многочисленными кластерами Elasticsearch становилось все более сложным и трудоемким.
  • Ограниченное хранение: Binance хранила большинство логов только несколько дней. Их целью было продлить этот срок до месяцев, что требовало хранения и управления 100 ПБ логов, что было чрезвычайно дорого и сложно с их настройкой Elasticsearch.
  • Ограниченная надежность: Кластеры Elasticsearch с высокой пропускной способностью были настроены без репликации для ограничения затрат на инфраструктуру, что компрометировало долговечность и доступность.

Команда знала, что им нужно радикальное изменение, чтобы удовлетворить растущие потребности в управлении, хранении и анализе логов.

Почему Quickwit был (почти) идеальным решением

Когда инженеры Binance обнаружили Quickwit, они быстро поняли, что он предлагает несколько ключевых преимуществ по сравнению с их текущей установкой:

  • Нативная интеграция с Kafka: Позволяет инжектировать логи непосредственно из Kafka с семантикой “ровно один раз”, что дает огромные операционные преимущества.
  • Встроенные преобразования VRL (Vector Remap Language): Поскольку Quickwit поддерживает VRL, нет необходимости в сотнях модулей Vector для обработки преобразований логов.
  • Объектное хранилище в качестве основного хранилища: Все проиндексированные данные остаются в объектном хранилище, устраняя необходимость в предоставлении и управлении хранилищем на стороне кластера.
  • Лучшее сжатие данных: Quickwit обычно достигает в 2 раза лучшего сжатия, чем Elasticsearch, что еще больше сокращает занимаемое место индексами.

Однако ни один пользователь не масштабировал Quickwit до нескольких петабайт, и любой инженер знает, что масштабирование системы в 10 или 100 раз может выявить неожиданные проблемы. Это не остановило их, и они были готовы принять вызов!

Поиск в 100 ПБ, вызов принят

Масштабирование индексации на 1,6 ПБ в день

Binance быстро масштабировала свою индексацию благодаря источнику данных Kafka. Через месяц после начала пилотного проекта Quickwit они индексировали на нескольких ГБ/с.

Этот быстрый прогресс был в значительной степени обусловлен тем, как Quickwit работает с Kafka: Quickwit использует группы потребителей Kafka для распределения нагрузки между несколькими модулями. Каждый модуль индексирует подмножество партиций Kafka и обновляет метахранилище с последними смещениями, обеспечивая семантику “ровно один раз”. Эта установка делает индексаторы Quickwit безсостоятельными: вы можете полностью разобрать свой кластер и перезапустить его, и индексаторы возобновят работу с того места, где они остановились, как будто ничего не произошло.

Однако масштаб Binance выявил две основные проблемы:

  • Проблемы со стабильностью кластера: Несколько месяцев назад протокол переговоров Quickwit (называемый Chitchat) с трудом справлялся с сотнями модулей: некоторые индексаторы покидали кластер и возвращались, делая пропускную способность индексации нестабильной.
  • Неоднородное распределение нагрузки: Binance использует несколько индексов Quickwit для своих логов, с различной пропускной способностью индексации. Некоторые имеют высокую пропускную способность в несколько ГБ/с, другие – всего несколько МБ/с. Алгоритм размещения Quickwit не распределяет нагрузку равномерно. Это известная проблема, и мы будем работать над этим позже в этом году.

Чтобы обойти эти ограничения, Binance развернула отдельные кластеры индексации для каждой темы с высокой пропускной способностью, сохраняя один кластер для меньших тем. Изоляция каждого кластера с высокой пропускной способностью не накладывала операционного бремени благодаря безсостоятельным индексаторам. Кроме того, все модули Vector были удалены, так как Binance использовала преобразование Vector непосредственно в Quickwit.

Настройка Quickwit в Binance

После нескольких месяцев миграции и оптимизации Binance наконец достигла пропускной способности индексации в 1,6 ПБ с 10 кластерами индексации Quickwit, 700 модулями, запрашивающими около 4000 vCPU и 6 ТБ памяти, что в среднем составляет 6,6 МБ/с на vCPU. На заданной теме Kafka с высокой пропускной способностью этот показатель увеличивается до 11 МБ/с на vCPU.

Следующий вызов: масштабирование поиска!

Один поисковый кластер для 100 ПБ логов

С Quickwit, способным эффективно индексировать 1,6 ПБ ежедневно, вызов сместился к поиску по петабайтам логов. С 10 кластерами Binance обычно потребовалось бы развернуть модули поиска для каждого кластера, что подрывало одно из преимуществ Quickwit: объединение ресурсов поиска для доступа к общему объектному хранилищу всех индексов.

Чтобы избежать этой ловушки, инженеры Binance придумали умный обходной путь: они создали унифицированное метахранилище, реплицируя все метаданные из метахранилища каждого кластера индексации в одну базу данных PostgreSQL. Это унифицированное метахранилище позволяет развернуть один единственный централизованный поисковый кластер, способный искать по всем индексам!

Многокластерная установка Quickwit

На данный момент Binance управляет разумно размером кластером из 30 модулей поиска, каждый из которых запрашивает 40 vCPU и 100 ГБ памяти. Чтобы дать вам представление, вам нужно всего 5 поисковиков (8 vCPU, 6 ГБ запросов памяти) для нахождения иголки в стоге сена в 400 ТБ логов. Binance выполняет такие запросы на петабайтах, а также запросы агрегации, отсюда и более высокие запросы ресурсов.

Заключение

В целом, миграция Binance на Quickwit была огромным успехом и принесла несколько существенных преимуществ:

  • Сокращение вычислительных ресурсов на 80% по сравнению с Elasticsearch.
  • Затраты на хранение сократились в 20 раз при том же периоде хранения.
  • Экономически жизнеспособное решение для управления большими объемами логов, как с точки зрения затрат на инфраструктуру, так и эксплуатации.
  • Минимальная настройка конфигурации, эффективно работающая после определения правильного количества модулей и ресурсов.
  • Увеличение хранения логов до одного или нескольких месяцев в зависимости от типа лога, улучшение возможностей внутренней диагностики.

В заключение, миграция Binance с Elasticsearch на Quickwit была захватывающим шестимесячным опытом между инженерами Binance и Quickwit, и мы очень гордимся этим сотрудничеством. Мы уже запланировали улучшения в сжатии данных, поддержке многокластерных систем и лучшем распределении нагрузки с источниками данных Kafka.

Большое спасибо инженерам Binance за их работу и идеи в ходе этой миграции <3

22 d   big data   Quickwit

Суперкомпьютер на кристалле – 6000 ядер RISC-V

Как насчет 6000 процессоров на одной карте pcie?

Суперкомпьютер на кристалле вступает в строй: одна PCIe-карта содержит более 6000 ядер RISC-V с возможностью масштабирования до более чем 360 000 ядер, но стартап до сих пор не раскрывает информацию о ценах.

InspireSemi объявила об успешном завершении дизайна и передаче в производство компании TSMC ускорителя вычислений Thunderbird I. Этот высокодифференцированный “суперкомпьютерный кластер на кристалле” оснащен 1536 пользовательскими 64-битными ядрами RISC-V CPU, специально разработанными для высокоуровневых научных вычислений и обработки сложных данных.

Thunderbird I предназначен для широкого спектра вычислительно-емких приложений, от искусственного интеллекта и машинного обучения до графовой аналитики. Используя открытый стандарт RISC-V CPU ISA, он позволяет упростить разработку и интеграцию в существующие технологические фреймворки, предоставляя доступ к надежной экосистеме программного обеспечения, библиотек и инструментов.

Планируется выпуск PCIe-карты. Архитектура чипа включает высокоскоростную mesh-сеть, которая обеспечивает значительную пропускную способность и минимальную задержку при коммуникации между ядрами, что важно для приложений, полагающихся на синхронизированные операции в нескольких потоках. Эта эффективная сетевая интеграция управляет взаимодействиями внутри массива ядер чипа и систем памяти, обеспечивая оптимальную производительность без распространенных узких мест. Предстоящий выпуск продукта будет включать серверную PCIe-карту, на которой размещены четыре чипа Thunderbird, предоставляя более 6000 взаимосвязанных 64-битных ядер CPU. Эта конфигурация оснащена для обработки двойной точности, необходимой для многих высокопроизводительных вычислительных приложений в таких областях, как климатология, медицинские исследования и сложные симуляции. Рон Ван Делл, генеральный директор InspireSemi, сказал: «Мы гордимся достижением нашей инженерной и операционной команды в завершении дизайна Thunderbird I и отправке его нашим партнерам по производству мирового класса, TSMC, ASE и imec, для производства. Мы ожидаем начать поставки клиентам в четвертом квартале».

Однако пока нет информации о цене. InspireSemi также подчеркивает энергоэффективность Thunderbird I, что перенято из его первоначальной разработки для энергочувствительных блокчейн-приложений. Компания заявляет, что этот подход предлагает более экологичную альтернативу традиционным GPU для дата-центров.

28 d   SoC

Традиции и Современность 2024

Сегодня тут ☝️

Фестиваль искусств “Традиции и Современность” который пройдет в Гостином дворе с 21 по 23 июля и объединит 10 направлений в одном культурном выставочном пространстве:

  • живопись,
  • графика,
  • скульптура,
  • фотография,
  • инсталляция,
  • прикладное искусство,
  • маска,
  • кукла,
  • цифровое искусство
  • музейное дело

Особенностью фестиваля этого года будет участие делегаций из стран БРИКС. Как ожидается, в Москву приедут художники и галеристы из более чем 30 стран мира, в том числе Китая, ОАЭ, Ирана, Индии, Эквадора, Чили, Турции, ЮАР, Кипра.

Студия Sxema на фестивале представит работы талантливых цифровых художников из нашего комьюнити, которые ломают границы привычного и создают уникальные произведения искусства с помощью новейших технологий.

Помимо этого, на нашем стенде вы также сможете приобрести так же физические работы таких художников как: Akopto, Damn True, Heavensssblade и Динары Гараевой.

Следите за анонсами в социальных сетях фестиваля и увидимся на выставке!

1 mo   art

Стиральная машина как символ прогресса – Hans Rosling

Статья: https://ideanomics.ru/lectures/14612

---

Стиральная машина как символ прогресса

Мне было всего 4 года, когда я увидел, как моя мама впервые в жизни загружает стиральную машину. Для нее это был великий день. Они с отцом копили деньги годами, чтобы позволить себе такую машину. Мы даже пригласили бабушку посмотреть на машину в первый день стирки. И бабушка была в еще большем восторге. Всю свою жизнь она грела воду на костре и стирала вручную за семью детьми. А теперь ей предстояло увидеть, как электричество справится с этой работой.

Моя мама аккуратно открыла дверцу и загрузила грязные вещи в машину. Затем, когда она закрыла дверь, бабушка сказала: «Нет, нет, нет, нет. Дай мне, дай мне нажать на кнопку». И бабушка нажала на кнопку, и сказала: «Ну и ну! Я хочу это видеть. Дай мне стул. Дай мне стул. Я хочу на это посмотреть». И она сидела перед машиной и наблюдала за ней, пока та не остановилась. Она была загипнотизирована. Для моей бабушки стиральная машинка была чудом.

Сегодня в Швеции и других богатых странах люди пользуются множеством разных машин. Посмотрите: дома забиты техникой. Я даже не знаю, как это все называется. Более того, отправляясь в путешествие, люди используют летающие машины, которые доставляют их в самые дальние точки Земли. И тем не менее, в мире так много людей, которые до сих пор греют воду и готовят пищу на огне. Иногда им даже не хватает еды, и они живут за чертой бедности. 2 миллиарда людей живут меньше, чем на $2 в день. А богатейшие люди вот здесь — миллиард человек — они живут выше того, что я называю “авиалинией”, потому что они тратят больше $80 в день на потребление.

Но это только один, два, три миллиарда человек, а в мире их, очевидно, семь миллиардов, то есть должны быть еще один, два, три, четыре миллиарда, живущие между чертой бедности и авиалинией. У них есть электричество, но у многих ли из них есть стиральные машины? Я тщательно исследовал рыночные данные и обнаружил, что, на самом деле, стиральная машина проникла ниже авиалинии, и сегодня еще одна есть у миллиарда людей, живущих выше стиральной линии. И они потребляют больше $40 в день. У двух миллиардов есть доступ к стиральным машинам.

А оставшиеся 5 миллиардов, как стирают они? Или, если точнее, как стирают большинство женщин в мире? Потому что стирать женщинам по-прежнему тяжело. Они стирают руками. Это тяжелый, отнимающий много времени труд, которым они обязаны заниматься часами каждую неделю. А иногда, чтобы постирать дома, им приходится таскать воду издалека. Или они должны относить грязную одежду далеко к реке. И они хотят стиральную машину. Они не хотят тратить столько времени своей жизни на этот тяжелый труд с такой относительно низкой продуктивностью. И желание их ничем не отличается от желания, которое было у моей бабушки. Посмотрите, два поколения назад в Швеции воду брали из реки, нагревали на костре и так стирали. Наши современницы точно так же хотят иметь стиральную машину.

Но мои заботящиеся об экологии студенты говорят: «Нет, не у каждого человека в мире может быть автомобиль и стиральная машина». Как мы можем сказать этой женщине, что у нее не будет стиральной машины? И затем я спрашиваю студентов, последние два года я все время задаю им вопрос: «Кто из вас не ездит на машине?» И несколько студентов гордо поднимают руки и говорят: «Я не пользуюсь автомобилем». А затем я задаю действительно сложный вопрос: «А многие ли из вас вручную стирают свои джинсы и простыни?» И ни одна рука не поднялась. Даже фанаты экологического движения используют стиральные машины.

Как же получилось, что все пользуются стиральной машиной и верят, что так будет всегда? Что в этом особенного? Я должен был сделать анализ используемой в мире энергии. Вот он. Посмотрите сюда, вы увидите здесь 7 миллиардов человек: «люди авиалинии», «стиральные люди», «люди лампочек» и «люди огня». Одно такое деление — энергетическая единица ископаемого топлива — нефти, угля или газа. В них заключена большая часть электричества и энергии в мире. И всего мир использует 12 единиц, миллиард богатейших использует 6 из них. Половина энергии используется седьмой частью населения Земли. И это те, у кого есть стиральные машины, но дом не напичкан другой техникой, они используют две единицы. Эта группа использует три единицы энергии, по одной на миллион человек. У них тоже есть электричество. И там в конце они не используют даже одной единицы. Получается всего 12.

Но главный предмет беспокойства озабоченных экологическими проблемами студентов — и они правы — это будущее. Куда мы идем? Если просто продлить существующие тенденции, безо всякого реального анализа, до 2050 года, мы увидим два фактора, увеличивающие расход энергии. Во-первых, рост населения. Во-вторых, экономический рост. Рост населения будет происходить среди беднейших людей, потому что у них высокая детская смертность и рождаемость. Из-за этого прибавится еще 2 миллиарда, но это не изменит значительно уровень потребляемой энергии.

А случится вот что — экономический рост. Лучшие из развивающихся экономик — я называю их Новым Востоком — перепрыгнут через воздушную черту. «Оооп!» скажут они. И они начнут потреблять столько же, сколько Старый Запад потребляет сейчас. И эти люди хотят стиральную машину. Я говорил вам. Они придут туда. И они удвоят потребление энергии. Мы надеемся, что электричество станет доступно беднякам. И у них в семьях будет по двое детей, при этом рост населения не прекратится. Но общее потребление энергии увеличится до 22 единиц. И из этих 22 единиц большую часть по-прежнему используют богатейшие люди. Что же нужно сделать? Ведь риск, высокая вероятность изменения климата, реален. Он на самом деле есть. Конечно, они должны быть более энергоэффективными. Они должны каким-то образом изменить поведение. Они также должны начать производить «зеленую энергию», гораздо больше «зеленой энергии». Но до тех пор, пока они тратят столько энергии на человека, им не стоит давать советы остальным, что делать и чего не делать. Здесь мы повсюду можем получить «зеленую энергию».

Вот что, мы надеемся, произойдет. Предстоит реальное испытание в будущем. Но я могу заверить вас, что та женщина в фавеле в Рио хочет стиральную машину. Она очень довольна своим министром энергетики, которая предоставила всем доступ к электричеству — настолько довольна, что она даже проголосовала за нее. И она стала Дилмой Руссеф, избранным президентом одного из самых больших демократических государств в мире — пройдя путь от министра энергетики до президента. Если вы живете при демократии, люди проголосуют за стиральные машины. Они любят их.

Что в них такого волшебного? Моя мама объяснила магию этой машины в самый первый день. Она сказала: «Теперь, Ханс, мы загрузили стирку в машину; машина сделает всю работу. А мы пойдем в библиотеку». Вот в чем волшебство: вы загружаете машину, и что вы получаете из машины? Вы получаете из машины книги, детские книги. И у мамы появилось время читать мне вслух. Ей это нравилось. Я получил начальные знания. Моя карьера профессора началась тогда, когда у моей мамы появилось время читать мне вслух. Она брала книги и для себя. Она сумела выучить английский и выучить его как иностранный язык. И она прочитала множество романов, здесь так много разных романов. И мы очень, очень любим эту машину.

И что мы говорили, мы с моей мамой: «Спасибо тебе, индустриализация. Спасибо, сталелитейный завод. Спасибо, электростанция. И спасибо, заводы по химической переработке, которые подарили нам время читать книги».

Об авторе

Ханс Рослинг (1948-2017) был шведским врачом, академиком и статистиком. Он был профессором международного здравоохранения в Институте Каролинска в Швеции и соучредителем фонда Gapminder. Рослинг получил мировую известность благодаря своим презентациям, которые использовали данные и статистику для объяснения глобальных изменений в здоровье, демографии и экономике. Его книга “Factfulness: Ten Reasons We’re Wrong About the World – and Why Things Are Better Than You Think” (в соавторстве с Анной Рослинг Ронлунд и Ола Рослинг) стала бестселлером и получила высокую оценку за оптимистичный взгляд на мировой прогресс.

--- Статью подготовил ГПТ :)

источник: https://ideanomics.ru/lectures/14612

1 mo   Economic

Big Finance Sleeps

Компания Bitwise, управляющая криптовалютными фондами, предлагает всем желающим создать NFT на основе рекламного ролика Ethereum-ETF. В ролике, который будет транслироваться по американскому телевидению с 20 июня, подчёркиваются преимущества сервисов Ethereum по сравнению с традиционными финансовыми услугами. Суть ролика заключается в следующем: «В отличие от крупных финансовых компаний, Ethereum не закрывается в 16:00».

В честь выхода рекламы сотрудники Bitwise создали NFT под названием Big Finance Sleeps («Крупные финансовые компании спят») на основе видеоролика об Ethereum. Эти NFT можно выпускать в сети второго уровня блокчейна ETH Zora Network через портал Zora. Пользователи уже создали 1455 токенов, заплатив за это 1,28 ETH (примерно $4570), то есть стоимость создания одного токена составляет около $3,14. Половина вырученных средств будет переведена коллективу Protocol Guild, поддерживающему разработчиков Ethereum, а другая половина — актёрам, участвовавшим в рекламе.

Bitwise удалось привлечь $2,5 млн перед выпуском Ethereum-ETF, одобренного Комиссией по ценным бумагам и биржам США 23 мая. Однако листинг этого дериватива на фондовой бирже пока не одобрен, поэтому его долями ещё не торгуют.

Три основные различия криптовалют и традиционных финансов:

  1. Время работы: Криптовалюты, такие как Ethereum, работают круглосуточно, в то время как традиционные финансовые институты имеют ограниченные часы работы.
  2. Децентрализация: Криптовалюты часто не имеют центрального управления и основаны на блокчейн-технологии, тогда как традиционные финансы контролируются централизованными учреждениями.
  1. Создание активов: Создание криптовалютных активов (например, NFT) может быть децентрализованным и происходить в любых условиях, тогда как выпуск традиционных финансовых инструментов регулируется и контролируется официальными органами.

смотреть можно тут

1 mo   NFT

Hi, I’m DeepSeek Coder. Feel free to ask me anything about coding.

Какая то Мега крутая китайская Great модель https://chat.deepseek.com тут можно попросить код написать бесплатно. https://github.com/deepseek-ai/DeepSeek-Coder-V2

———

Привет! Создание такого сайта на Python с использованием Flask и SSL включает несколько шагов. Вот пример кода, который реализует основные требования:

1. Установите Flask и Flask-SSLify, если они еще не установлены:
```bash
pip install Flask Flask-SSLify
```

2. Создайте файл `app.py` с следующим содержимым:

```python
from flask import Flask, request, redirect, url_for, render_template_string, session
from flask_sslify import SSLify
import os

app = Flask(__name__)
sslify = SSLify(app)

# Настройка секретного ключа для сессии
app.secret_key = os.urandom(24)

# Пароль для авторизации
PASSWORD = os.getenv('FLASK_PASSWORD')

# Путь к SSL сертификатам
SSL_CERT = os.getenv('SSL_CERT')
SSL_KEY = os.getenv('SSL_KEY')

# Список сохраненных сообщений
messages = []

@app.route('/')
def index():
    if 'logged_in' not in session:
        return redirect(url_for('login'))
    return render_template_string('''
        <h1>Hello, World!</h1>
        <form method="post" action="/save">
            <input type="text" name="message" placeholder="Enter your message">
            <button type="submit">Save</button>
        </form>
        <form method="get" action="/search">
            <input type="text" name="query" placeholder="Search messages">
            <button type="submit">Search</button>
        </form>
        <ul>
            {% for message in messages %}
                <li>{{ message }}</li>
            {% endfor %}
        </ul>
    ''', messages=messages)

@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        password = request.form['password']
        if password == PASSWORD:
            session['logged_in'] = True
            return redirect(url_for('index'))
        else:
            return 'Invalid password'
    return '''
        <form method="post">
            <input type="password" name="password" placeholder="Enter password">
            <button type="submit">Login</button>
        </form>
    '''

@app.route('/save', methods=['POST'])
def save():
    if 'logged_in' not in session:
        return redirect(url_for('login'))
    message = request.form['message']
    messages.append(message)
    with open('messages.txt', 'a') as f:
        f.write(message + '\n')
    return redirect(url_for('index'))

@app.route('/search')
def search():
    if 'logged_in' not in session:
        return redirect(url_for('login'))
    query = request.args.get('query')
    results = [msg for msg in messages if query in msg]
    return render_template_string('''
        <h1>Search Results</h1>
        <ul>
            {% for result in results %}
                <li>{{ result }}</li>
            {% endfor %}
        </ul>
        <a href="/">Back to Home</a>
    ''', results=results)

if __name__ == '__main__':
    app.run(ssl_context=(SSL_CERT, SSL_KEY), host='0.0.0.0', port=443)
```

3. Запустите сервер, указав пароль и пути к SSL сертификатам:
```bash
export FLASK_PASSWORD=your_password
export SSL_CERT=/path/to/cert.pem
export SSL_KEY=/path/to/key.pem
python app.py
```

Этот код создает простой сайт с авторизацией по паролю, SSL-шифрованием, страницей "Hello, World!", полем для ввода текста с сохранением на сервере в файл и поиском уже сохраненных сообщений. Убедитесь, что у вас есть SSL сертификаты и ключи, и укажите правильные пути к ним.

а вот пример от GPT4o на аналогичный Промт:

Создание веб-сайта с авторизацией по паролю, SSL-сертификатами, простым вводом текста и поиском сохраненных сообщений можно выполнить с использованием популярного фреймворка Flask. Flask — это легковесный и гибкий фреймворк для создания веб-приложений на Python.

Для реализации этого функционала нам потребуются следующие шаги:
1. Установка необходимых библиотек.
2. Создание главного файла приложения.
3. Настройка SSL.
4. Реализация авторизации.
5. Обработка текстового поля для ввода и сохранения сообщений.
6. Реализация поиска по сохраненным сообщениям.

### Шаг 1: Установка зависимостей

Убедитесь, что у вас установлен Python. Установите Flask и другие необходимые библиотеки:

```sh
pip install flask flask-wtf
```

### Шаг 2: Создание главного файла приложения

Создадим файл `app.py`, который будет содержать основной код нашего приложения:

```python
from flask import Flask, request, render_template, redirect, url_for, session
from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
from wtforms.validators import DataRequired
import ssl
import os

app = Flask(__name__)
app.secret_key = os.urandom(24)

admin_password = os.getenv('ADMIN_PASSWORD')

messages_file = 'messages.txt'


class MessageForm(FlaskForm):
    message = StringField('Message', validators=[DataRequired()])
    submit = SubmitField('Submit')


@app.route('/')
def index():
    return 'Hello World'


@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        password = request.form['password']
        if password == admin_password:
            session['logged_in'] = True
            return redirect(url_for('home'))
        else:
            return 'Invalid password', 403
    return render_template('login.html')


@app.route('/home', methods=['GET', 'POST'])
def home():
    if not session.get('logged_in'):
        return redirect(url_for('login'))

    form = MessageForm()
    messages = load_messages()

    if form.validate_on_submit():
        with open(messages_file, 'a') as f:
            f.write(form.message.data + '\n')
        return redirect(url_for('home'))

    return render_template('home.html', form=form, messages=messages)


@app.route('/search', methods=['GET'])
def search():
    if not session.get('logged_in'):
        return redirect(url_for('login'))

    query = request.args.get('query')
    messages = load_messages()
    results = [msg for msg in messages if query.lower() in msg.lower()]

    return render_template('search.html', query=query, results=results)


def load_messages():
    if not os.path.exists(messages_file):
        return []
    with open(messages_file, 'r') as f:
        return f.readlines()


if __name__ == '__main__':
    admin_password = 'your_admin_password_here'  # Change this to the desired password

    context = ssl.SSLContext(ssl.PROTOCOL_TLS)
    context.load_cert_chain(certfile='cert.pem', keyfile='key.pem')

    app.run(ssl_context=context, host='0.0.0.0', port=5000, debug=True)
```

### Шаг 3: Настройка SSL

Для SSL сертификации создадим самоподписанный сертификат (в реальной среде используйте сертификаты из официальных источников):

```sh
openssl req -newkey rsa:2048 -nodes -keyout key.pem -x509 -days 365 -out cert.pem
```

### Шаг 4: Шаблоны HTML

Создадим простые HTML-шаблоны для страниц входа, домашней страницы и поиска. Создадим папку `templates` и добавим в нее следующие файлы:

#### login.html

```html
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Login</title>
</head>
<body>
    <form method="post">
        <label for="password">Password:</label>
        <input type="password" id="password" name="password">
        <button type="submit">Login</button>
    </form>
</body>
</html>
```

#### home.html

```html
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Home</title>
</head>
<body>
    <form method="post">
        {{ form.csrf_token }}
        {{ form.message.label }} {{ form.message }}<br>
        {{ form.submit }}
    </form>

    <h2>Saved Messages</h2>
    <ul>
    {% for message in messages %}
        <li>{{ message }}</li>
    {% endfor %}
    </ul>
    
    <form action="{{ url_for('search') }}" method="get">
        <input type="text" name="query" placeholder="Search messages">
        <button type="submit">Search</button>
    </form>
</body>
</html>
```

#### search.html

```html
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Search Results</title>
</head>
<body>
    <h2>Search Results for "{{ query }}"</h2>
    <ul>
    {% for result in results %}
        <li>{{ result }}</li>
    {% endfor %}
    </ul>
    <a href="{{ url_for('home') }}">Back to Home</a>
</body>
</html>
```

### Шаг 5: Запуск сервера

Перед запуском сервера установите переменную окружения для пароля администратора:

```sh
export ADMIN_PASSWORD=your_admin_password_here
```

Запустите сервер:

```sh
python app.py
```

Теперь ваш сайт будет доступен на https://localhost:5000. Перейдите на `/login`, введите ваш пароль и получите доступ к функционалу ввода и поиска сообщений.

Это базовое приложение можно расширять и улучшать по мере необходимости.
1 mo   AI
Earlier Ctrl + ↓