Author Archive

Перенос файлов базы данных 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. Даже, если на новом компьютере у вас будут аналогичные удаленные пользователь с таким же паролями, советую обновить кэши паролей для всех пользователей в таблице отображений.

Создание урезанной копии базы данных MySQL

Очень часто встречается ситуация, когда нужно иметь копию реальной базы данных на своем компьютере. Например, для тестирования программы на реальных данных, для поиска ошибок или просто иметь более-менее заполненные данными таблицы и т.д. Если в базе хранятся файлы, и они интенсивно добавляются в базу, то размер такой базы может быть очень большим. Чтобы сделать копию такой базы нужно время, свободное место, также затруднительно скачать такую базу удаленно через интернет. Как выход можно сделать урезанную копию - выгружать только таблицы, в которых не храняться файлы. При условии, конечно, что на данные таблиц не ссылаются другие таблицы. Классический резервную копию делают следующей командой:
mysqldump -uroot -p your_database > dump.sql
Где -p - опция позволяет вводить пароль в скрытом виде, your_database - название выгружаемой в дамп базы данных. Также можно после наименования базы данных указать названия таблицы через пробел, которые должны быть выгружены, остальные таблицы не будет выгружены:
mysqldump -uroot -p your_database table1 table2 table3 > dump.sql
В данном случае, из базы данных your_database будут выгружены таблицы (со структурой и данными): table1, table2 и table3. Остальные таблицы не будет выгружены, даже структура. Для начала получим список всех таблиц в базе данных:
SELECT TABLE_NAME FROM information_schema.tables WHERE TABLE_SCHEMA = 'your_database'
Где information_schema.tables - системная таблица, содержащая информацию о таблицах, your_database - название вашей базы данных Полученные данные имеют вид стобца, нам же нужны список названий с пробелом в качестве разделителя. Для этого выполните следующий запрос:
SELECT TABLE_NAME INTO OUTFILE 'c:\\tables.txt' 
LINES TERMINATED BY ' '
FROM information_schema.tables 
WHERE TABLE_SCHEMA = 'your_database'
Данный запрос позволяет выгрузить данные в файл c:\tables.txt. Из-за экранирования вместо разделителя пути "\" нужно использовать "\\" (Для linux-систем разделителем является слэш "/", который не экранируется, т.е. путь может быть выглядеть следующим образом /tmp/tables.txt. ) Причем, если файл c:\tables.txt уже существует выйдет ошибка "Error: File 'c:\tables.txt' already exists". Нужно удалить этот файл или переименовать название файла для выгрузки и выполнить запрос заново. Строка LINES TERMINATED BY ' ' говорит о том, что разделитель строк теперь пробел. Это позволяет значения из столбца записать в виде строки. Теперь полученный список названий таблиц через пробел можно подставить в запрос:
mysqldump -uroot -p your_database таблицы_через_пробел > dump.sql
Но нам нужны ведь не все таблицы, поэтому вы можете из запроса удалить ненужные таблицы. Теперь о том, как найти таблицы, которые будем игнорировать. Отсеивать будем по размеру и наименованию таблиц. Для начала выведем список таблиц, отсортированный по размеру таблиц, используем всё ту же таблицу information_schema.tables.
SELECT
    table_name,    
    ROUND(data_length/1024/1024,2) AS total_size_mb,
    table_rows
FROM
    information_schema.tables
WHERE
    table_schema='your_database'
ORDER BY total_size_mb desc
Где table_name - название таблицы, total_size_mb - размер таблицы в мегабайтах, table_rows - кол-во записей в таблице Пример выполнения запроса: sizes Я не буду выгружать таблицы, которые занимают более 10 мегабайт и в названии которых присутствует слово "ATTACH". В таблицах ATTACH храняться файлы, поэтому они занимают много места. Следующий запрос позволяет получить список таблиц, которые не будем выгружать.
SELECT
    table_name,    
    ROUND(data_length/1024/1024,2) AS total_size_mb,
    table_rows
