Pages

Monday, June 29, 2009

Часы-телефон



Я уже видел такие часы-телефон в продаже на Сингапуре. Стоили щт 170 до 250 сингапурских долларов. Это вполне работоспособный телефон, даже в камерой. Удивил размер - обычные часы бывают большего размера. Экран и кнопки, конечно, малы. О водостойкости таких часов тоже говорить не приходится.



Friday, June 26, 2009

Navigator для iPhone (AT&T, TeleNav)



Еще одна навигационная программа для iPhone. На этот раз от TeleNav. Но присутствие AT&T делает ее очень конкурентно способоной. Стандартный набор функций, но выглядит хорошо, что и не удивительно на таком устройстве.



Вот это да! GPS Навигация в Корее. EASYCAR

Ого-го. Остается только пешеходов на тротуарах в режиме реального времени показывать.

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

EASYCAR UT 7100 в Корее стоит меньше 300$. Есть две конфигурации - с 4 и с 8 GB.

Убили флэшку

Первые Pocket PC (наладонник? карманный компьютер?) использовали CompactFlash как внешнюю память. А на всякие SD-card мы еще и фыркали - мол, медленней, ... чего-то еще.
Сейчас эти флэшки только в фотоаппаратах и встретишь.
А тут изобрели адаптер. И все. Кто ж теперь будет экзотические флэшки в магазинах искать и большие деньги за них платить. Называется такая штука MicroSDHC to CF convertor (CR-7100). Выпустили вещь с таким жутким названием в PhotoFast.

HTC Firestone: камера 8 мегапиксел



Уж сколько слухов всяких в интернете ходит. Говорят, что это HTC Firestone (наверное, это какое-то рабочее название проэкта) с 8 мегапиксельной камерой. Такой телефон называют убийцей фотоаппаратов-мыльниц.
Кроме того, на этом телефоне будет установлена Windows Mobile 6.5.

HTC себя хорошо чувствует несмотря на кризис, на очень сильную конкуренцию со стороны Apple, Google, RIM, а теперь еще и Palm Pre.

Джейсон Mакензи (Jason Mackenzie, vice president for HTC America) в интервью Рейтерс (Reuters) сообщил, что в США еще и прирост на 50% (плюс 6 миллионов телефонов) ожидается в 2009 году. Глобально, во всем мире, продажи HTC должны вырасти на 20%.
HTC первыми выпустили смартфон на базе Android в прошлом году. Видимо по-этому они "на коне" сейчас. Они активно работают и с Microsoft. И прирост этого года планируется именно благодаря телефонам с Microsoft.

Как всегда странные маркетинговые исследования (от какого-то Gartner - наверное все кроме меня знают, кто это такие), утверждают, что HTC занимают 4 место в глобальном мировом рейтинге смартфонов после Nokia, Research in Motion и Apple, у них, приблизительно, 4.5 процента.
Ладно Nokia, может китайцы с индийцами накупили смартфонов от Nokia (нонсенс), но кто же BlackBerry (RIM) покупал? Это и в США, и в Канаде выходит уже из моды. Разве что Барак Обама, как известный поклонник BlackBerry, всем своим нынешним сотрудникам такие же телефоны купил.

Palm App Catalog: только 30 апликаций и 1 миллион скачиваний

Palm рапортует: прошло только 19 дней со дня выпуска в продажу телефона Palm Pre, а уже 150,000 владельцев и 1 миллион скачиваний программ с каталога. Програм-то там всего только 30 (все безплатные) - SDK для разработчиков вышел относительно недавно.


Android, Native Develoment Kit, HTC Hero



Вот так выглядит HTC Hero. Гораздо привлекательнee, чем уже привычный Android.
Sense UI - так HTC назвали эту GUI оболочку. Очент похоже на TouchFLO.
Как то и не верилось, что JAVA-программисты могут сотворить что-то такое. И правильно не верилось - уже есть анонс о Native Development Kit для разработчиков на С/С++:

Android 1.5 NDK


Wednesday, June 24, 2009

Самая маленькая апликация для Windows Mobile

Самая маленькая апликация для Windows Mobile выглядит так:

#define WINVER _WIN32_WCE

#include <windows.h>

HINSTANCE g_hInstance = NULL;

int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPWSTR lpCmdLine,
int nCmdShow)

