Monthly Archives: Август 2013

Создание приложения Android и его запуск на эмуляторе

В предыдущей статье было описана настройка Eclipse для разработки под Android. Теперь создадим приложение и запустим его на эмуляторе.

Откройте Eclipse.
В меню выберите File -> New -> Other… или нажмите сочетание клавиш Ctrl + N. Откроется окно выбора мастеров.
Нам нужен мастер Android Application Project. Выберите его и нажмите Next
1

На следующем шаге нужно указать название приложения, название проекта и пакет. Пакет нужно выбрать таким образом, чтобы сделать ваше приложение уникальным.
2
Также нужно выбрать минимально поддерживаемую версию Android, предпочитаемую версию и версию, с помощью которой будет компилироваться приложение. Можно указать тему приложения. Нажмите Next для перехода к следующему шагу.
3
В этом окне можно ничего не менять, просто нажмите Next.

4
В данном окне можно настроить иконку вашего приложения. Но мы ничего настраивать не будем и идем дальше. Next.

5
Выберите Blank Activity и нажмите Next.

6
Здесь можно настроить название Activity и название макета. Закончим работу с мастером нажатием кнопки Finish.


Создание виртуального устройства

Откроем менеджер виртуальных устройств (Android Virtual Device Manager):
device manager

Нажмите кнопку New… для создания нового виртуального устройства:
Android Virtual Device Manager

В окне создания виртуального устройства Android обзовите как-нибудь ваше устройство, причем название должно состоять из латинских букв, цифр и символов: ._-
Create new AVD
Также вам предлагается выбрать экран вашего устройство:
screen device
Выберите необходимую версию Android. Причем, если вы используете Google API (например, Google Map), нужно выбрать соответствующий пункт с поддержкой Google API:
target api
Как видно из картинку у меня установлены API только для 8 и 17 версии.
Также вы можете настроить дополнительные параметры: фронтальную и заднюю камеры, объем оперативной памяти устройства, внутреннюю память, размер SD-карты и другие параметры.
Указав все необходимые параметры, нажмите OK.
Добавленное устройство появиться в списке:
new device
Теперь запустим устройство, выберите его из списка и нажмите кнопку «Start…»:
start device
Появиться окно запроса настроек запуcка, в нем просто нажмите «Launch»:
launch options
Появиться окно эмулятора с кнопками. Дождитесь загрузки Android, это может занять продолжительное время:
android loading
После загрузки:
android desktop

Запуск приложения на эмуляторе

Окно «Android Virtual Device Manager» можно закрыть.

Выберите проект и нажмите кнопку запуска:
run application
При первом запуске будут предложено как запустить приложение, нужно выбрать запустить как Android Application и нажать кнопку OK:
Run As

Приложение запущено!
Вот так выглядит наше приложение в эмуляторе:
application is run

Перенос файлов базы данных DB2 v8.1

Перед нами встала задача перенести базу данных DB2 v8.1 со старого компьютера на новый.

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

Данный способ описывает перенос базы путем копирования файлов базы данных.

1) Нужно установить на новом компьютере DB2 той же версии, что и на старом компьютере

2) Следующий шаг — копирование папок, в которых содержаться файлы базы данных DB2. Для начала просмотрим какие есть табличные пространства, выполним следующий запрос:

list tablespaces

Будет выведена информация о существующих табличных пространств: ID табличного пространства, название табличного пространства и другая информация.


ID табличного пространства = 0
Имя                        = SYSCATSPACE

ID табличного пространства = 1
Имя                        = TEMPSPACE1

ID табличного пространства = 2
Имя                        = USERSPACE1

ID табличного пространства = 3
Имя                        = USERSPACE2

ID табличного пространства = 4
Имя                        = SYSTOOLSPACE

т.е. в данном случае у нас 5 табличных пространств.

Остается определить расположение этих табличных пространств на жестком диске. Для каждого табличного пространства нужно выполнить запрос, указав в качестве параметра ID табличного пространства.

list tablespace containers FOR 0;
list tablespace containers FOR 1;
list tablespace containers FOR 2;
list tablespace containers FOR 3;
list tablespace containers FOR 4;

