Monday, December 22, 2014

Install django in virtual environment


# Pre req:

I am using ubuntu 10.10 for this tutorial. Setup environment for python

# Install Django:
   Run below commands to setup django and create my first app

  pip install django

# Create test project 

  django-admin.py startproject testsite

It will create the testsite as project. Each project consist of many sub projects call apps. Lets create a app and call it soapapp, Which will take input soap requests. and will response json. I will write a blog on it latter on.

python manage.py startapp soapapp

Use terminal and write these command
>> ls
  
you will see component if django app like views, models, tests with (py) extensions, ofcourse it is python project

Views.py

So in views. py we will create a view. A simple code that will response ok is attached

import json
from django.http import HttpResponse

def hello(request):
    response_data = {}
    response_data['result'] = '200'
    response_data['message'] = 'ok'
    return HttpResponse(json.dumps(response_data), content_type="application/json")
URLs.py

Lets create urls class, where we will register url for above create view.

from django.conf.urls import patterns, url
from views import *

urlpatterns = patterns('soapapp.views',
   url(r'^hello$', 'hello', name='hello'),
)

Register this url file in main app urls.py
 
so from command line open

/venv_hello/testsite/testsite$ sudo gedit urls.py &
And append this line in url

url(r'^soap/', include('soapapp.urls')),

Run app:

To run this app open email folder, root of the app, as we have testsite. There type command
sudo python manage.py runserver
you can see reponse http://127.0.0.1:8000/soap/hello



You can download sample project from this link.

References 

# http://stackoverflow.com/questions/2428092/creating-a-json-response-using-django-and-python




Setup environment for python

Pre req:

I am using ubuntu 10.10 for this tutorial.

1) Install python

Using below command you can install python, I will install components like pip, virtualenv along with python.

Open terminal and past below code:

sudo apt-get install python-pip python-dev build-essential

# Check version of python
python --version

# Upgrade tools:
sudo pip install --upgrade pip
sudo pip install --upgrade virtualenv 

2) Create a virtual environment and setup project

#Create a folder 

mkdir pywork
cd pywork
mkdir hellopy
cd  hellopy

# Create virtual environment for this project. 
virtualenv venv_hello (you can use any name)
cd venv_hello 

3) Create and execute a file (py)

  Create a file lest say t.py. You can add code like
   def test():
     print("Hello python")
    test();
to execute file use command  in terminal

           python t.py

References:

# http://www.saltycrane.com/blog/2010/02/how-install-pip-ubuntu/
# http://docs.python-guide.org/en/latest/dev/virtualenvs/
# http://stackoverflow.com/questions/1522564/how-do-i-run-a-python-program
# http://docs.python-guide.org/en/latest/dev/virtualenvs/

Monday, December 15, 2014

Setup environment for extension for my SmartWatch 2

In this blog I will demonstrate how to set up environment for development of apps for SW2.
I purchase SW2 because of its benefits written below

 # Now I can set my mobile on silence mod in office. When any call comes SW2 notify me.

# I have 5 inc mobile. Now I dont need to pick up every time I gets any notification. I just use my watch to see if the notification is important for me i.e I wana reply only then I pick phone. It saves time for me ... as I am a busy guy :)

# I can take selfy by adjusting my mobile on some place and with the help of  SW2 I can capture picture.

# There are holes in software of this device, there are great opportunities to build software for it

So let us make this watch more useful


Pre req:

Before start you must have installed android SDKeclipseADT.
Set up you SW 2 (Smart watch 2).

Step 1 Install Sony SDK:

# Open Android sdk manager, Select tools ->  Ad on sites. And select user defined sites.


# Click new button and insert => http://dl.developer.sony.com/wearables/sdks/Sony_Add-on_SDK/Sony-Add-on-SDK.xml in text box. click OK and close.



You can see a package name Sony Add-on SDK under Android 4.2.2 (API 19) and a package  Sony Add-on SDK in packages -> extras. Install this package.



#    Now after installation open File -> Import ->  Existing Android Code Into Workspace -> your android SDK/add-ons\addon-sony_add-on_sdk_3_0-sony-19\samples\SmartExtensions

