site map  

content writing

google adwords

google search

keyword research

link development

msn search

pay per click

social media

website analytics

yahoo search

 Related Articles

static content

Web Developer [HTML/CSS/PHP/C#/.Net/SQL/Flash] 14 November 2007
 

My market leading client in the New Media sector is looking to recruit a Web Developer for their site located near to Wigan. You will be required to work within the website development team assisting the other developers in building & developing static and dynamic websites. You will be adding new content to Websites & entering date into databases. Other responsibilities will be to liaise with the graphic design team and dealing with clients' via telephone and meetings. You will also be required to liaise directly with the development team, design team, senior developer and the new media studio manager. This role will be suitable for candidates who have either recently graduated from university who have the appropriate skill-set combined with a willingness to learn & develop their skills OR candidates that have recent professional experience. Experience of HTML, CSS, .Net, C#, T-SQL, ActionScript, Visual Web Studio and Flash is highly desirable. My client has been operating for over 9 years now and has gone from strength to strength. Although they are a small business they have an enviable client base of mid-market leading clients' to blue chip clients'. The location is ideal for commuting from Manchester, Preston, Warrington and Bolton. My client offers an excellent remuneration package inc. a competitive basic as well as paid holidays and a healthcare plan.

 
 
Should Your E-Commerce Site be Dynamic or Static? 26 October 2007
 

A discussion at Cre8asite Forums goes into a lot of questions about what a search engine prefers to see in a homepage. Is dynamic content preferred, or does a static homepage do just as well? For instance, the big contenders...

 
 
Evga e-GeForce 7900 Gt Ko SuperClocked Version Sli Pci-Express 256 Mb Gddr3 Dual Dvi Hdtv Out (London Sw, Price: £100) 01 January 0001
 

The e-GeForce 7900 Gt Ko SuperClock features Evga s own high-efficiency thermal solution. The memory is now covered by the innovative Evga fan which allows for better cooling. Gamers will appreciate the higher clock speeds and improved performance made possible by this new and improved cooling solution exclusively from Evga. This card has only been opened for testing and is in absolutely superb condition. Don t have the original box but will come in an nvidia anti-static bag. Comes with 2 x Dvi Adapters 2 x Sli Bridge Connectors Pci-Express Cable Converter and Manual. Drivers can be easily downloaded from the nvidia site. Specifications GeForce 7900 Gt Core running at 580MHz 256MB Gddr3 Extreme Memory running at 1580MHz 24 Pixel Pipelines Designed For Extreme Hd Gaming Delivering Ultra Realistic Gaming Experiences Nvidia Pure Video Technology Delivering high definition video playback supporting H.264 and Wmv9 Dedicated Video processors free the Gpu Shaders to run 3d applications Letting the Gpu do what it does best Built for Windows Vista The next generation operating system Dual link Dvi support Sli ready Delivering upto 2x the performance Shader Model 3.0 Support True High Dynamic Range Rendering Support Based on Open Exr technology I can deliver this anywhere in the UK 6 P&P) I will accept payment via PayPal Bank Transfer Postal Cheque or Cash Please contact me through gumtree No Timewasters. Thanks < img src " http w.bit-tech.net content images 2006 07 evga 7900 gt ko superclock card4.jpg" > < img src " http i23.tinypic.com acs9cn.jpg" > < img src " http i24.tinypic.com 119s0zo.jpg" >

 
 
Static SEO Pages - Can Creating Static SEO Pages From Dynamic Content Increase Search Rankings? 19 October 2007
 

You may have heard about the SEO technique of creating static SEO optimized pages from your dynamic content, experts have been using this advanced stratagy for years with excellent results. The search engines love this technique because it gives them hundreds of SEO friendly static pages.

 
 
Dynamics of Dynamic Site Mapping Posted By : vishal verma 19 September 2007
 

Dynamic Site Mapping simplifies content management, streamlines website generation and provides personalization features that cannot be replicated with purely static web pages. If accurately utilized by SEOs it can double a sites popularity and increase business opportunities and revenue.

 
 
