Monday, August 3, 2015

Objective-C: Bringing Object-Orientation to the C Programming Language


 Today is the second part of our three-part series examining the history of the key programming languages and technologies that underpin application development on the iOS platform.

In our previous post, we looked atthe history of the C Programming Language from its inception in the AT&T Bell Labs through to its current standardization by the International Standards Organization as C11. In today’s post, we’ll look at Objective-C, the primary programming language used to develop iOS applications. We’ll see how a group of researchers in Xerox Palo Alto Research Centre took a fundamentally different approach to tackling the problem of programming a computer and how that approach, combined with the C Programming Language, resulted in modern-day Objective-C.

A Different Approach

At around the same time that the developers at the AT&T Bell Labs were developing the C Programming Language a second set of researchers including Alan Kay and Dan Ingalls were working away at the Xerox Palo Alto Research Center (PARC).  The focus of their research: Messaging.
Instead of taking the approach that first Thompson and then Ritchie had taken with the B and C programming languages (see our previous post), where the computer was fed a sequential set of instructions, Kay and Ingalls were focused on a different way of programming a computer based around the idea of objects, things that could send and receive messages and could collaborate and cooperate to achieve a particular task. This was a fundamentally different paradigm to how the AT&T team were tackling programming a computer and resulted in the first embryonic versions of a programming language called Smalltalk.
Through the 1970’s Smalltalk evolved within PARC with Kay and Ingalls refining the ideas of objects and messages until finally, in 1980, Smalltalk-80 was released to a select group of firms (including Hewlett-Packard, ITT Corporation, Apple Computer, Tektronix and Dec) and Universities (including UC Berkeley).  In doing so, Smalltalk-80, came into being and was the first in a new generation of ‘object-oriented’ programming languages that would soon rise in popularity.

The Blending of Two Ideas

At around that time two engineers, Brad Cox and Tom Love, were working for the ITT Corporation’s Programming Technology Center.  Both were exposed to the early versions of Smalltalk.  Cox became intrigued and quickly realized that benefit that a language like Smalltalk could bring.  Beyond this, he and Love also realized the need to for a language that was backwards compatible with C, a language that, in the 10 years since it’s inception had become critically important for the Telecommunications Engineering that his employer, ITT Corporation, undertook.  With this in mind, Cox set about writing a pre-processor for C, a program that would process source code in one format and convert it into a format that could be fed into the C Programming Language tool-chain.  This pre-processor allowed him to add some of the key features from Smalltalk to his source code and yet still have access to the power of the C compiler by having his pre-processor turn is doctored source code into standard C.  The result was what he called an Object-Oriented Pre-Compiler (OOPC) for C.
In the early 1980’s, Cox and Love left ITT Corporation to pursue further development of their Object-Oriented Pre-Compiler for C and formed Productivity Products International (which eventually became StepStone).  Together they focused on commercializing their new product as well as developing a supporting set of class libraries to further increase its flexibility.  This work eventually culminated in the publication of the book Object-Oriented Programming: An Evolutionary Approach in 1986, where Cox, along with co-author Andrew Novobilski, published the first full description of the Objective-C Programming Language.

Summary

In this post we’ve seen how taking a fundamentally different approach to tackling the problem of programming a computer gave birth to a whole new family of ‘object-oriented’ programming languages.  We’ve also seen how by creating Objective-C and combining the ideas from first object-oriented languages with the power and syntax of the C Programming Language, Brad Cox and Tom Love were able to leverage the benefits of both worlds.  In the next post, we will see how from these humble beginnings, Objective-C has taken a meteoric rise in popularity, has played a central role in Apples rise to become one of the largest companies in the world and see how its backwards compatibility with C and object-oriented features have positioned it as the key language you will need to learn before developing applications for iOS devices.


The History of the C Programming Language


 Before we move forward it is often useful to look back. Today’s post is the first of a three-part series looking at the history of the major programming languages and technologies that underpin application development on the iOS platform.
In today’s post i want to examine the creation and subsequent rise of the C Programming Language, from its early inception at the AT&T Bell Labs through the efforts to introduce standardization to its current ubiquity as one of the most used programming languages of all time. In doing so I want to help you understand the influence that C has had on the more recent programming languages such as Objective-C (the topic of the next post) and understand how Unix, the operating system that the C Programming Language was created to develop, remains the core backbone of the iOS platform today.

Origins

In the early 1970’s Dennis Ritchie was working as a developer at the AT&T Bell Labs. He and his colleagues were working on developing a large multi-user operating system called Unix which they were writing using Assembly Language and another early programming language called ‘B’.
Developed between 1969 and 1970 by another engineer at AT&T Bell Labs, Ken Thompson, the B Programming Language was a higher-level language meaning that less code was needed to program a particular task than would have been needed in Assembly Language. The result was a significant increase in the speed at which programmers could program the computers and this in turn lead to corresponding increases in productivity. However, the B Programming Language was not perfect.

