14 сент. 2007 г.

Сетевой модуль

Это не совсем готовый программный продукт, это скорее мысли по поводу того, как надо делать продукты для работы в сети, особенно корпоративной. Хотя такого программного обеспечения может быть и много, базовый принцип работы, методы развертывания и особенности применения - одинаковые. Сразу предупреждаю, некоторые термины и методы очень специфичны, но и ценность того что я расскажу - огромна. Это как минимум готовое решение для многомиллионного стартапа! Заинтриговал? :)

Сети разные - проблемы одни и те же

Все продукты, которые связаны с работой на 2х и более компьютерах, одинаково неприятны в эксплуатации как для сетевых админов, так и конечных (не путать с кОнчеными :) пользователей.

Aдминов задалбывает и напрягает абсолютно все! От отсутствия сетевой инсталляции и возможности развернуть систему сидя у себя в комнате, до необходимости открывать порты на файрволах и прописывать правила роутинга. Еще их пугают всякие продукты, которые требуют изучения их внутренностей или которые, сами по себе, понижают сетевую безопасность.

Обычные пользователи, даже с продвинутыми знаниями, чувствуют себя полными идиотами, когда начинают получать сообщения о каких-то сетевых интерфейсах, сокетах, пайпах, TCP/IP портах (сами то хоть что-то из этого поняли? :), и прочей около-сетевой белиберде. Максимум, что нормальный юзер точно понимает в сети - это то, что у разных компьютеров есть имена, а на некоторых еще и папка "Обменка", куда можно скопировать файл, чтобы другие его могли посмотреть. Все! Остальные тумба-юмбы для него - зло!

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

Что же на самом деле надо

Бутылка надо! На самом деле, нужен универсальный хост модуль. Такой модуль должен устанавливаться, как с пользовательского компьютера, так и удаленно. В идеале что бы ставился вместе с системой или при первом заходе на корпоративный Intranet (а не Internet :) сайт.

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

Самое интересное, что одного такого модуля достаточно для любого количества сетевых программ. Один и тот же модуль может подключить и Remote Desktop, и Messenger, и Hardware monitor, и многое другое. Достаточно лишь указать порты, правила и сами исполняемые программы. Этот же модуль можно использовать для установки программ, бекапа данных, обновления базы антивируса и многих других задач, причем на всех компьютерах сети одновременно!

Модуль должен уметь работать и в автономном режиме. Это как раз для случаев выноса ноутбука домой, или для удаленной работы с другой стороны земного шара. Естественно, необходимы строгая аутентификация и серьезное шифрование, для работы из-за пределов локальной сети. Так что сохранять пароль на компьютере или передавать его открытым текстом совсем не стОит. Я бы вообще смотрел в сторону персональных сертификатов, и строго учета за их использованием.

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

Как это выглядит на пальцах

Хост модуль загружается при старте системы автоматически. Пытается зарегистрироваться на сервере хостов с указанием своего IP и/или сетевого имени. Запускает другие зарегистрированные и установленные системные модули, такие как: мониторы железа (температура, SMART у винчестеров), remote desktop, и т д.

При входе пользователя, в зависимости от настройки, запускает дополнительные модули: мессенжер, VoIP клиент, remote assistance, и другие. Так же, пытается зарегистрироваться на сервере, если до этого не удалось (нотик включили дома, а залогировались уже на работе)

Модуль имеет свою простенькую панель управления. Это позволяет запускать/останавливать модуль если надо (дорогой трафик, например). А так же изменить параметры связи в случаи работы из публичного места, где не все открыто или надо использовать прокси.

По внешнему запросу, модуль может провести какую-то задачу: обновить базу антивирусов, установить какой-то софт, или даже заменить себя на более новую версию :)

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

Какие продукты могут это использовать

Сам по себе, такой сетевой модуль, самостоятельным продуктом быть не может. Хотя, возможен вариант, этакого "конструктора" для интеграторов, но скорее всего в комплекте с каким-то функциональным сервером.

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

  1. Hardware monitor - отслеживание работоспособности и учета hardware. Позволяет учитывать железки по всей сети, а так же заменять вентиляторы и винчестеры до того, как компьютер окончательно сдохнет :) Так же позволяет собирать логи, драйвера и обновления в одном месте.
  2. Remote Desktop и все что с этим связано. Удаленная помощь, копирование файлов, перенос клипборда, печать на чужой принтер, перенос звука и т д.
  3. Месенжер, видео чат, и другие методы коммуникации. VoIP и Skype выходы.
  4. Ретранслятор веб-камер, удобно для секьюрити в нерабочее время и других задачек.
  5. Система глобальной замены файлов. Для обновления антивирусных баз, драйверов, клиентского программного обеспечения. Так же, для синхронизации общих документов и настроек.
  6. Сетевые игры :)

