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

Условие: Вы поднимаетесь по лестнице, но не знаете сколько ступенек вам предстоит пройти. Вы можете на каждом шагу наступать на каждую ступеньку или шагнуть через одну, пройдя сразу 2 ступеньки за один шаг.

Например, если у лестницы всего 4 ступеньки, то варианты будут такие:

1→1→1→1

1→1→2

1→2→1

2→1→1

2→2

Задание: Вам нужно найти число способов, которыми можно подняться по лестнице из 5 ступенек.

Сами варианты выводить не нужно, достаточно общего количества
🔥9🤯1
Пришло время узнать решение

Задачка оказалась со звездочкой. При каждом шаге у вас появляется выбор — шагнуть на одну или на две ступеньки. Начиная с третьей ступени количество вариантов начинает зависеть от предыдущего и предпредыдущего шага:

• для третьей ступеньки — от количества вариантов на второй и первой;
• для четвёртой ступеньки — от количества вариантов на третьей и второй;
• для пятой ступеньки — от количества вариантов на четвёртой и третьей.

Эта схема отлично укладывается в рекурсию. Единственное, с чем нам осталось разобраться, — с этими начальными значениями.

• Если ступенек нет, рекурсия должна вернуть тоже ноль вариантов.
• Если ступенька одна, то возвращаем тоже один вариант — это один шаг.
• Если ступеньки две, то тут уже два варианта: 1→1 или сразу шагнуть на 2.

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

Чтобы было удобнее, все расчёты по каждой ступеньке будем хранить в массиве — так проще будет с ними работать. Зная всё это, напишем простую рекурсию на Python:

# функция расчёта количества вариантов
def climb(n):
# разбираем крайние случаи
# если нет ступенек — возвращаем 0 вариантов
if n==0: return 0
# если одна ступенька — её можно перешагнуть только одним способом
if n==1: return 1
# если две ступеньки — то двумя способами: 1→1 или сразу 2
if n==2: return 2
# создаём массив из заданного количества ступенек +1
# в нём будет храниться количество вариантов шагов для очередной ступеньки
dp = [0]*(n+1)
# первую ступеньку можно перешагнуть только одним способом
dp[1] = 1
# вторую — уже двумя способами
dp[2] = 2
# перебираем все ступеньки, начиная с третьей, потому что как пройти первые две, мы уже знаем
for i in range(3,n+1):
# до каждой следующей ступеньки можно добраться одним или двумя шагами с предыдущих
dp[i] = dp[i-1] +dp[i-2]
# в конце — возвращаем количество вариантов для последней ступеньки
return dp[n]

# считаем количество вариантов для пяти ступенек
print(climb(5))

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

А сколько времени ушло у вас?
4
Промт-инженер – профессия будущего

Если вы все это время ловили себя на мысли, что все эти GPT-Midjourney-нейросети покушаются на ваши рабочие места, то есть интересная новость. Пока все хихикают над тем, какие получаются выдачи в виде лишних пальцев на картинках и прочее, зародилась новая профессия, которая с этими конфузами борется – Промт-инженер.

Как вы уже поняли, что в работе с алгоритмами важнее всего задать вопрос. Более того, AI нужно учиться как на правильных и неправильных «хотелках» пользователей. Промт-инженер (Prompt Engineer) - это специалист, который занимается созданием подсказок для нейросетей и других языковых моделей с целью получения нужного результата. Он разрабатывает такие подсказки, которые позволяют нейросетям быстро и точно решать поставленные задачи.

Microsoft уже выпустила инструмент, который позволяет пользователям создавать подсказки для больших языковых моделей - Microsoft Prompt Engine. Инструмент является открытым и доступен на GitHub.

Если вы задумывались, какие IT-навыки будут востребованы в будущем, то промт-инженеринг - это один из потенциальных вариантов.
7🤯2🔥1
5 сервисов, о которых полезно знать

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

Посчитайте сами, любой актуальный айфон со скачанными приложениями гарантирует положительный пользовательский опыт на протяжении 3 - 5 лет при цене вопроса в +- 500 долларов.

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

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

Сегодня мы хотим поделиться с вами некоторыми из них

🔹Whiteboard

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

🔹Blush

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

🔹What Runs

Это крайне полезный инструмент, который показывает все, на чем работает интересующий вас сайт. Какую он использует CMS, Analytics, Frameworks, Plugins, Widgets, Font Scripts, Miscellaneous. Маркетологи, дизайнеры, разработчики и все, кому интересно на чем построен этот необычный сайт - о вас позаботились.

🔹Flourish

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

🔹Untools

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

Надеемся, вам по душе такие подборки и вы смогли найти здесь полезные ресурсы. Если вы знаете подобные решения в вебе, которыми хотели бы поделиться, то пишите о них в комментариях и мы рассмотрим их в одном из следующих постов👇
👍72🔥1
Трюк в 7 минут

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

Трюк очень прост. Нужно следующее:

