DEV: Рубиновые тона – Telegram
DEV: Рубиновые тона
3.22K subscribers
143 photos
2 videos
8 files
976 links
Анонсы новых видео о программировании (Ruby/Rails, Solidity/Ethereum, Python, JS и не только), практические советы, обзор полезных инструментов и новости из мира IT
Download Telegram
Что ж, друзья, спасибо за участие в сегодняшнем заключительном стриме, было интересно 😁 Конечно, нашему ИИ по имени Куно тоже есть, что сказать под конец этого года. И он это скажет сам 😄 Я лишь его немного разговорил
👍25102😁1
Кстати, хотел рассказать об интересном подходе в GH actions. Можно создать цепочку из шагов, которые будут сами открывать PR (ну, к примеру обновлять какие-то файлы из другого источника) и сами делать merge. То есть всё работает само - просто мечта 😄

Предположим, в одном из шагов у нас уже загрузились файлы и создалась ветвь, теперь нужно открыть PR. Это можно легко сделать вот так:

    - name: Create or Update Pull Request
uses: actions/github-noscript@v7
with:
github-token: ${{ github.token }}
noscript: |
const path = require('path');
const createOrUpdatePR = require(path.join(process.env.GITHUB_ACTION_PATH, 'js/create-update-pr.js'));
await createOrUpdatePR({ github, context });


В файле js код для создания pr:

module.exports = async ({ github, context }) => {
const { repo } = context;

const { data: newPr } = await github.rest.pulls.create({
owner: repo.owner,
repo: repo.repo,
noscript: "some noscript",
head: branchName,
base: baseRef,
body: "",
});
}


baseRef - это переменная среды, которую можно в самом действии задать как ${{ github.ref_name }} (github - это встроенная штука)

А теперь этому pr можно назначить тег, чтобы потом сделать automerge:

      await github.rest.issues.addLabels({
owner: repo.owner,
repo: repo.repo,
issue_number: newPr.number,
labels: prLabels,
});


А вот следующим шагом мы запускаем программным способом другой workflow, которые сделает merge:

      - name: Trigger Automerge Workflow
uses: actions/github-noscript@v7
with:
github-token: ${{ secrets.PAT_TOKEN }}
noscript: |
await github.rest.actions.createWorkflowDispatch({
owner: context.repo.owner,
repo: context.repo.repo,
workflow_id: "automerge.yml",
ref: source_branch,
});


В качестве source_branch задаётся ветвь, которая создалась для pr.

Здесь также потребуется токен с правами на управление workflow, но его можно легко создать в профиле.

И затем в automerge.yml:


steps:
- name: Checkout Repository
uses: actions/checkout@v4

- name: Automerge PRs
uses: pascalgn/automerge-action@v0.16.4
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
MERGE_LABELS: "automerge"
MERGE_METHOD: "squash"
MERGE_RETRIES: 6
MERGE_RETRY_SLEEP: 10000
MERGE_DELETE_BRANCH: "true"


Он просто найдёт pr с нужным тегом и сделает merge, если нет конфликтов и проверки прошли. Теперь для всего этого можно задать условие запуска (к примеру, по расписанию) и наблюдать за результатом 🤓
🔥10👍32
Знаете, меня иногда почему-то странно затягивают необычные случаи, которые случались в разное время. Затягивают настолько, что я готов изучать литературу на английском языке и затем публиковать статьи по теме. Так, анонимно я выпустил статьи о якобы "кровавой графине" Батори (спойлер - нет, она не купалась в крови своих жертв), об Элизе Лэм, человеке из Сомертона и некоторых других личностях.

Одна из таких из историй - это совершенно необъяснимое исчезновение в Панаме двух девушек, Лисанн и Крис. Эта история не давала покоя мне уже пару лет, и буквально позавчера я залпом проглотил книгу на эту тему. В общем, по прочтении я подумал, что было бы весьма недурно перевести её на русский язык, ибо там содержится много весьма любопытной информации. Я связался с авторами получил добро, так что постараюсь адаптировать оригинал как можно лучше.

В деле вновь Cat&Mouse team, состоящая из полутора землекопов, приданной кошки и поддерживаемая крепким сидром Henry Westons. Надеюсь, публикация не заставит себя ждать. В конце концов, я думаю, что даже спустя десять лет это дело вполне реально раскрыть. Некоторые дела ждали своего часа куда дольше, а девушки заслуживают того, чтобы эта история получила достойный финал.
🔥32👍12❤‍🔥11🆒1
Weekly AI shitposting, первый в этом году. В этот раз летим к далёким звёздам 💫

