Category Archives: Web Application Development

Web Accessibility

Overlooking Web Accessibility

The Internet is an ever-increasing storehouse of knowledge. The web and the internet as a whole serve as an important resource in many aspects of our lives: education, employment, recreation, commerce and more. Web Accessibility simply means that the web is to be made accessible to everyone. And that includes people with special abilities too – an aspect generally overlooked in haste. 

The concept of Web Accessibility has been around for a decade, but it is unfortunate that true meaning in its entirety has been lost on many of us, the web developers. It’s time that we built ramps to our sites so that it benefits not only people with disabilities but also enhances the experience of all types of users as a whole.

……………………………………………………………………………………………………


Let’s see some examples:  When you are watching a video in a noisy environment and cannot perceive the audio correctly. Without being able to hear the audio, you have to guess what the whole video is about. It can be frustrating, right?


Let’s take another one:  If you have broken your arm in an accident and can’t use the mouse to explore the web. You have to remain cut off from the internet until you recover. Or find ways to manage to access it with difficulty, mostly through pain, or be at the mercy of people who would spare some time to assist you.

There are people out there who face these challenges at every instance of their attempts to access the Web. The true essence of Web Accessibility lies in addressing such concerns and ensuring that the Web is accessible by all, without any discretion. 

The World Wide Web Consortium(W3C) published a set of guidelines, Web Content Accessibility Guidelines or WCAG 1.0 in 1999, as an initiative to the Web Accessibility Initiative(WAI) project. The revised version, WCAG 2.0 was published in 2008, which is more technology-neutral, and therefore, is widely accepted by the developers to make their site more accessible.

It may seem like a huge task to accomplish at first, but in reality, it takes only small steps to make your website accessible to all. Steps that should be undertaken are 

  • Using alternative texts, and descriptions for the images.
  • Adding subtitles and transcripts for videos.
  • Ensuring that your site is fully and equally accessible by the keyboard.
    Making use of the Accessible Rich Internet Tags (ARIA) tags.
  • Having a good color contrast.

These are some tools which can help to make your website more accessible:

So, let’s look at the bigger picture and start taking the necessary steps towards building a platform that is more accessible and more usable, and fulfill our responsibilities as web developers. It’s high time we focused on the masses who might be unable to access the internet just like normal people can. The onus lies with us to take individual responsibility of the same and spread the awareness to others. The realization that mere oversight or negligence on our part can be the source of much trouble for others should guard us against it. 

……………………………………………………………………………………………………

The views and opinions expressed in this article are those of the author. To know more about our company, please click on Mindfire Solutions. 

Spread the love
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
AWS-Lambda-Computing

Getting started with AWS Lambda

AWS Lambda is an ingredient in amazon serverless computing. Lambda allows us to run server-side code without thinking about the server. It abstracts all of the other components i.e. servers, platforms, virtual machines, etc. that are needed to run server-side code. So we can just focus on the code and not the server. That way the time to production or deployment becomes very less. We can write a lambda function, configure it and run it in minutes.

Another great benefit of lambda is that we just pay for the compute time we consume. That means it will charge only for the time that our code is actually executed. Also, the first one million requests are free. We have to pay for request thereafter. This a very cost-effective way to run the server-side code. To get started first we need an AWS account. After creating the account we need to go to the AWS management console.

……………………………………………………………………………………………………

Create a Lambda function with Node.js

Let’s create a lambda function that picks a random number between 2 given number. First of all, login into the AWS console and then click the “Lambda”  button under the compute section. Then you can come to the “Select blueprint” section. Then, under the select runtime combo box, select the latest node.js version. Amazon gives you some basic blueprints there. We will just select the simple hello world function to start with.

Image1-Lambda

We will skip to the configure function section to create a new function. We will name our function random-number-generator. Then specify the description. Then the run time that is node 4.3. Our function is a small function so we will select to Edit code inline. The blueprint of amazon gives a very basic function.

We will change this default code to generate our random number between two given numbers.

In the beginning, just add console.log(‘Loading function’). This will help in debugging the code.’ In the default amazon function, there are some event values that are logged and in the end, it returns the first value in the callback function. Then we will add a handler function to the exports variable. And this function receives 3 variables. I.e. event, context, and callback.

 exports.handler = (event, context, callback) => {
            console.log(‘value 1 =’ , event.key1);
            console.log(‘value 2 =’ , event.key2);
            console.log(‘value 3 =’ , event.key3);
            callback(null, event.key1)
}