And After B there was C

In 1971, spurred on by some of the issues he and his colleagues were experiencing with the B Programming Language, Dennis Ritchie set about trying to find a better solution. His approach was to keep most of the B Programming Language’s syntax and structure but over the course of the next two years added a number of new features including data-types (a simple classification system that gave meaning to the underlying information stored by the computer) and the ability to represent structured data. The result? A brand new programming language he called ‘C’. The C Programming Language was a powerful mix of both high-level functionality and detailed features and was ideal for Operating System programming. So well received was his new language that by 1973, most of Unix had been re-written in C.

Standardization

 From that point on, the C Programming Language went from strength to strength. Baked into the core of the first, and almost all subsequent, variants of the Unix operating system the language was first documented in the 1978 seminal book ‘The C Programming Language’where Ritchie teamed up with another of his colleagues Brian Kernighan. For almost 10 years this book acted as an informal reference for programmers using C. It wasn’t until 1989 that C was first standardized by the American National Standards Institute (ANSI) as ANSI C (or C89). A year later the standard was also adopted by the International Organization for Standards (ISO) (C90), with further revisions being published in both 1995 (to support internationalization) and 1999 (C99) (to support a number of new features including several new data types and support for single-line comments). For a further 10 years, there was little change to the ISO C standard until its latest revision in 2011 (C11). This latest revision added some major new additions to the language including enhanced support for internationalization and support for multi-threaded programming (a style of programming where the computer can be doing more than one thing at once), a necessity with modern computer hardware.

Summary

From its early beginnings to the modern-day, the C Programming Language remains one of the most widely used programming languages of all time. It has heavily influenced both the syntax and structure of many of the more recent programming languages including C++ and Objective-C. In the next blog post, we will look at these influences and investigate the history of Objective-C, the key language for development of applications for iOS Devices.

Thursday, July 16, 2015

Upload image to Google Cloud Storage using App Engine [Python]

Today i will show you how you can build app engine service that can handle "POST" requests to save images to "Google Cloud Storage".

The Handler will extract image data from "post" request "base64" and create it on the Cloud Storage




1 - download cloud storage client library from here.
   - i prefer using "git bash" for download it using the following command
   "git clone https://github.com/GoogleCloudPlatform/appengine-gcs-client.git gcs-client" 


2 - goto the "cloudstorage" folder and copy the folder to your project directory. 
   - Path to the folder ==> "\gcs-client\python\src"



3 - open Console Developer and create bucket for storing images.
  


4 - Now we are ready to write some code 
  • I suppose you are familiar with app engine so i will focus on cloud storage only.
  • I'm using PyCharm as IDE. 

5 - Create new python file and name it "UploadImageToCloudStorage,py".


5 - open the file, import "webapp2 - cloudstorage - os - time" libraries and declare your "retry_params".



6 - Create UploadHandler that will handle your post request.


7 - Create "CreateImage" function that will take image name,data, extension and save it to your bucket.


8 - now we need to get the image data and extension from post request :




9 - Now we add the code in our "post method" :-
  1. define bucket variable the will hold your bucket name.
  2. generate unique name for image using "time" library.
  3. combine bucket with image name
  4. invoke "CreateImage" method.
  5. generate a link to the image
  6. respond on the request with the image url on the cloud storage.


10 - Now you are ready to deploy your project and create post request to save images to "gcs".

11 - If your app in a different domain you need to enable "CORS" on cloud storage using "gsutil" tool

i hope my post is useful for you :)


Monday, July 13, 2015

PyCharm 4.5.3 Full For Windows [With License Key]



Description:
PyCharm 4.5 unites even more tools and features for productive Python, Django and Web development that work together smoothly to offer you a unique coding experience.

Features : 

Screen Shots:


Activation:
- use the provided license key as the following screen shot





Monday, March 2, 2015

What is EDI (Electronic Data Interchange)?

By moving from a paper-based exchange of business document to one that is electronic, businesses enjoy major benefits such as reduced cost, increased processing speed, reduced errors and improved relationships with business partners.

Each term in the definition is significant:

  • Computer-to-computer– EDI replaces postal mail, fax and email. While email is also an electronic approach, the documents exchanged via email must still be handled by people rather than computers. Having people involved slows down the processing of the documents and also introduces errors. Instead, EDI documents can flow straight through to the appropriate application on the receiver’s computer (e.g., the Order Management System) and processing can begin immediately.
