Sunday, October 31, 2010

Mobile applications developers needed

Location : Egypt
PiTechnologies is a fast growing company announcing its need to hire part-time
and freelancer mobile application developers . If you can see that you are
qualified to join the team , Kindly read the following vacancy and apply as it is required below

Vacancies
1.IPHONE Developeris required (Part time -Freelance) Reference Number M0
Qualifications :
- good command of English written and spoken
- experience in IPHONE application development (0-2) years
- bachelor degree is required
Job Description :
- would be responsible for analysing customer requirements and make design
document
- would be responsible for designing , coding , commenting code and testing
functions of the application as it is noted in the design document .
- would be responsible for fixing any bugs appears during the delivery period
2. Blackbery Developer is required (Part time -Freelance) Reference Number
M002
Qualifications :
- good command of English written and spoken
- experience in BlackBerry application development (0-2) years
- bachelor degree is required
Job Description :- would be responsible for analysing customer requirements and make design
document
- would be responsible for designing , coding , commenting code and testing
functions of the application as it is noted in the design document .
- would be responsible for fixing any bugs appears during the delivery period
3. Android Developeris required (Part time -Freelance) Reference Number M003
- good command of English written and spoken
- experience in Blackbery application development (0-1) years
- bachelor degree is required
Job Description :
- would be responsible for analysing customer requirements and make design
document
- would be responsible for designing , coding , commenting code and testing
functions of the application as it is noted in the design document .
- would be responsible for fixing any bugs appears during the delivery period
How to apply
To apply to any of the above vacancies you need to
1. Send your updated CV
2. Send another document that contains :
>Summery of your previous work in a separated file , sample code and screen shots will be a plus .
>Number of hours / each day in the week you would be available to work and the total number of hours per week .
ex : Sunday : 5 hours , Monday : 3 hours , Thursday : 0 hours ... total : 12
hours
All documents are to be attached in a mail with the job ref in the subject and
sent to
careers@pitechnologies.net

A Fast CSV Reader

To Download Sources Go to this Link

Introduction

One would imagine that parsing CSV files is a straightforward and boring task. I was thinking that too, until I had to parse several CSV files of a couple GB each. After trying to use the OLEDB JET driver and various Regular Expressions, I still ran into serious performance problems. At this point, I decided I would try the custom class option. I scoured the net for existing code, but finding a correct, fast, and efficient CSV parser and reader is not so simple, whatever platform/language you fancy.

I say correct in the sense that many implementations merely use some splitting method like String.Split(). This will, obviously, not handle field values with commas. Better implementations may care about escaped quotes, trimming spaces before and after fields, etc., but none I found were doing it all, and more importantly, in a fast and efficient manner.

And, this led to the CSV reader class I present in this article. Its design is based on the System.IO.StreamReader class, and so is a non-cached, forward-only reader (similar to what is sometimes called a fire-hose cursor).

Benchmarking it against both OLEDB and regex methods, it performs about 15 times faster, and yet its memory usage is very low.

To give more down-to-earth numbers, with a 45 MB CSV file containing 145 fields and 50,000 records, the reader was processing about 30 MB/sec. So all in all, it took 1.5 seconds! The machine specs were P4 3.0 GHz, 1024 MB.

Supported Features

This reader supports fields spanning multiple lines. The only restriction is that they must be quoted, otherwise it would not be possible to distinguish between malformed data and multi-line values.

Basic data-binding is possible via the System.Data.IDataReader interface implemented by the reader.

You can specify custom values for these parameters:

  • Default missing field action;
  • Default malformed CSV action;
  • Buffer size;
  • Field headers option;
  • Trimming spaces option;
  • Field delimiter character;
  • Quote character;
  • Escape character (can be the same as the quote character);
  • Commented line character.

If the CSV contains field headers, they can be used to access a specific field.

When the CSV data appears to be malformed, the reader will fail fast and throw a meaningful exception stating where the error occurred and providing the current content of the buffer.

A cache of the field values is kept for the current record only, but if you need dynamic access, I also included a cached version of the reader,CachedCsvReader, which internally stores records as they are read from the stream. Of course, using a cache this way makes the memory requirements way higher, as the full set of data is held in memory.

