Monday, September 13, 2010

Web App vs Native App

When is NATIVE app the best ?

  •          You want to take advantage of the device API’s such as Camera, Accelerometer, motion detection, GPS, etc. Web apps can use only GPS as of today


  •         You want your content or service to be available offline .  When you do not need much of the Internet service to serve your needs.
o   For example, Pocket Aid offers first-aid and CPR information that is available on your phone, regardless of whether or not you are connected to the Internet. This availability is crucial to the application's success and therefore makes perfect sense to be native.


  •          Rich User Interface.

When is WEB app the best?
1. Benefits for Businesses/Clients


Accessibility (No Download/Install)
The problem with a native app is that you need to download and install the app first before you can use it. And most people who just need to use the app every once in a while are not likely to download the app. This is why web apps are better. All you need is Internet connection and WebKit-based browser which you already have with your phone.


Portability
With native iPhone apps, the app is only available for one single device – the iPhone. However, with the web app, we have developed it in such a way as it is compatible with most browsers so you can use it not just on an iPhone but also on other smart phones like Android, HTC and Blackberry. It is a great win for businesses because they are able to reach broader smart phone users on multiple devices and platforms with one single app.


Cost Saving
Getting a web app developed is much cheaper compared to getting a native app developed. There is no need to spend thousands of dollars on development or server infrastructure. Users of the app won’t need to pay anything as it will be available for free on the web.

2. Benefits For Developers
Ease of Maintenance
Since iPhone web apps don’t need to be approved by Apple to be listed on App Store, the developers can release updates whenever necessary. Updates take effect immediately the moment they are deployed onto the web server, as oppose to native apps where updates have to be installed by the user on their iPhone. As a web app developer, you can be sure that every user of the app is using one single version, whereas with native iPhone apps, it is possible for users to be using different (outdated) versions.


No Sharing of Revenue Stream
Apple takes about 30% of the price from iPhone apps sold on App Store. However, with web apps, the developer doesn’t need to share the revenue. The cost of running/hosting the web app works out to be much cheaper than sharing the revenue with Apple.


Full Control
Native iPhone apps are like desktop apps that are installed onto your mobile device while web apps are accessed from a web location via a URL. Having a web app means the developer has full control over the app, when it comes to configuring, deploying and upgrading the app. It suits our business model because we need to allow business owners to be able to sign up and make their Store Locator app available as quickly as possible, and this is not possible with native iPhone apps where you have to go through approval from Apple to be listed in the App Store which could take at 1-2 weeks.
iPhone web apps, however, are not without its flaws. Web apps are generally not as “WOW” as a native app. However, in our case, we are developing a utility app, not a game app, and therefore wowness is not a requirement! 

Friday, September 3, 2010

Web Service creation in SAP

How to create Web Services from Function Modules in SAP ??

1. Open SAP GUI and type in the transaction code SE37. This transaction code takes you to the Function Modules(FM) Page.
2. In SE37 type in the name of the FM for which you want to create the Web Service and click on Display.
3. Once the FM is displayed, goto Utilities --> More Utilities --> Create Webservice --> from Function Module.
4. A wizard will open and in the 1st page, type in the name of the Web Service you want to create and give a short description for the same. In page 2, the endpoint is the name of the FM itself.In page 3, provide the Function Group and the Request #.Click on the Complete button.
    The Webservice is thus created.

Next open SoaManager from SAP GUI. Click on the business administration tab--> web service administration. Search first for the Web Service you have created and from there select the WSDL link shown in the box.Copy the WSDL link and save it on notepad.

Next navigate to SE80 in SAP GUI. Here you will be creating the proxy for the Web Service you have just created. Once in SE80, click on the Edit Object button--> Open the Enterprise tab -- > Click on radio button saying "CLIENT PROXY" and here give a name for the client proxy.Click on Create button below. Here you must select the HTTP/URL service and provide the WSDL url you have stored in notepad.
Once the client proxy is created, save it and activate the proxy. Now go back to SoaManager.


Here you must search for the client proxy you  have created. Click on the Apply selection button.
Once the client proxy is shown, navigate to the Configure tab. Click on the "Create Logical Port" button.
In the wizard that opens, you will be asked for the Client Proxy name, WSDL url , username and password. Once all the entries are done, the logical port is created and your Web Service is ready for use.

Test the webservice using wsnavigator or any other web service testing tool.

Thursday, September 2, 2010

Cintiq 21UX - something to buy!!

Working directly on screen got even better !!!
Wacom has come up with these high-quality displays, combined with the Cintiq "pressure- and tilt-sensitive" Grip Pens which offer world-class levels of precision, control and comfort for editing digital images, applying effects and filters, sketching, painting and modeling.