The callback is something we will call when our result is ready and we want to send some result back to the user. It takes 2 parameters. 1st one is the error and the second one is the success message. The variables could be string or JSON object.

We will delete all these default codes and write our own code. So, first of all, we will define and set the minimum and maximum number.

 exports.handler = (event, context, callback) => {
           let min = 0;
           let max = 10;
}

Now we will define another variable for the random number.

exports.handler = (event, context, callback) => {
            let min = 0;
            let max = 10;
            let generatedNumber = Math.floor(Math.random() *  max) + min;
}

Mmath.random() generates a random number between 0 and 1. And it’s a floating-point number, so we multiplying it by max and the round it and add the minimum. That gives us a random number between the minimum and maximum number.

Now we are done and want to return the random number. So we will call the callback function.

callback(null, generatedNumber);

 Here there is no error handler implemented so we will just return null in place of the error parameter. And the  generatedNumber.

That’s it, the code part is done.

Now scroll down. And let’s define our handler. The default is index.handler. Index refers to the filename and handler is the name of the variable that is attached to the exports. We will leave this by default.

Now, we will create a new Role and give the role name as ‘basic-lambda-execute-role’. Then under the policy template, we will select ‘Simple Microservice Permissions’.

Next is the advanced settings.

Each lambda function will run in a container & that container will have some memory allocated to it. So here we can pick how much memory should be allocated to our function. Our function is a basic function. So will select 128MB. That is more than enough for our function.

This does not only defines the memory allocated to the function but also the amount of processing power amazon uses to execute our function. If we have a more resource-intensive function then we can increase the memory usage and we will get a faster performing function. Then for the timeout, we will leave it to 3 secs that is enough. If our function does not finish within this timeout then Amazon will return an error message. We will leave the VPC to no VPS and move next. In the next page, amazon lets us review our configuration for our function. And then click the create function. There we will get the msg that our function is created. And we can see the dashboard for our function.

On the dashboard we can see our code, configuration, triggers, and also we can monitor our function as well

Let’s test it by clicking the Test button there. If we scroll down we can find that the function has executed successfully and also we can see the result random number.

So that’s it. We have our random number generator lambda function is running now.

……………………………………………………………………………………………………

The views and opinions expressed in this article are those of the author. To know more about our company, please click on Mindfire Solutions. 

Spread the love
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
Image-Accounting Software Tools Information Exchange

Integrating Multiple Accounting Tools for Information Exchange

This article will be helpful for those developers who are trying to integrate multiple accounting tools with a custom web or desktop application; with the accounting tool database exposed either using ODBC/JDBC or APIs.

The solution was explored when I worked in a project where there was a need to automate the data transmission (bi-directional) between different accounting tools (like Adagio, QB Desktop and Online version, etc.) interfacing with a central database. And make it possible for devices (like iPhone) to transmit data to the central database and subsequently to the accounting tools. In a nutshell, the main application, devices and multiple accounting tools needed to be in sync all the time/whenever required.

……………………………………………………………………………………………………
The Solution

The major features that were provided/implemented:

  • Connector: it acts as a bridge between web API and desktop/online accounting tool.
  • Data transmission between different entities using customized XML
  • Logging request and response on each event with a different status
  • The parser in the background (it basically parses the data from XML and maps it with the database)
  • Common database structure to handle request and response for different tools

Following diagram shows the flow and integrations process-:

 

Here, the user has the freedom to use different custom applications based on need. For e.g. in some cases where the API is exposed to the outside world for web accounting tools, we can merge the request-and-response processes in one place along with the parsing of data.

#1 Window Service

It is being used for parsing data coming internally from accounting tool in a specified format. Here, the approach can change as per need because sometimes the customer doesn’t want to put extra load on the server; then we can do it at the same level (i.e. in the request-and-response process).

#2 Web Service/Web API

It is used for running the connector. Actually, the connector will act as a bridge between the accounting tools and the central database.

#3 Main web or window application-

Here we need to have one page which will facilitate the user to generate requests in specified formats (XML or JSON) for required entities (like retrieving customer data or adding a new customer in the Accounting tool).

#4 Accounting tool

Accounting tool which exposes database/API to the outside world. Nowadays most of the applications have shared API or database to the outside world for integration with other applications.

The diagram below describes the data flow between different applications in a stepwise manner:

 

 

