Все самое полезное для программиста в одном канале. По рекламе: @proglib_adv Курс по ML: https://clc.to/eLH_zQ Другие курсы: https://clc.to/goHZHA Для обратной связи: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/67a5ba2901234b69883a4d46
🔥 Многие рассуждали в правильном направлении — так держать!
В этой задаче достаточно ввести два указателя. Первый будет увеличиваться при прохождении одного узла списка, второй – при прохождении двух узлов.
В момент, когда второй указатель дойдёт до конца списка (наткнётся на NULL), первый будет указывать на середину списка.
👨💻 Пример:
public class Central {
public static void main(String args[]) {
LinkedList linkedList = new LinkedList();
LinkedList.Node head = linkedList.head();
linkedList.add( new LinkedList.Node("1"));
linkedList.add( new LinkedList.Node("2"));
linkedList.add( new LinkedList.Node("3"));
linkedList.add( new LinkedList.Node("4"));
linkedList.add( new LinkedList.Node("5"));
linkedList.add( new LinkedList.Node("6"));
linkedList.add( new LinkedList.Node("7"));
linkedList.add( new LinkedList.Node("8"));
linkedList.add( new LinkedList.Node("9"));
linkedList.add( new LinkedList.Node("10"));
LinkedList.Node current = head;
int length = 0;
LinkedList.Node middle = head;
while(current.next() != null){
length++;
if(length%2 ==0){
middle = middle.next();
}
current = current.next();
}
if(length%2 == 1){
middle = middle.next();
}
System.out.println("length of LinkedList: " + length);
System.out.println("middle element of LinkedList : " + middle);
}
}
class LinkedList{
private Node head;
private Node tail;
public LinkedList(){
this.head = new Node("head");
tail = head;
}
public Node head(){
return head;
}
public void add(Node node){
tail.next = node;
tail = node;
}
public static class Node{
private Node next;
private String data;
public Node(String data){
this.data = data;
}
public String data() {
return data;
}
public void setData(String data) {
this.data = data;
}
public Node next() {
return next;
}
public void setNext(Node next) {
this.next = next;
}
public String toString(){
return this.data;
}
}
}
Как найти средний элемент в LinkedList за ОДИН ПРОХОД?
🚨 Это ночное включение. Предлагай свое решение в комменты, ответ опубликуем завтра!
Ты знаешь, что средний элемент в LinkedList несложно найти, определив длину списка, последовательно пройдя все его узлы, пока не дойдёшь до NULL в первом проходе. А затем, пройдя половину из них во втором проходе.
Но как ее решить за один проход?
Создавайте технологии, которые меняют мир
В команду Яндекса нужны бэкенд-разработчики с опытом от 3 лет на C++, Python, Java/Kotlin, Go — строить полезные сервисы для миллионов пользователей.
Как получить офер за неделю?
• До 12 ноября оставить заявку на участие и пройти предварительный этап.
• 15–16 ноября решить задачи на технических секциях.
• 17–21 ноября прийти на финальную встречу.
Присоединяйтесь к одной из команд Яндекса, чтобы усилить нашу инженерную культуру и строить новую технологическую реальность.
Читайте подробности и оставляйте заявку на сайте.
DevOps — это так, для души
🐸 Библиотека программиста
👾 Весь код в OpenAI теперь проверяет Codex
ИИ ревьюит код в компании, которая разрабатывает ИИ. Круг замкнулся!
Нейронка раскидала всё как есть на самом деле
🐸 Библиотека программиста
🧰 Ключевые советы по проектированию RESTful API
1️⃣ Domain Model Driven — проектируй API согласно логике предметной области
2️⃣ HTTP Methods — используйте GET
для чтения, POST
для создания, PUT
для обновления, DELETE
для удаления
3️⃣ Idempotence — повторный запрос не должен ломать систему: GET
, PUT
, DELETE
безопасны при повторе, а POST
— нет
4️⃣ Status Codes — всегда возвращай понятные коды ответов (200
, 201
, 400
, 404
, 500
), чтобы клиент понимал, что произошло
5️⃣ Versioning — добавляй версию в URL, чтобы не ломать старые клиенты после обновления API
6️⃣ Semantic Paths — проектируй роуты как существительные (/users
, /orders/{id}/items
), без глаголов вроде /getUser
7️⃣ Batch Processing — позволяй работать сразу с несколькими объектами (/users/batch
), чтобы не дергать API сто раз
8️⃣ Query Language — добавляй параметры для фильтрации, сортировки и пагинации (?page=1&sort=name
), чтобы было удобно искать данные
🐸 Библиотека программиста
Айтишник деталь не выточит, сеть коммуникаций не построит
...без таких специалистов зачастую невозможно обойтись — например, без токаря и фрезеровщика не получится выточить необходимую деталь, а без сварщика две части одной конструкции единым целым не станут.
Нейросети уже лишают работы ИТ-специалистов, в особенности программистов, однако научить искусственный интеллект, к примеру, варить металл, будет, вероятнее всего, непросто.
📃🗑 «Пишу чистый код» и еще 50 фраз, из-за которых ваше резюме летит в корзину
Рекрутеры видят одно и то же в каждом втором резюме: «командный игрок», «работаю с современными технологиями», «обладаю аналитическим складом ума». Эти клише не просто скучны — они ставят под сомнение твою компетентность.
👉 Разбираем 50+ шаблонных фраз по всем IT-направлениям и показываем, как их заменить или вообще выкинуть
🐸 Библиотека программиста
diff
в Linux — полезная команда для поиска различий между файлами, но icdiff
— еще круче:
$ icdiff config-dev.ini config-prod.ini
Алло, я HR-риэлтор
🐸 Библиотека программиста
Техподы, было?
🐸 Библиотека программиста
🔥 Рынок IT в 2025: меньше вакансий, выше требования, больше фейков | Алексей Сухоруков | Подкаст «Организованное программирование»
Рынок найма снова лихорадит: кандидатов — море, вакансий — сильно меньше, а требования растут как на дрожжах.
В недавнем выпуске подкаста Алексей Сухоруков — человек, который 20 лет в IT-рекрутменте, — рассказывает, почему сегодня рынок стал «рынком компаний», и как ИИ, санкции и ковид перекроили правила игры.
⚡️ Как AI вымывает простые задачи и усложняет жизнь джунам
⚡️ Почему дипфейки добрались до собеседований
⚡️ Как рекрутеры теряют позиции из-за автоматизации
⚡️ И где теперь искать работу, если хочешь остаться в IT
🎧 Слушать выпуск
🐸 Библиотека программиста
HTTP2 🆚 HTTP3
👉 HTTP1 → HTTP2
Первая версия протокола HTTP требовала дожидаться получения ответа перед отправлением следующего запроса в рамках одного соединения.
Во второй версии это исправили. Соединение может использоваться без ожидания завершения уже отправленного запроса.
👉 HTTP2 → HTTP3/QUIC
Проблема блокировки была решена в версии 2 — но только на уровне HTTP-протокола. На транспортном уровне TCP она все еще есть в виде обязательного последовательного получения пакетов.
Поэтому версию 3 собрали на протоколе UDP, в которой этой особенности нет, и назвали это QUIC.
🐸 Библиотека программиста
👩💻 Напоминаем про наш полный курс «Самоучитель по Go для начинающих»
Мы написали и собрали для вас в одну подборку все 18 частей, подкрепленных практикой.
1. Особенности и сфера применения Go, установка, настройка
2. Ресурсы для изучения Go с нуля
3. Организация кода. Пакеты, импорты, модули. Ввод-вывод текста.
4. Переменные. Типы данных и их преобразования. Основные операторы
5. Условные конструкции if-else и switch-case. Цикл for. Вложенные и бесконечные циклы
6. Функции и аргументы. Области видимости. Рекурсия. Defer
7. Массивы и слайсы. Append и сopy. Пакет slices
8. Строки, руны, байты. Пакет strings. Хеш-таблица (map)
9. Структуры и методы. Интерфейсы. Указатели. Основы ООП
10. Введение в ООП. Наследование, абстракция, полиморфизм, инкапсуляция
11. Обработка ошибок. Паника. Восстановление. Логирование
12. Обобщенное программирование. Дженерики
13. Работа с датой и временем. Пакет time
14. Интерфейсы ввода-вывода. Буферизация. Работа с файлами. Пакеты io, bufio, os
15. Конкурентность. Горутины. Каналы
16. Тестирование кода и его виды. Table-driven подход. Параллельные тесты
17. Основы сетевого программирования. Стек TCP/IP. Сокеты. Пакет net
18. Протокол HTTP. Создание HTTP-сервера и клиента. Пакет net/http
🐸 Библиотека программиста
🤯 Работать 38 часов в неделю — слишком мало для достижения успеха
Для реального карьерного роста необходимы минимум 60 часов в неделю
💥 Железная математика
«Гений. Миллиардер. Инноватор. Data Scientist»
— Тони Старк, если бы занимался аналитикой данных
🦑 Экспресс-курс «Математика для Data Science»
Добро пожаловать в игру.
⏺️ Ваша задача продержаться 10 раундов.
🔼 Каждый раунд: вебинар с экспертами, задачами и практикой.
⏹️ Пропуск — потеря шанса заложить фундамент своей карьеры в DS.
🎯 На испытаниях вас ждут:
— линейная алгебра;
— математический анализ;
— теория вероятности и статистика;
— градиенты и экстремумы функций;
— алгоритмы машинного обучения.
📜 Правило игры №7:
Оплатите участие до 19 октября и получите курс по базовой математике в подарок.
👉 Регистрируйся пока играет музыка!
ClickHouse и Cassandra: что скрывают highload-системы
16 октября в 18:00 на митапе 43Tech — три реальных кейса от инженеров, которые ежедневно работают с высоконагруженными хранилищами и миллиардами записей.
🟡Cassandra для маркировки товаров: как UDT помогают (и вредят), какие архитектурные решения работают и как можно оптимизирвать структуры данных
🟡ClickHouse без боли: эффективная запись данных, дедупликация и настройки, которые реально ускоряют вставку.
🟡Расскажем про цену «нулевой потери данных», как мы выбирали между производительностью и надёжностью при использовании Cassandra.
Митап пройдет в гибридном формате: вы можете присоединиться лично или онлайн.
Участие бесплатное, ссылку на трансляцию пришлем накануне.
Регистрация и подробности по ссылке: https://career.crpt.ru/events/database-meetup
Информационный канал /channel/database_43Tech
Чат для общения и нетворкинга: /channel/+N2GU6FaVzPhlNmYy
Реклама. ООО "НАЦИОНАЛЬНЫЙ КАТАЛОГ", ИНН 9731002289. Erid 2Vtzqwb1T2M
Кому надо?
🐸 Библиотека программиста
🐧 Когда ты запускаешь команду через SSH, она падает при закрытии сессии. nohup
(no hangup) решает это — команда продолжает работать даже после выхода.
nohup tar -cf archive.tar file1 file2 > /var/log/tar.log 2>&1 &
nohup
игнорирует SIGHUP
— процесс живёт после разрыва сессии.nohup.out
.&
, чтобы запустить в фоне.kill
.disown
— отвязать уже запущенный процесс.setsid
— запуск в новой сессии.systemd unit
.3. Постоянно грозиться, что уволилишься, и не увольняться
🐸 Библиотека программиста
Коллеги, как у нас обстановка по экспертам?
🐸 Библиотека программиста
🍁 Осенние скидки на курсы от proglib.academy
Как быстро войти в IT? Вот пошаговый план:
1️⃣ изучаем Python для быстрого старта;
2️⃣ осваиваем алгоритмы эффективного решения задач;
3️⃣ учим математику для DS и работы с данными;
4️⃣ разбираем архитектуру кода для создания стабильных систем;
5️⃣ зарабатываем 500 тыс. $ в секунду.
🎓 И у нас есть курсы на каждый этап со скидкой 40% весь октябрь!
💉 БАЗА по SQL-инъекциям
SQL-инъекции делятся на три основные группы по способу получения данных.
1️⃣ In-band (внутриполосная) — атака и получение данных через один канал
Два подтипа:
▪️Error-based — атакующий вызывает ошибки БД и вытаскивает из них информацию.
▪️Union-based — добавляет UNION SELECT к существующему запросу и получает данные в обычном HTTP-ответе.
Когда видишь данные прямо в теле ответа — вероятно, это внутриполосная атака.
2️⃣ Blind (слепая инъекция) — данные читаются по поведению сервера
Никаких записей из БД в ответе — хакер делает выводы по изменениям в ответе или по задержкам
▪️Time-based — запрос заставляет БД задержать ответ, по времени отклика делаются выводы
▪️Boolean (булевая) — запросы возвращают true/false, по этим значениям восстанавливается информация
Если в теле ответа ничего нет, но сайт ведёт себя по-разному — это может быть «слепая» инъекция.
3️⃣ Out-of-band (внеполосная)
Используется когда:
▪️Невозможно атаковать и получить данные через один канал
▪️Сервер работает нестабильно или слишком медленно
Данные передаются через альтернативные каналы (DNS, HTTP-запросы на внешний сервер хакера).
🐸 Библиотека программиста
🤖 Model Context Protocol — универсальный протокол для взаимодействия с ИИ
Сергей Фролов, автор проекта That's IT, объяснил простым языком: MCP — попытка создать стандартный протокол общения между ИИ и внешним миром, анонсированный Anthropic в ноябре 2024 года.
💡 Какую проблему решает?
Современные ИИ-ассистенты — очень умные, но совершенно оторванные от реальности теоретики, которые живут в информационном вакууме. Каждая интеграция с новым API или сервисом — это боль и зоопарк несовместимых решений.
🧰 Архитектура
Классическая клиент-серверная модель с тремя компонентами:
🔴 MCP Host — приложение, где живет LLM (например, Claude Desktop)
🔴 MCP Client — компонент внутри хоста для общения с серверами
🔴 MCP Server — внешняя программа, предоставляющая данные или функции
Общение происходит через HTTP + JSON-RPC для запросов и Server-Sent Events для асинхронности и стриминга.
📦 Основные элементы протокола
🔴 Messages — структурированный диалог с ролями: user, assistant, system, tool
🔴 Tools — внешние сервисы, которые модель может вызывать
🔴 Memory — серверы памяти для хранения заметок, фактов, векторных представлений
🔴 Files & Resources — доступ к файлам, БД, API через URI-схемы
🔴 Prompts — предопределенные шаблоны взаимодействия для стандартных задач
🤖 Практическое применение
С поддержкой MCP можно просто написать «Открой мой документ gdrive://МойДиск/Отчет.gdoc, сделай саммари раздела про расходы на рекрутинг» — и ИИ откроет и прочитает файл, без копирования и вставки.
🐸 Библиотека программиста
Просто запусти это, когда тимлид подойдет к твоему рабочему месту:
while :;do echo $LINES $COLUMNS $((RANDOM%COLUMNS)) "$(printf "\U$((RANDOM%500+1000))")";sleep 0.05;done|gawk '{a[$3]=0;for(x in a){o=a[x];a[x]=a[x]+1;c=int(rand()*5);if(c==0)col="\033[1;32m";else if(c==1)col="\033[0;32m";else if(c==2)col="\033[1;36m";else if(c==3)col="\033[1;31m";else col="\033[1;37m";printf "\033[%s;%sH%s%s",o,x,col,$4;printf "\033[%s;%sH\033[0m",a[x],x;if(a[x]>=$1)a[x]=0;}}'
Так сеньор в итоге затащил бы эту задачу?
🐸 Библиотека программиста
🚀 Курс «ИИ-агенты для DS-специалистов» уже стартовал
Первый вебинар успешно прошёл, участники уже начали разбираться, как использовать ИИ-агентов в реальных проектах.
Но всё самое интересное только начинается!
🔥 Впереди 4 мощных занятия — с практикой, инсайтами и разбором кейсов от экспертов.
💸 Сейчас действует специальная цена → 69.000 ₽ вместо 79.000 ₽.
⏳ Осталось всего 4 места.
Не упустите шанс прокачаться в том, что будет определять будущее индустрии.
👉 Забронировать место на курсе
📄🚫 5 неочевидных ошибок в резюме айтишника, которые убивают отклики
Резюме вроде нормальное, скиллы есть, а отклики уходят в пустоту? Проблема не в вас, а в том, как вы упаковываете свой опыт. Разбираем неочевидные ошибки айтишников при составлении резюме.
👉 Читать статью
🐸 Библиотека программиста