Python Simple
226 subscribers
55 photos
6 videos
175 links
by mr.Gold
Download Telegram
Python Simple
🤔 Почему студентам тяжело учиться на онлайн-платформах? Онлайн-обучение — это удобно, но не всегда просто. Вот основные причины, с которыми сталкиваются студенты: Легкость первых модулей быстро исчезает Начальные темы кажутся простыми, но дальше курс становится…
Сделаем вид, что все ждали продолжение)
Как улучшить положение, если вы студент, учитесь в онлайн школе и у вас есть куратор?

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

Интересуйтесь, какие ещё есть ресурсы по определенным темам, какой-нибудь роадмап обучения и тд. Если есть сомнения что учить дальше, то тоже можно спросить и куратор отметет лишнее дав какую-то точную рекомендацию.

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

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

Это ещё не все, будет продолжение)
8
Python Simple
Сделаем вид, что все ждали продолжение) Как улучшить положение, если вы студент, учитесь в онлайн школе и у вас есть куратор? При этих вводных ключевое - наличие куратора. Вам надо начать с ним общаться, задавать вопросы! Вам не обязательно писать в чат только…
👀 Давайте поговорим о кураторах

Кураторы — это тоже люди. И, как ни странно, у них тоже бывает мало мотивации. Представьте: каждый день проверять одни и те же работы, сталкиваться с кодом, который не соответствует стандартам, без линтеров (на работе-то они есть, как минимум) и объяснять одно и то же снова и снова. 🥱

Проблемы кураторов:
1. "Проект" не нравится: Задания в домашках, можно назвать проектом и он может быть тоже не интересен.
2. Ожидания студентов: Некоторые студенты думают, что куратор и платформа должны дать им всю информацию, а гуглить необязательно. Это демотивирует, ведь куратор — не отдел продаж и не саппорт.
3. Разочарование: У многих кураторов изначально благие намерения — помочь другим получить профессию. Но со временем энтузиазм угасает.

Мы пришли к тому, что разочарование приходит и к студентам, и к кураторам.

- Кураторы хотят учить, но теряют мотивацию из-за однотипности и рутины.

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


Это не про всех, это взгляд со стороны на бОльший процент и тех и тех.

Что делать, как быть, будем думать дальше
8
Хм, начал чаще писать посты.
Ребята, есть кто из тех-анализа, когда разворот?)
3😭3👨‍💻2
🚀 Какую я вижу идеальную формулу обучения

Многие платформы просто пересказывают учебник по Python: типы данных, декораторы, основы — всё это уже 1м раз описано в книгах и открытых источниках. Зачем рассказывать это 1м первый раз? Именно поэтому я перестал писать о простых темах.

Пример Route256:
Раньше они брали людей, которые писали на любом языке, давали пару вводных лекций по Go, а потом углублялись в протоколы, системный дизайн, БД и т.д. Были лайвкодинг-сессии, но проекты студенты не писали (вроде).

Потом они изменили подход, возможно ввиду ограничения по времени в 2 мес:
Теперь набирают тех, кто уже знает Go на уровне решения литкод задач (минимум Medium). На занятиях пишут проекты: лайвкодинг + самостоятельная работа после вебинаров или можно пилить свой проект на вебинаре. У каждого студента свой проект со своей темой, но структура одинаковая. Далее — ревью, рекомендации, а недостающие знания по Go студенты осваивают сами.
Также есть лекции по базам данных, протоколам, системному дизайну и сложным темам в Go, например, concurrency.

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

Идеальный мир менторства:
Если брать менторов, то в идеальном мире, было бы хорошо, чтобы ментор брал проект, который хочет реализовать, но ввиду каких-то обстоятельств, чаще нехватка времени из-за основной работы, не может к нему подступиться. Далее он набирает или ему дают, не важно как, но смысл в том, что у него появляется группа студентов, которые хотят научиться делать проекты.
Ментору нужен проект, студенты готовы его делать, чтобы научиться. Ментор замотивирован, чтобы делать качественное ревью и не пускать плохой код в мастер. Также ментор замотивирован, чтобы студенты реже задавали ему простые вопросы, то есть надо наладить передачу базовых знаний по тому, как надо писать проект на каком-то фреймворке.
Студенты замотивированы научиться, успех, это чтобы ваши PR-ы принимали с наименьшим количеством правок. Это показатель, что они правильно поняли задачу, написали тесты, проверили крайние-кейсы и всё работает.

