M.

Mobile Architecture Pocket Guide

Разработчики Patterns & Practices выпустили новую версию документа Mobile Architecture Pocket Guide, который описывает наиболее удачные практики построения архитектуры мобильных приложений на платформе .NET.

PS: Уже начал читать. Хотя в документе довольно много материала, относящегося к прописным истинам и к “само-собой-разумеещееся”, но на самом деле очень удобно, когда все разложено по полочкам.

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

Б.

Бесплатные средства разработки от Microsoft для студентов.


Если вы студент, то теперь получить Visual Studio и начать разрабатывать ПО для Windows Mobile стало проще. Программа для студентов DreamSpark от Microsoft теперь позволяет получить Visual Studio 2008 Professional, Microsoft Expression Blend, Windows Server 2008 и XNA Game Studio совершенно бесплатно всего лишь отправив скан или фотографию студенческого билета через веб-форму.

Н.

Настраиваем средства разработки для Windows Mobile (C++/wxWinCE) в Linux

Благодаря стараниям Станислава Блинова у нас появилась возможность разрабатывать ПО для Windows Mobile в Linux, используя компилятор cegcc и библиотеку wxWidgets. О том как настроить средства разработки для Windows Mobile под Linux рассказано в ниже следующей статье:

Захотелось мне тут выяснить, насколько “умерла” бесплатная разработка софта под WinCE. Великий Гугель вывел меня на штуку под названием cegcc – кросс-компилятор, позволяющий собирать WinCE приложения под Линуксом. После возвращения из осадка, в который я выпал, узрев данный инструмент, я решил его проверить на практике.

Read more

Р.

Работаем с Flickr на .NET Compact Framework

Что-то все больше меня уносит в сторону ПО, работающего со всякими online-сервисами. Вон было недавно о Google Translate и Yahoo! Maps, а сегодня буду рассказывать о том как работать с сервисом хостинга фотографий Flickr на .NET Compact Framework.

Итак, предметом нашего внимания сегодня будет библиотека Flickr.NET, которую можно найти на CodePlex. Flickr.NET – это библиотека с открытым исходным кодом, есть версия для .NET Compact Framework. Вот ее мы и будем использовать.
Read more

Б.

Бесплатные инструменты для трассировки и профилирования мобильных приложений на .NET Compact Framework

Наткнулся тут вот в сети на бесплатный профайлер и трассировщик для .NET-приложений (поддерживается и .NET Compact Framework, что очень радует).

Пользоваться обоими инструментами довольно просто. Трассировщику можно скормить .NET-сборку, после чего можно будет отслеживать вызовы выбранных методов вместе с передаваемыми параметрами и полученными результатами. Профилировщику также можно скормить .NET-сборку, после чего он пересрбирает ее, добавляя свою библиотеку, и модифицированная сборка при запуске будет журналировать все вызовы методов и время работы каждого метода. Если требуется более тонкая настройка, то runtime профилировщика можно добавить в список зависимостей .NET-проекта и пользоваться API вручную. В принципе, по использованию профилировщика есть вполне вменяемая документация.

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

I.

Internet Explorer Mobile 6

В блоге Windows Mobile Team Blog появился анонс Internet Explorer Mobile 6, который уже сейчас можно пощупать, скачав образы Windows Mobile 6.1.4 для Microsoft Device Emulator.

Из новых возможностей отмечены:

  • Более точная отрисовка
  • Улучшения в размещении элементов страницы, в частности улучшения, связанные с переносом текста
  • Улучшена поддержка скриптов и AJAX ( заявлена поддержка Jscript v5.7 из Internet Explorer 8 )
  • Интеграция с поисковиками
  • Улучшена навигация курсором
  • Поддержка жестов (gestures)
  • Несколько уровней увеличения страницы (zoom levels)
  • Простой переход между мобильной и десктопной версией сайтов с помощью изменения User Agent-strings

Загрузить образы Windows Mobile 6.1.4 для Microsoft Device Emulator можно здесь.

О.

О сверхдешевых ноутбуках и о том как не надо делать бизнес – Часть III

И, собственно, вот. Продолжении истории о покупке нетбуков в Китае (первые две части можно почитать здесь и здесь).