Будем дополнять.

Как это продавать

Лучше всего инвесторам с последующим выводом компании на IPO! Я серьезно.

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

P.S. Если кто-то решится запустить это в виде серьезного стартапа - свистните. С удовольствием поучаствую и как идейный вдохновитель, и как консультант.

12 сент. 2007 г.

Менеджер шоткатов

Подобную программу мы написали в ABF, но я оказался ее выпускать в виде продукта, так как она абсолютно не коммерческая. Более того, поработав с программой больше месяца, я понял, что она не справляется со всеми поставленными задачами. Была отправлена в стол, лет 6 назад...

Обозначим проблему

Использование быстрых клавиатурных сочетаний (шоткатов) знакомо каждому пользователю. Найти человека, который не знает, что выполняют сочетания Ctrl+C и Ctrl+V, практически не реально. Но так же не реально найти человека, который знает более 20 различных клавиатурных сокращений. И где все эти сокращения посмотреть - даже Билу Гейтсу не известно :)

Еще интереснее происходит с шоткатами для запуска программ. Продвинутые юзеры знают, что для иконок (ярлыков) на Рабочем столе и в меню кнопки Пуск можно задать сочетания быстрого вызова (на само деле задать их можно в любом месте, но вот работать они не будут :). Так вот, очень часто, при вводе комбинации, она почему-то не вводится, а вместо этого запускается программа, к которой желаемое сочетание клавиш уже назначено :) Офигеть, Дайте две!

В общем, беда со всеми этими шоткатами и горячими кнопками! Списка стандартных (Win+D, Win+E, Win+R и т д) нигде нет! Спорю, что даже если вы знаете, что выполняет Win+F, то что выполняет Ctrl+Win+F не догадаетесь никогда :) Да что там, даже посмотреть список уже занятых сочетаний - нэту! А уж мечтать о том чтобы все это дело управлять из общего места и переназначать горячие кнопки одним кликом - вообще фантастика!

Чего еще не хватает

Не хватает комбинаций для часто используемых системных команд и еще кое-чего. Ну вот как например свернуть программу (или растянуть на весь экран) с помощью клавиатуры? Рассказываю: Alt+Space, а потом стрелками курсора выбрать пункт меню! Хорошо, что закрыть хотя бы можно по Alt+F4. Кстати, кто ни разу не изменял окно по размеру с помощью кнопок, попробуйте - заново родитесь :)

А знаете, как увеличить или уменьшить громкость (ну или хотя бы выключить звук)? Я вот не знаю! А еще я не знаю, как быстро вызвать Screensaver, как регулировать яркость монитора (и можно ли это вообще), как отключить мышку или тачпад, как извлечь CD, как включить/выключить Wi-Fi или Bluetooth, и много другое! Вот этого всего и не хватает, это все и нужно дописать :)

Как сделать правильно

Во первых, надо решить регистрировать шоткаты в Windows или использовать свой движек типа хука клавиатуры. Стандартный способ подойдет для вызова программ и определения уже задействованных комбинаций. Но хук dll все равно нужна, потому что только в ней можно реализовать дополнительные команды, связанные с текучим окном (Minimize, Maximize, Move и т д) или системным событиями (Screensaver, Mouse Off и т д)

Возможно (да и скорее всего) придется делать файловый энумератор для всех ярлыков, что бы зачитывать значения горячих комбинаций и соответственно запоминать где это меняется. Если этого не сделать, пользователи, которые будут назначать шоткаты стандартными методами Windows, пролетят мимо кассы. Да и актуальность списка шоткатов, в нашей программе после изменения пользователем, будет под сомнением.

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

Обязательно нужен информационный список, возможно полупрозрачный или появляющийся по требованию. Более того, я бы его делал его постоянно видимым по умолчанию. Это поможет пользователю запомнить и заучить все команды.

Такая утилита, это классическая программа с иконкой в трее. Все основное управление будет через меню этой иконки.

Обязательная фича - отключать все шоткаты вообще! Геймеры вас полюбят :)

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

Не плохо бы обыграть NumPad (там где он есть :) отдельно от "цифровых" комбинаций (Ctrl+1 и т д). Нумпад удобен тем, что 9 кнопок фиксированы по расположению, а значит не нужно думать головой, пальцы сами все нажмут. Кстати, кто не в курсе Alt+0169 на нумпаде - это ©, Alt+0153 = ™

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

