• Методы изучения разговорного английского?

    Nikolino
    @Nikolino Автор вопроса
    Общался с носителем пол года, почти каждый день. Но он был просто товарищем, поэтому не поправлял меня (как родители поправляют своих детей когда те учатся говорить). Он просто понимал меня, даже если я говорю что-то некорректно, ему было лень поправлять раз он и так всё понял. Но я то сам слышал, что сказал как-то "криво", как если бы иностранец изучающий русский сказал вам "моя твоя не понял", сказано криво и забавно, но смысл понятен.

    Поэтому тут скорее нужен носитель-репетитор, который будет поправлять без особых объяснений почему лучше говорить так или эдак. Но это вылетит в копеечку, учитывая их часовой рейт.
  • Методы изучения разговорного английского?

    Nikolino
    @Nikolino Автор вопроса
    почему?

    Я не транжирю свое время, я смотрю видео и слушаю подкасты не только потому, что хочу подтянуть английский. В первую очередь я смотрю и слушаю это все потому, что на английском намного больше полезного контента по разработке, чем на русском.
  • Хорошие практики тестирования в Laravel проектах?

    Nikolino
    @Nikolino Автор вопроса
    Евгений Ромашкан, не помню точно, как оно в Symfony, но судя по Gist'у, у Laravel и Symfony подходы в структуре отличаются как раз таки в том, что в Laravel разделение по сущностям приложения (или фреймворка): то есть Models, Controllers, Jobs, Requests(Validators) и т.д., а уже внутри сущностей приложения имеем сущности бизнес-логики, то есть внутри Controllers имеем ProductController, UserController, CartController и т.д.

    А в гисте описан обратный подход, когда самый высокий уровень папок это сущности бизнес-логики: /cart, /product и т.д., а уже внутри них actions, models и т.д.

    Понятное дело, что и подход в тестах тогда будет отличаться при различии в подходах всей структуры проекта.
    Но превращать Laravel в Symfony и создавать папки согласно бизнес логике (внутри папки /app, или /src, если по-вашему :)) это то еще извращение.

    Наверное нужно опробовать и то и другое, тогда прозрачнее станет, какой в конечном итоге удобнее.
  • Хорошие практики тестирования в Laravel проектах?

    Nikolino
    @Nikolino Автор вопроса
    Alex Wells, ваш вариант, пожалуй, лучше. Так как, если несколько разработчиков на проекте будут наваливать тесты в один класс, то вскоре сложно будет понять написан ли тест для какого-то случая и есть вероятность, что два разных разработчика напишут по сути одинаковый тест два раза, потому, что весь класс читать лень)
  • Хорошие практики тестирования в Laravel проектах?

    Nikolino
    @Nikolino Автор вопроса
    Допустим у вас есть ProductCartService, в какую папку вы его засунете, в /product или /cart? :)

    Почему плохо засунуть его в папку Unit/Services, а джобы в папку Unit/Jobs и т.д.?
  • Хорошие практики тестирования в Laravel проектах?

    Nikolino
    @Nikolino Автор вопроса
    Alex Wells
    "Обычно пишу по одному на каждый эндпоинт, типа GamesListTest для /api/games"

    То есть, для проверки эндпоинта, который сохраняет данные в базу(добавляет новую игру) вы создадите еще один тест класс? И для обновления данных об игре еще один?
    Или тестируете все связанные с играми эндпоинты в одном классе?
  • Как соотносится токсичность в IT с другими сферами деятельности?

    Nikolino
    @Nikolino
    Рональд Макдональд, До прихода этих слов у нас были свои: "срач" и "срутся".
    Вежливость и тактичность европейцев(американцев) пусть и натянутая, но всё же вежливость. Сколько видел интервью наших же ребят, которые работают в штатах или Европе, и почти в каждом из них говорят, что нашим (русским) в общении с иностранными заказчиками или коллегами чуть не хватает этой вежливости. К примеру после созвона, перед тем как приступить сразу к делу, считается нормальным перекинуться двумя словами о погоде, или о том как ездили на шашлыки с семьей и детьми. У нас же, сразу к делу. Сейчас модно говорить о soft-skills, и именно этих soft-skills не хватает нам в общении с иностранцами. Есть и обратная сторона, когда кто-то из них хвалит что-то (статью, или задачу, которую ты выполнил), то эта похвала может быть только из вежливости, а не потому, что ему кажется что ты действительно сделал что-то отлично.
  • Как происходит выделение памяти?

    Nikolino
    @Nikolino Автор вопроса
    Судя по всему, такие проверки в PHP вообще мало полезны, в отличии от подобных проверок в компилируемых языках.
    echo memory_get_usage()."\n";
    $a = [1, 2, 3, 4, 5, 6, 7, 8, 9];
    echo memory_get_usage()."\n";
    $b = [1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9];
    echo memory_get_usage()."\n";

    356072
    356104
    356104

    Если добавить еще один массив, то увидим как увеличивается выделение памяти еще до того, как объявлена первая переменная (результат первого вызова memory_get_usage).
    echo memory_get_usage()."\n";
    $a = [1, 2, 3, 4, 5, 6, 7, 8, 9];
    echo memory_get_usage()."\n";
    $b = [1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9];
    echo memory_get_usage()."\n";
    $c = [1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'something'];
    echo memory_get_usage()."\n";

    357992
    358024
    358024
    358024
  • Best practices в именовании классов, методов и переменных?

    Nikolino
    @Nikolino Автор вопроса
    Давайте на примере, вот есть Symfony класс:
    \Symfony\Component\Form\Extension\Core\DataTransformer\DateTimeToLocalizedStringTransformer

    В неймспейсе есть слово "Transformer", но в названии класса тоже есть "Transformer", вы считаете это избыточным?

    То есть так было бы лучше?
    \Symfony\Component\Form\Extension\Core\DataTransformer\DateTimeToLocalizedString

    Такой вариант не очень подходит хотя бы по причине того, что когда в IDE мы импортируем класс, то его неймспейс прописывается в блоке use, который обычно "схлопывается" самой IDE, чтобы не мешал. И чтобы посмотреть, что же такое этот "DateTimeToLocalizedString", нам нужно раскрыть этот блок с use неймспейсами, а это неудобно.
  • Поиск по файлам с учетом директории?

    Nikolino
    @Nikolino Автор вопроса
    То, что искал, потестил, отметил решением.
  • Поиск по файлам с учетом директории?

    Nikolino
    @Nikolino Автор вопроса
    JhaoDa, дописал в посте
  • Поиск по файлам с учетом директории?

    Nikolino
    @Nikolino Автор вопроса
    Дмитрий, нет, например у нас есть админка, в ней можно добавлять статьи, новости, товары и категории. Тогда путь к файлу формы добавления категории такой views/admin/category/create.blade.php, а путь к файлу добавления статьи такой: views/admin/article/create.blade.php.

    Что это дает?
    То, что когда я в контроллерах пишу путь к вьюхе, то Phpstorm (с плагином Laravel и IDE Helper'ом) автокомплитит пути к вьюхам.
    89acf90cef.png
  • Поиск по файлам с учетом директории?

    Nikolino
    @Nikolino Автор вопроса
    Дмитрий, посоветуйте как лучше называть? И пару аргументов почему так удобнее.
  • Хочу начать изучать Laravel, ответите на несколько вопросов?

    Nikolino
    @Nikolino
    Максим Тимофеев, объективней, наверное, смотреть на статистику скачиваний.
    Может через год-полтора поравняются, посмотрим.
    b472e78b3e.png
  • Хочу начать изучать Laravel, ответите на несколько вопросов?

    Nikolino
    @Nikolino
    DIAMONDMAN, пока еще и в странах бывшего СНГ и на западе популярней React, на втором месте Angular, далее Vue.
    Vue набирает обороты, но до того момента, когда он будет доминировать, на мой взгляд, еще далеко.

    Но в вакансиях обычно пишут "знание одного из фреймворков: Vue, React, Angular". Поэтому можно учить и Vue.
    А вообще мигрировать с одного на другой не так сложно. Я начинал изучать Vue, затем быстро освоился в React. С Redux'ом пока тяжко, но недельку-другую и будет норм.
  • PHP+JS Трудности с выбором учебно-боевого проекта?

    Nikolino
    @Nikolino
    сам решаю задачки на codewars, но чем выше уровень сложности, тем больше это задача на "подумать". Там нет архитектуры, кода тоже не много, но помозговать нужно.
    Для реальных проектов, обычно, это не подходит.

    В 90% реальных проектов - CRUD'ы, в том или ином виде. Да, немного бизнес логики тоже есть, но не такой сложной как некоторые замороченные олимпиадные задачки.
  • Пересчет товаров у атрибутов фильтра магазина?

    Nikolino
    @Nikolino Автор вопроса
    Сергей Горностаев, нашел вариант получше, вместо того, чтобы делать запрос к каждому значению свойства, можно сделать запрос к свойству, с подсчетом количества значений. К примеру, если в фильтре выбран бренд 'Panasonic', для свойства цветов запрос будет таким:
    SELECT attributes #>> '{"color"}' as color, count(*) as count 
    FROM products 
    WHERE attributes->>'brand' = 'Panasonic' 
    GROUP BY color;

    Получим:
    желтый	465
    оранжевый	480
    черный	474
    белый	436
    синий	457
    розовый	442
    голубой	458

    Те цвета, которые сюда не попали, значит по ним нули и их закрываем от возможности поставить чекбокс.

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

    В общем, JSONB рулит конечно. Раньше подобное делал через EAV, разделяя по таблицам, там те еще заморочки с фильтрацией.
  • Пересчет товаров у атрибутов фильтра магазина?

    Nikolino
    @Nikolino Автор вопроса
    спасибо, тоже думал про Sphinx или Elasticsearch. Но и Postgres по индексируемым полям ищет довольно шустро. Вопрос, скорее, в том, что перебор всех свойств фильтра с запросом в базу (или в sphinx/elastic) это не правильно, наверняка есть алгоритм перебора такой, чтоб не делать это для каждого значения свойства. А путем какой-то перколдовки свойств, высчитать остальные математически.
  • Как устроены сложные фильтры в интернет магазинах?

    Nikolino
    @Nikolino
    xmoonlight, объясни, пожалуйста, чуть подробней. Допустим есть тег color: red, там 4 товара, это мы знаем из таблицы tag_counts.

    Пользователь выбрал "по цене до 300" и нам нужно пересчитать все фильтры. Подставляем к WHERE price<300 строку "AND WHERE COLOR = red", получаем 2 товара, значит для red будет 2. Что делаем дальше?
    Берем следующее по возрастанию из таблицы tag_counts?
    Допустим это будет size: xl, и к строке "where price < 300 and color = red" подставляем "and size = xl"? Или size=xl мы подставляем не после "and color = red", а вместо него?

    То есть кол-во запросов к базе будет равно количество всех свойств в фильтрах?
  • Как накатывать миграции на проде?

    Nikolino
    @Nikolino Автор вопроса
    Alex Wells, нет же, вся проблема в том, что эти файлы миграций добавляются в таблицу Migrations на моем локальном сервере, а на проде не добавляются, просто сами файлы миграций пушатся на продакшн, но Laravel не видит их, так как в таблице migrations на проде они не добавлены. Вопрос в том как делать миграции на проде, если на самом проде делать команды типа make migration migration_name --table=something делать нельзя.