Advanced Hand Saver!

12
Floyd
crazy diamond
Статистика
Статистика
12
1 2
  • Всем привет!

    Лирическое вступление
    Как и когда вы сохраняете раздачи, которые хотели бы проанализировать позже, выложить на форум или обсудить с кем-то за его пределами? Насколько я могу судить, сформировалось два основных подхода к сохранению, анализу и шарингу отдельных раздач.

    1. Сохранение непосредственно во время игры - простое копирование исходного текста раздач в файл на вашем компьютере, либо импорт этого текста в какое-то хранилище в интернете (лично я знаю только http://weaktight.com, но, возможно, есть еще подобные сервисы).
    2. Поиск и просмотр в ХолдемМенеджере / Покертрекере.

    У каждого из этих подходов, на мой взгляд, есть существенные недостатки. В первом случае - это отсутствие в тексте раздачи такой важной вещи, как статистика. Если вы хотите снабдить раздачу этой информацией, вам приходится тратить дополнительное время на определение и набор статов, которые важны в данном конкретном розыгрыше. Это, вдобавок к процессу копирования-вставки-сохранения основного текста, еще раз отвлекает от игры. Во втором случае - это необходимость поиска раздачи среди уймы других в далеко не быстрых ХМ/ПТ и, что важнее, "подводный камень" в виде некорректной статистики. Дело в том, что при просмотре раздачи постфактум, ХАД выводит статистику на игрока на основе всех раздач с его участием (да, можно поставить галку Stats up to day of hand, но это очень редко решает проблему - вы ведь могли в тот день сыграть с этим оппонентом еще сотню-другую раздач), и та статистика, которая выводится сейчас может довольно сильно отличаться от той, которой вы руководствовались в момент принятия решения в процессе розыгрыша. Ну и, опять же, чтобы сконвертировать/поделиться, нужно выкладывать куда-то в интернет.

    Я лично пользуюсь первым способом, и до недавнего времени меня жутко парило, что в половине раздач нет никакой информации об оппонентах (я просто не успевал ее добавлять во время сессии) - получался просмотр раздач в вакууме (особенно, если я добирался до этого через неделю-другую). Приходилось шариться в ХМе и искать хоть какие-то статы на оппов. Но внезапно мне пришла в голову идея программы, которая в некоторой мере устраняла бы недостатки сохранения раздач во время игры. Идея настолько овладела мной, что, сев вечером за компьютер и отыграв 20 минут, я понял, что откладывать нельзя - срочно отрегался от новых турниров и начал разработку.


    Результат



    Основные функции программы:
    1. Сохранение текста раздачи на диск при простом копировании в буфер обмена. Не нужно самому вставлять этот текст в какой-то файл, всё будет сделано за вас;
    2. Импорт раздачи на weaktight. Процесс тоже полностью автоматизирован;
    3. Сохранение скриншотов. Может происходить как в ручном, так и в автоматическом режиме через настраиваемый интервал времени. Позволяет сохранять картинки со статистикой и цветовыми метками из клиента покер-рума на момент раздачи;
    4. Копирование к сохраненной раздаче нескольких последних скриншотов;
    5. Возможность быстро добавить какие-то нотсы.

    Все эти фичи могут работать как вместе, так и по отдельности - это настраивается под нужды конкретного пользователя. Кроме того, доступны следующие приятные вещи:
    1. Поддержка нескольких мониторов при сохранении скриншотов. Казалось бы, вполне ожидаемое поведение, но его могло и не быть, если бы у меня самого не стояло на столе 2 монитора;
    2. Дополнительная проверка текста раздачи на валидность через weaktight (то, что происходит перед тем, как появляется кнопка submit при ручном импорте на сайт);
    3. Ограничение количества хранимых на диске скриншотов.


    Настройка
    При первом старте программы появляется окно с кучей галочек. Не пугайтесь, сейчас я расскажу подробно, какая галочка за что отвечает (хотя, как разработчикам обычно кажется, там всё интуитивно понятно). Кроме того, в процессе объяснения раскроются некоторые дополнительные фишки.

    см. спойлер



    Общие настройки:
    Путь для сохранения данных. Определяет место на диске, куда будут сохранятся скриншоты, тексты раздач и прочие вспомогательные файлы.
    Показывать окно настроек при старте. Понимать буквально.
    Автоматический запуск съёмки экрана при старте. В принципе, тоже всё очевидно. Если опция выключена, то запустить регулярное сохранение скриншотов можно вручную через меню программы.
    Максимально ограничивать размер расходуемой памяти. Сохранение скриншотов в .NET, как оказалось, довольно затратная операция - у меня на каждый новый скриншот программа отжирает 20-25 Мб оперативки. После сохранения на диск, место в ОЗУ освобождается не сразу. Через каждые 6 скриншотов я запускаю процесс освобождения лишней памяти (так, чтобы программа на пике хавала не больше 140-150 Мб) независимо от состояния этой галки в настройках. Однако, вы можете включить опцию очистки памяти после сохранения каждого скриншота (хотя это может немного повысить нагрузку на ЦП).

    Сохранение раздач:
    Сохранять исходный текст раздачи. Сохранять на диск текст раздачи, как он был скопирован в буфер обмена. Сохраняется в отдельный файл для каждой раздачи и в один общий для всех раздач, сохраненных в этот день.

    Тут отдельно стоит отметить 3 момента:
    * Дата и время берутся из настроек компьютера. Если вы копируете какую-то старую раздачу из ХМа, она всё равно сохранится в папку, соответствующую локальному времени на момент копирования.
    * Копируется не любой текст, который попадает в буфер обмена. Предварительно проводится проверка на наличие в тексте одной (и только одной) подстроки - "Dealt to YourScreenName [...]". При этом результат проверки будет положительным, даже если скопирована не полностью и присутствует только эта строка. Т.е. это всего лишь базовое отсеивание данных, совсем не похожих на текст раздачи.
    * Исходя из пункта выше, текст раздачи должен быть на английском!

    Перед сохранением проводить проверку через weaktight. Использование этой опции позволяет надежнее проверять раздачи на целостность - на сайт отправляется запрос валидации текста раздачи. Для выполнения этого запроса необходимы корректные логин/пароль к сервису.
    Отправлять раздачу на weaktight. Автоматический постинг раздачи при копировании в вашем профиле на сайте. В качестве приятного бонуса - если включена эта опция и раздача успешно запостилась, в буфере обмена оказывается ссылка на страницу раздачи, которой можно сразу же с кем-нибудь поделиться.
    Логин/пароль от аккаунта http://weaktight.com. Хранятся в открытом виде. Я не думаю, что это такая уж секретная информация, чтобы заморачиваться над ее шифрованием в файле на локальном диске, главное - не используйте для weaktight пароль от действительно важных сайтов (да и вообще, не используйте одинаковых паролей).
    Сохранять каждую раздачу в отдельной папке. Позволяет выбирать между скидыванием раздач в одну общую кучу, либо разделением их по отдельным папкам, где будут данные по каждой конкретной раздаче.
    При сохранении сразу открывать окно редактирования нотсов. Что будет, если включить, думаю, понятно. А вот если эта опция выключена, то вызвать окно для редактирования нотсов вручную можно только к последней сохраненной раздаче.

    Сохранение скриншотов:
    Сохранять скриншоты каждые Х секунд. Задание интервала времени, через который на диск будет сохраняться новый скриншот. Минимальное возможное значение 5 секунд. Оптимальным я считаю что-то в районе 15-20 секунд - сохранение будет проходить не слишком часто, но в то же время достаточно, чтобы захватить актуальную статистику. Важно: скриншоты не начнут сохраняться до того момента, как будет запущена съёмка экрана (вручную, либо автоматически при старте программы, если в настройках выставлена соответствующая галка).
    Оставлять на диске только Х последних. Эта опция позволяет ограничивать число хранимых на диске файлов со скриншотами. Ограничение работает по принципу простой очереди - при добавлении нового скриншота старые, выходящие за рамки ограничений, удаляются. Минимальное возможное значение - 5.
    Копировать в папку с раздачами Х последних. Включает/отключает копирование скриншотов в папку с раздачей. Скриншоты берутся с хвоста очереди. Допустимые значения от 2 до 9.
    Удалять скриншоты сессии из основной папки при выходе. Включение позволит сразу удалять ненужные файлы при завершении программы (но только те, которые были сохранены в эту сессию; если раньше эта галка не стояла, предыдущие скриншоты сохранятся). Скриншоты из папок с раздачами в любом случае останутся на месте.


    Как видно, можно достаточно гибко подогнать программу под свои нужды. Например, упростить лишь процесс перенесения текста раздач в файл. Или отдельно пользоваться быстрым постингом на weaktight. А можно использовать только съемку экрана для каких-то других непокерных целей. В общем, выбирайте, что нужно лично вам.

    Также, советую немного поиграть с числовыми параметрами сохранения скриншотов, чтобы найти наиболее удобный для себя вариант, гарантирующий попадание нужного скриншота в папку с раздачей. И еще рекомендация - если непосредственно на столы у вас выводится только минимальный набор статов (и вы не хотите его расширять), то перед копированием текста раздачи можно вызвать нужный вам попап с дополнительными данными, сделать скриншот вручную, а уже потом сохранять раздачу - скриншот с попапом скопируется в папку вместе с остальными данными.



    Немного картинок, или как это выглядит на практике
    .
    .

    Программа запускается в трее и не имеет основного окна. Взаимодействие происходит через меню, доступное при правом клике на иконку. В нём всего несколько простых пунктов. Кроме того, для удобства добавлены горячие клавиши (Ctrl+F12 - внеочередной скриншот, Ctrl+F11 - открытие окна нотсов к последней сохраненной раздаче) и реакция на двойные клики по иконке (левый даблклик - скриншот, средний - нотсы).

    На диске хранение файлов организуется следующим образом.


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


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

    Всё! Просто, как две копейки. Однако позволяет ощутимо сэкономить время и гарантирует, что к каждой раздаче будут приложена актуальная статистика.


    Требования
    1. Microsoft .NET Framework 4.0.
    2. Доступ на запись и изменение файлов в папке, где располагается программа (для сохранения файла настроек).
    3. Доступ на запись, изменение и удаление файлов в папке, где будут сохраняться скриншоты и текст раздач.
    4. Сетевой доступ к сайту http://weaktight.com (обычный http по 80му порту) - необходим только при соответствующих настройках программы.


    Заметка для параноиков
    Я ничего не собираюсь у вас красть. Программа не шпионит, не ведет логи клавиатуры, никуда не отправляет ваши скриншоты, не предоставляет удаленный доступ к вашему компьютеру. Можете вообще запретить ей любую сетевую активность и импортировать раздачи на weaktight или в любой другой конвертер вручную. Продвинутые параноики могут скачать исходный код (C#, проект для VS 2010), изучить его со всех желаемых сторон и скомпилировать исполняемый файл самостоятельно.


    Скачать!
    Сделать это можно вот здесь. Другие файлообменные хостинги я пока что использовать не планирую (если изменю свое решение, об этом будет объявлено дополнительно в этой ветке), поэтому не стоит скачивать что-то похожее на мою программу из других мест. Если у вас нет .NET Framework 4.0, то его можно взять с официального сайта Mircosoft.


    Лицензия
    Advanced Hand Saver распространяется бесплатно по лицензии WTFPL - Do What The Fuck You Want To Public License.


    Donate

    Если после использования программы у вас появилось непреодолимое желание поблагодарить меня за нее материально, я совершенно не против, мой ник на старзах - Floyd Lapp. Если желания не появилось - вы неблагодарный жлоб мммм подумайте, как вы будете жить с этим ээээ, всё нормально, у меня есть работа и покер.


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

    На этом всё. Live long and prosper!
    Сообщение отредактировал Floyd - 6.7.2012, 0:20
    Ответить Цитировать
    1/11
    + 26
  • респект
    Ответить Цитировать
    1/1
    + 3
  • я, как и многие на этом сайте, конвертирую раздачи через http://www.handconverter.com/
    возможно ли сделать дополнение с привязкой к этому сайту?
    Ответить Цитировать
    1/1
    + 0
  • Flat @ 21.2.2012
    я, как и многие на этом сайте, конвертирую раздачи через http://www.handconverter.com/
    возможно ли сделать дополнение с привязкой к этому сайту?


    Да, практически наверняка можно. И складывать рядом такой же файлик с уже отконвертированным текстом.
    Ответить Цитировать
    2/11
    + 0
  • Добавил опциональную конвертацию через http://www.handconverter.com/ и сделал еще несколько внутренних улучшений. Скоро будет свежая версия.
    Ответить Цитировать
    3/11
    + 0
  • Спасибо. Классная прога
    Ответить Цитировать
    1/1
    + 0
  • Advanced Hand Saver v1.1!

    Значимые изменения:
    1. Добавлена конвертация через http://handconverter.com. Всегда выставлены опции конвертации Two Plus Two Forum, Use player names, Show Results, галка Store publicly in THC.com database выключена. Файл с отконвертированной раздачей сохраняется на диск, кроме того тот же текст оказывается в буфере обмена (однако weaktight имеет приоритет - если одновременно раздача постится на weaktight, в буфере обмена будет ссылка).
    2. Добавлено сочетание клавиш Ctrl+F10 для быстрого запука/остановки съёмки экрана.
    3. Изменен формат хранения файла настроек. Поэтому, если вы уже скачали версию 1.0, вам придется ввести все настройки заново.
    4. Включено логгирование ошибок в отдельный файл error.log. Если программа постоянно сообщает об ошибках сохранения/постинга/конвертации раздач, полезно будет приложить этот файл к сообщению на форуме. Впрочем, можете попробовать изучить его содержимое самостоятельно ;)


    Сразу скачать эту версию можно отсюда. Если вам нужен .NET Framework или исходники, то вот ссылка на все файлы.
    Сообщение отредактировал Floyd - 29.2.2012, 1:14
    Ответить Цитировать
    4/11
    + 0
  • Флойд, я тебя обожаю спасибо.
    Сообщение отредактировал eQuadro - 7.3.2012, 14:23
    Ответить Цитировать
    1/1
    + 0
  • Файлообменник вчера внезапно лёг, в таком состоянии и находится на текущий момент. Если еще через пару дней ничего не поднимется - буду думать, куда бы в другое место выложить.
    Ответить Цитировать
    5/11
    + 0
  • Пока не ставил, но задумка выглядит довольно не плохо. Автор однозначно молодец. Есть один вопрос, правильно я понимаю:

    Допустим, я играю 20 столов, у меня сложный момент в раздаче на одном столе, нажимаю Ctrl+F10, тут же делается первый скриншот монитора/ров и копируется в папку вместе с хенд хистори. Вот тут вопрос, сохраненная хенд хистори ведь будет с предидущей раздачей, так как актуальная еще не записалась на диск (розыгрыш еще идет). Чтобы нужная раздача сохранилась, приведу конкретный пример, я так понимаю, нужно выставить сохранение к примеру 3 скриншотов в настройках с интервалом времени скажем 10 секунд.

    Вот тут непонятно. Получается, чтобы сохранить все три скриншота с включая хенд хистори, нужно чтобы все 30 секунд всегда ТОЛЬКО нужный стол был активным, но ведь столы мелькают и за 30 секунд сменится много столов.

    Вопрос: прога наделает хенд хистори с разных столов с интервалом в 10 секунд или прога как-то запоминает первый нужный стол и копирует впоследствии вторую и третью хенд хистори только этого стола, даже если он уже не активен?
    Ответить Цитировать
    1/2
    + 0
  • Для игры на столах с перекрытиями программа в принципе применима, но требует дополнительной настройки - как раз-таки из-за того, что новые столы постоянно всплывают и загораживают собой старые.

    Общий принцип работы еще раз: на скриншотах сохраняется только то, что сейчас видно на экране (весь экран/экраны целиком, а не какой-то отдельный стол). В папку с сохраненной раздачей копируются несколько файлов со скриншотами, которые были сохранены _до_ копирования текста ХХ (важно сохранять раздачу сразу после ее окончания, а не через 2-3 минуты). Дальше уже сам игрок при анализе сохраненных раздач должен разобраться на каком из столов со скриншотов произошла эта раздача и, соответственно, взять оттуда статы на соперника.

    При игре с перекрытиями я советую попробовать выставить большую частоту сохранения и большее количество копируемых скриншотов - тогда более вероятно попадание нужного активного окна в один из файлов.
    Ответить Цитировать
    6/11
    + 1
  • У меня не сохраняет ХХ ни при CTRL+F10, ни при CTR+F12. Сохраняет только скриншоты. Пробовал правда на плеймани, но на диск раздачи точно пишутся. Холдем манагер их видит. Но Advanced Hand Saver нет.

    для инфо: Win 7, 64, прога имеет права на запись-копирование.
    Ответить Цитировать
    2/2
    + 0
  • Читаем внимательно:
    в версии 1.0: Ctrl+F12 - внеочередной скриншот, Ctrl+F11 - открытие окна нотсов к последней сохраненной раздаче
    в версии 1.1: Ctrl+F10 для быстрого запука/остановки съёмки экрана

    Для того, чтобы сохранилась раздача, нужно просто скопировать ее текст в буфер обмена (на старзах это делается из окна Instant Hand History, которое появляется по клику на номер последней раздаче на столе, либо по сочетанию Ctrl+I).
    Ответить Цитировать
    7/11
    + 0
  • ЗДравствуйте,не могу найти куда программа сохранилась, т.е. при первом запуске все ок!(прога действительно ништятская,спасибо),но при повторном включении компьтера она как-будто куда-то исчезла,не могу нигде найти..подскажите пожалуйста.

    Извините разобрался,затупил..
    Ответить Цитировать
    1/1
    + 0
  • Клевая программа, удобно сразу из хм постить на виктайт, спасибо.
    Ответить Цитировать
    1/4
    + 0
  • Один непонятный момент с программой: по какой-то причине, когда я копирую хистори из хм в буфер, он записывает на виктайт ее два раза.
    Ответить Цитировать
    2/4
    + 0
  • MoronMode, выложи куда-нибудь файлы error.log и Settings.dat из папки с программой. Ну и пример текста, на котором ты получаешь такое поведение.
    Ответить Цитировать
    8/11
    + 0
  • Скидываю сеттингс и пару раздач. Лог ошибок у меня почему-то не создается, пишет "программа успешно сохранена". Однако по-прежнему записывает на виктайт дважды.
    Ответить Цитировать
    3/4
    + 0
  • Баг, проявившийся у MoronMode, побежден. Это исправление войдет в следующую версию.

    Раз такое дело, принимаю еще пожелания/замечания по доработке. Пока что есть один запрос - счетчик сыгранных раздач. Но я еще сомневаюсь на этот счет (хотя технически это реализовать не сложно).
    Ответить Цитировать
    9/11
    + 0
  • Всем привет!

    Я тут заметил одну штуку. При копировании из окна с текстом раздачи на ФТП, клиент ФТП подвисает, пока программа не закончит все свои действия (а при постинге раздачи на виктайт, это несколько секунд). Есть у кого-нибудь похожее поведение?

    Надеюсь, что через недельку у меня будет свободное время, и я этот косяк исправлю. Всё так же жду других пожеланий по доработке.
    Ответить Цитировать
    10/11
    + 0
1 2
1 человек читает эту тему (1 гость):
Зачем регистрироваться на GipsyTeam?
  • Вы сможете оставлять комментарии, оценивать посты, участвовать в дискуссиях и повышать свой уровень игры.
  • Если вы предпочитаете четырехцветную колоду и хотите отключить анимацию аватаров, эти возможности будут в настройках профиля.
  • Вам станут доступны закладки, бекинг и другие удобные инструменты сайта.
  • На каждой странице будет видно, где появились новые посты и комментарии.
  • Если вы зарегистрированы в покер-румах через GipsyTeam, вы получите статистику рейка, бонусные очки для покупок в магазине, эксклюзивные акции и расширенную поддержку.