Friday, November 4, 2016

OpenGL

Open Graphics Library (OpenGL) is a low level abstract API to interact with graphics processing unit (GPU) to draw 2D and 3D graphics and is a cross-language, cross-platform API typically used to achieve hardware-accelerated rendering, which is faster over software rendering.

OpenGL deals with only rendering and provides, no APIs related to input, audio or windowing. 
~ Wiki

Wednesday, October 12, 2016

Synchronization Primitives

Critical section, Mutex, Event, Semaphore and Waitable timers are the different available synchronization objects on windows.

Critical Section

Synchronizes threads (/allows one at a time) to have an access to a shared resource with in a process that it is created in and hence cannot be accessed across processes - limited scope. The remaining primitives have got system wide scope and so can be accessed across processes too.

Mutex

As the name indicates, mutually exclusive, so if one thread gets an access, all others will be on wait (or restrained from accessing) until the first one relinquishes - allows one thread at a time as if the critical sections does but it can be accessed across processes or network boundaries.
e.g. Toll gate (one vehicle per ticket)

Event

Mutex, upon relinquishing, causes to release one thread from the wait to have its turn among all bunch of threads, whereas event releases all the waiting threads in one go. Event signals (/notifies) all the waiting threads when a current thread is done its job.
e.g. Traffic Signals.

Semaphore

It maintains a count between zero and some maximum number, which indicates how many threads can access the shared resource simultaneously. It means one can restrict the no. of accesses to a resource. The count is reduced every time a thread gets an access to semaphore and is incremented every time a thread releases the semaphore. When the count reaches ZERO, no more threads can access the resource. The semaphore state is set to signaled when the count is greater than ZERO and non signaled when it is ZERO.
e.g. Movie tickets

Waitable Timers

Notifies one or more waiting threads that a specified time has arrived. A waitable timer object is a synchronization object whose state is set to signaled when the specified due time arrives. There are two types of waitable timers that can be created: manual-reset and synchronization. A timer of either type can also be a periodic timer.

Saturday, July 9, 2016

Windows Programming

Windows NT began supporting multi-threaded applications as so it was fully re-entrant and makes applications to run on it based on the preemptive approach.

What is a difference between an interrupt and an exception?

Interrupt is an asynchronous event, which does happen out of the context ( Means not related to what the process is executing) and are majorly generated by I/O device, processor clocks or timers etc. Whereas an exception is a synchronous condition happens due to the execution of a particular instruction. And one can reproduce this by running the program second time with the same setup and environment used.

How is 'trap' different from 'interrupt' and 'exception'?

Trap is a processor's mechanism to capture an execution thread when an interrupt or an exception occurs and transferring control to a trap handler, which is a function specific to a particular interrupt or exception.

What are the advantages of using DLL’s?

DLLs can be loaded during run-time (or program execution) when it is needed and hence it will not be part of the executable binary image. So EXE and DLL can vary independently and NO need to recompile the EXE when DLL is changed. And can be reused in other Applications too.

What are the different types of DLL’s?

SDK DLL (without MFC): Is a old style of creating DLL with pure Win32 calls.
Regular: Is an MFC DLL and can be used by both MFC and Non MFC Applications like VB and other languages, which supports DLL access. 
Extension: Is also an MFC DLL and can be used by MFC Applications only.

Friday, June 3, 2016

WebMatrix

Microsoft WebMatrix is another website building editor(freeware) that enables developers to build and manage web sites.

Monday, May 30, 2016

Plunker

Plunker (https://plnkr.co/) is one of the online web development editors (free and open-source) that has been handy for writing HTML/JavaScript code and preview output instantly for my own coding exercises.

Thursday, April 7, 2016

SOLID

Single responsibility
Open-closed
Liskov substitution
Interface segregation and
Dependency inversion

are the five basic Object-oriented Programming and Design principles.        ~ Uncle Bob

Friday, April 1, 2016

HL7

Health Level-7 or HL7 refers to a set of international standards to transfer clinical and administrative data between software applications used by various healthcare providers. These standards focus on the application layer, which is "layer 7" per OSI model.
~ Wiki

Thursday, March 31, 2016

PACS

A picture archiving and communication system (PACS) is a medical imaging technology which provides economical storage and convenient access to images from multiple modalities (source machine types). Electronic images and reports are transmitted digitally via PACS; this eliminates the need to manually file, retrieve, or transport film jackets. The universal format for PACS image storage and transfer is DICOM.
~ Wiki

Wednesday, March 30, 2016

DICOM

Digital Imaging and Communications in Medicine (DICOM) is a standard for handling, storing, printing, and transmitting information in medical imaging. It includes a file format definition and a network communications protocol.

The communication protocol is an application protocol that uses TCP/IP to communicate between systems. DICOM files can be exchanged between two entities that are capable of receiving image and patient data in DICOM format. DICOM enables the integration of scanners, servers, workstations, printers, and network hardware from multiple manufacturers into PACS.
Wiki 

Thursday, February 25, 2016

OOPs!

The basic elements of Object Oriented Programming are:

Classes
Classifies/categorizes an object(=thing) or a group of objects in a context based on certain specifications - attributes and behavior.

Objects
An object represents a particular instance of a class. There can be more than one instance of a class. An Object is a collection of data members(=attributes/data) and associated member functions (=behavior/methods).

Data Abstraction
Abstraction refers to the act of representing essential features without including the implementation details.

a Car, for an instance, would be made up of an Engine, Gearbox, Steering objects, and many more components. To drive a Car, one does not need to know, how the different components work together internally but to control the steering and applying the gears (interfacing it).

Data Encapsulation
Wrapping up of data and its functions into a single unit is called Encapsulation. Data is not accessed directly in this case but through the methods inside the class.

Inheritance
Inheritance is the process of creating a new class from an existing class. Inheritance helps in reducing the overall code size of the program and promotes code re-usability.

Classified as 1) single and 2) Multiple (implementation) inheritances.

Polymorphism
In Greek, “Poly” means many, and “morph” means form. One name with many forms is called Polymorphism. It allows objects of different types to be treated similarly. This can be implemented in C++ via the inheritance hierarchy, also known as sub type polymorphism.