вторник, 17 ноября 2009 г.

Прикрутим блог к домену

Недавно купил на GoDaddy.com домен для одного из своих blogspot-овских блогов. Переназначение, подробно описанное в справке Google, неожиданно получилось с первой попытки. Возможно, мой опыт кому-то пригодится.

Итак, есть блог abcd.blogspot.com и домен asdf.com. Нужно:
1. для домена указать DNS и IP блога, и
2. в настройках блога прописать имя домена.

Первый шаг зависит от того, где был куплен домен. Для GoDaddy.com нужно:
1) войти под своим аккаунтом;
2) View Domain Manager;













3) открыть Dashboard домена asdf.com - иконка с желтым D в черном кружке возле его имени;
4) перейти к настройкам имен серверов (Nameservers)
если по дороге откроется окно визарда, можно закрыть его Cancel-ом;




5) выбрать Manage для Total DNS/MX;











6) в разделе CNAMES (Aliases) вызвать редактирование (иконка с карандашиком) для первой строки (www);





7) в поле Points To Host Name: вместо @ ввести рекомендованное Гуглем ghs.google.com;
8) в разделе A (Host) добавить (кнопка Add New A Record) четыре записи, для каждой из которых в первом поле ввести символ @ а во втором — соответствующий IP-адрес из рекомендованного Гуглем списка:
216.239.32.21
216.239.34.21
216.239.36.21
216.239.38.21
а первоначальную запись с IP 68.178.232.100 – удалить.

Результат изменений будет выглядеть так:
















Второй шаг намного проще:
- открыть блог abcd в blogger.com;
- в его настройках выбрать закладку «Публикация» и открыть ссылку «Персональный домен»;
-




- там - «Перейти к расширенным настройкам»;
- после http:// ввести www.asdf.com (начать именно с www !), т.е. имя домена с нужным префиксом;
- ввести графический код и сохранить настройки;
- установить появившийся флажок переадресации и снова сохранить настройки.

Все. Гугл предупреждает, что «Если этот домен приобретен недавно, настройка может занять до одного дня. », но у меня заработало сразу. Успехов!

среда, 12 августа 2009 г.

Настройка WordPress-блога

Несколько дней назад я похвастался, что завел блог на wordpress.com, чтобы проверить, подходит ли его движок начинающему шароварщику для организации своего сайта. А сегодня подвернулась возможность заняться его настройкой. Осуществляется она из страницы консоли, на которую попадаешь сразу после входа на WordPress-овский сайт.
Первым делом рука потянулась к кнопке "Изменить тему", расположенной в нижней части панельки "Прямо сейчас". Визуальное представление блога меня устраивало, поэтому я сразу нажал на ссылку "Виджеты". Тут все очень просто: чтобы добавить виджет в блог достаточно перетащить его на боковую колонку, после чего может понадобиться ввести значения параметров конкретного виджета. Чтобы удалить - перетащить из боковой колонки в область доступных виджетов.
Для начала я добавил отображение статистики блога (хотя и знал, что счетчик посещений еще долго будет показывать нолик :-), модного ныне облака категорий (есть еще и облако меток) и списка страниц, поскольку собирался их добавлять. Виджет "RSS" позволил мне увидеть на странице тест-блога сообщения, автоматически получаемые из этого ("Flag 3D for You") блога, а виджет "Текст" - добавить произвольный текст, который может быть и HTML-кодом.
Для добавления страниц можно воспользоваться консолью (слева :-), щелкнув на ссылке "Добавить новую" под заголовком "Страницы" или выпадающим меню "Новая запись" (сверху :-), в котором есть аналогичный пункт.
Все очень просто, интуитивно понятно и способствует дальнейшим экспериментам...

вторник, 11 августа 2009 г.

Без вины виноватые

