dd

Рубрика: Разработка

  • Страшный SQL-запрос

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

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

  • Оптимизация

    Я увеличил скорость импорта прайсов в 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
    Штука очень спорная, но от того не менее интересная
    Если был у кого-то опыт — буду рад послушать)

  • Как работает PHP по CGI

    Я зачем-то начал ходить по собесам
    Оправдываю это тем, что надо понимать где какой уровень и что надо прокачать
    Тем не менее, иногда вопросы правда ставят в тупик, хотя не должны бы
    Один из них — как работает пхп по протоколу cgi и что это вообще за cgi такой
    По сему вот статейка — http://xandeadx.ru/blog/php/866
    Очень рекомендую как прочтению как стартовая точка для изучения этой темы

  • Async php?

    Я тут недавно наткнулся на доклад по асинхронному пхп — 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 тяжёлая.Субъективно, категоризация не соответствует реальности, потому что иногда задачи лёгкого уровня были сложнее средних и тяжёлой
    Я так понимаю это показывает полный пробел в знаниях основ алгоритмов у меня 😀

    Больше сказать нечего, решаю дальше, теперь уже отчитаюсь через месяц, чтобы выборка была поточнее
    Если кто-то тоже решает задачки на литкоде или решил со мной марафонить, то кидайте ссылки на профили, интересно поглядеть😊

  • Leetcode

    Начиная с понедельника решил каждый день уделять по 1-2 часа на leetcode
    Для меня это звучит дико и смешно — никогда бы не подумал, что докачусь до такого
    Однако пытаясь развиваться многосторонне пришёл к выводу, что пожалуй оно того стоит. В конце концов, главное, что мозги шевелиться начинают, какая разница — от книг или от литкода?
    Тем более что у меня всё очень плохо с алгоритмами и всякими O(N), а тут есть возможность попрактиковаться
    Посмотрим в следующий понедельник как себя буду чувствовать 😀

  • Онлайн-сервис есть для всего

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

  • Права доступа в Linux наглядно

    Я никогда не мог запомнить по-хорошему как управлять правами для папок/файлов в линуксе, но сегодня мне попалась хорошая круговая диаграмма, доступно объясняющая что к чему
    Но цифрами не всегда удобно пользоваться, поэтому нашёл ещё одну, буквенную — её запомнить гораздо проще, равно как и пользоваться