Flash Websites SEO, Flash Pages dont mean 0 visits anymore Posted By : Thomas H. Lindblom 14 August 2007
 

Flash websites are usually websites for the usage of the popular and regular online users. But flash websites are such websites that have very limited or no textual content at all. These flash websites are usually intended to be catchy and short time affairs unlike the regular blogs and everything which require some time of the users as they have to go through the textual content of the website to know that the website is good enough for them to visit again. They sometimes help to tell stories better than the plain text. So, flash movies can be a great thing to catch eyes instead of the boring static pages. The main problem is that SEO often do not understand flash as its not static and takes input from the users. SEO are used for handling static content and so its much harder for it to analyze flash than plain HTM codes.

 
 
The asp:ListView control (Part 1 - Building a Product Listing Page with Clean CSS UI) 10 August 2007
 

One of the new controls in ASP.NET 3.5 that I think will be very popular is the <asp:ListView> control.  The ListView control supports the data editing, insertion, deleting, paging and sorting semantics of higher-level controls like the GridView.  But - unlike the GridView - it provides you with complete control over the html markup generated.  The ListView control, when combined with the new Web Designer and rich CSS support in VS 2008, enables you to build much cleaner HTML UI.  Over the next few weeks I'll be putting together several blog posts that show off how you can use it. Building a Products Catalog Page For today's blog post we are going to start simple and just build a basic product catalog listing page like below: This products.aspx page will take a Catalog index in the URL, and use LINQ to SQL to retrieve and display product information.  We will also enable paging navigation at the bottom of the product listing (and do all of the paging operations in the database - so that only 6 products at a time are retrieved from the database).  The HTML markup output from the server will be 100% CSS based (no tables or inline styles).  Step 1: Defining out Site Layout with Nested Master Pages Before we start working on our product page, we'll first want to define the overall UI and layout structure for our site. If you are "design challenged" like me, one approach you might want to take with a new site is to get started by using one of the free HTML site templates that you can download from these two sites: http://www.opensourcetemplates.org/ or http://www.oswd.org/.  The templates on these sites are pure HTML (meaning you can use them with any server-side programming technology), and are built using clean CSS and XHTML markup.  For this blog post I decided to go with the "TerraFirma" template here. After I downloaded the template, the first thing I did was to create a root "Site.Master" Master Page that defined the overall layout structure for the site.  I then created a few nested master pages to define different column style layouts ("SingleColumn.master" and "TwoColumn.master").  VS 2008 now has great support for creating and using nested master pages that makes doing this easy.  You can read about how to define and use them in my earlier VS 2008 Nested Master Page Support blog post. Once we have created our master pages layouts, we can then create a new product catalog page for the site that is based on the single-column nested master page (click below for a full screen picture): Notice above how we can edit the page using the new VS 2008 Split View mode feature.  Above I'm using the "Vertical Split View" option so that I can see both the source and design view on a wide-screen monitor.  You can learn how to enable this in my earlier Enabling Vertical Split View in VS 2008 blog post. Step 2: Defining our CSS Rules using Mock HTML UI When it comes to defining our product UI for the page, there are a couple of different approaches we can use.  One would be to start by writing code to generate some dynamic data UI, and then work to make it pretty.  Another approach we could take would be to start by mocking up the HTML UI first, and then once we are happy with it write the code to make it dynamic.  For this blog post I'm going to take this second approach. To start let's just add a standard <ul><li> list of product content into the page: As you can see above, this <ul> list looks pretty unattractive, and obviously not like what we want our product listing page to look like.  To make it more attractive, we'll use some of the new CSS editing features I covered in my earlier VS 2008 Web Designer and CSS Support blog post. Specifically we'll want to open the new "Manage Styles" tool window in VS 2008 (you can open this by selecting the Format->CSS Styles->Managed Styles menu item): The manage styles window provides an easy way for us to see all CSS rules currently in our CSS stylesheet.  It also enables us to quickly lookup CSS selector values, refactor css rules across stylesheets, and create new rules.  We can create a new CSS rule for our product listing by selecting the "New Style..." link in the "Manage Styles" window.  This will bring up a dialog that enables us to choose where we want to define the CSS rule, and configure what settings we want for it.  For this sample we'll name the CSS selector ".productslist li" and select the "Define in existing style sheet" option to add it to the external stylesheet we already have for our application: We can then hit "ok", and return back to source mode to assign the CSS rule on our <ul> list (note how VS 2008 now provides CSS intellisense in source view): Currently our CSS rule doesn't have settings assigned to it, so our <ul> list will still look the same as it did before.  We can change that by assigning some CSS settings. There are a couple of ways we could set these CSS settings: 1) open up the CSS stylesheet and set them in source mode, 2) use the manage styles dialog we saw before to set them, or 3) use the new CSS Properties Window to edit the CSS rules in real-time within the designer.  We can bring up the CSS Properties Windows via the View->CSS Properties menu: When you select an element either in source-view or design-view, the CSS Properties Windows will list all of the CSS rules that apply to it.  The "Applied Rules" list at the top of the CSS Properties window indicates the precedence order of cascading rules.  The CSS properties list below it then shows all of the setting values assigned to that element.  The "target rule" drop down in the style application toolbar (circled in red above) indicates which CSS selector a change in the CSS Properties window will be assigned to.  In the example above our .productlist li rule is the CSS selector we currently have selected - which means as we set values in the CSS Properties window they will be persisted under that rule name in our external CSS stylesheet.  No style settings will be persisted inline the HTML page.  Let's now make some changes to our "productlist li" CSS rule.  First we'll change the layout display mode to be "inline": We'll then want to float each <li> to the left: And lastly we'll set the bottom and left margin of each <li> element to be 15px to space out the products nicely: Notice how when we are done no inline styles have been saved in our HTML page: Instead they've all been cleanly saved under our "productlist li" CSS selector in the external CSS stylesheet: Now all that remains is for us to replace the static HTML with some dynamic data coming from a database. Step 3: Defining our LINQ to SQL Data Model We'll use LINQ to SQL to retrieve our product data from the database.  LINQ to SQL is a great new ORM (object relational mapper) implementation built into .NET 3.5.  You can learn more about it from my on-going LINQ to SQL blog series (more posts in it coming soon): Part 1: Introduction to LINQ to SQL Part 2: Defining our Data Model Classes Part 3: Querying our Database Part 4: Updating our Database Part 5: Binding UI using the ASP:LinqDataSource Control We'll use the Northwind sample database for our product data, and define our data model classes in the LINQ to SQL ORM designer like so: Once we have our LINQ to SQL data model defined, we are ready to use the <asp:listview> control and bind the data to it. Step 4: Convert our HTML Mock UI to use the <asp:ListView> control The <asp:listview> control is a template-driven control.  The control itself outputs no "built-in" UI, nor any actual HTML markup.  Instead, you can define whatever markup *you* want displayed using the below templates: LayoutTemplate ItemTemplate AlternatingItemTemplate SelectedItemTemplate EditItemTemplate InsertItemTemplate EmptyItemTemplate EmptyDataTemplate ItemSeparatorTemplate GroupTemplate GroupSeparatorTemplate The first two templates in the list above - LayoutTemplate and ItemTemplate - are the most common ones you'll end up using.  The <LayoutTemplate> template allows you to define the outer container/wrapper of your data UI.  The <ItemTemplate> template then allows you to define what each item in the list should look like.  Within the <LayoutTemplate> you then define an "ItemContainer" control that indicates where you want the <asp:ListView> control to dynamically add the <ItemTemplate> items into the output markup. To see how this works in action, we could take our mock products HTML UI: And replace it with a <asp:listview> that can dynamically generate the exact same markup output like so: Notice above how I am using a <asp:placeholder> control in the <LayoutTemplate> to indicate where I want to add in my items in the list.  I could use other controls instead as the itemContainer if I wanted to - but by using an <asp:placeholder> control as the itemContainer I will prevent any id values or extra markup being generated. Notice above how I've also defined an <EmptyDataTemplate>.  This will display instead of the <LayoutTemplate> if I assign an empty sequence of data to the ListView.  This will avoid us inadvertently displaying an empty <ul></ul> element in the event that there are no products in the catalog specified.    Once we've defined our template above, we can write some code in our code-behind file to retrieve our product data using LINQ to SQL, and bind our ListView with it: VB: C#: And now when we run the page and supply a valid categoryid as a querystring argument we'll see our products dynamically pulled from the database: If we try a category that doesn't contain products, we'll get our empty template message: If you do a "view source" on the products page in the browser, you'll see that the markup generated from our ListView control is the same as what our static HTML was: There are no ID elements or inline styles generated.  We had complete control over every HTML element and attribute generated. Step 5: Using a <asp:LinqDataSource> control instead of writing code In our previous step above we wrote procedural LINQ to SQL code to databind our <asp:ListView>.  This obviously works, and provides a great deal of control over the logic executed. Another option you can alternatively use is a declarative ASP.NET datasource control.  All of the ASP.NET 2.0 datasource controls (SqlDataSource, ObjectDataSource, AccessDataSource, XmlDataSource, SiteMapDataSource, etc) work with the ListView.  You can also use the new <asp:LinqDataSource> control with it.  For more information on the LinqDataSource, check out my previous LINQ to SQL Part 5: Binding UI using the ASP:LinqDataSource Control blog post. To use the <asp:LinqDataSource> in the above sample, we'll first delete the previous code we wrote in the code-behind file, and then click on the <asp:ListView> control in the designer and select the "Choose Data Source->New DataSource" option.  We'll pick the "LINQ DataSource" option in the data source dialog, and then bind to the Northwind data model we created earlier.  We can then choose to bind the ListView against the "Products" entity collection in our Northwind data model: We can then hit the "Where" button to configure a LINQ filter based on the "category" value in the querystring (we could alternatively bind the value from a form value, cookie, session value, another control, etc): When we press the "ok" button the ListView's DataSourceID will be set to a new <asp:LinqDataSource> in the page: And now without us having to have any code in the application we have a product listing with custom HTML UI databinding against our LINQ to SQL data model. Step 6: Enabling Server Side Paging using the <asp:DataPager> control Our last step with this sample will be to enable paging support over the products data.  Specifically, we only want to display 6 products at a time on the page, and provide a nice page number UI to allow users to navigate forward and backwards over our product sequence. One of the other new controls in ASP.NET 3.5 is the <asp:DataPager> control - which makes data paging scenarios with the ListView control pretty easy.  You can drop it anywhere you want on a page, and set its "PagedControlID" property to point at the ListView, and its "PageSize" property to indicate how many items in the ListView you want displayed at a time: The <asp:DataPager> will then output navigation UI for your ListView: And then if you click the "2" link in the paging UI above it will show you the remaining 5 products in the category: The <asp:LinqDataSource> automatically uses LINQ to SQL's built-in support for server-side data paging to ensure that only 6 products (because the PageSize is 6) are ever retrieved from the database at a time.  This means that your application and database will scale even if you have thousands of products in a specific category. Disclaimer: The <asp:DataPager> in Beta2, though, does have some limitations in that it can't by default be driven off of a querystring value - which makes it not very SEO friendly.  I'll cover how to fix this and support a querystring index in a future blog post. Summary Hopefully the above walkthrough provides a good first look overview of how to use the new <asp:ListView> control.  You will find that this control provides you with complete control over the markup output sent down to a client - while still providing rich data paging, editing, deleting and insertion semantics.  I'll cover many more of these scenarios (along with the ListView's cool grouping functionality) in future blog posts. Click here to download a copy of the above sample in order to try it out on your own machine. Hope this helps - and have a great weekend! Scott

 
 
