ᴀɴᴅʀᴇ | ᴅᴀᴛᴀ sᴄɪᴇɴᴄᴇ
164 subscribers
110 photos
7 videos
35 links
Телеграм канал обычного студента, которому нравится всё изучать
Download Telegram
Всем привет! Меня зовут Андрей — я студент третьего курса факультета математики и компьютерных наук Кубанского государственного университета

Тут я буду рассказывать про:
▫️Свои проектыот мини-скриптов, которые решают одну конкретную задачу, до полноценных идей, которые я планирую развивать дальше

▫️Разборы «под капотом»как устроены решения и какие подходы я пробовал

▫️Идеи и наработкимысли, концепции, которыми хочу поделиться
Буду рассказывать, как устроено то или иное решение, какие методы пробовал, что пошло не так и почему

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

Будет здорово найти тех, с кем можно не просто обмениваться идеями, а вместе думать, пробовать, ошибаться — и, главное, расти!
13🤝5🎄4🔥3🦄2💊21🐳1🤨1😈1🆒1
Хочу начать с одного проекта — а именно, с моей курсовой работы

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

Теперь подробнее:
• Пользователь отправляет текстовый запрос

• Бот с помощью семантического анализа определяет смысл запроса

• Просматривает Telegram-каналы, в которых состоит, и ищет посты, степень схожести которых превышает определённую пороговую константу. Она как раз и показывает, насколько пост соответствует смыслу запроса

• Подходящие посты отправляются пользователю в личный чат


Однако у бота есть и ряд ограничений:
• Может просматривать только те каналы, в которых является админом

• Семантический поиск пока реализован не слишком гибко и требует доработки
❤‍🔥7🦄4🔥2🌚2🆒2💊2👾2👍1👻1🤝1🎄1
🤔 Чем отличается Фреймворк от Библиотеки ?

Библиотекаэто набор готовых функций, классов или методов, которые пользователь вызывает по мере необходимости

📌 Пример:
import math

result = math.sqrt(16)
print(result)

• Вызываем функцию sqrt из библиотеки math
• Контролируем, когда и как она вызывается
• Программа работает по нашему сценарию


Фреймворкэто основа для построения приложений, сервисов итд. Он определяет структуру программы, и ты пишешь код, который встраивается в этот фреймворк. Управление потоком выполнения находится у него. Это называется инверсия управления

📌 Пример:
from flask import Flask

app = Flask(__name__)

@app.route('/')
def user():
return "Привет, пользователь!"

if __name__ == '__main__':
app.run()

• Мы не контролируем, когда будет вызвана функция user()
• Фреймворк решает: «Когда приходит запрос, вызови эту функцию»
• Мы подстраиваемся под структуру, заданную фреймворком

#фреймворк #библиотека
🔥96❤‍🔥1
Не оптимизируй отдельные части – оптимизируй всю систему

Прочёл интересную книгу, автором которой является известный израильский учёный и бизнес-консультант Элияху Голдратт и он же и автор «Теории ограничений»
Теория ограниченийэто философия управления и системный подход, основанный на идее, что любая система имеет как минимум одно ограничение (узкое место), которое определяет её общую производительность


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

Они разрабатывают и внедряют новый метод — Управление по Критической цепи, который радикально меняет подход к срокам, приоритетам над проектом, что в итоге приводит к его успешному завершению

Подробнее о ТО будет в посте ниже 👇
19🔥7🍓4❤‍🔥1👏1
ᴀɴᴅʀᴇ | ᴅᴀᴛᴀ sᴄɪᴇɴᴄᴇ pinned «Всем привет! Меня зовут Андрей — я студент третьего курса факультета математики и компьютерных наук Кубанского государственного университета Тут я буду рассказывать про: ▫️Свои проекты — от мини-скриптов, которые решают одну конкретную задачу, до полноценных…»
🔗 Производительность системы определяется ее слабым звеном

Это аналогично цепи: прочность зависит от самого слабого звена. Чтобы усилить цепь, нужно укрепить именно это звено

