<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Beakersoft Blog</title>
	
	<link>http://www.beakersoft.co.uk</link>
	<description>Blog about various IT related issues I encounter in the world of Newspapers!</description>
	<lastBuildDate>Wed, 02 Nov 2011 00:15:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<image><link>http://beakersoft.blogspot.com</link><url>http://www.feedburner.com/fb/images/pub/fb_pwrd.gif</url><title>Powered By Feedburner</title></image>
	
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/BeakersoftBlog" /><feedburner:info uri="beakersoftblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://www.beakersoft.co.uk/?pushpress=hub" /><thespringbox:skin xmlns:thespringbox="http://www.thespringbox.com/dtds/thespringbox-1.0.dtd">http://feeds.feedburner.com/BeakersoftBlog?format=skin</thespringbox:skin><feedburner:emailServiceId>BeakersoftBlog</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2FBeakersoftBlog" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FBeakersoftBlog" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2FBeakersoftBlog" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/BeakersoftBlog" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FBeakersoftBlog" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FBeakersoftBlog" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FBeakersoftBlog" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><feedburner:feedFlare href="http://www.live.com/?add=http%3A%2F%2Ffeeds.feedburner.com%2FBeakersoftBlog" src="http://tkfiles.storage.msn.com/x1piYkpqHC_35nIp1gLE68-wvzLZO8iXl_JMledmJQXP-XTBOLfmQv4zhj4MhcWEJh_GtoBIiAl1Mjh-ndp9k47If7hTaFno0mxW9_i3p_5qQw">Subscribe with Live.com</feedburner:feedFlare><feedburner:feedFlare href="http://mix.excite.eu/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FBeakersoftBlog" src="http://image.excite.co.uk/mix/addtomix.gif">Subscribe with Excite MIX</feedburner:feedFlare><item>
		<title>Transmission Watch Folders, Samba and Windows</title>
		<link>http://feedproxy.google.com/~r/BeakersoftBlog/~3/59HnOPP2XaE/</link>
		<comments>http://www.beakersoft.co.uk/2011/11/02/transmission-watch-folders-samba-and-windows/#comments</comments>
		<pubDate>Wed, 02 Nov 2011 00:15:13 +0000</pubDate>
		<dc:creator>beakersoft</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[transmission]]></category>

		<guid isPermaLink="false">http://www.beakersoft.co.uk/?p=492</guid>
		<description><![CDATA[Just a quick post about an issue i&#8217;ve been having for a while that i&#8217;ve just managed to solve. A while ago I re-built my home nas, using Ubuntu Server instead of Freenas. I installed Transmission for downloading torrents, but could never get the watch folder functionality working correctly. I would setup the folder, tell [...]]]></description>
			<content:encoded><![CDATA[<p>Just a quick post about an issue i&#8217;ve been having for a while that i&#8217;ve just managed to solve. A while ago I re-built my home nas, using Ubuntu Server instead of Freenas. I installed Transmission for downloading torrents, but could never get the watch folder functionality working correctly. I would setup the folder, tell the transmission config about it but everytime i dropped a file in the folder, it would just get ignored.</p>
<p>Well, tonight I have just managed to get it working. It turned out it was a permissions issue. When I dropped a .torrent file into the folder from my Windows 7 machine (shared out via samba), and looked at the permissions of the file (via an ls -al command from putty) the owner and group was set to nobody and nobody. This was even after I had set the owner/group on the folder with the -R (re-curse) option. If I set the ower/group manually from putty to the &#8216;debian-transmission&#8217; user, transmission then picked up the file as expected and started the download.</p>
<p>So, I figured it must have been an issue with me dropping in the files from my Windows 7 machine via a Samba share. I had a look through the Samba docs, and came across the <em>inherit owner</em> option. By default this is no, so I amended my smb.conf file and placed <em>inherit owner = yes</em> in the <em>global </em> section, then restarted the smb service.</p>
<p>After the restart, I dropped another .torrent file in via my Windows machine and checked its permissions again. This time the owner was set to &#8216;debian-transmission&#8217;, and after a few seconds Transmission kicked in and started to download the file. Problem solved! Now I can look at using <a href="http://www.http://flexget.com/">FlexGet </a>to look at auto downloading torrents via an rss feed.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/BeakersoftBlog?a=59HnOPP2XaE:DkSG704W5DA:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/BeakersoftBlog?i=59HnOPP2XaE:DkSG704W5DA:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BeakersoftBlog?a=59HnOPP2XaE:DkSG704W5DA:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/BeakersoftBlog?i=59HnOPP2XaE:DkSG704W5DA:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BeakersoftBlog?a=59HnOPP2XaE:DkSG704W5DA:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/BeakersoftBlog?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BeakersoftBlog?a=59HnOPP2XaE:DkSG704W5DA:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/BeakersoftBlog?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BeakersoftBlog?a=59HnOPP2XaE:DkSG704W5DA:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/BeakersoftBlog?i=59HnOPP2XaE:DkSG704W5DA:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/BeakersoftBlog/~4/59HnOPP2XaE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.beakersoft.co.uk/2011/11/02/transmission-watch-folders-samba-and-windows/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.beakersoft.co.uk/2011/11/02/transmission-watch-folders-samba-and-windows/</feedburner:origLink></item>
		<item>
		<title>C# ASP.Net Web Service, JSON and Jqgrid</title>
		<link>http://feedproxy.google.com/~r/BeakersoftBlog/~3/iZhslLcwo1s/</link>
		<comments>http://www.beakersoft.co.uk/2011/07/29/c-asp-net-web-service-json-and-jqgrid/#comments</comments>
		<pubDate>Fri, 29 Jul 2011 20:32:04 +0000</pubDate>
		<dc:creator>beakersoft</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[jqgrid]]></category>
		<category><![CDATA[JSON]]></category>

		<guid isPermaLink="false">http://www.beakersoft.co.uk/?p=412</guid>
		<description><![CDATA[This week i have been writing a web service in C# that i wanted to use to send data back to a jqrid, and as its been a bit of an uphill battle i thought i&#8217;d share what i had found out. What you Need First head over to the jqgid page, and download the [...]]]></description>
			<content:encoded><![CDATA[<p>This week i have been writing a web service in C# that i wanted to use to send data back to a jqrid, and as its been a bit of an uphill battle i thought i&#8217;d share what i had found out.</p>
<p><strong>What you Need</strong></p>
<p>First head over to the<a href="http://www.trirand.com/blog/?page_id=6"> jqgid page</a>, and download the package.Include all of the base options, and the UI addons to take advantage of the UI theme roller. I would also advise installing the Firebug extension into Firefox, as this can really help you see the interaction between the grid and the web service. Once you have done this, fire up Visual Studio, create a new web project and add a web service (asmx) file, and a web form to your project.</p>
<p><strong>The Web Service</strong></p>
<p>This is where is starts to get interesting, trying to get your web service to return JSON instead of XML. I assume its by design, but even when you change the response format to json as below -</p>
<pre class="brush: csharp; title: ; notranslate">ScriptMethod(ResponseFormat = ResponseFormat.Json)</pre>
<p>When you call the web service, it still wraps it in xml tags (for instance, it you return a sting then the response is in a &lt;string&gt; tag), so we need to use a different approach.</p>
<p>Instead of returning a type from your web service, we are going to have no return type, and use the Response.Write functionality to just send text (our json) back to the browser, so in your asmx file you will have a public facing web service that looks something like this -</p>
<pre class="brush: csharp; title: ; notranslate">
[WebMethod]
[ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]
public void GetJSONData(int IDNo){

        string JSONToReturn = GetData(intID);
        Response.Write(JSONToReturn);
        Response.End;

}</pre>
<p>Now we just need to create our function to give us the data back, formated as a JSON string, that we can feed back into our jQgrid. Before you start creating your JSON, its a good idea to have a validitor to hand, that way you should be able to catch any issues before you try and create your grid. I used one at <a href="http://jsonlint.com/">http://jsonlint.com/</a> but there are quite a few out there.</p>
<p>Next, we are going to create a very simple class for holding our data in ready to parse into JSON. My example is based on the information you want being in a SQL DB but it could be comming from anywhere. Anyway, here&#8217;s the class -</p>
<pre class="brush: csharp; title: ; notranslate">
private class MyJSONInfo
{
public MyJSONInfo()
{
        int ID = 0;
        string UserName = string.Empty;
        string EmailAddress = string.Empty;
        string WelcomeMessage = string.Empty;
}

        public int ID { get; set; }
        public string UserName { get; set; }
        public string EmailAddress { get; set; }
        public string WelcomeMessage { get; set; }
}
</pre>
<p>Now we have a class to hold our data in, we need to popluate it. All we are going to do now is run an sql command to get our data, then put that data into our MyJSONInfo class</p>
<pre class="brush: csharp; title: ; notranslate">
SqlConnection myConnection = new SqlConnection(&quot;[YOUR DB CONNECTION]&quot;);
try
{
myConnection.Open();
}
catch (Exception e)
{
Context.Response.Write(&quot;Problem opening DB - &quot; + e.Message);
Context.Response.End();
}
SqlCommand myEntriesCmd = new SqlCommand(&quot;SELECT * FROM TABLE1&quot;, myConnection);
SqlDataReader myEntriesData = myEntriesCmd .ExecuteReader();
int IDCounter = 1;
var EntriesList = new Collection();

//got some data back
if (myEntriesData.HasRows)
{
while (myEntriesData.Read())
{
EntriesList.Add(new HubInfo {ID = IDCounter, UserName = myEntriesData[&quot;UserName&quot;].ToString().Trim(),
        EmailAddress = myEntriesData[&quot;EmailAddress&quot;].ToString().Trim(),
        WelcomeMessage = myEntriesData[&quot;WelcomeMessage &quot;].ToString().Trim()});
        IDCounter++;
}
}
</pre>
<p>Almost there now, all we need is information about how rows we are returning, what page number we want to show and how many pages of information we are dealing with. These are all used by the jQgrid to aid its navigation, you will have to work these number out correctly based on your setup. Here we are just going to use dummy numbers.</p>
<p>So, we are going to create an object with these values, along with our MyJSONInfo ready to parse into JSON -</p>
<pre class="brush: csharp; title: ; notranslate">
var JsonToReturn = new
{
        total = 5,           //total number of pages in our grid
        page = 1             //page to show in the grid,
        records = IDCounter, //how many records we are dealing with
        rows = EntriesList,  //our actual data
};
</pre>
<p>Now all that is left to do here is parse our variable into a JSON string. To do that we are going to use the Javascript Serilizer that comes with dotnet4, so make sure you include this at the top of your code -</p>
<pre class="brush: csharp; title: ; notranslate">
using System.Web.Script.Serialization;
</pre>
<p>Once we have that in place, we are ready to create our JSON string. Here we do just that, and then flush it out to the browser -</p>
<pre class="brush: csharp; title: ; notranslate">
//now serialize the list to json
var jsonSerializer = new JavaScriptSerializer();
string JsonString = jsonSerializer.Serialize(JsonToReturn);

//return the json
Context.Response.Write(JsonString);
Context.Response.End();
</pre>
<p>At this point when you connect to you invoke your web service you should get JSON formated data back. As I mentioned before i would run this through a validitor before you go any further, as you will probably find you have to clean up some of the text to make it work.</p>
<p><strong>The jQgrid Page</strong></p>
<p>Create a new web page in your project, and add the required javascript and css to your page header so you can use the jQgid, it is important to put them in this order, i&#8217;m not sure why but i have had issues in the past with the order of the scripts -</p>
<pre class="brush: xml; title: ; notranslate">
&lt;script type=&quot;text/javascript&quot; src=&quot;Scripts/jquery-1.5.1.min.js&quot;&gt;&lt;/script&gt;&lt;script type=&quot;text/javascript&quot; src=&quot;Scripts/grid.locale-en.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;Scripts/jquery-ui-1.8.14.custom.min.js&quot;&gt;&lt;/script&gt;&lt;script type=&quot;text/javascript&quot; src=&quot;Scripts/jquery.jqGrid.min.js&quot;&gt;&lt;/script&gt;
</pre>
<p>Now you have these, we can create the jQgrid on the page.</p>
<pre class="brush: jscript; title: ; notranslate">
&lt;script type=&quot;text/javascript&quot;&gt;
jQuery(document).ready(function () {
        jQuery(&quot;#datalist&quot;).jqGrid({
        url: 'HubReader.asmx/GetJSONData
        datatype: 'json',
        contentType: 'application/json; charset=utf-8',
        type: 'POST',
        colNames: ['User', 'Email', 'Message'],
        colModel: [
        { name: 'UserName', index: 'UserName', width: 13, align: &quot;left&quot; },
        { name: 'EmailAddress', index: 'EmailAddress', width: 8, align: &quot;left&quot; },
        { name: 'Started', index: 'WelcomeMessage', width: 11, align: &quot;left&quot; }
        ],
        //Map the reader as we are using standard JSON format, not the standard jqgrid format
        jsonReader: {
        page: &quot;page&quot;,
        total: &quot;total&quot;,
        records: &quot;records&quot;,
        root: &quot;rows&quot;,
        repeatitems: false,
        id: &quot;ID&quot;
        },
        pager: '#pager1',
        altRows: true,
        altclass:'myAltRowClass',
        rowNum: 15,
        rowList: [15, 30, 45],
        height: 500,
        width: 1050,
        caption: &quot;Search Results&quot;,
        scrollOffset:2,
        viewrecords: true,
        sortorder: &quot;desc&quot;,
        });
        jQuery(&quot;#datalist&quot;).jqGrid('navGrid', '#pager1', { edit: false, add: false, del: false,search: false });
});
&lt;/script&gt;
</pre>
<p>If you have used jQgrid before, most of this should be familiar to you, if not then you should probably have a quick read up on their site about how the grids are created and populated. Once you have built the grid, dont forget to create the elements the grid and pager will live in &#8211; </p>
<pre class="brush: xml; title: ; notranslate">
        &lt;table id=&quot;datalist&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot;&gt;&lt;/table&gt;
        &lt;div id=&quot;pager1&quot;&gt;&lt;/div&gt;
</pre>
<p>Whats happening in the code, well most of the javascript for building the grid is pretty standard, the only bit you might have not seen before is the <em>jsonReader</em> section. As we are not sending the json back in the default format jQgrid understands, we need to tell the grid a little bit about what elements contain what data. This needs to match the info comming out of your JSON. So for example if you have called the section containing the total number of pages <em>TotPages </em>(instead of <em>total</em> like i have) you will have to change the line to -</p>
<pre class="brush: jscript; title: ; notranslate">
        total: &quot;TotPages&quot;,
</pre>
<p>more info about the jQgrid data format options can be found at <a href="http://www.trirand.com/jqgridwiki/doku.php?id=wiki:retrieving_data">http://www.trirand.com/jqgridwiki/doku.php?id=wiki:retrieving_data</a></p>
<p>Also make sure you change your <em>url </em>to point to your web service asmx file.</p>
<p>Hopefully your should now be able to get a jQgrid populating with data from an asmx web service. If your are struggling Firebug is probably your best bet, you can tell right away by switching to its <em>console</em> tag what problems you are having, it will even show you the data your service is sending back. </p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/BeakersoftBlog?a=iZhslLcwo1s:Xi4HYTq288w:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/BeakersoftBlog?i=iZhslLcwo1s:Xi4HYTq288w:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BeakersoftBlog?a=iZhslLcwo1s:Xi4HYTq288w:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/BeakersoftBlog?i=iZhslLcwo1s:Xi4HYTq288w:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BeakersoftBlog?a=iZhslLcwo1s:Xi4HYTq288w:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/BeakersoftBlog?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BeakersoftBlog?a=iZhslLcwo1s:Xi4HYTq288w:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/BeakersoftBlog?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BeakersoftBlog?a=iZhslLcwo1s:Xi4HYTq288w:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/BeakersoftBlog?i=iZhslLcwo1s:Xi4HYTq288w:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/BeakersoftBlog/~4/iZhslLcwo1s" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.beakersoft.co.uk/2011/07/29/c-asp-net-web-service-json-and-jqgrid/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.beakersoft.co.uk/2011/07/29/c-asp-net-web-service-json-and-jqgrid/</feedburner:origLink></item>
		<item>
		<title>New software for file housekeeping</title>
		<link>http://feedproxy.google.com/~r/BeakersoftBlog/~3/BtL3xp6tYT0/</link>
		<comments>http://www.beakersoft.co.uk/2011/06/30/new-software-for-file-housekeeping/#comments</comments>
		<pubDate>Thu, 30 Jun 2011 18:32:22 +0000</pubDate>
		<dc:creator>beakersoft</dc:creator>
				<category><![CDATA[we3soft]]></category>

		<guid isPermaLink="false">http://www.beakersoft.co.uk/?p=420</guid>
		<description><![CDATA[Over at we3soft.com we have recently released some new software, called SpringClean. It&#8217;s a file housekeeping application, with many ways to archive/delete your old files, and advanced features such as searching using a regular expression search, and the ability to update a database with the results of the job Head over to we3soft.com/springclean now to [...]]]></description>
			<content:encoded><![CDATA[<p>Over at <a href="http://www.we3soft.com">we3soft.com</a> we have recently released some new software, called SpringClean.</p>
<p>It&#8217;s a file housekeeping application, with many ways to archive/delete your old files, and advanced features such as searching using a regular expression search, and the ability to update a database with the results of the job</p>
<p>Head over to <a href="http://www.we3soft.com/springclean">we3soft.com/springclean</a> now to take a look at it. Its only £5 sterling to register its full functionality.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/BeakersoftBlog?a=BtL3xp6tYT0:_9zrL1u9GDI:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/BeakersoftBlog?i=BtL3xp6tYT0:_9zrL1u9GDI:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BeakersoftBlog?a=BtL3xp6tYT0:_9zrL1u9GDI:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/BeakersoftBlog?i=BtL3xp6tYT0:_9zrL1u9GDI:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BeakersoftBlog?a=BtL3xp6tYT0:_9zrL1u9GDI:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/BeakersoftBlog?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BeakersoftBlog?a=BtL3xp6tYT0:_9zrL1u9GDI:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/BeakersoftBlog?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BeakersoftBlog?a=BtL3xp6tYT0:_9zrL1u9GDI:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/BeakersoftBlog?i=BtL3xp6tYT0:_9zrL1u9GDI:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/BeakersoftBlog/~4/BtL3xp6tYT0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.beakersoft.co.uk/2011/06/30/new-software-for-file-housekeeping/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.beakersoft.co.uk/2011/06/30/new-software-for-file-housekeeping/</feedburner:origLink></item>
		<item>
		<title>Handling Deleted Users Who own SQL Reporting Subscription</title>
		<link>http://feedproxy.google.com/~r/BeakersoftBlog/~3/_uG_rGQQqFQ/</link>
		<comments>http://www.beakersoft.co.uk/2011/06/01/handling-deleted-users-who-own-sql-reporting-subscription/#comments</comments>
		<pubDate>Wed, 01 Jun 2011 16:47:12 +0000</pubDate>
		<dc:creator>beakersoft</dc:creator>
				<category><![CDATA[SQL Reporting Services]]></category>

		<guid isPermaLink="false">http://www.beakersoft.co.uk/?p=408</guid>
		<description><![CDATA[I&#8217;ve had an issue this week with some SQL reporting services subscriptions. A user contacted me saying her subscription reports were all failing. At first I assumed there was a problem with the user the report was running as, but it turned out to be something else. When I tried to change and save the [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve had an issue this week with some SQL reporting services subscriptions. A user contacted me saying her subscription reports were all failing. At first I assumed there was a problem with the user the report was running as, but it turned out to be something else.</p>
<p>When I tried to change and save the settings on one of the reports, I was presented with this error:</p>
<p><strong>The user or group name &#8216;Dom\User.Name&#8217; is not recognized. (rsUnknownUserName)</strong></p>
<p>Now, it turned out that the user that had originally create this report subscription had recently been deleted out of the active directory, and there was a lot of reports that this user had created. I had a poke around on the web interface and in the management tools, but i couldn&#8217;t see anywhere to change the owner of the subscription.</p>
<p>So, as i&#8217;ve had to do in the past I started having a look in the reporting service database. I looked first in the Subscriptions table, and there was an OwnerID field, when I linked this table back to the users table I found it was indeed linked to the old user that had been removed. So, I found a valid user in the table, and ran this SQL to update the Subscriptions table pointing to this user:</p>
<p><em>UPDATE dbo.Subscriptions SET OwnerID = &#8216;xxx-xxx-xxx-xxx-New-User&#8217; WHERE OwnerID = &#8216;xxx-xxx-xxx-xxx-Old-User&#8217;</em></p>
<p>When I opened up the subscription again, the owner was now valid, and I could save the report without the error message. I&#8217;m glad i did&#8217;nt have to go back to the user and tell them they needed to re-create all the subscriptions!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/BeakersoftBlog?a=_uG_rGQQqFQ:SSGGHXZImIM:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/BeakersoftBlog?i=_uG_rGQQqFQ:SSGGHXZImIM:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BeakersoftBlog?a=_uG_rGQQqFQ:SSGGHXZImIM:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/BeakersoftBlog?i=_uG_rGQQqFQ:SSGGHXZImIM:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BeakersoftBlog?a=_uG_rGQQqFQ:SSGGHXZImIM:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/BeakersoftBlog?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BeakersoftBlog?a=_uG_rGQQqFQ:SSGGHXZImIM:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/BeakersoftBlog?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BeakersoftBlog?a=_uG_rGQQqFQ:SSGGHXZImIM:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/BeakersoftBlog?i=_uG_rGQQqFQ:SSGGHXZImIM:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/BeakersoftBlog/~4/_uG_rGQQqFQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.beakersoft.co.uk/2011/06/01/handling-deleted-users-who-own-sql-reporting-subscription/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.beakersoft.co.uk/2011/06/01/handling-deleted-users-who-own-sql-reporting-subscription/</feedburner:origLink></item>
		<item>
		<title>Incremental Machine Naming In MDT</title>
		<link>http://feedproxy.google.com/~r/BeakersoftBlog/~3/hRa_lfke6EA/</link>
		<comments>http://www.beakersoft.co.uk/2010/03/11/incremental-machine-naming-in-mdt/#comments</comments>
		<pubDate>Thu, 11 Mar 2010 19:38:46 +0000</pubDate>
		<dc:creator>beakersoft</dc:creator>
				<category><![CDATA[MDT]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.beakersoft.co.uk/?p=325</guid>
		<description><![CDATA[I have recently done some work with the Microsoft Deployment Toolkit, the successor to RIS and kind of extension to WDS. I used RIS quite extensively in the past, and while i did have it working quite well, it was a nightmare to actually setup (half the time it was easer to build 70 machines [...]]]></description>
			<content:encoded><![CDATA[<p>I have recently done some work with the <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=3BD8561F-77AC-4400-A0C1-FE871C461A89&amp;displaylang=en">Microsoft Deployment Toolkit</a>, the successor to <a href="http://en.wikipedia.org/wiki/Remote_Installation_Services">RIS </a>and kind of extension to <a href="http://en.wikipedia.org/wiki/Windows_Deployment_Services">WDS</a>. I used RIS quite extensively in the past, and while i did have it working quite well, it was a nightmare to actually setup (half the time it was easer to build 70 machines than to get RIS working!).  WDS and the MDT change all that.</p>
<p>It is now easy to build, and customise all parts of your OS deployment using these technology&#8217;s, but as I started using it there was one thing missing from it that old style RIS used to have.  Incremental naming of machines as you build them.</p>
<p>In RIS is was a simple matter of putting a variable into it&#8217;s settings, and it worked no problem, now however even though there are hundreds of new options naming in this manor is not one of them. I did a search around and come up with <a href="http://blogs.technet.com/mniehaus/archive/2009/12/06/ris-style-naming-with-mdt-2010-use-a-web-service.aspx">this article</a> at Michael Niehause&#8217;s blog.</p>
<p>I have re-written the code from this posting in vb.net, i also had to make a couple of changes to my rules file to get it to work. The only differences between my code and Michael&#8217;s is mine is in vb.net and his is c# and mine does not add the machine account with a description to the active directory, I just let the install process do this for me.</p>
<h3>The Code</h3>
<p>Fire up a new web service project, and add this function to it:</p>
<pre class="brush: vb; title: ; notranslate">
WebMethod(Description:=&quot;Returns a new Computer Name to use.&quot; &amp; _
&quot; Inputs dns domain, a prefix and OU&quot;)&gt; _
Public Function GetNewName(ByVal DnsDomain As String, _
ByVal NamePrefix As String) As String

'build the search, based on the passed domain, then the name prefix
Dim adRoot As New DirectoryEntry(&quot;LDAP://&quot; &amp; DnsDomain)
Dim dirSearch As New DirectorySearcher(adRoot, &quot;(name=&quot; &amp; NamePrefix &amp; &quot;*)&quot;)
Dim existingNames As New Dictionary(Of String, Guid)()

'loop through the results
For Each result As SearchResult In dirSearch.FindAll()

'get the name, and create a guid holder
Dim strCurrName As String = result.Properties(&quot;name&quot;)(0).ToString.ToUpper
Dim netbootGuid As New Guid

'if we have a guid use that with this name
If result.Properties(&quot;netbootGuid&quot;).Count &gt; 0 Then
netbootGuid = New Guid(DirectCast(result.Properties(&quot;netbootGuid&quot;)(0), Byte()))
End If

'add details to the dictonary, if they are not already there
If Not existingNames.ContainsKey(strCurrName) Then
existingNames.Add(strCurrName, netbootGuid)
End If

Next

'now try and get the next name in sequence
Dim strNextName As String = Nothing

'loop through all the avalabe machine numbers up to max of 999
For i As Int32 = 1 To 999

Dim strNameTest As String = NamePrefix &amp; i.ToString(&quot;000&quot;)

'is this name in the list, if not we have our name
If Not existingNames.ContainsKey(strNameTest) Then
strNextName = strNameTest
Exit For
End If
Next

'return our new name
Return strNextName

End Function
</pre>
<h3>What its doing</h3>
<p>All the code is doing is querying your active directory for machines named like you specify, that end with a unique 3 char number (from 001 to 999). Once it finds one it returns the new name back to you. The good thing about this code is it will re-use any machine you have retired, so no numbers go to waste.</p>
<p>You pass the function the dns name of your active directory and the first part of the computer name (e.g. CA-HR-), and that&#8217;s it.</p>
<h3>Calling the naming function from MDT</h3>
<p>Once you have done your web service and it is callable from your web server, you need to alter your MDT rules file to call it and get a new name. This is all the sections you will have to fill in to get it to work, you will probaly have a lot more in your production system:</p>
<pre class="vb.net:nocontrols:nogutter">[Settings]
Priority=Default,GetNewName
Properties=DnsDomain, NamePrefix

[Default]
SkipComputerName=Yes
DnsDomain=mysite.comp.co.uk
NamePrefix=CA-HR-

[GetNewName]
WebService=http://your-web-server/WDSExtras/WDSNameExtras.asmx/GetNewName
Parameters=DnsDomain, NamePrefix
OSDComputerName=string
</pre>
<p>All that is happening here is you are telling MDT to run an extra section called <em>GetNewName</em>, and that section is going to call your web service with 2 parameters (created in the default section) and then set <em>OSDComputerName</em> (the key that holds the machine name) to the returning string.</p>
<h3>Troubleshooting</h3>
<p>Odds are you wont get this right first time, but MDT writes does quite a good job of logging what it has done. On a machine your have deployed if you look in C:\MININT\SMSOSD\OSDLOGS you should be able to find the section that is trying to call the web service, and see what it did, and any errors if they occurred</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/BeakersoftBlog?a=hRa_lfke6EA:7yypMNs9NX4:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/BeakersoftBlog?i=hRa_lfke6EA:7yypMNs9NX4:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BeakersoftBlog?a=hRa_lfke6EA:7yypMNs9NX4:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/BeakersoftBlog?i=hRa_lfke6EA:7yypMNs9NX4:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BeakersoftBlog?a=hRa_lfke6EA:7yypMNs9NX4:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/BeakersoftBlog?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BeakersoftBlog?a=hRa_lfke6EA:7yypMNs9NX4:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/BeakersoftBlog?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BeakersoftBlog?a=hRa_lfke6EA:7yypMNs9NX4:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/BeakersoftBlog?i=hRa_lfke6EA:7yypMNs9NX4:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/BeakersoftBlog/~4/hRa_lfke6EA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.beakersoft.co.uk/2010/03/11/incremental-machine-naming-in-mdt/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<feedburner:origLink>http://www.beakersoft.co.uk/2010/03/11/incremental-machine-naming-in-mdt/</feedburner:origLink></item>
		<item>
		<title>Folder2Page Plugin</title>
		<link>http://feedproxy.google.com/~r/BeakersoftBlog/~3/vEo-MwiiEm0/</link>
		<comments>http://www.beakersoft.co.uk/2010/02/11/folder2page-plugin/#comments</comments>
		<pubDate>Thu, 11 Feb 2010 21:29:49 +0000</pubDate>
		<dc:creator>beakersoft</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.beakersoft.co.uk/?p=321</guid>
		<description><![CDATA[Just a quick post to point you in the direction of my latest (ok second ever!) plugin for wordpress. Its called folder2page, you can check out more info at beakersoft.co.uk/folder2page Its a simple plugin that will allow you to use a directory of images you have on your web space as a simple gallery on [...]]]></description>
			<content:encoded><![CDATA[<p>Just a quick post to point you in the direction of my latest (ok second ever!) plugin for wordpress. Its called folder2page, you can check out more info at <a href="http://www.beakersoft.co.uk/folder2page">beakersoft.co.uk/folder2page</a></p>
<p>Its a simple plugin that will allow you to use a directory of images you have on your web space as a simple gallery on page in your blog. There seemed to be a lot of plugins out there for getting images from flickr and other image hosting services, but not much if you wanted to get at the images your self.</p>
<p>Any comments, suggestions etc please let me know!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/BeakersoftBlog?a=vEo-MwiiEm0:AM7Ivt7PPc8:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/BeakersoftBlog?i=vEo-MwiiEm0:AM7Ivt7PPc8:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BeakersoftBlog?a=vEo-MwiiEm0:AM7Ivt7PPc8:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/BeakersoftBlog?i=vEo-MwiiEm0:AM7Ivt7PPc8:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BeakersoftBlog?a=vEo-MwiiEm0:AM7Ivt7PPc8:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/BeakersoftBlog?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BeakersoftBlog?a=vEo-MwiiEm0:AM7Ivt7PPc8:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/BeakersoftBlog?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BeakersoftBlog?a=vEo-MwiiEm0:AM7Ivt7PPc8:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/BeakersoftBlog?i=vEo-MwiiEm0:AM7Ivt7PPc8:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/BeakersoftBlog/~4/vEo-MwiiEm0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.beakersoft.co.uk/2010/02/11/folder2page-plugin/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.beakersoft.co.uk/2010/02/11/folder2page-plugin/</feedburner:origLink></item>
		<item>
		<title>Spiceworks 4.5 Review</title>
		<link>http://feedproxy.google.com/~r/BeakersoftBlog/~3/m44mH4WL6-Q/</link>
		<comments>http://www.beakersoft.co.uk/2010/01/08/spiceworks-4-5-review/#comments</comments>
		<pubDate>Fri, 08 Jan 2010 19:52:17 +0000</pubDate>
		<dc:creator>beakersoft</dc:creator>
				<category><![CDATA[spiceworks]]></category>
		<category><![CDATA[Reviews]]></category>

		<guid isPermaLink="false">http://www.beakersoft.co.uk/?p=281</guid>
		<description><![CDATA[My post I did some time ago on Spiceworks has recently got quite a bit of attention, so i have decided to check out the latest version (4.5). I haven&#8217;t used Spiceworks since version 2, I was quite impressed with it back then and I know the product has developed quite a lot in that [...]]]></description>
			<content:encoded><![CDATA[<p>My post I did some time ago on Spiceworks has recently got quite a bit of attention, so i have decided to check out the latest version (4.5).</p>
<p>I haven&#8217;t used Spiceworks since version 2, I was quite impressed with it back then and I know the product has developed quite a lot in that time, so I was hoping it has improved even more. As in the previous post i have done a few timings, and noted what the scanning of the network has managed to find.</p>
<p>This test was completed in a completely different environment than the previous tests, so its not really fair to compare this version with say version 2. Spiceworks was installed to a Dell 1850 server, running windows 2003 with 2gig ram. I scanned 6 subnets in all, containing lots of different devices (pc&#8217;s, phones, routers etc). Clients are mainly Dell optiplex&#8217;s running Win XP, printers mainly HP.</p>
<h2>Test Results</h2>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td width="37%" bgcolor="#e0fafe"></td>
<td width="24%" bgcolor="#e0fafe"><strong>Spiceworks 4.5 </strong></td>
</tr>
<tr>
<td>Total Network Scan Time</td>
<td>4 hours 15 mins</td>
</tr>
<tr>
<td bgcolor="#efefef">Total devices discovered</td>
<td bgcolor="#efefef">446</td>
</tr>
<tr>
<td>Workstations discovered</td>
<td>251</td>
</tr>
<tr>
<td bgcolor="#efefef">Servers discovered</td>
<td bgcolor="#efefef">77</td>
</tr>
<tr>
<td>Printers discovered</td>
<td>26</td>
</tr>
<tr>
<td bgcolor="#efefef">Unknown devices discovered</td>
<td bgcolor="#efefef">32</td>
</tr>
<tr>
<td bgcolor="#efefef">Other devices discovered</td>
<td bgcolor="#efefef">60</td>
</tr>
<tr>
<td>Total Software recognized</td>
<td>2155</td>
</tr>
<tr>
<td bgcolor="#efefef">Applications recognized</td>
<td bgcolor="#efefef">1123</td>
</tr>
<tr>
<td>Services recognized</td>
<td>457</td>
</tr>
<tr>
<td bgcolor="#efefef">Hotfixes recognized</td>
<td bgcolor="#efefef">575</td>
</tr>
<tr>
<td bgcolor="#e0fafe"></td>
<td bgcolor="#e0fafe"></td>
</tr>
</tbody>
</table>
<p></p>
<h2>Test Conclusions</h2>
<p><strong>Speed</strong><br />
The first thing to hit me was the scanning speed, I had given spiceworks a lot more work do to then in the previous tests, but i was still a little disapointed at the time it took to initially scan the network. There was a lot of kit to find and identify, but it took a little longer than I would have thought</p>
<p>That said, the initial scan is a one of event, and subsequent ones once the majority of devices have been found are nice and fast. I&#8217;m not sure if the speed is really that big an issue, I would prefer to sacrifice a bit of scan time to get more accurate results.</p>
<p><strong>Hardware Results<br />
</strong>So, did Spiceworks actually manage to identify all the hardware on the network, and work out what it was. For the most part, yes it did. Unless there was a connectivity problem with the machine, it did manage to work out what it was. I correctly identified all the workstations and servers, and managed to extract out the information on the hardware.</p>
<p>It does tend to class most of the network kit as &#8216;Other Devices&#8217;, i&#8217;m assuming this is because it cant authorise its self on the device, but i&#8217;m not sure, it just seems to see them as http devices. I was going to try and scan a test device, but there is no scanning option to pass a telnet password to a box, even if you could I&#8217;m not convinced it would be able to tell what it was</p>
<p>It did however, manage to recognise all the printer correctly, and in most cases it was reporting back information on the status of the device correctly</p>
<p><strong>Software Result<br />
</strong>This is one area where I found it difficult to tell if Spiceworks was working right or not, as I dont have an up-to-date list of the software on the machines. To try and test it I picked a couple of machines at random and looked at the software on them, it managed in both cases to get pretty close to what was on the actual box. I like the feature of the software list that tells you the oldest and newest versions of things, this would be very handy if you are rolling out some software and want to make sure everything has got the correct version</p>
<p><strong>Interface and Features<br />
</strong>As I have not used Spiceworks since version 2, i&#8217;m not sure what is new this version and what has been in for a while. I do like the time line function, it would be nice if it could update in real time but then you would be scanning your network all the time.</p>
<p>The reporting system seems a lot more customizable, as you can now not only decided what you want to see, but organise the columns on the reports as well, and filter down what you want to see. The export options are pritty standard, but I would have expected to see an xml option along with the others. It is missing some advanced reporting features (grouping, custom fields etc.) and has no support for generating graphs, but those are probably not that important.</p>
<p>The network map is a nice idea, but i&#8217;m not really sure what use it would be, normally you would probably only be interested in this information for your network kit, and Cisco already have some specific tools to do this.</p>
<p><strong>Summing Up<br />
</strong>While the product is not perfect by any means, for a free bit of software you cant really get much better for a small or medium size organisation. The hardware/software inventory is accurate, if a little slow and does seem to struggle with network kit.</p>
<p>The interface is very easy to use, and its easy to customise the dashboard so you can see the information that interests you. The adverts do get in the way a bit sometimes, but you can always pay to get them removed.</p>
<p>All in all this is another very good version, and if your in the market for some network auditing/reporting tools, for the (lack of) price this is one of the best.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/BeakersoftBlog?a=m44mH4WL6-Q:Ih34vZwirdk:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/BeakersoftBlog?i=m44mH4WL6-Q:Ih34vZwirdk:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BeakersoftBlog?a=m44mH4WL6-Q:Ih34vZwirdk:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/BeakersoftBlog?i=m44mH4WL6-Q:Ih34vZwirdk:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BeakersoftBlog?a=m44mH4WL6-Q:Ih34vZwirdk:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/BeakersoftBlog?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BeakersoftBlog?a=m44mH4WL6-Q:Ih34vZwirdk:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/BeakersoftBlog?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BeakersoftBlog?a=m44mH4WL6-Q:Ih34vZwirdk:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/BeakersoftBlog?i=m44mH4WL6-Q:Ih34vZwirdk:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/BeakersoftBlog/~4/m44mH4WL6-Q" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.beakersoft.co.uk/2010/01/08/spiceworks-4-5-review/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.beakersoft.co.uk/2010/01/08/spiceworks-4-5-review/</feedburner:origLink></item>
		<item>
		<title>My First Book Review</title>
		<link>http://feedproxy.google.com/~r/BeakersoftBlog/~3/TNQTc_RyFMo/</link>
		<comments>http://www.beakersoft.co.uk/2009/12/22/my-first-book-review/#comments</comments>
		<pubDate>Tue, 22 Dec 2009 14:05:13 +0000</pubDate>
		<dc:creator>beakersoft</dc:creator>
				<category><![CDATA[Book Review]]></category>
		<category><![CDATA[SQL Reporting Services]]></category>

		<guid isPermaLink="false">http://www.beakersoft.co.uk/?p=266</guid>
		<description><![CDATA[The good people over at packt publishing recently sent me a copy of Learning SQL Server Reporting Server 2008 Reporting Services by Jayaram Krishnaswamy. So here is my first ever book review. Hope you find it interesting - SQL reporting services has been part of the SQL Server suite for a few years now, and [...]]]></description>
			<content:encoded><![CDATA[<p>The good people over at <a href="http://www.packtpub.com">packt publishing</a> recently sent me a copy of<strong> Learning SQL Server Reporting Server 2008 Reporting Services by Jayaram Krishnaswamy. </strong>So here is my first ever book review. Hope you find it interesting -</p>
<p><a href="http://www.packtpub.com/learning-sql-server-2008-reporting-services/book/mid/11011006z007?utm_source=beakersoft.co.uk&#038;utm_medium=affiliate&#038;utm_content=blog&#038;utm_campaign=mdb_002046"><img class="alignleft" src="https://www.packtpub.com/images/100x123/1847196187.png" alt="" width="100" height="123" /></a>SQL reporting services has been part of the SQL Server suite for a few years now, and this book covers the latest version 2008. As stated by the back cover of the book, it is aimed at beginners, but also has plenty of useful information for old hands, with all of the topics covered in the book backed up by code examples and screen shots.</p>
<p>As with most books I have read on any reporting engines, a basic knowledge of SQL server, and the SQL language will always help a great deal when reading the book. Also a couple of the topics hit on using the reporting service from your own applications, so you will need some programing know how to get anything from these chapters.</p>
<p>The book is written in a very easy to read way, and unlike some technical books manages to seems light enough to enjoy reading, but everything is still explained in an accurate and concise manner.</p>
<p>There are 2 sections given over to using the new report Builder (something i have never used before), explaining how it is set out like excising Microsoft office application, and information and examples of all the other new features in this version. The section on using Crystal reports is interesting, and although i found it a little short, it is something i have never seen before in a SQL reporting services book, they never seem to touch on the subject at all.</p>
<p>The chapters at the end of of the book are about programing into/around the reporting engine, I found the one about Progammatically Creating a report particularly interesting, it takes you through all the necessary steps to create your own .rdl, using the XMLTextWritter class. Might not be very interesting if you just want to author reports in the builder, but if you wanted to take it to this level the information is very helpful, with full source code in the book.</p>
<p>As well as all the new features for 2008, all the existing one are covered (images, sub-reports, parametrised reports, datasets, formatting, graphs etc) in good detail, with examples and screen shots available for each topic.</p>
<p>All in all not only enjoyed reading this book, i took quite a bit of useful information out it as well, some of witch i think i would struggle to find in other publications. A good read all round.</p>
<p><a href="http://www.packtpub.com/learning-sql-server-2008-reporting-services/book/mid/11011006z007?utm_source=beakersoft.co.uk&#038;utm_medium=affiliate&#038;utm_content=blog&#038;utm_campaign=mdb_002046">Buy this book from Packt.com now!</a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/BeakersoftBlog?a=TNQTc_RyFMo:4CAU2KTdZM8:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/BeakersoftBlog?i=TNQTc_RyFMo:4CAU2KTdZM8:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BeakersoftBlog?a=TNQTc_RyFMo:4CAU2KTdZM8:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/BeakersoftBlog?i=TNQTc_RyFMo:4CAU2KTdZM8:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BeakersoftBlog?a=TNQTc_RyFMo:4CAU2KTdZM8:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/BeakersoftBlog?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BeakersoftBlog?a=TNQTc_RyFMo:4CAU2KTdZM8:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/BeakersoftBlog?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BeakersoftBlog?a=TNQTc_RyFMo:4CAU2KTdZM8:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/BeakersoftBlog?i=TNQTc_RyFMo:4CAU2KTdZM8:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/BeakersoftBlog/~4/TNQTc_RyFMo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.beakersoft.co.uk/2009/12/22/my-first-book-review/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.beakersoft.co.uk/2009/12/22/my-first-book-review/</feedburner:origLink></item>
		<item>
		<title>Show/Hide Groups at run time</title>
		<link>http://feedproxy.google.com/~r/BeakersoftBlog/~3/1URetE5JU8o/</link>
		<comments>http://www.beakersoft.co.uk/2009/07/17/showhide-groups-at-run-time/#comments</comments>
		<pubDate>Fri, 17 Jul 2009 18:32:15 +0000</pubDate>
		<dc:creator>beakersoft</dc:creator>
				<category><![CDATA[SQL Reporting Services]]></category>

		<guid isPermaLink="false">http://www.beakersoft.co.uk/?p=228</guid>
		<description><![CDATA[Recently quite a few of our users have been asking if they can show all of the report details at runtime, instead of having to drill down all the groups, opening and closing as they see fit. Well, the answer is yes, and its very easy to implement. Parameters are you friend The first thing [...]]]></description>
			<content:encoded><![CDATA[<p>Recently quite a few of our users have been asking if they can show all of the report details at runtime, instead of having to drill down all the groups, opening and closing as they see fit. Well, the answer is yes, and its very easy to implement.</p>
<h2><strong>Parameters are you friend</strong></h2>
<p>The first thing to do is create yourself a new parameter in the report, and call it something like <em>par_expand_groups</em>. Give it the following options:</p>
<p><img class="alignnone" title="param options" src="http://www.beakersoft.co.uk/img/ssrs_param_show_group1.jpg" alt="" width="456" height="435" /></p>
<p>Now, you need to make this parameter control weather or not the group is expanded as the report is ran, you do this by putting an expression into the <em>hidden </em>property of the row.</p>
<p>Normally if you have a group, when you run the report it will probably be hidden and the user has the option of showing the details, so the <em>hidden </em>property will be set to true. We are going to set it to the following expression:</p>
<p><em>=IIF(Parameters!par_expand_groups.Value = &#8220;True&#8221;, False, True)</em></p>
<p>This means that if the parameter is set to yes, the details will be shown, if its set to no they will remain hidden. Add this to each level of grouping on your report, and the user now has control over what they see</p>
<h2><strong>Slight Problem with the show/hide icons</strong></h2>
<p>Once you have added this to your report, you might notice a slight problem. If you run the report with the option of showing the group details, the little show/hide icon on the left used to toggle the details will be wrong. It will be showing the &#8216;+&#8217; even though the details are already showing, and if you press it to hide the details it will change to a &#8216;-&#8217;. They are the wrong way round!</p>
<p><img class="alignnone" title="Incorrect Icons" src="http://www.beakersoft.co.uk/img/report%5Ficons.gif" alt="" width="307" height="114" /></p>
<p>Obviously, this is going to confuse your users, and needs sorting. Well, thanks to a tip from <a href="http://www.lukehayler.com/2009/07/custom-visibility-toggling-in-ssrs">http://www.lukehayler.com/2009/07/custom-visibility-toggling-in-ssrs</a> its easy.</p>
<p>All you need to do is open up the properties of the text box that is the trigger for the show hide, and go into the <em>Visibility </em>tab. At the bottom is an <em> </em>option to set an expression for the toggle image. just enter:</p>
<p><em>=IIF(Parameters!par_expand_groups.Value = &#8220;True&#8221;, True, False)</em></p>
<p>As before, they is just looking at your parameter and setting the value of the toggle image. Now, when you run the report with the option to display the details, they icons for toggling the details should be correct.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/BeakersoftBlog?a=1URetE5JU8o:TA84KgTOvZQ:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/BeakersoftBlog?i=1URetE5JU8o:TA84KgTOvZQ:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BeakersoftBlog?a=1URetE5JU8o:TA84KgTOvZQ:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/BeakersoftBlog?i=1URetE5JU8o:TA84KgTOvZQ:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BeakersoftBlog?a=1URetE5JU8o:TA84KgTOvZQ:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/BeakersoftBlog?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BeakersoftBlog?a=1URetE5JU8o:TA84KgTOvZQ:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/BeakersoftBlog?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BeakersoftBlog?a=1URetE5JU8o:TA84KgTOvZQ:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/BeakersoftBlog?i=1URetE5JU8o:TA84KgTOvZQ:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/BeakersoftBlog/~4/1URetE5JU8o" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.beakersoft.co.uk/2009/07/17/showhide-groups-at-run-time/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.beakersoft.co.uk/2009/07/17/showhide-groups-at-run-time/</feedburner:origLink></item>
		<item>
		<title>WordSlice – My First WordPress plugin</title>
		<link>http://feedproxy.google.com/~r/BeakersoftBlog/~3/HpYuRIG5XXg/</link>
		<comments>http://www.beakersoft.co.uk/2009/06/15/wordslice-my-first-wordpress-plugin/#comments</comments>
		<pubDate>Mon, 15 Jun 2009 22:00:53 +0000</pubDate>
		<dc:creator>beakersoft</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[programing]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://www.beakersoft.co.uk/?p=220</guid>
		<description><![CDATA[I while ago I wrote an artical (here)about the new Web slice feature in IE8. A few people have asked about a plugin for WordPress, and the other night I finally decided to have a go. Head over to http://www.beakersoft.co.uk/wordslice for all the info, or to http://wordpress.org/extend/plugins/wordslice/ for the download and the install notes. Hopefully [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone" title="Webslice header" src="http://www.beakersoft.co.uk/img/wordpress_webslice-header.jpg" alt="" width="450" height="50" /></p>
<p>I while ago I wrote an artical (<a href="http://www.beakersoft.co.uk/2008/03/24/webslices-in-wordpress/">here</a>)about the new Web slice feature in IE8. A few people have asked about a plugin for WordPress, and the other night I finally decided to have a go.</p>
<p>Head over to <a href="http://www.beakersoft.co.uk/wordslice">http://www.beakersoft.co.uk/wordslice</a> for all the info, or to <a href="http://wordpress.org/extend/plugins/wordslice/">http://wordpress.org/extend/plugins/wordslice/</a> for the download and the install notes.</p>
<p>Hopefully in the not to distant future i will be add some extra features to it (its kind of limited at the moment) so stay tuned!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/BeakersoftBlog?a=HpYuRIG5XXg:sqCi3iPMmzw:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/BeakersoftBlog?i=HpYuRIG5XXg:sqCi3iPMmzw:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BeakersoftBlog?a=HpYuRIG5XXg:sqCi3iPMmzw:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/BeakersoftBlog?i=HpYuRIG5XXg:sqCi3iPMmzw:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BeakersoftBlog?a=HpYuRIG5XXg:sqCi3iPMmzw:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/BeakersoftBlog?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BeakersoftBlog?a=HpYuRIG5XXg:sqCi3iPMmzw:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/BeakersoftBlog?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BeakersoftBlog?a=HpYuRIG5XXg:sqCi3iPMmzw:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/BeakersoftBlog?i=HpYuRIG5XXg:sqCi3iPMmzw:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/BeakersoftBlog/~4/HpYuRIG5XXg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.beakersoft.co.uk/2009/06/15/wordslice-my-first-wordpress-plugin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.beakersoft.co.uk/2009/06/15/wordslice-my-first-wordpress-plugin/</feedburner:origLink></item>
	</channel>
</rss>

