суббота, 31 мая 2008 г.

Про рост shareware

Наткнулся тут на высказывание, которое показалось интересным

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


С одной стороны, все очень правильно (правда тут надо учесть, что 99 из 100 шаровар загнется еще до того момента, как появится возможность кого-то нанять).

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

Т.е. здесь ты обходился без тех. задания и оценки времени разработки, потому что тех. задание было в голове (ну в крайнем случае в виде 10 пунктов в notepad), а время оценивать было не надо, фитчи которые не успевал сделать просто резались на ходу. Там комментарии в коде были не нужны, да и code style был один - тебя устраивающий. А когда программистов стало 10, пожелание, "сделайте вот это", вместо тех. задания, выливается в то, что делают в лучшем случае что-то похожее, в худшем вообще не пойми что. А отсутствие предварительной оценки времени разработки, приводит, к чтению форумов и повышению общего образовательного уровня программистов, а отнюдь не к быстро сделанному коду.

четверг, 29 мая 2008 г.

Про "portable" программы

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

Итак. Вспоминаем славные времена, когда деревья были большими (хотя тенденция к их уменьшению уже прослеживалась), винчестеры маленькими, а про всякого рода USB Flash Drive и прочие полезности никто еще не знал. В то время происходил переход прогрессивной части народонаселения с MS-DOS на Windows 95 (с промежуточной остановкой в районе 3.11). Те кто может объяснить, что нарисовано на копке Save в большинстве программ, так же наверняка вспомнит, как обстояли дела с установкой программ под MS-DOS. В большинстве случаев дела обстояли крайне просто. Папка с программой просто копировалась с одного компьютера на другой, а иногда и копировать ничего было не надо, запускали прямо с дискеты.

С появлением и развитием Windows такой стиль жизни стал не моден. Программы стали хранить кучу всякой нужной им ерунды в системном реестре, а наиболее продвинутые стали использовать COM объекты, и о запуске на любом компьютере с дискеты постепенно пришлось забыть.

Однако, время не стоит на месте, и все возвращается к тому откуда началось. Возвращение это проявляется в двух вариантах, во-первых, с развитием интернет, некоторые из приложений переродились в интернет варианте, неплохой набор таких сервисов есть, например, у google. Во-вторых, как я понял не так давно (до меня вообще все доходит крайне медленно), многие жаждут иметь "portable" версию программы. Ибо даже на флешку объемом 8 ГБ, можно положить практически полный набор программ, которыми пользуешься в повседневной жизни. Что позволяет быть очень даже мобильным, без всякого ноутбука весом пару килограмм. Я уже не говорю, о каком-нибудь внешнем винчестере размером 1.8'. А на подходе еще и SSD девайсы.

Это как обычно была преамбула, и лирическое отступление на предмет пофилософствовать.

Теперь некоторые размышления на тему.

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

А вот тема "portable" программ вполне себе ничего. И имеется минимум два варианта почему оно нравится. Первый, это именно мобильность, т.е. ходить с винчестером и на любом компьютере иметь, весь набор нужных приложений (причем настроенных так как надо), крайне приятная перспектива. Второй, удобство возникающие при перестановке системы, ибо на данный момент, после того как на компьютер взгромоздился WindowsXP, а для всего железа, которое имеет место быть в этом самом компьютере, установлены драйвера (этот этап сам по себе навевает уныние). Начинается установка всего нужного софта. Процесс может затянуться часов на 6-7, и нажатие кнопки Next, выбор директорий и перезагрузка повергает лично меня в полное уныние. А завершается все это настройкой софта под себя (там фонт поменять, здесь панель инструментов вытащить).

Вообщем наличие "portable" версии на мой взгляд сугубо плюс, для любой программы.

