Proglib.academy | IT-курсы
3.67K subscribers
1.93K photos
57 videos
10 files
1.81K links
Онлайн-курсы для программистов от создателей «Библиотеки программиста».

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/9f60aed6

Для обратной связи: @proglibrary_feeedback_bot
Download Telegram
😒 Прямой путь в ИТ-бёрнаут для новичка

Совет звучит заманчиво: «Попробуй всё — потом решишь, кем быть»

➡️ Но знаете, что на практике?

Человек скачивает 8 курсов, ставит 6 IDE, пробует 4 фреймворка — и везде чувствует себя нубом. И главное — не продвигается никуда.

Холодный факт: ты не можешь выбрать направление, если ты нигде не копнул глубже пары дней.

Потому что работа мечты — это не то, что ты сразу выбираешь.
Это то, к чему ты приходишь через опыт, ошибки и практику.

Proglib Academy #оффер_мечты
Please open Telegram to view this post
VIEW IN TELEGRAM
2💯1
🔍 Jest + React Testing Library — это как швейцарский нож в мире фронтенда

В новом материале — пошаговая настройка Jest и React Testing Library для проектов на React и Next.js.

➡️ Разбираемся:
— Как настроить jest.config.ts без боли
— Как подключить @testing-library и писать тесты с render и screen
— Как запускать тесты даже с SVG и SCSS
— Как фиксить типовые ошибки с describe и expect

И главное — всё это с комментариями «почему именно так», а не просто копипастой из stackoverflow.

Читайте статью

Proglib Academy #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
😤 Устал листать туториалы, которые не складываются в картину

У тебя в голове уже есть логрегрессии, деревья, метрики и какая-то PCA, но системного понимания всё нет?

Пора с этим разобраться!

Наш курс по классическому ML:

— научит выбирать адекватные модели под задачу
— разложит метрики, переобучение и bias по полочкам
— покажет, что скрывается за fit/predict, и что с этим делать

🔔 До 27 июля по промокоду Earlybird минус 10.000₽

P.S. Первые 10 участников получат эксклюзивный лонгрид, чтобы начать изучать тему ещё до старта курса.

👉 Поменяй свою жизнь: старт карьеры в AI — успей до закрытия набора!
😪 Зарплаты джунов в 2025 — норм или маловато?

DevOps-джуны сегодня получают в среднем 125–130К. Кто-то говорит: «Отличный старт». Другие — «Это потолок, если не расти».

130К — это адекватно для джуна в 2025?
👇 Пишите мысли — соберём живую картину изнутри.

Proglib Academy #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
1
😐 Оффер-мечты, к которому мы все стремимся

Proglib Academy #развлекалово
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 «Начни сразу с нейросетей — зачем тебе логрегрессия?»

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

Классика ML — это не допотопная теория, а база (bias/variance, деревья, метрики), без которой не понять Deep Learning.

⚡️ Хотите освоить этот фундамент на реальных задачах? Приходите на наш курс по классическому ML. Только хардкор, только продовые задачи!

📆 Старт — 12 августа.

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

🎁 Последний день промокода Earlybird на скидку 10.000₽.

👉 Не упустите шанс!
👍1🔥1
Что выведет код?

👾 — hello NO
❤️ — hello Zero Division Error
🌚 — NO
👍 — hello

Proglib Academy #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
👾5
📊 Промпт для генерации визуализаций данных

Используйте этот промпт для построения графиков с помощью Matplotlib.

🔹 Промпт:
I want you to act as a data scientist coding in Python. Given a dataframe {dataframe name} containing the columns {column names}, use Matplotlib to plot a {chart type} that shows the relationship between {variables}. Additionally, annotate the plot with the following details: {annotation requirements}. Format the plot by adjusting {specific formatting preferences}. Finally, change the plot's theme to {theme} to match the visual style of {theme description}.


Результат:
🔹 Качественные и профессиональные визуализации данных.
🔹 Подробное оформление и аннотации на графиках.
🔹 Удобное и понятное оформление графиков с использованием популярных тем.

✔️ Пример:

Исходный датафрейм с данными о возрасте, доходе и уровне образования:
import pandas as pd

data = {
'age': [25, 30, 35, 40, 45],
'income': [50000, 60000, 70000, 80000, 90000],
'education_level': ['Bachelors', 'Masters', 'PhD', 'Bachelors', 'Masters']
}

df = pd.DataFrame(data)


💬 Пример использования промпта:
I want you to act as a data scientist coding in Python. Given a dataframe df containing the columns ['age', 'income', 'education_level'], use Matplotlib to plot a scatter plot that shows the relationship between age and income. Additionally, annotate the plot with the following details: highlight the highest and lowest income values. Format the plot by adjusting the title, axis labels, and grid lines. Finally, change the plot's theme to seaborn-darkgrid to match the visual style of a clean and modern plot with dark gridlines.


