Архив на категория: Програмиране

Всичко относно програмирането

Back to OS X :-)

Напоследък (последните 3 месеца) отново основната ми платформа е Mac OS X. Този път е на истински Мак – Mac Mini 🙂 никакви Хакинтоши, никакви (особени) проблеми.

Вдигнах му паметта от 2Gb на 8 (задължително е, просто) и като цяло, вече изкарвам почти цял ден без да свърши. За съжаление, понякога се налага – веднъж да пусна Java (Netbeans) и край, забрави за паметта 🙂 Другият хищник е XCode – и той яде памет като луд, но малко по-добре от Java-та.

Като се замисля, особено след последните ми ядове с Linux, а и факта, че за iOS не може да програмираш на друго, освен Mac OS X, мисля че следващият ми лаптоп ще е mac book 🙂 може и Pro, макар че не виждам особена нужда.

Лаптопа почти не го пускам, в момента не мога да го ползвам за работа, а и нещо и Linux, и Windows ме дразнят напоследък 🙂 Да, като започна да програмирам за Android (надявам се скоро), ще влезе в употреба отново.

Та, мисълта ми е – нещо се отплеснах – че истинският Mac няма общо с Hackintosh въобще – проблемите до които стигаш неминуемо на self-made machine ги няма въобще тук. Никакви редактирания на plist-ове, никакви оправяния на права, никакви хакове и буут лоадъри ( всяко от които неща ми се чупеше поне по веднъж всеки месец ), да не говорим че и apply-ваш ъпдейти официално. Нищо общо! 🙂

Java/Android и Regexp

Много е гнусно 🙂 Няма друго такова нещо. За съжаление не откривам и читав туториал. Ползват се някви класове, но нещо не са съвсем като REGEXP класовете на PHP :(.

п.п. леле, колко време не съм писал в тоя блог, въййй!

Възстановяване на база данни в даден момент от времето

Теория за реализиране на „time machine“ за MySQL бази данни

1. Включва се mysql bin log с данните (ако не е пуснат вече)
2. Прави се нов потребител за dump на данни само (тази стъпка не е задължителна)

примерно user dumper, pass AmHzqA9s3f6CsNGb,
privileges: SELECT, LOCK TABLES

3. Дневен бакъп на базата данни на потребителя – пълен, примерна дата
2009-07-20 05:00:00. Трябва да се правят отделни бакъпи на всички бази данни, тоест ако са много се прави списък преди това със show databases или друг подобен метод. Базата данни се заключва за запис за времето на dump (обикновено 1-3 секунди), така че датата е ок да се вземе точно преди старт на dump-а

> mysqldump -u dumper -pAmHzqA9s3f6CsNGb test01 > test01.sql

файла се запазва по един или друг начин някъде. За по-параноичните бази данни може да не е автоматично а да е ръчно, чрез ключа на клиента (същото важи за restore на данните). Възможно е да се прави бакъп еднократно при първия login на потребител с неговата парола или key

4. Възстановяване на базата в точно определен момент.

Желателно е да не се трие директно потребителската база данни и да се импортва там, а да се направи нова с уникално име, и съответно при успешно импортиране, да се преименува.

процедира се по следния начин:

4.1 Изисква се restore на данните от дата 2009-07-21 12:43:00 на база данни test01
4.2 Създава се временна таблица, примерно „3e7705498e“, и се запомня името
4.3 Restore-ва се във временната таблица от съответния дневен бакъп, на тази позиция данните са пълните данни до 2009-07-20 05:00:00
4.4 Проверява се точно в кой mysql-bin лог файл съществува дата 2009-07-20 05:00:00,
примерно mysql-bin.000016, ако има други и те се указват един след друг, по следния начин:

> mysqlbinlog mysql-bin.000016 mysql-bin.000017 -s  –start-datetime „2009-07-20 05:00:00“ –stop-datetime „2009-07-21 12:43:00“ –database test01 -r output.sql

4.5 полученият изход се execute-ва във временната база. При евентуални грешки се връща съобщение за грешка.

4.6 при успешно импортиране, се изтрива потребителската база и временната се преименува на test01. В началото докато всичко се изчисти може да не се трие базата а да се слага префикс TEMP_test01 за debug.

Това е теорията. Сега вече остава всеки да си го имплементира 🙂