Data-Warehousing for Small & Medium Organizations

The journey of a thousand miles begins with a single step” – by the Chinese philosopher Laozi

Most of the people have heard about the data warehousing but they donot have fair idea about what exactly is achieved by doing this. As a business owner, whether you need it. You can be in a better position to take a decision once you know the power of Business Intelligence & Dataware-housing.

Let’s say you are a small/mid-sized organization, and you want to have some reports to have in-depth view about how your business is doing. There may be any or some of the reasons below:

1.   Does the concern person in your organization struggle every month to produce the revenue/sales reports as desired?

2.   Do you have your top management team spend their valuable time for analyzing business progresses to come up with meaningful reports involving figures & charts?

3.   Does it take repeated manual effort using spreadsheet for building the report for analysis for getting a picture of your organization’s performance?

Business-Intelligence1

If your answer is “yes” to any or some of the above questions or your data querying looks like the above image then, it is the time to consider about the better process for obtaining business reports.

And believe it or not, to build a data warehousing it is not very expensive as you might have heard about.

A perfect case-study for a Data-Warehouse

What is a DWH or data-warehouse? Generally, a Data Warehouse is a randomly accessible reliable source of data for generating information in a business system and serve the analytical needs of the organization.

Objective of a Data Warehouse:

  • To serve as the company’s principal source of information for business planning and decision making.
  • To have a central and secure source of all business information.
  • It is essential for those who have a “need to know” how to make information readily available.
  •  To store Business Information in a secure, reliable, and randomly retrievable form.

Business-Intelligence-21

Small and Medium organizations should consider whether you’ve defined your reporting needs carefully enough to really take advantage of a data warehouse.

1.   Are you sure you’re able to do everything using your existing systems?

2.   Have you thought about the dashboards, daily, weekly and monthly reports that could help executives and staffs?

3.   Do You have any idea how your organization is performing?

If not, it makes sense to start righaway!.

For small and medium organization which having more than 50 staff, a well thought for implementing the data warehouse and reporting strategy. It is an interesting option as well as robust and often powerful way to support the organizational reporting and analysis.

Successful Outcomes for Small and Medium Organizations

Andolasoft is a 5+ yrs old Software Development company. Here we focus on Business Intelligence(BI) development. In fact, the maiden customer of our company awarded us Pentaho project, since then we never looked back and till today have customers in 8 countries.

Andolasoft works in an association to your company and help you achieve your business goals faster and in a cost effective way.

Well-designed data-warehouse needs to deliver the new functionality at regular interval, so that the organization realize the benefits.

In one example, Andolasoft implemented many data-warehouse solutions using Mysql for retail services, medical organization, who used the solution to understand and subsequently increase the profitability of their projects.

Call us on +1 (408) 625-7188  or email us to get in touch and learn how Andolasoft can help your organization suffering from reliable reporting issues.

Hash Class: Makes CakePHP Coding easier!

Hash is a predefined class provided by CakePHP. It is used for array manipulation such as inserting an element to an array, remove an element from an array, sort an array, extract part of a large array, filter the non empty elements, rearrange the whole array, which makes the code more optimized and understandable. So it makes CakePHP easier and flexible to use. Because most of the operations like find, insert, update in CakePHP returns/takes array as output/input.

Hash provides an improved interface, more consistent and predictable set of features over Set. While it lacks the spotty support for pseudo XPath, its more fully featured dot notation provides similar features in a more consistent implementation.

Operations performed by Hash class:

  • extract()
  • combine()
  • filter()
  • check()
  • insert()
  • remove()
  • sort()
  • and many more…

Some Important Tips:

{n} – Match any numeric key.
{s} – Match any string value and numeric string values.
[id] – Matches elements with a given array key.
[id=2] – Matches elements with id equal to 2.
[id!=2] – Matches elements with id not equal to 2.
[id<=2] – Matches elements with id less than or equal to 2.

– Matches elements that have values matching the regular expression inside.

  • Hash::extract(array $data, $path):

Retrieve required data from array. You do not have to loop through the array.

Ex: // Common Usage:

$users = $this->User->find("all");
 $results = Hash::extract($user, '{n}.User.id');
 // $results equals:
 // array(1,2,3,4,5,...);
  • Hash::insert(array $data, $path, $values = null):

Insert sub-array’s into the original array.

Ex:

$temp = array(
 'page' => array('name' => 'page')
);
$result = Hash::insert($temp, 'file', array('name' => 'files'));
// $result now looks like:
Array
(
 [page] => Array
 (
 [name] => page
 )
 [file] => Array
 (
 [name] => files
 )
)
  • Hash::remove(array $data,  $path = null):
