Точка входа в программирование
20.1K subscribers
1.27K photos
220 videos
2 files
2.79K links
Фундаментальные знания по основам программирования

Разместить рекламу: @tproger_sales_bot

Правила общения: https://tprg.ru/rules

Другие каналы: @tproger_channels

Сайт: https://tprg.ru/site

Регистрация в перечне РКН: https://tprg.ru/zrgj
Download Telegram
Forwarded from Типичный программист
Честный ресёрч найма в IT прямо с рынка

Вместе с Proglib мы разобрали, почему айтишники реально уходят с работы, по каким признакам вычислить токсичный коллектив и какие HR-трюки бесят разработчиков больше всего. Если ещё не читали — советуем это исправить❤️

Бонусом мы подготовили ещё два полезных лонгрида из этого исследования:
Где искать работу в IT: лайфхаки и топ-площадки
Каких разработчиков переизбыток и кому сейчас сложнее найти вакансию

Сохраняйте и кидайте коллегам!
3
XML: универсальный язык для обмена данными, который до сих пор актуален

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

В статье простым языком объясняется, как устроен XML, где его применяют и почему он до сих пор остаётся важной частью технологического мира. Хорошая отправная точка для тех, кто хочет понимать, что скрывается за этими «тегами» и почему они до сих пор в ходу.

#xml
🤓2
15 неожиданных приёмов со словарями в Python, которые реально освежат ваш код

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

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

#видео #python
Forwarded from Метод утёнка
Что на самом деле отличает джуна от сеньора?

В IT до сих пор любят мерить грейды в годах опыта: мол, если больше пяти лет в резюме — ты сеньор. Но в работе всё сложнее.

Александр Белькевич поделился с нами классным разбором о том, чем на самом деле отличается зрелый разработчик. Кстати, у него в канале ещё много другой полезной годноты.

💡 Senior — это человек, который думает шире своего редактора кода. Его задача сделать не просто «чтобы работало», он — видит последствия: как его правки скажутся на поддержке, на бизнесе, на конечных пользователях. И если нужно, он выберет не самое эффектное, но понятное решение.

🛠 Его выбор технологий всегда обоснован. Он не ставит очередной модный фреймворк просто потому что «новинка». Где-то он спокойно сверстает на jQuery — если так быстрее и дешевле, а где-то готов потратить время и внедрить сложную архитектуру.

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

🔥 И да, он не бросает свои баги в проде. Если от него что-то упало — он чинит, пусть даже в пятницу вечером. Потому что понимает, что на том конце — живые люди, а не «кто-то там».

🧘 И, пожалуй, самое сложное — умение не писать код там, где его можно не писать. Senior умеет сказать «оставим как есть» — и это тоже ценно.

По сути, senior — это не про количество лет или модные слова в профиле. Это про зрелость: в мышлении, в отношениях с людьми, в умении видеть картину целиком.

А вы как считаете? Что ещё отличает сеньора?

#softskills #команда
❤‍🔥7👍2👾1
Кроссплатформенные приложения на Python: весь путь от API до десктопа и веба

Не обязательно учить полдюжины языков и городить велосипед, чтобы собрать работающий кроссплатформенный продукт. В этой статье автор делится практическим опытом: как на одном только Python собрать backend на FastAPI, фронтенд на Flet, задеплоить всё это в облако и собрать под десктоп и веб.

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

Если вы уже освоились с Python и хотите попробовать собрать свой первый «всё‑в‑одном» проект, материал очень пригодится — от шаблонов кода до тонкостей деплоя и сборки.

А вы бы рискнули собрать свой API и фронт на Python, или сразу пошли бы во Flutter?

❤️ — «да, попробую»
🗿 — «лучше Flutter»!


#python #flet #fastapi #кроссплатформенность #разработка
6🗿2
This media is not supported in your browser
VIEW IN TELEGRAM
Когда наврал в резюме, но ты очень харизматичный и тебя всё равно взяли
1
30 вопросов, которые стоит знать фронтендеру перед собеседованием

На собесе вам могут спросить о чем угодно — от разницы между var и let до Event Loop и нюансов CSS‑селекторов. И лучше подготовиться заранее, чем краснеть перед интервьюером.

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

