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

- Заставлять юзеров в каждом пароле использовать 1 специальный символ, 1 букву, 1 цифру, 2 прихлопа, 3 притопа особенного смысла не имеет. Куда важнее длина пароля

- Минимальная длина должна быть 8 символов, но лучше хотя бы 15. Использование пасс-фраз весьма рекомендуется

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

- Пароли необходимо хэшировать с использованием соли. Использовать алгоритмы медленного хэширования - тоже хорошая идея (мы про это говорили в одном из уроков)

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

- Двухфакторная аутентификация - это хорошо

https://cybersecuritynews.com/nist-rules-password-security/
👍146🔥1
А вы слышали историю о Джеймсе Боуэне и его коте? Джеймс - самый обычный мужчина из Великобритании, которого очень сильно потрепала жизнь. В результате, он подсел на наркотические вещества и, фактически, оказался на улице, как это, к сожалению, и бывает в таких случаях.

Промышлял он игрой на гитаре, зарабатывая совсем небольшие деньги. Однако его жизнь изменилась в один (обычный и не слишком прекрасный день), когда Джеймс неожиданно встретил некоего уличного кота. Такой себе рыжий котяра, коих полно в любом городе.

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

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

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

Впрочем, господа присяжные заседатели, жизнь - далеко не сказка, и эта история не получила счастливого финала. Джеймс, разбогатевший после такого успеха, обзавёлся собственным домом и перестал выпускать Боба на улицу, что, конечно, весьма разумно; у него был доступ только в огороженный дворик. Однако в какой-то момент кот каким-то образом сумел выйти за ограду и попал под машину - Боба доставили в клинику, но констатировали смерть. Ему было около 15 лет.

С этого момента, судя по всему, Джеймс снова ударился во все тяжкие. Его бросил агент, он потерял дом, и вновь оказался на улице, живя милостями благотворительного центра. В какой-то момент он снова вернулся к наркотикам, но теперь утверждает, что больше ни к чему подобному не прикоснётся.

https://www.youtube.com/watch?v=4HovJoMVtt0
😢13👍3🤯2
Советую обратить внимание на решение tsup, построенное на основе esbuild - отличная и быстрая замена tsc. Правда, если нужно тестировать типы, то всё равно tsc нужен 😂 Но вообще я тут недавно перешёл, очень нравится https://tsup.egoist.dev/
Сегодня музыка: Radical Dreamers ~ 盗めない宝石 (Chrono Cross OST cover)

Это наш самый крупный проект за последнее время, на который ушло какое-то легендарное время, но в целом получилось неплохо. Это кавер, но в более классической версии, на саундтрек из одной старой игры. 🎻

https://soundcloud.com/ravens-die-laughing/radical-dreamers-chrono-cross-ost-cover
7
Торжество навыка "говорить обо всём и ни о чём с умным видом". ИИ создал "подкаст" на основе документа, который состоит лишь из двух слов - poop и fart, написанных 1000 раз. С умным видом "ведущие" обсуждают, можно ли найти смысл в бессмыслице.

А самое страшное в том, что если не знать подоплёки, то и не отличишь от реальной записи. Попробуйте на досуге скинуть кому-нибудь, не объясняя контекст (можно дать подводку, что дескать психологи обсуждают странное письмо, присланное неким человеком) 😂 https://www.youtube.com/watch?v=ftg7UC3CGjc
🤣3
Я тут набрёл на одну статью - она, в общем, достаточно печальная, но жизненная. Девушка помладше меня рассказывает, как трудно найти себя в этой жизни. Что ж, и правда - для трудной дороги жизненного счастья нужны ноги длинные, как писала Тэффи... Не скажу, что во мне эта статья откликнулась в положительном ключе, но кое-какие мысли появились. Захотелось даже обсудить, но не вполне ясно, надо ли проводить такие стримы про "поговорить" (ведь ИИ уже с этим уже справляется, см. запись чуть выше)