FROM
    information_schema.tables
WHERE
    table_schema='your_database' AND ROUND(data_length/1024/1024,2) > 10 AND TABLE_NAME LIKE '%attach%'
ORDER BY total_size_mb desc
Так как, скорее всего, список исключаемых таблиц будет невелик. Можно исключить их вручную, так будет даже нагляднее. Итоговый запрос с учетом исключения ненужных таблиц будет выглядеть следующим образом:
SELECT TABLE_NAME INTO OUTFILE 'c:\\tables.txt' 
LINES TERMINATED BY ' '
FROM information_schema.tables 
WHERE TABLE_SCHEMA = 'your_database' AND TABLE_NAME NOT IN ('ignore_table_1','ignore_table_2','ignore_table_3')
Данный запрос выведет названия таблиц через пробел в файл, но не будет исключенных таблиц: ignore_table_1, ignore_table_2 и ignore_table_3. Остается подставить полученный список таблиц в команду резервного копирования:
mysqldump -uroot -p your_database таблицы_через_пробел > dump.sql
В данным случае, это позволило получить урезанную резервную копию на 7 гигабайт меньше оригинальной. p.s. Есть один минус - при восстановлении резервной копии нужно создать таблицы, которые мы проигнорировали. В моем проекте это не проблема, т.к. используется ORM(Object-relational mapping), который сам восстановит недостающие таблицы. Также будьте внимательны при выполнении запросов в различных sql-клиентах. Например, Squirrel SQL Client по умолчанию выведет в файл первый 100 названий таблиц, поэтому нужно снять флаг Limit rows.

GPS KZ Автобусы

Приложение можно скачать с Google Play: https://play.google.com/store/apps/details?id=kz.naik.bus Приложение показывает текущее положение автобусов в следующих городах: Астана, Костанай, Семей, Талдыкорган, Темиртау, Уральск и Щучинск. При первом запуске приложения будет предложено выбрать город: 01 выбор города Откроется карта выбранного города. Для выбора необходимого маршрута нажмите на кнопке с автобусом: 02 вид главного окна Откроется список маршрутов: 03 выбор маршрута После выбора маршрута, на карте отобразиться линия маршрута и автобусы в виде круга с номером и стрелкой, указывающей направление движения: 04 маршрут и автобусы p.s. По мере появления новых возможностей в приложении статья будет обновляться

Шаблоны для построения интерфейса на Seam Framework 2.2.0 с использоватеним RichFaces 3.3.3

template.xhtml - шаблон, который будут использовать другие страницы





    
    #{interface['system.name']}
    
    
    







Страница, использующая шаблон




    
        
            #{interface['page.name']}
            
            
                
            
        
    


Вывод таблицы




Вывод таблицы постранично

	
		
	
	
		
	
	
		
	
	
		
	
	
		
	
	
		
	






Вывод сообщения о том, что в таблице нет записей

	

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

