И снова про иконки

November 21st, 2009 Begemot

На этот раз правда, не про бесплатные наборы иконок, а про правильное их использование в программе.

Заказал у дизайн главной иконки иконки у фрилансера,  $40, мне понравилось - я доволен, результат тут, спасибо маньяку за наводку. В процессе интеграции выяснил что, код который генерирует визард студии для работы с иконками – неправильный, и все эти годы у меня криво отображалась главная иконка. Раньше она и сама была кривая, так что на это внимание не обращал,  а теперь стало явно видно. Что генерирует визард

m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);

SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon

Проблема в том что LoadIcon грузит иконку весьма паршиво. И гораздо лучше использовать LoadImage, вот так

SetIcon(HICON(LoadImage(AfxGetApp()->m_hInstance, MAKEINTRESOURCE(IDR_MAINFRAME), IMAGE_ICON, 32, 32, 0)), TRUE); // Set big icon
SetIcon(HICON(LoadImage(AfxGetApp()->m_hInstance, MAKEINTRESOURCE(IDR_MAINFRAME), IMAGE_ICON, 16, 16, 0)), FALSE); // Set small icon

Теперь и маленькая (таскбар, заголовок окна) и большая (алт-таб) иконка загрузятся корректно.

Но и это еще не все тонкости, грузить иконку для использования в трее надо так как написано выше, это понятно. Но если вы хотите корректно отображать иконку в трее для Windows 2000 – то необходимо делать две ветви кода, и для W2K грузить иконку с опцией LR_VGACOLOR

HICON(LoadImage(AfxGetApp()->m_hInstance, MAKEINTRESOURCE(IDR_MAINFRAME), IMAGE_ICON, 16, 16, LR_VGACOLOR)

2000 винда умеет отображать в трее только 16 цветную иконку (ужас!), это нужно учесть и иметь формат с 4х битным цветом в вашем ico файле.

В общем намаялся я с этими иконками по полной программе, особенно учитывая, что я решил пользуясь случаем массово сменить иконки в меню\на тулбаре – потому что там тоже был ужас. Часть иконок заменил, часть взял старые но правильно их обработал, в результате программа стала смотреться намного приятнее, как по мне. А ведь страшно подумать, много лет продавалась с кривыми иконками, только потому что я 5 лет назад неумел\поленился разбираться с цветностью, форматами етс, а потом привык и как-то не замечал.

Отсюда мораль, если вы уже давно разрабатываете продукт – попробуйте абстрагироваться и посмотреть на него свежим взглядом…

За помощь и посвящения в тайны иконок, благодарю эксперта в этом вопросе  и по совместительству автора приятной программы для работы с иконками.

Кстати, тут сегодня Агентство переводов Alconost Translations выложило в открытый доступ Follow-up templates (шаблоны писем потенциальным клиентам), можно брать, пользоваться и даже добавлять свой любимый text repository for instant inserting 🙂


Если вам понравился этот пост вы можете подписаться на RSS или мы можем доставлять вам новые посты прямо в ваш почтовый ящик.


Подъездный маркетинг

November 17th, 2009 Begemot

Много всяких объявлений видел на подъезде – установка счетчиков, окон, подключение к кабельному, проверки етс. Но такого еще не видел

 

marketing

Теперь название этой конторы наверняка знает каждый владелец компа в нашем районе. Учитесь 🙂

Может, того набрать пакет софта, включить туда несколько триальных шаровар  - и ходить по домам устанавливать обучать народ ?:)


Если вам понравился этот пост вы можете подписаться на RSS или мы можем доставлять вам новые посты прямо в ваш почтовый ящик.


Осваиваю ноутбук Lenovo SL500, первые впечатления

November 3rd, 2009 Begemot

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

Основные задачи для ноутбука - оставаться на связи и иметь возможность работать в поездках, приезжая в деревню к родителям и смотреть кино на кухне 🙂 Исходя из этого изначально выбиралась бюджетная машина. С выбором у нас достаточно печально, все-таки не столица, ждать пока привезут выбранную модель было некогда, в итоге помучавшись два дня с выбором, взял Lenovo.

