XOME

Brief:

​XOME is Boston Byte's internal framework used for PHP development, It is very easy to create role based system using ​XOME.

​XOME not only provides you code for add, edit, list, delete, activate and deactivate but also provides validation of your web form. You do not require to write code for delete, activate or deactivate in ​XOME . Just by writing some configuration and calling function, you can implement delete, activate or deactivate . You can upload image using ajax or using post back using ​XOME by just calling one function.

You can develop website front end and back end using ​XOME in less time. You can create dynamic menu, pages using existing code. You can create banners using xome. Fetching records from database is also very easy in​ XOME . You need to call just a function of common model with parameters.

Validations is very important while developing project. ​XOME provides you built in validations.

Need:


​As a Web application development company, we were searching for a solution for fast web application development in PHP. There are lots of open source framework/ CMS available, but we didn't find what we exactly were looking for to speed up the development process. So we decided to build an in-house system in PHP. XOME.​

In a world of IT, we are developing lots of project and while developing project, we came to notice that we are using lots of repeated functions. There is a need of creating common functions and calling them at different places instead of creating them from scratch every time. To avoid repeated code and to improve development speed, we have implemented xome.

How It Works:


​We used existing framework (Codeigniter) which uses MVC pattern. We built our framework on top of Codeigniter framework. This includes libraries, basic built in modules for web application development and modules for CMS.​

Suppose you need to create one small system. Just copy the default ​XOME structure and follow following steps -

1. Configure your database in ​XOME (database_credentials.php) as follows -

<?php

// defining default constants which is using for configure the project
// defining DBUSER as user of database which is using for database connectivity
define("DBUSER",'root');
//defining DBPASS as password of database user as mentioned above DBUSER which is using for database connectivity

define("DBPASS",'');
//defining DBHOST as database hostname or ip address which is using for database connectivity
define("DBHOST",'localhost');
//defining database name which is used for the project
define('DATABASE', "demoxome");
//defining Project Folder name

define('FOLDER', "flaty_admin");

?>




2. Open admin_menu.php and add new entry for your module as follows -

$ADMINMENU['dashboard'] = 'Dashboard';

$ADMINMENU['user_menu'] = "User";

$ADMINSUBMENU['user_menu']['user_role'] = "User Role";

$ADMINSUBMENU['user_menu']['user'] = "System User";

$ADMINMENU['demo'] = 'Demo'; //Key is a controller name




3. Create demo.php as controller, demo_model.php as model and in views create demo folder and in that folder
two files as list_demo.php for listing of demos and manage_demo.php to manage add and edit operations.

//demo.php basic structure

<?php

class Demo extends CI_Controller {
//Declaration/assignment of class variables.
  var $controller = "demo";
  var $tableName = "demo";
  var $fieldName = "xpDemo";
  var $pageTitle = "Demo";
  var $preName = "xp_";
  var $pageType = "list";
  var $viewContent = array();
  var $formValues = array();


  public function __construct() {
      parent::__construct();
    }
//write your code here
}

?>

//demo_model.php basic structure
<?php
class Demo_model extends CI_Model {
  var $tablename = "xp_demo";
  var $primaryID = "xpDemoID";
  //write your code here
 }
?>

Here

$controller is a name of controller. It is used to check module permissions, create dynamic URLS related to demo module, load model and views.

$tableName is a name of database table for current module

$fieldName is a name of primary key field name

$pageTitle is a name of title

$preName
 is a prefix of your database table's fields


$pageType is a type of your page(for example - list, add, edit or manage)

$viewContent
 is an array of key and values that you want to render on view


$formValues is an array of key and values that you want to render on form


Benefits:



  •     Speeding up the development process
  •     Reusing code across similar project
  •     Stability
  •     Simplicity
  •     Code Integrity

CSVTool

Brief:

CSVTool is simple windows based application developed to perform various operation on CSV file, before its consumption by another application. It helps to rectify the error in CSV file in preliminary stage ensuring smooth running for another application consuming these files. 