Допустим, купил пользователь наш скринсейвер, установил, и разрешил ему раз в неделю проверять наш сайт, чтобы загружать новые флаги.
А потом поселился на его компьютере злобный вирус. Сидит он тихонько, никак себя не проявляя, и наблюдает, каким программам разрешен доступ в Интернет. Потом, выбрав "козлом отпущения" наш скринсейвер, начинает от его имени (для этого достаточно "позаимствовать" из exe-файла version information) отправлять спам или "сливать" пароли и тому подобную конфиденциальную информацию.
Бдительный файервол, заметив повышенную сетевую активность, рапортует, что скринсейвер (наш безобидный скринсейвер! :-) черт знает что вытворяет. Пользователь хватается за голову и предъявляет нам - авторскому коллективу - кучу претензий морального и материального характера.
Скверная ситуация, и, честно говоря, не вполне вымышленная...
Тут, наверное, не поможет даже цифровая подпись, которой, пойдя на существенные для стартапа расходы, мы могли бы гарантировать подлинность исполняемого файла. Файервол ее не проверяет и вирусу, пожелавшему украсть наш version information, она - не помеха.
Нужно будет, пожалуй, творчески подойти к написанию лицензионного соглашения к программе (большой их выбор есть на сайте http://contracts.onecle.com/type/32.shtml), чтобы подстраховаться от подобных неприятных неожиданностей.

понедельник, 10 августа 2009 г.

Текстовые вариации

Надпись «Незарегистрированная версия!» (nag-screen) может появиться на экране как часть развевающегося флага (на некоторые его полигоны можно накладывать другую текстуру) или в виде самостоятельного текста, сопровождающегося какими-нибудь эффектами. В первом случае буквы могут искажаться (например, на широкоэкранном мониторе), поскольку растровая текстура будет растягиваться сильнее, чем ожидали разработчики. А второй вариант предоставляет им кое-какие дополнительные возможности.
Допустим, пользователь зарегистрировал программу — надпись нужно с экрана убрать. Но, программная реализация вывода текста никуда ведь не делась! Можно с ее помощью показывать пользователю что-нибудь полезное.
Первая мысль: вместо надписи «Незарегистрированная версия!» показывать регистрационный номер. Правда, пользователю после регистрации он не очень интересен — разве что нужно будет назвать его, обращаясь с вопросами к разработчикам скринсейвера.
Вторая идея: показывать счетчик fps. Уже лучше: бесплатный встроенный OpenGL бенчмарк :-)
Третий вариант: часы. Ну, это — классика... Не нужно только показывать секунды — их мелькание будет отвлекать взгляд пользователя от самого флага. Часы могут работать и в countdown-режиме, показывая, сколько дней осталось до какой-то знаменательной для пользователя даты.
А самым мощным, похоже, будет простейший вариант: пусть пользователь сам введет строку, которая будет висеть на экране. Тут он может написать и название страны, флаг которой он видит, и рекламный слоган, если флаг корпоративный, и «Спартак — чемпион!» для спортивного флага.
И, естественно, у пользователя должна быть возможность полностью отключить отображение текста. Чем больше возможностей настройки (только — не переборщить! :-), тем более приятное впечатление должно сложиться о программе.

воскресенье, 9 августа 2009 г.

Словопечатник

Примерно так можно перевести с английского слово «WordPress», которое с 2003 года означает не только сервис размещения блогов, но и движок, с помощью которого, владея лишь базовыми знаниями HTML и веб-дизайна, можно придать своему сайту профессиональный облик.
Для шароварщика WordPress интересен не только как инструмент ведения блога, «раскручивающего» продаваемую им программу. Чтобы сотрудничать с регистратором (об этом речь шла в предыдущих заметках), нужно иметь свой сайт. Можно ли построить его на движке WordPress? Чтобы ответить на этот вопрос, стоит поближе познакомиться с этой платформой.
Зарегистрировавшись на сайте wordpress.com (на wordpress.org можно найти много полезной информации, но завести свой блог не получится :-), я получил письмо со ссылкой, переход по которой автоматически создал мой блог с именем <не_скажу_как_назвал>.wordpress.com. Выбранный при этом шаблон, неплохо подходит для ведения онлайн-дневника. Но, сайт для продажи ПО должен, пожалуй, выглядеть несколько иначе. Посмотрим, сложно ли настроить WordPress по своему вкусу...

суббота, 8 августа 2009 г.

Взаимные обязательства

Продажа программы через регистратора (о них я писал 5 августа) осуществляется, естественно, после подписания соответствующих документов. На что нужно обратить внимание, заключая договор, например, с компанией ShareIt?

- договор заключается относительно программных продуктов, перечисленных на сайте разработчика;
- к программному продукту прилагается документация и лицензионное соглашение (EULA), в электронном формате;
- регистратор обязуется разместить продукт в виртуальном каталоге, предоставить покупателю форму для безопасного заказа, доставить покупку клиенту, а также - собирать все необходимые платежи и информацию о Клиентах;
- разработчик предоставляет сами продукты (либо в форме программного обеспечения как такового, либо в форме лицензионного или регистрационного ключа) и дополнительную информацию, необходимую для их продажи;
- если продукт предоставлен только в форме лицензионного или регистрационного ключа, оплата услуг регистратора возрастает, примерно на 2 %;
- разработчик информирует регистратора о рекомендуемых розничных ценах, а регистратор устанавливает конечную цену;
- разработчик подтверждает, что является автором и владельцем авторских прав на продаваемые продукты, или что он уполномочен автором на их распространение;
- разработчик гарантирует, что ни его продукт ни его сайт не содержат запрещенных законом материалов;
- разработчик гарантирует, что предоставленный продукт не содержит вирусов, «троянских коней», шпионского, рекламного, вредоносного, деструктивного программного кода;
- разработчик гарантирует, что его продукт не осуществляет несанкционированных действий в компьютерной системе пользователя или передачу данных из нее без предварительного уведомления пользователя и его согласия на это;
- разработчик предоставляет регистратору список ключей или генератор ключей, соответствующий его требованиям;
- разработчик обязуется оказывать на своем сайте (или другими надлежащими способами) техническую поддержку продаваемого продукта.

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

