Жизнь на прокачку

Terkin

Общительный
Пользователь заблокирован
Вход в новую область знаний может показаться захватывающим, но начать можно с нескольких простых шагов:

  1. Определите свою цель: Начните с того, чтобы определить, что вы хотите достичь, какую область знаний вы хотите изучить и зачем. Это поможет вам удерживать фокус и избежать отвлечений.
  2. Изучите основы: Изучите основы темы, которую вы хотите изучить. Это может включать в себя чтение книг, просмотр видеоуроков или прослушивание подкастов, чтобы получить общее представление об области знаний.
  3. Найдите экспертов: Найдите людей, которые уже являются экспертами в этой области и изучите их опыт. Это может быть через чтение их книг или блогов, просмотр их видео или прослушивание их интервью.
  4. Пробуйте практиковать: Начните практиковать. Попробуйте применять свои знания на практике. Начните с малого, и постепенно увеличивайте сложность задач, чтобы улучшать свои навыки.
  5. Не бойтесь ошибаться: Не бойтесь совершать ошибки. Это часть процесса обучения, и каждая ошибка поможет вам улучшить свои навыки.
  6. Продолжайте учиться: Учите новые вещи на протяжении всей своей жизни. Постоянное обучение поможет вам стать лучшим и достичь большего в выбранной вами области знаний.
Начиная с этих простых шагов, вы можете сформировать основу для изучения новой области знаний. Помните, что самый важный фактор - ваша мотивация и настойчивость, чтобы продолжать учиться и развиваться.
HTML:
<html>
<head>
    <title>Let's go -:)</title>
</head>
<body>
    <div>
        <p>"Hello World!"</p>
    </div>
</body>
</html>
 
Пользователь заблокирован
Сегодня Node.js и пишем простой парсер этого форума в разделе "Новые сообщения", заголовки сообщений отправляем в telegram-bot.

Окружение:
  • Какой то ноутбук на Windows 11 с WSL Ubuntu 20.04
  • Node.js 18.15.0
  • 2 банки пива по 0,5л
