Sunday, July 25, 2010

My Android Applications

During the summer internship I learned about interesting and innovative work of Android Application Development. I have already posted about getting started with it and some important links in my earlier posts. In this post I m going to discuss some of the applications I built.

Info Displayer:

Info displayer is a simple and light application. No doubt, it was my first app :). The application fetches some important information about your Android Device, such as, the device number, the hardware, the Manufacturer, Product, Model, Time etc. The application used "build" library and its functions to fetch the information.


Webber:

Webber claims to be the world's simplest browser. It just has a text box to write a URL and the view below it, which fetches the web-page. It doesn't allow the default browser to hinder its working. I used an EditText and a WebView to present this app. Other stuff was just a cake walk.



Sleek Feed:

Sleek Feed is an application that displays the feeds of the saved URL. The application parses the XML file, and gets the titles of the latest feeds and displays it onto the screen. The URL is feeded by the user himself through the admin panel. The main feature of the application is the fact that it saves the previous URL feeded in the admin panel.
To view its complete working see the video here on youtube.



One thing I learned while building these apps that "it's not knowledge, but it's innovation, that matters a lot while completing an entire project."

* * * * *

Thursday, July 15, 2010

Some useful links for building Android Apps

Working on Android Application Development I came across some very useful links that every Android App Developer must follow. Here is my "Delicious.com" account, you can look for all the bookmarks I have saved.
In this post I am recommending some of the important Android forums and websites. By this time you must obviously be familiar with the official Android Developer Website where you can find the entire documentation of the project. Do add yourself to the Android Google Group for asking all your queries. For hosting your applications access its Official Marketplace.
Besides these regular sites which everyone accesses, I m here to share some more websites that can help novice get started and go on further with the Android App development.

(Click the titles for opening the pages)..

Here's Lars Vogel with his tutorial for getting started with Android App Development. Besides getting started, it also teaches to build a hello world app, demonstrates how to build menus and work with preferences, a nice content provider example and how to make a file browser. At last it demonstrates how to deploy your app onto a real device.

This is one of my best recommendations. Some very nice demo projects are hosted on the site. Studying Motto Twitter project can help understand the concepts in depth. Certain API's have also been explained in the tutorials. The use of bluetooth and camera may become very clear refering to their API tutorials.

Nice tutorials by Nithin Warreir. The blog contains some code snippets that help during development of big projects. One can learn implementation of various tools of Android development easily here. I have even added the admin to my gmail contacts and regularly ask him to review my applications.

Anddev forum is pretty famous for having a large number of online users everytime. For any query you can easily post a question in this forum. Wait for the help that comes in just a few minutes. One can also use the android tag of Stackoverflow, but mind you, it's lame..!! Too slow responses and you'll end answering your own question later which doesn't contribute to the repo at all.. :P

Besides the Official Marketplace, this is another marketplace that hosts developer's applications. For registering as developer in the official marketplace, one needs to pay $25, here lies the advantage of joining SlideMe, it is free..!!
Register yourself and deploy all your apps. The apps may be free or paid. The paid apps can only be downloaded from Android Phone through SlideMe market app. The website asks for copies of your project's ".apk" file and forms an inventory and on downloads you need to generate an invoice to redeem the money. Here is link for viewing my apps.

Happy developing ;)

* * * * *

Wednesday, June 2, 2010

Getting started on Android Application Development


Working as an intern at webkul, I set up Android on my PC. Here's the entire documentation I submitted.

Simple Steps for getting started with the Android Application Development on Windows:

Step-1: Downloads

Step-2: Configure Ellipse

  • Start Eclipse
  • Goto to Help->Install New Software.
  • Hit Add.
  • For the name, type “Android” and set the link to “https://dl-ssl.google.com/android/eclipse/” (if this doesn’t work, try it with http:// instead of https://).
  • Click OK.

Step-3: Add ADT (Android Development Tools)

Step-4: Configure Android SDK

  • Start SDK Setup.exe.
  • Install all the packages needed.
  • SDK Manager installs the tools.

Step-5: Set up Android Virtual Device

  • Click on Virtual Devices in SDK Manager.
  • It creates an Android device that will test run the programs.
  • In the name field: “any name”
  • In target field: “Android 2.2 – API Level 8”
  • Select Size as 20.
  • Hit create.
  • Select AVD from list
  • Hit Start

