Челендж на 2026

S3
На сайте с 29.03.2012
Offline
370
#61
Картинка напомнила мне один фремфорк:

S3
На сайте с 29.03.2012
Offline
370
#62

Я, так сказать вне конкурса - куда мне до лавров фремфорко-строителя, не претендую на лавры гения, но по мотивам недавних рахборок мне пришла в голову идея двух маленьких сервисов, которые и набросал за выходные.

1. Определение схожести текстов.  Это не антиплагиат, а подсчет вероятности, что два текста были написаны одним автором. Можно например, выявлять дупликаты аккаунтов. Вычисляет сходство двух текстов по многим параметрам и позволяет понять схожесть. Вот пример сравнения двух текстов от alex и alaev

А вот сравнение текстов Volovikov vs Alex

Не правда ли - интересный результат? В данном случае анализирует весь текст, по предложениям, но нужно еще добавть анализ по постам. Это произвольная выборка, а можно взять ответы по одной теме, там был бы еще интереснее результат.

Второй сервис - анализ схожести фото. Тот же принцип - загружаем 2 фото и получаем результат. Тут интереснее постанализ, а не цифры. Вот сравнение аватаров

Volovikov и Alex:


Казалось бы - ответ отрицательный, но обратите внимание, сколько много общих точек в итоге подсвечивается?

Как это можно применить - не придумал))) 

Антоний Казанский
На сайте с 12.04.2007
Online
796
#63
Sly32 #:
А вот сравнение текстов Volovikov vs Alex

Мне и без текстовых сравнений совершенно понятно, что Volovikov и Alex - это один и тот же человек, тем более, что в реальной жизни - Александр.

p.s. За инициативу сравнения текстов - молодец. Где молодец, там молодец.

√ SEO продвижение ► https://akazansky.ru - экспертный аудит сайтов ( https://akazansky.ru/audit-sajtov ), внедрение эффективных решений цифрового маркетинга. Разговоры о SEO и не только: культурно, вежливо, доброжелательно ► https://t.me/seotusovochka
M3
На сайте с 09.02.2022
Offline
113
#64
Sly32 #:

Я, так сказать вне конкурса - куда мне до лавров фремфорко-строителя, не претендую на лавры гения, но по мотивам недавних рахборок мне пришла в голову идея двух маленьких сервисов, которые и набросал за выходные.

Как это можно применить - не придумал))) 

а где исходники?)
S3
На сайте с 29.03.2012
Offline
370
#65
master32 #:
а где исходники?)

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

Александр Воробьев
На сайте с 03.02.2020
Offline
56
#66
Sly32 #:

Как это можно применить - не придумал))) 

Прикольно, интересно было бы узнать нет ли "родственных" душ в рамках форума :) 


PS. А у меня тем временем сегодня первый релиз (и фреймворка и скелетона для простого старта разработки на нем). постараюсь к пятнице видео запилить.  Начинается у меня череда ДР: отец, сын и я - друг за другом, "скорость" подспадет

Александр Воробьев
На сайте с 03.02.2020
Offline
56
#67

Итак вторая пятница (далее через две недели "отчеты")

Фреймворк

Выпустил первый релиз. Базовый функционал (естественно он очень минимальный) работоспособен. Вполне можно собрать какой то внутренний микросервис. Реализовано:

  • Ручная маршрутизация HTTP-запросов
  • DI-контейнер с поддержкой автовайринга параметров
  • Система middleware
  • Управление сессиями (включая поддержку «неблокирующего» режима — данные сессии считываются в начале обработки запроса, после чего сессия немедленно закрывается, позволяя другим запросам от того же пользователя работать параллельно без ожидания завершения текущего.)
  • Обработка ошибок и исключений

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

GitHub   Дока

Так же сделал скелетон, для старта с минимальным набором (в README описано)

composer create-project voral/joke-minimal my-app

Видео

Видео записал не в формате "показать что у меня внутри" тут, если у кого то будут вопросы, готов ответить, а выдавливать из себя... хз... (я вообще наверно первый раз лет за 30 столько говорил без перерыва :) )

Записал видео с демонстрацией создания с помощью фреймворка простейшего приложения Списка задач. видео  созданное приложение на github

Шаблонизатор

Основная разработка сейчас здесь. Реализованы сейчас базовые теги <j-echo>, <j-if></j-if>, <j-each/> на их базе отработал построение AST дерева, рендер в HTML. Но осознал, что выполнять сразу полный рендер  HTML это не правильно для динамических сайтов: по этому  будут следующие шаги:  лексер - парсер - рендер тегов отмеченных атрибутом static (сейчас на гитхабе версия с "j-static", но у атрибута префикс планирую убрать) - компиляция в PHP код. Т.е. на первом хите будет и построение AST дерева и компиляция php кода. На последующих (пока не сработают правила обновления кода) будет только выполнение PHP (естественно я пока опускаю, что будут и другие уровни кеширования).

Сейчас работаю над внедрением в шаблонизатор DI контейнера, что позволит и регистрировать свои теги и заменять те, что идут из коробки. В общем то можно будет заменить не только обработчики тега, но и например компилятор штатный заменить на компилятор который будет компилировать в любой другой ЯП, например в код на питоне :)

Репа шаблонизатора GitHub

GitHub - Voral/joke: A minimal PHP microframework with manual routing and dependency injection container.
GitHub - Voral/joke: A minimal PHP microframework with manual routing and dependency injection container.
  • Voral
  • github.com