В самолете перед посадкой вам раздадут иммиграционные карточки, которые вы должны самостоятельно заполнить (желательно взять с собой в салон самолета ручку). Одну карточку я испортил, и мне дали новую, поэтому она сохранилась: Посадочная карта Ниже я приведу пример заполнения карточки:
Текст Перевод Пример
UK Border Agency Пограничное агентство Великобритании -
Landing card Иммиграционная карточка -
Please complete clearly in English and BLOCK CAPITALS Пожалуйста, заполните чисто на английском и ЗАГЛАВНЫМИ ПЕЧАТНЫМИ БУКВАМИ -
Family name Фамилия SERIKOV
First name(s) Имя SERIK
Sex Пол M
M (Male) Мужской -
F (Female) Женский -
Date of birth Дата рождения 31 12 1985
DD MM YYYY ДД ММ ГГГГ -
Town and country of birth Город и страна рождения ALMATY, KAZAKHSTAN
Nationality Национальность KAZAKH
Contact address in the UK (in full) Контактный адрес в Великобритании (полностью) SHAFTES GRAND LONDON HYDE PARK 4*, 78-82 WESTBOURNE TERRACE, PADDINGTON, LONDON, W2 6QA +44(0) 2072624521
Passport no. Номер паспорта N06575855
Place of issue Место выдачи MINISTRY OF JUSTICE
Length of stay in the UK Продолжительность пребывания в Великобритании 8 DAYS
Port of last departure Точка последнего отправления * ALMATY
Arrival flight/train number Номер рейса/поезда прибытия KC 901
Signature Подпись Ваша подпись
If you break UK laws you could face imprisonment and removal Если вы нарушите законы Великобритании вам может грозить тюремное заключение и высылка -
For official use Для служебного пользования -
* Точка последнего отправления - Например, если вы летите из Алматы в Лондон с пересадкой в Москве, то точка последнего отправления - Москва. Если у вас прямой рейс из Алматы в Лондон, то точка последнего отправления Алматы. Оборотную сторону карточки заполнять не нужно, она заполняется иммиграционным офицером. CAM00220
Текст Перевод
For official use Для служебного пользования
Immigration Officer's notes Пометки иммиграционного офицера
Visa/leave to enter expiry date (if applicable) Истечение срока действия визы/разрешения на въезд (если применимо)
Landing conditions and arrival date Условия и дата прибытия
В зале иммиграционного контроля вам нужно будет предъявить заполненную иммиграционную карточку, паспорт и пройти процедуру проверки отпечатков пальцев. Процедура сверки отпечатков происходит путем приложения пальцев к сканеру. В Лондоне очень интересный способ обслуживания очереди. Так как очень много прибывающих, работают несколько офицеров. Также есть человек, который следит за тем, кто из офицеров освободился. Освободившийся офицер поднимает руку - это очень понравилось. Также понравились слова: "Добро пожаловать, сэр", когда мы прошли иммиграционный контроль. Меня в первый раз в жизни назвали сэром 🙂

Два JBoss 4.2.2 на одном сервере

Опишу сначала ситуацию: Два приложения на Seam Framework (два war-ника) нужно было запустить на одном сервере, но т.к. в приложениях многие seam-компоненты, которые были созданы, имели одинаковые имена, был конфликт. Можно, конечно, добиться уникальности названий компонентов, но это нужно переписать кучу кода и в дальнейшем следить за уникальностью названий в обоих приложениях. Я пошел по этому пути, и приложения запускались и работал без ошибок, но при работе с сервисами возникли проблемы, т.к. jboss путался в компонентах. Тогда пришло решение запустить приложения на разных jboss'ах. Запустить два jboss'а на одном сервере относительно просто: нужно добиться того, чтобы jboss'ы не использовали одинаковые порты, а этих портов не мало. И чтобы не путаться в портах, к портам одного их jboss'ов можно добавлять единичку. Это выглядит так: 8009 -> 18009, 1099 -> 11099, 1098 -> 11098 и т.д. Я делал следующим образом: запускал один jboss, после его полной загрузки запускал второй и смотрел какие порты конфликтуют, заменял эти порты, потом еще раз перезапускал второй jboss до тех пор, пока второй jboss стартовал без конфликтов портов. Ниже приведу список файлом и замен портов (конфигурация default):
bin\run.bat 8787 -> 18787
server\default\conf\jboss-service.xml 8083 -> 18083 1099 -> 11099 1098 -> 11098 4444 -> 14444 4445 -> 14445 4446 -> 14446
server\default\deploy\ejb3.deployer\META-INF\jboss-service.xml 3873 -> 13873 (этот порт встречается дважды в файле)
server\default\deploy\jboss-web.deployer\server.xml 8080 -> 8085 (порты через, которые будет работать web) 443 -> 1443 5443 -> 15443 8009 -> 18009
server\default\deploy\jms\uil2-service.xml 8093 -> 18093
Также нужно учесть, что теперь debug первого приложения будет по порту 8787, а второго по порту 18787.