Минусы правда тоже имеют место быть. Например, на данный момент нет никакой возможности Word таскаемый на флешке, привязать на открытие doc файлов на компьютере в который эта флешка вставлена. Для случая когда "portable" софт нужен только, чтобы не переустанавливать его каждый раз при переустановки системы, эта проблема решается одним reg файлом. Но этот случай вообще достаточно тривиален, и поддается хорошей автоматизации.

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

пятница, 23 мая 2008 г.

Пара цитат

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

А. Азимов. "Ленни".



- "Нам нужен не всякий программист, - сказал горбоносый. - Программисты - народ дефицитный, избаловались, а нам нужен небалованный".
- "Да, это сложнее", - сказал я. Горбоносый стал загибать пальцы:
- "Нам нужен программист: а - небалованный, бэ - доброволец, цэ - чтобы согласился жить в общежитии..."
- "Дэ, - подхватил бородатый, - на сто двадцать рублей".
- "А как насчет крылышек? -- спросил я. -- Или, скажем, сияния вокруг головы? Один на тысячу!"
- "А нам всего-то один и нужен", - сказал горбоносый.


А. и Б. Стругацкие. "Понедельник начинается в субботу"



Ну второе то уже закончилось, один программист сейчас мало кому нужен даже, если он может ради интереса, за одни выходные написать на ассемблере компилятор с языка Lisp для Palm Pilot'а (с) Спольски (хотя пяток таких программистов до сих пор могут составить вполне удачную компанию). А первое может и излишне романтично, но думаю верно и сейчас.

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

Скучновато.

понедельник, 19 мая 2008 г.

Парадокс Абилина

наткнулся на одном из форумов rsdn.ru

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

"Парадокс Абилина" относится к области тимбилдинга, и его более точное определение: "Обманчивый успех единодушного принятия решения в команде". Это такой феномен когда народ собирается совместно обсуждать какую-то проблему, но при голосовании не руководствуется собственной логикой, и в итоге все единогласно поддерживают какую-нибудь фигню.


Очень верное замечание, да. У самого что-то похожее в голове вырисовывалось, но как обычно "все уже украдено до нас"(c)

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

пятница, 9 мая 2008 г.

Про формат DjVu

Хочется слегка упорядочить свои мысли про DjVu. Чем и займусь.

Почему-то DjVu всегда сравнивают с PDF, что, на мой взгляд, не корректно. Потому что специфика использования PDF и DjVu совершенно различная.

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

Если начинать сравнивать DjVu с другими форматами, то надо в качестве оппонента выбирать многостраничный TIFF с каким-нибудь CCITT4 внутри. Потому что задачи, выполняемые тем и другим весьма похожи. А с PDF сравнивать глупо. Возможность хранить отсканированные документы в формате PDF, это, мягко говоря, далеко не все, что PDF умеет. Т.е. просто это не то для чего PDF предназначен и для чего он изначально разрабатывался. Такое использование PDF с родни забиванию гвоздей сковородкой, в принципе, можно, но не очень удобно и сковородку жалко.

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

А внутри у него реализована одна простая идея, которая называется алгоритм JB2.

Задумаемся, как лучше всего сжать печатный текст? Правильно, лучше всего разбить его на символы, каждому символу поставить в соответствие некоторый код. Теперь имея картинки для всех символов в документе, мы, кодируя страницу, создаем список кодов символов и их координаты на странице. Поскольку различных символов в тексте обычно не так чтобы много, и они имеют тенденцию повторяться, то мы резко сократим объем занимаемый изображением.

Посчитаем идеализированный вариант.

Возьмем страницы A4 с 600 DPI в черно-белом варианте (т.е. каждая точка кодируется в один бит). Имеем

8.27' * 600 * 11.7' * 600 = 34 833 240 б = 4 354 155 Б = 4.1 МБ

Это если ничего не сжимать.