Joke — это учебный микрофреймворк с ручной маршрутизацией и встроенным DI-контейнером. Он разрабатывается в рамках образовательного челленджа и не претендует на конкуренцию с промышленными решениями, такими как Laravel или Symfony. Несмотря на скромный функционал, реализуемые компоненты стремятся быть надёжными, тестируемыми и пригодными для...
S3
На сайте с 29.03.2012
Offline
370
#68
Александр Воробьев #:
Выпустил первый релиз.

👍👍👍

Всего две недели и уже есть продукт, который можно использовать! К сожалению, у меня не грузится ваше вквидео, возможно твм бы я нашел ответы на вопросы, поэтому вопросы и замечания.

- Роутинг позволяет выстраивать запросы любого вида уже? Как с параметрами, так и без?
 

site.ru/catalog/page-1
site.ru/catalog/item?page=1&name=ball
...

- миддлваря для СОRS.  А если я хочу внедрить какой-то параметр во все роуты - это тоже можно будет через нее делать, например закрыть урл авторизацией, но не писать отдельно функцию а просто внедрить миддлварю?

Жду докер, чтобы поиграться самому)

Ну и замечание - категорически против использовать html тэги в шаблонизаторе - очень сильно загрязняет код. Давно уже стандарт использовать {{ }} для статики
и {% %} для исполняемого кода. 

Volovikov
На сайте с 06.12.2016
Offline
136
#69
Sly32 #:
Вот пример сравнения двух текстов от alex и alaev
О, не даром говорят, что мы все от Адама и Евы. Еще один братан подъехал 😁
Российский спорт ▶ https://russian-sports.ru
Александр Воробьев
На сайте с 03.02.2020
Offline
56
#70
Sly32 #:
- Роутинг позволяет выстраивать запросы любого вида уже? Как с параметрами, так и без?

Вот пример на котором я "игрался" при разработке на гитаб


/**
* @var Router $router
*/

$router->get('/', fn() => <<<HTML
<ul>
    <li><a href="/name/Alex">Hi Alex</a> Текстовый ответ. Имя можно менять</li>
</ul>
HTML
);
$router->get('/name/{name:slug}', fn(string $name) => 'Hi ' . $name, 'hiName');
$router->get('/json/{name:slug}', fn(string $name) => ['fio' => $name]);
$route = $router->get('/name-filtered/{name:slug}', fn(string $name) => 'Hi ' . $name)->addGroup('filtered');
$router->get('/invoke/{prop}', InvokeController::class);
$router->get('/shop', [SingleController::class, 'index']);
$router->get('/shop/info', SingleController::info(...));
$router->get('/shop/infoNew', SingleController::class . '::info');
$router->get('/shop/{filter}', [SingleController::class, 'find']);

$router->get(
    '/csrf',
    fn(Vasoft\Joke\Core\Request\HttpRequest $request) => [
        'csrf' => $request->session->get(
            CsrfMiddleware::CSRF_TOKEN_NAME
        )
    ]
);
$router->delete(
    '/csrf',
    fn(Vasoft\Joke\Core\Request\HttpRequest $request) => [
        'csrf' => $request->session->unset(
            CsrfMiddleware::CSRF_TOKEN_NAME
        )
    ]
);
$routeHandler = fn(Vasoft\Joke\Core\Request\HttpRequest $request) => [
    'id' => spl_object_id($request),
    'get' => $request->get->getAll(),
    'post' => $request->post->getAll(),
    'files' => $request->files->getAll(),
    'json' => $request->json,
];

$router->post('/queries', $routeHandler);
$router->put('/queries', $routeHandler);
$router->patch('/queries', $routeHandler);
$router->head('/queries', $routeHandler);
$router->get('/{*}', static fn(string $path) => new HtmlResponse()
    ->setStatus(ResponseStatus::NOT_FOUND)
    ->setBody("Запрошен несуществующий путь: {$path}"));
Sly32 #:
Жду докер, чтобы поиграться самому)

Хм. я планировал про докер с готовым приложением :) ок, разберусь и сделаю "для разработки"  

У меня у самого как то с докером не сложилось в практике: большинство проектов без докера, а брать на себя роль и сисадмина, к тому же свои коррективы вносит то, что проекты в основном на Битрикс (а там контент менеджер через интерфейс может менять файлы).... а так  у меня установлено с 14 года апач и bind9 в которые я конфиги просто скопировал с предыдущего компа... и все работает :)  Пробовал ставить себе докер - у меня начались какие то непонятки : браузеры на любом сайте постоянно стали сбрасывать соединение.  :)  в общем в этом плане я не продвинутый :)  но постараюсь разобраться. может у той же лары подгляжу - сделаю

Sly32 #:
Ну и замечание - категорически против использовать html тэги в шаблонизаторе - очень сильно загрязняет код. Давно уже стандарт использовать {{ }} для статики
и {% %} для исполняемого кода

Вообще я хотел изначально сделать %%...%% (у меня моя CMS так работала когда то). тут пошел из идеи: если тег не отработан, то он останется на странице и не будет виден. Правда пока писал этот текст осознал - у меня в этом случае бросается исключение. Подумаю.  в целом "переключить" совсем не проблема. 

Sly32 #:
у меня не грузится ваше вквидео

ужис :)  сейчас закину на ютуб

joke/tests/Fixtures/routes/web.php at master · Voral/joke
joke/tests/Fixtures/routes/web.php at master · Voral/joke
  • Voral
  • github.com
A minimal PHP microframework with manual routing and dependency injection container. - Voral/joke

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий