Mad Devs Channel
1.6K subscribers
664 photos
30 videos
1 file
867 links
Канал Mad Devs.🤘Здесь мы рассказываем о жизни компании и инсайтах. Делимся знаниями и лайфхаками IT-индустрии.
Download Telegram
В объектно-ориентированном программировании есть паттерн «Хранитель» 🔒 Он позволяет сохранять состояние объекта и восстанавливать его в будущем. Этот паттерн может быть особенно полезен, если у вас есть объект с чувствительными данными, которые вы хотите сохранить или восстановить в случае сбоя программы.

Разбираем паттерн на примере в Java для класса «Текстовый редактор». Смотрите в карточках⬆️
👍3🔥3🤣2
Никто не ждал, а у нас новости по NFT!

Благодаря протоколу Ordinals, рынок NFT рождается заново, теперь уже на Bitcoin блокчейне!

Мы нехитрыми манипуляциями создали свой NFT в формате видео о Mad Devs. Он является не внешней ссылкой на видео, а инскрипшеном внутри самого блока, и значит файл полностью хранится в блокчейне и останется там навсегда!

А также, мы совместно с командой нашего клиента L15 совсем скоро запустим целый NFT маркетплейс, основанный на Bitcoin блокчейне и протоколе Ordinals, что откроет новые возможности для инвесторов, коллекционеров, и всех желающих работать с уникальными цифровыми активами в одной из самых проверенных и стабильных блокчейн сетей!

Следите за новостями о предстоящем запуске в наших социальных сетях 🤘
🔥11👍2👏2🤣1
CSS Blend Modes

Смешивание цветов в CSS - это тема, которая может показаться сложной, но она открывает множество возможностей для дизайна. И прелесть в том, что это зашито внутри самого CSS, что не требует изобретать подобный функционал самому. Давайте внимательнее рассмотрим эти самые CSS Blend Modes 👇

CSS Blend Modes реализует функционал, который позволяет нам контролировать взаимодействие цветов элементов и их фонов.

CSS Blend Modes работает на уровне цветовых каналов. Когда вы применяете один из режимов смешивания, CSS анализирует цветовые каналы (красный, зеленый и синий) каждого пикселя элемента и его фона. Затем, в зависимости от выбранного режима, CSS применяет определенную математическую операцию к этим каналам, чтобы получить новый цвет.

Например, в режиме multiply, значения цветовых каналов умножаются, что приводит к более темному результату. А в режиме screen, значения цветовых каналов инвертируются, умножаются, а затем снова инвертируются, что приводит к более светлому результату.

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

CSS Blend Modes является отличным инструментом в руках дизайнеров и разработчиков. Однако, чтобы полностью раскрыть его потенциал, требуется более углубленное понимание и практика.

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

Крайне рекомендуем к посещению и ждем ваших комментариев.
👍1
Bose — фреймворк для создания веб-ботов

На сегодняшний день разработка технологий искусственного интеллекта становится одним из приоритетных направлений. Однако это достаточно трудоемкий процесс. А что, если его можно упростить, но не жертвуя скоростью и удобством разработки?

В таком случае вам может помочь, Bose — это фреймворк, основанный на Selenium, и предлагает ряд функций, упрощающих процесс разработки ботов.

Настраиваем
Скопируйте изначальный шаблон и перейдите в скачанный каталог, установите зависимости и запустите проект.

Работаем
Допустим, вам нужно начать парсинг веб-сайта. Так как Bose использует декларативный и структурированный подход, то вам нужно только написать код, а драйвер сам передаст его методу run и закроет работу.

Конфигурация
В отличие от Selenium Bose Framework упрощает конфигурацию, инкапсулируя её.

Обработка исключений
С Selenium возникают исключения, которые закрывают драйвер, оставляя журналы для отладки. Со своей стороны, Bose оставляет браузер открытым при возникновении исключений, позволяя отслеживать состояние и упрощая отладку.

Отладка
Bose упрощает отладку, сохраняя информацию о каждом запуске в каталоге с тремя файлами. Если возникает исключение, Bose сохраняет каталог с ошибкой, что помогает идентифицировать проблему.

Вывод данных
Bose упрощает сохранение данных после парсинга веб-страниц, предоставляя модуль вывода для чтения и записи данных в формате JSON или CSV. Просто используйте метод write для указанного файла.

Локальное хранилище
Bose предоставляет объект LocalStorage, который позволяет сохранять данные при запуске браузера, аналогично локальному модулю хранения в современных браузерах. Это особенно полезно для сохранения больших объемов данных при очистке. Данные сохраняются в файле local_storage.json в корневом каталоге проекта.

