2006-08-23

Ленивая оптимизация программ на Delphi/BCB

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

1) альтернативный менеджер памяти FastMM
http://fastmm.sf.net/
последняя версия 4.70
настолько хорош, что Borland заменила им стандартный менеджер в BDS2006.
В составе идет замена borlndmm.dll (Shared Memory Manager) позволяющая заметно ускорить работу самой IDE.

2) проект FastCode, FastMove.
http://www.fastcodeproject.org/
http://fastcode.sourceforge.net/
Я использовал только FastMove, но качать придется и FastCode, т.к. FastMove использует один небольшой модуль из него.
Замена стандартных функций Delphi (таких как move) на ускоренные аналоги (MMX, etc) с патчем в runtime.

Т.е. в обоих случаях в своих исходниках ничего менять не нужно, кроме как добавить
Uses FastMove, FastMM4 в начале dpr файла.

Вчера, наконец, дошли руки – написал тестовую программу, работающую с сокетами (отправляющую и принимающую бинарные пакеты). Ускорение работы с FastMove+FastMM4 практически двукратное, совершенно на ровном месте (я особо не выделяю память и не использую move)!

Будет интересно увидеть ваши результаты на таких же бытовых программах!

2006-08-13

Что мешает Java-счастью. Взгляд со стороны.

Я не являюсь Java разработчиком, можно сказать, что я присматриваюсь.
На текущий момент есть всего две альтернативы Java или .NET.
Мне верится, что "правда" за свободным сообществом Java разработчиков.
Небольшое изучение вопроса показало его (общества, Java) болевые точки.
Буду рад, если кто-то более знающий прокомментирует мои наблюдения.

1. Разброд в рядах. Та же самая болезнь, которая вредит unix/linux/остальным подобным проектам. Конкурент - Microsoft - монолитен, согласован и напоминает шеренгу спартанцев.
В рядах же не-Microsoft разработчиков беснуется Новодворская Ричард Столман, тянут в разные стороны разобщенные группы фанатов PHP, C, Python, Perl и т.д., развивается кукушонок Mono.
На заре "раздела мира" похожая ситуация, когда производители UNIX, существенно превосходивших DOS-Windows, воевали между собой – привела к победе Microsoft.
Наиболее опасным я считаю две вещи:
1) Отсутствие Java доминирования. Заслуга Microsoft в том, что там поняли, как важно иметь ОДИН язык разработки (пусть вас не смущает рекламная шелуха про любые языки на .NET – фактически язык один C#). Из бытовых примеров правильности такого подхода мы видим Английский Язык (до развала СССР ещё Русский Язык). Когда люди ДУМАЮТ на одном языке – количество переходит в качество. Снижаются накладные расходы на переводчиков, издание книг об одном и том же на разных языках, люди более коммуникабельны и т.д. Microsoft жестко и даже с потерей доходов указало фанатам C++, а особенно VB – что их место у параши. "Или учишь C# или остаешься разработчиком второго сорта". В другом же лагере махровым цветом цветут С-сектанты и куча мелких языковых народностей.
2) Mono - проект кукушонок или для желающих троянский конь. Как некогда на заседание антимонопольного суда представитель Microsoft пришел с дистрибутивом Linux, так и Mono является такой же обманкой кросс-платформенности .NET. Рассмотрим живой пример: менеджер нового проекта решает, на чем вести разработку: Linux+Mono+Delphi.Net или Microsoft Windows+.NET+C#. Linux+Mono+Delphi.Net прекрасны, функциональны и открыты, но они вторичны. Менеджеру не нужны будущие потенциальные проблемы несовместимости с новыми версиями .NET. Никто не знает Microsoft лучше Microsoft. Если вы считаете, что пример надуман – вспомните odbc, ole db, ado, ado.net или VB vs Delphi. Всем людям с нормальной психикой было ясно, что Delphi в разы превосходит убогий чудовищный VB, тем не менее, сформирован огромный лагерь умственно отсталых VB разработчиков, которые даже любят это убожество.
Вывод: в качестве решения вижу создание крепкой дружной коалиции, в лице коммерческих организаций (Google, Sun, IBM, Oracle) и open source разработчиков (Linux, Apache, Open Office, Mozilla) выступающих единым фронтом, с единым мнением и комплексными интегрированными решениями: Linux+Java+Web.