Import projects in this folder. If you find any dependency issue. Right click each project and go to Properties -> Android -> Android target project and make it 4.4.2. After doing this to all clean and build workspace.



Step 2 Run a project on smartwatch 2:

# Now run a sample project. Lets say HelloActiveLowPowerPreferenceActivity. If your SW2 is connected with phone you can see below app, On Clicking text counters increment .


Reference:

# https://developer.sony.com/develop/wearables/smartwatch-2-apis/get-started/










Tuesday, September 9, 2014

How to create a crone job linux

Hi all,


As you do great stuff  with shall script lile backups , processing etc. Most of you are familiar with cron  jobs in linux. But for all those how dont know I am writing this tutorial.

In linux we have a usefull tool name crontab. We can add our cron jobs in crontab .

- To see running jobs in background use
sudo crontab -l
- To add a job
sudo crontab -e

Lets create a script that while same sate of a server in a text file. Let say we have a tomcat server ruining on linux system. And we want to nominator its state in hourly basis

A) Create s script:

1) Create minitor_tomcat.sh  at some location lets say home/<user folder>/
2) Add permission : sudo chmod +x  minitor_tomcat.sh 
3) Open file in gedit
4) Add code
status="$(sudo /etc/init.d/tomcat7 status)"
cdate="$(date)"
echo "$cdate : Tomcat status $status" >> /home/<user folder>/logs.txt;
B) Create a job:

1) call  
2) move cursor to the end of file
3) Follow the below format for creating a job

[MIN] [HR] [DOM] [MON] [DOW] [COMMAND] 

MIN : It is the Minute Field which can take values from 0 to 59.

HR : It is the HOUR Field which can take values from 0 to 23.

DOM : It is the Day of Month Field which can take values from 1 to 31.

MON : It is the Month Field which can take values from 1 to 12.

DOW : It is the Day of Week Field which can take values from 0 to 7, where 0 and 7 are Sundays.

So to run file hourly
* */1 * * * bash /home/<user folder>/minitor_tomcat.sh

After writing save  file, You can see your cron by using command sudo crontab -l

For more details about timing follow this.


You can run any command. I mean not only bash file but any command using crontab

For example if I wana write some text in a file monday I can write

* * * * 1 echo "hello job" >> /home/<user folder>/file.txt













Friday, February 7, 2014

Install softwares Ubuntu 12.04 for java & android developer

A) Setup java
sudo add-apt-repository ppa:webupd8team/java sudo apt-get update sudo apt-get install oracle-java7-installer And type this to check the version: java -version
i) Add path 
sudo gedit /etc/bash.bashrc

Append

export JAVA_HOME=/usr/lib/jvm/java-7-oracle export PATH=$JAVA_HOME:$PATH export JRE_HOME=/usr/lib/jvm/java-7-oracle/jre export PATH=$JRE_HOME:$PATH
source /etc/bash.bashrc B) Setup android home
Open terminal and cd /.../path/android-sdk 
use pwd to get path
sudo gedit /etc/bash.bashrc
Append 
export ANDROID_HOME=/../path/android-sdk-linux export PATH=$ANDROID_HOME:$PATH source /etc/bash.bashrc 
Follow this for setting up devices for development C) Setup Git
sudo apt-get install git-core
To create SSH key, follow this D) Setup eclipse
Download eclipse from here Follow this tutorial E) Setup maven
sudo apt-get install maven 
sudo gedit /etc/bash.bashrc export M2_HOME=/usr/share/maven export M2=$M2_HOME/binexport PATH=$M2:$PATH source /etc/bash.bashrc F) Setup install lamp for apache & mysql
sudo apt-get install tasksel
Then use tasksel to install the lamp-server collection of packages:
sudo tasksel install lamp-server This is far easier than mucking about with packages yourself.

Wednesday, June 12, 2013

ORM in android

Pre-req: Eclipse, android, Android Clients,

Hi guys,

Dealing with database in android takes alot of time.

  • First create schema i.e database and tables
  • Create database and tables with Database helper
  • Populate database i.e tables from android components i.e activities, services
  • Create queries, query manger classes and populate query results into Object

 Any mistakes in above step case crashes. We can speed up this process with some ORM, In this tutorial we will create a database with OrmLite and will see how many steps in sqlite database management we can skip. This is a basic level tutorial.


