Monday 23 October 2017

Difference between CSS transition and CSS animation.

What are Transitions?

A transition occurs when an element changes from one state to another, and the browser fills in that state change with a sequence of in-between frames. It has a beginning and an end state.
We most often see transitions used on hover states, or when information on a page is added or removed. The hover states might be a subtle change in font color, and information on the page might fade from invisible to visible.
Since transitions are limited to these two stages, they can lack the nuance of animations but at the same time be easier to use.
When to use them
If you want to change an element from one state to another smoothly, a transition is a good choice. Simple changes can usually be handled with transitions and timing functions can be used to customize the way the transition occurs.


What are Animations?
CSS Animations are a more powerful alternative to transitions. Rather than rely on a change from one beginning state to an end state, animations can be made up of as many in-between states as you like, and offer more control over how the states are animated.
Where a transition only goes from A to B, an animation can go from A, B, C to D. Or any number of stages as needed.
Animations achieve this by using sets of keyframes. Where a transition can be specified with one line in the class, an animation works by referencing a set of keyframes that are described separately in the CSS.
When to use them
If an animation needs to run when the page loads, or is more complex than a simple A to B state change, a CSS animation might be more appropriate.
Examples of this might be if you want to have an animation on the page that plays after a certain amount of time, like this blinking effect on Baymax character.


In summary

Transitions for creating a smooth transition from one state to another, and animations for more complex series of movements.
Transitions are generally easier to create and manage and apply to the majority of situations. If you need more control over animating an element through a series of steps, or if the animation needs to begin on load, then an animation with keyframes might be the better choice.
In summary
Transitions for creating a smooth transition from one state to another, and animations for more complex series of movements.
Transitions are generally easier to create and manage and apply to the majority of situations. If you need more control over animating an element through a series of steps, or if the animation needs to begin on load, then an animation with keyframes might be the better choice.

Sunday 22 October 2017

10 Common Software Architectural Patterns in a nutshell

Ever wondered how large enterprise scale systems are designed? Before major software development starts, we have to choose a suitable architecture that will provide us with the desired functionality and quality attributes. Hence, we should understand different architectures, before applying them to our design.


What is an Architectural Pattern?
According to Wikipedia,

An architectural pattern is a general, reusable solution to a commonly occurring problem in software architecture within a given context. Architectural patterns are similar to software design pattern but have a broader scope.

In this article, It briefly explaining the following 10 common architectural patterns with their usage, pros, and cons.
  1. Layered pattern
  2. Client-server pattern
  3. Master-slave pattern
  4. Pipe-filter pattern
  5. Broker pattern
  6. Peer-to-peer pattern
  7. Event-bus pattern
  8. Model-view-controller pattern
  9. Blackboard pattern
  10. Interpreter pattern 


1. Layered pattern
This pattern is also known as n-tier architecture pattern. It can be used to structure programs that can be decomposed into groups of subtasks, each of which is at a particular level of abstraction. Each layer provides services to the next higher layer.
The most commonly found 4 layers of a general information system are as follows.
  • Presentation layer (also known as UI layer)
  • Application layer (also known as service layer)
  • Business logic layer (also known as domain layer)
  • Data access layer (also known as persistence layer)
Usage
  • General desktop applications.
  • E-commerce web applications.
   


2. Client-server pattern
This pattern consists of two parties; a server and multiple clients. The server component will provide services to multiple client components. Clients request services from the server and the server provides relevant services to those clients. Furthermore, the server continues to listen to client requests.
Usage
  • Online applications such as email, document sharing, and banking.

3. Master-slave pattern
This pattern consists of two parties; master and slaves. The master component distributes the work among identical slave components and computes a final result from the results which the slaves return.
Usage
  • In database replication, the master database is regarded as the authoritative source, and the slave databases are synchronized to it.
  • Peripherals connected to a bus in a computer system (master and slave drives).


4. Pipe-filter pattern
This pattern can be used to structure systems which produce and process a stream of data. Each processing step is enclosed within a filter component. Data to be processed is passed through pipes. These pipes can be used for buffering or for synchronization purposes.
Usage
  • Compilers. The consecutive filters perform lexical analysis, parsing, semantic analysis, and code generation.
  • Workflows in bioinformatics.


5. Broker pattern
This pattern is used to structure distributed systems with decoupled components. These components can interact with each other by remote service invocations. A broker component is responsible for the coordination of communication among components.
Servers publish their capabilities (services and characteristics) to a broker. Clients request a service from the broker, and the broker then redirects the client to a suitable service from its registry.
Usage
  • Message broker software such as Apache ActiveMQ, Apache Kafka, RabbitMQ and JBoss Messaging.


