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

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

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

Для обратной связи: @proglibrary_feeedback_bot
Download Telegram
📊 Математика для Data Science: терминология и обозначения

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

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

Начинаем с основ, чтобы уверенно двигаться к сложным темам!

▶️ Читайте по ссылке: https://proglib.io/sh/pSwegRq1o0

Proglib Academy #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍1
Наука умерла, похоронили в prompt'е

Учёные начали встраивать скрытые промпты для ИИ в научные статьи, чтобы ChatGPT и ему подобные ставили их работам 5 звёздочек и ни слова плохого не говорили.

Proglib Academy #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
🔍 Топ-5 библиотек для объяснения ML моделей

🟢 SHAP (Shapley Additive Explanations)
Один из самых популярных методов объяснения модели на основе вкладов признаков.

🟢 LIME (Local Interpretable Model-agnostic Explanations)
Модель-агностичный подход, который обучает локальную интерпретируемую модель вокруг конкретного предсказания.

🟢 Eli5 (Explain Like I’m Five)
Упрощённое объяснение сложных ML-моделей, поддержка scikit-learn, Keras и других фреймворков.

🟢 AI Explainability 360 (AIX360)
Библиотека от IBM для объяснения моделей на различных типах данных: табличных, текстовых, изображениях и временных рядах.

🟢 InterpretML
Инструмент от Microsoft, который включает как интерпретируемые «прозрачные» модели, так и объяснители для «чёрных ящиков».

Proglib Academy #буст
1
🧠 Математика для Data Science: с чего начать

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

🎁 Мы запускаем серию статей, где по шагам разберем все ключевые темы: от базовых обозначений до сложных алгоритмов.

🔗 Читайте первую статью

Proglib Academy #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31
💻 Как ускорить выполнение запросов к базе данных в Django

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

〰️ defer() — откладывает загрузку указанных полей до их фактического использования
〰️ only() — загружает только указанные поля, остальные — по запросу
〰️ exclude() — фильтрует объекты, исключая ненужные

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

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

Proglib Academy #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
1🙏1
🔥 RFID в непростых условиях: как НЛМК отслеживает ковши с расплавленным чугуном

В металлургии счет идет на секунды: чугун остывает, оборудование простаивает, деньги улетают. Раньше НЛМК отслеживал ковши «по старинке» — звонками и рациями.

Теперь каждый ковш «умный»: система знает, где он находится, какая у него температура и куда движется. Спойлер: экономия огромная.

🦾 Иван Клестов-Надеев, главный специалист по цифровизации коксохимического, доменного и энергетического производства НЛМК, делится опытом реализации этой системы совместно со специалистами НЛМК ИТ

Proglib Academy #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥1🙏1
🤓 Промпт, который сделает обучение Python проще

Учить сложные темы бывает непросто, но что, если можно разбить их на простые и понятные части? Делимся мощным промптом для ChatGPT, который поможет разобраться в любом сложном аспекте Python — от асинхронности до метапрограммирования.

Промпт:
  
I need help breaking down [конкретная тема] into smaller, simpler parts that are easier to understand.
Identify the most important 20% of learnings that will help me understand 80% of the subject.
Use analogies and real-life examples to explain each concept in a relatable way.
The explanation should focus on making the topic clear and engaging while connecting it to everyday experiences or situations.
Additionally, suggest tips or questions I can use to check my understanding of the material.



Как это работает:
— Разбивает сложную тему на ключевые 20% знаний, которые дадут 80% понимания
— Приводит аналоги и примеры из жизни (например, асинхронность как готовка в ресторане)
— Помогает проверить себя, предлагая вопросы для самопроверки

Примеры использования:
— Разобраться в asyncio через повседневные сценарии
— Понять работу metaclass с аналогиями из конструкторов LEGO
— Прояснить decorators, представив их как модульные дополнения в кафе

Proglib Academy #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
1🙏1
😎 ИИ теперь кодит за тебя. А ты просто описываешь, что хочешь.

Сбер на GigaConf показал GigaStudio — штуку, которая сама делает веб-приложения из текстового описания. Просто пишешь в чат: «хочу сайт с формой регистрации» — и получаешь готовый проект. Да, прям так.