Need:

We were required to do various operation on CSV file of larger magnitude on regular basis using SSIS package (SQL Server Integration Service). Depending on this process further operations were performed. Normally we used to get CSV file of around 600 MB.  If CSV files are not in proper format it hammers the execution process creating further problems. To avoid these kinds of situation, we have developed precautionary tool for validating and performing various manipulation operations on CSV file. To smoothen the further execution process and rectify the error in preliminary stage.

How it works:



Available Operations for CSV and TSV file

We have prepared windows application with tabular view for various operations like validate file, replace, file with issues, split file, join file and word count. 

Validate: This is the most important functionality in application, it validates the given CSV file with help of “Separator count” number of commas expected in single record in csv file. It displays total records, number of valid and invalid records and file status.    

Replace: This functionality is used to replace string or char in given csv file and new file is created in specified output location with replaced content.

Issues: This functionality is used to validate the CSV file using above validate functionality and also it creates two different files for valid and invalid records at specified location.

Split File: This functionality is used to break down massive csv file into smaller chunks by specifying the “Split count” number of records in a file. Making it more manageable for user.  

Join File: This functionality is used to club all small CSV chunk (created from above functionality) and joined them to create one single CSV file. One need to provide folder location where small CSV file is present.

Word Count: This functionality is used to get the occurrence of specified word in csv file. 

Available Operations for source type: Other



One has to specify the data separator for other source type and “.txt” is considered as default file extension. Remaining all functionality is same.  





Localization In PHP

Localization In PHP:

Localization is the process of adapting a product or content to a specific locale or market. It allows you converting the existing language of the website to the native language as per the preference. We have worked on several projects which had a special requirement of displaying the texts in their regional language. For ex. If a website is going to be published in Spain so customers want the text to be displayed in Spanish language along with the default English language depending on the specific locale or market.

Usually, programs are written and documented in English, and use English at execution time for interacting with users. So, we use a gettext which is used for localization and internationalization the language. As we have created a HTML page with PHP Script so we write a function for echoing (Display the content on User Interface) with using of gettext.

So, the next question could be how it works? We have created an English website using T_() function, the function which contains the English statement or words and then we have created a .PO file.

What PO file is:

It is translation file which contains the words which you have written in the function.

Suppose,you want to display a string 'Hello World' in 10 different languages, then you would need to write the string like this: T_(“Hello World”) and you need to make 10 different directory with same file name 'messages.po' which contains the word with the language you want. For each converted .po file, you need to add actual conversion of that word in .po file. So, for Chinese we have created a 'zh_CN' directory which have a 'message.po' file and that po file contains English word and the appropriate Chinese word. By using a program (In our case a Dropdown on web page) it will select a language directory and word with matching to that English word and display to user.

How it Works:

When we create a po file using of Poedit (Gettext Translations Editor) Software which is open source. It will compile it & create a mo file. i.e. 'message.mo' which is a binary file. So when we upload the localization on Production server then we don't need a po file. We need only mo file which is a binary file which can't read by end user. Only Computer can read & replace the word and create a HTML and pass to the User interface. So all the words and strings are hidden and secure if you give only a mo file to the Production server.

This all is an one side of the coin. To make it more automated, we have created a web scraper which will ask you which language you have and which language you want. If you provide the desired preference, this web scraper will take your .PO file and read all the texts that needs to be converted and puts in Google Translate. Whatever is the converted string/word, it puts in separate 'message.po' file for the required language. So with the help of this web scraper, you can change any language to any one within few minutes.

AWS Troubleshooting – Remote access to instance is not working.

Brief:

We recently added some restrictions to remote access the server, so we tried to change the default remote desktop port to a different one through “Regedit” but forgot to add the exception in windows firewall, in doing so we lost remote access to the instance.

This post will explain the methods to get the remote access back.

How It Works:

