• Формирование rel canonical opencart, как изменить?

    haanastasia
    @haanastasia
    джуниор программист
    в файле catalog/controller/product/product.php

    меняешь canonical на
    $this->document->addLink($this->url->link('product/product', $url . '&product_id=' . $this->request->get['product_id']), 'canonical');


    примерно 240 строка.
    Ответ написан
    5 комментариев
  • Имеет ли данная схема организации БД право на существование?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Право существовать имеет но.... а смысл?

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

    Соответственно у нас появляется разделение - все операции на запись работают исключительно с реляционкой, все операции на чтение - с nosql (ну или часть с nosql и часть с реляционкой, тут смотря что вы хотите ускорять и есть ли смысл в организации агрегации данных).
    Ответ написан
    2 комментария
  • Разработка сайта на WordPress и git (github)?

    Evanre
    @Evanre
    Front-end developer
    Если чисто по коду, сам гит у меня лежит в корневой папке WordPress. `.gitignore` файл выглядит примерно вот так:
    # PHPStorm
    .idea
    
    # WordPress
    *.log
    /wp-*.php
    /index.php
    /xmlrpc.php
    /license.txt
    /readme.html
    /sitemap.xml
    /sitemap.xml.gz
    
    /backup*
    
    wp-admin/
    wp-includes/
    
    wp-content/*
    !wp-content/themes/
    wp-content/themes/*
    
    !wp-content/plugins/
    wp-content/plugins/*
    
    !wp-content/themes/ei/
    !wp-content/themes/ei-child/
    
    !wp-content/plugins/realty-export
    
    # Frontend tools
    wp-content/themes/ei-child/node_modules/

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

    По бэкапам.
    Бекап делаю через плагин BackUpWordPress (очень удобная вещь, можно делать бекапы всего сайта и базы по расписанию, Вам на почту приходит письмо с ссылкой на скачивание бекапа), экспорт базы на другой сервер делаю с помощью WP Migrate DB (он не просто заменяет пути в базе но и правит под них сериаллизованые массивы, таким образом некоторые настройки не слетают). Знаю что можно все делать через wp-cli, но он далеко не на каждом сервере стоит, и так уже привычнее. Мне обычно чтобы слить клиентский сайт для работы на локалке даже фтп не нужен, только доступ в админку.

    При работе с сервером заливаю файлы прогой WinSCP, она может как FTP так и SFTP, так же умеет синхронизировать папки (заливать только то, что изменилось), на крупных проектах настраиваю синхронизацию в PHPStorm.
    Ответ написан
    Комментировать
  • Добавлять ли List-Id в транзакционные письма?

    shifaley
    @shifaley
    Маркетолог
    Вероятность попадания в спам не увеличивает, так что для удобства можно добавить.
    Ответ написан
    Комментировать
  • Как разобраться в машинном обучении на питоне?

    LazyTalent
    @LazyTalent
    Data Engineer, Freelancer
    Если в кратце то:
    1. Дб корпус текстов с лейблами (например, позитивный твит, негативный твит)
    2. Удаляешь знаки препинаия
    3. Удаляешь стоп слова (предлоги и пр. не имеющее смысловой нагрузки)
    4. Делаешь стемминг
    5. Из каждого твита делаешь набор н-грамм
    6. Из н-грамм делаешь TF-IDF словарь
    7. Сплитишь полученный словарь на данные для обучения и данные для тестов
    8. Засовываешь все это в понравившийся алгоритм для МЛ, например, так:
    clf = RandomForestClassifier(n_jobs=-1)
    clf.fit(X_train, y_train)

    9. Сохраняешь полученную модель в пикл и потом уже используешь ее для текстов, которые необходимо классифицировать.
    predict = clf.predict(tfidf_predict.toarray())
    Ответ написан
    3 комментария
  • Как вы сочетаете работу и саморазвитие?

    vitali1995
    @vitali1995
    Да точно так же, как управляешь рабочими процессами:
    1. определить цели и приоритеты
    2. обозначить шаги и контрольные точки
    3. придерживаться плана

    Если нет времени/сил/информации/чего-то-ещё, значит задача №1 - высвободить или восполнить недостающие ресурсы. Если они под завязку в работе, значит опаньки - пришло время поразмыслить над образом своей жизни.
    Ответ написан
    Комментировать
  • Где найти сайты с примером писем, которые рассылают популярные сервисы?

    shifaley
    @shifaley
    Маркетолог
    Обычно в разных коллекциях выкладывают картинки и делают упор на дизайн, т.е. текст писем придется самому анализировать.
    Вот единственная коллекция с текстами, про которую я знаю, буду благодарен, если подскажете еще:
    www.goodemailcopy.com

    Вот несколько коллекций с примерами дизайнов писем:
    https://www.mailcharts.com/
    https://www.campaignmonitor.com/email-templates/
    emailsfresh.com
    www.htmlemailgallery.com
    htmlemaildesigns.com
    beautiful-email-newsletters.com
    email-gallery.com
    Ответ написан
    Комментировать
  • Amazon SES на бесплатном тарифе позволяет отправлять сообщения не подтверждённым email?

    r0zh0k
    @r0zh0k
    Site Reliability Engineer
    Верифицируйте домен и запросите увеличение лимита отправляемых писем – тогда вам не нужно будет делать верификацию каждого адреса и вы сможете отправлять письма в рамках Free Tier.

    Верификация адресов должна быть проведена для того чтобы вы имели адрес для отправки (отправлять можно только с верифицированного адреса) или тестировали рассылки в сендбоксе.
    Ответ написан
    Комментировать
  • Ссылка "отказаться от подписки"

    legrus
    @legrus
    Хороший тон — изменять состояние сервера по POST, а не по GET. Так что по ссылке мне бы больше всего понравилась кнопка «Да, именно отписать username@gmail.com от рассылки».
    Ответ написан
    Комментировать
  • Роботы переходят по ссылке отписки?

    Ссылки на отписку должны быть в теле письма и в заголовке List-Unsubscribe.

    В теле письма отписку можно делать с дополнительной кнопкой, т.к. помимо ботов, которые потенциально могут валидировать ссылки, существует еще link prefetching, который в некоторых браузерах/плагинах работает для всех ссылок. И вообще обычно считается, что GET-запрос не должен менять состояние сервера.

    В List-Unsubscribe отписка однозначно не должна требовать никаких дополнительных действий.
    Ответ написан
    3 комментария
  • Как правильно сверстать html-письмо для почтовой рассылки?

    webirus
    @webirus
    Тыжверстальщик! Наверстай мне упущенное...
    Хотел бы узнать о современных подходах и методиках вёрстки подобных писем.

    Спешу тебя разочаровать.
    Современная верстка писем не существует, в виду того, что почтовики не сильно стремятся к тому, чтобы всключать поддержку каких-то крутых фишек в письма и почтовые интерфейсы.
    Поэтому вся необходимая информация для верстки писем - это устаревшая информация.
    Табличная верстка, инлайновые стили, кривая адаптация со смешиванием резиновой и адаптивной верстки.
    Более подробно рекомендую почитать в блоге Тода.
    https://tj-s.ru/tod/verstka-pisem.-polnaya-versiya.html
    Это очень крутой специалист по email-рассылкам, знаком с ним лично, поэтому говорю уверенно.
    Данный гайд поможет делать письма на уровне писем таких гигантов как МВидео, Сбербанк, Техносила и других крупных брендов.
    В свое время я сотрудничал с разными серьезными компаниями по email-маркетингу, все используют примерно один и тот же подход.
    Ответ написан
    Комментировать
  • Организация массовой рассылки — Linux + Exim/Postfix + Веб интерфейс

    @Andrey_Zentavr
    1) Честно говоря опенсорсных менеджеров списков рассылки вменяемых я так и не нашел.
    Из интересных платных — есть InterSpire Email Marketing Software (http://www.interspire.com/emailmarketer/ ) или ActiveCampaign Email Marketing (http://www.activecampaign.com/onsite/). Лично мне второе нравится больше.

    2) Вести рассылку поочерёдно — плохая идея, потому как IP время от времени набирает репутацию. Чем больше репутация — тем больше входящих писем/сек приймет удалённый сервер. Если шлёте спам (или купили/украли/етц списки — то в спам попадёте рано или поздно — как правило сразу).

    3) Для массовых рассылок все ваши IP долны имень обратную DNS запись (PTR Record, Backresolve)
    4) Все ваши IP должны быть зарегистрированы через Feedback Loop с массовыми провайдерами эл. почты
    5) Вы должны использовать SPF/SenderID записи для Вашего домена и не менять Ваш домен
    6) У вас должен быть всегда читаемым Ваш адрес abuse@ваш_домен.ру
    7) Вы должны использовать DKIM/Domainkeys цифровые подписи для всех Ваших исходящих писем
    8)… и желательно DMARC для мониторинга всего этого
    9) Вы должны предоставлять пользователю возможность отписаться от Ваших рассылок в 1 клик (как правило, используется List-Unsubscribe: заголовок с mailto:// или http:// — https:// ссылками). Кликнул на ссылку — сражу же без вопросов отписался.
    10) У вас должны быть прозрачная и доступная Privacy Policy
    11) Для массовых рассылок вы не должны использовать анонимайзеры в Whois для Вашего домена. т.е. любой, сделав whois ваш_домен.ру должен увидеть актуальный адрес, имя влядельца, телефон и емейл владельца домена. Если такого нет — репутация у вас будет не очень и залетите в спам

    … ну это так — краткий список.

    P.S.: Могу помочь за определённое вознаграждение настроить систему.
    Ответ написан
    Комментировать
  • Как делаются персональные (конкретно по твоим критериям) рассылки?

    Смешались в кучу конилюди.

    1. Никто не делает большие рассылки PHP-мейлером. Используется, например, скрипт, который генерирует письма и ставит их в очередь MTA и в дальнейшем письма рассылаются MTA (при правильной конфигурации, например, Postfix разослать миллион писем с одной машины за несколько часов не проблема). При необходимости скрипт запускается в несколько потоков / на нескольких машинах. Еще чаще вместо локального MTA используется API поставщика услуг электронных рассылок (ваши представления о нем не верны, просто вы не умеете им пользоваться), т.к. миллион писем от вас не примет ни одна почтовая служба, пока вы не накопите нормальную репутацию.
    2. Пользователи сегментируются. Чем сильней сегментируются - тем лучше. В первую очередь по активности, если пользователь год не заходил на сайт, а вы ему каждую неделю что-то шлете - ваши письма почти наверняка окажутся в спаме. Так же возможно сегментация по полу, возрасту, географии, уровню дохода, новый пользователь / постоянный пользователь / уходящий пользователь / потерянный пользователь. По сегментам определяется частота и типы рассылок.
    3. Рассылки персонализируются с учетом предыдущей активности пользователя и его сегментов.
    4. Рассылки сплит-тестируются. Выбираются наиболее эффективные.
    5. Рассылки триггерятся. Спамить пользователя раз в неделю давая ему простыню со списком товаров малоэффективно. Гораздо эффективней зацепить его в определенный момент времени конкретным предложением. Например если мужчина покупал что-то женское (духи, цветы, кофеты) - напомните ему об этом ровно через год и предложите что-то, что может хорошо сочетаться (обновлять, дополнять, заменять) с первой покупкой. Если он покупал подарок для новорожденного - предложите через год подарок для годовалового ребенка. Дни рождения и прочие знаменательные даты любят повторяться. Если он покупал велосипед, потом через месяц что-то к нему - предложите еще через месяц (к следующей ЗП) скидку на еще какой-то аксессуар именно к этому велосипеду (если велосезон еще не окончен, разумеется). Хорошее предложение должно приходить не раз в неделю, а тогда, когда оно наверняка заинтересует.

    P.S. почитайте материалы по e-mail маркетингу.
    Ответ написан
    5 комментариев
  • Как нужно делать рассылку со своего сайта (сервера)?

    @xtreme
    Снимаю порчу по SSH :)
    1. Изучить рекомендации по рассылкам у крупных почтовых сервисов (Google, Yandex, Mail.ru). При подготовке писем для рассылки строго следовать их рекомендациям.
    2. Зарегистрироваться в postmaster.yandex.ru, postmaster.mail.ru, чтобы следить за ходом рассылки писем.
    3. Отлавливать недоставленные письма, убирать их из листов рассылки, дабы не мусорить.
    4. Сделать механизм отписки от рассылки (это один из критериев пункта 1), причем 100% работающий в один клик.
    5. Мониторить нажатие кнопки "Спам" в вышеуказанных почтовых сервисах, также сразу исключать их из будущих рассылок.

    1к подписчиков - это мелочь. Можешь пробовать отсылать сразу все письма на свой почтовый релей (для 1к хватит и одного релея), даже почти дефолтно настроенный MTA будет рассылать с нужными интервалами.

    Обязательное условие - соблюдать все почтовые правила и не пренебрегать цифровыми подписями - SPF, DKIM, DMARC, правильные записи в DNS (A, MX, PTR).
    Ответ написан
    10 комментариев
  • Как настроить mail.php, чтобы не банили почту?

    Не надо слать письма через PDD или любой другой сервис почтовых ящиков, они для этого не предназначены. Письма надо слать напрямую либо через специальные сервисы рассылок. Чтобы слать напрямую надо:
    1. Опубликовать отдельнный селектор DKIM, настроить подпись для этого селектора непосредственно на сервере, убедиться что все работает.
    2. добавить IP адрес сервера в SPF домена
    3. Убедиться, что правильный адрес используется и в поле From: и в SMTP-конверте (envelope-from), в приходящем письме он обычно показывается в заголовке Return-Path.
    Ответ написан
    Комментировать
  • Удалить DKIM или добавить еще одну запись?

    вообще не понятно что вы хотите спросить, т.к. из вопроса не понятно кто из вас не прав: вы, сотрудник службы поддержки или ваше понимание ответа сотрудника поддержки. Что касается DKIM:

    1. DKIM должен быть
    2. В одном письме может быть несколько DKIM-Signature, например одна от хостера и одна от вашего домена. Удаление "лишней" DKIM-Signature скорей всего не скажется существенно на доставке.
    3. Наличие корректной DKIM-Signature домена, совпадающего с доменом в поле From: крайне желательно, при наличии DMARC - обязательно.
    4. Разделить DKIM для почты и сайта можно (и нужно), опубликуйте для сайта отдельный DKIM-ключ с отдельным селектором в DNS и используйте его.

    Судя по описанию проблемы, DKIM к ней вообще отношения не имеет. Пройдитесь по рекомендациям в этой статье, в частности, обязательно проверьте SMTP-конверт.
    Ответ написан
    Комментировать
  • Long-polling или WebSocket?

    27cm
    @27cm
    TODO: Написать статус
    Если поддержка в браузерах устраивает, то достаточно WebSocket.
    stackoverflow.com/questions/10028770/html5-websock...

    При каком из вариантов нагрузка на сервер будет наименьшей?

    Без сомнений опять же WebSocket. Вот например ребята замеры сделали - уменьшение используемого трафика в сотни раз:
    da4d756b2bc1460682f12f75a5f792b0.gif
    https://www.websocket.org/quantum.html
    Ответ написан
    1 комментарий
  • Нужно ли сейчас изучать ES5 или он устарел и стоит смотреть в сторону ES6 и далее?

    Stalker_RED
    @Stalker_RED
    Никто не отменял ES5. В ES6 добавили несколько новых возможностей. Если у вас есть хороший учебник/курс по ES5 - смело можете пользоваться.
    Ответ написан
    Комментировать