пятница, 7 августа 2009 г.

Словарь для параметров

С появлением в Windows-95 системного реестра, он стал наиболее популярным хранилищем параметров для разных программ. Но, для небольшого скринсейвера можно хранить настройки и в ini-файле, который обладает по сравнению с реестром одним преимуществом - читабельностью. Объяснить неопытному пользователю, как Regedit-ом заменить в нужной ветке реестра "0" на "1", может оказаться нелегко. А, открыв Блокнотом ini-файл, он внесет нужные исправления без труда. Это может упростить поддержку продукта, которая (особенно - при англоязычных пользователях) способна стать для разработчика нетривиальной задачей.

Среди многообразия классов NET Framework есть коллекция StringDictionary, которая заметно облегчает программисту работу с ini-файлом.
Мы считываем очередную строку из текстового файла функцией ReadLine(...) и находим в ней символ "=" функцией IndexOf(...). То, что слева от него - название параметра (ключ), справа - значение параметра. Можно добавить их в StringDictionary функцией Add(...), а потом - обращаться к значению параметра обычным индексированием: [] (как для массива).
Сохранение ini-файла тоже не представляет труда. Получаем итератор для коллекции функцией GetEnumerator(...) и преобразуем функцией dynamic_cast<...> очередной (Current) элемент словаря к типу DictionaryEntry. Для него уже определены свойства Key и Value, которые мы и сохраняем в файл функцией WriteLine(...).

Вывод: старые идеи можно сочетать с новыми технологиями

четверг, 6 августа 2009 г.

Загрузка bmp, gif, jpg изображений

Программисту, привыкшему решать проблемы "в лоб", трудно поверить в то, что для загрузки в свою программу изображений из файлов популярных графических форматов (bmp, gif, jpg), совсем необязательно знать их структуру!
Для начала, нужно имя требуемого файла преобразовать в Юникод с помощью функции MultiByteToWideChar(...). Передав Юникодовское имя в функцию OleLoadPicturePath(...), можно получить указатель на интерфейс IPicture, который позволит единообразно обращаться к разным свойствам и методам объекта-изображения независимо от его формата.
Нам понадобятся методы, возвращающие ширину: get_Width(...) и высоту: get_Height(...) картинки. Полученные значения будут в сотых долях миллиметра, поэтому для пересчета их в пикселы нужно функцией GetDeviceCaps(...) узнать количество пикселов на дюйм экрана и, чтобы вычисления были точными, применить функцию MulDiv(...) для получения высоты и ширины в пикселах.
<Пикселы> = MulDiv(<сотые доли миллиметра>, <пикселов на дюйм>, (2,54*100*10))
Полученные ширину и высоту заносим в структуру BITMAPINFO и, передав ее функции CreateDIBSection(...), строим HBITMAP нужного размера.
Теперь можно вызвать метод Render интерфейса IPicture, чтобы отрисовать в созданный HBITMAP хранящуюся в файле картинку. Мы не знаем (и знать не хотим :-) ни степени сжатия (для jpg) ни используемой палитры (для gif) — метод Render выполняет за нас всю тяжелую работу по интерпретации соответствующего формата!
Получив в HBITMAP попиксельное представление изображения, можно передать его одной из OpenGL функций генерации текстуры, например, gluBuild2DMipmaps(...) и увидеть на экране прочитанное из файла изображение.

Вывод: прежде чем писать свою функцию, стоит поискать в MSDN похожую.

среда, 5 августа 2009 г.

Между продавцом и покупателем