To resolve the issue, we can revert the changes back to default (remote desktop port) in multiple ways. 

Please Note: Before proceeding with the troubleshooting steps below, I would strongly recommend that you create an AMI of the instance or take a snapshot of the root volume since we will be modifying root volume.

Method 1 (Without taking the instance offline):

1. Create a temporary instance with an OS of either same or higher version. You may use t2.micro free tier for temporary instance.

2. Edit security group of impaired instance and allow traffic to TCP ports 135 and 445 temporarily.

3. Download PsTools on temporary instance –
 https://technet.microsoft.com/enus/sysinternals/pstools.aspx.

4. Enable the remote registry using psservice.exe. To do so, you will need the admin password for the impaired instance. Once you obtain the administrator password for the impaired instance, run the command below through the temporary instance - psservice.exe \\ImpairedInstanceIPAddress -u Administrator -p "Password" start remoteregistry. You should get a message informing the status of the remoteregistry service. If you get a message that an instance of remoteregistry is already running, please proceed to step 9.

If you get any error, please raise a ticket with amazon.

5. Open regedit on the temporary instance.

6. In the registry editor, go to File > Connect Network registry.

7. For the object name, enter \\ImpairedInstanceIP and click ok.

8. Enter administrator username and password and click ok.

9. You should now see the remote registry populated in the registry editor. You should be able to revert the changes back.

10. Once changes are reverted, please try to login now.

Method 2 (Take instance offline):

1.  Create a temporary instance with an OS of either same or higher version. You may use t2.micro free tier for temporary instance.

2.  Shut down the impaired instance and detach the root volume.

3.  Attach root volume of the impaired instance as a secondary volume to the temporary instance.

4.  Open diskmgmt.msc and ensure that secondary disk is online.

5.  Open regedit on the temporary instance and select "HKEY_LOCAL_MACHINE".

6.  Click on File and select "Load Hive" and open the system registry hive of the impaired instance by browsing to <secondaryDrive>:\Windows\System32\Config\System.

7.  On the key name, please enter 00System. You should see registry hive being loaded from impaired instance.

8.  Please roll back the RDP default port to the 3389 and close registry editor.

9.  Please bring secondary disk offline and detach secondary disk from temporary instance.

10. Please attach the root volume back to the impaired instance and start the instance. Please try to login now.

AWS Troubleshooting – How to Revert the OS to Last Known Configuration

Brief:

It can harm your AWS operating system if you try to change the registry or anything related to the AWS configurations. The AWS instance OS does not provide the option for System Restore, which we have in the personal Windows OS.

This post explains how you can revert the OS of the AWS instance.

How It Works:

Please ensure you create an AMI or snapshot of the root volume before proceeding to revert the OS back to the last known good configuration. Please follow the steps below:

1. Create another temporary instance in the same availability zone. Please ensure it is 2008 R2 or higher.

2. Stop the impaired instance.

3. Detach the root volume of the impaired instance.

4. Attach the root volume to the temporary instance.

5. In case you do not see the new volume, please open "diskmgmt.msc" (disk management console) to bring the volume online.

6. Open regedit and select HKEY_LOCAL_MACHINE folder.

7. Go to File > select "Load hives".

8. On the second volume, browse the folder containing the hives, usually the path is [SecondDrive:]\Windows\System32\Config and select System.

9. You will be prompted with a dialog box to name the hive. You can choose any name you like for the hive.

10. Once the offline hive is loaded, please open the new imported system hive.

11. Click on the "Select" folder, inside the select folder there will be four (4) keys. ( Current, Default, Failed, LastKnownGood ).

12. Edit the 4 keys inside that folder and add 1 to the current value in that key. i.e: if the current value is 1 replace it with 2. Please ensure you edit all 4 keys.

13. Then go to the offline folder again, hit file and select unload hive.

14. Bring the attached volume offline from the diskmgmt.exe console.

15. Attach the root volume to the original instance and launch the instance.

Payment Gateway Integration

