Home
entries friends calendar user info Previous Previous
dentall_unichat

Advertisement

Add to Memories
Tell a Friend
Недочеты:

1. Не работает в полной мере менеджер акаунтов
2. Происходит ситуация со "спонтанным" выпадом нормально присутсвующих пользователей. Дело в том, что автообновление списка не совсем корректно работает, и после обновления выпадают все пользователи, которые не присутствуют явно в данном канале, в котором произошло автообновление.
Add to Memories
Tell a Friend

UniChat 2 - это незаконченный проект. Даже можно сказать <почти законченный проект>. Это означает что до релиза готовой версии осталось совсем немного. Из внешних явно видимых недоработок - это окно настроек, окно лога сообщений. Есть более мелкие детали, о которых я скажу ниже. Теперь хочется высказать несколько моих пожеланий авторам, которые решили продолжить проект. Если Вы решились делать OpenSource проект, создайте аккаунт на SourceForge с указанием, что это проект основан на UniChat 2, основные направления, по которым вы хотите продолжать линейку и подробное описание внесенных изменений. Естественно, сообщите ссылку на проект мне, я буду по мере своих возможностей следить и даже участвовать в разработке Вашего проекта, если он будет мне интересен. Требования, по которым он будет мне интересен, просты: никакого нового функционала в сам исполняемый базовый файл не вносить, только доделать то, что есть уже (и даже можно в чем-то урезать еще). Весь функционал - передача файлов, голосовая связь, мигание Scroll Lock, XML-логи, расширенная информация и еще Бог знает что - выносить в плагины. Это моя концепция развития и очень хотелось бы иметь хотя бы одного продолжателя.
Я крайне заинтересован в том, чтобы проект жил. Исходный текст содержит минимум комментариев, поэтому работа над проектом стороннему разработчику будет затруднена, и поэтому, если Вы всерьез решили поднять проект - я всегда готов рассказать что и как проектировалось, для каких целей и почему именно так написано и как можно сделать лучше, что стоит добавить, а что убрать, как функционирует тот участок кода, принцип работы и реализация внутреннего протокола чата. Обращайтесь по всем вопросам на ящик unichat.source(at)gmail(dot)com. Не забывайте в теме письма указывать <Исходный текст UniChat 2>.

Несколько слов об исходных текстах UniChat 2

Исходные тексты UniChat 2, на мой взгляд, гораздо лучше выглядят и структурированы, чем UniChat 1.46, тем не менее, есть грехи и там, скрывать не буду (и чего скрывать, когда это видно? :). Для новичков это может показаться темным лесом, для профессионалов - не выше слабой троечки. UC2 я старался писать с минимумом сторонних компонентов, что выразилось в том, что со стороны используются TRichView и PJWdwState. Из сторонних модулей - WinSock2, FGInt и DUCL. После выхода CG RAD Studio 2007, UniChat 2 я делал исключительно в ней, и, вероятно, продолжать также придется именно в этой версии студии. В файле, приложенному к архиву, есть подробная инструкция с недоработками, недочетами и огрехами, а также кое-какие инструкции, которые помогут частично разобраться с кодом.  Все вопросы присылайте на указанный выше ящик, со временем на страницах блога я опубликую FAQ и другую информацию, составленную на вопросы разработчиков.
Получить ссылку на скачивание можно на главной странице http://www.unichat.net.ru

Tags: , ,

Add to Memories
Tell a Friend

Опубликовал для все желающих посмотреть "как это было" исходные тексты UniChat v1.46, вопреки своим твердым заявлениям о том, что это сделано не будет. Внутри архива находится инструкция по настройке Delphi для успешной копиляции, необходмые сторонние компоненты и ссылки на то, что нужно предварительно скачать. Мне хочется, чтобы на этой странице образовался мини-форум, для тех, у кого что-то не получилось. Внутри архива указан e-mail на который можно присылать вопросы и я постараюсь на них ответить :) (но ничего не общаю). Авторам-последователям я разрешаю делать с исходным текстом все что угодно, при условии указания в окне инфомарции надписи вроде "Based on UniChat". Название UniChat я резервирую за собой, поэтому также придумайте новое имя для своего проекта.
В настоящее время я занимаюсь более перспективным проектом, поэтому снимаю с себя полномочия по развитию UniChat в целом. В ближайшее время закончу подготовку исходных текстов UniChat 2 и также опубликую их. Я надеюсь, что мой труд кто-нибудь продолжит и доведет до ума :).
Спасибо за внимание!

