Benefits of Choosing Cloud Management Service by Startups

Cloud computing is a Internet based computing that relies on sharing computing resources rather than having local servers or personal devices to handle applications.

In cloud management service, we can easily access multiple number of computers via Internet.

Cloud computing phenomenon is well suited for startups, because it will help you to give the  security and performance needs of your organization.

  • Major Benefits of Cloud Service

The main intent of the startups to grow the business. For this reason, startups are looking for strategies from where they can get maximum productivity or output within limited time frame and resources.

Cloud Computing provides powerful and flexible infrastructure, so that your staffs are able to work from anywhere, anytime from any device.

In this way you can give full attention to your business without worrying about IT infrastructure. Some of the benefits of cloud computing are as follows:

  • Reduces Operational Cost

By the help of cloud computing, one user can reduce the operational cost such as cost of data storage, software updates, management, and quality control.

Now you can get the cloud computing service at affordable price.

  • Scalability and Speed

In cloud computing service, the user does not need to install software or hardware for new application.

They can easily scale up or down the services according to the business requirement as there are many data centers are located in multiple location.

  • Innovation

With cloud computing, the user does not need to manage or own the resources.

It provides user the complete benefits like faster prototype development, testing and validation.

  • Optimal Resource Utilization

Cloud computing is environment friendly. With the help of Cloud, we can easily share servers, storage and network resources with multiple users.

  • Device Independence

Cloud computing services can be used and accessed from any device such as Desktop, Notebook, Smartphone, iPhone etc.  

SEE ALSOHow Cloud Computing will affect staffing and recruitment

How To Make Static Framework IOS Device Independent?

In our previous post, we had mentioned the steps to create a Static Library or Framework for iOS. Here, we will illustrate the steps to make it device independent, i.e. the library can be used to develop app for all iOS devices, instead of recreating the code for each device.

Step 1: Create an Aggregate Target

  • Click File >> New Target and create a new Aggregate target in Other menu.

  • Name your aggregate target – like ‘Framework’

xcode_image

 Step 2: Adding the Static Library as a Dependent Target

  • Add the static library target to the ‘Target Dependencies’.

framework-image

Step 3: Build the ‘Other’ Platform

  • To build the ‘Other’ platform, use a ‘Run Script’ phase.

  • Add a new ‘Run Script’ build phase to your ‘Aggregate’ target and paste the following code.
set -e
 
set -e
 
set +u
 
# Avoid recursively calling this script.
 
if [[ $SF_MASTER_SCRIPT_RUNNING ]]
 
then
 
   exit 0
 
fi
 
set -u
 
export SF_MASTER_SCRIPT_RUNNING=1
 
  
 
SF_TARGET_NAME=${PROJECT_NAME}
 
SF_EXECUTABLE_PATH="lib${SF_TARGET_NAME}.a"
 
SF_WRAPPER_NAME="${SF_TARGET_NAME}.framework"
 
  
 
# The following conditionals come from
 
# https://github.com/kstenerud/iOS-Universal-Framework
 
  
 
if [[ "$SDK_NAME" =~ ([A-Za-z]+) ]]
 
then
 
   SF_SDK_PLATFORM=${BASH_REMATCH[1]}
 
else
 
   echo "Could not find platform name from SDK_NAME: $SDK_NAME"
 
   exit 1
 
fi
 
  
 
if [[ "$SDK_NAME" =~ ([0-9]+.*$) ]] then
 
   SF_SDK_VERSION=${BASH_REMATCH[1]}
 
else
 
   echo "Could not find sdk version from SDK_NAME: $SDK_NAME"
 
   exit 1
 
fi
 
  
 
if [[ "$SF_SDK_PLATFORM" = "iphoneos" ]]
 
then
 
   SF_OTHER_PLATFORM=iphonesimulator
 
else
 
   SF_OTHER_PLATFORM=iphoneos
 
fi
 
  
 
if [[ "$BUILT_PRODUCTS_DIR" =~ (.*)$SF_SDK_PLATFORM$ ]]
 
then
 
   SF_OTHER_BUILT_PRODUCTS_DIR="${BASH_REMATCH[1]}${SF_OTHER_PLATFORM}"
 
else
 
   echo "Could not find platform name from build products directory: $BUILT_PRODUCTS_DIR"
 
   exit 1
 
fi
 
  
 
# Build the other platform.
 
