 Monday, July 03, 2006
Visual Studio 2005 is pretty useable on its own. MS has really done a good job and the studio is one of the reasons I stay on the MS platform. I've used Java, Ruby etc and I ended up using eclipse for my IDE and while it does a decent job it also seems to have heavy system requirements and theres the feeling that everything is kind of duct taped together But I digress, the reason for this post is to highlight tools that make Visual Studio even more useable. So Here they are:
1. Cool Commands
Everything except (including?) the kitchen sink
Adds context menu commands like open project folder etc. It just keeps getting bigger and better. You have to try it to get the full effect.
Most Recent version of Cool Commands
2. CopySourceAsHTML
Ultimate Blogger Tool
If you have a blog and who doesn't these days, you should look into this one. It lets you copy souce out of Visual Studio and keep the code formatted as HTML which is very helpful if you are trying to post code to a blog.
CopySourceAsHtml
3. Smart Paster
The easy way to embedded SQL, JavaScript, etc
This one gives you multiple Paste As... options in the context menu. Helpful for pasting inline SQL (oh my), JavaScript, XSLT, etc.
Smart Paster
Additional resource for Visual Studio 2005 Add-Ins
 Friday, June 30, 2006
I was in the process of downloading Cygwin to in order to get the wc command (among others) in order to do some file verification work. I stopped for a second and thought why not use PowerShell? I found a good source for this so here is the command: PS C:\Scripts\AMA> gc test.134.* | Measure-Object Count : 395587 Average : Sum : Maximum : Minimum : Property :
Notice that I'm using gc as an alias for Get-Content. gc, type and cat all work as aliases for Get-Content. test.134.* is just a typical DOS file mask to get all files that start with test.134.
Now let's get a word count: PS C:\Scripts\AMA> gc test.134.23.00 | Measure-Object -word Lines Words Characters Property ----- ----- ---------- -------- 8391 How about a character count: PS C:\Scripts\AMA> gc test.134.23.00 | Measure-Object -char Lines Words Characters Property ----- ----- ---------- -------- 1670774 How about an explicit line count: PS C:\Scripts\AMA> gc test.134.23.00 | Measure-Object -line Lines Words Characters Property ----- ----- ---------- -------- 8391 Keep in mind that Measure-Object can also be used with objects but we'll save that for another post. Also it might be nice to try to create a nice short alias like wc to save me some typing.
 Thursday, June 29, 2006
I discovered content fitlers today in dasBlog. They are little macros that save you some typing. The documentation says the google search macro supports multiple terms but in practice I can only get it to support one term.
Example:
dasblog content filter
should take you to a google search page dasblog content filter as search terms but only dasblog is passed through. What am I doing wrong?
Content Filter Documentation
Update:
$g(dasblog\+content\+filter) doesn't work
$g(dasblog+content+filter) doesn't work
$g(dasblog\scontent\sfilter) no worky
hmmmm...
I've had a problem with Captcha images not showing up in the comments section of this blog. I checked around to see if others have had this problem and apparently they have. The solution? It seems you just have to repeatedly refresh the page you are trying to mak the comment on until it works. I noticed some references to managed hosting and Web Host 4 Life (WH4L) which I am using to host this blog. I will have to keep on eye on this. Not that my comments section was swamped before but I have seen 0 (ZERO!) comments since upgrading to the new version and know I think I know why. This morning at work I kept refreshing the page but didn't get anything. I'm at home this evening and now everything appears A-OK. Hmmm...
This is useful when you want to group records by date but your datetime column has a time value also. This code converts your date to a varchar in a specified format.
--101 is "mm/dd/yyyy"
SELECT CONVERT(varchar,DateField,101)
-- 1 is "mm//dd/yy"
SELECT CONVERT(varchar,DateField,1)
-- 108 is "hh:mm:ss"
SELECT CONVERT(varchar,DateField,1)
-- An example query
Select convert(varchar,CallDateTime ,101), count(*)
FROM [DBName].[dbo].[TableName]
where
CallDateTime between '04/21/2006' and '05/21/2006'
group by convert(varchar,CallDateTime ,101)
 Tuesday, June 27, 2006