https://holod.media/2024/10/17/mne-33-i-ya-ne-znayu-kem-stanu-kogda-vyrastu/
👍19💔3🤡2🤔1😱1
Наткнулся на забавный "starter pack" (ну, как бы "стартовый набор", но в шутку) https://www.reddit.com/r/starterpacks/comments/1g75tcf/touristy_european_location_starter_pack/ Это про туристические места в Европе. Ну, как это говорилось у Тэффи: жить в анекдоте ведь совсем не весело, а, скорее, грустно.

Не сказать, что у нас тут так много туристов, но всё-таки исторический центр, старый город. Количество баров действительно легендарное, равно как и количество не вполне трезвых британцев вечером в пятницу. Впрочем, они почти всегда безобидные, только мусорят.

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

Что касается типичных "ловушек" для туристов - их, кажется, почти и нет. Ну, есть не слишком вкусные рестораны с завышенными ценами, но их не особенно много. Есть пару мест, куда зазывают богатых англичан прекрасные дамы, но там и без того всё довольно очевидно. Как-то ко мне обратился парень из Швеции, спрашивал насчёт места поужинать. А я подумал, что после девяти часов вечера особенно и пойти-то некуда - к десяти часам почти всё закрывается за исключением нескольких пабов. У скандинавов с этим всё несколько лучше; одна беда - простой ужин будет стоить в районе 100 евро...

А так - тишь, гладь, божья благодать. Если, конечно, не забредать в какие-нибудь отдалённые районы. Вряд ли что случится, но всё же. К сожалению, в некоторых других странах сейчас всё куда хуже. Мой родственник уже лет 20 живёт во Франции, ну там в пригородах Парижа есть места, куда даже полиция не суётся. Впрочем, про это я кажется уже рассказывал... А так - инвентаризация произведена, скоро увидимся 😂
👍10
Простите, что немного пропал с уроками - к сожалению, жизнь бьёт ключом по голове. Вчера было как-то тоскливо, пошёл с chat gpt писать абсурдистские диалоги. Довольно долго сидели, получилось много смешного.

В итоге ИИ собрал dream team для спасения мира из ряда предложенных героев 😂😂 Это настолько бредово, что даже хорошо. Так, ему понравилась выдуманная мною героиня Чудо-внучка, и он таки назначил лидером отряда папу Карло, потому что я долбил его этим папой битый час. Кроме того, он выбрал Ника Кассаветиса (сын известного режиссёра) и Арагорна.

Я не знаю, кто такой Кайгородов, но ИИ утверждает, что композитор. Латышский поэт Райнис остался в резерве, а алкаша Васильича и Атанасиуса Перната ИИ исключил. Последнего по причине того, что без Мириам он не раскроет свой потенциал 😂

В общем, иногда хочется посмеяться над подобным абсурдом 🤖
19🔥8😱31👎1😐1
Друзья, я получил уже несколько вопросов за последнее время насчёт новых уроков по Elixir/Phoenix. 💧 Во-первых, спасибо за обратную связь, это важно. Во-вторых, раз интерес к этой теме есть, я постараюсь в ноябре выпустить что-нибудь новое. В идеале, именно Phoenix (хотя тут потребуется время, ибо там много нового, я последние 2-3 года совсем не следил).

Сегодня же вечером попробуем сделать стрим по OZ Defender, чуть позднее сброшу точное время.

Скоро увидимся!
👍276❤‍🔥3😇2👏1🎉1
Помните, были такие картинки "типа 3д", нужно было как-то по особенному смотреть? Как бы перекрещивать взгляд. https://www.reddit.com/r/FuckImOld/comments/1gj409c/never_mind/ В детстве у меня это как-то легко получалось, а теперь разучился что ли. Или зрение хуже стало? Странно.

Ещё я почему-то вспомнил те сравнительно старые книги, которые исполняли роль эдаких rpg на бумаге. Если отгадал ребус, иди на страницу такую-то, если не отгадал - на такую-то. Не знаю, почему вспомнилось.

И всё-таки, воспоминания -- они такие странные. Чуть подумаешь, что позабыл о чём-то, а оно вдруг снова появляется в твоём сердце. Будто лежит в потайном уголке и ждёт. Ждёт подходящего момента...

