• Как защитить сайт от копирования на хостинге?

    ilyaplot
    @ilyaplot
    PHP программист
    Брать предоплату, а результат отдавать заказчику после 100% оплаты. Перед показом максимально обусцировать css, js и сжать html.
    Ответ написан
    Комментировать
  • Какие знания нужны для изучения Node.JS?

    mzcoding
    @mzcoding
    Web-Разработка
    Конечно JS нужно сперва хорошо изучить.
    Ответ написан
    Комментировать
  • Как создать объект, имея только имя класса?

    undefine
    @undefine
    Senior Software Engineer / PHP
    Попробуйте сервис локатеры. Pimple, например.
    Положите в него класс по некому алиасу, а потом достаньте.
    Ответ написан
    Комментировать
  • Как создать объект, имея только имя класса?

    benbor
    @benbor
    Помог ответ - не забудь лайкнуть
    Почему же говнокод. Это скриптовый язык, динамическая типизация. Если есть необходимость, то почему и нет. Вопрос в архитектуре, может Вам не стоит вообще юзать динамический класс?
    PS. Есть еще Reflection в PHP. Быть может она Вам покажется менее "говнокодом".
    Ответ написан
    3 комментария
  • Централизация яндекс.карты на маркере при клике на него?

    BOOMER_74
    @BOOMER_74
    Full-Stack разработчик
    Просто центрировать карту по клику на маркер по его позиции:
    placemark.events.add("click", function () {
        map.setCenter(_lat_, _lng_)], _zoom_);
    });
    Ответ написан
    Комментировать
  • Как настроить всплывающее окно при подключении к Wi-Fi?

    Spetros
    @Spetros
    IT-шник
    Вообще-то, большинство устройств при подключении к сети проверяют подключена ли эта сеть к интернету - это раз.
    Во-вторых, окно с рекламой может всплыть только в браузере, который еще нужно открыть. Просто так на неком абстрактном телефоно-планшето-ноутбуке-компьютере под управлением адроид-виндовс-айос-линукса окно с рекламой не появится.

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

    Сам я не специалист по части сетей. Посоветуйте какой-нибудь способ, не требующий больших познаний в данной области.

    Наймите специалиста.
    Ответ написан
    Комментировать
  • Где взять актуальные курсы валют?

    SagePtr
    @SagePtr
    Еда - это святое
    Перепробовал различные варианты и остановился на этом:
    https://query.yahooapis.com/v1/public/yql?q=select...
    Лимит 2000 запросов в час с одного IP, если не обновлять курс каждую секунду - хватит вполне. Поддерживает XML, JSON, JSONP

    UPD: К сожалению, на данный момент этот сервис прекратил свою работу, а жаль(
    Ответ написан
    3 комментария
  • Смена URL без перезагрузки страницы?

    siegerstein
    @siegerstein
    history.pushState(null, null, '/anypath');
    Ответ написан
    Комментировать
  • Плохая ли реализация шаблонизации и снижет ли она производительность PHP проекта вообщем?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Как всегда, невежество рождает чудовищные идеи и выливается в адские проекты. Начнем с идей

    без всяких тяжелых Smarty и Twig
    Открою тебе маленькую тайну. "Smarty и Twig" НЕ тяжелые.

    PHP сам по себе шаблонизатор
    Это правда. Но ты-то не используешь РНР, а используешь свой самопал с реплейсами.

    Выполняя все тяжелые скрипты в массиве, влияет ли это на производительность?
    ВООБЩЕ НИКАК. Понятие "В массиве" ни малейшего отношения к производительности не имеет. Ну то есть вообще никакого.

    при прохождение по массиву уже использовать eval()
    Поздравляю, твой сайт взломали!

    У меня складывается определенное чувство, что я делаю плохо
    Угадал! Только не в том смысле, в котором ты думал. Проблема в другом.

    Твоя поделка - вообще не шаблонизатор.

    Шаблонизатор - это когда ВЕСЬ HTML пишется в шаблоне. Читай по буквам - В-Е-С-Ь. Это означает, что в коде контроллера не должно быть написано ни одного тега. А при твоей системе у тебя половина HTML будет в контроллере. Зачет не сдан, садись, два.
    Ответ написан
  • Плохая ли реализация шаблонизации и снижет ли она производительность PHP проекта вообщем?

    RUgaleFF
    @RUgaleFF
    Да, это очень плохо. Предлагаю два решения:
    1. Как ваше, только использовать функцию strtr:
    strtr($tpl, array('{$val}' => $val));
    2. Рендер производить с помощью require обёрнутым в ob_start(); и ob_end(); Переменные из массива извлечь с помощью extract() а в файле шаблона уже работать с чистыми переменными. К примеру:
    $data = ['var1' => 1, 'var2' => 2];
    View::render('index', $data);

    View::render:
    extract($data);
    require($viewFile);

    Файл view:
    <div class="container">
    <?php echo $var1; ?>
    <?=$var2 ?>
    </div>


    Собственно, второй метод используется в Yii framework, так что если требуется шустрый шаблонизатор, то лучше заморочиться, но если нужно пару раз прогнать, первый вариант может подойти
    Ответ написан
  • Как созадть интерфейс в JavaScript?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    JS динамический язык с утиной типизацией. Собственно как в Ruby или Python. Наследование в нем реализуется через объекты и прототипы объектов. То есть места интерфейсу тупо нету.

    Грубо говоря, если допустить наличие "классов" в JS, то интерфейсом будет как раз таки абстрактный класс, у которого реализация всех методов выбрасывает ошибку not implemented. Во всяком случае люди которые еще не отвыкли писать интерфейсы на все и вся в Python или Ruby так обходятся.

    Но вообще вы должны подчиниться правилам утиной типизации и делать как-то так:

    function can(obj, methodName) {
         return ((typeof obj[methodName]) == "function");
    }
    
    // вот так вот сурово мы подаем вместо объекта словарь!
    var dict = {
       quack: function () {
           console.log('Quack! Quack!');
       }
    }
    
    // метод требует объект реализующий метод quack
    function test(obj) {
        if(!can(obj, 'quack')) { throw "Object should implement quack method" }
        obj.quack();
    }
    Ответ написан
    4 комментария
  • Какие есть проекты с открытым кодом на Laravel?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    builtwithlaravel.com/categories/open-source

    Расчитывать что там будет все по бест-практис не приходится.
    Ответ написан
    2 комментария
  • Где поискать примеры работы с js/jquery?

    BedwaRe
    @BedwaRe
    Пиши код
    Без отсебятины не придет понимания =) Пробуйте писать самостоятельно, а по факту возникновения проблемы ищите конкретное решение гуглом. Продуктивней способа я не встречал ;-)
    Хорошие примеры порой (и не только по js) я встречаю на codepen.io
    Ответ написан
    3 комментария
  • Как сделать простенькую MVC модель в php?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Итак, займемся переводом для начала

    на главной создаю объект:

    В точке входа/во фронт контроллере. Объект этот завется маршрутизатор или раутер. Имеет отношение к MVC - нет.

    вот что в файле hello.class.php:

    Такое именование файлов и классов было модным во времена php4. Отройте для себя PSR0 (и еще отдельно про PSR-4 можете почитать).

    Т.е. при обращении по url: site.localhost/hello я вижу hello!!!! на экране.

    Поздравляю вас с первым контроллером... хоть и убогим слегка. Читаем про контроллеры в контексте GRASP

    ну в htaccess я прописал нужную конструкцию

    Верни мне мой 2007-ой, когда все было круто и все хвастались своими ЧПУ на модреврайтах. Подумайте в сторону единой точки входа и перенаправления всех запросов, для которых не нашлось файлов на эту точку входа. Но это так... просто... совет. Это упростит жизнь при миграции скажем на nginx или черокки какой.

    Вот я и поплыл в этих терминах.

    Заходим на википедию и выплываем.

    Model-view-controller - схема использования нескольких шаблонов проектирования, с помощью которых модель данных приложения, пользовательский интерфейс и взаимодействие с пользователем разделены на три отдельных компонента таким образом, чтобы модификация одного из компонентов оказывала минимальное воздействие на остальные.


    Советую почитать полную статью и пройтись по ссылкам. Особенно по части модели данных. Это должно прояснить для вас такой момент что модель это модель данных. То есть у вас есть данные, например блог-пост, есть его модель (просто класс Post который имеет поля id, title, body и т.д.). Проще говоря модель это представления данных в приложении. А view - это слой который занимается тем что переводит данные из формата модели в формат запрашиваемый пользователем. Причем вам не запрещается работать из контроллера с базой. Ну то есть как, есть такие вещи как сервисный слой и тонкие контроллеры, но мы же пока только учимся да?). В любом случае модель не должна знать ничего о том где и как она хранится.

    Теперь по поводу view. Давайте вспомним что такое запрос в контексте WEB-приложений. Это старый добрый HTTP запрос. У запроса есть заголовок - Accept который говорит что хочет получить пользователь (пользователи могут быть не живыми и хотеть что-то другое, например JSON). Через него браузер говорит что хочет получить. Например он говорит "хочу text/html" и мы должны выполнить следующие стэпы:
    - вызвать контроллер
    - контроллер достает из закрамов модельки которые хочет пользователь и отдает их во view.
    - view переводит данные из формата приложения в формат который хочет увидеть пользователь.

    В очень грубой форме view может быть таким:
    PostView {
        
        private $post;    
    
        public function __construct(Post $post) {
            $this->post = $post;
        }
    
        public function renderTitle() {
             return sprintf("<h1>%s</h1>", $this->post->getTitle());
        }
        // и еще пара методов    
        public function render() {
             $this->renderTitle();
             $this->renderBody();
        }
    }


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

    Практическое задание:
    Если все что делает контроллер это отдает отрендренный шаблон без какой либо переменной в нем.... Это MVC? Где тут модель?
    Ответ написан
    3 комментария
  • Как сделать простенькую MVC модель в php?

    Sanasol
    @Sanasol Куратор тега PHP
    нельзя просто так взять и загуглить ошибку
    сделай класс который отвечает за обработку шаблонов
    в контроллере делай вызов $template->render('название шаблон', array(переменные передаваемые в шаблон))

    Вот типо того, с использованием твига
    <?php
    class Template
    {
        private function output()
        {
            echo $this->template->render($this->vars);
        }
    
        public function render($tmpl, $vars = array())
        {
            global $twig;
            $this->vars = $vars;
            $this->tmpl = $tmpl;
    
            $this->template = $twig->loadTemplate($this->tmpl.'.html');
            $this->output();
        }
    }
    ?>
    Ответ написан
    1 комментарий
  • С чего начать web разработчику ?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Кем я хочу быть: Мастером Ёдой в деле веб разработки . (front+back). Сейчас только front.

    То есть по итогу спятившим зеленым каратышкой хихикающим где-то в одиночестве на богом забытой планете?
    Ответ написан
    9 комментариев
  • Почему на ipad'е не работает высота и ширина в 100% ?

    min-width: 1000px;
    Причем на все элементы где стоит width: 100%
    И айпад, на зарядку нужно поставить ;)
    Ответ написан
    1 комментарий
  • Почему объект event нужно передавать в аргументе функции в Firefox при использовании jQuery?

    IonDen
    @IonDen
    JavaScript developer. IonDen.com
    elem.on("click", function (e) {
        e.preventDefault();
        e.stopPropagation();
        // и так далее
    });


    Фича в том, что все современные браузеры передают объект события аргументом в коллбэке. И только некоторые старые ИЕ этого не умеют и используют глобальный объект window.event. Что устарело и по сути некорректно. По этому jQuery облегчает вам задачу, приводя все ситуации к единому виду - объекту события в коллбэке.
    Ответ написан
    Комментировать
  • Почему объект event нужно передавать в аргументе функции в Firefox при использовании jQuery?

    Первый кусок кода не корректен. Использование не инициализированной переменной, вернее использование переменной window.event, которая может быть не инициализирована. В то время как в jQuery явно указано наличие параметра event в коллбеке click, в котором и приходит объект event.

    Так что файрфокс, в данном, случае защитил вас от некорректного кода. думаю использование use strict; в любом браузере не позволило бы Вам такой вольности.
    Ответ написан
    3 комментария
  • Как реализовать двойной :after и :before?

    Petroveg
    @Petroveg
    Миром правят маленькие с#@&ки
    Никак. Только дополнительный вложенный элемент со своими псевдоэлементами.
    Ответ написан
    Комментировать