Step-6: Configure Eclipse again

  • Open Eclipse
  • Goto Window->Preferences
  • Select the Android tab.
  • Browse to the location of your Android SDK
  • Hit Apply.
  • Hit OK.

Step-7: Create a new Project

  • Goto File->New->Projects
  • Select Android Projects.
  • Fill the required fields.
  • Hit Finish
  • Start Coding.

Step-8: Run Your Program

  • Press F11.
  • Hit Save.
* * * * *

Wednesday, May 26, 2010

Google Code Jam - 2010

It was during GCJ 2009 when I got myself more involved in coding stuff. I still remember my last year's post about my performance at GCJ 2009. I can happily and proudly say that yes this year I showed some improvement..!!

Qualification Round:

The round started early morning and made me code even when the semesters were approaching..!! Nevertheless I went on for the third problem (Theme Park) first as it seemed much easier than others. Here's my code which I submitted for the correct submission.

#include<iostream>
#include<fstream>
#include<sstream>
#include<vector>

using namespace std;

int main()
{
int t,i,e=0,c=0,r,k,n,x,ans=0,flag=0,j,m=0;
vector<int> a,f;
ifstream fin("C-small-attempt0.in");
ofstream fout("output.in");
//ofstream fout("output.in");
fin>>t;
//cout<<t<<"\n";
while(t--)
{
m++;
ans=0;
e=0;c=0;
a.clear();
f.clear();
fin>>r>>k>>n;
for(i=0;i<n;i++)
{
fin>>x;
a.push_back(x);
}
i=0;
while(e!=r)
{
e++;
c=0;
f.clear();
flag=0;
while(c<=k)
{
if(i>=a.size()) break;
c+=a[i];
if(c>k) break;
else
{
f.push_back(a[i]);
ans+=a[i];
i++;
}
}
for(j=0;j<f.size();j++)
a.push_back(f[j]);
}
fout<<"Case #"<<m<<": "<<ans<<"\n";
}
return 0;
}



The code didn't suffice for the large test cases and I switched my attention to the first problem. After finding the logic of the problem it was a cake to write the code which even survived the large test cases and made our way to round-1 clear. Here's the code for problem-1 (Snapper Chain)


#include<iostream>
#include<fstream>
#include<math.h>

using namespace std;

int main()
{
int t,n,k,c,s,m=0;
ifstream fin("A-small-attempt1.in");
ofstream fout("output1.in");
fin>>t;
while(t--)
{
m++;
fin>>n>>k;
c=pow(2,n)-1;
if(k<c)
{
fout<<"Case #"<<m<<": "<<"OFF\n";
continue;
}
else
{
s=c;
while(s<k)
{
s+=(c+1);
}
//cout<<s<<" "<<k;
if(s==k)
fout<<"Case #"<<m<<": "<<"ON\n";
else
fout<<"Case #"<<m<<": "<<"OFF\n";

}
}
return 0;
}


With 43 points I advanced to Round-1.

Round-1C

I was unable to code in round 1A and round 1B due to the sixth sem examination. Nevermind, I got my chance to survive in the last round. I successfully submitted the problem-1 (Rope Intranet) (both large and small datasets) for 22 pts. My code:

#include <iostream>
#include <fstream>
#include <algorithm>
#include <string>
#include <sstream>
#include <set>
#include <map>
#include <bitset>
#include <stack>
#include <queue>
#include <deque>
#include <vector>
#include <cstdlib>
#include <cstring>
#include <cstdio>
#include <math.h>
#include <cctype>
#include <iterator>
#include <utility>

using namespace std;

int main()
{
int m,t,ans,i,j,n,a,b;
vector<int> b1,b2;
ifstream fin("A-small-attempt0.in");
ofstream fout("o.out");
fin>>t;
for(m=1;m<=t;m++)
{
ans=0;
fin>>n;
for(i=0;i<n;i++)
{
fin>>a>>b;
b1.push_back(a);
b2.push_back(b);
}
for(i=0;i<b1.size();i++)
{
for(j=0;j<b1.size();j++)
{
if(i==j) break;
if((b1[i]<b1[j])&amp;&amp;(b2[i]>b2[j]))
ans++;
else if((b1[i]>b1[j])&amp;&amp;(b2[i]<b2[j]))
ans++;
}
}
b1.clear();
b2.clear();
fout<<"Case #"<<m<<": "<<ans<<"\n";
}
}