I'm developing a set of server controls in ASP.NET 2.0 that use several JavaScript, image and stylesheet (CSS) files. One of the problems with distributing controls is that you usually have to send along these files and tell the end user to install them in the appropriate directory.
Along comes ASP.NET 2.0 and the ability to embed resources right into assemblies and then access these resources via URLs. My first impression is that this seems like a good idea but I'm wary because I've been burned by MS's good ideas in the past. My main concerns are debugging and the effect this embedding has on caching.
Caching
One of the problems with frameworks like ASP.NET is that they sometimes take you too far away from the underlying system. HTTP and HTML is rather straight forward. Embedded resources in ASP.NET call the the resources via URL's and use cache headers to insure the browser caches the content correctly. Also the output cache in the form of disk output cache is automatically used to cache these resources. So these embedded resources should still allow a fairly performant solution. My question is still whether this is as good as a plain static file and the caching IIS can perform on these files. I still need to research this.
Debugging
One of the problems I've run into involves debugging. When a JavaScript file is embedded and it contains an error, Visual Studio.NET 2005 will open a file dialog asking for the location of the file. This is a pain as you lose the precious JavaScript debugging ability that we gained with VS 2005. Is this behavior by design or is there something I'm missing in regards to debugging JavaScript as an embedded resource? My tempo ray solution is to keep the JavaScript files in a static folder while I'm debugging and then switch them to Embedded Resources when I'm deploying the control.
However on the plus side of debugging when you change the JavaScript file it is automatically picked up the next time you do a build. The URL of the embedded resource is changed and thus the browser grabs the newer file. However this has a downside in that you must stop the running project to make changes to the JavaScript file and then rebuild the project to have the changes show up.
I've found that the static file path is much easier for debugging.
An excellent article that I've referenced for this post:
http://www.nikhilk.net/WebResourceAttribute.aspx
 Thursday, June 22, 2006
