О реакции пользователей

May 13th, 2010 Begemot

Прикрутил локализацию к фриваре, за две недели получил 7 локализаций, включая арабскую (прикольно выглядит!) и японскую, и это при том что я даже не просил переводить (провтыкал). Люди сами замечали что появился этот механизм и спрашивали как перевести. Это приятно.

Но при этом я допустил ошибку, при запуске программы с английским языком интерфейса – выскакивал мессадж бокс с сообщением об ошибке отстутствия каталога, и хоть бы одна собака написала об этом…

Ни кто не пожаловался на ошибку, а ведь какое-то количества народа ее все-таки использует…

p.s. Кто-нибудь использует http://reformal.ru/ стоит ли его смотреть\пробовать?


Отключаем report post в phpBB

May 5th, 2010 Begemot

Задолбал форумный спам – ходят по форуму phpBB и отсылают “репорты” что мол посты плохие, ну и куча ссылок в репортах.

Уже несколько раз пытался найти как отключить эту функцию форума, но не получалось, на этот раз сильно достали и нашел.

1. идем в админ панель
2. permission -> Forum permissions
3. внизу Avaiable forums, жмем Submit
4. выбираем Guest, жмем Edit permision
5. для Avaiable forums  раскрываем  Advanced Permissions
6. отмечаем галочками все остальные форумы
7. идем в Action -> Can Report Post -> Never
8. применяем изменения

Posted in Рабочее
Comments Off on Отключаем report post в phpBB


О рекламе на русском рынке

May 1st, 2010 Begemot

“На русском рынке продаж нет”, ”На русском рынке можно и нужно продавать” – мнения по этому вопросу в шароварной тусовке  ходят весьма противоположные.

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

Акция не принесла большого количества закачек, всего около пары сотен по моим подсчетам, я подумал но и ладно. Вчера подводя итоги месяца, я заметил аномальный всплеск продаж Flashpaste на русском рынке.

С одной стороны получается что продавать на русском рынке все-таки можно, если заниматься маркетингом, а с последним у меня напряжно. Но с другой стороны, обычные продажи в рунете у меня ~1 в месяц, этот всплеск целых 4 🙂

Статья в тему: Что нужно для продажи софта в РФ?


Локализация, это полезно

April 22nd, 2010 Begemot

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

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

Смотрю теперь на свою привычную программу новыми глазами:) Заодно в процессе задумался над логичностью некоторых названий, подправил ряд строк, изменил несколько сообщений – в общем навел порядок.

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

А вы ощущаете разницу между англоязычной и локализованной версией программы?


Tidy Forums – оптимизируем процесс чтения форума

April 20th, 2010 Begemot

Tidy Forums – небольшая утилита предназначенная для более удобной проверки новых сообщений\чтения активных тем на севастопольском городском форуме. Писал для себя, посколько стандартный вариант новых сообщений в phpbb мне не нравился и надо было что-то делать, к тому же давно чесались руки попробовать питон в “реальной” задаче. Я долго вынашивал идею потом пользуясь моментом, свободным временем на пасху, наконец решился.

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

Кто как читает форум? Я обычно захожу раз в день\два\три – кликаю на новые сообщения, дальше просмотриваю список тем и открываю интересные в новом окне. Если вы читаете так же – то эта тема для вас 🙂

Форум весьма активный, тем сотни, при этому процентов 70 тем меня не интересуют – автофорум, политика, женский клуб…, но они активно “засоряют” новые сообщения, в результате:

  1. Во-первых, их все надо пробежать глазами,
  2. Во-вторых, иногда все таки названия цепляет и идешь читать.

Как следствие времени уходит море, и захожу редко, а хотелось бы читать чаще и не пропускать интересных тем. Не понимаю почему функционал фильтрации форумов\тем не добавили с движок форума, по моему это не правильно:) Решил исправить эту проблему для себя и заодно может еще кому-нибудь пригодится.

Скачать TidyForums

