воскресенье, 25 марта 2012 г.

Java + Mysql

Драйвер JDBC для mysql качаем отсюда: http://dev.mysql.com/downloads/connector/j/

Далее в проекте в каталоге src создаем каталог lib и туда из архива с драйвером копируем
mysql-connector-java-x.x.xx-bin.jar (либо через импорт)

Затем надо подключить jar в classpath - самая обширная инструкция есть тут http://www.vogella.de/articles/Eclipse/article.html#classpath

В кратце - идем: (проект) Properties -> Java Build Path -> (вкладка) Libraries -> (кнопка) Add JARs, находим наш проект и каталог lib в нем mysql-connector-java-x.x.xx-bin.jar и Ок.

Примеров кода полно в инете, к примеру http://www.vogella.de/articles/MySQLJava/article.html

Из основного:

Class.forName("com.mysql.jdbc.Driver");
connect = DriverManager.getConnection("jdbc:mysql://localhost/?"
+ "user=sqluser&password=sqluserpw");
statement = connect.createStatement();
resultSet = statement.executeQuery("select * from ....");
while (resultSet.next()) {
...
String user = resultSet.getString("myuser");
Date date = resultSet.getDate("datum");
...
}


ну и забыть про try + catch не даст компилятор.

суббота, 24 марта 2012 г.

E-reader Sony PRS-T1

Хорошая читалка. В Америке стоит около 100$.
Внутри андроид.

Руссификация и рут доступны на форуме
http://www.the-ebook.org/forum/viewtopic.php?t=21458

Более современный рут
http://www.the-ebook.org/forum/viewtopic.php?t=22502
сначала ставим Rescue Set 1.0.04.12210 - восстановительный пакет для прошивки версии 1.0.04.12210
http://projects.mobileread.com/reader/users/porkupan/PRST1/flash_packages/restore-set-1.0.04.12210.zip

затем - Абсолютно минимальный root (АМR)
Остальные приложения кидаем на флэшку и устанавливаем
CoolReader3
http://sourceforge.net/projects/crengine/files/CoolReader3

суббота, 17 марта 2012 г.

Android, Eclipse и отсутствие вкладки "Graphical Layout" при редактировании Layout

Eclipse и отсутствие вкладки "Graphical Layout" при редактировании Layout. Из доступных лишь Design и Source.

Решение - правый клик на файле layout в "Package Explorer" и далее Open With -> Android Layout Editor

четверг, 15 марта 2012 г.

Android и "Not trusted server certificate"

Ситуация - нужно написать приложение дергающее https://..., а там не подписанный сертификат (самоподписанный и т.п.). Причем этот сертификат никому даром не нужен в хранилище. При обычном вызове

URLConnection conn = url.openConnection();

получим исключение с содержимым "Not trusted server certificate"

Простой способ отключить проверку сертификата - добавить перед вызовом что-то вроде этого:


TrustManager[] trustAllCerts = new TrustManager[]{
new X509TrustManager() {
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return null;
}
public void checkClientTrusted(
java.security.cert.X509Certificate[] certs, String authType) {
}
public void checkServerTrusted(
java.security.cert.X509Certificate[] certs, String authType) {
}
}
};

