Sunday, December 5, 2010

Create a Basic Web Service Using PHP, MySQL, XML, and JSON

Web services are taking over the world. I credit Twitter's epic rise to the availability of a simple but rich API. Why not use the same model for your own sites? Here's how to create a basic web service that provides an XML or JSON response using some PHP and MySQL.

The PHP / MySQL

Copy this code to the clipboard
1/* require the user as the parameter */
2if(isset($_GET['user']) && intval($_GET['user'])) {
3
4 /* soak in the passed variable or set our own */
5 $number_of_posts = isset($_GET['num']) ? intval($_GET['num']) : 10; //10 is the default
6 $format = strtolower($_GET['format']) == 'json' ? 'json' : 'xml'; //xml is the default
7 $user_id = intval($_GET['user']); //no default
8
9 /* connect to the db */
10 $link = mysql_connect('localhost','username','password') or die('Cannot connect to the DB');
11 mysql_select_db('db_name',$link) or die('Cannot select the DB');
12
13 /* grab the posts from the db */
14 $query = "SELECT post_title, guid FROM wp_posts WHERE post_author = $user_id AND post_status = 'publish' ORDER BY ID DESC LIMIT $number_of_posts";
15 $result = mysql_query($query,$link) or die('Errant query: '.$query);
16
17 /* create one master array of the records */
18 $posts = array();
19 if(mysql_num_rows($result)) {
20 while($post = mysql_fetch_assoc($result)) {
21 $posts[] = array('post'=>$post);
22 }
23 }
24
25 /* output in necessary format */
26 if($format == 'json') {
27 header('Content-type: application/json');
28 echo json_encode(array('posts'=>$posts));
29 }
30 else {
31 header('Content-type: text/xml');
32 echo '';
33 foreach($posts as $index => $post) {
34 if(is_array($post)) {
35 foreach($post as $key => $value) {
36 echo '<',$key,'>';
37 if(is_array($value)) {
38 foreach($value as $tag => $val) {
39 echo '<',$tag,'>',htmlentities($val),',$tag,'>';
40 }
41 }
42 echo ',$key,'>';
43 }
44 }
45 }
46 echo '';
47 }
48
49 /* disconnect from the db */
50 @mysql_close($link);
51}
With the number of persons hitting your web service (hopefully), you'll need to do adequate validation before attempting to connect to the database to avoid injection attacks. Once we get the desired results from the database, we cycle through the results to populate our return results array. Depending upon the response type desired, we output the proper header and content in the desired format.
Take the following sample URL for example:
Copy this code to the clipboard
1http://mydomain.com/web-service.php?user=2&num=10
Now, we can take a look at the possible results of the URL.

The XML Output

Copy this code to the clipboard
1<posts>
2 <post>
3 <post_title>SSLmatic SSL Certificate Giveaway Winners</post_title>
4 <guid>http://davidwalsh.name/?p=2304
5 </post>
6 <post>
7 <post_title>MooTools FileManager</post_title>
8 <guid>http://davidwalsh.name/?p=2288
9 </post>
10 <post>
11 <post_title>PHPTVDB: Using PHP to Retrieve TV Show Information</post_title>
12 <guid>http://davidwalsh.name/?p=2266
13 </post>
14 <post>
15 <post_title>David Walsh: The Lost MooTools Plugins</post_title>
16 <guid>http://davidwalsh.name/?p=2258
17 </post>
18 <post>
19 <post_title>Create Short URLs Using U.Nu</post_title>
20 <guid>http://davidwalsh.name/?p=2218
21 </post>
22 <post>
23 <post_title>Create Bit.ly Short URLs Using PHP</post_title>
24 <guid>http://davidwalsh.name/?p=2194
25 </post>
26 <post>
27 <post_title>Represent Your Repositories Using the GitHub Badge!</post_title>
28 <guid>http://davidwalsh.name/?p=2178
29 </post>
30 <post>
31 <post_title>ZebraTable</post_title>
32 <guid>http://davidwalsh.name/?page_id=2172
33 </post>
34 <post>
35 <post_title>MooTools Zebra Table Plugin</post_title>
36 <guid>http://davidwalsh.name/?p=2168
37 </post>
38 <post>
39 <post_title>SSLmatic: Quality, Cheap SSL Certificates and Giveaway!</post_title>
40 <guid>http://davidwalsh.name/?p=2158
41 </post>
42</posts>
Take this next sample URL for example:
Copy this code to the clipboard
1http://mydomain.com/web-service.php?user=2&num=10&format=json
Now, we can take a look at the possible results of the URL.

The JSON Output