This JavaScript Code will cycle through all elements on a page and find the next one that should recieve the focus. This worked well in IE6 but the results in FireFox where mixed. I don't have time right now to clean it up but I wanted to post it as this is one of those gems that you know you will want in the future.
Original Source: http://www.codecomments.com/message290822.html
Original Author: Daniel Kirsch
// returns the next focusable object for a given one function getNextFocusElement(elm,restart,dir,_looped) { var allElm = document.getElementsByTagName('*'); var found = false; //(start == true); var allowedElements = 'input,textarea,a,button'; if (!dir) dir = 1; var start = dir > 0 ? 0 : allElm.length-1; var end = dir > 0 ? allElm.length : -1; jslog.info('start: ' + start + ' end: ' + end);
for (var i=start; i!=end; i+=dir) { if (!found) { if (allElm[i] == elm) { if (_looped) return null; found = true; jslog.info('i: ' + i ); continue; } } if (found || (restart && _looped)) { if (allElm[i].focus && allElm[i] != elm) { if (isInList(allElm[i].nodeName.toLowerCase(),allowedElements) && isVisible(allElm[i])) jslog.info('i: ' + i); return allElm[i]; } } } jslog.info('starting next loop...'); return (_looped) ? null : getNextFocusElement(elm,true,dir,true);
}
function isVisible(elm) { if (elm.style.visibility == 'hidden' || elm.style.display == 'none') return false else return elm.parentNode && elm.parentNode.style ? isVisible(elm.parentNode) : true;
}
function isInList(aItem,aList,aSep,aCaseSensitive) { if (typeof aItem == 'undefined' || typeof aList == 'undefined') return false;
// make sure, the element is a string. aItem = String(aItem); if (aCaseSensitive !== true && typeof aItem == 'string') { if (typeof aList == 'string') aList = aList.toLowerCase(); aItem = aItem.toLowerCase(); } if (!aSep) aSep = ','; var lString = aSep+aList+aSep; return (lString.indexOf(aSep+aItem+aSep) > -1);
}
A new contender for the Pragmatic Toolkit is PDFCreator, a SourceForge project which allows you to print to a pdf file much like you would a normal printer. This is useful if you want to need to capture output to a platform inpependant format. For example, you have a web page that shows a reciept from an online purchase. Use PDFCreator to print it to a PDF so you have a nice record of the purchase. This also works for screen prints or any other capture operations where you have an applications that can print (basically any editor program like Word, StarOffice, PaintShop Pro, Photo Shop, etc).
I use it to screen capture protected web pages (on sites where you need to sign in) and send it to someone who doesn't have access to the site, like my wife. It's useful if you are going for a paperless office as you could scan your paper items and then print them to PDF (if your scanning software doesn't support it natively). You can also create product documentation by creating the document in Word and then printing it to PDF to create a manual for distribution to customers.
Here is the link:
http://sourceforge.net/projects/pdfcreator/
 Monday, June 19, 2006
Do you want to limit the imput of a text input (textbox) to valid date characters? Here you go:
// START SCRIPT
function runKeyFilter(e) { if (e.srcElement.readOnly) return;
var key_code = e.keyCode; var oElement = e.srcElement; //alert (key_code);
try { if (!window.event.shiftKey && !window.event.ctrlKey && !window.event.altKey) { if ( (key_code > 47 && key_code < 58) || // numbers on top of keyboard (key_code > 95 && key_code < 106) || // number on numpad at right of keyboard (key_code > 36 && key_code < 41) || // arrow keys (key_code == 35) || // end (key_code == 36) || // home (key_code == 45) || // dashes (key_code == 111) || // forward slash / (key_code == 191) || // forward slash / (key_code == 8) || // backspace (key_code == 46) || // delete (key_code == 9) || // tab (key_code == 16) //SHIFT TAB ) { e.returnValue = true; return; } } } catch (ex) { alert('Error Message: ' + ex.message ); } // if we get here then we didn't have a number e.returnValue = false;
} // end runKeyFilter()
//using the helper functions from prototype.js Event.observe('|CONTROL|', 'keydown', runKeyFilter, false);
// END SCRIPT
 Thursday, June 15, 2006
I've had to go look for this more then once so here it is:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SchedulingAgent
MaxLogSizeKB - This is max size of the log in kilobytes (duh). Make sure you edit this using Decimal values. The default in Windows 2000 is hexadecimal.
Default - Notice I changed the Base to Decimal in order to edit the value correctly:

Changed to reflect a 1 MB (1024KB) size:

You can also change other values like the location of the log (LogPath) but MaxLogSizeKB is the only one I've needed to change on almost every computer.
The task scheduler log file (located by default here at %SystemRoot%\SchedLgU.Txt) keeps track of the start and finish times of all scheduled tasks. We use the task scheduler to run almost all of our services and batch processed simply because it is ubiquitous and reliable. However, the 32k limit is a pain as a busy scheduler will quickly fill this up and the log will begin to overwrite itself. You'll get one of these things: [ ***** Most recent entry is above this line ***** ]
to indicate where the latest entry is. I've found that with our schedule it overwrites itself within an hour or so. Your mileage may vary but with today's huge harddrives it's often beneficial to trade a small amount of space for a large amount of history. Keep in mind thought that this does open with notepad.exe to if it gets too large notepad may choke.
You may also want to check out my article on using the task sceduler as a poor man's Windows Service:
http://www.pragmaticprose.com/PermaLink,guid,5cc361e3-3940-43d9-8591-fb6f5dd00036.aspx
© Copyright 2008 Chris Weber
Theme design by Bryan Bell
newtelligence dasBlog 1.9.6264.0  | Page rendered at Tuesday, August 19, 2008 9:12:13 PM (Central Standard Time, UTC-06:00)
|
On this page....
| | Sun | Mon | Tue | Wed | Thu | Fri | Sat |
|---|
| 25 | 26 | 27 | 28 | 29 | 30 | 1 | | 2 | 3 | 4 | 5 | 6 | 7 | 8 | | 9 | 10 | 11 | 12 | 13 | 14 | 15 | | 16 | 17 | 18 | 19 | 20 | 21 | 22 | | 23 | 24 | 25 | 26 | 27 | 28 | 29 | | 30 | 31 | 1 | 2 | 3 | 4 | 5 |
Search
Navigation
Categories
Blogroll
Sign In
|