Remove data from any path specified.

EX:

$arr_test = array(
 'page' => array('name' => 'page'),
 'file' => array('name' => 'files')
);
$result = Hash::remove($arr_test, 'file');
/* $result now looks like:
 Array
 (
 [page] => Array
 (
 [name] => page
 )
 
)
*/
  • Hash::combine(array $data$keyPath = null$valuePath = null$groupPath = null)

Combine the results to form a new array of expected result. Helpful in case, where we are displaying data in the form of select box. Like categories, states, city etc. We don’t have to retrieve the data separately. We can find the required data from the original result set retrieved, containing the information..

Ex:

$arr_test = array(
 array(
 'User' => array(
 'id' => 2,
 'group_id' => 1,
 'Data' => array(
 'user' => 'John.doe',
 'name' => 'Matt Lee'
 )
 )
 ),
 array(
 'User' => array(
 'id' => 14,
 'group_id' => 2,
 'Data' => array(
 'user' => 'phpunt',
 'name' => 'Jack'
 )
 )
 ),
);
 
$result = Hash::combine($arr_test, '{n}.User.id', '{n}.User.Data');
/* $result now looks like below:
 Array
 (
 [2] => Array
 (
 [user] => John.doe
 [name] => Matt Lee
 )
 [14] => Array
 (
 [user] => phpunt
 [name] => Jack
 )
 )
*/
  • Hash::check(array $datastring $path = null)
    Check whether an element exists in the array or not.

Ex:

$set = array(
 'My Index' => array('First' => 'The first item1')
);
$result = Hash::check($set, 'My Index.First');
// $result == True
  • Hash::filter(array $data$callback = array(‘Hash ‘‘Filter’)):
Keep only non-empty elements and filter the empty elements.
Ex:
$data_arr = array(
 '0',
 false,
 true,
 0,
 array('test', 'is you own', false)
);
$result = Hash::filter($data_arr);
 
/* Out put:
 Array (
 [0] => 0
 [2] => true
 [3] => 0
 [4] => Array
 (
 [0] => one thing
 [2] => is you own
 )
 )
*/
  • Hash::sort(array $data$path$dir$type = ‘regular’)

Sort an array according to the path, direction and type provided.

Ex:

$arr_test = array(
 0 => array('Person' => array('name' => 'Jeff1')),
 1 => array('Shirt' => array('color' => 'black1'))
);
$result = Hash::sort($arr_test, '{n}.Person.name', 'asc');
/* $result now looks like:
 Array
 (
 [0] => Array
 (
 [Shirt] => Array
 (
 [color] => black1
 )
 )
 [1] => Array
 (
 [Person] => Array
 (
 [name] => Jeff1
 )
 )
 )
*/

$type can be of the following type:

regular
numeric
string
natural(ex. Will sort fooo10 below fooo2 as an example)

$dirc can be of two type asc & desc

For more information refer: http://book.cakephp.org/2.0/en/core-utility-libraries/hash.html

However if you want you can hire or get free consultation from our experienced CakePHP developers.

Read More: Password Hashing API in PHP

Have I missed out anything? Comment at end of this topic.

Andolasoft launched service on QA Automation

We are excited to announce launching of QA Automation service at Andolasoft.
QA is an important phase of SDLC (Software Development Life Cycle) for releasing quality software.

Why QA Automation?

While manual testing is appropriate in some cases, it is a time-consuming and tedious process that is inefficient and conflicts with today’s shorter application development cycles.

As a result, it impedes the ability to thoroughly test an application. Whereas, Automated testing creates new efficiencies that accelerate the testing cycle and promote software quality.

Automated tests are quicker to run than manual tests as there’s no lag time between input and checking, as a result you can run more tests in multiple browsers rapidly.

Manual testing has a high risk of missing out of any test case, whereas Automated tests have zero risk of missing out a pre-decided test case.

Automation_Testing

Benefits of Software Automation Testing

Saves Time :
As automated tests are run by tools, it runs tests significantly faster than human users which adds to the first benefit of saving time.

Cost Effective :
Software automation tools are expensive for short-term, but you can save money in long-term. With the help of Automation tool, you can easily find bugs in less time. This allows your team to react more quickly, as a result it saves your precious time and money.

Consistency:
Automated testing offers a level of consistency, which is not achievable through use of manual testing.

Repeatable:
Testers can test how the software reacts under repeated execution of the same operations.

