Friday, October 16, 2015

SQL commands for Android sqlite

SQL commands for Android sqlite


ifnull(X,Y)The ifnull() function returns a copy of its first non-NULL argument, or NULL if both arguments are NULL. Ifnull() must have exactly 2 arguments. The ifnull() function is equivalent to coalesce() with two arguments.

and etc.

Monday, September 28, 2015

Install google services on AVD

http://inthecheesefactory.com/blog/how-to-install-google-services-on-genymotion/en

Saturday, September 12, 2015

If geny doesn't start under Ubuntu

If you use Linux, make sure that the dkms package is installed and that it compiles VirtualBox kernel modules each time a new kernel update is available. To do so, run 
sudo /etc/init.d/vboxdrv status
You should get the message VirtualBox kernel modules (vboxdrv, vboxnetflt, vboxnetadp, vboxpci) are loaded
If not, force VirtualBox kernel modules compilation by running
sudo /etc/init.d/vboxdrv setup 
Make also sure that you are part of the "vboxusers" group. If not, run 
sudo usermod -a -G vboxusers <login>

https://www.genymotion.com/#!/support?chapter=vbox#faq

Thursday, September 3, 2015

Выполнение AsyncTask - onPostExecute не выполняется

Интересный случай.
AsyncTask запускается внутри View.
Фоновая работа проходит успешно, но метод onPostExecute или выполняется через неприлично долгое время или вообще не выполняется.
Решение - создавать и запускать AsyncTask в методе post объекта android.os.Handler, полученного в Application.
Вынести создание таска в активити.

upd. RxJava

Thursday, July 23, 2015

Swipe menu for RecyclerView

https://github.com/baoyongzhang/SwipeMenuListView


Derby db start under Ubuntu

Start JavaDB (Derby DB) under Ubuntu
  
add into file /usr/lib/jvm/java-8-oracle/jre/lib/security/java.policy following string

permission java.net.SocketPermission "localhost:1527", "listen";

To perform execute this:
alxr@alxr-dell:~$ sudo gedit /usr/lib/jvm/java-8-oracle/jre/lib/security/java.policy 

Pathes could vary
To make sure run sysinfo:
Start server from point where you have right to write.
For example you can create folder for database in home folder (for me it's /home/alxr):

Now you can run:

Leave this window alone. Server works, any further movements you should do in other  windows.



Thursday, July 16, 2015

Ormlite single quote issue solution

Correct way to implement com.j256.ormlite.stmt.Where<T, ID>:

you should use com.j256.ormlite.stmt.SelectArg object instead of using Object
SelectArg arg = new SelectArg();
titleArg.setValue(value);
Where<T, ID> where = where.eq(fieldName, arg);

Using this way you will avoid this issue http://stackoverflow.com/questions/26254896/android-ormlite-selectarg i.e. if  String value contains single quote.


Wednesday, June 17, 2015

org.apache.http.client.methods.HttpGet deprecated!


HttpGet , HttpPost (and so on) are deprecated now (since API 22).
What should I use instead?
Big daddy suggests to use HttpURLConnection but it doesn't support PATCH.
I feel little bit frustrated.

upd. colleague suggests OkHTTP

Tuesday, June 9, 2015

WiFi and Android device

Sometimes shit happens.
You use your own wifi on Android device. And one day it stops to work.
Bad news - wifi router could be hacked.
Good news - you can install special programm into your Android device to continue using wifi via your router.
Here is link to google play https://play.google.com/store/apps/details?id=com.dnset
Here is APK (sometimes you cannot use googleplay) download from my google drive

Сравнение двух способов получения объекта.

Используем ORMLite
Возникло желание сравнить скорость получения объекта по
1) generated id
2) по произвольному полю

Что быстрее, имеет ли смысл передавать ссылку на объект в базе данных в виде индекса в БД.

Делаю 1000 повторений одного запроса.

Далее пример и результаты
1)
A. Запрос первого объекта в БД, т.н. index=1;
Start 15:06:43.710
Stop 15:06:47.716
4.006 sec.
B. Запрос того же объекта по полю int id.
Start 15:06:47.717
Stop 15:06:51.694
3.977
Почти одинаковое время выполнения запроса - 4 сек.

2) Запрос десятого объекта в БД.
A. Запрос по db index;
Start 15:23:35.322
Stop 15:23:40.250
4.928
B. Запрос того же объекта по полю int id.
Start 15:23:40.250
Stop 15:23:45.379
5.129
Выбор по БД index прошел чуть быстрее

3) Запрос двадцатого объекта в БД.
A. Запрос по db index;
Start 15:30:09.632
Stop 15:30:13.740
4.108
B. Запрос того же объекта по полю int id.
Start 15:30:13.740
Stop 15:30:17.746
4.006
Почти одинаковое время выполнения запроса - 4 сек.

4) Запрос тридцатого объекта в БД.
A. Запрос по db index;
Start 15:34:14.441
Stop 15:34:19.567
5,126
B. Запрос того же объекта по полю int id.
Start 15:34:19.567
Stop 15:34:24.559
4.992
Почти одинаковое время выполнения запроса - 5 сек.

ОК, усложним выбор объекта - будем выполнять по полю String.

5) Запрос тридцатого объекта в БД.
A. Запрос по db index;
Start 15:40:04.385
Stop 15:40:09.246
4,861
B. Запрос того же объекта по полю String .
Start 15:40:09.246
Stop 15:40:14.072
4.826

Картина не поменялась.
Можно предположить, что ORMLite извлекает объект используя тот-же механизм.

Вывод: использование индекса объекта в локальной базе данных не дает преимущества по сравнению с использованием "родных" объекту полей.

ORMLITE: использована библиотека версии 4.42.