Основными критериями при выборе, помимо бюджетности были core 2 duo, 1200 * 800, и еще почему-то хотелось hdmi выход (есть слабая надежда, что через hdmi выход можно будет подключать ноут к dvi-монитору, хотя убедительных доказательств [не]возможности этого найти не удалось). Остановил свой выбор на LENOVO ThinkPad SL500 (NRJFMRT) 15.4" (1280 x 800) / Core 2 Duo T5870 (2.0 ГГц) / 2 ГБ / 250 ГБ / Intel GMA 4500MHD / DVD±RW / LAN / веб-камера / WiFi / Buletooth / Vista Home Basic / 2.85. Вот только с блютузом похоже облом и его там тупо нету:(.

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

Производительность - пока еще ничего серьезного не ставил, но скорость реакции гуи в висте и в убунте весьма радует, я боялся что в висте будет хуже. Опасения по поводу того что после 24" сидеть за 15" будет не возможно, пока тоже не подтвердились, хотя подожду пока поставлю студию и попробую реально работать. С тачпадом вроде освоился. В общем как по привыкну, испробую в реальных задачах напишу часть вторую.

P.S. Пост пишу на ноутбуке в электричке, боевое крещение:)


Если вам понравился этот пост вы можете подписаться на RSS или мы можем доставлять вам новые посты прямо в ваш почтовый ящик.


Ручная загрузка функций из DLL или как в программе использовать функции из Vista API

October 26th, 2009 Begemot

Наконец и до меня дошел прогресс и я все-таки решил перейти на Vista Clipboard API в своем Clipboard Manager. Логику продумал, код написал, код что-то наподобие :

if (vista)
CallNewVistaAPI();
else
UseOldAPI();

Запускаю в дебаге под XP, программа выдает ошибку и закрывается:

Clipdiary.exe - Entry Point Not Found
---------------------------
The procedure entry point AddClipboardFormatListener could not be located in the dynamic link library USER32.dll.

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

Заголовочный файл:

#pragma once

#pragma pack (push, 8)

class CDLLFunctionImports
{
public:
CDLLFunctionImports(void);

typedef BOOL (WINAPI * PADDCLIPBOARDFORMATLISTENER)(HWND);
typedef BOOL (WINAPI * PREMOVECLIPBOARDFORMATLISTENER)(HWND);

PADDCLIPBOARDFORMATLISTENER pRemoveClipboardFormatListener;
PREMOVECLIPBOARDFORMATLISTENER pAddClipboardFormatListener;

private:
void Import(void);
HMODULE GetModuleHandle(TCHAR * ModuleName);
};

extern CDLLFunctionImports DLLFunctionImports;

#pragma pack (pop)

typedef’ом определяем типы указатели на функции с нужной нам сигнатурой. В принципе, мне бы тут хватило и одного типа, но пусть уж будет два для благозвучия. Потом определяем экземпляры указателей на эти функции. Все просто. Еще объявляем глобальный объект, экземпляр нужного класса.

Файл реализации:

#include "ph.h"
#include "dllfunctionimports.h"

CDLLFunctionImports DLLFunctionImports;

CDLLFunctionImports::CDLLFunctionImports(void)
{
pAddClipboardFormatListener = NULL;
pRemoveClipboardFormatListener = NULL;

Import();
}

void CDLLFunctionImports::Import(void)
{
OSVERSIONINFO OSVersionInfo;
OSVersionInfo.dwOSVersionInfoSize=sizeof(OSVersionInfo);

if (GetVersionEx(&OSVersionInfo))
{
if (OSVersionInfo.dwMajorVersion >= 6)
{
HMODULE hModule = GetModuleHandle(_T("USER32.DLL"));
if (hModule != NULL)
{
pAddClipboardFormatListener = PADDCLIPBOARDFORMATLISTENER(GetProcAddress(hModule, "AddClipboardFormatListener"));
pRemoveClipboardFormatListener = PREMOVECLIPBOARDFORMATLISTENER(GetProcAddress(hModule, "RemoveClipboardFormatListener"));
}
}
}
}

