Подготовка стека Prometheus/Grafana
Получение токена
Токен предоставляет доступ к метрикам всех кластеров в проекте в рамках одного пула. Для получения токена перейдите в панели управления в карточку кластера, вкладка Мониторинг. Затем нажмите на кнопку Создать токен.
После этого токен появится в списке.
Сохраните его, он пригодится в следующих этапах.
Установка Docker
В данном разделе приведен пример установки Docker для Debian 12. Если вы используете другой дистрибутив GNU/Linux, то вам следует ознакомиться с официальной документацией Docker.
Получение токена
Токен предоставляет доступ к метрикам всех кластеров в проекте в рамках одного пула. Для получения токена перейдите в панели управления в карточку кластера, вкладка Мониторинг. Затем нажмите на кнопку Создать токен.
После этого токен появится в списке.
Сохраните его, он пригодится в следующих этапах.
Установка Docker
В данном разделе приведен пример установки Docker для Debian 12. Если вы используете другой дистрибутив GNU/Linux, то вам следует ознакомиться с официальной документацией Docker.
👍2🔥2❤1👏1
Описание Docker Compose и конфигурационных файлов
Создайте директорию /app/monitoring в которой будет располагаться конфигурация Prometheus и Grafana:
Затем создайте файл docker-compose.yaml со следующим содержимым:
Конфигурация Prometheus
Создайте директорию prometheus.
Далее необходимо создать файл prometheus.yaml.
Здесь <pool> — это пул, в котором находится ваш кластер БД (например ru-3), а <monitoring_token> — это токен для доступа к метрикам, который мы получали ранее.
Запуск Prometheus/Grafana
Для запуска стека вернитесь в директорию monitoring и запустите Docker Compose
Затем перейдите в браузер и введите в адресной строке http://<Your_server_IP_or_fqdn>:3000. Здесь <Your_server_IP_or_fqdn> — это IP-адрес или хостнейм виртуального сервера.
По умолчанию имя пользователя для учетной записи — admin, пароль — admin.
Создайте директорию /app/monitoring в которой будет располагаться конфигурация Prometheus и Grafana:
Затем создайте файл docker-compose.yaml со следующим содержимым:
Конфигурация Prometheus
Создайте директорию prometheus.
Далее необходимо создать файл prometheus.yaml.
Здесь <pool> — это пул, в котором находится ваш кластер БД (например ru-3), а <monitoring_token> — это токен для доступа к метрикам, который мы получали ранее.
Запуск Prometheus/Grafana
Для запуска стека вернитесь в директорию monitoring и запустите Docker Compose
Затем перейдите в браузер и введите в адресной строке http://<Your_server_IP_or_fqdn>:3000. Здесь <Your_server_IP_or_fqdn> — это IP-адрес или хостнейм виртуального сервера.
По умолчанию имя пользователя для учетной записи — admin, пароль — admin.
👍2🔥2❤1👏1
Как работает поведенческий антифрод в платёжных системах
Если вы работаете с онлайн-платежами, вы наверняка сталкивались с ситуацией: карта валидная, деньги есть, а транзакция — отклонена. Почему? Ответ часто скрыт не в самой карте, а в поведенческом анализе клиента, который запускается ещё до нажатия кнопки «Оплатить».
Что такое поведенческий антифрод
В отличие от классического антифрода (основанного на BIN, гео, сумме и т.д.), поведенческий антифрод анализирует:
как пользователь взаимодействует с формой (мышь, клавиатура, фокус);
как долго он печатает;
какие JS-объекты доступны в его окружении;
что сообщает браузер о себе (Canvas, WebGL, Audio);
какие события происходят до и после заполнения.
Цель — определить, живой ли это человек или бот, подозрительный ли браузер, и не маскируется ли пользователь.
Если вы работаете с онлайн-платежами, вы наверняка сталкивались с ситуацией: карта валидная, деньги есть, а транзакция — отклонена. Почему? Ответ часто скрыт не в самой карте, а в поведенческом анализе клиента, который запускается ещё до нажатия кнопки «Оплатить».
Что такое поведенческий антифрод
В отличие от классического антифрода (основанного на BIN, гео, сумме и т.д.), поведенческий антифрод анализирует:
как пользователь взаимодействует с формой (мышь, клавиатура, фокус);
как долго он печатает;
какие JS-объекты доступны в его окружении;
что сообщает браузер о себе (Canvas, WebGL, Audio);
какие события происходят до и после заполнения.
Цель — определить, живой ли это человек или бот, подозрительный ли браузер, и не маскируется ли пользователь.
👍2🔥2❤1👏1
Какие сигналы собираются
В системах вроде Stripe и PayPal SDK встроен напрямую в платежную форму и загружает свои JS-модули. Они трекают:
navigator.webdriver
активность document.visibilityState
задержки между вводом полей
поведение мыши (mousemove, click, scroll)
navigator.permissions.query() (определяет эмуляцию)
fingerprint (canvas/audio/webgl)
размер окна, доступные плагины, язык, платформу
Как SDK обрабатывает поведение
Stripe, например, использует скрипты mstripecom/6 и rstripecom/b. Эти модули:
собирают fingerprint и behavioral data;
формируют «оценку сессии»;
передают результат в Stripe Radar;
Radar решает: пропустить платёж, запустить 3DS или отклонить.
Всё это происходит ещё до отправки карточных данных.
В системах вроде Stripe и PayPal SDK встроен напрямую в платежную форму и загружает свои JS-модули. Они трекают:
navigator.webdriver
активность document.visibilityState
задержки между вводом полей
поведение мыши (mousemove, click, scroll)
navigator.permissions.query() (определяет эмуляцию)
fingerprint (canvas/audio/webgl)
размер окна, доступные плагины, язык, платформу
Как SDK обрабатывает поведение
Stripe, например, использует скрипты mstripecom/6 и rstripecom/b. Эти модули:
собирают fingerprint и behavioral data;
формируют «оценку сессии»;
передают результат в Stripe Radar;
Radar решает: пропустить платёж, запустить 3DS или отклонить.
Всё это происходит ещё до отправки карточных данных.
❤2👍2🔥1👏1
Пример: "подозрительная" сессия
Headless браузер
Быстрое заполнение всех полей
Нет движения мыши
navigator.webdriver = true
Canvas fingerprint → стандартный Chrome Headless
IP — VPN или TOR
Такая сессия почти гарантированно будет отклонена или потребует 3DS-челлендж, даже если карта валидная.
Где изучают такие механизмы
Помимо официальной документации (где про поведение почти ничего нет), реальные детали обсуждаются в технических сообществах.
Один из наиболее насыщенных источников — форум BFD. Там часто публикуют HAR-логи, DevTools-дампы, поведенческие шаблоны и кейсы антифрод-срабатываний. Некоторые участники выкладывают экспериментальные конфиги undetected-браузеров и делятся тем, как SDK реагирует на разные spoof-методы.
Headless браузер
Быстрое заполнение всех полей
Нет движения мыши
navigator.webdriver = true
Canvas fingerprint → стандартный Chrome Headless
IP — VPN или TOR
Такая сессия почти гарантированно будет отклонена или потребует 3DS-челлендж, даже если карта валидная.
Где изучают такие механизмы
Помимо официальной документации (где про поведение почти ничего нет), реальные детали обсуждаются в технических сообществах.
Один из наиболее насыщенных источников — форум BFD. Там часто публикуют HAR-логи, DevTools-дампы, поведенческие шаблоны и кейсы антифрод-срабатываний. Некоторые участники выкладывают экспериментальные конфиги undetected-браузеров и делятся тем, как SDK реагирует на разные spoof-методы.
❤2👏2👍1🔥1
Apple оснастит следующий iPad Pro двумя фронтальными камерами, но расположит их не рядом
В вышедшей в прошлом году версии планшета Apple iPad Pro модуль камеры FaceTime был перемещён на более длинную сторону экрана, чтобы было удобнее использовать устройство для видеозвонков в альбомной ориентации. В этом году Apple планирует представить обновлённый iPad Pro с двумя фронтальными камерами на боковой и верхней сторонах дисплея, сообщил журналист Марк Гурман (Mark Gurman) из Bloomberg в недавней рассылке Power On.
По мнению Гурмана, изменение дизайна вызвано жалобами пользователей iPad Pro, которым стало сложнее разблокировать устройство и использовать фронтальную камеру после её переноса на длинную сторону корпуса. «Это не особо революционное, но приятное улучшение», — отметил журналист.
В вышедшей в прошлом году версии планшета Apple iPad Pro модуль камеры FaceTime был перемещён на более длинную сторону экрана, чтобы было удобнее использовать устройство для видеозвонков в альбомной ориентации. В этом году Apple планирует представить обновлённый iPad Pro с двумя фронтальными камерами на боковой и верхней сторонах дисплея, сообщил журналист Марк Гурман (Mark Gurman) из Bloomberg в недавней рассылке Power On.
По мнению Гурмана, изменение дизайна вызвано жалобами пользователей iPad Pro, которым стало сложнее разблокировать устройство и использовать фронтальную камеру после её переноса на длинную сторону корпуса. «Это не особо революционное, но приятное улучшение», — отметил журналист.
👍2🔥2❤1👏1
Asus представила настольный ПК на суперчипе Nvidia Grace Blackwell Ultra GB300
Не так давно Nvidia представила платформу Grace Blackwell Ultra GB300. Важной особенностью анонса стало то, что этот суперчип ляжет в основу не только линейки рабочих станций Nvidia DGX, но также будет доступен OEM-производителям, стремящимся вывести на рынок ПК-решения для задач искусственного интеллекта. Одним из таких партнёров Nvidia стала компания Asus, которая анонсировала ПК ExpertCenter Pro ET900N G3 на базе платформы Grace Blackwell Ultra GB300.
Платформа GB300 объединяет Arm-процессор Grace с 72 ядрами Neoverse V2 и пару чипов Blackwell Ultra, оснащённых 288 Гбайт памяти HBM3E с пропускной способностью до 8 Тбайт/с. Для соединения компонентов используется высокоскоростной интерфейс NVLink-C2C. Компьютер ET900N G3 поддерживает установку до 784 Гбайт памяти и обеспечивает производительность на уровне 20 Пфлопс.
Не так давно Nvidia представила платформу Grace Blackwell Ultra GB300. Важной особенностью анонса стало то, что этот суперчип ляжет в основу не только линейки рабочих станций Nvidia DGX, но также будет доступен OEM-производителям, стремящимся вывести на рынок ПК-решения для задач искусственного интеллекта. Одним из таких партнёров Nvidia стала компания Asus, которая анонсировала ПК ExpertCenter Pro ET900N G3 на базе платформы Grace Blackwell Ultra GB300.
Платформа GB300 объединяет Arm-процессор Grace с 72 ядрами Neoverse V2 и пару чипов Blackwell Ultra, оснащённых 288 Гбайт памяти HBM3E с пропускной способностью до 8 Тбайт/с. Для соединения компонентов используется высокоскоростной интерфейс NVLink-C2C. Компьютер ET900N G3 поддерживает установку до 784 Гбайт памяти и обеспечивает производительность на уровне 20 Пфлопс.
🔥2👏2❤1👍1
Непала заблокировал Telegram — разработчиков мессенджера это удивило
Представители популярного мессенджера Telegram опровергли заявление властей Непала о нежелании компании сотрудничать. В своём заявлении они выразили удивление решением заблокировать платформу на территории этой страны, так как, по их словам, Telegram последователь выполнял законные запросы непальских властей.
«Telegram удивлён этим заявлением. Мы последовательно отвечаем на законные запросы Непала. Telegram активно модерирует вредоносный контент на своей платформе и удаляет мошенничество и отмывание денег при каждом обнаружении», — говорится в сообщении Telegram.
Напомним, Управление по телекоммуникациям Непала (NTA) 18 июля выпустило постановление о блокировке Telegram на территории страны. По данным регулятора, такое решение было принято на фоне роста случаев мошенничества с использованием мессенджера. «Всем поставщикам телекоммуникационных услуг было направлено указание немедленно заблокировать Telegram», — говорилось в заявлении NTA
Представители популярного мессенджера Telegram опровергли заявление властей Непала о нежелании компании сотрудничать. В своём заявлении они выразили удивление решением заблокировать платформу на территории этой страны, так как, по их словам, Telegram последователь выполнял законные запросы непальских властей.
«Telegram удивлён этим заявлением. Мы последовательно отвечаем на законные запросы Непала. Telegram активно модерирует вредоносный контент на своей платформе и удаляет мошенничество и отмывание денег при каждом обнаружении», — говорится в сообщении Telegram.
Напомним, Управление по телекоммуникациям Непала (NTA) 18 июля выпустило постановление о блокировке Telegram на территории страны. По данным регулятора, такое решение было принято на фоне роста случаев мошенничества с использованием мессенджера. «Всем поставщикам телекоммуникационных услуг было направлено указание немедленно заблокировать Telegram», — говорилось в заявлении NTA
❤1👍1🔥1👏1
Создание расширения для приостановки вкладок под Manifest V3
Требования
указание времени, по истечении которого вкладка должна быть приостановлена;
опциональное исключение вкладок по условиям: закреплённые вкладки, не сохранённые поля ввода, проигрывающимся аудио, активные вкладки, не приостанавливать в оффлайн или при питании от сети, исключения по домену или URL;
временное отключение таймера для конкретной вкладки (постановка на паузу);
приостановка/возобновлении группы/окна/всех вкладок из контекстного меню (или всплывающего окна);
горячие клавиши;
сохранять позицию прокрутки и текущее время (таймстамп видео) для YouTube;
на вкладке должна сохраняться иконка оригинальной страницы, и по ней должно быть видно, что страница приостановлена (по сути сделать иконку полупрозрачной);
сохранение, импорт, экспорт всех вкладок.
Требования
указание времени, по истечении которого вкладка должна быть приостановлена;
опциональное исключение вкладок по условиям: закреплённые вкладки, не сохранённые поля ввода, проигрывающимся аудио, активные вкладки, не приостанавливать в оффлайн или при питании от сети, исключения по домену или URL;
временное отключение таймера для конкретной вкладки (постановка на паузу);
приостановка/возобновлении группы/окна/всех вкладок из контекстного меню (или всплывающего окна);
горячие клавиши;
сохранять позицию прокрутки и текущее время (таймстамп видео) для YouTube;
на вкладке должна сохраняться иконка оригинальной страницы, и по ней должно быть видно, что страница приостановлена (по сути сделать иконку полупрозрачной);
сохранение, импорт, экспорт всех вкладок.
🔥2👏2❤1👍1
Полноценная версия
Минимальная версия оказалось вполне работоспособной и дальше стал реализовывать оставшиеся требования.
Проверка оффлайн режима элементарта:
const online = navigatoronLine;.
Логично предположить, что и проверка работы от сети будет аналогичной:
const power_on = (await navigator.getBattery()).charging;,
но не тут то было, в service worker'e метод navigator.getBattery() недоступен.
Поэтому есть специально спроектированный обходной путь:
в манифесте добавить разрешение offscreen в список обязательных
создать страницу offscreen.html
создать скрипт offscreen.js для получения статуса работы от сети
запросить доступ к offscreen.html
и теперь получаю статус питания от сети или аккумулятора
К этому времени начал раздражать огромный switch в коде, чтобы обработать все 27 вариантов MESSAGE. И после недолгих размышлений удалось переделать switch в отдельный класс с гарантией, что на каждый вариант будет свой метод:
Минимальная версия оказалось вполне работоспособной и дальше стал реализовывать оставшиеся требования.
Проверка оффлайн режима элементарта:
const online = navigatoronLine;.
Логично предположить, что и проверка работы от сети будет аналогичной:
const power_on = (await navigator.getBattery()).charging;,
но не тут то было, в service worker'e метод navigator.getBattery() недоступен.
Поэтому есть специально спроектированный обходной путь:
в манифесте добавить разрешение offscreen в список обязательных
создать страницу offscreen.html
создать скрипт offscreen.js для получения статуса работы от сети
запросить доступ к offscreen.html
и теперь получаю статус питания от сети или аккумулятора
К этому времени начал раздражать огромный switch в коде, чтобы обработать все 27 вариантов MESSAGE. И после недолгих размышлений удалось переделать switch в отдельный класс с гарантией, что на каждый вариант будет свой метод:
👍2🔥2❤1👏1
Получение данных страницы: позиция прокрутки, время видео на YouTube, проверка несохраненных форм
Для получения данных страница используется метод chrome.scripting.executeScript(), который выполняет переданную ему функцию в контексте страницы.
Но тут опять не обошлось без проблем:
в коде инжектируемой функции очень легко пропустить использование внешней функции, которая не будет захвачена, что приведет к ошибке;
отладка усложнена: никаких точек останова в DevTools, только через debugger; в коде;
вызов функции бросает exception на вкладках с ошибками браузера (connection error и подобные), о чём в документации опять же ни слова, в итоге обернул вызов executeScript() в блок try/catch. И надёжного способа отличить вкладку с ошибкой нет, chrome.webNavigation.onErrorOccurred не расскажет про ошибки до установки расширения.
Для сохранения таймстампа добавляю метку времени в ссылку на оригинальную страницу.
С позицией прокрутки уже сложнее, при возобновлении страницы сохраняю позицию во временном хранилище.
Для получения данных страница используется метод chrome.scripting.executeScript(), который выполняет переданную ему функцию в контексте страницы.
Но тут опять не обошлось без проблем:
в коде инжектируемой функции очень легко пропустить использование внешней функции, которая не будет захвачена, что приведет к ошибке;
отладка усложнена: никаких точек останова в DevTools, только через debugger; в коде;
вызов функции бросает exception на вкладках с ошибками браузера (connection error и подобные), о чём в документации опять же ни слова, в итоге обернул вызов executeScript() в блок try/catch. И надёжного способа отличить вкладку с ошибкой нет, chrome.webNavigation.onErrorOccurred не расскажет про ошибки до установки расширения.
Для сохранения таймстампа добавляю метку времени в ссылку на оригинальную страницу.
С позицией прокрутки уже сложнее, при возобновлении страницы сохраняю позицию во временном хранилище.
🔥3❤1👍1👏1
Базовый Python для аналитика данных: подборка для самостоятельного обучения
Курс «Python для начинающих с нуля», Code Basics
В рамках курса вы разберётесь в базовом синтаксисе Python — это фундаментальный навык, который позволит понимать чужой код и писать собственные программы. После окончания сможете создавать простые скрипты, например калькулятор.
Курс подразумевает много практики, при этом устанавливать ничего не нужно — все задания выполняются прямо в браузере. Встроенный редактор кода, консоль и автоматические тесты делают обучение комфортным. Если что-то не получается, можно посмотреть решение учителя. Демо-урок доступен без регистрации.
Курс «Python для начинающих с нуля», Code Basics
В рамках курса вы разберётесь в базовом синтаксисе Python — это фундаментальный навык, который позволит понимать чужой код и писать собственные программы. После окончания сможете создавать простые скрипты, например калькулятор.
Курс подразумевает много практики, при этом устанавливать ничего не нужно — все задания выполняются прямо в браузере. Встроенный редактор кода, консоль и автоматические тесты делают обучение комфортным. Если что-то не получается, можно посмотреть решение учителя. Демо-урок доступен без регистрации.
❤2👏2👍1🔥1
Курс «Основы анализа данных и Python», Яндекс Практикум
Короткий курс для будущих аналитиков данных — не просто основы Python, но и основы профессии. Вы познакомитесь с базовыми понятиями и поймёте, чем занимаются аналитики данных и специалисты по Data Science. Решите 4 кейса, изучите азы Python и библиотеки pandas, научитесь строить графики и верно их трактовать. Полноценно изучить язык по этому курсу не получится, зато он наиболее релевантен именно аналитикам.
Если втянетесь, логичным продолжением станет наш курс «Python для анализа данных». У него есть бесплатная часть, в которой вы сможете узнать чуть больше о Python, попрактиковаться и познакомиться с программой обучения.
Короткий курс для будущих аналитиков данных — не просто основы Python, но и основы профессии. Вы познакомитесь с базовыми понятиями и поймёте, чем занимаются аналитики данных и специалисты по Data Science. Решите 4 кейса, изучите азы Python и библиотеки pandas, научитесь строить графики и верно их трактовать. Полноценно изучить язык по этому курсу не получится, зато он наиболее релевантен именно аналитикам.
Если втянетесь, логичным продолжением станет наш курс «Python для анализа данных». У него есть бесплатная часть, в которой вы сможете узнать чуть больше о Python, попрактиковаться и познакомиться с программой обучения.
❤2🔥2👍1👏1
Курс для начинающих «Поколение Python», Stepik
Курс об основных типах данных, конструкциях и принципах структурного программирования языка Python. Содержит теорию в формате текстовых конспектов и более 500 задач с автоматизированной проверкой. В конце каждого модуля есть дополнительные материалы для самостоятельного изучения: литература, ссылки на полезные статьи и документацию языка Python, ссылки на исходный код и многое другое.
Курс «Руководство по языку программирования Python», Metanit
Подробное руководство для начинающих и тех, кто хочет систематизировать знания. Курс начинается с установки Python и настройки среды разработки, после чего пошагово вводит в основы языка. Затем курс переходит к более продвинутым темам. Материал подаётся с примерами кода и пояснениями, что делает его удобным для самостоятельного изучения и практики.
Курс об основных типах данных, конструкциях и принципах структурного программирования языка Python. Содержит теорию в формате текстовых конспектов и более 500 задач с автоматизированной проверкой. В конце каждого модуля есть дополнительные материалы для самостоятельного изучения: литература, ссылки на полезные статьи и документацию языка Python, ссылки на исходный код и многое другое.
Курс «Руководство по языку программирования Python», Metanit
Подробное руководство для начинающих и тех, кто хочет систематизировать знания. Курс начинается с установки Python и настройки среды разработки, после чего пошагово вводит в основы языка. Затем курс переходит к более продвинутым темам. Материал подаётся с примерами кода и пояснениями, что делает его удобным для самостоятельного изучения и практики.
👍3❤2🔥1👏1
Apple добавила в iOS 26 фильтры, которые помогут избежать фишинга
В iOS 26 Apple усилит защиту в приложении «Сообщения» от фишинга и спама, внедрив изменения, которые должны снизить риски, независимо от уровня знаний пользователя о методах, при которых злоумышленники пытаются обманным путём получить конфиденциальную информацию, такую как логины, пароли, номера кредитных карт и другие личные данные.
Теперь переписка в «Сообщениях» разделена на несколько категорий, доступных через кнопку фильтра в правом верхнем углу: «Сообщения», «Неизвестные отправители», «Спам» и «Недавно удалённые». В основной вкладке остались чаты с контактами, а также коды подтверждения и данные о бронированиях. Уведомления от неизвестных отправителей и спама приходить не будут.
Фильтрацию можно настроить вручную для каждой категории через меню «Управление фильтрацией». Пользователи могут отмечать доверенные номера в разделе «Неизвестные отправители», а письма из «Спама» — возвращать в основную ленту, если они ошибочно туда попали.
В iOS 26 Apple усилит защиту в приложении «Сообщения» от фишинга и спама, внедрив изменения, которые должны снизить риски, независимо от уровня знаний пользователя о методах, при которых злоумышленники пытаются обманным путём получить конфиденциальную информацию, такую как логины, пароли, номера кредитных карт и другие личные данные.
Теперь переписка в «Сообщениях» разделена на несколько категорий, доступных через кнопку фильтра в правом верхнем углу: «Сообщения», «Неизвестные отправители», «Спам» и «Недавно удалённые». В основной вкладке остались чаты с контактами, а также коды подтверждения и данные о бронированиях. Уведомления от неизвестных отправителей и спама приходить не будут.
Фильтрацию можно настроить вручную для каждой категории через меню «Управление фильтрацией». Пользователи могут отмечать доверенные номера в разделе «Неизвестные отправители», а письма из «Спама» — возвращать в основную ленту, если они ошибочно туда попали.
❤2👏2👍1🔥1
Выручка Tesla упала на 12 %, но компания обещает начать выпуск самого доступного электромобиля в этом квартале
Объёмы поставок электромобилей марки Tesla в мировых масштабах падают уже два квартала подряд. В денежном выражении итоги второго квартала для Tesla тоже оказались неутешительными: выручка просела на 12 %, а чистая прибыль — на все 16 %.
Как отмечается в полной версии квартального отчёта, во втором квартале Tesla выручила $22,5 млрд, при этом величина чистой прибыли ограничилась $1,17 млрд. При этом аналитики рассчитывали на выручку в размере $22,3 млрд, так что реальность оказалась несколько лучше ожиданий, хотя с точки зрения прибыли это утверждение несправедливо.
Непосредственно в сегменте электромобилей выручка Tesla сократилась на 16,6 % в годовом сравнении до $16,6 млрд. По традиции, поддержку компании оказали так называемые регуляторные кредиты, на реализации которых конкурентам она выручила по итогам квартала $439 млн.
Объёмы поставок электромобилей марки Tesla в мировых масштабах падают уже два квартала подряд. В денежном выражении итоги второго квартала для Tesla тоже оказались неутешительными: выручка просела на 12 %, а чистая прибыль — на все 16 %.
Как отмечается в полной версии квартального отчёта, во втором квартале Tesla выручила $22,5 млрд, при этом величина чистой прибыли ограничилась $1,17 млрд. При этом аналитики рассчитывали на выручку в размере $22,3 млрд, так что реальность оказалась несколько лучше ожиданий, хотя с точки зрения прибыли это утверждение несправедливо.
Непосредственно в сегменте электромобилей выручка Tesla сократилась на 16,6 % в годовом сравнении до $16,6 млрд. По традиции, поддержку компании оказали так называемые регуляторные кредиты, на реализации которых конкурентам она выручила по итогам квартала $439 млн.
👍2👏2❤1🔥1
Президент Трамп задумывался о дроблении Nvidia ради повышения конкуренции, но понял, что это крайне сложно
Выступая на саммите по ИИ в Вашингтоне на этой неделе, президент США Дональд Трамп (Donald Trump) признался, что его посещала мысль о дроблении компании Nvidia в целях повышения конкуренции на рынке, но по мере изучения специфики вопроса он понимал, что сделать это будет весьма проблематично.
«Я сказал: давайте разделим этого парня, прежде чем изучил факты. Я подумал, что мы могли бы вмешаться и разделить их немного, добавить им чуть конкуренции, но выяснил, что в этом бизнесе это сделать непросто», — заявил Дональд Трамп вчера в Вашингтоне. По его словам, его помощники пояснили ему, что разделить такую компанию будет очень сложно, и она имеет существенное преимущество по сравнению со всеми конкурентами, для преодоления которого потребуются годы.
Выступая на саммите по ИИ в Вашингтоне на этой неделе, президент США Дональд Трамп (Donald Trump) признался, что его посещала мысль о дроблении компании Nvidia в целях повышения конкуренции на рынке, но по мере изучения специфики вопроса он понимал, что сделать это будет весьма проблематично.
«Я сказал: давайте разделим этого парня, прежде чем изучил факты. Я подумал, что мы могли бы вмешаться и разделить их немного, добавить им чуть конкуренции, но выяснил, что в этом бизнесе это сделать непросто», — заявил Дональд Трамп вчера в Вашингтоне. По его словам, его помощники пояснили ему, что разделить такую компанию будет очень сложно, и она имеет существенное преимущество по сравнению со всеми конкурентами, для преодоления которого потребуются годы.
👍2👏2❤1🔥1
Типы GraphQL
В GraphQL строгая типизация полей — каждое поле в GraphQL-схеме должно принадлежать одному из следующих типов:
Скалярные типы: Int, Float, String, Boolean, ID;
Кастомные скалярные типы: например, Date, DateTime;
Enum;
Сложные типы: Object, Interface, Union, Input;
Скалярные типы
GraphQL предоставляет набор встроенных скалярных типов:
Int — целое число со знаком (32-битное);
Float — число с плавающей точкой двойной точности со знаком;
String — последовательность символов в UTF-8 кодировке;
Boolean — логический тип (true или false);
ID — скалярный тип для уникальных идентификаторов, часто используется для повторного получения объекта или в качестве ключа для кеша.
Кастомные скалярные типы
В большинстве библиотек для работы с GraphQL есть возможность задать собственный скалярный тип.
Например, можно определить тип Date (в схеме он будет объявлен как scalarDate) и добавить текстовое описание, что в этом поле ожидается дата в формате «DD.MM.YYYY».
В GraphQL строгая типизация полей — каждое поле в GraphQL-схеме должно принадлежать одному из следующих типов:
Скалярные типы: Int, Float, String, Boolean, ID;
Кастомные скалярные типы: например, Date, DateTime;
Enum;
Сложные типы: Object, Interface, Union, Input;
Скалярные типы
GraphQL предоставляет набор встроенных скалярных типов:
Int — целое число со знаком (32-битное);
Float — число с плавающей точкой двойной точности со знаком;
String — последовательность символов в UTF-8 кодировке;
Boolean — логический тип (true или false);
ID — скалярный тип для уникальных идентификаторов, часто используется для повторного получения объекта или в качестве ключа для кеша.
Кастомные скалярные типы
В большинстве библиотек для работы с GraphQL есть возможность задать собственный скалярный тип.
Например, можно определить тип Date (в схеме он будет объявлен как scalarDate) и добавить текстовое описание, что в этом поле ожидается дата в формате «DD.MM.YYYY».
👍2👏2❤1🔥1
Enum
GraphQL поддерживает перечисляемые типы — Enum.
Допустим, мы хотим описать в схеме все значения статуса заказа, чтобы клиент и сервер всегда понимали, какие значения статусов могут быть отправлены.
Object
Базовый компонент GraphQL схемы — это тип Object. Он представляет собой объект, который можно получить из сервиса. Внутри объекта хранятся поля и их значения. Поля могут быть скалярными, enum, ссылаться на другие объекты или иметь тип Union или Interface.
Interface
Если в нескольких объектах есть общие поля, которые возвращают одни и те же данные — их можно выделить в интерфейс.
Например, нам нужно описать в схеме 2 разных вида продуктов: съедобные (food) и несъедобные (non-food). У каждого вида есть характеристики.
Union
Если типы мало совместимы между собой, но всё же нужно вернуть сразу несколько объектов из разных типов, то можно использовать объединения - Union.
Допустим, у пользователя есть возможность добавить в заказ не только товары, но и услуги — например, доставку или сборку.
GraphQL поддерживает перечисляемые типы — Enum.
Допустим, мы хотим описать в схеме все значения статуса заказа, чтобы клиент и сервер всегда понимали, какие значения статусов могут быть отправлены.
Object
Базовый компонент GraphQL схемы — это тип Object. Он представляет собой объект, который можно получить из сервиса. Внутри объекта хранятся поля и их значения. Поля могут быть скалярными, enum, ссылаться на другие объекты или иметь тип Union или Interface.
Interface
Если в нескольких объектах есть общие поля, которые возвращают одни и те же данные — их можно выделить в интерфейс.
Например, нам нужно описать в схеме 2 разных вида продуктов: съедобные (food) и несъедобные (non-food). У каждого вида есть характеристики.
Union
Если типы мало совместимы между собой, но всё же нужно вернуть сразу несколько объектов из разных типов, то можно использовать объединения - Union.
Допустим, у пользователя есть возможность добавить в заказ не только товары, но и услуги — например, доставку или сборку.
👍2🔥2❤1👏1
Input
Если нужно объединить в какую-то сложную структуру входные параметры - используется Input.
По структуре и схеме Input очень похож на объект.
Списки в GraphQL
Списки могут реализовываться через массивы и соединения (Connection). Рассмотрим, чем отличаются два этих способа и в каких случаях используются.
Массивы
Мы уже упоминали, что квадратные скобки [] у типа указывают на то, что поле возвращает список значений.
Connection
Этот паттерн основан на спецификации Relay и предоставляет стандартный способ работы со списками объектов. Для объекта, по которому мы хотим предоставлять соединение, создаются дополнительные объекты, которые содержат поля для пагинации и метаинформацию.
Операции GraphQL
Помимо типов, схема определяет все возможные операции, доступные в GraphQL:
Query — получение данных;
Mutation — изменение данных;
Subscription — подписки на real-time обновления.
Если нужно объединить в какую-то сложную структуру входные параметры - используется Input.
По структуре и схеме Input очень похож на объект.
Списки в GraphQL
Списки могут реализовываться через массивы и соединения (Connection). Рассмотрим, чем отличаются два этих способа и в каких случаях используются.
Массивы
Мы уже упоминали, что квадратные скобки [] у типа указывают на то, что поле возвращает список значений.
Connection
Этот паттерн основан на спецификации Relay и предоставляет стандартный способ работы со списками объектов. Для объекта, по которому мы хотим предоставлять соединение, создаются дополнительные объекты, которые содержат поля для пагинации и метаинформацию.
Операции GraphQL
Помимо типов, схема определяет все возможные операции, доступные в GraphQL:
Query — получение данных;
Mutation — изменение данных;
Subscription — подписки на real-time обновления.
❤5👍3🔥2👏1