xcodebuild -project "${PROJECT_FILE_PATH}" -target "${TARGET_NAME}" -configuration "${CONFIGURATION}" -sdk ${SF_OTHER_PLATFORM}${SF_SDK_VERSION} BUILD_DIR="${BUILD_DIR}" OBJROOT="${OBJROOT}" BUILD_ROOT="${BUILD_ROOT}" SYMROOT="${SYMROOT}" $ACTION
 
  
 
# Smash the two static libraries into one fat binary and store it in the .framework
 
lipo -create "${BUILT_PRODUCTS_DIR}/${SF_EXECUTABLE_PATH}" "${SF_OTHER_BUILT_PRODUCTS_DIR}/${SF_EXECUTABLE_PATH}" -output "${BUILT_PRODUCTS_DIR}/${SF_WRAPPER_NAME}/Versions/A/${SF_TARGET_NAME}"
 
  
 
# Copy the binary to the other architecture folder to have a complete framework in both.
 
cp -a "${BUILT_PRODUCTS_DIR}/${SF_WRAPPER_NAME}/Versions/A/${SF_TARGET

Step 4: Build to verify

  • Now  you have set up an environment to build a distributable <project_name>.framework

  • Build the ‘Aggregate’ target

  • Expand the Products group in X-Code, right click the static library and click ‘Show in Finder’

Note: If this doesn’t open Finder to show the static library, then try opening

~/Library/Developer/Xcode/DerivedData/<project name>/Build/Products/Debug-iphonesimulator/.

  • In this folder you will find your <project_name>.framework folder.

You can now share the <project_name>.framework among other iOS app developers.

How To Create A Gridview With ‘UICollectionView’ In IOS6 & Above

What Is ‘UICollectionView’?

‘UICollectionView’ is a class introduced in iOS 6 SDK. It helps developers in creating grid view to handle ordered collection of data items using customizable layouts. ‘Collection view’, available in this class is like ‘UItableview’ which supports multiple column layouts.

Getting Started:

Create new ‘.h‘ and ‘.m‘ files to display the images.

In ‘ShowImagesViewController.h

#import <UIKit/UIKit.h>
@interface ShowImagesViewController :UICollectionViewController
{
NSArray *allImages;
}
@property (nonatomic, retain) NSArray *allImages;
@end

In ‘ShowImagesViewController.m

#import "ShowImagesViewController.h"
@implementation ShowImagesViewController
@synthesize allImages;
- (void)viewDidLoad
{
[superviewDidLoad];
allImages = [NSArrayarrayWithObjects:@"pizza.jpeg",
@"sides_img.png", @"sandwich_img.png", @"pizza_img.png",
@"pasta_img.png", @"drinks_img.png", @"pizza.jpeg",
@"sides_img.png", @"sandwich_img.png", @"pizza_img.png",
@"pasta_img.png", @"drinks_img.png", nil];
}
 