6. Peer-to-peer pattern
In this pattern, individual components are known as peers. Peers may function both as a client, requesting services from other peers, and as a server, providing services to other peers. A peer may act as a client or as a server or as both, and it can change its role dynamically with time.
Usage
  • File-sharing networks such as Gnutella and G2)
  • Multimedia protocols such as P2PTV and PDTP.
  • Proprietary multimedia applications such as Spotify.
7. Event-bus pattern
This pattern primarily deals with events and has 4 major components; event source, event listener, channel and event bus. Sources publish messages to particular channels on an event bus. Listeners subscribe to particular channels. Listeners are notified of messages that are published to a channel to which they have subscribed before.
Usage
  • Android development
  • Notification services

8. Model-view-controller pattern

This pattern, also known as MVC pattern, divides an interactive application into 3 parts as,
model — contains the core functionality and data
view — displays the information to the user (more than one view may be defined)
controller — handles the input from the user
This is done to separate internal representations of information from the ways information is presented to, and accepted from, the user. It decouples components and allows efficient code reuse.
Usage
  • Architecture for World Wide Web applications in major programming languages.
  • Web frameworks such as Django and Rails.



9. Blackboard pattern
This pattern is useful for problems for which no deterministic solution strategies are known. The blackboard pattern consists of 3 main components.
blackboard — a structured global memory containing objects from the solution space
knowledge source — specialized modules with their own representation
control component — selects, configures and executes modules.
All the components have access to the blackboard. Components may produce new data objects that are added to the blackboard. Components look for particular kinds of data on the blackboard and may find these by pattern matching with the existing knowledge source.
Usage
  • Speech recognition
  • Vehicle identification and tracking
  • Protein structure identification
  • Sonar signals interpretation.

10. Interpreter pattern
This pattern is used for designing a component that interprets programs written in a dedicated language. It mainly specifies how to evaluate lines of programs, known as sentences or expressions written in a particular language. The basic idea is to have a class for each symbol of the language.
Usage
  • Database query languages such as SQL.
  • Languages used to describe communication protocols.


Comparison of Architectural Patterns
The table given below summarizes the pros and cons of each architectural pattern.

(click on image to enlarge)

Saturday 14 October 2017

9 Interesting facts about Python Programming language

1.There is actually a poem written by Tim Peters named as THE ZEN OF PYTHON which can be read by just writing "import this" in the interpreter.


2.One can use an “else” clause with a “for” loop in Python. It’s a special type of syntax that executes only if the for loop exits naturally, without any break statements.



3.In Python, everything is done by reference. It doesn’t support pointers.

4.Function Argument Unpacking is another awesome feature of Python. One can unpack a list or a dictionary as function arguments using * and ** respectively. This is commonly known as the Splat operator. Example here



5.Want to find the index inside a for loop? Wrap an iterable with ‘enumerate’ and it will yield the item along with its index. See this code snippet



6.One can chain comparison operators in Python answer= 1<x<10 is executable in Python. More examples here



7.We can’t define Infinities right? But wait! Not for Python. See this amazing example


8.Instead of building a list with a loop, one can build it more concisely with a list comprehension. See this code for more understanding.

9. Finally, Python’s special Slice Operator. It is a way to get items from lists, as well as change them. See this code snippet



Tuesday 10 October 2017

Mi Redmi 4 (Gold, 64GB)

Mi Redmi 4 (Gold, 64GB)



                                                        Buy here



Technical Details
OS:             Android
RAM:             4 GB
Item Weight:     150 g
Product Dimensions: 13.9 x 0.9 x 7 cm
Batteries:     1 Lithium ion batteries required. (included)
Item model number:  Redmi 4
Wireless communication technologies: Bluetooth, WiFi Hotspot
Connectivity technologies 2G, 3G, 4G LTE, WiFi 802.11 b/g/n
Special features Dual SIM, GPS, Music Player, Video Player, FM Radio, Gyroscope, Infrared, Proximity, Accelerometer, Ambient light sensor, E-mail

Other camera features: 5MP
Form factor:            Touchscreen Phone
Weight:          150 Grams
Colour:            Gold
Battery Power Rating: 4100
Phone Standby Time (with data): 432 Hours
Whats in the box:               Handset, Adapter, USB Cable, Warranty Card, User Guide and SIM Insertion Tool