Proglib Academy
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
2
🖕 10 потрясающих сериалов, которые захватят с первой серии

Отдыхаем от кодинга и смотрим. Надеемся эти шедевры каждому понравятся:

«Притворство» — мать тщательно заботится о своей «больной» дочери, опекая её во всём. Однако правда в том, что дочь совершенно здорова — мать убеждает её в болезни, чтобы держать под контролем. 8 серий.

«Чёрная птица» — заключенному поступает предложение от ФБР: если он сможет заставить маньяка признаться в своих преступлениях, его освободят из тюрьмы. 6 серий.

«‎Оленёнок» — бармен-неудачник решает угостить незнакомую пышную девушку кофе, не догадываясь, что вскоре станет жертвой её жестокого преследования. 7 серий.

«‎11.22.63» — учитель отправляется в прошлое, чтобы предотвратить убийство Джона Кеннеди. Но само время, кажется, готово бороться за то, чтобы ничего не изменилось. 8 серий.

«‎Разрабы» — корпорация скрывает внутри своих стен квантовый компьютер, который может превратить его пользователя в абсолютного бога. 8 серий.

«‎Грызня» — состоятельная женщина случайно подрезает на дороге простого работягу. Из мелкого конфликта это перерастает в настоящую войну, охватившую целый город. 10 серий.

«‎Телохранитель» — ветерану войны поручают охранять министра внутренних дел. Однако всё оказывается сложнее: у него посттравматическое расстройство, он не поддерживает её взгляды, а между ними вдруг вспыхивает неожиданное притяжение. 6 серий.

«‎Рипли» — мелкому мошеннику Тому случайно поручают вернуть блудного сына богача домой. Но, увидев, как прекрасна и беззаботна жизнь этого человека, Том решает избавиться от него и занять его место. 8 серий.

«Защищая Джейкоба» — школьника обвиняют в убийстве одноклассника, а его отец-прокурор отказывается верить в его виновность. Но под давлением общественного мнения родители начинают сомневаться. 8 серий.

«Полуночная месса» — в маленький отдаленный городок прибывает новый священник, и с его приходом начинается череда таинственных событий. По ночам что-то пугающее начинает терроризировать местных жителей. 7 серий.


Proglib Academy #развлекалово
Please open Telegram to view this post
VIEW IN TELEGRAM
✔️ Лучшие практики импорта модулей в Python

В этом посте рассмотрим лучшие практики импорта модулей в Python, чтобы код был чистым и эффективным.

1⃣ Используйте явный импорт

Старайтесь использовать явный импорт, а не from module import *, чтобы избежать конфликтов имен и улучшить читаемость кода.

# Плохо
from math import *

# Хорошо
from math import sqrt, pi


Явный импорт помогает лучше понять, какие именно функции или классы используются в вашем коде, и предотвращает «загрязнение» пространства имен.

2⃣ Группируйте импорты правильно

Существует стандартная практика группировки импортов, которая улучшает структуру кода и делает его более читаемым:
➡️ Стандартные библиотеки
➡️ Третьи библиотеки
➡️ Локальные модули

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

# Стандартные библиотеки
import os
import sys

# Третьи библиотеки
import requests
import numpy as np

# Локальные модули
from my_module import my_function


3⃣ Используйте абсолютные импорты

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

# Плохо
from .module import function

# Хорошо
from my_project.module import function


4⃣ Избегайте циклических импортов

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

Чтобы избежать таких проблем:
➡️ Разделяйте модули, чтобы минимизировать зависимость
➡️ Используйте импорты внутри функций или методов, если нужно избежать циклических зависимостей

# Плохо
# module_a.py
from module_b import function_b

# module_b.py
from module_a import function_a

# Хорошо
# module_a.py
def function_a():
from module_b import function_b
...


5⃣ Соблюдайте принцип «Не импортируйте то, что не используете»

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

# Плохо
import math

# Хорошо
from math import sqrt


6⃣ Пользуйтесь псевдонимами для часто используемых библиотек

Если библиотека часто используется в коде, имеет смысл использовать псевдонимы, чтобы сделать код компактным.

# Хорошо
import numpy as np
import pandas as pd

# Плохо
import numpy
import pandas


7⃣ Обрабатывайте ошибки импорта

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

try:
import some_library
except ImportError:
print("Не удалось импортировать some_library. Убедитесь, что она установлена.")


Proglib Academy
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
🧗 9 способов продвинуть резюме в ТОП на HeadHunter

Вы думали, что главное — это писать код и знать SOLID? Ха! Главное — уметь поднимать резюме в 11:00 и 15:00, как cron-джобу 🕒