- (void)didReceiveMemoryWarning
{
[superdidReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (BOOL)shouldAutorotateToInterfaceOrientation:
(UIInterfaceOrientation)interfaceOrientation
{
return YES;
}
- (NSInteger)collectionView:(UICollectionView *)collectionViewnumberOfItemsInSection:(NSInteger)section
{
returnrecipeImages.count;
}
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionViewcellForItemAtIndexPath:(NSIndexPath *)indexPath
{
staticNSString *identifier = @"Cell";
UICollectionViewCell *cell = [collectionView
dequeueReusableCellWithReuseIdentifier:identifier
forIndexPath:indexPath];
 
UIImageView *allImageView = (UIImageView *)[cell viewWithTag:100];
allImageView.image = [UIImageimageNamed:[allImagesobjectAtIndex:indexPath.row]];
return cell;
}
- (void)collectionView:(UICollectionView *)collectionViewdidSelectItemAtIndexPath:(NSIndexPath *)indexPath{
}
@end

Example of Grid layout using ‘UICollectionViewController

uicollectionview

Conclusion:

‘UICollectionViewController’ creates ‘Grid’/’Tile’ layout much faster and offers intuitive user interface in iOS 6 devices.

Orangescrum Premium Plan is Live Today!

orangescrum_signup-300x147We are excited to announce that the Orangescrum Premium Plan is gone LIVE today. The beta testing is over successfully. Today, Orangescrum is open for individuals, small businesses and enterprises. It’s an efficient Project Collaboration Tool that gives you full visibility and control over your projects. It is an agile project management tool for perfect team collaboration, project tracking, document sharing and a discussion board for the team.

Inside Orangescrum:

Orangescrum offers all the basic features you need to smooth running of your project.

Here are some key highlights of Orangescrum:

  • Create/Assign/Track Tasks
  • Project & Team Collaboration
  • Secured File sharing using Google Drive and DropBox
  • Get conversations under single thread
  • Faster communication with Email Notification
  • Create & Track Milestones
  • Respond via email/mobile
  • Observe activities on a single page
  • Can be used as a Bug/Issue Tracker/Ticketing system

Pricing:

Orangescrum pricing is simple and flexible; pay-as-you-go and no long term obligations.
Orangescrum is available rightaway in Basic, Premium and Enterprise Editions. For more information visit Orangescrum at,

http://www.orangescrum.com/pricing

sign-up-btn

 

Things you must do after Apps development

mobile_marketing-large

Android and iOS both are the most lucrative mobile app development platform. Although Apple is the dominant player in US, Android has the widest customers around the world. Hence for business requirements, both iOS and Android is the most viable option. With over 850,000 applications in the Google Play and still counting Android has become the most versatile platform for the businesses as well as individuals to release any sort of apps in the market. Whereas App Store accounts for over 40 billion apps purchases and possesses around 775,000 apps ‘and still counting’.

After publishing the application to the App Store and Google Play, it is essential to promote those apps for generating revenue. Developers should popularize their apps over web to attract the attention of customers. Here are few ways to market and promote your applications on application stores.

Simultaneous App marketing and Development

Don’t wait till you finish developing your app; instead start marketing when the development process is ongoing. You could setup a website or a blog about the application you would be releasing in future. You could also promote the concept of your application through blog or social media websites. Developers should also write articles and reviews on topics and products related to the type of application they are willing to develop. This would help to gain visibility on the web as well as making people familiar about the idea of the applications. All the articles and app promotion through social media and blog posting has to be relevant.

Search optimize your Google Play and App Store Page

Every application released on the Google Play and App Store has its own page. Customers and users would come to this page through links in articles, blogs and social media updates. Developers will have just few seconds to persuade their possible customers through their page hence, the contents and information on the page has to be compelling. It would help if the app is named smartly i.e. the name should reflect the purpose of the application. Developers should also take utmost care while designing the app icons. It would be helpful if high resolution screenshots are also included in the Google Play and App Store page.

Involve your Friends, Family any one you can

The first few days of the release of the application to the application stores are the most crucial time which would decide the future of your apps promotion. Most users rely on the ratings given to the application before actually downloading it to their mobile device. Along with the rating, comments and reviews also matters. If the app gets a good number of downloads and has good ratings, there is a chance that it will be placed in the top list of best selling app or staff picks section.  Hence, ask your friends and family to give 5-star ratings to the applications, in fact ask as many people you know to give your application a 5-star rating and write impressive comments and reviews about the applications. Ensure a higher number of downloads by requesting trusted friends to download the app.

Support:

Offer continuous support to the users by addressing their queries and comments. If a user has raised an issue regarding app’s performance or functionality, address them by fixing the issue and then reply their comments by intimating them about the bug fixes. It facilitates developers to build a trust with their customers. Also watch out for negative feedback and bad reviews and remove any prevalent bugs that might be hampering your app’s reputation.

Android Application Development and iPhone application development are considered to be the best mobile app development platform for businesses. Because of its wider reach, it facilitates them to promote and market their application to a wider group of people.

The Best Practices for Rails App Development

“Rails” is an amazing framework to develop web applications quickly through its inbuilt helper libraries. However, there are certain best practices that you should follow to get your rails app perform better.

Conventional programming methods:

Most developers love to place the logic inside the controller and use the model for the “Active Record” operation only.

This leads to a “Fat controller and skinny model” interface which eventually kills an app’s performance and looses the maintainability of the code. This way, application stops responding when the load is high.

What should be the best practices?

Below, I have mentioned some of the most essential and useful practices that should be followed by every Ruby on Rails developer.

Fat Model, Skinny Controller

Write all the non-response-related logics inside the model with nice and testable methods; and don’t forget to use comments.

You should follow the Ruby on Rails motto i.e. “Fat Model, Skinny Controller”. Because the “skinny” controller offers a nice interface between the view and model.

By moving any logic that isn’t about the response (for example, setting a flash message, or choosing whether to redirect or render a view) to the model instead of the controller, not only you can reuse the codes where

possible but you’ve also made it possible to test your code.

Reusable Scopes

A scope is a set of constraints on database interactions (such as a condition, limit, or offset) that are chainable and reusable.

Let’s see a simple example:

[sourcecode language=”plain”]
def index
@paid_users= User.where(“is_active=? AND is_paid=?”,true, true).order(“name”)
@unpaid_users= User.where(“is_active=? AND is_paid=?”, true, false).order(“name”)
[/sourcecode]

You can change it to this:

[sourcecode language=”plain”]
def index
@paid_users= User.paid.all
@unpaid_users= User.unpaid.all
end[/sourcecode]

Then, you can move the logic to your User model, where it might look like this:

[sourcecode language=”plain”]
scope :paid, lambda { where(“is_active=? AND is_paid=?”,true, true).order(“name”) }
scope :unpaid, lambda { where(“is_active=? AND is_paid=?”,true, false).order(“name”) }
[/sourcecode]

Using the methods User.paid.all and User.unpaid.all, we’ve not only made it simpler to test our code, but also made it possible to reuse that same set of conditions in another location.

You should avoid the use of default_scope because:

  1. You can’t override default scope
  2. default_scope will affect your model initialization

Package Your Code into Gems and Plugins

Writing a particular set code more than once for different applications is exhausting as well as redundant, hence, it is advisable to create a plugin or gem to use it further. It will save your development time and effort.

Manage Your Attribute Access

While creating or updating an object, Rails app usually assigns every attribute without checking the data. Validation only prevents the bad data but doesn’t exactly prevent it from overwriting an attribute that we don’t want to change.

To solve this issue, ActiveRecord is implemented which uses two methods: attr_protected and attr_accessibile.

Using attr_protected, you can declare a blacklist of variables you don’t want to be assigned and using attr_accessible, you can declare a list of variables that can be assigned.

By implementing above steps, you could prevent any mass assignment that could occur via your application’s forms; because if the form does not have the field for a given attribute, doesn’t mean a hacker can’t add it to the request.

From a security perspective, using attr_accessible and attr_protected forces you to think about what should be editable and how to protect the ways in which your class’s attributes are set.

Use Non-database-backed Models

In Rails app, Model is not restricted to associate with table. To organize application logic, write it down by creating a new model.

Virtual Attributes

If you are manipulating data before passing it to a model, use virtual attributes instead.

Virtual attributes are a simple own getter and setter methods.

For example
To set a user’s name:

[sourcecode language=”plain”]
@user = User.new(params[:user])
@user.first_name, @user.last_name = params[:user][:name].split(" ", 2)
[/sourcecode]

By using virtual method inside the model

[sourcecode language=”plain”]
def name=(value)
self.first_name, self.last_name = value.to_s.split(“ ”, 2)
end[/sourcecode]

Whenever you set the name attribute, your model will automatically set the first_name and last_name attributes for you, even though name doesn’t exist in the database.

Use Translations

Rails i18n framework makes it easy to declare the map of an abstract context to a string.

All you need to do is maintain a YAML file of translations, and use I18n.t / t in your code where there is data shown to the use.

I18n is useful to avail your app to more locales.

Using of after_commit callback

Use “after_commit” instead of using after_create/after_update/after_destroy callbacks to start background processes. Because, in relational database, several operations are wrapped in one unit and pass or fail of transaction depends upon all the operations.

If you use after_create/after_update/after_destroy in first model and if any error occurs in the second model then the background process will raise NotFoundError.

Use select in ActiveRecord association

Use select with has_many and belongs_to on Active Record Associations to speed up the query.

For example:

[sourcecode language=”plain”]
class Patient < ActiveRecord::Base
belongs_to :physician, :select => ‘id,name, surname’
end

class Physician < ActiveRecord::Base
has_many :patients, :select => ‘id,name, physician_id’
end
[/sourcecode]

Fix N+1 Queries

N+1 Queries is a serious database performance problem. Use “Bullet” gem to avoid N+1 query problem

Conclusion:

Employing the above mentioned Rails best practices would keep the code cleaner and reusable.

The application performance would increases tremendously and the maintenance of the code will be easier.