PayUMoney Integration


Now a days as me are moving more towards digitisation, new models, concepts, software's are making their way into the market.  If we talk specifically about websites that operate more into E-commerce and B2C there are few basic things that are necessary for the website to sustain.
Such as customer engagement, customers have become smart and demanding they need softwares/websites which will give them the maximum satisfaction(in terms of time been spend of the website), user friendly flow and the main thing Payment methods.

Its a thumb rule if you want to sell anything online you need to have a payment gateway integrated to your website and that is where PayUMoney comes in.
PayUMoney is an e-commerce application service provider that authorizes credit card payments for e-businesses & online retailers.

For more information please refer:  PayUMoney Integration.


Braintree Payment Gateway Integration

Braintree provides payment processing options for many devices. Braintree provides businesses with the ability to accept payments online or within their mobile application. Its full-stack payment platform can replace the traditional model of sourcing a payment gateway and merchant account from different providers. It provides range of Client SDKs (iOS, Android, Web/Javascript) and Server SDKs (Ruby, Python, PHP, Node.js, Java, .Net).

For more information please refer: Braintree Payment Gateway Integration.

TechProcess Payment

TechProcess Payment Services Limited is India’s leading electronic payments firm. It offers shops online services for accepting electronic payments by a variety of payment methods including credit card, bank-based payments such as direct debit, bank transfer, and real-time bank transfer based on online banking.

Firebase and Google Cloud Storage Introduction

Brief :

Firebase a back-end-as-a-service (BaaS) founded about three years ago. Firebase developed their services platform independent as those services can be used for android, IOS and web. Before one and half year ago Google acquired Firebase. With the help of firebase developers will be easily able to sync mobile devices and web without writing complex code for synchronization. Existing firebase services will be available as it is, in addition google services can be easily ported to use with firebase platform. Acquisition helped Google as well as Firebase and indirectly it become a gift for users and developers. Google got 1,10,000 developers who are using Firebase services and Firebase developers and users will get benefit of google's cloud technology and talent.

Need :

With the help of Google promotion firebase services are unified in mobile and web development.

Firebase provides many services like analytics, cloud messaging, authentication, realtime database, storage, hosting, remote app config, crash reporting, advertisement. Its not over here, google is planning to add more features in stack of firebase. Already some of the new features are announced by the google. Google's existing customers are supposed to move towards Firebase as google one by one embedding their core logic in firebase services.


Features :

1) Firebase Analytics :


Firebase analytics reports let us track user behavior and event fired after users action. Developers can do further analysis for improvements based on this reports. Firebase provide around 500 distinct events to be tracked. This feature is total free for unlimited usage.


2) Firebase Cloud Messaging (FCM):

Firebase provides cross platform messaging solution at no cost. We can notify to app user with notifications as per our need. Up to 4KB of payload can be sent via FCM to client app. Developers who are already using Google Cloud Messaging (GCM) can easily shift to FCM. Lots of boiler plate code is removed with no more permissions in manifest file for android.

For more information please refer: How to add firebase cloud messaging in Android App.

3) Authentication :

Firebase provide authentication services for Google Sign-In, Facebook Login, Twitter and GitHub. If you want your own login module, then firebasae provide easily configurable and ready to use login module. This service also include notifying user actions like updating email, password. Updating actions are notified to users by emails to the user. One time password, email verification are part of authentication.

For more information please refer: How to add authentication in firebase.

4) Firebase Realtime Database (FRD) :


Now there is no need to worry about writing complex database queries, storing and syncing of data with server for your applications. FRD does this all for you on the go with NoSQL database working behind the scene. FRD is cloud hosted database. Data will be available offline and synced across all users once you are online. Millions of users can see the updated data within a second without compromising responsiveness. This is free upto certain extent after that price is quoted.

For more information please refer: How to add firebase real time database in Android App.

5) File storage :


