Swift Publisher - мой первый проект в BeLight

0 коммент. | добавить комментарий
Моя работа в Билайте началась 9 марта 2005 года. К тому моменту, как я попал в эту компанию, она имела два продающихся продукта. Первый - Business Card Composer - программа для создания и печати визитных карточек, и второй - Mail Factory - программа для создания почтовых наклеек, печати конвертов и прочей лабуды. Что касается Mail Factory - суть этой программы для меня до сих пор не ясна, она очень сложна, наворочена, и продается плохо. А вот работа с Business Card Composer в то время представляла из себя примерно следующее: в вашем распоряжении имелся холст размером с визитку, на котором можно было размещать картинки, прямоугольники, линии, и текст. Кроме того, можно было вставлять элементы из Address Book. Полученную визитку можно было напечатать на визиточной бумаге.

Компания в то время получала много отзывов от пользователей на тему того, что они используют BCC не по назначению, а для создания бланков деловых писем путем установки размеров холста в стандартный A4/Letter, и последующей распечатки. В связи с этим было решено меня, как нового сотрудника, бросить на создание специализированной программы для печати бланков и деловых писем. Соответственно, рабочее название нового проекта было "Letterhead", а я занялся тем, что стал переносить в него классы из BCC.

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

Потом я грохнул интеграцию с Address Book.

Еще потом мы решили, а я принялся разрабатывать новый инструмент - Extended Text. Суть задания сводилась к тому, что хорошо бы иметь набор текстовых боксов, чтобы текст, размещенный в них, умел "перетекать" из одного в другой - это было бы удобно, например, для организации многоколоночных писем. Проектирование, реализация и борьба с багами отняли около месяца. После завершения этой работы я познакомил дизайнера нашей компании с тем, что получилось, после чего он стал требовать добавления новой функциональности, а именно - обтекания текстом других объектов (картинок, фигур, и пр.). Это, по его утверждению, придало бы письмам больше выразительности и красоты.

Реализация обтекания отняла еще месяц, после чего всем стало ясно, что городить такие сложности ради создания дурацких бланков - дело неблагодарное, и менеджмент решил, что программа будет предназначена для Desktop Publishing.

Дальше были бесконечные просмотры Apple Pages, Adobe InDesign и иже с ними, тыренье их функциональности, нудная работа над пользовательским интерфейсом, отладка, отладка, и отладка. Полученный продукт назвали Swift Publisher и выпустили в конце июля 2005 г с ценой $35 за download-, и $40 - за CD-версию.

Итого: проект не имел никакого плана, вся разработка велась исключительно на основе первоначального видения, оперативных событий и анализа рынка. Работа над проектом заняла 5 месяцев, 3 из которых я работал один, а потом ко мне подключились еще два разработчика. Продукт тогда по популярности полностью затмил и BCC, и MF. Это был успех. Хотя мы и породили прямого конкурента Apple Pages (Apple даже впоследствии отказалась от размещения Swift Publisher в Apple Store), наш выигрыш был в цене (Pages продавался только в комплекте с Keynote за $80) и в простоте пользовательского интерфейса. Кстати, вышедший позже Pages 2.0 ушел от настольного издательства в сторону текстового процессора - туда ему и дорога.

Ах да, торт, который мы съели в день релиза, был очень вкусным :)

Pod-pod-pod

0 коммент. | добавить комментарий
Вчера, 12 сентября, Стив Джобс на специальной презентации Apple продемонстрировал обновленную линейку плееров iPod. В глаза бросилось то, что новая прошивка плееров iPod video и iPod nano позволяет (наконец) играть в игры и (о, ужас!) запускать ПО сторонних производителей.

- Сережа, к чему ты клонишь?
- К тому, что теперь под iPod, а точнее - под ОС Apple для iPod можно писать софт.

Мак-девелоперы, ряды которых я покину через три дня, скоро начнут медитировать на фреймворки с названиями вроде iPodApplicationKit и CoreIPod. Я как будто вижу перед собой оглавление следующего ADC Reference с классами NSiPodPlaylist, NSiPodSettings, NSiPodControl, и т.д.


iPod is Not a Black Box Anymore!


Так совпало, что именно сегодня я снес прошивку Rockbox с моего iPod nano (теперь уже предыдущего поколения) и вернулся на оригинальный firmware Apple.

Эксперименты на живом iPod nano я начал сразу, как только узнал, что его родная прошивка Apple имеет настоящий bootloader и умеет обращаться с файловой системой - а значит, может именоваться Операционной Системой. Для такого популярного гаджета просто не может не быть альтернативных ОС - решил я, и оказался прав.

К установке нарытого мной в Интернете iPodLinux я подошел серьезно. Вначале я долго читал форумы, на которых американские ай-подо-воды жаловались друг другу на неудачи с установкой данной ОС на свои гаджеты, в результате чего последние переставали работать, а предпоследние шли в магазин за новыми гаджетами. Однако, экспериментатор победил скептика, в результате чего я целую неделю играл в iDoom, запускал редактор vi, медитировал на bash и неимоверно пёрся.

Спустя неделю я вернулся к родной прошивке. Следующим экспериментом была установка прошивки Rockbox, которую мне очень рекомендовал друг Женя. Rockbox продержался на моем iPod целый месяц, поскольку в комплекте с ним я нашел целую кучу игрушек, которые доставили мне много приятных минут.

Почему я снова вернулся к родной прошивке? Потому, что в проигрывании музыки ей нет равных. Также ей нет равных по удобству интерфейса. iPodLinux, конечно, имеет mp3-плеер, но у меня он иногда зависал, и, к тому же, я так и не смог добиться от него поддержки Unicode в ID-тегах. Rockbox в этом отношении вел себя несравненно лучше, но, признаться, я так и не смог привыкнуть к его интерфейсу. Может быть, на всяких там iRiver прошивка Rockbox рулит, но...

Не знаю, в общем. Кто-то из зала кричит, что, мол, iTunes - suxxx! Я раньше тоже так думал. Однако, распробовав хорошенько связку iTunes + iPod, на самом деле уже не хочется ничего другого. Да, идея копировать музыку на плеер просто в виде файлов и директорий звучит заманчиво, но надо ли мне оно?




Почему тогда я устанавливал iPodLinux, Rockbox? Более того - почему я собираюсь пробовать новые прошивки, как только таковые будут появляться? И еще более того - почему я советую всем ай-подовцам и ай-подовкам делать как я? Да потому, что это чертовски занятно! Я с нежностью смотрю на маленький экранчик моего гаджета, на котором (ни хрена себе!) я селил целых две ОС, для которого я компилировал ядро linux, в котором я создавал новые разделы на диске... Мне кажется - это сравнимо с чувствами маленького ребенка, который в который раз разбирает новую, только что подаренную ему машинку, чтобы посмотреть, что там у нее внутри.

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

Deadlock и военкомат

0 коммент. | добавить комментарий
Был сегодня в райвоенкомате - пришел становиться на учет офицеров запаса. Тетенька там сидит такая смешнючая - и говорит мне: "А отчего же ты, Сережа, раньше не явился? Приказ-то о присвоении тебе звания уже два месяца как пришел. Это называется "несвоевременная явка" - будем штраф оформлять".

А я ей: "А не пришел я потому, что не знал, что приказ уже есть - мне же не приходила повестка!".

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

А я ей: "А не пришел я потому..." - ну и так несколько раз, по кругу.

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

(В этом месте я два часа философствую о том, что взаимные блокировки - суть явление природы, и могут они встречаться везде, а не только при параллельном программировании. Вот ведь как оно все устроено заковыристо! :)