SpyProxy takes Web apps security fight to 'virtual sandbox' 08 August 2007
 

(InfoWorld) - Faced with volumes of browser vulnerabilities and Web-based exploits designed to take advantage of the flaws, security researchers presented a new process for protecting users with execution-based malware detection at the ongoing Usenix Security Symposium in Boston on Wednesday. In a demonstration led by Alexander Moshchuk, a University of Washington graduate student who is part of a research team that has developed a tool that uses the technique for filtering out malicious programs, the expert pitched the use of "virtual sandboxing" as an effective means for testing Web applications for suspicious behavior before they reach end-users' browsers. With the threat of drive-by attacks and zero day exploits expanding on a daily basis as malware authors advance their sophistication, security experts have increasingly downplayed the efficacy of traditional signature-based anti-virus technologies for stopping many online attacks. As a result, several new techniques have emerged for protecting end-users before vulnerabilities can be identified and patched. Virtualization is one of the technological means being adopted by many researchers attempting to address the problem, and Moshchuk highlighted the use of the technique in a tool created at UW and named SpyProxy. Injected as a virtual machine that sits between an end-users' browser and a Web site, SpyProxy promises to download and test any application that the browser is directed toward in order to weed-out potential attacks. In a matter of seconds, the security program can effectively run and analyze any type of Web page or application to determine whether it contains the hallmarks of many threats, the researcher said. "SpyProxy has limitations, but nonetheless we feel that it can be an effective new weapon in the Internet security arsenal, as a low-cost way to block real zero days that is complimentary to existing techniques and actively makes the Web browsing experience more secure," Moshchuk said. If you add up the number of days that Microsoft's Internet Explorer was vulnerable to published attacks during 2006, the total equates to roughly nine months of opportunities for malware authors to deliver their threats to end-users, said Moshchuk, who observed that business users in particular can ill afford to remain exposed to viruses and other threats on such a regular basis. Execution-based malware detection cannot identify some advanced forms of threat such as so-called cross-site scripting (XSS) scams based on their latent nature, but most active attacks can be unearthed with relative ease, Moshchuk said. SpyProxy works by creating a virtual machine that mirrors the same browser as that being used by someone running the tool and fully renders any page or application that is accessed to determine whether the URL contains an attack. While the process does lead to delays in Web page delivery, on the order of roughly three seconds per URL in an unmodified state, the tradeoff of eliminating many zero days and drive-bys will make the technology acceptable to some end-users, the researcher maintains. In a test of roughly 2,000 Web site requests carried out by the UW team over 124 individual URLs, the researchers found some 27 active browser exploits and 73 spontaneous downloads that could represent malware, adware, or other unwanted programs. The group maintains that SpyProxy identified and blocked all of the threats. In terms of scalability, SpyProxy -- which the group plans to distribute free of charge -- was designed to handle multiple users on clusters of workstations. According to Moshchuk, a single-CPU device can process roughly 82,000 page requests in one day, which he estimated as sufficient coverage for approximately 800 users per machine. A quad-core machine could reasonably be expected to protect several thousand users in a single organization, he said. One limitation of SpyProxy: it works more effectively on sites that contain larger volumes of static content such as text, although it is taxed to scan applications that behave similarly to general purpose software programs, the researcher said. Another problem is that the tool sometimes struggles to determine when a page or application has completely finished loading, and when to pass content along to the end-user, which could lead to additional latency concerns. However, in a modified state where the tool is set to eliminate unnecessary scanning by allowing sites that have already been tested -- but which have not been changed since a previous download -- to flow through without constraint, or to allow pages with only static content to flow to the user unabated, the amount of time needed to allow SpyProxy to run its course drops to only 600 milliseconds, according to Moshchuk. Another manner to speed the downloading process and overall performance of the tool could be to deliver different portions of sites that are being tested as individual scans are being completed. Moshchuk said that the UW team hopes that other security researchers will apply similar techniques in addressing malware with active detection, and promised that it will also continue to expand and improve SpyProxy. "This isn't about building a perfect security tool. We really care about exploring the technique further," Moshchuk said. "But we think that people can already begin using the tool without affecting the end-user experience too much."

 
 