Если верить Википедии, были в царской России мелкие чиновники (вроде гоголевского Хлестакова :-), которых называли "коллежский регистратор". А в 21-м веке слово "регистратор" приобрело для шароварщиков совсем иной смысл.
Каждый разработчик хочет продать свою программу как можно большему числу покупателей, но не имеет возможности принимать оплату, например, в японских иенах, несмотря на безусловную конвертируемость и мировой авторитет этой валюты.
Каждый пользователь, покупая shareware-программу, хочет сделать это быстро, безопасно и расплатиться наиболее удобным для себя способом (для одного покупателя это - кредитка, для другого - банковский перевод). Тут то и выходит на сцену регистратор, при посредничестве которого совершается сделка. Он принимает платеж и передает пользователю регистрационный ключ программы (или информирует разработчика, который делает это сам). Платежи аккумулируются на аккаунте продавца, который получает деньги по согласованному с регистратором графику. Хороший регистратор оказывает продавцу дополнительные услуги и берет за это не такой уж высокий процент. Посмотреть список наиболее известных регистраторов можно в базе знаний сообщества swrus.
Можно, конечно, пытаться продавать свою программу и без посредников, но, во-первых, есть сложности с получением денег из-за границы (например, применяемая на eBay система PayPal позволяет гражданам постсоветских стран только отправлять деньги, но не получать их). А, во-вторых, незначительные затраты на сотрудничество с регистратором обычно окупаются предоставляемым им сервисом.

вторник, 4 августа 2009 г.

Инсталлятор для дистрибутива

Давно прошли времена когда установка программы на компьютер состояла из создания папки в корне диска C: и копировании в нее всех файлов с 5-дюймовой дискеты. Рост сложности и самих программ и операционной системы привел к появлению дистрибутивов. Это — своего рода интеллектуальный саморазворачивающийся архив, который не только распаковывает программные файлы в нужные папки, но и выполняет дополнительные действия: создает или модифицирует ключи реестра, создает ярлыки для запуска программы и т. д.
Создать дистрибутив можно не только средствами самой среды разработки (например, Visual Studio), но и с помощью программ-инсталляторов, например — Inno Setup.
На сайте swrus, этот инструмент пользуется хорошей репутацией. Скачал я его с сайта разработчика (меньше 2 Мб), установил и запустил. Честно говоря, ожидал увидеть среду, в которой компоновка дистрибутива выполняется в привычном wysiwyg-стиле. А получил в свое распоряжение компилятор мощного скриптового языка + прекрасный help к нему + полтора десятка скриптов-примеров, иллюстрирующих наиболее востребованные функции Inno Setup. Думаю, самый простой из них вполне подойдет для нашего скринсейвера — будем пробовать...
Если пользователь, устанавливая программу, сталкивается с какими-нибудь неприятными сюрпризами, впечатление от самой программы (а значит и вероятность ее приобретения), как мне кажется — снижается. Поэтому, создание удобного и надежного дистрибутива — задача немаловажная.

понедельник, 3 августа 2009 г.

Полноэкранный режим

Динамичные компьютерные игры используют пространство экрана по максимуму. Не отстают от них и скринсейверы. Организация полноэкранного отображения имеет свои особенности, но отнюдь не так сложна, как может показаться программисту, привыкшему, что Delphi или Visual Basic сами создают готовые к употреблению окошки.
Жидкокристаллические мониторы, в отличие от своих ЭЛТ собратьев, имеют «родное» разрешение экрана, обусловленное параметрами используемой матрицы. Обычно именно это разрешение и установлено по умолчанию. Чтобы использовать его параметры и в полноэкранном режиме, нужно получить контекст устройства для экрана:
HDC ScreenDC = GetDC(NULL);
Для него узнать ширину и высоту экрана в пикселах, а глубину цвета - в битах на пиксел:
int hr = GetDeviceCaps(ScreenDC, HORZRES );
int vr = GetDeviceCaps(ScreenDC, VERTRES );
int bp = GetDeviceCaps(ScreenDC, BITSPIXEL);
Эти параметры нужно поместить в структуру:
DEVMODE dmScrMode;
dmScrMode.dmPelsWidth = hr;
dmScrMode.dmPelsHeight = vr;
dmScrMode.dmBitsPerPel = bp;
Структуру передать в фунцию, которая должна установить полноэкранный режим:
LONG rezult = ChangeDisplaySettings(&dmScrMode, CDS_FULLSCREEN);
И обработать ситуацию, когда ей это не удалось:
if(rezult != DISP_CHANGE_SUCCESSFUL)
{
...
}

Вывод: чтобы переключиться в полноэкранный режим, не обязательно менять разрешение экрана.

воскресенье, 2 августа 2009 г.

Текстовые эффекты в OpenGL