➡️В статье разобрали топ-лайфхаки, чтобы ваше резюме не пылилось в подвале HeadHunter’а

Proglib Academy #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍1
Инструмент недели: планирование задач с Rocketry

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

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

1⃣ Установите Rocketry

Для начала установите Rocketry с помощью pip:
pip install rocketry


2⃣ Напишите первый планировщик задач

Создайте файл, например, scheduler.py, и добавьте в него следующий код:
from rocketry import Rocketry
from rocketry.conds import daily

app = Rocketry()

@app.task(daily)
def do_daily():
print("Эта задача выполняется каждый день!")

if __name__ == '__main__':
app.run()


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

3⃣ Запуск задач

После написания кода запустите его с помощью Python:
python scheduler.py


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

4⃣ Настройка различных условий

Rocketry позволяет настраивать задачи с использованием различных условий.

▶️ Задача, выполняющаяся каждые 10 секунд:
@app.task(every("10 seconds"))
def do_continuously():
print("Эта задача выполняется каждую секунду!")


▶️ Задача, выполняющаяся каждый день после 7:00:
@app.task(daily.after("07:00"))
def do_daily_after_seven():
print("Эта задача выполняется каждый день после 7:00!")


▶️ Задача, выполняющаяся каждый час между 22:00 и 06:00:
@app.task(hourly & time_of_day.between("22:00", "06:00"))
def do_hourly_at_night():
print("Эта задача выполняется каждый час ночью!")


▶️ Задача, выполняющаяся по cron-выражению:
@app.task(cron("* 2 * * *"))
def do_based_on_cron():
print("Эта задача выполняется по cron-выражению!")


5⃣ Пайплайнинг задач

Rocketry поддерживает пайплайнинг задач — передача данных между задачами:
from rocketry.conds import daily, after_success
from rocketry.args import Return

@app.task(daily.after("07:00"))
def do_first():
return 'Hello World'

@app.task(after_success(do_first))
def do_second(arg=Return('do_first')):
print(f"Задача 'do_first' вернула: {arg}")
return 'Hello Python'


6⃣ Параллельное выполнение задач

Rocketry поддерживает выполнение задач в разных режимах: синхронно, асинхронно, в отдельных потоках и процессах:
@app.task(daily, execution="main")
def do_unparallel():
print("Эта задача выполняется синхронно.")

@app.task(daily, execution="async")
async def do_async():
print("Эта задача выполняется асинхронно.")

@app.task(daily, execution="thread")
def do_on_separate_thread():
print("Эта задача выполняется в отдельном потоке.")

@app.task(daily, execution="process")
def do_on_separate_process():
print("Эта задача выполняется в отдельном процессе.")


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

Proglib Academy #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🎯 Команда дня: `@overload` в Python

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

Пример:
from typing import Literal, overload

@overload
def transform(data: str, mode: Literal["split"]) -> list[str]: ...
@overload
def transform(data: str, mode: Literal["upper"]) -> str: ...

def transform(data: str, mode: Literal["split", "upper"]) -> list[str] | str:
return data.split() if mode == "split" else data.upper()


transform(..., "split")list[str]
transform(..., "upper")str
— Типизация подскажет ошибку, если вы вызовете append() у строки или .lower() у списка

Другой кейс — когда нужен только один аргумент из двух:
@overload
def get_user(id: int = ..., username: None = None) -> User: ...
@overload
def get_user(id: None = None, username: str = ...) -> User: ...

def get_user(id: int | None = None, username: str | None = None) -> User: ...


Так можно добиться:
get_user(id=1)
get_user(username="John")
🙅‍♂️ get_user(id=1, username="John") — не соответствует ни одной сигнатуре

Бонус: Literal позволяет ограничить значения аргументов строками:
def set_color(color: Literal["red", "blue", "green"]) -> None: ...


▶️Попытка передать yellow вызовет ошибку ещё до выполнения кода.

▶️ @overload и Literal — мощные инструменты статической проверки, особенно в больших проектах, где важна точная типизация.

Proglib Academy #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Что выведет код?

🔥 — [1, 2, 3, 4, 5, 6]
🙏 — (1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6)
🌚 — Error
😢 — None

Proglib Academy #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
🌚10🔥1🙏1
🤑 Чатжпт, учи меня полностью

Всю неделю сижу в режиме обучения от ChatGPT — читаю, спрашиваю, проверяю, снова читаю.

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

Proglib Academy #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
🌟 Птица как флешка

Энтузиаст научил скворца запоминать и воспроизводить png-файл в виде звукового сигнала

Есть тут, кто хочет передавать данные в скворцах? 🙂

Proglib Academy #развлекалово
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2👏2🔥1
🤫 Как продвинуть резюме на hh

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

➡️ Подробнее в статье

Proglib Academy #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2😁2