Будет выведен список контейнеров табличных пространств:


Контейнеры табличных пространств для табличного пространства 0
 Имя = C:\DB2\NODE0000\SQL00008\SQLT0000.0

Контейнеры табличных пространств для табличного пространства 1
 Имя  = C:\DB2\NODE0000\SQL00008\SQLT0001.0

Контейнеры табличных пространств для табличного пространства 2
Имя = C:\DB2\NODE0000\SQL00008\SQLT0002.0

Контейнеры табличных пространств для табличного пространства 3
Имя = C:\project\USER_DB_CONTAINER

Контейнеры табличных пространств для табличного пространства 4
Имя = C:\DB2\NODE0000\SQL00008\SYSTOOLSPACE

Обратите внимание, что кроме стандартного размещения файлов в папке C:\DB2, также используется контейнер C:\project\USER_DB_CONTAINER.
Из этого делается вывод: нужно перенести на новый компьютер папку C:\DB2 и папку C:\project.

3) Скопировав все необходимые папки на новый компьютер, открываем Центр управления DB2.
Находим элемент «Базы данных»:
развернуть список
В контекстном меню этого пункта выберите «Добавить…»
добавить
Откроется окно добавления базы данных:
выбрать бд
Для начала выберите диск, автоматически будут считаны доступные базы данных на этом диске. Выберите свою базу и нажмите «OK». Если у вас несколько баз, то проделайте операцию для каждой базы данных.
Добавленные базы появятся в списке:
список баз данных

4) В случае, если у вас имеются распределенные (федеративные, federated) базы данных, то нужно включить поддержку федеративных баз и настроить user mapping.
Поддержка федеративных баз включается командой:

UPDATE DBM CFG USING FEDERATED YES DEFERRED;

После этого нужно перегрузить DB2. Это можно сделать через значок в трее:
db2 in tray

У DB2 есть особенность: он берёт пользователей из операционной системы. После того, как мы заходим под своей учеткой на компьютер, база будет доступна и она не требует отдельного подключения к базе данных. Но не будут доступны псевдонимы, которые настроены на таблицы из федеративных баз данных.
При попытке обратиться к псевдониму выйдет следующая ошибка.

com.ibm.db.DataException: Ошибка менеджера баз данных. : [IBM][CLI Driver][DB2/NT] 
SQL1101N Не удалось получить доступ к удаленной базе данных  на узле "" 
при указанном ID авторизации и пароле. SQLSTATE=08004

Нужно настроить пользователя и пароль для доступа к федеративной базе, не смотря на то, что базы находятся на одном компьютере и в одном инстансе. Если быть точнее, то нужно настроить отображение пользователя на удаленного пользователя с пароле (user mapping).
Для начала просмотрим существующие отображения пользователей:

SELECT * FROM syscat.useroptions

user_mapping_table
Столбец AUTHID — имя пользователя из операционной системы.
Столбец SERVERNAME — имя федеративной базы
Столбец OPTION храним одну из опций: REMOTE_AUTHID или REMOTE_PASSWORD
Столбец SETTING — значение настройки: для REMOTE_AUTHID — удаленный пользователь, для REMOTE_PASSWORD — кэш от пароля удаленного пользователя.
В нашем случае данные пользователя операционной системы совпадают с данными удаленного пользователя.

Здесь возможно три случая:
a) Просто обновить пароль

ALTER USER MAPPING FOR DB2ADMIN SERVER COMMON OPTIONS 
(SET REMOTE_PASSWORD  'your_password');

б) Обновить учетку удаленного пользователя и пароля

ALTER USER MAPPING FOR DB2ADMIN SERVER COMMON OPTIONS 
(SET REMOTE_AUTHID 'new_remote_user_login', SET REMOTE_PASSWORD 'your_password');

в) Добавление нового(дополнительного) пользователя в таблицу отображений

CREATE USER MAPPING FOR YOUR_USER SERVER COMMON OPTIONS 
(REMOTE_AUTHID 'remote_user', REMOTE_PASSWORD  'remote_password');

На этом перенос баз данных завершен!

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