2. Оптимизация быстродействия и требования к ресурсам.
Эта тема чрезвычайно интересна тем, что мнения по ней сугубо полярны.
Java разработчики: "программы на Java работают ничуть не медленнее, чем программы на C++/Delphi, а зачастую даже быстрее. Требования к ресурсам у них минимальны".
Пользователи Java разработок: "все безумно тормозит и жрет уйму ресурсов".
Небольшой поиск в Internet приносит материалы (охотно поверю, что рекламные) о том, что .NET приложения быстрее, чем приложения на Java.
Мне кажется, что сообществу Java/Sun/IBM следует привлечь хороших специалистов двух типов:
a) по оптимизации кода, менеджерам памяти и т.д.
b) по маркетингу и PR ;-)
Вывод: всегда есть, что улучшить! Вот горячий пример этого года: fastmm.sf.net – менеджер памяти для Delphi/BCB ускоряющий работу программ в РАЗЫ.

3. Интерфейс пользователя.
Больной вопрос, поскольку Java выросла из UNIX мира, где интерфейсы рисуют студенты второкурсники с гипертрофированной манией величия и отсутствием вкуса. Сейчас ситуация улучшается и desktop приложения на Java уже выглядят как плохенькие Windows приложения, но нельзя на этом останавливаться. Без завоевания Desktop все остальные победы временные. Любимый пример Java-разработчиков в таких случаях Borland JBuilder. Безусловно, отличная IDE! Недостижимый для большинства Java-разработчиков идеал, но начинающий разработчик на Delphi сделает такую IDE (без функционала, конечно :-) за несколько часов.
Вывод: поскольку Windows занимает доминирующие позиции на Desktop, и пользователи избалованы стильным дизайном от Microsoft – красивый стильный GUI для Java приложения должен стать не достижением, а нормой (видно что разработчики OpenOffice это поняли и результат не замедлил сказаться).

4. Кросс-платформенность в ширь и в глубь.
"В ширь" - означает большее количество платформ доступных по умолчанию.
Наиболее кричащий пример Pocket PC. Если для коммуникаторов на борту идет какая-то х.з J2ME, то для остальных ситуация просто удручающая. Нужно срочно исправлять положение: для мощных КПК разработать стандартную J2SE, для слабых/мобильных стандартную J2ME.

"В глубь" легче пояснить шуткой про Амфибию, которая плохая лодка и плохой автомобиль. Кросс-платформенность не должна означать, что на всех платформах программа работает одинаково плохо ;-)
На вскидку два примера:
1) "как запустить это чертово Java приложение". Я скачал и установил у себя свежий JRE, но ни .class файлы, ни .jar файлы не запускаются по клику. От запуска программ строкой в Command Line вида "java -ClassPath . bla.bla.bla" надо уходить, на дворе не 1980 год! (да, да, да! JBuilder запускается по клику – возьмите с полки пирожок).

2) Java daemon под Windows (NT service). Я не нашел простого быстрого способа запустить приложение на Java как сервис. Имеется в виду не только "запуск", но и получение и обработка событий suspend, resume, stop, а также работа с EventLog.
Это совершенно нормальные требования и если отмахиваться от них, то Java так и останется чем-то далеким и пугающим.
Вывод: расти в ширь и в глубь, не слушать крики "а нас все устраивает, у нас связка Oracle+Tomcat+IE" т.е. основательно идти на PDA и Desktop.

PS: Если кто-то говорит Java, .NET какая разница – мы на всем пишем. Знайте перед вами типичная "амфибия" ;-)
Настоящий профессионализм подразумевает многолетнюю практику, когда человек думает на языке и в терминах используемой библиотеки классов.
Любой Job-сайт показывает, что на должность простого кодера требуют 2 года опыта, архитектора до 5 и выше.

2006-07-28

Русский мисосуп

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

2006-07-10

О как! Open XML Translator

[06.07.06]
Microsoft спонсирует разработку открытого конвертера из MS Office Open XML в OpenDocument

Корпорация Microsoft объявила о создании проекта Open XML Translator, целью которого является разработка инструментов для преобразования документов из форматов Microsoft Office Open XML в OpenDocument (ODF). Как сообщается в пресс-релизе, это является реакцией на требования некоторых госструктур, которые выразили желание обмениваться документами с респондентами, использующими ODF. Конечные продукт будет доступен в виде подключаемого модуля для различных версий Microsoft Office, более того — транслятор будет открытым проектом (лицензия BSD) с хостингом на Sourceforge: http://sourceforge.net/projects/odf-converter. Финальную версию планируется выпустить к концу года.

Подробности здесь.

Ссылки по теме:
http://www.linuxcenter.ru/news/2006/07/06/6369.phtml
http://openoffice.ru/
http://www.openoffice.org/
http://i-rs.ru/

2006-07-04

No mabila, no cry!