Using LINQ to XML (and how to build a custom RSS Feed Reader with it) 07 August 2007
 

One of the big programming model improvements being made in .NET 3.5 is the work being done to make querying data a first class programming concept.  We call this overall querying programming model "LINQ", which stands for .NET Language Integrated Query. LINQ supports a rich extensibility model that facilitates the creation of efficient domain-specific providers for data sources.  .NET 3.5 ships with built-in libraries that enable LINQ support against Objects, XML, and Databases. What is LINQ to XML? LINQ to XML is a built-in LINQ data provider that is implemented within the "System.Xml.Linq" namespace in .NET 3.5. LINQ to XML provides a clean programming model that enables you to read, construct and write XML data.  You can use LINQ to XML to perform LINQ queries over XML that you retrieve from the file-system, from a remote HTTP URL or web-service, or from any in-memory XML content.  LINQ to XML provides much richer (and easier) querying and data shaping support than the low-level XmlReader/XmlWriter API in .NET today.  It also ends up being much more efficient (and uses much less memory) than the DOM API that XmlDocument provides.  Using LINQ to XML to query a local XML File To get a sense of how LINQ to XML works, we can create a simple XML file on our local file-system like below that uses a custom schema we've defined to store RSS feeds: I could then use the new XDocument class within the System.Xml.Linq namespace to open and query the XML document above.  Specifically, I want to filter the <Feed> elements in the XML file and return a sequence of the non-disabled RSS feeds (where a disabled feed is a <Feed> element with a "status" attribute whose value is "disabled").  I could accomplish this by writing the code below: VB: C#: Notice in the code-snippets above how I'm loading the XML file using the XDocument.Load(path) static method - which returns back an XDocument object.  Because I'm running this code within ASP.NET, I'm using the Server.MapPath(path) helper method to resolve the correct path for my XML file relative to the page I'm running the code on. Once I have an XDocument object for my XML file I can then write a LINQ query expression to retrieve the XML data I'm looking for.  In the code above I'm querying over each of the <Feed> elements within the XML file.  This is driven by this opening clause in the LINQ query expression: from feed in feedXML.Decedents("Feed") I'm then applying a filter that only returns back those "Feed" elements that either don't have a "status" attribute, or whose "status" attribute value is not set to "disabled": Where (feed.Attribute("status") Is Nothing) OrElse (feed.Attribute("status").Value <> "disabled") I am then using the select clause in our LINQ expression to indicate what data I want returned.  If I simply wrote "select feed", LINQ to XML would return back a sequence of XElement objects that represents each of the XML element nodes that match my filter.  In the code samples above, though, I am using the shaping/projection features of LINQ to instead define a new anonymous type on the fly, and I am defining two properties on it - Name and Feed - that I want populated using the <Name> and <Url> sub-elements under each <Feed> element: Select Name = feed.Element("Name").Value, Url = feed.Element("Url").Value As you can see above (and below), I can then work against this returned sequence of data just like I would any collection or array in .NET.  VS 2008 provides full intellisense and compilation checking support over this anonymous type sequence: I can also data-bind the results against any UI control in ASP.NET, Windows Forms, or WPF.  For example, assuming I had a dropdownlist control defined in my page like so: I could use the below LINQ to XML code to databind the results to it: This will then produce a nice drop-downlist in our HTML page like so: Hmm - What is this "anonymous type" thing? In my code above I've taken advantage of a new language feature in VB and C# called "anonymous types".  Anonymous types enable developers to concisely define inline CLR types within code, without having to explictly define a formal class declaration of the type.  You can learn more about them in my previous New "Orcas" Language Feature: Anonymous Types blog post. While anonymous types can be super useful when you want to locally iterate and work with data, we'll often want/need to define a standard class when passing the results of our LINQ query between multiple classes, across class library assemblies, and over web-services.  To enable this, I could define a non-anonymous class called "FeedDefinition" to represent our Feed data like so: Note above how I'm using the new "Automatic Properties" feature of C# to define the properties (and avoid having to define a field for them). I could then write the below method to return back a generics based List<FeedDefinition> collection containing FeedDefinition objects: Note above how the only change I've made to the LINQ to XML query we were using before is to change the "select" clause from "select new" (with no type-name) to "select new FeedDefinition".  With this change I'm now returning a sequence of FeedDefinition objects that I can pass from class to class, assembly to assembly, and across web-services. Using LINQ to XML to Retrieve a Remote RSS XML Feed The XDocument.Load(path) static method supports the ability open both XML files from the file-system, as well as remote XML feeds returned from an HTTP URL.  This enables you to use it to access remote RSS feeds, REST APIs, as well as any other XML feed published on the web. For an example of this in action, let's take a look at the XML of my blog's RSS feed (http://weblogs.asp.net/scottgu/rss.aspx): I could write the LINQ to XML code below to retrieve the above blog post data from my RSS feed, and work with the individual feed items as .NET objects: Note above how I am converting the "Published" field in the RSS field - which is a string in the XML - to a .NET DateTime object.  Notice also how LINQ to XML includes a built-in XNamespace type that provides a type-safe way to declare and work with XML Namespaces (which I need to-do to retrieve the <slash:comments> element). I could then take advantage of the composition features of LINQ to perform a further sub-query on the result, so that I filter over only those RSS posts that were published within the last 7 days using the code below: As you can see above, you can feed the results of one LINQ query expression to be the input of another LINQ expression.   This enables you to write very clean, highly composable, code. Using LINQ Sub-Queries within a LINQ to XML Query Expression If you look at the raw XML of my RSS feed, you'll notice that the "tag" comments for each post are stored as repeated <category> elements directly below each <item> element: When designing the object model for a "BlogEntry" class, I might want to represent these <category> values as a sub-collection of strings.  For example, using a "Tags" property that is a generic list of type string: You might be wondering - how do we take a flat collection of <category> elements under <item> and transform them into a nested sub-collection of strings?  The nice thing about LINQ is that it makes this type of scenario easy by allowing us to use nested LINQ query expressions like so: This "shaping" power of LINQ, and its ability to take flat data structures and make them hierarchical (and take hierarchical data structures and make them flat) is super powerful.  You can use this feature with any type of data source - regardless of whether it is XML, SQL, or plain old objects/arrays/collections. Putting it all Together with a Simple RSS Feed Reader The code snippets I've walked through above demonstrate how you can easily write LINQ to XML code to retrieve a list of RSS feeds from a local XML file, and how to remotely query an RSS feed to retrieve an individual feed's details and individual item post contents.  I could obviously then take the resulting feed contents and data-bind it to a ASP.NET GridView or ListView control to provide a nice view of the blog feed: I've built a simple sample application that puts all of these snippets together to deliver a simple RSS Reader with LINQ to XML and the new <asp:ListView> control.  You can download it here.  Included in the download is both a VB and C# version of the application. Summary LINQ to XML provides a really powerful way to efficiently query, filter, and shape/transform XML data.  You can use it both against local XML content, as well as remote XML feeds.  You can use it to easily transform XML data into .NET objects and collections that you can further manipulate and transfer across your application. LINQ to XML uses the same core LINQ query syntax and concepts that LINQ to SQL, LINQ to Objects, LINQ to SharePoint, LINQ to Amazon, LINQ to NHibernate, etc. use when querying data. You can learn more about the LINQ query syntax and the supporting language features being added to VB and C# to support it from these previous blog posts of mine: Automatic Properties, Object Initializer and Collection Initializers Extension Methods Lambda Expressions Query Syntax Anonymous Types You might also find these blog posts of mine useful to learn more about LINQ to SQL: Part 1: Introduction to LINQ to SQL Part 2: Defining our Data Model Classes Part 3: Querying our Database Part 4: Updating our Database Part 5: Binding UI using the ASP:LinqDataSource Control In a future blog post I'll return to LINQ to XML and demonstrate how it can be used not just to query XML, but also to really cleanly generate XML output from a .NET data structure.  Hope this helps, Scott

 
 
