<MyRusakov.ru />

Создание нейросетей на Python

Создание нейросетей на Python

Этот курс научит Вас созданию нейросетей на Python. Курс рассчитан на начинающих. Вся информация идёт от простого к сложному очень маленькими шажками. При этом глубокое знание математики не требуется. Поскольку в курсе Вы будете получать эти знания по мере необходимости.

Из курса Вы узнаете всю необходимую теорию и терминологию. Научитесь создавать нейросети самых разных архитектур и обучать их. Также Вы создадите собственный фреймворк. Что очень важно проделать для грамотного использования того же PyTorch. Затем Вы изучите и сам PyTorch.

Помимо уроков к курсу идут упражнения для закрепления материала.

Ещё Вы получите Бонусы, дополняющие основной курс: "Распознавание изображений", "Анализ настроения по тексту отзыва", "Программирование на Python с Нуля до Гуру".

Подробнее
Подписка

Подпишитесь на мой канал на YouTube, где я регулярно публикую новые видео.

YouTube Подписаться

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Какая тема Вас интересует больше?

Роутинг в PHP на основе аннотаций

Роутинг в PHP на основе аннотаций

В данном скрипте я Вам покажу как из аннотаций можно получать настройки для системы маршрутизации в Вашем проекте. Преимущество настройки маршрутизации на основе PHP аннотаций заключается в том, что Вам не нужно больше создавать дополнительные файлы в которых будут прописываться конфигурации. Все конфигурации находятся прямо перед методом, избавляя нас от необходимости искать их где-то еще. В общем, много говорить не буду, а просто оставлю здесь код. Кстати, в данном примере используется компонент doctrine/annotations, который и ответственен за всю логику парсинга аннотаций.

Сначала создаем файл composer.json:

 {
   
"require": {
       
"doctrine/annotations": "*"
   
}
}

Далее в этой же папке выполняем команду

composer install

Создаем файл index.php, первые строки которого выглядят так:

 <?php
   
   
// подключаем автозагрузчик Composer'a
    require_once
'vendor/autoload.php';

Далее в этом же файле создаем класс аннотации @Route:

     /**
    * Аннотация \@Route представлена классом Route (маршрут)
    * Данная аннотация хранит настройки маршрутизации
    *
    *
    * @Annotation - обозначение аннотации
    * @Target({"CLASS","METHOD"}) - аннотация может применяться только к классам и методам классов
    */

   
class Route
   
{
       
public $url;     // url маршрута
       
public $handler; // обработчик - метод класса
       
public $methods;
   
}

Далее добавляем тестовый контроллер:

 // пример контроллера
   
// у каждого метода аннотация \@Route
   
// содержит параметры
   
// в виде ключ => значение, где ключ - это свойство класса,
   
// а значение - сторока в кавычках, число, или массив
   
class PageController
   
{
       
/**
        * @Route(
        *   url = "/",
        *   handler = "PageController::index",
        *   methods = {"GET"}
        * )
        */

       
public function index() {
           
print __METHOD__;
       
}
       
       
       
/**
        * @Route(
        *   url = "/login",
        *   handler = "PageController::login",
        *   methods = {"GET"}
        * )
        */

       
public function login() {
           
print __METHOD__;
       
}
       
       
       
/**
        * @Route(
        *   url = "/article/{id:\d+}",
        *   handler = "PageController::article",
        *   methods = {"GET"}
        * )
        */

       
public function article($id) {
           
print __METHOD__;
       
}
       
       
       
public function stub() {
           
print __METHOD__;
       
}
   
}

Класс RouteCollector

 // класс собирает все маршруты в массив
   
class RouteCollector
   
{
       
// метод получает на вход строковое имя класса
       
// который содержит роуты
       
public function collect($class)
       
{
           
// объект класса AnnotationReader  из пакета doctrine/annotation
            $reader    
= new Doctrine\Common\Annotations\AnnotationReader();
           
           
// загружаем класс в объект ReflectionClass
            $refClass  
= new ReflectionClass($class);
           
           
// получаем из класса все публичные методы
            $refMethods
= $refClass -> getMethods(ReflectionMethod::IS_PUBLIC);
           
           
// массив полученных объектов Route, описывающих маршрут
            $routes
= [];
           
foreach($refMethods as $method)
           
{
               
// получаем аннотацию Route
                $annotation
= $reader -> getMethodAnnotation($method,Route::class);
               
               
// если есть аннотация
               
if($annotation)
                    $routes
[] = $annotation;
           
}
           
           
return $routes;
       
}
   
}

Вызываем все это дело так:

 // создаем класс коллектора
    $collector
= new RouteCollector();
   
   
// собираем маршруты с класса
    $routes
= $collector -> collect(PageController::class);
   
   
// выводим маршруты
    print_r
($routes);

Результат примерно следующий:

 Array
(
   
[0] => Route Object
       
(
           
[url] => /
           
[handler] => PageController::index
           
[methods] => Array
               
(
                   
[0] => GET
               
)

       
)

   
[1] => Route Object
       
(
           
[url] => /login
           
[handler] => PageController::login
           
[methods] => Array
               
(
                   
[0] => GET
               
)

       
)

   
[2] => Route Object
       
(
           
[url] => /article/{id:\d+}
           
[handler] => PageController::article
           
[methods] => Array
               
(
                   
[0] => GET
               
)
       
)
)

Вот так можно организовать конфигурацию маршрутов в PHP с помощью аннотаций.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (4):

Dmitriy Dmitriy 25.07.2019 18:41:54

у вас опечатка - исправьте в "Сначала создаем файл" comoser.json - на composer.json

Ответить

Castels Castels 29.06.2021 11:03:45

Исправлено.

Ответить

romas_s romas_s 28.06.2021 17:27:00

Скажите пожалуйста, а зачем этот метод лучше следующего метода: route.php Хранит в себе все типы контента( статья, категория, меню сайта и т д) + условия подключения разных шаблонизаторов вывода контента. url.xml - список урл + id элементов с базы данных. route.php - вызывается в главном index php. Универсальный способ сортировать ссылки + не нужно костыли создавать, для обхода ограничений роутинга по шаблонному классу аннотаций.

Ответить

Castels Castels 29.06.2021 11:02:54

Покажите, пожалуйста, Ваш пример кода, с Github, например, так трудно представить, что имеется ввиду. А код в статье - это, один из вариантов роутинга, из фреймворка Symfony.

Ответить

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.