Продолжение следует)
6
🤔Со временем все больше удивляет закономерность, хотя казалось бы, что уже многие привыкли платить за подписки, тем не менее:

"Если мне на работе оплатят курс, то я буду проходить"
"Если мне на работе оплатят онлайн конференцию, то схожу, так денег нет"
"Если мне на работе купят подписку на хекслет, то буду проходить"

Даже там, где цена вопроса 4-5 тысяч, для некоторых людей, факт того, что заплатит ли за них компания - является ключевым.
Тут стоит конечно понять, действительно ли тебе это надо или ты подсознательно понимаешь, что не будешь проходить, но если заплатит компания, то ок, пусть валяется в туду)

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

Но все же. То, что компании могут компенсировать какое-то обучение - это отлично, но является ли это ключевым в том, будешь ты повышать свою квалификацию или нет? Если тебе курс действительно нужен и если компания его не оплатит, то ты не будешь его проходить?)
11👍1
Неожиданно для себя почти закрыл вопрос с заметками, который мучил меня годами, если не десятилетиями.

Где я вёл заметки:
Evernote, Google Keep, заметки на маке, Notion, бумажные блокноты и ещё куча других сервисов. В итоге на каждом устройстве были свои заметки в разных приложениях, и собрать всё воедино сложно и невыполнимо. То сервис неудобный, то слишком тяжёлый, то вообще перестал работать.

Недавно начал использовать Obsidian. Сначала просто как блокнот для рабочих заметок на компьютере. Потом решил разобраться с синхронизацией между устройствами. У Obsidian есть платная подписка для синхронизации, но её сложно оплатить. Есть вариант с iCloud, но он требует, чтобы все устройства могли синхронизироваться через него. Да и прямого доступа к файлам нет.

Наткнулся на статью на Хабре, где описан способ синхронизации через GitHub. Для мобильного приложения нашёл плагин Fit, который отлично справляется с синхронизацией. На десктопе попробовал плагин Git, как рекомендовалось в статье, но он не зашёл. Но на компьютере всё прекрасно синхронизируется через терминал, вручную)

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

Что мне нравится в этом подходе:
— Вся база знаний хранится на GitHub, её можно просматривать и контролировать прямо там.
— Obsidian — это просто интерфейс для редактирования файлов. Если в будущем он перестанет устраивать, его можно заменить на что-то другое.

Это не последний пост про заметки. Как решу вопрос с автосинхронизацией на десктопе или соберусь писать свою версию скрипта — обязательно расскажу.

А как вы ведёте заметки?
🔥4👍32
Кажется, что интересная тема
100DaysOfStudy Challenge, 2025

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

Как все проходит

🟣 вы подаете заявку (про то, как подать - ниже);

🟢 каждый день (посильно) ваша задача - посвятить 1 час или больше IT-учебе любой тематики (❗️время на основной работе не включается);

🟡 свои результаты вы фиксируете свободной форме в удобный вам открытый документ (про это ниже) и сообщением в чат джунов с тегом #100DaysOfStudy;

🔵 вы поддерживаете лайком/добрым словом, минимум, двух других участников челленджа;

Как подать заявку

1️⃣ вы создаете пустой репозиторий с ридми/notion-страничку/любое другое публично доступное место, в котором будете фиксировать свой прогресс;

2️⃣ присылаете в чат джунов заявку по следующей форме:

- имя
- стек или сфера
- чему сейчас учитесь или хотите учиться, или что вам интересно учить в айти в принципе
- ссылка на ваш документ, где будете трекать прогресс
- немного о себе (по желанию)
- тег #100DaysOfStudy_заявка

