• Что почитать по архитектуре или правильном программировании?

    Jeer
    @Jeer
    уверенный пользователь
    О, я так и думал, что будет много советов читать книги по архитектуре. С ними такая подстава, на уровне джуна ты не будешь понимать, о чём вообще говорится в этих книгах. Или будешь понимать, и такой, даа, автор жжёт, правильные вещи говорит, а вот что делать с этим дальше - не в курсе, так как практики нет. А вот когда дорастёшь до какого-нибудь ведущего, тогда будешь перечитывать еще раз с мыслью "аа, так вот что он имел в виду". И вот именно из-за этого, многие на начальном этапе не осиливают такие книги, поэтому, если есть лишнее время, можно почитать.
    Что нужно делать: идёшь в энтерпрайз. Да или просто в компанию, которая пилит 1-4 продукта с разными командами. В команде должно быть по нескольку человек. И постоянно достаёшь более опытных разрабов с вопросами почему сделано именно так. Плюс должно быть код ревью, чтобы более опытные тебе постоянно указывали на твои ошибки, что вот так делать не надо.
    Через год меняешь контору, но чтоб тоже сложные проекты были и были команды, и так же достаёшь вопросами почему сделано так, а не иначе.
    Тогда и придёт понимание как делать удобнее и правильнее. Вот тогда и можешь почитать книги по архитектуре, чтобы еще больше пришло познание.
    Избегай контор, в которых будешь работать один или двое, это болото, которое не даст тебе такого мощного проф развития.
    Касательно написания более понятного и чистого кода, этот вопрос не относится к архитектуре. Это всё тоже придёт с практикой и с код ревью. Как вариант, чтобы усилить, можно посмотреть паттерны, вот есть крутой сайтец с приятными картинками, лёгкое чтиво (естественно, достаточно того, что в открытом доступе):
    https://refactoring.guru/
    Ответ написан
  • Хочу изменить поле в БД но мне выдает ошибку?

    Sanasol
    @Sanasol
    нельзя просто так взять и загуглить ошибку
    Column not found: 1054 Unknown column 'status_distib' in 'field list'

    Что непонятного-то?
    Ответ написан
    Комментировать
  • Какую программу стоит использовать для изучения англ. слов/фраз?

    @viktoriamaler
    never stop learning
    Мне понравилось приложение SE Wordbook. Есть небольшая встроенная база со словами. Остальные слова добавляются самостоятельно, можно добавлять по одному, а можно загрузить в виде csv файла много слов сразу.
    А вообще, нет принципиального значения, с помощью какой программы вы будете учить. Хоть на бумажке можно записывать. Понимаете, что какое-то слово не запоминается, повторяете его снова и снова, пока не запомните. А потом через день/неделю/месяц/год устраиваете себе проверку. Кроме того, нужна практика использования. Если не используете слово, оно забудется через какое-то время. Любая программа лишь немного облегчит вам жизнь, а чтобы выучить то, что плохо заучивается или постоянно забывается, все равно придется делать, как вы говорите, "много лишних телодвижений"
    Ответ написан
    2 комментария
  • Какую программу стоит использовать для изучения англ. слов/фраз?

    GTRxShock
    @GTRxShock
    Full-stack developer (Symfony, Angular)
    Ответ написан
    Комментировать
  • Какую программу стоит использовать для изучения англ. слов/фраз?

    gobananas
    @gobananas
    finishhim.ru
    Для слов. фраз хорошо идёт lingualeo
    Для грамматики duolingo
    Ответ написан
  • Как это лучше реализовать?

    RiseOfDeath
    @RiseOfDeath
    Диванный эксперт.
    Нет, строка должна хранить текст. А для списка фиксированных значений есть Enum
    Ответ написан
    Комментировать
  • Какое типовое решение применить в данной ситуации?

    vesper-bot
    @vesper-bot
    Любитель файрволлов
    Здесь нарушен принцип L из SOLID-списка, функции hunt() должны принимать Animal на вход, и обрабатывать любой Animal (своим образом, но любой). А так, для объединения не связанных между собой классов правильно использовать интерфейсы - если оно требуется, т.е. нужно сделать типа var hunters:array of Hunter. (PHP вроде бы интерфейсы не умеет - тогда проверяйте через if ($animal is Wolf){...}) А если не нужно - реализуйте независимые пары классов.
    Ответ написан
    5 комментариев
  • Какой из способов виртуализации более подходящий для сервера базы данных?

    opium
    @opium
    Просто люблю качественно работать
    без разницы
    Ответ написан
    Комментировать
  • Какой из способов виртуализации более подходящий для сервера базы данных?

    Melkij
    @Melkij
    PostgreSQL DBA
    Поскольку меня сюда призвали, то напишу пару слов.

    Если вы ещё не доросли до отдельной железки под базу - то для базы не будет принципиальной разницы какой гипервизор у вашей виртуалки. Интереснее вопрос насколько честен хостер (уточняйте отдельно, я с хостерами не знаком).
    openvz заметно легче для хостера по ресурсам и позволяет легко продавать ресурсов сильно больше чем у него есть в действительности.
    С kvm - сложнее заниматься оверселлом хотя бы по памяти, хотя помнится даже там можно.

    С openvz у вас будет на порядок меньше возможностей настройки, т.к. ядро используется хост-системы и никто не даст вам его трогать. И весьма старое ядро, кстати.
    На kvm соответственно полноценная виртуальная система. Можете ставить что угодно и как угодно тюнить ядро. Если хостер уважает себя и предоставляет virtio устройства - то это и работать будет внятно.
    mysql запустится и там и там. Краеугольный для любой СУБД вопрос производительности дисков и там и там от вас полностью скрыт и зависит от хостера.

    Универсального ответа нет. Если вы под базу не настраиваете ядро, то возможно и openvz подойдёт, обычно там предлагают больше ресурсов за те же деньги.

    Мой ответ про докер же относится именно к докеру. Если вы можете пробросить директорию хост-системы в докер - почти наверняка у вас уже своя железка или vps и вы пытаетесь именно добавить ещё прослойку. Если вы захотите на своей vps ещё вдобавок запихать бинарники базы в докер - тогда будет вопрос "зачем". Если вы хотите имея отдельную железку только под базу запихать эту базу в виртуалку - тогда будет вопрос "зачем".
    Если у вас нет железки - то vps очевидно дешевле чем аренда целой железки и за счёт этого вполне целесообразно рассматривать аренду виртуалки.
    Ответ написан
    1 комментарий
  • Какой из способов виртуализации более подходящий для сервера базы данных?

    ky0
    @ky0
    Миллиардер, филантроп, патологический лгун
    Файлы базы нормально нагруженной СУБД в виртуалку засовывать особого смысла нет.

    Если же неудобства и оверхед по I/O вас не волнуют - без разницы, контейнер это будет или виртуальная машина, важнее на каких дисках это всё будет располагаться и верно ли будет настроена сама СУБД в плане производительности.

    Смотрите, например, отличный ответ Melkij - Как настроить Postgres в Docker?

    P.S. - добавьте mysql в тэги, кстати. Всё сказанное выше справедливо и для него, хоть и написано про постгрес.
    Ответ написан
    2 комментария
  • Зачем нужен ActiveQuery в Yii2?

    Maksclub
    @Maksclub
    maksfedorov.ru
    Если быть более, конкретным, зачем нужна эта опция, при генерации модели через Gii?

    Чтобы вы могли добавить свои кастомные методы или переопределить родные (all(), one() и другие, короче переопределить родной ActiveQuery и изменить на свои абстракции)

    Вот пример контроллера:
    actual() -- такого метода нет в ORM, а мне нужен, ну вот хочу так пользоваться:
    $trainings = Training::find()->actual($date);

    ActiveQuery

    Ну раз нужен -- добавляем такой метод
    class TrainingQuery extends \yii\db\ActiveQuery
    {
        public function actual($date)
        {
            return
                $this->alias('t')
                ->joinWith(['lesson l' => function($q){
                    $q->joinWith('studio s');
                }])
                ->andWhere(['l.active' => 1])
                ->andWhere(['s.active' => 1])
                ->andWhere(['t.date' => $date])
                ->all();
        }
    }

    Сущность

    В сущности перенацеливаем родной find() на мой кастомный
    class Training extends \yii\db\ActiveRecord
    {
    ...
    public static function find()
        {
            return new \mynamespace\entities\query\TrainingQuery(get_called_class());
        }

    Ответ написан
    3 комментария
  • Зачем нужен ActiveQuery в Yii2?

    SwoDs
    @SwoDs
    PHP YII2
    Открою вам секрет, ActiveRecord использует ActiveQuery, более полную информацию вы можете получить изучив документацию и гайд (за 3 года можно было и ознакомиться) =)
    Ответ написан
    1 комментарий
  • Что не так с валидацией даты в Yii2?

    @Arik
    Может:
    1. 01.01.201 - валидная дата за 201 год
    2. timestamp за такой год просто не существует, минимум 1970
    Ответ написан
    8 комментариев
  • Yii Как избежать дублирование методов в классах?

    DieZz
    @DieZz
    Как мне видится - самый логичный вариант сделать отдельный класс, который будет возвращать имя статуса. Это может быть хелпер, компонент и все что угодно, в зависимости от специфики вашей бизнес логики. Например
    interface HasStatus
    {
        public const STATUS_NOT_PAID = 0;
        public const STATUS_PAID     = 1;
        public const STATUS_CANCEL   = 3;
    
        public function getStatus(): int;
    }
    
    class StatusHelper
    {
        /**
         * Статистический метод получения списка статусов
         *
         * @return array
         */
        public static function getStatusList()
        {
            return [
                HasStatus::STATUS_NOT_PAID => 'Не оплачено',
                HasStatus::STATUS_PAID     => 'Оплачено',
                HasStatus::STATUS_CANCEL   => 'Отменена',
            ];
        }
    
        public function getStatusName(HasStatus $entity): string
        {
            ArrayHelper::getValue(self::getStatusList(), $entity->getStatus());
        }
    }

    Соответственно все ваши модельки должны имплементирвать интерфейс HasStatus. Таким образом вся бизнес логика находится в одном месте и отвязана от БД
    Ответ написан
    1 комментарий
  • Как реализовать в yii2 веб-интерфейс + api для приложения?

    Maksclub
    @Maksclub
    maksfedorov.ru
    весь основной функционал уже готов, я буду его дублировать в апи контроллере, вызывая нужные методы

    Именно поэтому все и говорят "тонкие контроллеры"
    Тк у вас логика в контроллерах, то да -- дублировать
    Если бы разнесли нормально по сервисам -- то контроллеры на беке и апи просто бы пользовали их и были по сути расходниками
    Ответ написан
    3 комментария
  • У кого есть структурированный видеокурс по Figma?

    Kadzi
    @Kadzi
    Ом
    Илья, ты не перейдешь от фотошопа полностью. Делать нужно так:

    1) сложные векторные штуки рисуем в иллюстраторе (там и фильтры есть и эффекты), затем берем и экспортируем как SVG в фигму. Инструкция, как правильно сохранять в SVG.

    2) Растровые коллажи рисуем конечно в фотошопе, экспортируем в фигму, как PNG или JPEG

    3) Фигма - для сборки, потомучто а) гораздо быстрее работа с макетами б) гораздо меньше весят файлы в) несколько человек могут дизайнить одновременно г) можно делать компоненты - кирпичи, например ты нарисовал кнопку и сделал её компонентом, затем можешь её плодить одним нажатием кнопки, так, ты можешь сделать хоть 100 таких кирпичиков и за считанные минуты собрать интерфейс (посмотри такого чувака, как Roman Kamushken, чтобы понять насколько это ускоряет работу)

    НО, можно делать весь дизайн только в фигме, не проблема, просто учти, что сложные фигуры, 3д, коллажи и так далее в ней покачто ты не сделаешь.

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

    ролики на ютубе есть, но их объясняют такие болваны с ээээканьем мммммэканьем, что сил нет смотреть 15 мин то, что можно обьяснить за 10 сек.

    из адекватного, русское:

    знакомство с фигмой
    почитать статейка старая, много что поменялось, но визуально там показаны преимущества
    полезный материал по резине
    Ответ написан
    2 комментария
  • Что такое и какая разница между паттернами и алгоритмами?

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

    Статей и книг по первому и второму в интерете предостаточно.

    https://addyosmani.com/resources/essentialjsdesign...
    https://github.com/fbeline/Design-Patterns-JS
    https://mgechev.github.io/javascript-algorithms/
    Ответ написан
    Комментировать
  • Почему не выводит view?

    fornit1917
    @fornit1917
    Вы делаете ajax-запрос и никак не обрабатываете ответ от сервера. Сервер вам возвращает html который вы отрендерили, но вам нужно на js в обработчике ajax-запроса написать код, который будет его показывать.
    Ответ написан
    1 комментарий
  • Как развиваться Junior-у PHP?

    Sanasol
    @Sanasol Куратор тега PHP
    нельзя просто так взять и загуглить ошибку
    3. Развиваться в самом бекенде - php

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

    Фуллстаки это программисты для бедных, кто не может/не хочет нанимать достаточное количество людей.
    И ими становятся потому что почти все вакансии из разряда и швец, и жнец, и на трубе игрец.

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

    Конечно же написанное всё имхо)
    Ответ написан
    3 комментария
  • Как развиваться Junior-у PHP?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Спросите себя сами: "Что я НЕ могу реализовать самостоятельно прямо сейчас, написав это правильным кодом и не упустив нюансов реализации?". Если таких задач нет - идите искать работу тимлидом или как минимум сеньором. В противном случае - искать информацию что и как работает в том чего вы еще не знаете. Имхо другого пути к совершенствованию нет.
    Ответ написан
    Комментировать