Александр Воробьев

Александр Воробьев
Рейтинг
59
Регистрация
03.02.2020
Другое дело есть и профессионалы и любители совершенно различного уровня подготовки и качества. Но это уже совсем о другом. В любом случае "профессионал" вечно срывающий сроки - вылетает из профессии, владелец бизнеса, который не может поддерживать вменяемые сроки решения (и  устраивающее пользователя качество) задач своих клиентов - быстро вылетает.
ArbNet #:

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

Хех.. ну давайте потренируем свои мысленные способности :)

Ты путаешь понятия профессионала, предпринимателя, лида/техлида и возможно исследователя. Давай разберёмся по определениям.

Согласно толковому словарю С. И. Ожегова,

Профессионал — это «человек, занимающийся какой-нибудь деятельностью профессионально, то есть как профессией».
А профессия, по тому же Ожегову, — это «основное занятие, род деятельности, требующий специальной подготовки и являющийся источником существования».


То есть профессионал — это тот, кто компетентно и качественно выполняет свою работу, будь то написание кода, проектирование архитектуры, тестирование, поддержка пользователей или даже управление проектом. Профессионализм не зависит от того, работает ли человек один или в команде, нанимает ли он кого-то или нет.

Более того, Международный стандарт ISO 21001:2018 (а также общепринятая практика) подчёркивает, что профессионализм включает в себя способность эффективно решать задачи в рамках своей роли, соблюдая различные нормы профессии.

Многие выдающиеся профессионалы работают в крупных командах, не создавая «своё» с нуля, но при этом решают сложнейшие инженерные задачи, без которых продукт просто не заработал бы. 

И, кстати, менеджер — тоже профессия. Хороший менеджер обладает глубокими знаниями в управлении, коммуникациях, рисках и процессах. Утверждать, что он «не имеет опыта и знаний», — это всё равно что сказать, что повар — не профессионал, потому что не выращивает овощи.

Истинный профессионал — это тот, кто своевременно, качественно и ответственно решает задачи, стоящие перед его ролью, вне зависимости от должности, штата или масштаба проекта.

Сам по суди: ты бы пошел ко врачу, который поставив тебе диагноз пошел изобретать лекарство? Ты бы доверил ремонт квартиры бригаде, которая пропала бы на пару лет изобретя молоток?

Поставь себя на место потребителя: сколько раз ты делал выбор "мне конечно ОЧЕНЬ важно это иметь сейчас, но вы там поизобретайте, мне не надо как  у тысяч других людей успешно используемых решений". 

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

Sly32 #:
Александр за 2 недели создал скелетон, который я без наличия  ПХП на компе смог запустить. А ты до сих пор даже не озадачился со скриптом установки. 
И это, кстати, так же дополнительный "буст" для достижения хорошего результата: я уже сейчас получил полезный фидбек, что позволит мне в самом начале проекта внести изменения с учетом этого, а не переделывать потом сильно больше кода. А может ведь быть ситуация, что проект станет заложником своей "ошибки" в начале. И такая ситуация реальна - есть примеры в существующих популярных продуктах.
ArbNet #:
Вот сравним по итогу то, чей вариант инструмента будет больше востребован.

Мой без вариантов. :) Поясню не спора для

Если сравнивать результаты челенджа, то тут вообще два абсолютно разных инструмента для разной ЦА. Их сравнивать не корректно. Но вот если конечной целю поставить: инструмент для неподготовленного человека, то тут все сильно иначе.

И тут как раз вся суть в понимании термина "фреймворк" (я не просто так хотел узнать твое видение этого)

В моем понимании. 

Фреймворк - инструмент для разработчиков. На нем надо программировать. Однако может быть на разной "глубине". т.е На примере ЯП% и чистый асм и джава вооруженная фреймоврками это все языки программирования, но вот количество кода для решения одной и той же задачи требуется разное. Так и здесь один фреймворк решает из коробки 1% задач, другой 80%. 

Далее CMS - в ее основе лежит фреймворк, но уже большое число функций можно решить не зная ни ЯП ни html/css. Т.е. если простой проект и подобрали правильно cms. То тут тоже может быть ни чего не придется учить. Просто уровень вполне достаточный: "пользователь CMS".   

Далее идет констуркторы сайтов. По сути та же CMS. Только тут уже больше все в режиме "наелозить мышкой по страничке и поотвечать на вопросы мастеров". Т.е это даже просто более продвинутый интерфейс CMS. :) Здесь пользователю вообще не надо знать ни о каких то бд, ни о каких то xml да даже css html не надо.

Т.е. потенциально мой проект закрывает вообще все варианты целевой аудитории.

Ну и конечно же у меня есть огромнейший плюс, я использую композер. А это значит, что пользователь моего фреймворка потенциально уже прямо сейчас может установить любые из 441 484 пакетов зарегистрированных на packagist (а можно ведь кроме этого и пакеты с github, но не зарегистрированные на packagist). Предположим даже там много аналогов,  пусть только треть "уникальны", чтобы воспроизвести этот функционал даже если в день по пакету успевать то это 402 года. А теперь взглянем на АПИ wildberries клиента для такого за день? :)  (а это сейчас нужно большинству интернет магазинов, а есть еще и другие МП)

Sly32 #:
Ну и замечание - категорически против использовать html тэги в шаблонизаторе - очень сильно загрязняет код. Давно уже стандарт использовать {{ }} для статики
и {% %} для исполняемого кода.
вот, блин, ты "подбил на взлете"....  за обедом подумал, что тут даже проще реализация будет и разбор более производительный (на первый взгляд) должен получиться. так же я как раз заткнулся на реализации <j-if><j-elseif><j-else></j-if>   а тут вообще как будто этот момент упрощается
Sly32 #:
Жду докер, чтобы поиграться самому)
git clone https://github.com/Voral/joke-minimal my-app
cd my-app
docker compose up -d

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 #:
у меня не грузится ваше вквидео

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

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

Фреймворк

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

  • Ручная маршрутизация 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

Sly32 #:

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

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


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

Самое забавное, что бывало. И достаточно, на мой взгляд часто (за прошлый год раза два - три): я работаю по времени, соответственно его считаю (в toggl). Вот бывало по два дня подряд рабочее время за день совпадало секунда в секунду. Это при том, что я начинаю и заканчиваю рабочий день не по какому то особому "звонку", разные перерывы, в течении дня переключаюсь с задачи/на задачу,  с проекта/на проект (а это все остановить один таймер и включить другой.....
Всего: 692