Если бы я заглянул в MSDN до того как написать о выводе текста в OpenGL, непонимание особенностей функций CreateFont и wglUseFontOutlines рассеялось бы гораздо раньше :-(

Богатство их параметров позволяет "легким движением пера" менять визуальное представление текста на экране. Например, чтобы текст располагался не горизонтально, а по диагонали, нужно указать угол ее наклона в параметре nEscapement функции CreateFont.
А, меняя значение параметра format для wglUseFontOutlines (он может иметь только два значения: WGL_FONT_LINES или WGL_FONT_POLYGONS) можно рисовать контур текста, через который будет виден фон сцены (такая вот псевдопрозрачность ;-) или сплошные буквы, которые можно закрасить или текстурировать.
Широкое поле для творчества: нужно только не переборщить с эффектами и подобрать такое представление текста, которое наиболее гармонично впишется в сцену.

Вывод: любите MSDN - источник знаний

суббота, 1 августа 2009 г.

От новостей к сайтам

Разместив свою программу (или ее URL) на солидном сайте (это я продолжаю тему, начатую несколько ранее), нужно позаботиться о том, чтобы пользователи узнали о ее появлении. Наиболее популярным средством для этого являются, конечно, RSS, поддерживаемые многими сайтами. Но, много ли подписчиков у этих новостных лент? Попробуем пойти обратным путем: от популярной ленты к раскрученному сайту, на котором можно разместить свою программу.
Немного поколдовав на страничке Google Reader, можно увидеть все 449 рекомендуемых наборов RSS, в каждом из которых будет от 4 до 10 лент. Выбор комплекта "Software" оформляет подписку на девять лент. Три из них, к сожалению, неактивны. Одна - чисто новостная - никак не связана с загрузкой программ. Еще одна - посвящена portable-приложениям. Оставшиеся четыре ведут к сайтам, которые заслуживают дополнительного исследования:
  • FileHippo - 23.3 сообщений в неделю; 10,500 подписчиков
  • GiveawayOfTheDay - 7.7 сообщений в неделю; 23,327 подписчиков
  • MajorGeeks - 59.7 сообщений в неделю; 20,519 подписчиков
  • SnapFiles - 9.6 сообщений в неделю; 5,819 подписчиков

пятница, 31 июля 2009 г.

Особенности вывода текста в OpenGL

Изобразить на экране красивые буковки в OpenGL не очень сложно. Для этого нужно:
  • создать шрифт: CreateFont(.....);
  • «привязать» контекст устройства: SelectObject(.....);
  • преобразовать шрифт в полигоны: wglUseFontOutlines(.....).
Теперь эти полигоны можно текстурировать и отображать - как и другие объекты сцены. Но, имеет эта простота одну особенность, из-за непонимания которой я долго не мог достичь поставленной цели: вместе с флагом отображать на экране текст.
Дело в том, что функция wglUseFontOutlines помещает шрифтовые полигоны в список отображения (для каждого символа получается как бы подпрограмма его вывода). По умолчанию OpenGL считает лицевыми те полигоны, рисование которых происходит ПО часовой стрелке — именно в таком порядке обходят вершины шрифтового полигона эти стандартные подпрограммки. А мне, рисуя флаг, было удобнее обходить прямоугольники, из которых он состоит, ПРОТИВ часовой стрелки. Чтобы OpenGL считал такие полигоны лицевыми, я при инициализации вызвал функцию glFrontFace(GL_CCW). Пока в сцене не было текста, она выглядела нормально, а когда направление рисования полигонов флага и текста не совпало, на изображении возникли серьезные артефакты. Стоило перед выводом текста поменять порядок обхода для лицевых полигонов: glFrontFace(GL_CW), а после — переназначить обратно: glFrontFace(GL_CCW), как изображение пришло в норму.

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

четверг, 30 июля 2009 г.

P.S.№1..реклама двигатель торговли

Сегодня порадовал Джеки Чан (килотонны его фильмов были просмотрены в молодости).
... сейчас особый случай KasperskijLab
хотя мне больше понравился другой опыт сотрудничества буржуйских МЕГА-стар с нашими фирмачами VodkaAdd

P.S.

Под этим заголовком (... приставкой) я буду публиковать вещи не относящиеся к проекту, но, которые могут быть интересны НАМ (... и иже с ними))))

среда, 29 июля 2009 г.

Наглый nag

Речь, конечно, пойдет не о кобре из сказки Киплинга про храброго мангуста, не о маленькой лошади (пони) и, конечно, не о противотанковой ракете третьего поколения: эти значения слова "nag" можно посмотреть в Википедии.
Google переводчик предлагает несколько вариантов для глагола «nag»: надоедать, ныть, раздражать, изводить. Именно поэтому назойливое напоминание, которое программа показывает пользователю, назвали «nag screen».
Поскольку скринсейвер запускает не пользователь, а операционная система, отображение nag-а в начале работы было бы неудачной идеей. Другое дело — в конце, когда пользователь наверняка увидит его. А вот стоит ли показывать nag на фоне нашего развевающегося флага — вопрос, на который трудно дать однозначный ответ...
Для shareware-программ цель nag-а — стимулировать пользователя купить программу. Следовательно, слишком уж его «доставать» — нецелесообразно. В раздраженном состоянии, как мне кажется, с деньгами расстаются неохотно... Как добиться, чтобы nag не создавал пользователю дискомфорта ? Для этого nag, который показывается вместе с флагом, должен быть небольшим, находиться на периферии экрана, двигаться (неподвижный объект не характерен для скринсейвера), периодически исчезать с экрана и снова появляться. По окончании работы скринсейвера nag screen должен возникать не всегда, а с 30-40 процентной вероятностью, чтобы быть для пользователя сюрпризом... :-)

