Чашка Кода
457 subscribers
255 photos
5 videos
2 files
162 links
👋 Я - Никита, автор курсов и лекций по Python-разработке. Пишу на Python и Rust

✏️ В этом канале посты, которые сделают твой путь к веб-разработке проще

Задать вопрос, позвать на конференцию, записать со мной курс/статью/подкаст
👉 @PySage
Download Telegram
🫥 Чем хорош Rust для продакшена? (с) - Часть 1

Несмотря на то, что Rust - один из самых любимых языков среди разработчиков, среди компаний популярностью он пока не пользуется. Это подтверждает статистика HH.ru: rust - 70 вакансий, python - 2500+ вакансий. Разберёмся: в каких случаях компании стоит выбрать Rust?

🪐 Для каких проектов подходит Rust?

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

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

Преимущества языка:

Надёжность и стабильность
Язык rust славится своей надёжностью, на него перешли в npm - 1.3 миллиарда скачиваний в сутки требуют надёжной инфраструктуры. Особенно важно то, что баги, обнаруженные в продакшене, исправлять дороже и дольше в 30 раз, чем обнаруженные на проработке, и в 6 раз относительно этапа разработки (исследование). Так что использование rust с его строгой типизацией и особенной работой с памятью позволяет значительно снизить расходы и упростить рефакторинг.

Мнение сотрудников x(twitter) и npm лишь подтверждает этот тезис.

#просто_о_сложном #находки
Please open Telegram to view this post
VIEW IN TELEGRAM
🦄4👍2🔥1
🫥 Чем хорош Rust для продакшена? (с) - Часть 2

Продолжаем тему Rust и его преимуществ для компании. А первая часть поста тут.

Предсказуемость при работе
Эта особенность связанна с предыдущей, особенно в отношении того, что важнее не скорость работы процесса, а консистентность. В Discord перешли с языка Go на Rust именно из за проблемы непредсказуемости работы сборщика мусора в Go.
Мнение сотрудников Discord и Cloudflare: "Для пользователя равномерная скорость работы сервиса значительно важнее быстродействия ввода-вывода"

Сокращение затрат
Rust отличается низкими издержками при выполнении. По этой причине сервис AWS Firecracker написан на rust.

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

🔊 Моё мнение по использованию Rust:
Python идеальный язык, чтобы написать MVP и запустить сервис. Однако, когда тот уже готов и показал свою прибыльность, переписывайте его на rust! Rust обеспечивает качественную поддержку и расширение, что существенно экономит как денежные, так и временные ресурсы.

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

#просто_о_сложном #находки
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍1👾1
Подсмотрели у капибары лайфхак и сразу бежим делиться с вами! 💥

А какую рекламу любите вы (если вообще такая есть)? А вот выбор нашей редакции, олды оценят.

#мемы
🦄62
Я не верю в эзотерику, но у меня точно есть проклятие. Кстати, вы знали, что есть эзотерические языки программирования?

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

📌 В 2015 году не смог начать работать с C# (и слава богу), потому что мой компьютер не поддерживал его.

📌 В 2021 не смог поставить себе windows 11 из-за особенностей процессора.

📌 Бессчётное количество раз уже переустанавливал Ubuntu, но каждый раз происходит какая-то проблема: то установочный диск форматируется, то система "неправильно" ставится.

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

📌 Я даже смог сломать налоговую, у меня в графу "номер паспорта" внесена буква, из-за чего налоговая не может передать мои данные в сторонние API, так как те принимают только числа.

📌 Нет ни одной компьютерной игры, в которой я бы не находил баги.

Возможно мне стоило стать QA и ломать системы за деньги?🤔 А какие трудности в программировании встречаете вы?

#мысли
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥61🦄1👾1
🫥 БАЗЫ — то, что нужно любому разработчику

В этот раз поговорим про git - систему контроля версий. Вы наверняка слышали про гит. Без него сложно представить коммерческую разработку. Но даже если вы знакомы с ним, то первый мердж реквест (запрос на слияние) точно запомнится вам на всю жизнь 😁

