tag:blogger.com,1999:blog-53082435382545311112024-03-13T15:38:00.644-07:00Useful HowtoA blog for technical tips and tricks. Created because my other blog isn't the place
for it and I wanted a place to keep and share all those little useful or interesting
things that I discover.Tyghttp://www.blogger.com/profile/13629331592140195985noreply@blogger.comBlogger15125tag:blogger.com,1999:blog-5308243538254531111.post-7850821729028349252009-04-08T07:44:00.000-07:002009-04-08T08:02:06.576-07:00StackOverflow.quick recommendation.<br /><br />check out <A HREF="http://stackoverflow.com">SackOverflow</A>, <A HREF="www.joelonsoftware.com/">Joel Spolsky</A> and <A HREF="http://www.codinghorror.com">Jeff Atwood's</A> collaboration to provide a useable alternative to sites like experts exchange.<br /><br />Its one of the main reasons I don't post here as often as I would like, someone always seems to have confronted and solved the problems that I encounter. <br /><br />That said I am starting an interesting new ASP.NET project at the moment and am looking at implementing continuous integration for it so I may have something to post soon.Tyghttp://www.blogger.com/profile/13629331592140195985noreply@blogger.com0tag:blogger.com,1999:blog-5308243538254531111.post-72295510679865222362008-09-10T08:09:00.000-07:002008-09-11T02:25:26.859-07:00'Forms' read as 'Surveys'.So I had to create a survey for something today (trying to find<br />out what people want to do for our <A HREF="http://www.flatearthsoc.com">clubs</A> week away). <br /><br />I used PollDaddy since I'd heard they were the go-to place for polls on the internet. I like it, the interface is pretty intuitive. As I was clicking around using it I thought funny how google haven't done anything like this yet. surely it'd be a doddle, I mean they do spreadsheets online for gods sake.<br /><br />A quick google (I fear the word search is going to die out from lack of use) and I discovered that google docs snuck in a new feature while I wasn't looking (either that or they are monitoring my brain activity), Forms. Forms are, as you may have guessed from the title of this post,Surveys by another name. Simply go to create a new document in google docs and you will have the option in addition to the existing<br />spreadsheets/presentations etc.<br /><br />Its pretty close to PollDaddys basic model in terms of functionality but lacking some <br />of the more interesting features like branching and modifying the appearance.<br />Still, It does allow embedding as follows:<br /><iframe src="http://spreadsheets.google.com/embeddedform?key=pvZhk9cdJ7m16r5dxom_ocA" width="310" height="681" frameborder="0" marginheight="0" marginwidth="0">Loading...</iframe><br /><br />by the way if the above appears to you in spanish (and you don't speak spanish) apologies the locale on my google account appears to be jumping around from time to time.<br /><br /><br />It looks like an early beta ( particularily the results page), which may be why<br />it's been quietly introduced, I will expect it to transform into a strong competitor to goDaddy in a fairly short timescale though ( it already beats goDaddy on the number of questions for a free service , PollDaddy only allows ten.)Tyghttp://www.blogger.com/profile/13629331592140195985noreply@blogger.com3tag:blogger.com,1999:blog-5308243538254531111.post-10910346414647138632008-06-11T04:20:00.000-07:002008-06-11T04:26:40.968-07:00A Recommendation: Camstudio<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_kKJUAuPBgCo/SE-1r84PosI/AAAAAAAAAso/7GS4YZ6p2DA/s1600-h/camstudio.bmp"><img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_kKJUAuPBgCo/SE-1r84PosI/AAAAAAAAAso/7GS4YZ6p2DA/s200/camstudio.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5210583060571988674" /></a><br />For those who didn't spot it I made the video in my last post using <A HREF="http://camstudio.org/">Camstudio</A>.<br /><br /><br />Camstudio is one of those rare 'It just works' applications. It has nice simple interface ( the red button starts you recording!) a host of practical features , full screen or region capture, and as demonstrated you can have the region follow your mouse around the screen.<br /><br />In the spirit of a picture being worth a thousand words I've used it to capture the setup of new developer workstations and configuration of applications. The configuration of developer workstations is a big one, the enviroment and projects we work on are complex and there are a lot of steps involved. Particularily when six to eight months down the line a new developer joins and no-one has had to set up a workstation from scratch since the first week of the project.<br /><br />And best of all it's free.Tyghttp://www.blogger.com/profile/13629331592140195985noreply@blogger.com0tag:blogger.com,1999:blog-5308243538254531111.post-62019765925988770452008-06-06T04:21:00.000-07:002008-06-06T05:07:33.012-07:00GMail Labs and linksGoogle have just released <a href="http://gmailblog.blogspot.com/2008/06/introducing-gmail-labs.html">Labs</a> for Gmail. A set of optional functionality for it's web mail system. And there is some nice new functionality here : view mail in fixed width font, new signature functionality and custom shortcuts. There are also changes to the appearance of chat and the mail folders to save screen real estate.<br /><br />The one that caught my eye was the <span style="font-weight: bold;">Quick Links</span> functionality. This is a new panel below chat containing links. When I saw it first I jumped to the wrong conclusion. I thought it was going to show a list of the links that I have received in my mail. "Brilliant" I thought, "now I've got a shortcut to those links blocked by our ,somewhat draconian, firewall in work" (games sites and such!). This was functionality I had never thought of before but now <span style="font-style: italic;">needed</span><br /><br />As it turns out I was mistaken (or somewhat so anyways). It lets you bookmark any gmail url in one click. This could be used to bookmark an email as per my initial thoughts.<br /><br />Anyhow still thinking about my inbound links I started playing around with the idea and came up with the following tip.<br /><br />If you search for "http:// or www" you will get results for any email containing a link, you can then bookmark the search and add it to your new "Quick Links" panel for easy access. <br /><br />You can also bookmark any advanced search you use ( such as checking for attachments)<br />which makes it one less click.<br /><br />Oh, and there's also a version of <a href="http://en.wikipedia.org/wiki/Snake_%28video_game%29">Snake</a> in amongst the toys of labs. So far I can't beat 150. <br /><br />p.s. To enable the labs features you need to go to Settings -> Labs in your Gmail Account.<br /><iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.blogger.com/video.g?token=AD6v5dzLMtrARIXTAQgPp-4fXmqhgNwc9fmI5l0CGzB3FU_1Kpbbnd9aa2Gr-rgv1HrB6sLE4-mlVuBZDruydYJU7A' class='b-hbp-video b-uploaded' frameborder='0'></iframe>Tyghttp://www.blogger.com/profile/13629331592140195985noreply@blogger.com0tag:blogger.com,1999:blog-5308243538254531111.post-5438471587178847842008-05-21T06:07:00.000-07:002008-05-21T06:43:07.365-07:00SQL Server Stored Procedure Compare.Simple one that can save a lot of trouble.<br /><br />Heres the scenario:<br /><br />Your application is making heavy use of stored procedures, and your database is hosted on multiple SQL servers say live & development at the simplest. Your latest batch of changes are ready and you're compiled a list of the Stored procedure updates you require along the way... but you're just not entirely sure you've captured all the changes.<br /><br />The solution:<br />Export your SQL procedures from both servers and compare them. To do so make sure the Summary panel is showing ( usually is when you sign on) <br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_kKJUAuPBgCo/SDQmELfoPHI/AAAAAAAAAp8/w7e6idvrGTw/s1600-h/script+stored+procedures.PNG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_kKJUAuPBgCo/SDQmELfoPHI/AAAAAAAAAp8/w7e6idvrGTw/s400/script+stored+procedures.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5202825322766548082" /></a><br /><br />click through to the database you are interested in, then open Programmability\Stored Procedures. you should see a list of your stored procedures<br />(if not check you have view permissions for them) . You can then select them all. Right click and choose "SCRIPT stored procedure as..">"CREATE to"> "> "file" from the context menu. Then simply choose an appropriate file.<br /><br /><br />Once you've done the above for both databases you can simply file compare using one of the many excellent tools out there( I use <A HREF="http://www.scootersoftware.com/">Beyond Compare</A> myself).<br /><br />And while you have them in this format you might as well put them into source control. Maybe even make it part of your build script to install them. but thats another days work<br /><br /><span style="font-style:italic;">This is based on SQL Server 2007, using the SQL Server Management studio </span>.Tyghttp://www.blogger.com/profile/13629331592140195985noreply@blogger.com2tag:blogger.com,1999:blog-5308243538254531111.post-10700174920812548952007-10-16T09:22:00.001-07:002007-10-16T10:04:24.782-07:00Mobile CalendarA nice simple on today.<br /><br />A neat little function of Google Calendar that I only noticed was available here (in Ireland ) recently is the Mobile notifications. Been using for the last couple of <br />weeks and its really made it invaluable, particularily when I don't get to check my<br />Gmail for a prolonged period of time , which does happen occasionally!<br /><br /><br />This is a doddle to set up. Go to Calendar Settings (top left corner of your Google <br />Calendar page) and click the Mobile Setup tab.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_kKJUAuPBgCo/RxTlVmIwBzI/AAAAAAAAAec/_ThGQ79vPAo/s1600-h/calendarConfig.JPG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_kKJUAuPBgCo/RxTlVmIwBzI/AAAAAAAAAec/_ThGQ79vPAo/s320/calendarConfig.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5121970835404359474" /></a><br /><br /><br />Once you enter your phone number and provider (chosen by country) ,you'll be <br />text (texted?) a verification code. Input it in the space provided, then just<br />select what you want notifications for. But choose wisely , if you have a busy calendar<br />you might not want notification of every single new event, acceptance,cancellation and reply!<br /><br /><br />p.s. just discovered <A HREF="http://www.microsoft.com/downloads/details.aspx?familyid=09dfc342-648b-4119-b7eb-783b0f7d1178&displaylang=en">scriptomatic</A> a tool for creating WMI scripts, which comes with a bunch of examples to build on, amongst its tools are the ability to remotely update a windows registry, yipes!Tyghttp://www.blogger.com/profile/13629331592140195985noreply@blogger.com1tag:blogger.com,1999:blog-5308243538254531111.post-27493282659605129352007-09-28T08:16:00.000-07:002007-09-28T08:52:01.909-07:00Version Control Tip<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_kKJUAuPBgCo/Rv0hoWIwBsI/AAAAAAAAAb0/nm2iy5Pqy14/s1600-h/cvsUpdate.bmp"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_kKJUAuPBgCo/Rv0hoWIwBsI/AAAAAAAAAb0/nm2iy5Pqy14/s320/cvsUpdate.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5115281728783517378" /></a><br />Heres a problem I came across recently. The Unit tests for my current project are <A HREF="http://www.codinghorror.com/blog/archives/000818.html">certified</a> working on my desktop. But the build machine runs the test scripts and runs into a bunch of failures. Looking into it its become clear I haven't tagged something with the 'build' tag so the ant scripts aren't checking it out. <br /><br />Now arguably we shouldn't need a build tag ("why would you check in code that you didn't want to build?") but to use one of my favorite pieces of office-speak 'we are where we are'.<br /><br />So how do I track down the rogue untagged files? Do I try to recall which files I changed between builds? Sounds like a bit too time consuming and error prone for my liking.<br /><br />Lest allow cvs do the work instead (in my case <A HREF="http://www.tortoisecvs.org/">tortoise cvs</A> my weapon of choice when dealing with CVS, its windows integrated so I don't have to switch contexts).<br /><br /><br />1. Simply <span style="font-weight:bold;">Checkout</span> a copy of your projects HEAD (or branch) into a sandbox ( or just the relevant package in your code if your codebase is to sprawling as to make checking everything out non-trivial). <br /> <br />2. Then <span style="font-weight:bold;">Update</span> your sandbox specifying the build tag.<br /><br />3. As your cvs client performs the updates you will see a list of files which are being changed. these files will be the ones whose tags are not set to the latest on the HEAD/branch (i.e the ones you're looking for.<br /><br /><span style="font-weight:bold;">p.s.</span> As you can see from the screenshot above, Tortoise has an option to simulate the update, so you can do it from within your workspace without fear of making any changes. I believe command line has the same option but a quick google isn't revealing it to me.Tyghttp://www.blogger.com/profile/13629331592140195985noreply@blogger.com2tag:blogger.com,1999:blog-5308243538254531111.post-29073933578610710632007-07-13T08:08:00.000-07:002007-07-13T08:17:33.544-07:00We all love Ping<A HREF="http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/batch.mspx?mfr=true"?> really useful XP batch scripting resource.</A><br /><br />I used it to put together the following.<br /><PRE>for /L %%V in (1,1,255) do ping -n 1 -a 193.168.1.%%V >> c:\pingedMachines.txt</PRE><br /><br />This pings every device in a given subdomain resolving the names as it does.<br />there are tools out there that will do this for you, but this will work on a vanilla XP machine. You could even parse the output to prettify it but if you need something<br />rough and ready this'll do.<br /><br /><span style="font-style:italic;">really </span> useful if that router isn't at the ip address you thought it was.Tyghttp://www.blogger.com/profile/13629331592140195985noreply@blogger.com0tag:blogger.com,1999:blog-5308243538254531111.post-79042306228272638792007-07-13T07:14:00.000-07:002007-07-13T07:33:40.538-07:00Ant tips<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_kKJUAuPBgCo/RpeJv71CZjI/AAAAAAAAADY/-0AshzqRawI/s1600-h/Prodigy_Ant-01.jpg"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_kKJUAuPBgCo/RpeJv71CZjI/AAAAAAAAADY/-0AshzqRawI/s320/Prodigy_Ant-01.jpg" alt="" id="BLOGGER_PHOTO_ID_5086685760745268786" border="0" /></a><br /><br /><br /><br />Depending on how your ant build is set up you may end up changing some properties more often than others. More often than not properties are fairly static so placing<br />them in a properties file is sufficent for most needs.<br /><br />There are,however situations where you will change other properties more frequently,<br />say for example if you have a flag that controls whether you are performing a full build<br />(pull everything from cvs and start from scratch) or a partial build (where you<br />want to rebuild from source you've already pulled down with some minor change).<br /><br />This is two tips relating to these frequently changing properties.<br /><br />First of all to override a property in your properties file, set it on the command line<br />using the -D parameter.<br /><br />e.g<br /><pre> ant -DfullBuildPropertyName=true TaskName</pre><br /><br />This works because properties , once loaded in ant are immutable, so even if in your script<br />you load a properties file containing 'fullBuildPropertyName=false' it is ignored.<br /><br /><br />Secondly you can prompt the user to input a value when your script starts and set a property<br />based on that using the ant input tag.<br /><br />for example:<br /><pre><br /> <target name="getJavadocInput" unless="generate.javadoc" ><br /> <input<br /> message="Do you want to generate javadoc"<br /> validargs="y,n"<br /> addproperty="input.javadoc"<br /> ><br /> <condition property="generate.javadoc"><br /> <equals arg1="y" arg2="${input.javadoc}"/><br /> </condition><br /> </target><br /></pre><br />In this case the unless attribute in our target will not run if the property is already set<br />(in a property file or from the command line as per the last tip,<br />this means that we can run the script without user input if required (say for example<br />a scheduled build).<br /><br />(incidentally the condition is not necessary, its simply a way of setting an 'empty'<br />property based on the value of the user entered property.)Tyghttp://www.blogger.com/profile/13629331592140195985noreply@blogger.com1tag:blogger.com,1999:blog-5308243538254531111.post-62868877148810787482007-06-29T10:19:00.000-07:002007-06-29T10:21:15.753-07:00Guest Tips 3: SQL Server reindex<pre>And finally..<br /><br />Tip #3<br /><br /><span style="font-style: italic;">This neat litle bit of code rebuilds all indexes on all tables.</span><br /><span style="font-style: italic;">sp_MSforeachtable is a System Stored Procedure (as you can see from the sp_ prefix) that performs an action for every user table in the database.</span><br /><br /><span style="font-style: italic;">exec sp_MSforeachtable 'dbcc dbreindex (''?'')'</span></pre>Tyghttp://www.blogger.com/profile/13629331592140195985noreply@blogger.com0tag:blogger.com,1999:blog-5308243538254531111.post-5730048364403062882007-06-29T10:00:00.000-07:002008-06-13T01:54:38.799-07:00Guest Tips 2:SQL Server row count<pre>Tip #2<br /><br /><span style="font-style: italic;">Here's a little bit of script to count all rows on all tables.</span><br /><span style="font-style: italic;">This uses two very useful features of SQL Server sp_MSforeachtable and temporary tables (designated with a #).</span><br /><span style="font-style: italic;">sp_MSforeachtable is a System Stored Procedure (as you can see from the sp_ prefix) that performs an action for every user table in the database.</span><br /><span style="font-style: italic;">Any table whose name begins with # is local and temporary. This means it is only visible to the current session and will be dropped when the session ends.</span><br /><br /><span style="font-style: italic;">create table #temp_tables</span><br /><span style="font-style: italic;">(</span><br /><span style="font-style: italic;">nr_of_rows numeric (15,4),</span><br /><span style="font-style: italic;">table_name varchar(40),</span><br /><span style="font-style: italic;">)</span><br /><span style="font-style: italic;">go</span><br /><span style="font-style: italic;">exec sp_MSforeachtable 'insert into #temp_tables select count(*) as nr_of_rows, ''?'' as table_name from ?'</span><br /><span style="font-style: italic;">go</span><br /><span style="font-style: italic;">select * from #temp_tables</span><br /><span style="font-style: italic;">drop #temp_tables</span></pre>Tyghttp://www.blogger.com/profile/13629331592140195985noreply@blogger.com4tag:blogger.com,1999:blog-5308243538254531111.post-64357523038196803372007-06-29T09:29:00.000-07:002007-06-29T09:59:36.624-07:00Guest Tips 1: Outlook Extension blocking<pre>A couple of Guest tips. 3 actually, these from a friend of mine, whose<a href="http://salubri.journals.ie/"><br />Blog</a> can be found here.<br /><br />So without further Ado<br />Tip #1<br /><span style="font-style: italic;">Here is a little registry hack to allow .exe and .zip attachments in Outlook </span><br /><span style="font-style: italic;">(if you <em>really</em> have to accept them, which the folks at Microsoft think </span><br /><span style="font-style: italic;">you don't...)</span><br /><br /><span style="font-style: italic;">Please make sure you have backed up your registry first. </span><br /><span style="font-style: italic;">If you don't know how - please stop now! </span><br /><br /><span style="font-style: italic;">Using regedit or regedit32, or some other tool to edit the registry, browse to </span><br /><span style="font-style: italic;">the following key:</span><br /><span style="font-style: italic;">HKEY_CURRENT_USER\Software\Microsoft\Office\10.0\Outlook\Security\</span><br /><br /><span style="font-style: italic;">Create a new String value called Level1remove and set the value = "exe;zip"</span><br /><br /><span style="font-style: italic;">The reason this works:</span><br /><br /><span style="font-style: italic;">Microsoft have built in two levels of attachment "protection" in Outlook. </span><br /><span style="font-style: italic;">Level 1 (these files cannot be received) which consists of a whole load of </span><br /><span style="font-style: italic;">dangerous file types; and Level 2 (these files must be downloaded to disk </span><br /><span style="font-style: italic;">before opening) which has no extensions by default and is user configurable. </span><br /><br /><span style="font-style: italic;">Quite sensibly someone in Microsoft decided that to allow users to remove items</span><br /><span style="font-style: italic;"> from Level 1 would be silly. Obviously users are "clickers" and want to be able</span><br /><span style="font-style: italic;"> to receive everything and click on the virus payload if they so wish!</span><br /><br /><span style="font-style: italic;">So, failsafes were built in:</span><br /><span style="font-style: italic;">Extensions on the Level 1 list will always be considered a threat </span><br /><span style="font-style: italic;">(no matter what action is taken by user or administrator).</span><br /><br /><span style="font-style: italic;">Level 1 cannot be modified through the front end.</span><br /><br /><span style="font-style: italic;">A system administrator can (if (s)he knows how) demote Level 1 "threats" to </span><br /><span style="font-style: italic;">Level 2 using the above registry key. This means that users will then be able to </span><br /><span style="font-style: italic;">receive the attachments but will still not be able to just "click" them open. The</span><br /><span style="font-style: italic;">file must be saved to disk first. Any user who will go to the trouble of saving </span><br /><span style="font-style: italic;">the attachment and opening it deserves what they get if it really is a threat.</span><br /><br /><span style="font-style: italic;">You can include any extension in this string </span><br /><span style="font-style: italic;">(as long as it is on Microsoft's Level 1 restrict list obviously).</span></pre>Tyghttp://www.blogger.com/profile/13629331592140195985noreply@blogger.com4tag:blogger.com,1999:blog-5308243538254531111.post-60030189434497166112007-06-13T16:03:00.001-07:002007-06-13T17:01:56.001-07:00Gmail tipLike most people I subscribe to a bunch of sites which send me email updates fairly regularly. For example I have several google alerts keyword searches and each one produces a separate email everyday. This is what I like to think of as 'background' mail, I don't NEED to check any of it.<br /><br />So when I went on holidays for a couple of weeks recently, I had a lot of this 'background mail' built up of say 100 emails there is more than half of it I'm not interested in trawling through. I just want to mark them as read so only the items I really need to pay attention to are marked unread. "Why don't you just ignore them" you say? , leaving unread emails in my inbox would not sit well with me.<br /><br />But all is not lost with a bit of forethought its easy to quickly mark all those messages as read.<br />Enter Gmail's filter functionality, you've probably seen it , its the filters tab under the settings menu, so without further ado, the details.<br /><br /><span style="font-weight: bold;">Create a new filter.</span><br /><br />In the to: field enter the address from which the emails you wish to ignore orginate from. if you have more than one address you wish to ignore you need to use the OR operator (many useful gmail operators <a href="http://mail.google.com/support/bin/answer.py?answer=7190">here</a>)<br /><br />you can also use partial addresses (if for example you wish to capture all emails from a particular domain just use @domainname)<br /><br />a complete example here:<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_kKJUAuPBgCo/RnB9m0BFjJI/AAAAAAAAAC8/EFmljyvqp8U/s1600-h/filter1.PNG"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_kKJUAuPBgCo/RnB9m0BFjJI/AAAAAAAAAC8/EFmljyvqp8U/s320/filter1.PNG" alt="" id="BLOGGER_PHOTO_ID_5075694885798251666" border="0" /></a><br /><br /><br /><br /><br /><br />you can then hit "test search" to see what messages in your Inbox this pattern matches.<br />once your happy click next for the filter action<br /><br /><span style="font-weight: bold;">Filter Rule</span><br />A simple solution is to choose the filter so these messages skip the Inbox ( you can find them under 'All Mail' or by the label if it is given one, the messages are still marked as unread.<br /><br />This isn't ideal for me; most of the time I do want to see those messages as they arrive in my inbox, so instead of applying this I simply apply a label<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_kKJUAuPBgCo/RnCBcEBFjKI/AAAAAAAAADE/Pr0hlWZQ0sc/s1600-h/filter2.PNG"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://4.bp.blogspot.com/_kKJUAuPBgCo/RnCBcEBFjKI/AAAAAAAAADE/Pr0hlWZQ0sc/s320/filter2.PNG" alt="" id="BLOGGER_PHOTO_ID_5075699099161169058" border="0" /></a> such as 'Background Mail' (see image)<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><span style="font-weight: bold;">Cleaning Your Inbox<br /><br /></span>So now when I return from holidays and I see 100 emails. Instead of manually selecting the individual messages I'm not interested in reading (right now) and choosing the 'mark as read action'<br /><br />I simply click the 'Background Mail' label from the labels list which shows all messages with that label (and only messages with the label).<br /><br />I choose 'ALL' from the Select options .<br />Then in the Action drop down list I click mark as read.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_kKJUAuPBgCo/RnCEAEBFjLI/AAAAAAAAADM/_CDTrq89DuU/s1600-h/filter3.PNG"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://4.bp.blogspot.com/_kKJUAuPBgCo/RnCEAEBFjLI/AAAAAAAAADM/_CDTrq89DuU/s320/filter3.PNG" alt="" id="BLOGGER_PHOTO_ID_5075701916659715250" border="0" /></a><br /><br /><br /><br />now when I return to my inbox I can see exactly what needs reading!<br /><br /><br /><span style="font-weight: bold;"></span>Tyghttp://www.blogger.com/profile/13629331592140195985noreply@blogger.com0tag:blogger.com,1999:blog-5308243538254531111.post-80930717465638772742007-05-25T07:17:00.000-07:002007-05-25T07:46:04.790-07:00Less is moreVery often when working on a project I deal with extremely large application log files which<br />poor old notepad.exe, or even trusty <a href="http://www.ultraedit.com/">Ultraedit</a><br />just can't deal with.<br /><br />Enter the <a href="http://unxutils.sourceforge.net/">windows port</a> of the unix tool less,<br />which easily opens even the largest logfiles. The problem is<br />that running it in a command window makes copying text difficult, selecting a page at<br />a time and pasting it all back together into a file.<br /><br />Which brings me to my useful tip. To copy any length of text from less to a file try the following.<br /><br />navigate to the beginning (or end) of the piece of text you wish to copy, type<br /><span style="font-family:courier new;">m</span><br />(for mark) and enter a marker letter of your choice at the prompt<br /><br />navigate to the other end of the piece of text you wish to copy and press<br /><span style="font-family:courier new;">|</span><br />(thats the pipe character, is the shifted value of the key '\' )<br />enter your marker letter at the prompt.<br />At the exclamation prompt enter<br /><br /><span style="font-family:courier new;">less -oC:\file.txt</span><br /><br />where <span style="font-family:courier new;">c:\file.txt</span> is the name of the file you wish to write the data to.<br /><br />This will open a new less session on your new file , you can hit <span style="font-family:courier new;">Q</span> to escape this<br />if you so wish.<br /><br />Voila, text copied from less under windows.<br /><br />p.s another quick tip , to make less behave like tail, simply press <span style="font-family: courier new;">F while viewing the file.</span>Tyghttp://www.blogger.com/profile/13629331592140195985noreply@blogger.com0tag:blogger.com,1999:blog-5308243538254531111.post-31140880490938167882007-05-24T07:12:00.000-07:002007-05-24T07:44:14.529-07:00Froogle FriendsFirst post I'm going to go (relatively) old school with a simple<br /> windows batch file. This tip is actually the one that inspired<br />me to create this blog I had actually forgotten about it<br />(my friends don't seem to have much interest in froogle!) but<br />I rediscovered it today and decided to share it here so others<br />can benefit (or at least I'm unlikely to forget it again!)<br /><br />Everybody knows <a href="http://froogle.google.com">Froogle</a> right?<br /><br />good. Ok having had a browse and put some items I'm interested<br />in on my wishlist, I was curious to see if anyone else I knew<br />had done the same thing and Google being the forward thinking<br />people they are had provided the facility where you can put in<br />a friends email and see their wishlist (or a message saying they<br /> don't have one)<br /><br />Well being blessed with a large number of friends (or at least<br />other peoples email addresses) that looked like a lot of typing<br />and clicking that I would have to repeat to see if people had<br />updated or, indeed, created wishlists.<br /><br />So I set about creating a batch file that would do the job for<br />me and here it is.<br /><br />froogle.bat<br /><br />FOR /F %%A IN (email.txt) DO (c:\progra~1\Mozill~1\firefox.exe<br />http://froogle.google.com/shoppinglist?action=FindOthersWishList^&email=%%A^&Find=Find)<br /><br />(all the above is on one line!)<br /><br />Notes:<br /><br /><ol><li>email.txt (in same directory as batch file) contains a list of email addresses on separate lines.</li><li>I have firefox in there but you can use xp ( firefox will by default open these all in tabs, internet explorer of course will open separate windows, and interestingly will wait for you to close one before opening the next).</li><li>this works on XP , changes may be required for older/newer versions of windows.</li></ol> feel free to suggest a better way of doing this, I suspect yahoo pipes would be feasible and much cooler solution.Tyghttp://www.blogger.com/profile/13629331592140195985noreply@blogger.com0