Problem-2 (Load Testing) was really hard to understand and so was problem-3. After the competition ended I found myself placed at 1,950th position and losing the match by 950 ranks. Here's my complete performance.. GCJ-2010.
Khair, m happy but not satisfied. Will definitely improve the next time. Waiting for GCJ-2011 desperately..!! :)

* * * * *

Monday, March 29, 2010

Getting started with Programming Contest Control (PC2)



After a grand success of JSSATEN techno-cult fest Zealicon '10, I wanted to redirect myself to blogging. So, here I m with another post in which I would like to share my experience with Programming Contest Control (PC2) software.

PC2 is a dynamic, distributed real-time system designed to manage and control Programming Contests. PC2 operates using a client-server architecture. Logging into a client using one of several different types of PC2 accounts (Administrator, Team, Judge, or Scoreboard) enables that client to perform common contest operations associated with the account type, such as contest configuration and control (Administrator), submitting contestant programs (Team), judging submissions (Judge), and maintaining the current contest standings (Scoreboard).

Here are the steps to begin with PC2 software:
  • Install Java (version 1.3.1 or greater).
  • Donwnload PC2 software from here ( I prefer version 8 ).
  • Edit the pc2v8.ini file to point servers and clients to the server IP:port and put the modified .ini file on every server and client machine.
  • Start a PC2 server by running “pc2server.bat” and answer the prompted question as "no".
  • Start a PC2 Admin client by running “pc2admin.bat” and login using the name “root” and password “root”.
  • Do not forget to change the username and login after that.
  • Configure the Admin.
  • Admin: Generate the number of teams, judges, admins, scoreboards you need.
  • Admin: Add the problems from the problem tab.
  • Admin: Define the languages allowed in your competition from the language tab.
  • Admin: Configure the clock from the Time/Reset tab. You can start and stop the contest from this tab.
  • Start all PC2 Judge clients by running “pc2judge.bat” and login ( for judge1 ) using the name “judge1” and password “judge1” and hence for other judges.
  • Judge: Judge receives all the source codes submitted by the teams and has to judge them right or wrong.
  • Start all PC2 Team client running “pc2team.bat” and login ( for team1 ) using the name “team1” and password “team1” and hence for other teams.
  • Team: The teams can send their source code by browsing it, selecting the problem and selecting the language.
  • Team: Teams get prompted whenever a decision is made about their source code and the scoreboard automatically updates as a team succesfully submits a problem.
So, here is the minimal use of PC2 software. For running a multisite contest or automated compilation of source code please refer the its documentation.
Happy coding..!!

* * * * *

Monday, March 15, 2010

Algothematics.. All the Mathematics you missed



Algothematics is a new event being introduced in Zealicon '10 (annual TechFest of JSS Academy of Technical Education, Noida). The event will be conducted online. All programmers across the world are, hence, invited.

The event comprises of 15 levels. Each level has an ad-hoc mathematical problem which can either be solved manually (using pen and paper) or by conceiving certain algorithm. The submission requires only the answer to the question. Submission of source-code is not required.

Other tools can also be used for solving the problems. Spreadsheet, PARI-GP, MATLAB are among them. Besides all these we always have GOOGLE with us... :)

Besides all this, Zealicon forum will contain an "Algothematics" thread under "online events" where all sorts of problems and their hints will be discussed. No questions extraneous to the event will be entertained.
LeaderBoard will be available at the home page itself, so that you can constantly check your position among others.

Please do not ruin the basic purpose of event by any hacking stuff. Those not conforming to the rules and regulations will be banned without prior information. Decision of Algothematics Team will be the last.

First two teams reaching the final level will be adjudged victorious..

So pull up your socks, hone your programming skills.. Algothematics is about to begin..!!! (17th March, 00:00)

* * * * *

Friday, February 19, 2010

cmath v/s math.h

Here's a problem with pow() function in cmath and math.h:

With gcc set up, math.h just contains the the usual C function pow(double, double) - so all the functions work because with pow(int, int) both ints get promoted to double by compiler and all is OK.
cmath in more than a wrapper for math.h. First it includes math.h and then undefines a whole lot of stuff that math.h defined, and substitutes the c++ versions.
This includes the pow function declaration.
As the c++ overloaded functions (same as any other c++ compiler), you will get the ambiguity problem - when using pow(int, int).

P.S. - The ambiguity occurs with pow(int, int) because integers can be promoted to floats or doubles, which means that pow(int, int) can fit the so overloaded c++ pow function - so the compiler gets confused.

* * * * *