• Как писать код сворачивать его фрагменты в NetBeans?

    @MadridianFox
    Web-программист, многостаночник
    Если у вас есть огромная простыня кода, которая не содержит "естественных" регионов которые можно скрыть, то значит что-то с вашим кодом не так.
    Лучшие практики всех популярных языков программирования говорят о том что тело функции должно помещаться на экране, а иногда и вообще быть не больше 10-15 строк.
    Бывают случаи когда большие куски кода оправданы, но если у вас они встречаются так часто что необходим способ их сворачивания...
    Ответ написан
    Комментировать
  • Как перечислить значения в условии?

    @MadridianFox
    Web-программист, многостаночник
    if(in_array($chislo,['1','2','3'])){}
    Ответ написан
    Комментировать
  • Как передать значение из масива?

    @MadridianFox
    Web-программист, многостаночник
    <input type="hidden" name="LMI_PAYEE_PURSE" value="<?=$webMoney['wmr'] ?>">
    Ответ написан
    Комментировать
  • Как сконструировать запрос, при котором leftJoin должен брать имя второй таблицы из ячейки первой?

    @MadridianFox
    Web-программист, многостаночник
    Сомневаюсь что вообще возможно в одном запросе использовать данные, хранимые в таблице, в качестве названия объектов БД.

    Скорее всего придётся делать дополнительные запросы, в иделае - по одному на каждую таблицу товара.

    А вообще такие вещи как товары, следует хранить используя EAV структуру.
    Ответ написан
    Комментировать
  • Ошибка при добавление в базу данных?

    @MadridianFox
    Web-программист, многостаночник
    Number of args (0) doesn't match number of placeholders (1)

    В ошибке говорится о том, что количество подставляемых значений ноль, а в запросе один плейсхолдер. Зачем нужен ?u в конце запроса?
    Либо это там не нужно, либо вы забыли передать параметр, который подставится на место знака вопроса (или на место ?u, зависит от БД и драйвера работы с ней).

    Кстати, почему вы вставляете данные из post в запрос без предварительной обработки? Именно для этого, отчасти, и предназначаются плейсхолдеры - они непозволят злоумышленнику передать в качестве одного из значений кусок sql,
    Ответ написан
  • Почему возникает такая ошибка при использовании foreach с объектом?

    @MadridianFox
    Web-программист, многостаночник
    Вы в цикле перезаписываете 2 элемента одного массива, а надо добавлять массив с двумя элементами:
    foreach ($serId as $catS) {
        if($catS->id_serial) {
            $idSer[]=[
                'id'=>$catS->id_serial,
                'nesting'=>'serial'
            ];
        }
    }
    Ответ написан
    Комментировать
  • Как создать sitemap.xml на PHP?

    @MadridianFox
    Web-программист, многостаночник
    Каким образом вы передаёте параметр $Page скрипту?
    Обычно, когда создают php приложение с единой точкой входа, используют mod_rewrite, ну и отрезают всё что идёт после домена, и присваивают отрезанное некоторому get параметру.
    Можно обойтись и без mod_rewrite, но тогда ссылки будут иметь вид index.php?page=index
    В первом случае необходимо в .htaccess добавить условие, что переданный путь не является файлом или папкой.
    Во втором случае, ничего не мешает поисковому боту, или кому угодно забрать этот xml файл из корня сайта, и делать дополнительных телодвижений по его отдаче не нужно.

    Если уж вам очень уж хочется сделать так как делаете, то необходимо не подключать xml файл, а читать его содержимое и выводить на страницу. Что-то вроде:
    case "sitemap.xml":  
        echo get_file_contents('sitemap.xml'); 
    break;
    Ответ написан
    Комментировать
  • Как сделать отдельные ссылки?

    @MadridianFox
    Web-программист, многостаночник
    Если вопрос лишь в том как обойтись без цикла и вставить значения в html теги, то вот:
    <a href="#wmr" tabindex="-1" data-toggle="tab">Пополнить через <?=$webMoney['wmr']?></a>
    <a href="#wmu" tabindex="-1" data-toggle="tab">Пополнить через <?=$webMoney['wmu']?></a>
    <a href="#wmz" tabindex="-1" data-toggle="tab">Пополнить через <?=$webMoney['wmz']?></a>

    Однако точно такого же результата можно добиться таки используя цикл:
    <?foreach( $webMoney as $key => $value ) : ?>
        <a href="#<?=$key?>" tabindex="-1" data-toggle="tab">Пополнить через <?=$value?></a>
    <?endforeach?>

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

    @MadridianFox
    Web-программист, многостаночник
    Ну на самом деле код неправильно закомментирован. Нужно либо переносить строки, чтобы комментировать только код, но не открывающий и закрывающий php-теги
    либо использовать многострочный комментарий /* */ чтобы не зацепить закрывающий тег.
    Что качается комментирования кусков кода и сокрытия того что выводится php кодом, то тут есть два пути:
    1) замутить обработку выдаваемого html. Возможно используемый фреймворк/cms что-то такое умеет. Возможно придётся самому оборачивать всё в ob_start() а дальше регуляркой из конечного html вырезать комментарии.
    2) просто не оставлять комментарии. Используйте CVS чтобы была возможность посмотреть на старый код.
    Ответ написан
    Комментировать
  • Как реализовать чат (или почти чат) на СИ + php?

    @MadridianFox
    Web-программист, многостаночник
    Реализовать можно, однако PHP не очень подходит для организации чатов и подобных вещей, где сервер должен держать соединение с множеством клиентов и инициировать отправку данных.
    Лучше посмотреть в сторону NodeJS, go, Java, Python...

    В основе всех высокоуровневых протоколов взаимодействия компьютеров по сети лежит socket соединение. Когда ты работаешь в браузере, ты не можешь его использовать, у тебя есть только http (ajax это тоже http), грязные хаки, вроде long polling, ну и модный нынче WebSocket.

    Если клиент пишется на C, да и вообще на чём угодно что поддерживает сокеты, то тут даже гадать нечего. PHP имеет расширение для работы с сокетами. Раньше вроде считалось что оно не очень, и работают с ним одни извращенцы. Оно и понятно - PHP заточен под http.

    На самом деле необходимо придумать или реализовать уже известный, или даже взять библиотеку, в которой уже запрограммирован протокол общения между клиентом и сервером.
    По сути, так же как http с его заголовками и телом запроса является протоколом над TCP, то и вам необходимо придумать/ взять готовый протокол такого же уровня - над TCP.
    Ответ написан
    Комментировать
  • Как спроектировать сайт по поиску работы?

    @MadridianFox
    Web-программист, многостаночник
    Налицо неправильное разделение программы на модули. Наивно полагать что в модуле работника должна быть модель работника, поиск работника и, например личный кабинет работника из-за того, что все они относятся к работнику.
    Деление системы должно происходить после анализа предметной области и составления списка вариантов использования. При составлении вариантов использования, учитываются роли пользователей.
    В вашем случае чётко выделяются две роли - работник и работодатель. У каждого из них есть несколько возможностей на сайте - создать профиль/резюме/вакансию, искать чужой профиль/вакансию/резюме.

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

    @MadridianFox
    Web-программист, многостаночник
    Ну так из БД она и вытягивается целиком. Обрезание происходит в при выводе на страницу.
    Я не знаю как это сделать быстро и грамотно, но на ум приходит поиск позиции начала и конца тегов ссылок регуляркой. Если вдруг оказывается что ссылка начинается до 400 символа, а заканчивается после, то значит она обрежется. В этом случае мы обрезаем не по 400, а по конец этой ссылки. Если у ссылок длинные анкоры, то можно немного посчитать и обрезать анкор внутри ссылки, сохраняя её функциональность.
    Ответ написан
  • Какой тут паттерн нужен?

    @MadridianFox
    Web-программист, многостаночник
    А нужен ли тут паттерн? Возможно стоило бы описать недостатки того что есть, хотелки, и спросить как этого добиться.
    Ответ написан
    2 комментария
  • Хватает ли использование одной датабазы Redis для проекта средней сложности?

    @MadridianFox
    Web-программист, многостаночник
    "Проект средней сложности" - это когда разработчику не так уж и сложно его реализовать. Кому-то не сложно в разумные сроки написать систему вроде этого же тостера, а кому-то сложно простой бложик на WP поднять.

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

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

    @MadridianFox
    Web-программист, многостаночник
    Для большого сайта, нужна возможность горизонтального масштабирования. Т.е. в какой-то момент вам не хватит мощности одного web-сервера.
    Поэтому крупные сайты стоит делать если не микросервисными, то хотя-бы такими, чтобы можно было поднимать 2-3 копии сайта и ставить между ними балансировщик нагрузки. Для этого надо продумать несколько вещей, например хранение сессий на отдельном сервере (в БД или каком-нибудь redis). К чему я веду?
    К тому что подобные трюки, позволяют не только горизонтально масштабировать монолитный сайт, но и облегчают разделение сайта на несколько частей, каждая из которых может быть написана на чём угодно. Так, например основная часть сайта может быть выполнена на PHP, а такие высокоинтерактивные части, как чат или уведомления, могут быть реализованы на nodejs. Обе эти части сайта без проблем смогут работать с сессией пользователя, потому что она не привязана к конкретному web-серверу.
    Ответ написан
    1 комментарий
  • Как подружить gii и php storm?

    @MadridianFox
    Web-программист, многостаночник
    А зачем копировать? Gii позволяет посмотреть какой результат получится, но основная его функция - сгенерировать файлы.
    Ответ написан
    1 комментарий
  • Как правильно написать запрос к Sphinx используя yii-sphinx?

    @MadridianFox Автор вопроса
    Web-программист, многостаночник
    На самом деле проблема была в версии Sphinx. После обновления до 2.2.9 стали работать и запросы со скобкаим, и запросы, в которых идёт прямое обращение к полю id (раньше работало только @id),
    Ответ написан
    Комментировать
  • Fetch кушает много ОЗУ. Как исправить?

    @MadridianFox
    Web-программист, многостаночник
    У вас fetch вызывает переданный ему callback, а callback снова вызывает fetch и так по кругу.
    Ответ написан
  • Php обработчик не правильно отдает адрес файла?

    @MadridianFox
    Web-программист, многостаночник
    Скорее всего точка входа в обработчик лежит в папке /content/topic/add, и он кладёт файл в папку uploads/. Тогда эти два пути складываются в /content/topic/add/uploads/.
    Надо указывать путь относительно корня сайта, например вот так:
    $_SERVER['DOCUMENT_ROOT'].'/uploads/'
    Ответ написан
  • Где нужно создавать объект mysqli?

    @MadridianFox
    Web-программист, многостаночник
    Каждый ajax запрос, как и открытие каждой страницы, заново запускает php скрипт на сервере.
    Поэтому с точки зрения сохранения объекта между ajax запросами, нет никакой разницы - объект всегда будет создаваться заново.
    Ответ написан
    Комментировать