Настройка:

  1. Распаковать в любое место.
  2. Переименовать, а лучше скопировать, template ignoredforums.cfg  в ignoredforums.cfg
  3. Открыть в редакторе, удалить названия всех форумов которые вы ХОТИТЕ ЧИТАТЬ, то есть в файле должны остатся только
  4. форумы которые должны быть проигнорированны.
  5. Открыть config.cfg, указать свой логин и пароль, сохранить, закрыть.

Использование:

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

Следует учесть что логин\пароль лежат в открытом виде в файле, вдруг для вас это критично.

Если вдруг что не работает или работает не так, пишите буду думать.

И помните – время это одно из самых ценных вещей, которые у нас есть 🙂

Posted in Рабочее | Tags:
Comments Off on Tidy Forums – оптимизируем процесс чтения форума


TidyForums – про питон, форумы, модеров и хрень

April 20th, 2010 Begemot

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

Питон попробовал – мне по прежнему нравится:) Писать\тестировать\осваивать язык – легко. Ехешники делать можно – они даже работают, хотя конечно вес и размер занимаемой памяти соответствующий, вопрос насчет того насколько доступны исходники после компиляции в exe для меня остается открытым.

Интересно будет попробовать собрать это для мака или линукса, по идее скрипт достаточно просто и проблем быть не будет – но надо пробовать.

На форуме меня сразу же забанили, после того как написал про скрипт, так что путевки в жизнь программа не получила:) Вообще конечно админы меня удивили, интересно в чем причина такой …эээ неадкватности, ну да ладно. Пока еще не решил обидеться и послать все в *** или все-таки зарегаться под новым ником и начать жизнь с нуля 🙂

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

Tidy Forums – оптимизируем процесс чтения форума


Добавляем поддержку trialpay к NSIS Uninstall скрипт

April 1st, 2010 Begemot

Использовать trialpay для получение дополнительного дохода – хорошая идея, а предлагать пользователям получить программу бесплатно перед uninstall’ом просто замечательная 🙂

Итак будем добавлять поддержку trialpay в наш анинсталлер, я пользуюсь NSIS, соответственно код для него. Создаем специальную страницу под это дело, я использовал HM NIS Edit IO designer для визуального конструирования, в итоге получился вот такой вот файл UninstallTrialPay.ini

; Ini file generated by the HM NIS Edit IO designer.
[Settings]
NumFields=2

[Field 1]
Type=Label
Text=Because of our partnership with TrialPay, you can now get the fully-licensed version of Clipdiary, a $19.95 value, for free simply by trying or buying a product from one of our trusted partners.\r\n\r\nThat means you'll continue to enjoy all Clipdiary feature for Free!\r\n\r\n\r\nWith offers from trusted names such as eBay, Blockbuster, Stamps.com, and 100+ others, we're sure you'll find something you like!
Left=0
Right=300
Top=0
Bottom=112

[Field 2]
Type=Button
Text=Get it FREE now!
Flags=NOTIFY
Left=139
Right=284
Top=115
Bottom=138

Теперь добавляем его в основной скрипт,

!define MUI_FINISHPAGE_RUN_PARAMETERS
!insertmacro MUI_PAGE_FINISH
;;; From here!
; Uninstaller pages
  ReserveFile "UninstallTrialPay.ini"

;!insertmacro MUI_UNPAGE_CONFIRM
UninstPage custom un.PageUninstallTrialPay un.LeavePageUninstallTrialPay
!insertmacro MUI_UNPAGE_INSTFILES
;;; to here!
; Language files
!insertmacro MUI_LANGUAGE "English"

Дальше…

;-------------------------------- UNINSTALL FUNCTIONS

Function un.onInit
 …
;;; This line
!insertmacro MUI_INSTALLOPTIONS_EXTRACT "UninstallTrialPay.ini"[/b]
...
MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Are you sure you want to completely remove $(^Name) and all of its components?" /SD IDYES IDYES +2
Abort
FunctionEnd

Ну и наконец две основные функции

