DEV: Рубиновые тона – Telegram
DEV: Рубиновые тона
3.21K subscribers
145 photos
2 videos
8 files
981 links
Анонсы новых видео о программировании (Ruby/Rails, Solidity/Ethereum, Python, JS и не только), практические советы, обзор полезных инструментов и новости из мира IT
Download Telegram
Из забавного: периодически вместо того, чтобы написать block_given?, у меня получается glock_given? 😄 https://i.imgur.com/0sq304S.jpg
И ещё совсем небольшой трюк на сегодня. Если вы пишете библиотеку, в которой хотите задействовать путь к корню проекта Rails, но не уверены, что Rails.root всегда будет определён, то можно использовать вот такой приём https://github.com/bodrovis/lokalise_rails/blob/master/lib/lokalise_rails/utils.rb
https://doka.guide/ - прислал Илья Демченко, гайд по HTML/CSS/JS
Открыл одну свою старую библиотеку, которую писал когда-то для api спортивного чгк, увидел это, закрыл:

      def self.included(klass)
klass.const_set('Search',
Class.new(klass) do |*_args|
def api_path
super + '/search'
end
end
)

# The actual method to perform searching
# Instantiates a Search class with the given search params
# and send a GET request to the proper URI (defined above)
klass.define_singleton_method :search do |params|
klass.const_get('Search').new(params)
end
end


😂
Сегодня будет очень важный урок по Ruby on Rails, в котором мы обсудим авторизацию (authorization) и её отличия от аутентификации (authentication). Внедрим авторизацию в Rails с помощью решения Pundit, обсудим политики, а также создадим сервисный объект "гостевой пользователь". Кроме того, затронем наследование контроллеров и некоторые другие моменты. К концу урока у нас получится готовое приложение с разделением прав доступа по ролям. https://www.youtube.com/watch?v=xvwsEb60PUA
И ещё одно небольшое объявление. В следующий понедельник (25.10), если ничего не изменится, я буду проводить стрим по теме "Язык Solidity и программирование смарт-контрактов Ethereum: введение" на платформе MCS. Стрим будет в дискорде, вот на этом сервере, запись тоже постараюсь организовать. Начало в 19:00 UTC+3, ближе к делу ещё уточню, если будут изменения. 🤟 https://discord.gg/3VJSm3zG (да, уточню, что это не мой сервер, им владеет школа). Инвайт кажется истёк, я запрошу новый и опубликую чуть позже
Кстати, сейчас они там тоже чего-то стримят
Пожалуй, лучший дизайн за сегодня (осторожно, глаза) http://fntb.ru/
Итак, друзья, стрим "Основы смарт-контрактов 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.