• Какие есть способы предотвращения воровства файлов?

    riky
    @riky
    Laravel
    предлагаю просто в js делать закладки. например проверка текущего домена, если не равен вашему тестовому - редиректить на ваш домен с предупреждением типа работа не была оплачена.
    только естественно нужно усложнить и запутать
    - во первых - название домена не должно легко находится (можно например использовать хэш функции, типа md5, наличие кода которой также усложнит разбор кода)
    - во вторых хотя бы js обфусцировать, лучше всего придумать свою функцию обфускации, которая берет весь код скрипта и как то его преобразует, либо хотя бы частично.
    - желательно чтобы редирект был не слишком явный, например наступает только в 1% запусков и срабатывает только через 2 минуты. это также усложнит поиск дебаггером, + клиент может стырить код (или заказать кому то копирование) - и он покажется ему рабочим, кинет вас, а потом поймет что зря это сделал. но даже срабатывая 1% раз, эта защита испортит ему репутацию.

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

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

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

    еще один неплохой вариант - сделать приложение на любом десктопном языке программирования типа мини веббраузер. то есть все приложение это просто WebView во весь экран. и клиенту вы передаете один ехе файл который он должен запустить и увидеть сайт. скопировать будет очень сложно, если хорошо упаковать, сам клиент этого сделать не сможет скорее всгео, заказать взлом выйдет наверное не дешевле чем ваша работа. из минусов не очень удобно, для обоих, и клиент не сможет проверить качество кода и работу в реальных браузерах. PS: ищите компоненты WebView на базе хромиума, чаще всего стандартные компоненты основаны на IE да еще старых версий. также можно попробовать использовать для этих же целей понятные для фронтендеров срежы типа NWJS или electron - все программирование на JS и построены на базе хромиума, но в них сложнее обеспечить защиту кода, хотя тоже в какой то степени можно.

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

    Несколько полезных ссылок:
    Организация кода для препроцессоров;
    Способы организации CSS-кода;
    Эстетичный Sass;
    Sass-архитектура вашего проекта.

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

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

    @evgeniy_lm
    >> Как узнать свой уровень в кодинге?
    Очень просто - заглянуть в свой кошелек
    Ответ написан
    Комментировать
  • Как реализовать такое?

    alsopub
    @alsopub
    Ответ написан
    Комментировать
  • Как подписывать разработанные сайты?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Договориться без бумажного договора - просто:
    Формат прост: соблюдай условия и получай привилегии.

    Если ссылка будет установлена (и в течение всего срока будет находиться на сайте в оговоренном месте и в оговоренном виде), то Вы предоставляете бесплатную ТП по исправлению багов на срок от года и даёте процентную скидку на доработки.

    Тогда смысла убирать ссылку у Клиента не будет, т.к. она ему даст привилегии и бонусы.
    А Вы - в любой момент можете мониторить её наличие и, если её уберут сразу, а потом, перед обращением, вернут и сразу же обратятся к Вам - сообщить о несоблюдении условий и отказать в бесплатной ТП (+ аннулировать скидку на доработки).
    Ответ написан
    9 комментариев
  • Как подписывать разработанные сайты?

    dom1n1k
    @dom1n1k
    Единственный адекватный вариант - пункт в договоре (так делает например САЛ).
    Если фрилансер - можно попробовать устные договоренности (но понятно, что клиент в любой момент может передумать - и это его право).
    А за все ужимки с потайным функционалом надо отбивать руки.
    Ответ написан
    1 комментарий
  • Как защитить свою верстку от рипа?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Порядок действий; переход к следующему пункту, если предыдущее действие - недоступно:
    1. БЗ (безопасная сделка или сделка без риска) - это первым делом!
    2. Поэтапная работа с предоплатой: самый надёжный вариант.
    3. Поэтапная работа с пост-оплатой: считайте, что каждый этап - вы будете выполнять в кредит и на любом из них Заказчик может уйти не заплатив!
    4. Предоплата 50% за всё сразу.
    5. Предоплата 1/3 за всё сразу: обычно соглашаются, если не "кидалы".
    6. Поднимаете виртуалку у себя с разными браузерами (обязательно режим киосков!), даёте доступ через VNC и пусть смотрит.
    Ответ написан
    Комментировать
  • Как защитить свою верстку от рипа?

    mrTyler
    @mrTyler
    Frontend Developer
    Алекс Глебов прав, обсудите постраничную/поэтапную оплату. Чем больше заказ, тем на большее число этапов надо его бить, например оплата раз в неделю - отличный вариант. Я именно так и работал с большими заказами и ни один заказчик был не против, так как защищены все - он платит только за сделанную работу, вы видите результат своего труда в кошельке.
    Ответ написан
    Комментировать
  • Как защитить свою верстку от рипа?

    bingo347
    @bingo347
    Crazy on performance...
    Не работать без предоплаты минимум 50% и не цепляться за таких вот заказчиков
    (в голове мысли "что то тут не чисто)
    абсолютно правильные мысли
    Даже если Вы защитите свою работу от "угона", велик риск что просто проработаете за бесплатно, а Ваш заказчик обломавшись с Вами пойдет искать себе другую жертву, ибо сроки у него не жмут, так как когда сроки жмут заказчики готовы к предоплате не то что 50%, а даже 120% (20% - надбавка за переработки)
    Ответ написан
    12 комментариев
  • Авто создание поддомена с сайтом?

    copist
    @copist
    Empower people to give
    Когда я впервые познакомился с сервером, который создаёт поддомены третьего уровня, а также умеет "парковать" домены второго уровня, я прежде всего представил себе, что там автоматически создаются директории для пользовательских скриптов, конфиг для апача и какой-то рутовый демон делает sudo service apache reload

    Но на деле оказалось не так.
    1. В DNS стоит правило (см https://toster.ru/q/7456) - все поддомены ***.myservice.ru отправляются на один IP
    * IN A 192.168.1.1
    Замени 192.168.1.1 на IP твоего сервера

    2. В апаче/nginx не стоит привязка виртуального хоста к имени домена (myservice.ru или иной), все запросы отправляются на обработку на один скрипт (PHP?)

    nginx
    {
        listen 80;
        # server_name не указывать
    }


    3. В коде приложения (PHP) вычисляется домен в запросе HTTP и исходя из этого строится ответ
    У пользователя в таблице user прописано имя домена, то есть пользователь Вася - это домен vasya.myservice.ru

    $domainName = $_SERVER['HTTP_HOST']; // vasya.myservice.ru
    $userDomain = $db->findUserByDomain($domainName);
    echo 'Владелец этой страницы: ', $userDomain->fullName; // Владелец этой страницы: Вася
    // ...


    Это если речь про веб-интерфейс. А если у тебя реально разные приложения (бинарники?) ставятся из архива, то тебе нужно запускать разные команды из PHP, например

    1. Создать директорию, сгенерировать конфиги htaccess или host для Apache
    2. Распаковать архив /или слинковать какую-то общую часть через symlink
    3. Заставить Apache сделать reload конфигов

    Для этих команд тебе пригодится php.net/manual/en/function.system.php php.net/manual/en/function.exec.php или php.net/manual/en/function.shell-exec.php

    Последний пункт самый небезопасный, потому нужно пользователю апач дать права на выполнение команды от рута. Лучше делать это по крону или от имени специального сервиса-демона, а не из PHP.
    Ответ написан
    7 комментариев
  • Помогает ли PDO для защиты?

    nazarpc
    @nazarpc
    Open Source enthusiast
    PDO защищает только от mysql инъекций а от этого нет?

    Совершенно верно. Prepared statements (не PDO) используются для безопасной вставки данных в БД. А если сами данные небезопасны - это уже совсем другой вопрос и решается совсем другими инструментами.
    Ответ написан
    Комментировать
  • Почему дизайнеры используют сетку в 12 колонок ( 12 column grid )?

    @GreatRash
    12 колонок потому, что у 12 много делителей: 12/12, 12/6, 12/4, 12/2, 12/1. Бывает ещё 24 колонки, это если дизайнеру не хватает двенадцати.
    Ответ написан
    Комментировать
  • На чем лучше и быстрее написать парсер (PHP)?

    muhammad_97
    @muhammad_97
    PHP-разработчик
    DiDom: https://github.com/Imangazaliev/DiDOM

    + высокая скорость работы (сравнение с другими парсерами)
    + хорошая дока
    + большое количество поддерживаемых селекторов
    + самое главное - тесты

    Простой пример:

    $document = new Document('http://www.example.com/', true);
    
    echo $document->first('title::text');


    Чуть посложнее - парсим все ссылки:

    $links = $document->find('a[href]::attr(href)');
    
    var_dump($links);


    Еще сложнее - получить адреса всех ссылок-картинок:

    $links = $document->find('a[href]:has(img)::attr(href)');
    
    var_dump($links);


    Другие варианты:
    - Symfony DomCrawler
    - Zend Dom Query
    Ответ написан
    3 комментария
  • Как сделать сборку комплектации кухни на сайте?

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

    delphinpro
    @delphinpro Куратор тега CSS
    frontend developer
    на размер CSS файла повлияют очень сильно. Будет ли сайт очень долго грузить CSS ?


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

    ЗЫ
    Сверстай все страницы. Потом проверяйте скорость загрузки. При необходимости разобьете один файл на несколько (тем более с препроцессором это не составит труда).
    Хотя я не думаю, что у вас в итоге выйдет огромный файл стилей, который нужно будет распиливать..
    Ответ написан
    Комментировать
  • Как сделать сборку комплектации кухни на сайте?

    @daihatsu
    А бабла у него хватит?

    Если он не предлагает тебе воспользоваться каким-либо уже готовым 3D конструктором (с встроенным API!!!!), куда уже вбиты все параметры кухни, то это очень специфическая задача.

    Не стесняйся - повышай цену. На эту задачу он вряд ли найдет дешевого исполнителя. Да и вряд ли вообще найдет исполнителя.

    Навскидку - от нескольких штук баксов (не меньше 3, а скорее - еще раза в 2-3 больше).

    P.S.:
    Возможно, под словом "клиент может выбрать как хочет" подразумевается 5 встроенный фиксированных моделей кухонь с возможность их окраски?

    Тогда задача существенно упрощается. Первая для тебя задача - чтобы клиент тебе выдал эти 3D модели в удобном для тебя формате.

    Для этого у него есть специальный дизайнер, работающий с 3D-пакетами.
    Ответ написан
    Комментировать
  • Почему не находит функцию???

    babarun
    @babarun Куратор тега 1С-Битрикс
    Безумный план моих идей в руках больных людей
    Подключите модуль sale
    Ответ написан
    Комментировать