Search Results

Search found 23262 results on 931 pages for 'content analysis'.

Page 102/931 | < Previous Page | 98 99 100 101 102 103 104 105 106 107 108 109  | Next Page >

  • Time complexity with bit cost

    - by Keyser
    I think I might have completely misunderstood bit cost analysis. I'm trying to wrap my head around the concept of studying an algorithm's time complexity with respect to bit cost (instead of unit cost) and it seems to be impossible to find anything on the subject. Is this considered to be so trivial that no one ever needs to have it explained to them? Well I do. (Also, there doesn't even seem to be anything on wikipedia which is very unusual). Here's what I have so far: The bit cost of multiplication and division of two numbers with n bits is O(n^2) (in general?) So, for example: int number = 2; for(int i = 0; i < n; i++ ){ number = i*i; } has a time complexity with respect to bit cost of O(n^3), because it does n multiplications (right?) But in a regular scenario we want the time complexity with respect to the input. So, how does that scenario work? The number of bits in i could be considered a constant. Which would make the time complexity the same as with unit cost except with a bigger constant (and both would be linear). Also, I'm guessing addition and subtraction can be done in constant time, O(1). Couldn't find any info on it but it seems reasonable since it's one assembler operation.

    Read the article

  • Verizon SongID - How is it programmed?

    - by CheeseConQueso
    For anyone not familiar with Verizon's SongID program, it is a free application downloadable through Verizon's VCast network. It listens to a song for 10 seconds at any point during the song and then sends this data to some all-knowing algorithmic beast that chews it up and sends you back all the ID3 tags (artist, album, song, etc...) The first two parts and last part are straightforward, but what goes on during the processing after the recorded sound is sent? I figure it must take the sound file (what format?), parse it (how? with what?) for some key identifiers (what are these? regular attributes of wave functions? phase/shift/amplitude/etc), and check it against a database. Everything I find online about how this works is something generic like what I typed above. From audiotag.info This service is based on a sophisticated audio recognition algorithm combining advanced audio fingerprinting technology and a large songs' database. When you upload an audio file, it is being analyzed by an audio engine. During the analysis its audio “fingerprint” is extracted and identified by comparing it to the music database. At the completion of this recognition process, information about songs with their matching probabilities are displayed on screen.

    Read the article

  • Why do I get CA1806 when I catch exception in C++/CLI?

    - by brickner
    I've recently upgraded my project from Visual Studio 2008 to Visual Studio 2010. By enabling Code Analysis and compiling in Release, I'm getting warning CA1806: Do not ignore method results. I've managed to reduce the code that produces the warning to this code: .h file: public ref class Foo { public: void Bar(); }; .cpp file: void Foo::Bar() { try { } catch (const std::exception&) // here I get the warning { } } the warning: CA1806 : Microsoft.Usage : 'Foo::Bar(void)' calls 'Global::__CxxRegisterExceptionObject(void*, void*)' but does not use the HRESULT or error code that the method returns. This could lead to unexpected behavior in error conditions or low-resource situations. Use the result in a conditional statement, assign the result to a variable, or pass it as an argument to another method. If I try to use the exception value or do catch(...) the warning still appears. If I catch managed exceptions instead or compile in Debug I don't get the warning. Why do I get this warning? UPDATE I've decided to open a bug report on Microsoft Connect.

    Read the article

  • How to overcome the programmer's block ?

    - by Nicolas Dorier
    How do you do when, during the development of your application, you can't decide yourself what to do next. You have no problem technically speaking, you have no problem to write clean code BUT you have a problem to decide yourself on what to code now. And you spend time thinking and thinking again on your design, in the car, in the shower, and you cannot write a single line of code... I think we call this "analysis paralysis". I hate being in this state ! How can you avoid this ? How do you do to not fall in this state ? I think this occurs when we are writting a big chunk of code with no visible improvement, but I'm not sure... UPDATE Like some of you said, this problem is also what we call the "programmer's block" (analogy with the writer's block). Doing some TDD doesn't help because I'm stuck, I can't decide myself what class to code, what methods to put inside (even a name of method). Though I admit that it helps to break a big chunk of code into smaller ones. Like Talesh said my head becomes full of "what-if".

    Read the article

  • P/Invoke declarations should not be safe-critical

    - by Bobrovsky
    My code imports following native methods: DeleteObject, GetFontData and SelectObject from gdi32.dll GetDC and ReleaseDC from user32.dll I want to run the code in full trust and medium trust environments (I am fine with exceptions being thrown when these imported methods are indirectly used in medium trust environments). When I run Code Analysis on the code I get warnings like: CA5122 P/Invoke declarations should not be safe-critical. P/Invoke method 'GdiFont.DeleteObject(IntPtr)' is marked safe-critical. Since P/Invokes may only be called by critical code, this declaration should either be marked as security critical, or have its annotation removed entirely to avoid being misleading. Could someone explain me (in layman terms) what does this warning really mean? I tried putting these imports in static SafeNativeMethods class as internal static methods but this doesn't make the warnings go away. I didn't try to put them in NativeMethods because after reading this article I am unsure that it's the right way to go because I don't want my code to be completely unusable in medium trust environments (I think this will be the consequence of moving imports to NativeMethods). Honestly, I am pretty much confused about the real meaning of the warning and consequences of different options to suppressing it. Could someone shed some light on all this? EDIT: My code target .NET 2.0 framework. Assembly is marked with [assembly: AllowPartiallyTrustedCallers] Methods are declared like this: [DllImport("gdi32")] internal static extern int DeleteObject(HANDLE hObject);

    Read the article

  • CSS drop-down menus pushing page content down

    - by Mason Jones
    This is probably (hopefully) a pretty simple question, but I can't seem to get it to work so I'll turn to the experts here. I'm using a pretty straightforward CSS drop-down menu, with just a little JQuery involved. The issue is that when I hover over the drop-down and it opens, it's pushing everything on the page down below it rather then opening over it. I've tried messing with the z-index but that doesn't seem to be the issue. Any tips would be fantastic, thanks in advance. Here's the HTML; sorry it's not super-pretty, I had to rip out a bunch of stuff to make it simple and generic. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <HTML style="zoom: 100%; "> <HEAD> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.0/jquery.min.js" type="text/javascript"></script> </HEAD> <BODY class="bodyclass" style="background:#BCE2F1; height: 100%;"> <DIV id="maincontainer" style="min-height: 100%;"> <STYLE type="text/css"> #cssdropdown, #cssdropdown ul { font-size: 9pt; background-color: black; list-style: none; } #cssdropdown, #cssdropdown * { padding: 0; margin: 0; } #cssdropdown li.headlink { width: 140px; float: left; margin-left: -1px; border: 1px black solid; background-color: white; text-align: center; } #cssdropdown li.headlink a { display: block; color: #339804; padding: 3px; text-decoration: none; } #cssdropdown li.headlink a:hover { background-color: #F8E0AC; font-weight: bold; } #cssdropdown li.headlink ul { display: none; border-top: 1px black solid; text-align: left; } #cssdropdown li.headlink:hover ul { display: block; text-decoration: none; } #cssdropdown li.headlink ul li a { padding: 5px; height: 15px; } #cssdropdown li.headlink ul li a:hover { background-color: #CCE9F5; text-decoration: none; font-weight: normal; } /* #cssdropdown a { color: #CCE9F5; } */ #cssdropdown ul li a:hover { text-decoration: none; } #cssdropdown li.headlink { background-color: white; } #cssdropdown li.headlink ul { background-color: white; background-position: bottom; padding-bottom: 2px; } </STYLE> <SCRIPT language="JavaScript"> $(document).ready(function(){ $('#cssdropdown li.headlink').hover( function() { $('ul', this).css('display', 'block'); }, function() { $('ul', this).css('display', 'none'); }); }); </SCRIPT> <DIV class="navigation_box" style="border: none;"> <DIV class="innercontent"> <DIV style="background: white; float: left; padding: 5px; border: solid 1px black;"> LOGO </DIV> <DIV class="navmenu" style="float: right; bottom: 0; font-size: 9pt; text-align: right;"> <SPAN>Logged in as [email protected]</SPAN><BR> <UL id="cssdropdown"> <LI class="headlink"> <A href="http://localhost:3000/one">One</A> <UL style="display: none; "> <LI><A href="http://localhost:3000/one">Option One</A></LI> <LI><A href="http://localhost:3000/one">Option Two</A></LI> <LI><A href="http://localhost:3000/one">Option Three</A></LI> <LI><A href="http://localhost:3000/one">Option Four</A></LI> </UL> </LI> <LI class="headlink"> <A href="http://localhost:3000/two">Two</A> <UL style="display: none; "> <LI><A href="http://localhost:3000/two">Option Two-One</A></LI> <LI><A href="http://localhost:3000/two">Option Two-Two</A></LI> <LI><A href="http://localhost:3000/two">Option Two-Three</A></LI> </UL> </LI> <LI class="headlink" style="width: 80px;"> <A href="http://localhost:3000/three">Three</A> </LI> <LI class="headlink" style="width: 300px; padding-top: 2px; height: 19px;"> <FORM action="http://localhost:3000/search" method="post"> <P> Search: <INPUT id="searchwords" name="searchwords" size="20" type="text" value=""> <INPUT name="commit" type="submit" value="Find"> </P> </FORM> </LI> <LI class="headlink" style="width: 60px;"> <A href="http://localhost:3000/four">Four</A> </LI> <LI class="headlink" style="width: 60px;"> <A href="http://localhost:3000/logout">Logout</A> </LI> </UL> </DIV> </DIV> </DIV> <DIV id="contentwrapper" style="clear:both"> <DIV class="innercontent" style="margin: 0px 20px 20px 20px;"> <H1>Some test content here to fill things out a little bit.</H1> </DIV> </DIV> </DIV> <DIV id="footer" style="clear: both; float: bottom;"> <DIV class="innercontent" style="font-size: 10px;"> Copyright 2008-2010 </DIV> </DIV> </BODY>

    Read the article

  • Trying to randomise a jQuery content slider

    - by alecrust
    Hi everyone, I'm using a very nice jQuery content slider called Easy Slider on my site that I downloaded from Css Globe. The script is excellent and does just what I want - except I can't make it randomise the list, it always scrolls from left to right or right to left! I'm far from good with JavaScript, so my attempts at solving this have been feeble. Although I'm sure it must be an easy fix! If anyone wouldn't mind taking a glance over the script to see if they can spot what I need to change to make it random it would be greatly appreciated! I've tried contacting the original plugin developer but have had no response yet. The comments on the Easy Slider page didn't bear much fruit either unfortunately. I've pasted the script I'm using on my site below: /* * Easy Slider 1.7 - jQuery plugin * written by Alen Grakalic * http://cssglobe.com/post/4004/easy-slider-15-the-easiest-jquery-plugin-for-sliding * * Copyright (c) 2009 Alen Grakalic (http://cssglobe.com) * Dual licensed under the MIT (MIT-LICENSE.txt) * and GPL (GPL-LICENSE.txt) licenses. * * Built for jQuery library * http://jquery.com * */ (function($) { $.fn.easySlider = function(options){ // default configuration properties var defaults = { prevId: 'prevBtn', prevText: 'Previous', nextId: 'nextBtn', nextText: 'Next', controlsShow: true, controlsBefore: '', controlsAfter: '', controlsFade: true, firstId: 'firstBtn', firstText: 'First', firstShow: false, lastId: 'lastBtn', lastText: 'Last', lastShow: false, vertical: false, speed: 800, auto: false, pause: 7000, continuous: false, numeric: false, numericId: 'controls' }; var options = $.extend(defaults, options); this.each(function() { var obj = $(this); var s = $("li", obj).length; var w = $("li", obj).width(); var h = $("li", obj).height(); var clickable = true; obj.width(w); obj.height(h); obj.css("overflow","hidden"); var ts = s-1; var t = 0; $("ul", obj).css('width',s*w); if(options.continuous){ $("ul", obj).prepend($("ul li:last-child", obj).clone().css("margin-left","-"+ w +"px")); $("ul", obj).append($("ul li:nth-child(2)", obj).clone()); $("ul", obj).css('width',(s+1)*w); }; if(!options.vertical) $("li", obj).css('float','left'); if(options.controlsShow){ var html = options.controlsBefore; if(options.numeric){ html += '<ol id="'+ options.numericId +'"></ol>'; } else { if(options.firstShow) html += '<span id="'+ options.firstId +'"><a href=\"javascript:void(0);\">'+ options.firstText +'</a></span>'; html += ' <span id="'+ options.prevId +'"><a href=\"javascript:void(0);\">'+ options.prevText +'</a></span>'; html += ' <span id="'+ options.nextId +'"><a href=\"javascript:void(0);\">'+ options.nextText +'</a></span>'; if(options.lastShow) html += ' <span id="'+ options.lastId +'"><a href=\"javascript:void(0);\">'+ options.lastText +'</a></span>'; }; html += options.controlsAfter; $(obj).after(html); }; if(options.numeric){ for(var i=0;i<s;i++){ $(document.createElement("li")) .attr('id',options.numericId + (i+1)) .html('<a rel='+ i +' href=\"javascript:void(0);\">'+ (i+1) +'</a>') .appendTo($("#"+ options.numericId)) .click(function(){ animate($("a",$(this)).attr('rel'),true); }); }; } else { $("a","#"+options.nextId).click(function(){ animate("next",true); }); $("a","#"+options.prevId).click(function(){ animate("prev",true); }); $("a","#"+options.firstId).click(function(){ animate("first",true); }); $("a","#"+options.lastId).click(function(){ animate("last",true); }); }; function setCurrent(i){ i = parseInt(i)+1; $("li", "#" + options.numericId).removeClass("current"); $("li#" + options.numericId + i).addClass("current"); }; function adjust(){ if(t>ts) t=0; if(t<0) t=ts; if(!options.vertical) { $("ul",obj).css("margin-left",(t*w*-1)); } else { $("ul",obj).css("margin-left",(t*h*-1)); } clickable = true; if(options.numeric) setCurrent(t); }; function animate(dir,clicked){ if (clickable){ clickable = false; var ot = t; switch(dir){ case "next": t = (ot>=ts) ? (options.continuous ? t+1 : ts) : t+1; break; case "prev": t = (t<=0) ? (options.continuous ? t-1 : 0) : t-1; break; case "first": t = 0; break; case "last": t = ts; break; default: t = dir; break; }; var diff = Math.abs(ot-t); var speed = diff*options.speed; if(!options.vertical) { p = (t*w*-1); $("ul",obj).animate( { marginLeft: p }, { queue:false, duration:speed, complete:adjust } ); } else { p = (t*h*-1); $("ul",obj).animate( { marginTop: p }, { queue:false, duration:speed, complete:adjust } ); }; if(!options.continuous && options.controlsFade){ if(t==ts){ $("a","#"+options.nextId).hide(); $("a","#"+options.lastId).hide(); } else { $("a","#"+options.nextId).show(); $("a","#"+options.lastId).show(); }; if(t==0){ $("a","#"+options.prevId).hide(); $("a","#"+options.firstId).hide(); } else { $("a","#"+options.prevId).show(); $("a","#"+options.firstId).show(); }; }; if(clicked) clearTimeout(timeout); if(options.auto && dir=="next" && !clicked){; timeout = setTimeout(function(){ animate("next",false); },diff*options.speed+options.pause); }; }; }; // init var timeout; if(options.auto){; timeout = setTimeout(function(){ animate("next",false); },options.pause); }; if(options.numeric) setCurrent(0); if(!options.continuous && options.controlsFade){ $("a","#"+options.prevId).hide(); $("a","#"+options.firstId).hide(); }; }); }; })(jQuery); Many thanks again! Alec

    Read the article

  • How can I set the default value for a custom "Number" field in SharePoint?

    - by UnhipGlint
    I created a custom field for a content type I am creating using the XML below. <field ID="{GUID}" Required="False" DisplayName="Likes" Name="Likes" Type="Number" SourceID="http://schemas.microsoft.com/sharepoint/v3"><default>0</default></field> The field is meant to be used as a counter of sorts, and will be incremented programmatically. But, I can't get the value to default to "0" when a new item is created. However, for some reason, when I create a new column manually using the Site Collection settings page and configure it to default to "0" it works as it should. So far, I've tried the following tactics: I removed the "default" element from the field definition, and set the "DefaultValue" attribute on the content type definition. I exported a definition for the manually-created, working column (using an Imtech STSADM tool). Then, I added it to my field definitions XML and modified the IDs so that I could add it to my content type. When I did this, it still didn't work, even though it was exported from a working column! Any idea why this isn't working for me?

    Read the article

  • How to format dates in Jahia 6 CMS?

    - by dpb
    I am helping a friend of mine put up a site for his business. I’ve read different posts and sites trying to find the ideal CMS tool, but people have different views of what is the best, so I finally just picked one of them at random. So I went for an evaluation of Jahia 6.0-CE. As you’ve probably guessed by now, I don’t have so much experience with CMS tools. I just want to setup the CMS, write the templates for the site and let my friend manage the content from there on. So I extracted the sources from SVN and went for a test drive. I managed to create some simple templates to get a hang of things but now I have an issue with a date format. In my definitions.cnd I declared the field like so: date myDateField (datetimepicker[format='dd.MM.yyyy']) This is formatted in the page and the selector also presents this in the dd.MM.yyyy format when inserting the content. But how about sites in other countries, countries that represent the date as MM.dd.yyyy for example? If I specify the format in the CND, hard coded, how can I change this later on so that it adapts based on the browser’s language? Do I extract the content from the repository and format it by hand in the JSP template based on a Locale, or is there a better way? Thank you.

    Read the article

  • jquery tabs - load url in current tab?

    - by BigDogsBarking
    I'm trying to figure out how to load the url each tab links to inside the tab area onclick, and have been trying to following the docs at http://docs.jquery.com/UI/Tabs#...open_links_in_the_current_tab_instead_of_leaving_the_page, but am clearly not getting it.... This is the HTML markup: <div class="tabs"> <ul class="tabNav"> <li><a href="/1.html#tabone">Tab One</a></li> <li><a href="/2.html#tabtwo">Tab Two</a></li> <li><a href="/3.html#tabthree">Tab Three</a></li> </ul> </div> <div id="tabone"> <!-- Trying to load content from 1.html in this div on click --> </div> <div id="tabtwo"> <!-- Trying to load content from 2.html in this div on click --> </div> <div id="tabthree"> <!-- Trying to load content from 3.html in this div on click --> </div> And this is the jquery I'm trying to use: $(".tabs").tabs({ load: function(event, ui) { $('a', ui.panel).click(function() { $(ui.panel).load(this.href); return false; }); } }); I know I've got some part of this wrong.... I've gone through several iterations (too many to post), and all I get is a blank div... I don't know... Feeling a bit confused here... Help?

    Read the article

  • Capturing and Transforming ASP.NET Output with Response.Filter

    - by Rick Strahl
    During one of my Handlers and Modules session at DevConnections this week one of the attendees asked a question that I didn’t have an immediate answer for. Basically he wanted to capture response output completely and then apply some filtering to the output – effectively injecting some additional content into the page AFTER the page had completely rendered. Specifically the output should be captured from anywhere – not just a page and have this code injected into the page. Some time ago I posted some code that allows you to capture ASP.NET Page output by overriding the Render() method, capturing the HtmlTextWriter() and reading its content, modifying the rendered data as text then writing it back out. I’ve actually used this approach on a few occasions and it works fine for ASP.NET pages. But this obviously won’t work outside of the Page class environment and it’s not really generic – you have to create a custom page class in order to handle the output capture. [updated 11/16/2009 – updated ResponseFilterStream implementation and a few additional notes based on comments] Enter Response.Filter However, ASP.NET includes a Response.Filter which can be used – well to filter output. Basically Response.Filter is a stream through which the OutputStream is piped back to the Web Server (indirectly). As content is written into the Response object, the filter stream receives the appropriate Stream commands like Write, Flush and Close as well as read operations although for a Response.Filter that’s uncommon to be hit. The Response.Filter can be programmatically replaced at runtime which allows you to effectively intercept all output generation that runs through ASP.NET. A common Example: Dynamic GZip Encoding A rather common use of Response.Filter hooking up code based, dynamic  GZip compression for requests which is dead simple by applying a GZipStream (or DeflateStream) to Response.Filter. The following generic routines can be used very easily to detect GZip capability of the client and compress response output with a single line of code and a couple of library helper routines: WebUtils.GZipEncodePage(); which is handled with a few lines of reusable code and a couple of static helper methods: /// <summary> ///Sets up the current page or handler to use GZip through a Response.Filter ///IMPORTANT:  ///You have to call this method before any output is generated! /// </summary> public static void GZipEncodePage() {     HttpResponse Response = HttpContext.Current.Response;     if(IsGZipSupported())     {         stringAcceptEncoding = HttpContext.Current.Request.Headers["Accept-Encoding"];         if(AcceptEncoding.Contains("deflate"))         {             Response.Filter = newSystem.IO.Compression.DeflateStream(Response.Filter,                                        System.IO.Compression.CompressionMode.Compress);             Response.AppendHeader("Content-Encoding", "deflate");         }         else        {             Response.Filter = newSystem.IO.Compression.GZipStream(Response.Filter,                                       System.IO.Compression.CompressionMode.Compress);             Response.AppendHeader("Content-Encoding", "gzip");                            }     }     // Allow proxy servers to cache encoded and unencoded versions separately    Response.AppendHeader("Vary", "Content-Encoding"); } /// <summary> /// Determines if GZip is supported /// </summary> /// <returns></returns> public static bool IsGZipSupported() { string AcceptEncoding = HttpContext.Current.Request.Headers["Accept-Encoding"]; if (!string.IsNullOrEmpty(AcceptEncoding) && (AcceptEncoding.Contains("gzip") || AcceptEncoding.Contains("deflate"))) return true; return false; } GZipStream and DeflateStream are streams that are assigned to Response.Filter and by doing so apply the appropriate compression on the active Response. Response.Filter content is chunked So to implement a Response.Filter effectively requires only that you implement a custom stream and handle the Write() method to capture Response output as it’s written. At first blush this seems very simple – you capture the output in Write, transform it and write out the transformed content in one pass. And that indeed works for small amounts of content. But you see, the problem is that output is written in small buffer chunks (a little less than 16k it appears) rather than just a single Write() statement into the stream, which makes perfect sense for ASP.NET to stream data back to IIS in smaller chunks to minimize memory usage en route. Unfortunately this also makes it a more difficult to implement any filtering routines since you don’t directly get access to all of the response content which is problematic especially if those filtering routines require you to look at the ENTIRE response in order to transform or capture the output as is needed for the solution the gentleman in my session asked for. So in order to address this a slightly different approach is required that basically captures all the Write() buffers passed into a cached stream and then making the stream available only when it’s complete and ready to be flushed. As I was thinking about the implementation I also started thinking about the few instances when I’ve used Response.Filter implementations. Each time I had to create a new Stream subclass and create my custom functionality but in the end each implementation did the same thing – capturing output and transforming it. I thought there should be an easier way to do this by creating a re-usable Stream class that can handle stream transformations that are common to Response.Filter implementations. Creating a semi-generic Response Filter Stream Class What I ended up with is a ResponseFilterStream class that provides a handful of Events that allow you to capture and/or transform Response content. The class implements a subclass of Stream and then overrides Write() and Flush() to handle capturing and transformation operations. By exposing events it’s easy to hook up capture or transformation operations via single focused methods. ResponseFilterStream exposes the following events: CaptureStream, CaptureString Captures the output only and provides either a MemoryStream or String with the final page output. Capture is hooked to the Flush() operation of the stream. TransformStream, TransformString Allows you to transform the complete response output with events that receive a MemoryStream or String respectively and can you modify the output then return it back as a return value. The transformed output is then written back out in a single chunk to the response output stream. These events capture all output internally first then write the entire buffer into the response. TransformWrite, TransformWriteString Allows you to transform the Response data as it is written in its original chunk size in the Stream’s Write() method. Unlike TransformStream/TransformString which operate on the complete output, these events only see the current chunk of data written. This is more efficient as there’s no caching involved, but can cause problems due to searched content splitting over multiple chunks. Using this implementation, creating a custom Response.Filter transformation becomes as simple as the following code. To hook up the Response.Filter using the MemoryStream version event: ResponseFilterStream filter = new ResponseFilterStream(Response.Filter); filter.TransformStream += filter_TransformStream; Response.Filter = filter; and the event handler to do the transformation: MemoryStream filter_TransformStream(MemoryStream ms) { Encoding encoding = HttpContext.Current.Response.ContentEncoding; string output = encoding.GetString(ms.ToArray()); output = FixPaths(output); ms = new MemoryStream(output.Length); byte[] buffer = encoding.GetBytes(output); ms.Write(buffer,0,buffer.Length); return ms; } private string FixPaths(string output) { string path = HttpContext.Current.Request.ApplicationPath; // override root path wonkiness if (path == "/") path = ""; output = output.Replace("\"~/", "\"" + path + "/").Replace("'~/", "'" + path + "/"); return output; } The idea of the event handler is that you can do whatever you want to the stream and return back a stream – either the same one that’s been modified or a brand new one – which is then sent back to as the final response. The above code can be simplified even more by using the string version events which handle the stream to string conversions for you: ResponseFilterStream filter = new ResponseFilterStream(Response.Filter); filter.TransformString += filter_TransformString; Response.Filter = filter; and the event handler to do the transformation calling the same FixPaths method shown above: string filter_TransformString(string output) { return FixPaths(output); } The events for capturing output and capturing and transforming chunks work in a very similar way. By using events to handle the transformations ResponseFilterStream becomes a reusable component and we don’t have to create a new stream class or subclass an existing Stream based classed. By the way, the example used here is kind of a cool trick which transforms “~/” expressions inside of the final generated HTML output – even in plain HTML controls not HTML controls – and transforms them into the appropriate application relative path in the same way that ResolveUrl would do. So you can write plain old HTML like this: <a href=”~/default.aspx”>Home</a>  and have it turned into: <a href=”/myVirtual/default.aspx”>Home</a>  without having to use an ASP.NET control like Hyperlink or Image or having to constantly use: <img src=”<%= ResolveUrl(“~/images/home.gif”) %>” /> in MVC applications (which frankly is one of the most annoying things about MVC especially given the path hell that extension-less and endpoint-less URLs impose). I can’t take credit for this idea. While discussing the Response.Filter issues on Twitter a hint from Dylan Beattie who pointed me at one of his examples which does something similar. I thought the idea was cool enough to use an example for future demos of Response.Filter functionality in ASP.NET next I time I do the Modules and Handlers talk (which was great fun BTW). How practical this is is debatable however since there’s definitely some overhead to using a Response.Filter in general and especially on one that caches the output and the re-writes it later. Make sure to test for performance anytime you use Response.Filter hookup and make sure it' doesn’t end up killing perf on you. You’ve been warned :-}. How does ResponseFilterStream work? The big win of this implementation IMHO is that it’s a reusable  component – so for implementation there’s no new class, no subclassing – you simply attach to an event to implement an event handler method with a straight forward signature to retrieve the stream or string you’re interested in. The implementation is based on a subclass of Stream as is required in order to handle the Response.Filter requirements. What’s different than other implementations I’ve seen in various places is that it supports capturing output as a whole to allow retrieving the full response output for capture or modification. The exception are the TransformWrite and TransformWrite events which operate only active chunk of data written by the Response. For captured output, the Write() method captures output into an internal MemoryStream that is cached until writing is complete. So Write() is called when ASP.NET writes to the Response stream, but the filter doesn’t pass on the Write immediately to the filter’s internal stream. The data is cached and only when the Flush() method is called to finalize the Stream’s output do we actually send the cached stream off for transformation (if the events are hooked up) and THEN finally write out the returned content in one big chunk. Here’s the implementation of ResponseFilterStream: /// <summary> /// A semi-generic Stream implementation for Response.Filter with /// an event interface for handling Content transformations via /// Stream or String. /// <remarks> /// Use with care for large output as this implementation copies /// the output into a memory stream and so increases memory usage. /// </remarks> /// </summary> public class ResponseFilterStream : Stream { /// <summary> /// The original stream /// </summary> Stream _stream; /// <summary> /// Current position in the original stream /// </summary> long _position; /// <summary> /// Stream that original content is read into /// and then passed to TransformStream function /// </summary> MemoryStream _cacheStream = new MemoryStream(5000); /// <summary> /// Internal pointer that that keeps track of the size /// of the cacheStream /// </summary> int _cachePointer = 0; /// <summary> /// /// </summary> /// <param name="responseStream"></param> public ResponseFilterStream(Stream responseStream) { _stream = responseStream; } /// <summary> /// Determines whether the stream is captured /// </summary> private bool IsCaptured { get { if (CaptureStream != null || CaptureString != null || TransformStream != null || TransformString != null) return true; return false; } } /// <summary> /// Determines whether the Write method is outputting data immediately /// or delaying output until Flush() is fired. /// </summary> private bool IsOutputDelayed { get { if (TransformStream != null || TransformString != null) return true; return false; } } /// <summary> /// Event that captures Response output and makes it available /// as a MemoryStream instance. Output is captured but won't /// affect Response output. /// </summary> public event Action<MemoryStream> CaptureStream; /// <summary> /// Event that captures Response output and makes it available /// as a string. Output is captured but won't affect Response output. /// </summary> public event Action<string> CaptureString; /// <summary> /// Event that allows you transform the stream as each chunk of /// the output is written in the Write() operation of the stream. /// This means that that it's possible/likely that the input /// buffer will not contain the full response output but only /// one of potentially many chunks. /// /// This event is called as part of the filter stream's Write() /// operation. /// </summary> public event Func<byte[], byte[]> TransformWrite; /// <summary> /// Event that allows you to transform the response stream as /// each chunk of bytep[] output is written during the stream's write /// operation. This means it's possibly/likely that the string /// passed to the handler only contains a portion of the full /// output. Typical buffer chunks are around 16k a piece. /// /// This event is called as part of the stream's Write operation. /// </summary> public event Func<string, string> TransformWriteString; /// <summary> /// This event allows capturing and transformation of the entire /// output stream by caching all write operations and delaying final /// response output until Flush() is called on the stream. /// </summary> public event Func<MemoryStream, MemoryStream> TransformStream; /// <summary> /// Event that can be hooked up to handle Response.Filter /// Transformation. Passed a string that you can modify and /// return back as a return value. The modified content /// will become the final output. /// </summary> public event Func<string, string> TransformString; protected virtual void OnCaptureStream(MemoryStream ms) { if (CaptureStream != null) CaptureStream(ms); } private void OnCaptureStringInternal(MemoryStream ms) { if (CaptureString != null) { string content = HttpContext.Current.Response.ContentEncoding.GetString(ms.ToArray()); OnCaptureString(content); } } protected virtual void OnCaptureString(string output) { if (CaptureString != null) CaptureString(output); } protected virtual byte[] OnTransformWrite(byte[] buffer) { if (TransformWrite != null) return TransformWrite(buffer); return buffer; } private byte[] OnTransformWriteStringInternal(byte[] buffer) { Encoding encoding = HttpContext.Current.Response.ContentEncoding; string output = OnTransformWriteString(encoding.GetString(buffer)); return encoding.GetBytes(output); } private string OnTransformWriteString(string value) { if (TransformWriteString != null) return TransformWriteString(value); return value; } protected virtual MemoryStream OnTransformCompleteStream(MemoryStream ms) { if (TransformStream != null) return TransformStream(ms); return ms; } /// <summary> /// Allows transforming of strings /// /// Note this handler is internal and not meant to be overridden /// as the TransformString Event has to be hooked up in order /// for this handler to even fire to avoid the overhead of string /// conversion on every pass through. /// </summary> /// <param name="responseText"></param> /// <returns></returns> private string OnTransformCompleteString(string responseText) { if (TransformString != null) TransformString(responseText); return responseText; } /// <summary> /// Wrapper method form OnTransformString that handles /// stream to string and vice versa conversions /// </summary> /// <param name="ms"></param> /// <returns></returns> internal MemoryStream OnTransformCompleteStringInternal(MemoryStream ms) { if (TransformString == null) return ms; //string content = ms.GetAsString(); string content = HttpContext.Current.Response.ContentEncoding.GetString(ms.ToArray()); content = TransformString(content); byte[] buffer = HttpContext.Current.Response.ContentEncoding.GetBytes(content); ms = new MemoryStream(); ms.Write(buffer, 0, buffer.Length); //ms.WriteString(content); return ms; } /// <summary> /// /// </summary> public override bool CanRead { get { return true; } } public override bool CanSeek { get { return true; } } /// <summary> /// /// </summary> public override bool CanWrite { get { return true; } } /// <summary> /// /// </summary> public override long Length { get { return 0; } } /// <summary> /// /// </summary> public override long Position { get { return _position; } set { _position = value; } } /// <summary> /// /// </summary> /// <param name="offset"></param> /// <param name="direction"></param> /// <returns></returns> public override long Seek(long offset, System.IO.SeekOrigin direction) { return _stream.Seek(offset, direction); } /// <summary> /// /// </summary> /// <param name="length"></param> public override void SetLength(long length) { _stream.SetLength(length); } /// <summary> /// /// </summary> public override void Close() { _stream.Close(); } /// <summary> /// Override flush by writing out the cached stream data /// </summary> public override void Flush() { if (IsCaptured && _cacheStream.Length > 0) { // Check for transform implementations _cacheStream = OnTransformCompleteStream(_cacheStream); _cacheStream = OnTransformCompleteStringInternal(_cacheStream); OnCaptureStream(_cacheStream); OnCaptureStringInternal(_cacheStream); // write the stream back out if output was delayed if (IsOutputDelayed) _stream.Write(_cacheStream.ToArray(), 0, (int)_cacheStream.Length); // Clear the cache once we've written it out _cacheStream.SetLength(0); } // default flush behavior _stream.Flush(); } /// <summary> /// /// </summary> /// <param name="buffer"></param> /// <param name="offset"></param> /// <param name="count"></param> /// <returns></returns> public override int Read(byte[] buffer, int offset, int count) { return _stream.Read(buffer, offset, count); } /// <summary> /// Overriden to capture output written by ASP.NET and captured /// into a cached stream that is written out later when Flush() /// is called. /// </summary> /// <param name="buffer"></param> /// <param name="offset"></param> /// <param name="count"></param> public override void Write(byte[] buffer, int offset, int count) { if ( IsCaptured ) { // copy to holding buffer only - we'll write out later _cacheStream.Write(buffer, 0, count); _cachePointer += count; } // just transform this buffer if (TransformWrite != null) buffer = OnTransformWrite(buffer); if (TransformWriteString != null) buffer = OnTransformWriteStringInternal(buffer); if (!IsOutputDelayed) _stream.Write(buffer, offset, buffer.Length); } } The key features are the events and corresponding OnXXX methods that handle the event hookups, and the Write() and Flush() methods of the stream implementation. All the rest of the members tend to be plain jane passthrough stream implementation code without much consequence. I do love the way Action<t> and Func<T> make it so easy to create the event signatures for the various events – sweet. A few Things to consider Performance Response.Filter is not great for performance in general as it adds another layer of indirection to the ASP.NET output pipeline, and this implementation in particular adds a memory hit as it basically duplicates the response output into the cached memory stream which is necessary since you may have to look at the entire response. If you have large pages in particular this can cause potentially serious memory pressure in your server application. So be careful of wholesale adoption of this (or other) Response.Filters. Make sure to do some performance testing to ensure it’s not killing your app’s performance. Response.Filter works everywhere A few questions came up in comments and discussion as to capturing ALL output hitting the site and – yes you can definitely do that by assigning a Response.Filter inside of a module. If you do this however you’ll want to be very careful and decide which content you actually want to capture especially in IIS 7 which passes ALL content – including static images/CSS etc. through the ASP.NET pipeline. So it is important to filter only on what you’re looking for – like the page extension or maybe more effectively the Response.ContentType. Response.Filter Chaining Originally I thought that filter chaining doesn’t work at all due to a bug in the stream implementation code. But it’s quite possible to assign multiple filters to the Response.Filter property. So the following actually works to both compress the output and apply the transformed content: WebUtils.GZipEncodePage(); ResponseFilterStream filter = new ResponseFilterStream(Response.Filter); filter.TransformString += filter_TransformString; Response.Filter = filter; However the following does not work resulting in invalid content encoding errors: ResponseFilterStream filter = new ResponseFilterStream(Response.Filter); filter.TransformString += filter_TransformString; Response.Filter = filter; WebUtils.GZipEncodePage(); In other words multiple Response filters can work together but it depends entirely on the implementation whether they can be chained or in which order they can be chained. In this case running the GZip/Deflate stream filters apparently relies on the original content length of the output and chokes when the content is modified. But if attaching the compression first it works fine as unintuitive as that may seem. Resources Download example code Capture Output from ASP.NET Pages © Rick Strahl, West Wind Technologies, 2005-2010Posted in ASP.NET  

    Read the article

  • Can ASM method-visitors be used with interfaces?

    - by Olaf Mertens
    I need to write a tool that lists the classes that call methods of specified interfaces. It will be used as part of the build process of a large java application consisting of many modules. The goal is to automatically document the dependencies between certain java modules. I found several tools for dependency analysis, but they don't work on the method level, just for packages or jars. Finally I found ASM, that seems to do what I need. The following code prints the method dependencies of all class files in a given directory: import java.io.*; import java.util.*; import org.objectweb.asm.ClassReader; public class Test { public static void main(String[] args) throws Exception { File dir = new File(args[0]); List<File> classFiles = new LinkedList<File>(); findClassFiles(classFiles, dir); for (File classFile : classFiles) { InputStream input = new FileInputStream(classFile); new ClassReader(input).accept(new MyClassVisitor(), 0); input.close(); } } private static void findClassFiles(List<File> list, File dir) { for (File file : dir.listFiles()) { if (file.isDirectory()) { findClassFiles(list, file); } else if (file.getName().endsWith(".class")) { list.add(file); } } } } import org.objectweb.asm.MethodVisitor; import org.objectweb.asm.commons.EmptyVisitor; public class MyClassVisitor extends EmptyVisitor { private String className; @Override public void visit(int version, int access, String name, String signature, String superName, String[] interfaces) { this.className = name; } @Override public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) { System.out.println(className + "." + name); return new MyMethodVisitor(); } } import org.objectweb.asm.commons.EmptyVisitor; public class MyMethodVisitor extends EmptyVisitor { @Override public void visitMethodInsn(int opcode, String owner, String name, String desc) { String key = owner + "." + name; System.out.println(" " + key); } } The Problem: The code works for regular classes only! If the class file contains an interface, visitMethod is called, but not visitMethodInsn. I don't get any info about the callers of interface methods. Any ideas?

    Read the article

  • I am loading content via Ajax, but I need it to not load anything when my site loads

    - by Reden
    I'm loading content into several divs with ajax_loadContent <div class="content"><div class="container" id="contents2"><!-- Empty div for dynamic content -->Loading content. please wait...</div><script type="text/javascript">ajax_loadContent('contents2','http://www.thewebsite.com/blank.php');</script></div> Basically, I don't want to load anything until the user clicks on the links I have specified to load content into these instances, please help! Right now, I'm loading a blank file to show nothing in the div.

    Read the article

  • How can I edit unuusal clipboard content? [on hold]

    - by Peter Jaric
    I'd like to edit application specific clipboard content, with an application specific format. There are clipboard managers that let me edit the plain text content, but I'd like to access clipboard content that application use for internal cut and paste. An example would be when you copy something from a web page in Firefox. When you look at the different formats in a clipboard viewer, there are three or so formats starting with "moz", with content that is not plain text. I'd like to edit that content before pasting it back into Firefox. Can this be done?

    Read the article

  • Oracle Fusion Supply Chain Management (SCM) Designs May Improve End User Productivity

    - by Applications User Experience
    By Applications User Experience on March 10, 2011 Michele Molnar, Senior Usability Engineer, Applications User Experience The Challenge: The SCM User Experience team, in close collaboration with product management and strategy, completely redesigned the user experience for Oracle Fusion applications. One of the goals of this redesign was to increase end user productivity by applying design patterns and guidelines and incorporating findings from extensive usability research. But a question remained: How do we know that the Oracle Fusion designs will actually increase end user productivity? The Test: To answer this question, the SCM Usability Engineers compared Oracle Fusion designs to their corresponding existing Oracle applications using the workflow time analysis method. The workflow time analysis method breaks tasks into a sequence of operators. By applying standard time estimates for all of the operators in the task, an estimate of the overall task time can be calculated. The workflow time analysis method has been recently adopted by the Applications User Experience group for use in predicting end user productivity. Using this method, a design can be tested and refined as needed to improve productivity even before the design is coded. For the study, we selected some of our recent designs for Oracle Fusion Product Information Management (PIM). The designs encompassed tasks performed by Product Managers to create, manage, and define products for their organization. (See Figure 1 for an example.) In applying this method, the SCM Usability Engineers collaborated with Product Management to compare the new Oracle Fusion Applications designs against Oracle’s existing applications. Together, we performed the following activities: Identified the five most frequently performed tasks Created detailed task scenarios that provided the context for each task Conducted task walkthroughs Analyzed and documented the steps and flow required to complete each task Applied standard time estimates to the operators in each task to estimate the overall task completion time Figure 1. The interactions on each Oracle Fusion Product Information Management screen were documented, as indicated by the red highlighting. The task scenario and script provided the context for each task.  The Results: The workflow time analysis method predicted that the Oracle Fusion Applications designs would result in productivity gains in each task, ranging from 8% to 62%, with an overall productivity gain of 43%. All other factors being equal, the new designs should enable these tasks to be completed in about half the time it takes with existing Oracle Applications. Further analysis revealed that these performance gains would be achieved by reducing the number of clicks and screens needed to complete the tasks. Conclusions: Using the workflow time analysis method, we can expect the Oracle Fusion Applications redesign to succeed in improving end user productivity. The workflow time analysis method appears to be an effective and efficient tool for testing, refining, and retesting designs to optimize productivity. The workflow time analysis method does not replace usability testing with end users, but it can be used as an early predictor of design productivity even before designs are coded. We are planning to conduct usability tests later in the development cycle to compare actual end user data with the workflow time analysis results. Such results can potentially be used to validate the productivity improvement predictions. Used together, the workflow time analysis method and usability testing will enable us to continue creating, evaluating, and delivering Oracle Fusion designs that exceed the expectations of our end users, both in the quality of the user experience and in productivity. (For more information about studying productivity, refer to the Measuring User Productivity blog.)

    Read the article

  • Built-in GZip/Deflate Compression on IIS 7.x

    - by Rick Strahl
    IIS 7 improves internal compression functionality dramatically making it much easier than previous versions to take advantage of compression that’s built-in to the Web server. IIS 7 also supports dynamic compression which allows automatic compression of content created in your own applications (ASP.NET or otherwise!). The scheme is based on content-type sniffing and so it works with any kind of Web application framework. While static compression on IIS 7 is super easy to set up and turned on by default for most text content (text/*, which includes HTML and CSS, as well as for JavaScript, Atom, XAML, XML), setting up dynamic compression is a bit more involved, mostly because the various default compression settings are set in multiple places down the IIS –> ASP.NET hierarchy. Let’s take a look at each of the two approaches available: Static Compression Compresses static content from the hard disk. IIS can cache this content by compressing the file once and storing the compressed file on disk and serving the compressed alias whenever static content is requested and it hasn’t changed. The overhead for this is minimal and should be aggressively enabled. Dynamic Compression Works against application generated output from applications like your ASP.NET apps. Unlike static content, dynamic content must be compressed every time a page that requests it regenerates its content. As such dynamic compression has a much bigger impact than static caching. How Compression is configured Compression in IIS 7.x  is configured with two .config file elements in the <system.WebServer> space. The elements can be set anywhere in the IIS/ASP.NET configuration pipeline all the way from ApplicationHost.config down to the local web.config file. The following is from the the default setting in ApplicationHost.config (in the %windir%\System32\inetsrv\config forlder) on IIS 7.5 with a couple of small adjustments (added json output and enabled dynamic compression): <?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files"> <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" staticCompressionLevel="9" /> <dynamicTypes> <add mimeType="text/*" enabled="true" /> <add mimeType="message/*" enabled="true" /> <add mimeType="application/x-javascript" enabled="true" /> <add mimeType="application/json" enabled="true" /> <add mimeType="*/*" enabled="false" /> </dynamicTypes> <staticTypes> <add mimeType="text/*" enabled="true" /> <add mimeType="message/*" enabled="true" /> <add mimeType="application/x-javascript" enabled="true" /> <add mimeType="application/atom+xml" enabled="true" /> <add mimeType="application/xaml+xml" enabled="true" /> <add mimeType="*/*" enabled="false" /> </staticTypes> </httpCompression> <urlCompression doStaticCompression="true" doDynamicCompression="true" /> </system.webServer> </configuration> You can find documentation on the httpCompression and urlCompression keys here respectively: http://msdn.microsoft.com/en-us/library/ms690689%28v=vs.90%29.aspx http://msdn.microsoft.com/en-us/library/aa347437%28v=vs.90%29.aspx The httpCompression Element – What and How to compress Basically httpCompression configures what types to compress and how to compress them. It specifies the DLL that handles gzip encoding and the types of documents that are to be compressed. Types are set up based on mime-types which looks at returned Content-Type headers in HTTP responses. For example, I added the application/json to mime type to my dynamic compression types above to allow that content to be compressed as well since I have quite a bit of AJAX content that gets sent to the client. The UrlCompression Element – Enables and Disables Compression The urlCompression element is a quick way to turn compression on and off. By default static compression is enabled server wide, and dynamic compression is disabled server wide. This might be a bit confusing because the httpCompression element also has a doDynamicCompression attribute which is set to true by default, but the urlCompression attribute by the same name actually overrides it. The urlCompression element only has three attributes: doStaticCompression, doDynamicCompression and dynamicCompressionBeforeCache. The doCompression attributes are the final determining factor whether compression is enabled, so it’s a good idea to be explcit! The default for doDynamicCompression='false”, but doStaticCompression="true"! Static Compression is enabled by Default, Dynamic Compression is not Because static compression is very efficient in IIS 7 it’s enabled by default server wide and there probably is no reason to ever change that setting. Dynamic compression however, since it’s more resource intensive, is turned off by default. If you want to enable dynamic compression there are a few quirks you have to deal with, namely that enabling it in ApplicationHost.config doesn’t work. Setting: <urlCompression doDynamicCompression="true" /> in applicationhost.config appears to have no effect and I had to move this element into my local web.config to make dynamic compression work. This is actually a smart choice because you’re not likely to want dynamic compression in every application on a server. Rather dynamic compression should be applied selectively where it makes sense. However, nowhere is it documented that the setting in applicationhost.config doesn’t work (or more likely is overridden somewhere and disabled lower in the configuration hierarchy). So: remember to set doDynamicCompression=”true” in web.config!!! How Static Compression works Static compression works against static content loaded from files on disk. Because this content is static and not bound to change frequently – such as .js, .css and static HTML content – it’s fairly easy for IIS to compress and then cache the compressed content. The way this works is that IIS compresses the files into a special folder on the server’s hard disk and then reads the content from this location if already compressed content is requested and the underlying file resource has not changed. The semantics of serving an already compressed file are very efficient – IIS still checks for file changes, but otherwise just serves the already compressed file from the compression folder. The compression folder is located at: %windir%\inetpub\temp\IIS Temporary Compressed Files\ApplicationPool\ If you look into the subfolders you’ll find compressed files: These files are pre-compressed and IIS serves them directly to the client until the underlying files are changed. As I mentioned before – static compression is on by default and there’s very little reason to turn that functionality off as it is efficient and just works out of the box. The one tweak you might want to do is to set the compression level to maximum. Since IIS only compresses content very infrequently it would make sense to apply maximum compression. You can do this with the staticCompressionLevel setting on the scheme element: <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" staticCompressionLevel="9" /> Other than that the default settings are probably just fine. Dynamic Compression – not so fast! By default dynamic compression is disabled and that’s actually quite sensible – you should use dynamic compression very carefully and think about what content you want to compress. In most applications it wouldn’t make sense to compress *all* generated content as it would generate a significant amount of overhead. Scott Fortsyth has a great post that details some of the performance numbers and how much impact dynamic compression has. Depending on how busy your server is you can play around with compression and see what impact it has on your server’s performance. There are also a few settings you can tweak to minimize the overhead of dynamic compression. Specifically the httpCompression key has a couple of CPU related keys that can help minimize the impact of Dynamic Compression on a busy server: dynamicCompressionDisableCpuUsage dynamicCompressionEnableCpuUsage By default these are set to 90 and 50 which means that when the CPU hits 90% compression will be disabled until CPU utilization drops back down to 50%. Again this is actually quite sensible as it utilizes CPU power from compression when available and falling off when the threshold has been hit. It’s a good way some of that extra CPU power on your big servers to use when utilization is low. Again these settings are something you likely have to play with. I would probably set the upper limit a little lower than 90% maybe around 70% to make this a feature that kicks in only if there’s lots of power to spare. I’m not really sure how accurate these CPU readings that IIS uses are as Cpu usage on Web Servers can spike drastically even during low loads. Don’t trust settings – do some load testing or monitor your server in a live environment to see what values make sense for your environment. Finally for dynamic compression I tend to add one Mime type for JSON data, since a lot of my applications send large chunks of JSON data over the wire. You can do that with the application/json content type: <add mimeType="application/json" enabled="true" /> What about Deflate Compression? The default compression is GZip. The documentation hints that you can use a different compression scheme and mentions Deflate compression. And sure enough you can change the compression settings to: <scheme name="deflate" dll="%Windir%\system32\inetsrv\gzip.dll" staticCompressionLevel="9" /> to get deflate style compression. The deflate algorithm produces slightly more compact output so I tend to prefer it over GZip but more HTTP clients (other than browsers) support GZip than Deflate so be careful with this option if you build Web APIs. I also had some issues with the above value actually being applied right away. Changing the scheme in applicationhost.config didn’t show up on the site  right away. It required me to do a full IISReset to get that change to show up before I saw the change over to deflate compressed content. Content was slightly more compressed with deflate – not sure if it’s worth the slightly less common compression type, but the option at least is available. IIS 7 finally makes GZip Easy In summary IIS 7 makes GZip easy finally, even if the configuration settings are a bit obtuse and the documentation is seriously lacking. But once you know the basic settings I’ve described here and the fact that you can override all of this in your local web.config it’s pretty straight forward to configure GZip support and tweak it exactly to your needs. Static compression is a total no brainer as it adds very little overhead compared to direct static file serving and provides solid compression. Dynamic Compression is a little more tricky as it does add some overhead to servers, so it probably will require some tweaking to get the right balance of CPU load vs. compression ratios. Looking at large sites like Amazon, Yahoo, NewEgg etc. – they all use Related Content Code based ASP.NET GZip Caveats HttpWebRequest and GZip Responses © Rick Strahl, West Wind Technologies, 2005-2011Posted in IIS7   ASP.NET  

    Read the article

  • Content Locking network with Microsoft Web Development tools? [closed]

    - by Jose Garcia
    I want my team to develop a content locking network for a client. But we dont know what is need to devlop such a network. We need to code it from Scratch. Please give us some advice. Content locking networks http://www.blamads.com/ adworkmedia.com These two networks are made with MS Tools it seems. FAQ http://support.blamads.com/index.php?pg=kb.book&id=5 https://www.adworkmedia.com/cpa-network-features.php

    Read the article

  • Is the structure of my site's navigation (via price/service tables) considered 'Duplicate Content' by Google?

    - by James Gadsby
    As I'm building my business website, I'm using service/price tables at the bottom of each service page to demonstrate to customers/potential clients my other offerings. Of course, given that there are 7 or 8 service pages, each with (according to Google) the same service descriptions below the original content for that service, would this be counting as duplicate content? If so, what could I do about it?

    Read the article

  • How to tell Facebook which div is the "content" one? (for links summary)

    - by Magnetic_dud
    I have a small blog hosted on blogger.com I don't understand why, when people like or share a blog post on Facebook, the real content is never fetched as a summary. For example, for this post, the summary is the small "about me" that I placed on the sidebar, while on this other post, the summary is the first comment. It's weird, what I can do? There is a way, for example a class, to indicate the main content div?

    Read the article

  • Open source CMS for a university department

    - by Greg Kuperberg
    I realize that this type of question gets asked over and over again. Nonetheless, I want to ask a more specific version. I'm in a university math department. Long ago our sysadmins (or just one at the time) switched to a web content management system. At the time, Zope looked like an informed choice. We have used Zope for years, but at least in my opinion, it has always been a controversial decision. At the time I didn't understand why it was so important to have a web CMS. Now I see that it certainly is important, but I don't know that it should be Zope. The good (even necessary) features of Zope for us are: It's free and Linux-based. It is a true CMS and not something else (e.g. wiki or blog) It lets you write HTML and scripts. What I really don't like about Zope is that the outcome of using it is all-or-nothing in a lot of ways. At least in convenient use, it ends up dividing the enterprise into superusers who can do everything, and lusers who can't do anything (except write their own home pages in plain HTML). It has a huge user manual, which end users won't have time to read. Somehow with the access permissions, the simple thing to do is to let a few admins access all of the source and data and that's it. Since this is a math department, the user base varies from real novices to people who understand computers reasonably well. But as it stands, any change that involves Zope has to go through the sysadmins. When the sysadmins are in a hurry, sometimes they will also just add plain HTML pages to the web site instead of using the Zope framework. It doesn't help matters that Zope is fairly disk-intensive and fairly hype-intensive. Not to dwell on Zope too much, but I am wondering what is the right web CMS for a mixed user base of terminal novices, quick studies, and experienced users. Some users might want intermediate permissions, e.g. read permission but not write permission, or permission to change some subset of the pages or see some subset of the database tables. Also it should be Linux-based and open source and a little bit scalable, and of course widely used and well-supported is a good idea. I might guess that the answer is Drupal just because that was the general answer before, but I don't know if it is the right type of CMS for this purpose. (But note that Python is a relatively popular language in a math department, among other reasons because Sage is based on Python.) I can see that I didn't completely define the question and that people are guessing what type of site it is. It is the UC Davis Math Department. The main structure of the site is not suitable for a wiki and it is also not the same thing as a course environment like Moodle. Rather, the site is mostly structured as a generic medium-small enterprise. Some components of the site could be a wiki, Moodle, LaTeX plugin, Request Tracker, etc. However, the main issue is not these components. The main issue is that it would be better to decentralize management of the site. Right now, everything that is in the Zope CMS has to go through the sysadmins. Every other user in the department either has to put in a request to them, or write their own web pages with no help from Zope. There are two main reasons for this: (1) Other people in the department don't have time to read the Zope manual. (2) It's a hassle to set up intermediate permissions in Zope. However, there are other people in the department who know how to write computer programs and use markup languages. I wouldn't want a solution that assumes that users either can't be trusted with much more than drag-and-drop, or that they are IT professionals who sleep with documentation manuals. I'm wondering if Plone/Zope still has this quality, since certainly Zope by itself does. But I also wonder sometimes if common-sense flexibility is unfashionable these days, and that things in general have be either mindlessly easy or incredibly powerful.

    Read the article

  • How to enable gzip HTTP compression on Windows Azure dynamic content

    - by Steven
    Hi all, I've been trying unsuccessfully to enable gzip HTTP compression on my Windows Azure hosted WCF Restful service which returns JSON only from GET and POST requests. I have tried so many things that I would have a hard time listing all of them, and I now realise I have been working with conflicting information (regarding old version of azure etc) so think it best to start with a clean slate! I am working with Visual Studio 2008, using the February 2010 tools for Visual Studio. So, according to the following link, HTTP compression has now been enabled .. http://msdn.microsoft.com/en-us/library/ff436045.aspx ... and I've used the advice at the following page (the URL compression advice only), but I get no compression. http://blog.smarx.com/posts/iis-compression-in-windows-azure <urlCompression doStaticCompression="true" doDynamicCompression="false" dynamicCompressionBeforeCache="true" /> It doesn't help that I don't know what the difference is between urlCompression and httpCompression. I've tried to find out but to no avail! Could the fact that the tools for Visual Studio were released before the version of Azure which supports compression be a problem? I read somewhere that with the latest tools, you can choose which version of Azure OS you want to use when you publish ... but I don't know if that's true, and if it is, I can't find where to choose. Could I be using a pre-http enabled version? I've also tried blowery http compression module, but no results. Does any one have any up-to-date advice on how to achieve this? i.e. advice that relates to the current version of the Azure OS. Cheers! Steven

    Read the article

  • WPF Focus In Tab Control Content When New Tab is Created

    - by Phil Sandler
    I've done a lot of searching on SO and google around this problem, but can't seem to find anything else to try. I have a MainView (window) that contains a tab control. The tab control binds to an ObservableCollection of ChildViews (user controls). The MainView's ViewModel has a method that allows adding to the collection of ChildViews, which then creates a new tab. When a new tab is created, it becomes the active tab, and this works fine. This method on the MainView is called from another ViewModel (OtherViewModel). What I am trying to do is set the keyboard focus to the first control on the tab (an AutoCompleteBox from WPFToolkit*) when a new tab is created. I also need to set the focus the same way, but WITHOUT creating a new tab (so set the focus on the currently active tab). (*Note that there seem to be some focus problems with the AutoCompleteBox--even if it does have focus you need to send a MoveNext() to it to get the cursor in its window. I have worked around this already). So here's the problem. The focusing works when I don't create a new tab, but it doesn't work when I do create a new tab. Both functions use the same method to set focus, but the create logic first calls the method that creates a new tab and sets it to active. Code that sets the focus (in the ChildView's Codebehind): IInputElement element1 = Keyboard.Focus(autoCompleteBox); //plus code to deal with AutoCompleteBox as noted. In either case, the Keyboard.FocusedElement starts out as the MainView. After a create, calling Keyboard.Focus seems to do nothing (focused element is still the MainView). Calling this without creating a tab correctly sets the keyboard focus to autoCompleteBox. Any ideas? Update: Bender's suggestion half-worked. So now in both cases, the focused element is correctly the AutoCompleteBox. What I then do is MoveNext(), which sets the focus to a TextBox. I have been assuming that this Textbox is internal to the AutoCompleteBox, as the focus was correctly set on screen when this happened. Now I'm not so sure. This is still the behavior I see when this code gets hit when NOT doing a create. After a create, MoveNext() sets the focus to an element back in my MainView. The problem must still be along the lines of Bender's answer, where the state of the controls is not the same depending on whether a new tab was created or not. Any other thoughts?

    Read the article

  • Serving static content with jetty 7, using defaultservlet configured from web.xml

    - by Chilly
    Hi All, This is jetty 7 and xml configured, not embedded. I'm trying to serve a static file, crossdomain.xml, to an app that connects to a datasource I run from jetty. To do this, I configured a servlet and its mapping thus: default org.eclipse.jetty.servlet.DefaultServlet resourceBase /moo/somedirectory default /* Sadly all I get are 404's. Any help would be much appreciated, btw the rest of my web.xm lfile looks like: <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5" cometd org.cometd.server.continuation.ContinuationCometdServlet 1 cometd /cometd/* default org.eclipse.jetty.servlet.DefaultServlet resourceBase /foo/foo default /* initializer com.foo.research.Initializer 2 cross-origin org.eclipse.jetty.servlets.CrossOriginFilter cross-origin /cometd/* </web-app>

    Read the article

  • SharePoint 2010 Center and Fixed Width of all content on page including the ribbon

    - by Bill Daugherty
    All, I am trying to make the width of the sharepoint 2010 web site to be within a fixed width and centered across the screen. I would like for it to be 800px and centered. When i do this, it seems like it starts to work until the ribbion bar renters. Here is my attempt so far: body.v4/* _lcid="1033" _version="14.0.4536" _LocalBinding */ body,form{ margin:0px; width:800px; text-align:center; vertical-align:middle; } .ms-toolbar{ font-family:verdana; font-size:8pt; text-decoration:none; /* [ReplaceColor(themeColor:"Hyperlink")] */ color:#0072BC; } a.ms-toolbar:hover{ text-decoration:underline; /* [ReplaceColor(themeColor:"Accent1",themeShade:"0.8")] */ color:#005e9a; } .ms-toolbar-togglebutton-on{ /* [ReplaceColor(themeColor:"Accent3-Darker")] */ border:1px solid #2353b2; /* [ReplaceColor(themeColor:"Accent4-Lightest")] */ background-color:#fffacc; } table.ms-toolbar{ height:45px; border:none; /* [RecolorImage(themeColor:"Light2",includeRectangle:{x:0,y:610,width:1,height:42})] */ background:url("/_layouts/images/bgximg.png") repeat-x -0px -610px; /* [ReplaceColor(themeColor:"Light1")] */ background-color:#fff; } table.ms-toolbar{ /* [ReplaceColor(themeColor:"Light2-Lightest")] */ border:1px solid #f1f1f2; } .ms-menutoolbar{ /* [ReplaceColor(themeColor:"Light2-Lightest")] */ border-bottom:1px solid #f1f1f2; /* [ReplaceColor(themeColor:"Light1")] */ background-color:#fff; /* [RecolorImage(themeColor:"Light2",includeRectangle:{x:0,y:610,width:1,height:42})] */ background:url("/_layouts/images/bgximg.png") repeat-x -0px -610px; height:45px; } .ms-menutoolbar td{ padding:0px 0px 0px 4px; margin:0px; border:none; } .ms-menutoolbar td a{ /* [ReplaceColor(themeColor:"Hyperlink")] */ color:#0072bc; font-size:8pt; font-family:verdana; text-decoration:none; } .ms-menutoolbar td a:hover{ /* [ReplaceColor(themeColor:"Hyperlink",themeShade:"0.82")] */ color:#005e9a; text-decoration:none; } .ms-menubuttoninactivehover,.ms-buttoninactivehover{ margin:3px; padding:3px 4px 4px 4px; border:1px solid transparent; background-color:transparent; white-space:nowrap; } .ms-menubuttonactivehover,.ms-buttonactivehover{ margin:3px; padding:3px 4px 4px 4px; /* [RecolorImage(themeColor:"Light1-Darkest",includeRectangle:{x:0,y:431,width:1,height:21})] */ background:url("/_layouts/images/bgximg.png") repeat-x -0px -431px; /* [ReplaceColor(themeColor:"Light1")] */ background-color:#fff; /* [ReplaceColor(themeColor:"Light1-Lighter")] */ border:solid 1px #cccccc; cursor:pointer; } .ms-buttoninactivehover{ white-space:nowrap; } .ms-buttoninactivehover img,.ms-buttonactivehover img{ margin:0px 1px 0px 0px; } td.ms-menutoolbarheader{ font-size:10pt; font-family:verdana; /* [ReplaceColor(themeColor:"Accent3-Medium")] */ color:#204d89; font-weight:bold; line-height:16px; padding-left:7px; padding-right:7px; } .ms-listheaderlabel{ /* [ReplaceColor(themeColor:"Dark2")] */ color:#204d89; } .ms-listheaderlabel,.ms-viewselector,.ms-viewselectortext,.ms-viewselectorhover{ font-size:8pt; font-family:tahoma; } .ms-menutoolbar td td.ms-viewselector,.ms-menutoolbar td td.ms-viewselectorhover,.ms-toolbar td td.ms-viewselector,.ms-toolbar td td.ms-viewselectorhover,td.ms-viewselector{ /* [ReplaceColor(themeColor:"Light1")] */ background-color:#ffffff; /* [ReplaceColor(themeColor:"Dark2-Medium")] */ border:1px solid #D3D6DA; font-weight:bold; padding:0px; } .ms-menutoolbar td td{ border:none; } div.ms-viewselector,div.ms-viewselectorhover{ padding:2px 4px 2px 4px; cursor:pointer; } div.ms-viewselector a,div.ms-viewselectorhover a.ms-menu-a span{ /* [ReplaceColor(themeColor:"Dark1")] */ color:#000000; } .ms-viewselector-arrow{ vertical-align:middle; } .ms-menutoolbar td td.ms-viewselectorhover,.ms-toolbar td td.ms-viewselectorhover{ /* [RecolorImage(themeColor:"Accent1",method:"Tinting",includeRectangle:{x:0,y:654,width:1,height:18})] */ background:url("/_layouts/images/bgximg.png") repeat-x -0px -654px; /* [ReplaceColor(themeColor:"Accent1-Lighter")] */ border-color:#91cdf2; /* [ReplaceColor(themeColor:"Accent1",themeTint:"0.35")] */ background-color:#ccebff; } .ms-bottompaging{ /* [ReplaceColor(themeColor:"Accent3-Lightest")] */ background:#ebf3ff; } .ms-bottompagingline1{ height:3px; /* [ReplaceColor(themeColor:"Light1")] */ background-color:#ffffff; } .ms-bottompagingline2,.ms-bottompagingline3{ height:1px; /* [ReplaceColor(themeColor:"Light1")] */ background-color:#ffffff; } .ms-bottompaging .ms-vb{ /* [ReplaceColor(themeColor:"Light1")] */ background-color:#ffffff; } .ms-bottompagingline2 img,.ms-bottompagingline3 img,.ms-partline img{ display:none; } .ms-paging{ padding-left:11px; padding-right:11px; padding-bottom:4px; font-family:tahoma,sans-serif; font-size:8pt; font-weight:normal; /* [ReplaceColor(themeColor:"Accent3-Darker")] */ color:#204d89; } .ms-bottompaging .ms-paging{ /* [ReplaceColor(themeColor:"Dark1-Medium")] */ color:#4c4c4c; } .ms-menutoolbar .ms-splitbuttondropdown{ padding:3px 2px 0px 2px; } .ms-menutoolbar .ms-splitbuttontext{ padding:0px 7px 1px 7px; } .ms-splitbutton{ margin:0px 2px; } .ms-splitbuttonhover{ margin:0px 2px; /* [RecolorImage(themeColor:"Accent6-Darker",method:"Tinting",includeRectangle:{x:0,y:431,width:1,height:21})] */ background:url("/_layouts/images/bgximg.png") repeat-x -0px -431px; border-collapse:collapse; height:22px; background-color:#fff; } .ms-splitbuttonhover .ms-splitbuttondropdown{ padding:3px 1px 0px 2px; } .ms-splitbuttonhover .ms-splitbuttontext{ padding:0px 6px 0px 6px; } .ms-splitbuttonhover .ms-splitbuttondropdown,.ms-splitbuttonhover .ms-splitbuttontext{ border:solid 1px #cccccc; cursor:pointer; } .ms-propertysheet { font-size:1em; } .ms-propertysheet th.ms-gridT1 { text-align:left; /* [ReplaceColor(themeColor:"Dark1")] */ color:#000000; width:190px; } .ms-viewselect a:link{ font-size:8pt; font-family:Verdana,sans-serif; /* [ReplaceColor(themeColor:"Accent3")] */ color:#003399; } select{ font-size:8pt; font-family:Verdana,sans-serif; } hr{ /* [ReplaceColor(themeColor:"Accent3")] */ color:#003399; height:2px; } .ms-input{ font-size:8pt; font-family:Verdana,sans-serif; } .ms-treeviewouter{ margin-top:5px; } .ms-quicklaunch table td{ /* [ReplaceColor(themeColor:"Accent3-Lighter")] */ border-top:1px solid #add1ff; } .ms-quicklaunch .ms-treeviewouter table td{ border-top:none; } .ms-quicklaunch table.ms-navheader td,.ms-quicklaunch span.ms-navheader{ padding:1px 4px 4px 4px; } div.ms-treeviewouter > div > div{ border:none; } .ms-quicklaunch span.ms-navheader{ /* [ReplaceColor(themeColor:"Accent3-Lightest")] */ background-color:#d6e8ff; /* [ReplaceColor(themeColor:"Accent3-Lighter")] */ border-top:1px solid #add1ff; /* [ReplaceColor(themeColor:"Accent3-Lightest")] */ border-left:solid 1px #f2f8ff; /* [ReplaceColor(themeColor:"Accent3-Lighter")] */ border-bottom:1px solid #add1ff; padding:1px 6px 3px 6px; } .ms-quicklaunch table.ms-navsubmenu2 td{ border:none; } .ms-quicklaunch table.ms-selectednavheader td{ width:100%; /* [ReplaceColor(themeColor:"Accent6-Lightest")] */ background-color:#fff699; } .ms-quicklaunch table.ms-selectednavheader{ border:none; } .ms-quicklaunch span{ display:block; } .ms-quicklaunch div.ms-navsubmenu1 br{ display:none; } .ms-quicklaunch table.ms-selectednav{ /* [ReplaceColor(themeColor:"Accent6-Darker")] */ border:solid 1px #d2b47a; /* [RecolorImage(themeColor:"Accent1",method:"Tinting")] */ background-image:url("/_layouts/images/selectednav.gif"); background-repeat:repeat-x; /* [ReplaceColor(themeColor:"Accent6-Lightest")] */ background-color:#ffe6a0; margin:2px; margin-bottom:0; width:97%; } .ms-quicklaunch table.ms-selectednav td{ background:transparent url("/_layouts/images/selectednavbullet.gif"); background-repeat:no-repeat; background-position:left top; /* [ReplaceColor(themeColor:"Light1")] */ border:solid 1px #ffffff; padding:0px 4px 1px 12px; margin:0px; } table.ms-selectednav td a.ms-selectednav{ background:none; /* [ReplaceColor(themeColor:"Dark1")] */ color:#000000; } .ms-quicklaunch table.ms-selectednavheader td{ width:100%; /* [ReplaceColor(themeColor:"Accent6-Lighter")] */ background-color:#ffe6a0; /* [RecolorImage(themeColor:"Accent1",method:"Tinting")] */ background-image:url("/_layouts/images/selectednav.gif"); background-repeat:repeat-x; padding-top:2px; padding-bottom:2px; /* [ReplaceColor(themeColor:"Light1")] */ border-top:solid 1px #ffffff; /* [ReplaceColor(themeColor:"Light1")] */ border-left:solid 1px #ffffff; padding:1px 6px 3px 6px; } .ms-selectednavheader a{ font-weight:bold; /* [ReplaceColor(themeColor:"Dark1")] */ color:#000000; text-decoration:none; } .ms-selectednavheader a:hover{ /* [ReplaceColor(themeColor:"Dark1")] */ color:#000000; text-decoration:underline; } table.ms-navitem td,span.ms-navitem{ background-image:url("/_layouts/images/navBullet.gif"); background-repeat:no-repeat; background-position:left top; padding:3px 6px 4px 16px; font-family:tahoma; } .ms-navsubmenu1{ width:100%; border-collapse:collapse; /* [ReplaceColor(themeColor:"Light1-Lightest")] */ background-color:#f2f8ff; } .ms-navsubmenu2{ width:100%; /* [ReplaceColor(themeColor:"Light1-Lightest")] */ background-color:#f2f8ff; margin-bottom:6px; } table.ms-navselected{ padding:2px; } table.ms-navselected,span.ms-navselected{ /* [RecolorImage(themeColor:"Accent6",method:"Tinting")] */ background-image:url("/_layouts/images/SELECTEDNAV.GIF"); /* [ReplaceColor(themeColor:"Accent6-Lighter")] */ background-color:#ffe6a0; background-repeat:repeat-x; } table.ms-navselected td{ background-image:url("/_layouts/images/navBullet.gif"); background-repeat:no-repeat; background-position:top left; padding:3px 6px 4px 17px; } table.ms-navheader td{ background-image:none; } .ms-navheader a{ font-weight:bold; /* [ReplaceColor(themeColor:"Accent3")] */ color:#003399; text-decoration:none; } .ms-navheader a:hover{ /* [ReplaceColor(themeColor:"Dark1")] */ color:#000000; text-decoration:underline; } .ms-navitem a{ /* [ReplaceColor(themeColor:"Dark2")] */ color:#3b4f65 !important; text-decoration:none; display:inline-block; } .ms-navitem a:hover{ /* [ReplaceColor(themeColor:"Accent1")] */ color:#44aff6 !important; text-decoration:underline !important; } .ms-quicklaunchouter{ border:none; margin-bottom:5px; } .ms-quicklaunchouter{ margin:0px 1px 2px 1px; } .ms-treeviewouter a.ms-navitem{ padding:4px 4px 5px; margin-left:4px; border-color:transparent; border-width:1px; border-style:solid !important; } .ms-tvselected a.ms-navitem{ /* [RecolorImage(themeColor:"Light1")] */ background:url("/_layouts/images/selbg.png") repeat-x left top; /* [ReplaceColor(themeColor:"Accent1",themeTint:"0.15")] */ background-color:#ccebff; /* [ReplaceColor(themeColor:"Accent1-Lighter")] */ border-color:#91cdf2; /* [ReplaceColor(themeColor:"Accent1-Lightest")] */ border-top-color:#c6e5f8; border-width:1px; border-style:solid !important; /* [ReplaceColor(themeColor:"Dark2")] */ color:#003759 !important; display:inline-block; } .ms-tvselected a:hover{ /* [ReplaceColor(themeColor:"Dark2")] */ color:#003759 !important; } table.ms-recyclebin td{ /* [ReplaceColor(themeColor:"Light1-Lightest")] */ background-color:#f2f8ff; width:100%; /* [ReplaceColor(themeColor:"Light1")] */ border-top:solid 1px #ffffff; /* [ReplaceColor(themeColor:"Light1")] */ border-left:solid 1px #ffffff; padding:3px 5px 7px 3px; } table.ms-recyclebin td a{ font-weight:bold; /* [ReplaceColor(themeColor:"Accent5-Darker")] */ color:#008800; text-decoration:none; } table.ms-recyclebin td a:hover{ /* [ReplaceColor(themeColor:"Dark1")] */ color:#000000; text-decoration:underline; } .ms-quickLaunch{ padding-top:5px; } .ms-quickLaunch h3{ font-size:1em; font-weight:normal; /* [ReplaceColor(themeColor:"Dark2")] */ color:#929fad; margin:0px 0px 6px 10px; } .ms-quicklaunchheader{ padding:2px 6px 4px 10px; font-weight:bold; /* [ReplaceColor(themeColor:"Light1-Lighter")] */ color:#676767; background-image:url("/_layouts/images/quickLaunchHeader.gif"); background-repeat:repeat-x; /* [ReplaceColor(themeColor:"Accent3-Lightest")] */ background-color:#d6e8ff; /* [ReplaceColor(themeColor:"Light1-Lightest")] */ border-left:solid 1px #f2f8ff; margin-left:-7px; font-size:inherit; } .ms-quicklaunchheader a,.ms-unselectednav a{ /* [ReplaceColor(themeColor:"Dark1-Lighter")] */ color:#676767 !important; text-decoration:none; } .ms-quicklaunchheader a:hover{ /* [ReplaceColor(themeColor:"Dark1")] */ color:#000000 !important; text-decoration:underline; } .ms-navline{ /* [ReplaceColor(themeColor:"Light1-Darker")] */ border-bottom:1px solid #adadad; } .ms-navwatermark{ /* [ReplaceColor(themeColor:"Accent6-Lighter")] */ color:#ffdf88; } .ms-selectednav{ border:1px solid #2353b2; /* [ReplaceColor(themeColor:"Accent6-Lightest")] */ background:#fff699; padding-top:1px; padding-bottom:2px; } .ms-unselectednav{ /* [ReplaceColor(themeColor:"Accent3-Medium")] */ border:1px solid #83b0ec; padding-top:1px; padding-bottom:2px; } .ms-verticaldots{ /* [ReplaceColor(themeColor:"Accent3-Medium")] */ border-right:1px solid #83b0ec; border-left:none; } .ms-nav{ /* [ReplaceColor(themeColor:"Accent3-Medium")] */ background-color:#83b0ec; font-family:tahoma; } .ms-globalTitleArea{ text-align:right; background-image:url("/_layouts/images/siteTitleBKGD.gif"); background-position:right top; background-repeat:repeat-y; padding-left:5px; padding-right:0px; padding-top:1px; } .ms-titlearea{ /* [ReplaceColor(themeColor:"Dark1-Lighter")] */ color:#666666; font-family:tahoma; font-size:8pt; letter-spacing:.1em; } .ms-titlearea a { /* [ReplaceColor(themeColor:"Accent3-Darker")] */ color:#3966bf; text-decoration:none; } .ms-titlearea a:hover { /* [ReplaceColor(themeColor:"Dark1")] */ color:#000000; text-decoration:underline; } .ms-titlearealeft { /* [ReplaceColor(themeColor:"Accent3-Lightest")] */ background-color:#d6e8ff; } TD.ms-titleareaframe,Div.ms-titleareaframe,.ms-pagetitleareaframe{ background:url("/_layouts/images/bgximg.png") repeat-x -0px -461px; /* [ReplaceColor(themeColor:"Accent3-Lightest")] */ background-color:#d6e8ff; text-align:left; } div.ms-titleareaframe{ height:100%; } .ms-pagetitleareaframe table{ background-image:url("/_layouts/images/topshape.jpg"); background-repeat:no-repeat; background-position:332px 4px; height:54px; } .ms-titlearealine{ /* [ReplaceColor(themeColor:"Accent3-Medium")] */ background-color:#83b0ec; } .ms-titleareaframe table td.ms-titlearea,.ms-areaseparator table td.ms-titlearea,.ms-pagetitleareaframe table td.ms-titlearea{ padding:7px 0px 1px 0px; } .ms-sitemapdirectional,.ms-sitemapdirectional a{ unicode-bidi:embed; } .ms-areaseparatorcorner{ background-image:url("/_layouts/images/framecornergrad.gif"); background-position:left top; background-repeat:repeat-y; height:8px; /* [ReplaceColor(themeColor:"Accent5-Medium")] */ border-right:1px solid #6f9dd9; } td.ms-areaseparatorleft{ background:#d6e8ff url("/_layouts/images/bgximg.png") repeat-x -0px -461px; /* [ReplaceColor(themeColor:"Accent5-Medium")] */ border-right:1px solid #6f9dd9; height:100%; } div.ms-areaseparatorleft{ background-repeat:no-repeat; background-position:-143px 0px; /* [ReplaceColor(themeColor:"Accent5-Medium")] */ border-right:1px solid #6f9dd9; height:100%; } div.ms-areaseparatorright{ /* [ReplaceColor(themeColor:"Accent5-Medium")] */ border-left:1px solid #6f9dd9; padding-right:2px; height:100%; } .ms-titlearearight .ms-areaseparatorright{ background:#d6e8ff url("/_layouts/images/bgximg.png") repeat-x -0px -461px; /* [ReplaceColor(themeColor:"Accent5-Medium")] */ border-left:1px solid #6f9dd9; padding-right:2px; height:100%; } .ms-areaseparator{ /* [ReplaceColor(themeColor:"Accent4-Lightest")] */ background-color:#ffeaad; border-right:none; border-left:none; padding-left:5px; height:61px; } .ms-pagemargin{ background-color:#83b0ec; height:100%; } td.ms-rightareacell div.ms-pagemargin{ /* [ReplaceColor(themeColor:"Accent3-Medium")] */ background-color:#83b0ec; height:100%; /* [ReplaceColor(themeColor:"Accent3-Medium")] */ border-left:solid 1px #83b0ec; } .ms-bodyareacell{ vertical-align:top; } .ms-pagebottommargin,.ms-pagebottommarginleft,.ms-pagebottommarginright{ /* [ReplaceColor(themeColor:"Accent3-Medium")] */ background:#83b0ec; } .ms-bodyareapagemargin{ /* [ReplaceColor(themeColor:"Accent3-Medium")] */ background:#83b0ec; /* [ReplaceColor(themeColor:"Accent3-Lighter")] */ border-top:1px solid #6f9dd9; } .ms-bodyareaframe{ vertical-align:top; height:100%; /* [ReplaceColor(themeColor:"Light1")] */ background-color:#ffffff; /* [ReplaceColor(themeColor:"Accent3-Lighter")] */ border:1px solid #6f9dd9; } .ms-bodyareaframe{ padding:10px; } .ms-pagetitle{ /* [ReplaceColor(themeColor:"Dark1")] */ color:#000000; font-family:verdana; font-size:16pt; margin:0px 0px 4px 0px; font-weight:normal; } .ms-pagetitle a{ text-decoration:none; /* [ReplaceColor(themeColor:"Dark1")] */ color:#000000; margin:0; font-weight:normal; } .ms-pagetitle a:hover{ } .ms-vh table.ms-selectedtitle,.ms-vh2 table.ms-selectedtitle,.ms-vh-icon table.ms-selectedtitle,.ms-vh table.ms-unselectedtitle,.ms-vh2 table.ms-unselectedtitle,.ms-vh-icon table.ms-unselectedtitle{ height:21px; } .ms-vh table.ms-selectedtitle,.ms-vh2 table.ms-selectedtitle,.ms-vh-icon table.ms-selectedtitle{ /* [ReplaceColor(themeColor:"Light1-Lighter")] */ background-color:#dde1e5; border:none; } .ms-vh2 .ms-selectedtitle .ms-vb,.ms-vh2 .ms-unselectedtitle .ms-vb{ padding-left:5px; padding-right:5px; padding-top:1px; } .ms-vh-icon .ms-selectedtitle .ms-vb,.ms-vh-icon .ms-unselectedtitle .ms-vb{ padding-left:0px; vertical-align:middle; } .ms-propertysheet th.ms-vh2,.ms-propertysheet th.ms-vh2-nofilter{ font-family:tahoma; } .ms-listviewtable .ms-vh2,.ms-summarystandardbody .ms-vh2{ padding:1px 1px 0px 1px; } .ms-listviewtable .ms-vb2,.ms-summarystandardbody .ms-vb2{ padding-left:2px; padding-right:7px; } .ms-selectedtitle{ /* [ReplaceColor(themeColor:"Light1")] */ background-color:#ffffff; /* [ReplaceColor(themeColor:"Accent4-Darker")] */ border:1px solid #b09460; margin:0px; padding:0px; cursor:pointer; } .ms-selectedtitlealternative { /* [ReplaceColor(themeColor:"Light1")] */ background-color:#ffffff; /* [ReplaceColor(themeColor:"Accent4-Darker")] */ border:1px solid #b09460; margin:0px; padding:0px; cursor:pointer; } .ms-unselectedtitle{ background-color:transparent; margin:0px; padding:0px; } .ms-newgif{ display:inline-block; margin-left:5px; } .ms-menuimagecell{ /* [RecolorImage(themeColor:"Accent1",method:"Tinting")] */ background:url("/_layouts/images/selectednav.gif") repeat-x; /* [ReplaceColor(themeColor:"Accent6-Lighter")] */ background-color:#ffe6a0; cursor:pointer; /* [ReplaceColor(themeColor:"Light1")] */ border:solid 1px #ffffff; padding:0px; height:18px; } .ms-vh .ms-menuimagecell,.ms-vh2 .ms-menuimagecell,.ms-vh-icon .ms-menuimagecell{ height:20px; } .ms-vh .ms-menuimagecell img,.ms-vh2 .ms-menuimagecell img,.ms-vh-icon .ms-menuimagecell img{ margin-top:2px; margin-bottom:2px; } .ms-descriptiontext{ /* [ReplaceColor(themeColor:"Dark1-Medium")] */ color:#4c4c4c; font-family:tahoma; font-size:8pt; text-align:left; } .ms-statusdescriptiontext { color:#4c4c4c; background-color:#FFFF00; font-family:tahoma; font-size:8pt; text-align:left; } .ms-webpartpagedescription{ font-family:verdana; font-size:8pt; /* [ReplaceColor(themeColor:"Dark1-Lighter")] */ color:#5a5a5a; padding:8px 12px 0px 12px; } .ms-separator { /* [ReplaceColor(themeColor:"Light2",themeShade:"0.02")] */ color:#f1f1f2; background-repeat:repeat-x; border:none; padding-left:4px; font-size:10pt; } .ms-rtetoolbarmenu .ms-separator{ padding-left:0px !important; /* [ReplaceColor(themeColor:"Accent3-Medium")] */ color:#83b0ec; } .ms-separator img { height:12px; width:1px; margin:0px 1px 0px 1px; /* [ReplaceColor(themeColor:"Light2",themeShade:"0.02")] */ background:#f1f1f2; } .ms-propertysheet th.ms-authoringcontrols { /* [ReplaceColor(themeColor:"Accent3-Lightest")] */ background-color:#f1f1f2; text-align:left; } table.ms-authoringcontrols > tbody > tr > td{ vertical-align:middle; } td.ms-authoringcontrols > label,td.ms-authoringcontrols > span > label,td.ms-authoringcontrols > table > tbody > tr > td > label{ vertical-align:middle; } .ms-propertysheet th.ms-linksectionheader { /* [ReplaceColor(themeColor:"Dark1")] */ color:#000000; font-family:tahoma; font-size:8pt; font-weight:bold; text-align:left; } .ms-linksectionitemdescription{ padding-left:3px; padding-top:7px; } .ms-propertysheet .ms-sectionheader a,.ms-propertysheet .ms-sectionheader a:hover { /* [ReplaceColor(themeColor:"Dark1-Lighter")] */ color:#525252; text-decoration:none; } .ms-partline { height:3px; /* [ReplaceColor(themeColor:"Dark2",themeTint:"0.17")] */ border-bottom:1px solid #EBEBEB; } .ms-propertysheet{ font-family:verdana; font-size:1em; text-align:left; /* [ReplaceColor(themeColor:"Dark1-Medium")] */ color:#4c4c4c; } .ms-propertysheet th{ font-family:verdana; font-size:8pt; /* [ReplaceColor(themeColor:"Dark1-Medium")] */ color:#4c4c4c; font-weight:normal; } .ms-propertysheet a{ text-decoration:none; /* [ReplaceColor(themeColor:"Accent3-Darker")] */ color:#3966bf; } .ms-propertysheet a:hover{ text-decoration:underline; /* [ReplaceColor(themeColor:"Dark1")] */ color:#000000; } .ms-vh,.ms-vh2,.ms-vh-icon-empty,.ms-vhImage,.ms-vh2-nograd,.ms-vh3-nograd,.ms-vh2-nograd-icon,.ms-vh2-nofilter-icon,.ms-ph{ font-weight:normal; /* [ReplaceColor(themeColor:"Light1-Medium")] */ color:#b2b2b2; text-align:left; text-decoration:none; vertical-align:top; } .ms-vh-icon{ vertical-align:middle; } .ms-gb,.ms-gb2,.ms-gbload,.ms-vb-tall,.ms-vb-user,.ms-pb,.ms-pb-selected td{ /* [ReplaceColor(themeColor:"Dark1")] */ color:#000000; } .ms-gb a,.ms-gb2 a{ /* [ReplaceColor(themeColor:"Accent3")] */ color:#003399; } .ms-vh,.ms-vh2,.ms-vh-icon,.ms-vh-icon-empty,.ms-vhImage,.ms-gb,.ms-gb2,.ms-gbload,.ms-vb,.ms-vb2,.ms-vb-tall,.ms-vb-user,.ms-vh2-nograd,.ms-vh3-nograd,.ms-vh2-nograd-icon,.ms-vh2-nofilter-icon,.ms-pb,.ms-pb-selected,.ms-ph{ font-size:8pt; line-height:1.2; font-family:Verdana,Helvetica,sans-serif; } .ms-vh,.ms-vh2,.ms-vh2-nograd,.ms-vh3-nograd,.ms-vh2-nograd-icon,.ms-vh2-nofilter-icon,.ms-ph{ white-space:nowrap; } .ms-vh,.ms-vh2,.ms-vh-icon,.ms-vh2-nofilter-icon,.ms-viewheadertr .ms-vh-group,.ms-vh2-nograd,.ms-vh3-nograd,.ms-vh2-nograd-icon,.ms-ph,.ms-pickerresultheadertr{ background-repeat:repeat-x; padding-top:1px; padding-bottom:0px; } .ms-viewheadertr th{ padding-top:5px !important; } .ms-disc .ms-viewheadertr th.ms-vh2{ padding:1px 5px 0px 4px; } .ms-disc .ms-vh2 .ms-selectedtitle .ms-vb,.ms-disc .ms-vh2 .ms-unselectedtitle .ms-vb{ padding-left:4px; } th.ms-vh3-nograd{ width:12px; /* [ReplaceColor(themeColor:"Light1-Darker")] */ color:#949494; font-size:8pt; font-family:tahoma,sans-serif; } .ms-vh .ms-vh{ background-image:none; border-left:none; padding-left:1px; background-color:transparent; } .ms-vh2,.ms-ph{ padding:3px 8px 1px; } .ms-vh-div{ padding-top:5px; } .ms-vh-icon,.ms-vh2-nograd-icon,.ms-vh2-nofilter-icon{ width:12px; } .ms-vh-icon{ padding-left:6px; padding-right:4px; padding-bottom:3px; } .ms-vh-icon-empty{ width:0px; } .ms-vh a,.ms-vh a:visited,.ms-vh2 a{ /* [ReplaceColor(themeColor:"Dark1-Lightest")] */ color:#7f7f7f; text-decoration:none; } .ms-vh a:hover,.ms-vh2 a:hover{ text-decoration:underline; } .ms-imnImgTD { padding-right:2px; padding-bottom:5px; } .ms-vhltr .ms-imnImgTD { padding-right:2px; } .ms-vhrtl .ms-imnImgTD { padding-left:2px; } .ms-imnTxtTD { padding-top:0px; } .ms-vhImage{ width:18pt } .ms-standardheader{ font-size:1em; margin:0em; text-align:left; /* [ReplaceColor(themeColor:"Dark1")] */ color:#525252; } .ms-formlabel h3.ms-standardheader{ font-weight:normal; color:auto; } .ms-linksectionheader .ms-standardheader{ /* [ReplaceColor(themeColor:"Dark1")] */ color:#000000; } .ms-gb{ height:22px; /* [ReplaceColor(themeColor:"Light1")] */ background-color:#ffffff; font-weight:bold; /* [ReplaceColor(themeColor:"Accent3-Lighter")] */ border-bottom:1px solid #8ebbf5; /* [ReplaceColor(themeColor:"Light1-Lightest")] */ border-top:1px solid #f9f9f9; padding-bottom:3px; } .ms-gb .ms-vb2{ font-weight:normal; } .ms-listviewtable .ms-gb,.ms-listviewtable .ms-gb2{ padding-top:14px; } .ms-gb2{ height:22px; /* [ReplaceColor(themeColor:"Dark1-Medium")] */ color:#4c4c4c; padding-bottom:3px; /* [ReplaceColor(themeColor:"Accent3-Lightest")] */ border-bottom:1px solid #e3efff; /* [ReplaceColor(themeColor:"Light1-Lightest")] */ border-top:1px solid #f9f9f9; } .ms-gbload{ height:22px; /* [ReplaceColor(themeColor:"Dark1-Medium")] */ color:#4c4c4c; /* [ReplaceColor(themeColor:"Light1")] */ background-color:#ffffff; padding-bottom:3px; } .ms-vb,.ms-vb2,.ms-vb-user,.ms-vb-tall,.ms-pb,.ms-pb-selected { /* [ReplaceColor(themeColor:"Dark1")] */ color:#6d6f72; vertical-align:top; } .ms-vb a:link,.ms-vb2 a:link,.ms-vb-user a:link{ /* [ReplaceColor(themeColor:"Hyperlink")] */ color:#0072BC; text-decoration:none; } .ms-vb a:hover,.ms-vb2 a:hover,.ms-vb-user a:hover{ text-decoration:underline; } .ms-vb a:visited,.ms-vb2 a:visited,.ms-vb-user a:visited{ /* [ReplaceColor(themeColor:"Hyperlink")] */ color:#0072BC; text-decoration:none; } .ms-vb a:visited:hover,.ms-vb2 a:visited:hover,.ms-vb-user a:visited:hover{ /* [ReplaceColor(themeColor:"Hyperlink")] */ color:#0072BC; text-decoration:underline; } .ms-alternatingstrong .ms-vb a:link,.ms-alternatingstrong .ms-vb2 a:link,.ms-alternatingstrong .ms-vb-user a:link,.ms-alternatingstrong .ms-vb a:visited,.ms-alternatingstrong .ms-vb2 a:visited,.ms-alternatingstrong .ms-vb-user a:visited,.ms-alternatingstrong .ms-vb a:visited:hover,.ms-alternatingstrong .ms-vb2 a:visited:hover,.ms-alternatingstrong .ms-vb-user a:visited:hover{ /* [ReplaceColor(themeColor

    Read the article

< Previous Page | 98 99 100 101 102 103 104 105 106 107 108 109  | Next Page >