Может дополню еще чего...

Как это продавать

К сожалению, скорее всего, никак. Ну разве что как OEM приблуду или как новый модуль для Windows самому Microsoft :) А вот как freeware или уроки обучения встроенным шоткатам - пойдет на ура. Подачу такую и надо: "Все то, что вы не знали о Windows" или "Билл Гейтс делает это быстрее чем вы".

Но продукт интересный и давно наболевший. Тот, кто сделает - получит +1 кармы как минимум :)

10 сент. 2007 г.

Универсальный бекапер

Что-то подобное мы пытались сделать в ABF, но дальше альфа версии программа не пошла. Существует много различных систем для резервного копирования данных. Одни работают по методу копирования содержимого всего винта (Акронис и подобное), другие заворачивают в архив набор файлов и могут записать его на перезаписываемый диск, залить на другой компьютер или FTP сервер. Существует набор специализированных бекаперов для определенного типа данных или как "помощник" для какого-то конкретного программного продукта.

А на самом деле...

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

Дисковые бекаперы

Дисковые бекаперы хороши, когда железо остается тем же самым. А в случаи когда компьютер украли или он полностью сгорел, не факт что даже система сможет загрузиться на другом винчестере или с другой графической системой. Так же дисковый бекап не удобен для компьютеров, на которых активно ведется деловая переписка или хранятся какие-то общие данные. На таких компьютерах сделать дисковый бекап чаще 1 раза в неделю практически не возможно (ну разве что по ночам, и то, если это не сервер). А время на восстановление диска и устаревшие данные выведут из себя весь офис. Правда, стоит отметить что, именно дисковые бекаперы требуют меньше всего действий со стороны пользователя, как при сохранении, так и при восстановлении данных. Основной недостаток - это невозможность использовать для переноса данных на новый компьютер с новой системой.

Файловые бекаперы

Файловые бекаперы - самые распространенные. Их можно запускать параллельно с работой пользователя. Некоторые из них умеют делать инкрементальные бекапы, когда не сохраняется весь объем данных каждый раз, а только то, что действительно изменилось. Позволяют переносить данные на другой компьютер, но могут возникнуть проблемы с путями или отсутствием дискового пространства на определенном диске. Так же возникают проблемы при отсутствии какого-то программного обеспечения, которое было установлено на старом компьютере. Основная проблема - невозможность сохранять настройки установленных программ и изменения системы, которые хранятся в реестре.

Специализированные бекаперы

У меня есть личный опыт создания и распространения таких бекаперов, так что они мне ближе всего :) Такие бекаперы заточены для работы с какими-то популярным программами, которые не содержит встроенных средств резервного копирования, либо они скудны и не полные. В ABF мы успешно продавали бекапер для Outlook Express, потому что не существует готового способа перенести правила сообщений, подписи, пароли к учетным записям и много другое. Специализированные бекаперы востребованы пользователями соответствующих программ, как для защита данных от потери, так и для переноса или синхронизации работы и настроек между 2мя и более компьютерами. Специализированный бекапер обычно сохраняет как файлы данных, так и ветки реестра которые связаны с настройками хост продукта. Все хорошо со специализированными бекаперами, но если пользователь работает с 10ю программными пакетами, их надо целых 10 :)

Как сделать правильно

Хотелось бы иметь файловый бекапер с возможностью добавления не только файлов, но и веток реестра. А так же базовые правила для переименования/замещения файлов и записей в реестре.

Более того, всякие предварительно настроечные наборы файлов и/или веток реестра выделять в отдельные бекап элементы. В таком случае, сохранить тот же Outlook Express, можно поставив одну галочку, напротив соответствующего элемента. Не плохо бы у бекап элементов иметь встроенные настройки, четко связанные с особенностями хост продукта. У Outlok Express это, например, будут галочки: сообщения, адресная книга, правила, подписи, настройки и т д.

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

В результате программа будет выглядеть как дерево готовых бекап элементов (Windows desktop, Office, Internet Explorer, Outlook Express и т д), плюс помощник создания собственных бекап элементов для каждого частного случая.

Как это продавать

А очень просто! От массового гвалта "данные в опасности!", до узконаправленных решений под каждый программный продукт для которого уже есть готовый бекап элемент. Более того можно контактировать с производителями поддерживаемых программных продуктов и распространять прямо через их каналы.

Вариант с контрибуцией может вырасти в огромное комьюнити и тогда бекапер станет стандартным решением для многих ниш.

Наличие большего числа готовых бекап элементов позволяет собирать различные варианты продукта практически на лету. Это позволяет делать light, home, pro, corporate версии, а так же выпускать линейки узкоспециализированных бекаперов.

