• Как обеспечить быструю работу сайта с большой базой данных?

    @qwermus
    Думаю, в данном случае важно выбрать грамотного подрядчика. Я много сайтов повидал на своём веку, но в 95% они были написаны криво, толковых разработчиков по пальцам сосчитать можно, и они как правило стоят дороже "$100 за сайт" (излюбленная фраза заказчиков на фрилансе:)
    Буквально вчера оптимизировал крупный американский сервис. Задача - страница открывается более 15 секунд. Простой анализ слоулогов и банально правильная индексация позволили уменьшить время загрузки до 0,6 секунд, а это элементарные вещи, который обязан знать любой разработчик.
    Просто, когда будешь искать заказчика, требуй его портфолио с высоконагруженными проектами. Можешь поинтересоваться, например: "хм, я вижу у вас на сайте много товаров с большим количеством параметров у каждого. Расскажите, как вы строили sql-запрос и какое примерно время запроса в базу получилось при этом. Как вы добились такого хорошего времени?". По его ответу, даже если сам не понимаешь половину слов, будет видно, в теме он, или не очень.
    Ответ написан
    Комментировать
  • Есть ли способ поместить if в переменную или как вывести это все в echo?

    @qwermus
    Не совсем понял вопрос и полагаю, что есть решение правильнее, но если ответить именно на заданный вопрос, то переменная выводится с помощью функции eval, т.е.
    $var = 'if (1==1){echo "1";} else {echo "2";}';
    eval($var);
    Ответ написан
  • Как сделать автоматическое удаление лишних отступов, оставляя только один?

    @qwermus
    Я бы регуляркой сделал. Допустим, отступ - это <br> (у тебя он может выглядеть иначе, например, <br /> или просто\n).
    Тогда пишем
    $text = preg_replace('/<br>[\s]+<br>/', '<br>', $text);


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

    @qwermus
    Если, как ты написал, через $_GET-параметр, то тебе надо выбрать только те элементы, которые переданные этим GET. Т.е. если гета нет, то делаем
    WHERE id_parent = 0
    И выбираем только корневые.
    Если же гет есть, то делаем
    WHERE id_parent = $_GET['id_parent']
    И теперь выберем только вложенные в этого родителя элементы.
    Ну а чтобы узнать, есть дочерние элементы или нет, можно переписать запрос:
    $res = $mysqli->query("
        SELECT f.*, COUNT(s.id) as children 
        FROM `groups` f 
        LEFT JOIN`groups` s
        ON s.id_parent=f.id
        WHERE f.id_parent = '".$_GET['id_parent']."'");

    Если не ошибаюсь, то так, но надо проверить. Тогда в $row['children'] ты получишь количество прямых потомков

    _______________

    Второй вариант - это структурировать по id_parent, т.е. заменить $tree[$id] на $tree[$node['id_parent']][$id] . Тогда можно будет при выводе на экран перебирать не
    foreach ($data_tree as $item)
    а foreach ($data_tree[$_GET['id_parent']] as $item)

    _______________________
    Опять таки ничто не мешает сделать банальную проверку, например:
    foreach ($data_tree as $item) {
        if ($item['id_parent'] == $_GET['id_parent']) {
    Ответ написан
  • Формирование json с вложенными циклами?

    @qwermus
    Имаджес обнулять надо. В целом любую используемую переменную изначально надо определить перед тем, как использовать. Т.е. сразу после первого while ставишь
    $images = '';
    И теперь при каждом новом товаре имаджес будут чистые.
    Ответ написан
    Комментировать
  • Как проверить поле на пустоту?

    @qwermus
    Можно просто
    if ($_POST['email'] == '') {
        echo 'Вы не ввели email';
    }
    Ответ написан
    2 комментария
  • Я фулл стек разработчик, ожидают ли от меня наниматели быть так же и дизайнером?

    @qwermus
    Это оговаривается при собеседовании. Я чётко знаю свои слабые места и явно об этом говорю сразу. Если работодатель планирует тебя использовать в этих направлениях - сразу закроете этот вопрос.
    На западе как правило специалисты узконаправленные, у нас же привыкли, что если программист - он может и ноутбук починить, и разобраться, почему ворд не открывается. Поэтому лучше об этом говорить сразу: "я не дизайнер, могу в фотошопе сжать картинку, но не более"
    Ответ написан
    Комментировать
  • На чем лучше писать конструктор статичных сайтов?

    @qwermus
    Я бы написал на чём-угодно набор модулей и просто подключал и отключал их для каждого дешёвого сайта. В моём случае это был бы ларавел.
    Ответ написан
    Комментировать
  • Почему не срабатывает removeClass?

    @qwermus
    У тебя clear вложен в trigger. При клике на clear у тебя происходит ещё и событие клика на триггер. Другими словами, у тебя убирается класс эктив и тут же ставится вновь. Тебе надо клеар достать из триггер
    Ответ написан
    Комментировать
  • Как удалить загруженный пользователем файл после закрытия клиентом страницы?

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

    @qwermus
    Сроки - большая проблема у разработчиков. Сжатые сроки - страдает качество, и тут всё зависит от начальства или заказчика. Если им всегда надо на вчера - я предпочитаю от такой работы отказываться, на пользу это не пойдёт. Конечно, можно делать в спешке и как попало, но спустя время результат будет удручающий и поддерживать продукт будет сложнее и сложнее. Лучше постараться искать людей, которые с пониманием относятся ко времени разработки и готовы мириться с медленной разработкой при условии, что продукт получается качественный.
    Ну и касательно самого вопроса - можно пытаться часть задач оптимизировать. Я, например, долгое время пользовался дримвивером и он казался мне удобен, но в какой-то момент открыл для себя ПХП-шторм, который делает часть работы за тебя - это позволило ускорить работу. Так можно постараться рутинные задачи по максимуму оптимизировать.
    Ответ написан
    Комментировать
  • Как обновлять запись в БД через форму без кнопок?

    @qwermus
    Есть скрипт, на который попадает форма после нажатия на кнопку. Тебе надо убрать кнопку, а вместо этого сделать так:
    $(document).on('keyup','.input-class',function(){
    // Send data
    $.post(
    'URL,
    data,
    function() {
    })
    .done(function(res) {

    })
    .fail(function() {

    });
    return false;

    });

    Соответственно в УРЛ подставь УРЛ скрипта, в data подставь значение из input. Как-то так
    Ответ написан
    Комментировать
  • Можно ли продать идею/проект/разработку?

    @qwermus
    Можешь поездить по различным стартап-саммитам, там тебе и расскажут, как идею лучше преподнести, чтобы продать. А дальше всё зависит от тебя. Но учти, таких идейных, как ты - тысячи, а то и миллионы. Действительно ли эта идея чем-то принципиально отличается и в это инвесторы готовы вложиться? Они ведь тоже не дураки, не будут давать деньги на всё подряд. Поэтому два варианта:
    - искать серьёзного инвестора, который выделит тебе деньги на создание команды для доведения проекта до ума. Но при этом ты сам должен быть предельно серьёзен и грамотен.
    - искать дурака с деньгами, мажора какого-нибудь, который даст деньги, а дальше будь что будет.

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

    @qwermus
    Я бы банально завёл табличку в базе со следующими полями:

    id - порядковый номер
    name - название
    category - принадлежность к блоку, например, 1 - стиль, 2 - цвет пола, 3 - цвет кухни, и т.п.
    image - картинка
    active - активировать\деактивировать позицию, например, если она временно недоступна.
    ну и дальше что ещё необходимо, описание, например.

    Теперь достаточно выбрать из БД элементы и вывести их на экран. При клике на элемент сохраняем id, по которому можно получить, что же выбрал пользователь.

    Не нравится БД - можно json, например, или xml. В любом случае, в любой момент можно деактивировать позицию, которая не нужна, либо добавить новую.

    Если сделать другую таблицу, categories, то можно в ней прописать слои, например:
    1 - стиль
    2 - цвет пола
    3 - цвет кухни
    и т.д. Таким образом можно уже выбирать сначала слой, который показываем, затем в этот слой из предыдущей таблицы подставляем параметры. Так мы получаем ещё и гибко редактируемые слои.

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

    @qwermus
    Я бы посоветовал на первое время устроиться в какую-нибудь компанию в роли junior. Тебя там будут учить и за это ещё деньги платить. Спустя какое-то время сможешь начать брать клиентов и делать в свободное время им задачи. Когда обзаведёшься несколькими постоянными клиентами - сможешь покинуть работу и начать фрилансить.
    Не имею ничего, ни знай, ни клиентов, ни рекомендаций, золотых гор ты не получишь. В целом фриланс - сложная вещь, если хочешь зарабатывать хорошо. И не забывай самое главное - учиться, учиться и учиться
    Ответ написан
    Комментировать
  • Как обновить один файл формата .php на 10 сайтах?

    @qwermus
    Если все файлы лежат в одном месте, то можно сделать следующее:
    1) Где-то положить файл php, скрипт будет пробегать по всем сайтам и искать файл, дата обновления которого сама большая.
    2) После этого он будет копировать этот файл во все остальные файлы.
    Таким образом после обновления любого из файлов можно пускать этот скрипт, и он будет все их обновлять. Также можно поставить этот скрипт в крон, тогда всё будет происходить автоматически.
    Ответ написан
    Комментировать
  • Одна PHP работает в функции без установленного переменного, а другая нет, почему?

    @qwermus
    Отчёт об ошибках в одном месте включен, в другом выключен. Переменную надо определить прежде, чем использовать. Либо, если она определяется в другом месте, то можно дописать перед вызовом функции:
    if (!isset($test)) { // Если переменная не определена
    $test = false; // Определим её
    }
    Ответ написан
    Комментировать
  • Как заполнить двумерный массив на PHP?

    @qwermus
    Вероятно, речь про
    while ( $row = mysqli_fetch_assoc($result))
                    {
                        $array[] = $row;
                    }
    Ответ написан
  • Как попробовать разные направления it чтобы найти то самое?

    @qwermus
    Я пять лет проработал backendom в компании на самописном чистом php-проекте, и закончилось тем, что я устал от однообразия. Мне просто надоело то, что я изо дня в день делаю по сути одно и то же. Жизнь проходит мимо, я упустил все новые тенденции, и я уволился.
    Поначалу мне посоветовали изучить вордпресс - мол, сейчас весь интернет на вордпрессе и им можно хорошо зарабатывать. Я потратил немного времени на его изучение, сделал три сайта на фрилансе, и понял, что это не то, что не интересно - в целом для меня CMS-ки - не моё направление. Я люблю создавать что-то интересное, а не натягивать дизайны на движки.
    В итоге меня пригласили в компанию разработать проект на laravel. Я взялся, потратил время на него и понял, что это интересная вещь. После окончания проекта продолжил именно с ним работать. Сейчас пригласили делать проект на symfony, и я сразу понял, что мне понравится.
    Так я и нашёл себе новое направление.
    Не знаю, что тебе посоветовать, но, надеюсь, мой опыт чем-то поможет.
    Ответ написан
    Комментировать