Ехал в поезде с Герой Моралесом
http://jahdivision.ru/
http://jahdivision.rinet.ru/foto.htm
Дядька чумовой! Внешне - натурально негр с ямайки. Я был усталый, даже не сфоткался с ним ;-(
Играет рэгги, живет рэгги.
CD все раздарил на «Груше», поэтому мне не досталось.
До того он мне фотошоп Артемия Лебедева с улетающей SIMкой напомнил,
что я тоже под коньячок в тему ввернул "no mabila, no cry!" и в целом жег.
Под разговор выпили коньяку, потом жигулевского пива, потом в Сызрани купили икры жереха и ещё пива, потом я отказывался от Гиннеса, потом отрубился ;-)
Вообщем хороший человек, приятная поездка, да и жизнь зачастую хорошая штука!

PS:
Травы не было ;-)

2006-06-30

Google Earth реклама. Спешите! Время действия предложения ограничено! ;-)

Есть известный и популярный, но не прекращающий набирать обороты сервис от Google:

Google Earth
http://maps.google.com/ - через браузер
http://earth.google.com/ - через спец. программу (удобнее и быстрее)


У них, наконец, дошли руки и до России за МКАД.
В частности Самара уже оцифрована с высокой точностью - видны машины и даже люди (по тени).
Оцифрован Оренбург и даже Стерлитамак(!). Саратов оцифрован частично, а вот Уфы и Тольятти ещё нет.

Идея 1:
Ещё есть время воспользоваться уникальным шансом - раскрасить крыши нескольких домов так, чтобы из космоса это выглядело как логотип Вашей компании.
Очень вероятно, что фото-спутник пройдет над Уфой в ближайшее время.
В следующий раз спутник пройдет не ранее чем через 1-2 года (по материалам Internet).
Все это время реклама будет на карте, хотя фактически её может уже и не быть.
Её потенциально и практически бесплатно могут увидеть все жители Вашего города!

Идея 2:
У Google есть сопутствующий проект:
http://sketchup.google.com/
Создание 3D моделей окружающей нас действительности.
Можно создать 3D модели офисов продаж / магазинов Вашей компании во всех городах их присутствия.
Возможно каких-то ещё достопримечательностей городов (ex: Ладья, Ракета, Салават Юлаев) с надписью "Sponsored by …".
Пока карты не замусорены зданиями - это будет здорово смотреться.

Рекомендую увидеть замечательную презентацию как быстро и просто это сделать (можно смотреть и без знания английского):
http://download.sketchup.com/downloads/training/tutorials50/The_Story/The_Story.html

2006-06-26

Google Trends

Недавно компания Google запустила очередной интересный сервис:
Google Trends (тенденции)
http://www.google.com/trends
который позволяет изучить в разрезе регионов, языков, городов и времени - запросы пользователей по некой тематике.
Изучить корреляцию нескольких запросов между собой и их корреляцию с мировыми новостями по соответствующей тематике.

К сожалению, в запросах не указываются точные даты, количества запросов, погрешность и объем обработанных данных – предполагаю, что это будет в дальнейшем реализовано в виде платного сервиса (к вопросу о том, как бесплатный Google зарабатывает такие большие деньги).
Также слабо представлен сегмент "русских" запросов и новостей.
Тем не менее, сервис будет полезен маркетологам и менеджерам уже сейчас.
Очень рекомендую "попробовать" сервис, т.к. в данном случае действительно лучше один раз увидеть.

Буквально несколько примеров.

* Заходим на http://www.google.com/trends
Вводим i-mode, Opera Mini
Получаем результат:
http://www.google.com/trends?q=i-mode%2C+Opera+Mini&ctab=0&geo=all&date=all

Из которого видно, что i-mode непрерывно терял популярность с начала сбора статистики Google (2003 год), а популярность Opera Mini непрерывно растет,
и уже значительно превзошла i-mode.
К сожалению, на графике нет точных дат, но я предполагаю, что два всплеска совпадают с датами выхода OperaMini 1 и 2 соответственно.

* Вводим: wap
http://www.google.com/trends?q=wap&ctab=1&geo=all&date=all
Видно, что интерес к WAP непрерывно падает. Видно как мировые новости касающиеся технологии WAP вызывают вспышки интереса.

* Вводим: IpTV
http://www.google.com/trends?q=iptv&ctab=2&geo=all&date=all
Видим колоссальный рост интереса. Вкладка «по регионам» позволяет определить где настал бум IpTV: Корея, Тайланд

* Вводим: wimax,wi-fi
http://www.google.com/trends?q=wimax%2Cwi-fi&ctab=1&geo=all&date=all
Wi-Fi до сих пор популярнее WiMAX, но интерес стабилизировался.
Рост интереса к WiMAX тоже снизился.
А вот в России интерес интерес к Wi-Fi существенно превышает интерес к WiMAX.

Интересные результаты дали:
sms, wap, mms

Очень показательно:
ATM, VoIP
SDH, MPLS
Прощай старый мир! ;-)

PS:
Ну и, конечно, всякие забавные измерения тоже становятся возможными:
измерение популярности брендов, полов, имен, курортов и т.д. ;-)