Function un.PageUninstallTrialPay
  !insertmacro MUI_HEADER_TEXT "Don't go yet! Get Clipdiary for FREE!" ""
;  !insertmacro MUI_INSTALLOPTIONS_DISPLAY "UninstallTrialPay.ini"

  !insertmacro MUI_INSTALLOPTIONS_INITDIALOG "UninstallTrialPay.ini"
  Pop $HWND ;HWND of dialog

  !insertmacro MUI_INSTALLOPTIONS_READ $DLGITEM "UninstallTrialPay.ini" "Field 1" "HWND"

  ;$DLGITEM contains the HWND of the first field
  CreateFont $FONT "Tahoma" 10 700
  SendMessage $DLGITEM ${WM_SETFONT} $FONT 0

  !insertmacro MUI_INSTALLOPTIONS_READ $DLGITEM "UninstallTrialPay.ini" "Field 2" "HWND"
  SendMessage $DLGITEM ${WM_SETFONT} $FONT 0

  !insertmacro MUI_INSTALLOPTIONS_SHOW

FunctionEnd

Function  un.LeavePageUninstallTrialPay
  ; At this point the user has either pressed Next or one of our custom buttons
  ; We find out which by reading from the INI file
  ReadINIStr $0 "$PLUGINSDIR\UninstallTrialPay.ini" "Settings" "State"
  StrCmp $0 0 done      ; Next button?
  StrCmp $0 2 openurl  ; "Install support for X"?
;  Abort ; Return to the page

openurl:
  ExecShell "" "http://clipdiary.com/free-clipboard-manager.php?s=untrialpay"
  Abort ; Return to the page

done:
FunctionEnd

Ну вот, вроде ничего не забыл. И пусть вам придет больше лишних денег 🙂


С++ Получение списка процессов и путей к exe файлам

March 23rd, 2010 Begemot

Вот неожиданно понадобилось получить список из всех запущенных exe файлов. Xотя казалось бы зачем оно такое может быть надо в simple end-user utility for storing clipboard history, но оказалось что надо. Пришлось изобретать велосипед, что бы труды не пропадали – решил опубликовать.

Вкратце получаем снимок всех процессов в системе CreateToolhelp32Snapshot, итерируясь по нему, для каждого процесса делаем снимок его модулей и получаем полный путь к ехе файлу. Если полный путь не нужен, а достаточно только имени файла – то вторую часть делать не нужно.

Теперь просто код, он простой, написан для универсальности с использованием stl.

typedef  map<wstring, wstring> ProcessMappingType;

wstring GetFullPathForProcess(DWORD pid)
{
    // Take a snapshot of all modules in the specified process.
    HANDLE hModuleSnap = NULL;
    hModuleSnap = ::CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, pid);
    if (hModuleSnap == INVALID_HANDLE_VALUE) return _T("");

    MODULEENTRY32 me32 = {0};
    me32.dwSize = sizeof(MODULEENTRY32);
    if (!::Module32First(hModuleSnap, &me32))
    {  
        ::CloseHandle(hModuleSnap);
        return _T("");
    }
    ::CloseHandle(hModuleSnap);
    return wstring(me32.szExePath);
}

ProcessMappingType GetAllRunningApplication()
{
    ProcessMappingType m;

    HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    if (hSnap != INVALID_HANDLE_VALUE)
    {
        PROCESSENTRY32 proc;
        proc.dwSize = sizeof(PROCESSENTRY32);
        if (Process32First(hSnap, &proc))
        {
            m[proc.szExeFile] = GetFullPathForProcess(proc.th32ProcessID);
            while (Process32Next(hSnap, &proc))
                m[proc.szExeFile] = GetFullPathForProcess(proc.th32ProcessID);
        }
        else wxFAIL_MSG(wxString::Format("Error Process32First: %i", GetLastError()));
       
        ::CloseHandle(hSnap);
    }
    else  wxFAIL_MSG(wxString::Format("Error Load ToolHelp:  %i", GetLastError()));  
   
    return m;
}