📎 Возьмите таймер и поставьте его ровно на 7 минут.
📎 Поговорите с собой в таком ключе «Я сейчас ровно 7 минут поделаю эту задачу. От этого мой день кардинально не поменяется. Несколько минут я буду держать концентрацию, а потом поделаю все, что захочется. Что я от этого теряю в конце концов?»
📎 Определите в этой большой задаче, что вы можете делать без особого напряга, принятия решений. Что-то должно быть незначительное, а лучше «механическое».
📎 Выполните это, пока не зазвонит таймер.
📎 Когда таймер зазвонит - остановитесь, даже если не дописали строчку кода/предложение. В этом есть психологический маневр, что вы создаете ожидание. А это дает буст вернуться и завершить начатое в следующий раз.

Так маленькими шажками, вы подступаете к завершению задачи. Суть трюка в том, что это помогает вытаскивать себя и свою работу, соответственно, из состояния покоя и двигаться из мертвой точки. Подумайте, 7 минут всегда найдутся! 😉
👍81🤔1
Нотации модели сущность-связь (Как строить ER диаграммы)

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

Именно для этого используются ER-диаграммы, которые помогают в моделировании сущностей и их отношений с помощью графической нотации.

Например, рассматривая работу кинотеатра, сущностями могут быть зал, фильм, билет, а отношениями - продавать (билет) и показывать (фильм).

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

Также, такие инструменты как MS Access или MS SQL Management Studio могут полностью не соответствовать имеющимся нотациям и не подходить для использования в документах или презентациях.

Тем не менее давайте рассмотрим популярные нотации, их достоинства, недостатки, а также подходящие инструменты для их создания.
🔥4👍1🤯1🎉1
Разработка мобильных приложений имеет свою специфику, поскольку требует множества знаний касательно особенностей платформ, устройств и прочего.

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

Поработайте над софт скиллами. Они помогут вам быстрее и качественнее совершенствовать все остальное.

📌 Поддерживайте активную коммуникацию участвуя в статус-чеках и дейликах. Так вы актуализируете свое место в проекте и среди других его участников.

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

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

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

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

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

📌 Использование тактильной отдачи огромный ресурс для дизайнера, и очень помогает сделать навигацию лучше для пользователя.

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

📌Работайте с QA. Она поможет заранее писать код так, чтобы его проверка была наиболее эффективной.

📌 ГЛОНАСС/GPS. Сюда можно внести всю необходимую информацию для проверки работоспособности модуля, как проверить текущую локацию пользователя, сколько доступно спутников и тд.

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

📌 Также можно добавить информацию для проверки barcode или QR-кодов.
1🤔1
Должны ли совпадать языки программирования вашего ПО и автотестов?

Существует множество языков программирования, которые можно использовать для автоматизации тестирования, каждый из которых имеет свои преимущества и достоинства. Итак, пройдемся по самым популярным:

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

🔹Python известен своей читабельностью, что облегчает сопровождение и обновление тестовых сценариев. Кроме того, Python имеет множество тестовых фреймворков и библиотек, таких как PyTest и Selenium, которые довольно популярны для автоматизации тестирования.

🔹JavaScript часто используется в автоматизации тестирования. Одним из основных преимуществ использования JavaScript для автоматизации тестирования является его способность “бесшовно” работать с веб-браузерами, что идеально подходит для тестирования веб-приложений. Кроме того, JavaScript имеет множество фреймворков для автоматизации тестирования, таких как Jasmine и Mocha.

🔹Ruby выделяется простотой, читабельностью и гибкостью, что позволяет легко писать и поддерживать сценарии тестирования. У Ruby также есть множество фреймворков для тестирования, например, RSpec и Cucumber. Кроме того, Ruby имеет сильное сообщество разработчиков, что означает наличие большое количество ресурсов и инструментов для автоматизации тестирования.

🔹C# предоставляет широкий спектр инструментов и фреймворков для тестирования, таких как NUnit и Selenium. C# также хорошо интегрируется с Microsoft Visual Studio, что делает его лучшим выбором для приложений на базе .NET.

♦️ Перейдем же к самому вопросу. Должны ли матчиться или нет?

Аргументы ЗА
Это может упростить процесс тестирования - обмен кодом между программным обеспечением и тестами происходит быстрее и легче писать тесты. Также, более тесное соответствие тестов функциональности программного обеспечения повышает точность тестов и облегчает выявление и исправление ошибок.

Аргументы ПРОТИВ
Использование разных языков может обеспечить большую гибкость в плане инструментов и фреймворков для тестирования. Разные языки могут иметь различные библиотеки и фреймворки для тестирования, которые лучше подходят для конкретных сценариев тестирования или предлагают более продвинутые функции, чем те, которые доступны в языке, используемом для программного обеспечения.

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

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

Триггеры этого синдрома делятся на внутренние и внешние.

🔘 Сначала разберем внешние:
Внешними триггерами могут выступить комментарии или правки, которые приходят от вашего ПМа, ментора, техлида. Довольно частая вещь, особенно если вы работаете в большой команде/компании. Единственный способ работать с этими триггерами — открыто обсудить тон коммуникации. Уверены, что люди вокруг меньше всего хотят напряженности и недопонимании в рабочей среде.