Copy this code to the clipboard
1{"posts":[{"post":{"post_title":"SSLmatic SSL Certificate Giveaway Winners","guid":"http:\/\/davidwalsh.name\/?p=2304"}},{"post":{"post_title":"MooTools FileManager","guid":"http:\/\/davidwalsh.name\/?p=2288"}},{"post":{"post_title":"PHPTVDB: Using PHP to Retrieve TV Show Information","guid":"http:\/\/davidwalsh.name\/?p=2266"}},{"post":{"post_title":"David Walsh: The Lost MooTools Plugins","guid":"http:\/\/davidwalsh.name\/?p=2258"}},{"post":{"post_title":"Create Short URLs Using U.Nu","guid":"http:\/\/davidwalsh.name\/?p=2218"}},{"post":{"post_title":"Create Bit.ly Short URLs Using PHP","guid":"http:\/\/davidwalsh.name\/?p=2194"}},{"post":{"post_title":"Represent Your Repositories Using the GitHub Badge!","guid":"http:\/\/davidwalsh.name\/?p=2178"}},{"post":{"post_title":"ZebraTable","guid":"http:\/\/davidwalsh.name\/?page_id=2172"}},{"post":{"post_title":"MooTools Zebra Table Plugin","guid":"http:\/\/davidwalsh.name\/?p=2168"}},{"post":{"post_title":"SSLmatic: Quality, Cheap SSL Certificates and Giveaway!","guid":"http:\/\/davidwalsh.name\/?p=2158"}}]}
Creating a basic web service is very simple and encourages your users to spread the word about your website or service. Want more traffic? Want your website to grow without you putting in all the effort? Create a web service!

Web Services with ASP.NET

Web Services with ASP.NET


  Rob Howard
Microsoft Corporation
February 22, 2001
Web Services are the underpinning of Microsoft's .NET strategy. The concepts and the innovations behind this initiative have struck a chord with developer's building the next generation of Internet applications.
In this month's column, we're going to take a look at the features within ASP.NET to enable Web Services. Before we dig into the technical details let's start with an overview of Web Services.

Web Services Overview

A Web Service is programmable application logic accessible via standard Web protocols. One of these Web protocols is the Simple Object Access Protocol (SOAP). SOAP is a W3C submitted note (as of May 2000) that uses standards based technologies (XML for data description and HTTP for transport) to encode and transmit application data.
Consumers of a Web Service do not need to know anything about the platform, object model, or programming language used to implement the service; they only need to understand how to send and receive SOAP messages (HTTP and XML).

Soap Message

A SOAP message consists of several elements, most notably an envelope. The envelope encapsulates the data transmitted within the SOAP message. Below is a simple SOAP message complete with HTTP headers:

POST /demo/MSDN/PerfCounter.asmx HTTP/1.1
Connection: Keep-Alive
Content-Length: 150
Content-Type: text/xml
Host: localhost
User-Agent: MS Web Services Client Protocol 1.0.2204.19
SOAPAction: "http://tempuri.org/PerfCounters"



               xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" 
               xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" 
               xmlns:xsd="http://www.w3.org/1999/XMLSchema">
  
    
  
In the example above, we see the HTTP headers for the request, including the HTTP SOAPAction header, which is optionally used by the server for routing the SOAP message. Following the HTTP headers we find the body of the HTTP message. The body of the HTTP message is the SOAP request for a PerfCounters Web Service, which we are going to build.
Unfortunately we don't have nearly enough room in this column to discuss SOAP in depth. To learn more about SOAP, please see the SOAP Developer Resources page. Here you can find the public specification for SOAP 1.1 as well as articles and other relevant resources.

ASP.NET Web Services

Web Services are simple and easy to understand. It is possible, in fact, to author a simple application that surfaces data as XML conforming to the SOAP specification. It would also be relatively straightforward to build an application capable of receiving SOAP messages over HTTP and deriving meaningful value out of it. For those of you familiar with PERL, this could simply be a matter of using RegEx to parse the value out of the XML result; it's just another string.
However, just as we use frameworks such as ASP and ASP.NET to build Web applications, we would much rather use a framework for building Web Services. The reasoning is quite logical. We don't need to reinvent the plumbing—that is, at a high level, the capability to serialize our data as XML, transport the data using HTTP, and de-serialize the XML back to meaningful data. Instead, we want a framework that makes building Web Services easy, allowing us to focus on the application logic not the plumbing. ASP.NET provides this framework for us.
From a developer's point of view, if you have ever written application logic, you have the required skills to author ASP.NET Web Services. More importantly, if you're at all familiar with ASP or ASP.NET application services, (application state memory, and so on) you can also leverage these skills when you build ASP.NET Web Services.

Exposing

For the purpose of example, we're going to write a Web Service that exposes Web application performance counters. Performance counters provide us with details about the behavior of our application, such as the number of active sessions or the number of requests served. We don't always have local server access to our Web server, and if we have a farm of servers we might want to expose the performance counters from all these servers and aggregate them in a central location.

Starting with a Simple Example

Rather than jumping straight into the Performance Counters example, let's start with some very simple application logic so we can see what we need to do to expose our logic as a Web Service. We'll use an Add() method that accepts two Integers and returns their sum. Below is this simple Visual Basic logic:

Public Class MyMath
  Public Function Add(a As Integer, b As Integer) As Integer
    Return a + b
  End Function
End Class
We could use this class and its method as follows:

Dim mymath As new MyMath
Dim result As Integer
result = mymath.Add(10, 20)
To expose the above class, MyMath, as an ASP.NET Web Service we need to move the application logic into a *.asmx file. Just as we use the extension *.aspx for ASP.NET Pages, we use *.asmx to tell ASP.NET that the file is an ASP.NET Web Service.
After we created the *.asmx source file and add our application logic, we need to make a few more small changes:

<%@ WebService Language="VB" Class="MyMath" %>
Public Class MyMath
  Public Function Add(a As Integer, b As Integer) As Integer
    Return a + b
  End Function
End Class

Changes to our source

The changes we've made to the *.asmx file include adding a WebService directive that names both the Language as well as the Class we're exposing as a Web Service. The WebService directive is required, as we must tell ASP.NET the class that contains the application logic. Next, we've added a attribute to our Add() function declaration. An attribute is a declarative code element that lets us change the behavior of our application logic without necessarily writing more code. In the case of the attribute, this tells ASP.NET that the method with this attribute is to be treated as 'Web callable'. Web callable in the sense that ASP.NET does the necessary work for this method to support SOAP.
Now that we've seen what needs to be done to enable application logic as Web callable, let's look at a more relevant sample.

Performance Counter Web Service

Below is application logic that gives us access to the Windows® performance counters, with the changes for ASP.NET Web Services. The file we've created is PerfCounter.asmx:

<%@ WebService language="VB" class="PerfCounters" %>
Imports System.Xml.Serialization
Imports System.Web.Services
Imports System.Diagnostics
 
Public Class PerfCounters
  Inherits WebService
 
  ' Returns a Counter class
  Public Function GetCounters() As Counters
    Dim c As new Counters
 
    ' Application Name
    c.ApplicationName              = IISAppName
 
    ' System specific
    c.WorkerProcessRestarts = Poll(0, "Worker Process Restarts")
    c.WorkerProcessRunning  = Poll(0, "Worker Process Running")
    c.ApplicationsRunning   = Poll(0, "Applications Running")
    c.RequestsQueued        = Poll(0, "Requests Queued")
 
    ' Application Specific
    c.RequestsTotal         = Poll(1, "Requests Total")     
    c.RequestsFailed        = Poll(1, "Requests Failed")   
    c.RequestsSucceeded     = Poll(1, "Requests Succeeded")
    c.ActiveSessions        = Poll(1, "Sessions Active")
 
    Return c
  End Function
 
  Private Function Poll(counterType As Integer, counter As String) As Integer
     Dim PerfCounter As PerformanceCounter
 
     If (counterType = 0)
       PerfCounter = new PerformanceCounter("ASP Plus System", counter, "")
     Else
       PerfCounter = new PerformanceCounter("ASP Plus Applications", counter, IISAppName)
     End If
 
     Return PerfCounter.NextValue().ToInt32()
  End Function
 
  Private Function IISAppName() As String
    Dim AppName As String
    
    AppName = Context.Request.ServerVariables("APPL_MD_PATH")
    AppName = AppName.Replace("/"C, "_"C)
 
    Return AppName
  End Function
End Class
 
Public Class Counters
  Public ApplicationName As String
  Public WorkerProcessRestarts As Integer
  Public WorkerProcessRunning As Integer
  Public ApplicationsRunning As Integer
  Public RequestsQueued As Integer
  Public RequestsTotal As Integer
  Public RequestsFailed As Integer
  Public RequestsSucceeded As Integer
  Public ActiveSessions As Integer
End Class
Again we see that we've declared a WebService directive at the top of the file noting both the language and the class. The class that contains the Web callable method is PerfCounters. Within PerfCounters we find a single method, GetCounters(), with the attribute. GetCounters() returns an instance of another class, Counters.
When we call GetCounters(), the method creates a new instance of the Counter class and begins to set its public members; note, these public members should be implemented as properties, but I chose to save the space for the purpose of the article.
When the Counter class' members are set, we're setting them with the returned result of a call to a private method Poll(). Poll() is responsible for doing the actual work of polling the systems performance counters and returning a result.
Finally, the last method, IISAppName(), returns the value of the server variable APPL_MD_PATH and replaces '/' characters with '_' characters; this value is used as the application name within the performance counters.
Now that we've built the service, let's take a look at how we test it.

Testing Web Services

Now that we've authored this ASP.NET Web Service, how do we test it? The consumer of a Web Service is another application, but ASP.NET provides a simple browser interface to our Web Service that we can use for testing or documentation purposes.
Since our service is exposed as a resource available from our Web server, we can simply open a browser and make a request for that resource. Doing so provides us with a nice HTML-based Web Service Help page that lets people learn about what our service provides:
Figure 1. HTML-based Web Service Help page
ASP.NET generates the above page for us, and we can use it to test our service (note the HTML Invoke button within the GetCounters Web Method section) and access the XML contract language used to describe what our service offers; we'll be coming back to the XML contract language momentarily.
If we press the Invoke button, a new browser window is opened, and a request is made to our service using HTTP-Get; one of the three supported protocols used by ASP.NET Web Services:
Figure 2. Example of the new browser window that is created when pressing the Invoke button.
The XML returned is a valid XML document that describes all of the settings we identified in our Counters class. However, it is not SOAP. SOAP is the default protocol that is used when we do application-to-application communication.
Although we didn't discuss it in this article, we can customize our help page quite extensively. This is done by making some changes to the ASP.NET configuration system, or modifying the DefaultSDLHelpGenerator.aspx. I would recommend not modifying the DefaultSDLHelpGenerator.aspx, as this is the template used for all our Web Services. Instead, make a copy of it and reference the copied version in the application's configuration that makes use of it.
Now that we've discussed authoring and testing our Web Service, let's make use of it.