Без лишних формальностей

Предыдущее сообщение закончилось описанием тех сложностей, с которыми столкнется шароварщик, пытаясь протолкнуть свое творение на солидный сайт. Оказывается, для скринсейверов ситуация намного проще. Существуют сайты (например. screensaversplanet.com или desktopscreensaver.com), которые специализируются именно на этой разновидности программ. Будучи заинтересованными в пополнении своих баз данных, они позволяют, заполнив несложную форму, добавить информацию о своем скринсейвере в их коллекцию.
Образцом может служить 3dscreensaver.com На его главной странице легко обнаружить ссылку "Submit". На открывшейся страничке главное - не ошибиться, прописывая File Location(URL). Дело в том, что на подобных сайтах обычно хранятся не дистрибутивы, а только ссылки на них. Это освобождает владельцев сайта от ответственности, связанной с возможным нарушением авторских прав, о чем прямо сказано в условиях использования сайта. Такое посредничество облегчает пользователям поиск нужной им программы, а разработчикам - ее популяризацию.

понедельник, 27 июля 2009 г.

Джентльменский набор

Описанные в предыдущих сообщениях скринсейверы были найдены по критерию "размер дистрибутива". А какие еще характеристики программы обычно указывают сайты, с которых можно скачать разнообразный софт? Похоже, их минимальный джентльменский набор выглядит так: название: (как же без него :-); размер дистрибутива; дата добавления на сайт (или последнего обновления); модель лицензирования (freeware, shareware, ...); цена; платформа (т.е. операционная система и, возможно, системные требования); сведения об авторе (т.е. о том, кто прислал программу); сайт автора; авторское описание программы и ее скриншот(ы).
Чтобы отправить свой скринсейвер на солидный сайт, нам, похоже, понадобится выполнить ряд формальностей, первый из которых - регистрация. Вторым шагом, наверное будет подготовка стандартизованного описания программы в виде, например, PAD-файла. Третий и последующие шаги пока скрыты в тумане...

Супертяж

Мой коллега (killarama) прокомментировал предыдущее сообщение:

Представляю номинанта на место №0 DropClock Screensaver 136.97MB !!!!!!!!!!!!! живого весу
PS Чует мое сердце - это еще не предел :-)

Такой уникальный скринсейвер не должен затеряться в комментариях...

воскресенье, 26 июля 2009 г.

Три тяжеловеса

Я далек от мысли, что мой поиск определил абсолютных победителей в номинации «скринсейвер с самым большим дистрибутивом», но на фоне 8-12-18 мегабайтных собратьев, они выглядят как братья Кличко в компании легковесов :-)

