DEV: Рубиновые тона – Telegram
DEV: Рубиновые тона
3.22K subscribers
143 photos
2 videos
8 files
976 links
Анонсы новых видео о программировании (Ruby/Rails, Solidity/Ethereum, Python, JS и не только), практические советы, обзор полезных инструментов и новости из мира IT
Download Telegram
Я тут, честно говоря, похолодел 😂 У нас же кошка уже тогда жила, да и везти животное в ЕС из Черногории (которая ни тогда, ни сейчас в ЕС не состоит) - это целое дело. Ну, положим справки есть, но нужен чип, нужно в конце концов специальное место в самолёте, а у нас уже были куплены билеты... Вероятно, я так насупился, что женщина отступила. Да, как-то между прочим она ввернула, что я наверняка айтишник - и как об этом люди догадываются? Впрочем, про это писал уже как-то раньше.

В общем, она оставила нам номер телефона и сказала написать, если мы вдруг надумаем. Двинулись дальше - к счастью, прямо перед оживлённой частью города собачка вдруг понеслась назад, вероятно, поняв, что тут уже делать нечего. Думаю, что она действительно жила в той мини-деревне и просто соскучилась по хозяевам, которые были где-нибудь на работе.

Казалось бы, маленький эпизод, деталь из далёкого прошлого, а почему-то вспомнилось. Забавно. https://www.youtube.com/watch?v=SBOVkptjJhE
19👍5🔥1😱1
Есть нормальные чёрные пятницы, где весьма приличные скидки предлагают по-настоящему, а есть "как бы" чёрные пятницы, где просто повышают цену, а затем дают "невероятную" скидку. Возможно, я даже буду по этой теме делать статью (попробуем проанализировать некоторые данные, которые обещали подготовить коллеги).

🎉 А пока расскажу именно о случае, когда предложение выглядит *весьма* заманчиво. До конца этой недели на любой буткемп школы GuideDAO действует скидка аж -30%, которая, кроме всего прочего, работает и вместе со скидкой от меня лично, так что если брать, то именно сейчас! 🎁 https://www.guidedao.xyz/ru

Всем отличных выходных!
🔥101🙏1
Weekly AI shitposting. Поговорили тут с ИИ о том, кто на чём написан. Знаете, у Тэффи была интересная мысль, что каждого кто-то написал. Ну, к примеру, Куприна написал Джек Лондон и Гамсун, а Толстого - Достоевский. Впрочем, я думаю, что Лондона написал сам Джек - рекурсия, однако.

