Задать вопрос
  • Возможно ли скачать не только лендинг а сразу и бекенд сайта?

    Newto
    @Newto
    Ну конечно можно. Звоните владельцу сайта, говорите "алло, дайте мне доступ к вашему серверу". Он вам отвечает - "Да, конечно!" и высылает root ssh доступ. Заходите на сервак и всё скачиваете. А потом еще раз перезваниваете и просите к трубке админа, что бы он вам объяснил как это всё установить, что бы заработало. Profit! :)

    А если серьёзно, то есть в вебе два ключевых значения -- "frontend" и "backend". Вот "frontend" это всё то, к чему имеет доступ, непосредственно, ваш браузер. Это html код, картинки, скрипты(на разных языках) и css стили(про всякие xml и прочее говорить не буду даже). А всё то, что работает с базами данных, делает всякие хитрые операции на СЕРВЕРНОЙ стороне, то есть на БЭКЕ, всегда скрыто от браузера, т.е. от вашего непосредственного доступа. Браузер отображает лишь результат, который БЭК посылает на ФРОНТ, т.е. в ваш браузер с сервера. Поэтому никакими программами (если это не супер-мега-хакерская прилага из для взлома особо слабозащищенных и плохо написанных сайтов) вы бэкенд не скачаете.
    Ответ написан
    Комментировать
  • Выбор архитектуры: web или desktop?

    @rPman
    Web - на два порядка проще (читай дешевле) для разработки за счет повышенного требования ресурсов на клиентской стороне.

    Десктоп - возможно создание очень эффективных приложений но за счет очень дорогой поддержки всего разнообразия устройств и операционных систем (в веб этим занимается браузер и даже в этом случае приходится напрягаться)

    И главное, из веб приложения достаточно легко (например с помощью electron) можно сделать десктопное приложение.

    p.s. как бы я не нелюбил веб, который тянут даже туда где не надо, но его плюсы неоспоримы а страдающие клиенты от тормозов приложений, требующих топовое железо для простого чата... кто нас слушает?

    Кстати, один момент, тормозные веб приложения это не потому что веб такой плохой, это потому что разработчики ленятся делать все как следует. Рынок заполонили низкокачественные разработчики на основе веб. Помни об этом!
    Ответ написан
    Комментировать
  • Как лучше всего идентифицировать id отзыва для отправки на сервер?

    Dr_Elvis
    @Dr_Elvis
    В гугле забанен
    на бекэнде дополнительно проверяйте, что этот отзыв принадлежит этому логину.
    Ответ написан
    1 комментарий
  • Какая сложность данного алгоритма?

    wataru
    @wataru Куратор тега Алгоритмы
    Разработчик на С++, экс-олимпиадник.
    Сложность: простой.

    Если вам нужна ассимптотическая временная сложность - то O(n).
    Эта сложность меряется в зависимости от размера входных данных. Какие у вас входные данные-то? Строка slug, url.

    Эти данные конкатенируются (O(n)) и передаются библиотеке. До 10 раз. Библиотека их парсит, делает dns запрос, открывает сетевое подключение к web серверу, получает данные, парсит ответ. Там тоже есть линейная, видимо, зависимость от длины строки. Ее надо распарсить, записать в сетевой сокет и так далее. Вот получение данных по уже установленному http соединению от длины строки не зависит, поэтому в сложности алгоритма не учавствует.
    Ответ написан
    1 комментарий
  • Websocket с чего начать изучение?

    HemulGM
    @HemulGM
    Delphi Developer, сис. админ
    Webhook - это принцип работы через запросы к твоему http-серверу, а не через вебсокеты.

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

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    $re = '/(?P<shortcode>\[(?P<name>[\w\-]{3,})(?:\s+(?P<attrs>[\w\d,\s="\'\-+#%!~`&.:\/()?|]+))?\](?:(?P<content>[\w\d\s,!@#$%^&*(\\)="\'\-+&.:\/?|<>]+)(?:\[\/[\w\-\_]+\]))?)/m';

    Значится где-то вооо-о-о-о-ооо так!
    Ответ написан
    1 комментарий
  • Как практиковаться в программировании?

    DevMan
    @DevMan
    да берешь и делаешь.
    походу разгребаешь возникшие проблемы/вопросы.

    волшебных кнопки/рецептов не существует.
    Ответ написан
    Комментировать
  • Возможно ли в PHP по заголовкам точно определить устройство и Браузер?

    И да и нет.
    Вернее не совсем.
    В 100% случаев это не определить, тк содержимое заголовка клиент может менять
    Но если это исключить, то большинство случаев обработать можно, и такую задачу уже много раз решали.
    Ответ написан
    Комментировать
  • Как структурировать бд?

    RNSNS
    @RNSNS
    Symfony Backend developer
    Попробуйте создать ещё одну таблицу, которая будет называться product_coutry
    В ней должно быть только 2 поля product_id и country_id
    Так и создаются связи M2M (ManyToMany)
    Ответ написан
  • Как структурировать бд?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Отношение Many-to-Many строится через промежуточную таблицу связи, поля которой ссылаются на две основные таблицы.
    products_countries (product_id, country_id)
    Ответ написан
  • Есть ли способ добавить свои методы не трогая модель в laravel?

    RNSNS
    @RNSNS
    Symfony Backend developer
    На самом деле это очень легко

    #src/Model/ProductProxy.php
    <?php
    
    namespace App\Model;
    
    use ВашПакет\Product;
    
    class ProductProxy extends Product
    {
        public function newMethod(): void
        {
            echo "Hello World!";
        }
    }
    Ответ написан
    Комментировать
  • Как правильно назвать pivot-таблицу при отношении многие ко многим в laravel?

    JhaoDa
    @JhaoDa
    LaravelRUS Team
    Правильный, с точки зрения ларавел, вариант указан в документации, которую ты почему-то не стал читать.
    Ответ написан
    7 комментариев
  • Почему спидтест дает 100mbit/s а bittorrent 1.3?

    @rPman
    Спидтест нужно смотреть, выбрав другую страну.
    Торенты - одни из самых нестабильных (слабо прогнозируемых) методов проверки скорости.

    Но главное - в подавляющем большинстве случаев интернет можно поделить на три зоны - твой город/область, страна, мир. Скорость до узлов (сидов загружаемого торента) в этих зонах отличается с понижением, самая быстрая (обычно 100мбит или максимум от провайдера) это город/область, заметно медленнее - несколько десятков мегабит это страна, и считанные мегабиты - мир.

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

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

    MrDecoy
    @MrDecoy Куратор тега JavaScript
    Верставший фронтендер
    Массив дат можно вынести наружу, что
    1) не будет пересоздавать переменную каждый раз.
    2) сделает решение более гибким
    let a =  [
       {
          "code":"CL",
          "tnved10":"7318158100",
          "2019":"33",
          "2020":"0.00",
          "2021":"0.00"
       },
       {
          "code":"CN",
          "tnved10":"7318158100",
          "2019":"7540001.66",
          "2020":"8164813.34",
          "2021":"20980774.64"
       }]
    let b = a.reduce((acc, current) => {
      [2019, 2020, 2021].forEach(i => acc[i] += Number(current[i]))
      return acc
    }, {'2019': 0, '2020': 0, '2021': 0});
    console.log(b)


    Типа так:
    const years = [2019, 2020, 2021]
    let b = a.reduce((acc, current) => {
      years.forEach(i => acc[i] += Number(current[i]))
      return acc
    }, {'2019': 0, '2020': 0, '2021': 0});


    Можно ещё сократить, но уже в ущерб читаемости.
    Или можно убрать инициализацию начального значения аккумулятора, перенеся проверку ключа на то, что это год внутрь. Правда это несколько увеличит код внутри reduce, но сделает более гибким код.
    Ответ написан
    Комментировать
  • Как в laravel построить сложную логику?

    iMedved2009
    @iMedved2009
    Не люблю людей
    Бизнес-логике - не место в контроллере.

    AppServiceProvider
    public function boot(){
    Validator::extend('count_books', function($attribute, $value, $parameters) {
            $count = IssueBook::where('client_id', $value)->where('is_returned', false)->count()
            return $count < 2;
    });
    }
    
    StoreRequest
    public function rules()
      {
        return [
          'category_id' => 'exists:App\Category,id',
          'client_id' => 'exists:App\Client,id|count_books',
          'book_id' => 'exists:App\Book,id',
          'days_issued' => 'nullable|string',
          'is_returned' => 'nullable|boolean',
          'return_date' => 'nullable|date',
        ];
      }
    Ответ написан
  • Как улучшить код, который проверяет наличие элемента в массиве и его значение?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Тут вопрос не столько в сокращении сколько в осмысленности.

    И ответ зависит от двух вводных, которые мы не знаем:
    1. по какой причине элемент 'test' может отсутствовать
    2. какие ещё значения могут быть у $arr['test']

    Если совсем всё равно на всё и пишем говнокод-стайл лишь бы покороче, то, как правильно написано в соседнем ответе - empty().

    Если элемент обязательно должен присутствовать, то либо убираем проверку на isset совсем, либо - если это интерактивное приложение - выносим отдельно, и при отсутствии элемента сообщаем об ошибке. Пусть даже и тупо 400 кодом.

    Если у $arr['test'] не могут быть другие значения, кроме true, то тоже проверить, и выбросить ошибку, если значение какое-то другое.
    Ответ написан
    Комментировать
  • Как найти 3 одинаковых числа, идущих подряд в массиве js?

    AgentSmith
    @AgentSmith
    Это мой правильный ответ на твой вопрос
    Задания запрещены правилами.
    Вариантов решений куча.
    Например, можно использовать счётчик совпадений. Надо хранить предыдущее значение и сравнивать его с текущим. Если они равны, то счётчик увеличить, иначе сбросить.
    Если счётчик равен 3, то выход true
    Ответ написан
    Комментировать
  • Как найти 3 одинаковых числа, идущих подряд в массиве js?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    для первой версии решения учебного задания можно и «на пальцах»:
    сравнивать с двумя предыдущими
    const has3 = arr => {
      for (let i = 2; i < arr.length; i++) {
        if (arr[i] === arr[i - 1] && arr[i] === arr[i - 2]) {
          return true;
        }
      }
      return false;
    }
    
    has3([1,2,3,3,4,5,5,5,6]) // true
    has3([1,2,3,3,4,5,5,6,6]) // false


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

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Единственно правильный ответ - никак.

    Такой вопрос можно задать только от безграмотности. От непонимания того, как работают сессии.
    Потому что сессия в обязательном порядке блокирует файл с данными на время работы с ним. И именно отсюда возникают многочисленные вопросы "а почему у меня долгий процесс в одной вкладке блокирует сайт во всех остальных вкладках?". А теперь представим, что один и тот же файл блокирует не один юзер, а все по очереди. Таймаут будет постепенно накапливаться, и в итоге сайт у всех пользователей сначала начнет ощутимо подтормаживать, а потом и вовсе встанет колом.
    Поэтому такая вещь, как "сессия сразу для всех пользователей" заведомо является бессмыслицей.

    Если под "сессией" имелось в виду общее хранилище для всех пользователей, то оно называется "база данных". И в этом смысле "БД не предлагать" выглядит беспочвенным капризом. Как правильно заметил N в комментарии, такое заявление звучит как "Как кушать суп? Ложку не предлагать."
    Такие заявления надо всегда подробно обосновывать. И в этом случае вам либо действительно подскажут, как обойтись без БД, либо объяснят, что это просто блажь.

    Если хранилище не нужно, то есть значение переменной не меняется со временем, то, как правильно сказано в соседнем ответе, просто делается константа в конфигурационном файле, который по умолчанию включается во все скрипты.
    Ответ написан
    Комментировать