……………………………………………………………………………………………………
Error handling and Logs

Since accounting tools are being used here, it means there are bound to be information pertaining to the flow of money involving different vendors and stakeholders. This section thus holds a lot of relevance. The provision for logging is done either in the database or somewhere else on the disk. Since there different levels and sublevels like web service/API for connector  has 4 important  sublevels (Authenticate(), SendRequest(), ReceivedResponse() and CloseConnection() ), it is highly relevant to know at every step exactly what data got processed. Also, the availability of results opens up the provision for performing analyses later, whenever needed. Logging makes it possible to handle internal errors as well.

Security Handling 

The whole solution should follow the security rules as per the industry norms like SSL implementations for all web-based calls, Cryptographic methodology (wherever required), AntiForgery checks once session established, etc.

……………………………………………………………………………………………………

The views and opinions expressed in this article are those of the author. To know more about our company, please click on Mindfire Solutions. 

Spread the love
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

10 Best Ruby Web Frameworks in 2018

10 Best Ruby Web Frameworks in 2018In addition to being a general purpose programming language, Ruby supports object-oriented, functional, and imperative programming paradigms. The programming language further focuses on simplicity and productivity. Its expressive syntax rules enable programmers to build web applications by writing natural-to-read code. Many developers even opt for Ruby to create prototypes without putting extra time and effort.
. Continue reading 10 Best Ruby Web Frameworks in 2018

Spread the love
  • 8
  • 3
  •  
  • 2
  •  
  •  
  •  
  •  
  •  
    13
    Shares

Python Web Frameworks To Learn In 2018

Python Web Frameworks 2018Unlike other web programming languages, Python enables developers to build web applications with concise, readable, and maintainable code. In 2018, many web developers will prefer Python to other server-side scripting languages to speed up web application development and simplify web application maintenance. But Python does not provide the built-in features required to accelerate custom web application development. The programmers use a number of Python web frameworks to write custom web applications in Python quickly and efficiently. Continue reading Python Web Frameworks To Learn In 2018

Spread the love
  • 17
  • 2
  •  
  •  
  • 1
  •  
  •  
  •  
  •  
    20
    Shares

Laravel 4 vs Laravel 5

Laravel 4 vs Laravel 5A large percentage of web developers nowadays prefer Laravel 5 to other PHP frameworks to avail a number of robust features. Laravel simplifies development of large and complex web applications by providing a built-in template engine, object relational mapper (ORM) system, authentication library, and native security features.In one of our previous blogs: Laravel vs CodeIgniter, we had compared Laravel with another popular PHP Framework CodeIgniter. Laravel has been evolving consistently to meet the all possible needs of modern web application developers. Today, we will compare Laravel 4 vs Laravel 5 and see how Laravel has been continuously improving itself. Continue reading Laravel 4 vs Laravel 5

Spread the love
  • 9
  • 2
  •  
  • 1
  • 1
  •  
  •  
  •  
  •  
    13
    Shares

Laravel vs CodeIgniter: A Brief Comparison

laravel vs codeigniter

The features provided by PHP frameworks help developers to create custom web applications rapidly according to varying business needs. The web developers can further use open source PHP frameworks to curtail development time significantly without increasing project overheads. But the choice of web framework differs from one developer to another. The usage statistics posted on several websites depict that both Laravel and CodeIgniter are hugely popular among PHP programmers. Thats why Laravel vs CodeIgniter has been one of the favourite discussion topics for  PHP developers and enthusiasts.

According to the annual framework popularity survey conducted by SitePoint, Laravel is more popular than CodeIgniter.  But the popularity and market share of a web framework do not depict its functionality, performance, and usability accurately. The smart web developers always compare the features, functionalities and performance of various PHP frameworks according to precise needs of each project. Hence, the developers need to understand the important points of distinction between Laravel and CodeIgniter.

Understanding Important Differences between Laravel vs CodeIgniter

Support for PHP 7

As a major release of the server-side programming language, PHP 7 comes with several new features and enhancements. The new features enable programmers to enhance the performance of web applications and reduce memory consumption. Both Laravel and CodeIgniter support version 7 of PHP. But many programmers have highlighted the issues faced by them while developing and testing CodeIgniter applications on PHP 7.

Built-in Modules