A typical manual process looks like this, with lots of paper and people involvement:


The EDI process looks like this — no paper, no people involved:


  • Business documents – These are any of the documents that are typically exchanged between businesses. The most common documents exchanged via EDI are purchase orders, invoices and advance ship notices. But there are many, many others such as bill of lading, customs documents, inventory documents, shipping status documents and payment documents.
  • Standard format– Because EDI documents must be processed by computers rather than humans, a standard format must be used so that the computer will be able to read and understand the documents. A standard format describes what each piece of information is and in what format (e.g., integer, decimal, mmddyy). Without a standard format, each company would send documents using its company-specific format and, much as an English-speaking person probably doesn’t understand Japanese, the receiver’s computer system doesn’t understand the company-specific format of the sender’s format.
There are several EDI standards in use today, including ANSI, EDIFACT, TRADACOMS and ebXML. And, for each standard there are many different versions, e.g., ANSI 5010 or EDIFACT version D12, Release A. When two businesses decide to exchange EDI documents, they must agree on the specific EDI standard and version.
Businesses typically use an EDI translator – either as in-house software or via an EDI service provider – to translate the EDI format so the data can be used by their internal applications and thus enable straight through processing of documents.
  • Business partners – The exchange of EDI documents is typically between two different companies, referred to as business partners or trading partners. For example, Company A may buy goods from Company B. Company A sends orders to Company B. Company A and Company B are business partners.

Saturday, November 8, 2014

dbForge Studio for MySQL Professional Edition V-5.0.67 Full [With Crack]


Description:
dbForge Studio for MySQL is a comprehensive software, designed to work with MySQL , combining features of phpMyAdmin, MySQL Administrator, and other tools for GUI of MySQL .

It works with any database server MySQL from version 3.23 to 5.5 and supports most of the latest features of MySQL , including stored procedures, triggers, views, functions, events, etc. The Devart tool has a unique feature - the stored procedure debugger that helps you find errors in SQL code and correct them.

Here are some key features of " dbForge Studio for MySQL ":
SQL Query Analyzer
Code Completion ( MySQL Intellisense)
Syntax Highlighting
Visual Query Builder
In for quick formation on schema objects
Bezel SQL code ( for mateador code)
Automatic syntax checking on the fly
Database diagram
Schema comparison and synchronization
Object Editor visual scheme
Object Viewer for quick navigation objects MySQL
Window server variables
Security Manager (manage user accounts and privileges)
Session Manager
Service Control for starting and stopping servers MySQL
Wizard maintaining tables and dialogs Flush
Debug Tool .



INSTRUCTIONS FOR APPLYING THE CRACK:

Note: Remember to disable your antivirus during the patching process.

To apply the patch first unzip the files with Winrar or any decompressing that attacks you.
Run dbforgemysql.exe file (this will be the standard Windows installation), then the end of the installation does not run the program.
Enter into the folder named Devart.dbForge.MySQL.v5.0.67.Crack-TPoDT , find three files there:
file_id.diz
Parch.exe
TPoDT.nfo
4. Run the Parch.exe file (if you use Windows 7 or above, run the same as Administrator, right click and click on the option that says "Run as Administrator"), a window will open with a button that says " Patch ", click on it.
5. A new window that will allow you to search for a route, here all you have to do is find where the application was installed usually is here (\ Program Files (x86) \ Devart \ dbForgeStudio for MySQL C) will open
in June. Go to the file named "dbforgemysql.exe" select it and click the open button, a message should appear saying the patch was successful.

Now with that dbForge Studio for MySQL remained ready to use professional tool.



  • if helpful please leave a comment

Sunday, November 2, 2014

What is Functional and non-Functional Requirement ?

Basically, functional requirements describe the features, functioning, and usage of a product/system/software from the perspective of the product and its user. Although referred to as "requirements," they really are a form of design, albeit high-level. Functional requirements also often are called "functional specifications," and "specification" is a synonym for design.

Non-functional requirements are not non-functional at all. Rather, they describe various quality factors, or attributes, which affect the functionality's effectiveness. They do not exist in the abstract but only with respect to relevant functionality. They are often called "ilities," because many end in "ility," such as, usability, reliability, and maintainability.


For instance, if the software doesn't satisfy relevant usability requirements for applicable functional usage, users can't use it appropriately and thus will not achieve the required functioning. Inadequate usability may cause errors which nullify the value of the functioning, such as miscalculating something. Usability difficulties could cause the user not to use (all) the functions necessary to achieve the value, perhaps because they're not able to employ the necessary functions. It may take so long and be so unpleasant to use the software that the user can't use it as much as is needed or even abandons its use entirely.