<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Программирование для мобильных устройств &#187; Database</title>
	<atom:link href="http://mobile-developer.ru/category/database/feed/" rel="self" type="application/rss+xml" />
	<link>http://mobile-developer.ru</link>
	<description>Программирование для мобильных устройств. Разработка для Windows Mobile, Windows CE, Embedded Linux, Google Android, iPhone, Palm webOS и др. Все о программировании для мобильных телефонов, смартфонов, КПК и других мобильных устройств. Статьи, новости, руководства, видео уроки.</description>
	<lastBuildDate>Sun, 05 Sep 2010 20:40:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Доступ к базам данных MySQL из приложений для Palm WebOS</title>
		<link>http://mobile-developer.ru/database/dostup-k-bazam-dannyx-mysql-iz-prilozhenij-dlya-palm-webos/</link>
		<comments>http://mobile-developer.ru/database/dostup-k-bazam-dannyx-mysql-iz-prilozhenij-dlya-palm-webos/#comments</comments>
		<pubDate>Fri, 25 Sep 2009 07:00:49 +0000</pubDate>
		<dc:creator>T-Rex</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[webOS]]></category>
		<category><![CDATA[Palm]]></category>

		<guid isPermaLink="false">http://mobile-developer.ru/?p=934</guid>
		<description><![CDATA[Доступ к базам данных &#8211; очень востребованный функционал приложений. И в этот раз мы рассмотрим способ для WebOS приложений получить данные из базы данных MySQL, находящейся на удаленном сервере. Для начала создадим новое приложение и в нем новую сцену с названием Main. Как создать проект и сцену можно узнать из этой статьи. Затем добавим в [...]<p>Post from: <a href="http://mobile-developer.ru">Mobile-Developer.ru</a><br/><br/><a href="http://mobile-developer.ru/database/dostup-k-bazam-dannyx-mysql-iz-prilozhenij-dlya-palm-webos/">Доступ к базам данных MySQL из приложений для Palm WebOS</a></p>
]]></description>
			<content:encoded><![CDATA[<a class="google_buzz"  
href="http://www.google.com/reader/link?url=http://mobile-developer.ru/database/dostup-k-bazam-dannyx-mysql-iz-prilozhenij-dlya-palm-webos/&title=Доступ+к+базам+данных+MySQL+из+приложений+для+Palm+WebOS&srcURL=http://mobile-developer.ru" target="_blank" rel="nofollow"><img
src="http://mobile-developer.ru/wp-content/plugins/google-buzz-button-for-wordpress/images/google-buzz.png" alt="Google Buzz" /></a><p>Доступ к базам данных &#8211; очень востребованный функционал приложений. И в этот раз мы рассмотрим способ для WebOS приложений получить данные из базы данных MySQL, находящейся на удаленном сервере.</p>
<p>Для начала создадим новое приложение и в нем новую сцену с названием <em><strong>Main</strong></em>. Как создать проект и сцену можно узнать из <a href="http://mobile-developer.ru/webos/obzor-instrumentov-vxodyashhix-v-sostav-webos-sdk/" title="Обзор инструментов, входящий в состав Palm Mojo SDK"  target="_blank">этой статьи</a>.<br />
<span id="more-934"></span><br />
Затем добавим в созданную сцену список:</p>
<p><em><strong>views/main/main-scene.html</strong></em></p>
<pre class="brush: xml;">
&lt;div class=&quot;palm-group&quot;&gt;
  &lt;div class=&quot;palm-group-title&quot; id=&quot;sample-toggle&quot;&gt;
  	&lt;span x-mojo-loc=&quot;&quot;&gt;Database Content&lt;/span&gt;&lt;/div&gt;
    &lt;div class=&quot;palm-list&quot;&gt;
       &lt;div id=&quot;dbList&quot; x-mojo-element='List'&gt;&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;
</pre>
<p>Для нашего списка нам необходимо определить HTML-шаблон элементов списка:<br />
<em><strong>views/main/dbItemTemplate.html</strong></em></p>
<pre class="brush: xml;">
&lt;div class=&quot;palm-row&quot; x-mojo-tap-highlight=&quot;momentary&quot;&gt;
  &lt;div id=&quot;nameField&quot;&gt;#{Name} (#{Year})&lt;/div&gt;
&lt;/div&gt;
</pre>
<p>В шаблоне указано, что если в элементе списка есть свойства <em><strong>Name</strong></em> и <em><strong>Year</strong></em>, то они должны быть отображены.</p>
<p>Теперь в <em><strong>assistants/main-assistant.js</strong></em> внесем необходимые изменения для того, чтобы виджет-список создался при запуске:</p>
<pre class="brush: jscript;">
function MainAssistant() {
}

MainAssistant.prototype.setup = function() {
this.count = 0;
this.dbListModel = {};
this.controller.setupWidget(&quot;dbList&quot;,
        {
            itemTemplate: &quot;main/dbItemTemplate&quot;
        },
        this.dbListModel);
}
</pre>
<p>Как видно из кода, в атрибутах виджета мы указываем шаблон элементов <em><strong>main/dbItemTemplate</strong></em>. Название должно совпадать с названием ранее созданного HTML-файла с описанием шаблона элементов.</p>
<p>После всех манипуляций, описанных выше, у нас должно получиться что-то подобное:</p>
<p><a href="http://mobile-developer.ru/wp-content/uploads/2009/09/webos-empty-list.jpg" ><img class="alignnone size-full wp-image-935" title="WebOS Empty List" src="http://mobile-developer.ru/wp-content/uploads/2009/09/webos-empty-list.jpg" alt="WebOS Empty List" width="321" height="479" /></a></p>
<p>Отлично, с GUI мы закончили, теперь займемся получением данных с сервера.</p>
<p>Для начала создадим базу данных и в ней таблицу, из которой мы будем получать записи и отображать их на форме:</p>
<pre class="brush: sql;">
CREATE TABLE remote_data(
 ID INTEGER NOT NULL AUTO_INCREMENT ,
 Name VARCHAR( 32 ) NOT NULL ,
 Year SMALLINT NOT NULL ,
 PRIMARY KEY ( ID )
);
</pre>
<p>Затем создадим PHP-скрипт, который будет получать данные из таблицы и выдавать их в формате JSON:</p>
<pre class="brush: php;">
&lt;?php
header('Content-type: application/json');
$dbhost = &quot;localhost&quot;;
$dbuser = &quot;root&quot;;
$dbpass = &quot;&quot;;
$dbname = &quot;webos_test&quot;;
$link = mysql_connect($dbhost, $dbuser, $dbpass)
    or die('Could not connect: ' . mysql_error());
mysql_select_db($dbname) or die('Could not select database');

switch($_POST['operation'])
{
 case 'getResults':
 {
  $table = $_POST['table'];
  $query = sprintf(&quot;SELECT * FROM %s&quot;, mysql_real_escape_string($table));
  $result = mysql_query($query) or die('Query failed: ' . mysql_error());
  $all_recs = array();
  while ($line = mysql_fetch_array($result, MYSQL_ASSOC))
  {
   $all_recs[] = $line;
  }
  break;
 }
}
echo json_encode($all_recs);
mysql_free_result($result);
mysql_close($link);
?&gt;
</pre>
<p>Что делает этот скрипт:</p>
<ul>
<li> Получает из POST-параметров название операции, непример <em><strong>getResults</strong></em>.</li>
<li> Если операция поддерживается, то получает из POST-параметров имя таблицы</li>
<li> Получает записи из таблицы в массив</li>
<li> Конвертирует в JSON и отдает клиенту</li>
</ul>
<p>В результате у нас в выдаче должно получиться что-то подобное:</p>
<pre class="brush: jscript;">
[
 {&quot;ID&quot;:&quot;1&quot;,&quot;Name&quot;:&quot;Test 1&quot;,&quot;Year&quot;:&quot;2008&quot;},
 {&quot;ID&quot;:&quot;2&quot;,&quot;Name&quot;:&quot;Test 2&quot;,&quot;Year&quot;:&quot;2009&quot;},
 {&quot;ID&quot;:&quot;3&quot;,&quot;Name&quot;:&quot;Test 3&quot;,&quot;Year&quot;:&quot;2010&quot;}
]
</pre>
<p>Теперь нам надо научить наше WebOS приложение получать эти данные с сервера.</p>
<p>Для получения данных в приложении нам необходимо выполнить AJAX-запрос на сервер. Для этого используется метода Ajax.Request():</p>
<pre class="brush: jscript;">
MainAssistant.prototype.getRemoteData = function(table) {
    var url = 'http://192.168.0.1/remote-data.php';
    try
    {
        if(!table)
        {
            throw('getRemoteData(): You should specify database table name');
        }
        var request = new Ajax.Request(url,
        	{
            	method: 'post',
            	parameters: {'operation': 'getResults', 'table': table},
            	evalJSON: 'true',
            	onSuccess: this.getRemoteDataSuccess.bind(this),
            	onFailure: function()
            	{
                	Mojo.Log.error('Failed to get Ajax response');
            	}
        	});
    }
    catch(e)
    {
        Mojo.log.error(e);
    }
}
</pre>
<p>В исходном коде указан IP адрес машины в локальной сети. Если вы тестируете приложение на эмуляторе, а сервер со скриптом и базой данных находится в Internet, то, скорее всего, доступа к серверу у вас по умолчанию не будет. Для того, чтобы разрешить эмулятору ходить в сеть, надо в настройках LAN-соединения разрешить доступ из подсети VirtualBox:<br />
<a href="http://mobile-developer.ru/wp-content/uploads/2009/09/webos-share-internet-with-emulator.png" ><img class="alignnone size-full wp-image-938" title="Share Internet with WebOS Emulator" src="http://mobile-developer.ru/wp-content/uploads/2009/09/webos-share-internet-with-emulator.png" alt="Share Internet with WebOS Emulator" width="602" height="450" /></a></p>
<p>Итак, в приведенном выше коде указано, что при успешном завершении запроса необходимо вызвать метод <em><strong>getRemoteDataSuccess()</strong></em>. В этом методе мы должны преобразовать полученный ответ от сервера в массив и обновить список. Делается это следующим образом:</p>
<pre class="brush: jscript;">
MainAssistant.prototype.getRemoteDataSuccess = function(response) {

 	try
 	{
 		this.dbListModel.items = response.responseText.evalJSON();
 		this.controller.modelChanged(this.dbListModel);
 	}
 	catch(e)
 	{
 		Mojo.log.error(e);
 	}
}
</pre>
<p>Для преобразования JSON-строки в массив мы использовали метод <em><strong>evalJSON()</strong></em>, а для того чтобы виджет обновил список элементов мы вызвали метод <em><strong>modelChanged()</strong></em> объекта-контроллера.</p>
<p>Все это чудесно, научили приложение делать запрос к серверу и обрабатывать результаты, но если мы запустим приложение, то ничего не произойдет. А все потому что мы не указали, когда должен вызываться метод <em><strong>getRemoteData()</strong></em>.</p>
<p>Вызвать этот метод можно при запуске приложения. У класса сцены есть метод, который отрабатывает, когда сцена загружена. Это метод <em><strong>ready()</strong></em>. Вот в нем мы и запустим выполнение AJAX-запроса:</p>
<pre class="brush: jscript;">
MainAssistant.prototype.ready = function() {
this.getRemoteData('remote_data');
}
</pre>
<p>И вот, после запуска увидим такое:</p>
<p><a href="http://mobile-developer.ru/wp-content/uploads/2009/09/webos-list-from-database.jpg" ><img class="alignnone size-full wp-image-939" title="WebOS List Loaded from MySQL Database" src="http://mobile-developer.ru/wp-content/uploads/2009/09/webos-list-from-database.jpg" alt="WebOS List Loaded from MySQL Database" width="320" height="480" /></a></p>
<p>На этом все.</p>
<p><a href="http://mobile-developer.ru/wp-content/uploads/2009/09/webos-dbtest.zip" title="Скачать исходник: Работаем с базой данных MySQL в Palm WebOS"  target="_blank">Скачать исходный код демонстрационного приложения</a>.</p>
<p>Post from: <a href="http://mobile-developer.ru" >Mobile-Developer.ru</a><br/><br/><a href="http://mobile-developer.ru/database/dostup-k-bazam-dannyx-mysql-iz-prilozhenij-dlya-palm-webos/" >Доступ к базам данных MySQL из приложений для Palm WebOS</a></p>
]]></content:encoded>
			<wfw:commentRss>http://mobile-developer.ru/database/dostup-k-bazam-dannyx-mysql-iz-prilozhenij-dlya-palm-webos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Настраиваем средства разработки для Windows Mobile (C++/wxWinCE) в Linux</title>
		<link>http://mobile-developer.ru/wxwince/nastraivaem-sredstva-razrabotki-dlya-windows-mobile-cwxwince-v-linux/</link>
		<comments>http://mobile-developer.ru/wxwince/nastraivaem-sredstva-razrabotki-dlya-windows-mobile-cwxwince-v-linux/#comments</comments>
		<pubDate>Tue, 25 Nov 2008 21:52:58 +0000</pubDate>
		<dc:creator>T-Rex</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[wxWinCE]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Windows CE]]></category>
		<category><![CDATA[Windows Mobile]]></category>
		<category><![CDATA[wxWidgets]]></category>

		<guid isPermaLink="false">http://mobile-developer.ru/?p=279</guid>
		<description><![CDATA[Благодаря стараниям Станислава Блинова у нас появилась возможность разрабатывать ПО для Windows Mobile в Linux, используя компилятор cegcc и библиотеку wxWidgets. О том как настроить средства разработки для Windows Mobile под Linux рассказано в ниже следующей статье: Захотелось мне тут выяснить, насколько &#8220;умерла&#8221; бесплатная разработка софта под WinCE. Великий Гугель вывел меня на штуку под [...]<p>Post from: <a href="http://mobile-developer.ru">Mobile-Developer.ru</a><br/><br/><a href="http://mobile-developer.ru/wxwince/nastraivaem-sredstva-razrabotki-dlya-windows-mobile-cwxwince-v-linux/">Настраиваем средства разработки для Windows Mobile (C++/wxWinCE) в Linux</a></p>
]]></description>
			<content:encoded><![CDATA[<a class="google_buzz"  
href="http://www.google.com/reader/link?url=http://mobile-developer.ru/wxwince/nastraivaem-sredstva-razrabotki-dlya-windows-mobile-cwxwince-v-linux/&title=Настраиваем+средства+разработки+для+Windows+Mobile+(C++/wxWinCE)+в+Linux&srcURL=http://mobile-developer.ru" target="_blank" rel="nofollow"><img
src="http://mobile-developer.ru/wp-content/plugins/google-buzz-button-for-wordpress/images/google-buzz.png" alt="Google Buzz" /></a><p>Благодаря стараниям <strong>Станислава Блинова</strong> у нас появилась возможность разрабатывать ПО для <strong>Windows Mobile</strong> в <strong>Linux</strong>, используя компилятор <strong><noindex><a rel="nofollow" href="http://mobile-developer.ru/goto/http://cegcc.sourceforge.net/" title="Компилятор CEGCC"  target="_blank">cegcc</a></noindex></strong> и библиотеку <strong><noindex><a rel="nofollow" href="http://mobile-developer.ru/goto/http://wxwidgets.org" title="wxWidgets"  target="_blank">wxWidgets</a></noindex></strong>. О том как настроить средства разработки для Windows Mobile под Linux рассказано в ниже следующей статье:</p>
<p>Захотелось мне тут выяснить, насколько &#8220;умерла&#8221; бесплатная разработка софта под WinCE. Великий Гугель вывел меня на штуку под названием <noindex><a rel="nofollow" href="http://mobile-developer.ru/goto/http://cegcc.sourceforge.net/" title="CEGCC"  target="_blank">cegcc</a></noindex> &#8211; кросс-компилятор, позволяющий собирать WinCE приложения под Линуксом. После возвращения из осадка, в который я выпал, узрев данный инструмент, я решил его проверить на практике.</p>
<p><span id="more-279"></span>Проверка прошла успешно &#8211; приложения действительно собираются и работают. Правда, местами приходится кое-что править&#8230; И тогда захотелось экзотики, а именно &#8211; собрать с помощью cegcc библиотеку wxWinCE &#8211; порт wxWidgets для WinCE. Сделать это оказалось, мягко говоря, непросто, но все же реально.</p>
<p>В процессе поиска информации по данному вопросу я наткнулся на вот этот пост: <noindex><a rel="nofollow" href="http://mobile-developer.ru/goto/http://article.gmane.org/gmane.comp.gnu.cegcc.devel/827"  target="_blank">http://article.gmane.org/gmane.comp.gnu.cegcc.devel/827</a></noindex>. Erik van Pienbroek подкинул отличную шпаргалку. Его патчи действительно встали на ревизию 49149 и после небольшой доработки напильником она собралась. Правда, работала она, мягко говоря, плохо. Рисовала окна как попало, меню размещала вверху окна, само окно, кстати, зачем-то ополовинивала, ну и т.д. Но это уже было что-то.<br />
Потом я умудрился адаптировать (напильник был большой) эти патчи к релизу 2.8.9, т.е. так же собрать сам релиз и получить такую же библиотеку с весьма странным поведеением. И уже только потом стал разбираться, что же не так. Оказалось все достаточно просто &#8211; всего лишь правильно указать версию и тип системы&#8230; Ну да хватит, как говорится, от слов &#8211; к делу!</p>
<p>Далее я опишу способ, как собрать wxWinCE-2.8.9 для PocketPC. Для начала определимся с исходными данными. Система, на которой все это производилось &#8211; Debian Lenny:</p>
<p>Linux 2.6.26-1-686 #1 SMP Thu Oct 9 15:18:09 UTC 2008 i686 GNU/Linux</p>
<p>Перечень вещей, которые понадобятся:</p>
<ul>
<li>bison, yacc</li>
<li>mingw32ce</li>
<li>Bakefile</li>
<li>wxWidgets-2.8.9</li>
<li>Патч для wxWidgets</li>
<li>Файл autogen.mk</li>
</ul>
<p>Итак, приступим&#8230;<br />
Марлезонский балет, часть первая. Установка mingw32-ce.</p>
<p>В принципе, данный процесс достаточно хорошо документирован здесь. Но раз уж мы за это беремся, несколько слов скажу.</p>
<ul>
<li>Если у вас вдруг нету, поставьте bison и yacc (для Debian ставятся через apt-get).</li>
<li>Нужно взять с svn текущую версию cegcc:</li>
</ul>
<pre class="brush: cpp;">
$ svn co https://cegcc.svn.sourceforge.net/svnroot/cegcc/trunk/cegcc cegcc
</pre>
<p>Когда скачается, в текущей директории появится директория cegcc.</p>
<pre class="brush: cpp;">
$ cd cegcc/src
$ mkdir build-mingw32ce
</pre>
<p>Собирать в корне исходников скрипт не даст, сам попросит создать директорию.</p>
<pre class="brush: cpp;">
$ cd build-mingw32ce
$ sh ../build-mingw32ce.sh
</pre>
<p>Все, пошла сборка (и установка). По умолчанию компилятор встанет в <code>/opt/mingw32ce</code>. Этот путь можно поменять с помощью опции <code>--prefix</code> к скрипту (например <code>../build-mingw32ce.sh --prefix=/my/super/puper/dir/mgwce</code>)</p>
<p>После установки компилятора добавьте <code>/opt/mingw32ce/bin</code> (соответственно, если вы не меняли префикс) в <code>PATH</code>. На Debian это можно сделать в <code>/etc/profile</code>.</p>
<p>С компилятором все, переходим ко второй части балета.</p>
<h3>Сборка wxWinCE</h3>
<ol>
<li>Нам понадобится Bakefile. Если его нет (или если он древнее, чем 2.3.0) &#8211; взять можно на www.bakefile.org. Эта утилита будет новые Makefile&#8217;ы создавать.</li>
<li>Теперь надо скачать архив wxWidgets-2.8.9 и куда-нибудь его распаковать. Все остальные действия надо производить, находясь в директории wxWidgets-2.8.9. (Здесь и далее на скриншотах зеленым выделены моменты, на которые стоит обратить внимание).</li>
<li><a href="http://mobile-developer.ru/wp-content/uploads/2008/11/wxwidgets-cegcc-1-scr.png" ><img class="alignnone size-full wp-image-287" title="Сборка wxWinCE с помощью cegcc/mingw32ce под Linux - 1" src="http://mobile-developer.ru/wp-content/uploads/2008/11/wxwidgets-cegcc-1-scr.png" alt="" width="500" height="190" /></a>
<pre class="brush: cpp;">tar xzf wxWidgets-2.8.9.tar.gz</pre>
</li>
<li>Прилагаемый файл <a href="http://mobile-developer.ru/wp-content/uploads/2008/11/autogen.mk" title="autogen.mk для сборки wxWinCE с помощью MinGWce под Linux"  target="_blank">autogen.mk</a> помещается в директорию build. Затем можно применить <a href="http://mobile-developer.ru/wp-content/uploads/2008/11/wxwince-patch.zip" title="Патч для сборки wxWinCE-2.8.9 с помощью mingw32ce под Linux"  target="_blank">патч</a>.</li>
<li><a href="http://mobile-developer.ru/wp-content/uploads/2008/11/wxwidgets-cegcc-2-scr.png" ><img class="alignnone size-medium wp-image-288" title="Сборка wxWinCE с помощью cegcc/mingw32ce под Linux - 2" src="http://mobile-developer.ru/wp-content/uploads/2008/11/wxwidgets-cegcc-2-scr-300x248.png" alt="" width="300" height="248" /></a>
<pre class="brush: cpp;">cp /home/capricorn/work/articles/mingw32ce-wxWinCE/autogen.mk build
patch -p0 /home/capricorn/work/articles/mingw32ce-wxWinCE/wxWinCE.patch-2
</pre>
</li>
<li>Немного поправим WinCE SDK, а именно &#8211; файл /opt/mingw32ce/arm-mingw32ce/include/aygshell.h. Нужно добавить в него следующие строки:
<pre class="brush: cpp;">#define COMCTL32_VERSION 0x020e
#define SHA_INPUTDIALOG  0x00000001
#define GN_CONTEXTMENU   1000
#define SHRG_RETURNCMD   0x00000001
</pre>
<p>Эти определения присутствуют в &#8220;родном&#8221; aygshell.h из Windows Mobile 5.0 SDK. При желании можете посмотреть, где точно они располагаются в этом файле, и добавить их в те же места.</li>
<li>Этот шаг необходимо выполнить, если Bakefile у вас не 2.3.0 (здесь я отметил файлы, которые должны быть заменены). Путь <code>/usr/local/share/aclocal</code>, естественно, действителен для Debian. На другой системе может быть другим.<br />
<a href="http://mobile-developer.ru/wp-content/uploads/2008/11/wxwidgets-cegcc-3-scr.png" ><img class="alignnone size-medium wp-image-289" title="Сборка wxWinCE с помощью cegcc/mingw32ce под Linux - " src="http://mobile-developer.ru/wp-content/uploads/2008/11/wxwidgets-cegcc-3-scr-300x88.png" alt="" width="300" height="88" /></a></p>
<pre class="brush: cpp;">
cp /usr/local/share/aclocal/bakefile* build/aclocal
</pre>
</li>
<li>Теперь нужно создать новые билд-скрипты<br />
<a href="http://mobile-developer.ru/wp-content/uploads/2008/11/wxwidgets-cegcc-4-scr.png" ><img class="alignnone size-medium wp-image-290" title="Сборка wxWinCE с помощью cegcc/mingw32ce под Linux - 4" src="http://mobile-developer.ru/wp-content/uploads/2008/11/wxwidgets-cegcc-4-scr-300x180.png" alt="" width="300" height="180" /></a></p>
<pre class="brush: cpp;">
./autogen.sh &amp;&amp; make -f build/autogen.mk
</pre>
<p>Процесс займет некоторое время, в результате должно получиться примерно следующее:<br />
<a href="http://mobile-developer.ru/wp-content/uploads/2008/11/wxwidgets-cegcc-5-scr.png" ><img class="alignnone size-medium wp-image-291" title="Сборка wxWinCE с помощью cegcc/mingw32ce под Linux - 5" src="http://mobile-developer.ru/wp-content/uploads/2008/11/wxwidgets-cegcc-5-scr-300x147.png" alt="" width="300" height="147" /></a></li>
<li>Выполнение этого шага сконфигурирует среду на сборку статической монолитной библиотеки с поддержкой юникода. Опция <code>--prefix</code> нужна, чтобы указать, куда впоследствии будет инсталлироваться wxWinCE. Поскольку <code>mingw32ce</code> у меня лег в <code>/opt</code>, wxWinCE я решил положить рядышком, так что я выбрал <code>--prefix=/opt/wxWinCE-2.8.9</code>:<br />
<a href="http://mobile-developer.ru/wp-content/uploads/2008/11/wxwidgets-cegcc-6-scr.png" ><img class="alignnone size-medium wp-image-292" title="Сборка wxWinCE с помощью cegcc/mingw32ce под Linux - 6" src="http://mobile-developer.ru/wp-content/uploads/2008/11/wxwidgets-cegcc-6-scr-300x48.png" alt="" width="300" height="48" /></a><br />
По завершении конфигурации вы должны получить такую картину:<br />
<a href="http://mobile-developer.ru/wp-content/uploads/2008/11/wxwidgets-cegcc-7-scr.png" ><img class="alignnone size-medium wp-image-293" title="Сборка wxWinCE с помощью cegcc/mingw32ce под Linux - 7" src="http://mobile-developer.ru/wp-content/uploads/2008/11/wxwidgets-cegcc-7-scr-300x236.png" alt="" width="300" height="236" /></a></li>
<li>Теперь остается только выполнить<code> $ make </code>И можно смело идти пить кофе. Когда же, наконец-таки, все будет собрано, останется только проинсталлировать:
<pre class="brush: cpp;">
$ sudo make install
</pre>
<p>Последний шаг нужно выполнять от имени root&#8217;а (если только вы не поставили в <code>--prefix</code> директорию, в которую вам разрешена запись). Так что &#8211; либо <code>sudo</code>, либо <code>su</code>.</p>
<p>Вот и все. Теперь можно смело собирать сэмплы или свои собственные приложения. Для получения флагов компилятора не забывайте использовать &lt;prefix&gt;/bin/wx-config. Примерно таким же образом можно собрать и динамическую, и debug библиотеку (см. <code>configure --help</code>). Вот только чтобы собрать wxWinCE для смартфона надо руками править configure. К сожалению, я не спец по autotools. То, что было необходимо подправить &#8211; догадался, откопал, подсмотрел&#8230; А по-хорошему надо бы дописать строчки в configure.in, чтобы после autogen скрипт configure позволял бы с помощью опций указать версию WinMobile и тип платформы. Но это уже будет, видимо, другая история&#8230;</li>
</ol>
<p>Post from: <a href="http://mobile-developer.ru" >Mobile-Developer.ru</a><br/><br/><a href="http://mobile-developer.ru/wxwince/nastraivaem-sredstva-razrabotki-dlya-windows-mobile-cwxwince-v-linux/" >Настраиваем средства разработки для Windows Mobile (C++/wxWinCE) в Linux</a></p>
]]></content:encoded>
			<wfw:commentRss>http://mobile-developer.ru/wxwince/nastraivaem-sredstva-razrabotki-dlya-windows-mobile-cwxwince-v-linux/feed/</wfw:commentRss>
		<slash:comments>23</slash:comments>
		</item>
		<item>
		<title>Вышел SQL Server Compact Edition 3.5 SP1</title>
		<link>http://mobile-developer.ru/database/vyshel-sql-server-compact-edition-35-sp1/</link>
		<comments>http://mobile-developer.ru/database/vyshel-sql-server-compact-edition-35-sp1/#comments</comments>
		<pubDate>Thu, 07 Aug 2008 11:47:27 +0000</pubDate>
		<dc:creator>T-Rex</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[SQL Server CE]]></category>

		<guid isPermaLink="false">http://mobile-developer.ru/?p=66</guid>
		<description><![CDATA[Сегодня Стив Ласкер (Steve Lasker) в своем блоге анонсировал выпуск SQL Server Compact Edition 3.5 SP1. Появился провайдер SSCE для ADO.NET Entity Framework. Case-sensitive collations Поддержка платформы x64 Ссылки для загрузки: SQL Server Compact 3.5 SP1 for desktop 32bit SQL Server Compact 3.5 SP1 for desktop 64bit SQL Server Compact 3.5 SP1 for Devices SQL [...]<p>Post from: <a href="http://mobile-developer.ru">Mobile-Developer.ru</a><br/><br/><a href="http://mobile-developer.ru/database/vyshel-sql-server-compact-edition-35-sp1/">Вышел SQL Server Compact Edition 3.5 SP1</a></p>
]]></description>
			<content:encoded><![CDATA[<a class="google_buzz"  
href="http://www.google.com/reader/link?url=http://mobile-developer.ru/database/vyshel-sql-server-compact-edition-35-sp1/&title=Вышел+SQL+Server+Compact+Edition+3.5+SP1&srcURL=http://mobile-developer.ru" target="_blank" rel="nofollow"><img
src="http://mobile-developer.ru/wp-content/plugins/google-buzz-button-for-wordpress/images/google-buzz.png" alt="Google Buzz" /></a><p>Сегодня Стив Ласкер (Steve Lasker) в своем блоге <noindex><a rel="nofollow" href="http://mobile-developer.ru/goto/http://blogs.msdn.com/stevelasker/archive/2008/08/07/sql-server-compact-3-5-sp1-released.aspx" >анонсировал</a></noindex> выпуск SQL Server Compact Edition 3.5 SP1.</p>
<ul>
<li>Появился провайдер SSCE для ADO.NET Entity Framework.</li>
<li>Case-sensitive collations</li>
<li>Поддержка платформы x64</li>
</ul>
<p>Ссылки для загрузки:</p>
<ul>
<li><noindex><a rel="nofollow" href="http://mobile-developer.ru/goto/http://blogs.gotdotnet.ru/personal/sergun/ct.ashx?id=d6cdecaf-4d42-4471-85d2-809ade17dc1e&amp;url=http%3a%2f%2fdownload.microsoft.com%2fdownload%2f8%2f4%2f2%2f8423c019-ccb4-4d7d-b7f0-bcf83f1b9218%2fSSCERuntime-ENU-x86.msi" >SQL Server Compact 3.5 SP1 for desktop 32bit</a></noindex></li>
<li><noindex><a rel="nofollow" href="http://mobile-developer.ru/goto/http://blogs.gotdotnet.ru/personal/sergun/ct.ashx?id=d6cdecaf-4d42-4471-85d2-809ade17dc1e&amp;url=http%3a%2f%2fdownload.microsoft.com%2fdownload%2f8%2f4%2f2%2f8423c019-ccb4-4d7d-b7f0-bcf83f1b9218%2fSSCERuntime-ENU-x64.msi" >SQL Server Compact 3.5 SP1 for desktop 64bit</a></noindex></li>
<li><noindex><a rel="nofollow" href="http://mobile-developer.ru/goto/http://blogs.gotdotnet.ru/personal/sergun/ct.ashx?id=d6cdecaf-4d42-4471-85d2-809ade17dc1e&amp;url=http%3a%2f%2fdownload.microsoft.com%2fdownload%2fa%2f4%2f7%2fa4706c96-37a3-4790-8108-79547de64b89%2fSSCEDeviceRuntime-ENU.msi" >SQL Server Compact 3.5 SP1 for Devices</a></noindex></li>
<li><noindex><a rel="nofollow" href="http://mobile-developer.ru/goto/http://blogs.gotdotnet.ru/personal/sergun/ct.ashx?id=d6cdecaf-4d42-4471-85d2-809ade17dc1e&amp;url=http%3a%2f%2fdownload.microsoft.com%2fdownload%2f1%2fb%2f9%2f1b90fc51-9423-428a-ae79-f240c5d5d127%2fSSCEServerTools-ENU-x86.msi" >SQL Server Compact 3.5 SP1 Server Tools (Merge Replication) 32bit</a></noindex></li>
<li><noindex><a rel="nofollow" href="http://mobile-developer.ru/goto/http://blogs.gotdotnet.ru/personal/sergun/ct.ashx?id=d6cdecaf-4d42-4471-85d2-809ade17dc1e&amp;url=http%3a%2f%2fdownload.microsoft.com%2fdownload%2f1%2fb%2f9%2f1b90fc51-9423-428a-ae79-f240c5d5d127%2fSSCEServerTools-ENU-x64.msi" >SQL Server Compact 3.5 SP1 Server Tools (Merge Replication) 64bit</a></noindex></li>
</ul>
<p>Post from: <a href="http://mobile-developer.ru" >Mobile-Developer.ru</a><br/><br/><a href="http://mobile-developer.ru/database/vyshel-sql-server-compact-edition-35-sp1/" >Вышел SQL Server Compact Edition 3.5 SP1</a></p>
]]></content:encoded>
			<wfw:commentRss>http://mobile-developer.ru/database/vyshel-sql-server-compact-edition-35-sp1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Работа с базами данных. Собираем SQLite для Windows Mobile</title>
		<link>http://mobile-developer.ru/database/rabota-s-bazami-dannyh-sobiraem-sqlite-dlya-windows-mobile/</link>
		<comments>http://mobile-developer.ru/database/rabota-s-bazami-dannyh-sobiraem-sqlite-dlya-windows-mobile/#comments</comments>
		<pubDate>Sun, 03 Aug 2008 15:04:58 +0000</pubDate>
		<dc:creator>T-Rex</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[SQLite]]></category>
		<category><![CDATA[Windows Mobile]]></category>
		<category><![CDATA[wxWidgets]]></category>

		<guid isPermaLink="false">http://mobile-developer.ru/?p=24</guid>
		<description><![CDATA[SQLite – это встраиваемый движок баз данных. Слово «встраиваемый» означает, что SQLite не использует парадигму клиент-сервер, то есть движок SQLite не является отдельно работающим процессом, с которым взаимодействует программа, а предоставляет библиотеку, с которой программа компонуется и движок становится составной частью программы. Это значит, что для своей работы SQLite не требует установки. Это, а также [...]<p>Post from: <a href="http://mobile-developer.ru">Mobile-Developer.ru</a><br/><br/><a href="http://mobile-developer.ru/database/rabota-s-bazami-dannyh-sobiraem-sqlite-dlya-windows-mobile/">Работа с базами данных. Собираем SQLite для Windows Mobile</a></p>
]]></description>
			<content:encoded><![CDATA[<a class="google_buzz"  
href="http://www.google.com/reader/link?url=http://mobile-developer.ru/database/rabota-s-bazami-dannyh-sobiraem-sqlite-dlya-windows-mobile/&title=Работа+с+базами+данных.+Собираем+SQLite+для+Windows+Mobile&srcURL=http://mobile-developer.ru" target="_blank" rel="nofollow"><img
src="http://mobile-developer.ru/wp-content/plugins/google-buzz-button-for-wordpress/images/google-buzz.png" alt="Google Buzz" /></a><p>SQLite – это встраиваемый движок баз данных. Слово «встраиваемый» означает, что SQLite не использует парадигму клиент-сервер, то есть движок SQLite не является отдельно работающим процессом, с которым взаимодействует программа, а предоставляет библиотеку, с которой программа компонуется и движок становится составной частью программы. Это значит, что для своей работы SQLite не требует установки. Это, а также довольно простой набор API-функций, делает ее наиболее простым инструментом для разработки приложений, использующих в своей работе базы данных.<br />
<span id="more-24"></span><br />
Чтобы начать работу с SQLite нам необходимо загрузить исходный код библиотеки с официального сайта <noindex><a rel="nofollow" href="http://mobile-developer.ru/goto/http://sqlite.org" >http://sqlite.org</a></noindex>. На официальном сайте SQLite есть возможность загрузить уже собранные бинарные версии библиотеки для Windows, Linux и Mac OS X. Но во-первых, Windows Mobile в списке платформ, для которых SQLite доступна в бинарном виде, отсутствует, а во-вторых, индейцы не ищут легких путей, да и при сборке SQLite со статической линковкой CRT библиотек можно избежать зависимости от Microsoft Visual C++ Runtime не таскать за собой дополнительные файлы.<br />
Для работы лучше использовать версию исходного кода SQLite в виде одного файла. На сайте в разделе загрузок он имеет название sqlite-amalgamation-x_y_z.zip, где x, y, z представляют собой версию библиотеки.<br />
Итак, начнем. Превым делом нам необходимо создать проект статической библиотеки. Для этого в Visual Studio выбираем пункт меню <code>File -> New -> Project</code>, идем в раздел <code>Visual C++ -> Smart Device</code>, выбираем тип проекта <code>Win32 Smart Device Project</code>, указываем имя проекта <code>sqlite3</code>, жмем OK.<br />
<div id="attachment_25" class="wp-caption aligncenter" style="width: 310px"><a href="http://mobile-developer.ru/wp-content/uploads/2008/08/howto_compile_sqlite3_for_wm_1.png" ><img src="http://mobile-developer.ru/wp-content/uploads/2008/08/howto_compile_sqlite3_for_wm_1-300x201.png" alt="Создаем проект SQLite3 для Smart Device в Visual Studio" title="Создать проект SQLite3 для Windows Mobile" width="300" height="201" class="size-medium wp-image-25" /></a><p class="wp-caption-text">Создаем проект SQLite3 для Smart Device в Visual Studio</p></div><br />
После этого на экране появится мастер настройки параметров нового проекта. Идем в раздел <code>Platforms</code> и выбираем платформы для которых мы хотим собрать нашу библиотеку. Рекомендую выбирать все теоретически необходимые платформы, т.к. это намного проще чем потом добавлять их в проект с помощью Configuration Manager.<br />
<div id="attachment_26" class="wp-caption aligncenter" style="width: 310px"><a href="http://mobile-developer.ru/wp-content/uploads/2008/08/howto_compile_sqlite3_for_wm_2.png" ><img src="http://mobile-developer.ru/wp-content/uploads/2008/08/howto_compile_sqlite3_for_wm_2-300x253.png" alt="Выбираем платформы для сборки SQLite для Windows Mobile" title="Выбираем платформы для сборки SQLite для Windows Mobile" width="300" height="253" class="size-medium wp-image-26" /></a><p class="wp-caption-text">Выбираем платформы для сборки SQLite для Windows Mobile</p></div><br />
В разделе <code>Application Settings</code> указываем тип проекта <code>Static Library</code> и убираем маркер  с <code>Precompiled header</code>, жмем Finish.<br />
<div id="attachment_27" class="wp-caption aligncenter" style="width: 310px"><a href="http://mobile-developer.ru/wp-content/uploads/2008/08/howto_compile_sqlite3_for_wm_3.png" ><img src="http://mobile-developer.ru/wp-content/uploads/2008/08/howto_compile_sqlite3_for_wm_3-300x253.png" alt="Выбираем тип проекта для сборки SQLite3" title="Выбираем тип проекта для сборки SQLite3" width="300" height="253" class="size-medium wp-image-27" /></a><p class="wp-caption-text">Выбираем тип проекта для сборки SQLite3</p></div><br />
Теперь у нас есть пустой проект, в который нам нужно добавить исходный код  из дистрибутива SQLite, а именно файлы <code>sqlite3.h</code>, <code>sqlite3.c</code>, <code>sqlite3ext.h</code><br />
После того как исходный код добавлен в проект, в Solution Explorer у нас должно получиться что-то подобное.<br />
<div id="attachment_28" class="wp-caption aligncenter" style="width: 245px"><a href="http://mobile-developer.ru/wp-content/uploads/2008/08/howto_compile_sqlite3_for_wm_4.png" ><img src="http://mobile-developer.ru/wp-content/uploads/2008/08/howto_compile_sqlite3_for_wm_4.png" alt="Вид Solution Explorer после добавления в проект исходного кода SQLite3" title="Вид Solution Explorer после добавления в проект исходного кода SQLite3" width="235" height="260" class="size-medium wp-image-28" /></a><p class="wp-caption-text">Вид Solution Explorer после добавления в проект исходного кода SQLite3</p></div><br />
Это все. Об использовании SQLite я расскажу в своих следующих постах.</p>
<p>Post from: <a href="http://mobile-developer.ru" >Mobile-Developer.ru</a><br/><br/><a href="http://mobile-developer.ru/database/rabota-s-bazami-dannyh-sobiraem-sqlite-dlya-windows-mobile/" >Работа с базами данных. Собираем SQLite для Windows Mobile</a></p>
]]></content:encoded>
			<wfw:commentRss>http://mobile-developer.ru/database/rabota-s-bazami-dannyh-sobiraem-sqlite-dlya-windows-mobile/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
