• Как обезопасить скрипт?

    Akdmeh
    @Akdmeh
    PHP, Yii2, Music
    ionCube и Zend Encoder чуть ли не единственный вариант. Часть кода с другого сервера - рано или поздно эта защита обходится даже для огромных проектов. Один с ярких примеров для меня - это взлом системы игры Assassin's Creed 2, где для обхода подобной системы подняли локальный сервер на Python и подменили IP серверов с помощью hosts-файла.
    А самый продвинутый вариант на сегодня - это предоставлять услугу без предоставления собственно исходного кода, то есть, SaaS-решения. Вплоть до того, что вы предоставляете скрипт-клиент бесплатно, но он работает по API, который будет отдавать нужную информацию, и без этого центрального сервера нет смысла в клиенте-обертке. Да, это техническое решение, к тому же требует своего сервера (а то и не одного), так что все зависит от конкретных условий проектов, которые вы хотите лицензировать
    Ответ написан
    3 комментария
  • Почему не стоит мешать html c php?

    Akdmeh
    @Akdmeh
    PHP, Yii2, Music
    По сути, я видел 90-килобайтные файлы мешанины PHP, HTML, MySQL-запросов и прочего.
    Писать такой код просто.
    Проблемы начнутся через полгода, когда вы этот код забудете и нужно будет что-то изменить. Вам придется проверять весь код и пересматривать его, чтобы не зацепить изменением в одном месте кода другое, совсем неожиданное.
    После того, как новички несколько раз сталкиваются с такой проблемой, они начинают писать код более структурировано. Один с методов - это отделить получение информации от пользователя и базы данных с помощью одного кода, отображать эту информацию конечному пользователю с помощью другого, и решать, какую информацию показать и связать два предыдущих компонента между собой - с помощью третьего набора кода.
    Грубо говоря, так и получается структура MVC, в которой html и php код разделен.
    Это если условно, так как сколько людей - столько и пониманий MVC.
    Ответ написан
    Комментировать
  • Что посоветуете еще подучить что бы тянуть на Junior PHP разработчика?

    Akdmeh
    @Akdmeh
    PHP, Yii2, Music
    Ко всему выше сказанному хочу дополнить только одно: нужно уметь самому искать нужную информацию. Поверьте, и на этом сайте, и в интернете масса ответов и статей на тему, что нужно знать джуниору PHP. Перед тем, как самому писать, нужно не поленится и погуглить, поискать решение самому. Это будет ваш наиболее ценный навык - умение решать поставленную проблему/задачу самостоятельно.
    По дополнительному: вы не обязаны знать тонкости, но не помешает знать Apache и nGinx, хотя бы принцип работы и почему так, а не иначе - это важно для избежания багов. Не помешает знать, что такое PHP-FCGI, хотя не обязательно; обязательно - Composer; ну и почитайте книгу Мэтта Зандстры. Ну и Symfony, как уже выше советовали - тоже не помешает.
    Ответ написан
    2 комментария
  • Что выведет следующий код php?

    Akdmeh
    @Akdmeh
    PHP, Yii2, Music
    Сперва срабатывает функция print, которая выводит 2.
    Эта функция возвращает значение 1, если вывод был успешным. Вот именно значение 1 подставляется на ее место.
    И затем уже происходит echo строки 1.'1'.3.
    В итоге получаем 2113 - все логично и согласно документации, пусть это и довольно тонкий момент
    Ответ написан
    4 комментария
  • На кой ... нужны современный популярные js-фреймворки среднестатистическому интернет-магазину?

    Akdmeh
    @Akdmeh
    PHP, Yii2, Music
    Те, кто просто работает над типичными сайтами и кодеры-одиночки - просто слишком заняты получением прибыли и им неинтересно расписывать каждый раз: "это все отлично, но мне jQuery хватает"; адепты фреймворков более активны в сети, потому что занимаются чем-то сравни религиозной пропаганде в хорошем смысле.
    Ознакомится с фреймворками однозначно нужно, ради этого и пишутся статьи - авторы хотят показать новый, более оптимальный путь для динамических веб-интерфейсов, код, который проще сопровождать, в котором меньше будет багов, проще расширить функционал, над которым могут работать несколько человек без страха, что мелкое изменение повлечет падение интерфейса в другом, неожиданном месте.
    Приведу понятную аналогию. Ведь можно использовать исключительно топор для заготовки деревьев. Многие до сих пор так делают. Но для промышленных масштабов выгоднее использовать если не целые комбайны, которые заготавливают дерево за несколько минут, так хотя бы электропилы.
    Те, кто использует электропилы пишут: "люди, 21 век на дворе. Выбросьте вы свои топоры, это каменный век, когда электричесва и бензина не было! Используйте электропилы, пусть ими нужно уметь пользоваться, они дороже в обслуживании и им нужно электричество".
    Но если вам нужно время от времени вырубать два дерева и вам хватает топора - дальше рубайте топором и посматривайте на электропилу - будет время - почему бы ее не купить и не использовать, действительно удобнее!
    Ответ написан
    2 комментария
  • Когда стоит учить Vue.js, React или Angular?

    Akdmeh
    @Akdmeh
    PHP, Yii2, Music
    Изучите JavaScript хорошо. jQuery не помешает - чтобы там не говорили о "в 2017 году jQuery не нужен" - немало сайтов его до сих пор используют и в ус не дуют + существует немало legacy-кода, который приходится поддерживать и в наши дни. Вы должны понимать, что он делает под капотом, почему облегчает работу с DOM, а затем и переходить на Vue - с тройки описанных технологий он показался самым простым для погружения в мир JS-фреймворков
    Ответ написан
    Комментировать
  • Параметры vs Аргументы в ф-ции?

    Akdmeh
    @Akdmeh
    PHP, Yii2, Music
    Все именно так, как вы написали. Пока что не заморачивайте себе этим голову.
    При описании функции используются параметры, они будто бы внутренние переменные функции (условно так и есть).
    А вот уже при ИСПОЛЬЗОВАНИИ функции на место абстрактных параметров вы передаете конкретные данные, которые называются аргументами.
    То есть, параметр и аргумент взаимосвязаны между собой.
    Еще одна попытка объяснить это: https://ru.wikipedia.org/wiki/%D0%9F%D0%B0%D1%80%D...
    Ответ написан
    Комментировать
  • Как работают браслеты с которых можно проводить оплату на мероприятиях?

    Akdmeh
    @Akdmeh
    PHP, Yii2, Music
    Как уже говорилось - RFID.
    Вот, кстати, описывают свой опыт украинский фестиваль Atlas Weekend - погуглите, может найдете и более подробные описания
    https://www.imena.ua/blog/atlas-weekend-pay-talks/
    Ответ написан
  • Самый простой Autocomplete для input на JS\JQuery?

    Akdmeh
    @Akdmeh
    PHP, Yii2, Music
    jQuery UI.
    Там есть кастомные сборки, можно не тащить всю библиотеку.
    Может не самое простое решение, но довольно проверенное временем.
    Ответ написан
    Комментировать
  • Зачем шифруют изображения?

    Akdmeh
    @Akdmeh
    PHP, Yii2, Music
    Делается для уменьшения количества запросов на сервер. Ведь каждое изображение - это лишний запрос на nGinx, а иногда, если иконок около 50 штук - нагрузка значительно увеличивается. В этом случае увеличение размера изображения на 30% меньшее зло, чем еще один лишний запрос.
    Ответ написан
    Комментировать
  • Как решить проблему Cross origin requests в Google Chrome?

    Akdmeh
    @Akdmeh
    PHP, Yii2, Music
    Вы открываете файл локально, а нужно поднять веб-сервер типа Apache, и уже обращаться к нему с помощью localhost
    Это самые основы основ, поэтому никто вам и не захотел тратить время на ответ.
    Можете скачать https://www.apachefriends.org/ru/index.html ; погуглить "как настроить Apache под Windows", сделать, чтобы localhost указывал вам на нужную папку и уже обращаться к нужному файлу не с помощью file://, когда Chrome читает файл с диска напрямую, а через внутренний веб-сервер.
    Ответ написан
    Комментировать
  • Будет ли работать валидация в yii2 без ActiveForm?

    Akdmeh
    @Akdmeh
    PHP, Yii2, Music
    ActiveForm это те же формы, но со стероидами. Все плюсы этого виджета сводятся к автоматической проверке большинства стандартных валидаторов Yii на стороне клиента + возможность AJAX-валидации + автоматизированная подсветка ошибок формы с предыдущих запросов.
    Вы можете не использовать ActiveForm, а использовать либо чистый HTML, либо хелпер \yii\helpers\HTML, и уже самому навешивать те обработчики, которые вам нужны, а для Yii2 оставить только серверную валидацию.
    Вообще в обсуждениях Yii2 все идет к тому, что они будут постепенно выносить все эти FrontEnd-виджеты в отдельные пакеты, а Yii2 именно сосредоточится на "серверном" коде. Так что если вам не нужно использовать ActiveForm - вы вольны использовать свои frontend-технологии.

    Ряд поправок сходу. Изучите генерацию name в input Yii2 - сэкономит немало времени. Суть в том, что они используют по умолчанию "пространства имен" для мультиотправки нескольких форм да порядка в коде. Например, name input-тега для заголовка новости может иметь название News[header], где первая часть - обычно название класса, если поведение не переопределено в классе методом formName, а в скобках - название поля.
    Это упрощает валидацию нескольких разных моделей.
    Немного сложнее устроен "табличный ввод", но это уже направляю вас к документации.
    Ответ написан
    Комментировать
  • Как в GridView Yii2 добавить строку Total?

    Akdmeh
    @Akdmeh
    PHP, Yii2, Music
    1) итог придется считать самому с помощью доп. функций. Я делаю это с помощью хелпера:
    <?php
    
    namespace app\helpers;
    
    class ArraySum
    {
        public static function getSum($array)
        {
            $sumArray=[];
            foreach ($array as $k=>$subArray) {
                foreach ($subArray as $id=>$value) {
                    $value = floatval($value);
                    if(isset($sumArray[$id])) {
                        $sumArray[$id]+=$value;
                    } else {
                        $sumArray[$id]=$value;
                    }
                }
            }
            return $sumArray;
        }
    }

    Код помогал хорошо мне, но возможно вам можно будет адаптировать (например, указывать, какие поля плюсовать или нет).
    Дальше я делал так. Допустим, у меня есть многомерный массив типа 0=>['id'=>2, 'date'=>'2017-05-12', 'operator_count'=>55, 'operator_count2'=>4, ...], 1=>['id'=>3, 'date'=>'2017-05-13', 'operator_count'=>57, ...]

    Этот массив пропускаем через мой класс.
    Если используете ActiveDataProvider, нужно сделать в контроллере
    $dataProvider->prepare();
    а затем
    $total_statistic = \app\helpers\ArraySum::getSum($dataProvider->getModels());

    Передаем $total_statistic в view, и там делаем следующие модификации:
    1) добавляем 'showFooter'=>true
    2) переделываем все "колонки" по аналогии с первым operator_count (остальные уже допишите сами).
    <?= GridView::widget([
            'dataProvider' => $dataProvider,
            'filterModel' => $searchModel,
            'showFooter'=>true,
            'columns' => [
                ['class' => 'yii\grid\SerialColumn'],
    
                'id',
                'date',
                'operator_count'=>[
    'attribute'=>'operator_count',
    'footer' => $total_statistic['operator_count']
    ],
                'operator_count2',
                'operator_count4',
                 'operator_count4',
    
            ],
        ]); ?>


    Остаются мелочи - нужно украсить это с помощью CSS, доделать, проверить...
    Но это уже, надеюсь, сами справитесь.

    Буду очень благодарен, если мне подскажут более оптимальный вариант, но я вроде бы не встречал подобного встроенного функционала в Yii2
    Ответ написан
    6 комментариев
  • Минимальный размер окна в google chrome?

    Akdmeh
    @Akdmeh
    PHP, Yii2, Music
    702c4a9fc967438caaa13c549b4958bc.png
    Удалось уменьшить до 334px. Возможно, зависит от размера экрана. Я к тому веду, что 379px - не магическое число, а к чему-то привязано.

    Вот еще ссылка на тему с похожим обсуждением: https://stackoverflow.com/questions/8681903/browse...
    А также предложение в трекера Хрома за 2013 год: https://bugs.chromium.org/p/chromium/issues/detail...
    Ответ написан
    Комментировать
  • Оперативная память на 1x8GB или на 2x2GB?

    Akdmeh
    @Akdmeh
    PHP, Yii2, Music
    Намного лучше одна на 8, прирост от двоканального режима не перевесит большее количество оперативки, из-за которого меньше будет происходить SWAP
    Ответ написан
    Комментировать
  • Выбор ноутбука i5 и 16 RAM или i7 и 8 RAM?

    Akdmeh
    @Akdmeh
    PHP, Yii2, Music
    Не забывайте, что показатели "разгона" очень зависят от типа охлаждения. Показателя "3.5 Ghz" вы вряд ли когда-то увидите.
    Ответ написан
    Комментировать
  • Как добавить строку в начало таблицы MySQL (PHPmyAdmin)?

    Akdmeh
    @Akdmeh
    PHP, Yii2, Music
    Обычно добавляют поле position, и уже делают ORDER BY `position`, а ID остается таким, каким есть. Добавляться все равно будет в конец таблицы, но сделал сортировку по полю - и все в порядке.
    Конечно, есть некоторые расходы на то, что эти position нужно выставлять
    Ответ написан
    5 комментариев
  • Как сделать выборку из двух таблиц по определенному значению?

    Akdmeh
    @Akdmeh
    PHP, Yii2, Music
    SELECT objects.*, users.* FROM objects LEFT JOIN users USING(id) WHERE users.username = 'msa6886'

    Уточните немного, что нужно получить, но кажется, это то, что вам нужно
    Ответ написан
    Комментировать
  • Nginx + fastCGI -как установить на два хоста?

    Akdmeh
    @Akdmeh
    PHP, Yii2, Music
    Хватит только PHP. Все, что вам нужно сделать - это на втором запустить PHP-FPM, а на первом указать в fastcgi_pass 127.0.0.1:9000; - не локальный IP, а IP второго сервера.
    Только при этом нужно еще на втором сервере сделать возможным доступ только с IP первого сервера.
    Если это вам для учебных целей - изучайте дальше. Если для рабочего хоста - лучше заказать услуги системного администратора, помимо прочего существуют многие особенности для безопасной настройки, которые трудно предвидеть.
    Ответ написан