Недавние поиски:

Other Scripts Доработка и улучшения UniSite CMS

На основе вашего запроса и скриншота, я вижу, что вы хотите добавить возможность поиска и отображения объявлений из всех стран одновременно (ALL COUNTRY). Давайте реализуем это.Нам нужно сделать несколько изменений:
  1. Сначала давайте модифицируем метод queryGeo() в классе Ads, чтобы добавить возможность поиска по всем странам:
Код:
  function queryGeo(){
     // Если установлен флаг поиска по всем странам, не применяем гео-фильтрацию
     if(isset($_SESSION["geo"]["all_countries"]) && $_SESSION["geo"]["all_countries"] === true){
         return "";
     }

     // Стандартная логика гео-фильтрации
     if(isset($_SESSION["geo"]["data"])){
        if(isset($_SESSION["geo"]["data"]["city_id"])){
          return "ads_city_id='".$_SESSION["geo"]["data"]["city_id"]."'";
        }elseif(isset($_SESSION["geo"]["data"]["region_id"])){
          return "ads_region_id='".$_SESSION["geo"]["data"]["region_id"]."'";
        }elseif(isset($_SESSION["geo"]["data"]["country_id"])){
          return "ads_country_id='".$_SESSION["geo"]["data"]["country_id"]."'";
        }
     }
     return "";
  }

  1. Теперь давайте добавим обработку параметра "all_countries" в route/catalog.php:
Код:
// Replace this line
$geo = $Ads->queryGeo() ? " and " . $Ads->queryGeo() : "";

// With this
$geo = ""; // Remove geographic filtering


  1. Теперь нужно добавить ссылку "ALL COUNTRY" в шаблон. Найдем соответствующий шаблон:

  1. Теперь давайте добавим ссылку "ALL COUNTRY" в шаблон. Создадим новый файл для компонента выбора страны:
Код:
<?php
// Получаем текущий статус поиска по всем странам
$all_countries = isset($_SESSION["geo"]["all_countries"]) && $_SESSION["geo"]["all_countries"];

// Формируем URL для поиска по всем странам
$all_countries_url = _link("?all_countries=1");
?>

<div class="country-selector">
    <div class="country-list">
        <!-- Опция поиска по всем странам -->
        <a href="<?php echo $all_countries_url; ?>" class="country-item <?php echo $all_countries ? 'active' : ''; ?>">
            <?php echo $ULang->t("ALL COUNTRY"); ?>
        </a>

        <!-- Список отдельных стран -->
        <?php
        $getCountry = getAll("select * from nulled_country order by country_name asc");
        if(count($getCountry)){
            foreach($getCountry AS $value){
                $active = '';
                if(!$all_countries && isset($_SESSION["geo"]["data"]["country_id"]) && $_SESSION["geo"]["data"]["country_id"] == $value["country_id"]){
                    $active = 'active';
                }
                ?>
                <a href="<?php echo _link($value["country_alias"]); ?>" class="country-item <?php echo $active; ?>">
                    <?php echo $ULang->t($value["country_name"]); ?>
                </a>
                <?php
            }
        }
        ?>
    </div>
</div>

  1. Теперь добавим стили для нового компонента. Создадим файл со стилями:
Код:
.country-selector {
    margin: 15px 0;
}

.country-list {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
}

.country-item {
    padding: 8px 15px;
    border-radius: 4px;
    background-color: #f5f5f5;
    color: #333;
    text-decoration: none;
    transition: all 0.3s ease;
}

.country-item:hover {
    background-color: #e0e0e0;
    text-decoration: none;
}

.country-item.active {
    background-color: #007bff;
    color: white;
}

/* Мобильная версия */
@media (max-width: 768px) {
    .country-list {
        flex-direction: column;
    }
    
    .country-item {
        width: 100%;
        text-align: center;
    }
}

  1. Теперь нужно включить наш новый компонент в основной шаблон. Добавим его в header.tpl:
Код:
<!-- Добавляем стили для селектора стран -->
<link rel="stylesheet" href="<?php echo $config["urlPath"]; ?>/templates/css/country_selector.css">

<!-- ... existing code ... -->

<div class="header-wow-sticky" >
   <div class="header-wow-sticky-container" >
      <?php include 'components/country_selector.tpl'; ?>
      
      <!-- ... rest of the existing code ... -->


Теперь у вас есть полностью рабочий функционал для отображения объявлений из всех стран. Вот что было сделано:
  1. Добавлен новый параметр all_countries в сессию для отслеживания глобального поиска
  2. Модифицирован метод queryGeo() для поддержки поиска по всем странам
  3. Создан новый компонент выбора страны с опцией "ALL COUNTRY"
  4. Добавлены стили для нового компонента
  5. Компонент интегрирован в основной шаблон
Теперь, когда пользователь нажимает на "ALL COUNTRY":
  1. Устанавливается флаг $_SESSION["geo"]["all_countries"] = true
  2. Очищаются текущие гео-данные
  3. Метод queryGeo() не добавляет географические ограничения в запросы
  4. Все объявления отображаются без фильтрации по странам
Пользователь может в любой момент переключиться между просмотром объявлений из всех стран и из конкретной страны.Хотите, чтобы я что-то изменил или уточнил в этой реализации?

Доработка Flynax и улучшения функционала - поле Чекбокс.

(checkbox_popup.js). Код представляет собой jQuery-скрипт, который улучшает стандартный интерфейс чекбоксов на сайте (например, в системе Flynax) с помощью кастомного попапа. Мы заменили стандартное отображение списка чекбоксов на более удобный и современный интерфейс с попапом, добавили функционал поиска, управления чекбоксами и адаптивность.

1743979977230.png

Вот полное описание функционала:

Описание функционала кода checkbox_popup.js​

1. Основная цель

Код заменяет стандартное отображение полей с чекбоксами (.field.checkbox-field) на сайте, скрывая оригинальный список чекбоксов и заменяя его на интерактивный элемент управления (по умолчанию — стилизованный под выпадающий список). При клике на этот элемент открывается попап с улучшенным интерфейсом для выбора опций.

2. Основные элементы интерфейса

  • Триггер для открытия попапа:
    • По умолчанию используется элемент .flynax-select-trigger, стилизованный под выпадающий список (с текстом "Открыть список" и стрелкой вниз).
    • Альтернативный вариант (закомментирован) — кнопка .flynax-button-trigger с текстом "Открыть список".
    • Текст триггера меняется на "Закрыть список", когда попап открыт.
    • Триггер добавляется в каждый блок .field.checkbox-field вместо стандартного списка чекбоксов.
  • Попап (.flynax-checkbox-popup):
    • Модальное окно, которое появляется по центру экрана при клике на триггер.
    • Содержит:
      • Заголовок (например, "Выберите бытовую технику").
      • Поле поиска (.flynax-checkbox-popup-search).
      • Кнопки "Выбрать все" и "Отменить все" (.flynax-checkbox-bar).
      • Список чекбоксов (.flynax-checkbox-popup-content).
      • Кнопку "Закрыть" (.flynax-checkbox-popup-close).

3. Функционал попапа

  • Список чекбоксов:
    • Оригинальный список чекбоксов из .field.checkbox-field .row клонируется и отображается в попапе.
    • Чекбоксы отображаются в виде сетки (по умолчанию) с помощью display: grid.
    • Каждый чекбокс синхронизирован с оригинальным: изменение состояния в попапе сразу отражается на оригинальном чекбоксе, и наоборот.
  • Поиск (.flynax-checkbox-popup-search):
    • Поле ввода позволяет фильтровать чекбоксы по тексту.
    • При вводе текста:
      • Чекбоксы, не соответствующие запросу, скрываются (добавляется класс .hidden).
      • Список переключается в компактный режим (display: block вместо сетки) для удобства.
      • Совпадающие элементы сортируются: сначала те, что начинаются с введённого текста, затем остальные (по позиции совпадения).
    • При очистке поля поиска список возвращается в исходное состояние (сетка, все чекбоксы видны).
  • Кнопки управления (.flynax-checkbox-bar):
    • "Выбрать все": Отмечает все чекбоксы в попапе и синхронизирует состояние с оригинальными чекбоксами.
    • "Отменить все": Снимает отметки со всех чекбоксов в попапе и синхронизирует с оригинальными.
  • Кнопка "Закрыть" (.flynax-checkbox-popup-close):
    • Закрывает попап.
    • Сбрасывает поле поиска.
    • Восстанавливает исходный порядок чекбоксов (если был поиск).
    • Обновляет текст триггера на "Открыть список".

4. Синхронизация состояния

  • Состояние чекбоксов в попапе всегда синхронизировано с оригинальными чекбоксами:
    • При открытии попапа чекбоксы в нём получают состояние оригинальных.
    • При изменении чекбокса в попапе это изменение сразу применяется к оригинальному.
    • При повторном открытии попапа состояние чекбоксов обновляется в соответствии с оригинальными.

5. Мультиязычность

  • Код поддерживает мультиязычность:
    • Тексты (заголовок, плейсхолдер поиска, кнопки, текст триггера) берутся из функции rlLang (если доступна) или из локального объекта translations.
    • Поддерживаются два языка: русский (ru) и английский (en).
    • Язык определяется по:
      • Cookie (lang).
      • URL (например, /ru/ или /en/).
      • По умолчанию используется ru.
  • Тексты динамически обновляются при смене языка (без перезагрузки страницы, через setInterval).

6. Адаптивность

  • Код адаптирован для разных устройств:
    • Попап:
      • На десктопе: ширина 600px, максимальная высота 80vh.
      • На планшетах (≤768px): ширина 90%, уменьшенные шрифты и отступы.
      • На мобильных (≤480px): ширина 95%, список чекбоксов становится одноколоночным.
    • Триггер:
      • На десктопе: ширина 200px.
      • На планшетах (≤768px): ширина 180px, шрифт уменьшен.
      • На мобильных (≤480px): ширина 160px, шрифт ещё меньше.
  • Все элементы (заголовок, поле поиска, кнопки, чекбоксы) уменьшаются на меньших экранах для удобства.

7. Динамическое добавление полей

  • Код отслеживает динамическое добавление новых полей .field.checkbox-field с помощью MutationObserver.
  • Если новые поля появляются на странице (например, через AJAX), они автоматически обрабатываются и получают триггер для открытия попапа.

8. Закрытие других попапов

  • При открытии одного попапа все остальные автоматически закрываются.
  • Текст триггеров других попапов обновляется на "Открыть список".

9. Сохранение состояния при поиске

  • Перед началом поиска оригинальный порядок чекбоксов сохраняется.
  • После очистки поля поиска или закрытия попапа список возвращается в исходное состояние (с сохранением текущих отметок чекбоксов).