🔘А теперь перейдем к методами для внутренних триггеров. Есть 3 рабочие схемы:
1️⃣ Ревью
Вспомните все реализованные проекты, решения и навыки, которые вы приобрели. Поможет «поднять» все свои презентации, документы. Так вы увидите реальные факты, а не фантазии, которые и провоцируют этот синдром.
2️⃣ Злость
Как только слышать тоненький голосок, который говорит, что вы недостойны должности, попробуйте прям возмущаться ему. «Как этот синдром смеет мне мешать?!» Подумайте о нем, как о противнике, которому нельзя никогда сдаваться. Разозлитесь на «него» и не идите от обратного, даже на зло.
3️⃣ Честный разговор
Можно попробовать определить, почему же вы считаете себя самозванцем. Каких навыков у вас нет? Что заставляет вас думать о том, что это не ваше место. Как только определите, оцените, что из этого основано на эмоциях, а что реально имеет место быть. Это поможет вам открыто поговорить с собой, но и составить план действий, который поможет вам вырасти и больше не сомневаться в себе.

В любом случае, помните, что «синдром самозванца» чаще всего основан на субъективном восприятии ситуации. Все мы люди, которые могут ошибаться и достигали всего постепенно. Будьте добрее к себе и помните о способах выше. ☝🏻
👍112🫡2
Data Science в 2023 году: какие навыки будут востребованы?

Будущее обещает быть интересным для специалистов по Data Science, ведь компании всё больше ориентируются на использование данных для оптимизации своих бизнес-процессов. Что же ждут компании от таких специалистов в 2023 году? Разберем по полочкам!

⚙️ Стек
Вакансии в этой области все еще требуют знания SQL, Python, ML и DS/ML-библиотек, а также Hadoop, Spark и Hive. Однако, появились новые требования, которые можно выделить, такие как опыт работы с облачными платформами и понимание принципов DevOps. Некоторые компании также просят показать опыт в построении CI/CD для ML-моделей.
Кроме того, работодатели все больше интересуются общими IT-компетенциями кандидата, такими как умение работать с Git. Например, опыт работы с контейнеризацией и понимание того, что данные не берутся просто из файла, а хранятся в кластере.

🧑🏻‍💻 Практика, а не теория
Теперь рекрутеры все чаще обращают внимание на практический опыт работы кандидата. Это означает, что часть собеседования будет проходить в формате кейс-интервью. Что можно ожидать? Примерно такое – Описать пошагово процесс построения модели машинного обучения на основе набора данных или рассказать, как различные алгоритмы будут работать с определенными данными.

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

Рекомендуем учесть все вышеперечисленное, если вы видите себя в Data Science.
👍6💔1
Релиз Google Chrome 111 и добавление View Transition API

В своем релизе Chrome 111, Google добавили View Transition API - программный интерфейс, который позволяет изменять DOM веб-страницы и создавать анимированные переходы между двумя состояниями в один шаг.

🔸View Transition API использует Web Animations API для создания продвинутых анимаций и эффектов переходов на веб-странице.
🔸Позволяет быстро и легко создавать плавные и динамичные переходы между начальным и измененным состояниями DOM.
🔸И может использоваться с другими инструментами веб-разработки, такими как CSS и JavaScript, для создания более сложных эффектов.

Чем это лучше старых решений?

🔹View Transition API обеспечивает более эффективный процесс изменения DOM веб-страницы, чем традиционные методы.

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

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

🔹Дает больший контроль за процессом анимации как Старт, пауза, продолжение и остановка.

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

Однако, имейте в виду, View Transition API доступен только в Google Chrome версии 111 и выше, поэтому код написанный с его использованием может некорректно работать в предыдущих версиях Chrome.

А вы уже успели попробовать новые возможности? Поделитесь своими впечатлениями в комментариях!
2👍1🤯1
У нас появилось много новых подписчиков и мы хотим познакомиться с вами ближе.

Поэтому в течение нескольких дней мы будем задавать вопросы, ответы на которые помогут нам стать для вас еще полезнее🙌
👍6🤨3
Ранее мы говорили, что наша команда примет участие в КИТ 2023 - крупнейшем форуме информационно-коммуникационных технологий в Кыргызстане, где ключевые игроки обсудят технологические проблемы и решения, пути развития и способы внедрения инноваций.

Наш проектный менеджер Дмитрий Кононенко выступит с докладом на тему "Почему данные должны лежать в основе качественных решений и как Enji.ai помогает Mad Devs в этом". Кроме того, наши проектные менеджеры и agile-адепты Жазгуль Зуридинова и Бекмырза Джекишев проведут две интерактивые игры - ball point game и marshmallow tower для тех, кто хочет попробовать новые механики в работе с командой. Команда Mad Devs также будет ждать вас в выставочной зоне, где на стенде разыграет фирменный мерч, который получат сразу 3 победителя конкурса.

С условиями конкурса вы сможете ознакомиться в ближайшее время. Они будут опубликованы в stories инстаграм и будет более подробный пост, поэтому подписывайтесь и будьте в курсе событий!

📅 29 апреля 2023 9:00 - 16:00
📍 "Bilimkana Arena", проспект Чынгыза Айтматова 1а, Бишкек
Зарегистрироваться на ивент можно здесь.
🔥7💔1