3️⃣ с сегодняшнего дня можете рассказывать про учебные итоги в чатике и лайкать других

Как трекать прогресс

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

Каждый учебный день вы вносите изменения в документ и публикуете в чат с тегом #100DaysOfStudy.

Важные моменты

❗️если вы заявлялись на челлендж 2024-го года и забросили, вы можете податься еще раз! Вас никто не будет стыдить;

❗️если вы заявлялись на челлендж 2024-го года и продолжаете, заявку пересоздавать не надо;

❗️в челлендже есть место всем айтишникам любой специальности и грейда: разрабам, дизайнерам, qa, менеджерам;

❗️вы имеете право пропускать дни. Все мы живые, это совершенно нормально, если в какой-то день вы не захотите учиться, не давите на себя. Вы не вылетите из челленджа за пропуски: его суть - объединить тех, кто учится, а не помотать вам нервы;

❗️вы не обязаны активно вербально поддерживать других участников, если не хотите, хватит сердечка или огонечка;
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Вас часто "дергают" по задачам?

Если вам регулярно напоминают о задачах — это не просто звоночек для вашего тимлида, но и для вас самих. 🚨

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

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

Когда вам дают задачу, важно, чтобы:
1 - Она не терялась.
2 - Вам не напоминали о ней.
3 - Если что-то не получается, вы сами должны приходить с вопросами, а не ждать, пока у вас спросят: "Как прогресс по задачке?" и внезапно услышать, что чего-то не хватает

Если вам часто напоминают о задачах, это может стать барьером для вашего карьерного роста в компании. 📉

Подумайте над этим и сделайте выводы. Ведь так приятно работать с людьми, которые ответственно относятся к задачам, которые им поручили)
5
Есть предложение пройтись по roadmap от neetcode (на чьих разборах я и залетел в DSA) , мы потихноьку будем разбирать тему за темой.
Они будут идти в порядке усложнения, так же внутри темы сначала будут задачи уровня easy, потом medium, потом hard.


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

Начнем мы с темы Arrays & Hashing!

Задача: Проверка на дубликаты в массиве (217. Contains Duplicate)

Дан массив целых чисел nums. Необходимо вернуть true, если хотя бы одно значение в массиве встречается дважды, и false, если все элементы уникальны.

Пример 1:

Ввод: nums = [1, 2, 3, 1]

Вывод: true

Объяснение:
Элемент 1 встречается дважды — на индексах 0 и 3.

Пример 2:

Ввод: nums = [1, 2, 3, 4]

Вывод: false

Объяснение:
Все элементы в массиве уникальны.

Задача:
Реализуйте функцию, которая решает эту задачу и успешно засобмите на leetcode 👩‍💻
Решениями будем делиться в комментариях как всегда!
https://leetcode.com/problems/contains-duplicate/description/
Удачи! 🚀
Please open Telegram to view this post
VIEW IN TELEGRAM
6
Потоки vs асинхронность

В чате затронули интересную тему, что лучше использовать потоки или асинхронность и когда.

У меня уже много раз на собеседованиях спрашивали такой вопрос, тут даже сохраню формулировку с последнего:

Даны 1млн аргументов и 3 сервиса. 
Надо с каждым из аргументов сделать запрос к 3м сервисам,
получить ответ и вывести результаты в сгруппированном виде


Что бы вы использовали?

Подсказка 1:

$ ulimit -u
60326


Подсказка 2:
Запустите эти 2 скрипта (комп не взорвется)

import asyncio

async def worker():
for _ in range(100000):
await asyncio.sleep(0.01)
_ = 1 ** 2

async def create_tasks(num_tasks):
tasks = []
for t in range(num_tasks):
if t % 1000 == 0:
print(f"Создана задача {t}")
task = asyncio.create_task(worker())
tasks.append(task)

await asyncio.gather(*tasks)

if __name__ == "__main__":
try:
asyncio.run(create_tasks(100000))
except Exception as e:
print(f"Произошла ошибка: {e}")