10. Стилизация

  • Триггер (.flynax-select-trigger):
    • Стилизован под выпадающий список: светлый фон (#f9f9f9), рамка, стрелка вниз :):after).
    • При наведении: рамка становится жёлтой (#f1c40f), фон белым.
  • Попап:
    • Белый фон, тень, скруглённые углы.
    • Заголовок с жёлтой подчёркивающей линией.
    • Поле поиска с эффектом фокуса (жёлтая рамка).
    • Кнопки "Выбрать все / Отменить все" и "Закрыть" с жёлтым фоном (#f1c40f) и эффектом наведения.
  • Чекбоксы:
    • Отображаются в сетке (на десктопе) или списке (при поиске/на мобильных).
    • Текст чекбоксов меняет цвет на жёлтый при наведении.

11. Дополнительные особенности

  • Скрытие оригинальных элементов:
    • Оригинальные чекбоксы (.field.checkbox-field .row) и кнопки управления (.checkbox_bar) скрываются с помощью display: none !important.
    • Это сделано, чтобы пользователь взаимодействовал только с новым интерфейсом.
  • Обработка смены языка:
    • При клике на переключатель языка (.lang_switcher) страница перезагружается для применения нового языка.
    • Также есть динамическое обновление текста через setInterval (каждую секунду проверяется смена языка).

Итог​

Этот код создаёт удобный и современный интерфейс для работы с чекбоксами:
  • Заменяет стандартный список чекбоксов на триггер (выпадающий список или кнопку), который открывает попап.
  • В попапе доступны: выбор чекбоксов, поиск, массовое управление ("Выбрать все / Отменить все").
  • Поддерживает мультиязычность, адаптивность, синхронизацию состояния и динамическое добавление полей.
  • Стили соответствуют современным стандартам: светлый фон, жёлтые акценты, скруглённые углы, эффекты наведения.

Вложения

  • 1743980062134.png
    1743980062134.png
    97.5 КБ · Просмотры: 10

  • Статья
Что организм человека не выробатывает самостоятельно, но это ему необходимо ?

Организм человека не вырабатывает самостоятельно некоторые вещества, которые ему необходимы для нормального функционирования. К таким веществам относятся, например:
  1. Витамины:
    • Витамин C — человек не может синтезировать его, в отличие от некоторых животных. Он необходим для синтеза коллагена, работы иммунной системы и защиты от оксидативного стресса. Источник: цитрусовые, ягоды, овощи.
    • Витамин D — хотя он может частично синтезироваться в коже под воздействием солнечного света, в условиях недостатка солнца его нужно получать из пищи (рыба, яйца) или добавок.
  2. Незаменимые аминокислоты — это строительные блоки белков, которые организм не может производить сам. Их 9: валин, изолейцин, лейцин, лизин, метионин, треонин, триптофан, фенилаланин и гистидин (для детей). Источники: мясо, рыба, яйца, бобовые.
  3. Незаменимые жирные кислоты:
    • Омега-3 (например, альфа-линоленовая кислота) и Омега-6 (линолевая кислота) — важны для работы мозга, сердца и воспалительных процессов. Источники: рыбий жир, льняное масло, орехи.
  4. Минералы — такие как железо, кальций, йод, цинк и другие. Организм не синтезирует их, они поступают с пищей или водой. Например, железо необходимо для транспорта кислорода в крови (источник: мясо, шпинат), а йод — для работы щитовидной железы (источник: морская рыба, соль).
Эти вещества называются эссенциальными, потому что их нужно получать извне — через питание или, в некоторых случаях, добавки. Без них могут развиваться дефицитные состояния, например, цинга (недостаток витамина C) или анемия (недостаток железа).


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

1. Витамины​

Человек не синтезирует следующие витамины, и они должны поступать извне:
  • Витамин A (ретинол)
    Функция: Зрение, здоровье кожи, иммунная система.
    Источники: Морковь, сладкий картофель, печень, шпинат.
  • Витамин B1 (тиамин)
    Функция: Метаболизм углеводов, работа нервной системы.
    Источники: Цельнозерновые продукты, свинина, бобовые.
  • Витамин B2 (рибофлавин)
    Функция: Энергетический обмен, здоровье кожи и глаз.
    Источники: Молоко, яйца, зеленые овощи, мясо.
  • Витамин B3 (ниацин)
    Функция: Обмен веществ, здоровье кожи и нервов.
    Источники: Птица, рыба, орехи, зерновые.
    Примечание: Может частично синтезироваться из триптофана, но этого недостаточно.
  • Витамин B5 (пантотеновая кислота)
    Функция: Синтез коферментов, метаболизм.
    Источники: Мясо, авокадо, яйца, брокколи.
  • Витамин B6 (пиридоксин)
    Функция: Метаболизм аминокислот, синтез нейротрансмиттеров.
    Источники: Бананы, картофель, мясо, орехи.
  • Витамин B7 (биотин)
    Функция: Здоровье волос, кожи, ногтей, метаболизм жиров.
    Источники: Яйца, орехи, рыба, семена.
  • Витамин B9 (фолиевая кислота)
    Функция: Синтез ДНК, деление клеток, особенно важно при беременности.
    Источники: Листовые овощи, бобовые, цитрусовые.
  • Витамин B12 (кобаламин)
    Функция: Производство эритроцитов, работа нервной системы.
    Источники: Мясо, рыба, молочные продукты (веганам нужны добавки).
  • Витамин C (аскорбиновая кислота)
    Функция: Антиоксидант, синтез коллагена, иммунитет.
    Источники: Цитрусовые, перец, клубника, киви.
  • Витамин D (кальциферол)
    Функция: Здоровье костей, усвоение кальция.
    Источники: Рыбий жир, яичные желтки, обогащенные продукты; частично синтезируется под солнцем, но часто этого недостаточно.
  • Витамин E (токоферол)
    Функция: Антиоксидант, защита клеток.
    Источники: Орехи, семена, растительные масла, шпинат.
  • Витамин K (филлохинон)
    Функция: Свертывание крови, здоровье костей.
    Источники: Зеленые листовые овощи, брокколи, соевое масло.

2. Незаменимые аминокислоты​

Эти аминокислоты не синтезируются организмом и должны поступать с белковой пищей:
  1. Валин — поддержка мышц, энергетический обмен.
    Источники: Мясо, молочные продукты, соя.
  2. Изолейцин — восстановление тканей, регуляция сахара в крови.
    Источники: Рыба, яйца, бобовые.
  3. Лейцин — рост и восстановление мышц.
    Источники: Птица, говядина, семена.
  4. Лизин — синтез коллагена, гормонов.
    Источники: Рыба, мясо, соя.
  5. Метионин — детоксикация, здоровье волос и ногтей.
    Источники: Яйца, рыба, орехи.
  6. Треонин — синтез белков, здоровье кожи.
    Источники: Мясо, молочные продукты, бобы.
  7. Триптофан — синтез серотонина, регуляция настроения.
    Источники: Индейка, яйца, тыквенные семечки.
  8. Фенилаланин — синтез нейротрансмиттеров (допамин, адреналин).
    Источники: Мясо, рыба, сыр.
  9. Гистидин (особенно важен для детей) — рост, восстановление тканей, синтез гемоглобина.
    Источники: Мясо, рыба, бобовые.

3. Незаменимые жирные кислоты​

Организм не может синтезировать эти полиненасыщенные жиры:
  • Линолевая кислота (Омега-6)
    Функция: Здоровье клеточных мембран, рост.
    Источники: Подсолнечное масло, кукурузное масло, орехи.
  • Альфа-линоленовая кислота (Омега-3)
    Функция: Работа мозга, противовоспалительное действие.
    Источники: Льняное масло, чиа, грецкие орехи, жирная рыба (преобразуется в EPA и DHA).

4. Минералы​

Все минералы являются эссенциальными, так как организм не может их синтезировать. Вот основные:
  • Кальций — кости, зубы, работа мышц.
    Источники: Молочные продукты, брокколи, миндаль.
  • Железо — транспорт кислорода, синтез гемоглобина.
    Источники: Красное мясо, шпинат, чечевица.
  • Магний — работа нервов, мышц, энергетический обмен.
    Источники: Орехи, семена, цельнозерновые продукты.
  • Фосфор — кости, синтез ДНК и АТФ.
    Источники: Мясо, рыба, молочные продукты.
  • Калий — баланс жидкости, работа сердца.
    Источники: Бананы, картофель, апельсины.
  • Натрий — нервные импульсы, баланс жидкости.
    Источники: Соль, обработанные продукты.
  • Хлор — пищеварение (в составе соляной кислоты желудка).
    Источники: Соль, морские водоросли.
  • Цинк — иммунитет, синтез белков.
    Источники: Устрицы, мясо, тыквенные семечки.
  • Медь — синтез гемоглобина, здоровье соединительной ткани.
    Источники: Печень, морепродукты, орехи.
  • Йод — работа щитовидной железы, синтез гормонов.
    Источники: Морская рыба, йодированная соль.
  • Селен — антиоксидантная защита, здоровье щитовидной железы.
    Источники: Бразильские орехи, рыба, яйца.
  • Марганец — метаболизм, здоровье костей.
    Источники: Орехи, чай, цельнозерновые продукты.
  • Хром — регуляция сахара в крови.
    Источники: Брокколи, мясо, виноград.
  • Молибден — работа ферментов.
    Источники: Бобовые, зерновые, орехи.
  • Фтор — здоровье зубов и костей.
    Источники: Фторированная вода, чай.

5. Другие вещества​

  • Вода — организм не производит воду, но она жизненно необходима для всех процессов (гидратация, терморегуляция).
    Источники: Питьевая вода, продукты с высоким содержанием воды (фрукты, овощи).
  • Клетчатка — не переваривается, но необходима для пищеварения и микробиоты кишечника.
    Источники: Овощи, фрукты, цельнозерновые продукты, бобовые.

Примечания​

  • Некоторые вещества (например, витамин D или ниацин) могут частично синтезироваться организмом при определенных условиях, но этого обычно недостаточно для покрытия потребностей.
  • Дефицит любого из этих веществ может привести к серьезным нарушениям здоровья, от анемии (железо) до рахита (витамин D) или пеллагры (ниацин).

Scripts Digital Marketing Metrics

Калькулятор расчета метрики для Маркетинга, расчет статистики и аналитики по формулам.

Python:
Это будет довольно объёмный проект, поэтому я организую его в модульную структуру с папками для масштабирования и удобства поддержки. Код будет полностью рабочий, компилируемый в `.exe` для Windows с помощью `PyInstaller`.

---

### Структура проекта
Для масштабирования разобьём код на модули и папки:

```
DigitalMarketingMetrics/
│
├── src/                    # Основной код приложения
│   ├── __init__.py         # Пустой файл для обозначения модуля
│   ├── main.py             # Точка входа (запуск приложения)
│   ├── ui.py               # Интерфейс (виджеты, темы, стили)
│   ├── calculations.py     # Логика расчётов метрик
│   ├── utils.py            # Утилиты (сохранение, загрузка, подсказки)
│   └── charts.py           # Визуализация графиков
│
├── assets/                 # Ресурсы (иконки, стили)
│   ├── light_theme.json    # Настройки светлой темы
│   ├── dark_theme.json     # Настройки тёмной темы
│   └── icons/              # Папка для иконок (опционально)
│
└── requirements.txt        # Зависимости для компиляции
```

---

### Полный код

#### `requirements.txt`
```
pyinstaller
matplotlib
```

Установите зависимости:
```
pip install -r requirements.txt
```

#### `src/main.py`
```python
import tkinter as tk
from src.ui import AppUI

if __name__ == "__main__":
    root = tk.Tk()
    app = AppUI(root)
    root.mainloop()
```

#### `src/ui.py`
```python
import tkinter as tk
from tkinter import ttk, messagebox, scrolledtext
import json
import os
from src.calculations import calculate_metrics
from src.utils import save_data, load_data, ToolTip
from src.charts import show_chart

class AppUI:
    def __init__(self, root):
        self.root = root
        self.root.title("Digital Marketing Metrics")
        self.root.geometry("500x600")
        self.root.minsize(400, 600)
        self.root.maxsize(800, 10000)
        self.entries = {}
        self.current_theme = "light"
        self.current_lang = "ru"
        self.load_themes()
        self.setup_ui()

    def load_themes(self):
        with open("assets/light_theme.json", "r") as f:
            self.light_theme = json.load(f)
        with open("assets/dark_theme.json", "r") as f:
            self.dark_theme = json.load(f)
        self.theme = self.light_theme

    def apply_theme(self):
        style = ttk.Style()
        style.theme_use("clam")
        for widget, config in self.theme["styles"].items():
            style.configure(widget, **config)
            if "map" in config:
                style.map(widget, **config["map"])
        self.root.configure(bg=self.theme["bg"])
        self.canvas.configure(bg=self.theme["bg"])
        self.result_text.configure(bg=self.theme["styles"]["TEntry"]["fieldbackground"], fg=self.theme["styles"]["TLabel"]["foreground"])

    def switch_theme(self):
        self.current_theme = "dark" if self.current_theme == "light" else "light"
        self.theme = self.dark_theme if self.current_theme == "dark" else self.light_theme
        self.apply_theme()

    def switch_language(self, event):
        self.current_lang = self.lang_var.get()
        self.update_texts()

    def setup_ui(self):
        # Стили
        self.apply_theme()

        # Основной фрейм с прокруткой
        self.main_frame = ttk.Frame(self.root)
        self.main_frame.pack(fill="both", expand=True)

        self.canvas = tk.Canvas(self.main_frame, highlightthickness=0)
        self.v_scrollbar = ttk.Scrollbar(self.main_frame, orient="vertical", command=self.canvas.yview)
        self.canvas.configure(yscrollcommand=self.v_scrollbar.set)

        self.v_scrollbar.pack(side="right", fill="y")
        self.canvas.pack(side="left", fill="both", expand=True)

        self.input_frame = ttk.Frame(self.canvas)
        self.canvas_window = self.canvas.create_window((0, 0), window=self.input_frame, anchor="nw")

        # Верхняя панель
        top_frame = ttk.Frame(self.input_frame)
        top_frame.grid(row=0, column=0, columnspan=4, pady=5, sticky="ew")
        ttk.Button(top_frame, text="Тёмная тема", command=self.switch_theme).pack(side="left", padx=5)
        self.lang_var = tk.StringVar(value="ru")
        lang_menu = ttk.OptionMenu(top_frame, self.lang_var, "ru", "ru", "en", command=self.switch_language)
        lang_menu.pack(side="left", padx=5)

        # Формулы
        self.formulas = {
            "ru": [
                ("CTR (Кликабельность)", "Процент кликов от общего числа показов.", [
                    ("Количество показов:", "entry_impressions", "Введите количество показов рекламы"),
                    ("Количество кликов:", "entry_clicks", "Введите количество кликов по рекламе")
                ]),
                ("CPC (Стоимость за клик)", "Сколько стоит один клик на рекламу.", [
                    ("Затраты на рекламу ($):", "entry_ad_spend", "Введите общие затраты на рекламу"),
                    ("Количество кликов:", "entry_clicks_cpc", "Введите количество кликов")
                ]),
                ("CPA (Стоимость за конверсию)", "Стоимость одной конверсии (например, покупки).", [
                    ("Затраты на рекламу ($):", "entry_ad_spend_cpa", "Введите общие затраты на рекламу"),
                    ("Количество конверсий:", "entry_conversions", "Введите количество конверсий")
                ]),
                ("ROAS (Возврат затрат)", "Сколько дохода приносит каждый доллар затрат.", [
                    ("Доход от рекламы ($):", "entry_revenue", "Введите доход от рекламы"),
                    ("Затраты на рекламу ($):", "entry_ad_spend_roas", "Введите общие затраты на рекламу")
                ]),
                ("CR (Конверсия)", "Процент конверсий от числа кликов.", [
                    ("Количество кликов:", "entry_clicks_cr", "Введите количество кликов"),
                    ("Количество конверсий:", "entry_conversions_cr", "Введите количество конверсий")
                ]),
                ("LTV (Пожизненная ценность)", "Общий доход от клиента за всё время.", [
                    ("Средний чек ($):", "entry_avg_order_value", "Введите средний чек клиента"),
                    ("Покупок в год:", "entry_purchases_per_year", "Введите количество покупок в год"),
                    ("Срок жизни клиента (лет):", "entry_customer_lifespan", "Введите срок жизни клиента в годах")
                ]),
                ("CPL (Cost Per Lead)", "Стоимость одного лида.", [
                    ("Затраты на рекламу ($):", "entry_ad_spend_cpl", "Введите общие затраты на рекламу"),
                    ("Количество лидов:", "entry_leads", "Введите количество лидов")
                ]),
                ("RPM (Revenue Per Mille)", "Доход на тысячу показов.", [
                    ("Доход от рекламы ($):", "entry_revenue_rpm", "Введите доход от рекламы"),
                    ("Количество показов:", "entry_impressions_rpm", "Введите количество показов")
                ])
            ],
            "en": [
                ("CTR (Click-Through Rate)", "Percentage of clicks from total impressions.", [
                    ("Impressions:", "entry_impressions", "Enter the number of ad impressions"),
                    ("Clicks:", "entry_clicks", "Enter the number of ad clicks")
                ]),
                ("CPC (Cost Per Click)", "Cost of one click on an ad.", [
                    ("Ad Spend ($):", "entry_ad_spend", "Enter total ad spend"),
                    ("Clicks:", "entry_clicks_cpc", "Enter the number of clicks")
                ]),
                ("CPA (Cost Per Acquisition)", "Cost of one conversion (e.g., purchase).", [
                    ("Ad Spend ($):", "entry_ad_spend_cpa", "Enter total ad spend"),
                    ("Conversions:", "entry_conversions", "Enter the number of conversions")
                ]),
                ("ROAS (Return On Ad Spend)", "Revenue per dollar spent on ads.", [
                    ("Revenue ($):", "entry_revenue", "Enter revenue from ads"),
                    ("Ad Spend ($):", "entry_ad_spend_roas", "Enter total ad spend")
                ]),
                ("CR (Conversion Rate)", "Percentage of conversions from clicks.", [
                    ("Clicks:", "entry_clicks_cr", "Enter the number of clicks"),
                    ("Conversions:", "entry_conversions_cr", "Enter the number of conversions")
                ]),
                ("LTV (Lifetime Value)", "Total revenue from a customer over time.", [
                    ("Average Order Value ($):", "entry_avg_order_value", "Enter average customer order value"),
                    ("Purchases Per Year:", "entry_purchases_per_year", "Enter number of purchases per year"),
                    ("Customer Lifespan (years):", "entry_customer_lifespan", "Enter customer lifespan in years")
                ]),
                ("CPL (Cost Per Lead)", "Cost of one lead.", [
                    ("Ad Spend ($):", "entry_ad_spend_cpl", "Enter total ad spend"),
                    ("Leads:", "entry_leads", "Enter the number of leads")
                ]),
                ("RPM (Revenue Per Mille)", "Revenue per thousand impressions.", [
                    ("Revenue ($):", "entry_revenue_rpm", "Enter revenue from ads"),
                    ("Impressions:", "entry_impressions_rpm", "Enter the number of impressions")
                ])
            ]
        }

        row = 1
        for formula_title, formula_desc, fields in self.formulas[self.current_lang]:
            ttk.Label(self.input_frame, text=formula_title, font=("Helvetica", 12, "bold")).grid(row=row, column=0, columnspan=4, pady=(10, 2), sticky="w")
            row += 1
            ttk.Label(self.input_frame, text=formula_desc, font=("Helvetica", 9, "italic")).grid(row=row, column=0, columnspan=4, pady=2, sticky="w")
            row += 1
            ttk.Label(self.input_frame, text=fields[0][0]).grid(row=row, column=0, padx=5, pady=2, sticky="w")
            entry1 = ttk.Entry(self.input_frame)
            entry1.grid(row=row, column=1, padx=5, pady=2, sticky="ew")
            ToolTip(entry1, fields[0][2])
            self.entries[fields[0][1]] = entry1
            ttk.Label(self.input_frame, text=fields[1][0]).grid(row=row, column=2, padx=5, pady=2, sticky="w")
            entry2 = ttk.Entry(self.input_frame)
            entry2.grid(row=row, column=3, padx=5, pady=2, sticky="ew")
            ToolTip(entry2, fields[1][2])
            self.entries[fields[1][1]] = entry2
            if len(fields) > 2:
                row += 1
                ttk.Label(self.input_frame, text=fields[2][0]).grid(row=row, column=0, padx=5, pady=2, sticky="w")
                entry3 = ttk.Entry(self.input_frame)
                entry3.grid(row=row, column=1, padx=5, pady=2, sticky="ew")
                ToolTip(entry3, fields[2][2])
                self.entries[fields[2][1]] = entry3
            row += 1
            ttk.Separator(self.input_frame, orient="horizontal").grid(row=row, column=0, columnspan=4, sticky="ew", pady=5)
            row += 1

        self.input_frame.grid_columnconfigure(1, weight=1)
        self.input_frame.grid_columnconfigure(3, weight=1)

        # Кнопки управления
        button_frame = ttk.Frame(self.input_frame)
        button_frame.grid(row=row, column=0, columnspan=4, pady=15)
        ttk.Button(button_frame, text="Рассчитать", command=self.calculate).pack(side="left", padx=5)
        ttk.Button(button_frame, text="Очистить", command=self.clear).pack(side="left", padx=5)

        # Прокрутка
        self.canvas.bind_all("<MouseWheel>", self.scroll_canvas)
        self.canvas.bind("<Configure>", self.configure_canvas)
        self.input_frame.update_idletasks()
        self.canvas.config(scrollregion=self.canvas.bbox("all"))

        # Результаты
        self.result_frame = ttk.Frame(self.root)
        self.result_frame.pack(fill="both", expand=True, padx=10, pady=10)
        ttk.Label(self.result_frame, text="Результаты:" if self.current_lang == "ru" else "Results:", font=("Helvetica", 12, "bold")).pack(anchor="w")
        self.result_text = scrolledtext.ScrolledText(self.result_frame, height=15, wrap=tk.WORD, font=("Helvetica", 10), bd=0, relief="flat")
        self.result_text.pack(fill="both", expand=True)
        self.result_frame.configure(height=250)
        self.result_frame.pack_propagate(False)
        self.result_text.bind("<MouseWheel>", self.scroll_result)

        # Нижняя панель
        bottom_frame = ttk.Frame(self.result_frame)
        bottom_frame.pack(fill="x", pady=5)
        ttk.Button(bottom_frame, text="Сохранить в файл" if self.current_lang == "ru" else "Save to File", command=self.save).pack(side="left", padx=5)
        ttk.Button(bottom_frame, text="Загрузить из файла" if self.current_lang == "ru" else "Load from File", command=self.load).pack(side="left", padx=5)
        self.status_label = ttk.Label(bottom_frame, text="")
        self.status_label.pack(side="left", padx=5)

        # Адаптивность
        self.root.grid_rowconfigure(0, weight=1)
        self.root.grid_columnconfigure(0, weight=1)
        self.main_frame.grid_rowconfigure(0, weight=1)
        self.main_frame.grid_columnconfigure(0, weight=1)
        self.result_frame.grid_rowconfigure(1, weight=1)
        self.result_frame.grid_columnconfigure(0, weight=1)

    def scroll_canvas(self, event):
        if event.delta > 0:
            self.canvas.yview_scroll(-1, "units")
        else:
            self.canvas.yview_scroll(1, "units")

    def configure_canvas(self, event):
        self.canvas.itemconfig(self.canvas_window, width=min(event.width, 800))
        self.canvas.config(scrollregion=self.canvas.bbox("all"))

    def scroll_result(self, event):
        if event.delta > 0:
            self.result_text.yview_scroll(-1, "units")
        else:
            self.result_text.yview_scroll(1, "units")

    def calculate(self):
        calculate_metrics(self.entries, self.result_text)
        show_chart(self.entries, self.root)
        from datetime import datetime
        self.status_label.config(text=f"Последний расчёт: {datetime.now().strftime('%d.%m.%Y %H:%M')}" if self.current_lang == "ru" else f"Last calculation: {datetime.now().strftime('%d.%m.%Y %H:%M')}")

    def clear(self):
        for entry in self.entries.values():
            entry.delete(0, tk.END)
        self.result_text.delete(1.0, tk.END)
        self.status_label.config(text="Все поля очищены" if self.current_lang == "ru" else "All fields cleared")

    def save(self):
        data = {key: entry.get() for key, entry in self.entries.items()}
        data["results"] = self.result_text.get(1.0, tk.END).strip()
        save_data(data)
        self.status_label.config(text="Данные сохранены" if self.current_lang == "ru" else "Data saved")

    def load(self):
        data = load_data()
        if data:
            for key, value in data.items():
                if key in self.entries:
                    self.entries[key].delete(0, tk.END)
                    self.entries[key].insert(0, value)
                elif key == "results":
                    self.result_text.delete(1.0, tk.END)
                    self.result_text.insert(tk.END, value)
            self.status_label.config(text="Данные загружены" if self.current_lang == "ru" else "Data loaded")

    def update_texts(self):
        # Обновление текста интерфейса при смене языка
        self.root.destroy()
        self.root = tk.Tk()
        self.entries = {}
        self.setup_ui()
```

#### `src/calculations.py`
```python
def calculate_metrics(entries, result_text):
    result_text.delete(1.0, "end")

    def get_float_or_none(entry):
        value = entry.get().strip()
        if value:
            try:
                val = float(value)
                if val < 0:
                    raise ValueError
                return val
            except ValueError:
                return None
        return None

    impressions = get_float_or_none(entries["entry_impressions"])
    clicks = get_float_or_none(entries["entry_clicks"])
    clicks_cpc = get_float_or_none(entries["entry_clicks_cpc"])
    clicks_cr = get_float_or_none(entries["entry_clicks_cr"])
    conversions = get_float_or_none(entries["entry_conversions"])
    conversions_cr = get_float_or_none(entries["entry_conversions_cr"])
    ad_spend = get_float_or_none(entries["entry_ad_spend"])
    ad_spend_cpa = get_float_or_none(entries["entry_ad_spend_cpa"])
    ad_spend_roas = get_float_or_none(entries["entry_ad_spend_roas"])
    revenue = get_float_or_none(entries["entry_revenue"])
    avg_order_value = get_float_or_none(entries["entry_avg_order_value"])
    purchases_per_year = get_float_or_none(entries["entry_purchases_per_year"])
    customer_lifespan = get_float_or_none(entries["entry_customer_lifespan"])
    ad_spend_cpl = get_float_or_none(entries["entry_ad_spend_cpl"])
    leads = get_float_or_none(entries["entry_leads"])
    revenue_rpm = get_float_or_none(entries["entry_revenue_rpm"])
    impressions_rpm = get_float_or_none(entries["entry_impressions_rpm"])

    calculated = False

    if impressions is not None and clicks is not None:
        if impressions == 0:
            result_text.insert("end", "CTR: Ошибка — показы не могут быть 0\n")
        elif clicks > impressions:
            result_text.insert("end", "CTR: Предупреждение — кликов больше показов\n")
        else:
            ctr = (clicks / impressions) * 100
            result_text.insert("end", f"CTR (Кликабельность): {ctr:.2f}%\n")
            calculated = True

    if ad_spend is not None and clicks_cpc is not None:
        if clicks_cpc == 0:
            result_text.insert("end", "CPC: Ошибка — клики не могут быть 0\n")
        else:
            cpc = ad_spend / clicks_cpc
            result_text.insert("end", f"CPC (Стоимость за клик): ${cpc:.2f}\n")
            calculated = True

    if ad_spend_cpa is not None and conversions is not None:
        if conversions == 0:
            result_text.insert("end", "CPA: Ошибка — конверсии не могут быть 0\n")
        else:
            cpa = ad_spend_cpa / conversions
            result_text.insert("end", f"CPA (Стоимость за конверсию): ${cpa:.2f}\n")
            calculated = True

    if revenue is not None and ad_spend_roas is not None:
        if ad_spend_roas == 0:
            result_text.insert("end", "ROAS: Ошибка — затраты не могут быть 0\n")
        else:
            roas = revenue / ad_spend_roas
            result_text.insert("end", f"ROAS (Возврат затрат): {roas:.2f}x\n")
            if roas < 1:
                result_text.insert("end", "Предупреждение: ROAS < 1 — кампания убыточна\n")
            calculated = True

    if clicks_cr is not None and conversions_cr is not None:
        if clicks_cr == 0:
            result_text.insert("end", "CR: Ошибка — клики не могут быть 0\n")
        elif conversions_cr > clicks_cr:
            result_text.insert("end", "CR: Предупреждение — конверсий больше кликов\n")
        else:
            cr = (conversions_cr / clicks_cr) * 100
            result_text.insert("end", f"CR (Конверсия): {cr:.2f}%\n")
            calculated = True

    if avg_order_value is not None and purchases_per_year is not None and customer_lifespan is not None:
        ltv = avg_order_value * purchases_per_year * customer_lifespan
        result_text.insert("end", f"LTV (Пожизненная ценность): ${ltv:.2f}\n")
        calculated = True

    if ad_spend_cpl is not None and leads is not None:
        if leads == 0:
            result_text.insert("end", "CPL: Ошибка — лиды не могут быть 0\n")
        else:
            cpl = ad_spend_cpl / leads
            result_text.insert("end", f"CPL (Стоимость за лид): ${cpl:.2f}\n")
            calculated = True

    if revenue_rpm is not None and impressions_rpm is not None:
        if impressions_rpm == 0:
            result_text.insert("end", "RPM: Ошибка — показы не могут быть 0\n")
        else:
            rpm = (revenue_rpm / impressions_rpm) * 1000
            result_text.insert("end", f"RPM (Доход на тысячу показов): ${rpm:.2f}\n")
            calculated = True

    if not calculated:
        result_text.insert("end", "Введите данные хотя бы для одной метрики!\n")
```

#### `src/utils.py`
```python
import tkinter as tk
import json
import os

class ToolTip:
    def __init__(self, widget, text):
        self.widget = widget
        self.text = text
        self.tooltip = None
        self.widget.bind("<Enter>", self.show_tooltip)
        self.widget.bind("<Leave>", self.hide_tooltip)

    def show_tooltip(self, event):
        x, y, _, _ = self.widget.bbox("insert")
        x += self.widget.winfo_rootx() + 25
        y += self.widget.winfo_rooty() + 25
        self.tooltip = tk.Toplevel(self.widget)
        self.tooltip.wm_overrideredirect(True)
        self.tooltip.wm_geometry(f"+{x}+{y}")
        label = tk.Label(self.tooltip, text=self.text, bg="#ffffe0", fg="black", relief="solid", borderwidth=1)
        label.pack()

    def hide_tooltip(self, event):
        if self.tooltip:
            self.tooltip.destroy()
            self.tooltip = None

def save_data(data):
    with open("metrics_data.json", "w") as f:
        json.dump(data, f)

def load_data():
    if os.path.exists("metrics_data.json"):
        with open("metrics_data.json", "r") as f:
            return json.load(f)
    return None
```

#### `src/charts.py`
```python
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
import tkinter as tk

def show_chart(entries, root):
    metrics = {}
    for entry_name, entry in entries.items():
        value = entry.get().strip()
        if value:
            try:
                metrics[entry_name] = float(value)
            except ValueError:
                pass

    if not metrics:
        return

    fig, ax = plt.subplots()
    labels = []
    values = []
    for label, value in metrics.items():
        labels.append(label.replace("entry_", ""))
        values.append(value)

    ax.bar(labels, values)
    ax.set_title("Metrics Overview")
    plt.xticks(rotation=45)

    chart_window = tk.Toplevel(root)
    chart_window.title("Metrics Chart")
    canvas = FigureCanvasTkAgg(fig, master=chart_window)
    canvas.draw()
    canvas.get_tk_widget().pack(fill="both", expand=True)
```

#### `assets/light_theme.json`
```json
{
    "bg": "#f0f2f5",
    "styles": {
        "TEntry": {
            "fieldbackground": "#ffffff",
            "foreground": "#333333",
            "borderwidth": 0,
            "relief": "flat",
            "padding": 5,
            "font": ["Helvetica", 10],
            "map": {
                "fieldbackground": [["focus", "#e8f0fe"]]
            }
        },
        "TButton": {
            "background": "#4285f4",
            "foreground": "#ffffff",
            "borderwidth": 0,
            "font": ["Helvetica", 10, "bold"],
            "padding": 8,
            "map": {
                "background": [["active", "#3267d6"]]
            }
        },
        "TLabel": {
            "background": "#f0f2f5",
            "foreground": "#333333",
            "font": ["Helvetica", 10]
        },
        "TSeparator": {
            "background": "#cccccc"
        }
    }
}
```

#### `assets/dark_theme.json`
```json
{
    "bg": "#2d2d2d",
    "styles": {
        "TEntry": {
            "fieldbackground": "#404040",
            "foreground": "#ffffff",
            "borderwidth": 0,
            "relief": "flat",
            "padding": 5,
            "font": ["Helvetica", 10],
            "map": {
                "fieldbackground": [["focus", "#505050"]]
            }
        },
        "TButton": {
            "background": "#4285f4",
            "foreground": "#ffffff",
            "borderwidth": 0,
            "font": ["Helvetica", 10, "bold"],
            "padding": 8,
            "map": {
                "background": [["active", "#3267d6"]]
            }
        },
        "TLabel": {
            "background": "#2d2d2d",
            "foreground": "#ffffff",
            "font": ["Helvetica", 10]
        },
        "TSeparator": {
            "background": "#666666"
        }
    }
}
```

---

### Как собрать и запустить
1. **Создайте структуру проекта**:
   - Создайте папку `DigitalMarketingMetrics`.
   - Внутри создайте папки `src` и `assets`.
   - Скопируйте файлы в соответствующие папки как указано выше.

2. **Установите зависимости**:
   ```
   pip install pyinstaller matplotlib
   ```

3. **Запустите приложение**:
   ```
   cd DigitalMarketingMetrics/src
   python main.py
   ```

4. **Скомпилируйте в .exe**:
   ```
   cd DigitalMarketingMetrics
   pyinstaller --onefile --add-data "assets;assets" src/main.py
   ```
   - Флаг `--add-data "assets;assets"` добавляет папку `assets` в сборку.
   - Используйте `;` для Windows. Для других ОС замените на `:`.
   - Исполняемый файл появится в папке `dist`.

5. **Запустите .exe**:
   - Найдите `main.exe` в `dist` и запустите.

---

### Что реализовано
#### Интерфейс:
- Тёмная/светлая тема с переключателем.
- Подсветка активных полей (фокус меняет цвет фона).
- Разделительные линии между формулами.
- Иконки не добавлены (нужны файлы .png, могу предложить позже).
- Анимация кнопки через `map` (цвет при нажатии).
- Статусная строка с датой расчёта и сообщениями.

#### Функциональность:
- Сохранение/загрузка данных в JSON.
- Кнопка "Очистить".
- Подсказки для полей (tooltips).
- Расширенные расчёты (CPL, RPM) с проверкой связности и предупреждениями.
- Графики через `matplotlib` в отдельном окне.
- Мультиязычность (RU/EN).

---

### Пример интерфейса
```
[Тёмная тема] [Язык: RU/EN]
[CTR (Кликабельность)                ]
[Процент кликов от общего числа...   ]
[Количество показов: [____] ] | [Количество кликов: [____] ]
----------------------------------------
[...и так далее...                   ]
[Рассчитать] [Очистить]
[Результаты:                        ] (мин. высота 250px)
[CTR (Кликабельность): 5.00%        ]
[CPC (Стоимость за клик): $0.20     ]
[Сохранить в файл] [Загрузить из файла] [Последний расчёт: 08.03.2025 14:30]
```

---

### Примечания
- Для иконок нужно добавить файлы в `assets/icons/` и обновить код.
- Графики простые (столбчатые), можно улучшить (например, цветовая кодировка).

Если всё работает, скажите, что ещё улучшить! Если есть ошибки, сообщите детали, и я исправлю.

  • Статья
Digital-Marketing Analytics Ключевые показатели для рекламы в Google, социальных сетях и email-маркетинга

Ключевые показатели для рекламы в Google, социальных сетях и email-маркетинга.
Каждый из этих каналов имеет свои особенности, и важность KPI зависит от целей кампании.
Разберём их по отдельности:

1. Реклама в Google (Google Ads)​

  • CTR (Кликабельность)
    • Почему ключевой: Показывает релевантность объявлений и ключевых слов.
    • Цель: Выше 2-5%.
    • Пример: 1000 показов, 50 кликов = CTR 5%.
  • CPC (Стоимость за клик)
    • Почему ключевой: Определяет эффективность бюджета.
    • Цель: Снизить CPC, сохраняя качество трафика.
    • Пример: $10 на рекламу, 200 кликов = CPC $0.05.
  • CPA (Стоимость за действие)
    • Почему ключевой: Показывает стоимость конверсии (покупка, регистрация).
    • Цель: CPA ниже среднего чека или LTV.
    • Пример: $50 на рекламу, 50 покупок = CPA $1.
  • CR (Конверсия)
    • Почему ключевой: Оценивает эффективность сайта в превращении кликов в действия.
    • Цель: 1-3% для e-commerce, 5-10% для заявок.
    • Пример: 100 кликов, 3 покупки = CR 3%.
  • ROAS (Возврат затрат на рекламу)
    • Почему ключевой: Показывает доходность рекламы.
    • Цель: ROAS выше 3-4.
    • Пример: $10 затрат, $40 дохода = ROAS 4.
  • Traffic (Трафик)
    • Почему ключевой: Базовый показатель охвата.
    • Цель: Увеличение качественного трафика.
Приоритет: CPA, ROAS, CR — для продаж; CTR, CPC — для оптимизации и трафика.

2. Социальные сети (SMM)​

  • Engagement Rate (Уровень вовлечённости)
    • Почему ключевой: Показывает интерес аудитории к контенту.
    • Цель: 3-10%.
    • Пример: 1000 подписчиков, 50 взаимодействий = 5%.
  • CTR (Кликабельность)
    • Почему ключевой: Оценивает эффективность рекламных постов.
    • Цель: 1-3%.
    • Пример: 1000 показов, 20 кликов = CTR 2%.
  • CPC (Стоимость за клик)
    • Почему ключевой: Важно для платной рекламы в соцсетях.
    • Цель: Обычно $0.005-$0.05 (зависит от ниши).
    • Пример: $5 на рекламу, 100 кликов = CPC $0.05.
  • CPA (Стоимость за действие)
    • Почему ключевой: Показывает эффективность конверсий из рекламы.
    • Цель: Минимизировать CPA относительно дохода.
    • Пример: $20 на рекламу, 10 заявок = CPA $2.
  • Traffic (Трафик)
    • Почему ключевой: Измеряет переходы на сайт.
    • Цель: Увеличение целевого трафика.
  • ROAS (Возврат затрат на рекламу)
    • Почему ключевой: Для коммерческих кампаний.
    • Цель: ROAS выше 3-5.
    • Пример: $10 затрат, $50 дохода = ROAS 5.
Приоритет: Engagement Rate — для узнаваемости; CPA, CTR, ROAS — для продаж.

3. Email-маркетинг​

  • Open Rate (Процент открытий)
    • Почему ключевой: Показывает интерес к теме письма и отправителю.
    • Цель: 15-25%.
    • Пример: 1000 доставлено, 200 открыто = 20%.
  • CTR (Кликабельность)
    • Почему ключевой: Оценивает эффективность контента и CTA.
    • Цель: 2-5%.
    • Пример: 200 открытий, 10 кликов = CTR 5%.
  • CR (Конверсия)
    • Почему ключевой: Сколько получателей совершили действие после клика.
    • Цель: 1-5%.
    • Пример: 100 кликов, 3 покупки = CR 3%.
  • Bounce Rate (Показатель отказов)
    • Почему ключевой: Высокий показатель вредит репутации отправителя.
    • Цель: Ниже 2%.
    • Пример: 1000 отправлено, 20 не доставлено = 2%.
  • LTV (Пожизненная ценность клиента)
    • Почему ключевой: Оценивает долгосрочную выгоду от подписчиков.
    • Цель: Рост LTV через персонализацию.
    • Пример: Клиент приносит $5 × 4 покупки × 3 года = LTV $60.
  • Unsubscribe Rate (Процент отписок)
    • Почему ключевой: Указывает на релевантность контента.
    • Цель: Ниже 0.5%.
    • Пример: 1000 доставлено, 3 отписки = 0.3%.
Приоритет: Open Rate, CTR — для качества рассылки; CR, LTV — для продаж и удержания.

Сравнительная таблица ключевых показателей​

КаналОсновные KPIВторостепенные KPI
Google AdsCPA, ROAS, CR, CTR, CPCTraffic, Bounce Rate
Соцсети (SMM)Engagement Rate, CPA, CTR, ROASTraffic, CPC
Email-маркетингOpen Rate, CTR, CR, LTVBounce Rate, Unsubscribe Rate

Примеры с $:​

  • Google Ads: Потратили $10, получили $40 дохода (ROAS = 4), CPA = $1 за покупку.
  • Соцсети: $5 на рекламу, 100 кликов (CPC = $0.05), 10 заявок (CPA = $0.5).
  • Email: Средний чек $5, клиент покупает 4 раза в год 3 года (LTV = $60).

  • Статья
Digital-Marketing Analytics Cамые важные показатели в Digital-Marketing:

Самые важные показатели в Digital-Marketing:​

  1. CTR (Click-Through Rate) — Кликабельность
    • Что это: Процент людей, кликнувших на рекламу или ссылку, от общего числа тех, кто её увидел.
    • Формула: (Количество кликов / Количество показов) × 100.
    • Почему важен: Показывает, насколько привлекательным является ваш контент или реклама.
    • Пример: CTR 5% означает, что из 100 человек, увидевших рекламу, 5 кликнули.
  2. CPC (Cost Per Click) — Стоимость за клик
    • Что это: Сколько вы платите за один клик на рекламу.
    • Формула: Общий бюджет рекламы / Количество кликов.
    • Почему важен: Помогает оценить эффективность затрат на платную рекламу.
    • Пример: Если вы потратили 1000 грн. и получили 200 кликов, CPC = 5 грн.
  3. CPA (Cost Per Action) — Стоимость за действие
    • Что это: Сколько стоит достижение конкретной цели (покупка, регистрация и т.д.).
    • Формула: Общие затраты / Количество выполненных действий.
    • Почему важен: Показывает рентабельность кампании для конверсий.
    • Пример: Если вы потратили 5000 грн. и получили 50 покупок, CPA = 100 грн.
  4. ROAS (Return on Advertising Spend) — Возврат затрат на рекламу
    • Что это: Соотношение дохода от рекламы к затратам на неё.
    • Формула: Доход от рекламы / Затраты на рекламу.
    • Почему важен: Показывает, окупается ли реклама.
    • Пример: Если вы потратили 1000 грн. и заработали 5000 грн., ROAS = 5 (5 грн. дохода на 1 грн. затрат).
  5. CR (Conversion Rate) — Конверсия
    • Что это: Процент пользователей, совершивших желаемое действие (покупка, заполнение формы) от общего числа посетителей.
    • Формула: (Количество конверсий / Количество посетителей) × 100.
    • Почему важен: Указывает на эффективность сайта или страницы в превращении посетителей в клиентов.
    • Пример: CR 2% означает, что из 1000 посетителей 20 совершили покупку.
  6. LTV (Lifetime Value) — Пожизненная ценность клиента
    • Что это: Общий доход, который приносит один клиент за всё время сотрудничества с вашим бизнесом.
    • Формула: Средний чек × Количество покупок за период × Средний срок жизни клиента.
    • Почему важен: Помогает понять, сколько можно инвестировать в привлечение клиента.
    • Пример: Если клиент покупает на 500 грн. 4 раза в год в течение 3 лет, LTV = 500 × 4 × 3 = 6000 грн.
  7. Bounce Rate — Показатель отказов
    • Что это: Процент посетителей, покинувших сайт после просмотра только одной страницы.
    • Формула: (Количество отказов / Общее количество посетителей) × 100.
    • Почему важен: Высокий показатель может указывать на проблемы с контентом, дизайном или релевантностью трафика.
    • Пример: Bounce Rate 70% означает, что 70% посетителей не пошли дальше первой страницы.
  8. Traffic (Трафик) — Количество посетителей
    • Что это: Общее число людей, посетивших сайт или страницу за определённый период.
    • Почему важен: Базовый показатель для оценки охвата и вовлечённости аудитории.
    • Пример: 10 000 уникальных посетителей за месяц.
  9. Engagement Rate — Уровень вовлечённости
    • Что это: Показатель активности аудитории в социальных сетях (лайки, комментарии, репосты).
    • Формула: (Сумма взаимодействий / Количество подписчиков или охват) × 100.
    • Почему важен: Показывает, насколько контент интересен аудитории.
    • Пример: Если пост получил 200 взаимодействий при 1000 подписчиков, Engagement Rate = 20%.
  10. ROI (Return on Investment) — Рентабельность инвестиций
    • Что это: Показатель общей прибыльности маркетинговых усилий.
    • Формула: (Доход - Затраты) / Затраты × 100.
    • Почему важен: Помогает понять, стоит ли продолжать вкладывать деньги в кампанию.
    • Пример: Если вы потратили 2000 грн. и заработали 6000 грн., ROI = (6000 - 2000) / 2000 × 100 = 200%.

Зависимость от целей​

  • Если цель — узнаваемость бренда: фокус на CTR, Traffic, Engagement Rate.
  • Если цель — продажи: важны CPA, ROAS, CR, LTV.
  • Если цель — оптимизация бюджета: смотрите на CPC, ROI.
Эти показатели универсальны, но их важность зависит от вашей стратегии. Если у вас есть конкретный контекст (например, реклама в Google, соцсети или email-маркетинг), вы можете подробнее узнать от этом в ЭТОЙ ТЕМЕ

  • Статья
Other Где можно запускать рекламу и какие платформы доступны?

Где можно запускать рекламу и какие платформы доступны?


Реклама бывает разной: контекстной, таргетированной, баннерной, видеорекламой и даже рекламой в мессенджерах. Давай разберем, какие платформы предлагают инструменты для запуска рекламы.




1. Контекстная реклама (поисковые системы)


Контекстная реклама показывается в результатах поиска и на сайтах-партнерах рекламных систем. Это работает по принципу аукциона: ты выбираешь ключевые слова, и объявления показываются пользователям, которые их ищут.


🔹 Платформы для запуска контекстной рекламы:
✅ Google Ads – реклама в Google (поиск, YouTube, сайты-партнеры)
✅ Яндекс.Директ – реклама в Яндексе (поиск, РСЯ – рекламная сеть Яндекса)


📌 Форматы контекстной рекламы:


  • Поисковая реклама – показывается в результатах поиска
  • Реклама в сетях (РСЯ, GDN) – баннеры на сайтах-партнерах
  • Динамические объявления – автоматическая генерация рекламы на основе контента сайта
  • Ремаркетинг – догоняет пользователей, которые уже заходили на сайт



2. Реклама в социальных сетях (таргетированная реклама)


Таргетированная реклама позволяет показывать объявления пользователям, исходя из их интересов, возраста, пола, геолокации и других параметров.


🔹 Основные платформы:
✅ Meta Ads (Facebook + Instagram) – можно настраивать рекламу в Facebook, Instagram, Messenger и Audience Network
✅ TikTok Ads – рекламные объявления внутри ленты TikTok
✅ VK Реклама – продвижение в ВКонтакте
✅ MyTarget – реклама в Одноклассниках, ВКонтакте, Mail.ru и других сервисах VK Group
✅ LinkedIn Ads – реклама в LinkedIn, нацеленная на профессионалов и бизнес
✅ Twitter Ads (X Ads) – реклама в X (бывший Twitter)


📌 Форматы рекламы в соцсетях:


  • Лента (фото, видео, карусель)
  • Stories и Reels (короткие видео)
  • Реклама в мессенджерах (например, в Facebook Messenger)
  • Реклама в комментариях и новостных блоках (VK, Twitter/X)



3. Видеореклама


Видеореклама отлично подходит для привлечения внимания и вовлечения аудитории.


🔹 Где запускать:
✅ YouTube Ads – через Google Ads, позволяет показывать рекламу перед и во время видео
✅ TikTok Ads – видеообъявления внутри TikTok
✅ VK Видео – реклама в видеороликах ВКонтакте


📌 Форматы видеорекламы:


  • In-Stream Ads – ролики перед видео
  • Bumper Ads – короткие (до 6 секунд) ролики, которые нельзя пропустить
  • In-Feed Ads – реклама внутри ленты



4. Реклама в мессенджерах


Мессенджеры стали отличной площадкой для рекламы, особенно для бизнеса, который хочет работать с клиентами через чаты.


🔹 Основные платформы:
✅ Telegram Ads – официальная реклама в Telegram
✅ WhatsApp Business Ads – показывается через Facebook Ads (Meta)
✅ Viber Ads – баннеры, сообщения и рассылки в Viber


📌 Форматы рекламы:


  • Спонсированные сообщения (например, в Telegram и WhatsApp)
  • Рекламные баннеры в чатах и группах
  • Рекламные сообщения от бизнес-аккаунтов



5. Баннерная и нативная реклама (на сайтах и в приложениях)


Баннерная реклама размещается на сторонних сайтах и в приложениях, а нативная реклама вписывается в контент (например, как рекламная статья).


🔹 Где запускать:
✅ Google Display Network (GDN) – сеть сайтов-партнеров Google
✅ Яндекс.Директ (РСЯ) – рекламная сеть Яндекса
✅ Programmatic (RTB-реклама) – автоматизированная покупка рекламы через DSP-системы (например, DV360, myTarget)


📌 Форматы баннерной рекламы:


  • Статичные и анимированные баннеры
  • Нативная реклама (рекламные статьи, встроенные объявления)
  • Pop-up и всплывающие окна



6. Дополнительные рекламные площадки


✅ Spotify Ads – аудиореклама в стриминговых сервисах
✅ Twitch Ads – реклама на платформе для стримеров
✅ Pinterest Ads – продвижение товаров в Pinterest




Как выбрать площадку для рекламы?


Все зависит от целей и аудитории:
Хотите быстрые продажи? – Google Ads, Яндекс.Директ, Facebook Ads
Продвигаете бренд через видео? – YouTube, TikTok, VK Видео
Таргетинг на интересы и соцдемографию? – Facebook, Instagram, VK, MyTarget
Хотите работать с бизнес-аудиторией? – LinkedIn Ads, Google Ads
Продаете через мессенджеры? – Telegram Ads, WhatsApp Business


Если нужно разобрать конкретный кейс – спрашивай! 🚀

Other Изучение Python на практике бесплатно

Ну что, начинаю обновлять свой проект со старой структуры
version_0.0.1/

├── app.py
├── config.py
├── errors.py
├── auth.py
├── requirements.txt
├── generate_secret.py
├── wsgi.py
├── .env

├── db/
│ ├── __init__.py
│ ├── models.py

├── static/
│ ├── css/
│ │ └── styles.css
│ └── js/
│ └── scripts.js

├── templates/
│ └── index.html

└── README.md

На новую, перехожу на мвс и ооп:
version_0.0.2/

├── app/
│ ├── __init__.py
│ ├── controllers/
│ │ ├── user_controller.py
│ │ └── auth_controller.py
│ ├── models/
│ │ ├── user_model.py
│ │ └── __init__.py
│ ├── views/
│ │ ├── user_views.py
│ │ └── auth_views.py
│ ├── services/
│ │ ├── user_service.py
│ │ └── auth_service.py
│ ├── utils/
│ │ ├── validators.py
│ │ └── helpers.py
│ ├── static/
│ │ ├── css/
│ │ │ └── styles.css
│ │ └── js/
│ │ └── scripts.js
│ ├── templates/
│ │ └── index.html
│ └── config.py

├── tests/
│ ├── test_user_controller.py
│ ├── test_user_model.py
│ └── test_auth_controller.py

├── requirements.txt
├── wsgi.py
├── generate_secret.py
├── .env
└── README.md

Сегодня будет много практики и продуктивный день 😁

Вложения

  • linguagem-python-1024x579-1.jpg
    linguagem-python-1024x579-1.jpg
    85.9 КБ · Просмотры: 21

Список ресурсов и материалов для изучения английского языка!

Детализированный список ресурсов и материалов для изучения английского языка, разделенный по направлениям, для достижения максимальной эффективности и результата.




1. Лексика и разговорные фразы


Цель: Знать полезные слова и фразы для путешествий и работы в IT и Digital-Marketing.


А. Для путешествий


  • Книги/учебники:
    • “English for Travel” от Express Publishing.
    • “Essential English for Foreign Travelers”.
  • Онлайн-ресурсы:
    • BBC Learning English: раздел “English at the Airport” и “English at Restaurants”.
    • ESL Fast: простые диалоги с текстом и аудио.
  • Приложения:
    • Memrise: тематические курсы по туристической лексике.
    • LingQ: адаптированные тексты для чтения.

Б. Для работы (IT и Digital-Marketing)


  • Темы и слова:
    • IT: "debugging", "algorithm", "API", "front-end", "back-end".
    • Digital Marketing: "campaign", "traffic", "conversion", "ROI".
  • Учебники/курсы:
    • “English for IT” (Oxford English for Careers).
    • “English for Digital Marketing Professionals”.
  • Приложения:
    • Quizlet: создайте набор флеш-карт для технической лексики.
    • Busuu: профессиональный английский.



2. Разговорная практика


Цель: Уверенно общаться на базовом уровне.


А. Занятия с преподавателями


  • Платформы:
    • Italki: занятия с носителями.
    • Preply: репетиторы, специализирующиеся на бизнес-английском.

Б. Разговорные клубы


  • Онлайн-клубы:
  • Группы в Zoom: Ищите локальные разговорные группы на Meetup или Couchsurfing.



3. Аудирование и произношение


Цель: Понимать собеседника и говорить понятно.


А. Подкасты


  • Для начинающих:
    • ESL Pod — короткие уроки с объяснениями.
    • The English We Speak (BBC) — фразы и идиомы в контексте.
  • Для IT и Digital:
    • Syntax Podcast — для разработчиков.
    • Digital Marketing Podcast — о маркетинге.

Б. Видео



В. Произношение


  • Приложение: Elsa Speak (помогает отработать акцент).
  • Практика шэдоуинга: повторяйте за диктором из подкастов или видео.



4. Чтение


Цель: Расширить словарный запас и понимать профессиональные тексты.


А. Простые книги


  • “English Grammar in Use” (Raymond Murphy): простая грамматика с примерами.
  • “Oxford Bookworms”: книги для уровня Beginner.

Б. Статьи


  • TechCrunch: статьи о технологиях.
  • HubSpot Blog: материалы по маркетингу.

В. Тематические сайты


  • W3Schools: учебник по программированию с базовой лексикой.
  • Coursera: курсы на английском по IT и Digital.



5. Грамматика


Цель: Освоить основы и строить правильные предложения.


Учебники:


  • “Grammarway 1” (Jenny Dooley): для начинающих.
  • “Basic Grammar in Use” (Cambridge).

Онлайн-платформы:



Приложения:


  • Grammarly: для проверки текстов.
  • English Grammar in Use App: практика правил.



6. Письменная практика


Цель: Готовить письма, сообщения и заметки.


  • Пишите короткие тексты: email, описание задач, посты в соцсетях.
  • Используйте LangCorrect: сообщество, где носители исправляют тексты.




Вот пример расписания на неделю, которое учитывает ваш уровень Beginner и цели (туризм, работа в IT и Digital-Marketing).




Понедельник


  • Утро (30 мин):
    • Лексика: выучите 10 слов и фраз по теме "Транспорт и аэропорт".
      Приложение: Quizlet или Memrise.
  • Вечер (45 мин):
    • Грамматика: разберите Present Simple (утвердительные и вопросительные предложения).
      Ресурс: “Basic Grammar in Use” или EngVid.
    • Аудирование: послушайте подкаст “The English We Speak” (тема: "Making a Reservation").



Вторник


  • Утро (30 мин):
    • Лексика: изучите 10 слов и фраз из Digital-Marketing (например, "SEO", "advertising", "content").
      Ресурс: HubSpot Blog.
  • Вечер (45 мин):
    • Разговорная практика: тренируйтесь с преподавателем на Italki или через Tandem.
    • Чтение: прочитайте простую статью по IT на W3Schools.



Среда


  • Утро (30 мин):
    • Лексика: фразы для гостиницы и бронирования.
      Пример:
      • "I have a reservation."
      • "Can I have a room with a view?"
    • Практикуйте их с помощью флеш-карт (Anki).
  • Вечер (1 час):
    • Грамматика: изучите Past Simple. Практикуйте примеры:



Четверг


  • Утро (30 мин):
    • Аудирование: смотрите видео на BBC Learning English, раздел “English at Restaurants”.
    • Произнесите ключевые фразы вслух.
  • Вечер (1 час):
    • Чтение: прочитайте статью о Digital-Marketing на Neil Patel Blog.
    • Письменная практика: напишите 5 предложений о своей работе (например, "I work in IT. I create websites.").



Пятница


  • Утро (30 мин):
    • Повторение: пересмотрите слова и фразы недели, используя Anki или Quizlet.
  • Вечер (1 час):
    • Разговорная практика: участвуйте в разговорном клубе через Tandem.
    • Грамматика: изучите Future Simple.



Суббота


  • Утро (1 час):
    • Лексика: фразы для общения на конференциях (например, "Nice to meet you.", "What do you do?").
    • Чтение: адаптированная книга из серии Oxford Bookworms.
  • Вечер (45 мин):
    • Слушайте подкаст о технологиях (например, Syntax Podcast).
    • Практика шэдоуинга: повторяйте за диктором.



Воскресенье


  • Утро (1 час):
    • Итоговое повторение: проверьте свои знания с помощью упражнений.
      Ресурс: Busuu или Duolingo.
  • День (45 мин):
    • Пишите короткий текст на тему "Моя работа" или "Мое путешествие".
    • Отправьте текст на LangCorrect для проверки.



Этот график можно корректировать под ваш ритм. Если нужно, могу адаптировать его или дополнить!

  • Статья
Что такое маркетинговая воронка (Marketing Funnel) или воронка продаж (Sales Funnel)?

В Digital Marketing этот процесс чаще всего называют маркетинговая воронка (Marketing Funnel) или воронка продаж (Sales Funnel).

Что это такое?


Воронка продаж – это модель, которая описывает путь пользователя от первого контакта с брендом до совершения целевого действия (покупки, подписки, заявки и даже дальше — до повторных продаж и рекомендаций). Она помогает понять, на каком этапе клиенты отваливаются, и оптимизировать процесс для увеличения конверсии.

Этапы воронки продаж (Sales Funnel)


  1. Awareness (Осведомлённость) – человек узнаёт о вашем продукте через рекламу, контент, соцсети.
  2. Interest (Интерес) – изучает ваш сайт, смотрит обзоры, читает статьи, подписывается на рассылку.
  3. Consideration (Рассмотрение) – сравнивает ваш продукт с конкурентами, читает отзывы, задаёт вопросы.
  4. Conversion (Конверсия) – покупает, оставляет заявку или выполняет целевое действие.
  5. Loyalty (Лояльность) – остаётся с вами, совершает повторные покупки, подписывается на рассылки.
  6. Advocacy (Адвокат бренда) – рекомендует вас друзьям, оставляет положительные отзывы.

Примеры воронок

  • Воронка продаж (Sales Funnel) – путь от рекламы до покупки.
  • Воронка контент-маркетинга – процесс вовлечения через полезный контент.
  • E-commerce воронка – пользователь заходит на сайт → добавляет товар в корзину → оплачивает.

Зачем нужна воронка?


  • Помогает анализировать, на каком этапе теряются клиенты.
  • Позволяет оптимизировать маркетинговые кампании.
  • Увеличивает конверсию за счёт точечных улучшений.
  • Позволяет находить слабые места (где теряются клиенты).
  • Помогает оптимизировать маркетинговые стратегии.
  • Увеличивает конверсию и ROI (окупаемость вложений).

В Digital Marketing воронку можно отслеживать с помощью аналитики (Google Analytics, Facebook Pixel, CRM-системы) и тестировать разные стратегии для повышения продаж.

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

  • Статья
Что такое Тестирование гипотез в Digital Marketing"

Тестирование гипотез в Digital Marketing — это процесс проверки предположений о том, какие маркетинговые стратегии, инструменты или изменения дадут наилучший результат. Это помогает находить наиболее эффективные решения для роста бизнеса и увеличения конверсии.


Как это работает?


  1. Формулировка гипотезы
    • Например: «Если изменить цвет кнопки на сайте с синего на красный, то конверсия увеличится».
  2. Определение метрик
    • Какие показатели будут измеряться? (CTR, конверсия, вовлечённость и т. д.)
  3. Запуск теста
    • Чаще всего используется A/B-тестирование (сравниваются две версии: старая и новая).
  4. Анализ результатов
    • Если изменение дало значимый рост показателей, гипотеза подтверждается и внедряется.
  5. Выводы и масштабирование
    • Если гипотеза не сработала, тестируются новые варианты.

Примеры гипотез в Digital Marketing


  • В рекламе: «Изменение заголовка объявления увеличит кликабельность».
  • На сайте: «Добавление видеообзора на страницу товара повысит продажи».
  • В контенте: «Публикация постов в 12:00 даст больше охвата, чем в 18:00».

Вывод:
Тестирование гипотез — это ключевой инструмент для эффективного маркетинга. Оно позволяет не тратить бюджет вслепую, а принимать решения на основе данных.

Маски которые помогают омолодить кожу и уменьшить морщины.

В народной медицине есть множество рецептов масок и компрессов, которые помогают омолодить кожу и уменьшить морщины. Вот несколько эффективных вариантов:


1. Маска из мёда и яичного белка


✔ Подтягивает кожу, уменьшает морщины, увлажняет
🔹 1 яичный белок
🔹 1 ч. л. мёда
🔹 1 ч. л. оливкового масла


Как применять:
Смешать ингредиенты, нанести на лицо на 15–20 минут, затем смыть тёплой водой.


2. Маска из авокадо и сметаны


✔ Питает, омолаживает, делает кожу упругой
🔹 ½ авокадо
🔹 1 ст. л. сметаны


Как применять:
Размять авокадо, смешать со сметаной, нанести на 20 минут, смыть тёплой водой.


3. Картофельный компресс


✔ Осветляет, разглаживает мелкие морщины
🔹 1 сырой картофель
🔹 1 ст. л. молока


Как применять:
Натереть картофель, смешать с молоком, положить массу на марлю и наложить на лицо на 15 минут.


4. Льняной компресс


✔ Глубоко питает, повышает эластичность кожи
🔹 1 ст. л. льняного семени
🔹 1 стакан воды


Как применять:
Залить семена кипятком, дать настояться до образования геля, смочить марлю и наложить на лицо на 20 минут.


5. Огуречно-алоэ вера маска


✔ Увлажняет, освежает, снимает усталость
🔹 ½ огурца
🔹 1 ст. л. геля алоэ вера


Как применять:
Натереть огурец, смешать с алоэ, нанести на лицо на 15 минут, смыть прохладной водой.


Используй 2–3 раза в неделю для лучшего эффекта! Какой рецепт хочешь попробовать?

Если небольшой ожог (без волдырей и повреждения глубоких слоёв кожи

Если у вас небольшой ожог (без волдырей и повреждения глубоких слоёв кожи), можно использовать подручные средства для облегчения боли и ускорения заживления:


Что делать сразу


  1. Охладить место ожога – подержите поражённое место под прохладной (не ледяной!) водой 10–15 минут.
  2. Не трогать и не тереть – это может усилить повреждение кожи.

Домашние средства для лечения ожога


✅ Алое вера – если есть дома, отломите лист, выдавите гель и нанесите на ожог. Успокаивает и ускоряет заживление.
✅ Мёд – обладает антисептическими и заживляющими свойствами. Нанесите тонким слоем.
✅ Холодное молоко или сметана – помогает снять жар и увлажняет кожу.
✅ Картофель – разрежьте сырой картофель и приложите к ожогу (снимает жжение).
✅ Чайные пакетики – смочите прохладной водой и приложите (танин помогает снять воспаление).
✅ Оливковое или кокосовое масло – после охлаждения ожога можно нанести для увлажнения.


Чего нельзя делать


❌ Не смазывайте ожог маслом или жиром сразу после травмы – это задержит тепло в коже.
❌ Не используйте спирт, йод, зелёнку – они раздражают кожу.
❌ Не прокалывайте волдыри (если появились).


Если кожа начнёт сильно болеть, покраснеет или появятся признаки инфекции – лучше обратиться к врачу.

  • Статья
Обзор аккаунта

1738963865999.png


"Включите автоматические корректировки, чтобы оптимизировать результативность кампании
Автоматическое применение рекомендаций по результативности поможет оптимизировать кампанию. Выберите, какие корректировки применять автоматически. Их можно отключить в любой момент.Потенциальные результаты: Больше результатов для затронутых кампаний"

Настройка «Обзор аккаунта» в Meta Ads Manager с включением автоматических корректировок позволяет рекламодателям получать автоматические улучшения на основе рекомендаций платформы.


Как это работает?


Meta использует алгоритмы машинного обучения для анализа вашей рекламной кампании и предлагает автоматически вносить изменения, которые, по мнению системы, могут повысить эффективность рекламы.


На что влияет?


  1. Автоматическое внедрение рекомендаций – Meta может менять:
    • Бюджеты (например, перераспределять между группами объявлений).
    • Аудитории (корректировать таргетинг).
    • Форматы объявлений.
    • Оптимизационные стратегии (например, менять цели оптимизации).
  2. Рост эффективности – если алгоритм определит, что можно получить больше конверсий или уменьшить стоимость за результат, он применит изменения без вашего участия.
  3. Гибкость – рекламодатель может выбрать, какие именно корректировки применять автоматически, а какие оставить под своим контролем.

Стоит ли включать?


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

Если хотите протестировать, включите и мониторьте результаты. При необходимости отключите, если алгоритм вносит нежелательные изменения. 🚀

Конституция Украины и Законы, для защиты своих прав и свободы от Гестапо и Диктаторского режима в Укр!

Розділ I
ЗАГАЛЬНІ ЗАСАДИ

Стаття 3.
Людина, її життя і здоров'я, честь і гідність, недоторканність і безпека визнаються в Україні найвищою соціальною цінністю.

Стаття 5.
Україна є республікою.

Стаття 8.
В Україні визнається і діє принцип верховенства права.

Конституція України має найвищу юридичну силу. Закони та інші нормативно-правові акти приймаються на основі Конституції України і повинні відповідати їй.

Норми Конституції України є нормами прямої дії. Звернення до суду для захисту конституційних прав і свобод людини і громадянина безпосередньо на підставі Конституції України гарантується.

Стаття 13.
Земля, її надра, атмосферне повітря, водні та інші природні ресурси, які знаходяться в межах території України, природні ресурси її континентального шельфу, виключної (морської) економічної зони є об'єктами права власності Українського народу. Від імені Українського народу права власника здійснюють органи державної влади та органи місцевого самоврядування в межах, визначених цією Конституцією.

Кожний громадянин має право користуватися природними об'єктами права власності народу відповідно до закону.

Власність зобов'язує. Власність не повинна використовуватися на шкоду людині і суспільству.

Держава забезпечує захист прав усіх суб'єктів права власності і господарювання, соціальну спрямованість економіки. Усі суб'єкти права власності рівні перед законом.


Стаття 17
Збройні Сили України та інші військові формування ніким не можуть бути використані для обмеження прав і свобод громадян або з метою повалення конституційного ладу, усунення органів влади чи перешкоджання їх діяльності.

Держава забезпечує соціальний захист громадян України, які перебувають на службі у Збройних Силах України та в інших військових формуваннях, а також членів їхніх сімей.

Стаття 19.
Правовий порядок в Україні ґрунтується на засадах, відповідно до яких ніхто не може бути примушений робити те, що не передбачено законодавством.
Органи державної влади та органи місцевого самоврядування, їх посадові особи зобов'язані діяти лише на підставі, в межах повноважень та у спосіб, що передбачені Конституцією та законами України.

Стаття 20.
Державними символами України є Державний Прапор України, Державний Герб України і Державний Гімн України.

Державний Прапор України - стяг із двох рівновеликих горизонтальних смуг синього і жовтого кольорів.

Великий Державний Герб України встановлюється з урахуванням малого Державного Герба України та герба Війська Запорізького законом, що приймається не менш як двома третинами від конституційного складу Верховної Ради України.

Головним елементом великого Державного Герба України є Знак Княжої Держави Володимира Великого (малий Державний Герб України).

Опис державних символів України та порядок їх використання встановлюються законом, що приймається не менш як двома третинами від конституційного складу Верховної Ради України.



Розділ II
ПРАВА, СВОБОДИ ТА ОБОВ'ЯЗКИ ЛЮДИНИ І ГРОМАДЯНИНА

Стаття 21.
Усі люди є вільні і рівні у своїй гідності та правах. Права і свободи людини є невідчужуваними та непорушними.

Стаття 22.
Права і свободи людини і громадянина, закріплені цією Конституцією, не є вичерпними.

Конституційні права і свободи гарантуються і не можуть бути скасовані.

При прийнятті нових законів або внесенні змін до чинних законів не допускається звуження змісту та обсягу існуючих прав і свобод.

Стаття 23.
Кожна людина має право на вільний розвиток своєї особистості, якщо при цьому не порушуються права і свободи інших людей, та має обов'язки перед суспільством, в якому забезпечується вільний і всебічний розвиток її особистості.

Стаття 24. Громадяни мають рівні конституційні права і свободи та є рівними перед законом.

Не може бути привілеїв чи обмежень за ознаками раси, кольору шкіри, політичних, релігійних та інших переконань, статі, етнічного та соціального походження, майнового стану, місця проживання, за мовними або іншими ознаками.

Стаття 27.
Кожна людина має невід'ємне право на життя.
Ніхто не може бути свавільно позбавлений життя. Обов'язок держави - захищати життя людини.

Кожен має право захищати своє життя і здоров'я, життя і здоров'я інших людей від протиправних посягань.

Стаття 28.
Кожен має право на повагу до його гідності.

Ніхто не може бути підданий катуванню, жорстокому, нелюдському або такому, що принижує його гідність, поводженню чи покаранню.

Стаття 29.
Кожна людина має право на свободу та особисту недоторканність.
Ніхто не може бути заарештований або триматися під вартою інакше як за вмотивованим рішенням суду і тільки на підставах та в порядку, встановлених законом.

У разі нагальної необхідності запобігти злочинові чи його перепинити уповноважені на те законом органи можуть застосувати тримання особи під вартою як тимчасовий запобіжний захід, обґрунтованість якого протягом сімдесяти двох годин має бути перевірена судом. Затримана особа негайно звільняється, якщо протягом сімдесяти двох годин з моменту затримання їй не вручено вмотивованого рішення суду про тримання під вартою.
Про арешт або затримання людини має бути негайно повідомлено родичів заарештованого чи затриманого.

Стаття 31.
Кожному гарантується таємниця листування, телефонних розмов, телеграфної та іншої кореспонденції. Винятки можуть бути встановлені лише судом у випадках, передбачених законом, з метою запобігти злочинові чи з'ясувати істину під час розслідування кримінальної справи, якщо іншими способами одержати інформацію неможливо.

Стаття 32.
Ніхто не може зазнавати втручання в його особисте і сімейне життя, крім випадків, передбачених Конституцією України.
(положенню частини першої статті 32 дано офіційне тлумачення згідно з Рішенням Конституційного Суду України від 20.01.2012 р. N 2-рп/2012) (https://ips.ligazakon.net/document/view/ks12002?ed=2012_01_20&an=65)

Не допускається збирання, зберігання, використання та поширення конфіденційної інформації про особу без її згоди, крім випадків, визначених законом, і лише в інтересах національної безпеки, економічного добробуту та прав людини.

(положенню частини другої статті 32 дано офіційне тлумачення згідно з Рішенням Конституційного Суду України від 20.01.2012 р. N 2-рп/2012) (https://ips.ligazakon.net/document/view/ks12002?ed=2012_01_20&an=65)

Кожний громадянин має право знайомитися в органах державної влади, органах місцевого самоврядування, установах і організаціях з відомостями про себе, які не є державною або іншою захищеною законом таємницею.

Кожному гарантується судовий захист права спростовувати недостовірну інформацію про себе і членів своєї сім'ї та права вимагати вилучення будь-якої інформації, а також право на відшкодування матеріальної і моральної шкоди, завданої збиранням, зберіганням, використанням та поширенням такої недостовірної інформації.
Кожному заарештованому чи затриманому має бути невідкладно повідомлено про мотиви арешту чи затримання, роз'яснено його права та надано можливість з моменту затримання захищати себе особисто та користуватися правничою допомогою захисника.

Стаття 33.
Кожному, хто на законних підставах перебуває на території України, гарантується свобода пересування, вільний вибір місця проживання, право вільно залишати територію України, за винятком обмежень, які встановлюються законом.

Громадянин України не може бути позбавлений права в будь-який час повернутися в Україну.

Стаття 34.
Кожному гарантується право на свободу думки і слова, на вільне вираження своїх поглядів і переконань.

Кожен має право вільно збирати, зберігати, використовувати і поширювати інформацію усно, письмово або в інший спосіб - на свій вибір.

(положенню частини другої статті 34 дано офіційне тлумачення згідно з Рішенням Конституційного Суду України від 20.01.2012 р. N 2-рп/2012) (https://ips.ligazakon.net/document/view/ks12002?ed=2012_01_20&an=65)

Здійснення цих прав може бути обмежене законом в інтересах національної безпеки, територіальної цілісності або громадського порядку з метою запобігання заворушенням чи злочинам, для охорони здоров'я населення, для захисту репутації або прав інших людей, для запобігання розголошенню інформації, одержаної конфіденційно, або для підтримання авторитету і неупередженості правосуддя.


(положенню частини третьої статті 34 дано офіційне тлумачення згідно з Рішенням Конституційного Суду України від 20.01.2012 р. N 2-рп/2012) (https://ips.ligazakon.net/document/view/ks12002?ed=2012_01_20&an=65)

Стаття 40. Усі мають право направляти індивідуальні чи колективні письмові звернення або особисто звертатися до органів державної влади, органів місцевого самоврядування та посадових і службових осіб цих органів, що зобов'язані розглянути звернення і дати обґрунтовану відповідь у встановлений законом строк.

Стаття 46. Громадяни мають право на соціальний захист, що включає право на забезпечення їх у разі повної, часткової або тимчасової втрати працездатності, втрати годувальника, безробіття з незалежних від них обставин, а також у старості та в інших випадках, передбачених законом.

Це право гарантується загальнообов'язковим державним соціальним страхуванням за рахунок страхових внесків громадян, підприємств, установ і організацій, а також бюджетних та інших джерел соціального забезпечення; створенням мережі державних, комунальних, приватних закладів для догляду за непрацездатними.

Пенсії, інші види соціальних виплат та допомоги, що є основним джерелом існування, мають забезпечувати рівень життя, не нижчий від прожиткового мінімуму, встановленого законом.


Стаття 49.
Кожен має право на охорону здоров'я, медичну допомогу та медичне страхування.

Охорона здоров'я забезпечується державним фінансуванням відповідних соціально-економічних, медико-санітарних і оздоровчо-профілактичних програм.

Держава створює умови для ефективного і доступного для всіх громадян медичного обслуговування. У державних і комунальних закладах охорони здоров'я медична допомога надається безоплатно; існуюча мережа таких закладів не може бути скорочена. Держава сприяє розвиткові лікувальних закладів усіх форм власності.

(положенню частини третьої статті 49 дано офіційне тлумачення згідно з Рішенням Конституційного Суду України від 29.05.2002 р. N 10-рп/2002) (https://ips.ligazakon.net/document/view/ks02042?ed=2002_05_29&an=50)

Держава дбає про розвиток фізичної культури і спорту, забезпечує санітарно-епідемічне благополуччя.


Стаття 53.
Кожен має право на освіту.

Повна загальна середня освіта є обов'язковою.

Держава забезпечує доступність і безоплатність дошкільної, повної загальної середньої, професійно-технічної, вищої освіти в державних і комунальних навчальних закладах; розвиток дошкільної, повної загальної середньої, позашкільної, професійно-технічної, вищої і післядипломної освіти, різних форм навчання; надання державних стипендій та пільг учням і студентам.

(положенням частини третьої статті 53 "держава забезпечує доступність і безоплатність дошкільної, повної загальної середньої, професійно-технічної, вищої освіти в державних і комунальних навчальних закладах" у контексті частин першої, другої, четвертої зазначеної статті дано офіційне тлумачення згідно з Рішенням Конституційного Суду України від 04.03.2004 р. N 5-рп/2004) (https://ips.ligazakon.net/document/view/ks04005?ed=2004_03_04&an=72)

Громадяни мають право безоплатно здобути вищу освіту в державних і комунальних навчальних закладах на конкурсній основі.

Громадянам, які належать до національних меншин, відповідно до закону гарантується право на навчання рідною мовою чи на вивчення рідної мови у державних і комунальних навчальних закладах або через національні культурні товариства.
Громадяни мають право безоплатно здобути вищу освіту в державних і комунальних навчальних закладах на конкурсній основі.


Стаття 55. Права і свободи людини і громадянина захищаються судом.

(положенню частини першої статті 55 дано офіційне тлумачення згідно з Рішенням Конституційного Суду України від 25.12.97 р. N 9-зп) (https://ips.ligazakon.net/document/view/ks97009?ed=1997_12_25&an=60)

Кожному гарантується право на оскарження в суді рішень, дій чи бездіяльності органів державної влади, органів місцевого самоврядування, посадових і службових осіб.

(положенню частини другої статті 55 дано офіційне тлумачення згідно з Рішенням Конституційного Суду України від 25.11.97 р. N 6-зп) (https://ips.ligazakon.net/document/view/ks97006?ed=1997_11_25&an=51)

Кожен має право звертатися за захистом своїх прав до Уповноваженого Верховної Ради України з прав людини.

Кожному гарантується право звернутись із конституційною скаргою до Конституційного Суду України з підстав, установлених цією Конституцією, та у порядку, визначеному законом.


(статтю 55 доповнено новою частиною четвертою згідно із Законом України від 02.06.2016 р. N 1401-VIII,у зв'язку з цим частини четверту, п'яту вважати відповідно частинами п'ятою, шостою) (https://ips.ligazakon.net/document/view/t161401?ed=2016_06_02&an=136)

Кожен має право після використання всіх національних засобів юридичного захисту звертатися за захистом своїх прав і свобод до відповідних міжнародних судових установ чи до відповідних органів міжнародних організацій, членом або учасником яких є Україна.

(частина п'ята статті 55 із змінами, внесеними згідно із Законом України від 02.06.2016 р. N 1401-VIII) (https://ips.ligazakon.net/document/view/t161401?ed=2016_06_02&an=139)

Кожен має право будь-якими не забороненими законом засобами захищати свої права і свободи від порушень і протиправних посягань.

Громадянам, які належать до національних меншин, відповідно до закону гарантується право на навчання рідною мовою чи на вивчення рідної мови у державних і комунальних навчальних закладах або через національні культурні товариства.
Громадяни мають право безоплатно здобути вищу освіту в державних і комунальних навчальних закладах на конкурсній основі.

Громадянам, які належать до національних меншин, відповідно до закону гарантується право на навчання рідною мовою чи на вивчення рідної мови у державних і комунальних навчальних закладах або через національні культурні товариства.


Стаття 56. Кожен має право на відшкодування за рахунок держави чи органів місцевого самоврядування матеріальної та моральної шкоди, завданої незаконними рішеннями, діями чи бездіяльністю органів державної влади, органів місцевого самоврядування, їх посадових і службових осіб при здійсненні ними своїх повноважень.

Стаття 57. Кожному гарантується право знати свої права і обов'язки.

Закони та інші нормативно-правові акти, що визначають права і обов'язки громадян, мають бути доведені до відома населення у порядку, встановленому законом.

Закони та інші нормативно-правові акти, що визначають права і обов'язки громадян, не доведені до відома населення у порядку, встановленому законом, є нечинними.


Стаття 59.
Кожен має право на професійну правничу (https://ips.ligazakon.net/document/view/t161401?ed=2016_06_02&an=141) допомогу. У випадках, передбачених законом, ця допомога надається безоплатно. Кожен є вільним у виборі захисника своїх прав.



Стаття 60.
Ніхто не зобов'язаний виконувати явно злочинні розпорядження чи накази.

За віддання і виконання явно злочинного розпорядження чи наказу настає юридична відповідальність.

Стаття 61.
Ніхто не може бути двічі притягнений до юридичної відповідальності одного виду за одне й те саме правопорушення.

Юридична відповідальність особи має індивідуальний характер.

Стаття 62. Особа вважається невинуватою у вчиненні злочину і не може бути піддана кримінальному покаранню, доки її вину не буде доведено в законному порядку і встановлено обвинувальним вироком суду.
Ніхто не зобов'язаний доводити свою невинуватість у вчиненні злочину.

Обвинувачення не може ґрунтуватися на доказах, одержаних незаконним шляхом, а також на припущеннях. Усі сумніви щодо доведеності вини особи тлумачаться на її користь.

У разі скасування вироку суду як неправосудного держава відшкодовує матеріальну і моральну шкоду, завдану безпідставним засудженням.

Стаття 63. Особа не несе відповідальності за відмову давати показання або пояснення щодо себе, членів сім'ї чи близьких родичів, коло яких визначається законом.

Стаття 64.
Конституційні права і свободи людини і громадянина не можуть бути обмежені, крім випадків, передбачених Конституцією України.

В умовах воєнного або надзвичайного стану можуть встановлюватися окремі обмеження прав і свобод із зазначенням строку дії цих обмежень. Не можуть бути обмежені права і свободи, передбачені статтями 24, 25, 27, 28, 29, 40, 47, 51, 52, 55, 56, 57, 58, 59, 60, 61, 62, 63 цієї Конституції.

(положенням статті 64 дано офіційне тлумачення згідно з Рішенням Конституційного Суду України від 25.12.97 р. N 9-зп) (https://ips.ligazakon.net/document/view/ks97009?ed=1997_12_25&an=61)

——————————————-

Статья 65
Конституции Украины
Защита Отечества, независимости и территориальной целостности Украины, уважение ее государственных символов является обязанностью граждан Украины.

Граждане несут военную службу в соответствии с законом.
+ к ней относится:
Статья 17 Конституции Украины
Защита суверенитета и территориальной целостности Украины, обеспечение ее экономической и информационной безопасности являются важнейшими функциями государства, делом всего Украинского народа.

Оборона Украины, защита ее суверенитета, территориальной целостности и неприкосновенности возлагаются на Вооруженные Силы Украины.

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

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

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

На территории Украины запрещается создание и функционирование любых вооруженных формирований, не предусмотренных законом.

На территории Украины не допускается размещение иностранных военных баз.
Подробнее: https://urst.com.ua/ru/konstitucija/st-17
Стаття 68. Кожен зобов'язаний неухильно додержуватися Конституції України та законів України, не посягати на права і свободи, честь і гідність інших людей.
Незнання законів не звільняє від юридичної відповідальності.

Blog Plugin RU (ru_RU) [Paid]

hideman добавил(а) новый ресурс:

Blog Plugin RU (ru_RU) - Перевод для плагина Blog Plugin

Локализация / Перевод плагина Blog Osclass Plugin RU (ru_RU) .PO и .MO формат.
Русификация - перевод плагина Blog Plugin на другие языки (локализации), для Osclass в формате .PO и .MO локализации!
Перевод плагинов под заказ на любой язык - машинный перевод.

Узнать больше об этом ресурсе...

Backoffice Manager Pro Plugin RU (ru_RU) [Paid]

hideman добавил(а) новый ресурс:

Backoffice Manager Pro Plugin RU (ru_RU) - Перевод для плагина Backoffice

Локализация / Перевод плагина Backoffice Manager Pro RU (ru_RU) .PO и .MO формат.
Русификация - перевод плагина Backoffice Manager Pro на другие языки (локализации), для Osclass в формате .PO и .MO локализации!
Перевод плагинов под заказ на любой язык - машинный перевод.

Узнать больше об этом ресурсе...

Attributes Osclass Plugin RU (ru_RU) [Paid]

hideman добавил(а) новый ресурс:

Attributes Osclass Plugin RU (ru_RU) - Перевод для плагина Attributes

Локализации и Переводы плагинов и модулей .PO и .MO формата.
Русификация - перевод плагинов и модулей на другие языки (локализации), для WP, Osclass и другие CMS, CRM системы, плагины и шаблоны в формате .PO и .MO локализации!

Узнать больше об этом ресурсе...

Переводы и Локализации формата .PO под Заказ

Всем привет!
Если вы ищите перевод плагинов или перевод Шаблонов у которых формат локализации в виде .PO, то мы можем вам помочь перевести за 2$ Перевод машинный от Гугла. За дополнительную плату можем отредактировать и перевод от Гугла.
Любой плагин или любой шаблон для любой CMS перевод на любой язык!
Переводы и Локализации - русификация Шаблонов и Модуле!

  • Статья
Мер Киева запугивает людей и угрожает!

НУ СКОЛЬКО МОЖНО НАМ ПИ*ДЕТЬ И ЗАПУГИВАЕТ?
Какой-то еб*ный советский режим, самый настоящий совок, а не Украина уже!
Интернет помнит весь ваш пиздежь и ваши обещания! Когда говорили одно, а потом резко все забыли и переобулись!
Все они нечисть и враги для страны и народа. Это те люди, которые мстят нам Украинцам в тылу! Они растоптали конституцию и законы. Теперь всех как наказание пугают ЗСУ, ТЦК и отправляют на войну, Но...!!
САМ КЛИЧКО ПОЧЕМУ ТО НЕ ВЗЯЛ АВТОМАТ И НЕ ПОШЁЛ ЗАЩИЩАТЬ УКРАИНУ, ЗНАЧИТ ОН НЕ ПАТРИОТ, А ПОЛУЧАЕТСЯ ВРАГ ДЛЯ НАРОДА И ДЕРЖАВИ ???

Вложения

  • 412510716_1065531567809236_2527656122176065741_n.mp4
    482.6 КБ
  • Кличко погрожує активістам.mp4
    11.3 МБ

  • Опрос
Отказ от гражданства в замен не идти воевать.

Вы готовы отдать паспорт и лишится гражданства, что бы не идти воевать?

  • Да

  • Неи

  • Незнаю

  • Я и не хотел получать этот паспорт...


Результаты видны после голосования.

Вы готовы отдать паспорт и лишится гражданства, что бы не идти воевать?

  • Опрос
Розглядаєте ви для себе можливість переїзду за кордон?

Розглядаєте ви для себе можливість переїзду за кордон?

  • Швидше розглядаю, на постійне місце проживання

    Голосов: 1 100.0%
  • Швидше розглядаю, на тимчасове місце проживання

    Голосов: 0 0.0%
  • Скоріше не розглядаю

    Голосов: 0 0.0%
  • Важко відповісти

    Голосов: 0 0.0%

Скажіть, в найближчі рік-два ви для себе розглядаєте або не розглядаєте можливість переїзду за кордон на постійне або тимчасове місце проживання?This question is required.*

instagram лента профиля и лента инстаграм

Гуглил в инете про instagram лента профиля и лента инстаграм, так ничего толкового не нашел и не понял в чем прикол и разница.

1697468516618.png


Кто знает в чем разница между instagram лента и instagram лента профиля, пишите...

ПРЕЗИДЕНТ ЗЕЛЕНСКИЙ ПРИМЕР ДЛЯ УКРАИНЦЕВ!

КАК НУЖНО ПОСТУПАТЬ И ДЕЛАТЬ ЕСЛИ ТЕБЯ ПРИЗЫВАЮТ В АРМИЮ ИЛИ НА МОБИЛИЗАЦИЮ, ИДТИ ПОГИБАТЬ ЗА ЧТО ТО ТАМ...
НИЖЕ ХОРОШАЯ СТАТЬЯ.

Фильтровать

Пользователи онлайн

Сейчас на форуме нет ни одного пользователя.