Поклонникам классической живописи адресован Baroque Art Screensaver - 800 Paintings 2c. Размер дистрибутива легко объяснить количеством вошедших в него электронных репродукций работ Рубенса, Рембрандта, Вермеера и многих других мастеров. Сначала вы скачиваете миниатюрный (354 Кб) загрузчик, который загружает почти восьмидесятимегабайтный дистрибутив. Интересно, какие цели преследовали разработчики, применив такой подход ? Жаль, что бесплатно наслаждаться шедеврами эпохи барокко можно только два дня :-(

Любителям аквариумистики будет интересен Aquarium Real Life 6 Screensaver. В отличие от более «тощих» собратьев, он (как уверяют разработчики) использует не компьютерную анимацию, а видеосьемку реальных рыбок. Присутствием видео в дистрибутиве и обусловлен его немалый размер (61,14 Мб). Полноэкранные «портреты» рыб, похоже, главная особенность шестой версии этого программного продукта.

Пятьдесят три мегабайта третьего призера (Through the Eyes of Hubble: Screensaver 1.01) оставались для меня загадкой, пока я не прочитал повнимательнее его описание. Не каждый скринсейвер содержит «20 минут богатой стерео музыки». А что же мы видим на экране под ее аккомпанемент ? Любители астрономии уже догадались, что смогут наблюдать пейзажи Вселенной, сделанные космическим телескопом «Хаббл».

суббота, 25 июля 2009 г.

От и до. Две умных точки.

Я редко пользовался возможностью искать числа из указанного диапазона, которую имеет Google. Его справка поясняет, что два числа, разделенные двумя точками без пробелов в строке поиска интерпретируются как диапазон от..до. Можно искать даты, цены, вес в кг (или Мб :-). В англоязычном поисковом интерфейсе поля для ввода диапазона открываются после щелчка на "Date, usage rights, numeric range, and more". Жаль, что в русскоязычном их (пока ?) нет.
Когда пишешь программу (это я про наш скринсейвер :-), обычно интересуешься ее аналогами. Вот я и попытался диапазонным поиском выяснить, сколько стоит среднестатистический скринсейвер и размер его дистрибутива. Результаты поиска еще нужно обработать, но вот самые «тяжеловесные» скринсейверы уже определились.
Чемпион «весит» 78,2 Мб; серебряный призер - 61,14 Мб; бронзовый - 53,43 Мб. А, какие именно программы разместились на этом виртуальном «пьедестале почета» - об этом чуть позднее...

пятница, 24 июля 2009 г.

Блогописи не горят

В январе 2007 года решил я открыть свой блог. Не будучи знатоком английского языка, попытался найти удобный (и бесплатный :-) сервис, имеющий русский интерфейс. Смутно припоминаю, что, попробовав несколько вариантов, остановил свой выбор на Blog.com.
Вынашивая наполеоновские планы, я создал не один блог, а три, чтобы не смешивать рассказы о событиях моего родного города, страны, и планеты.
Энтузиазма хватило всего на несколько постов в каждом из блогов. Потом подвернулась какая-то срочная работа и вспоминал я об этой "пробе пера" все реже и реже.
В конце ноября 2008 года вдруг получаю от blog.com. сообщение, что к моему блогу о жизни города был добавлен комментарий. Я был тронут небезразличием неизвестного читателя к моим опусам.
Сегодня хотел похвастать своими литературными талантами, но прежде чем показать блог коллеге, сам попытался открыть его (вдруг не работает ?). И, действительно, вместо знакомых текстов увидел стартовую страницу blog.com с сообщением о том, что мой блог не найден. На ней же была информация о переходе сервиса на новый движок. Очевидно, переделывалась и структура сайта, что могло стать причиной недоступности блогов, зарегистрированных в региональных подразделах сервиса.
Будучи на 99,9% уверенным, что мои блоги скоро восстанут из временного небытия, я все-таки написал письмо в службу поддержки, кратенько изложив ситуацию. Тут же получил стандартный ответ, что заявка принята. Приятно удивило наличие в ответном письме адреса странички, на которой будет отражаться состояние именно моей проблемы. Буду наведываться...

четверг, 23 июля 2009 г.

Уроки чистописания

Кажется, лишь недавно XP начала сдавать свои позиции на рынке операционных систем под натиском Vista. А скоро выйдет и Windows 7, RC-версии которой - уже не экзотика. Неработоспособность или ограниченная функциональность своего продукта (в нашем случае - скринсейвера) под какой-либо из этих ОС - прямой удар по карману шароварщика. Не каждый пользователь захочет (а "чайник" - не сможет) настроить режим совместимости со своей операционкой - ему проще будет найти другой скринсейвер... :-(
Что делать ? Для начала - прочитать в журнале "Компьютер Пресс" статью "Создание приложений, корректно работающих под Windows XP, Windows Server 2003 и Windows Vista. Уроки чистописания" известного Microsoft-специалиста Алексея Федорова. Затем - заглянуть в блог группы российского представительства Microsoft по работе с компаниями-разработчиками, где публикуется информация о технологическиx новинках. А потом уже можно будет помечтать о логотипе "Compatible with Windows 7" для своего творения.

P.S. Еще советую два руководства "Обеспечение совместимости приложений в Microsoft Windows Vista и Windows 7", написанные тем же Алексеем Федоровым в 2009 году:
1) Руководство для разработчиков (pdf; 5,49 Мб; 96 стр.)
2) Руководство для IT-специалистов (pdf; 2,27 Мб; 64 стр.)

среда, 22 июля 2009 г.

Анатомия изменника