1) Create POJO/Class(s) these classes are tables


@DatabaseField(generatedId = true) //this annotation shows auto generated id column 
@DatabaseField(index = true) // column with index on it 
@DatabaseField(canBeNull = false, foreign = true) // a foreign key column, with not null constraint
@ForeignCollectionField(eager = false) //one to many relation
2)Create a Database Helper
  We always create database helper to create/update database, you just need to 
copy past database helper which is extension of OrmLiteSqliteOpenHelper.
 
Only with this command we can create a table.
TableUtils.createTable(connectionSource, SimpleData.class);
3) Create DAOs inside database helper:
public Dao<SimpleData, Integer> getSimpleDataDao() throws SQLException {
          if (simpleDao == null) {
                    simpleDao = getDao(SimpleData.class);
          }
         return simpleDao;
}
This DAO object help you to create rows, process query.

4) How to use in activity:
private DatabaseHelper getHelper() {
      if (databaseHelper == null) {
                databaseHelper = OpenHelperManager.getHelper(this, DatabaseHelper.class);
      }
      return databaseHelper;
 }
Queries data: 
Dao<SimpleData, Integer> simpleDao = getHelper().getSimpleDataDao();
long millis = System.currentTimeMillis(); 
// create some entries in the onCreate
SimpleData simple = new SimpleData(millis); 
simpleDao.create(simple);// Create row
         simpleDao.delete(simple);// delete row

         simpleDao.update(simple);//update row
List<SimpleData> list = simpleDao.queryForAll(); //query all object
         Query:
QueryBuilder<SimpleData, Integer> queryBuilder = simpleDao.queryBuilder();// get the 
//WHERE object to build our query
Where<SimpleData, Integer> where = queryBuilder.where(); 
// the name field must be equal to "foo"
where.eq("string", "foo"); // and operation
where.and();
// the password field must be equal to "_secret"
where.eq("id", "1"); 
PreparedQuery<SimpleData> preparedQuery = queryBuilder.prepare(); 
SimpleData simpleData = (SimpleData) simpleDao.query(preparedQuery);

Conclusion: 
  • We do not need to create sql schema for tables and database, table records management classes/providers.
  • We just need 2 thing , models (POJO) and extension of OrmLiteSqliteOpenHelper for conversion of models (POJO) into tables.
  • We access database from any android component i.e. activities , fragments, services.
  • No need to map results rows to object separately. For insertion and updation just save whole objects.
  • You can use same objects to map json data, if require.
  • It is simple to configure and use

Reference

Source code



Wednesday, May 22, 2013

Setup eclipse & android project for aspect oriented programming(AOP)

Pre-req: you should familiar with eclipse, know android programming and have knowledge of AOP.

Hi guys,

           Software development with Aspect oriented programming(AOP) is very popular these days. Because it is easy use and apply. And we can achieve good level of modularity and re-usability in our software architectures.
So I decide to deliver a presentation in my office. While preparing presentation I am writing this blog. The idea of my presentation is to introduce AOP and explain it with a demonstration (Sample), My sample will show how we can use AOP in android development. I will surly write blogs on android development with AOP but step by step.

AOP is also useful in enhancing legacy systems. By that I mean if you dont want to change existing code of system then create new modules in AOP. It will help you to keep separate no code with old one.

So lets start with step up eclipse and create a hello world android project with AOP.

Install AOP tool for eclipse:

1) Open eclipse and go to eclipse market place. Type AJDT (AspectJ Development Tools) in search bar. Choose respective plugin for eclipse. I am going to use Aspectj for compilation.


2) For example for my juno eclipse it is


3) Download and install then restart eclipse

Create android project:

Assuming you guys know how to create android project.

Fix android project for aspects

1) Right click android project and go to Configure and then Convert to AspectJ project. By doing that compile time errors will be remove and you can start creating aspects.


 
2)  Know create a prospect , I am creating aspect to print some words on start and end of onCreate() function in activity


3) Right click and run android project , you can see the printing in logs below