Особенности Bose Framework:
📌 Применяются передовые методы для обхода обнаружения ботов.
📌 Сохраняет HTML, снимок экрана и информацию о выполнении для каждой задачи.
📌 Вспомогательные компоненты для записи очищенных данных в виде файлов JSON, CSV и Excel.
📌 Автоматически загружает и инициализирует правильный драйвер Chrome.

Вы уже работали с Bose? Расскажите о своем опыте 👇
👨‍💻3🤔21
⭐️ Большое интервью на Cybernews от Мэд Девс

Безопасность программного обеспечения — одна из самых серьезных проблем для компаний всех отраслей, независимо от их размера. Поэтому это самый горячий топик для обсуждения среди всех экспертов в Tech. Ловите инсайты от Андрея Сапожникова в большом интервью медиа-изданию Cybernews, где он поделился мнением о главных челленджах и трендах кибербезопасности сегодня, как Mad Devs внедряет новые технологии, что же ждет в будущем индустрию и многое другое:

https://cybernews.com/security/andrew-sapozhnikov-mad-devs-one-of-the-biggest-challenges-today-is-software-security/

Это именно то интервью, которое никак нельзя скипнуть!
🔥9👏4👍1
Известные и неизвестные ИИ для работы
ИИ уже вошел в каждый дом, в каждую сферу. Подготовили для вас список из известных и не очень ИИ, разбив их по группам.

👾 Для работы с кодом:
Autocode Позволяет мгновенно создавать и подключать конечные точки Node.js. Подключает вебхуки и ботов к API.
Replit Ghostwriter Ускоряет и упрощает кодинг
GitHub Copilot Вносит предложения по коду и функциям в реальном времени.

📚 Для работы с текстом:
Kickresume's AI Resume & Cover Letter Writer Позволяет создать полное резюме всего за три минуты, заполнив короткую анкету.
QuillBot Вносите грамматические, пунктуационные, орфографические и другие правки.
Talk to Books Общайтесь с книгами, чтобы лучше понимать, о чём произведение.
Akkio Помогает в развитии компании, подсвечивает факторы, которые помогают принять решение.
Articleforge Создает 100% оригинальные, SEO-оптимизированные, длинные статьи.

🗣️ Для работы со звуком/видео:
Fireflies.ai Записывает, расшифровывает и анализирует голосовые записи.
Narakeet Помогает преобразовать текст в реалистичную речь.
Synthesia Превращает текст в видео. Работает на 120 языках.

Используете ли вы в работе какой-нибудь инструмент? Расскажите в комментариях 👇
👍7
В чем разница между is() и == в Python?

На первый взгляд операторы is и == в Python выполняют похожие функции, но немного работают по-разному. Если вы новичок и хотите использовать сравнения в коде, то стоит понимать разницу. Сегодня разберем в чем разница между is() и ==?

В Python разница между оператором is() и оператором == заключается в том, как они сравнивают объекты.

Оператор is()
Проверяет, являются ли два объекта одним и тем же объектом в памяти. Он сравнивает идентичность объектов, то есть проверяет, указывают ли оба операнда на одну и ту же область памяти.

Оператор ==
Сравнивает значения двух объектов, а не их идентичность. Он проверяет, равны ли значения, хранящиеся в обоих объектах.

Например, если у нас есть две переменные a и b, и они указывают на один и тот же объект, то a is b вернет True. Однако, если a и b указывают на разные, но равные объекты, то a == b вернет True, но a is b вернет False.

Есть ли еще что-то в Python, что может запутать? Поделитесь своим мнением 👇
👍93👨‍💻1
The large, small, and dynamic viewport units

В CSS долгое время использовались единицы измерения области просмотра (viewport), такие, как vw и vh.

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

Что такое large, small, and dynamic viewport units?

Наконец, появились более современные единицы измерения, которые учитывают различные состояния области просмотра. Они включают единицы для большой (lv), маленькой (sv) и динамической области просмотра (dv).

Как это работает?

Единицы lv (например, lvw, lvh, lvi, lvb, lvmin, lvmax) используются для определения размеров элементов, когда все динамические интерфейсы пользователя, которые могут изменять размер области просмотра - скрыты или сжаты.

Единицы sv (например, svw, svh, svi, svb, svmin, svmax) используются для определения размеров элементов, когда все динамические интерфейсы пользователя, которые могут изменять размер области просмотра - видимы или расширены.

Единицы dv (например, dvw, dvh, dvi, dvb, dvmin, dvmax) используются для определения размеров элементов, которые динамически меняются в зависимости от текущего состояния панелей инструментов.

Какие достоинства мы имеем?

