fomiash
Комментарии fomiash
  1. fomiash fomiash 27 Июля 2023
    Для чего нужны кофе и плюшки в вакансиях

    Турник отличная штука. В IT-офисе его обычно прикручивают в комнате для отдыха(отдыха, не физ.упражнений) или возле столовой в проеме двери, при этом используется редко. Если его и ставить, то в отдельном специализированном для этого помещении вроде мини-спортзала, но уж точно не в столовой и не рабочей зоне, что отвлекает. На это мало кто из работодателей готов. Ну можно позаниматься на нем двадцать минут в перерыв, понадобиться душ, может быть, переодеться тоже бы. То есть сам по себе турник здесь совершенно не в тему, элемент декора и строчка в вакансии. Как турник в компьютерном клубе, например, вещь полезная, но не к месту. Это не космическая станция, чтоб все в одном помещении)

    1
  1. fomiash fomiash 25 Июля 2023
    Для чего нужны кофе и плюшки в вакансиях

    Список не полный. В вакансиях можно обнаружить и те вещи, которые само собой разумеются. То же менторство новоприбывших необходимо, и, надеюсь, присутствует у всех.

    1
  1. fomiash fomiash 14 Июня 2023
    Вместо отчёта по фреймворку HLEB 2

    Спасибо! Ведь когда сроков точных нет, то и работается продуктивнее.

    2
  1. fomiash fomiash 03 Мая 2023
    Самый ужасный код, который когда либо встречал

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

    1
  1. fomiash fomiash 27 Апреля 2023
    Мир PHP с высоты птичьего полёта

    По задумке автора, это вообще похоже на надгробие) А строящийся проект, видимо Yii3, хотя там может быть что угодно.

  1. fomiash fomiash 23 Апреля 2023
    Заметки о переделке фреймворка HLEB

    До конца года постараюсь выложить 2.0)

    1
  1. fomiash fomiash 18 Января 2023
    Что вы должны использовать в качестве визуализации соединений SQL вместо диаграмм Венна

    Интересно, по ссылке утверждается, что схема на пересекающихся кругах вообще некорректна.

    1
  1. fomiash fomiash 16 Декабря 2022
    Движки для базы данных MySQL - InnoDB, MyISAM и Archive

    Да, InnoDB лучше, когда нужна высокая надежность хранения и быстрое восстановление после сбоя. Плюс движок этот хорошо справляется со смешанными типами запросов, когда одновременно и чтение и редактирование и удаление происходит. Минусы InnoDB - могут возникать deadlock'и, не свойственные MyISAM. В основном из-за большей функциональности, например транзакций. Но вообще, этот движок не зря стоит по умолчанию.

    1
  1. fomiash fomiash 07 Декабря 2022
    Создание сайта с помощью фреймворка HLEB. Часть 10. Обещанная консольная команда

    Для Open Server нужно удостовериться, что закомментировано следующее(или отсутствует) в файле /public/.htaccess

    <IfModule mod_headers.c>
       # Header onsuccess edit Set-Cookie ^(.*) "$1; SameSite=Strict; HttpOnly; Secure"
    </IfModule>
    
    
    1
  1. fomiash fomiash 06 Декабря 2022
    Создание сайта с помощью фреймворка HLEB. Часть 10. Обещанная консольная команда

    Разница действительно ощутимая, возможно, есть различия в файлах.

    Если вы использовали архив с итоговыми файлами по ссылке под статьёй, то капча там отключена по умолчанию. Также там можно ставить лайки не подтверждая E-mail (аналогично условиям из этого курса по созданию API). Настройка капчи в конфигурации (поле active):

    {
        "ucaptcha": {
            "version": "1",
            "data": {
                "active": "off",
                "design": "base"
            }
        }
    }
    

    Сравните на окружениях файл /storage/lib/ucaptcha/config.json.

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

    <?php
    namespace App\Models;
    class LikeModel extends \Hleb\Scheme\App\Models\MainModel
    {
       // ...
    }
    

    Обновил в прилагаемом выше к посту архиве.

    1
  1. fomiash fomiash 28 Ноября 2022
    Автоназначение маршрутов контроллер-метод во фреймворке HLEB.

    Ограничить доступность HTTP-методов тоже не помешает, поэтому измененный базовый контроллер для модулей может быть таким:

    <?php
    // Файл /modules/MainModuleController.php
    namespace Modules;
    
    use Hleb\Constructor\Handlers\Request;
    
    class MainModuleController extends \MainController
    {
        public function __construct(array $data = null)
        {
            parent::__construct($data);
            if (method_exists(static::class, 'verbs')) {
                $action = Request::get('method');
                $verbs = $this->verbs();
                if (count($verbs) && (empty($verbs[$action]) || !in_array(Request::getMethod(), $verbs[$action]))) {
                    http_response_code(404);
                    echo $this->error404();
                    exit();
                }
            }
        }
    
        /** Проверка допустимых HTTP-методов запроса для методов в контроллерах. */
        protected function verbs(): array
        {
            return [];
        }
    
        /** Возвращение стандартной ошибки метода verbs(). */
        protected function error404()
        {
            return null;
        }
    
        /** Переопределение стандартной функции view() */
        protected function view($to, $data = null): array
        {
            $type = \Request::get('type');
            $controller = \Request::get('controller');
            return view("$type/views/$controller/"  . ltrim($to, '\\/ '), $data);
        }
    }
    
    
    

    Теперь можно в контроллерах задавать допустимые методы и возвращаемую ошибку.

    <?php
    // Файл /modules/api/IndexController.php
    namespace Modules\Api;
    
    use Modules\MainModuleController;
    
    class IndexController extends MainModuleController
    {
        protected function verbs(): array
        {
            return [
                'get' => ['GET', 'OPTIONS'],
                'update' => ['POST', 'OPTIONS'],
            ];
        }
    
        protected function error404(): string
        {
            return "404 Not Found";
        }   
    
        public function actionGet()
        {
            // Получение 
        }
    
        public function actionUpdate()
        {            
            // Изменение
        }
    }
    
    
    1
  1. fomiash fomiash 18 Ноября 2022
    Создание сайта с помощью фреймворка HLEB. Часть 2. Добавление маршрутов (роутинг).
    Route::before(

    Задаётся middleware, то есть предварительный (before) контроллер, размещённый до группы маршрутов или маршрута. В данном случае первое, он назначен группе, значит будет выполнен до любого совпавшего маршрута в группе.

    'Hlogin\Registrar',

    Это сам вышеупомянутый класс-контроллер библиотеки Hlogin(в данной инструкции установка библиотеки - на одном из следующих этапов), при установке библиотеки он размещается по пути /app/Middleware/Before/Hlogin/Registrar.php. Выполняясь до маршрута он реализует проверку авторизации.

    [RegType::UNDEFINED_USER, '>=']

    Параметры проверки на авторизацию, например здесь RegType::UNDEFINED_USER - означает, что установлено значение любой пользователь (кроме заблокированных и удалённых), а знак '>=' соответственно одобряет проверку текущему значению и всем более "высоким" статусам регистрации, авторизованным и администратору. Значения сравниваются такие (по возрастанию):

    BANNED_USER - Забаненный

    DELETED_USER - Удалённый

    UNDEFINED_USER - Не определённый (любой не авторизованный и не удалённый/забаненный)

    PRIMARY_USER - Не подтвердивший E-mail(но авторизованный)

    REGISTERED_USER - Зарегистрированный

    REGISTERED_COMANDANTE - Суперадмин

    При регистрации пользователю устанавливается PRIMARY_USER, после подтверждения E-mail - REGISTERED_USER, если пользователь попробует зайти на страницу(из маршрута для которого задана проверка авторизации) - при этом с недостаточным уровнем пользователя - его перебросит на страницу авторизации. Зачем добавлять этот контроллер для незарегистрированных (публичные страницы)? На этих маршрутах добавиться блок регистрации, иначе маршрут будет "вне видимости" библиотеки Hlogin.

    )->getGroup();
    ...
    Route::endGroup();

    Сама группа маршрутов, на которую назначается условие (контроллер).

    use Phphleb\Hlogin\App\OriginData as RegData;
    use Phphleb\Hlogin\App\System\UserRegistration as RegType;
    Route::before('Hlogin\Registrar', [RegType::PRIMARY_USER, '>=', RegData::HIDE_PANELS])
        ->get("/api/test", '{"success":1}');

    Выше показано, как можно скрыть блок авторизации/профиля, при этом оставив проверку, это может пригодится для API только для зарегистрированных, например. RegData::HIDE_PANELS - скрывает блок. В версии HLOGIN v1.2.35 и выше можно добавить RegData::FROM_API, тогда редиректа не произойдёт и вернётся ошибка 403.

    1
  1. fomiash fomiash 05 Ноября 2022
    ➳ Предыстория этого блога ❂

    Тоже пробовал, там в оригинале флажок, поэтому сразу поменял иконку на другую, все же флажок может ввести в заблуждение, что это Избранное.

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

    1
  1. fomiash fomiash 26 Октября 2022
    От корки до корки, изучать фреймворки

    Отстаивают видимо те, кто когда то кодил на нём. Да и сохранилось достаточно много проектов, некогда начатых на ZF. Они и сейчас в строю и проработают много лет ещё, если версию PHP на сервере не обновлять. Несмотря на то, что официальный репозиторий ZF в архиве, кто-то же эти проекты обслуживает.

    1
  1. fomiash fomiash 16 Сентября 2022
    ➳ Предыстория этого блога ❂

    ______ - линия


    + Маркер

    • Маркер
    2


Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.