Sun adds compiler to JavaFX platform 20 July 2007
 

(InfoWorld) - Sun Microsystems has been quiet about its JavaFX technology for building graphical applications since introducing it in May, but on Friday the company added a compiler to the platform. Also on tap is an updated plug-in to outfit the open source NetBeans platform for building JavaFX applications. New online demonstrations also are being made available. Based on the Swing GUI toolkit for Java, JavaFX is intended to bolster development of graphical user experiences for systems ranging from desktops to mobile clients and even TVs. "JavaFX makes the power that existed within Swing more accessible to developers so they can create exciting applications," featuring visual interaction, said Jean Elliott, Sun's senior director of Java software product marketing. At the JavaOne conference in May, Sun unveiled two critical components planned for the platform: JavaFX Script, which is a scripting language for content creation, and JavaFX Mobile, which provides a software system for mobile devices. JavaFX technologies are only in a very early stage of development. Applications will run with a Java Virtual Machine. A beta release of JavaFX technology is intended for release at the JavaOne conference next May, but early access code -- described as "sub-alpha" code by Sun -- has been made available. Source code for the OpenJavaFX Compiler is available here. The compiler enables JavaFX Script code to be compiled into Java code. "What you really want to do is compile an entire program, get it all into Java to begin with and it compiles much faster," said Chet Haase, Sun Java chief client architect. The NetBeans plug-in, meanwhile, will provide for developing JavaFX Script programs in the IDE. JavaFX programs can be built easier, Haase said. JavaFX programs will be available as NetBeans projects. The plug-in will work with NetBeans 5.5 and is due to be incorporated this fall into NetBeans 6.0, the upcoming version of the IDE. The NetBeans 6.0 version of the plug-in features a preview of JavaFXPad integration. JavaFXPad is a lightweight tool for building graphical elements using JavaFX Script. The NetBeans 5.5 plug-in can be accessed here, while the NetBeans 6.0 variant is available here. Two demonstrations are available showing an instant messaging client and SVG (Scalable Vector Graphics) integration. Users must first have the Java development kit installed to view the demonstrations. The demonstrations can be found here.  With JavaFX Sun seeks to enable more lightweight, easier development of consumer-oriented applications, Haase said. These could include Web sites with rich animation and user interfaces that are more dynamic than a typical forms-based application, he said. JavaFX joins what is becoming a crowded market for technologies to create graphical interfaces. "The market is only recently crowded," said analyst Joe Niski, of Burton Group. Adobe's Flash and Flex technologies have been around for a while but have not generated a lot of excitement lately, Niski said.  But Sun's JavaFX and Microsoft's new Silverlight platform have been added to the mix, he noted. Sun is off to a good start with JavaFX, said Niski. "They have a really compelling story, at least with the platform penetration, because JavaFX will run on any JVM," Niski said. "The one thing that it lacks is good graphical tooling targeting Web designers," he said. "It's good to see Sun putting attention into the user experience," said Niski. JavaFX extends beyond AJAX (Asynchronous JavaScript and XML). "AJAX makes it easier to build more dynamic Web pages but it’s still about static Web pages," Haase said. "It's not as rich an interface for the user," as JavaFX, he said. JavaFX Script was built with developers of graphical and GUI applications in mind, Elliott said. JavaFX Script code was downloaded 3,000 times from May 13 to June 10. Microsoft is set to soon ship a release candidate for Silverlight. A release candidate is considered a precursor to the general release of the technology.

 
 

 Related Pages

 a content management conference 01 December 2006

 Related Companies

 

 

Site Map