Friday, February 9, 2018

Multithreading & Concurrency

Multithreading & Concurrency

Multithreading is a method used in computer architecture where the Central Processing Unit carries out multiple tasks in a multicore processor. Threads are the single smallest unit but are chained in multiple numbers helping in saving memory. Multithreading is different from multiprocessing as it saves memory. Whereas Concurrency is the process where multiple tasks are executed at the same time.

Multithreading in Brief:

The process of multithreading is used in computer architecture as well as in Java. But in both the places, multithreading has the same meaning that is execution of multiple threads at the same time.  Now threads are single smallest units but are lightweight and are lined up one after one and save memory. They are independent yet interconnected.

Concurrency in Brief:

Concurrency occurs when two tasks overlap each other at the time of execution. In easy terms, when two tasks happen to execute at the same time then the process in called concurrency. It is slightly different from parallelism. When two tasks start at the same time then it results in parallel concurrency. Concurrency occurs in two different ways. One is when two tasks are running and the execution is done at the same time. Second is when one task is being executed and the other is lined up for execution, both lead to concurrency.Generally, concurrency is a complex topic that requires precise understanding and execution.

Advantages of Multithreading:

There are various advantages of Multithreading. Some of them are:
  • When multiple threads run together, they make use of the unused cache and threads. This not only utilizes the resources but also boosts the speed of execution.
  • Executing multiple threads at the same time utilizes the idle threads and cache. This helps in synchronization of it values.
  • Multithreading basically saves time due to execution of multiple tasks at the same time. It also helps in best utilization of resources that makes it more efficient.

Advantages of Concurrency:

Concurrency deals with real time problems and not some already set problems. In a computer where complex problems are listed, solving it on real time basis is the challenge for the computer. Concurrency helps in making the computer more smart and efficient. A computer at one time displays the output and at the same time it revises the same output. Two tasks occur at the same time with perfection because of concurrency.

Conclusion:

Multithreading and Concurrency are near about same thing with different applications. Multithreading happens within the same process while concurrency happens for two different and independent processes. Both have their own advantages and disadvantages.

Thursday, February 8, 2018

Remote debugging

Remote debugging

What is Remote debugging and its use?

Remote debugging is an application for the purpose of debugging by means of connecting the development environment with the application which has to be remotely run in your system.

How does remote debugging operate?

Part of Java and is provided by this computer language specification. By the mechanism of listener binding Java offers this feature to the users. The concept of remote debugging is quite simple and uncomplicated, much to the thinking of the people who are new to this application. Few of the easy ways in which this debugging application works are as follows:
  • This application whose sole purpose is to debug works by means of attaching a socket to the application itself and after that it receives debugging instructions which could be listened on that specific socket.
  • The socket connects the debugger to the application via which it sends instructions for debugging the system on that socket.

What are the operating systems which support remote debugging?

There are a total of 5 operating systems and it’s various versions in which remote debugging can be used and they are as follows:
  • Windows Server 2008 Service Pack 2
  • Windows Server 2008 R2 service pack 1
  • Windows server 2012
  • Windows server 2012 R2
  • Windows 7 service pack 1
  • Windows 8 or Windows 8.1 version
  • Windows 10

How to run an application in Java in debug mode?

For the purpose of remote debugging, you must be running that particular application in debug mode. Hence it is required to offer to the Java command the particular JVM arguments so as to enable the running of the application in debugging mode. The JVM arguments for debugging purpose are of two types:
  • Xrunjdwp– which provides the supplying of debug parameters and can be implemented in the 1.5 and 1.6 version of JVM.
  • Xdebug – this command asks the JVM to start the application or run it in the debug mode.

Uses of remote debugging

To run the application of remote debugging your operating system must have Visual Studio 2015 along with the remote tools which will work either on the x86 version of a 32 bit system or for a 64 bit system the version is x64. The remote tools support you to operate the Visual Studio on your machines so that it can run profile programs as well as debug on some other machine. By running this application along with the windows administration facilities for a you can use the Windows Web Services API to meet a tense by changing your configuration of the firewall. On a simple terms you can effortlessly debug a defective code which is running on a separate machine by means of this remote debugging application. There are several debuggers which offers you this service of remote debugging, such as GDB on Linus systems and visual studio debuggers or WinDgb on Windows.

Wednesday, February 7, 2018

Design Thinking

Design Thinking

Design Thinking is a methodology to solve complex problems, and find desirable solutions for clients. It draws upon logic, imagination, intuition, and systemic reasoning, to explore possibilities of what could be, and to create desired outcomes that benefit the end user (the customer).
A design mindset is not problem-focused; its solution focused, and action oriented. It involves both analysis and imagination.  At AnAr, we see design as strategy in action, focused on results. We help our clients envision a better future and get there successfully. We help them leverage design’s power to generate innovative solutions that effect real transformation.

What are the distinguishing characteristics of Design Thinking?
  • Finding simplicity in complexity
  • Beauty as well as functionality
  • Improving quality of experience
  • Creating elegant solutions
  • Serving the needs of people