P.S. Перевод книги потихоньку двигается, новые уроки скоро будут делаться
❤‍🔥10👍52
uh-oh. Статья о том, как подобрали приватный ключ для имеющегося публичного https://dmarcchecker.app/articles/crack-512-bit-dkim-rsa-key
🤯7🔥5
Привет друзья! Что ж, вот и настал 2025. 🎉 Как уже рассказывал на последнем стриме, у меня довольно много планов на ближайшие месяцы; вижу, что и вы не отстаёте. Новый год — отличный повод сделать очередной шаг в своём обучении, и школа GuideDAO предоставляет всем этот шанс 😄 В ближайшее время мы предлагаем скидку 25% на любой буткемп, а я лично от себя накидываю ещё 10% по промо-коду KRUK. Неплохо, правда? Присоединяйтесь, пока есть такая отличная возможность, поработаем вместе. 🤓 https://www.guidedao.xyz/
16🔥9❤‍🔥32👍1👀1🫡1
Сегодня наш постоянный зритель задал правильный вопрос - а зачем (с точки зрения школьника 10-12 лет) вообще учить всякие нудные математики, химии и иностранные языки, если под рукой ИИ, а через 5-10 лет он будет вообще в каждом утюге? Это правильный и непростой вопрос, друзья. Периодически я задумываюсь и сам о вопросе мотивации, о том, зачем вообще делать нечто, если, в общем-то, этого можно и не делать. Ну, из последнего (в рамках перевода книги) - подсчёт костей в оторванной ноге и перевод всех протоколов вскрытия посередь ночи. Случай, конечно, редкий, но всё же. Можно же и не заниматься этим? Можно

В общем, всё-таки хочется поговорить об этом как-нибудь. Может, устроим беседу по тему на неделе, если буду себя более-менее нормально чувствовать https://www.youtube.com/watch?v=TlETg5LrAec&list=PLEpfc0uyT8lDDUfjSLRjpQKFScNzEW1PD&index=7
19👍8🔥7
Ночь. Город спит
25👍13
Завтра вечером спецвыпуск 🤓 https://www.youtube.com/live/pFoVimn3AoQ
12🔥1
Я тут нашёл новое интересное решение для перевода приложений NextJS, описал в небольшой статейке. Подкупает простота и удобство, хотя местами может быть сыроватое ещё https://lokalise.com/blog/nextjs-localization/
👍112
Как говорится, надо уметь говорить "нет". Этот шуточный сайт предлагает разные вежливые отказы менеджеру, объясняющие, что пока эту фичу реализовывать никто не будет 😂 https://letsnotdothat.com/
😁5👍3
Пройдёт много лет и полковник, стоя у стены в ожидании расстрела вспомнит тот далёкий день, когда 11 лет назад сам писал реализацию метода symbolize_keys (которого в стандартной библиотеке не было) 😂 https://github.com/bodrovis/Guesser/blob/master/lib/guesser/utils/hash.rb#L3

Это была демо-программа, некий proof of concept для моей библиотеки messages_dictionary (которая и сама являлась проектом для демонстрации ученикам), использующейся в виде poor man's i18n - дескать, подгрузи файл с сообщениями и вытащи нужную строку по ключу. Забавно, что это до сих пор можно использовать.

Сколько воды утекло с тех пор. В то же время мы пытались наладить forem - якобы лучший движок для форума, который создал Райан, впоследствии победитель ежегодного конкурса ruby hero (или как это называлось?). Да, это было в 2012-2013, судя по всему. Всё ещё впереди - и плохое, и хорошее. Чего было больше? С одной хочется сказать словами Гайдара (писателя с весьма неоднозначной репутацией, у которого всё-таки есть несколько хороших рассказов): а жизнь, товарищи, была совсем хорошая. Символично, что это тоже было написано ещё до войны.

Впрочем, иногда кажется, что когда мы пару жизней тому назад, даже ещё до всех этих событий, были бедными студентами, то жили несколько счастливее. А теперь всё сильно изменились - что мой "ученик" Арс, что постоянный участник наших стримов Рома (это, конечно, мудрый старший наставник)... Да и ребята из guide dao, которых я уже знаю, кажется, лет сто, а мы так до сих пор и не встретились ни разу. 😁

https://www.youtube.com/watch?v=_ivH7xfDWG0
13❤‍🔥1👍1🙏1
Open AI o3 вышел - видимо, спешат, ибо вышел китайский конкурент https://openai.com/index/openai-o3-mini/ Немного уже говорили об этом в прошлый раз, в следующий вторник ещё обсудим 🤖
🔥15
Сегодня вечером наши искусственно-интеллектуальные бдения, залетайте https://youtube.com/live/eqjr2FOCEiI?feature=share
95👍2