{
UNREFERENCED_PARAMETER(hPrevInstance);
UNREFERENCED_PARAMETER(lpCmdLine);
UNREFERENCED_PARAMETER(nCmdShow);

// store the hInstance in global
g_hInstance = hInstance;

return 0;
}

Если в Visual Studio создать новый проэкт – File->New->Project:



Выбрать Smart Device как тип проэкта, выбрать темплате Win32 Smart Device Project, указать имя проэкта – как показано на рисунке:


Выбрать платформу из списка инсталлированных SDK:



На следующей странице выбрать пустой проэкт (Empty project):


Потом добавить cpp-file:


Скопировать в этот файл текст программы:

И апликация готова.
В настройках проэкта, на странице Deployment можна задать эмулятор:

Теперь нужно откомпилировать и запустить – можно просто нажать F5.
Эта программа скомпилированная для Pocket PC 2003 SDK будет «бежать» на всех девайсах начиная Windows CE 4.21, Pocket PC 2003, Windows CE 5.0, 6.0, Windows Mobile 5.0, 6.0, 6.1, 6.5, и, наверное, дальше.

Эта программа ничего видимого для пользователя не делает. Чтобы убедиться, что она работает нужно добавить, например, какой-то logger/trace и вызвать его:
#define WINVER _WIN32_WCE

#include <windows.h>
#include "Tracer.h"

HINSTANCE g_hInstance = NULL;

int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPWSTR lpCmdLine,
int nCmdShow)

{
UNREFERENCED_PARAMETER(hPrevInstance);
UNREFERENCED_PARAMETER(lpCmdLine);
UNREFERENCED_PARAMETER(nCmdShow);

// store the hInstance in global
g_hInstance = hInstance;
Tracer(L"Starting instance 0x%08x", g_hInstance);

return 0;
}

Saturday, June 13, 2009

Корпоративные телефоны

ZDNet UK опубликовало результаты исследования смартфонов сотрудниками корпораций с особым вниманием на iPhone:

Secrets of the enterprise smartphone

Отчет показывает, что в UK предпочтение отдается Windows Mobile и HTC, и, в основном из-за имэйл:







Я бы сказал, что до сих пор я не видел таких цифр. Тот же ZDNet поклоняется BlackBerry как корпоративному телефону. Это, по-моему мнению, отражало мнения явного большинства руководителей корпораций, манеджеров и специалистов.

Ситуация изменилась с выходом iPhone, с появлением новых моделей HTC. iPhone, безусловно шикарная игрушка, новый iPhone 3GS просто заглядение



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

Friday, June 12, 2009

Адресное пространство Windows CE 3.0 - 5.0, Windows Mobile 5.0, 6.0, 6.1

Windows CE - это 32-битная операционная система. Максимальное 32-битное число определяет максимально допустимый адрес – это 4GB. Адресное пространсво между 2GB и 4GB зарезервировано для самой системы.



Адрессное пространство между 0 и 1GB + 32MB разделено на 33 различных секции. Такие секции называют «слотом процесса». Самый нижний слот обозначают 0, а самый верхний имеет номер 32. Слот 0 используется для активного процесса.

Каждый процесс на Windows CE получает свои 32MB адресного пространства, которое используется для загрузки DLL файлов, стеков, кучи и других операций по выделению памяти.

В нулевом 32 мегабайтовом блоке памяти, начиная с адреса 0x02000000, располагаются специальные DLL файлы – так называемых eXecute In Place (XIP) – выполнить на месте, без предварительной загрузки в память. Эти DLL файлы являются частью ROM (ROM-based DLL).

Если процесс загружает какие-то другие DLL, то они грузятся вслед за системными (ROM-based) DLL – если представлять 32MB процеса так, что больший адрес находится сверху, то системные DLL будут в самом верху, а потом расположаться остальные DLL загруженные процессом.

Дальше, ниже DLL, следует свободное пространство, которое занимает куча памяти процеса (или кучи), затем идет стек (или стеки). В самом низу 32MB находится EXE – исполняемый модуль. Его адрес – это 0x00010000 – 64KB. Ниже этих 64KB – пространство зарезервированое системой.

Относительное сложные приложения, в процесе работы, выделяя и освобождая память, «перемешивают» области памяти и порядок, когда стек следует куче памяти, нарушается. «Смешивание» затрагивает и область с DLL.