#фронтенд #собеседование
2🤓2
Forwarded from Метод утёнка
Манга про Linux? Да, такое тоже бывает — знакомьтесь с Ubunchu!

Если думаете, что Linux — это только консоль и мрачные админы, посмотрите на него глазами героев манги Ubunchu! Это весёлая и понятная история про школьный клуб системного администрирования, где ученики ставят себе Ubuntu и по ходу учат друг друга работать в Linux.

Манга на удивление легко объясняет, что такое Ubuntu и чем она хороша, устройство файловой системы, прелести свободного ПО и команды терминала.

Читать приятно даже тем, кто далёк от IT (если вы, конечно, нормально воспринимаете мангу).

#linux #манга #учёба
6🤣1
Git и Github: Практический урок для начинающих

В этом мини-курсе подробно рассматривается работа с Git и его взаимодействие с платформами GitHub, GitLab, BitBucket.

В курсе поэтапно рассматриваются: установка Git, Git config, создание репозитория, git status, работа с Github, разработка в Git, SSH, создание ключей, ветвление, слияние веток, разрешение конфликтов, ревью автотестов, разрешение конфликтов в реальном проекте, создание pull request.

Смотреть

@prog_point #git #github
Некогда объяснять, пора вершить судьбы 😱
Три разраба прямо сейчас ищут работу — выбери того, кто получит шанс на достойный оффер. Голосуй прямо сейчас!

Все подробности в «Коде найма».
Please open Telegram to view this post
VIEW IN TELEGRAM
Что такое прототипное наследование в JavaScript?

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