Работает на GitVerse — это не игрушка, а серьёзная платформа для разработчиков: CI/CD, приватные репы, Jupyter, API, всё на месте.

➡️ Инструмент для тех, кто хочет:
— быстро делать MVP и прототипы
— вкатиться в ИТ без кучи хардскиллов
— или просто не тратить вечность на шаблонную верстку

А ещё добавили сборки в облаке, поддержку Data Science и API для автоматизации.

👉 Подробности тут — реально мощная тема

Proglib Academy #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1🥱1
🧠 От конкурентного программирования к производству

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

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

Proglib Academy #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🌚1
📌 How to: заменить break в Python-циклах на элегантные альтернативы

В Python break в циклах for прерывает итерацию, но часто есть более читаемые и лаконичные способы. Разберём типичные случаи и их альтернативы.

1️⃣ Проверка наличия элемента

Классика с break:
color_options = ["blue", "green", "purple"]
is_purple_an_option = False
for color in color_options:
if color == "purple":
is_purple_an_option = True
break


Альтернатива — оператор in:
is_purple_an_option = "purple" in color_options

in работает со всеми итерируемыми объектами, а для set и dict ещё и быстрее, чем цикл.

2️⃣ Проверка условия для элементов

Пример с break:
points_per_user = [3, 12, 28, 105]
anyone_has_100 = False
for points in points_per_user:
if points > 100:
anyone_has_100 = True
break


Альтернатива — any:
anyone_has_100 = any(points > 100 for points in points_per_user)

any (или all для "все элементы") делает код выразительнее.

3️⃣ Поиск первого подходящего значения

С break:
words = ["Look", "at", "these", "excellent", "words"]
first_long_word = None
for word in words:
if len(word) > 4:
first_long_word = word
break


Альтернатива — next с генератором:
long_words = (word for word in words if len(word) > 4)
first_long_word = next(long_words, None)

next берёт первый элемент из генератора, а None — значение по умолчанию, если ничего не найдено.

4️⃣ Сбор элементов до условия

С break:
items = ["chair", "desk", "", "lamp"]
before_blank = []
for item in items:
if not item:
break
before_blank.append(item)


Альтернатива — itertools.takewhile:
from itertools import takewhile
before_blank = list(takewhile(bool, items))

takewhile собирает элементы, пока условие истинно, и возвращает итератор.

📍 Итог

break полезен, но часто его можно заменить:
in — для проверки наличия
any/all — для условий
next — для поиска первого значения
takewhile — для сбора до условия

⤵️ А как вы обходитесь без break?

Proglib Academy #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31
🔥 Как НЛМК отслеживает ковши с расплавленным чугуном — и зачем это нужно

Раньше ковши искали по рации. Сегодня — за ними следит цифровая система: знает, где каждый ковш, сколько в нём чугуна, куда он движется и не перегрелась ли футеровка.

В новом кейсе рассказываем:
— почему стандартные RFID-метки плавились и что сделали вместо
— как устроена цифровая модель предприятия
— что даёт это внедрение: меньше простоев, теплопотерь и аварий

👷‍♂️ Спойлер: теперь даже ковши «думают».

📌 Читать: https://proglib.io/sh/mXKzViUZen

Proglib Academy #буст
1👍1
This media is not supported in your browser
VIEW IN TELEGRAM
🔹 How to: как работают генераторы в Python

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

➡️ Принцип работы
Вместо возврата всех значений сразу, генератор использует yield, который приостанавливает выполнение функции, сохраняя её состояние:
def simple_generator():
print("Первый yield")
yield 1
print("Второй yield")
yield 2

gen = simple_generator()
print(next(gen)) # Первый yield → 1
print(next(gen)) # Второй yield → 2


При вызове next() выполнение продолжается с места, где остановилось. Это позволяет работать с последовательностями, не загружая их полностью в память.

➡️ Пример: Фибоначчи на генераторах
def fibonacci_generator(limit):
a, b = 0, 1
while a < limit:
yield a
a, b = b, a + b


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

➡️ Генераторы vs. списки
Генераторы экономят память, так как не хранят все элементы в памяти:
import sys

def list_numbers(n):
return [i for i in range(n)]

def generator_numbers(n):
return (i for i in range(n))

print(sys.getsizeof(list_numbers(1000000))) # 8448728 байт
print(sys.getsizeof(generator_numbers(1000000))) # 208 байт