Все, с вас конфетка 🙂

P.S. И еще, хорошие люди просили сослаться на скандинавский аукцион в Киеве, дык мне не трудно 🙂 А вы верите в подобное?


Про установку Mac OS на хакинтош

March 16th, 2010 Begemot

Меня несколько раз в привате спрашивали про установку Mac OS, решил написать пост по горячим следам, пока не забыл.

Read the rest of this entry »


MAC OS, “первые” впечатления

March 12th, 2010 Begemot

Поставил на десктоп MAC OS 10.6.2,  снежного барса. Поставил потому что заказали написать одну маленькую программку, да и сам я давно хочу портировать туда свои продукты. Я то давно хочу, но все больше мечтаю, а тут пнули – чего бы не воспользоваться моментом?:)

Макос я уже когда-то ставил (посмотрел на дату поста – это было 3 года назад, как летит время…). Поставил, посмотрел пару дней и забыл. Второй раз я столкнулся с ней лицом к лицу, год назад на работе, где мне пришлось заставить проект компилиться на линуксе и маке. Тогда mac os мне сильно не понравился.

Я периодически работал на нем в течении нескольких месяцев (правда в сумме немного), но впечатления ни разу не улучшились. Я продолжал мучатся и плеваться. Поэтому мой текущий опыт – весьма и весьма неожидан для меня – мне понравилось! Правда в маке я провел всего 3-4 часа – пытаясь заставить его работать и настраивая под себя. Но у меня сложилось стойкое впечатление, что похоже это действительно система сделанная “для людей” намного больше чем Windows.

  1. Во-первых, это красиво, я не ценитель, но мне понравилось (и это у меня еще Quartz неактивен, потому что я еще видуху не завел)
  2. Это показалось удобно, но не стоит забывать, что работать я еще не работал. Хотя конечно к finder’у надо привыкнуть…
  3. Это сильно настраиваемо – всегда любил в программах большое количество настроек. Тут настроек куча – и сам процесс кустомизации системы логичен, удобен и доставляет  удовольствие. Винда в пролете.
  4. Это куча всего из коробки.
  5. Это быстрая загрузка – конечно макос еще девственная, и без кучи дополнительного софта, но стартует раз в 5 быстрее свежей винды.
  6. Макос летает, что меня поразило больше всего.

Пытаясь сейчас проанализировать почему такие разные впечатления от этого и прошлого раза, вижу некоторые различия.

  1. Прошлый раз всё тормозило – как серьёзные процессы типа копирования, сборки проекта, так и банальное гуи – реально тормозило. В это раз летает – а это сразу огромный плюс. Почему MAC OS тормозила на родном мак мини с core 2 duo 2GHz и 2 гигами памяти – понять не могу, но факт остается фактом. Может не стоит брать mac mini?
  2. Тогда мне приходилось работать с XCode, а это писец полный. В этот раз пока ничего кроме настройки системы делать еще не пришлось.
  3. Сейчас у меня привычная клава и мышка – тогда были родные от apple, и они мне не нравились, мышка точно.
  4. Я не помню какая система была год назад – тигр или леопард, но снежный барс судя по всему явно лучше, там даже Finder не такой странный.

Итак MAC OS после первого знакомства меня весьма приколол. Я думаю что в течении недели-двух я с ним познакомлюсь гораздо ближе и даже попишу под него – и тогда впечатления будут более объективными.

Еще один момент позабавил. В линуксе у меня опыт весьма скромный – установил, посмотрел, периодически что-то ставлю в нем, в расчете на то что ну наконец займусь – то qt, то wxWidgets, то питон… И вот заметил что мне в макосе не хватает Синаптика – а вернее, той легкости установки нового софта которую он дает. Кстати может это идея перспективного стартапа – Синаптик для винды, что думаете?:)

И последний момент – в MAC OS, так много всего есть в самой системе что складывается впечатление, что большая половина мелких шароварных утилит которые есть для винды там не нужна. Когда макос захватит мир – будет закат шаровары:)