🟡 Казалось бы, почему такой важный инструмент, которым пользуется каждый разработчик, выглядит таким сложным или даже пугающим? Я уверен: дело в том, что не хватает практики. И в случае с гитом, без реальных проектов её найти не очень легко.

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

1️⃣ Реальный репозиторий для практики: подробные инструкции на более 50 языках! Вот на русском. Буквально по полочкам разложен процесс того, как работать с гитом. Для тех, кто ещё не работал с гитом ознакомление обязательно.

2️⃣ Игра про гит - геймифицированный опыт всегда работает хорошо. Скачивайте и прокачивайтесь!

3️⃣ Изучение команд гита с визуальным отображением — по названию всё и так понятно. Если вам не хватает визуального отображения действий при работе с гитом, то тут можно понять, что именно происходит при использовании разных команд. Подходит даже тем кто уже работает с гитом, тут подробно изучаются команды вроде cherry-pick. Отдельный плюс — всё на русском.

Делитесь в комментариях, как вы изучаете современные инструменты для разработки 🔽

#находки #мудрость_на_каждый_день
Please open Telegram to view this post
VIEW IN TELEGRAM
🦄6👍2🔥1👾1
🫥 Неожиданное открытие!

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

А вы говорите, что роботы не имеют чувств... 🫶

PS. Прочитал статью о том, как используя БЯМ, делают открытия в математике и других науках. БЯМ - большие языковые модели, вроде чата GPT.
Учёные дают чату основную версию кода и улучшенную, которая почти решает задачу и просят дописать третью часть. Третья часть как раз и должна решить проблему, решения для которой нет у человечества 🤖

Попробовал такой же подход, и действительно стало проще работать с чатом! То есть мы даём ему 1 и 2 шаг, просим добавить 3. Потом можно попросить и 4, 5 и так далее. Конечным итогом, который вам нужен, может быть и 10 шаг.

🔆 По сути это декомпозиция, просто интересный взгляд на неё.

#находки #мысли
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🤔1👾1
👀 Заметили, что наша капибара часто заказывает периферию и решили проследить за ней.

А вы пользуетесь корпоративным оборудованием? ⬇️

#мемы
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🦄2
🚀7 секретов освоения алгоритмов🚀

Решил 400 задач на литкоде, что бы выучить Python. Вам достаточно решить всего 150, чтобы получить работу, даже если вы хотите работать в Google или Yandex!

Проанализировал несколько мнений о порядке решения задач и дополнил своим:
(вот самые ценные мнения: одно, другое - оба автора получили оффер в Google!)

🟣Решать задания нужно тему за темой. Сначала простые, потом сложные задания
🟣Решайте одну задачу не более 40 минут
🟣Если не успеваете решить, отрывайте разбор задачи (editorial) если он есть, либо решения (solutions)
🟣Читайте 2-3 варианта решения, пока не поймёте алгоритм
🟣Возвращаетесь к задаче и решаете её так, как поняли
🟣Как только вы научитесь решать задачи менее, чем за 40 минут, переходите к следующей сложности easy -> medium -> hard
🟣На любом уровне сложности используются одинаковые алгоритмы, просто сложные задачи более комплексные

⁉️ Какие именно задачи решать?

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

🟠В каждой теме только бесплатные задания с ссылкой на литкод
🟠Для каждого задания добавляю описания заданий на русским языке, алгоритмическое решение и реализацию на языках Python и Rust
🟠 Приятный бонус: сайт сделан как документация, так что после него будет легко читать большинство документаций

Иностранный аналог - roadmap (часть заданий премиум, но есть "бесплатная копия")

Поздравляю, всего за один час в день вы научились решать алгоритмические задачи!

А я как раз сейчас учу rust именно по этим заданиям, так что решения выкладываю по мере прогресса ✍️

#python_полезности #находки
Please open Telegram to view this post
VIEW IN TELEGRAM
🦄5🔥32👍2👾1
Нотация Большой О (Big O Notation)

Научиться решать алгоритмы — это только полдела. Нужно ещё уметь анализировать их на эффективность. Чаще всего для измерения эффективности алгоритма используется Нотация Большой О (Big O Notation) и записывается как O(n), то есть большая О и какой-то показатель n.