Most developers divide large and complex web applications into a number of small modules to simplify and speedup development process. Laravel is designed with built-in modularity features. It enables developers to divide a project into small modules through bundle. They can further reuse the modules across multiple projects. But CodeIgniter is not designed with built-in modularity features. It requires CodeIgniter developers to create and maintain modules by using Modular Extension additionally.

Support for Databases

Both PHP frameworks support an array of databases including MySQL, PostgreSQL, Microsoft Bi, and MangoDB. But CodeIgniter, unlike Laravel, additionally supports a number of databases including ORACLE, Microsoft SQL Server, IBM DB2, orientdb, and JDBC compatible. Hence, CodeIgniter supports a higher number of databases that Laravel.

Database Scheme Development

Despite supporting many popular databases, CodeIgniter does not provide any specific features to simplify database schema migration. But the database agnostic migrations feature provided by Laravel makes it easier for programmers to modify and share the database schema of the application without writing complex code. The developer can further develop database schema of the application easily by combining the database agnostic migration with the schema builder provided by Laravel.

Eloquent ORM

Unlike CodeIgniter, Laravel enables developers to take advantage of Eloquent ORM. They can use the object reational mapper (ORM) system to work with a variety of databases more efficiently by ActiveRecord implementation. Eloquent ORM further allows users to interact with databases directly through the specific model of individual database tables. They can even use the model to accomplish common tasks like inserting new records and running database queries.

Built-in Template Engine

Laravel comes with a simple but robust template engine like Blade. Blade template engine enables PHP programmers to optimize the performance of the web application by enhancing and manipulating views. But CodeIgniter does not come with a built-in template engine. The developers need to integrate the framework with robust template engines like Smarty to accomplish common tasks and boost the performance of the website.

REST API Development

The RESTful Controllers provided by Laravel enables Laravel developers to build a variety of REST APIs without putting extra time and effort. They can simply set the $restful property as true in the RESTful Controller to build custom REST APIs without writing additional code. But CodeIgniter does not provide any specific features to simplify development of REST APIs. The users have to write additional code to create custom REST APIs while developing web applications with CodeIgniter.

Routing

The routing options provided by both PHP frameworks work identically. But the features provided by Laravel enable developers to route requests in a simple yet efficient way. The programmers can take advantage of the routing feature of Laravel to define most routes for a web application n a single file. Each basic Laravel route further accepts a single URI and closure. However, the users still have option to register a route with the capability to respond to multiple HTTP verbs simultaneously.

HTTPS Support

Most web developers opt for HTTPS protocol to make the application send and receive sensitive information securely. Laravel enables programmers to define custom HTTPs routes. The developers also have option to create a specific URL for each HTTPS route. Laravel further keeps the data transmission secure by adding https:// protocol before the URL automatically. But CodeIgniter does not support HTTPS fully. The programmers have to use URL helpers to keep the data transmission secure by creating pats.

Authentication

The Authentication Class provided by Laravel makes it easier for developers to implement authentication and authorization. The extensible and customizable class further allows users to keep the web application secure by implementing comprehensive user login and keeping the routes secure with filters. But CodeIgniter does not come with such built-in authentication features. The users are required to authenticate and authorize users by writing custom CodeIgniter extensions.

Unit Testing

Laravel scores over other PHP frameworks in the category of unit testing. It enables programmers to check the application code thoroughly and continuously with PHPUnit. In addition to being a widely used unit testing tool, PHPUnit comes with a variety of out-of-box extensions. However, CodeIgniter does not come with any built-in unit testing tools. Hence, programmers have to use additional unit testing tools to assess the quality of application code during the development process.

Learning Curve

Unlike Laravel, CodeIgniter has a small footprint. But Laravel provides more features and tools than CodeIgniter. The additional features make Laravel complex. Hence, the beginners have to put extra time and effort to learn all aspects of Laravel, and use it efficiently. The beginners find it easier for learn and use CodeIgniter within a short amount of time.

Community Support

Both Laravel and CodeIgniter are open source PHP framework. Each framework is also supported by a large community. But many web developers have stated that members of the Laravel community are more active than members of CodeIgniter community. The developers often find it easier to avail online help and prompt solutions while developing web applications with Laravel.

On the whole, the PHP developers can avail a number of additional features by opting for Laravel. But the beginners have to put extra time and effort to learn and use Laravel effectively. The developers still need to evaluate the features of Laravel vs CodeIgniter according to the specific needs of each project to pick the right PHP framework.

Spread the love
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •