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

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

Задать вопрос, позвать на конференцию, записать со мной курс/статью/подкаст
👉 @PySage
Download Telegram
This media is not supported in the widget
VIEW IN TELEGRAM
1022
👩‍💻 Любите разбираться в чужом коде? Я - нет!

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

Я написал решение, в котором перебираю отсортированный массив и считаю, сколько вхождений в строку каждого числа. Если текущее число встречается чаще, чем прошлое, то его и сохраняем. Вот код:
class Solution:
def majorityElement(self, nums: List[int]) -> int:
nums.sort()
max_seen = 0
max_seen_num = nums[0]
current_streak = 0
prev_num = nums[0]

for num in nums:
if num == prev_num:
current_streak += 1
else:
current_streak = 1

prev_num = num
if current_streak > max_seen:
max_seen = current_streak
max_seen_num = num

return max_seen_num


Казалось, что тут даже нечего обсуждать, но я решил сократить решение. Если у нас будет всего два уникальных числа, то те числа, которых больше, должны занять больше половины всего списка. Таким образом, достаточно вернуть центральный элемент отсортированного массива. И используя анонимные функции, можно написать даже так:
class Solution:
majorityElement = lambda _, nums: sorted(nums)[len(nums)//2]


Код уже достаточно сомнительный, но я зашёл в решения и посмотрел самое эффективное. Вот оно:
(bytes('浩潰瑲猠慴楴瑳捩ੳ⁦‽灯湥∨獵牥漮瑵Ⱒ✠❷਩潦⁲楬敮椠瑳楤㩮 †渠浵敢彲捯畣敲据獥㴠搠晥畡瑬楤瑣氨浡摢㩡〠਩††畮獭㴠氠獩⡴慭⡰湩ⱴ氠湩⹥獲牴灩⤨ㅛⴺ崱献汰瑩✬⤩਩††灵数⁲‽敬⡮畮獭⼯㈠ †映牯渠浵敢⁲湩渠浵㩳 †††渠浵敢彲捯畣敲据獥湛浵敢嵲⬠‽਱††††晩渠浵敢彲捯畣敲据獥湛浵敢嵲㸠甠灰牥਺††††††牰湩⡴畮扭牥 楦敬昽਩††††††牢慥੫硥瑩〨','u16')[2:])


🤔 И вот тут уже возникли вопросы, а точнее всего один:
"Что вообще тут происходит!?"


🌩 Оказалось, что всё очень просто, это закодированный в utf-16 код. При кодировании в Unicode, в начале добавляется специальный маркер и в коде выше его убирают, используя [2:]. Если раскодировать это решение, то код будет такой:
import statistics

class Solution:
def majorityElement(self, nums: list[int]) -> int:
return statistics.mode(nums)


🔩 Что происходит я понял, а вот зачем так делать - нет. Может вы знаете? Пишите свои версии в комментарии

🍰 #it #python #алгоритмы
Please open Telegram to view this post
VIEW IN TELEGRAM
5211
🤔 Говорят, что только фейк-сеньоры любят рабочие созвоны. А как считаете вы?

🍰 #it #мемы
Please open Telegram to view this post
VIEW IN TELEGRAM
5311
🔥 Что нужно изучить до того, как начать программировать?

Обновим самый популярный пост в канале!

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

Что нужно разработчику и в каком порядке изучать, на картинке к посту🔝

Основные моменты:
🔴 Отличный бесплатный курс по MySQL, после него стоит перейти на PostrgeSQL. На самом деле не важно чем вы пользуетесь, подходит даже SQLite.
🔴 Обязательно решите 23 лёгких задания тут. Потом решите вообще все задания.
🔴 Необходимо понимать, как запустить БД в контейнере ➡️ бесплатного курса по Docker.
🔴 Если вам понравятся БД и вы захотите больше ➡️изучите postrespro и прочитайте "книжку с кабанчиком" это самая известная книга о БД

🍰 #it #базы_данных #бесплатно
Please open Telegram to view this post
VIEW IN TELEGRAM
6211
Для решения 90% алгоритмов достаточно знать всего десяток концепций.

Продолжаем делится алгоритмами в истории! Сегодня алгоритм двух указателей.
Хотите остальные? Ставьте 🚀

🍰 #it #python_полезности #просто_о_сложном #алгоритмы
Please open Telegram to view this post
VIEW IN TELEGRAM
2
This media is not supported in the widget
VIEW IN TELEGRAM
711
👉 Нашёл лучшую замену Docker на MacOS!

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

🟣 OrbStack предоставляет все возможности Docker и даже больше. В приложении можно запускать как контейнеры, так и виртуальные машины! Само приложение выглядит хорошо и действительно потребляет меньше ресурсов. Отдельно отмечу:

✔️бесшовный переход, ставите orbstack и дальше используете привычные команды докера
✔️легко ставится через brew install orbstack
✔️при установке с .dmg можно перенести из докера все образы и контейнеры
✔️ дизайн в стиле Apple, десктоп версия выглядит очень гармонично на маке
✔️бесплатно для личного использования

📣 Резюмируя: OrbStack это лёгкая и удобная замена Docker, с бесшовной интеграцией в вашу привычную работу.

🍰 #it #python_полезности #находки
Please open Telegram to view this post
VIEW IN TELEGRAM
7222
Я устал, помогите пожалуйста! 😶

Я очень люблю пить чай. Чайник стоит на кухне и для удобства я сделал кнопку включения чайника в другой комнате. Так получилось, что кнопок три и только одна включает чайник. Другие две ничего не делают. Я никак не могу запомнить, какая кнопка включает чайник. Каждый раз приходится по очереди включать каждую и идти проверять😜

Наверняка есть решение лучше? Одновременно можно включить только одну кнопку 👇

🍰 #it #python_полезности #it_загадка
Please open Telegram to view this post
VIEW IN TELEGRAM
421
Какое наименьшее количество раз мне нужно сходить на кухню, чтобы определить, какой выключатель верный?
Anonymous Quiz
13%
0
41%
1
41%
2
5%
3
21
📚 Рубрика: «Книжная полка разработчика»

Чем может быть полезна самая известная книга в дизайн-сообществе разработчику? Автор отвечает в самой книге:
Производство хорошего продукта требует гораздо большего, чем одни только хорошие технические навыки.

🔜 Прочитал «Дизайн привычных вещей» от автора Дона Нормана. Я хотел прочитать эту книгу ещё 10 лет назад, а первое издание книги вышло в 1988 году (!). Казалось бы: книга уже устарела, написана психологом для дизайнеров, причём тут технические специалисты? Рассказываю 💋

🔺 У вас когда-нибудь было такое, что вы не можете открыть дверь с первого раза? Хотите потянуть, а её надо толкать вперёд, или вообще нажать на кнопку, чтобы дверь сама открылась? Дон Норман не стал скрывать чувства и написал множество статей о ситуациях, когда вроде привычная вещь оказывалась настоящим квестом. Такие ситуации даже получили название "дверь Нормана". Эти статьи и стали фундаментом его книги «Дизайн привычных вещей». Это великолепная книга о том, как делать продукты для людей.

Я рекомендую эту книгу тем, кто:
🟡не понимает, как развиваться не только в технических навыках
🟡умеет решать технические задачи, но не думает о том, как его результаты влияют на пользователей
🟡прошёл дизайн-интервью и хочет развиваться дальше

В одном посте невозможно описать мой восторг от книги, ведь только список используемой литературы в ней занимает 14 страниц! Просто доверьтесь и добавьте книгу на книжную полку🙂

📚 Обновлённый список обязательных к прочтению книг:

🟢 До выхода на работу:
• Грокаем алгоритмы
• Карьера программиста

🟢После выхода на работу:
Паттерны проектирования
Подготовка к сложному интервью

🟢Чтобы поднять грейд:
• Дизайн привычных вещей
• Книга с кабанчиком
• Погружение в рефакторинг

🍰 #книжная_полка #it #python_полезности
Please open Telegram to view this post
VIEW IN TELEGRAM
5421
☕️ Разберём задачу поста-головоломки про чайник

Секрет решения задачи в том, что чайник, как индикатор, обладает разными состояниями. Мы можем проверить что:
💋 чайник сейчас работает 🔜 будет гореть лампочка
💋 чайник работал до этого 🔜 вода будет горячая
💋 чайник не работает и не работал 🔜 вода холодная, лампочка не горит

А зная это, легко понять, как решить задачу.

Сначала мы нажимаем на первую кнопку и ждём какое-то время. Потом выключаем первую и включаем вторую. После нажатия второй кнопки сразу идём проверять чайник.
*️⃣ вода горячая 🔜 первая кнопка
*️⃣ горит лампочка, вода холодная 🔜 вторая кнопка
*️⃣ вода холодная, не горит лампочка 🔜 третья кнопка

🍰 #it #it_загадка
Please open Telegram to view this post
VIEW IN TELEGRAM
6211
🍃 Что это пролетает мимо нас? - Лето

Наверняка вы пропустили какие-то посты, пока наслаждались горячим июлем! Собрали все посты за месяц:

💋Концепции алгоритмов: Указатель
💋Разобрались в чужом коде
💋Мем про рабочие созвоны
💋Обновили самый популярный пост про БД
💋Концепции алгоритмов 2: Два указателя
💋Лучшая замена докер-приложения на маке
💋Сложная задачка и её решение
💋Обзор на книгу «Дизайн привычных вещей»

Ставьте реакты к постам и пишите в комментарии, какие посты хотите увидеть в августе👇

🍰 #it #коджест
Please open Telegram to view this post
VIEW IN TELEGRAM
1111
This media is not supported in your browser
VIEW IN TELEGRAM
💥 Устали от бардака в меню-баре вашего мака? Решение есть!

Dozer
Я пользуюсь маком и поставил себе множество приложений. Даже советовал вам в этом посте бесплатные приложения. В какой-то момент трей работающих приложений заполнился и я начал искать решение. Делюсь бесплатным приложением с вами!

Dozer позволяет скрыть все иконки в трее, не больше не меньше. Сразу отмечу минус: не очевидно, как вообще пользоваться программой, пришлось почитать README и посидеть в настройках. Если у вас будут проблемы при настройке - пишите в комменты, помогу!

Ссылка на гит

🍰 #it #находки
Please open Telegram to view this post
VIEW IN TELEGRAM
31
А как вы называете верхнюю правую часть?
Anonymous Poll
29%
Меню-бар
42%
Трей
25%
Панель задач
4%
Свой вариант в комментариях👇
🏠 Как обустроить комфортное рабочее место дома?

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

А вот другие особенности, которые я отметил себе за пол года работы из дома:

🟡 отдельная клавиатура, мышка и большой монитор — залог комфортной работы. Не понимаю, как раньше жил без этого
🟡 не хватает высоты монитора. Несмотря на возможность регулировки высоты, он довольно низко стоит, планирую поставить его на подставку
🟡 низкий стол. Все столы обычно 60-75 см в высоту, и этого мало для удобной работы, планирую покупать стол повыше
🟡 кожаная обивка на кресле не "дышит", и летом нужно класть тряпичную подушку, а то жарко 🙈
🟡 окно находится справа от стола, из-за чего свет падает на экран и приходится зашторивать днём окно

А какие особенности или лайфхаки по обустройству рабочего места из есть у вас? Делитесь в комментариях ➡️

🍰 #it #мысли #мудрость_на_каждый_день
Please open Telegram to view this post
VIEW IN TELEGRAM
31111
"Я не понимаю Regex!" Очень часто я слышу такое заявление.

Да, Regex сложно понять с первого раза, используется он редко, а преимущества не ясны. Возможно вы просто не использовали эти инструменты:

1️⃣ Regex-кроссворд — неожиданный взгляд на regex в виде игры-кроссворда, мне прям понравилась! Нужно подобрать правильный текст под пересекающиеся regex правила.

2️⃣ Regex-слешер — крутое исполнение в жанре текстовых RPG с геймплеем на основе regex. Это неожиданно и визуально интересно. Но, к сожалению, на английском (если для кого-то это проблема).

3️⃣ Regex-дебаггер — простой и понятный инструмент для дебага regex строк. Есть и визуализация regex и поле для ввода строки и для проверочных строк. Просто, понятно и удобно.


P.S: Для тех кто не знает что такое Regex: это язык шаблонов, который позволяет эффективно работать с текстовыми данными. К примеру, вам нужно найти все файлы в системе, у которых название начинается на "мемы", где то в названии должны быть цифры, а расширение обязательно "jpeg" или "png". С regex вы найдёте все подходящие файлы всего за одну простую команду.

🍰 #it #находки
Please open Telegram to view this post
VIEW IN TELEGRAM
43221
🔍 Только один из 5 разработчиков доволен работой!

У stackoverflow вышел очередной отчёт. А вы знаете как я люблю отчёты (пост 1, пост 2)!

В опросе приняли участие 65 тысяч разработчиков, в основном из Америки, Германии и Индии.

⚡️ Основные инсайты:

⭕️ Интернет-ресурсы - самый популярный способ обучения программированию, причём больше всего ценятся технические документации
⭕️ В основном разработчики пишут код уже 5-9 лет (27%) и 10-14 лет (20%), только 14% - кодят менее 4 лет
⭕️Реальный технический опыт программирования более 9 лет имеют лишь 42% опрошенных
⭕️Каждый третий разработчик сказал, что он full-stack
⭕️JS — самый популярный язык, SQL на 2 месте, на Rust пишут уже почти 12% разработчиков
⭕️ PostgreSQL используют 51.9% разработчиков и он занимает первое место по популярности
⭕️ Docker - самый популярный дополнительный инструмент
⭕️ ChatGPT в два раза чаще используется, чем ближайший конкурент (82%)
⭕️ Самыми "любимыми" языками всё ещё остаются JS, SQL и Python, их уверенно догоняет Rust
⭕️ В этом году Rust — самый восхищающий язык
⭕️ Кто использовал VSCode будут и дальше использовать его (74%), остальные хотят попробовать только Vim/NeoVim
⭕️ Кто пользуется Vim/NeoVim не хотят использовать другие IDE
⭕️ Больше всего платят за Erlang и Elexir, а Rust догнал Go
⭕️ Зарплаты почти по всем языкам снизились за год
⭕️ Больше половины разработчиков не доверяют ответам ИИ
⭕️ Больше всего вызывает фрустрацию Тех-долг (62%) (А у вас? мне вот нравится рефакторить код)

🍰 #it #находки
Please open Telegram to view this post
VIEW IN TELEGRAM
4433
🎉 Празднуем день рождения Школы 21 в пятницу!

Я в основном читаю нехудожественную литературу. Но недавно решил прочитать «Аэропорт» Артура Хейли, и эта книга напоминает мне о работе до IT. Основная идея книги в том, как сотрудники аэропорта борются с неожиданными трудностями. Использование грамотного планирования, вероятно, сделало бы работу проще.

📣 А о главном инструменте планирования в IT - AGILE - я буду рассказывать в Московском кампусе школы 21, приходите послушать уже в эту пятницу, в 15:30. Если не можете прийти лично, напишите в комментариях, в каком виде сделать саммари выступления: лонгрид в телеграфе или стандартный пост в канале?

👉 А еще... в эту же пятницу, в 19:00 проведу второй "Живой Подкаст"! Пилотный выпуск прошёл великолепно, так что будет вторая серия в пятницу. Регистрация для тех, кто сможет прийти лично в кампус: https://t.iss.one/PySage_bot

P.S: А ещё я стану выпускником! Рассказать о школе 21?

🍰 #it #анонсы
Please open Telegram to view this post
VIEW IN TELEGRAM
54111
💥 Только что познакомились с терминалом Linux и хочется больше? Держите:

🟢Terminus — текстовая RPG в виде терминала. Весь геймплей реализован реальными командами Linux. Стилистически это самая минималистичная игра в которые я играл! Сама игра запускается прям в браузере и ничего скачивать не надо.

🟢Bandit — игра, в которой нужно ещё понять, что делать. В игре 34 уровня, для прохождения которых придётся использовать терминал и множество команд.

🟢Bashcrawl - Текстовая игра для терминала в жанре dungeon crawler. Похожа на Terminus, но для запуска сначала нужно клонировать репозиторий.

А чем вы занимаетесь во время созвонов? 🔽 (в следующем посте расскажу, что делаю я)

🍰 #it #находки
Please open Telegram to view this post
VIEW IN TELEGRAM
92
IT-мудрость #1

Как известно, во время созвона работать нельзя! Это не честно, ведь двойную зарплату вам платить не будут 😉

👀 А чем тогда заняться?

👇Изучением слепой печати! Нашёл 2 классных сервиса.

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

➡️ А тут -> typing.io можно научиться писать код "вслепую". Огромный выбор языков программирования, реальный код и подробная статистика. Неожиданный формат, потому что ты печатаешь тот код, который видишь. Наверное полезно, чтобы научиться переписывать код из туториалов.

🖥 Попробовать оба инструмента можно даже без регистрации.

🍰 #it #мысли #находки
Please open Telegram to view this post
VIEW IN TELEGRAM
42