🟣 Что такое `O(n)`?
Это математическое описание сложности алгоритма. Для записи используется алгебраическое обозначение, где в скобках указывается зависимость от входных данных(обычно длины).

Пример:
Сложность сортировки выбором равна O(n²). Такая сложность читается, как "О(большая) от n в квадрате". Буква n представляет размер полученных данных. Запись (n²) показывает, что для сортировки потребуется количество действий, равное длине входных данных в квадрате.

🟣Зачем нам это нужно?
Представим игру Судоку. Когда пользователь вводит число, необходимо проверить, что оно не встречается в ряду, столбце и подквадрате. Общий размер входных данных, при максимально заполненном судоку, равен 81 числу (9 * 9). Мы воспользуемся оценкой асимптотической сложности, где будем измерять "условные" действия.

🟣Самые популярные сложности алгоритмов:

🟣 O(1) - при константной сложности всегда будет одинаковое количество действий, даже если судоку 100 на 100 ячеек.
🟣 O(log n) - логарифмическая сложность означает значительное сокращение при увеличении. Судоку 9*9 требует 6 действий (log81(2) = 6.33), а 100*100 потребует всего 13 действий.
🟣 O(n) - линейная сложность напрямую зависит от входных данных. Судоку 9*9 => 81 действие, 100*100 => 10_000.
🟣 O(n²) - квадратичная сложность означает значительное увеличение операций относительно увеличения входных данных. Так для 9*9 => 6_561 операций, а 100*100 требует 100 миллионов действий!

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

💬Подробнее про нотацию большой О
💬А вот моё решение судоку
Please open Telegram to view this post
VIEW IN TELEGRAM
👾6👍21
🚗 А вы хорошо себя вели в уходящем году?

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

Как думаете, какой подарок она заготовила для вас? 🎁

Напишите в комментариях ваш самый добрый и хороший поступок, который вы сделали в этом году. Вдруг капибара что-то упустила? 🔽

#мемы
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🦄3🔥21👾1
👋 Розыгрыш 3-ёх карьерных созвонов

За последние годы моя жизнь сильно изменилась, но главное, что она изменилась к лучшему! ❤️

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

🤖 В самом начале было сложно понять, что вообще делать, что учить и почему всё именно так. Много источников информации, каждый эксперт рассказывает по-разному, на ютубе множество видео в духе «как пройти собеседование в IT», но проконсультироваться с реальным человеком, экспертом - возможности не было.

🔔 Поэтому на этот новый год я решил разыграть 3 карьерных созвона

⭐️ Подпишитесь на канал «Чашка кода»
⭐️ Поставьте «+» в комментариях под этим постом
⭐️ 8 января с помощью рандомайзера я разыграю подарки!
Please open Telegram to view this post
VIEW IN TELEGRAM
🦄43👍3🔥1
🎆 Прошло полтора года с момента, как я занялся рефлексией и прокачиванием своих навыков. Поскольку изначально я завёл этот канал ради рефлексии о том, как выйти на работу за год, то пора подвести итоги.

▶️ Разработка — это не про написание кода.

До выхода на работу я каждый день писал код 7-10 часов в день. На работе я пишу код не больше 4 часов в неделю. В основном работаю с базами данных (у друзей такого нет, видимо мне просто "повезло"), прихожу на созвоны, обсуждаю задачи с командой и читаю код.

🟣 Вывод: Больше всего я писал код, только пока учил программирование и проходил собесы, реальная работа это, в лучшем случае, 20-30% процентов кода.

▶️Записывать курсы и другие учебные материалы — сложно.

До IT у меня был опыт обучения сотрудников разного уровня, но это почти всегда была работа 1 на 1, когда мы общались лично с человеком долгое время. В IT успел поучаствовать в записи курса, а впереди ещё один. Это оказалось очень сложно, начиная с момента проработки учебных материалов и заканчивая бесконечными перезаписыванием.

🟣 Вывод: Обучение и подготовка курсов занимает много времени, сил и других ресурсов, при этом многие курсы получаются плохими.

▶️Хорошая работа всегда зависит от хорошего самочувствия.

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

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