Система, когда увеличивает размер кучи памяти, вызывает VirtualAlloc с первым параметром равным NULL. Windows CE может взять недостающую память и из области загрузки ROM DLL файлов - только тех, которые на момент сборки системы заданы как загружаемые и выгружаемые.

Когда система создает поток (thread), то для создания стека для потока, также вызывается функция VirtualAlloc и, также, память может выделяться и из области системных DLL.

Слот 0 – активный процес – это «клон» текущего процеса – если приложение из слота 12 активно, то 12 слот клонируется в слот 0.
Если какой-то процесс загружает DLL, то адресс загрузки должен быть свободен для всех процесов системы.

Tuesday, June 9, 2009

Навигация для iPhone


Сегодня на блогах появился анонс о навигационной апликации для iPhone OS 3.0. Говорят о полном Car Kit, видео ролик замечательный YouTube.

Thursday, June 4, 2009

Destinator 9


Intrinsyc Software Inc объявила о выпуске новой версии своей навигационной системы Destinator 9:
http://www.intrinsyc.com/
Если отбросить громкие слова об установлении новых стандартов в навигации, то останется сказать, что программа приобрела абсолютно новый вид, понимает gestures (меню и списки двигаются вслед за движением пальца как на iPhone), тащит картинки вашего местоположения с Google, ищет на Google кафе, рестораны, кинотеатры, вообщем, точки по интересам. По дороге ведет как и положено вести - тут уж от карты зависит. А карты новые - 2009 год выпуска.

MS Studio & Run-Time Libraries

Hе часто меняются настройки проэктов в Microsoft Visual Studio и, видимо, невозможно каждый раз помнить все детали настроек и их назначение. Я все время "прокалываюсь" на С Run-Time Library в секции Language->Code Generation. В Visual Studio 2005 и Windows XP/Vista ситуация стала еще прикольней - добавил DLL в проэкт, собрал все вместе, проверил - все работает и нет проблем. Проблемы начались, когда программа не запустилась в QA. И вся проблема оказалась именно в Run-Time Library - Microsoft, вложили особый философский смысл в это понятия.
Вот короткое описание как задавать Run-Time Library и чем они отличаются друг от друга:
1. Multi-Threaded (/MT) - это статическая версия C Run-Time Library. Используется и в многопоточных программах. Если она прилинковывается к проекту, то запускаемый файл становится больше - это библиотека становится его частью. Но программу собранную таким способом можно распространят без забот о Microsoft redistributable package.
2. Multi-Threaded Debug (/MTd)- тоже самое, но для отладки программы - выделенная память заволняется предопределенным значением - 0хСС - какая разница.
3. Multi-Threaded DLL (/MD)- это динамическая связь с Run-Time Library, на компьютере пользователя должен быть установлен Redistributable package (msvcrt80.dll for VC2005). Иначе программа просто не побежит, а система будет показывать невразументельные сообщения о неправильной инсталяции программы и предлагать переинсталировать.
4. Multi-Threaded Debug DLL (/MDd)- тоже самое для отладки.

Моя проблема была в Multi-Threaded DLL. Для Visual Studio 2005 SP1 просто подложить недостающие DLL (msvcrt80.dll и что-то еще) недостаточно - нужно инсталировать этот Redistributable package. Не очень атрактивно для комерческой/профессиональной работы - опять таки противоречит EULA видимо. Если спросить: "A за каким вы разработчики Microsoft такую бяку сделали?", они ответят, что такой дезайн позволяет динамически обновлять C Run-Time Library и программа обновляется вместе с ней.

Вспомнил я об этих Run-Time приколах, изменил настройки проэкта на Multi-Threaded. Почему-то даже работает. Хоть и не должно.

Дело в том, что если задано Multi-Threaded, то C Run-Time library (CRT), статически линкуется к DLL-файлам и, если у меня 2 DLL, то я имею и 2 копии CRT. Каждая из них имеет свою кучу (Heap), и контролирует ее независимо. То есть оперировать с памятью совсем не просто - память выделенная в DLL не может быть освобождена в EXE и попытка сделать это разрушает кучу и вызавает крэш программы.

Лучше не сталкиваться с такими проблемамим, а если уж произошло, нужно менять malloc на VirtualAlloc. Я думаю, проще не допускать случае, когда память выделяется в одном модуле, а освобождается в другом.

Вот эти подробности: http://msdn.microsoft.com/en-us/library/abx4dbyh(VS.80).aspx