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

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

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

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

• Просматривает 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
👨🏻‍💻 Решаем задачки

Условие: Дан список, содержащий целые числа. Необходимо найти и вывести на экран число, которое встречается чаще других, а также количество его повторений

📌 Пример:
a = [1, -8, 0, 7, 7] # 7 – 2 раза
b = [1, 1, 2, 2] # такого нет


Комментарии:
• Список можно инициализировать вручную непосредственно в коде

• Выполнить задачу без использования библиотек и фреймворков

• Решение можно оформить в виде функции

• Сложность алгоритма должна быть O(n)

• Если есть два или более чисел, встречающихся одинаковое количество раз, либо список пустой, то результата нет


💁🏻‍♂ Сложность O(n)это значит, что алгоритм выполняется за линейное время, которое растёт пропорционально росту размера данных. Яркий пример – цикл for, который имеет такую сложность. Если список состоит из трёх элементов, то мы пробежимся по нему за три итерации. Если из четырех, тогда за четыре и т.д

❗️Вайбкодить запрещаю

Свои варианты отправляйте в комментарии 👇
8🤔3🔥1🆒1
Разбор решения

Решение обернуто в функцию, для простоты использования. В ней мы сразу проверяем, не пустой ли список. Если нет, то создаем:
• Словарь, где ключ – это число списка, а значение – это количество его повторений

• max_count – для хранения максимального количества повторений

• most_num – для хранения числа, повторяющегося наибольшее количество раз

• max_numbers – количество чисел, которые повторяются больше всего

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

Если после обработки списка максимальное количество повторений не превышает 1 или найдено несколько чисел с одинаковым максимальным количеством повторений, значит, искомое число не найдено

💁🏻‍♂ Если было интересно, то можно сделать это как отдельную рубрику

Вот тут код 👇
12🔥4🆒3😁1
В последнее время мне приходит всё больше идей для разных проектов, причём каждый из них не похож на остальные. Во время разработки я специально не использую нейросети для написания всего кода. Максимум — спросить про какой-нибудь модуль или функцию. Дальше уже я решаю, как это использовать и где

Всегда удивляет реакция людей на то, что я пишу код для проектов сам. А когда они говорят: «Зачем ты столько времени тратишь? Можно ведь быстрее» — это и вовсе вызывает недоумение. Да, можно быстрее. Но вот вопрос: насколько такое решение безопасно и эффективно?

Когда ты пишешь код сам, то:
• Тебе известно, что исправлять, если что-то сломается

• Ты знаешь, что именно улучшать, если захочешь сделать апгрейд

• У тебя есть понимание того, как он работает

• Ты сможешь рассказать про каждую строчку, если тебя попросят объяснить, как работает код


👉 Поэтому, друзья, прокачивайте свои скиллы, и не давайте нейронкам захватить ваше мышление. Напомню, что нейросеть – это супер классная ручка в ваших руках, и не больше!
👍9🔥6🥰21🆒1
🔥 Бизнес-фест от Сбера

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

Удалось даже сделать фото с такими экспертами, как:
Игорь Манн — маркетинговый эксперт, автор более 50 книг, сооснователь издательств «МИФ» и «Книгиум»

• Иван Третьяков — управляющий директор по AI-трансформации Сбера

Леонид Антропов — руководитель проекта «Воронка инновационных стартапов»


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

Особенно запомнились слова Игоря Стоянова — основателя сети салонов красоты «Персона». Послушайте…
11🔥6❤‍🔥2💋1