1. Подключаем необходимые модули:
JavaScript:
const TelegramBot = require('node-telegram-bot-api');
const request = require('request');
const cheerio = require('cheerio');
Модуль node-telegram-bot-api используется для создания Telegram бота, модуль request - для выполнения HTTP запросов, а модуль cheerio - для парсинга HTML.
2. Создаем экземпляр Telegram бота:
JavaScript:
const bot = new TelegramBot(process.env.TELEGRAM_BOT_TOKEN, { polling: true });
В конструкторе передаем токен нашего Telegram бота, который берем из переменной окружения TELEGRAM_BOT_TOKEN, и опции { polling: true }, чтобы бот начал получать обновления через long-polling.
3. Определяем URL страницы, которую будем парсить:
JavaScript:
const url = 'https://ludomah.com/whats-new/posts/';
Мы будем парсить список новых постов на сайте https://ludomah.com/whats-new/posts/.
4. Обрабатываем входящие сообщения бота:
JavaScript:
bot.on('message', (msg) => {
  const chatId = msg.chat.id;
  bot.sendMessage(chatId, 'Выберите действие:', {
    reply_markup: {
      inline_keyboard: [
        [
          { text: 'Получить названия постов', callback_data: 'get_titles' },
        ],
      ],
    },
  });
});
Мы используем событие 'message', чтобы бот отвечал на входящие сообщения. В этом примере мы просто отправляем сообщение с встроенной клавиатурой, содержащей одну кнопку "Получить названия постов".
5. Обрабатываем нажатия на кнопки встроенной клавиатуры:
JavaScript:
bot.on('callback_query', (callbackQuery) => {
  const chatId = callbackQuery.message.chat.id;
  const action = callbackQuery.data;

  switch (action) {
    case 'get_titles':
      request(url, function (error, response, html) {
        if (!error && response.statusCode == 200) {
          const $ = cheerio.load(html);
          const titles = $('.structItem-title')
            .map((i, el) => $(el).text().trim().replace(/"/g, ''))
            .get();
          bot.sendMessage(chatId, `Названия статей:\n\n${titles.join('\n')}`);
        } else {
          bot.sendMessage(chatId, 'Произошла ошибка при загрузке данных');
        }
      });
      break;
  }
});
Мы используем событие 'callback_query', чтобы реагировать на нажатия на кнопки встроенной клавиатуры.

Как результат получаем:
1679285240765.png

Дополнительно:
Token API прячем в ту же директорию где и сам app.js в .env, если используем git, то незабываем добавлять в gitignore этот файл.
Деплоим через Docker или на тот же Heroku или на сервер(кому как удобнее), у меня локально на ноуте работало.

p.s. Буду всякую подобную хрень тут размещать, от делать нечего, затрагивать разные области программирования, полный fullstack). Что то стоящее заливать на Github.
Прошу не флудить:ROFLMAO:
 
Пользователь заблокирован
UPD:
Чуть приукрасил, сделал линки, добавил кнопку "Обновить"
1679287761672.png
 
Последнее редактирование:
Пользователь заблокирован
В ближайшее время создадим проект на Python используя одну из популярных моделей машинного обучения. Подключим через API внешний источник данных в виде статистики проведенных матчей по большому теннису, обучим нашу модель прогнозировать исходы предстоящих событий по множеству параметров и факторам. Для удобного использования подключим Телеграм-бот, возможно сделаем и push-natification. Создадим админку и простой сайт с авторизацией на фреймворке Django, придумаем виртуальную валюту, сделаем аналитику с дашбордом и выясним наконец- можно ли поднимать на ставках на дистанции. Будем продолжать экспериментировать с разными моделями обучения, искать лучший результат.

Дисклеймер:

Все создается только с ознакомительными целями, не несет ни какой пропаганды азартных игр. По моим убеждениям, нельзя заработать на ставках. Я не играю и вам не советую.
 
Пользователь заблокирован
Pt.1
Занимаемся аналитикой и поиском данных, пока пришел к Sportradar- опытным арбитражникам знакома эта контора. API 1000/мес. 1/сек запросов лимит на trial тарифе, этого в принципе достаточно, но требует привязку к домену, можно конечно поднять nginx и подписаться certbot'ом, но не хочу на тесте обучения данных, выполнять лишние действия. Так же в trial- тарифе v.3, а я хотел бы от них использовать v.4 с более обогащёнными данными.
Продолжим искать...
Параллельно пишу бековую часть и почти закончил с моделью обучения.
 
Пользователь заблокирован
Все таки получилось получить доступ к Sportradar API, я уже думал парсить с сайтов придется статистику кривую.
Есть несколько методов подходящих для обучения;
Competitor vs Competitor tennis/trial/v3/en/competitors/:competitor_id_1/versus/:competitor_id_2/summaries:format -между соперниками смотрим матчи предыдущие
Competitor Profile tennis/trial/v3/en/competitors/:competitor_id/profile:format -профиль участника
Competitor Summaries tennis/trial/v3/en/competitors/:competitor_id/summaries:format -общая стата с многими параметрами участника
Еще очень много других методов и эндпойнтов, с источником данных у нас теперь нет проблем, будем ресты дергать GET запросом и получать массив данных в JSON, там питоном уже сортировку выполним.

Теория:

ML(machine learning)- машинное обучение, остальное в Wiki почитает, кто хочет.
Будем использовать логистическую регрессию либо метод опорных векторов, скорее всего лучший подход- это ensemble learning(ансамбль моделей).
Также важно учитывать, что для прогнозирования исхода теннисного матча нужно использовать подход, основанный на временных рядах (time series), учитывающий изменения формы и уровня игры игроков, факторы внешней среды и другие факторы, которые могут повлиять на исход матча.
 
Пользователь заблокирован
@Terkin, я слов то таких не знаю)) просто скажите, понимаете или нет?
Я много в чем понимаю, но хотелось бы больше, вот практикуюсь, изучаю и чтобы руки помнили. Да, на шарпах делал несколько проектов.
 
@Andrey53, ещо пока нет)))

@Terkin, у сына программирование, хотя специальность вообще химия. И в программировании он ничего не понимает. Он купил себе молдавский номер, австрийское ай пи, и скачал какую то американскую нейросеть)) и эта нейросеть пишет ему все коды. Да так ловко, что у него даже математики студенты списывают, препод нахваливает!)) Причем, препод ему какие то замечания пишет, он это все копирует нейросети, и она ему исправляет)))
Ну для меня тот, кто сумел договориться с какой то там нейросетью - уже супер программист)) я от этого очень далека))
 
Пользователь заблокирован
@Andrey53, ещо пока нет)))