try {
SSLContext sc = SSLContext.getInstance("TLS");
sc.init(null, trustAllCerts, new java.security.SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
} catch (Exception e) {
}

и дальше уже все как обычно:

URL url = new URL("https://www.example.com");
URLConnection conn = url.openConnection();

понедельник, 12 марта 2012 г.

суббота, 10 марта 2012 г.

Debian и Chrome

Как установить:

репозиторий Google - в файл /etc/apt/source.list добавим строку:
deb http://dl.google.com/linux/chrome/deb/ stable main

ключ:
$ wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -

sudo apt-get update

aptitude install google-chrome-stable

Запись cd/dvd в Debian

Что-то Debian начинает немного утомлять форками. Искал привычный cdrecord, а нет его.

В оф.доке написали:
> Debian сделал форк программы cdrecord в etch.
> На системах, основанных на Debian,
> вместо cdrecord попробуйте wodim.

Запись образа
wodim dev=/dev/sr0 _ваш_образ_.iso

Параметр -dummy симуляция всех процессов записи, т.е. все будет реально выполняться, но лазер будет выключен.

Параметры APN МТС Беларусь

Типовые настройки

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

Название профиля/Profile name: mts
Канал данных/Data bearer: GPRS
Точка доступа/APN: mts
Имя пользователя/User name: mts
Пароль/Password: mts

пятница, 9 марта 2012 г.

Eclipse и hotkey

Ctrl + I -- расстановка отступов

Ctrl + F12 -- изменение ориентации экрана в эмуляторе

Ctrl + 7 или Ctrl + Shift + C или Ctrl + / -- комментирование выделенных строк кода

Ctrl + Shift + L -- показывает список горячих клавиш и при этом не снимает фокуса с основного окна

Tab, Shift + Tab -- отступ кода, добавляет/забирает символ табуляции в выделенном или текущей строчке кода

Ctrl + F -- поиск по файлу
Ctrl + K -- находит следующее вхождение поискового запроса без открытия окна поиска

Shift + Enter -- перенос каретки на следующую строку без разрывания текущей

Ctrl + L -- переход к строке по номеру

Ctrl + J -- дополняющий поиск - показывает результаты по мере набора текста (нажали и начали набирать текст)

Ctrl + Shift + F -- форматирование кода

Ctrl + M -- разворачивает до максимального в пределах окна или сворачивает текущий вид

Ctrl + N -- открывает менеджер создания нового файла

Ctrl + F8 -- переключение между разными перспективами Eclipse

Ctrl + F6 -- переключение между уже открытыми редакторами

Ctrl + F7 -- переключение между видами в среде, повторное нажатие переключает назад

Ctrl + Page Up/Page Down -- переключение между соседними открытыми редакторами в Eclipse

Ctrl + D -- удаление строки на которой находится курсор или удаление строк с выделенным текстом

Alt + стрелки Вверх/Вниз -- перемещение строки или выделенного фрагмента

Alt + стрелки Влево/Вправо -- переключение между последними редактируемыми областями

Android, программирование и памятка

** В Activity метод setTitle - меняет заголовок - тот, что в string app_name прописан.

** Поличить значение ресурса можно через метод getResources(), так название приложения можно получить getResources().getString(R.string.app_name). Возвращает String.

** Проверить поле ввода myEditText на "пустоту":
if (TextUtils.isEmpty(myEditTextNum1.getText().toString()) {}

** Задание числового типа для элементов android:inputType="numberDecimal"
android:digits="0123456789.," явное задание набора цифр и разделителей.

** Быстрый онлайн-конвертер иконок http://android-ui-utils.googlecode.com/hg/asset-studio/dist/index.html

** Логи - вкладка LogCat в Eclipse. Отображение в меню Window -> "Show View" -> Other -> Android -> LogCat

** ПУстой LogCat. Нет захвата логов. Идем в Windows -> Open Perspective -> Others -> DDMS
слева в вкладке device находим 'emulator' и нажимаем на нем. В логах должны появится записи. Затем переключаемся на "перспективу" java

** Просмотр файлов в эмуляторе - в Eclipse меню Window -> Show View -> Other -> Android -> File Explorer. Данные приложения находятся в /data/data/_ваш_package_

** Хранение данных - метод getSharedPreferences("myPref", MODE_PRIVATE) - позволяет явно задать имя файла для хранения данных

** База SQLite. Необходимо использовать в качестве идентификатора поле "_id" ибо в доках по Cursor-адаптерам: "The Cursor must include a column named "_id" or this class will not work.". т.е. необходимо, чтобы таблица содержала поле _id, иначе адаптер не будет работать.

** Цвет заданный в xml метод .setTextColor(getResources().getColor(R.color.green));

** Работа с Map - к примеру переменная mapData
Вариант 1
Set<String> keys = mapData.keySet();
for (String key: keys) {
String value = (String) mapData.get(key);
}

Вариант 2
for (Map.Entry<String, Object> entry: mapData.entrySet()) {
String key = entry.getKey();
String value = (String) entry.getValue();
}

**
**
**
**
**
**

Android, adb и "???????????? no permissions"

Если утилита adb на запрос adb devices выдала "???????????? no permissions", необходимо правильно настроить права при создании.

Смотрим lsusb на предмет Вашего андроида, в моем случае это был:

Bus 002 Device 006: ID 12d1:1038 Huawei Technologies Co., Ltd.

Добавляем файлик /etc/udev/rules.d/51-android.rules со следующим содержанием (со своими значениями ID и пользователя).


SUBSYSTEMS=="usb", ATTRS{idVendor}=="12d1", ATTRS{idProduct} =="1038",
MODE="0666", OWNER="_пользователь_"


Затем /etc/init.d/udev reload. Переподключаем смарт.

и снова смотрим вывод adb devices

устройство должно опознаться и вывести что-то вроде:

4CA94Dxxxxx device

Еще бывает уже при настроенной udev "отказ", тогда помогает

sudo ./adb kill-server
sudo ./adb start-server
sudo ./adb devices

среда, 7 марта 2012 г.

Eclipse, Android, эмулятор (AVD) и "засыпание" на Launching xxx (27%)

Проблема при очередном вызове Run для тестирования приложения в эмуляторе Android.
Процесс останавливается на "Launching _имя_приложения_: (27%)"

Как один из методов обхода этого досадного бага - запуск AVD эмулятора ДО вызова Run.

т.е. последовательность действий такая

1. Стартуем Eclipse
2. Идем в меню Window -> AVD Manager
3. Выбираем наш эмулятор и жмем Start
4. Run - запускаем проект

воскресенье, 4 марта 2012 г.

Pencil и ошибка "Could not find compatible GRE between version 1.9 and 1.9.2.*"

Есть интересный инструмент для рисования интерфейсов и прототипов
Pencil - http://pencil.evolus.vn/en-US/Home.aspx

Но при запуске прилагаемой программой pencil получаем ошибку вида:

Could not find compatible GRE between version 1.9 and 1.9.2.*.

при этом xulrunner разумеется установлен

Что бы это исправить, создаем исполняемый скрипт pencil.sh

#!/bin/sh
PROGDIR=`dirname $0`
xulrunner-1.9.1 $PROGDIR/application.ini


в вашей системе версия 1.9.1 может быть другая

Android и Eclipse, настройка эмулятора.

Настройка Android Emulator.

А именно - Android Virtual Device (AVD)

1. В Eclipse, выбираем Window -> AVD Manager.
2. Клик на New
3. Name = что понравится, к примеру: my_avd
Target = выбираем установленный SDK.
Можно заполнить и остальные поля, но для начала хватит.
4. Клик на Create AVD.