import threading
import time

def worker():
for _ in range(100000):
time.sleep(0.01)
_ = 1 ** 2

def create_threads(num_threads):
threads = []
for t in range(num_threads):
if t % 1000 == 0:
print(f"Создан поток {t}")
thread = threading.Thread(target=worker)
threads.append(thread)
thread.start()

for thread in threads:
thread.join()

if __name__ == "__main__":
try:
create_threads(100000)
except Exception as e:
print(f"Произошла ошибка: {e}")


Теперь подумайте и ответьте на вопрос с собеседования.

И вопрос со звездочкой: Когда надо использовать то, что не подходит для задачи с собеседования?
4🔥3
Ну что пора
Есть несколько вопросов
Что интересно: 1. Бэк сайта для объявлений, типа афиша 2. Бэк убийца HH, с личными страницами, но без вакансий, не добивать же HH совсем, у меня есть их акции) Какая вам больше нравится лицензия: 1. Apache 2.0 2. MIT
Anonymous Poll
54%
1 - Бэк сайта для объявлений, типа афиша
54%
2 - Бэк убийца HH
46%
1 - Apache 2.0
77%
2 - MIT
🔥3
Я думаю все кто хотел решили предыдущую задачу!
Следующая задача в теме Arrays & Hashing!

🔍 Задача: Проверка анаграммы (242. Valid Anagram)

Даны две строки s и t. Необходимо определить, является ли t анаграммой s. Анаграмма — это слово или фраза, образованная перестановкой букв другого слова или фразы, с использованием всех исходных букв ровно один раз.

📌 Пример 1:

Ввод: s = "anagram", t = "nagaram"
Вывод: true
Объяснение: Строки являются анаграммами, так как состоят из одинаковых букв.

📌 Пример 2:

Ввод: s = "rat", t = "car"
Вывод: false
Объяснение: Строки не являются анаграммами, так как содержат разные буквы.

Ограничения:

Длина строк s и t от 1 до 5 * 10^4.

Строки состоят из строчных английских букв.

Задача:
Реализуйте функцию, которая решает эту задачу и успешно засобмите на leetcode 👩‍💻
Стараемся сделать за O(N + M)
Решениями будем делиться в комментариях как всегда!

https://leetcode.com/problems/valid-anagram/description/

Удачи! 🚀
Please open Telegram to view this post
VIEW IN TELEGRAM
Если вы начинаете проект, то первым делом надо:

1 - Начать с хорошего пакетного менеджера, а не просто pip+venv
2 - Установить линтеры и добавить их к проекту в пайплайн и гит-хуках
3 - Написать первый тест, и поставить уровень покрытия (тут затрудняюсь сказать, в идеале дойти до 90%, на на ранней стадии можно сначала поотслеживать)

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

А с чего вы начинаете свои пет-проекты и какие менеджеры пакетов используете?
7
Стартап-стартапом, но на собесы ходить надо. И непонятно, то ли 1-ое апреля, то ли мельчают собесы в Яндекс. Дали 2 задачи, которые Петр (не Митричев) решил бы за минут 10 в сумме и на старте мне дали подсказку, хоть я её и не просил, но без неё я бы потратил больше времени.
Но проводя собесы по алгосам в прошлом, я знаю, что надо внимательно слушать интервьюера, потому, что помню многих кандидатов, которые уходят в транс и совершенно не воспринимают подсказки.
Подсказки, для яндекса - это не типично. интересно, как это засчитывается и мб это не была подсказка)
🔥7
Forwarded from MVP и мечты 💭
Бот авторепостов

Ну что, как там бот для авторепостов?

предыдущий пост 👈

Появилось больше понимания, что нужно!

Вообще, точка входа — obsidian. Статьи пишу там и только потом публикую в telegram. Логично накрутить всю автоматизацию на него.

Цель — использовать один сервис для публикации.

Статья проходит несколько итераций:
- Написание в obsidian
- fix орфографических ошибок в AI
- Отложка и публикация в telegram