Установка клиента MySQL 5.5 на CentOS 5.5 (RHEL)

Допустим, у вас есть сервер на CentOS 5.5, на котором не установлен клиент MySQL, и вам нужно подключиться или снять бэкап с базы данных MySQL 5.5 на другом сервере, и в добавок ко всему на сервере нет доступа к интернету. Для начала нужно закачать на сервер установочный пакет клиента MySQL: MySQL-client-5.5.29-1.rhel5.x86_64.rpm Затем выполните команду:
sudo rpm -ivh MySQL-client-5.5.29-1.rhel5.x86_64.rpm 
Ключ -i означает установку пакета (install). Флаги v и h не являются обязательными, но нужны для включения вывода информации о ходе процесса установки пакета. Если у вас уже имеется старая версия пакета, вам нужно выполнить другую команду:
sudo rpm -Uvh MySQL-client-5.5.29-1.rhel5.x86_64.rpm 
Ключ -U означает обновление пакета (update). Последную команду можно использовать не только для обновления пакета, но и для установки. Другими словами, при наличии старой версии пакета, он будет обновлен, а при его отсутствии, пакет будет будет установлен. Если процесс установки прошел без ошибок, можно попробовать подключиться к удаленному MySQL:
mysql -h -u -p
host - адрес удаленного сервера user - пользователь password - пароль пользователя

Tax free. Как вернуть VAT (НДС) в Лондоне

VAT (value added tax) - НДС (налог на добавленную стоимость) Tax free - (англ. без сборов) — система возврата суммы налога на добавленную стоимость (НДС). НДС возвращается на покупки, сделанные иностранными гражданами при обратном пересечении границы той страны, в которой они были приобретены. Суммы возврата составляют от 7 до 20 % от суммы покупки, в зависимости от величины НДС в данной стране. В Великобритании минимальная стоимость покупки 30 фунтов(£30), хотя у нас реально было 40 фунтов. Возврат НДС можно сделать только на покупки, сделанные за последние три месяца. За время пребывания мы сделали 4 покупки, каждая из которых более 40 фунтов. Сразу оговорюсь, что я не получил возврат НДС на свои две покупки (об этом ниже). Допустим, вы купили несколько вещей на сумму более 40 фунтов. CAM00216 Из чека видно, что я купил свитер и заплатил за два фото, итого вышло £85.99. По чеку видно, что возврат НДС составляет £14.33. В местах, где я совершал покупки свыше 40 фунтов уверяли, что если в чеке указан VAT, то этого достаточно. Это обман! Помимо обычного чека вам должны дать чек со специального аппарата для Tax free, в этом чеке должен расписаться и поставить печать продавец, и всё это кладется в подобные конверты: Конвер 4Конверт 3 Вернуть НДС можно в аэропорту в день вылета в пунктах Tax Free cash Refund. Если вы не покупали технику, то вернуть НДС можно в обычном пункте, иначе вам нужен пункт, специализирующийся на технике. Вам потребуется заполнить чеки Tax free, которые вам дали в магазине, указав в них свои данные, и лучше это сделать заранее до приезда в аэропорт. В самом пункте у вас потребуются предъявить паспорт и билет чтобы удостовериться, что вы, действительно, улетаете из страны. Могут попросить вас показать ваши покупки, поэтому багаж должен быть с вами. Вам предложат получить деньги сейчас или потом на пластиковую карточку. В первом случае возьмут комиссию, а во втором нет. По двум покупкам, по которым нам вернули НДС, деньги поступили на карточку через 4 месяца. По тем покупкам, по которым не вернули НДС, нам дали следующие разъяснения: в первом случае магазин вообще не оборудован специальным аппаратом для выдачи Tax free, а во втором случаем магазин оборудован, но специальный чек не дали. Это и понятно, так вся прибыль останется у магазина, возвращать вам деньги с покупки не выгодно. Расчет верный: вы не будете возвращаться в магазин перед самым отлетом, когда выясниться, что вас обманули. В принципе, потраченных денег не жалко! Нужен вам возврат НДС или нет, решать только вам.

