Как стать автором
Обновить
5
0
Игорь Краснов @crlam0

PHP Junior

Отправить сообщение

А вы умеете JSON'ы-то гонять? Там разные задачи бывают. Или это Выше Ваших Высоких Принципов? Тогда не удивительно что без работы.

Отбор-то искусственный полностью. А не естественный

Отбор простой: кто-то работает а кто-то рефлексирует что работы нет.

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

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

из большинства VGA-карт, тоже не ахти, но ведь не 60 же, как в графических.

Хмм, на сколько помню, во времена Windows 95 "большинство видео карт" являлись уже S3 Trio64 V+, по крайней мере в наших краях, а эти видеокарты SVGA и вполне держали 800*600 75Гц, если монитор поддерживал конечно. Вот в 1024*768 только 60Гц и это было откровенное убийство зрения :(

Вспоминается мой самый успешный разгон: Celeron 300A с 300 до 450Мгц, это было круто. Материнка, конечно, поспособствовала: легендарная ASUS P3B-F. А сейчас свой AMD FX 8350 Black Edition даже лень разгонять не смотря на разблокированный множитель, нормальные мать и башню: для моих задач и так хватает производительности.

ветераны линукса, работающие с ним с восьмидесятых годов

Крутые видимо дядьки если работали в восьмидесятых годах с системой, ядро которой было опубликовано только 25 августа 1991 :)

У нас камеры были статические но вот примерно при -35 некоторые переставали давать картинку, хотя пинговались. Лечили это просто: "прогревали" флуд пингом большими пакетами :). Через минут 5-10 обычно "оттаивали" все камеры, которые ещё пинговались.

P.S. Камеры были всякие разные купленные в Китае. Некоторые вообще переставали пинговаться пока на улице не теплело.

Вот представь, завтра выходит обновление ядра Yii, твои действия?

Вот вообще не огорчусь: я взял у них идею а именно из файлов взял только Session.php.

Это такая фишка везде видеть Денисов Поповых?

[03:29:23 root@hosting:/home/htdocs/boot.nsk.ru]# grep -r Yii ./
./vendor/twig/twig/doc/intro.rst:Slim, Yii, Laravel, and Codeigniter — just to name a few.
./include/classes/Session.php: * Session is a Web application component that can be accessed via `Yii::$app->session`.
./include/classes/Session.php: * Starting with Yii 2.0.21 `sameSite` is also supported. It requires PHP version 7.3.0 or higher.
./include/classes/Session.php: * foreach (Yii::$app->session->getAllFlashes() as $key => $message) {
./include/classes/App.php: * @var Session Session implementation from Yii2 framework


Ну код ревью такой код не прошел бы.

Из-за одного файла?

Посыл статьи был как код шёл от плохого к хорошему. И скрытая просьба чтобы мне указали на ошибки. А в итоге сеньёры цепляются к одному файлу.
SPA — это по желанию. Vue не требует знания TypeScript. Vue очень прост на самом деле…

Я знаю, пока просто думаю как мне его применить в свой проект. Но если уж тащить такую зависимость то используя TypeScript, чего мелочиться :)

Самая большая сложность, возможно, это настроить сборщик (Webpack сложен для меня...) я использую laravel-mix.com

Вы не поверите, я тоже! :) В зависимостях в package.json он и есть. Но в своём движке я в итоге сделал функцию
function get_webpack_asset(string $name) : string {
    $file_name = App::$DIR . 'theme/mix-manifest.json';
    if(!file_exists($file_name)) {
        App::error('File mix-manifest.json not exists !');
        return '';
    }
    $json = file_get_contents(App::$DIR . 'theme/mix-manifest.json');
    $assets = my_json_decode($json);
    if(!array_key_exists($name, $assets)) {
        App::error('Key "' . $name . '" not exists in "mix-manifest.json"');
        return '';
    } else {
        return $assets[$name];
    }
}

чтобы не тащить ещё одну зависимость, stormiix/laravel-mix-twig-extension, в которой по сути делается тоже самое.

Я попробовал использовать symfony/webpack-encore-bundle, штука прикольная, кастомизации куда больше чем в laravel-mix, но я так и не смог настроить как мне надо. Может времени мало потратил (часа три), может у меня запросы специфичные. Но вернулся на laravel-mix. Вот мой конфиг:
let mix = require('laravel-mix');
mix
    .setPublicPath('theme/')
    .setResourceRoot('../')
    .js('theme/assets/js/main.js', 'js')
    .sass('theme/assets/sass/main.scss', 'css')
    .copyDirectory('theme/assets/images', 'theme/images')