Reusable:
Tests can be reused on different versions of an application, even if the user interface changes.

Reliable:
Tests perform precisely the same operations each time they are run, thereby eliminating human error.

Comprehensive: You can build a suite of tests that covers every feature in your application.

Programmable:
Testers can program sophisticated tests that bring out hidden information from the application.

Quality:
Automation tools cuts costs and reduces software product time, as well as it help to ensure high level of quality in software projects.

Why QA Automation from Andolasoft ?

We have worked on various test automation models empowering us to provide custom solution based on client needs. Andolasoft uses only the latest performance testing technology like

  • Selenium (For Automation Testing)
  • Load UI and Browsermob (For Load Testing)
  • Accunetix, N-stalker, Nsparker & Websecurify (For Security Testing)
  • Browserlab & IE tester (For UI Testing)
  • Our own product Orangescrum (For Bug Tracking)

Our approach to Automation Testing is as illustrated below:

  • Decide and Design the framework
  • Prepare Test Cases / Business flows
  • Based on the number of flows and their size, effort estimation is prepared
  • Testers are involved in effort estimation process
  • Implement the framework by developing user defined functions / procedures and reusable actions required by the framework
  • Begin automating the scripts by means of the framework
  • Review the completed scripts
  • Use the scripts to check the sanity of the script against the AUT(Application Under Test)
  • Defect found during regression logged in defect tracking tool(Orangescrum)
  • Test execution report submitted to the stakeholders
  • Preparing metrics analysis
  • Enhancements or GUI changes handled with proper documentation
  • Based on the enhancement / change, scripts tweaked
  • As and when need arises required set of scripts executed
  • Regression testing is run in a batch in unattended mode
  • Delivering results to client for approval

You can check out the latest trends for the Software Testers.

Andolasoft follows a test automation strategy where our testing engineers do analyse your applications and provides you all the possibility of test automation.

Read more on accessibility testing tools

This analysis helps our client to achieve the optimum return on their investment and provide real benefit to the projects in which they are working with. If you wish to avail of our test automation consulting services, please contact us.

Visit our Quality Assurance services for more information about the Manual and Automation testing. We look forward to your feedback/comment.

Useful Features Of IOS 7

iOS 7 is the latest version of Apple’s iOS mobile operating system. It was first announced at WWDC on June 10, 2013. iOS 7 introduces great new features like Control Center, Air Drop for iOS, smarter multitasking and lots more. It also makes the things easier, faster, and more enjoyable.

Here are the best hidden features of iOS 7:

64 bit support

iOS apps can now be compiled for the 64-bit runtime. All system libraries and frameworks are 64-bit ready, meaning that they can be used in both 32-bit and 64-bit apps. When compiled for the 64-bit runtime, apps will run faster because of the availability of extra processor resources in 64-bit mode.

iOS uses the same LP64 model that is used by OS X and other 64-bit UNIX systems, which means fewer problems when porting code.

Better Multi-Tasking

Smarter API is one of the major feature of iOS 7. This new multitasking APIs has the ability to perform app updates in the background at convenient time. Now, when you double-click the home button, all apps appear as big screens. The last app you were in is now front-and-center so swapping between apps is lightning fast. Better yet, closing apps that are not working well now just requires a swipe of the finger up.

Multi-tasking
Email Enhancements

In iOS 7, it is very easy to find emails. You just need to know the persons email ID, name or a keyword and the Mail app will search the email for you. Also You can send an email from inbox to the junk folder in a single click. Just tap the flag in the bottom right corner of the email and choose “move to junk”.

Email

Email Enhancements

In iOS 7, it is very easy to find emails. You just need to know the persons email ID, name or a keyword and the Mail app will search the email for you. Also You can send an email from inbox to the junk folder in a single click. Just tap the flag in the bottom right corner of the email and choose “move to junk”.

Siri-Search

AirDrop

AirDrop technology simplifies data sharing between users of different devices nearby. Data is transferred directly, not via emails, cloud services and alike.

AirDrop

Junk Email

Now you can send an email from your inbox right to the junk folder. Just tap the flag in the bottom right corner of the email and choose “move to junk”.

Junk_Email

Save Money By Using Face Time Audio Calls

iOS 7 adds the ability to have audio only calls using FaceTime Audio. Now, you can make a call over 4G or Wi-Fi without the video component, and the sound quality is fabulous. Just go to the desired contact and press on the phone symbol next to FaceTime. Alternatively, you can search for your contact in the FaceTime app itself.

Audio-call

Looking to make your mobile application dreams come true? Contact us today to make it a reality.