9 сент. 2007 г.

Текстовый комбайн

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

Лирическое отступление

Для начала немного отвлечемся на полезную информацию. Люди по разному набирают текст на компьютере и это зависит не столько от опыта человека, сколько от его информационного психотипа. Одни, без проблем, печатают 10 пальцами, глядя только в монитор, и параллельно с набором текста могут спокойно "трендеть" по телефону. Другие печатают 1-2мя пальцем, судорожно вспоминая правописание слов и из каких букв эти "долбанные" слова состоят.

Я, например, на компьютере регулярно лет 15, но глядя в клавиатуру печатаю быстрее (2мя пальцами), чем глядя в монитор 10ю! Более того, мне не важно написаны ли на клавишах буквы, важно смотреть на кнопки! Я конечно прооптимизировал правописание - просто пишу как пишется, а потом иногда проверяю спелчекером. Но чаще, просто оставляю как есть :)

Потмоу что доакзано - пордяок бувк не иемет знаечния!

Разные группы пользователей

Люди вообще, и авторы программ в частности, просто не понимают, что другие индивидуумы могут по разному представляют слова и буквы в своей голове. А это очень важно! Потому что весь мир разделен как минимум на на 2 группы:

Первая, смотрит в монитор и замечает подсказки и если слово набрано с ошибками - удаляет слово целиком и перепечатывает опять.

Вторая, набирает слово или два, потом глядит в монитор и матерится "какого хрена получилась такая галиматья"! Берет в руки мышь или стрелки курсора и начинает исправлять по буквам.

При этом и первые и вторые могут быть как грамотными так и полными "даунами", особенно в техническом плане. Многие из вас используют именно табуляции для сдвигов абзацев и меняют размеры форматирования, вместо того, что бы набить пару-тройку лишних пробелов для красоты? :)

Задачки для "мониторщиков"

  1. Удаление последнего: слова, предложения, абзаца. Слово обычно реализовано в продвинутых редакторах (Ctrl+BackSpace)
  2. Подсказки быстрого набора, в виде динамического списка, рядом с набираемым словом. Обычно появляется после набора 2-3 символов. Стандартная фича для PDA. Подсказали что есть такое: Quick Input.

Будем дополнять...

Задачки для "клавиатурщиков"

  1. Изменение регистра букв на противоположный (набрали и не заметили что CAPSLOCK :), для выделенного блока, последнего слова, предложения.
  2. Изменение раскладки букв (набрали русский текст при English раскладке :), для выделенного блока, последнего слова, предложения.
  3. Переходы по тексту: по словам, предложениям, абзацам и т д.
  4. Выделение по: словам, предложениям, абзацам. По словам это Ctrl+Shift+Курсор обычно.

Будем дополнять...

Общие задачки

  1. Проверка орфографии (спелчекинг) в любом поле ввода. Набирать все в Word - не удобно.
  2. Замена регистра выделенного блока на UPPERCASE или lowercase (программисты оценят :)
  3. Вставка часто используемых фраз по кодовой аббревиатуре. Например: NTSY = Nice to see you; FFTA = If you have other questions, feel free to ask. Подобное используется в TypePilot.
  4. Вставка часто используемых фраз с выбором из каталога или древовидной структуры базы знаний. Подобное используется в FlashPaste.
  5. Контекстные подсказки для слова под курсором. Перевод на другой язык, словоформы, синонимы, другая информация.
  6. Контекстные операции над словами под курсором. Перевод, замена на синоним, поиск в Интернете и т д.
  7. Генератор подписей со вставкой сарказмов, интересных фраз, событий по дате, проигрываемой музыки и т д.
  8. Из советов: история клипборда и операции над буфером клипборда. Не совсем в тему, но 95% реализации будет благодаря основной функциональности.

Будем дополнять...

Техническая реализация и возможные проблемы

У меня был опыт создания подобных программ, поэтому некоторые "грабли" могу сразу предугадать.

Не обойдется без хуков в отдельной dll, как минимум для отлавливания текущих полей ввода, а возможно и для подмены событий клавиатуры и мышки. А хуки они вредные! Требуют тщательной отладки и не должны кушать много памяти, так как цепляются к каждому процессу.

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

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

Как это продавать

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

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

Спелчекинг и переводы очень подойдут активным Интернет серферам и чатерам. Вставки фраз и подписей - блогерам и подписчикам разных комьюнити.

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

Я склоняюсь к необходимости свободной облегченной версии и платной полной версии. Возможно некоторые особые плагины (вставка фраз, например) продавать отдельно.