Firebase storage provides secure file uploads and downloads. All kind of user generated content like images, audio, video and documents can be stored with the help of Firebase Storage. This data is stored with firebase authentication protocols. So you do not need to worry about the security. This storage is scale able at run-time. If your app is gaining popularity rapidly then you can scale storage as per packages available.


6) Hosting :

Firebase Hosting is fast and secure static hosting mechanism for web apps. Contents always delivered securely with Zero-configuration SSL build in mechanism. Contents are stored on Global content-delivery network (CDN) on SSD's. So your contents are delivered rapidly to users no matters what is the location of your user. Rapid deployment with single line commands in seconds. Rollbacks and versioning supported to undo any mistakes.


7) App Indexing :


App indexing promotes your app in results on play store and on web search. It also shows your app in instant results on search engines. Android and IOS supports web site association with help of this they interlinked in web results. We can check association preview in IDE to know whether we are redirecting to correct website.


8) Crash Reporting :


It is one of the useful feature desired by the developers. Firebase Crash Reporting system captures all the manual conditions for failures, crashes and exceptions on firebase console. It will helps a lot to improve performance and make your app bug free without asking users to report a crash. Detailed stack trace of crash helps to quick fixing of bugs.


9) Dynamic Links :


Dynamic links are very useful when you want to do promotion of your applications or website. This links redirect user to your application or website from any where on clicking of that link.If your application is not installed then user is promoted to install it, after installation user can open your application from link.


10) Firebase Invites :


Firebase Invites lets your app your send invite to their friends from SMS or e-mails. We can use invitation mechanism to promote our app or to send referral codes. So our app users become advertiser for our app.


11) AdWords :

When we integrate AdWords with Firebase we can focus on audience belonging to particular domain or region. We can gain lots of public focus from marketing campaigns from AdWords.


12) AdMob :


Google AdMob which is used for in app advertisement and make some money can be integrated with Firebase. We do not need to do any changes in existing AdMob configuration. Firebase lets you introduce extra analysis capabilities and user app data. AdMob house ads is free tool that can be used to promote your app in all your user base.


Note: Many more features are in queue, this blog will be updated with new feature releases.


Automate HDInsight Cluster


Brief:


An application (.Net) is implemented to manage Microsoft Azure resources without user interaction. Which automatically creates Azure HDInsight cluster, processes data (using Hive queries) and exports the processed data (using SQOOP queries) to required SQL Database.

Need:

Whenever we have large amount of structured or unstructured data to process. Hadoop is the best solution to process it. Microsoft Azure provides HDInsight service which is based on Hadoop. As HDInsight billing is per hour basis, to reduce the cost we can start HDInsight cluster, process data and delete it after completion. This functionality can be done using the Microsoft Azure portal. But it is not feasible to a user to go to Azure portal daily and create a cluster and process the data. To minimize the manual work, we created an application which will do all above functionality automatically. And it can be scheduled in scheduler to run daily or as per requirement.

How It Works:

Requirements:

·         Need a Microsoft Azure Subscription.

·         SQL Database

·         Azure Blob Storage

Follow the steps below,

1. Upload Raw data to Azure Blob – To manage the Azure blob refer below link, Manage Azure Blob

2. Create Azure HDInsight Cluster - To manage the HDInsight cluster (Create and Delete) refer below link, Create And Delete HDInsight Cluster.

3. After Creation of HDInsight Cluster, we need to submit Hive jobs to process data and store it in HDFS. And transfer the processed data from HDFS to SQL Database. It can be done using Azure SDK. Refer the Url to manage Hive and SQOOP jobs automatically through application. Submit Hive And SQOOP jobs.

4. After Data transferred to SQL Database, you can delete the HDInsight Cluster to save the cost.




AWS Troubleshooting – Instance failure.

Brief: 

Few days back we found that one of our AWS instances stopped working, it was not accessible via remote access and through console it's status checks were failing. This blog post explains how to recover your instance and get it back online!

How It Works:

Method 1:

