Why should you migrate from MySQL to MariaDB?


technical reasons to migrate from MySQL to MariaDB: MariaDB offers several advantages in terms of performance and features.

First and foremost, MariaDB offers more and better storage engines. NoSQL support, provided by Cassandra, allows you to run SQL and NoSQL in a single database system. MariaDB also supports TokuDB, which can handle big data for large organizations and corporate users.

MySQL’s usual (and slow) database engines MyISAM and InnoDB are replaced in MariaDB by Aria and XtraDB respectively. Aria offers better caching, which makes a difference when it comes to disk-intensive operations. Temporary tables also use Aria, which speeds up complex queries, such as those involving GROUP BY and DISTINCT. Percona’s XtraDB gets rid of all of the InnoDB problems with slow performance and stability, especially in high load environments.

Additional, unmatched features in MariaDB provide better monitoring through the introduction of microsecond precision and extended user statistics. MariaDB also enhances the KILL command to allow you to kill all queries for a user (KILL USER username) or to kill a query ID (KILL QUERY ID query_id). MariaDB also switched to Perl-compatible regular expressions (PCRE), which offer more powerful and precise queries than standard MySQL regex support.

In addition to more features, MariaDB has also applied a number of query optimizations for queries connected with disk access, join operations, subqueries, derived tables and views, execution control, and even explain statements. To see what these mean for database performance, visit the MariaDB optimizer benchmark page.

In addition, in the latest Red Hat 7 release, MariaDB replaces MySQL in the default software repository. This means automatic migration to MariaDB for most people who use the default distribution packages. Corporate users’ migration to MariaDB will be facilitated with additional support from Red Hat.

Read each MariaDB version’s the release notes to learn about all the new features and improvements. Naturally, the latest version (currently 10.0) has the most new features and improvements, but if you are focused on stability, you may want to deploy an older, time-tested version such as 5.5.

For all of the reasons cited here, a large number of former MySQL users, including Wikipedia, have migrated to MariaDB, and in the process have gained a modern, stable, powerful, and fast database system.

Advertisements

Washim – Unveiling the Hidden Stories of its Name


The city of Washim in Maharashtra is steeped in antiquity with many fascinating stories hidden i

n its name.

The origins of Washim dates back to the ages of myths and legends. It is believed that the great sage Vatsa chose to serve his penance here. Many gods descended to confer their blessings upon him and thus, the place came to bear his name, Vatsagulma. Sacred texts say this was once a part of the vast Dandakaranya forests that stretched across central India and that the sage Vatsa built a hermitage here. There are references to Vatsagulma in the great epics Mahabharata and Ramayana. Another Sanskrit work, Vatsagulmyamahatmya offers detailed information about the town.

In the ancient Prakrit language, Vatsagulma was referred to as Vachchoma which changed over time to Vashima.

In 1939, archaeologists excavated the ‘Washim plates’ which established Washim’s etymological link with Vatsagulma, the thriving capital of a branch of the Vakataka dynasty dating 330 A.D. –500 A.D. During their reign, Washim became the nerve centre of a vast, prosperous empire. In the 18th century, Washim was an important cloth trading centre.

Several old temples and sacred spots remain even today, a testament to Washim’s spiritual significance through the ages.

Which web server: Apache vs ISS


Apache HTTP Server

The Apache HTTP server is an open source Web server application developed by the Apache Software Foundation. The server software is freely distributed, and the open source license means users can edit the underlying code to tweak performance and contribute to the future development of the program.

Although Apache will run on pretty much any operating system, it is frequently used in combination with the Linux operating system, which is also open source. These two combined with MySQL and PHP database and scripting language comprise the popular LAMP Web server solution.

The main advantages of Apache and LAMP server systems are:

  • Lower costs, since there are no software licensing fees
  • Programming flexibility due to the open source
  • Enhanced security. Since Apache was developed for a non-Microsoft operating system, and the majority of malicious programs have traditionally been written to take advantage of vulnerabilities in Windows, Apache has always enjoyed a reputation as a more secure option than Microsoft’s IIS.

Microsoft Internet Information Service

Microsoft’s IIS is the second most popular Web server software. It consists of a series of services including File Transfer Protocol (FTP), Hypertext Transfer Protocol (HTTP), Simple Mail Transfer Protocol (SMTP) and others that enable a Windows machine to manage Web sites. The latest version also includes various modules for security, caching, logging, compression and diagnostics.

Because IIS is provided for Windows systems only, the choice to use IIS necessitates the choice of a Windows Server, and therefore increases running costs. Windows is also prone to more malware attacks, and has a reputation as a less secure server option. So why might you consider an Windows/IIS option over a LAMP system?

  • Windows and IIS are supported by Microsoft, whereas Apache is supported only by the user community
  • IIS supports Microsoft’s .NET framework, and ASPX scripts
  • Media pack modules are available to enable audio and video content streaming

Summary

If cost is your primary consideration, the LAMP combination will work out cheaper as there are no licensing costs. Where security is concerned, Apache is widely acknowledged as the more secure option. If you want to run anything other than a Windows operating system on your servers, you not be able to run IIS. However, if you want to run a script that relies on ASPX, you will be tied to the IIS on Windows platform.

LAMP vs WAMP


In the world of web development and hosting, two main operating system platforms play an important role namely: Linux and Windows. Each has its own set of features, advantage and disadvantage.

LAMP – LAMP stands for Linux -Apache – Mysql – PHP.

  • Open source
  • Ease of use
  • Highly reliable and flexible
  • Available free of cost. Hence this combination is popular among web developers
  • It is easy to build, deploy and host an application with these components.
  • By default Linux has these components. Hence a fresh installation of Linux is enough to include these components.
  • LAMP offers greater performance level.

WAMP – WAMP stand for Windows – Apache-Mysql-PHP

  • Simple installation, configuration and maintenance
  • Powerful
  • Multiple add-ons to extend its functionality
  • Easily flexible

Comparison – WAMP Vs LAMP

PHP works on both Linux and Windows.

  • PHP was made for Linux. Hence it works best in Linux than in Windows Operating system.
  • PHP comes default in Linux, whereas in Windows it has to be installed using third party tool like (XAMPP and WAMP)
  • When comes to Security, Linux has always been a much secured operating system. Whereas Windows is easily vulnerable to Virus attack.
  • Linux machine handles better server load than windows and seldom require reboots.
  • On performance Linux system are always superior to windows.
  • Website designed to be hosted in Linux can easily be moved to windows, whereas vice versa is not possible.
  • Software licenses are free in Linux, while you have to pay more for license and upgrades in windows.

Thus Linux based hosting is always cost-effective, reliable and stable. However it is very difficult to conclude on which one is better. But based on the specific needs better choice of OS can be made.

10 Effective Pharmacy Management Tips


1. Create a structured work environment

As the manager of an independent pharmacy, it’s vital to create and maintain a structured work environment. Organizational skills are imperative to any successful business, your pharmacy included. Start by creating an agenda and maintaining a regular work schedule to keep everyone on task.

2. Determine employees’ strengths and weaknesses

Determine your employees’ strengths and weaknesses, and then establish their daily duties around their strengths. This will guarantee more structure for your business because everyone will have a specified role to fill. Your employees will also likely have higher job satisfaction.

3. Show your appreciation

Show that you appreciate your employees through rewards and recognition. Motivate them to do their best by recognizing employees who go above and beyond their regular duties. For example, establish an employee of the month or year award.

4. Promote teamwork

Encourage teamwork in your pharmacy by regularly organizing staff meetings that promote social cohesion and team building. When you show that you care for your employees, they’ll be more likely to help strengthen and build your pharmacy business.

5. Determine your goals

Set goals for your business. What do you want to accomplish professionally in the next five years? Would you like to open a second location? Do you want to offer new pharmacy services? Be sure to share your goals with your employees. When you communicate your pharmacy’s goals, your employees will be more likely to take ownership of the goals and help you achieve them.

6. Be a leader, not just a boss

Your duty as manager is to be a leader for your employees. You manage, motivate and help guide them. Although it’s imperative to maintain your authority, being a manager requires strong leadership, not just being a boss.

7. Communicate effectively

Proper communication is not only critical with your patients, but with your employees, as well. Miscommunication can lead to errors, office disputes or confusion. Being a pharmacy manager means taking the extra effort to communicate effectively.

8. Be a strong leader

Top qualities of strong leaders include being able to work effectively with others, possessing a positive attitude and being goal-oriented. For example, you might notice an introverted employee wanting to speak up at a team-building meeting, but being too shy. As a leader, it’s up to you to bring your employee into the conversation. Being a leader isn’t just about being respected or well liked, it’s about helping others.

9. Be a problem solver

As the owner or manager of an independent community pharmacy, you often have to deal with angry patients or disgruntled employees. Help your employees solve problems by being someone they can come to when conflict arises.

10. Know when to take a break

Managing a pharmacy is a challenging task that requires dedication and hard work. Many days your job may seem draining, and it’s imperative to know when to take a break and relieve some stress. Pharmacy management is demanding, and even you need a break once in awhile.

Web application architecture: Components, models and types


The internet is steadily moving towards active user engagement and extended functionality offered by web apps. As they are replacing websites, more and more developers are interested in how to develop web apps and attract more visitors to their web resources.

One of the challenges any aspiring developer can encounter before trying their hand in web application development is choosing the type and the component model of web application architecture. Our article will dot the ‘i’s on the matter and help you choose well.

web app achitecture

Web application components

Web application architecture is a pattern of interaction between web application components. However, this definition is somewhat ambiguous, since when we talk about components of a web application, we can mean two things.

The first one features UI/UX web application components: dashboards, notifications, activity logs, statistics, settings, and many others. As you may have guessed, it has nothing to do with a web app architecture we want to discuss here, but rather with an interface layout plan.

The two main structural components of a web application are client and server sides. A client is a users friendly representation of a web app’s functionality that a user interacts with. Developed in HTML, JavaScript and CSS and existing within the user’s web browser, it doesn’t need any specific OS/devices related adjustments.

To build a server side you need PHP, Python, Java, Ruby on Rails, .NET or Node.js development skills. This side usually consists of at least two more parts: app logic, or the main control center, and database, where all persistent data is stored. There can be also other components, which we’ll discuss in the next section.

Models of web app components

For a web app to be stable and fail-proof, it’s important to leverage components of a web application and choose a model that suits your specific business needs.

One web server (with database)

This is the simplest and the most risky model, where a single database is a part of the web app’s only server. If the server goes down, so does the web app. Such a raw model may suit some test projects or private practices. Still, if you want your web app to be reliable, we suggest looking at the other options.

Two+ web servers, one database

To scale web servers horizontally, you need to have your database run from a physically separate machine than a webserver. The idea is for a webserver not to store any data: even when it gets information from a client, the webserver processes it, writes the data to the database, and forgets about it. This is also known as ‘stateless architecture’.

With at least two web servers, you avoid a single point of failure. Even if one of the web servers will ever go down, another one will take over immediately. All requests will be automatically readdressed to the new server, and the web app will keep running. Also, a database run from a separate machine is better protected and vetted. Still, if your only database crashes, the entire system will crash as well.

Two+ web servers, two+ databases

With this model, you have two options: databases store identical data or have the data evenly distributed among them. In the first case, no more than 2 databases is usually needed; when one is down, the other can replace it, loss-free. Since data aren’t replicated in the second case, some data may become temporarily unavailable if one of the many databases crashes.