Разница очевидна: генератор занимает всего 208 байт, тогда как список — 8+ мегабайт!

➡️ Генераторные выражения
Аналогично списковым включениям, но работают лениво:
squares_list = [x * x for x in range(10)]  # Обычный список
squares_gen = (x * x for x in range(10)) # Генератор


➡️ Комбинирование генераторов
С помощью itertools генераторы можно объединять и фильтровать:
from itertools import chain, filterfalse

result = chain((x * x for x in range(10)), (y + 10 for y in range(5)))
odd_squares = filterfalse(lambda x: x % 2 == 0, (x * x for x in range(10)))



➡️ Когда использовать генераторы
— Обработка больших данных без перегрузки памяти
— Потоковая обработка (например, чтение файлов)
— Создание бесконечных последовательностей
— Оптимизация скорости и эффективности кода

Proglib Academy #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31
👍 Пиши код, чтобы он не тормозил

Алгоритмы — не «для олимпиадников». Это то, что делает твой код быстрым.
Не на 5%, а в 10–100 раз.

Вот что реально помогает:

— выбрал другой алгоритм — и лагов нет,
— думаешь про сложность — и не пишешь мусор,
— знаешь про Trie, префиксные суммы, LRU — и у тебя всё летает.

Не гадай, где узкое место. Мерь. Оптимизируй. Ускоряй.

➡️ Вот статья, после которой кодят с умом:
https://proglib.io/sh/BZ6EzqDbaW

Proglib Academy #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21🙏1
🗒 Ты не ленивый, у тебя просто нет среды — создай её сам

1. Проблема не в мотивации. Проблема в хаосе. Нет среды = нет привычки = нет прогресса.

2. У тебя может быть даже Mac за 200к, но без чёткой системы ты всё равно будешь прокрастинировать.

3. Начни с малого:

– Выдели 30 минут в день на код.
– Веди журнал — что учил, что пробовал.
– Учи 1 тему → решай 2 задачи → пиши 1 комментарий к чужому коду.

4. Создай пространство, где ты — разработчик:

– даже если это Telegram-чат с собой;
– даже если ты пишешь код в Google Keep или бумажной тетрадке.
Ритуал важнее инструмента.

5. Среда — это не железо. Это:

время,
фокус,
повторяемость.

👇 Что вам мешает начать кодить?

Proglib Academy #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥2
🤨 Vite или Webpack — что выбрать и почему

Частый вопрос от новичков: «Чем вообще отличается Vite от Webpack и зачем всё это нужно?»

➡️ Разобрали подробно в новой статье:

— Чем Vite ускоряет разработку в разы (и где подводные камни);

— Почему Webpack до сих пор топ для enterprise-проектов;

— Как настроить оба сборщика — пошагово, с примерами кода;

— Какую систему выбрать для своего pet-проекта, а какую — для продакшена.

Переходите читать статью

Proglib Academy #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
🚀 How to: как настроить Gradient Boosting

Не выбирайте слишком много гиперпараметров. Достаточно этих пяти:
✔️ learning rate, глубина деревьев, количество деревьев, subsample ratio, L1/L2-регуляризация.

Учитывайте взаимосвязь параметров:
✔️ Меньший learning rate → нужно больше деревьев.
✔️ Глубокие деревья → нужен меньший learning rate.

Как настраивать:
✔️ Фиксируем 500–1000 деревьев.
✔️ Тюним learning rate, глубину и другие параметры.
✔️ Используем раннюю остановку (15–20 итераций без улучшений).

Полезные рекомендации:
✔️ Learning rate: 0.001–0.05, по умолчанию 0.01.
✔️ Размер датасета: для маленьких → деревья 1–3, для больших → 4–6.
✔️ Регуляризация: L2 — для коррелированных фич, L1 — для отбора важных.
✔️ subsample: 0.1–0.7, по умолчанию 0.5.
✔️ k-fold CV обязателен, для временных рядов — nested sliding CV.

🔥 Какой совет был полезен? Делитесь!

Proglib Academy #буст
3👍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
📊 Промпт для генерации визуализаций данных

Используйте этот промпт для построения графиков с помощью 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
1
✔️ Лучшие практики импорта модулей в 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