🕯 Друзья, желаю всем в новом году никогда не сдаваться, ставить себе реальные цели, правильно рассчитывать силы и верить в чудеса, ведь они действительно случаются!

#мой_путь #мысли
Please open Telegram to view this post
VIEW IN TELEGRAM
8🔥3🦄1👾1
❄️Друзья, новогоднее бинго!

Я календарь переверну... и снова 3 января! Признавайтесь, все уже доели новогодние салаты, или у кого-то в холодильнике ещё лежит оливье? 😋

Давайте вспомним собеседования, которые мы проходили в прошлом году. Если получилось собрать три варианта в ряд или по диагонали — у вас бинго! 🌟

А если вы ещё пока не проходили собеседований, запоминайте вопросы.

Какие самые глупые, каверзные или надоедливые вопросы вам задавали на собеседованиях? 👇

#мемы
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3👾21🦄1
🫥 3 признака, что вы прирождённый айтишник

1️⃣ Вы не боитесь ошибок и когда всё не работает.
Представьте, что утром вы решили приготовить сэндвич. Вы берёте хлеб, нож, но при намазывании масла оказывается, что нож не режет масло. Заменив нож вы понимаете, что масло слишком холодное. При намазывании масла хлеб оказывается слишком тонким...

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

2️⃣ Вы готовы каждый день улучшать свои навыки и "прокачиваться".
Каждый день, каждую неделю нужно что-то изучать. Индустрия развивается супер-быстро, и не прокачивая свои навыки вы будете неизбежно отставать. 🦾

Причём, даже если вы будете прокачиваться постоянно, вы можете не успеть. 9 месяцев я каждый день решал алгоритмы и всё равно не прошёл отбор в Яндекс. Сдадитесь после такого или продолжите прокачиваться?

3️⃣ Вам интереснее разбирать конструктор , чем собирать.
Работа программиста зачастую описывается как "если мы не знаем как решить задачу, мы разбиваем её на подзадачи и теперь мы не знаем, как решить много задач". Нужно быть готовым к тому, что получив задачу, вы не сможете её сделать. Сначала вы разделяете задачу на много задач поменьше, потом каждую из них ещё меньше, и в итоге вы решаете огромное количество маленьких задач, чтобы решить одну.

🫥 Получили три совпадения? Тогда IT - точно для вас! А если даже не получили, то есть позиции не разработчиков и они тоже интересные. К примеру, работа продакта состоит в делегировании выполнений задач разработчикам, а сам он общается с бизнесом.

Делайте "тык" на одну картинок и получите IT-суперспособность! 🔴

#мемы #мудрость_на_каждый_день
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3🤔21👾1
3️⃣ главных концепции программирования

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

🟣 Последовательности:
Часто нам недостаточно хранить данные с фиксированным размером. К примеру, списки покупок, контакты в телефонной книге и оценки в школе могут дополняться. В таком случае, нужны структуры данных, позволяющие легко добавлять и/или убирать значения. Вот основные структуры данных:

*️⃣Списки — хранят значения (не обязательно одного типа) с фиксированным порядком:
grades = [5, 5, 4, 5, 5]

*️⃣Множества — для уникальных значений, порядок случайный:
goods = {"яблоки", "мандарины", "киви"}

*️⃣Словари (хэш-таблицы) — хранят пары значений. По сути — это множества для каждого элемента, для которого имеется связанное значение:
storage = {"яблоки": 5, "мандарины": 2, "киви":1}

🟣Ветвления:
Позволяют выполнять (или не выполнять) операции при определённых условиях.
Псевдокод:
Если есть_деньги:
потратить(...)
Иначе:
расстроится(...)

Python:
if have_money:
spend(...)
else:
cry(...)


🟣Циклы:
Позволяют выполнять действия, пока выполнятся (или не выполняется) условие:
Псевдокод:
Пока есть_деньги:
потратить(...)
# деньги_кончились

Python:
while have_money:
spend(...)
# money_gone

Изучив эти темы, можно смело называть себя разработчиком и реализовывать всё что угодно! А все остальные навыки приходят с опытом 👍

#просто_о_сложном
Please open Telegram to view this post
VIEW IN TELEGRAM
🦄4👍1🔥1👾1