SQuirrel SQL Client подключание к базе данных SQLite

SQLite — легковесная встраиваемая реляционная база данных Для начала скачаем драйвер SQLite: sqlite-jdbc-3.7.2.jar Найдите папку, в которую установлен SQuirrel. В папку lib поместите файл sqlite-jdbc-3.7.2.jar. Если SQuirrel открыт, то закройте его, а затем снова откройте, и драйвер будет доступен. По умолчанию в SQuirrel настройки подключения к SQLite не установлены. Создать новый драйвер Перейдите во вкладку Drivers и нажмите синий плюсик ("Создать новый драйвер") Добавить драйвер Заполните поля следующим образом: Name: SQLite Example URL: jdbc:sqlite://DRIVE:/dirA/dirB/db.sqlite Class Name: org.sqlite.JDBC Где Class Name указывается пакет и класс, реализующий JDBC-драйвер, а Example URL указывается шаблон строки подключения, который будет показан как подсказка при создании подключения к SQLite. 03 Нажмите OK и драйвер появиться в списке загруженных драйверов. 04 Теперь перейдите во вкладку Aliases, нажмите синий плюсик для добавления нового подключения. 05 Придумайте название, выберите наш созданный драйвер "SQLite" и укажите путь к файлу, в котором хранится база данных SQLite. Также можете указать флаг Auto logon. Нажмите OK. 06 Созданное подключение можно увидеть в списке. Щелкните по нему мышкой два раза для открытия подключения. 07 Здесь мы видим открывшуюся базу. Также будьте внимательны при указании пути к файлу SQLite. Если вы укажете на несуществующий файл, то по указанному пути будет создана пустая база.

Как найти платформу 9 и 3/4 на King’s Cross в Лондоне

Начну с того, что я поттероман. Да, мне очень нравиться это произведение Джоан Роулинг. Началось всё в 2008 году, когда я в первый раз посмотрел первый фильм "Гарри Поттер и философский камень". Фильм очень понравился, и я посмотрел все пять частей, вышедших на тот момент. Невозможно было ждать выхода остальных частей, ужас как хотелось узнать всю историю до конца, И я прочитал все семь книг (хотя последнюю толстую художественную книгу я прочитал в школе). Начинал даже читать в оригинале, но бросил после 40 страниц. В последующие годы посмотрел остальные фильмы в кинотеатре. В январе 2013 года выпал шанс побывать в Лондоне, и не посетить знаменитую платформу 9 и 3/4 я просто не мог. Сразу отмечу, что отыскали платформу мы не сразу. На карте метро нашли станцию "King's Cross" CAM00196 Сбило с толку то, что по фильму герои проходили сквозь колонну, и по началу мы искали платформу в метро, т.к. там подобные колонны. Потом поняли, что нам нужно не метро, а ж/д вокзал, который расположен рядом. Платформа 9 и 3/4 - несуществующая платформа, и мы искали 9-ю и 10-ю платформы. Нашли, даже прошли через турникеты, но ожидаемых колонн там не было. Уже думали спросить у сотрудников вокзала, как при выходе с платформ в стороне увидели толпу, которая собралась у импровизированной платформы. Я был несколько разочарован: платформа 9 и 3/4 была просто стеной с табличкой и тележкой, торчащей наполовину из стены. IMAG0281 Классно, что там был фотограф, у которого был шар Гриффиндора и Слизерина, а также пара очков Гарри Поттера. Сделанные фотографом фотографии можно купить в сувенирном магазине. Там же можно купить гриффиндорские и слизеринские шарфы и свитера, но почему-то не было равенкловских и хапельпафовских. Если вы ярый волшебник, то можете купить волшебную палочку 🙂 shop IMAG0286 Совет: Искать платформу 9 и 3/4 следует на ж/д вокзале King's Cross в правой стороне от входа на платформы 9 и 10. На память остались фотографии и купленный гриффиндоровский свитер :-D.