Saturday, April 25, 2009
Bill Hicks "Lost" Segment from Letterman
Friday, April 24, 2009
A very cool list...
Latest LifeHacker Links
- http://lifehacker.com/5224423/know-when-your-work-project-is-in-danger
- http://lifehacker.com/5224244/find-new-music-on-twitter
- http://lifehacker.com/5223289/belvedere-updates-adds-folder-recursion-fixes-bugs-and-more
- http://lifehacker.com/5222678/polar-rose-recognizes-faces-in-flickr-photos
- http://lifehacker.com/tag/updates/
- http://lifehacker.com/tag/downloads/
- http://lifehacker.com/5222832/cometdocs-converts-between-more-than-50-file-types
- http://lifehacker.com/5224933/chromium-updater-keeps-nightly-builds-updated
Oh God The Horror
- http://en.wikipedia.org/wiki/The_Zombie_Survival_Guide
- http://www.cracked.com/blog/whats-your-zombie-contingency-plan-11-practical-strategies/
- http://lifehacker.com/software/zombies/use-google-maps-to-track-zombies-in-your-area-164501.php
- http://www.theregister.co.uk/2007/06/14/street_view_zombie/
Thursday, April 23, 2009
Monday, April 20, 2009
Friday, April 17, 2009
Workstation UnLock
- Workstation Unlock forum question: http://forum.sysinternals.com/forum_posts.asp?TID=11220
- Remotely Unlock a Windows workstation: http://www.codeproject.com/KB/system/RemoteUnlock.aspx
- SysInternals AutoLogon 2.0: http://technet.microsoft.com/en-gb/sysinternals/bb963905.aspx
- StackOverflow wanting to unlock workstation: http://stackoverflow.com/questions/174225/unlock-windows-workstation-programatically
- google "workstationunlock": http://www.google.co.uk/search?hl=en&rlz=1C1CHMB_en-GBGB316GB316&q=workstationunlock&btnG=Search&meta=
- google "workstation unlock": http://www.google.co.uk/search?hl=en&rlz=1C1CHMB_en-GBGB316GB316&ei=JVDoScKaC9O7jAee7OSbCg&sa=X&oi=spell&resnum=0&ct=result&cd=1&q=workstation+unlock&spell=1
Small Post About MVC
- The low-down from ScottGu: http://weblogs.asp.net/scottgu/archive/2009/04/01/asp-net-mvc-1-0.aspx
- This low-down from Phil Haack: http://haacked.com/
- Chapter on MVC from ScottGu's book, starting from "File->New": http://weblogs.asp.net/scottgu/archive/2009/03/10/free-asp-net-mvc-ebook-tutorial.aspx
- The above chapter direct download: http://aspnetmvcbook.s3.amazonaws.com/aspnetmvc-nerdinner_v1.pdf
- MIX'09, including the MVC announcement: http://weblogs.asp.net/scottgu/archive/2009/03/31/mix-09.aspx
- Download MVC here: http://www.microsoft.com/downloads/details.aspx?FamilyID=53289097-73ce-43bf-b6a6-35e00103cb4b&displaylang=en
- Duplicate content issue discussion: http://blog.dantup.me.uk/2009/04/reducing-duplicate-content-with-aspnet.html
- Binding complex objects returned from views using MVC ModelBinders: http://weblogs.asp.net/melvynharbour/archive/2008/08/29/how-to-use-the-asp-net-mvc-modelbinder.aspx
- Links from google: http://www.google.co.uk/search?rlz=1C1CHMB_en-GBGB316GB316&sourceid=chrome&ie=UTF-8&q=msdn+mvc
- Microsoft explaining the Model View Controller pattern: http://msdn.microsoft.com/en-us/library/ms978748.aspx
- Microsoft breaking it down: http://msdn.microsoft.com/en-us/library/dd394709.aspx
- Community MVC hub: http://www.asp.net/mvc/
- ScottGu's MVC articles: http://weblogs.asp.net/scottgu/archive/tags/MVC/default.aspx
- Stacktrace is always good: http://stackoverflow.com/questions/1846677/how-can-i-deploy-asp-net-mvc-2-beta-in-iis6
Thursday, April 16, 2009
Latest Tech Favourites
- http://i.gizmodo.com/5214623/this-is-a-mouse
- http://i.gizmodo.com/5215302/google-street-view-captures-google-employee-picking-his-nose
- http://i.gizmodo.com/5215456/this-robot-helicopter-snipes-better-than-you-with-an-xbox-360-controllerin-real-life
- http://i.gizmodo.com/5215020/cassette-to-digital-usb-gadget-preserves-milli-vanilli-for-eternity
- http://i.gizmodo.com/5215136/impressive-trailer-shows-why-youd-want-a-philips-219-cinema-lcd
- http://lifehacker.com/5214801/move-half+finished-bittorrent-downloads-to-another-drive
Plain English RSS
Tuesday, April 14, 2009
Awesomeness On The Net
- http://www.theregister.co.uk/2009/04/06/treacle_mine_road/
- http://www.theregister.co.uk/2009/04/08/gel_ad/
- http://www.theregister.co.uk/2009/04/09/animal_shelter_boys/
- http://www.theregister.co.uk/2009/03/31/dirty_harriet/
- http://www.theregister.co.uk/2009/04/14/facebook_twitter_users_dunces_amoral/
- http://www.theregister.co.uk/2009/04/01/miss_universe_guantanamo/
- http://i.gizmodo.com/5213584/star-warsmacgyver-mashup-just-makes-sense?autoplay=true
- http://i.gizmodo.com/5214079/google-street-view-car-captures-google-street-view-car-has-officially-seen-everything
- http://i.gizmodo.com/5213434/our-favorite-lifehacker-posts-of-the-week
Friday, April 10, 2009
P2P What I/You Need To Know
- http://lifehacker.com/software/ultranewb/a-beginners-guide-to-bittorrent-285489.php
- http://lifehacker.com/software/hack-attack/intermediate-guide-to-bittorrent-286607.php
- http://lifehacker.com/372633/protect-your-privacy-when-downloading
- http://phoenixlabs.org/pg2/ - Blocks your computer from connecting to IP addresses which are suspect (ie: which collect information you might want kept private)
- http://btguard.com/ - Paid-for service which provides a proxy through which your connections can be passed, making your IP address sort-of invisible to those you connect to
- http://lifehacker.com/5213712/half+open-patcher-speeds-up-bittorrent-downloads - A patch to Windows allows more than the standard 10 connection attempts, but BE CAREFUL
- http://lifehacker.com/5214801/move-half+finished-bittorrent-downloads-to-another-drive - Move files to another drive and let uTorrent complete them later, saving your initial drive space, etc.
- http://lifehacker.com/350405/top-10-bittorrent-tools-and-tricks - How to get the most out of torrenting and things you probably didn't know you could do
- http://gizmodo.com/tag/p2p/
- http://gizmodo.com/tag/how-to/
- http://gizmodo.com/tag/security/
- http://gizmodo.com/tag/piracy/
- http://lifehacker.com/tag/p2p/
- http://lifehacker.com/tag/security/
- http://i.gizmodo.com/5016514/google-tools-will-tell-you-if-your-isp-is-slowing-down-your-connection
- http://www.techthrob.com/2009/03/02/btguard-anonymizing-service-is-it-worth-it/
Thursday, April 09, 2009
Wednesday, April 08, 2009
Open Your Mind Real Wide Now...
Budget Surface
Thursday, April 02, 2009
Augmented Reality in the Real World
Wednesday, April 01, 2009
More Augmented Reality
Online File Storage Services
- http://docs.google.com/
- http://skydriveteam.spaces.live.com/
- http://www.rapidshare.com/
- http://www.box.net/
More Gizmodo Favourites
- http://i.gizmodo.com/5190768/10-of-the-worlds-smallest-gadgets
- http://i.gizmodo.com/5192774/google-classic-when-the-world-moved-a-little-slower
- http://i.gizmodo.com/5187630/how-to-use-bittorrent-like-a-pro
- http://i.gizmodo.com/5187266/cinemas-most-dramatic-typing-scenes
- http://i.gizmodo.com/5192539/ecomodo-+-the-best-of-treehugger
- http://i.gizmodo.com/5192100/happy-100th-birthday-to-the-toaster
- http://i.gizmodo.com/5192013/vending-machine-uses-infrared-rays-to-make-fresh-pizza-on-the-spot
- http://i.gizmodo.com/5191988/dead-pixel-in-google-earth
- http://i.gizmodo.com/5191987/theres-no-place-like-home-button
- http://i.gizmodo.com/5191568/gopro-attached-to-surfboard-for-recording-awesome-wipeouts
- http://i.gizmodo.com/5192819/and-now-a-clock-for-the-truly-geocentric
- http://i.gizmodo.com/5192647/sub+zero-garbage-can-keeps-your-trash-nice-and-frosty
- http://i.gizmodo.com/5192430/review-clear-spot-portable-wimax-wi+fi-hotspot
- http://i.gizmodo.com/5190874/ethernet-cable-fashion-show-looks-like-a-data-center-disaster
- http://i.gizmodo.com/5190434/what-owning-these-15-gadgets-says-about-you
- http://i.gizmodo.com/5190861/someone-found-microsofts-lauren-and-shes-an-actress
- http://i.gizmodo.com/5190647/officepod-provides-an-outdoor-sanctuary-for-people-that-work-from-home
- http://i.gizmodo.com/5190450/the-las-vegas-strip-before-and-during-earth-hour
- http://i.gizmodo.com/5188521/texas-decides-evolution-needs-more-study-i-decide-i-need-less-texas
- http://i.gizmodo.com/5186970/delicious-but-deadly
- http://i.gizmodo.com/5187054/end-of-rainbow-captured-on-iphone-camera-no-pot-of-gold
Tuesday, March 31, 2009
Friday, March 27, 2009
PC Upgrade Update
- Here is Microsoft's memory access page: http://msdn.microsoft.com/en-us/library/aa366778.aspx
- Crucial's memory scanner: http://www.crucial.com/uk/systemscanner/index.aspx
Thursday, March 26, 2009
Wednesday, March 25, 2009
The Browser Wars Rage On
Monday, March 23, 2009
Sports drinks and regular exercise
- Electrolytes are solutions of acids or salts
- They help the body conduct motor control electrical signals
- Electrolytes are gradually lost during exercise
- Only intense and extended exercise requires extra electrolyte replishment
- Extreme exercise without replishment may result in overhydration
Saturday, March 21, 2009
Buying PC parts
- http://en.wikipedia.org/wiki/Contrast_ratio
- http://en.wikipedia.org/wiki/Digital_Visual_Interface
- http://en.wikipedia.org/wiki/Vga
- http://en.wikipedia.org/wiki/Response_time_(technology)#LCD_monitors
- http://www.crucial.com/systemscanner/index.aspx (inspects your memory for you)
- http://en.wikipedia.org/wiki/Hdmi
- http://en.wikipedia.org/wiki/Dsub
- http://www.crucial.com/uk/
- http://www.ebuyer.com/
- http://www.novatech.co.uk/
- http://www.europc.co.uk/ (discount, but very good, DELLs)
- http://www.scan.co.uk/ (heavy on the postage - not my favourite any more)
- http://www.microdirect.co.uk/
Thursday, March 19, 2009
Getting the correct month, no matter the country
How to be productive...
Wednesday, March 18, 2009
Totally Awesome - Real Digital Paper!
Tuesday, March 17, 2009
Monday, March 16, 2009
Sunday, March 15, 2009
Microsoft links I have yet to read, but really should...
Using Conditions?
How Do I: Create a Breakpoint Using Hit Count?
How Do I; Learn Tips and Tricks for Debugging in Visual Studio?
Office Development with Visual Studio Developer
Center Just Launched!
Microsoft Cloud Computing Tools
How Do I: Add Tool Windows to the Visual Studio IDE?
How Do I: Add a New Tool Window to Visual Studio?
How Do I: Integrate With the Error List?
How Do I: Create a Basic Language Service Using the Managed Babel System?
How Do I: Create Custom
Project Templates Using Visual Studio 2008?
How Do I: Create an Item Template Using Visual Studio 2008?
How Do I: Write to the Output Window?
Explore the New Features of Visual Studio 2008
How Do I: Create a Debugger Visualizer?
How Do I: Place My Commands Into Different Kinds of Visual Studio Menus?
How Do I: Add Commands
and Controls Into the Visual Studio IDE?
How Do I: Get Started with the VisualStudio Domain Specific Languages?
Heroes Happen Here
DotNetNuke® and Visual Studio 2008
Visual Studio Tip of the Day
How Do I: Add AJAX Functionality to an Existing ASP.NET Page?
How Do I: Debug a Windows Presentation Foundation Application in Visual Studio 2008?
How Do I: Use the LINQ-Enabled
XML API in Visual Studio 2008?
Some bluetooth resources. Rage.
Gizmodo, gadgets and fun in the news...
Friday, March 13, 2009
Tips 'n' Tricks - Null Coalescing Operator
Really we just want to do this:
public class Something
{
private string falafel;
public string GetInfo()
{
return falafel ?? "tabbouleh";
}
}
But then falafel doesn’t get set.
This feels inelegant:
if (falafel == null)
falafel = "tabbouleh";
return falafel;
Luckily, there’s a solution:
return falafel ?? (falafel = "tabbouleh");
This first sets the value of falafel and then returns it.
Wednesday, March 11, 2009
Fun With GridView...
Anwyay, todays subject, minor though it is, is GridView commands...
...I wanted to have a grid with a couple of buttons: Up and Down, as link buttons, to re-order my content without an edit button.
The solution is simple enough:
- Add a Button column to your GridView
- Set it's 'button type' to Link (this is optional really)
- In the GridView's events panel, double-click RowCommand
- In the generated event handler you can place:
switch (e.CommandName) { .... }
Simple really.
Lastly, here's some resources I've been looking at recently:
- http://msdn2.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.rowcommand.aspx
- http://weblogs.asp.net/scottgu/archive/2005/10/18/427754.aspx
- http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnaspp/html/ASPNETProvMod_Prt5.asp
- http://www.ondotnet.com/pub/a/dotnet/2005/01/10/liberty.html
- http://www.odetocode.com/Articles/440.aspx
- http://www.asp.net/QuickStart/aspnet/doc/profile/default.aspx
- http://www.theserverside.net/tt/articles/showarticle.tss?id=CreatingProfileProvider
- http://flimflan.com/blog/ProfileView.aspx
- http://weblogs.asp.net/scottgu/archive/2006/01/10/435038.aspx
- http://www.asp.net/sandbox/samp_profiles.aspx?tabindex=0&tabid=1
- http://msdn2.microsoft.com/en-us/library/83y98ckk.aspx
- http://www.google.com/search?hl=en&lr=&q=aspnet_regsql+command-line+utility+&btnG=Search
- http://www.learnvisualstudio.net/
- http://www.asp.net/learn/absolute/default.aspx?tabid=63
- http://www.microsoft.com/uk/msdn/security/link_library.mspx
- http://weblogs.asp.net/scottgu/archive/2006/04/13/Source-Code-for-the-Built_2D00_in-ASP.NET-2.0-Providers-Now-Available-for-Download.aspx
- http://weblogs.asp.net/scottgu/archive/2006/02/24/438953.aspx
Caching and Url Mapping
If you look at the line <%@ OutputCache... in the .aspx files you will see that it is configured to cache the output of that whole page for the value in the Duration attribute. The VaryByParam value indicates that any url parameter will cause the page to be re-generated and cached. Replace the "*" with "none" and the caching will ignore the url params and that page will be cached once for the duration.
The OutputCache can be used in individual user controls as well, however, if the page has a duration of 20 and the control within it has a duration of 10 both will be cached for 20. Reverse those numbers and the page will be cached for 10 but the control will be cached for 20.
Be careful that you don't try to reference in your code a control which may have been cached, as it will come back with a null reference, possibly causing an exception!
One other method of caching is substitution mapping, the drawback being that you can only point this at .net controls, not user controls.
Url Mapping.
Now, go to IIS, create a virtual directory under Default Web Site, point it at the Test solution's directory. Open the Properties panel for the virtual dir. Do the following:
Disable directory browsing.
Under Documents, enable default document and have only 1 default document called default.aspx.
Go back to Virtual Directory, click Configuration, click Add and enter:
1. Executable: C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll
2. Extension: .*
3. All Verbs
4. Script Engine ticked
5. Check that file exists NOT ticked
6. Click Ok, Click Ok.
Go to ASP.NET tab and ensure the ASP.NET version is 2.0.50727
Click Ok.
Now, when you browse to http://localhost/test/lose/ or http://localhost/test/win/ you should see the page come up which is actually /test/win.aspx or /test/lose.aspx. Hit refresh and you will see the time has not changed, because the page has been cached. The page appears, even though you have entered a directory name, because IIS is automatically adding default.aspx to any requested directory listing and redirecting all file requests to the .net framework. The .net framework is redirecting from ~/win/ or ~/lose/ to ~/win.aspx or ~/lose.aspx because in the web.config you have a UrlMapping block! Easy.
The only problem with this is that you can't use regular expressions to have, for example, ~/search/ipod/ re-mapped to ~/search.aspx?query=ipod which is annoying, but only because the next server version from microsoft will have a fully operational url mapper and they didn't have time to put it into the current release.
Links:
Caching: http://msdn2.microsoft.com/en-us/library/xsbfdd8c.aspx
Substitution mapping: http://msdn2.microsoft.com/en-us/library/system.web.ui.webcontrols.substitution(VS.80).aspx
Url Mapping: http://www.developer.com/net/asp/article.php/3581326
MS Blog: http://weblogs.asp.net/scottgu/archive/2005/11/14/430493.aspx
Tuesday, March 10, 2009
Tools List
- http://validator.w3.org/feed/
- Brass - Dynamic
- Windows Enhancement
- Kris' blog - VB.NET & C# comparison cheat sheets
- Fiddler Web Debugger - Freeware HTTP(S) debugging tool
- Time And Date .com
- Recuva - Undelete, Unerase, File Recovery - Builds
- regsitry cleaner
- dale lane » Blog Archive » Twitter for Windows Mobile
- http://aspnetresources.com/tools/keycreator.aspx
- XE.com - The World's Favorite
- Currency Site
- fiddler
- Free Virus Scan - Kaspersky Lab
- Dapper: Feed Generator
- Core Temp
- UNLOCKER 1.8.7 BY CEDRICK 'NITCH' COLLOMB
- Fences™ Community Preview Download - By Stardock - Clean
- up your ...
- Feed
- Validator for Atom and RSS
- http://www.dictionary.com/
- Elias Fotinis DeskPins :: Make Any Window Topmost
- Quick Media
- Converter
- ITUNES TOOLBOX: 30+ Tools For iTunes
- MD5 Generator
- Restoration Freeware download and review - file undeleteutility ...
- home of the nerd cave - Taskbar Shuffle
- http://www.coveritlive.com/index.php
- Say NO to 0870
- reCAPTCHA: Stop
- Spam, Read Books
- Crystal Dew World - Software - CrystalDiskInfo
- Launchy: The Open Source
- Keystroke Launcher
- VB.NET to C# Converter
- Freecorder audio recorder
- Free Online PDF viewer - PdfMeNot.com
- PAYPAL - ipn payment simulator
- MaxiVista - Multi Monitor Software
- YouTube Video Download Tool
- Online free Windows Icon creator
- SandCastle - Code Documentation Generator
- http://www.quickonlinetips.com/archives/2005/03/great-flickr-tools-collection/
- http://www.itagsoftware.com/index.php
- http://www.wingrep.com/download.htm
Rubberduck Debugging
We called it the Rubber Duck method of debugging. It goes like this:
1) Beg, borrow, steal, buy, fabricate or otherwise obtain a rubber duck (bathtub variety)
2) Place rubber duck on desk and inform it you are just going to go over some code with it, if that's all right.
3) Explain to the duck what you code is supposed to do, and then go into detail and explain things line by line
4) At some point you will tell the duck what you are doing next and then realise that that is not in fact what you are actually doing.
The duck will sit there serenely, happy in the knowledge that it has helped you on your way. Works every time. Actually, if you don't have a rubber duck you could at a pinch ask a fellow programmer or engineer to sit in.
Monday, March 09, 2009
ASP.NET Life Cycle Diagram
Creating a certificate in IIS
- IIS Resources Toolkit download: http://www.microsoft.com/downloads/details.aspx?FamilyId=56FC92EE-A71A-4C73-B628-ADE629C89499&displaylang=en
- IIS Resources help page: http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/993a8a36-5761-448f-889e-9ae58d072c09.mspx?mfr=true
- Google search for IIS resources information: http://www.google.com/search?hl=en&rlz=1C1CHMB_en-GBGB316GB316&q=iis+resources&btnG=Search
- At a command prompt, switch to the "C:\InetPub\AdminScripts" folder.
- Type the following command:
CSCRIPT ADSUTIL.VBS SET W3SVC/DisableSocketPooling TRUE
C:\>cd InetpubC:\Inetpub>cd AdminScriptsC:\Inetpub\AdminScripts>CSCRIPT ADSUTIL.VBS SET W3SVC/DisableSocketPooling TRUEMicrosoft (R) Windows Script Host Version 5.6Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.DisableSocketPooling : (BOOLEAN) TrueC:\Inetpub\AdminScripts>
Augmented Reality in CSharp
http://www.mperfect.net/wpfAugReal/
- DirectShow API on WikiPedia: http://en.wikipedia.org/wiki/DirectShow
- DirectShow Article at CodeProject: http://www.codeproject.com/KB/directx/directshownet.aspx
- TotalImmersions AR video: http://video.google.com/videoplay?docid=6523761027552517909
- Also, a skeleton C# AR app: http://sites.google.com/site/augmentedrealitytestingsite/
Thursday, March 05, 2009
ASP.NET Globalization, Culture, Localization and the Resource tag
In addition to programmatic access, ASP.NET 2.0 also introduces declarative syntax you can use to bind a named string to a property of a page or control. The syntax involves using the dollar sign ($) followed by the Resources namespace, the name of the resource file and the name of the string:
Wednesday, March 04, 2009
Tweet tweet tweet...
Commerce Server, Afraid to ask?
http://blogs.msdn.com/maxakbar/search.aspx?q=pipeline+afraid&p=1
gacutil exited with error 9009
Tuesday, March 03, 2009
Quake? Online? In a browser window? Nice(?)
http://www.hanselman.com/blog/QuakeLiveReviewAndRantWhyIsThisInteresting.aspx
Thursday, February 19, 2009
Convert byte[] to String
I was going to make one big entry containing lots of little bits of code, then realised I only had one to put in, because I keep forgetting it...
Converting a byte[] (array) into a String:
string outStr = System.Text.Encoding.UTF8.GetString(inByteArr);
Thursday, February 12, 2009
More useful links...
I have posted many links on this blog, for many reasons. I'll now be posting even more. These are useful .NET coding resources which I simply don't want to forget.
TRULY UNDERSTANDING VIEWSTATE:
http://weblogs.asp.net/infinitiesloop/archive/2006/08/03/Truly-Understanding-Viewstate.aspx
TRULY UNDERSTANDING DYNAMIC CONTROLS (PART 1):
http://weblogs.asp.net/infinitiesloop/archive/2006/08/25/TRULY-Understanding-Dynamic-Controls-_2800_Part-1_2900_.aspx
Building Templated Custom ASP.NET Server Controls:
http://msdn.microsoft.com/en-us/library/aa478964.aspx
Developing Custom ASP.NET Server Controls:
http://msdn.microsoft.com/en-us/library/zt27tfhy.aspx
Introducing Commerce Server 2007:
http://www.microsoft.com/commerceserver/default.mspx
Max akbar - For the hardcore Commerce Server Developer... and demystify the product:
http://blogs.msdn.com/maxakbar/
Getting Started with Windows Communication Foundation (WCF):
http://msdn.microsoft.com/en-us/netframework/aa663324.aspx
Windows Presentation Foundation:
http://en.wikipedia.org/wiki/Windows_Presentation_Foundation
Using Bluetooth in .NET:
http://dotnet.org.za/rudi/archive/2007/09/28/using-bluetooth-in-net.aspx
Search JQuery from inside Spotlight:
http://www.appelsiini.net/2009/2/search-jquery-api-docs-from-spotlight
Mozilla's new cloud-based HTML editor:
http://www.readwriteweb.com/archives/bespin_html_editor_cloud.php
Simon Edwards' blog:
http://www.transceiver.co.uk/
Adobe Photoshop Express:
https://www.photoshop.com/express/landing.html
CoolIris media viewer (see top of page):
http://www.cooliris.com/
What annoys you about Windows?:
http://www.annoyances.org/
YouTube tools:
http://www.quickonlinetips.com/archives/2006/10/the-amazing-youtube-tools-collection/
Friday, January 23, 2009
More Embedded Resource fun
If you're new to embedded resources please read this entry first: http://springboardpillow.blogspot.com/2009/01/embedded-resources-and-having-fun-with.html
Now we'll use the same image, from my previous blog entry, from within the project we created earlier. For this we will need a...
Custom Web Control
To make this, either use the default ServerControl1.cs, or right click the control project and select: Add -> New Item -> Web -> ASP.NET Server Control. By default this should give us:
WebCustomControl1.cs
To get in the habit, first...
Compile the Control Project
Select: Build -> Rebuild [project name]
This will recompile the custom web control project, including the new (empty) control and place it's DLL into the web project. This is because we previously referenced the control project from the web project. Now, we are going to...
Add a reference to the Embedded Resource to the Custom Control
In the new custom control, find the RenderContents(...) method and replace it's content with:
output.Write(
"<img src='"+
Page.ClientScript.GetWebResourceUrl(typeof(EmbeddedCtrls.ServerControl1),"EmbeddedCtrls.cartman.jpg")+
"' />"
);
You should be able to see that this is essentially just manually writing out the same code as was in the previous web page, however this time we are inside the custom control and so the reference to it can essentially be 'this.GetType()'.
Now, rebuild the custom control project as before (Build -> Rebuild [project name]) and the updated DLL will be copied to the web project. All we need to do is...
Drop the Custom Control onto a Web Page
So, create a new ASPX in the web project and open it's design view. If the custom web control project compiled correctly, you should have a new toolbox group called '[project name] Components'.
Grab the custom control from within the toolbox group and drop it onto the designer. Save everything and run the page.
You should now have the same output as in the previous blog entry!
Easy, eh?
Two things to Note are...
That dropping the custom control on your web page add a Register directive to the top (just as any ASP.NET toolbox control does)
And that you will have a <span> tag surrounding your <img> tag. To remove this, simply override RenderBeginTag and RenderEndTag, like so:
public override void RenderBeginTag(HtmlTextWriter writer)
{
// removed one line of default code!
}
public override void RenderEndTag(HtmlTextWriter writer)
{
// removed one line of default code!
}
Listing the Known Embedded Resource
If you want to place a stop point in your code and list the embedded resource files that are available to you, paste the following line just before your stop point:
object a = GetType().Assembly.GetManifestResourceNames();
Upon stopping here, the 'a' object will be a list of embedded resources.
As Before...
The entire demo solution can be found here.
Resources:
http://support.microsoft.com/kb/910442
http://www.codeproject.com/KB/aspnet/MyWebResourceProj.aspx
http://aspnet.4guysfromrolla.com/articles/080906-1.aspx
http://aspalliance.com/726
http://msdn.microsoft.com/en-us/library/yhzc935f.aspx
Embedded Resources and having fun with them
Ok, so, having gotten back from 2 months round the world and almost 3 months not coding at all, I'm feeling rusty. Opening Visual Studio came as quite a shock, simply because "All Those Buttons Can't Possibly Do What I Remember!!!"
Anyway, back in the saddle (I hope) and getting some new code under my belt: This time in the form of...
Embedded Resources
What are those? Well, when you drop, say, a GridView control or something, anything from the toolbox onto your page and it already has, lets say, stylesheets, images, javascript etc, that you think would be better provided as separate files... they probably are. How? Well, when building the code as separate files the non-C# files are placed into an...
ASP.NET Server Control project
This project then needs to be referenced by the web project, so that it's DLL is placed in the website's \bin directory, thus placing any (correctly compiling) custom web controls [because that's what this project type is for] into the toolbox (when ASPX/ASCX 's are in design mode.)
So, lets...
Create a Custom Web Control with images and stylesheets in a DLL
So, open Visual Studio and create a new solution (File -> New -> Project -> Visual C#|Basic -> ASP.NET Web Application) This will give us a website as well.
Now, to this solution, add an ASP.NET Server Control project (File -> Add -> New Project -> Visual C#|Basic -> Web -> ASP.NET Server Control) This gives us a project we can create custom web controls in. This is also the project where the embedded files will be placed.
Ok, so the quickstart to adding and using an embedded resource is...
Add an Embedded Resource and call GetWebResourceUrl
First we need something to use. So lets add an image to the control project - not the web project!
In order to make the image embedded select it in the solution explorer and in the properties panel change it's Build Action to Embedded Resource.
Now make the image usable by expanding the control project's Properties item (in the solution explorer) and edit the AssemblyInfo.cs. Add the following lines to the using declarations at the top:
using System.Web.UI;
And the following to them bottom:
[assembly: WebResource("EmbeddedCtrls.cartman.jpg","image/jpg")]
Where the format is:
[assembly: WebResource("[assembly name].[directory names].[filename]","[filetype]")]
For an image called "cartman.jpg" stored in the root directory of the control project.
Bear in mind that the first part is the assembly name (select the project in solution explorer and click properties) and not the namespace. Also, that rather than being a typical absolute path, the path separators are '.' and not '/'.
We now have a project with an image which can be referenced as an embedded resource, both by code within the control project and any project which references it's DLL's, eg: the web project we created at the start.
Important: One major stumbling block I found was that if the above line of code, in the AssemblyInfo.cs, does not get recognised by Visual Studio, it means something has gone when creating the project. Just delete it and create a new "ASP.NET Control Project". It should appear as so:
[assembly: WebResource("EmbeddedCtrls.cartman.jpg","image/gif")]
Or something close to that, assuming you haven't adjusted your editor styling.
Now, to actually use this image somewhere, we need to...
Add a reference to the Control Project and Compile It.
So, in the web project, right click the References and add the control project as a reference. Then, select the control project in the solution explorer and click Build -> Build [project name]
This will compile the control project and copy it's DLL into the web project's \bin directory. Nearly there. Finally, we need to use it by...
Adding a reference in a web page
Either add an ASPX or open the default one. Paste the following line into the <div></div> statement in the HTML of the page:
<img src='<%= Page.ClientScript.GetWebResourceUrl(typeof(EmbeddedCtrls.ServerControl1),"EmbeddedCtrls.cartman.jpg") %>' />
And run the web page. If everything goes to plan, you should have a page with a single img tag which displays your embedded image.
If WebResource.axd is not found, check the highlighting of the assembly: webresource statement as described above. Also, check that the image file Build Action is set to Embedded Resource, in the properties panel. If the image simply fails to appear, just go through and check that you are providing the correct file name, assembly name, etc.
If you get a web resource exception, it's because you are not registering the embedded resources correctly. If you get a webresource.axd?d=... URL but it shows nothing, it's because the image file is not being referenced in your code properly. The GetWebResourceUrl call and the AssemblyInfo.cs entries must match.
Failing the above, ensure that each time you change the contents of the control project that you rebuild the project and refresh the web page. Simply recompiling the web project will not do it (unless you've configured your solution especially - this is not the default in VS.)
Wasn't that fun? You can download the complete solution here. That is also the same download for the next blog entry, where I will deal with referencing the image from within the control project.
Resources:
http://support.microsoft.com/kb/910442
http://www.codeproject.com/KB/aspnet/MyWebResourceProj.aspx
http://aspnet.4guysfromrolla.com/articles/080906-1.aspx
http://aspalliance.com/726
http://msdn.microsoft.com/en-us/library/yhzc935f.aspx