DEV: Рубиновые тона – Telegram
DEV: Рубиновые тона
3.22K subscribers
143 photos
2 videos
8 files
976 links
Анонсы новых видео о программировании (Ruby/Rails, Solidity/Ethereum, Python, JS и не только), практические советы, обзор полезных инструментов и новости из мира IT
Download Telegram
Недавно появилась любопытная задача: в момент запуска действия на GitHub понять, в каком момент это действие запускалось последний раз, чтобы взять всю историю коммитов с того момента. Проблема в том, что если действие запускается вручную (on: workflow_dispatch), то просто посмотреть какие-то журналы, видимо, не выйдет.

Пока взял способ с тегами. Каждый раз при запуске создаётся тег:

TAG_NAME="lokalise-sync-${{ github.ref_name }}"

git tag -a "$TAG_NAME" -m "Lokalise sync completed on branch '${{ github.ref_name }}'"

git push origin "$TAG_NAME"


Ну, там ещё некоторое количество проверок перед этим.

А затем ищем тег при следующем запуске:

git fetch origin +refs/tags/*:refs/tags/*

if git rev-parse "$TAG_NAME" >/dev/null 2>&1; then
TAG_SHA=$(git rev-list -n 1 "$TAG_NAME")
echo "Found tag '$TAG_NAME' pointing to commit: $TAG_SHA"
echo "base_sha=$TAG_SHA" >> $GITHUB_OUTPUT
fi


Опять же плюс некоторое проверки. Получаем SHA для коммита, когда был запуск. Можно сравнить с ${{ github.sha }}, чтобы узнать, не тот ли это коммит, что и сейчас (повторный запуск).

А потом можно в tj-actions/changed-files просто передать base_sha и sha для сравнения. Да, это тот самый changed-files, который взломали недавно и выплюнули секретные данные юзеров. Защита от подобных умников довольно несложная, кстати. Можно установить не версию действия, а ссылку на какой-то надёжный коммит (момент релиза проверенной версии):

      uses: tj-actions/changed-files@db731a131ccd81ed52a3d463b6d2a4b2856c7ec9


Пока это всё довольно экспериментальная история, но вроде работает ничего. Подробнее можно в этом PR поглядеть https://github.com/lokalise/lokalise-push-action/pull/11/files
7👍2
Друзья, вы просили - мы сделали. Сегодня в 19:00 UTC+3 состоится новый день открытых дверей в школе GuideDAO, где сотрудники и студенты ответят на ваши вопросы, расскажут о процессе обучения, о перспективах и многом другом. 👩‍🎓

Кроме всего прочего, в ближайшие 4 дня будет действовать повышенная скидка по промо-коду WEB3DOOR в размере аж 15% 🔥

Так что залетайте! https://www.youtube.com/watch?v=y3yV0593xtI&ab_channel=GuideDAO
🔥8😍2🍾2❤‍🔥1
У нас тут вышел совместный пост с основателем ScrapingBee, в этот раз обсуждаем разные решения для скрейпинга всего на свете https://www.scrapingbee.com/blog/web-scraping-tools
7👍2
Хотел порадовать любителей windows (любителей поневоле?..) что апгрейд до версии 11 прошёл успешно, все дебильные ИИ отключены и ненужные службы удалены, но подвёл второй компьютер... Какая-то беда случилась из-за bitlocker, потом слетела загрузочная запись, а дальше благополучно похерились драйвера, которые, как я думал, вообще важны только для RAID.

Итог прост - сидение до 7 утра, а далее с 2 часов дня до вечера, потому что после восстановления и дешифровки решил перестать работать Wi-Fi. Ну, а потом ещё и звук - там вообще спрятались все устройства ввода-вывода, делая вид, что их нет.

Впрочем, после всех этих унижений работает всё нормально, ненужный хлам удаляется, реестр правится, интерфейс настраивается, программы компилируются, WSL запускается. Так что на данный момент я всё же думаю, что нет никакого смысла не обновляться до windows 11, ведь у предыдущей версии скоро кончается срок годности. Ну, либо переходить на сторону добра и устанавливать ubuntu/arch linux/какой-нибудь ещё nix. Но я традиционно остаюсь на стороне плохих парней 😂
👍28😱2🎉2🤪2
Слушайте, ну кто бы мог подумать? Оказывается, периодически наливают неизвестно что под видом чего-то такого ну прямо эдакого. Это одна из причин почему я никогда не беру вино в бокале: мало и непонятно, чего там такое дают.

Единственное, в чём я могу быть более-менее уверен - это пиво известных марок на разлив, в основном крепкое бельгийское. Тут уж меня не проведёшь 😂 А так ведь и правда, в вине разницы и не заметишь.

И да, никакого "хорошего вина за 5 евро" в ЕС нет и не было, во всяком случае, последние лет 10 точно. Нет, в Италии тоже такого не водится, так что не давайте себя обмануть https://holod.media/2025/04/30/parizhskie-kafe/
2
Перевёл один из проектов на qlty.sh для измерения покрытия тестами и maintainability. Пока полёт нормальный, в целом ничего сложного https://github.com/bodrovis/lokalise_rails/commit/1dc851c0caf57c5eb53b35a7829ff9f8ee24feb2
🔥4
И апдейт для любителей Go. Та программа (brave signer), которую мы писали в уроках, получила большой апдейт - я там всё-таки спустя полгода нашёл силы добавить нормальные "как бы классы" и более удобный конфиг. Пока особенного спроса на Go нет, так что записывать урок не стал, но можно глянуть код https://github.com/bodrovis-learning/brave_signer/compare/v0.1.0...v1.0.0
🔥15👍3
Некоторые соображения о системе PerimeterX, которая пытается отделить ботов от людей при обращении к сайтам. К сожалению, простого и 100% надёжного способа нет https://www.scrapingbee.com/blog/how-to-bypass-perimeterx-anti-bot-system/
2
У меня тут новая небольшая библиотека для Node, позволяет выводить всякие сообщения в логи и настраивать их (плюс создавать свои логгеры). Там же можно указывать уровень "серьёзности" сообщения и выбирать пороговый уровень серьёзности (удобно если это контролирует юзер приложения - к примеру, можно включить режим silent). Это, скорее, для внутреннего пользования, но может кому-то поможет.

logWithColor("Hello from the default logger");
// [INFO] Hello from the default logger
// printed in cyan color

logWithLevel("Just a plain info message", 42);
// [INFO] Just a plain info message 42
// printed without color

logWithLevel(
{
level: "debug",
threshold: "debug",
},
"Low-level debug info"
);
// [DEBUG] Low-level debug info

logWithColor(
{
level: "warn",
prefixBuilder: () => {
const ts = new Date().toISOString();
return `!!${ts}[WARNING]!!`;
},
},
"Custom warning with timestamped prefix"
);
// !!2025-05-10T14:03:32.302Z[WARNING]!! Custom warning with timestamped prefix

https://github.com/bodrovis/kliedz
🔥10👍5
Делаю сейчас своего рода погружение в старые игры эпохи NES/SNES и вспоминаю... Помните, были эти странные пиратские картриджи с совершенно непонятными играми типа "про футбол" (это Captain Tsubasa, как выясняется теперь), где одни иероглифы, бог его знает, что это всё значит, но вроде интересно? Запоминали ведь, что каждая команда примерно обозначает 😄

При этом, конечно, пиратить что-то вроде Fire Emblem китайцам в голову не приходило, так там что-либо делать без знания языка невозможно. И прошли эти шедевры мимо нас в своё время. А теперь смотришь на более новые поделки и понимаешь, что ведь эти идеи все оттуда из начала девяностых, когда жизнь была как-то проще и всем хватало 640КБ памяти. https://www.youtube.com/watch?v=aFU0t4ELtbc
👍54🔥2🆒1
Забавный музей интернета от момента его сотворения. Даже можно трогать руками https://neal.fun/internet-artifacts
👍75
😁28🔥8🌚2