В других языках (например, Java или C#) есть классы — «шаблоны», по которым создаются объекты, и у которых можно наследовать методы и свойства.

В JavaScript всё устроено немного иначе — он изначально не был «классовым», и вместо этого использует **прототипы**.

В JavaScript **каждый объект внутри себя хранит ссылку на другой объект — прототип**.

Если вы обращаетесь к свойству или методу, которого нет в текущем объекте, JavaScript заглянет в его прототип. Не нашёл там? Пойдёт дальше — в прототип прототипа.

Эта цепочка называется **прототипной цепочкой**.
const animal = {
eats: true
};

const rabbit = {
jumps: true
};

rabbit.__proto__ = animal;

console.log(rabbit.jumps); // true (есть в самом объекте)
console.log(rabbit.eats); // true (нашёлся в прототипе)


Здесь rabbit не хранит eats напрямую, но когда вы к нему обращаетесь — движок пойдёт по цепочке в animal и найдёт.

**Почему это удобно?**

1. Можно «раздавать» общие методы всем объектам через прототип — не дублируя код.
2. Можно строить целые цепочки наследования без классов.
3. Всё это гибко и динамично.

Сейчас в JavaScript уже появились **классы**, но внутри они всё равно реализованы через прототипы — просто это более привычный синтаксис для тех, кто приходит из других языков.

Так что прототипное наследование — это способ объектов «подглядывать» в другие объекты за свойствами и методами. И именно так устроен весь JavaScript под капотом.

#javascript
🤓2
10 телеграм‑каналов, которые помогут найти работу в IT

Сегодня вакансии в IT многие ищут уже не на скучных сайтах с формами и фильтрами, а там, где все привыкли общаться — в Telegram. Но как выбрать из тысяч каналов те, где действительно выкладывают свежие и актуальные предложения?

В этой статье собрали 10 проверенных каналов с вакансиями в IT — от джуниоров до синьоров, от фронтенда до DevOps. Удобно, что в подборке сразу отмечено, на кого ориентирован каждый канал и чем он отличается: кто‑то выкладывает в основном зарубежные удалёнки, кто‑то даёт только высокие позиции или только стажировки для новичков.

Если вы в поиске новой работы или присматриваете интересные варианты на будущее — сохраните себе этот список и подпишитесь на подходящие.

#работа #вакансии
🤓1
Spring Boot Для Начинающих

Spring — главный Java-фреймворк, который должен знать любой начинающий Java-программист. Это видео по Spring Boot для тех, кто начинает его изучение с нуля!

Здесь всего за 1 час вы разберетесь со всеми основными понятиями Spring: бины, ApplicationContext, Dependency Inject, Autowired, Scope, Transactional, Proxy и многим другим. Даже если вы только начинаете изучать Spring, то после этого видео уже сможете начать создавать собственные приложения на этом фреймворке.

#java #видео #springboot
👎2🍌1
От Аристотеля до Тьюринга: простыми словами о функциональном программировании

Функциональное программирование (ФП) — это не магия, а способ организовать код через чистые функции, неизменяемость и композицию, без побочных эффектов. И, знаете, когда начинают речь о монадах и функторax, многие теряются.

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

Если вам давно хотелось разобраться, что за зверь этот ФП и зачем он вообще в современных проектах — вот отличный шанс.

Используете ФП в своей работе или предпочитаете ООП?


#функциональноепрограммирование
Как из России опубликовать приложение в App Store и Google Play

Сейчас, когда российским разработчикам стало куда сложнее выходить на международные площадки, вопрос «как всё-таки выкатить своё приложение в App Store и Google Play» звучит как никогда актуально.

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

#mobidev #appstore #googleplay
Где учиться на проджекта или продакта в 2025 — подборка курсов для начинающих

Если вы давно хотите войти в IT, но не кодить, а управлять продуктами и командами — самое время посмотреть на направления проджект‑ и продакт‑менеджмента.

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

#курсы #продакт #проджект
Весь ваш файл исходного кода


Может скажем ему?
🎃6😁1
Forwarded from Zen of Python
__init__.py в Python: зачем он нужен и как с ним работать

Файл __init__.py играет ключевую роль в функционировании модулей и пакетов. В этой посте разберём, зачем нужен этот файл, как его использовать, и какие трюки можно с ним провернуть.

__init__.py используется для обозначения директории как пакета Python. Пакет — это просто каталог, содержащий код, который можно импортировать. До Python 3.3 файл __init__.py был обязателен для того, чтобы Python распознавал директорию как пакет. Начиная с Python 3.3, это уже не строго обязательно благодаря PEP 420, который ввёл поддержку 'implicit namespace packages'.

Тем не менее, __init__.py всё ещё активно используется, потому что он позволяет:

— Настроить импорты, переменные окружения и т.д.;
— Реализовать алиасы и проксировать импорты;
— Управлять логикой и поведением при импорте.

Пример: простой пакет с __init__.py


my_package/
├── __init__.py
├── module1.py
└── module2.py


В __init__.py можно явно указать, какие модули экспортируются:


from .module1 import func1
from .module2 import func2

__all__ = ['func1', 'func2']


Теперь из внешнего кода можно написать:


from my_package import func1, func2


И это сработает — благодаря тому, что __init__.py делает интерфейс «плоским».

Что можно писать в __init__.py

Всё, что угодно — это обычный Python-скрипт. Вот что часто в нём делают:

1. Инициализация логики:


import logging

logging.getLogger(__name__).addHandler(logging.NullHandler())


2. Упрощение структуры:


# Вместо длинного:
from my_package.module1.submodule import ClassA

# можно:
from my_package import ClassA


И в __init__.py:


from .module1.submodule import ClassA


3. Версионирование:


__version__ = "1.0.0"


4. Работа с абсолютными и относительными импортами:

Python различает абсолютные и относительные импорты. Благодаря __init__.py, относительные импорты типа from . import module1 работают корректно.

Когда __init__.py не нужен

PEP 420 ввёл концепцию namespace packages — это директории без __init__.py, которые Python всё равно распознаёт как пакеты. Это удобно, когда вы хотите:

— Распределить один пакет между несколькими каталогами (например, для плагинной архитектуры);
— Избежать необходимости в поддержке пустых __init__.py.

Пример:


project/
├── pkg/
│ └── subpkg1/
│ └── a.py
└── other/
└── pkg/
└── subpkg2/
└── b.py


Если в pkg/ нет __init__.py, Python объединит содержимое в один namespace package.

Когда __init__.py обязателен

— При тестировании и использовании pytest (некоторые тест-раннеры не обнаруживают модули без `__init__.py`);
— При работе с устаревшими инструментами;
— При построении плоского интерфейса пакета;
— Для поддержки специфичных путей и логики импорта.

#основы
22
А как у вас?

❤️ — у меня также
👀 — у меня наоборот
🗿 — а мне вообще за код не платят
🗿233