Latest Updates (3.7 Release)

  • Breaking: Added more field value trimming options.

Benchmark and Profiling

You can find the code for these benchmarks in the demo project. I tried to be fair and follow the same pattern for each parsing method. The regex used comes from Jeffrey Friedl's book, and can be found at page 271. It doesn't handle trimming and multi-line fields.

The test file contains 145 fields, and is about 45 MB (included in the demo project as a RAR archive).

I also included the raw data from the benchmark program and from the CLR Profiler for .NET 2.0.

Using the Code

The class design follows System.IO.StreamReader as much as possible. The parsing mechanism introduced in version 2.0 is a bit trickier because we handle the buffering and the new line parsing ourselves. Nonetheless, because the task logic is clearly encapsulated, the flow is easier to understand. All the code is well documented and structured, but if you have any questions, simply post a comment.

Basic Usage Scenario

Collapse
using System.IO; using LumenWorks.Framework.IO.Csv;  void ReadCsv() {     // open the file "data.csv" which is a CSV file with headers     using (CsvReader csv =            new CsvReader(new StreamReader("data.csv"), true))     {         int fieldCount = csv.FieldCount;         string[] headers = csv.GetFieldHeaders();          while (csv.ReadNextRecord())         {             for (int i = 0; i < class="code-keyword" style="color: blue; ">string.Format("{0} = {1};",                               headers[i], csv[i]));              Console.WriteLine();         }     } }

Simple Data-Binding Scenario (ASP.NET)

Collapse
using System.IO; using LumenWorks.Framework.IO.Csv;  void ReadCsv() {     // open the file "data.csv" which is a CSV file with headers     using (CsvReader csv = new CsvReader(                            new StreamReader("data.csv"), true))     {         myDataRepeater.DataSource = csv;         myDataRepeater.DataBind();     } }

Complex Data-Binding Scenario (ASP.NET)

Due to the way both the System.Web.UI.WebControls.DataGrid and System.Web.UI.WebControls.GridView handleSystem.ComponentModel.ITypedList, complex binding in ASP.NET is not possible. The only way around this limitation would be to wrap each field in a container implementing System.ComponentModel.ICustomTypeDescriptor.

Anyway, even if it was possible, using the simple data-binding method is much more efficient.

For the curious amongst you, the bug comes from the fact that the two grid controls completely ignore the property descriptors returned bySystem.ComponentModel.ITypedList, and relies instead on System.ComponentModel.TypeDescriptor.GetProperties(...), which obviously returns the properties of the string array and not our custom properties. SeeSystem.Web.UI.WebControls.BoundColumn.OnDataBindColumn(...) in a disassembler.

Complex Data-Binding Scenario (Windows Forms)

Collapse
using System.IO; using LumenWorks.Framework.IO.Csv;  void ReadCsv() {     // open the file "data.csv" which is a CSV file with headers     using (CachedCsvReader csv = new            CachedCsvReader(new StreamReader("data.csv"), true))     {         // Field headers will automatically be used as column names         myDataGrid.DataSource = csv;     } }

Custom Error Handling Scenario

Collapse
using System.IO; using LumenWorks.Framework.IO.Csv;  void ReadCsv() {     // open the file "data.csv" which is a CSV file with headers     using (CsvReader csv = new CsvReader(            new StreamReader("data.csv"), true))     {         // missing fields will not throw an exception,         // but will instead be treated as if there was a null value         csv.MissingFieldAction = MissingFieldAction.ReplaceByNull;          // to replace by "" instead, then use the following action:         //csv.MissingFieldAction = MissingFieldAction.ReplaceByEmpty;          int fieldCount = csv.FieldCount;         string[] headers = csv.GetFieldHeaders();          while (csv.ReadNextRecord())         {             for (int i = 0; i < class="code-keyword" style="color: blue; ">string.Format("{0} = {1};",                               headers[i],                               csv[i] == null ? "MISSING" : csv[i]));              Console.WriteLine();         }     } }

Custom Error Handling Using Events Scenario

Collapse
using System.IO; using LumenWorks.Framework.IO.Csv;  void ReadCsv() {     // open the file "data.csv" which is a CSV file with headers     using (CsvReader csv = new CsvReader(            new StreamReader("data.csv"), true))     {         // missing fields will not throw an exception,         // but will instead be treated as if there was a null value         csv.DefaultParseErrorAction = ParseErrorAction.RaiseEvent;         csv.ParseError += new ParseErrorEventHandler(csv_ParseError);          int fieldCount = csv.FieldCount;         string[] headers = csv.GetFieldHeaders();          while (csv.ReadNextRecord())         {             for (int i = 0; i < class="code-keyword" style="color: blue; ">string.Format("{0} = {1};",                               headers[i], csv[i]));              Console.WriteLine();         }     } }  void csv_ParseError(object sender, ParseErrorEventArgs e) {     // if the error is that a field is missing, then skip to next line     if (e.Error is MissingFieldException)     {         Console.Write("--MISSING FIELD ERROR OCCURRED");         e.Action = eErrorAction.AdvanceToNextLine;     } }

SW Tester (Web) At Sahm Group

Location : Egypt
Sahm Group Inc. has been established in 2002 as a diversified group of Strategic Business Units (SBUs) working mainly in the ICMT field (Information, communication and Media Technologies).
The corporate achieves a very fast growth in its services and Business units.
Moreover, Sahm Group has a customer base in over 11 Countries (Egypt, UAE, KSA, Kuwait, Sudan, USA, UK, Panama, Holland, Jordan, and Syria)
Our diverse corporate structure delivers solutions in various Fields such as Business process management, tailored software solutions, operations Outsourcing, multimedia design, and TV productions.
www. sahmgroup.comSAHM is pleased to announce the coming vacant place:
- Web Tester(With At Least 3 Years Experience)
Main Tasks:- Creating and executing an efficient and effective test of the applications under various system performance scenarios and various development life cycles.
- Designing test cases/plans.
- Direct software system testing and validation procedures,
- Analyzing and operating software for the purpose of finding bugs.
- Instantly test to meet aggressive product delivery schedules, and enough qualified test that defects don’t escape to our customers
- Building product quality, identifying defects, pre-deployment checklist and more.
- Quick understanding to the testing process or methodology, test-program concerns including test environment, data management, trouble reporting and resolution, and test design and development.
- Your work may linked to the quality assurance as you may be assigned to monitor and improve the process, make sure that any agreed-upon standards and procedures are followed, and ensure that problems are found and dealt with: “It is oriented to prevention”.
- Satisfy customer through professional customer support procedures and communications.
Kindly, send your CV to:sahmawy1@ymail.com
Please, put position title in mail subject

Senior PHP Developers for immediate hiring

Location : Egypt
We need the following positions for immediate hiring, CVs should be sent to mailto:vacanciesavailable@live.co.uk with job code as a subject.
· Senior PHP Developers (CODE: FTSPD):
o Excellent leadership skills
o Excellent planning and delegation skills
o Excellent communication skills
o Extensive knowledge of OOP
o 2-3 years of experience developing PHP Enterprise applications
o Linux experience is a plus
General Requirements :
ü Ability to communicate in English (Reading and Writing) is crucial, please don’t apply if you can’t speak, read/write English
ü Excellent communication skills
ü We're looking for creative enthusiastic people who can take an idea seriously and develop it into a fully deployed project

PHP5/MySQL Developer

Location : Egypt
new company in maadi looking for 2 developers (well payed)
If you have 2+ years of professional PHP web development experience and got the required skills ... apply now !
Required: php5, mvc framework experience (symfony, zend or other ), mysql, js/ajax
Preferred: lamp, french
send your cv to samy@hatla2ee.com

Senior Sharepoint Developer:

Location : Egypt
For A Multinational Co. working in IT Field (Cairo Branch):
Must have 6-8 years exp. in the same field
If you are interested just send your c.v to cv@strategic.ws and write the name of the vacancy on subject