2011/08/28

Перепрошивка Galaxy Tab на Android 2.3

Samsung уже давно анонсировал обновление Android 2.3 для Galaxy Tab, но официально распространять его в нашей стране не торопится. Мне это надоело и я решил перепрошить свой девайс самостоятельно итальянской версией системы.
Для этого воспользуемся прогой heimdall, которая является кроссплатформенной, в отличие от остальных:
# dpkg -i heimdall_1.3.0_i386.deb
Далее нужно скачать саму прошивку, можно отсюда. После этого распаковываем tar в отдельную папку и добавляем туда файл P1_add_hidden.pit из основного архива. Потом переводим наш планшет в режим перепрошивки, для этого надо выключить его, а потом зажать кнопку включения и кнопку понижения громкости пока не появится значок с гастарбайтером. Подключаем девайс к компу через usb и вводим команду:
$ heimdall flash --repartition --pit P1_add_hidden.pit --cache cache.rfs --dbdata dbdata.rfs --factoryfs factoryfs.rfs --kernel zImage
Всё! Перепрошивка занимает несколько минут, потом устройство само перезагрузится и можно начинать переустанавливать весь софт. =\

2011/08/19

MySQL и Python

Итак, тут я расскажу как быстро развернуть СУБД мускуль и рулить ей из питона. Начнем. Сперва установим нужные пакеты. Мускуль:
# apt-get install mysql-server
В процессе установки спросят пароль для рута, лучше ввести что-нибудь и не забыть! Ставим модуль для питона:
# apt-get install python-mysqldb
Ну вот, после этого было бы неплохо создать базу данных и пользователя к ней. Логинимся под рутом:
$ mysql -u root -p
Создаем базу:
mysql> CREATE DATABASE testdb;
Создаем пользователя с паролем 'test', даем все права и выходим:
mysql> CREATE USER 'user'@'localhost' IDENTIFIED BY 'test';
mysql> USE testdb;
mysql> GRANT ALL ON testdb.* TO 'user'@'localhost';
mysql> quit;
Теперь небольшой пример:
import MySQLdb as mdb

conn = mdb.connect('localhost', 'user', 'test', 'testdb')
cursor = conn.cursor()
cursor.execute("SELECT VERSION()")
data = cursor.fetchone()
print data
cursor.close()
conn.close()
Здесь просто выполняется запрос "SELECT VERSION()" и соотвественно версия субд выводится на экран. Функция fetchone() возвращает одну строку. Если запрос возвращает множество строк, то чтобы их получить можно использовать fetchall(). Но если записей очень много, то это может быть расточительно для памяти. В таком случае нам поможет атрибут rowcount, где содержится количество строк, которое вернул запрос:
cursor.execute("SELECT * FROM table")
numrows = int(cursor.rowcount)
for i in xrange(numrows):
    row = cursor.fetchone()
    print row
Кстати, row представляет из себя кортеж, так что можно с легкостью получить доступ к каждому элементу выборки. Ну а дальнейшие изыскания ограничиваются только вашими знаниями языка SQL!

Python + Excel или создаем отчеты в формате XLS

Создавать экселевские файлы в питоне элементарно! Для этого есть модуль xlwt. Ставим:
# apt-get install python-xlwt
Простейший пример:
import xlwt

# тут важно поставить 'utf-8', если надо писать русские символы и так далее
wbk = xlwt.Workbook('utf-8')
# добавляем лист
sheet = wbk.add_sheet('sheet 1')
# пишем в первую строку и первый столбец
sheet.write(0, 0, 'bla bla')
# сохраняем в файл
wbk.save('test.xls')
Вот и всё! Конечно, функционал модуля этим не ограничивается, все интересующиеся могут ознакомиться с ним на страницах документации.