Итак, как я получал устройства. После того как я не смог отследить устройства на сайте DHL по предоставленному Tracking ID, пришлось опять отписывать братьям-китайцам и узнавать, как мне решить эту проблему, запросил у них копию документов, полученных в DHL при отправке. Как это ни странно, но сканы документов они прислали. Там, правда, мало чего можно было разглядеть, но реквизиты кое-какие и сам Tracking ID вроде совпадали. К тому же, мне сказали что посылка уже на таможне в Украине и скоро со мной должен связаться представитель DHL. Подождал еще два дня, уже собрался было ехать в офис DHL, но тут мне позвонили… Оказалось что в посылке кроме имени и фамилии еще указано название компании, поэтому посылку прийдется получать на юридическое лицо, но… все это чудесно, но у меня нет аккредитации на таможне и поэтому посылку мне не отдадут (все юр. лица, которые хотят получать что-либо “оттуда”, должны проходить аккредитацию. Я этого не знал ибо за всю историю моих покупок в Интернете посылки еще ни разу не приходили на юр. лицо). Но ладно, это не страшно, пришлось запросить у китайцев уточнение что получатель является частным лицом. Уточнение прислали оперативно, я даже удивился. Буквально за 2 дня все решилось.

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

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

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

Дальше…  СЭС… Вот по-моему в этом учреждении сидят самые бюрократичные бюрократы. Для того чтобы поставить печать нужно предоставить перевод (русский или украинский) инвойса и авианакладной. Без перевода ставить печать отказываются наотрез. Пришлось бежать в DHL и узнавать на счет перевода. Оказалось что т.к. я прохожу контроль без помощи таможенного брокера, то перевод я должен делать сам, но.. для того чтобы предоставить перевод в СЭС нужно чтобы стояла печать организации, которая уполномочена делать переводы документов, например печать какого-нибудь агентства переводов. Но, понятное дело, что бесплатно мне никто ничего делать не будет, а платить еще и за перевод, который я могу сделать и сам, как-то не хотелось. Вернулся обратно в СЭС, предложил им при них перевести оба документа в помощью прграммы-переводчика (я с собой всегда таскаю ноутбук, поэтому такая мысль мне показалась вполне здравой). ОК, согласились. Открыли переводчик, начали переводить. И тут опять незаметно подкрался пушной зверек 🙂 На инвойсе в описи ноутбуки значились как “Laptop”, а на авианакладной – “Lpatop”. Спасибо братьям-китайцам, удружили. Проверяющий СЭС в бешенстве, я в шоке. Объяснений что здесь закралась опечатка никто принимать не хочет. Я уже потерял надежду все решить без похода в агентство переводов (кроме того что там ведь надо оплачивать услуги перевода, сам перевод может затянуться на пару-тройку дней, что неприятно), уже решил было уходить, но тут проверяющий увидел что на обоих документах стоит один и то же Tracking ID и, все же, поставил печать (не знаю, как так получилось, но мне почему-то в качестве объяснения этой ситуации больше нравится фраза “дуракам всегда везет”, хотя, конечно, понятие “везение” в данном случае можно оспорить по мнигим показателям).

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

И вот вчера мне позвонили и сказали что я могу забрать посылку, но сначала надо оплатить таможенный сбор и услуги таможенного брокера. Таможенный сбор составил 1280 гривен (~$256), таможенному брокеру отдал 415 гривен (~$80). Как я узнал в DHL, с недавнего времени все услуги по растаможке у них стали платными, стоимость услуг составляет 10% от стоимости посылки. Раньше, когда я с ними работал, все это делалось бесплатно. Т.е. общая стоимость услуг по растаможке составляла 504 гривны, это ~$100, но так как я проходил СЭС и радиологический контроль самостоятельно, то получилось дешевле.

Итак, считаем общую стоимость: $1052 + 256 + 80 = 1388, делим на 5, получаем $277.6

Многовато, но еще сравнительно неплохо.

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

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

На данный момент себестоимость одного устройства для меня составляет не $277, а $1388 / 4 = 347. Сумма для меня все еще приемлемая, но относительно высокая.

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

Тест-драйв уже провожу, результаты выложу чуть позже.