Recommended Reading: How to make Static Framework iOS device independent?

CakePHP: How To Use ‘neighbors’ With ‘find’ Method

CakePHP ‘find’ method makes it easier to retrieve data from database. The ‘find’ method can be used to construct anything from extremely simple queries to more complex ones without writing much code. This method can handle most SQL type requests and can be extended for more specific SQL queries.  I will walk you through the below example about the basics of working with the ‘find’  method

Here Are Some Inbuilt Types in CakePHP

  1. $this->Model->find(‘all’,$condition);
  2. $this->Model->find(‘first’,$condition);
  3. $this->Model->find(‘count’,$condition);
  4. $this->Model->find(‘list’,$condition);
  5. $this->Model->find(‘neighbors’,$condition);
  6. $this->Model->find(‘threaded’,$condition);

First four types are the most commonly used in CakePHP
Now, let’s take a look at an example of ‘neighbors’ type

Example

Let’s assume QuizQuestion is your model and you want to fetch the previous and next entries

Your Controller/action will look like,

public function getNeighbors($id){
 
$this->QuizQuestion->id = $id;
 
$neighbors = $this->QuizQuestion->find('neighbors',array('fields'=>array('id','question_no','description')));
}

A couple of queries will be generated in SQL as,

Query: SELECT 'QuizQuestion'.'id', 'QuizQuestion'.'question_no', 'QuizQuestion'.'description',
'QuizQuestion'.'id' FROM 'quiz_questions' WHERE 'QuizQuestion'.'id' < 38   ORDER BY
'QuizQuestion'.'id' DESC  LIMIT 1
Query: SELECT 'QuizQuestion'.'id', 'QuizQuestion'.'question_no', 'QuizQuestion'.'description',
'QuizQuestion'.'id' FROM 'quiz_questions' WHERE 'QuizQuestion'.'id' > 38   ORDER BY
'QuizQuestion'.'id' ASC  LIMIT 1

Here’s the output

Array
(
[prev] => Array
(
[QuizQuestion] => Array
(
[id] => 37
[question_no] => 1
[description] => Mathematics
)
 
)
[next] => Array
(
[QuizQuestion] => Array
(
[id] => 39
[question_no] => 3
[description] => Mathematics
)
 
)
 
)

Voila! Using the result keys ‘prev’ and ‘next’ you can view the results the way you want.

How We Turned A Great Idea Into IOS App – The Inside Story

Sandra M, an Occupational Therapist (OT) in the USA, came-up with the original idea and approached us to put it into iPhone app development as well as iPad app development. Here, the therapists share their expertise through the app thereby mentoring new parents through shared interventions.

The ‘LittleSteps’ iOS app is now in App Store. In a short span of time, hundreds of downloads have been done across the USA, Germany, Australia, India, Philippines, UK, China, Ireland, Portugal, Greece, Israel, South Africa, New Zealand, Chile, Egypt, Germany and Canada.

icon_lS

The ‘LittleSteps’ App is aimed to collaborate and share OT interventions to address developmental delay in the areas of fine motor, gross motor, feeding, sensory integration, visual motor, behavior, language development and social skills for children below 3 yrs. With the free version a user can share interventions applied to other users. However, the paid version allows OT to store customer data in the device itself.

For Occupation Therapists, it provides a platform to share knowledge and take care of certain condition during baby’s growth. For parents, it acts as a companion that makes them knowledgeable on baby care.

Being one of the best iPhone App Development Companies, we came-up with the right solutions that turned Sandra’s idea into a working iOS app. We included numerous functionalities and integrations that made it engaging and simple for the users. We used Orangescrum, the project collaboration tool to keep-up with the development process.

See What Users Are Saying About The App?

  • “Very informative! Great app to download!”
  • “OMG, this is an exceptionally amazing app that has transformed the way we approach raising our babies. A must for all parents”

Here’s What We Did:

  • Designed the application logo, the user interfaces (UI/UX)
  • Developed the app in native language i.e. Objective-C and Cocoa Touch framework
  • Devised the application process and flow from navigation to monetization
  • Introduced the feature of In-app purchase for premium users
  • Introduced push notification feature to share texts instantly
  • Tested the app’s performance with AppFlight SDK
  • Deployed the app to Apple App Store within 9 weeks since the initiation of project

In addition to above mentioned functionalities, we have introduced numerous other features that make it a state-of-the-art application.

So, go ahead; download the app and see how ‘LittleSteps’ can help you and your baby. Feel free to write reviews in iTunes.

ios_mobile

 

 

LS_screenshot