//    .copyDirectory('theme/assets/fonts', 'theme/fonts') 
    .options({
       processCssUrls: true
    })
    .version();
if ( !mix.inProduction() ) {
    mix
        .webpackConfig({devtool: 'source-map'})
        .sourceMaps();
}
Здесь я рекомендую смотреть на Симфони, как на проект, который пытается форсить правильные подходы

Так я уже использую консоль и Twig. Но надо свой код писать что понять красоту или перебор Симфони. Мой шаблонизатор укладывался в две функции. Сам PHP это шаблонизатор, но речь о другом. Не слишком ли много абстракций? Вопрос риторический.

В любом случае спасибо за рекомендацию!
Как сказал один очень умный человек, «то что одному — логичная и последовательная структура, то другому — оверинжиниринг». Все зависит от опыта.
А от задачи разве не зависит?
но при этом сохраняя мозг пользователя почти без необратимых повреждений
Спасибо, после Yii2 вроде в порядке :)
> А скажите, как я могу следовать SOLID и при этом чтобы небыло оверинжинирнга?

Всем вопросам вопрос.
Глядя на твою CMS я не совсем понимаю в чем посыл твой

Самобытная. Самописная. Она именно моя. Мой опыт. Об этом статья.

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

Да, я хотел критики. Я её получил.
Но это не SOLID а просто типы указал.
А скажите, как я могу следовать SOLID и при этом чтобы небыло оверинжинирнга? Я в статье не уверен что для такой простой задачи нужен контейнер. Ну реально: просто получаю реквест и по роутингу отдтаю контроллеру который даёт респонс.
Да, тестировать такое сложно, спасибо что мне сказали это.
Да, по SOLID, мне интерфейсов сделать/задействовать примерно чуть больше чем ноль. В чём плюс кроме как что мои модули смогу использоваться в других проектах?
Это хорошо, я рад помочь другим людям.
Ну мы уходим от темы моей статьи: работает, быстро работает. Хотя использование Twig это уже абстракция над абстракцией, благо кешируется.
Спасибо за ваш отзыв!
Так посыл стати что всегда надо двигаться дальше!
Но в 2010 я не мог писать так:
public function actionActive(int $part_id, int $id, string $active): string
    {
        $model = new CatalogItem($id);
        $model->active = $active;
        $model->save();
        echo $active;
        exit;
    }

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

Но вот нормальная архитектура, построенная на автоматическом создании объектов-сервисов и пробрасывания их в конечные объекты-потребители с помощью контейнера, как раз и решила бы проблему «связности в моей ЦМС», которая в итоге перестала бы напоминать Йии1-2 с его фреймворком, который весь лежит в одном объекте.


Спасибо! Я и сам это понимаю, супер объект это уж точно антипаттерн :( Но он удобен :((( Но надо перестать его использовать.
а вот модуль админки и каталог товаров имеют ценность для ваших пользователей
Вы абсолютно правы!
Отсюда напрашивается направление дальнейшего развития: реализовать админку и каталог в виде PSR-4 модулей
не забыв абстрагироваться от слоя доступа к данным (паттерн репозиторий) Это позволит использовать ваши модули с любым популярным фрэймворком.
Конечно! Это в планах! Почему я и хочу под PSR переписать!
. Сделать это в архитектуре REST (позволит четко отделить уровень презентации).
Я уже заложил это: базовый контроллер выдаёт в JSON результат если там в result тип array :)
В довершение всего сделать фронтэнд SPA это позволит сделать функционально богатый и отзывчивый интерфейс.
И стать фуллстэк? Я уже писал на Vue, но нет у меня пока ни времени, ни желания изучать TypeScript :)
Правильно ли я понимаю, что папка classes в CMS это скопированные классы из yii? Почему не затащил свой проект на базу Yii?


Только адаптировал classes\Session, и я там оставил копирайты. Видимо это было ошибкой.

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


А Вы точно видели код? Да, я вдохновлялся их кодом, но я вообще не использую их контейнер к примеру. Ну или как я с базой работаю, это же ActveRecord паттерн, я его скопировал?

Ну код ревью такой код не прошел бы.


С вашими требованиями не прошёл, спору нет.
Так именно что история как из говнокода стал код более-менее. Благодаря чему, кому и как я учился. А так я опубликовал всю историю изменения кода.

Информация

В рейтинге
Не участвует
Откуда
Новосибирск, Новосибирская обл., Россия
Дата рождения
Зарегистрирован
Активность