#фишка дня
Сидишь такой и не вдупляешь, что происходит в пулл или мёрдж-реквесте?
GitHub и GitLab соответственно
Или, возможно, пытаешься вспомнить, а как ты вообще задачу решил? Надо же описание внести какое-то, а в голове туман...
Современный ответ: так проведи ревью от Copilot!
Но а) не везде он включён б) не везде разрешён к применению в PR/MR в) в GitLab вообще ничего нет.
Ничего страшного, на это есть решение!
Кто-то из олдов наверняка помнит, что вот этот раздельный вид в веб-интерфейсе с удалёнными и добавленными строками — штука сравнительно новая. Ещё во времена царя-гороха царило понятие diff- или patch-файлов. Вот ссылка на вики: https://en.wikipedia.org/wiki/Patch_(Unix)
Формат простой до безумия:
Я думаю, людям, прошивающим всякие там андроиды и ардуинки процесс хорошо известен: скачиваешь исходники библиотеки или конфига, скачиваешь patch-файл от анона с форума и накладываешь его командой, буквально,
Ладно, к чему этот экскурс вообще?
А к тому, что изменения из PR/MR легко можно получить в таком же виде! Все добавления и изменения в одном файле.
Просто берите ссылку на ваш реквест и добавьте к нему
А что делать потом? Cкормить это ChatGPT или Gemini или что там в вашей компании разрешено конечно же!
LLM-ки отлично справляются с разбором таких вещей! И на понятном языке и объяснят, что происходит, и найдут косяки, и напишут описание.
Вкусно? Не то слово! Пользуемся.
#git #patch #ai
Сидишь такой и не вдупляешь, что происходит в пулл или мёрдж-реквесте?
GitHub и GitLab соответственно
Или, возможно, пытаешься вспомнить, а как ты вообще задачу решил? Надо же описание внести какое-то, а в голове туман...
Современный ответ: так проведи ревью от Copilot!
Но а) не везде он включён б) не везде разрешён к применению в PR/MR в) в GitLab вообще ничего нет.
Ничего страшного, на это есть решение!
Кто-то из олдов наверняка помнит, что вот этот раздельный вид в веб-интерфейсе с удалёнными и добавленными строками — штука сравнительно новая. Ещё во времена царя-гороха царило понятие diff- или patch-файлов. Вот ссылка на вики: https://en.wikipedia.org/wiki/Patch_(Unix)
Формат простой до безумия:
++++ добавлено
---- удалено
Я думаю, людям, прошивающим всякие там андроиды и ардуинки процесс хорошо известен: скачиваешь исходники библиотеки или конфига, скачиваешь patch-файл от анона с форума и накладываешь его командой, буквально,
patch
. Я так делал с Rockbox для iPod недавно, например.Ладно, к чему этот экскурс вообще?
А к тому, что изменения из PR/MR легко можно получить в таком же виде! Все добавления и изменения в одном файле.
Просто берите ссылку на ваш реквест и добавьте к нему
.patch
. Вот так: https://patch-diff.githubusercontent.com/raw/edvardchen/eslint-plugin-i18next/pull/145.patchА что делать потом? Cкормить это ChatGPT или Gemini или что там в вашей компании разрешено конечно же!
LLM-ки отлично справляются с разбором таких вещей! И на понятном языке и объяснят, что происходит, и найдут косяки, и напишут описание.
Вкусно? Не то слово! Пользуемся.
#git #patch #ai
👍25❤3🤩2
#статья дня
Все, наверное, знают о том, что существует поведенческий таргетинг — который определяет, какая реклама вам больше интересна.
И под капотом такой системы — полноценная big data-инфраструктура: события пишутся в логи, проходят обработку и попадают в key-value хранилище, откуда их читает рантайм показа рекламы.
Причем система должна работать так надежно, чтобы каждое событие обработалось ровно один раз (exactly-once), и так быстро, чтобы уложиться в миллисекунды на весь цикл.
Как этого добиться — рассказал в статье Руслан Савченко, разработчик динамических таблиц YTsaurus: https://habr.com/ru/companies/yandex/articles/939078/
Из интересного:
— События шардируются по хешу идентификатора. Это гарантирует, что все события одного пользователя обрабатываются одним воркером в рамках локальной транзакции.
— Дошли до низкоуровневой оптимизации аллокатора памяти и работы с ядром Linux, чтобы убрать провалы на высоких перцентилях.
— Вместо перезаписи всего protobuf-профиля система пишет бинарные дельты (через xdelta). Агрегатные колонки накладывают все накопившиеся дельты на оригинальный protobuf — получаем актуальную версию объекта
Все решения, на самом деле, можно применять не только к профилям. Прикольно, что в статье куча графиков — помогают разобраться. Советую почитать на досуге
#highload #db #database
Все, наверное, знают о том, что существует поведенческий таргетинг — который определяет, какая реклама вам больше интересна.
И под капотом такой системы — полноценная big data-инфраструктура: события пишутся в логи, проходят обработку и попадают в key-value хранилище, откуда их читает рантайм показа рекламы.
Причем система должна работать так надежно, чтобы каждое событие обработалось ровно один раз (exactly-once), и так быстро, чтобы уложиться в миллисекунды на весь цикл.
Как этого добиться — рассказал в статье Руслан Савченко, разработчик динамических таблиц YTsaurus: https://habr.com/ru/companies/yandex/articles/939078/
Из интересного:
— События шардируются по хешу идентификатора. Это гарантирует, что все события одного пользователя обрабатываются одним воркером в рамках локальной транзакции.
— Дошли до низкоуровневой оптимизации аллокатора памяти и работы с ядром Linux, чтобы убрать провалы на высоких перцентилях.
— Вместо перезаписи всего protobuf-профиля система пишет бинарные дельты (через xdelta). Агрегатные колонки накладывают все накопившиеся дельты на оригинальный protobuf — получаем актуальную версию объекта
Все решения, на самом деле, можно применять не только к профилям. Прикольно, что в статье куча графиков — помогают разобраться. Советую почитать на досуге
#highload #db #database
👍5❤4🫡3
This media is not supported in your browser
VIEW IN TELEGRAM
#статья дня
А нет такого, что новые технологии фронтенда нет смысла изучать, пока их не разжуют Шадид, Комо или Вес Бос? :)
Не, ну серьёзно. Вот читаешь ты блоги разработчиков Хрома или, простите, Вебкита. Что получаешь?
Получаешь нечто слишком рано, слишком мало, слишком сухо и сложно. Ну, буквально, посмотрите на статью про якорное позиционирование в блоге WebKit aka Safari: https://webkit.org/blog/17240/a-gentle-introduction-to-anchor-positioning/
A gentle introduction... куда уж более gentle: ни одного интерактивного примера, код минимален.
И тут давайте Шадида возьмём, буквально утром сегодня выпустил: https://ishadeed.com/article/anchor-positioning/
Уже начиная с шапки становится понятно о чём речь!
Каждый пример как всегда снабжён интерактивом, а если браузер не поддерживает пока якоря — всегда есть переключатель на видео.
Как всегда, глубокое почтение Шадиду за работу и рекомендация к прочтению! Якоря — уже не за горами, как минимум, можно заполифиллить.
#css #anchor
А нет такого, что новые технологии фронтенда нет смысла изучать, пока их не разжуют Шадид, Комо или Вес Бос? :)
Не, ну серьёзно. Вот читаешь ты блоги разработчиков Хрома или, простите, Вебкита. Что получаешь?
Получаешь нечто слишком рано, слишком мало, слишком сухо и сложно. Ну, буквально, посмотрите на статью про якорное позиционирование в блоге WebKit aka Safari: https://webkit.org/blog/17240/a-gentle-introduction-to-anchor-positioning/
A gentle introduction... куда уж более gentle: ни одного интерактивного примера, код минимален.
И тут давайте Шадида возьмём, буквально утром сегодня выпустил: https://ishadeed.com/article/anchor-positioning/
Уже начиная с шапки становится понятно о чём речь!
Каждый пример как всегда снабжён интерактивом, а если браузер не поддерживает пока якоря — всегда есть переключатель на видео.
Как всегда, глубокое почтение Шадиду за работу и рекомендация к прочтению! Якоря — уже не за горами, как минимум, можно заполифиллить.
#css #anchor
👍13❤4🤩2👎1
Будни разработчика
#фишка дня Сидишь такой и не вдупляешь, что происходит в пулл или мёрдж-реквесте? GitHub и GitLab соответственно Или, возможно, пытаешься вспомнить, а как ты вообще задачу решил? Надо же описание внести какое-то, а в голове туман... Современный ответ:…
С полей сообщают, что добавление
А чем меньше символов — тем дешевле и быстрее обработка.
Вот бы всё можно было представить в таком виде...
P. S. На BitBucket тоже работает!
.diff
к адресу пулл-реквеста делает то же самое, но в формате .diff
, который чуть менее многословный, чем .patch
!А чем меньше символов — тем дешевле и быстрее обработка.
Вот бы всё можно было представить в таком виде...
P. S. На BitBucket тоже работает!
Wikipedia
diff
В вычислительной технике diff — утилита сравнения файлов, выводящая разницу между содержанием двух файлов. Эта программа выводит построчно изменения, сделанные в файле (для текстовых файлов). Современные реализации поддерживают также двоичные файлы. Вывод…
❤7
12 сентября в Москве пройдёт big tech night. Это как ночь музеев, только в мире IT. Формат придумали в Яндексе, а Сбер, X5, Т-Банк и Lamoda присоединились к проекту.
На одну ночь офисы компаний превратятся в фестивальные площадки, где будут доклады про технологии, иммерсивные экскурсии, квесты и IT-стендапы. Пять офисов — пять площадок с разными программами.
В программе три трека — хард-трек про всё, что связано с технологиями; софт-трек про управление командой и развитие гибких навыков. И фест-трек, где можно открыть что-то новое — сходить на алгоритмическую вечеринку, сразиться на киберспортивном турнире, поучаствовать в экскурсиях и не только.
Доклады, которые зашли мне больше всего:
«GPT-функции в Алисе: backstage»
Павел Капля, руководитель продуктовой разработки Алисы, расскажет, как в AI-ассистента внедряют агентную модель на базе function calling. Будет много инженерных нюансов про адаптацию технологии в реальных условиях и обеспечение предсказуемости поведения и надежности системы.
«Теория систем и инженерная практика»
Филипп Дельгядо, архитектор департамента из lekton.io, объяснит базовые понятия теории систем и покажет, как они помогают при проектировании современных решений. Еще будет разбор некоторых паттернов проектирования через призму системного подхода.
Я буду подключаться к онлайн-студии. Для неё планируется особая программа: интервью с Николаем Савушкиным о рекомендательных системах, разговор с Маратом Мавлютовым про автономных роботов-доставщиков, дискуссии и интерактивные форматы в духе Late Night Show.
👉 Регистрация уже открыта.
На одну ночь офисы компаний превратятся в фестивальные площадки, где будут доклады про технологии, иммерсивные экскурсии, квесты и IT-стендапы. Пять офисов — пять площадок с разными программами.
В программе три трека — хард-трек про всё, что связано с технологиями; софт-трек про управление командой и развитие гибких навыков. И фест-трек, где можно открыть что-то новое — сходить на алгоритмическую вечеринку, сразиться на киберспортивном турнире, поучаствовать в экскурсиях и не только.
Доклады, которые зашли мне больше всего:
«GPT-функции в Алисе: backstage»
Павел Капля, руководитель продуктовой разработки Алисы, расскажет, как в AI-ассистента внедряют агентную модель на базе function calling. Будет много инженерных нюансов про адаптацию технологии в реальных условиях и обеспечение предсказуемости поведения и надежности системы.
«Теория систем и инженерная практика»
Филипп Дельгядо, архитектор департамента из lekton.io, объяснит базовые понятия теории систем и покажет, как они помогают при проектировании современных решений. Еще будет разбор некоторых паттернов проектирования через призму системного подхода.
Я буду подключаться к онлайн-студии. Для неё планируется особая программа: интервью с Николаем Савушкиным о рекомендательных системах, разговор с Маратом Мавлютовым про автономных роботов-доставщиков, дискуссии и интерактивные форматы в духе Late Night Show.
👉 Регистрация уже открыта.
❤5🤩3👍2🤡2
Media is too big
VIEW IN TELEGRAM
#заметка дня
Эпопея с пультом на Flutter продолжается! И в этот раз мне захотелось реализовать трансляцию фото (ну и видео) на телевизор.
Да, в 2025 году есть Chromecast, MirrorLink и AirPlay. Но хоть MirrorLink моим телевизором 2018 года выпуска и поддерживается, основной мой телефон — iPhone, а в AirPlay телевизор не умеет.
Да и задачи у этих троих чуть-чуть иные, нежели просто галерею фотографий посмотреть. Трансляция экрана это совсем не то же самое, что показать картинку или видео.
Потому на помощь нам приходит технология двадцатилетней давности, которая до сих пор поддерживается везде — DLNA!
В 2003 году тогдашние гиганты индустрии объединились и создали Digital Living Network Alliance, описав соответствующие стандарты и протоколы. В духе индустрии, использовались основанные на XML протоколы обмена данными и уже расмотренный когда-то мной SSDP.
Как это всё работает?
Когда мы сканируем сеть по SSDP, устройства сообщают в ответ поддерживаемые протоколы, схемы работы порты. И одна из таких схем работы —
Ну и мы отправляем телевизору запрос:
В этот же момент роли меняются. Ваш компьютер или телефон становятся сервером, а телевизор — клиентом. Телевизор (или другой плеер) скачивает переданный в CurrentURI файл. Естественно, надо этот самый сервер у себя на телефоне или компьютере запустить!
А уже второй командой посылаем Play:
И всё, всё работает. Главное, чтобы телевизор понимал, что ему передали. Заодно ещё метадату можно накинуть.
Да, в 2017 году альянс распустили, но DLNA работает буквально везде, где нужно. Просто называть стали по разному: Samsung AllShare, LG SmartShare, Sony Video/Music/Photo. А так, телевизоры, NAS-ы, куча приложений для всех платформ... Это очень простой, хоть и избыточный, протокол.
Да и реализовать это было весьма просто и интересно.
Кстати, можете сами попробовать побаловаться, есть минимальная имплементация DLNA с названием nano-dlna: https://github.com/gabrielmagno/nano-dlna
А большего и не надо.
#flutter #dart #dlna
Эпопея с пультом на Flutter продолжается! И в этот раз мне захотелось реализовать трансляцию фото (ну и видео) на телевизор.
Да, в 2025 году есть Chromecast, MirrorLink и AirPlay. Но хоть MirrorLink моим телевизором 2018 года выпуска и поддерживается, основной мой телефон — iPhone, а в AirPlay телевизор не умеет.
Да и задачи у этих троих чуть-чуть иные, нежели просто галерею фотографий посмотреть. Трансляция экрана это совсем не то же самое, что показать картинку или видео.
Потому на помощь нам приходит технология двадцатилетней давности, которая до сих пор поддерживается везде — DLNA!
В 2003 году тогдашние гиганты индустрии объединились и создали Digital Living Network Alliance, описав соответствующие стандарты и протоколы. В духе индустрии, использовались основанные на XML протоколы обмена данными и уже расмотренный когда-то мной SSDP.
Как это всё работает?
Когда мы сканируем сеть по SSDP, устройства сообщают в ответ поддерживаемые протоколы, схемы работы порты. И одна из таких схем работы —
/MediaRenderer/AVTransport/Control
. Ну и мы отправляем телевизору запрос:
POST /MediaRenderer/AVTransport/Control HTTP/1.1
HOST: 192.168.1.42:1400
CONTENT-TYPE: text/xml; charset="utf-8"
SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#SetAVTransportURI"
<?xml version="1.0"?>
<s:Envelope xmlns:s="https://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<u:SetAVTransportURI xmlns:u="urn:schemas-upnp-org:service:AVTransport:1">
<InstanceID>0</InstanceID>
<CurrentURI>https://192.168.1.10:8000/picture.jpg</CurrentURI>
<CurrentURIMetaData></CurrentURIMetaData>
</u:SetAVTransportURI>
</s:Body>
</s:Envelope>
В этот же момент роли меняются. Ваш компьютер или телефон становятся сервером, а телевизор — клиентом. Телевизор (или другой плеер) скачивает переданный в CurrentURI файл. Естественно, надо этот самый сервер у себя на телефоне или компьютере запустить!
А уже второй командой посылаем Play:
POST /MediaRenderer/AVTransport/Control HTTP/1.1
HOST: 192.168.1.42:1400
CONTENT-TYPE: text/xml; charset="utf-8"
SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#Play"
<?xml version="1.0"?>
<s:Envelope xmlns:s="https://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<u:Play xmlns:u="urn:schemas-upnp-org:service:AVTransport:1">
<InstanceID>0</InstanceID>
<Speed>1</Speed>
</u:Play>
</s:Body>
</s:Envelope>
И всё, всё работает. Главное, чтобы телевизор понимал, что ему передали. Заодно ещё метадату можно накинуть.
Да, в 2017 году альянс распустили, но DLNA работает буквально везде, где нужно. Просто называть стали по разному: Samsung AllShare, LG SmartShare, Sony Video/Music/Photo. А так, телевизоры, NAS-ы, куча приложений для всех платформ... Это очень простой, хоть и избыточный, протокол.
Да и реализовать это было весьма просто и интересно.
Кстати, можете сами попробовать побаловаться, есть минимальная имплементация DLNA с названием nano-dlna: https://github.com/gabrielmagno/nano-dlna
А большего и не надо.
#flutter #dart #dlna
1❤19👍8🫡1
This media is not supported in your browser
VIEW IN TELEGRAM
#такое дня
Когда вам в очередной раз станет стыдно, что вы сделали какой-то костыль, вспомните, что бегущую строку в CSS ещё совсем недавно нельзя было сделать без дублирования элементов: https://t.iss.one/htmlshit/3721
А если и это не помогает, вспомните, что где-то там есть компания Apple, которая не осилила сделать «бесконечный» (или хотя бы автовозвратный) список часов и минут в будильнике, поэтому продублировала 0-23 на часах (0-12 в AM/PM) и 0-59 на минутах много-много раз. Очень. Много. Раз.
Кого-то, впрочем, это только больше расстроит. Ведь и платят им больше.
#apple #ios #бред
Когда вам в очередной раз станет стыдно, что вы сделали какой-то костыль, вспомните, что бегущую строку в CSS ещё совсем недавно нельзя было сделать без дублирования элементов: https://t.iss.one/htmlshit/3721
А если и это не помогает, вспомните, что где-то там есть компания Apple, которая не осилила сделать «бесконечный» (или хотя бы автовозвратный) список часов и минут в будильнике, поэтому продублировала 0-23 на часах (0-12 в AM/PM) и 0-59 на минутах много-много раз. Очень. Много. Раз.
Кого-то, впрочем, это только больше расстроит. Ведь и платят им больше.
#apple #ios #бред
🤩13❤6🫡4
#заметка дня
На связи glebcha, который иногда с большим удовольствием предлагает идеи новых статей автору канала (старому другу) и, с недавнего времени, пишет сам в канал.
Недавно появилась интересная задача - отображать список вкладок редактора вне области скролла как в любом редакторе кода, например в IDEA.
Сразу же составил список технологий себе в помощь и в их списке оказалось событие scrollend для более эффективного формирования списка вкладок вне области прокрутки.
И вроде бы все отлично, но как обычно "есть один нюанс"....и это Safari. Ссылка на активный баг.
Но не стоит расстраиваться, решение нашлось в виде полифилла (не идеального, но отличного).
Проверяйте доступности браузерного api перед использованием и помните - "нет нереализуемых задач, всё лишь вопрос мотивации и времени".
P.S.
Напишите если вам интересны более хардкорные заметки по разработке редактора SQL-запросов в нашей команде CedrusData.
#safari #scroll #scrollend
На связи glebcha, который иногда с большим удовольствием предлагает идеи новых статей автору канала (старому другу) и, с недавнего времени, пишет сам в канал.
Недавно появилась интересная задача - отображать список вкладок редактора вне области скролла как в любом редакторе кода, например в IDEA.
Сразу же составил список технологий себе в помощь и в их списке оказалось событие scrollend для более эффективного формирования списка вкладок вне области прокрутки.
И вроде бы все отлично, но как обычно "есть один нюанс"....и это Safari. Ссылка на активный баг.
Но не стоит расстраиваться, решение нашлось в виде полифилла (не идеального, но отличного).
Проверяйте доступности браузерного api перед использованием и помните - "нет нереализуемых задач, всё лишь вопрос мотивации и времени".
P.S.
Напишите если вам интересны более хардкорные заметки по разработке редактора SQL-запросов в нашей команде CedrusData.
#safari #scroll #scrollend
👍11
Синдром самозванца, разрастающийся state и эволюция фронтенда в продукте
20 сентября Яндекс Вертикали собирают фронтендеров на ежегодном митапе Vertis JS, чтобы обсудить главные страхи и современные инструменты разработчиков.
Помимо докладов, в программе активности-ритуалы:
▫️Beer manifestation — для тех, кто готов поделиться своей историей
▫️Whispercoding, где каждый участник добавляет свою строчку к письму, пока зрители нашёптывают новые условия
Всё это — вместе с ребятами из Вертикальных сервисов: Авто.ру, Яндекс Путешествий и Яндекс Аренды.
📍 Санкт-Петербурге, БЦ Феррум
📌 Полная программа и регистрация
20 сентября Яндекс Вертикали собирают фронтендеров на ежегодном митапе Vertis JS, чтобы обсудить главные страхи и современные инструменты разработчиков.
Помимо докладов, в программе активности-ритуалы:
▫️Beer manifestation — для тех, кто готов поделиться своей историей
▫️Whispercoding, где каждый участник добавляет свою строчку к письму, пока зрители нашёптывают новые условия
Всё это — вместе с ребятами из Вертикальных сервисов: Авто.ру, Яндекс Путешествий и Яндекс Аренды.
📌 Полная программа и регистрация
Please open Telegram to view this post
VIEW IN TELEGRAM
👎6❤1🤡1
Media is too big
VIEW IN TELEGRAM
#фишка дня
Вроде как, я постоянно пользуюсь девтулзами хрома. Дебаггер, сеть, редактирование кук и стораджей, просмотр данных производительности... а о такой простой и эффективной штуке не знал.
Итак, выделяете какой-то элемент на вкладке Elements, потом идёте в консоль — и этот элемент становится доступен под алиасом
Более того, в
Есть ещё
А есть $$ — это querySelectorAll...
В общем, вот документация: https://developer.chrome.com/docs/devtools/console/utilities
Из очень удобных штук — шортхенд
Да, документации и фишкам сто лет в обед, но я как-то туда не особо заглядывал. А стоило бы!
И да, для чистоты эксперимента: в Firefox тоже есть подобное, но сильно поменьше: https://firefox-source-docs.mozilla.org/devtools-user/web_console/helpers/index.html
#chrome #devtools
Вроде как, я постоянно пользуюсь девтулзами хрома. Дебаггер, сеть, редактирование кук и стораджей, просмотр данных производительности... а о такой простой и эффективной штуке не знал.
Итак, выделяете какой-то элемент на вкладке Elements, потом идёте в консоль — и этот элемент становится доступен под алиасом
$0
!Более того, в
$0-$4
по порядку хранится история этих выделений! А в $_
— последнее вычисленное в консоли выражение.Есть ещё
$(selector)
— это шортхенд для querySelector, косящий под jQuery.А есть $$ — это querySelectorAll...
В общем, вот документация: https://developer.chrome.com/docs/devtools/console/utilities
Из очень удобных штук — шортхенд
keys()
для получения ключей объекта. И monitorEvents()
— чтобы узнать обо всех слушателях переданного события без ковыряния в UI.Да, документации и фишкам сто лет в обед, но я как-то туда не особо заглядывал. А стоило бы!
И да, для чистоты эксперимента: в Firefox тоже есть подобное, но сильно поменьше: https://firefox-source-docs.mozilla.org/devtools-user/web_console/helpers/index.html
$0
там есть, а $1
уже нет. keys()
есть, а monitor()
— нет. В общем, сойдёт. #chrome #devtools
1👍26🤩2❤1
Media is too big
VIEW IN TELEGRAM
#инструмент дня
Чем вы тестируете проекты и продукты? Наверняка, большинство из вас пишут или собираются писать веб-приложения и E2E-тестирование построено на Playwright.
Если вы в компании постарее, там может быть Cypress, Selenium, WebDriverIO... Да их десятки.
Если вы как и я в Финляндии, возможно, ещё и Robot Framework.
Я, честно скажу, умею работать только с Playwright и немного с Robot Framework (ну вот были у нас воршкопы, что делать). Что как бы очевидно для веб-разработчика, JS он и в Африке JS.
Но понадобилось мне тут прикинуть, а что делать, когда вы пишете проект на React Native или Flutter под 2-3 платформы, включая веб, или вообще — пишете нативно под мобилы? Чем тестировать-то?
Даже мой пульт уже чуток больше, чем пара кнопок.
И тут я открыл для себя Maestro. Сравнительно новый (с 2022) года тулкит. Поддерживает все основные платформы: Android, iOS, Web Views и браузеры, React Native, Flutter.
Как видно на видео, все действия описываются в YAML! Очень лаконично и понятно, ты не тонешь в бесконечных await, не зарываешься в fixtures. Тестовая среда понимает, что всё, что происходит на экране, подвержено флейку, что способы взаимодействия пользователя с приложением различаются от устройства к устройству, что у платформ есть свои нюансы работы.
И всё это в опенсорс и прекрасно запускается локально!
А в дополнение к этому они ещё и свою IDE для тестировщиков пишут. Инфраструктура разрастается и это прекрасно.
Кажется, для кроссплатформенного E2E тестирования на данный момент ничего более интересного нет.
#testing #maestro #ios #android
Чем вы тестируете проекты и продукты? Наверняка, большинство из вас пишут или собираются писать веб-приложения и E2E-тестирование построено на Playwright.
Если вы в компании постарее, там может быть Cypress, Selenium, WebDriverIO... Да их десятки.
Если вы как и я в Финляндии, возможно, ещё и Robot Framework.
Я, честно скажу, умею работать только с Playwright и немного с Robot Framework (ну вот были у нас воршкопы, что делать). Что как бы очевидно для веб-разработчика, JS он и в Африке JS.
Но понадобилось мне тут прикинуть, а что делать, когда вы пишете проект на React Native или Flutter под 2-3 платформы, включая веб, или вообще — пишете нативно под мобилы? Чем тестировать-то?
Даже мой пульт уже чуток больше, чем пара кнопок.
И тут я открыл для себя Maestro. Сравнительно новый (с 2022) года тулкит. Поддерживает все основные платформы: Android, iOS, Web Views и браузеры, React Native, Flutter.
Как видно на видео, все действия описываются в YAML! Очень лаконично и понятно, ты не тонешь в бесконечных await, не зарываешься в fixtures. Тестовая среда понимает, что всё, что происходит на экране, подвержено флейку, что способы взаимодействия пользователя с приложением различаются от устройства к устройству, что у платформ есть свои нюансы работы.
И всё это в опенсорс и прекрасно запускается локально!
А в дополнение к этому они ещё и свою IDE для тестировщиков пишут. Инфраструктура разрастается и это прекрасно.
Кажется, для кроссплатформенного E2E тестирования на данный момент ничего более интересного нет.
#testing #maestro #ios #android
❤20👍5👎3🤩2
#заметка дня
Альфа-Банк проведёт 13 и 14 сентября свой первый турнир по спортивному хакингу.
Призовой фонд — 3,1 млн рублей. Участвовать можно соло или с командой до 4 человек. Студенты, продвинутые айтишники, CTF-профи — каждому свой трек.
Знаете, что меня больше всего цепляет в CTF? Это когда сидишь над таском часами, а потом — щелчок! — и всё встаёт на места. Как тот самый эмодзи другого цвета на картинке, который наконец-то нашёлся.
🤓 🤓 🤓 🤓 🤓 🤓 🤓 🤓
🤓 🤓 🤓 🤓 🤓 🤓 🤓 🤓
🤓 🤓 🤓 🤓 🤓 🤓 🤓 🤓
🤓 🤓 🤓 🤓 🤓 🤓 🤓 🤓
🤓 🤓 🤓 🤓 🤓 🤓 🤓 🤓
🤓 🤓 🤓 🤓 🤓 🤓 🤓 🤓
🤓 🤓 🤓 🤓 🤓 🤓 🤓 🤓
Зарегистрироваться можно здесь.
#ctf #cybersecurity
Альфа-Банк проведёт 13 и 14 сентября свой первый турнир по спортивному хакингу.
Призовой фонд — 3,1 млн рублей. Участвовать можно соло или с командой до 4 человек. Студенты, продвинутые айтишники, CTF-профи — каждому свой трек.
Знаете, что меня больше всего цепляет в CTF? Это когда сидишь над таском часами, а потом — щелчок! — и всё встаёт на места. Как тот самый эмодзи другого цвета на картинке, который наконец-то нашёлся.
Зарегистрироваться можно здесь.
#ctf #cybersecurity
Please open Telegram to view this post
VIEW IN TELEGRAM
❤22👍14🫡5👎1🤡1
This media is not supported in your browser
VIEW IN TELEGRAM
#codepen дня
Кому в детстве нравилось крутить в руках всякие цепочки и кисточки для велосипедов?
Сегодня ваш шанс вспомнить то самое чувство!
Очередной прекрасный пример анимации по скроллу от Stijn Van Minnebruggen (я хз как произнести, это что-то из Евротура)
Тут: https://codepen.io/donotfold/pen/ZYYYJRV
Работает в Chrome и Safari TP.
Кто переведёт на GSAP? Он, кстати, недавно официально бесплатным стал, даже для коммерческого использования.
#css #scroll #animation #бородач
Кому в детстве нравилось крутить в руках всякие цепочки и кисточки для велосипедов?
Сегодня ваш шанс вспомнить то самое чувство!
Очередной прекрасный пример анимации по скроллу от Stijn Van Minnebruggen (я хз как произнести, это что-то из Евротура)
Тут: https://codepen.io/donotfold/pen/ZYYYJRV
Работает в Chrome и Safari TP.
Кто переведёт на GSAP? Он, кстати, недавно официально бесплатным стал, даже для коммерческого использования.
#css #scroll #animation #бородач
❤5🤩2
Выгорание, кризис, конец карьеры – оно вам надо?
Из рубрики «невыдуманные истории»: работал 24/7, терпел негатив дома, а потом остался без всего.
По статистике, 90% IT-специалистов сталкиваются с выгоранием. Живут, сжав зубы, пока не становится тошно вообще от всего.
📍 Чтобы не доводить себя до такого состояния или выбраться из него, если уже накрыло, подписывайтесь на канал Психолог взрослого человека.
Рабочие методы по выходу из кризисов, выгорания и вытекающих из этого проблем для тех, кто забывает про себя.
— Для опытных сотрудников, которые взвалили на себя непосильный груз задач
— Для сильных руководителей, которые забыли, что, вообще-то, тоже живые люди
Подписывайтесь на @vadimpetrovpsi и начните с закрепа.
Там вас ждет бесплатный мини-курс «Саморегуляция». Он поможет начать работать с апатией и сделать первый шаг по возвращению к жизни.
Из рубрики «невыдуманные истории»: работал 24/7, терпел негатив дома, а потом остался без всего.
По статистике, 90% IT-специалистов сталкиваются с выгоранием. Живут, сжав зубы, пока не становится тошно вообще от всего.
📍 Чтобы не доводить себя до такого состояния или выбраться из него, если уже накрыло, подписывайтесь на канал Психолог взрослого человека.
Рабочие методы по выходу из кризисов, выгорания и вытекающих из этого проблем для тех, кто забывает про себя.
— Для опытных сотрудников, которые взвалили на себя непосильный груз задач
— Для сильных руководителей, которые забыли, что, вообще-то, тоже живые люди
Подписывайтесь на @vadimpetrovpsi и начните с закрепа.
Там вас ждет бесплатный мини-курс «Саморегуляция». Он поможет начать работать с апатией и сделать первый шаг по возвращению к жизни.
🤡5❤3👍1🤩1
#игра дня
Ну что, JavaScript никто из вас не знает, мы это выяснили не так давно. А что насчёт валидации адресов электропочты?
Вашему вниманию очередной квиз: https://e-mail.wtf/
Вооружайтесь RFC 3522 и вперёд!
Inb4: проверка на собачку и валидация письмом — единственный рабочий способ.
У меня — 13 / 21🫠
#email #quiz
Ну что, JavaScript никто из вас не знает, мы это выяснили не так давно. А что насчёт валидации адресов электропочты?
Вашему вниманию очередной квиз: https://e-mail.wtf/
Вооружайтесь RFC 3522 и вперёд!
У меня — 13 / 21
#email #quiz
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤2