Вот как выглядел сам этот страшнючий запрос😄
ВНИМАНИЕ — НЕ ПОВТОРЯЙТЕ ЭТО ДОМА!
Вообще, опыт безусловно охрененный, я люблю циферки и попугаев, поэтому кайфанул знатно от оптимизации, оставляя при этом код читаемым

Вот как выглядел сам этот страшнючий запрос😄
ВНИМАНИЕ — НЕ ПОВТОРЯЙТЕ ЭТО ДОМА!
Вообще, опыт безусловно охрененный, я люблю циферки и попугаев, поэтому кайфанул знатно от оптимизации, оставляя при этом код читаемым

Я увеличил скорость импорта прайсов в 3 раза!
Звучит очень круто, да? А теперь reality check: вместо 480 секунд стало 320 секунд😩
Да, результат всё ещё говно, хотя я за выходные всю голову сломал что ещё можно сделать
Чтобы эти цифры выглядели не совсем плохими, поясню, что в файле импорта 37 тысяч записей, которые надо с кучей правил сложить в базу, при этом при появлении дублей по определённым полям, надо распихать значения в другие таблицы, чтобы их не потерять (так требует бизнес)
Итак, что я пробовал и что выгорело:
1. Группировка мелких запросов на апдейт в базу и отправка одним куском
Это снизило время импорта на 1/6 просто потому что теперь вместо 15 запросов теперь уходил 1
2. При нахождении полных дублей не делать запросов вообще
При первичном кодировании этого функционала такой вариант развитий я не учёл; показания скорости после этого разнятся — где-то импорт ускорился в 3 раза, где упал до 0.9
Что я пробовал и что сделало всё только хуже:
1. Вынос функционала по сохранению дублящихся значений в отдельную команду и вызов через MessageBus
Говно идея, скорость импорта упала в два раза на всех позициях просто хотя бы ввиду постоянного создания объекта
2. Страшные sql-запросы, которые upsert'ят запись и тут же обновляют все другие записи, проставляя служебные поля новым айднишником
Это вообще жуть — прайс, грузившийся за минуту стал грузиться 3 и более; причина простая — common table expression + update оставляют в базу в полнейшем шоке и она начинает тупить
Подошёл к концу мой период хождения по собесам
Никаких выводов пока не сделал, надо думать что делать дальше
Могу сказать только то, что рынок существенно вырос
Но как оказалось и я тоже вырос, хотя такое ощущение, что полгода хернёй занимался)
Потихоньку буду обмозговывать и выкладывать сюда самые интересные знания, вытянутые из собесов
На сегодня у нас мутационное тестирование — https://www.techtarget.com/searchitoperations/definition/mutation-testing
Штука очень спорная, но от того не менее интересная
Если был у кого-то опыт — буду рад послушать)
Я зачем-то начал ходить по собесам
Оправдываю это тем, что надо понимать где какой уровень и что надо прокачать
Тем не менее, иногда вопросы правда ставят в тупик, хотя не должны бы
Один из них — как работает пхп по протоколу cgi и что это вообще за cgi такой
По сему вот статейка — http://xandeadx.ru/blog/php/866
Очень рекомендую как прочтению как стартовая точка для изучения этой темы
Я тут недавно наткнулся на доклад по асинхронному пхп — https://youtu.be/w75P9RrVgKg
Очень интересно послушать, а самое главное — я наконец-то понял как это может работать, для чего можно применить генераторы и как организовать кооперативную многозадачность в пхп
Понятно, что язык для других целей совершенно и, возможно, стоит подумать, то ли ты делаешь, если решил к таким методам прибегнуть, но знания крайне полезные
@artemmarenkoff жду фотку твоего лица после просмотра 😀
Я такое слышал первый раз и полез гуглить. Нашёл на википедии аж целую статью 😀
Такой термин не один и у каждого интересное название — https://ru.wikipedia.org/wiki/%D0%93%D0%B5%D0%B9%D0%B7%D0%B5%D0%BD%D0%B1%D0%B0%D0%B3
Так что если хотите блеснуть умом, когда прод горит синим пламенем, то бегом читать!
Сразу честно скажу, пару дней литкода я пропустил, потому как был на корпоративе в Нижнем Новгороде. Ну и чёрт с ним, оно того точно стоило.
Умнее я себя чувствовать не стал, скорее наоборот, но это хороший знак, значит, я чему-то учусь
Задачи там далеки от реальных, в прикладной сфере скорее всего не понадобятся, но могут понадобится при поиске работы — у некоторых задач стояла пометка о том, что задачу видали на собеседованиях
Всего за неделю решил 19 задач, из которых 15 лёгких, 3 средних и 1 тяжёлая.Субъективно, категоризация не соответствует реальности, потому что иногда задачи лёгкого уровня были сложнее средних и тяжёлой
Я так понимаю это показывает полный пробел в знаниях основ алгоритмов у меня 😀
Больше сказать нечего, решаю дальше, теперь уже отчитаюсь через месяц, чтобы выборка была поточнее
Если кто-то тоже решает задачки на литкоде или решил со мной марафонить, то кидайте ссылки на профили, интересно поглядеть😊
Начиная с понедельника решил каждый день уделять по 1-2 часа на leetcode
Для меня это звучит дико и смешно — никогда бы не подумал, что докачусь до такого
Однако пытаясь развиваться многосторонне пришёл к выводу, что пожалуй оно того стоит. В конце концов, главное, что мозги шевелиться начинают, какая разница — от книг или от литкода?
Тем более что у меня всё очень плохо с алгоритмами и всякими O(N), а тут есть возможность попрактиковаться
Посмотрим в следующий понедельник как себя буду чувствовать 😀

Сегодня понадобилось сэмулировать всякие разные хттп-коды, чтобы протестировать скрипт
Лезть в конфиг нгинкса и там ручками возвращать коды было лень, поэтому начал думать
Спросил коллег мол знаете ли какие-то сайты, на которых в ответе постоянно ошибка категории 5хх. Сказали, что это только наш прод возможно 😀
За всё время в интернет повидал много всяких разных сервисов, как полезных, так и не очень, и подумал, что наверняка есть сайт, который в теле запроса ждёт код и этим же кодом тебе отвечает
И действительно такой есть — https://httpstat.us
Так что если у вас есть идея по созданию веб-сервиса, но вы думаете, что им никто не будет пользоваться, то смело отметайте эти сомнения и пилите. Когда-нибудь кому-нибудь точно понадобится 😀
Я никогда не мог запомнить по-хорошему как управлять правами для папок/файлов в линуксе, но сегодня мне попалась хорошая круговая диаграмма, доступно объясняющая что к чему
Но цифрами не всегда удобно пользоваться, поэтому нашёл ещё одну, буквенную — её запомнить гораздо проще, равно как и пользоваться