Выводы:

  • С китайцами работать сложно. Очень. Если нет своего человека в Китае или если нет возможности самому съездить за товаром, то лучше 5 раз подумать, прежде чем решаться на покупку. Если, все же, решились покупать что-то у китайцев, то лучше еще 5 раз подумать, и так пока желание это не пропадет (или не надоест думать).
  • Договор на поставку должен быть обязательно. В договоре надо указать допустимый процент брака, сроки поставки и условия возврата денежных средств.
  • Если возникают какие-либо проблемы или непонятки, то лучше выяснять их ДО отправки товара, а лучше ДО оплаты. Потом решить что-либо почти невозможно.
  • Если партия большая, то, все же, лучше съездить и проконтролировать поставку самостоятельно (или через аудиторов решить этот вопрос).
  • Если покупаете что-то, лучше в реквизитах получателя указывать частное лицо, а не компанию (никаких имен сайтов или чего бы то ни было лишнего). В противном случае процесс растаможки может очень усложниться.
  • Отправку лучше организовывать государственной почтой, а не с помощью курьерских компаний. Имел беседы с представителями DHL, UPS и FedEx, во всех этих компаниях для получения товара необходимо оплачивать таможенный сбор. У EMS этих проблем нет.
  • Если получилось так что необходимо проходить таможенный контроль, то делать это лучше самостоятельно, не прибегая к услугам таможенных брокеров. Это дорого, а при желании все можно сделать самостоятельно, главное не тянуть с этим.
  • Прежде чем проходить контролрующие инстанции нужно, все же, сделать перевод сопроводительных документов. Вполне возможно что перевести можно и самостоятельно, а в бюро переводов просто поставить печать “за печенько”.
  • Вскрытие посылки/бандероли/контейнера должно ОБЯЗАТЕЛЬНО проходить В ВАШЕМ ПРИСУТСТВИИ. В противном случае вы не сможете доказать что товар пришел к вам в нормальном состоянии.
  • При общении с таможенниками крайне желательно иметь документы, подтверждающие заявленную стоимость товара ибо в противном случае прийдется платить таможенный сбор исходя из среднестатистической цены на данный вид товара.

Ну вот, собственно все. От себя хотелось бы сказать что работать честно в нашей стране почти невозможно. Единственный вариант на данный момент делать покупки в Internet – это если доставка будет производиться с помощью EMS. В противном случае без связей в таможенном контроле конечная стоимость покупки может резко возрасти.

Q.

Qt для платформы S60

Совсем недавно в блоге разработчиков Qt появилась информация о том что доступна Technology Preview версия Qt для устройств на платформе S60.

На данный момент доступны модули:

  • QtCore – all the non-Gui classes
  • QtGui – painting and widgets
  • QtNetwork – TCP, HTTP and all that
  • QtTest – unit testing

Анонсирована поддержка устройств S60 3.1 и выше.

Загрузить Qt for S60 можно здесь.

Дополнительную информацию о Qt for S60 можно узнать здесь.

Также на YouTube можно найти видео-ролик с демонстрацией работы Qt на устройствах S60:

П.

Пишем мобильный клиент для Google Translate на C++

В этот раз я хочу рассказать о том как работать с еще одним online-сервисом, а именно с сервисом online-переводов Google Translate.

Для работы с этим сервисом у Google есть свой программный интерфейс, а именно AJAX Language API for Translation And Detection. Именно его мы и будем использовать.

Для того чтобы осуществить online-перевод текста необходимо сделать http-запрос к сервису переводов, доступному по адресу:

http://ajax.googleapis.com/ajax/services/language/translate

Параметры, которые необходимо передать сервису:

  • v=1.0 – версия сервиса
  • q=<sometext> – URL-encoded текст для перевода.
  • langpair=<source_language>%7C<result_language> – пара названий языков: исходного и результирующего

Read more

w.

wxYahooMaps – Библиотека для работы с Yahoo! Maps Image API

Странная вещь получается. А ведь нету нормальных библиотек для С++, работающих с online-сервисами карт. Все популярные сервисы предоставляют API для .NET, а С++, как мне кажется, незаслуженно обделяют своим вниманием.
И вот пару дней назад решил восполнить этот пробел. Выбор пал на сервис Yahoo! Maps, а если быть точным, то Yahoo! Map Image API, которое позволяет получить изображение карты, сформировав определенным образом REST (Representational State Transfer) запрос.
Read more