Design Thinking is human-centered – so focus on people / customers and their needs and not on a specific technology or other conditions. It is an iterative learning process and it enables a higher expertise in the field of human needs and supports variety of results. Basically, Design Thinking projects consist of diverging and converging phases. It enables team members to think diverse which build the base for the converging finalization. Tangibility, experiencing and testing of results are essential basics of design thinking. The Methods therefore used are observations, interviews, brainstorming; prototyping…Prototypes allows end-users to participate early in the innovation process.

Empathize

Understanding is the first phase of the design thinking process.  The goal is to develop background knowledge through these experiences. They use their developing understandings as a springboard as they begin to address design challenges. Watch how people behave and interact and then observe physical spaces and places. The understanding and observation phases of design thinking helps develop a sense of empathy.

Define

In this phase of design thinking, the focus is on becoming aware of peoples’ needs and developing insights. The phrase “How might we….” is often used to define a point of view, which is a statement of the:
user + need + insight
This statement ends with a suggestion about how to make changes that will have an impact on peoples’ experiences.

Ideate

Ideating is a critical component of design thinking. We are challenged to brainstorm a myriad of ideas and to suspend judgment. No idea is to far-fetched and no one’s ideas are rejected. Ideating is all about creativity and fun. In the ideation phase, quantity is encouraged.

Prototype

Prototyping is a rough and rapid portion of the design process. A prototype can be a sketch, model, or a cardboard box. It is a way to convey an idea quickly. We can learn that it is better to fail early and often as they create prototypes.

Test

Testing is part of an iterative process that provides us with feedback. The purpose of testing is to learn what works and what doesn’t, and then iterate. This means going back to your prototype and modifying it based on feedback. Testing ensures that students learn what works and what doesn’t work for their users.
Thus, if you have to develop new products or service prototypes, have to establish new business models, change actual structures, Improve of innovation culture – Design Thinking is the most suited.

Tuesday, February 6, 2018

Database Performance Tuning: Tips and Tricks

Database Performance Tuning: Tips and Tricks

Database Performance Tuning is a method to enhance the speed at which an application runs. In this, the application will run more quickly. What we derive from “more quickly” is that critical applications may take longer time but overall the performance will be enhanced. The basic use of Database Performance tuning is to optimize the performance of database. Database tuning is focused to exercise the maximum use of system resources to enhance the work performance by working efficiently and rapidly.
Overview of Database Tuning:
Most of the systems resources are equipped with technologies that take maximum use of it but still there is chance to improve the quality and efficiency of the system resources. For this, we use database performance tuning. Database tuning means tuning the resources and settings of that computer on which the database application is run. It also implies that the memory and configuration of the system is changed in order to get the best results.
Database tuning is done every now and then as there is always a chance to enhance the efficiency of the DBMS. By drawing tables more efficiently to reducing disk writes and reads, there are numerous ways of tuning data base.

Importance of Database Tuning:

There are basically two reasons for tuning database. The first reason is to reduce the response time while the second reason is to reduce the usage of resources. For working more efficiently, one needs a fast operating system that responds rapidly. Any delay in response will have negative impact which shouldn’t be tolerated. The less the resource is used, the best it will perform. Both of these two reasons are interconnected with each other.

Some Tips and Tricks for Database Tuning:

  • A Clear Objective: While you perform database tuning, you need to know your destination very clearly. What exactly you want to do and how exactly you have to do. While reducing the resource usage, you should be clear about how much cleaning you need to do. In the same way if you are reducing response time then you need to be clear about how much reduction do you want.
  • Perform Tuning based on your needs: Database tuning is fun and addictive but you should only perform when you really need it. Finding performance problem is easy but it expensive to fix it therefore it is advisable to tune only when it is needed.
Database tuning is a perfect way to increase the efficiency of your DBMS but it should be reasonable and limited. This is the only way one can balance both the sides.

Monday, February 5, 2018

Source Code Performance Tuning: Tips and Tricks


Source Code Performance Tuning: Tips and Tricks

Source Code is a collection of instructions that are arranged in logical and sequential manner that gives a meaning. Source code is basically what a programmer writes on the computer and later that instruction is compiled and interpreted for the computer to read it. Source Code Performance Tuning is a method to design a source code in such a way that it boosts the efficiency and performance.

A Brief Insight on Source Code Performance Tuning:

Performance Tuning of source code which is also known as program optimization is a process in which the source code or the programming is modified in order to increase efficiency and performance while decreasing the use of resources. Performance tuning is carried out in different stages depending upon the requirement. Optimization can be done at the design level, build level, run time level, compiling level, algorithm and data structure level, assembly level and source code level.

Reasons for carrying out Performance Tuning:

  • When bottlenecks are created in between creating a trouble in performance and execution, then we need performance tuning as it removes those bottlenecks.
  • The same set of source code sometimes occupy more space and resources leading up to more input and lesser output. To decrease the input and to boost the output, we perform performance tuning.
  • When bottlenecks are formed, it makes the whole system go idle as it blocks the path through which the performance takes place. A bottleneck is basically the main area from where the rest part operates and when it gets hung, the whole system suffers.
  • Removing cache, bugs, wears and tears from the system.
  • Long usage of the code makes it weary and teary resulting in the slowing down of speed. This is why we must perform tuning.