Принципы Теории ограничений:
1. Найти то самое «бутылочное горлышко», которое сдерживает всю команду или систему от достижения более высоких результатов

2. Решить, как максимально использовать ограничение. Не пытаться сразу его устранить, а заставить его работать с максимальной эффективностью без простоев.

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

4. Расшить ограничение системы. Если после шагов 2 и 3 мощности ограничения все равно не хватает, только теперь принимаются радикальные меры: увеличить его мощность (нанять больше людей, купить более мощное оборудование, автоматизировать и т.д.)

5. Вернуться к шагу 1. После устранения одного ограничения найдется следующее «бутылочное горлышко». Процесс непрерывен и направлен на постоянное улучшение
Важно: Не допускайте инерции! После того как вы расширили ограничение, старые правила и процессы, которые были подчинены ему, могут стать новым барьером!

📌 Разберём на конкретном примере: Команда из 10 человек (бэкенд, фронтенд, тестировщики, аналитик) работает над созданием нового продукта. Несмотря на все усилия, команда стабильно выпускает только 2-3 фичи в месяц. Все постоянно заняты, но результат не растет.

Применяем 5 шагов TO:
1. Идентифицировать ограничение – Аналитик готовит ТЗ быстро, есть запас готовых задач на 2 недели вперед. Фронтенд и бэкенд-разработчики обычно успевают сделать свою часть работы за 1-1.5 недели. Тестировщики (их в команде всего 2 человека) постоянно завалены работой. Готовая к проверке функциональность копится колонке «тест», иногда там висит 10-15 задач. Разработчики начинают новую задачу, пока старые не протестированы. Готовые к выпуску модули ждут своей очереди на регрессионное тестирование по 1-2 недели

Вывод: Ограничение системы — отдел тестирования. Его пропускная способность определяет скорость выпуска фич для всей команды

2. Максимально использовать ограничение – обеспечить, чтобы тестировщики работали только на самой ценной работе и не тратили время впустую. Вводят правило: тестировщики не занимаются рутинными задачами (настройка окружения, сборка итд). Вводят «зоны тишины» — часы, когда тестировщиков нельзя отвлекать вопросами

3. Подчинить всё остальное работе ограничения – теперь вся команда работает в ритме, заданном тестированием. Разработчики не просто бросают готовую задачу в общую очередь, а согласовывают ее сдачу с тестерами. Если они заняты, разработчики не начинают новую задачу, а помогают устранять найденные баги или занимаются техническим долгом. Это предотвращает накопление очереди. Аналитик перестает забрасывать команду новыми ТЗ и начинает помогать с написанием более четких «acceptance criteria», что уменьшает количество вопросов от тестеров и разработчиков

Результат после шагов 2 и 3: Очередь в тестировании сократилась. Команда начала стабильно выпускать 3-4 модуля в месяц, просто за счет лучшей организации работы, без найма новых людей

4. Расширить ограничение – теперь, когда ограничение используется на 100%, но бизнес-цели требуют выпускать 5-6 модулей в месяц, пришло время расшивать «бутылочное горлышко». Наняли еще одного тестировщика. Инвестировали в инструменты: купили лицензии на мощную систему управления тестированием, внедрили более серьезную автоматизацию регрессионных тестов

Результат: Пропускная способность отдела тестирования выросла. Теперь система способна выпускать 5-6 модулей в месяц

5. Вернуться к шагу 1 – после расширения тестирования обнаружилось новое ограничение. Теперь им стала скорость разработки сложной бэкенд-логики. Команда снова применяет цикл TOC, но уже к этому новому ограничению

💁🏻‍♂ Нужно искать самое слабое звено и воздействовать на него, выстраивая работу всей команды вокруг этого звена
2🔥84🥰3👍2❤‍🔥1👏1🤔1💯1
This media is not supported in your browser
VIEW IN TELEGRAM
🤖 Сканирование: обнаружен человечишка

OpenCV – не просто модуль, а целая платформа, с огромным набором инструментов. Основной функционал:
• Чтение и записьдоступ к изображениям и видео почти всех популярных форматов (.jpg, .mp4 итд)