Consuming

We have several options for consuming Web Services. Since this article is about ASP.NET, we'll focus on .NET technologies that can consume Web Services. However, I should point out that any platform or framework that understands SOAP should be able to communicate with our Web Service. Building the Web Service with ASP.NET does not mean that the service is only available to other Microsoft applications.
Consumers of a Web Service need to know what the service offers—for example, what its Web callable method look like. Therefore, all Web Services optionally share another common XML document: a contract (note, Web Services built with ASP.NET always have a contract provided automatically).

Contract

In the examples above when we discussed testing a Web Service, we didn't discuss the link found within Web Service Help Page: SDL Contract. If we were to follow that link, instead of pressing the Invoke button for the GetCounters() Web Method, we would be presented with the following XML document:
Figure 3. XML document presented when following the link found within the Web Service Help Page
This XML document is a contract that describes our Web Service. It details the protocols supported as well as the semantics for calling and returning values. It additionally defines an XML schema for our Counters class.
Tools can use this XML schema to build proxy classes for our Web Service. A proxy class is a class that looks and feels like a local object, but it is in fact doing the work to serialize, send, receive, and de-serialize our method request to a SOAP endpoint.
Note   Beta 1 of .NET surfaces an "SDL—Service Description Language" contract, Beta 2 will switch to use the more recent "WSDL—Web Service Description Language" contract. Semantically they are very different. WSDL is the collaborative work of Microsoft, IBM, and several other companies to better standardize the XML contract language.
We have various options for consuming Web Services, however, I'd like to call out three in particular:
  • Visual Studio .NET: —Visual Studio .NET does the work of creating the proxy from the SDL or WSDL and adds the appropriate code to our project. This is done by simply selecting Project | Web References, and then pointing at a valid contract. Note that for beta 1 the contract must be SDL.
  • Command Line Tools: —The .NET SDK ships with a tool called WebServiceUtil.exe that accepts an SDL contract and can generate the proxy source code for Visual Basic .NET, C#, or JScript.NET.
  • IE 5.5. Behavior: —A browser specific behavior that allows for rich client interaction with SOAP end-points. For those of you familiar with Remote Scripting, you're going to love this! To learn more about the IE 5.5 behavior, please see WebService Behavior.
Unfortunately, we don't have the space to discuss these three options in detail. However, I thought it would be worthwhile to briefly cover building a proxy with the command line tool, as this is applicable to those who have installed .NET; not just those that have Visual Studio .NET.

Command line tool

.NET, whether you install it as part of Visual Studio .NET or the .NET SDK, includes a command line proxy generation tool called WebServiceUtil.exe. The path to this command line tool, as well as several other command line tools, is added to our path when we installed .NET.
WebServiceUtil.exe allows us to name a SDL, or contract, as one of the command line arguments and the tool can then generate the source code for a proxy to our Web Service.
If, for example, we were to save the SDL from our PerfCounters.asmx example, we could use WebServiceUtil.exe to generate a Visual Basic .NET proxy to this Web Service:

WebServiceUtil.exe /command:proxy PerfCounter.sdl /language:VB
This generates a source file PerfCounters.vb that we now need to compile.
Using the VB.NET command line compiler, vbc.exe, we can compile our VB source file:

vbc /t:library /r:system.web.dll /r:system.web.services.dll /r:system.xml.serialization.dll perfcounters.vb
What we've done with the command line compiler is specify that we want to create a library (dll) rather than an executable (exe), and in addition to naming the source file to compile, we've specified some .NET assemblies (libraries containing classes our source file requires) as arguments to the compiler.
The result is PerfCounters.dll, a complete proxy to our PerfCounters.asmx ASP.NET Web Service that we can now use in .NET applications to communicate via SOAP to our Web Service.
Let's use this proxy to build a simple ASP.NET page that consumes and uses our Web Service.

Using the Web Service

First we need to deploy the compiled proxy, known as an assembly, to a Web application's \bin directory. Although we haven't discussed deploying compiled code in this column yet (yet another topic for a future column), suffice to say that to 'register' an assembly on the system simply requires copying the *.dll to a Web application's \bin directory. This is a feature of .NET, but the use of the \bin directory is specific for ASP.NET.
To make things simple, we'll create a bin directory off of the server's root directory, c:\inetpub\wwwroot\bin for example. A \bin directory must exist in an application root, either the root of the Web or a folder marked as an application in IIS.
Next, we copy our assembly, PerfCounters.dll, to our \bin directory. We can now author our ASP.NET page, which we'll deploy to c:\inetpub\wwwroot. We'll call it PerfCountersConsume.aspx:


Web Application: 

Process Restarts: 

Processes Running: 

Applications Running: 

Requests Queued: 

Requests Total: 

Requests Failed: 

Requests Succeeded: 

Active Sessions: 