Let’s try installing the latest version of EC2config service on this instance to get it out of our way. As sometimes no output in the console indicates that the issue is with EC2config service such as misconfigured configuration file, or that windows failed to boot properly. Please follow the steps below to install latest version on an unreachable instance:
Use the following procedure to update the EC2Config service on a Windows Server instance that is inaccessible using Remote Desktop.
To update EC2Config on an Amazon EBS-backed Windows instance that you can't connect to

1. Open the Amazon EC2 console at https://console.aws.amazon.com/ec2/.

2. In the navigation pane, choose Instances.

3. Locate the affected instance. Open the context (right-click) menu for the instance, choose Instance State, and then choose Stop.

Warning:
When you stop an instance, the data on any instance store volumes is erased. Therefore, if you have any data on instance store volumes that you want to keep, be sure to back it up to persistent storage.


4. Choose Launch Instance and create a temporary t2.micro instance in the same Availability Zone as the affected instance. Use a Windows Server 2003 Amazon Machine Image (ami). If you use a later version of Windows Server, you won't be able to boot the original instance when you restore its root volume. To find an AMI for Windows Server 2003, search for public Windows AMIs with the name Windows_Server-2003-R2_SP2.

Important:
If you do not create the instance in the same Availability Zone as the affected instance you will not be able to attach the root volume of the affected instance to the new instance.


5. In the EC2 console, choose Volumes.

6. Locate the root volume of the affected instance. Detach the volume and attach it to the temporary instance you created earlier. Attach it with the default device name (xvdf).

7. Use Remote Desktop to connect to the temporary instance, and then use the Disk Management utility to make the volume available for use.

8. Download the latest EC2Config from Amazon Windows EC2Config Service. Extract the files from the .zip file to the Temp directory on the drive you attached.

9. On the temporary instance, open the Run dialog box, type regedit, and press Enter.

10. Choose HKEY_LOCAL_MACHINE. From the File menu, choose Load Hive. Choose the drive and then navigate to and open the following file: Windows\System32\config\SOFTWARE. When prompted, specify a key name.

11. Select the key you just loaded and navigate to Microsoft\Windows\CurrentVersion. Choose the RunOnce key. If this key doesn't exist, choose CurrentVersion from the context (right-click) menu, choose New and then choose Key. Name the key RunOnce.

12. From the context (right-click) menu choose the RunOnce key, choose New and then choose String Value. Enter Ec2Install as the name and C:\Temp\Ec2Install.exe /quiet as the data.

13. Choose the HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon key. From the context (right-click) menu choose New, and then choose String Value. Enter AutoAdminLogon as the name and 1 as the value data.

14. Choose the HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon> key. From the context (right-click) menu choose New, and then choose String Value. Enter DefaultUserName as the name and Administrator as the value data.

15. Choose the HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon key. From the context (right-click) menu choose New, and then choose String Value. Enter DefaultPassword as the name and enter a password in the value data.

16. In the Registry Editor navigation pane, choose the temporary key that you created when you first opened the Registry Editor.

17. From the File menu, choose Unload Hive.

18. In the Disk Management Utility, choose the drive you attached earlier, open the context (right-click) menu, and choose Offline.

19. In the Amazon EC2 console, detach the affected volume from the temporary instance and reattach it to your instance with the device name /dev/sda1. You must specify this device name to designate the volume as a root volume.

20. Start the instance.

21. After the instance starts, check the system log and verify that you see the message Windows is ready to use.

22. Open Registry Editor and choose HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft \Windows  NT\CurrentVersion\Winlogon. Delete the String Value keys you created earlier: AutoAdminLogon, DefaultUserName, and DefaultPassword.

23. Delete or stop the temporary instance you created in this procedure.

Method 2:

If the above doesn't work, I would suggest using EC2 savior tool to check if the settings within the instance are set to default. Please follow the steps below:

1. Launch a new Windows 2008 R2 instance just for recovery proposes.