Still, this model is considered the most fails proof: neither web servers, nor databases have single points of failure. If the scale is large, with more than 5 web servers or databases, it’s also wise to have load balancers installed. They will analyze all incoming requests and shrewdly allocate them to keep the workload under control.

Types of web application architecture

Regardless of the model, all web application components always work simultaneously and create an integral web app. Depending on how the app logic is distributed among the client and server sides, there can be various types of web application architecture.

Legacy HTML web app

According to the very first and basic web app architecture, a server, consisting of web page construction logic and business logic interacts with a client by sending out a complete HTML page. To see an update, the user needs to fully reload the page or, in other words, to have the client send a request for an HTML page to the server and load its entire code once again. Look at this type’s web application architecture diagram below.

Legacy HTML web app architecture diagram

Since all the logics and data are stored on the server and the user doesn’t have any access to it, this architecture type is highly secure. Still, due to constant content reload and huge data exchange, it is more common for static websites than actual web apps.

Widget web app

In this type, the web page construction logic is replaced by web services, and each page on the client has separate entities called widgets. By sending AJAX queries to web services, widgets can receive chunks of data in HTML or JSON and display them without reloading the entire page.

Widget web app architecture diagram

With real-time widget updates, this type is more dynamic, mobile-friendly and almost as popular as the next type. Yet, this web application architecture requires longer development time and is less secure due to the app logic partially shifted to the exposed client side.

Single-page web app architecture

This is the most modern web application architecture, where you download a single page only once. On the client side, this page has a JavaScript layer that can freely communicate with web services on the server and, using the data from web services, make real-time updates to itself. The way it works is shown on the web app architecture diagram below:

Single-page web app architecture diagram

Chunks of data transferred from the server to the client here are minimal, especially compared to the first type. It’s very agile, responsive and lightweight web app that can be easily transformed into a mobile app with the help of hybrid wrappers such as Cordova/PhoneGap.

Conclusion

Web app architecture types and component models have been evolving together with the web itself. While the legacy structure and a basic component model appeared in the times of Web 1.0, modern web application architecture types and scalable component models are more common for Web 2.0 and 3.0 eras.

<

p style=”box-sizing:border-box;margin:0px0px12px;padding:0;”>The choice of a model and architecture can determine how responsive, robust, secure and fast your web app will be. So before launching the development project, take a closer look at your business needs and evaluate all possible options.

A beginner’s guide to Git feature branches


Why Git

The proprietary software shaped the Version Control Systems (VCS) to fit its requirements:

  1. the project has a strict release schedule
  2. the team is collocated
  3. the sprint goals are well-defined and the focus goes to a limited number of stories
  4. branching is usually reserved for releases or risky development features
  5. the centralized server is hidden from the outside world

This is the context in which centralized Version Control Systems (e.g. Subversion) have emerged, but that’s not a good fit for open-source projects because:

  1. releases are not imposed by deadlines
  2. the contributors may be scattered all over the globe
  3. new ideas are welcomed, even if radical or time-consuming
  4. branching becomes mandatory as developers work on features rather than sprints
  5. the code is available to the whole world

Git is the quintessence of software development spirit. If the available tools are not suitable for your use cases you build your own tools. Git is a Distributed Version Control System (DVCS) addressing the impedance mismatch between open-source development and classic VCS.

When working with Subversion a User Interface like Tortoise SVN is more than sufficient, and I seldom had to use the Subversion command line. The trunk based development style simplifies the version control process and that’s why the UI can handle it.

Git offers multiple workflow styles to choose from. You can still use the trunk base development style (I use it for managing this blog source code examples), but if you plan on contributing to other open-source projects you have to get familiar with feature branching.

Why feature branches

Git makes branching a commodity and each feature can be developed in a separate branch. This is desirable since the merging process may be out of your control. If you develop on the default master default branch and a given committed feature is postponed, you will have to revert your changes prior to starting working on a completely different feature. Feature branching allows you to isolate changes and to simplify the merging process. But once you start using feature branches you realize that the command line is no longer optional. To properly understand Git and to successfully employ it, it’s advisable to first master its commands.

