• Как сделать JS, что бы он запускался только при первом визите на сайт?

    ronnie85
    @ronnie85
    Fullstack Dev
    Могу предложить свой API по работе с Cookie:
    var Cookie = {
    
        _params: {
            domain: '',
            path: '/',
            expires: '',
            maxAge: -1,
            sameSite: false,
            secure: false
        },
    
        _lastCookie: '',
    
        setDefaultParams (params) {
            this._params = {...this._params, ...params};
        },
    
        getDefaultParams () {
            return this._params;
        },
    
        getLastCookie () {
           return this._lastCookie;
        },
    
        set (key, value, params={}) {
    
            value = encodeURIComponent(value);
            params = {...this._params, ...params};
    
            if (params.expires) {
                if (params.expires instanceof Date) {
                    params.expires = params.expires.toUTCString();
                } else if (typeof params.expires === 'string') {
                    const date = new Date(params.expires);
                    params.expires = date.toUTCString();
                }
            }
    
            let cookie = `${key}=${value};`;
            cookie += params.path ? ` Path=${params.path};` : '';
            cookie += params.domain ? ` Domain=${params.domain};` : '';
            cookie += params.expires ? ` Expires=${params.expires};` : '';
            cookie += params.maxAge > -1 ? ` Max-Age=${params.maxAge};` : '';
            cookie += params.sameSite !== false ? ` SameSite=${params.sameSite};` : '';
            cookie += params.secure === true ? ` Secure;` : '';
    
            this._lastCookie = cookie;
            document.cookie = cookie;
    
            return true;
        },
    
        has (key) {
            return this.getAll().hasOwnProperty(key);
        },
    
        get (key) {
            return this.getAll()[key];
        },
    
        getAll () {
            const cookies = {};
            this.getString().split(';').forEach(val => {
                const params = val.split('=').map(el => el.trim());
                cookies[params[0]] = params[1];
            });
            return cookies;
        },
    
        getString () {
            return document.cookie;
        },
    
        delete (key) {
            if (!this.has(key)) return false;
            return this.set(key, '', { expires: 'Thu, 01 Jan 1970 00:00:01 GMT', maxAge: 0 });
        }
        
    };
    
    if (!Cookie.has('key')) {
        if (confirm('Are you want to save a cookie?')) {
            Cookie.set('key', true, { expires: '2022-12-01T00:00:00' });
        }
    } else {
        if (confirm('Are you want to delete a cookie?')) {
            Cookie.delete('key');
        }
    }
    Ответ написан
    Комментировать
  • Как сделать JS, что бы он запускался только при первом визите на сайт?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Код ждёт 30 секунд, прежде, чем отправить в Яндекс.Метрику событие.

    Если надо, чтобы единственный раз именно дождался 30 секунд на странице, то так:
    const KEY = 'TIMECOUNTER';
    
    if (!localStorage.getItem(KEY)) {
      setTimeout(() => {
        yaCounterХХХХХХХХ.reachGoal('TIME');
        localStorage.setItem(KEY, KEY);
      }, 30000);
    }


    Ещё возможно, что единственный раз должна лишь даваться попытка провести 30 секунд на сайте. Тогда стоило задавать вопрос более осмысленно.
    Ответ написан
    2 комментария
  • Какой ноут посоветуете?

    yakovlev_13
    @yakovlev_13
    Шаманство, экзорцизм и некромантия.
    Да не особо сильно и отличится в автономности. Зато отлично скажется на производительности.
    Ответ написан
    1 комментарий
  • Как пофиксить кодировку csv файла?

    daruvayc0
    @daruvayc0
    Открываете Excel на вкладке "Данные" находите кнопку "Получение внешних данных", из выпадающего списка выбираете "Из текста", выбираете свой файл csv, и дальше по инструкции которая будет во всплывающем окне. После всех манипуляций сохраняете как Вам будет удобно.
    Ответ написан
    1 комментарий
  • Как проставить кавычки массово в Excel или строках txt?

    ZeLib0ba
    @ZeLib0ba
    [IT]ишник | http://surin.ru
    Можно еще проще. Копируете все в первый столбец, построчно
    Во втором пишите
    =""""&A1&""""
    И тяните эту запись до последней.
    Ответ написан
    Комментировать
  • Как отредактировать тему Sublime Text 3?

    petyagrill
    @petyagrill
    для начала найдите папку с загруженными пакетами
    на ubuntu это /home/username/.config/sublime-text-3/Installed Packages
    там должна лежать ваша тема

    откройте архив и отредактируйте файл ИМЯ_ТЕМЫ.tmTheme

    найдите строки
    <dict>
                <key>name</key>
                <string>Comment</string>
                <key>scope</key>
                <string>comment</string>
                <key>settings</key>
                <dict>
                    <key>foreground</key>
                    <string>#808080</string>
                </dict>
    </dict>


    ну и поменяйте цвет на нужный

    потом обновите файл в архиве

    PS: Sublime хранит тему по умолчанию в кеше, по этому возможно придется поменять тему на стандартную, почистить кеш, потом обратно поменять на нужную

    UPD: Кеш лежит тут /home/username/.config/sublime-text-3/Cache
    Ответ написан
    1 комментарий
  • Бутстрап 3, как сделать чтобы одна из ссылок выглядела как обычный текст, без стандартного оформления?

    NooBiToo
    @NooBiToo
    написать свой стиль?
    <a href="#" class="my-link">link</a>
    .my-link, .my-link:hover {
      text-decoration: none;
      color: #000;
    }
    Ответ написан
    2 комментария
  • Почему списываемая цена в прогнозаторе бюджета и в самом директе отличается?

    DeoZ
    @DeoZ Куратор тега Яндекс.Директ
    Веб-разработка и Реклама
    В прогнозе бюджета указана средняя цена у рекламодателей по этому запросу за последние 30 дней без учёта временных ограничений конкурентов и качества Вашей кампании.
    В интерфейсе кампании Вы видите уже цену на текущий момент времени, в том числе вычисленную, исходя из параметров Вашей кампании, Ваших объявлений, их релевантности запросам. К тому же эта цена обычно существенно снижается спустя час-два после запуска рекламной кампании, потому что для вычисления подключается больше параметров, отрабатывающих уже в режиме реальной работы кампании.
    Ответ написан
    2 комментария
  • Как массово убрать водяные знаки?

    maaGames
    @maaGames
    Погроммирую программы
    Можно создать action в фотошопе, выделяя область с текстом. Или прямоугольником или какой-то сложной формы - как хочешь и выполнить заливку content aware. Результат зависит от изображения, моет как более менее прилично получиться, так и очевидно убого. Экшен потом через batch для всех иображений запускаешь и радуешься. Или не радуешься, как повезёт. Если сразу поверх "исправления" писать новый водяной знак, то может не так заметны косяки будут.

    5bd19daccb7cd138094524.jpeg
    Ответ написан
    Комментировать
  • Как установить Windows на чужой жёсткий диск?

    chupasaurus
    @chupasaurus
    Сею рефлекторное, злое, временное
    Вы можете у себя начать установку, и остановить её на первой перезагрузке. Все файлы для установки уже на диске, процесс с настройкой под конечную систему начнётся при загрузке.
    Ответ написан
    2 комментария
  • Как отправить в API Яндекс.Метрику данные о звонках?

    @marxxt
    понравился ответ - поставь ✔
    А, вы вынесли в отдельный вопрос)

    Вобщем, StaticCall,UserId - обязательные колонки

    Заголовки
    Content-Type: multipart/form-data; boundary=------------------------boundary
    Content-Length: 12345


    Тело
    --------------------------boundary\r\n
    Content-Disposition: form-data; name="file"; filename="file.csv"\r\n
    Content-Type: text/csv\r\n\r\n
    ДАННЫЕ\r\n\r
    --------------------------boundary--


    Пример(для curl все тоже самое)
    function request($url, $data, $headers){
      $opt = array(
        'http' => array(
          'method' => 'POST',
          'content' => $data,
          'header' => $headers
        )
      );
    
      $context = stream_context_create($opt);
    
      $response = @file_get_contents($url, FALSE, $context);
      
      return $response;
      
    }
    
    $oauth_token='xxx';
    $boundary = "7zDUQOAIAE9hEWoV";
    $filename = 'data.csv';
    
    $calls = "StaticCall,UserId,DateTime,Price,Currency,PhoneNumber,TalkDuration,HoldDuration,CallMissed,Tag,FirstTimeCaller,URL,CallTrackerURL".PHP_EOL;
    $calls .= "1,133591247640966458,1481714026,678.90,RUB,+71234567890,136,17,0,,1,https://test.com/,https://test.com/".PHP_EOL;
    $calls .= "1,579124169844706072,1481718066,123.45,RUB,+70987654321,17,23,0,,2,https://test.com/,https://test.com/".PHP_EOL;
    $calls .= "1,148059425477661429,1481718126,678.90,RUB,+71234509876,72,11,0,,0,https://test.com/,https://test.com/";
    
    $data = "--------------------------$boundary\x0D\x0A";
    $data .= "Content-Disposition: form-data; name=\"file\"; filename=\"$filename\"\x0D\x0A";
    $data .= "Content-Type: text/csv\x0D\x0A\x0D\x0A";
    $data .= $calls . "\x0A\x0D\x0A";
    $data .= "--------------------------$boundary--";
    
    
    $headers = array();
    $headers[] = "Content-Type: multipart/form-data; boundary=------------------------$boundary";
    $headers[] = 'Content-Length: '.strlen($data);
    $headers = implode(PHP_EOL, $headers);
    
    $url = "https://api-metrika.yandex.ru/management/v1/counter/39764535/offline_conversions/upload_calls?client_id_type=USER_ID&oauth_token=$oauth_token";
    
    $result = request($url, $data, $headers);
    
    var_dump($result);


    Для curl типа того
    CURLOPT_POSTFIELDS => $data
    CURLOPT_HTTPHEADER => array(
        "Content-Type: multipart/form-data; boundary=------------------------$boundary",
        "Content-Length: " . strlen($data)
    Ответ написан
  • Отключить показ на мобильных в Яндекс Директ?

    DeoZ
    @DeoZ Куратор тега Яндекс.Директ
    Веб-разработка и Реклама
    Нет, такой возможности они, к сожалению, не предоставляют.
    Для кампаний РСЯ можно добавить в минус-площадки несколько сервисов, чтобы исключить показы в мобильных приложениях. Но это всё, что можно сделать.
    Ответ написан
    Комментировать
  • Интеграция Амо и Директа?

    @start-crm
    Интеграция и внедрение CRM систем
    выгружайте в аудиторию сделки из CRM и загружайте в яндекс)
    Все делается без проблем особых)

    https://yandex.ru/support/audience/file.html#file__crm
    Ответ написан
    Комментировать
  • Как использовать фразы для РК в контекстной рекламе с точным вхождением ("!") или нет(с минус словами)?

    DeoZ
    @DeoZ Куратор тега Яндекс.Директ
    Веб-разработка и Реклама
    Не используйте в контекстных рекламных кампаниях фразы с оператором "!". Только если его использование оправдано для исключения двоякого толкования определённых слов. Это не SEO.
    Некоторые любят использовать фразы в кавычках, набирая большой пул запросов. Но я бы не рекомендовал такой подход. Лучше добавлять фразы частотностью от 10 до 2000 с использованием минус-слов. И в дальнейшем, при ведении, этот список минус-слов постоянно пополнять.
    Ответ написан
    Комментировать
  • Как получить данную информацию из Яндекс.метрики?

    @alexustinova
    Специализация: интернет-маркетинг
    По поводу 2-го вопроса:

    если у вашего сайта большая посещаемость, то есть вероятность того, что часть страниц у людей остаются открытыми в браузере и по прошествии длительного времени они возвращаются к этим страницам и закрывают. Данная сессию (возвращения) считывается в том же источнике, но как новая и со 100% отказом (при закрытии до 15 сек)
    Ответ написан
    Комментировать
  • Как ответить json'ом?

    Shutik
    @Shutik
    Погромист халявщик
    ммм ... указать этот самый header() в ответе ?
    header('Content-Type: application/json');
    Ответ написан
    Комментировать
  • Как перегруппировать массив?

    @antonowano
    Профессиональный самоучка
    $result = array();
    foreach($data as $val) {
        foreach($val as $key => $type) {
            $result[$key][] = $type;
        }
    }
    Ответ написан
    2 комментария
  • Сколько процентов от заказа берет человек, который нашел заказ?

    zoozag
    @zoozag
    Opencart
    Участвую в проектах и в качестве менеджера и в качестве разработчика

    Ведь программисту нужно потратить больше времени, сил и энергии.

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

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

    @f_u_s_s
    Любопытный кодер
    Если нужно прям вот именно окно браузера отдельное, то как-то так например:
    <!DOCTYPE html>
    <html lang="ru">
    <head>
      <meta charset="UTF-8">
      <title>Document</title>
    
      <script>
        function setOnclick(a) {
        a.setAttribute("onclick","popupWin = window.open(this.href,'contacts','width=820px,height=700px,top=50,left=200px,toolbar=0, location=0, directories=0, menubar=0, scrollbars=0, resizable=0, status=0'); popupWin.focus(); return false");
        }
    
        function externalLinks() {
        var links = document.getElementsByTagName("a");
          for (i=0; i<links.length; i++) {
            if (links[i].getAttribute("href") && links[i].getAttribute("rel") == "external") {
              setOnclick(links[i])
            }
          }
        }
        window.onload = externalLinks;
      </script>
    </head>
    <body>
    <a rel="external" href='file.html'>ТЫК</a>
    </body>
    </html>


    А если модальное окно - то например fancybox можно использовать.
    Ответ написан
    1 комментарий