Азбука айтишника – Telegram
Азбука айтишника
3.07K subscribers
1.45K photos
51 videos
2 files
913 links
Айти для неайтишников: постигаем азы программирования.

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

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

Для обратной связи: @proglibrary_feeedback_bot
Download Telegram
📊 Собес по Data Science: 10 вопросов, которые разделяют джунов от мидлов

Готовишься к интервью? Мы собрали 10 каверзных вопросов, которые любят задавать тимлиды. Здесь нет банальных задач — только те, на которых спотыкаются 80% кандидатов. Проверь себя и узнай, готов ли ты к следующему собесу!

🔹 Курс «Программирование на языке Python»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib

🏃‍♀️ Азбука айтишника

#режимразраба
Please open Telegram to view this post
VIEW IN TELEGRAM
👍 Method Chainingэффективный код в одну строку

Метод чейнинг (method chaining) — техника вызова нескольких методов на одном объекте в одной строке, где каждый метод возвращает self, позволяя обходиться без промежуточных переменных.

🔹 Преимущества:

• Меньше кода — избавляет от промежуточных переменных.
• Читаемость — код выглядит как последовательность логичных операций.
• Элегантный дизайн — делает API удобным для использования.

🔹 Недостатки:

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

🎯 Когда использовать Method Chaining:

• Трансформации данных — очистка текста, математические вычисления, работа с датафреймами.
• Формировании Fluent API — используется в pandas, jQuery и других библиотеках для удобного взаимодействия с объектами.

🏆 Лучшие практики использования:
• Возвращайте self правильно — убедитесь, что каждый метод возвращает объект, с которым ведется работа, а не новый объект.
• Читаемые цепочки — избегайте слишком длинных цепочек, которые трудно отлаживать.
• Обработка ошибок — добавьте обработку исключений, чтобы не прерывать выполнение кода в случае ошибки.
• Логичность — методы должны выполняться в последовательности, логичной для объекта.

🔹 Пример на Pandas:
import pandas as pd

df = pd.DataFrame({'Name': ['Alice', 'Bob'], 'Age': [25, 30]})
result = df.rename(columns={'Name': 'Full Name'}).sort_values(by='Age').reset_index(drop=True)
print(result)


🔹Пример на Flask:
from flask import Flask, jsonify
app = Flask(__name__)

@app.route('/')
def index():
return jsonify(message="Hello, World!").status_code(200)


🔹 Курс «Программирование на языке Python»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib

🏃‍♀️ Азбука айтишника

#синтаксическийсахар
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Учим Python прямо на ферме: вышла игра, где грядки не копают — их программируют.

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

— Управление только кодом: дроны выполняют ваши инструкции строчка в строчку;
— Осваиваете основы программирования прямо по ходу игры, без скучных уроков;
— Никаких уровней — ферма эволюционирует вместе с вашими алгоритмами;
— Есть русский язык и Python IntelliSense — удобно даже из VS Code;
— В Steam — около 95% восторженных отзывов.

Вот ссылка, если хотите поиграть

🔹 Курс «Основы IT для непрограммистов»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib

🏃‍♀️ Азбука айтишника

#синтаксическийсахар
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1🙏1
📌 Методы экземпляра, класса и статические методы в Python

Хотите писать чистый и поддерживаемый код? Давайте разберем, чем отличаются эти три типа методов в Python.

🔹 Методы экземпляра (`self`):
✓ Работают с конкретным объектом
✓ Изменяют атрибуты экземпляра
✓ Доступ к атрибутам класса через self.__class__
class MyClass:
def method(self):
return "Метод экземпляра", self


🔹 Методы класса (`cls`, `@classmethod`):
✓ Работают с классом в целом
✓ Могут изменять атрибуты класса
✓ Не изменяют атрибуты экземпляра
class MyClass:
@classmethod
def class_method(cls):
return "Метод класса", cls


🔹 Статические методы (`@staticmethod`):
✓ Не принимают self или cls
✓ Не изменяют состояние ни экземпляра, ни класса
✓ Используются для вспомогательных функций
class MyClass:
@staticmethod
def static_method():
return "Статический метод"


🔹 Применение в реальном коде:
class Pizza:
def __init__(self, ingredients):
self.ingredients = ingredients

@classmethod
def margherita(cls):
return cls(["моцарелла", "помидоры"])

@staticmethod
def circle_area(r):
import math
return r ** 2 * math.pi

pizza = Pizza.margherita() # Классовый метод
print(Pizza.circle_area(4)) # Статический метод


