DEV: Рубиновые тона – Telegram
DEV: Рубиновые тона
3.21K subscribers
145 photos
2 videos
8 files
981 links
Анонсы новых видео о программировании (Ruby/Rails, Solidity/Ethereum, Python, JS и не только), практические советы, обзор полезных инструментов и новости из мира IT
Download Telegram
Итак, друзья, стрим "Основы смарт-контрактов Ethereum, язык Solidity и Remix IDE" уже завтра 🤟 В рамках стрима напишем первый смарт-контракт, посмотрим, как он работает и как с ним взаимодействовать. Начало в 19:00 UTC+3, ссылка на сервер Discord: https://discord.gg/zDD3DTgv Запись постараюсь опубликовать на канале. Увидимся!
Запись стрима, в котором мы говорим о языке Solidity, использующемся для написания смарт-контрактов Ethereum. Также поговорим о Remix IDE, напишем первый контракт, развернём его в тестовом блокчейне и попробуем перевести на него денежные средства через Metamask. https://www.youtube.com/watch?v=DgsnHmNukv8
Небольшой quick tip на сегодня. Возникла небольшая задача использовать async/await в Node.js с setInterval (чтобы дождаться завершения процесса, статус которого берётся из API) - как выяснилось, это можно сделать, только немного хитро:

async function waitUntilUploadingDone(lokaliseApi, processId, projectId) {
return await new Promise(resolve => {
const interval = setInterval(async () => {
const reloadedProcess = await lokaliseApi.queuedProcesses().get(processId, {
project_id: projectId,
})

if (reloadedProcess.status === 'finished') {
resolve(reloadedProcess.status)
clearInterval(interval)
}
}, 1000)
})
}


И далее эту функцию можно использовать:

await waitUntilUploadingDone(lokaliseApi, bgProcess.process_id, projectId)
Коды состояний HTTP - теперь с котиками https://http.cat/
И ещё апдейт на сегодня: разыскивается бодрый дизайнер продукта (я точно знаю, что среди подписчиков дизайнеры есть). Подробности в личку https://lokalise.com/job?gh_jid=4570915003
Немного плохого кода на сегодня:

def has_children_pages(id)
unless Page.where(:parent_id => id, :public => true).blank?
return true
end
return false
end
Друзья, завтра будет конференция Ford для разработчиков (REST day, все доклады связаны с разработкой и использованием API), я делаю доклад по теме "API в системах управления переводами", так что желающие могут присоединиться к трансляции вот тут: https://www.google.com/url?q=https://ford.webex.com/ford/j.php?MTID%3Dm0c898e6595f6d5b568c49de28ad5ee79&sa=D&source=calendar&ust=1635785016158442&usg=AOvVaw2yoYTKkjbkpl924Znk4jAb Поговорим о разнице между i18n и l10n, о TMS и о возможностях API нашей системы. Потом ещё мой коллега расскажет о некоторые сценариях использования у наших клиентов. Начинаем в 13:10 UTC+3 или около того, по длительности минут 30-40.
В этом небольшом видео мы обсудим как загрузить файл себе на компьютер из Интернета с помощью библиотеки got, а также как распаковать архив ZIP с помощью AdmZip и удалить его впоследствии. Наше решение будет использовать async/await и модуль fs-promises для асинхронной работы с файлами. Также мы узнаем, как распаковывать архив без непосредственного скачивания. https://www.youtube.com/watch?v=u9Qq8JRWa40
Канун Хэллоуина, так что самое время записать несколько более расслабленное видео о новых секретах Ruby 🎃 В этом видео мы узнаем, зачем нужны модули (mixins) Enumerable и Comparable и как с их помощью создавать собственную логику сравнения объектов и собственные коллекции. Узнаем, что такое оператор "spaceship", а также реализуем методы для выбора элемента коллекции по индексу и для добавления элементов в коллекцию с помощью оператора "ёлочка". https://www.youtube.com/watch?v=OYRLg6HwN-4
Всем привет! Очередной стрим будет в этот четверг в 19:00 UTC+3, вот на этом сервере https://discord.gg/BKtevRN3 В этот раз сфокусируемся на самых основах языка Solidity (типы данных, функции, модификаторы - в таком духе). Короче говоря, подойдёт для начинающих. Solidity - этот самый язык, на котором пишут смарт-контракты в Ethereum. В конце можно будет задать вопросы (можно не совсем по теме). Запись также будет доступна на канале. Увидимся! 😜
В этом стриме мы поговорим обо всех основных типах данных в Solidity и об их особенностях. Также узнаем, как создавать функции, какие есть области видимости, как принимает и переводить денежные средства, как возвращать аргументы и чем transact отличается от call. https://www.youtube.com/watch?v=EMJenrShuFs
Всем отличной пятницы и спасибо всем, кто присоединился к стриму. Через пару дней будет урок про отправку писем в Rails, так что не сильно не расслабляемся 🤓 https://www.youtube.com/watch?v=Ixmwj6vOPJY
Кстати, вот только что хороший вопрос поступил к прошлому видео о Comparable/Enumerable. Мы там в одном месте создаём свой метод to_s для класса и потом при выводе на экран при помощи puts этот метод вызывается автоматом. Почему он вызывается? На самом деле, это происходит автоматически, то есть перед печатью объект автоматически преобразовывается строку, и именно этот процесс преобразования мы можем контролировать, создавая собственный метод to_s
Любишь ActiveAdmin? Я тоже использую это решение для некоторых своих проектов (например, для сайта одного театра). А вот симпатичная респонсивная тема для этой админки под названием ArcticAdmin https://github.com/cprodhomme/arctic_admin 🤓
Продолжаем уроки по Ruby on Rails! В этом видео узнаем, как отправлять электронные письма с помощью ActionMailer и просматривать их локально с помощью letter_opener. Также реализуем возможность сброса пароля для пользователей и поговорим о том, как добавить защиту для этого функционала. https://www.youtube.com/watch?v=dwcrIVAxk_4
Рубрика "это интересно". Возникла необходимость считать зашифрованный куки в маршрутах (сделать constraint). Однако через request.cookies.encrypted не работает, тк он там просто выдаёт хэш, а метода encrypted не знает. Я уж начал писать руками дешифровку, но потом подумал, что ведь ActionDispatch уже доступен в маршрутах, значит, и все его фишки. В общем делать надо так: request.cookie_jar.encrypted[:user_id]
Что ж, друзья, суббота (хотя у нас тут она рабочая) 😁 Пока готовится новое видео про фоновые задачи и Sidekiq, немного музыки. Саундтрек из фильма, который все прекрасно знают, исполняется в игре по этому же фильму (исполнено нашей небольшой группой). Скоро увидимся 🙌 https://www.youtube.com/watch?v=Ks5dajW2GsU
Очередной урок по Ruby on Rails, в котором мы узнаем, как использовать ActiveJob для обработки фоновых задач. В качестве адаптера будет задействовано популярное решение Sidekiq. Мы не только попробуем отправить письма в фоновом режиме, но и поговорим о вложениях, а также выполним обработку файлов ZIP и Excel в ActiveJob: в частности, реализуем импорт и экспорт пользователей. Также узнаем, как защитить админку Sidekiq с помощью route constraints. https://www.youtube.com/watch?v=NIZ7Am15byo