А теперь, рассмотрим текст на этой странице. Поскольку мы рассматриваем вариант оптимальный для сжатия алгоритмом DjVu, то текст будем писать одним шрифтом и на одном языке (например, на русском), тогда для кодирования одного символа нам хватит 7 бит. Но мы не будем жадничать и положим 1 байт (тогда можно в тексте использовать 256/66, практически, 4 разных шрифта, если продолжать писать только на русском, ну или русский и английский язык и два шрифта). Для кодирования позиции символа на странице нам достаточно будет 4 байт (достаточно даже и трех, но опять не будем жадничать). Таким образом, для одного символа понадобится 5 байт.

Стандартно на странице умещается примерно 1 800 печатных символов, таким образом, имеем

1 800 * 5 Б = 9 000 Б = 0.00858 МБ

Итого более чем в три с половиной тысячи раз.

Очевидно, что сюда надо приплюсовать картинки для тех 256 символов, которые мы собираемся использовать (они, кстати, займут значительно больше места, чем сам кодированный текст). Но если страниц в документе много, а картинки для символов, будут едины для всего документа, то и этот объем нивелируется.

Конечно же, это описание идеи в чистом виде, практика вносит свои нюансы, которые в формате DjVu с успехом решаются.

Собственно о преимуществе DjVu на этом все.

А теперь про PDF.

В PDF есть схожий кодер JBIG2. Пока мы в своем DjVu to PDF конвертере используем CCITT4 кодирование и размер результирующего PDF файла отличается от исходного DjVu практически на порядок (PDF естественно больше). Интересно будет попробовать заменить CCITT4 на JBIG2 и посмотреть насколько это уменьшит размер PDF. Есть мнение, что если сделать все по уму, то существенно.

пятница, 2 мая 2008 г.

Программы для работы с блогом

Как и собирался посмотрел программы для работы с блогом. Постараюсь описать сей увлекательный опыт.

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

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

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


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

2. w.blogger - не понравилось, т.е. по функционалу может самое оно, но не понятно чего там народ намутил с визуальной частью. Какие-то свои самопальные меню, смотрятся как тихий ужас, плюс у части контролов выставлен не понятный шрифт, в котором нет русских символов.

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

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

Итого. Программы, которая бы понравилась не нашел.

Зато появилось две идеи, применительно к shareware.

Первая.

Часто в шароварном сообществе возникают беседы вида. "Зачем писать программу при наличии бесплатных аналогов?" "Все ниши заняты, везде куча софта и платного и бесплатного и с открытыми исходниками, как заработать на хлеб насущный?" Так вот сегодняшний поиск мне лично показал, что все эти разговоры - ерунда. Вот, пожалуйста, 4 бесплатных программы. Одна из них просто не работает, а остальные... И вот тут есть еще одна мысль. Весь вопрос в том на кого нацеливать программу. На профессионального блогера, который зарабатывает этим деньги? Ну, в таком случае может он и возьмет одну из бесплатных, ему важен функционал, а к интерфейсу... поработаешь пару недель без остановки, притрешься к любому интерфейсу, абы только не падало часто, и все было более или менее удобно. А если рассчитывать на какого-нибудь чудака вроде меня, тогда уже "красявасти" выходят на первый план, ибо функционал, то мне не особо какой нужен, но развлекаться хочется в красивой обстановке. И я думаю, что ниш таких, где бесплатные аналоги есть, но выглядят ужасно, ниш таких просто завались. Это даже безотносительно того, что функционал у платного, чаще всего побогаче, чем у бесплатного.

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

Вторая.

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

Про движок

Под оперой писать сообщения в этот блог крайне не удобно.

Во-первых, на панели всего две кнопки "проверка орфографии" (вот она мне сильно нужна, с орфографией у меня полный капут) и "добавить картинку", а под ИЕ их сильно больше. Во-вторых, по Ctrl + Shift поле ввода сообщения куда-то пропадает, что мягко говоря вносит определенный экстрим в переключение с русской раскладки на английскую.

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

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

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

Первая

Создал таки блог, без четкого понимания зачем это вообще мне надо.

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