Cintiq 21 UX comes
  • With a 21.3" TFT (rotatable180° in either direction to suit your natural arm movements, and recline the stand from 10 to 65°.display area)
  • With Wacom's new pen tip sensor and 2048 levels of pressure sensitivity
  • The Cintiq Grip Pen has programmable side switches that allow you to program your most common actions into the pen itself. For ultimate control, the pen comes with three different nibs that allow you to get the feel you're looking for:
    • Standard Nib for the right balance of control and longevity for extensive everyday use.
    • Stroke Nib that includes a dual-action spring to simulate a natural brush-like feel.
    • Felt Nib to replicate the sensation of using a felt-tip marker by creating just the right amount of surface friction.
  • Two finger-sensitive Touch Strips serve as natural ways to control up to 4 different functions per application such as zooming, scrolling, brush size and canvas rotation.

Firefox 4

Currently in the Beta 1 stage with many functions still missing. But it does look very nice and very user friendly. Many new features are added:
1. Firefox button which is a drop down of many firefox commands.
2. Tabs on Top functionality.
3. Group tabs in a custom group.
4. HTML5 support
5. Crash protection ( the best thing!!!)
6. Multi touch support ( for Windows7 users) - the wow factor
7. Switch to Tab

Wednesday, September 1, 2010

GOOGLE MAPS API in flex

Simple steps to integrate Google Maps Api and customize markers in flex code.

1. Sign up for an APP-ID at http://code.google.com/apis/maps/signup.html
     - An APP-ID is a unique id which is linked to the webpage you are trying to embed the google map in. Basically, Google has a map-id linked to the webpage you are creating. This is needed in order to display the map onto your webpage. In the event that you are creating a local flex application, no APP-ID is needed to be generated( just keep any string as your APP-ID).

2. Obtaining the Interface Library
    Developing Flash content that integrates Google Maps requires inclusion of a Google Maps API for Flash interface library within your application code. This library consists of a *.swc file within the lib directory of the Maps API for Flash SDK available at the following URL:
The SDK includes two SWC files: a Flex version for use within FlexBuilder (or with the free Flex SDK), and a non-Flex version for use within Flash CS3. The Flex*.swc is denoted with a _flex suffix in the filename.
These SWC files contain interfaces for all public classes in the Google Maps API for Flash development environment. Compiling your application with this library ensures that it can utilize and communicate with all public functionality of the runtime Google Maps API for Flash library, which is retrieved from Google's servers whenever a client loads your application.
3. Import the packages using codes: 
                                import com.google.maps.controls.*;
                                import com.google.maps.overlays.*;
etc.
4. Code snippet to Initialize your googleMap.
     -                          googleMap = new Map();
googleMap.key = APP_ID; // your APP-ID which is generated by Google comes here
googleMap.addEventListener(MapEvent.MAP_READY, googleMap_mapReady);
googleMap.setSize(new Point(mapContainer.width, mapContainer.height));
googleMap.addControl(new ZoomControl()); // adds the zoom functionality
googleMap.addControl(new MapTypeControl());  // adds the functionality to change the types of Maps
                                mapContainer.addChild(googleMap);
5. Placing markers on your map.
   -  Placing markers at points on your maps need to import com.google.maps.services.*
     Use the following functions to add markers on the map:
[Bindable]
public var dp:ArrayCollection; // dp is the data-provider, which consists of objects having latitude and longitude information
[Bindable]
public var markerProvider:ArrayCollection = new ArrayCollection;
 // markerProvider is arrayCollection, which consists marker information

private function loadmarkers():void
{    
           for(int i=0;i<dp.length;i++)
{
var lat = dp.getItemAt(i).lat;
var lng = dp.getItemAt(i).lng;
var MarkerData:Object = {lat:lat,lng:lng};
markerProvider.addItemAt(MarkerData,i);
markerProvider.refresh();
var markerOptions:MarkerOptions = new MarkerOptions();
markerOptions.label = (i+1).toString();
markerOptions.hasShadow = true;
markerOptions.draggable = false;
markerOptions.fillStyle = new FillStyle({color:Color.GREEN, alpha:0.8});
var marker:Marker = new Marker(new LatLng(lat,lng),markerOptions);
marker.addEventListener(MapMouseEvent.CLICK, markerClicked);
googleMap.addOverlay(marker);
}
}

//markerClicked is a function which displays the information when a marker is clicked.
public function markerClicked(event:MapMouseEvent):void
{
var marker:Marker = event.target as Marker;
var i:int;
var m_lat:Number;
var m_lng:Number;
for(i=0;i<markerProvider.length;i++)
{
var matchedObject:Object = markerProvider.getItemAt(i);
if(matchedObject.lat==marker.getLatLng().lat() && matchedObject.lng==marker.getLatLng().lng())
{
m_lat = matchedObject.lat;
m_lng = matchedObject.lng;
}
}
showThePopUpComponent(m_lat,m_lng,); // create a popup to show the marker-info
}