HMODULE CDLLFunctionImports::GetModuleHandle(TCHAR * ModuleName)
{
HMODULE hModule = ::GetModuleHandle(ModuleName);
if (hModule == NULL)
{
hModule = ::LoadLibrary(ModuleName);
}

return hModule;
}

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

DLLFunctionImports.pAddClipboardFormatListener(handle);

Пользуясь случаем, хочу сказать спасибо человеку, который это все написал и поделился кодом. Еще он написал отличный и пока еще бесплатный lightweight yet powerful icon and bitmap editor, так что если кому приходится редактировать иконки, берите, а то он скоро зарелизит и захочет денег 🙂


Если вам понравился этот пост вы можете подписаться на RSS или мы можем доставлять вам новые посты прямо в ваш почтовый ящик.


TrialPay теперь поддерживат Payoneer, молодцы

October 25th, 2009 Begemot

Ура, то о чем так долго говорили большевики, свершилось! TrialPay добавил поддержку payoneera и дает эту опцию всему народу, а не только избранным.

Можно привязать существующую карту, для этого надо тыкнуть ссылку 'Click here to create an account with Payoneer', а потом 'If you already own a prepaid MasterCard card from Payoneer,
Click Here!', и дальше действовать по обстоятельствам.

Так что теперь у вас нет никакого оправдания не использовать TrialPay для конвертации как минимум uninstall page, а ведь некоторые успешные продукты используют его и на главных страница сайта и иногда неплохо получают:).

В общем если вы еще не зарабатываете с TrialPay’em вы ССЗБ :)  (вы по ссылке регистрируйтесь, а я потом в отчете по рефералам посмотрю кто из вас не ССЗБ :))

А что бы вы могли больше зарабатовать c TrialPay, вот вам ссылки много много советов по adwords и там в низу ссылка на free ebook где-то была. Дерзайте.


Если вам понравился этот пост вы можете подписаться на RSS или мы можем доставлять вам новые посты прямо в ваш почтовый ящик.


О работе, SEO и задумках

October 22nd, 2009 Begemot

Ведь вчера мы только брали с ним с тоски по "банке",

А сегодня он кричит: - Меняй коньки на санки!

Жалко тренера - он тренер неплохой... ну и бог с ним  (c)

Ударно поработал, целых 2 дня, уже и не помню когда последний раз был в таком ударе:) В результате успел написать, оформить и выложить, небольшую утилитку для удаления форматирования из текста в буфере обменаget plane text. Так что если у кого были проблемы со вставкой RTF – теперь, по идее,  вы должны быть счастливы:)

А потом меня жестко раскритиковали за seo, вернее за его отсутствие, вернее даже не просто раскритиковали, а можно даже сказать прямо взяли вот так вот и мордой об стол. Типа есть у меня мегаполезная программа такой себе text repository с возможностью быстрой вставки. А вот тайтлов и дескрипшинов нет, и всякой другой seo оптимизации тоже нет.  Мол распиздяй я последний и работать мне надо идти грузчиком.

С поисковой оптимизацией у меня действительно как-то не складывается, причем давно и упорно. Было дело пытался, даже не раз, но особого толку не было. Вот не стоит у меня на нее и все тут, что тут сделаешь? SEO это же вам не пришел, увидил, победил. Занимать им надо долго, упорно, и боюсь первое время безрезультатно. А перед этим еще и много читать было бы полезно.

И вот последнее время, я все чаще и чаще сталкивался с мыслью что стоит наверное все-таки вплотную этим делом заняться. И есть у меня такая задумка, не написать ли мне какую-нибудь свою seo utility (могу продать контекстную ссылку :)),  а там под шумок и сайты с оптимизирую. Я уже даже и придумал что писать буду – это будет такой универсальное центр поисковой оптимизации:) Осталось только определиться надо оно мне и миру или нет.

P.S. Карполан, я тебе торжественно обещаю исправится, в самое что ни на есть ближайшее время.

P.S.S Кстати о SEO - http://maxibiz.blogspot.com/2009/08/google-2009-1.html


Если вам понравился этот пост вы можете подписаться на RSS или мы можем доставлять вам новые посты прямо в ваш почтовый ящик.