Сегодня зоркий взгляд моего коллеги подметил в присланном ему документе восхитительную фразу: "Каждому изменнику - подарок!". В абзаце, посвященном детским праздникам, она выглядела как пулемет в магазине игрушек.
Сразу стало ясно, что автор имел в виду именинников, но, какова по-вашему вероятность опечатки, одновременно добавившей "з" и убравшей "ин"?
Заподозрив вмешательство машинного разума, я открыл Open Office и на чистом листе набрал слово "именнику". Умная программа подчеркнула его красной волнистой линией и через контекстное меню предложила заменить любым из четырех найденных спеллчекером вариантов. "Изменнику" в этом списке стояло первым, а "имениннику" - вторым. Диагноз полностью подтвердился...
Вывод: когда проверка орфографии предлагает варианты исправлений, первый вариант - не обязательно правильный.

вторник, 21 июля 2009 г.

Поэтапная процедура

Сегодня обновил программу Mail.ru Agent, которая заменяет мне ICQ. Сначала в системном трее появилось уведомление о том, что доступна новая версия. Щелкнул по нему - открылось окно, в котором я прочитал о главных нововведениях новой версии. Нажал в этом окне на соответствующую кнопку - скачался инсталлятор, который и переустановил Mail.ru Agent.
Эта процедура напомнила мне эпизод старой чехословацкой кинокомедии "Призрак замка Моррисвилль". Главный злодей сидел в тюремной камере, которая находилась на вершине башни. Его сообщники привязали к арбалетной стреле прочную нитку. Не отягощенная грузом стрела долетела до окна камеры. Узник втянул метров 40-50 нитки - к ней была привязана такой же длины бечевка. А уже к бечевке прикрепили толстую веревку, которая выдержала вес не только снаряжения, необходимого для организации побега, но и самого преступника.
Думаю, автор этой идеи был бы неплохим программистом...

понедельник, 20 июля 2009 г.

Проверено ? Мин нет ?

Зашел я сегодня в банк, чтобы заплатить за квартиру, увидел простаивающий компьютер, и спросил себя: «Каковы шансы увидеть на его экране свой шароварный скринсейвер ?» Ответ очевиден: нулевые :-( И даже не потому, что скринсейвер не умеет вычислять сложные проценты, а потому, что у банка нет никакой гарантии, что внутри моей программы не заложен какой-нибудь вредоносный код.
Не все пользователи мыслят как специалисты по безопасности. Но, повысив доверие пользователя к своей программе, я могу косвенно стимулировать его к скачиванию и последующей покупке (как мне кажется).
Как повысить доверие ? Прямым текстом, думаю, бесполезно. А вот если рядом со ссылкой на свой скринсейвер будут ссылки на пару авторитетных антивирусов и программ, отлавливающих всякий шпионский софт, у пользователя должна промелькнуть мысль, что авторы ничего потенциально опасного в свой скринсейвер не заложили.

воскресенье, 19 июля 2009 г.

Гадкий гаджет

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

История первого скринсейвера

В студенческие годы я еще успел поработать на компьютерах, для которых программу набивали на перфокартах (это такие тонкие картонки с дырочками :-), а результаты ее выполнения можно было только напечатать. Для них скринсейверы не могли существовать в принципе.
С появлением ЭЛТ-дисплеев возникла такая проблема: если изображение на экране долго оставалось неизменным, электронная пушка бомбардировала одни и те же участки люминофора. Яркость экрана ЭЛТ-телевизора, для которого неподвижная "картинка" нехарактерна, равномерно снижается со временем ("садится трубка"). А на экране компьютерного монитора, выполненного по той же технологии, могли образовываться "выжженные" области, на которых уже ничего нельзя было разглядеть, при нормальной яркости остальных пикселов.
Говорят, первым одолел эту проблему знаменитый Питер Нортон. Его Norton Commander, зафиксировав отсутствие активности пользователя в течение заданного времени, запускал подпрограмму, имитировавшую полет в черноте космоса среди множества крохотных белых звездочек. Нажатие любой клавиши восстанавливало изображение файловых панелей (да, так выглядел во времена MS-DOS "рабочий стол" :-). Постоянное перемещение светящихся точек сохраняло (save) экран (screen) от неравномерного разрушения люминофора. Это и был первый скринсейвер (screen saver).

Выше только звезды

Когда комментируешь свой С++ код, точно знаешь, что пользователь текст комментария никогда не увидит. Когда комментарии находятся в шаблоне HTML, ситуация несколько иная...
Открыв исходный текст странички одного форума (http://не буду его рекламировать), я увидел, что web-кодер хотел отделить содержательную часть страницы (верхнюю) от малоинтересного ее окончания. No comment ...

суббота, 18 июля 2009 г.

Страна Советов

Когда начинаешь работать над чем-то новым (для авторов это - шароварный бизнес), часто хочется спросить совета у кого-то опытного и бывалого. Русскоязычные (ex-USSR) разработчики могут, посетив сайт http://swrus.com/ не только найти полезную информацию, но и присоединиться к сообществу независимых разработчиков shareware.