Archive for October, 2012

XML Introduction

Posted: October 28, 2012 in Live in a Cloudy World

The XML is simply a very easy language that doesn’t replace any current language but enhance some capabilities. The XML is only used for the transport and the storage of the data. It enhances and helps a lot the HTML in the web development but as I said it doesn’t replace it. For writing the html code it is so easy as it doesn’t have any predefined opening or closing tags, it can only be defined by the programmer or the one writing it.

So how does that help?

Simply if you build a web application with a dynamic data it will be hard, tiring and waste of time to write for each thing an html page to load the new data. Or you can do it the easy and the more efficient way, is to write your data in an external XML file and let your html page deal with these files. This can be easily done using the JavaScript in your web application.

What the XML really offers is to transport your data to any kind of machine where it can get the XML file and display it in any way its software is designed to.

Working for a software development company, whose target is to build application; generally this kind of application go through several cycles, where several team work on it. So logically to complete the required application they need a good way to integrate the entire project. The team foundation server is a way to integrate several development teams together to complete their project.

(Some facts)

The software projects now face a lot of obstacles nowadays, as they get more complex and way more bigger. Some of the reason is the lack of communication between the team and the most important in my point of view is the miscommunication or the misunderstanding between the business needs and the development team. Plus, for any team leader or any project manager the team is the main and the biggest concern, to group them under in one platform for integration, for testing or for any other purpose is one of the biggest problems. He might get lost along the big number of reports that he get.

So to get to the solution, the development team might use any IDE, like the visual studio or eclipse or whatsoever. To get the architect, the DB, the designers and the other team work together we might use the visual studio team suite to get all the working teams together )for more info about the Visual Studio Team Suite you will find it in this link). Team foundation server doesn’t only provide you with the technical issues, bugs and problems but it helps others get into the subject like the CIO, business analyst and others too.

It is an awesome tool for the ALM, I talked about in a previous blog post. As I am a Cloud Computing geek (or wish to be a Cloud Computing geek) here is the link for the Team foundation server on Cloud. Actually this is a very helpful tool that works now as a SaaS for the development teams and the others who work with them on the project to start developing their application and to easily integrate between each other. It also has a guide on how to start using it and to integrate it with different IDEs.

Here is the link where you can show you how to start using the Team foundation server on the cloud and how to attach your first project to it.

With the release of the latest Visual Studio 2012, a new features were added to it. The one that I am talking about in this blog post is the ALM, application lifecycle management. This is the feature that can help you with the management of the application from its birth until you have the final product. It is not like the SDLC (software Development Lifecycle), it is something more and more bigger. It includes everything from getting the idea, developing it from the business and the programming perspectives plus its deployment that might take a long time.

There are several people that divided the ALM into different parts, they might be somehow different in contents or in the meanings however most of the people divided it into 3 parts (I would like to follow Chappell’s papers, you can find it in this link).

The main three parts like Chappell’s book are: the governance, the development and the operations. The target of the ALM is to maximize the business revenue of the application. The tools to do so vary from a vendor to another. PS the tools you use for the development must connect the development team all together and must also connect them to the different teams like the operations and the governance.

App Fabrics

Posted: October 6, 2012 in Live in a Cloudy World, Windows Azure

App Fabrics are Microsoft Products, there are designed specially to elevate and to better consume the IT infrastructure. The App Fabrics come in 2 flavors one designed for the Windows Server and the second one is for the Cloud Computing platform for Microsoft Windows Azure, however the name of App Fabrics is no longer in use for the Windows Azure and all its components are now independent services that you can consume for your application. In this blog post I will write a small introduction about each one of them.

But first let’s see the Windows Server App Fabrics, to learn more and to develop using the App Fabrics you can check these labs and download its samples from here. The two main features of the Windows Server App Fabrics are the Caching Services and the second one is for managing the hosted services on your server. You can enhance the hosted services using both the WCF (Windows Communication Foundation) and the WF (Workflow Foundation).

I will make a small introduction about each feature of the App Fabric for Windows Server for more information you can read the post related to it. For the Caching Service, like the normal PC works the cache is a temporary memory that helps memory used by the processor. The Caching Service is a little bit the same but runs for a cluster. Certainly it is not that simple, it is more complicated than that for maintaining the High Availability of the application. All about the Caching Service you can find it here.

Second the managing hosted services, is a simple explanation about it, you can consider it like the Workflow, a better way for developing your application along the infrastructure.

For Windows Azure, it had a lot of services other than the processing and storage. They were grouped under the name of App Fabrics but now each service is named with its name, for example the service bus, the access control, caching, Integration and Composite app. There are some of them still under development.

Like the Windows Server App Fabrics features, I will simply introduce each feature and will write a post about each one. For the Service Bus, it is a relay service that mainly made for enhancing the way of connectivity between two different applications no matter where they are hosted and even if one of them is hosted behind a firewall. Here is the link for the full explanation of the Service Bus.

For the Access Control, it is a service basically based on Service Bus that also is made for enhancing the connectivity between the application, the client and the third party, mainly designed for authentication and authorization from different third parties, like Hotmail, Facebook, Google and others.

The third service is the caching service, like for Windows Server Caching Service, the Windows Azure Caching is mainly designed for a better scalable and high performance application storage services as the Windows Azure storage and SQL Azure. There are some features in the Caching that is still under development.

After one of my previous blog post about C++, I had to know the way how I can include my assembly code into my C++ file. I used to code with assembly for my graduation project in my college, mainly about Hypervisors. My first step was about to know the CPUID of the Microprocessor (I work on Intel Microprocessor). Then to see if the VMX is turned on or not.

I usually code C++ on Ubuntu and I had to code some basic things with the assembly, I faced a lot of problems that’s why I want to share it with you.

There are several ways to include them together:

  • The first one is to compile each file differentially and then link them together (I think this is the easiest way). Here is a link I found very nice explaining so.
  • The second way is to include the assembly code in your C++ code.
    • For coding on windows platform, will need you to define that this function or this instruction is done by the assembly code by just writing __asm { assembly code goes here } before the instruction. Like in this link
    • For coding on Linux platform, to include the assembly language in it, it will be a little different you have to write __asm__ volatile { assembly code goes here }

      PS: coding assembly on the Linux platform is a little strange, actually I am sure of the reason, I think it is related how the AT&T labs made it possible. For example for moving a values from registers to another you have to write down % before it. “movl %EAX, %EBX“.

So let’s get into a very simple code:

Mov eax, 10

Mov ebx 10

Add eax, ebx

 

And here is the C++ code and the assembly included in:

        __asm__ volatile{“movl $10, %eax;”

“movl $10, %EBX;”

“addl %ebx, %eax”}

 

One of the major problems I faced was this error: “operand number out of range”, that will be for the reason that each platform will require a different syntax to include your assembly in it. Please if you face any problem, please let me know so I can help you J