Ссылка на архив с исходниками находится на главной странице http://www.unichat.net.ru

Tags:

Add to Memories
Tell a Friend

Итак, работы продолжаются, текущий билд 2.0.0.510 уже довожу до ума, уж не знаю насколько билд увеличится к релизу.
Выдержка из todo листа (20.11.2007): 

[-] Окно настроек довести до ума
[!] Везде проверить TabOrder. Сделать НОРМАЛЬНУЮ возможность управлять UC2 только клавиатурой!
[-] на ШВ притормоз при старте с распахнутым окном (причина выявлена: из-за звука входа в чат)

Собственно мелочь, и я сам надеюсь что в скором времени мы все вместе с вами приступим к генеральному тестированию. Ничего по срокам говорить не буду, и без этого получается как со S.T.A.L.K.E.R.'ом, но что поделать. Долгострой получился, и нечего тут добавить.

А сейчас я хотел сказать несколько слов о самом UniChat 2, чтобы было ясно и четко понятно, чего ожидать от релиза. Это, конечно, не полный перечень, я пишу здесь все что вспомню по памяти. Есть множество мелочей и деталей, которые кардинально отличают UniChat 2 от своего предшестенника.

Ключевые особенности: 

1. Безопасность.
1.1. Теперь любая комната может быть засекречена паролем. Данные, передаваемые по сети шифруются этим персональным ключом комнаты. Что фактически исключает возможность перехватывать и расшифровывать разговоры, зная алгоритм шифрования.
1.2. Шифрование данных при обмене личными сообщениями и приватными разговорами ведется с помощью ключей, сгенерированными для пары пользователей, что также фактически исключает узнать ключ и расшифровать перехваченный пакет с сообщением.

1.3 Шифрование.
1.3.1. Применятется блочный шифр Serpent в режиме CTR (окончательно не решено с режимом, возможно будет переход на CBC).
1.3.2. Комнаты идентифицируются по хешу. Идентификатор открытой комнаты = Hash(ИМЯ_КОМНАТЫ), индентификатор шифрованной комнаты = Hash(ПАРОЛЬ+ИМЯ_КОМНАТЫ). Hash = функция SHA-256. При обмене нигде названия комнат не передаются (за исключением, если комната видима всем), что позволяет скрыть названия комнат при анализе трафика чата. В особенности это относится к комнатам с паролем.
1.3.3. Идентификация того, что пароль подходит к комнате вычисляется на стороне клиента по сравнению Hash((ПАРОЛЬ+ИМЯ_КОМНАТЫ)_ВВЕЛ_ПОЛЬЗОВАТЕЛЬ) = ИМЕЮШИЙСЯ_ХЭШ_ЭТОЙ_КОМНАТЫ
1.3.4. Трафик шифрованных комнат шифруется хешированным паролем этой комнаты.
1.3.5. Расчет ключей для обмена личными сообщениями и личными разговорами ведется по схеме Диффи-Хеллмана. Таким образом, трафик двух пользователей будет шифроваться известным только этим пользователям ключом, что достаточно надежно защитит сообщения и приваты.

2. Интерфейс.
2.1. Доска вынесена в отдельное окно
2.2. Топик и имя теперь вводятся непосредственно в своих окнах ввода.
2.3. Пол пользователя/акаунты задаются во всплывающем окне при переключнии на ввод имени
2.4. Все элементы в окнах и их габариты выровнены по сеткам
2.5. В списке пользователей отображаются только те, кто присутствуют в данной комнате
2.6. В системные сообщениях и именах пользователей смайлы не распознаются
2.7. Поддержка многоязычного интерфейса
2.8. Опция "Поверх всех окон"