Регистраторы, кризис или осеннее обострение?

October 19th, 2009 Begemot

Опять  о регистраторах, с ума что ли все посходили…? что попалось за последнии 2 дня.

Plimus

Пришел тикет от пользователя  сегодня

https://www.plimus.com/jsp/privacy.htm

....:
>>> Access Denied
The requested page is not publically available.
If you believe this is an error, please contact
support@plimus.com and mention the URL in question. <<< (That from a Firefox browser).

OK, the Plimus privacy statement is not >publically< available... Good. So much for trust into a company that does financial transactions.

 

Вот мой скриншот в доказательство

image 

 

Аvangate

Человек жалуется на политику партии, я согласен

 

Swreg

Эти тоже жгут не по-детски.

 

И при всем при этом Avangate на 1 месте, Plimus на 2 по количеству пользователей принявших участие в опросе “А кто у нас лучший регистратор


Если вам понравился этот пост вы можете подписаться на RSS или мы можем доставлять вам новые посты прямо в ваш почтовый ящик.


crazyegg : изучаем статистику

October 17th, 2009 Begemot

Если кто не знает http://crazyegg.com это такой сервис который позволяет собирать статистику и анализировать поведение пользователя не страницах,  есть платные и бесплатный типы аккаунтов. Бесплатного вполне хватает что бы поиграться с сайтом. Первые мои опыты с ним были больше года назад – тогда мне не удалось узнать ничего интересного и я немного разочаровался, в принципе все то, что сообщал мне сервис про поведение посетителей было очевидно и так.

Сегодня пришло письмо-напоминание, о том что у меня завершился очередной эксперимент. На этот раз данные мне показались интересными. Тестировалась страница Flashpaste Help Center, лимит 1000 кликов.

На первом месте как и ожидалось ссылка на online help 75 кликов (13%), а вот на втором почему-то ссылка на форум 72 клика, это стало большой неожиданность. Судя по всему народ видя, что есть форум идет его изучать, и это заставляет задуматься, прятать ссылку на форум или идти наводить там порядок :)  Дальше ссылка на обучающий ролик, на четвертом месте статья. Опять же интересно из 10 статей, одна лидирует с троекратным отрывом 34 клика, против 12 на вторую по популярности статью – можно сделать вывод что хочет народ от программы, а ведь это не самая главная ее функция…

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

Интересная картинка на  heatmap’e, интересно три ссылки лидеры расположены на одной линии – как раз по направлению взгляда, не потому ли они лидеры ?

 

heatmap

Одно ясно страницу надо менять, хотя я это и так собирался сделать. Теперь буду править вооруженный знанием о поведении пользователей.

А вы подсматриваете за посетителями?:)


Если вам понравился этот пост вы можете подписаться на RSS или мы можем доставлять вам новые посты прямо в ваш почтовый ящик.


Сайт лежит только для меня или для всех

October 13th, 2009 Begemot

 http://downforeveryoneorjustme.com/ – название говорит само за себя, полезный сервис. Теперь не приходится дергать людей в аське\мирке что бы узнать у хостера проблема или у провайдера.


Если вам понравился этот пост вы можете подписаться на RSS или мы можем доставлять вам новые посты прямо в ваш почтовый ящик.


Сврус-Киев, часть третья, и надеюсь последняя – о регистраторах

October 7th, 2009 Begemot

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

Если кто не знает, PayPro Global новый регистратор. Судя по презентации – весьма технологичный, в смысле контрольной панели, судя по презентациям. Но сам сайт на меня такое впечатление не произвел почему-то, хотя контрольной панели я не видел. Из плюсов принимают вебмани, бесплатно дают систему защиты\активации софта, из минусов  - тарифов на сайте нет, и что бы узнать надо писать в поддержку…

Собственно сама презентация.

 

В тему: Andy Brice, проводит опрос что бы определить лучшего регистратора, можете помочь ему заполнив анкету.


Если вам понравился этот пост вы можете подписаться на RSS или мы можем доставлять вам новые посты прямо в ваш почтовый ящик.