@Terkin, у сына программирование, хотя специальность вообще химия. И в программировании он ничего не понимает. Он купил себе молдавский номер, австрийское ай пи, и скачал какую то американскую нейросеть)) и эта нейросеть пишет ему все коды. Да так ловко, что у него даже математики студенты списывают, препод нахваливает!)) Причем, препод ему какие то замечания пишет, он это все копирует нейросети, и она ему исправляет)))
Ну для меня тот, кто сумел договориться с какой то там нейросетью - уже супер программист)) я от этого очень далека))
Сын далеко пойдет)
 
@Andrey53, ещо пока нет)))

@Terkin, у сына программирование, хотя специальность вообще химия. И в программировании он ничего не понимает. Он купил себе молдавский номер, австрийское ай пи, и скачал какую то американскую нейросеть)) и эта нейросеть пишет ему все коды. Да так ловко, что у него даже математики студенты списывают, препод нахваливает!)) Причем, препод ему какие то замечания пишет, он это все копирует нейросети, и она ему исправляет)))
Ну для меня тот, кто сумел договориться с какой то там нейросетью - уже супер программист)) я от этого очень далека))
Депутат растёт
 
Пользователь заблокирован
Продолжаем аналитику, ищем данные и все что нам может пригодится для ML, пока выбрал основные методы, расписал их параметры и значения. Пока еще метод по календарю не разобрал, но логика в следующем, что из этого метода забираем event_name и его comtetition_id получаем список с описанием всех матчей за период, либо в live. Так же тянем и player_id и competitor_id
Через присвоенные переменные и обозначенных игроков игроков в матче тянем статистику по каждому(второй метод тут). Обучаем модель, наиболее предпочтительные алгоритмы из популярных:
  • Решающие деревья (Decision Trees)
  • Случайный лес (Random Forest)
  • Метод опорных векторов (Support Vector Machines)
  • Нейронные сети (Neural Networks) - этот пока не берем
Интересно будет исследовать зависимости рост/вес/рука/возраст/рейтинг ну и конечно же сравнение по результатам прошедших матчей. Так же, заметил, что игроки на турнире в своей стране играют лучше, можно этот параметр так же учесть.

Параметр
Значение
idУникальный идентификатор события
nameНазвание события
country_nameНазвание страны, в которой проходит событие
city_nameНазвание города, в котором проходит событие
start_dateДата начала события в формате ГГГГ-ММ-ДД
end_dateДата окончания события в формате ГГГГ-ММ-ДД
event_linkСсылка на страницу события на официальном сайте
typeТип события (например, турнир, чемпионат, кубок и т.д.)
league_nameНазвание лиги или тура, в котором проходит событие
league_logoСсылка на логотип лиги или тура, в котором проходит событие


Параметр
Значение
idУникальный идентификатор игрока
nameИмя игрока
country_codeДвухбуквенный код страны, которой принадлежит игрок
genderПол игрока (male или female)
birthdateДата рождения игрока в формате ГГГГ-ММ-ДД
heightРост игрока в сантиметрах
weightВес игрока в килограммах
handednessДоминирующая рука игрока (Right или Left)
backhandВид удара с обратной стороны игрока (One-handed или Two-handed)
coachИмя и фамилия тренера игрока
player_rankingРейтинг игрока в мировом рейтинге
player_pointsКоличество очков игрока в мировом рейтинге
player_country_rankingРейтинг игрока в рейтинге своей страны
player_country_pointsКоличество очков игрока в рейтинге своей страны
player_statsСтатистика игрока (количество выигранных/проигранных матчей, количество выигранных/проигранных сетов, процент побед в карьере)



Параметр
Значение
idУникальный идентификатор игрока
nameИмя игрока
country_codeДвухбуквенный код страны, которой принадлежит игрок
genderПол игрока (male или female)
birthdateДата рождения игрока в формате ГГГГ-ММ-ДД
heightРост игрока в сантиметрах
weightВес игрока в килограммах
handednessДоминирующая рука игрока (Right или Left)
backhandВид удара с обратной стороны игрока (One-handed или Two-handed)
matchesИнформация о матчах, сыгранных между двумя игроками (включая итоговые результаты, количество сыгранных геймов и т.д.)
 
Пользователь заблокирован
В ближайшие дни высокая занятость по работе- делаем обнову для другой страны, дедлайн горит). Постараюсь над нашим проектом работать ежедневно, чтобы не превратился в мертвяк, хоть по 20 минут. Надо идти к цели©
 
LUDOMAH.COM
Сверху