Захват видеодоступ к камере устройства

Компьютерное зрениеособые алгоритмы находят на изображении уникальные ключевые точки

Анализ движенияалгоритмы оптического потока могут отслеживать движение каждого пискеля между кадрами

Калибровка камерывозможность определить внутренние параметры камеры (фокусное расстояние, искажение линзы)

Машинное обучениеOpenCV имеет собственный встроенный модуль ML


И это примерно 10% от общего функционала. Сам по себе модуль невероятно мощный, огромный и требует не одного поста, чтобы рассказать о нём всё. Думаю, что буду использовать его точно не один раз 🤓

🔗 Подробнее можно почитать здесь и здесь
58🔥6❤‍🔥1
🍪 Кто такие эти ваши кукисы и зачем их запрашивают ?

Cookies – это простой способ веб-сервиса хранить ваши данные. При первом посещении сервис передаёт браузеру на хранение некие данные в виде текста. При следующем обращении к этому сервису браузер передаёт эти данные, и сайт «узнаёт» пользователя, как старого кента, которого недавно видел

Файлы куки собирают и хранят:
• Личные данные пользователя, включая номер телефона, адрес и данные карты

• Пользовательские настройки — адаптацию базовых настроек под конкретного человека

• Пользовательскую статистику — информацию о посещаемых сайтах, запросах и кликах


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

❗️Если вы используете незащищенное Wi-Fi-соединение, мошенники могут перехватить ваши куки. В браузере копятся тысячи файлов cookie с разных сайтов. Это может повлиять на скорость работы браузера
7❤‍🔥6🔥3🆒1😎1
📊 Анализ сообществ ВКонтакте по ссылке

В этом посте я хочу показать вам один из своих первых проектов — парсер для сообществ в ВК. Пользователь отправляет ссылку на любое открытое сообщество и на выходе получает статистику по 10 последним постам, а также общую сводку по ним. Количество постов можно настраивать

На примере показан подробный анализ сообщества Регион 93. Мы рассматриваем:
• Название сообщества
• Описание
• Город
• Количество подписчиков
Далее система анализирует каждый пост, подсчитывая:
• Количество лайков
• Репосты
• Комментарии
• Просмотры

🗃 В конце формируется общая статистика по всем постам. Кроме того, для удобства дальнейшего использования (например, для детального сравнительного анализа с другими сообществами) все данные сохраняются в формате JSON

🔗 Ссылка на репозиторий
11👍3🔥3❤‍🔥1👏1🆒1
This media is not supported in your browser
VIEW IN TELEGRAM
💻 Сегодня отмечается День программиста

Этот день выбран не случайно! Дело в том, что 13 сентября 2025 года – это 256-й день года. А мы, компьютерщики, знаем, что 2⁸ = 256, где 2 и 8 — основание системы счисления. Также, число 256 является максимальным значением степени числа 2, которое не превышает количество дней в году

Желаю всем, чтобы:
▫️Ваш код компилировался с первого раза, а если нет — то ошибка будет очевидной и понятной
▫️Количество багов в коде стремилось к нулю
▫️Прод никогда не падал
▫️Все пул-реквесты принимали без комментариев, а если и оставляют, то только с похвалой
▫️Вас окружало всё меньше вайбкодеров
▫️Искусственный интеллект никогда нас не заменил


👨🏻‍💻 И самое главное: чтобы вы находили реальное применение вашим скиллам, а работа приносила не только доход, но и удовольствие
13👾5🔥4❤‍🔥1🆒1
На днях мне рассказали одну интересную историю о том, как сотрудника решили заменить на ИИ, что в итоге привело к неприятным последствиям...

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

Что будет, если в системе произойдёт сбой? Сказать ИИ «Блин, произошла ошибка, исправь её» — недостаточно. Никто не разберётся в системе лучше, чем человек, который с пониманием её проектировал и который лучше других знает, в каких местах вероятнее всего может произойти ошибка и как её устранить. «Хьюман» способен осознать риски, если система даст сбой или подвергнется кибератаке, а ИИ — нет. Потому что он лишь предугадывает текст, но не понимает его