3. Общий функционал.
3.1. Некоторые функции вынесены на реализацию через плагины (мигание Scroll Lock, ...)
3.2. Неблокирующий нарушителя антифлуд - каждый пользователь сам указывает на каком уровне фильтровать распознанные как флуд сообщения
3.3. Каждый режим можно настроить (звуки, оповещения, смайлы, всплытие окна сообщения)
3.4. Авторежим ушел есть как по неактивности клавиатуры, мыши, так и по скринсейверу
3.5. Можно настроить стиль отображения сообщений в чате

4. Общее
4.1. Нет "привелигерованной" комнаты "Основной" (теперь #Main). Все комнаты равноправны. Т.е. при нежелании пользователя сидеть в "общаке" он может спокойно удалить из списка #Main и находится в своих приватных комнатах.
4.2. Для каждой комнаты можно задать оповещение закладкой, миганием в трее, автоматическим всплытием основного окна. (в планах сделать также персональную настройку звуковых событий).
4.3 Размеры системных пакетов стали меньше
4.4. Обновление списка пользоваталей на широковещании не вызовет шкавала пакетов от всех пользователей, ответят только те, кто присутствует в данной комнате (также может существенно экономить трафик)
4.5. Системные запросы оптимизированы и объединены. Например, при входе пользователя, клиент передает сразу свой статус, остальные клиенты только при необходиомсти (после анализа его статуса) отвечают свой статус. (Например, не ответят те, кто не присутствует ни в одной из комнат пользователя. Этот случай теперь возможен, см. 4.1.).
4.6. Время/дата объвления на доске запоминаются, т.е. теперь отображается фактическое время размещения объявления (при условии что у пользователей часы идут верно)
4.7. В окне "О программе" отображается фактические дата и время сборки :)

5. Работа с сервером
5.1. Новый протокол UC2 позволяет эффективно коммутировать  и фильтровать пакеты между клиентами сервером ("самообучающийся" сервер)
5.2. Возможность администировать сервер
5.3. Бесплатнй вариант сервера имеет все функции по маршрутизации и минимум статистики (время работы, кол-во пользователей, общий трафик)
5.4. Бесплатная версия (демо) админ-пака позволит наблюдать список всех пользователей на сервере.
5.5. Платная версия админпака позволит делать мониторинг всех пользователей, распределение по комнатам, текущие темы в комнатах, кик, бан, менять темы, править сообщения на доске, задавать жесткие привязки ников по MAC и IP-адресам, фильтрация флуда на уровне сервера, подробная статистика. В незашифрованных комнатах возможность устанавливать фильтры на сообщения пользователей (антимат, антикапс), либо блокировать такие сообщения. Есть возможность использовать PluginAPI для создания плагинов, например, делающих статистику для веб-страниц или управлением базами данных, автоматический контроль пользователей.
5.6. Платный пакет админпака включает локальные дополнения к серверу (динамические библиотеки поддержки управления сервером) и сетевые (программа-клиент для управления сервером). Локально на сервере с админпаком задаются учетные записи пользователей админпаков (логин-пароль), которые смогут осуществлять удаленное управление сервером.
5.7. Одним купленным пакетом администрирования можно управлять только один сервер, но нескольким администраторам (модерторам). 

6. Кроссплатформенность сервера.
6.1. Библиотеки сервера будут скомпилированы для платформ Win64, Linux32, Linux64, FreeBSD, что позволит при минимальной обвязке кодом (код работы с сетью, интерфейс) использовать в указанных ОС.

Вот пока все что вспомнил, задавайте вопросы, я постараюсь на них ответить. Глобально изменения коснулись кода, и конечно же, это малозаметно для многих. Функции "передача файлов" и "голосовое общение" смогут быть реализованы через плагины, для этого будет хороший PluginAPI. Делается из тех соображений, что доводка до ума этих функций растянется не на одну версию, а обновлять версии плагинов проще. Вообще в моих глобальных планах унификация интерфейса "для работы с чатом", чтобы без проблем на базе UniChat реализовать IRC клиент, или любую задумку, где есть необходимость многопользовательского многоканального общения. (например, клиент Strong DC++).