Т.е. в моем случае логично иметь примерно такой процесс:

1. Написал
2. Поправил
3. Нажал на кнопку "Отправить"
4. Задал время, когда хочу опубликовать
5. Дернул апишку сервиса, который опубликует сразу в несколько сеток

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

Считаю жирным плюсом obsidian — формат файла md.

Формат довольно универсальный, и с ним относительно легко работать в разных сервисах.

Я не хочу кодить просто так, идеальный вариант — когда будет написано 0 строчек кода.

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

Как минимум мне нужно:
- Плагин в obsidian, который уже интегрирован с нужными мне сервисами
- Если нет, то плагин, который умеет добавлять кнопки и навешивать отработку скриптов по событию
- Сервисы, которые работают с API telegram и vk, и в будущем позволят расширить количество социальных сетей
👏4
Мне кажется, что это был бы хороший пет проект, как бы вы его реализовали?
🤔7
Forwarded from Anastasia
Ищем человека в команду (джун, стажёр)

Что важно знать и уметь (обязательные требования):
> Аналитический склад ума
> SQL
> Python
> Git
> Понимание, как работает web
> Базовые знания HTML, CSS, JavaScript
> Умение работать с Linux в терминале (базовые команды)
Будет плюсом (но не критично):
> Опыт с Django
> Опыт с Jinja2

Чем предстоит заниматься:
Наша команда работает над веб-сервисом для автоматизации создания отчётов. Работаем в сфере медицины. Задачи:
> Поиск и анализ информации в базе данных
> Общение с аналитиками и заказчиками
> Написание сложных SQL-запросов, их оптимизация
> Доп. обработка данных на Python
> Работа с Jinja2, простая вёрстка (HTML, CSS, немного JavaScript)
> Дебаг Python-приложений (и веб, и десктоп), читаем и понимаем чужой ООП-код
> Может потребоваться работа с серверами на нужды разработки

Кому подойдёт:
Работа отлично подойдёт новичкам без опыта. Я сама когда-то начинала в этой компании и многому научилась.
Вы сильно прокачаетесь в SQL, чтении python кода.
CTE, оконные функции, рекурсивные SQL запросы, процедуры и триггеры, работа с индексами - то, с чем реально требуется работать.
Python немного меньше, чем SQL, но также можете столкнуться с такими интересными задачами, как работа с API, обработка древовидной структуры, по большей части нужно будет читать python код (в том числе достаточно сложный), и не столько писать - не буду обманывать.
Я думаю, для тех, кто начинает свой путь в программировании или аналитике - прекрасная возможность.
Присылайте своё резюме, и будьте готовы выполнить несложное тестовое задание ))
Зарплата будет зависеть от ваших знаний. Для новичка у нас оклад обычно 60-65 тысяч.
Работа в офисе, Санкт-Петербург, график гибкий, приходить на работу можно до 11, можно совмещать с учёбой.
6🔥3
Всем привет!
Возвращаюсь с новой рубрикой)
Будем иногда рассматривать задачки, с которыми я сталкиваюсь на работе.

Задача такая:
Есть связный список объектов, у них важен порядок. У него есть поля (id, name, prev, next), сущность назовем Pole.

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

Раз в 5 минут мы из связного списка делаем обычный список и отправляем в другой сервис. Ему не нужны поля prev и next, ему нужен только список в правильном порядке. Также это может сделать оператор по кнопке. И это должно отрабатывать всегда.
Чтобы отправить ему этот список, надо взять первый Pole, у которого prev = None и пройтись до конца. Важно учесть, что все Pole должны быть в цепочке.

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

Что может развалиться:
- Оператор редактирует очередность Pole и в какой-то момент в 2-х будет prev None. А в этот момент сработает таска, которая отправляет список в другой сервис или другой оператор нажал кнопку.
- Оператор неправильно отредактировал Pole или фронт что-то накосячил и у нас в итоге получилась битая цепочка.
- Ваши варианты
👍6