85658
Все самое полезное для программиста в одном канале. По рекламе: @proglib_adv Курс по ML: https://clc.to/eLH_zQ Другие курсы: https://clc.to/goHZHA Для обратной связи: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/67a5ba2901234b69883a4d46
Коллеги, запоминаем важное
🐸 Библиотека программиста
💪🏻 Проверь свои знания и выиграй приз!
Пройди образовательно-развлекательную викторину на нашем экспресс-курсе «Математика для Data Science»
👾 Что ждёт на викторине?
— проверка знаний и прокачка навыков;
— соревновательный дух и конкуренция;
— шанс выиграть TG-Premium 🎁
🗓️ Курс стартует 6 ноября
📚 Запишись и участвуй в викторине
🤯 Работать 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;}}'
Так сеньор в итоге затащил бы эту задачу?
🐸 Библиотека программиста
📉💻⚡️ IT-рынок обвалился: на одну вакансию теперь 2383 отклика
Если ты еще не почувствовал, как изменился IT-рынок, то скоро почувствуешь на своей шкуре. Вакансий стало меньше, требования — в топе, а конкуренция превратилась в кровавую баню. Рассказываем, как лихорадит рынок труда в IT.
👉 Читать статью
🐸 Библиотека программиста
🔥 Многие рассуждали в правильном направлении — так держать!
В этой задаче достаточно ввести два указателя. Первый будет увеличиваться при прохождении одного узла списка, второй – при прохождении двух узлов.
В момент, когда второй указатель дойдёт до конца списка (наткнётся на 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.
🐸 Библиотека программиста