Турник отличная штука. В IT-офисе его обычно прикручивают в комнате для отдыха(отдыха, не физ.упражнений) или возле столовой в проеме двери, при этом используется редко. Если его и ставить, то в отдельном специализированном для этого помещении вроде мини-спортзала, но уж точно не в столовой и не рабочей зоне, что отвлекает. На это мало кто из работодателей готов. Ну можно позаниматься на нем двадцать минут в перерыв, понадобиться душ, может быть, переодеться тоже бы. То есть сам по себе турник здесь совершенно не в тему, элемент декора и строчка в вакансии. Как турник в компьютерном клубе, например, вещь полезная, но не к месту. Это не космическая станция, чтоб все в одном помещении)
-
1
-
fomiash 25 Июля 2023
Список не полный. В вакансиях можно обнаружить и те вещи, которые само собой разумеются. То же менторство новоприбывших необходимо, и, надеюсь, присутствует у всех.
1
-
fomiash 14 Июня 2023
Спасибо! Ведь когда сроков точных нет, то и работается продуктивнее.
2
-
fomiash 03 Мая 2023
Несмотря на то, что в последнем абзаце рекомендация развиваться, работая с плохим кодом, это может быть вредным советом,обычно, с каким кодом имеешь дело, такой потом и пишешь. А в целом неплохо, если сравнить с текстом грамотного копирайтера, которому неожиданно дали заказ на техническую статью)
1
-
fomiash 27 Апреля 2023
По задумке автора, это вообще похоже на надгробие) А строящийся проект, видимо Yii3, хотя там может быть что угодно.
-
1
-
fomiash 18 Января 2023
Интересно, по ссылке утверждается, что схема на пересекающихся кругах вообще некорректна.
1
-
fomiash 16 Декабря 2022
Да, InnoDB лучше, когда нужна высокая надежность хранения и быстрое восстановление после сбоя. Плюс движок этот хорошо справляется со смешанными типами запросов, когда одновременно и чтение и редактирование и удаление происходит. Минусы InnoDB - могут возникать deadlock'и, не свойственные MyISAM. В основном из-за большей функциональности, например транзакций. Но вообще, этот движок не зря стоит по умолчанию.
1
-
fomiash 07 Декабря 2022
Для Open Server нужно удостовериться, что закомментировано следующее(или отсутствует) в файле
/public/.htaccess
<IfModule mod_headers.c> # Header onsuccess edit Set-Cookie ^(.*) "$1; SameSite=Strict; HttpOnly; Secure" </IfModule>
1
-
fomiash 06 Декабря 2022
Разница действительно ощутимая, возможно, есть различия в файлах.
Если вы использовали архив с итоговыми файлами по ссылке под статьёй, то капча там отключена по умолчанию. Также там можно ставить лайки не подтверждая 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
-
fomiash 28 Ноября 2022
Ограничить доступность 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
-
fomiash 18 Ноября 2022
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
-
fomiash 05 Ноября 2022
Тоже пробовал, там в оригинале флажок, поэтому сразу поменял иконку на другую, все же флажок может ввести в заблуждение, что это Избранное.
Пока не совсем понятно, что делать с жалобой, рациональным вариантом было бы показывать всплывающий попап с возможностью выбора причины или добавления комментария и с кнопкой "отправить жалобу". Но тут я бы даже концепцию изменил, не жалобу, а, например, "Сообщить о нарушении", это более нейтрально звучит.
1
-
fomiash 26 Октября 2022
Отстаивают видимо те, кто когда то кодил на нём. Да и сохранилось достаточно много проектов, некогда начатых на ZF. Они и сейчас в строю и проработают много лет ещё, если версию PHP на сервере не обновлять. Несмотря на то, что официальный репозиторий ZF в архиве, кто-то же эти проекты обслуживает.
1
-
2