• Какова суть фреймворков и библиотек?

    Stalker_RED
    @Stalker_RED
    Библиотека это инструмент или набор каких-то инструментов.
    Бибилиотека для скачивания видео с ютуба
    Бибилиотека для кропа и ресайза картинок
    Бибилиотека для определения города по IP

    Фреймворк может использовать десятки или сотни разных библиотек. Это набор не только инструментов, но и готовых компонентов, и еще и рекомендация по их использованию.

    "набор для постройки скворечника"
    В комплекте молоток, гвозди, столярный клей, 20 деревянных досточек разных форм и расцветок и инструкция с тремая вариантами скворечника на выбор.

    Или вот два фреймворка:
    Ezva9I.pngzC6ZHT.png
    Можно ли их использовать вместе? (Конечно, никто не запрещает)
    Можно ли из этих деталей построить что-то совсем другое, не такое как в инструкции? (Конечно да)
    Можно ли с этими фреймворками использовать детали еще и из этого?
    lGjE1A.png
    (конечно можно, но придется что-то придумать для совместимости деталек. Быть может придется применить клей, изоленту, пластилин или жвачку. Или шуруповерт, или сварочный аппарат. Но ни в один комплект эти дополнительные инструменты не входят, как и скиллы к ним.)

    Можете посмотреть еще сюда, этот ответ частично покрывает ваш вопрос:
    Для чего нужны фреймворки, а-ля Laravel?
    Ответ написан
    Комментировать
  • Как защититься от парсельщиков?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Существует несколько способов борьбы.

    Вектор усложнения доступа к информации

    Информация отдается с сервера с постоянной меняющейся структурой. Например блоки меняются местами и CSS генерируется налету, причем классы собираются рандомной цепочкой и имеют абсолютно рандомные названия. Это может повлиять на SEO.
    Если этого мало, то контент рендерится с помощью JS аналогичными алгоритмами. Сам JS тоже генерируется и обфусцируется. Доставка контента происходит через сложные технологии, например через WebRTC DataChannel или WebSockets. Про SEO не может быть и речи, плохо работает через мобильник.
    С подобным подходом прийдется писать парсер под ваш сайт. Скорее всего он будет делать скриншот и скармливать его распознавалке.

    Вектор контроля доступа к информации

    Доступ к информации предоставляется определенному кругу лиц. Например клиентам. Объемы доступа регламентированы и превышение карается расторжением договора или штрафом.

    Вектор ограничения доступа к информации с помощью каптчи

    Для идентификации клиентов используются evercookie+fingerprinting. Используется рейтинг адресов и подсетей.
    Для недоверенных подсетей (ip принадлежат в основном разного рода хостинг-провайдерам) captcha отображается сразу. Аналогично при появлении трафика из необычного места, например внезапный трафик из Индии или Китая.

    Вектор "медленный сервер"

    Анализируются поведенческие характеристики с помощью машинного обучения. Строится эталонная модель.
    Все, кто не попадает под модель, упираются в медленный сервер. Сайт начинает отдавать контент сразу, но очень медленно, например страница может открываться секунд 30. Причем попытка параллельного запроса приводит к ошибке. Если сайт велик, то подобные штуки останавливают парсильщиков на ура. Вдобавок дополнительно контролируются определенные вещи, вроде "пользователь загрузил js и css", провел мышкой там и там.

    Вектор для реального отваживания воришек

    Кроме выше перечисленных способов, есть очень простые, но действенные способы. При обнаружении парсинга, парсильщику отдается неверная/искаженная определенным образом информация. Например, если есть подозрение на конкурента ворующего цены, можно отдать цены чуть выше настоящих и немного подменить название товара, например заменить определенным образом букву "а" на "a". Затем такая штука ищется поисковиком и находится сайт конкурента.
    Далее вопрос решается так, как это удобно бизнесу. Обычно жалуются на нарушение копирайта. Ну или у конкурента внезапно сгорает склад. Тут уж кто на что горазд.

    А это специально для любителей парсить чужие сайты: cломанные пальцы очень сильно мешают набирать на клавиатуре будьте осторожны, в большинстве случаев воровство контента того не стоит.

    Подытожим. В большинстве случаев защита от парсинга вредит SEO.
    Если у вас воруют контент, значит он хороший. Защищайте его с умом. Простые средства вроде копирайта и успешные дела за воровство контента отвадят воришек от вашего сайта. Просто придайте делам огласку. Отслеживайте воровство и жалуйтесь в поисковые системы.
    Используйте технические средства для отслеживания воровства, например непечатаемые символы и стеганографию в картинках.
    Используйте внутренние ссылки и привязки к контенту и его автору. Например логические отсылки на свои предыдущие работы или другие товары, которые можно купить только у вас.

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

    @m0nym
    Много вариантов.

    Например, начинается с того, что бэкендер делает API по принципам HATEOAS, снабженное документацией по типу Swagger.

    После чего фронтендеру и так все ясно.
    Ответ написан
    Комментировать
  • Какую CMS выбрать для создания сайтов на заказ?

    @jdmpnn
    October CMS. Подходит для любых сайтов любой сложности. И главное - если хотите развиваться и изучать реально хороший, качественный код - это опять же, Октобер. Пример крутого приложения на крутом фреймворке (Ларавел). Его спокойно можно изучать и быть уверенным - не прогадаешь, это просто кладезь мудрости для прогера :)
    Если брать поверхностно - есть два основных способа:
    1. Плагин Static Pages, плюс Blog как пример реализации разных фишек. Это для "разносторонних" страниц, то есть например, есть страница "Главная" где вообще никакой схемы данных нету, а есть набор виджетов "всего понемногу", есть страница "О нас", где надо текстик wysiwyg и список "Наши партнеры" - объекты вида <баннер + заголовок>, "Контакты" - где опять же текстик, три поля для телефона, адреса и e-mail, и пару координат lat/lng для карты, и т.д. - все это дело в реляционную схему БД заталкивать - мучение. Тогда юзаем static pages, там кстати очень похоже на MODx Revo, если кто знаком: layouts - аналог templates, syntax fields - аналог TV, сами страницы - соответственно ресурсы, partials - аналог чанков, компоненты - аналог сниппетов (не путаем со snippets самих static pages, это немного другие, очень кстати полезные, штуки)
    2. Плагин Builder для быстрого создания своих кастомных плагинов с БД, моделями, отношениями, и контроллерами бэкенда чтобы этим делом управлять. Это если есть например API, где 200 стран, 100К городов, а в них 2млн мест. Всё это надо скачать и распарсить в базу, и чтобы на выходе получилось 2080200 страниц с 5 шаблонами - один для страны, один для города и допустим ещё 3 под разные типы мест в городе (отель, кафе, достопримечательность). Легко! Пилишь 3 таблицы в БД, создаёшь модельки со связями и роутинг (url'ы прям в таблицах можно хранить, не забывая про индексы) и БЭМ! 2 ляма страниц не тормозят и удобно управляются из бэкенда, для бэкенда куча виджетов - список, форма, менеджер отношений (управлять связанными объектами, умеет и один-ко-многим и много-ко-многим и т.д.). Виджеты можно и свои создавать - как обычные виджеты, так и поля формы. Накидать CRUD набор страниц для управления сущностью в бэкенде - дело 5 минут. Пример с городами и местами довольно примитивный, т.к. тупо дерево из 3х уровней, но и более сложные вещи так же пилятся и не тормозят, хоть там к каждому из 2млн мест надо прицепить ещё по 10 сущностей с полиморфизмом и прочее, и выводить десяток виджетов на их страницах - тут уж ограничение - только умение проектировать БД.

    Да там расписывать можно бесконечно :)

    PS: В сети встречаются вопросы и issue на гитхабе, читая которые может сложиться впечатление, что ЦМС сырая. Но! Смотрим на дату этих вопросов - меньше 2х летней давности найти сложно. Сейчас там всё "вылизано", Ларавел подтянут до 5.5 LTS, в общем красота! Да, и самое главное - нет такой задачи, которая потребовала бы куда-то там лезть в ядро и что-то править. О таких вещах можно забыть напрочь. Да там даже мультисайтовость и мультиязычность контента - запилены в виде плагинов! Я в шоке был когда посмотрел, какие вещи там делаются просто как модуль расширения.
    Ответ написан
    Комментировать
  • Заказчик сует доработки очень маленькими порциями, как брать оплату?

    402d
    @402d
    начинал с бейсика на УКНЦ в 1988
    поставить минимальную стоимость как за полчаса работы.
    объяснять, что вы сейчас заняты и поправите через 1-23 часа.
    Брать деньги за все время от прихода первого сообщения до сдачи последней правки.
    так как вы в режиме оперативного сопровождения.
    Ответ написан
    20 комментариев
  • Данные из таблицы в массив php?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    прочитать про формы?
    Ответ написан
    Комментировать
  • Почему Laravel не видит простую связь моделей?

    solotony
    @solotony
    покоряю пик Балмера
    назови все правильно

    Модель надо называть не Reviews а Review

    user это свойство Reviews ? Это id из таблицы users ? тогда называть надо user_id

    тогда было бы

    public function user() {
            return $this->hasOne('App\User', 'id', 'user_id');
        }


    хотя и это неверно

    Поскольку модель Review содержит foreign key на User то должно быть

    public function user() {
            return $this->belongsTo('App\User', 'user_id', 'id');
    }
    Ответ написан
    Комментировать
  • Поиск клиентов: каким образом it-компании находят заказы?

    AgentProvocateur
    @AgentProvocateur
    1. Лет 10 строишь карьеру по найму, нарабатываешь профессиональные контакты;
    2. Уводишь из конторы 1-2 жирных клиентов на себя, увольняешься, берешь в подмогу кореша и ведёте их, попутно оформив контору типа "Luxextrasupersoft";
    3. Работаете хорошо, вас советуют коллегам, прилетают новые заказы/клиенты, вы с корешем уже не справляетесь, нанимаете команду, офис, диваны, все дела;
    4. В фитнес-клубе знакомишься с менеджерами и предлагаешь вместе распилить it-бюджеты их контор путём аутсорса на Luxextrasupersoft;
    5. Когда образуется финансовый жирок, решаешь пустить его на рекламу, нанимаешь сейлза, но быстро понимаешь, что это не так рентабельно, как наработанная за 10 лет сарафанка и откаты))

    Собственно, эта схема актуальна не только для it.
    Ответ написан
    1 комментарий
  • Как правильно собрать несколько html элементов внутри одной переменной?

    Как правило в самом начале файла / функции объявляется переменная, а потом как вы писали в первом варианте, с помощью конкатенации добавляется ваш html:
    $output = '';
    ... 
    $output .= '<li>text</li>';


    Но это потом очень сложно поддердивать, лучше рассмотрите вариант с шаблонизаторами.
    Ответ написан
    Комментировать
  • Настроить nginx чтобы боту Bing отдавалась страница заглушка, а всем остальным - контент?

    BuriK666
    @BuriK666 Куратор тега Nginx
    Компьютерный псих
    Как-то так:
    if ($http_user_agent ~* (bingbot)) {
       rewrite ^(.*)$ /bing.html;
    }
    Ответ написан
    Комментировать
  • Могут ли print_r, echo и var_dump "убить" скрипт?

    webinar
    @webinar Куратор тега PHP
    Учим yii: https://youtu.be/-WRMlGHLgRg
    $r = ''
    while (true) {
    $r += 'Вася';
    echo $r;
    }

    Виноват ли Вася?
    Ответ написан
    7 комментариев
  • Как вывести строку из объекта php?

    к примеру
    print $object->Body->TXLife->TXLifeResponse->TransResult->ResultInfo->ResultInfoDesc; // RANSACTION_ID: bUpsrjeCwyJcwRp9Q3pLbrcwCU8=

    но так не совсем верно, надо делать проверки на существования свойств объекта.
    а ещё правильнее будет, почитать SimpleXMLElement class
    Ответ написан
    Комментировать
  • Что делать если нет сетки на макете?

    dom1n1k
    @dom1n1k
    Обратиться к хорошему верстальщику.
    Ответ написан
    Комментировать
  • Cвоя небольшая удаленная веб-студия, как?

    saboteur_kiev
    @saboteur_kiev Куратор тега Программирование
    software engineer
    "Хотел бы себе небольшую удаленную команду по разработке сайтов."
    А вот где искать заказы?"


    Сперва научитесь делать второе, затем уже начинайте хотеть первое.
    Умение выполнять работу и умение ее продавать - никак не связаны.
    Ответ написан
    2 комментария
  • Где понятнее всего изучить Laravel 5.4?

    JhaoDa
    @JhaoDa
    LaravelRUS Team
    Не очень понятно, зачем учить 5.4, если уже несколько месяцев как есть 5.5.

    https://laravel.com/docs/5.5
    https://laracasts.com/
    Ответ написан
    Комментировать
  • Как отличить переменную объявленную как null от необъявленной переменной?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    php.net/manual/ru/function.is-null.php
    <?php
    error_reporting(E_ALL); 
    
    set_error_handler('eh');
    function eh($severity, $message, $filename, $lineno) {
      if (error_reporting() == 0) {
        return;
      }
      if (error_reporting() & $severity) {
        throw new ErrorException($message, 0, $severity, $filename, $lineno);
      }
    }
    
    //$abc=NULL;
    
    try {
      if($abc===NULL) echo 'NULL';
    } catch (Exception $e) {
      echo 'NOT DEFINED';
    }
    
    ?>


    Ещё вариант:
    <?php
    error_reporting(E_ALL); 
    
    //$abc=NULL;
    
    if(array_key_exists('abc',get_defined_vars())) var_dump($abc);
    else echo 'NOT DEFINED';
    
    ?>
    Ответ написан
    Комментировать
  • Как написать в php 7 строку http://site.ru чтобы "//" не воспринимались как коментарии?

    gobananas
    @gobananas
    finishhim.ru
    Так же как и в 5...
    $var = '//site.ru';
    $var = $protocol.'//'.$site_ru;
    Ответ написан
    Комментировать
  • Что нужно регистрировать перед запуском стартапа?

    un1t
    @un1t
    Забей, больше денег на регистрацию потратишь (ИП сейчас 28 тыс в год надо платить, даже если ты ничего не зарабатываешь + банкам за рассчетный счет ). Если реально денег много будет, тогда зарегистрируешь.
    Ответ написан