🔹 Вывод:
✓ Методы экземпляра изменяют данные конкретного объекта
✓ Методы класса работают с классом и создают альтернативные конструкторы
✓ Статические методы полезны для утилитарных функций

🔹 Курс «Основы IT для непрограммистов»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib

🏃‍♀️ Азбука айтишника

#синтаксическийсахар
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
😴 Сон на рабочем месте или как сохранить продуктивность

Если вы часто устаете, меняете позу и вам болит спина — эти три секрета для вас:

1. Кресло наше всё

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

2. Power nap — короткий дневной сон

Говорят, Леонардо да Винчи тоже так делал: спал по 20 минут каждые четыре часа, чтобы быстро восстанавливаться. Научитесь засыпать за секунды: включаю фоновую музыку, режим «не беспокоить» на 15-20 минут, откидываете кресло — и спите.

3. Не пропускаем важное

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

Такой 15–20 минут сна даёт заряд бодрости работать максимально продуктивно, не отвлекаясь.

А что помогает быть продуктивным вам?

🏃‍♀️ Азбука айтишника

#режимразраба
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱1
Что происходит в офисе РКН последнюю неделю:
This media is not supported in your browser
VIEW IN TELEGRAM
😁5
Зачем айтишнику математика?

Если вы хотите в Data Science, математика — это ваш пропуск. Не пугайтесь школьных формул, в IT всё логичнее и интереснее.

Мы обновили курс «Математика для разработки AI-моделей». Теперь преподаватели объясняют темы вживую на вебинарах.

Чему научим:

— Работать с матрицами и векторами (основа всех данных);
— Строить прогнозы (линейная регрессия);
— Делать рекомендательные системы (как в YouTube или Netflix).

Это база, которая нужна для старта в ML.

Запись открыта до 9 декабря:
https://clc.to/LojFzw
👍1
💳 Как выбить зарплату побольше

Собрали для вас в карточках 5 стратегий для торгов на собеседовании. Есть ещё несколько, которые подробно описаны в статье.

🔹 Курс «Алгоритмы и структуры данных»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib

🏃‍♀️ Азбука айтишника

#карьерныйкоммит
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
🏗 Управление памятью в Python: как это работает

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

1. Python управляет памятью автоматически

Когда вы пишете x = [1, 2, 3], Python не заставляет вас думать о байтах и указателях. Он сам выделяет память, отслеживает объекты и убирает мусор. Всё это делает менеджер памяти, который хранит:

▪️ Тип данных (int, list, dict)
▪️ Счетчик ссылок (кто использует объект)
▪️ Значение (сами данные)

Такой подход удобен: нет «висячих указателей», не нужно вручную вызывать malloc/free, а ресурсы оптимизируются автоматически.

2. Счетчик ссылок

Каждый объект в Python — как воздушный шарик. Пока его кто-то держит (есть ссылки), он остается. Если все нити отпущены — объект исчезает.

Как это работает:
import sys

a = [1, 2, 3]
print(sys.getrefcount(a)) # 2 (одна ссылка в переменной + вызов функции)
b = a
print(sys.getrefcount(a)) # 3 (еще одна ссылка)
del a
print(sys.getrefcount(b)) # 2 (одна ссылка удалена)
b = None # Объект больше не используется → удален


💡Но есть нюансы: Python кэширует строки и мелкие числа (-5 до 256), поэтому их ссылки могут не изменяться.

3. Сборщик мусора

Если объекты ссылаются друг на друга, счетчик ссылок их не удалит. Например:
class Node:
def __init__(self):
self.parent = None

a = Node()
b = Node()
a.parent = b
b.parent = a # Циклическая ссылка!


Такие объекты удаляет сборщик мусора (Garbage Collector, GC), используя алгоритм поколений:

🍼 Поколение 0 — новые объекты, проверяются чаще.
🧑‍💼 Поколение 1 — пережили одну проверку.
🦖 Поколение 2 — «старожилы», проверяются реже.

Управление GC:
import gc
gc.collect() # Принудительный запуск
gc.set_threshold(700, 10, 10) # Настройка частоты очистки


💡 Совет: если у вас много циклических объектов, очищайте их вручную (gc.collect()).

4. Как оптимизировать память вручную

🔸 slots для уменьшения потребления памяти:
class User:
slots = ['name', 'age'] # Экономит до 40% памяти

def __init__(self, name, age):
self.name = name
self.age = age


🔸 Генераторы вместо списков:
 # Неоптимально:
lines = open("data.txt").readlines() #Весь файл в памяти!