Add to Memories
Tell a Friend
[-] Нет работы с логами (!!!)
[-] Многоадресные сообщения
[-] Решить проблему с 2 мя никами (UCP_COLLISION_RENAME)
[-] Отстроить вывод сообщений на NotifyPanel
[-] Окно настроек довести до ума
[-] Довести до ума строковые команды
[-] на ШВ притормоз при старте (если запускать не свернутым) (в ХР)
[!] Везде проверить TabOrder. Сделать НОРМАЛЬНУЮ возможность управлять UC2 только клавиатурой!
[-] При закрытии окна по Escape не исчезает окно ников!
[-] !!!Не забудь пофиксить замечения занеснные в блокнот!!!

--------- Fixed -----------------------------

[-] Баг с неправильным восстановлением параметров режима.
Вызывается:
1. Перейти Активен -> Играю
2. Выйти из чата
3. Зайти в чат
4. Перейти Играю -> Активен.
настройка активного = играю

[-] Не работает авторежим Ушел
[-] Отстроить работу со звукми
[-] Отстроить работу с "шариками" в трее
[-] Vista: при открытии диалога выбора файла папки вторичное окно уходит на задний план
[-] Фильтры
[-] Ctrl+Tab для переключения закладок
[-] Не сохранятся опция "Автопрокрутка текста"
[-] Dbl click по имени не открывает окно сообщения...
[!] !!!Сгруппировать настройки в реестре!!!
Add to Memories
Tell a Friend
Продолжаем работы над UC2. Из "новшеств" отмечу, что доска теперь сделана в отдельном окне, а иконка доски находится на панели инструментов (и в главном меню).
Add to Memories
Tell a Friend
Спешу обрадовать многоуважаемую публику что наконец-то появилась хоть и внутренняя и "инженерная", но все-таки альфа, к тестированию которой мы приступили. Серьезных замечаний не выявлено, и, доведя до ума окно настроек (мы внутри своей компании люди не требовательные и нас вполне устраивает и "дефолтные" настройки), я думаю можно выпустить и публичную альфу :). Срок релиза я называть не буду, просто боюсь сглазить, как это уже случалось много раз, мне просто неприятно перед самим собой говорить публично оптимистичные слова, за которыми, как потом оказывается потом, ничего не стояло. Я надеюсь на ваше понимание. Благодарю за внимание :)
Add to Memories
Tell a Friend
Последнее вермя занимался работой чата с сетью, поскольку провал первого тестирования на нескольких машинах оказался провалом. Ошибки были выявлены и испралвены, а я крепко задумался, как сделать первый старт чата дружелюбным для пользователя. С одной стороны, от него мало что требуется, но в это "мало" входит как раз настройка сетевого подключения (дальнейшие комментарии излишни)... Я сделал "Мастера первого запуска", где в доходчивой форме от пользователя требуется указать свое имя, пол и сетевые настройки. На скрине показан главный камень преткновения для пользователей. Очень надеюсь, опция с файлом настроек поможет как пользователям, так и администраторам.

Add to Memories
Tell a Friend
Итак, за прошедшее время от предыдущего поста имеется следующий прогресс: оптимизировал работу с сетью, а в основном работал над "рюшечкой" в "лице" уведомлений. Дабы идею не сперли на корню, увидеть, как теперь работают уведомления в UniChat 2 можно будет только после пре-релиза :). Скажу только, что это смесь из того, как это сделано в QIP и Internet Explorer 6-7.
Сейчас занимаюсь доводкой до ума "лица" UniChat, поскольку с темами VIsta/XP все выглядит замечательно, а при отключении тем - появляются "пустоты", от которых надо либо избавлятся, либо рисовать линию подчеркивания (относится к нижней группе кнопок).
Add to Memories
Tell a Friend
Всем привет! Сегодня вечерком в свободное время сделал окна (и обвязку по коду) выбора и управления комнатами.
profile
Name: dentall_unichat
calendar
Back February 2008
12
3456789
10111213141516
17181920212223
242526272829
page summary
tags

Advertisement

Customize