ИИ не должен полностью заменять человека, он должен быть супер классной ручкой в его руках!


Так что, восстание машин пока отменяется 😁
1125🤔3❤‍🔥1🔥1🆒1
🖥 Как и где используется JSON

JSON или JavaScript Object Notation – текстовый формат для хранения и передачи структурированных данных между системами

Он представляет из себя словарь – это такой тип данных, представленный в виде пары "ключ: значение".

Разберем на примере Олега:
{
"student": "Олег",
"age": 20,
"inventory": ["ноут", "чай"],
"skill": "шарит за C++"
"homework": true
}

# Даже у параметров словаря есть пара..

Здесь собрана вся информация об Олеге, которую я хочу слить в сеть передать какой-либо системе или сервису — для её дальнейшего использования

Многие программы используют JSON-файлы для хранения пользовательских настроек. Например, файл settings.json в VS Code может содержат все персональные настройки редактора: цветовую тему, обои с аниме - тянкой, шрифты и прочее

💁🏻‍♂️ Вывод: JSON — это очень удобный и понятный формат данных, чего не скажешь о его собрате — XML, о котором мы обязательно поговорим
🔥135🆒3😍2❤‍🔥1
🫠 Давно ничего сюда не выкладывал, пора исправляться

Последние дни выдались очень тяжёлыми, но в то же время насыщенными. Я провёл небольшой анализ всего, что меня окружает, того, чем я занимаюсь, и так далее. За это время у меня появилось несколько классных идей, которые я хочу реализовать в ближайшее время!

Также я решил взяться за свой старый проект, с которого, собственно, началась моя история здесь. Планирую переделать его с нуля, чтобы он представлял собой не «костыль на костылях», а действительно классный и полноценный проект. Об этом и обо всём остальном — в грядущих постах!

Как у вас проходят дни?
515❤‍🔥4🤝3🔥1🆒1
⚠️ eval() и exec() – одни из самых опасных функций в Python

В процессе изучения удивляюсь, какие конструкции есть в питоне, например for + else или def f(): pass. Но следующие две функции требуют особого внимания

eval() – выполняет строку как выражение и возвращает результат. Всё предельно просто, пишем в скобках выражение и получаем его значение. А если пользователь введёт не значение, а целую команду ?
s = input()
result = eval(s)

# "2 + 2" – вернет 4, норм

# __import__('subprocess').call(['format', 'C:']) форматирование диска, не норм


exec() – выполняет строку как блок кода. Мы можем присовить переменной s какой либо код, и функция exec без проблем сможет его выполнить. Суть в том, что пользователь может ввести не только участок кода, но и функцию, для удаления файла с компьютера
import os

s = "for i in range (5): print(i)"
exec(s) # 0, 1, 2, 3, 4

exec("os.remove('C:/Users/…example.txt')") # удаление


❗️Даже не пытайтесь удалить ту самую папку, о которой вы подумали
😍7🔥4🆒31💔1
🔗 Структуры данных. Часть 1

Любой программист в процессе разработки игры, приложения или сайта сталкивается с большим количеством структур данных. Одни из основных – это список, словарь и кортеж, о которых мы с вами сейчас поговорим

Списоккаждый элемент имеет свой номер (индекс), по которому к нему можно обратиться. Мы можем легко менять его элементы, добавлять новые или убирать существующие

📌 Пример использования:
cars = ['Audi', 'BMW', 'Ford']
cars.append('Haval') # Добавили машину


Кортежнеизменяемый список, который защищает данные от изменений

📌 Пример использования:
keys = (8ec5a3, 4dc8ha5)
keys[0] = 0 # Ошибка


Словарьхранит данные в виде пар ключ: значение, позволяя мгновенно получать доступ к элементу по его ключу

📌 Пример использования:
car = {
'brand': 'Audi',
'model': 'R8',
'year': 2020
}


Также, совсем недавно я создал свой профиль на Хабр и буду туда выкладывать более подробную информацию с постов в формате полноценной статьи
4🔥2❤‍🔥1