Да, пожалуй главное достижение этого лета - наша команда всё-таки перевела Chrono Cross, перевод уже какое-то время доступен на Steam. Проект, который опоздал на пару десятков лет. 😝 Кстати, скоро выходит Rise of the Golden Idol, очень хорошая игра-загадка, сделанная местной студией, перевод на русский язык тоже делаем мы (правда, опять же только текст - программу для русификации, насколько мне известно, делает другой энтузиаст). Это не реклама, просто соображения по теме.

Скоро увидимся.
❤‍🔥7🔥31🤯1
Немного расскажу о том, чем продолжилась эпопея с моими github actions и как go всем помог 😄 На паре стримов я рассказывал о том, как сделать свои действия для gh и опубликовать их на маркетплейсе.

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

Хотелось иметь возможность писать на привычном языке, где можно делать удобную обработку ошибок, проверку параметров и тому подобное. В результате, я решил переписать всю сложную логику на go, затем скомпилировать эти файлы для линукса, положить их в bin и вызывать оттуда во время исполнения действия.

Получилось нечто вот такое https://github.com/lokalise/lokalise-pull-action/pull/3/files Сделал простую программу для компиляции (тоже на го), чтобы выходной размер файлов был как можно меньше (они дополнительно ужимаются через upx). Дальше просто дело техники - поправить шаги, чтобы запускали эти бинарники. В целом, после первых тестов полёт нормальный, работает довольно шустро.

Так что вот ещё один пример, когда го может быть чрезвычайно полезен. К примеру, какой-нибудь ruby или elixir тут были бы, видимо, не слишком оптимальны. Да, Ruby в теории можно скомпилировать, но почти наверняка размер выходного файла окажется (не)приличным. Для Elixir пришлось бы делать контейнер docker, там разворачивать виртуальную машину erlang, это бы медленнее работало (хотя если вам известно другое решение - поделитесь!).
🔥17👍3🤯2
Читаю тут историю одного преподавателя, как он подловил студента на использовании ИИ (на уроке английского как родного), и вспомнил пару случаев.

Однажды на курсе "интернет-технологии" один хитроумный товарищ, который вообще не ходил на пары, заказал курсовую работу фрилансеру. Ну, просто отправил ему задание, я уж не помню, что там было, но что-то про js/html/css. Фрилансер сделал всё как полагается, но был слишком уж тщеславным. В частности, в package.json гордо прописал своё имя и сайт, которые я сразу и обнаружил. Студент о назначении package.json был, видимо, не осведомлён 😂

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

И вот вспоминаешь - а ведь забавно было. Буколические времена... https://www.youtube.com/watch?v=qovCTEb13vM&list=PLvpvIuRmmKtQ9COLtXZsO-QbAGIMwNzBA
😁14👍51
Не очень breaking news: вышла новая версия rails под номером 8. Похоже, каких-то критических изменений там нет, добавилось пару фич. Как сказал кто-то, DHH видимо очень не любит k8s и решил написать собственное решение. Впрочем, ещё не пробовал, ничего не могу сказать.

Если нужно тестировать под несколько версий rails сразу, учтите, что rails 8 требует ruby 3.2+.

Можно сделать так:

name: CI

on:
- push
- pull_request

jobs:
test:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest]
gemfile:
- Gemfile
- gemfiles/Gemfile-rails-6-1
- gemfiles/Gemfile-rails-7-1
- gemfiles/Gemfile-rails-7-2
ruby:
- '3.0'
- 3.1
- 3.2
- 3.3
exclude:
- gemfile: gemfiles/Gemfile-rails-7-2
ruby: '3.0'
- gemfile: Gemfile
ruby: 3.1
- gemfile: Gemfile
ruby: '3.0'
- gemfile: Gemfile
ruby: 3.1
runs-on: ${{ matrix.os }}
env:
BUNDLE_GEMFILE: ${{ matrix.gemfile }}
steps:
- uses: actions/checkout@v4
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.ruby }}
bundler-cache: true


Пример такого проекта тут https://github.com/bodrovis/lokalise_rails/blob/master/.github/workflows/ci.yml
👍133