• Как сделать простейший php прелоадер кеша для сайта?

    kumaxim
    @kumaxim
    Web-программист
    Самый правильный вариант, на мой взгляд - заняться профилированием Вашего интернет-магазина. История, обычно, простая - делаем локальную копию к себе и запускаем профилирование. Смотрим что тянет, опимизируем.
    В процессе, обычно, используется xdebug + blackfire + бубен

    Если уж Вам хочется простое решение, тогда выгружайте список Ваших URL-ов куда-нибудь в отдельную таблицу или файл, после чего в 20-30 потоков запускайте Ваш скрипт по крону. Вопрос про 20-30 потоков решается так:
    1. Используйте два GET-параметра, скажем s & f
    2. Добавляйте в свой cron задания вида some-domain.com/cache-walker.php?s=100&f=300
    3. Сам скрипт, будет получать весь список URL для обхода, брать из них только 200 записей между 100 и 300 и открывать их, скажем, через curl

    Заданий на cron Вы можете добавить столько, сколько Вам надо. Обычно, лимитов на их количество у провайдеров нет. Если вдруг, какой-то URL Вашего сайта будет открыт дважды, ничего страшного не произойдет. Про нагрузки на хостинг в этот момент сказать ничего не могу. Надо смотреть Ваши графики, спрашивать хостера. Количество потоков и/или количество записей для прохода за раз подбирайте эксперементальным путем.

    Список самих URL-ов Вам в любом случае придется как-то маркировать, например, записывать timestamp последнего прохода. Задачи на CRON ставьте раз в минуту. Если timestamp менее 24 часов, просто игнорьте проход по такому URL. В самом скрипте можете прописать лимит на работу с 2 ночи до 6 утра.

    Данное решение можно описать как "Божественный костыль имени Максим Кудрявцев ". На какое-то время это позволит Вам решить проблему. Далее нужно будет все равно либо заниматься профилированием либо переезжать на какую-то другую платформу. Когда именно никто не знает, даже автор доброй сотни божетсвенных костылей Максим Кудрявцев
    Ответ написан
    1 комментарий
  • Импортозамещение: IP-телефония?

    kumaxim
    @kumaxim
    Web-программист
    Ребята с PRO Hi-Tech пытались как-то взять интервью у разрабов Эльбруса, о чем когда-то у себя на стримах говорили. Точно сейчас ситуацию не помню, но сначала им интервью назначили, потом переносили сколько-то раз, потом вообще стали морозиться. В конечном итоге ребята бросили попытки, о чем сами признались в видео на основном канале.

    По другим источникам, Эльбрусы тянут или на уровне старых Intel XEON X3450 или на уровне Core2Duo. Каких-то более-менее вменяемых тестов тестов я не видел. Все что можно найти в сети - инфа исключительно от самих разрабов. За какую-либо достоверность этой инфы не ручаюсь.

    В целом, как сказал выше Евгений Ромашкан, все не очень хорошо. В обозримом будущем, этих камней в свободном доступе явно не будет. Если нужно что-то сейчас - смотрите решения от ARM/Intel/AMD
    Ответ написан
    1 комментарий
  • Восстановить JSS через поддержку Upwork?

    kumaxim
    @kumaxim
    Web-программист
    Если я правильно Вас понял, Вы просто сглупили, приняв оффер слишком рано. Даже в случае если Вы одобряйте возврат денег самостоятельно, клиент Вам оставит негативный приватный фидбек. Публичный фидбек по таким контрактам не существует, на сколько мне известно.

    Про восстановить JSS через сапппорт.
    Если Вы долго и много работайте на бирже, рано или поздно, если руки у Вас из нужного места ростут, Вы получите статус Top Rated. Данный бейдж позволяет Вам удалить один публичный отзыв из 10 работ. Скажем, Вы работайте 2 месяца, закрыли хорошо 9 контрактов, однако, 10-й у Вас идет с жутким треском и клиент Вам на него оставляет негативный публичный фидбек. В таком случае Вы можете написать в поддержку и попросить удалить этот плохой, по Вашему мнению, фидбек. Удаляют ребята вообще любой отзыв(не важно 2 звезды там или 5, написано полотно о том какой Вы плохой или просто комментарий в духе fucking asshole), которым Вам не нравится, но только 1 из 10, учтите данный момент. При этом, будет удален публичный фидбек и, кажется, приватный фидбек не будет учиытваться при расчете jss. Однако, Вы по прежнему сможете найти этот контракт в истории своих проектов и платежей. Упоминания о нем пропадают только из публичного профиля.

    Про упадет jss или поднимится написано вообще кача историй...
    Если Вы почитайте faq-раздел, там где-то будет написано, что считаются два значения JSS - за последние 2 недели и за 6 месяцев, после чего отображается максимальное значение. Однако, как именно это значение JSS получается доподлинно известно только ключевым сотрудникам самой биржи.
    Ответ написан
    2 комментария
  • Какую схему мотивации можно предложить программисту, решающему сложные задачи (последняя линия поддержки, с задачей никто не смог справиться)?

    kumaxim
    @kumaxim
    Web-программист
    Отправить Вашего супер крутого специалиста в отпуск на юг материка, откуда он будет дней 25 не доступен вообще.
    По возвращению, места из которых будет течь сильнее всего, можно будет обозвать "опорными точками" и прикрутить к ним какой-то КПИ.

    Отдельного внимания стоит вопрос, сколько при этом компаиня потеряет денег, однако, за рамки вопроса мотивации персонала это выходит, зато Вашему директору все будет очевидно.
    Ответ написан
    Комментировать
  • Почему ID поста равно 0?

    kumaxim
    @kumaxim
    Web-программист
    Проверь, стоит ли у тебя wp_reset_postdata() на главной после цикла
    Ответ написан
  • Как обойти блокировку РКН в Azure?

    kumaxim
    @kumaxim
    Web-программист
    Поднимайте nginx reverse proxy для доступа к Вашей инфраструктуре. Вот здесь Danil Sapegin описал как это сделать.
    Ответ написан
  • Взял первый заказ на UpWORK от индуса. Как разрулить проблемы?

    kumaxim
    @kumaxim
    Web-программист
    Поздравляю Вас с первым полученным опытом! У меня когда-то нечто похожее было.

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

    Конечно, это плохо, конечно, если ты взялся за работу ее надо довести до конца во что бы то ни стало, конечно, нужно удовлетворить клиента, однако, нужно понимать когда клиент тебе садится на шею и не позволять это.
    В целом ситуация такая, что ребята из Индии в качестве заказчиков хотят слишком много. Плюс таких заказов - из довольно легко взять, на них можно набить себе первый рейтинг, набрать историю работ. Я когда только начинал работал именно с такими заказами. Из 13 первых 4 я отменил из-за неадекватности. JSS колыхался от 97% до 69%. Потом, набрав историю работ, нашел нормальных ребят из западной европы, выровнял JSS до 94%, получил Top Rated.

    Отмечу, что Upwork подсвечивает любые емайлы вообще. Просто ставь галочку "игнорировать следующие 30 дней" и не парься об этом. Кстати, с номерами телефонов, помоему, тоже самое.

    Верификация или подтвержение профиля процедура стандартная. Когда я ее проходил, мне оператор кинул ссылку на видео-чат, я открыл ее. Я смотрел на какого-то Ахмена прямиком из Индии, а он смотрел на меня. Это продолжалось секунд 30. Потом, поняв что у кого-то из нас проблемы со звуком, он мне в чате задал пару вопросов, после чего мой профиль был разблокирован.
    Ответ написан
    Комментировать
  • Клиент на Upwork угрожает международным судом, возможно ли это?

    kumaxim
    @kumaxim
    Web-программист
    Допустим, я и Вы - оба граждане Российской Федерации. Мы с Вами подписали договор, по которому я Вам плачу условные 5 т.р. за 10 часов Вашей работы в месяц. Все у нас было хорошо 6 месяцев, однако, потом с моей стороны возникли проблемы, скажем клиент/партнер меня кинул, на счете у меня осталось 25 рублей, откуда брать денег не понятно. В данном случае, не получая денег от меня Вы останавливайте работу и имеете право подать на меня в суд с требованием взыскать условныу 5 т.р., которые я Вам задолжал. С Вашей стороны, да и со стороны закона все чисто, гладко и ровно.

    Теперь давайте переместимся на мою сторону. Денег у меня на счете сейчас нет и не предвидится. Взять бысто деньг мне не от куда. С Вами по существу мне спорить не о чем. Я прекрасно понимаю, что если Вы получите решение суда и предъявите его приставу, то мой счет будет очень быстро заблокирован и как-то рассчитаться с Вами я не смогу. В таком случае, моей стратегий будет затягивание времени. Скажем, Вы подаете на меня в суд, я в суде заявил возражение, мол истец не выполнил в полной мере процедуру досудебного урегулирования конфликтов, предусмотренную договором. Разумеется, в нашем договоре есть пункт типа "Все споры и претензии решаются путем переговоров...", однако, не прописан их формат, условия согласования и т.п. На этот момент я давлю и прошу отложить рассмотрение дела по существу на 8 недель. Затем, через 2 месяца я предоставлю в суд справку о том, что мол ложусь в стационар на неделю, поэтому присутствовать не могу и т.п.

    Всеми этими действиями я добиваюсь одного - максимально отсрочить блокировку моего счета, как план минимум. Мне это нужно для того, чтобы найти способ залатать дыру, которая у меня появилась из-за недобросовестных действий моего клиента/партнера. Для того чтобы Вы не подали на меня в суд вовсе, я могу начать докапываться до всяких мелочей, в духе а вот тут две запятые не в том месте... либо я могу начать пугать Вас, мол по Вашей вине у меня вот сайт упал, я понес убытки, для тебя это такая-то статья ГК РФ... либо я могу развести Вас на какое-то правонарушение, и имея на руках на Вас компромат сказать: "Да, я Вам должен условные 5 т.р.,однако, если Вы подадите на меня в суд, тогда я достану вот эти вот факты и заставлю Вас заплатить условные 10 т.р." Эти дела никак не связаны, однако, в Вашей голове промелькнет: "Да ну его нафиг, не буду с этим му###м связываться", чего мне собственно и нужно.

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

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

    Категорически нельзя соглашаться на предложение Вашего клиента получить оплату за пределами Upwork. Категорически нельзя как-то оскорблять оппонента или его ближайшее окружение. Вы не должны дать ему ни единого повода, чтобы разыграть другую карту. Ни в коем случае не опускайтесь до уровня оппонента, если он начинает вести себя как быдло. На угрозу про суд отвечай: "Хорошо, поговорим в суде вместе с моим юристом".

    Мой главный совет - не будь мудаком, как в данной ситуации, так и вообще по жизни.
    Ответ написан
    4 комментария
  • Как перенести сайт с modx evo на wordpress?

    kumaxim
    @kumaxim
    Web-программист
    1. Копируешь шаблон modx => тема Wordpress
    2. Копируешь все дополнительные поля, при необходимости
    3. Переносишь контент руками(до 100 записей) либо через INSERT INTO ... SELECT к MySQL


    Автоматического способа, чтобы прямо все сразу из коробки и было замечательно, лично я не видел. В любом случае что-то надо допиливать руками.
    Ответ написан
  • Как лучше сделать сайт на Wordpress?

    kumaxim
    @kumaxim
    Web-программист
    Купить, скажем Avada или Divi и потратить вечер на кликанье по кнопкам, чтобы сделать этот самый проект.

    Однако, тут проблема кроется в следующем: обе темы имеют предустановленные наборы(демо или слои), которые ты можешь легко импортировать с их сервера, после покупки лицензии. Ты открываешь эти самые демо/слои и смотришь, устраивает ли тебя что-либо из готового на 85% и более. Если да - покупаешь тему, в админке добавляешь виджеты, формочки, размер шрифта и т.п. после чего выкатываешь в продакшн. Если нет - лучше сделай тему с нуля на underscode или sage

    Конкретно у Divi и Avada имеют пошаговые видео-уроки, которые вполне можно осилить за 1 вечер, для того чтобы сделать базовый сайт.

    На этих двух мульти-конструкторах мир не сходится. У них есть куча более и менее распиаренных клонов, скажем тот же Genesis или Gantry. Выбирай что тебе ближе/понятнее и приступай пилить.

    Avada, Divi, Genesis - темы платные, от 60 до 90 у.е. вроде бы стоят
    Gantry - open source проект, хотя по функционалу и проигрывает, на мой взгляд

    Если выберешь что-то из этого, то не забудь в продакшене поставить XCache, иначе очень быстро получишь письмо от хостера о превышении допустимой нагрузки на тарифном плане.
    Ответ написан
    2 комментария
  • Как массово экспортировать и импортировать товары woocommerce?

    kumaxim
    @kumaxim
    Web-программист
    All in one import & export
    Ответ написан
    Комментировать
  • Как обезопасить свой бекенд от разработчиков?

    kumaxim
    @kumaxim
    Web-программист
    Тебе нужно сделать так, чтобы у твоего человека не было мотивации тебя подставить.
    Ответ написан
  • Wordpress (woocommerce) репост миниатюр товара в альбом вконтакте?

    kumaxim
    @kumaxim
    Web-программист
    Главное изображение товара должно идти как "Featured image". Тебе надо написать запрос к СУБД, который достанет URL's этих featured image, опираясь на ID продукта. Затем, скармливаешь URL картинок на API VK с указанием куда и в какую группу заливать. Готово.
    Ответ написан
    Комментировать
  • Как выполнить произвольный запрос к БД в рамках wordpress классы $wpdb?

    kumaxim
    @kumaxim
    Web-программист
    Лично я не вижу проблемы в твоем запросе. Он не работает? Про placeholder и возможные sql-инъекции пока речи не идет
    $sql = $wpdb->prepare("UPDATE %s SET school_list = CONCAT (school_list, %s) WHERE autor_id = %d", $tablePerson, $school_post_id, $userId );
    $result = $wpdb->query( $sql );
    Ответ написан
    Комментировать
  • Удаляю хук раньше чем он появляется(Wordpress). Ребят, как лучше сделать?

    kumaxim
    @kumaxim
    Web-программист
    Тебе нужно смотреть в приоритеты. попробуй следующим образом:
    <?php
    /*
    Plugin Name: test
    Description: test
    Version: demo
    Author: test@test.test
    */
    
    function remove_us_ajax_cform_by_toster_plugin() {
    if ( has_action( 'wp_ajax_nopriv_us_ajax_cform', 'us_ajax_cform' ) ) {
    		remove_action('wp_ajax_nopriv_us_ajax_cform', 'us_ajax_cform' );
    	}
    
    	if ( has_action( 'wp_ajax_us_ajax_cform', 'us_ajax_cform' ) ) {
    		remove_action('wp_ajax_us_ajax_cform', 'us_ajax_cform' );
    	}
    }
    
    add_action( 'wp_ajax_nopriv_us_ajax_cform', 'remove_us_ajax_cform_by_toster_plugin', 0 );
    add_action( 'wp_ajax_us_ajax_cform', 'remove_us_ajax_cform_by_toster_plugin', 0 );
    Ответ написан
    2 комментария
  • Совет по интеграции в WordPress?

    kumaxim
    @kumaxim
    Web-программист
    Лично я сделал бы иначе:
    1. Создать тег "Афиша"
    2. Добавить 3 поста и присвоить им тег "Афиша"
    3. Создать кастомный шаблон страницы
    4. Вывести 3 записи с тегом "Афиша"


    Для того чтобы вывести какие-то страницы/записи внутри шаблона, используя PHP , тебе надо копать в сторону WP_Query
    Ответ написан
    5 комментариев
  • Что за шум вокруг темы, что программисты скоро не нужны?

    kumaxim
    @kumaxim
    Web-программист
    Я согласен с вышеупомянутыми личностями, но лишь отчасти. На мой взгляд, часть людей, которые пришли в сферу за легкими деньгами действительно уйдут/потеряются/вымрут, но это произойдет не потому что программисты больше станут не нужны, а потому что сфера изменится. Трансформируется окружающая среда, которая будет требовать не программистов, а, предположим, аналитиков, которые теперь будут не писать код на C++/JAVA/PHP и т.п., а составлять описание бизнес-процессов для генератора алгоритмов, который сам будет уже делать нужный код.

    Программист - это не человек, который по 6-8-12 часов в сутки набирает код. Программист - это человек, способный посмотреть на проблемы/задачи/процессы под другим углом, чтобы найти более рациональное решение. Я думаю, что ребята, которые чисто набирают код, действительно, в обозримом будущем могут стать ненужными, однако, чтобы светлый ум стал ненужен... Лично я себе такой ситуации представить не могу.

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

    kumaxim
    @kumaxim
    Web-программист
    Подход, на мой взгляд, здесь один INSERT INTO SELECT.... Пример

    Пойми как лежат данные в текущей БД, разберись как нужно положить данные в новую БД и, используя MySQL Workbench переносишь их между базами. Также, рекомендую создать рабочие копии обоих БД под правами одного пользователя или вообще обе структуры слить в одну БД.
    Ответ написан
    Комментировать
  • После обновления chrome стал перенаправлять домены apache на https протокол?

    kumaxim
    @kumaxim
    Web-программист
    Столкнулся к этой же проблемой, после того как с утра набрал apt update && apt -y full-upgrade

    Мое девелоперское окружение развернуло на Docker-контейнерах, т.е. в одном у меня работает MySQL, во втором nginx, в третьем php-fpm. Для доступа из хостовой ОС к контейнеру я использовал домен host.dev. После обновления Google Chrome до версии 63.0.3239.84 (Official Build) (64-bit), дата 07-12-2017 мой девелоперский домен перестал работать, причем только в Хроме. В Firefox все ОК

    Начал копать. Первое на что наткнулся это пост на Stackoverflow Google Chrome redirecting localhost to https. Ответ от BigJump, отмеченный решением не наш случай, однако, меня зацепила его заметка про HSTS, поэтому на всякий случай в свой конфиг nginx я добавил следующее:

    server {
        add_header Strict-Transport-Security "max-age=0;";
        ...........
    }


    Листаю немного ниже, этот же самый вопрос и вижу замечательный ответ от rafawhs. Оказывается, зона .devявляется новым gTLD доменом, который теперь принадлежит Google. Вот это и является корнем. Google Chrome - браузер от гугла, в который они добавили ограничение ERR_ICANN_NAME_COLLISION, из-за которого никакой домен имеющий зону .dev с моего локального сервера теперь работать не будет. Остальные браузеры, в частности FireFox пока, по всей видимости, еще не подтянулось, впрочем, я думаю, что это только вопрос времени.

    На момент написания этой статьи эта проблема встречается только в Google Chrome с версии 63.0.3239.84. У меня на нетбуке стоял Chrome 61 версии, там ограничение ERR_ICANN_NAME_COLLISION на домены .dev с локального сервера отсутствует.

    Проблему я решил просто, открыв /etc/hosts и изменил host.dev на host.ld, который в данный момент gTLD зоной не является. Поправил доменное имя в настройках приложения и теперь у меня снова все работает.
    Ответ написан
    2 комментария