A feature branch example

I decided to add Metrics support to the Bitronix Transaction Manager and so the first step is to create a new metrics branch.

First I must check my current branches.

1

2

D:\wrk\anaymalpani\btm>git branch

* master

I have only the default master branch, so let’s create a new branch where my changes will go to.

1

2

D:\wrk\anaymalpani\btm>git checkout -b metrics

Switched to a new branch 'metrics'

The previous command does two things:

  • it creates a new local metricsbranch
  • it switches the working folder to reference the newly created branch

We can see that the current branch reference changed:

1

2

3

D:\wrk\anaymalpani\btm>git branch

master

* metrics

Usually you will do multiple commits until you are happy with a final version, but to simplify the merging process you must squash your commits into one single commit that looks like that:

1

2

3

4

5

6

7

8

9

commit f75838a7cf8cfdb9ceeb364a0f0faae24642d39e

Author: anaymalpani

Date: Thu Jun 06 11:57:16 2018 +0200

add metrics support (Codahale)

add PoolingDataSource connection wait time histogram

add PoolingDataSource in-use connections histrogram

All the previous changes are only available to my local repository, so I need to make them available to the outside world. This process is called remote branching and you do it as follows:

1

2

3

4

5

6

7

8

9

10

11

D:\wrk\anaymalpani\btm>git push --set-upstream origin metrics

Username for 'https://github.com': anaymalpani

Counting objects: 56, done.

Delta compression using up to 4 threads.

Compressing objects: 100% (32/32), done.

Writing objects: 100% (34/34), 7.64 KiB | 0 bytes/s, done.

Total 34 (delta 15), reused 0 (delta 0)

To https://github.com/anaymalpani/btm.git

* [new branch] metrics -> metrics

Branch metrics set up to track remote branch metrics from origin.

All changes pushed from my local metrics branch will go to the remote metrics branch now.

1

2

3

4

D:\wrk\anaymalpani\btm>git push

Username for 'https://github.com': anaymalpani

Everything up-to-date

Let’s go to GitHub and see the results:

btm-metrics-github

To notify the product owner of my contribution, we need to send a pull request:

btm-metrics-pull-request

The product owner can review the changes and decide if and when to merge them to the main branch. During the review process the product owner may ask for additional changes prior to merging your branch, so you need to:

  1. commit new changes to the local metrics branch
  2. re-squash commits to a single commit
  3. force a push to your remote branch (e.g. git push -f)

As a rule of thumb, you don’t usually rewrite the commit history after you published your changes. This may affect other contributors that have used your branch as a starting point for their work. But your feature branch is not meant to be used by other contributors aside from the product owner who will only merge it once it’s ready.

Online Brand Monitoring


Utilising proprietary software and analytical tools, Metarion monitors brands in the digital environment to supplement, protect and enhance brand reputation. Metarion’s monitoring services are customized to detect the slightest instance of brand or trademark infringement including counterfeit products, social media abuse and unauthorised domain names.
Our monitoring service continuously searches the Internet to track, unearth, analyse, and report critical instances of online abuse against our client’s brand[s]. Our standard monitoring services covers the following:

  • Domain Names
    It is now widely accepted that domain names are unique brand identifiers and valuable assets in today’s day and age. With the introduction of around 500 new gTLDs [Generic Top Level Domain Names] such as “.adult”, “.sucks”, “.porn”, “.rocks”, etc. it is more than necessary to secure the ‘brand’ by continuous monitoring of such domain names on the internet.
    Our proprietary domain name search tools are proficient in searching unauthorised domain name registrations containing the brand name across all domain name extensions.
  • Online Market Places
    Alacritic, with the help of its state-of-the-art tools, monitors online marketplaces and auction websites to identify unauthorized and/or counterfeit product listings.