Advantage of Performance Tuning:

There are various advantages of Performance Tuning in Source Code. Some of them are as follows:
  • It modifies the whole source code and removes all kinds of wears and tears. This frequently boosts the speed of performance.
  • One can also modify the source code by introducing standard source codes that boosts the efficiency of the system.
  • It increases the immunity of the system by safeguarding it from bugs, virus and other things that may cause harm to the system.
  • Increases efficiency and boosts performance.

Disadvantages of Performance Tuning:

  • Sometimes leads you to nowhere. A time comes when you can neither go forward nor backward, end up messing up the whole system.
  • Instead of simplifying the source code and increasing efficiency, performance coding sometimes decreases the speed.

Friday, February 2, 2018

Client Focus – Mobile app building


Client Focus
Among the different kinds of projects that the Client focused Offshore services offer, mobile app building happens to be a very important part. In the last few years the use of this field is getting important and that is the reason that these services are coming up with the best services. Mobile apps that are browser based versus the native apps. It is a genuine debate on as old as 3 years. And essentially since the start of that debates, there is a general basic current among the Internet community that browser based is great and native is awful. Nevertheless, Native is commanding in spite of the genuine drawbacks, and browser based applications need to do a make up for lost time.

The Native way

Mobile applications are just the same old thing new. Countless gaming, productivity, entertainment and utility apps possess large amounts of stores, for example, Apple’s iTunes or website’s AppExchange, available for nothing however generally paying applications, through an assortment of models. Apps re-imagined ease of use and communication on mobile phones – particularly touchscreen devices, and these days, tablets. However, the native path includes some major disadvantages: genuine development costs in addition to maintenance and distribution costs. Not to discuss the dependence on app stores and the persistent install and refresh cycle. So for business mobile apps the inconveniences may be balanced by the plan of action, for informational mobile apps, that come basically free, the hindrances are paid cash.
Native has its points of interest; the apps works disconnected, especially fascinating for diversions and native apps can profit by the proprietary elements of the native platform – on the iPhone apps you can profit by the tilt edge or the movement of device, gave obviously your apps require that ability. For media and entertainment, native apps can be an additional revenue stream as the apps can cause another repeating revenue stream. In any case, for most companies the apps will be given Free with the goal that additional impetus to manufacture native apps won’t be available.

The Mobile browser way

The financial and technical barriers to overcome in the native apps approach are for most companies and their marketing staff to high to take. They have to search for an alternative approach to enter the mobile web market and the mobile devices market. Little to medium size associations are as yet battling getting a third generation website or Web Presence going, not to mention that they could bargain now with three to four different distribution, content management, and maintenance platforms.
The debate on native apps versus mobile web apps, is not such a great amount of one of which is better, yet rather one of which fits best the requirements of your association and your customers. Business apps are better off through native applications, however for most associations that view a mobile web nearness as an expansion of their principle web nearness, browser based mobile apps is an alternative that is technically and financially significantly less demanding to actualize and that will give customers the mobile experience they are searching for, browsing your website.

Thursday, February 1, 2018

Design patterns


Design patterns are a moderately new idea in software engineering, and have their roots in civil engineering. Basically they are a blueprint for taking care of a particular issue, allowing the advantages of an optimal solution to be conveyed forward to new implementations.
Accordingly, applying patterns has not yet itself turn into an example driven exercise. Specialists are left to choose how best to utilize patterns in various applications.

Structure of Design Patterns

Without a doubt, one of the principles of utilizing design patterns is that they must be structured, allowing everyone to be made from a template.

No less than, a template must contain:

  • Example name : short, yet graphic;
  • Intent : the objective of the example;
  • Appropriateness : utilizes for this example;
  • Inspiration : case of an issue, and how this example will comprehend it;
  • Members : the responsibilities of the classes in the example;
  • Structure : diagrams of the patterns classes;
  • Results : any exchange offs and drives that exist inside the example.
  • Collaborations : interfaces between the members;

Use of Design Patterns in Software Engineering

One of the key advantages in utilizing design patterns in software engineering is as an approach to enhance communication amongst designers, and, to a specific degree, amongst programmers and non-programmers. As it were, as a communication device, patterns can demonstrate priceless.
Likewise, by abstracting solutions to normal software engineering issues, design patterns can be utilized over and over. Since they utilize a demonstrated solution each time, reuse at the design level is high. This enhances the nature of coming about implementations past that which would be achievable utilizing just object situated strategies.
The utilization of design patterns in this present reality should fundamentally be done with reference to different principles as of now conveyed. As it were, while they offer solutions to basic software engineering issues, there is no additional incentive in making patterns for all aspects of a framework a work in progress.

Synopsis

The purposes behind utilizing design patterns are basically parallel to those for utilizing any object situated procedures. Design patterns support reuse, without obliging implementations to a particular stage or language, and promote productive utilization of design time. They can be viewed as what might as well be called particular or object arranged programming.
When working with design patterns, it is in this manner vital to recollect that they must be sufficiently exact that there are no possible misinterpretations. Utilizing a reasonable abnormal state definition language that can be appeared to be right will guarantee this.