The code above creates an instance of our proxy class PerfCounters (available to us since it's a registered assembly in our \bin directory) calls its GetCounters() method and returns an instance of a Counters class. We then use the instance of the Counters class, counters, to request its member variables and populate ASP.NET server controls. The result is below:


Figure 4. ASP.NET server controls

Summary

This column has taken a very high level overview of ASP.NET Web Services. There's quite a bit of detail that we either glossed over or didn't cover at all, for example security, use of session state, extensions, and so on. In next month's column we're going to look at a more advanced feature of ASP.NET Web Services, extensions, that we can use for building attributes that allow us to trace the request/response of our ASP.NET Web Service.
Rob Howard is a program manager for ASP.NET on the .NET Framework team. He spends whatever spare time he has either with his family or fly fishing in Eastern Washington.

PHP5 Developer / PHP Web Programmer

Position Your role as a PHP Web Developer will focus on PHP ecommerce/CMS platform in Joomla.
Requirements of role You should have at least 3 years solid web development experience using PHP5, AJAX, JavaScript, XML, HTML and CSS and have proven experience using the MVC Framework for PHP.
Proven experience with Apache, Linux, MySQL and the MVC framework is essential to this role.
Experience developing large-scale e-commerce and Content Management System’s (CMS) will give you a distinct advantage. Eg Joomla, Zend Framework, Durpal
About the person:
-You must be methodical yet creative.
-A dynamic and driven individual.
-An excellent problem solver.
-Aware of new technologies and their possible use in the industry.
-Looking for a career in delivering high quality products.
-Desire to be an integral part of the team.
-Aware of security vulnerabilities.
-Aware of Accessibility issues and W3C compliance.
If you feel that this role matches your skills we would like to hear from you immediately.
Required for Review Candidate must provide the following:
- Portfolio of work (online web link)
- Curriculum Vitae to:   tech@sisters-magazine.com

Graphic Designer Position (sisters-magazine)

Position A graphic designer is required to carry out design work for online and offline media.
Requirements of role To execute, design and layout the following:
- Print Adverts and Banner artwork
- Print Booklets, Brochures and Leaflets
- Other miscellaneous print matter such as stationery
- Website graphics and banners
- Webpage design
- Basic managing and organisational skills
- Good English communication
- The designer will be working from pre-defined house style sheet and brand guidelines.
Software Applications
- Adobe Illustrator
- Adobe Photoshop (or Fireworks)
- Adobe InDesign
- Adobe Dreamweaver
Platform: PC, but must have font-management knowledge and work in universal file formats (or Adobe formats).
At least have 1-2 years of industry experience, but portfolio will be main criterion for judgement.
Must work in vector form in all cases other than when working with photos.
Basic core skills in design Should show relatively good skills in:
- Composition and layout
- Typography and font-use
- Eagerness to learn and ability to work in a team
- Basic knowledge of print-processes
- Basic knowledge of web based imagery and methods
- Image selection and manipulation
Required for Review Designers must provide the following:
- Portfolio of work (online or PDF)
- Curriculum Vitae to:   junayd_miah@yahoo.co.uk

Oracle Developer Vacancies

Oracle developers required with experience at least 3 years, please send your CV with subject "Applying for Oracle Developer Vacancy" to the following mail:
gbsegypt@gbsegypt.com

SQL BI Architect

Job title: – SQL_BI_Architect
We are a dynamic organization that is seeking a Data Warehouse Manager. This is a hands on role with coding and leadership responsibilities.
We need someone who has experience with Datawarehouse design and implementation on SQL Server. Solid understanding of SQL coding and performance is a must. This position includes SSAS and SSIS development and SSRS report generation. Design, SQL, and strong SSIS coding skills are a must, with SSAS & reporting technologies being desired attributes. In addition to the hard skills, we need this person to be able to work with a Jr developer as well as counterparts in the IT org to cooperatively develop out a solution.
This position will be part of highly professional team of BI and application developers. We are looking for BI developers who have proven experience with Microsoft BI technology who could work independently in various software projects. This position requires individuals who can write technical specifications, ability to clearly present their design to the team and work with other teams that are located on-shore and off-shore.
Demonstrate abilities in SQL Server Database Administration, SQL Server Database Architecture and Design (OLTP/OLAP), SQL Server Database Programming and Development. SQL Server 2000, 2005, 2008.
This person will manage a growing team of 4-5 engineers. We are looking for someone who has come up thru the development world, and has prior direct management experience.
Job Description:
- Manage and mentor a team of software Data Base developers
- Lead consistency in terms of coding standards, development methodology, source control, build, and deployment processes
- Provides the coding and process construction for the development and maintenance of the enterprise data warehouse (DW) and supporting business intelligence (BI) structures
- Develop complex analytic queries and data transformations in SQL and other DW / BI tools
- Maintain skill proficiency with the tools and software used by the DW and analytic reporting applications and systems
- Propose a database and data warehouse design from functional requirements
- Ability to travel 30-40% of his time to NORTH AMERICA
- Actively interface with other teams to gather requirements, design, code, debug, document, implement and maintain various DB projects
- Develop, test, and debug new functionality, and maintain/enhance existing functionality in T-SQL, SSIS packages, SSRS reports.
- Estimate work hours required to implement a technical design
- Comply with existing processes, including requirements for source control and documentation
- Provides on-call assistance as needed
Qualifications: - Experience and knowledge in designing scalable, high-performance datawarehouse and OLTP systems
- Strong knowledge of T-SQL, Stored Procedures, Triggers and DTS development
- 5 or more years of hands-on experience with MS SQL of various versions, including SQL 2005 and 2008
- 2 Prior work experiences implementing large scale relational data warehouse on SQL Server platform with DTS and SSIS processes pulling from multiple source system databases is a plus.
- Responsible for activities involved in the analysis, design, development, troubleshooting, debugging and maintenance of enterprise, high-volume, transactional systems
- Responsible for formulating and implementing the team’s technical vision, providing hands-on insight into system architecture, data software development and architecture design.
- Database designing, database performance, management and tuning experience.
- Capable of working proficiently at both strategic and tactical aspects of a project.
- Strong communication skills and interpersonal skills
- Strong problem solving and creative thinking skills
- Able to multi-task and manage multiple project/task assignments simultaneously
- 3 plus years of experience managing and leading the BI solution
- 5 plus years of experience with data quality and data modeling principles required.
- 5 plus year experience managing a team is required
If you are interested, please send your CV to:
hr@gcssd.com
Please mention in the subject the job title

Advanced Junior Java Developer vacancy

Work towards execution of assigned project tasks (Development, testing reviews, planning, design etc.). At least 1 year or more of strong experience covering:
EJB 3,JSF ,Web Services and XML
Qualifications & Skills
At least 1 year of J2EE development experience.
At least 1 year of experience of EJB 3.
Very good knowledge in databases Oracle (SQL, PL/SQl).
Experience designing and implementing user interfaces JSF.
Excellent communication skills.
Analyzing and designing the implementation of the requirements.
Only qualified apply please.
Please send your updated C.V to mhassan@siliconexpert.com

SQL DBA developer

Job title:- SQL _DBA _ developer
Description: - Actively interface with other teams to gather requirements, design, code, debug, document, implement and maintain various DB projects.
- Effective SQL Server Store Procedures code design, development and tuning.
- Troubleshooting and Optimizing SQL Stored Procedures.
- Support data transfers using DTS packages (ETL) as well as converting to SSIS>
- Be able to self-manage and required to lead certain database projects.
- Champion and manage new initiatives to completion to improve and streamline operations processes and maximize systems availability.
- Weekend and off-hour work required occasionally.
- Resolve complex problems that have implications beyond your own area.
Qualifications: - 5 or more years of hands-on experience with MS SQL of various versions, including SQL 2005 and 2008
- Responsible for activities involved in the analysis, design, development, troubleshooting, debugging and maintenance of enterprise, high-volume, transactional systems
- Responsible for formulating and implementing the team’s technical vision, providing hands-on insight into system architecture, data software development and architecture design.
- Database designing, database performance, management and tuning experience.
- Experience in database development field.
- Experience leading large multi-resource teams with interdependent initiatives to successful completion.
- Capable of working proficiently at both strategic and tactical aspects of a project.
- Experience with SSIS and SSRS
- Data Modeling experience (Logical/Physical)
- Able to design, code, debug and maintain database schemas and store procedures
- Strong communication skills and interpersonal skills
- Strong problem solving and creative thinking skills
- Able to multi-task and manage multiple project/task assignments simultaneously
If you are interested, please send your CV to:
hr@gcssd.com
Please mention in the subject the job title

C# / C++ Developer @ ISnSC

ISnSC, An Information Security company is in need of a well experienced – 2+ years – developer for a full time job.
Job Description
* Extending C++ and C# applications functionality.
* Design and test some components.
Requirements
* Excellent problem solving skills.
* Excellent Coding skills
* Good Design insight
* C# (2+ years)
* C++ (1+ years)
* Ability to work under pressure.
* Good Learning ability.
* Team Player.
To apply for the job please send an email to jobs@isnsc.com with the title "Dev-2811" including your resume.

Java Developer

Minimum Experience 3 years or plus
Java SE certified is a must
One of the following is a must
1- Practical experience with Front end technologies like GWT and JSF
2- Practical experience with Server side technologies like spring + Hibernate or EJB3 + JPA
Additional Skills & Competencies:
• Building and facilitating effective project development teams or integrated project teams.
• A self-starter who requires minimal supervision.
• Excellent interpersonal and organizational skills, ability to handle diverse situations, multiple projects and rapidly changing priorities.
• Ability to communicate with clients at all levels.
• Ability to come up with the best solution for given requirements.
• Ability to provide reasonably accurate estimates for projects, based on client-provided technical and functional requirements.
Resumes to be sent to NewJob.Developers@yahoo.com

Graphic Designer Required for KSA

For ZFP Company in Saudi Arabia – Riyadh. a graphic designer is required with experience (0-2) years.Silverlight knowledge is a must.Residence will be fully in Riyadh.
send your resume to salahjr@gmail.com

ERP Junior Applicant Consultant @ BI Technologies

About BI Technologies
BI-Technologies is one of the leading companies offering business software and complementing services to the Middle East markets.
Since its inception in 2006; BI-Technologies has been considered a market leader in the field of mobility, providing the Middle East region with its flagship product Sales Buzz (Mobile Sales Force Automation System) that automates the areas of Mobile Sales, Asset Tracking and Mobile Warehouse Management Software (WMS). BI-Technologies is also renowned of its Fleet Management Software (Fleet Control) in addition to been having great history in the implementation of state-of-the-art ERP systems along with custom-made product development services to a wide range of regional and multi-national companies.
Vision
We believe that the main reason behind our success in such a short period is the level of dedication of our team members , friendly environment and innovative solutions that really makes every day at BI-technologies exciting and challenging
We Will Build this future with our Young, well-trained and highly motivated team, fully committed to our mission, based on the maxim of “Think Globally, act Locally”
Job Vacancies
  • ERP Junior Applicant Consultant
CVs are to be sent on the below e-mail address, please refer to the vacancy  in the mail subject:

ERP Junior Applicant Consultant

Job Descriptions

  • · Perform business requirements analysis as part of the development of strategic information systems strategies
  • · Perform gap analysis between existing ERP software functionality and client’s requirements
  • · Be part of a project team through design workshops and Conference Room Pilot environments
  • · Be part of a project team to identify and recommend ERP software product customizations, enhancements or work-around to meet client requirements
  • · Train users on ERP software and also on new processes added to ERP system in each major release.
  • · Establish and maintain excellent working relationships with customers.
  • Follow BI-Technologies implementation methodologies throughout the customer engagement life cycle.

Degree

-                          Graduated from Faculty of Commerce,
- English Section, Grade: Good.

Skills

  1. Excellent communication abilities (oral and written).
  2. Problem solving.
  3. Understanding of the potential of computer technology.
  4. Appreciation for the business’s objectives.
  5. Ability to guide people through periods of change.
  6. Patience.
  7. Creativity.
  8. Excellent in Presentation abilities
  9. Ability to Manage people
  10. Work successfully in a team matrix environment
  11. Continuous learner
  12. Adapt to unexpected events
  13. Ethical with users and Colleagues
  14. Analytical thinking, attention to details and superior time-management skills are crucial
Work Experience
2+ Years experience in ERP products application/implementation (Preferably International ERP packages).

Required Professional Experience

  1. Bachelor’s degree in any of the following areas (Business Administration, Finance, Human Resources, Computer Science or Engineering).
  2. Awareness of CMMi methodologies is an asset.
  3. Willingness to travel throughout the Middle East and Gulf area.
  4. Experience in end-user training and product support

Report to

AC Project Manager

Software Engineer required @ AServer Egypt

AServer Egypt, an integral part of an international group that is a technology leader in Cloud Computing and Dispersed Storage, announces the following vacancies:
Post: Software Engineer
Email To: careers@aserveregypt.com
Vacancies: 1
Description:
————
The Software Engineer will work with the existing team on creating new cutting edge software systems using a variety of programming language and open-source frameworks
The Software team is responsible for the software part of our products and works in collaboration with our engineering team. The team is responsible for the perfect design of new products, seamless execution of upgrades, documentation and installation procedures.
As the requirements of our products are of a very high level, requirements for the personnel are similar. Therefore he or she needs outstanding technical skills, solid academic background and deep understanding of computer science concepts, algorithms and techniques.
Responsibilities: ————
• Develop and modify software components
• Works closely with Software Solution Developers to implement new features and enhancements
• Write software automated unit and integration test cases
• Contribute to installation manuals for all products and upgrades, educating the world about our products and technologies
Profile: ————
• Up to 3 years experience in software development relevant to the described job
• Knowledge of C++ or Java
• Knowledge of Python
• Achieves high quality results through thoughtful analysis and planning
• Target driven and result oriented
• Strong object-oriented skills, knowledge of GOF Design Patterns is a plus
• Deep understanding of database concepts is a must, hands on experience with PostgreSQL or MySQL is a plus
• Familiarity with Linux operating system is a must, at least user level experience
• Knowledge of Javascript, Ajax frameworks or Flex is a plus
• Open-source practitioner, contributions to open-source projects is a plus
• Open for changes and continuous learning, can work under pressure.
• Good knowledge of spoken and written English
• Willing to travel to abroad for training/deployments every 3-6 months
• Team player, self motivated and passionate for technologies and innovation
———————————————————-
If you see yourself a fit to our high competency standard for this position, send a recent CV to: careers@aserveregypt.com
Please include in the subject: "Software Engineer"
Please rename your attached CV to your full name

Software Solution Developer @ AServer Egypt “3 Vacancies”

AServer Egypt, an integral part of an international group that is a technology leader in Cloud Computing and Dispersed Storage, announces the following vacancies:
Post: Software Solution Developer (SWSD)
Email To: careers@aserveregypt.com
Vacancies: 3
Description The Software Solution Developer will work with the existing team on creating new cutting edge software systems through the whole software life cycles, starting from early research and prototyping using a variety of programming language and open-source frameworks
The Software team is responsible for the software part of our products and works in collaboration with our engineering team. The team is responsible for the perfect design of new products, seamless execution of upgrades, documentation and installation procedures.
As the requirements of our products are of a very high level, requirements for the personnel are similar. Therefore he or she needs outstanding technical skills, understanding of systems used in the context of hosting providers and data centers as well as good communication skills.
Responsibilities • Conduct technology research and experiment with various alternative tools and libraries
• Develop proof of concepts and system prototypes
• Design, develop and modify software components
• Develop and direct software system testing and validation procedures, programming, and documentation
• Provide installation manuals for all products and upgrades, educating the world about our products and technologies
Your profile • Bachelor or master degree in Computer science, Engineering or equivalence by experience
• 3-5 years experience in software development relevant to the described job
• Profound knowledge of C++ or Java
• Profound knowledge of Python
• Experience with Networking protocols (TCP/IP, UDP, XMPP, … etc)
• Experience in enterprise software development/design
• Achieves high quality results through thoughtful analysis and planning
• Target driven and result oriented
• Excellent analytical skills, strong object-oriented design skills, experience using GOF Design Patterns is a plus
• Deep understanding of database concepts is a must, hands on experience with PostgreSQL or MySQL is a plus
• Experience in XML-RPC, SOAP, and REST Web Services design and implementation

• Familiarity with Linux operating system is a must, at least intermediate level experience
• Knowledge of Javascript, Ajax frameworks or Flex is a plus
• Practical experience with Agile Development processes, specially SCRUM is a plus
• Open-source practitioner, contributions to open-source projects is a plus
• Open for changes and continuous learning
• Good knowledge of spoken and written English
• Willing to travel to abroad for training/deployments every 3-6 months
• Team player, self motivated and passionate for technologies and innovation
If you see yourself a fit to our high competency standard for our SWSD position, send a recent CV to: careers@aserveregypt.com
Please include in the subject: "Software Solution Developer"
Please rename your attached CV to your full name

Web Developer @ American University in Cairo

Web Developer – University Academic Computing Technologies
Purpose:  The holder of this position is responsible for all development and maintenance on AUC’s public website.
Principal Accountabilities:
• Maintaining the AUC portal technically and troubleshooting any problems that may arise.
• Implementing projects related to the development of the AUC public website.
• Overseeing the development of new web-based features and e-communications related to AUC public websites.
• Researching technologies that might be needed for the development of the website’s different projects.
• Develop, test and maintain the different applications needed for the AUC public website.
• Give recommendations for new applications that can be added to enrich the website.
• Managing web applications, serving the Office of Communication and Marketing, and providing support for its users.
• Implementing any technical updates/amendments on the AUC portal.
Requirements:
Education:
• Bachelor of Computer Science, Engineering or equivalent experience.
Experience:
• Minimum 2 years of experience in the web development field.
Skills:
• SharePoint / WSS (Windows SharePoint Server) development and administration
• .NET technologies (ASP.NET, C#, VS.NET)
• XML, WSDL, and Web Services
• HTML, CSS, and JavaScript
• Multi-tier architecture
• SQL and relational databases is a strong plus
Placement is based on the candidate’s experience and skills
Only candidates who apply through the specified e-mail and make it to the short list will be contacted. If interested, please send an updated and detailed resume to hr2@aucegypt.edu, stating the position title in the subject line.

Dot net Developer “1+ years Experience”

Company located in Naser City need a Dot net Developer with experience at least one year
candidates should meet the following requirements:
The position requires:
. Bachelors in Computer Sciences
· A strong understanding of Microsoft .Net framework
· A strong understanding of software architecture (multi threading, design pattern )
· Reliability in performing duties and commitment to deliver products with high level of quality to customers and meet deadlines.
Technical skills:
· Solid knowledge of C#.Net.
· Solid knowledge of Microsoft .NET 3.5 and later .
· Solid knowledge of programming concepts, object oriented concepts .
· Solid knowledge of Ajax, XML, Java Script, HTML, CSS.
· Solid knowledge of Microsoft SQL Server .
Personal skills:
- excellent communications and analytical skills.
- excellent time management skills.
- ability to work under pressure and meet deadline
send ur CV to jobs@tech.com.sa

SENIOR DOT NET DEVELOPER @ Sakhr Software

Sakhr is hiring senior dot net developers with experience between one and three years.
Below the job description.
SENIOR DOT NET DEVELOPER
Assignment context
The professional services department is developing and maintaining online services applications for the governorates and ministries business line.
It also provides application and operational support for delivered applications.
Assignment description
The scope of responsibilities includes:
- Design and coding of web application (ASP.Net C#)
- Design and coding of web services, windows services and libraries (.Net C#)
- Integration of third parties components.
- Maintenance of the integration/development platform
- Diagnose and resolve application/configuration/code level technical support issues
The position requires:
· A strong interest in Microsoft .Net framework
· A strong understanding of software architecture (multi threading, design pattern, configuration)
· Reliability in performing duties and commitment to deliver products with high level of quality to customers.
· A strong knowledge of Microsoft office SharePoint server 2010
Technical skills
- Web Technology Expert
Technologies
Database - SQL SERVER Expert
Framework and application component
- Microsoft .NET 2.0 Expert
- Microsoft .NET 3.5 Expert
GUI
- .NET Expert
- CSS Expert
Language - C# Expert
Methodology - DESIGN PATTERNS Mastery
Operating system - WINDOWS 2003 Mastery
- WINDOWS 2008 Mastery
Tools - TFS (Team Foundation Server) Basic
Web - AJAX Mastery
- IIS Mastery
- Javascript Mastery
Interested Applicants may submit resume to mae@sakhr.com
Please indicate notice period, current and expected monthly salary