2. Stop the instance and create an AMI (Amazon Machine Image) as backup of your instance.

3. Install the .Net Framework 3.5 Features using the following command on the Windows 2008 recovery instance: DISM /online /enable-feature /FeatureName:NetFx3

4. Download and unzip the AWS EC2 Savior tool on recovery instance: http://ec2-downloads-windows.s3.amazonaws.com/AWSDiagnostics/EC2Savior.zip

5. From the AWS Management Console find the root volume of your problematic instance in the EC2 Volumes menu and detach it from the instance.

6. Attach the volume to the recovery instance with the default device name (usually xvdf): 

7. RDP to the recovery instance and now you should have the root volume of your problematic instance as D:\ drive. If don't see the new volume, open the Windows Disk Management (diskmgmt.msc), select the disk, right click and click online

8. Open the AWS EC2 Savior on the recovery instance and click on the following options: Turn Firewall OFF, Enable RDP and Set Auto Start and Enable DHCP.

9. Close AWS EC2 Savior.

10. Detach the drive, attach to the original instance as /dev/sda1 and start that instance.

A/B Testing


Brief:

Every website or a web application has a goal of getting more users than just visitors. This rate of converting visitors into user is called as “Conversion Rate”. A/B Testing is the process of creating and running two or more variations of a webpage to see which performs best and gets more conversion rate.


When you decide to test your page using A/B Testing, you can test everything on it like header, footer, controls, images, videos etc. You can create multiple versions of a home page by rearranging, removing, adding the UI elements. Running an AB test that directly compares a variation against a current experience lets you ask focused questions about changes to your website or app, and then collect data about the impact of that change.

Need:


If you have a website you need to sure that the users like it in terms for user interface functionality and performance. One of our projects needs the analysis of the conversion rate of the user. It was having a registration page with lots of fields, and this lengthy registration process was the huddle for converting visitors to user, so we decided to create different variations for the registration page with minimum fields.

How it Works:


There are many tools that can be used for the A/B testing but we used optimizely (https://app.optimizely.com/) for our use.

Consider a scenario where you want to A/B Test a registration page for its conversion rate. Following steps will explain how to create different variations for the.

1. Create account on the https://app.optimizely.com/ and login, this will redirect you to dashboard page.



2. After this you can see the dashboard where you can find the “New Experiment” button to create new variation for the particular page.

3. Add your experiment name and the target page URL for which you want to create the variations. Please note that URL should not be the local one.





Experiment Name: TestAB.
Experiment URL: www.abregistration.com

4. “Editor” will open the variation editor for creating different variation pages from the URL provided for experience.





This is the original version of the registration page. You can edit the page by right clicking on the page were one can edit the page.


You can remove the element, rearrange it, or classes and html can be edited. One can insert more control from this. Following images show the different variations of the original page

Variation 1:



Variation 2:



5.  Now your variations are ready you can go to settings in the dashboard and get the script url for the experiment.
 


6. Copy highlighted Script and paste it into <head> tag of your pages which will run under this experiment.

7. Start Experiment.


Routing your traffic to different variations:


Now the important part of this all testing experiment comes where you have to divide the traffic of your web page between these variations. Traffic is randomly assigned to each page variant based upon a predetermined weighting – for example, if you are running a test with 2 page variants, you might split the traffic 33.33/33.33/33.33 or 40/40/20. Visitors are typically cookied so that they will always see the same version of the page (to maintain the integrity of the test). The main factor that decides how much weight you would ascribe to your page variants during a test is timing – whether you are starting the test with multiple variants at the same time or testing new ideas against an established page.




Result and Conversion rates for the Variation:
After successfully running the experience the result can be seen from the dashboard which widely shows the unique visitors, there engagement, conversion rate from different variations..

 

 




Podcast

Michael Patterson sat down with the CEO of Boston Byte, Mustapha Shaikh to discuss the significance and rapid digitization of the healthcar...