# Оптимально:
def read_lines(filename):
with open(filename) as f:
for line in f:
yield line # Читаем по одной строке


🔸 Массивы вместо списков:
import array
numbers = array.array('i', [1, 2, 3, 4, 5]) # Числовой массив (экономия памяти)


🔸 Кэширование с lru_cache:
from functools import lru_cache

@lru_cache(maxsize=1000)
def compute(x):
return x 2 # Кэширует результаты функции


5. Как искать утечки памяти

🔸 Используем tracemalloc — показывает, где «утекает» память:
import tracemalloc

tracemalloc.start()
data = [x for x in range(10_000)] # Проблемный код

snapshot = tracemalloc.take_snapshot()
top_stats = snapshot.statistics('lineno')
print(top_stats[0]) # Где выделена память?


🔸 Визуализация с objgraph — рисует граф зависимостей:
import objgraph
objgraph.show_most_common_types(limit=5) # Какие объекты «размножаются»?


📌 Подробнее про управление памятью в Python: https://clc.to/SNaUtg

🏃‍♀️ Азбука айтишника

#магиякода
Please open Telegram to view this post
VIEW IN TELEGRAM
2
ИИ ведь должен был помогать, а не вредить 🧠

Просто ответственный эйчар, который заинтересован в рекрутинге.

🏃‍♀️ Азбука айтишника

#небагафича
Please open Telegram to view this post
VIEW IN TELEGRAM
😁7
🥸 Как стажёру или джуну работать в команде (и не потеряться)

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

1️⃣ Не бойтесь спрашивать

Глупых вопросов не существует. Лучше спросить сейчас, чем допустить баг, который уйдёт в прод. Вопрос в 10:00 спасает вечер.

2️⃣ Заведите себе «тупой файл»

Да, именно так. Всё непонятное — термины, вопросы, фрагменты кода — записывайте в один файл. Потом разберётесь или зададите вопросы.

3️⃣ Следите за pull requests

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

Помните: у вас есть уникальное преимущество — вы только начинаете. У вас пока нет выгорания, нет рутины, и вы действительно хотите разобраться. Используйте это.

А вы уже работали в команде?
Пишите в комментариях 👇

🔹 Курс «Основы IT для непрограммистов»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib

🏃‍♀️ Азбука айтишника

#карьерныйкоммит
Please open Telegram to view this post
VIEW IN TELEGRAM
3
📝 Промпт для идеального рефакторинга кода

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

Вот несколько промтов для рефакторинга:

1. Предложи улучшения в рефакторинге для [язык] кода с целью повышения тестируемости: [фрагмент кода].

2. Выяви возможности применения [архитектурного паттерна] в данном [язык] коде: [фрагмент кода].

3. Оптимизируй следующий [язык] код для уменьшения использования памяти: [фрагмент кода].

4. Отрефакторь приведенный [язык] код для улучшения обработки ошибок и устойчивости к ним: [фрагмент кода].

5. Предложи такие изменения в приведенном [язык] коде, чтобы соблюдался [SOLID или другой принцип проектирования]: [фрагмент кода].


⚡️ ️Как вы обычно рефакторите свой код? Делитесь в комментариях!

🔹 Курс «Основы IT для непрограммистов»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib

🏃‍♀️ Азбука айтишника

#магиякода
Please open Telegram to view this post
VIEW IN TELEGRAM
👨‍💻 Выжимаем максимум из код-ревью

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

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

👉 Читать статью

🔹 Курс «Основы IT для непрограммистов»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib

🏃‍♀️ Азбука айтишника

#ликбез
Please open Telegram to view this post
VIEW IN TELEGRAM
🙏 На какой стороне ты?

❤️ — Страдаю от лени и нихрена не делаю
🌚 — Перерабатываю чуть-чуть

🔹
Курс «Программирование на языке Python»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib

🏃‍♀️ Азбука айтишника

#небагафича
Please open Telegram to view this post
VIEW IN TELEGRAM
2
⚠️ «Гибкий график» и «возможность профессионального роста»: что работодатели на самом деле имеют в виду

«Стартап-атмосфера» = хаос и переработки, «возможность профессионального роста» = будете работать за четверых. Составили словарь корпоративного новояза и список неудобных вопросов, которые стоит задать на собеседовании, чтобы не попасть в ловушку.

🔗 Читать статью

🔹 Курс «Программирование на языке Python»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib

🏃‍♀️ Азбука айтишника

#карьерныйкоммит
Please open Telegram to view this post
VIEW IN TELEGRAM