Еще о автоматизации. Я заметил, что существует такая лакуна в понимании тестового покрытия: юнит тесты считаются автоматизацией и фигурируют в этой пирамиде тестирования, но чаще всего являются ответственностью разработчиков. {:.clickableimg} Более того, часто юнит тесты живут с кодом приложения(ну это понятно), а код автоматизации лежит где-то в другом репозитории, так что он даже физически где-то в другом месте(это не плохо само по себе, просто пример). А в отчетах и метриках автофреймворка(у вас же они есть, да?) о юнит тестах и покрытии в общем-то ничего нет.
Оказывается в спанах в C# нужно еще разбираться и разбираться. Мне в повседневной работе это вообще не нужно, но интересно как это работает. Вообще, в оптимизации тестов по скорости выполнения(это одна часть моей работы) самые большие гейны в скорости прогона тестов приходят из параллелизации(тут ясно) и следования тестовой пирамиде. Если вы оптимизируете тесты по скорости выполнения как-то иначе, то скорее всего это трата времени и смотрите вы не туда. Тут стоить заметить, я говорю о довольно больших фреймворках автоматизации с количеством тестов >100(но это цифра из головы, зависит от типа тестов) и это не о юнит тестах(с ними уже больше смысла биться за скорость выполнения). А причин почему тестовая пирамида может быть сломана уйма, но вот одна. У вас есть множество автоматизированных тестовых сценариев, которые тестируют функциональность внахлест(происходит тестирование одной функциональности по нескольку раз), это очень частый случай, но предпосылки могут быть разными. Случиться это может, например, из-за непонимания домена или архитектуры приложения. Человек может не понимать, что проверяя функциональность(или часть системы) `А` он еще проверяет функциональность `Б`, которая может использоваться неявно или использоваться в каких-то эдж кейсах и тестировать явно ее не нужно, но на нее тоже написаны тесты. Или функциональности `А` сначала не было, а была только `Б` и тесты на неё. Или несколько команд использующих один фреймворк автоматизации, но работающих над разными частями системы могут создавать тесты для того, что возможно уже покрыто другой командой, и это уже проблема коммуникации и трейсабилити(блять, смотря какой фабрик, traceability, как это по-русски?), которая решается не оптимизациями в коде и может быть предотвращена сбором и оценкой соответствующих метрик.
Вообще тут очень много оговорок и нужно писать статью.
А про спаны интересно, да, я просто видео хотел запостить.
Никто меня не понимает =(( Шучу, почему-то меня никто не понимает когда я говорю, что спотифай работает хуево на всех платформах. Но я как инженер по качеству с почти 9ю годами опыта это говорю, может я деформирован. Ютуб музыка и яндекс музыка работают лучше. Ну, допустим, вас устраивает как он работает, вот как платформа относится к артистам. Вот что говорит глава спотифай "стоимость создания музыки близка к нулю"(сурс), а еще он "богаче всех когда-либо существовавших музыкантов"(сурс, сурс), а выплаты музыкантам упали с на 68% с 2011 года(информация из видео), еще очень много негативных инфоповодв, но я не хочу оформлять ссылки больше. Не платите за это говно. Закинуть 5 долларов артисту напрямую это как если бы послушать ~1500 раз песню на спотифай.
Я делаю рисовалку пиксельарта простую чтобы встроить сюда в блог(потому что это круто). Вот тест. Одну нарисовал я, а другую Галима. Не скажу чья моя. {:.clickableimg} Прикол в том, что эта штука написана на C++... Cmake одновременно и круто\магия и пипец, он автоматически ищет установленные компиляторы для тебя, понимает какой язык программирования нужно собирать, еще может забирать КОД с гита и даже его распаковывать, я подразумеваю все просто один раз что-то настраивают, а потом копипастят в новые проекты, но это я может новичок, но запомнить это нереально будто бы.
Гулял. Пока не понял как обрабатывать изображения красиво и в голову не приходит переключиться на равку пока ходишь, так что это жпег кропнутый через виндовую тулу(она ужасная). Просто оправдываюсь почему она так зажарено выглядит. {:.clickableimg}
Недавно писал, что slicing не работает на стрингах в C#, я был не прав и это не дает мне покоя. Я перепутал слайсинг и спаны. Если использовать Span, то это будет выглядеть так с стрингами и арреями: ``` c# Span subText = stringText.AsSpan(0, 5); // Span с индекса 0 to 4 Span subArray = numbersArray.AsSpan(2, 3); // Span с индекса 2 to 4 ``` Span существует чтобы не был лишних аллокаций.
Слайсингом называют вообще другое. Это выглядит как что-то такое: ```c# array[^3..] // мы берем рендж(как в питоне), это называется слайсинг array[^3] // Тут берем 1 элемент с такимж синтаксисом примерно, это, как я понял, называется индексинг ``` Еще на тему слайсинга можно много чего сказать, но вот тут уже сказано.
Я до сих пор скачиваю всю музыку которая мне нравится. В том числе с Soulseek. Это как торренты, только ты качаешь от одного человека за раз. Есть множество клиентов под разные платформы, я скачивал очередной альбом вот и наткнулся на кусок крутого интернета. Когда скачиваешь что-то от кого-то через Soluseek можно настроить автоматическое сообщение, я получил такое {:.clickableimg} Я поржал с названия и открыл, вот урл И увидел там такую красоту {:.clickableimg} Скачивал я, кстати, вот это
Это вселенная или как, но там даже эффект снега сейчас как в этом блоге! И поскольку это кусок старого интернета с чатом без регистрации пришлось проскроллить чат чтобы на скрин не попали плохие сообщения)