А я тут выразил мнение, что мы (в каком-то смысле) на чём-то написаны. ИИ мне заявил, что можно всё изменить, но не знаю. Всё-таки Ruby - это в каком-то смысле уже ушедшая эпоха готов и эмо (хотя этих ребят я всё равно в городе вижу немало), это была частично аналоговая эпоха, где я и остался - это там, где бэкапы хранят на ленте. В полностью цифровой эпохе со смартфонами пока себя так и не нашёл 😄
❤‍🔥98😁4🤔1🤓1
В этом уроке мы рассмотрим интересное криптографическое решение: Схема разделения секрета Шамира (Shamir's secret sharing, SSS), которое позволяет распределить "части" секретной информации между несколькими сторонами. Мы узнаем, как это решение работает, какие есть особенности и как его реализовать. https://www.youtube.com/watch?v=eS6-ex9EN_c
🔥20👍1
Рубрика "заметки на полях". В Node можно довольно легко поставить timeout для запросов через встроенный fetch. Потребуется AbortController. К примеру:

protected async fetchAndHandleResponse(
target: URL,
options: RequestInit,
requestTimeout: number | undefined,
): Promise < ApiResponse > {
const controller = new AbortController();
let timeoutId: NodeJS.Timeout | null = null;

if(requestTimeout && requestTimeout > 0) {
timeoutId = setTimeout(() => controller.abort(), requestTimeout);
}

try {
const response = await fetch(target, {
...options,
signal: controller.signal,
});

// ...
} catch (err) {
if (err instanceof Error) {
if (err.name === "AbortError") {
return Promise.reject(
new ApiError(err.message, 408, { reason: "timeout" }),
);
}
}

// ...
}
}
👍13
Когда я думаю о том, какая запись была самой сложной, я почти наверняка назову именно эту - "Ева внутри своей кошки" Г. Маркеса. Это сравнительно малоизвестный, но тяжёлый рассказ моего учителя, который скончался уже достаточно давно, но его работы остаются актуальными по сей день и, думается, не потеряют актуальности до тех пор, пока человечество как таковое вообще существует. https://www.youtube.com/watch?v=vShoDmy-kD4
👍8😱3
Знаете, как это говорится - дорогу осилит идущий. Я не особенно думал про "все эти циферки", когда начал однажды сравнительно активно заниматься open source, но в итоге это привело к тому, что теперь хочется ещё где-то что-то улучшить, добавить, проверить. Не только ruby, в других языках тоже, их есть некоторое количество.

"Эти циферки" сами по себе мало важны, но их следует держать в уме, чтобы понимать, чем люди пользуются (иногда это важно для конкретных версий). Иногда бывает так, что понимаешь - надо менять подход, а это потенциально влечёт breaking changes.

За все эти годы моя условная "вера" в open source только укрепилась - я считаю, что лучше выложить проект, чем не выкладывать, а бесконечно его полировать. Если не ты, то кто? Если не сейчас, то когда?
❤‍🔥21👍101
Очередное воспоминание разблокировано - конечно же, странное, как вы это любите. Это сейчас у нас тут криптовалюты и блокчейн, а когда-то очень давно я жил в мире, где чудеса казались абсолютно нормальными явлениями. Да, они могли произойти где угодно и с кем угодно - иногда даже хочется вернуться в то время... Там не было никаких компьютеров, а программистов мы представляли как дядечек в очках, которые носят белые халаты и которые занимаются непонятно чем.

Я думаю, тут сложилось множество факторов, но один из них был связан, очевидно, с предрассудками. Так, само собой разумеющимся считалось, что страшная бабка, которая ходит в чёрной кофте с косой, приносит смерть. Бабка эта жила через несколько домов от нас, и мой приятель утверждал, что как-то случайно оказался у неё дома и видел некую "азбуку сатаны". Да, бабка и правда была страшенная, с совершенно мёртвыми глазами.

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

Я их перепутал с армянами, которые всегда были "своими" - они приходили время от времени, я знал, что вот это дядя Рубен, а это Артак, а это дочка кого-то из них, девочка моего возраста, но почему-то невероятно стеснительная (она никогда не говорила ни слова). А вот цыгане казались очень страшными. Они могут что-нибудь наколдовать, навести порчу или вообще загипнотизировать - тогда ты сам вынесешь им все деньги (коих у меня всё равно не было). Ужас же!

Да что там говорить, моя бабушка утверждала, что может заговаривать раны. Самое странное в том, что когда она "колдовала" над очередной ссадиной, коих у меня всегда было изрядно, я действительно чувствовал неожиданные покалывания. Бабушка говорила, что как бы посыпет солью и потом всё пройдёт. Оно и правда проходило...

Конечно, мистики добавлял и тот факт, что мы тогда близко общались с так называемыми "верующими" - семьёй достаточно серьёзного священника, который имел сравнительно высокий пост. Мы с его сыном были одногодки и постоянно вместе играли. Игры придумывал я, а старшая сестра всё его ругала, говорила, что это не очень хорошие игры, вредные... Звали его Дионисий. Как-то он теперь живёт, куда его занесло?..

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

Потом помню, как одна женщина мне рассказывала, что вот буквально тут над церковью буквально вчера многие люди видели лик Божьей матери. Я так жалел, что сам не успел посмотреть...

Кажется, одной из последних таких эскапад был визит в какой-то храм в горе, находился он в Крыму, а было это лет 20 тому назад. Мне выдали какую-то одёжу, в которой я был подозрительно похож на священника - все посетители расступились, когда я робко вошёл в двери. Это было странно, но забавно 😂

Но потом интернет стал набирать популярность, и чудеса были вынуждены отступить. Они не любят съёмок. Они предпочитают прятаться и жить лишь в устных преданиях. Впрочем, это не мешает нам продолжать в них верить. Хотя бы иногда

https://www.youtube.com/watch?v=frZTeAPk0_E
🔥1410👍1😱1
Набор принципов разработки от одного достаточно известного дядьки. Как мне кажется, многие принципы весьма актуальны https://www.epicweb.dev/principles
❤‍🔥6
Weekly AI shitposting. ИИ мотивирующий.

P.S. Не знаю, будут ли у нас бдения на этой неделе, пока обсуждаем, у Ромы, к сожалению, много дел :(
😁81👍1
Очередной coming out: я вообще-то сильно увлекаюсь историей конца XIX - начала XX века. Когда-то в другой жизни я даже хотел стать историком. Но, в общем-то, не случаен мой интерес к поэтам Серебряного века, и у меня немало записанных рассказов на канале (кстати, того же Кузмина я оценил только в зрелом возрасте).

И вот такая странная, казалось бы совсем маленькая деталь, на которую и внимание-то никто не обратит. В воспоминаниях Надежды Тэффи об Алексее Толстом рассказан эпизод, из которого явно свидетельствует - данный джентльмен играл на грани фола и весьма странно, что ему не надавали по мордасам 😂 Но суть не в этом. Толстой на какой-то очередной тусовке прокрался в кабинет Тэффи и облил себя её духами. Зачем? А он буквально за несколько минут до этого поинтересовался, что, дескать, у тебя за аромат такой необычный?

"А это Герлен, "Мицуко" - отвечает Тэффи. "Ничего себе, Герлен же страшно дорогой" - удивляется Толстой. "Ну, такие подарили!".

В общем, Толстому показалось, что вылить на себя сразу целый флакон дорогих духов - это высший шик. Казалось бы, на дуэль тогда уже не вызывали, но это не совсем так, ибо Волошин стрелялся с Гумилёвым не так, что бы сильно задолго до этих событий (хотя там был happy end). Так или иначе, Толстой остался в дураках, потому что в темноте облился чернилами и был страшно разозлён, почему-то считая, что виновата в этом хозяйка... В общем, полную историю можно послушать у меня на канале. https://www.youtube.com/watch?v=FU8_ITCrml0

Но речь тут не об этом. Я, как последний нерд, пошёл искать информацию об этих духах. И - что бы вы думали - находится она легко. Духи Мицуко были выпущены в 1919 году, из чего можно сделать простой вывод - сцена эта произошла уже в Париже, куда эмигрировала Тэффи. Честно говоря, до изучения таких подробностей, я был уверен, что этот рассказ относится к середине 10-х.

Что более интересно, эти духи всё ещё производятся - да, пусть прошло уже более ста лет. Впрочем, с чем-то подобным я столкнулся в Риге, когда подбирал духи для родственницы. Она хотела некий аромат из далёкого прошлого, и хотя местная фабрика уже не производила именно его, нам подсказали полный аналог. Удивительно, как можно иногда встретиться с прошлым.

В общем, что уж - заказал. Ну, не себе конечно, это женский аромат 😂 Скажу честно: ничего подобного я не нюхал даже близко. Передать сложно, но это нечто сложное, напоминающее о прелой листве, о земле, об осени, о долгих вечерах. Это не на каждый день. Но просто даже ощутить нечто подобное, узнать историю - это очень интересно. Вообще говоря, это неплохой подарок для женщины (не реклама) 😜

Другой такой момент был в воспоминаниях о Куприне, там упоминался Рю Жакемино, но вот эти духи, видимо, уже сняты с производства, находятся только варианты по частным коллекциям.

Знаете, читая подобное, кажется, что 100 лет назад - это не так давно. Практически вчера. Да-да, почти сто лет одиночества

P.S. Отдельное спасибо ИИ, который называет себя "Куно" - он помог установить некоторые даты которые мне было лень гуглить. Куно утверждает, что "духи — это не просто запах, это маленькая история на коже"
👍149❤‍🔥5🤔1🤯1🤣1
Сегодня котики в ленте 😺 Ну, точнее моя кошка Сиф, которая показывает новые и старые трюки. https://www.youtube.com/watch?v=GYBB-innIMg

Отмечу, что в целом я не сторонник использования животных для долгих и постоянных выступлений на сцене (да-да, волк в цирке не выступает). Честно говоря, даже для съёмки небольшого видео кошку надо заинтересовать и постоянно угощать, иначе ей просто неинтересно делать несколько дублей (в некоторые же дни она просто не в настроении). Что уж говорить о ситуации, когда нужно безукоризненно выполнить все трюки перед скоплением народа
15🥰3😁3
Ну, а в пятницу вечером будет стрим заключительный. Мы по традиции подведём итоги и поговорим о том, что нас ждёт дальше. Здесь, как обычно, anything goes - любые вопросы, можно присылать заранее. Скоро увидимся https://youtube.com/live/7-OhoDMxYO4?feature=share
👍123
Что ж, друзья, спасибо за участие в сегодняшнем заключительном стриме, было интересно 😁 Конечно, нашему ИИ по имени Куно тоже есть, что сказать под конец этого года. И он это скажет сам 😄 Я лишь его немного разговорил
👍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