Новые единицы измерения поддерживаются свежими версиями браузеров Safari, Chrome и Firefox, а значит их использование позволяет значительно улучшить пользовательский опыт на всех ведущих платформах.

Также улучшается опыт разработчиков, поскольку устраняются сложности, связанные с динамическим изменением размеров области просмотра и соответствующим расчетом размеров элементов.

При изменении размера области просмотра, элементы могут автоматически изменять свои размеры или расположение, чтобы оставаться видимыми или оптимально отображаться на экране.

Элементы, такие как модальные окна или всплывающие уведомления, могут занимать определенный процент области просмотра, независимо от видимости панелей инструментов, и быть отображены в оптимальном размере, не перекрывая важную информацию.

Каковы сегодняшние ограничения?

Новые единицы пока не учитывают размер полос прокрутки. Это может привести к неточностям в определении размеров, где полосы прокрутки занимают значительное пространство.

Они не обновляются с частотой 60 кадров в секунду, отсюда и возможные задержки в обновлении размеров, особенно при быстром изменении размеров области просмотра.

Конечно же, возможны проблемы совместимости, если пользователи используют старые версии браузеров.

А насколько вы рады этим новшествам, и насколько они упростили вам жизнь? Поделитесь с нами в комментариях👇
👍3
Есть у нас в Mad Devs команда, которая работает над проектом, связанным с ЖД перевозками. Сегодняшнее задача по мотивам этого проекта - про поезда 🚂

На один из рейсов были проданы абсолютно все билеты. Всего в поезде было 11 вагонов и 381 место.

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

Итак, вопрос - сколько человек едет в девятом вагоне?

❤️ Мы видим, как сильно вам нравится решать наши задачи и это нас чертовски радует! Именно поэтому мы хотим порадовать вас в ответ и вручить приз первому подписчику, который даст правильный ответ на задачу в комментариях под этим постом. Победитель получит от нас классную брендированную толстовку 🎁
🔥7👍2
"Гибридные команды" или команды в которых рука об руку трудятся сотрудники из офиса и удаленщики, стали предметом обсуждения очередного Кибирда. В наши дни подобная система организации команд становится обыденностью, и важно понимать как подобные команды устроены изнутри: как они работают, какие преимущества и недостатки они имеют.

В этом видео Михаил Иващенко и Олег Пузанов проведут детальный анализ гибридных команд, основываясь на собственном опыте, и расскажут о всем, что вам необходимо знать на эту тему.

🔗 https://youtu.be/zzbf6qbM6pk
Приятного просмотра!
🔥9
Mad Devs Channel
Есть у нас в Mad Devs команда, которая работает над проектом, связанным с ЖД перевозками. Сегодняшнее задача по мотивам этого проекта - про поезда 🚂 На один из рейсов были проданы абсолютно все билеты. Всего в поезде было 11 вагонов и 381 место. В разных…
Решение задачи про поезд 🚂

Пронумеруем вагоны и обозначим каждый вагон своей переменной. Когда мы их сложим, то получим 381:

x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9 + x10 + x11 = 381

По условию три любых вагона подряд дают в сумме 99. Это значит, что:

x1 + x2 + x3 = 99

x4 + x5 + x6 = 99

x7 + x8 + x9 = 99

Заменим эти переменные на числа:

(x1 + x2 + x3) + (x4 + x5 + x6) + (x7 + x8 + x9) + x10 + x11 = 381

99 + 99 + 99 + x10 + x11 = 381

297 + x10 + x11 = 381

x10 + x11 = 84

С другой стороны, по условию в трёх последних вагонах тоже едет в сумме 99 пассажиров:

x9 + x10 + x11 = 99

Вычтем отсюда предыдущее уравнение:

(x9 + x10 + x11) − (x10 + x11) = 99 − 84

x9 + x10 − x10 + x11 −x11 = 15

x9 = 15

Получается, что в девятом вагоне едет 15 человек. Кстати, в третьем вагоне тоже 15 человек, потому что он девятый с конца. Такая вот математика 🤓
👍5
Mad Devs Channel
Есть у нас в Mad Devs команда, которая работает над проектом, связанным с ЖД перевозками. Сегодняшнее задача по мотивам этого проекта - про поезда 🚂 На один из рейсов были проданы абсолютно все билеты. Всего в поезде было 11 вагонов и 381 место. В разных…
Трое наших подписчиков дали правильный ответ и указали, что в девятом вагоне едет 15 пассажиров. Первым правильный ответ дал Адилет Акылбеков 🥳

Адилет, поздравляем вас с победой! Сегодня наш менеджер свяжется с вами, чтобы договориться о передаче вашего выигрыша - нашей брендированной толстовки. Ждем ваших решений в следующих задачах.
🔥12👏3