Задать вопрос
  • Как правильно выбрать фреймворк и яп для проекта, если ты заказчик?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Я думаю, таких фреймворков не существует.
    Дело в том, что ваши требования совершенно уникальные

    1)Нужно будет выполнять много запросов к БД

    На всех остальных сайтах делается один-два запроса в час.

    2)Важная быстрая скорость работы нашего сайта

    Это очень редкое требование, обычно сайту достаточно возвращать ответ в течение получаса

    3)Безопасность от всяческих XSS и SQL атак.

    Это самое сложное. еще не написан фреймворк, который бы писал код за программиста, или хотя бы подчищал за ним баги и уязвимости
    Ответ написан
    Комментировать
  • Как экранировать sql запрос внутри texarea?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Это очень просто сделать.
    Надо всего лишь освоить подготовленные выражения.
    Например, почитав вот тут https://habr.com/ru/articles/662523/

    И все запросы, в которых участвуют переменные, выполнять только таким образом.
    А texarea там, или tinymce - это уже без разницы.
    Ответ написан
    1 комментарий
  • Почему при удалении куки возникает ошибка Warning: Cannot modify header information?

    delphinpro
    @delphinpro Куратор тега PHP
    frontend developer
    Ответ написан
    Комментировать
  • Почему при удалении куки возникает ошибка Warning: Cannot modify header information?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Чтобы решить эту проблему, надо научиться пользоваться интернетом.
    В частности, освоить такой сложный навык, как взять сообщение об ошибке, вставить в адресную строку своего браузера, и нажать enter
    И после этого с удивлением обнаружить, что объяснений этой ошибки существует несколько миллионов.
    Например https://ru.stackoverflow.com/questions/284578/

    И заодно не помешает научиться задавать вопросы. Чтобы не спрашивать про то, что вы и так знаете.
    Ответ написан
    4 комментария
  • Есть устройство на астра линукс (Смоленск) версия ос с сертификатом ФСТЭК, никак не получается установить программы или окружение на устройство, идеи?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Сообщение о том, что
    такого файла не существует и установлен он не будет

    означает, что не существует такого файла и он не будет установлен. Вот теперь понятно?

    Так же попытки установки deb пакетов были безуспешны.

    С каким текстом ошибки? Нам самим что-ли ошибку придумывать?
    Ответ написан
    Комментировать
  • Как сделать в MySQL изменение поля строки через время?

    Lastor
    @Lastor
    В чем сила, брат? В ньютонах.
    Вообще это очень нерационально гонять mysql почем зря каждую секунду.
    Более целесообразно при выборке вместо поля suc проверять разницу текущего времени с полем date.
    например
    select * from tableName where `date` > now() - interval 10 day

    А если suc принципиально нужен, то:
    select id, login, `date`, (`date` > now() - interval 10 day) as suc from tableName
    Ответ написан
    Комментировать
  • Какие сервера поднимаются на виртуалках, а какие физически?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Какие сервера поднимаются на виртуалках, а какие физически?

    Практически любые можно поднять и так и так.

    Для каких служб требуется кластер серверов, а для каких отключение не критично?

    А это вообще не от этого зависит.

    Твои вопросы без контекста не имеют смысла. Потрудись почитать что такое сервер вообще и задать более конкретный осмысленный вопрос. Этот слишком общий, на него корректно ответить невозможно.

    Все равно что "какие виды упражнений надо делать спортсмену", не указывая вид спорта.
    Ответ написан
    Комментировать
  • Какой стек использовать для десктоп приложений в гос.предприятиях в 2023 году?

    Мне удобнее сделать всё на C#, .Net, WPF и в случае появления linux запускать всё под Mono.

    Ты под Mono не сможешь запустить приложение на WPF:)
    Тогда уж сразу лучше писать на Avalonia.
    Это раз.

    Два - если будет Linux, то очень велик шанс, что какой-нибудь особенный российский linux, у которого могут быть проблемы с совместимостью - нужно будет тестировать и как минимум писать инструкции по установке.

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

    mayton2019
    @mayton2019
    Bigdata Engineer
    Вместе с С++ хорошо сочетается знания алгоритмов и железа.
    Попробуй для практики зарегистрироваться на codewars / leetcode и прочих задачниках
    и порешай задания. По железу. Поразбирайся с Arduino, Raspberry. Сделай что нибудь полезное.
    Ответ написан
    Комментировать
  • Как продвигаться дальше?

    @dima20155
    you don't choose c++. It chooses you
    Гуглите "Programming language roadmap" и вперед.
    Любите книги - аналогично есть много книг как по самому С++ (как от создателя языка, так и от признаных экспертов). Также легко найти множество книг и по фреймворкам/библиотекам на любой вкус, важно лишь понять что нравится (web/графика/сеть, а может что-то ещё)
    https://salmer.github.io/CppDeveloperRoadmap/
    https://roadmap.sh/cpp

    Ну и по классике, если хотите научиться разговаривать на английском - говорите. Хотите научиться разрабатывать ПО на целевом языке - разрабатывайте pet (а может и opensource?) проекты.
    Как пример
    А вот ещё
    Ответ написан
    2 комментария
  • Какую SQL базу данных под Linux лучше использовать с FTP через FUSE?

    ky0
    @ky0
    Миллиардер, филантроп, патологический лгун
    Никакую базу, имхо, не нужно использовать с "FTP через FUSE".
    Ответ написан
    4 комментария
  • Как можно оптимизировать данное полотно из if?

    Stalker_RED
    @Stalker_RED
    Пара забавных фактов:
    1. isset() проверяет существование переменной и возвращает true или false.
    2. == - не строгое сравнение

    В результате условия
    if (isset($data['time']) == 2) {}
    и
    if (isset($data['time']) == 3) {}
    Выполнятся оба, независимо от того что там в переменной $data['time']. Или не выполнятся, если ее вообще нет.
    Проверим?

    То есть у вас вопрос не как сократить, а понять для начала чего вы хотите добиться, а потом уже писать код. С нуля.
    Возможно стоит один раз написать формулу расчета, и один массив с коэфициентами (множителями), которые подставляются в формулу в зависимости от выбранной длительности сеанса.
    Ответ написан
    1 комментарий
  • Где лучше размещать изображения товаров интернет-магазина?

    Stalker_RED
    @Stalker_RED
    Проще и дешевле хранить локально. Но чем больше посетителей, чем шире их география, тем выгоднее перебросить картинки в CDN.
    Неплохой вариант сделать сразу поддомен для статики, и пусть он изначально даже ведет на тот-же сервер где и основное приложение, но как только понадобится масштабирование вы сможете быстро перебросить его куда угодно.
    Единственный накладной расход - сразу придется делать простенькое API для аплоада картинок, а не хардкодить move_uploaded_file()
    Ответ написан
    Комментировать
  • Ошибка при переходе на php8 WordPress, Как исправить?

    @maksam07
    short_open_tag

    Это из разряда ошибок, где php не может корректно сообщить о проблеме и нужно изучать сам код.
    Ответ написан
    6 комментариев
  • Почему в данных таблицы все не по порядку?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    БД не гарантирует и не обеспечивает никакого конкретного порядка хранения данных. Извлекаются данные из БД также без определенного порядка, если вы не указываете сортировку в SQL-запросе явно.
    Также не очень хорошая идея привязывать порядок слов в словаре к ключу. Так вы не сможете добавлять словарь между словами, ведь ожидается алфавитная сортировка. Просто не считайте ключевое поле упорядоченным и как-то влияющим на порядок, а слова сортируйте по алфавиту с помощью SQL-запросов. Ну и да, нужно сделать соответствующий индекс на этой таблице.
    А вообще такие основы можно прочесть в любой книжке про базы данных.
    Мой вам совет - начните с книги.
    Ответ написан
    Комментировать
  • Что такое Docker простыми словами?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Что такое Docker простыми словами

    простыми словами

    Если совсем прям простыми, то - это некая легковесная оболочка, которая способна изолировать приложение внутри себя от внешнего мира. Очень похож (по логике) на системы виртуализации VMware, VirtualBox, Parallels итп, но сам не является им.

    Возможности:

    - Контейнеризация: Docker позволяет паковать приложения вместе со всеми их зависимостями в контейнеры, обеспечивая тем самым их независимость от конкретной инфраструктуры.
    - Переносимость: Контейнеры Docker могут быть запущены на любом компьютере, который поддерживает Docker, независимо от операционной системы. Это делает распространение и развертывание приложений намного проще.
    - Изоляция ресурсов: Каждый контейнер Docker работает в изолированной среде и не влияет на другие контейнеры или хостовую систему.
    - Слоистая файловая система: Docker использует слоистую файловую систему для хранения данных, что позволяет существенно экономить дисковое пространство и упрощает обновление и распространение контейнеров.
    - Сетевые возможности: Docker позволяет настраивать сетевые параметры каждого контейнера, что позволяет создавать сложные многокомпонентные приложения.
    - Docker Hub: Docker Hub – это репозиторий, где можно хранить и делиться контейнерами. Это облегчает развертывание и распространение приложений.
    - Docker Compose: Это инструмент для определения и запуска многоконтейнерных - Docker-приложений. С помощью Compose вы можете использовать файл YAML для конфигурации служб вашего приложения, а затем с помощью одной команды создать и запустить все службы.
    - Docker Swarm: Docker Swarm предоставляет нативные возможности Docker для оркестрации и масштабирования кластера Docker.
    Ответ написан
    Комментировать
  • Как правильно подходить к возвращаемым типам функциях php?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Хорошие вопросы.
    Разумеется, увеличивать количество запросов к БД ради красивой типизации - это абсолютно не вариант.

    Как можно увидеть, в приведенной цитате написано не однозначно, а "скорее всего".
    И поэтому надо конечно стараться, чтобы функция возвращала какое-то одно значение, но не делать этого любой ценой. Поэтому getUserDataFromDatabase вполне может возвращать array|false, а getUserIdFromDatabase - int|false, хотя я бы с ней не заморочивался, первой вполне достаточно. А userIsPresentInDb вообще не нужна, вместо неё можно использовать одну их предыдущих.

    Другое дело, что нужного результата можно добиться и другим способом.
    Ведь вполне можно вернуть пустой массив. И таким образом формально соблюсти типизацию.

    return $result ?: []; // дёшево и сердито

    Но это будет всё равно не очень красиво. В одной стороны - да, для проверки, вернула ли функция непустое значение, такой вариант вполне сгодится. Но с другой стороны все равно как-то неаккуратненько. Ведь мы на самом деле ждём не абы какой массив, а вполне определённый, с конкретным набором полей. То есть, если эта функция вернет массив вида [0, 42, 100500], то это будет явно не то, что нам нужно, но при этом типизация и слова поперёк не скажет.

    Если думать от типизации, то функция getUserDataFromDatabase, возвращающая какой-то абстрактный массив - это нонсенс, бессмыслица. Эта функция должна возвращать юзера. Поэтому в идеале надо придумать способ указать, что функция возвращает не абстрактный, а конкретный массив определенного формата. Тем более, что такой способ как раз есть, ведь типизованный массив - это же объект! И для данного случая даже специальный паттерн есть - ValueObject (хотя в случае с пользователем лучше будет все-таки делать полноценный класс, содержащий не только данные, но и методы, например auth(), который сравнивает хэш пароля с введенным).

    Соответственно, в идеале функция должна возвращать объект, представляющий пользователя.

    И уже в этом объекте поле id может либо либо быть нулём, либо иметь какое-то положительное значение. Или даже объект может содержать отдельное свойство, заполнен/не заполнен.

    И вот в этом случае типизация заиграет совсем новыми красками, и будет использоваться на 100%
    function getUserFromDb( int $userId ) : UserObject {
            return $result ? UserObject::fillFromArray($result) : new UserObject();
    };
    $user = getUserFromDb();
    if (!$user->id) {
        // нинашли :'(
    }


    Но опять же, как пишет ниже Сергей delphinpro, зависит от задачи.
    И решив проблему правильной типизации значения, которое функция вернет, если нашла пользователя, можно вернуться к вопросу о том, что возвращать, если функция ничего не нашла. И в этом случае вполне подходящим вариантом будет вернуть null
    function getUserFromDb( int $userId ) : ?UserObject {
        return $result ? UserObject::fillFromArray($result) : null;
    };
    
    if ($user = getUserFromDb()) {
        // нашли :)
    }
    Ответ написан
    6 комментариев
  • Как выключить историю команд Bash?

    @rPman
    Вместо отключении всей истории команд, можно указать при выполнении команды чтобы она не сохранялось, добавив пробел в начале любой команды
    Ответ написан
    Комментировать
  • Сильно ли тяжело для базы данных innoDB 1 500 таблиц?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Для базы это ерунда
    А вот для разработки будет проблема, потому что автор, наплодивший этот зоопарк, явно не прочитал даже начальных сведений про базу данных, и не понимает, зачем в ней нужны таблицы.
    А программистская привычка с подозрением относиться к повторениям ещё не выработалась.

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

    Я настоятельно рекомендую книгу Святослава Куликова "Реляционные базы данных в примерах", она свободно доступна для скачивания. В ней как раз и даются основы проектирования баз данных.
    Ответ написан
    Комментировать