• Как получить уведомление о новой записи в Wordpress?

    orlov0562
    @orlov0562
    I'm cool!
    В WP есть множество хуков, один из них wp insert post, пример прям из справки
    function my_project_updated_send_email( $post_id, $post, $update ) {
    
    	// If this is a revision, don't send the email.
    	if ( wp_is_post_revision( $post_id ) )
    		return;
    
    	$post_url = get_permalink( $post_id );
    	$subject = 'A post has been updated';
    
    	$message = "A post has been updated on your website:\n\n";
    	$message .= $post->post_title . ": " . $post_url;
    
    	// Send email to admin.
    	wp_mail( 'admin@example.com', $subject, $message );
    }
    add_action( 'wp_insert_post', 'my_project_updated_send_email', 10, 3 );
    Ответ написан
  • Почему с сайта приходят пустые заявки?

    orlov0562
    @orlov0562 Куратор тега PHP
    I'm cool!
    В указанном куске данных все верно, возможно проблема где-то еще.

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

    Так же попробуй, использовать регулярку, чтоб отсеить любые нежелательные символы
    if (empty($phone) OR !trim($phone)) die();
    if (!preg_match('~^[-+0-9]{8,}$~', trim($phone))) die();

    * от начала до конца строки должны быть только символы -+ или цифра, минимум 8 символов
    Ответ написан
    2 комментария
  • Посоветуете програму для визуального программирования на джаве?

    orlov0562
    @orlov0562
    I'm cool!
    Eclipse и Netbeans умеют. Гугли java gui builder
    Ответ написан
    Комментировать
  • Как массово обновить строки, не вызывая 200 тыщ запросов?

    orlov0562
    @orlov0562
    I'm cool!
    https://laravel.com/docs/5.8/database
    DB::update('update users set votes = 100 where name = ?', ['John']);


    В твоем случае, лучше не обновлять rank, а использовать правильную сортировку отталкиваясь от date, тк при обновлении rank как не крути, а придется обновлять все 200к записей.

    Если уж, все таки будешь обновлять все записи, то тебе нужен на ON DUPLICATE KEY, а обычные переменные в SQL, вот пример:
    UPDATE tbl, (select @cnt:=0) as cnt SET rank=(@cnt:=@cnt+1)
    Ответ написан
  • Как отправить файл клиенту на почту?

    orlov0562
    @orlov0562 Куратор тега PHP
    I'm cool!
    В поиске вбей: php отправка письма с вложением. Будет куча примеров.

    Вот один из них
    $path = '/путь/к/папке/с/файлом/';
    $filename = 'file.html';
    
    $file = $path.$filename;
    $content = file_get_contents( $file);
    $content = chunk_split(base64_encode($content));
    $uid = md5(uniqid(time()));
    $name = basename($file);
    
    // header
    $header = "From: ".$from_name." <".$from_mail.">\r\n";
    $header .= "Reply-To: ".$replyto."\r\n";
    $header .= "MIME-Version: 1.0\r\n";
    $header .= "Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n";
    
    // message & attachment
    $nmessage = "--".$uid."\r\n";
    $nmessage .= "Content-type:text/plain; charset=iso-8859-1\r\n";
    $nmessage .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
    $nmessage .= $message."\r\n\r\n";
    $nmessage .= "--".$uid."\r\n";
    $nmessage .= "Content-Type: application/octet-stream; name=\"".$filename."\"\r\n";
    $nmessage .= "Content-Transfer-Encoding: base64\r\n";
    $nmessage .= "Content-Disposition: attachment; filename=\"".$filename."\"\r\n\r\n";
    $nmessage .= $content."\r\n\r\n";
    $nmessage .= "--".$uid."--";
    
    if (mail($mailto, $subject, $nmessage, $header)) {
        return true; // Or do something here
    } else {
      return false;
    }


    вот еще один с использованием PHPMailer
    use PHPMailer\PHPMailer\PHPMailer;
    use PHPMailer\PHPMailer\Exception;
    
    $path = '/путь/к/папке/с/файлом/';
    $filename = 'file.html';
    
    $email = new PHPMailer();
    $email->SetFrom('email@отправителя.com', 'Your Name');
    $email->Subject   = 'Message Subject';
    $email->Body      = $bodytext;
    $email->AddAddress( 'email@получателя.com' );
    
    $email->AddAttachment( $path.$filename , $filename);
    
    return $email->Send();
    Ответ написан
    1 комментарий
  • HTML Page Builder генерирует невыносимую боль. Неужели это не влияет на SEO?

    orlov0562
    @orlov0562
    I'm cool!
    1) В свете того, что трафик будут лить из рекламных сетей напрямую на лендинги, вообще нет смысла обсуждать SEO. Можно лить трафик хоть на bmp картинку, лишь бы конверт был - это и есть цель бизнеса.

    2) В органике, совсем другая история, там множество факторов, которые постоянно меняются. И как бы это печально не звучало, качество кода далеко не самый важный фактор. Любой откровенный ГС, с хорошим ссылочным профилем, легко обрулит сайтик с вылизанным исходным кодом. Тут, надо знать, что именно сейчас работает и как на это реагируют ПС-ы.

    3) А если у тебя геозависимый, непопулярный товар/услуги, то вообще можно собрать семантическое ядро и девочек заменить доргеном :) С эстетической стороны, конечно хуже, но зато на 8 марта экономия.

    Так что, забей, лендинги клепаются, трафик идет, баблишко капает, все ок :)
    Ответ написан
    4 комментария
  • Парсер Яндекса. Что не так?

    orlov0562
    @orlov0562 Куратор тега PHP
    I'm cool!
    Вангую Яндекс умеет ставить куку JavaScript-ом и потом чекать ее наличие. А тк твой curl не выполняет JS то и кука не ставится. Ну, или вариации по типу, JS-ом скрывается это сообщение и происходит дальнейшая загрузка, а тк JS у тебя не выполняется... ну в общем, идея думаю ясна.

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

    Вариант попроще использовать Chrome в Headless режиме, т.е. не эмулировать браузер через курл, а использовать полноценный браузер.
    Ответ написан
    6 комментариев
  • В чем смысл vpn сервера на роутере?

    orlov0562
    @orlov0562
    I'm cool!
    VPN - придумали не для "обхода ограничений торрентов или роскомнадзора". VPN, нужен для того, чтобы удаленный ПК оказался в твоей локальной сети, подключившись через инет. Например, к твоему роутеру может быть подключен NAS (сетевое хранилище) на котором лежат киношки. Доступу к NAS-у только у компов из твоей локалки (тех что подсоединены к твоему роутеру). Ты поднимаешь VPN на роутере, даешь мне данные для доступа, я подключаюсь к твоему роутеру и оказываюсь в твоей локальной сети, тем самым получая доступ к NAS-у.
    Ответ написан
    1 комментарий
  • Как запустить pm2 при старте компа?

    orlov0562
    @orlov0562
    I'm cool!
    PM2 — Restart Processes After System Reboot

    pm2 startup upstart
    и выполнить от рута, то что выведет, пример:
    sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup upstart -u vagrant --hp /home/vagrant
    Ответ написан
    7 комментариев
  • Почему yii2 на js ajax запрос выдает статус - минус?

    orlov0562
    @orlov0562
    I'm cool!
    Попробуй подебажить вручную: открой контроллер и поставь там die('123'), в начале, на след. строке и т.д.. Найдешь место где все глохнет, или обнаружишь что просто из контроллера ничего не возвращается (response имею ввиду)

    если просто в браузер эту ссылку ввести /item/delete-image?id=id удаление работает

    Потому что в браузере у тебя GET запрос, а ты отправляешь POST
    Ответ написан
    3 комментария
  • Предупреждение перед закрытием вкладки?

    orlov0562
    @orlov0562
    I'm cool!
    Так они window.onbeforeunload и используют: https://regex101.com/static/bundle.js
    window.onbeforeunload=function(t){if(e.props.hasUnsavedData){var n=Object(Ke.a)("You have made changes since you last saved, leaving the website will result in a permanent loss of the data.");
    Ответ написан
    Комментировать
  • Можете подробнее простым языком описать как работает Varnish?

    orlov0562
    @orlov0562
    I'm cool!
    Если кеширует то куда, в ОЗУ ?

    У варниша, есть такая штука как "storage backend"-ы, т.е. хранилища. Есть на диске, есть в ОЗУ.

    Если да то сколько ОЗУ надо?

    Ограничения задаются в настройках, рекомендуют до 75% от свободной ОЗУ.

    Как приблизительно рассчитать подобное

    Как и любой другой кеш: кол-во объектов * размер объектов
    Ответ написан
  • Как создать шаблоны без root в Wordpress на Linux?

    orlov0562
    @orlov0562
    I'm cool!
    1) Присвоить файлы пользователю от которого ты работаешь
    chown -R <user-name>:<user-group> /var/www/html

    2) Добавить пользователя от которого ты работаешь в группу, которой принадлежат файлы и
    поставить права на папку/файлы позволяющие их редактировать пользователю от которого ты работаешь
    usermod -aG www-data <username>
    chmod -R 0775 /var/www/html


    !!! Перед экспериментами, сделай бэкап папки /var/www/html , чтобы сохранить текущие настройки владельцев, привилегий.
    Ответ написан
    Комментировать
  • Какие паттерны gof используются для геймдева?

    orlov0562
    @orlov0562
    I'm cool!
    слышала мнение, что все их знать не надо

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

    Какие используются в геймдеве?

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

    Что значит в вакансиях "знание паттернов проектирования"?

    То, что ты отличаешь Singleton от Observer. Реже, нужно знание специфических вещей (например CQRS+ES), в таких случаях это указывают, тк 90% разработчиков никогда о них даже не слышала.

    Как проверяют на их знание?

    • Чем отличается Singleton от Observer?
    • Напишите реализацию обоих
    Ответ написан
    4 комментария
  • Долгий вывод информации при запросе к mysql?

    orlov0562
    @orlov0562 Куратор тега PHP
    I'm cool!
    Особо никак выборку не ускоришь, тк все упирается в чтение данных с диска.

    Не уверен, но думаю надо создать индексы и фильтрацию перенести в MySQL, например, индекс по полю "user_id" и запрос вида
    SELECT * FROM tbl WHERE user_id=$id

    Если такой вариант не подходит и надо ускорить именно MySQL, то при наличии достаточного кол-ва оперативки, можно попробовать создавать MEMORY таблицы, загружать данные туда, а после по ним делать выборки, чтобы увеличить I/O rate

    Другое решение, разумеется, если оно подходит к случаю, это кеширование полученных результатов.
    Ответ написан
    Комментировать
  • Как получить ВСЕ ссылки встречающиеся на сайте с помощью нативного PHP?

    orlov0562
    @orlov0562 Куратор тега PHP
    I'm cool!
    Но вот ходить постоянно по всем ссылкам - тяжеловато.

    Параллель запросы, используя multi_curl. Если этого недостаточно, тогда очередь (например RabbitMQ или попроще Gearman) и обрабатывающие ноды.

    Их потенциально может быть миллионы, если это новостной сайт.

    Да, может быть. Поэтому тебе надо какая-то таблица, примерно в таком формате
    id - int
    url - text
    url_hash - char(32), unique
    parsed - tinyint
    в которой будешь хранить все url и их статус парсинга, за уникальность будет отвечать url_hash = md5(url)

    Также не совсем понимаю, как проверять что это ссылка этого домена? Вечно проверять host через parse_url? А если путь без домена в статье?

    Если путь без домена, то и проверять не надо, ссылка принадлежит этому домену
    Ответ написан
    Комментировать
  • Как получить доступ к русскоязычному сегменту Хабра?

    orlov0562
    @orlov0562
    I'm cool!
    Справа, вверху есть глобус - выбор языка

    5c663354beb70755519082.png
    Ответ написан
    1 комментарий
  • Как указать docker'у пользователя linux от которого создавать файлы(миграции laravel)?

    orlov0562
    @orlov0562
    I'm cool!
    у docker exec есть параметр -u в котором можно указать пользователя или его uid

    Думаю, ты даже можешь в контейнере сменить uid рута на такой же как у тебя на хост машине и в итоге миграции будут создаваться внутри контейнера от рута, а в volume на хост машине будут принадлежать тебе. Но, это не точно :)
    Ответ написан
    4 комментария
  • Мини-столик для клавиатуры и мышки?

    orlov0562
    @orlov0562
    I'm cool!
    У меня был такой как на первой фотке и похожий на последний - все это полная фигня, не рекомендую: шатается, руки висят, мышку некуда поставить и т.д.. В целом на диване, удобно играть или работать не получится из-за особенностей посадки на диван/кресло. Этот столик подойдет чтобы смотреть фильмы, не более того.
    Ответ написан
    Комментировать