<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1138208274065767718</id><updated>2012-01-29T14:52:57.311-08:00</updated><category term='indexes'/><category term='RDBMS'/><category term='MySQL'/><category term='SQL'/><category term='relational'/><category term='ruby rails schema'/><title type='text'>AWGtek Blog</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://awgtek.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://awgtek.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>S931Coder</name><uri>http://www.blogger.com/profile/17609807805714986516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>71</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1138208274065767718.post-3468019743172900771</id><published>2012-01-29T14:48:00.000-08:00</published><updated>2012-01-29T14:52:57.320-08:00</updated><title type='text'>Sharepoint PowerShell Shortcuts</title><content type='html'>Command to output sorted site columns:&lt;br /&gt;&lt;code&gt;PS C:\WINDOWS\system32\WindowsPowerShell\v1.0&gt; [void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")&lt;br /&gt;PS C:\WINDOWS\system32\WindowsPowerShell\v1.0&gt; set-variable -option constant -name url -value "http://servername/sites/teamsite/"&lt;br /&gt;PS C:\WINDOWS\system32\WindowsPowerShell\v1.0&gt; $site = new-object Microsoft.SharePoint.SPSite($url)&lt;br /&gt;PS C:\WINDOWS\system32\WindowsPowerShell\v1.0&gt; $site.rootweb.Fields | foreach { $fieldValues = @{ "Display Name" = $_.Title; "Internal Name" = $_.InternalName; "Value" = $site.rootweb.AvailableFields.GetFieldByInternalName($_.InternalName) }; New-Object PSObject -Property $fieldValues | Select @("Display Name","Internal Name","Value") } | Sort-Object -Property "Internal Name" | Out-GridView&lt;/code&gt;&lt;br /&gt;refs:&lt;br /&gt;&lt;a href="http://get-spscripts.com/2010/09/get-all-column-values-from-sharepoint.html"&gt;http://get-spscripts.com/2010/09/get-all-column-values-from-sharepoint.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1138208274065767718-3468019743172900771?l=awgtek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://awgtek.blogspot.com/feeds/3468019743172900771/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://awgtek.blogspot.com/2012/01/sharepoint-powershell-shortcuts.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/3468019743172900771'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/3468019743172900771'/><link rel='alternate' type='text/html' href='http://awgtek.blogspot.com/2012/01/sharepoint-powershell-shortcuts.html' title='Sharepoint PowerShell Shortcuts'/><author><name>S931Coder</name><uri>http://www.blogger.com/profile/17609807805714986516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1138208274065767718.post-1811912846944096626</id><published>2012-01-26T10:41:00.000-08:00</published><updated>2012-01-26T10:52:33.580-08:00</updated><title type='text'>CQWP Bug</title><content type='html'>[MOSS 2007] Got the following error when I selected "Show items from the following list" and browsed to a doc lib whose display name contained a forward slash (/):&lt;br /&gt;&lt;Quote&gt;Cannot save the property settings for this Web Part. The list name is not valid. The list name should refer to a list within the specified site..."&lt;/Quote&gt;&lt;br /&gt;&lt;br /&gt;So to workaround the inability of this SP component to recognize lists with forward slashes in them, I decided to try to filter by list ID under Additional Filters. No go again. I entered the list's QUID and no data was returned. This appears to be a &lt;a href="http://social.technet.microsoft.com/Forums/eu/sharepoint2010setup/thread/e4841c9c-e8f6-49db-9e66-6cbbd5ab3a15"&gt;bug&lt;/a&gt;  as well.&lt;br /&gt;&lt;br /&gt;So I settled for a Data Form Web Part hooked up to an XML Web Service configured in the Data Source Library: Port set to ListsSoap12, Operation: GetListItems; listName=GUID (including curly brackets). Had to tinker with the XSLT to get the display somewhat correct, e.g. to get the doc image to show, use &amp;lt;img src="/_layouts/images/{ddwrt:MapToIcon('',string(@ows_DocIcon))}"/&amp;gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1138208274065767718-1811912846944096626?l=awgtek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://awgtek.blogspot.com/feeds/1811912846944096626/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://awgtek.blogspot.com/2012/01/cqwp-bug.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/1811912846944096626'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/1811912846944096626'/><link rel='alternate' type='text/html' href='http://awgtek.blogspot.com/2012/01/cqwp-bug.html' title='CQWP Bug'/><author><name>S931Coder</name><uri>http://www.blogger.com/profile/17609807805714986516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1138208274065767718.post-4374548167635665695</id><published>2012-01-18T12:27:00.000-08:00</published><updated>2012-01-18T12:40:37.114-08:00</updated><title type='text'>Adapting the schema.xml</title><content type='html'>I wanted to add a new field to the base item content type -- i.e. content type ID 0x01. I also wanted to change the display name of title. This is what worked for my schema.xml.&lt;br /&gt;&lt;br /&gt;Copy the Schema.xml from FEATURES\CustomList\CustList to my Feature folder named after the Name attribute of the ListTemplate element.&lt;br /&gt;&lt;br /&gt;Comment out both ContentTypeRef elements.&lt;br /&gt;&lt;br /&gt;Create a ContentType element that likes like: &lt;br /&gt;&amp;lt;ContentType&lt;br /&gt;          ID=&amp;quot;0x0100DECA7022CD234bb1BE7E9BCFF593552F&amp;quot;&lt;br /&gt;           Name=&amp;quot;Item&amp;quot;&lt;br /&gt;          Group=&amp;quot;List Content Types&amp;quot;&lt;br /&gt;          Description=&amp;quot;Create a new list item.&amp;quot;&amp;gt;&lt;br /&gt;        &amp;lt;FieldRefs&amp;gt;&lt;br /&gt;           &amp;lt;FieldRef ID=&amp;quot;{fa564e0f-0c70-4ab9-b863-0177e6ddd247}&amp;quot; &lt;br /&gt;                    Name=&amp;quot;Title&amp;quot; &lt;br /&gt;                    Required=&amp;quot;TRUE&amp;quot; &lt;br /&gt;                    DisplayName=&amp;quot;My Title&amp;quot; &lt;br /&gt;                    /&amp;gt;&lt;br /&gt;       &amp;lt;FieldRef ID=&amp;quot;{AA242460-9794-4d45-A726-938D1B8B7D72}&amp;quot; &lt;br /&gt;                    Name=&amp;quot;My Added field&amp;quot; &lt;br /&gt;                    Required=&amp;quot;FALSE&amp;quot; &lt;br /&gt;                    /&amp;gt;&lt;br /&gt;&lt;br /&gt;        &amp;lt;/FieldRefs&amp;gt;&lt;br /&gt;        &lt;br /&gt;        &lt;br /&gt;      &amp;lt;/ContentType&amp;gt;&lt;br /&gt;&lt;br /&gt;NOTE the ContentType ID structure: follows the GUID method from MSDN http://msdn.microsoft.com/en-us/library/ie/aa543822.aspx, MAKE sure to remove any hyphens!!!&lt;br /&gt;&lt;br /&gt;Add all modified fields to the Fields element, including Title, LinkFilenameNoMenu, and LinkTitle. You can get samples from a schema.xml that you copy from a list in SharePoint Manager.&lt;br /&gt;&lt;br /&gt;Adjust View BaseViewID="1" as needed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1138208274065767718-4374548167635665695?l=awgtek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://awgtek.blogspot.com/feeds/4374548167635665695/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://awgtek.blogspot.com/2012/01/adapting-schemaxml.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/4374548167635665695'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/4374548167635665695'/><link rel='alternate' type='text/html' href='http://awgtek.blogspot.com/2012/01/adapting-schemaxml.html' title='Adapting the schema.xml'/><author><name>S931Coder</name><uri>http://www.blogger.com/profile/17609807805714986516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1138208274065767718.post-9111383971619709186</id><published>2012-01-11T10:32:00.000-08:00</published><updated>2012-01-11T10:50:03.366-08:00</updated><title type='text'>SharePoint Workflows on 64bit server</title><content type='html'>This is a quick start on how to get a functioning workflow compiled, installed, and running to completion. It will simply log a message to the workflow history; that's it.&lt;br /&gt;&lt;br /&gt;Assumes Visual Studio 2008 is installed on Windows Server 2003 64bit with WSPBuilder.&lt;br /&gt;&lt;br /&gt;File, New Project, WSPBuilder Project with Workflow&lt;br /&gt;&lt;br /&gt;Right-click project in Solution Explorer and choose Workflow, Sequential Workflow (code) - note: I tried using Sequential Workflow with definition expressed as Xaml and user code in a separate code file, but I got errors such as "RunWorkflow: System.Workflow.Activities.EventDeliveryFailedException: Event "OnWorkflowActivated" on interface type "Microsoft.SharePoint.Workflow.ISharePointService" for instance id "405ff0ae-d08d-41b8-ab69-be69ae4ccde1" cannot be delivered. ---&gt; System.Workflow.Runtime.QueueException: Event Queue operation failed with MessageQueueErrorCode QueueNotFound for queue 'Message Properties  Interface Type:Microsoft.SharePoint.Workflow.ISharePointService  Method Name:OnWorkflowActivated  CorrelationValues:  '. "&lt;br /&gt;&lt;br /&gt;Drag a onWorkflowActivated control onto the designer &lt;br /&gt;Set its CorrelationToken property to anything, e.g. "mytoken"; then expand CorrelationToken and for OwnerActivityName, choose Workflow1 (e.g.)&lt;br /&gt;&lt;br /&gt;Drag a logToHistoryListActivity onto the canvas under the onWorkflowActivated1 control.&lt;br /&gt;Double click its MethodInvoking property, and enter the following code into the body of the method: &lt;code&gt;            var workflowProperties = new Microsoft.SharePoint.Workflow.SPWorkflowActivationProperties();&lt;br /&gt;&lt;br /&gt;            this.logToHistoryListActivity1.HistoryOutcome = "Here is a comment " + workflowProperties.InitiationData;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Build Solution&lt;br /&gt;&lt;br /&gt;Right click property and choose WSPBuilder, Copy to GAC&lt;br /&gt;&lt;br /&gt;Create a folder called MyLoggingWorkflowFeature under C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\TEMPLATE\FEATURES\&lt;br /&gt;&lt;br /&gt;Create two xml files in this folder:&lt;br /&gt;Feature.xml:&lt;br /&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;Feature Id=&amp;quot;genkey id here&amp;quot;&lt;br /&gt;         Title=&amp;quot;Workflow to create a log something to history&amp;quot;&lt;br /&gt;         Description=&amp;quot;Logs something to history&amp;quot;&lt;br /&gt;         Version=&amp;quot;12.0.0.0&amp;quot;&lt;br /&gt;         Scope=&amp;quot;Site&amp;quot;&lt;br /&gt;         xmlns=&amp;quot;http://schemas.microsoft.com/sharepoint/&amp;quot;&amp;gt;&lt;br /&gt;  &amp;lt;ElementManifests&amp;gt;&lt;br /&gt;    &amp;lt;ElementManifest Location=&amp;quot;workflow.xml&amp;quot; /&amp;gt;&lt;br /&gt;  &amp;lt;/ElementManifests&amp;gt;&lt;br /&gt;&amp;lt;/Feature&amp;gt;&lt;br /&gt;         &lt;br /&gt;workflow.xml:&lt;br /&gt;&lt;br /&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;Elements xmlns=&amp;quot;http://schemas.microsoft.com/sharepoint/&amp;quot;&amp;gt;&lt;br /&gt;  &amp;lt;Workflow&lt;br /&gt;    Name=&amp;quot;New Task Workflow&amp;quot;&lt;br /&gt;    Description=&amp;quot;Creates a new task&amp;quot;&lt;br /&gt;    Id=&amp;quot;yourId here from genkey tool&amp;quot;&lt;br /&gt;    CodeBesideClass=&amp;quot;NewTaskWorkflow.Workflow3&amp;quot;&lt;br /&gt;    CodeBesideAssembly=&amp;quot;NewTaskWorkflow, Version=1.0.0.1, Culture=neutral, PublicKeyToken=yourkeytokenhere&amp;quot;&lt;br /&gt;    &amp;gt;&amp;lt;/Workflow&amp;gt;&lt;br /&gt;  &lt;br /&gt;&amp;lt;/Elements&amp;gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1138208274065767718-9111383971619709186?l=awgtek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://awgtek.blogspot.com/feeds/9111383971619709186/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://awgtek.blogspot.com/2012/01/sharepoint-workflows-on-64bit-server.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/9111383971619709186'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/9111383971619709186'/><link rel='alternate' type='text/html' href='http://awgtek.blogspot.com/2012/01/sharepoint-workflows-on-64bit-server.html' title='SharePoint Workflows on 64bit server'/><author><name>S931Coder</name><uri>http://www.blogger.com/profile/17609807805714986516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1138208274065767718.post-1861542555556139432</id><published>2011-12-29T20:21:00.000-08:00</published><updated>2012-01-09T07:12:58.438-08:00</updated><title type='text'>Style "Newsletter, no line" and the DVWP</title><content type='html'>Tried converting (via "convert to XSLT Data View" in Sharepoint Designer 2007) a ListViewWebPart whose style was set to "NewsLetter, no line" and it would not work. The resulting XSLT produced mangled HTML tables. So trying my luck I tried converting the plain Newsletter style using the same approach. This had better results, although, there was an odd table cell on the left, which appeared due the condition ddwrt:GetVar('NumColumns')='1' being true. This is odd, because NumColumns in my list view should be four not one. Further searching the code showed that NumColumns is set as the string length of "Columns," i.e. ddwrt:SetVar('NumColumns', string(string-length(ddwrt:GetVar('Columns')))) and Columns is set to a lone period (dot).&lt;br /&gt;After analyzing the CAML of the LVWP, which should be the basis for the XSLT, I found that in the CAML version, the assignment of Columns is set in a Fields element, which according to the View Schema on MSDN contains a loop over the view fields. This explains the difference: At the end of the loop, Columns is set to "....".&lt;br /&gt;So what I did to patch the XSLT was simply replace the single dot with four dots in the assignment of Columns, which took care of the odd cell, and probably some other anomalies.&lt;br /&gt;There is still some more fixing up to do, e.g.:&lt;br /&gt;- delete the header cell for the field that displays on its own line&lt;br /&gt;- setting column headers to be sortable.&lt;br /&gt;- comment out the ms-alternating class assignment because it's applied unevenly to tr tags, unless you want to convert to "No line" (instructions below)&lt;br /&gt;- explicitely set the class for content cells. Designer sets them incorrectly, e.g. TD Class="{$IDACAVMC}, which is a variable that is based on a List View CAML property, which no longer applies, apparently. So, icon cell would be ms-vb-icon; title cell would be set to ms-vb-title, user would be ms-vb-user; and the text cell on its own row has already been hard coded for us by the Designer ListViewWebPart to DataFormWebPart conversion process.&lt;br /&gt;&lt;br /&gt;Now, to transform this into a "Newsletter, no line" style, do the following:&lt;br /&gt;- comment out the TR tag containing the TD class="ms-nlline"&lt;br /&gt;- replace the html encoded starting TR tags (all &amp;lt;xsl:text disable-output-escaping=&amp;quot;yes&amp;quot;&amp;gt;&amp;amp;lt;tr&amp;amp;gt;&amp;lt;/xsl:text&amp;gt;) with actual TR tags; note: must add the closing TR tag, because it was not added during conversion. To find out where to insert the closing TR for the main row, select the row in SPD, backtrack to the last &amp;lt;xsl:choose&amp;gt; that is directly above the two repeated field name comments for the field that will appear on its own line. Place the closing TR above the two field name comments. &lt;br /&gt;- add the conditional ms-alternating attribute to those TR tags.&lt;br /&gt;Note: There should be two xsl:text replacements (the second one being in the vicinity of "ms-nlline" below the @Remarks=) and three conditional (if statements)&lt;br /&gt;ms-alternating attributes added based on a four column table with one field on its own line: two are added to the replaced TRs, and one added to the TR above the removed ms-nlline row.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1138208274065767718-1861542555556139432?l=awgtek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://awgtek.blogspot.com/feeds/1861542555556139432/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://awgtek.blogspot.com/2011/12/style-newsletter-no-line-and-dvwp.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/1861542555556139432'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/1861542555556139432'/><link rel='alternate' type='text/html' href='http://awgtek.blogspot.com/2011/12/style-newsletter-no-line-and-dvwp.html' title='Style &quot;Newsletter, no line&quot; and the DVWP'/><author><name>S931Coder</name><uri>http://www.blogger.com/profile/17609807805714986516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1138208274065767718.post-5288899943441596724</id><published>2011-12-25T22:15:00.000-08:00</published><updated>2012-01-03T19:58:12.331-08:00</updated><title type='text'>Copying Discussion Items to Document Libary</title><content type='html'>The Requirement is to copy discussion items to another document library.&lt;br /&gt;&lt;br /&gt;Code ideas borrowed from: &lt;a href="http://stackoverflow.com/questions/468469/how-do-you-upload-a-file-to-a-document-library-in-sharepoint"&gt;http://stackoverflow.com/questions/468469/how-do-you-upload-a-file-to-a-document-library-in-sharepoint&lt;/a&gt;, &lt;a href="http://sharepoint.stackexchange.com/questions/20216/iterate-through-discussion-list"&gt;http://sharepoint.stackexchange.com/questions/20216/iterate-through-discussion-list&lt;/a&gt;, &lt;a href="http://www.sharepoint-tips.com/2011/11/event-handler-to-archive-items-when.html"&gt;http://www.sharepoint-tips.com/2011/11/event-handler-to-archive-items-when.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Sample code containing the general idea:&lt;br /&gt;&lt;blockquote&gt;using System;&lt;br /&gt;using System.Runtime.InteropServices;&lt;br /&gt;using System.Web.UI;&lt;br /&gt;using System.Web.UI.WebControls;&lt;br /&gt;using System.Web.UI.WebControls.WebParts;&lt;br /&gt;using System.Xml.Serialization;&lt;br /&gt;&lt;br /&gt;using Microsoft.SharePoint;&lt;br /&gt;using Microsoft.SharePoint.WebControls;&lt;br /&gt;using Microsoft.SharePoint.WebPartPages;&lt;br /&gt;&lt;br /&gt;namespace WebPart3&lt;br /&gt;{&lt;br /&gt;    [Guid("26d38752-d4ce-456e-88f6-496d213627d4")]&lt;br /&gt;    public class WebPart3 : System.Web.UI.WebControls.WebParts.WebPart&lt;br /&gt;    {&lt;br /&gt;        string msg1;&lt;br /&gt;        Button saveTitle;&lt;br /&gt;        TextBox newTitle;&lt;br /&gt;        Label label;&lt;br /&gt;&lt;br /&gt;        public WebPart3()&lt;br /&gt;        {&lt;br /&gt;            SPSite site1 = SPContext.Current.Site;&lt;br /&gt;&lt;br /&gt;            msg1 = "(1.03)" ;&lt;br /&gt;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        public void saveTitle_click(object sender, EventArgs e)&lt;br /&gt;        {&lt;br /&gt;            //this.Title = newTitle.Text;&lt;br /&gt;                string tempprint = "";&lt;br /&gt;                SPWeb myweb = SPContext.Current.Web;&lt;br /&gt;                SPListCollection lists = myweb.Lists;&lt;br /&gt;                SPList mylist;&lt;br /&gt;                SPListItem sli;&lt;br /&gt;            string labeltext = "";&lt;br /&gt;            SPList targetList;&lt;br /&gt;&lt;br /&gt;            try&lt;br /&gt;            {&lt;br /&gt;                &lt;br /&gt;             //   SPList targetList = lists["Discussion Archive"];&lt;br /&gt;              //  SPListItem newItem = targetList.Items.Add();&lt;br /&gt;&lt;br /&gt;                 mylist = lists[newTitle.Text];&lt;br /&gt;                 targetList = lists["Discussion Archive"];&lt;br /&gt;               //  targetList = lists["DiscussionDocs"];&lt;br /&gt;&lt;br /&gt;            //    SPQuery query = new SPQuery();&lt;br /&gt;                //query.RowLimit = 10;&lt;br /&gt;            //    SPListItemCollection posts = mylist.GetItems(query);&lt;br /&gt;&lt;br /&gt;                //this. .SaveProperties = true;&lt;br /&gt;                try&lt;br /&gt;                {&lt;br /&gt;                    labeltext += " entering foreach";&lt;br /&gt;                    foreach (SPListItem item in mylist.Folders)&lt;br /&gt;                    {&lt;br /&gt;                        SPListItem newItem = targetList.Items.Add();&lt;br /&gt;                        //copy the list item to the target&lt;br /&gt;                        foreach (SPField f in item.Fields)&lt;br /&gt;                        {&lt;br /&gt;                            if (!f.ReadOnlyField &amp;&amp; newItem.Fields.ContainsField(f.InternalName))&lt;br /&gt;                                newItem[newItem.Fields.GetFieldByInternalName(f.InternalName).Id] = item[f.Id];&lt;br /&gt;                        }&lt;br /&gt;                        //copy "special" read only fields that can be written to&lt;br /&gt;                        newItem["Created By"] = item["Created By"];&lt;br /&gt;                        newItem["Modified By"] = item["Modified By"];&lt;br /&gt;                        newItem["Modified"] = item["Modified"];&lt;br /&gt;                        newItem["Created"] = item["Created"];&lt;br /&gt;                        newItem.SystemUpdate(false);&lt;br /&gt;                        CopyAttachments(item, newItem);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;                        labeltext += item["Body"] + ",";&lt;br /&gt;                        sli = item;&lt;br /&gt;                        tempprint = (string)sli["Created By"];&lt;br /&gt;                    }&lt;br /&gt;                    labeltext += " existing foreach";&lt;br /&gt;                    try&lt;br /&gt;                    {&lt;br /&gt;                        this.Title = "yo" + mylist.ItemCount + " by: " + tempprint;&lt;br /&gt;&lt;br /&gt;                    }&lt;br /&gt;                    catch (Exception ex)&lt;br /&gt;                    {&lt;br /&gt;                        this.Title = "Error3: " + ex.Message; &lt;br /&gt;                        label.Text = ex.StackTrace;&lt;br /&gt;&lt;br /&gt;                    }&lt;br /&gt;                }&lt;br /&gt;                catch (Exception ex)&lt;br /&gt;                {&lt;br /&gt;                    &lt;br /&gt;                    this.Title = "Error2: " + ex.Message;&lt;br /&gt;                    label.Text = ex.StackTrace;&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;            catch (Exception ex)&lt;br /&gt;            {&lt;br /&gt;                this.Title = "Error: " + ex.Message;&lt;br /&gt;                label.Text = ex.StackTrace;&lt;br /&gt;            }&lt;br /&gt;            label.Text += labeltext + "the end";&lt;br /&gt;              //  this.SetPersonalizationDirty();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        private void CopyAttachments(SPListItem sourceItem, SPListItem targetItem)&lt;br /&gt;        {&lt;br /&gt;            SPWeb web = SPContext.Current.Web;&lt;br /&gt;&lt;br /&gt;            SPFolder myLibrary = web.Folders["DiscussionDocs"];&lt;br /&gt;            Boolean replaceExistingFiles = true;&lt;br /&gt;&lt;br /&gt;            try&lt;br /&gt;            {&lt;br /&gt;                //get the folder with the attachments for the source item&lt;br /&gt;                SPFolder sourceItemAttachmentsFolder = sourceItem.Web.Folders["Lists"].SubFolders[sourceItem.ParentList.Title]&lt;br /&gt;                    .SubFolders["Attachments"].SubFolders[sourceItem.ID.ToString()];&lt;br /&gt;                foreach (SPFile file in sourceItemAttachmentsFolder.Files)&lt;br /&gt;                {&lt;br /&gt;                    byte[] binFile = file.OpenBinary();&lt;br /&gt;                    targetItem.Attachments.AddNow(file.Name, binFile);&lt;br /&gt;                    this.label.Text += file.Name + " attached to target ";&lt;br /&gt;                    SPFile spfile = myLibrary.Files.Add(file.Name, binFile, replaceExistingFiles);&lt;br /&gt;                    SPListItem newfileitem = spfile.Item;&lt;br /&gt;                    newfileitem["Created"] = sourceItem["Created"];&lt;br /&gt;                    newfileitem["Modified By"] = sourceItem["Modified By"];&lt;br /&gt;                    newfileitem["Modified"] = sourceItem["Modified"];&lt;br /&gt;                    newfileitem["Created By"] = sourceItem["Created By"];&lt;br /&gt;                    newfileitem["Title"] = sourceItem["Title"];&lt;br /&gt;                    //newfileitem.SystemUpdate(false);&lt;br /&gt;                    newfileitem.Update();&lt;br /&gt;&lt;br /&gt;                    myLibrary.Update();&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;            catch (Exception ex)&lt;br /&gt;            {&lt;br /&gt;                this.Title = "Error: " + ex.Message;&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        protected override void CreateChildControls()&lt;br /&gt;        {&lt;br /&gt;            base.CreateChildControls();&lt;br /&gt;&lt;br /&gt;            // TODO: add custom rendering code here.&lt;br /&gt;            label = new Label();&lt;br /&gt;            label.Text = "Hello World" + msg1;&lt;br /&gt;            this.Controls.Add(label);&lt;br /&gt;&lt;br /&gt;            //Create text box&lt;br /&gt;            newTitle = new TextBox();&lt;br /&gt;            newTitle.Text = "myxmdiscuss";&lt;br /&gt;            this.Controls.Add(newTitle);&lt;br /&gt;&lt;br /&gt;            //Create Button&lt;br /&gt;            saveTitle = new Button();&lt;br /&gt;            saveTitle.Text = "Set Web Partt Title";&lt;br /&gt;            saveTitle.Click += new EventHandler(this.saveTitle_click);&lt;br /&gt;            Controls.Add(saveTitle);&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;And here's the Powershell:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;$error.clear()&lt;br /&gt;&lt;br /&gt;[System.reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")&lt;br /&gt;&lt;br /&gt;$site = new-object Microsoft.SharePoint.SPSite("https://site")&lt;br /&gt;$web = $site.OpenWeb()&lt;br /&gt;&lt;br /&gt;$lists = $web.Lists;&lt;br /&gt;&lt;br /&gt;$lista = $lists['Team Discussion']&lt;br /&gt;$listb = $web.Folders['MyDocLib']&lt;br /&gt;&lt;br /&gt;foreach ($item in $lista.Folders)&lt;br /&gt;{&lt;br /&gt;    Try&lt;br /&gt;    {&lt;br /&gt;        $sourceItemAttachmentsFolder = $item.Web.Folders["Lists"].SubFolders[$item.ParentList.Title].SubFolders["Attachments"].SubFolders[$item.ID.ToString()];&lt;br /&gt;        foreach ($file in $sourceItemAttachmentsFolder.Files)&lt;br /&gt;        {&lt;br /&gt;            $binfile = $file.OpenBinary()&lt;br /&gt;            "Attached to target " + $item["Title"]&lt;br /&gt;            $spfile = $listb.Files.Add($file.Name, $binfile, 1)&lt;br /&gt;            $newfileitem = $spfile.Item&lt;br /&gt;            foreach ($f in $item.Fields)&lt;br /&gt;            {&lt;br /&gt;                if (!$f.ReadOnlyField -and $newfileitem.Fields.ContainsField($f.InternalName))&lt;br /&gt;                {&lt;br /&gt;                    $newfileitem[$newfileitem.Fields.GetFieldByInternalName($f.InternalName).Id] = $item[$f.Id];&lt;br /&gt;                }&lt;br /&gt;                 &lt;br /&gt;                 $newfileitem["Created By"] = $item["Created By"];&lt;br /&gt;                 &lt;br /&gt;                 $newfileitem["Created"] = $item["Created"];&lt;br /&gt;                &lt;br /&gt;                 $newfileitem["Modified By"] = $item["Modified By"];&lt;br /&gt;                  &lt;br /&gt;                 $newfileitem["Modified"] = $item["Modified"];&lt;br /&gt;                 &lt;br /&gt;                 $newfileitem.Update();&lt;br /&gt;                &lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;    &lt;br /&gt;    }&lt;br /&gt;    Catch&lt;br /&gt;    {&lt;br /&gt;        &lt;br /&gt;        "caught a system exception"&lt;br /&gt;    }   &lt;br /&gt;    &lt;br /&gt;    $error&lt;br /&gt;    &lt;br /&gt;}&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Note: Minimum permissions to execute the ps1 is local server administrator + Site owner.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1138208274065767718-5288899943441596724?l=awgtek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://awgtek.blogspot.com/feeds/5288899943441596724/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://awgtek.blogspot.com/2011/12/copying-discussion-items-to-document.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/5288899943441596724'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/5288899943441596724'/><link rel='alternate' type='text/html' href='http://awgtek.blogspot.com/2011/12/copying-discussion-items-to-document.html' title='Copying Discussion Items to Document Libary'/><author><name>S931Coder</name><uri>http://www.blogger.com/profile/17609807805714986516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1138208274065767718.post-2999367619317767585</id><published>2011-12-09T11:34:00.000-08:00</published><updated>2011-12-09T11:42:52.232-08:00</updated><title type='text'>~SiteCollection in ParameterBinding</title><content type='html'>Here's another workaround. You would like to assign the ~SiteCollection token value (or any token) to a ParameterBinding so that your XSLT can see that value and use it say in image paths, etc.&lt;br /&gt;&lt;br /&gt;After finding a tip &amp;lt;a href="http://stackoverflow.com/questions/609943/dynamically-set-the-defaultvalue-of-a-parameterbinding-in-a-dataformwebpart"&amp;gt;here&amp;lt;/a&amp;gt;, the solution may be as follows.&lt;br /&gt;&lt;br /&gt;- Put a hidden html input control with a runat=server attribute in your content place holder, e.g. &amp;lt;input id="siteColVal"&amp;gt;" type=hidden name=siteColVal runat="server"&amp;gt;&lt;br /&gt;(Note, an asp:TextBox control did not work for me).&lt;br /&gt;- Add a parameterbinding like: &amp;lt;parameterbinding location="Control(siteColVal, value)" name="SiteColRoot" defaultvalue=""&amp;gt;&lt;br /&gt;- then of course a &amp;lt;?xml:namespace prefix = xsl /&amp;gt;&amp;lt;xsl:param name="SiteColRoot"&amp;gt;theooroot&amp;lt;/xsl:param&amp;gt; in your XSLT&lt;br /&gt;&lt;br /&gt;Worked for me!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1138208274065767718-2999367619317767585?l=awgtek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://awgtek.blogspot.com/feeds/2999367619317767585/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://awgtek.blogspot.com/2011/12/sitecollection-in-parameterbinding.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/2999367619317767585'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/2999367619317767585'/><link rel='alternate' type='text/html' href='http://awgtek.blogspot.com/2011/12/sitecollection-in-parameterbinding.html' title='~SiteCollection in ParameterBinding'/><author><name>S931Coder</name><uri>http://www.blogger.com/profile/17609807805714986516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1138208274065767718.post-7238840950820222080</id><published>2011-12-08T08:38:00.000-08:00</published><updated>2011-12-08T08:49:04.380-08:00</updated><title type='text'>Sort DataFormWebPart by "Order" Field</title><content type='html'>The only way I know to do this SPD 2007 is through some manual steps. BTW, the "order" field is determined by the action taken by user, which is made available via the "Allow users to order items in this view?" option for the view.&lt;br /&gt;&lt;br /&gt;There are actually a couple of ways:&lt;br /&gt;&lt;br /&gt;- Drag your list from the Web Part List from the Web Parts Task pane onto a web part zone.&lt;br /&gt;- Then right click on web part and "Convert to XSLT Data View" which will convert the ListViewWebPart to DataFormWebPart with all the desired attributes (such as sorting) preset.&lt;br /&gt;&lt;br /&gt;Alternately, if you created the web part as a Custom List Form from the start (i.e. with XSLT embedded), then you can edit the CAML manually.&lt;br /&gt;&lt;br /&gt;- First open Common Data View Tasks and set it to sort by a common field such as ID.&lt;br /&gt;- Then edit the SPDataSource SelectCommand, by changing "&amp;lt;OrderBy&amp;gt;&amp;lt;FieldRef Name="ID"" to "&amp;lt;OrderBy&amp;gt;&amp;lt;FieldRef Name="Order""&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1138208274065767718-7238840950820222080?l=awgtek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://awgtek.blogspot.com/feeds/7238840950820222080/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://awgtek.blogspot.com/2011/12/sort-dataformwebpart-by-order-field.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/7238840950820222080'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/7238840950820222080'/><link rel='alternate' type='text/html' href='http://awgtek.blogspot.com/2011/12/sort-dataformwebpart-by-order-field.html' title='Sort DataFormWebPart by &quot;Order&quot; Field'/><author><name>S931Coder</name><uri>http://www.blogger.com/profile/17609807805714986516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1138208274065767718.post-6837609340851049756</id><published>2011-11-22T20:03:00.000-08:00</published><updated>2012-01-17T08:34:46.861-08:00</updated><title type='text'>Deploy List Definition</title><content type='html'>- Start SharePoint Solution Generator 2008 (comes with Visual Studio 2008 Extensions)&lt;br /&gt;&lt;br /&gt;&lt;div&gt;- Select List Definition&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;- click Next; if you get an error "VSeWSS Service Error: No SharePoint Site exists at the specified URL", you can ignore and click OK&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;- Then enter the URL, next, select the list and finish&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;- Open the resultant project in Visual Studio 2008 and Build - Package solution.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;- Run the generated setup.bat from command line&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="WHITE-SPACE: pre" class="Apple-tab-span"&gt;&lt;/span&gt;- You may get an error if the current server does not have the Windows SharePoint Services Web application started, if so start it, and try again.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;- Ignore the errors (which you might get if this is a farm with more than one web front end) concerning feature activation as we will deploy and activate next&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;- Open Solution management in Central Administration and Deploy the new solution (wsp file)&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;- another option is from the command line using the &lt;a href="http://msdn.microsoft.com/en-us/library/bb530301(v=office.12).aspx"&gt;allcontenturls &lt;/a&gt;flag. Note the setup.bat sets the -local flag, which only applies to single server farms. However, you can use the -local flag to deploy to only the local WFE, if global deployment isn't working, e.g. because some WFEs are down.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;If you intend to use the -local flag, you will need to edit setup.bat and add the following to the LDeploy section after the deploysolution operation&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:courier new;"&gt;echo installing feature FeatureName ... &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:courier new;"&gt;"%SPAdminTool%" -o installfeature -name "FeatureName"&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;- Now you can activate the lists included with the solution individually from the command line. You can verify that the solution was deployed by checking under C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\FEATURES\ for the names of your lists&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;- To activate the list/feature on a given site, do: "C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\FEATURES\bin\stsadm.exe" -o activatefeature -id [get the id from the setup.bat file] -url http://urlofyoursite:port&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;That's it! Now the list is ready to be selected during list creation.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;As far as activating the list/feature on all sites, there are some powershell solutions out there, e.g. http://bable.cybermarshall.com/2009/01/17/using-powershell-to-activate-a-feature-across-all-sharepoint-2007wss-30-sites-and-subsites/&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;(haven't tried it yet)&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;ref: &lt;a href="http://blogit.create.pt/blogs/andrevala/archive/2008/02/17/SharePoint-2007-Deployment_3A00_-Creating-Solutions.aspx"&gt;http://blogit.create.pt/blogs/andrevala/archive/2008/02/17/SharePoint-2007-Deployment_3A00_-Creating-Solutions.aspx&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1138208274065767718-6837609340851049756?l=awgtek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://awgtek.blogspot.com/feeds/6837609340851049756/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://awgtek.blogspot.com/2011/11/deploy-list-definition.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/6837609340851049756'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/6837609340851049756'/><link rel='alternate' type='text/html' href='http://awgtek.blogspot.com/2011/11/deploy-list-definition.html' title='Deploy List Definition'/><author><name>S931Coder</name><uri>http://www.blogger.com/profile/17609807805714986516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1138208274065767718.post-2023016353703555737</id><published>2011-11-20T19:08:00.000-08:00</published><updated>2012-01-14T14:22:56.513-08:00</updated><title type='text'>Group Email in MOSS</title><content type='html'>There are a couple of gotchas in Sharepoint 2007 you have to watch for when configuring group emails.&lt;br /&gt;&lt;br /&gt;First, if you are trying to configure alerts to an AD security group email, make sure that the security group appears under the permissions for the list, either individually or in a group. Then you can create the alert by replacing your email with that of the security group. Although, at this time, I wouldn't know where to find this alert, if I wanted to delete it. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Secondly, there a few things to watch for when trying to send an email to a Sharepoint group. First you have to email enable the sites; do it in CA under Operations, Incoming Email Settings. Then in your group's settings, create the e-mail distribution list. After submitting you will notice below "Distribution list e-mail address:" a message "Distribution list status: Creation request pending." This means you must approve the request in CA, Operations, Approve/reject Distribution Groups. When that's done, you can email the group. However, what I had to do was verify the actual email address used as shown in Active Directory Users and Computers under the OU where Sharepoint created the distribution group. In my case, the email as shown in AD was based on the domain, i.e. mygroup@mydomain.com. Whereas in Sharepoint in the group settings, was shown mygroup@server.mydomain.com. Make sure the Windows SharePoint Services Timer service is running or else the email you send to mygroup@mydomain.com (e.g. emailing it from Outlook) may never be sent.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There is still a problem with regard to adding this group email to an email action in a Sharepoint Designer built workflow. The email does not send. The NDA email contains "You do not have permission to send to this recipient." I have tried removing connection and relay restrictions in the SMTP virtual server in Exchange System Manager. I also tried configuring Sharepoint to send via a local SMTP server that relays to Exchange. But I get the same NDA error. I have had no luck getting group email to work in the three-state workflow as well, so maybe it's related to group functionality. If I select the group from the Select Users picker in Define E-mail Message SPD workflow, I do not get an NDA, but no email is sent. If I type in the group's email address, as it appears in AD, then I get the NDA. If I use the long form email address, no email is sent, nor an NDA.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1138208274065767718-2023016353703555737?l=awgtek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://awgtek.blogspot.com/feeds/2023016353703555737/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://awgtek.blogspot.com/2011/11/group-email-in-moss.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/2023016353703555737'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/2023016353703555737'/><link rel='alternate' type='text/html' href='http://awgtek.blogspot.com/2011/11/group-email-in-moss.html' title='Group Email in MOSS'/><author><name>S931Coder</name><uri>http://www.blogger.com/profile/17609807805714986516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1138208274065767718.post-9048514674128539542</id><published>2011-11-05T17:06:00.000-07:00</published><updated>2011-11-05T17:36:50.355-07:00</updated><title type='text'>MOSS - Fix "subsite1 is already in use" Error</title><content type='html'>I created a Site collection, selecting the default Team Site Collaboration template. I then logged into the new site and attempted to create a subsite "subsite1" for which I selected the "News Site" Publishing template. This produced the following error: "sharepoint server publishing infrastructure feature must be activated". So then I activate this feature in the Site Collection Features page. I then go back and create subsite1. This gave me the error "The Web site address "/subsite1" is already in use. Funny that apparently the site was created despite the non-activated feature (bug -- probably fixed by now). &lt;br /&gt;&lt;br /&gt;To fix, just go to the site collection root site, then Site Settings, Site hierarchy, click Manage next to subsite1 (e.g.), then click Delete this site.&lt;br /&gt;&lt;br /&gt;Now I can create that site called subsite1. Moss 2007.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1138208274065767718-9048514674128539542?l=awgtek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://awgtek.blogspot.com/feeds/9048514674128539542/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://awgtek.blogspot.com/2011/11/moss-fix-subsite1-is-already-in-use.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/9048514674128539542'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/9048514674128539542'/><link rel='alternate' type='text/html' href='http://awgtek.blogspot.com/2011/11/moss-fix-subsite1-is-already-in-use.html' title='MOSS - Fix &quot;subsite1 is already in use&quot; Error'/><author><name>S931Coder</name><uri>http://www.blogger.com/profile/17609807805714986516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1138208274065767718.post-7335158039530258170</id><published>2011-10-02T15:36:00.000-07:00</published><updated>2011-10-02T15:43:42.824-07:00</updated><title type='text'>Multi-threading SSIM Event Search</title><content type='html'>To ensure your search is multithreaded (and thus faster) as of 4.7.4.x you must break your search into separate archives. Note, that SSIM is agnostic when it comes to archives: an "archive" is simply a directory with .edx, .key, .ndx, .sar, .tdx, .vdx files. However, an official archive will have an indexed_event_fields.txt file in it.&lt;br /&gt;&lt;br /&gt;One quick way to do this is unzip the Archive_CLI tool and run the search from the command line, inputing archives separated by a comma, e.g.:&lt;code&gt;date;java  -server  -Xmx512m  -verbose:gc -XX:+UseConcMarkSweepGC -XX:+PrintGCTimeStamps -XX:+PrintGCDetails  -jar simsar.jar -a /eventarchive/pixarchive1/,/eventarchive/pixarchive2/,/eventarchive/default,/eventarchive/ssimlogs -q "destination_ip = \"192.168.1.1\" &amp; (destination_port = 80 | destination_port = 8080)" -c -S "," -r events.csv  -V;date&lt;/code&gt;&lt;br /&gt;Note the extra flags are for monitoring garbage collection. Check the threads in top to verify parallelism.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1138208274065767718-7335158039530258170?l=awgtek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://awgtek.blogspot.com/feeds/7335158039530258170/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://awgtek.blogspot.com/2011/10/multi-threading-ssim-event-search.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/7335158039530258170'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/7335158039530258170'/><link rel='alternate' type='text/html' href='http://awgtek.blogspot.com/2011/10/multi-threading-ssim-event-search.html' title='Multi-threading SSIM Event Search'/><author><name>S931Coder</name><uri>http://www.blogger.com/profile/17609807805714986516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1138208274065767718.post-4468357749520843953</id><published>2011-09-24T20:09:00.000-07:00</published><updated>2011-09-24T20:16:57.916-07:00</updated><title type='text'>Thread Dump of SSIM Service</title><content type='html'>To get a global thread dump of a SSIM service, find the log_file parameter for the service in svclauncher.cfg to determine the log file that will contain the thread dump. Then issue a &lt;code&gt;status&lt;/code&gt; to get the PID of the service in question, e.g. the rulesvc. Then while the SSIM is performing some interesting activity, type &lt;code&gt;kill -SIGQUIT &amp;#60;PID&amp;#62;&lt;/code&gt;. Finally, open the log file to examine the thread dump and stack traces.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1138208274065767718-4468357749520843953?l=awgtek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://awgtek.blogspot.com/feeds/4468357749520843953/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://awgtek.blogspot.com/2011/09/thread-dump-of-ssim-service.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/4468357749520843953'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/4468357749520843953'/><link rel='alternate' type='text/html' href='http://awgtek.blogspot.com/2011/09/thread-dump-of-ssim-service.html' title='Thread Dump of SSIM Service'/><author><name>S931Coder</name><uri>http://www.blogger.com/profile/17609807805714986516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1138208274065767718.post-5279962906152107242</id><published>2011-09-10T12:37:00.000-07:00</published><updated>2011-09-15T12:27:24.049-07:00</updated><title type='text'>Quick FTP Setup</title><content type='html'>This is a quick and dirty setup guide to enabling ftp uploads for your server to take advantage of FTP file transfer speeds which are much faster than SFTP/SCP. It only applies to servers in a secured lab environment, and should &lt;u&gt;never&lt;/u&gt; be performed on production servers or public-facing servers.&lt;br /&gt;&lt;br /&gt;- check whether vsftpd is installed: &lt;br /&gt;&lt;br /&gt;rpm -q vsftpd &lt;br /&gt;&lt;br /&gt;yum install vsftpd &lt;br /&gt;&lt;br /&gt;- configure it:&lt;br /&gt;&lt;br /&gt;chmod 777 /var/ftp/pub&lt;br /&gt;&lt;br /&gt;vi /etc/vsftpd/vsftpd.conf&lt;br /&gt;&lt;br /&gt;change anon_upload_enable and anon_mkdir_write_enable to YES; add line with: ftp_username=nobody (so that will prompt for user in RedHat linux)&lt;br /&gt;&lt;br /&gt;service vsftpd start&lt;br /&gt;&lt;br /&gt;ftp login using user anonymous with blank password&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Note:&lt;br /&gt;&lt;br /&gt;you may need to disable iptables and &lt;a href="http://www.jules.fm/Logbook/files/rhel6_disable_selinux.html"&gt;selinux&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;refs:&lt;br /&gt;&lt;br /&gt;http://nixcraft.com/getting-started-tutorials/725-secure-vsftpd-ftp-permissions-anonymous-user-uploads.html&lt;br /&gt;&lt;br /&gt;http://bashcurescancer.com/installing-ftp-vsftpd-on-rhel-50-centos.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1138208274065767718-5279962906152107242?l=awgtek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://awgtek.blogspot.com/feeds/5279962906152107242/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://awgtek.blogspot.com/2011/09/quick-ftp-setup.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/5279962906152107242'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/5279962906152107242'/><link rel='alternate' type='text/html' href='http://awgtek.blogspot.com/2011/09/quick-ftp-setup.html' title='Quick FTP Setup'/><author><name>S931Coder</name><uri>http://www.blogger.com/profile/17609807805714986516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1138208274065767718.post-3776700842491016859</id><published>2011-08-25T10:58:00.000-07:00</published><updated>2011-08-25T11:10:18.499-07:00</updated><title type='text'>SSIM AD Integration</title><content type='html'>SSIM can integrate with multiple AD domains (do not have to be in same forest). The documentation in the Admin guide and the official KB is sparse on how to do that though currently.&lt;br /&gt;&lt;br /&gt;Suffice it to say I was able to connect to a Windows 2003 Enterprise SP2 (not R2), as well as a Win 2003 R2 domains, in separate forests.&lt;br /&gt;&lt;br /&gt;The trick is to make sure those domain controllers have been assigned a server certificate (not the root cert). Verify that certificate has "Server Authentication" in the Intended Purposes column of the Certificates snapin, where it should be under Personal/Certificates. When you open the certificate in the General tab it should read "You have a private key that corresponds to this certificate."&lt;br /&gt;&lt;br /&gt;Troubleshooting steps: test connectivity using LDP.exe from the support tools installation. Also use the following command to test from the SSIM itself: &lt;code&gt;openssl s_client -connect [your DC FQDN]:636&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;The following guide was perfect. Make sure to note the part about exporting the cert to Base-64 encoded binary X.509 (.CER). &lt;a href="http://www.tools4ever.com/documentation/user-management-resource-administrator/ldap_ad_secure.htm?content=7030"&gt;http://www.tools4ever.com/documentation/user-management-resource-administrator/ldap_ad_secure.htm?content=7030&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The Symantec KB: http://www.symantec.com/business/support/index?page=content&amp;id=TECH123285&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1138208274065767718-3776700842491016859?l=awgtek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://awgtek.blogspot.com/feeds/3776700842491016859/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://awgtek.blogspot.com/2011/08/ssim-ad-integration.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/3776700842491016859'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/3776700842491016859'/><link rel='alternate' type='text/html' href='http://awgtek.blogspot.com/2011/08/ssim-ad-integration.html' title='SSIM AD Integration'/><author><name>S931Coder</name><uri>http://www.blogger.com/profile/17609807805714986516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1138208274065767718.post-4415870769172480514</id><published>2011-08-24T11:44:00.000-07:00</published><updated>2011-08-24T11:52:24.484-07:00</updated><title type='text'>iptables port manipulation</title><content type='html'>You may find there's no /etc/sysconfig/iptables in a CentOS install with iptables disabled upon install, but you want to redirect a port, e.g. to get port 80 working in tomcat.&lt;br /&gt;&lt;br /&gt;Do:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;service iptables start&lt;br /&gt;iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080&lt;br /&gt;iptables-save &gt; /etc/sysconfig/iptables&lt;br /&gt;service iptables restart&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;To open port 80, add the following to the *filter section before COMMIT:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;then service iptables restart&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1138208274065767718-4415870769172480514?l=awgtek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://awgtek.blogspot.com/feeds/4415870769172480514/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://awgtek.blogspot.com/2011/08/iptables-port-manipulation.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/4415870769172480514'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/4415870769172480514'/><link rel='alternate' type='text/html' href='http://awgtek.blogspot.com/2011/08/iptables-port-manipulation.html' title='iptables port manipulation'/><author><name>S931Coder</name><uri>http://www.blogger.com/profile/17609807805714986516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1138208274065767718.post-1099142146961033724</id><published>2011-07-22T12:11:00.000-07:00</published><updated>2011-07-23T11:39:29.135-07:00</updated><title type='text'>Numeric IP - SSIM Representation</title><content type='html'>IPs in the SSIM as of 4.7.3 are represented in both positive and negative form. To convert from an IP to this form, use the following, replacing [ipvariable] with your dotted quad IP:&lt;br /&gt;&lt;br /&gt;SELECT CASE WHEN (IPNumber - 2147483648) &amp;gt; 0 THEN IPNumber -(2*2147483648) ELSE IPNumber END AS IPNUMBER2 FROM ( SELECT 16777216 *&lt;br /&gt;CAST(LEFT(IPNumber1, LOCATE('.', IPNumber1, 1)-1) AS BIGINT) + 65536 * CAST(SUBSTR(IPNumber1, LOCATE('.', IPNumber1, 1) + 1, LOCATE('.',&lt;br /&gt;IPNumber1,LOCATE('.', IPNumber1, 1) +1) - LOCATE('.', IPNumber1, 1) - 1) AS BIGINT) + 256 * CAST(SUBSTR(IPNumber1, LOCATE('.',&lt;br /&gt;IPNumber1,LOCATE('.', IPNumber1, 1) +1) + 1, LOCATE('.', IPNumber1, LOCATE('.', IPNumber1,LOCATE('.', IPNumber1, 1) +1) +1) - LOCATE('.',&lt;br /&gt;IPNumber1,LOCATE('.', IPNumber1, 1) +1) - 1) AS BIGINT) + CAST(RIGHT(IPNumber1, LENGTH(IPNumber1) - LOCATE('.', IPNumber1,&lt;br /&gt;LOCATE('.', IPNumber1,LOCATE('.', IPNumber1, 1) +1) +1)) AS BIGINT) AS IPNumber FROM (SELECT '[ipvariable]' AS IPNumber1 FROM&lt;br /&gt;SYSIBM.SYSDUMMY1) AS LOCXTMP0) AS TEMP2&lt;br /&gt;&lt;br /&gt;ref: http://stackoverflow.com/questions/6695428/how-to-split-an-ip-address-string-in-db2-sql-for-converting-to-ip-number&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1138208274065767718-1099142146961033724?l=awgtek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://awgtek.blogspot.com/feeds/1099142146961033724/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://awgtek.blogspot.com/2011/07/numeric-ip-ssim-representation.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/1099142146961033724'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/1099142146961033724'/><link rel='alternate' type='text/html' href='http://awgtek.blogspot.com/2011/07/numeric-ip-ssim-representation.html' title='Numeric IP - SSIM Representation'/><author><name>S931Coder</name><uri>http://www.blogger.com/profile/17609807805714986516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1138208274065767718.post-7274883385222116225</id><published>2011-07-14T19:40:00.000-07:00</published><updated>2011-07-22T12:17:04.210-07:00</updated><title type='text'>SSIM Red Queues</title><content type='html'>&lt;block&gt;&lt;br /&gt;When you see all three left red bars completely red, and the EPS counts are 0, here are some troubleshooting tips:&lt;br /&gt;&lt;br /&gt;- Check the Sesa Agent if it's a collector server&lt;br /&gt; - SSH into the collector server in question&lt;br /&gt; - "su -" (change to root)&lt;br /&gt; - tail the collector log which produces the most EPS or highest spikes on this collector&lt;br /&gt;  e.g. "tail -200 /opt/Symantec/sesa/Agent/logs/stonegate.log"&lt;br /&gt; - If you see WARN entries containing "the agent queue is full" you may need to adjust the agent queue configurations: SSIM console: System &gt; Product Configurations &gt; SES &gt; STATE &gt; SSIM Agent and Manager &gt; Agent Configurations &gt; Standard (or the configuration applied to this server) &gt; Logging&lt;br /&gt;  - adjust the following properties as needed, e.g. to increase the queue size, flush size, decrease the queue flush time (so that events are cleared more frequently).&lt;br /&gt;  - Save the configuration (the agent should pick up the settings automatically)&lt;br /&gt;&lt;br /&gt;- Check the Recv-Q and Send-Q of Netstat&lt;br /&gt; - on both the archiver and the correlator do "netstat -anp | grep 100"&lt;br /&gt;  - look for signs of downstream bottlenecks&lt;br /&gt;  - Examples&lt;br /&gt;   - if archiver is queued up sending to correlator:10010, check the correlator queues. E.g. if the correlator is queued up sending to 127.0.0.1:10080, there may be a problem with the asset service. Check assetsvc.log for errors. Try restarting the assetsvc service, and monitor the netstat -anp | grep 100 for movement in the queues. &lt;br /&gt;   As db2admin, cd ~/sqllib/bin&lt;br /&gt;   db2 connect to SESA&lt;br /&gt;   db2 list applications show detail&lt;br /&gt;   Check the SSIM-ASSET application for signs that it is currently Executing. Let it run for a while to see if it finishes.&lt;br /&gt; - on correlator, check "netstat -anp | grep 555" for large number of FIN_WAIT2&lt;br /&gt;- on the correlator check the icesvc.log, assetsvc.log, and rulesvc.log for recent errors (see /opt/Symantec/simserver/logs)&lt;br /&gt;- Disable any rules temporarily that contain references to lookup tables to determine whether any of these rules are causing the backlog.&lt;br /&gt;- Check swap space usage on Correlator. If there is any Swap used, reboot the server.&lt;br /&gt;- Check SSIM Event logs for warnings or errors; query all recent logs where product = Symantec Security Information Manager or product = SSIM System&lt;br /&gt;- Do a query on Event Type ID = Conclusion Updated. Verify that not more than a few events a minute are being created&lt;br /&gt;- Check top on both archiver and correlator. Look for processes whose VIRT is close to the same size as RES. This process may be overworked. The memory allocation can be increased in the /opt/Symantec/simserver/svclauncher.cfg config.&lt;br /&gt;- Investigate whether simserver (correlator service) is overloaded.&lt;br /&gt; - ascertain the pid of the simserver in top&lt;br /&gt; - do lsof | grep &lt;simserver pid&gt; | awk '{print $7,$1,$2,$3,$4,$5,$6,$8,$9}' | sort -n&lt;br /&gt; - look for any unusually large files in output. e.g. .que files larger than 10MB might indicate an overworked correlator.&lt;br /&gt; - Do an advanced SQL query in the UI to determine whether there are any unusually large number of incidents for particular rule: SELECT count(incident_code),incident_code FROM SYMCMGMT.SYMC_IMR_INCIDENT_LIST_VIEW group by incident_code&lt;br /&gt;order by count(incident_code) desc&lt;br /&gt;or: SELECT desc_id, sum(event_count) as sumevtcnt FROM symc_sim_conclusion&lt;br /&gt;where modified_time &gt;= (current timestamp - 1 DAY) group by desc_id&lt;br /&gt;order by sumevtcnt desc&lt;br /&gt; - Disable any rules with more than 50,000 events in one day. For example, a system rule that can cause issues if not adapted is Internal Port Sweep. Simserver process memory will be exhausted typically after 24 hours, and Queues will increase steadily in /opt/Symantec/simserver/queues/ice/input. IIRC the max is three 64MB files here. If there are more than one file, the icesvc is backed up due to the amount of event tracking updates waiting to be pushed to the database. Verify that SSIM-ICE is "UOW Executing" in db2 list applications show detail. &lt;br /&gt; - Also check Events &gt; System Queries &gt; SSIM &gt; SSIM System &gt; Count of Conclusions by Rule Name&lt;br /&gt;- Look for FIN_WAITs associated with large queues in a frozen state in netstat for the simserver process (get pid from `status`). E.g.:&lt;br /&gt;tcp    80384      0 ::ffff:127.0.0.1:10010      ::ffff:127.0.0.1:36446      ESTABLISHED 6131/java&lt;br /&gt;tcp        0 145961 ::ffff:127.0.0.1:36446      ::ffff:127.0.0.1:10010      FIN_WAIT1   -&lt;br /&gt; This could indicate a memory resource problem in the simserver service or another service. Check the target port, and cross reference the admin guide with the service in question. e.g. 10010 is simserver, 55562 is icesvc, etc.&lt;br /&gt; If it's really in frozen state, the process may have crashed (i.e. you see 0 EPS). If the Recv-Q/Send-Q varies and EPS varies, then this could be indicative of High IO Waits. Check the IOWait in the Statistics tile of the GUI. Also check vmstat 1. Sustained IOWaits of more than 2% could indicate the drive is not fast enough.&lt;br /&gt;&lt;br /&gt;&lt;/block&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1138208274065767718-7274883385222116225?l=awgtek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://awgtek.blogspot.com/feeds/7274883385222116225/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://awgtek.blogspot.com/2011/07/ssim-red-queues.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/7274883385222116225'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/7274883385222116225'/><link rel='alternate' type='text/html' href='http://awgtek.blogspot.com/2011/07/ssim-red-queues.html' title='SSIM Red Queues'/><author><name>S931Coder</name><uri>http://www.blogger.com/profile/17609807805714986516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1138208274065767718.post-4861741045682872383</id><published>2011-06-12T20:57:00.000-07:00</published><updated>2011-09-07T13:46:54.261-07:00</updated><title type='text'>Install syslog-ng 3.3 on CentOS 5.5</title><content type='html'>Download from Balabit: syslog-ng_3.3.0bet1.tar.gz or syslog-ng_3.3.0beta2.tar.gz (see http://www.balabit.com/downloads/files?path=/syslog-ng/sources/3.3.0beta2/source) and unpack.&lt;br /&gt;to get the latest, install git:&lt;br /&gt;first update the repo to obtain epels:&lt;br /&gt;&lt;code&gt;rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm&lt;/code&gt;&lt;br /&gt;then &lt;code&gt;yum install git&lt;/code&gt;&lt;br /&gt;or download the snapshot from http://git.balabit.hu/?p=bazsi/syslog-ng-3.3.git;a=tree&lt;br /&gt;and untar over the above.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;There may be prereqs on your system. &lt;/p&gt;&lt;br /&gt;Download these rpms and install. :&lt;br /&gt;&lt;code&gt;&lt;br /&gt;rpm -Uvh kernel-headers-2.6.18-238.el5.i386.rpm&lt;br /&gt;rpm -Uvh glibc-headers-2.5-58.i386.rpm&lt;br /&gt;rpm -Uvh glibc-devel-2.5-58.i386.rpm&lt;br /&gt;rpm -Uvh gcc-4.1.2-50.el5.i386.rpm&lt;br /&gt;rpm -Uvh zlib-1.2.3-4.el5.i386.rpm&lt;br /&gt;rpm -ivh zlib-devel-1.2.3-4.el5.i386.rpm&lt;br /&gt;rpm -Uvh libffi-3.0.5-1.el5.kb.i386.rpm&lt;br /&gt;rpm -Uvh libffi-devel-3.0.5-1.el5.kb.i386.rpm&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Then install glib&lt;br /&gt;&lt;code&gt;wget ftp://ftp.gtk.org/pub/glib/2.29/glib-2.29.4.tar.bz2&lt;/code&gt;&lt;br /&gt;&lt;code&gt;tar jxvf glib-2.29.4.tar.bz2&lt;/code&gt;&lt;br /&gt;&lt;code&gt;cd glib-2.29.4&lt;/code&gt;&lt;br /&gt;&lt;code&gt;./configure&lt;/code&gt;&lt;br /&gt;&lt;code&gt;make&lt;/code&gt;&lt;br /&gt;&lt;code&gt;make install&lt;/code&gt;&lt;br /&gt;done with installing glib prerequisite&lt;br /&gt;&lt;br /&gt;Before install syslog-ng 3.3 beta, do&lt;br /&gt;&lt;code&gt;export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH&lt;/code&gt;&lt;br /&gt;so that eventlog is found.&lt;br&gt;&lt;br /&gt;also do&lt;code&gt; yum install openssl-devel&lt;/code&gt;&lt;br /&gt;or &lt;br /&gt;&lt;code&gt;&lt;br /&gt;rpm -Uvh e2fsprogs-devel-1.39-23.el5_5.1.i386.rpm&lt;br /&gt;  rpm -Uvh keyutils-libs-devel-1.2-1.el5.i386.rpm&lt;br /&gt;  rpm -Uvh libselinux-devel-1.33.4-5.7.el5.i386.rpm&lt;br /&gt;  rpm -Uvh libsepol-devel-1.15.2-3.el5.i386.rpm&lt;br /&gt;  rpm -Uvh libselinux-devel-1.33.4-5.7.el5.i386.rpm&lt;br /&gt;  rpm -Uvh krb5-devel-1.6.1-55.el5.i386.rpm&lt;br /&gt;  rpm -Uvh openssl-devel-0.9.8e-12.el5_5.7.i386.rpm  &lt;br /&gt;&lt;/code&gt;&lt;br /&gt;also:&lt;br /&gt;cd eventlog-0.2.12/&lt;br /&gt;  ./configure&lt;br /&gt; make&lt;br /&gt; make install&lt;br /&gt;then enter syslog-ng dir and &lt;br /&gt;./configure  --enable-pcre --disable-mongodb --disable-ipv6 &lt;br /&gt;make &lt;br /&gt;make install&lt;br /&gt;Note: To install with PCRE enabled, must first &lt;code&gt;yum install pcre-devel&lt;/code&gt;&lt;br /&gt;After that, some more setup:&lt;br /&gt;&lt;code&gt;mkdir /usr/local/var&lt;/code&gt;&lt;br /&gt;&lt;code&gt;cd /root/syslog-ng/syslog-ng-3.3.0beta1/contrib/&lt;/code&gt;&lt;br /&gt;&lt;code&gt;cp rhel-packaging/syslog-ng.init /etc/init.d/syslog-ng&lt;/code&gt;&lt;br /&gt;&lt;code&gt;cp rhel-packaging/syslog-ng.conf /usr/local/etc/&lt;/code&gt;&lt;br /&gt;&lt;code&gt;cp rhel-packaging/syslog-ng.logrotate /etc/logrotate.d/syslog-ng&lt;/code&gt;&lt;br /&gt;&lt;code&gt;chmod 755 /etc/init.d/syslog-ng&lt;/code&gt;&lt;br /&gt;&lt;code&gt;vi /etc/init.d/syslog-ng&lt;/code&gt;&lt;br /&gt;Then change the binary to "/usr/local/sbin/syslog-ng"&lt;br /&gt;Then start the service:&lt;br /&gt;&lt;code&gt;chkconfig syslog off&lt;/code&gt; or &lt;code&gt;chkconfig rsyslog off&lt;/code&gt; as applicable&lt;br /&gt;&lt;br /&gt;&lt;code&gt;chkconfig syslog-ng on&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;service syslog stop&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;service syslog-ng start&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Then edit /usr/local/etc/syslog-ng.conf&lt;br /&gt;add &lt;code&gt;options { threaded(yes); };&lt;/code&gt; to the top, and any other configs.&lt;br /&gt;&lt;br /&gt;service syslog-ng restart&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1138208274065767718-4861741045682872383?l=awgtek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://awgtek.blogspot.com/feeds/4861741045682872383/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://awgtek.blogspot.com/2011/06/install-syslog-ng-33-on-centos-55.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/4861741045682872383'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/4861741045682872383'/><link rel='alternate' type='text/html' href='http://awgtek.blogspot.com/2011/06/install-syslog-ng-33-on-centos-55.html' title='Install syslog-ng 3.3 on CentOS 5.5'/><author><name>S931Coder</name><uri>http://www.blogger.com/profile/17609807805714986516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1138208274065767718.post-8236901879692221585</id><published>2011-06-12T07:22:00.001-07:00</published><updated>2011-06-12T21:52:28.742-07:00</updated><title type='text'>CentOS 5.5 Kernel Upgrade and iotop Install</title><content type='html'>To run iotop.py you need a kernel greater than what CentOS provides. The following steps guide this upgrade, so that you can use iotop.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;cd /usr/src&lt;br /&gt;wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.39.1.tar.bz2&lt;br /&gt;tar xjf linux-2.6.39.1.tar.bz2&lt;br /&gt;ln -s linux-2.6.39.1 linux&lt;br /&gt;cd linux&lt;br /&gt;make mrproper&lt;br /&gt;cp /boot/config-`uname -r` .config&lt;br /&gt;yes "" | make oldconfig (this updates .config to all defaults)&lt;br /&gt;&lt;br /&gt;edit .config, adding or updating the following options:&lt;br /&gt;CONFIG_SYSFS_DEPRECATED=y&lt;br /&gt;CONFIG_SYSFS_DEPRECATED_V2=y&lt;br /&gt;&lt;br /&gt;make&lt;br /&gt;make modules_install&lt;br /&gt;make install&lt;br /&gt;reboot&lt;br /&gt;&lt;br /&gt;rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/python-ctypes-1.0.2-2.el5.i386.rpm&lt;br /&gt;wget http://guichaz.free.fr/iotop/files/iotop-0.4.3.tar.gz&lt;br /&gt;tar zxvf iotop-0.4.3.tar.gz&lt;br /&gt;cd iotop-0.4.3&lt;br /&gt;./iotop.py&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;div&gt;Disclaimer: Perform the above instructions at your own risk.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;For instructions on how to make the rpm (so the lengthy compilation can be done once for future installs), see &lt;a href="http://www.howtoforge.com/kernel_compilation_centos"&gt;http://www.howtoforge.com/kernel_compilation_centos&lt;/a&gt;&lt;br /&gt;Note: will need to install rpm-build and ncurses-devel&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Refs:&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.centos.org/modules/newbb/viewtopic.php?topic_id=8488"&gt;http://www.centos.org/modules/newbb/viewtopic.php?topic_id=8488&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://forum.openvz.org/index.php?t=msg&amp;amp;goto=41203&amp;amp;#msg_41203"&gt;http://forum.openvz.org/index.php?t=msg&amp;amp;goto=41203&amp;amp;#msg_41203&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://guichaz.free.fr/iotop/"&gt;http://guichaz.free.fr/iotop/&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1138208274065767718-8236901879692221585?l=awgtek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://awgtek.blogspot.com/feeds/8236901879692221585/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://awgtek.blogspot.com/2011/06/centos-55-kernel-upgrade-and-iotop.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/8236901879692221585'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/8236901879692221585'/><link rel='alternate' type='text/html' href='http://awgtek.blogspot.com/2011/06/centos-55-kernel-upgrade-and-iotop.html' title='CentOS 5.5 Kernel Upgrade and iotop Install'/><author><name>S931Coder</name><uri>http://www.blogger.com/profile/17609807805714986516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1138208274065767718.post-3503663709090319738</id><published>2011-05-23T20:17:00.000-07:00</published><updated>2011-05-23T20:39:24.039-07:00</updated><title type='text'>Squid Proxy Quick Start Guide</title><content type='html'>First install dependency: yum install gcc-c++&lt;br /&gt;&lt;br /&gt;Download squid, e.g. the file squid-3.X.STABLEXX.tar.gz&lt;br /&gt;tar xvzf squid-3.X.STABLEXX.tar.gz&lt;br /&gt;change dirs &lt;br /&gt;./configure --enable-icap-client&lt;br /&gt;make&lt;br /&gt;make install&lt;br /&gt;&lt;br /&gt;Comment out the allow from local network:&lt;br /&gt;sed -rie '/http_access allow localnet/ s/^/#/' /usr/local/squid/etc/squid.conf&lt;br /&gt;Start up squid in interactive mode:&lt;br /&gt;/usr/local/squid/sbin/squid -N -d1&lt;br /&gt;&lt;br /&gt;Add the squid IP and port (3128) to the browser proxy configuration.&lt;br /&gt;Try surfing to a website; you will see: &lt;br /&gt;&lt;block&gt;&lt;br /&gt;&lt;br /&gt;ERROR&lt;br /&gt; &lt;br /&gt;The requested URL could not be retrieved&lt;br /&gt; &lt;br /&gt;--------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;The following error was encountered while trying to retrieve the URL: http://www.awgtek.com/&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;Access Denied.&lt;br /&gt; &lt;br /&gt;Access control configuration prevents your request from being allowed at this time. Please contact your service provider if you feel this is incorrect.&lt;br /&gt;&lt;/block&gt;&lt;br /&gt;&lt;br /&gt;Do: &lt;br /&gt;Ctl-C&lt;br /&gt; sed -rie '/http_access allow localnet/ s/^#//' squid.conf&lt;br /&gt;&lt;br /&gt;/usr/local/squid/sbin/squid -N -d1&lt;br /&gt;&lt;br /&gt;Browse to a site. &lt;br /&gt;&lt;br /&gt;To check the access&lt;br /&gt;do: tail /usr/local/squid/var/logs/access.log&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1138208274065767718-3503663709090319738?l=awgtek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://awgtek.blogspot.com/feeds/3503663709090319738/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://awgtek.blogspot.com/2011/05/squid-proxy-quick-start-guide.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/3503663709090319738'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/3503663709090319738'/><link rel='alternate' type='text/html' href='http://awgtek.blogspot.com/2011/05/squid-proxy-quick-start-guide.html' title='Squid Proxy Quick Start Guide'/><author><name>S931Coder</name><uri>http://www.blogger.com/profile/17609807805714986516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1138208274065767718.post-4986231140770664551</id><published>2011-05-15T21:07:00.000-07:00</published><updated>2011-05-15T21:25:33.088-07:00</updated><title type='text'>DLP "Forwarding agent unavailable" error</title><content type='html'>If this error is appearing in the /var/log/mail.log of your upstream MTA, when initially setting up a DLP Network Prevent for Email in Forwarding mode, try recycling the new smtp prevent server, before trying anything else.&lt;br /&gt;&lt;br /&gt;e.g. errors like &lt;code&gt;(host #.#.#.51[#.#.#.51]&lt;br /&gt;refused to talk to me: 421 4.4.1 Fatal: Forwarding agent unavailable.  Closing connection.&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Recycling the DLP email prevent server got the following architecture to finally start working:&lt;br /&gt;&lt;br /&gt;Outlook --&gt; (port 25) Ubuntu Postfix MTA --&gt; (port 10025) DLP SMTP Prevent --&gt; (port 25) Ubuntu Postfix MTA --&gt; (port 587, TLS) GMail&lt;br /&gt;&lt;br /&gt;The upstream MTA's main.cf was configured with smtp_use_tls=no, smtp_sasl_auth_enable=no; and with relayhost=(DLP_IP):10025&lt;br /&gt;&lt;br /&gt;The DLP server's advanced configuration had RequestProcessor.MTAResubmitPort=25 (changed from default 10026). Next Hop Configuration was set to Forward with Disable MX lookup, and downstream local MTA's IP set in Hostnames.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1138208274065767718-4986231140770664551?l=awgtek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://awgtek.blogspot.com/feeds/4986231140770664551/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://awgtek.blogspot.com/2011/05/dlp-forwarding-agent-unavailable-error.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/4986231140770664551'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/4986231140770664551'/><link rel='alternate' type='text/html' href='http://awgtek.blogspot.com/2011/05/dlp-forwarding-agent-unavailable-error.html' title='DLP &quot;Forwarding agent unavailable&quot; error'/><author><name>S931Coder</name><uri>http://www.blogger.com/profile/17609807805714986516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1138208274065767718.post-2695301748835523975</id><published>2011-05-15T18:24:00.000-07:00</published><updated>2011-05-15T18:34:50.708-07:00</updated><title type='text'>Setup Postfix Ubuntu Gmail SMTP Relay</title><content type='html'>Refer to http://ubuntu-tutorials.com/2008/11/11/relaying-postfix-smtp-via-smtpgmailcom/&lt;br /&gt;&lt;br /&gt;On clean Ubuntu (natty) 11.04 (with ssh and aptitude installed, and as root)&lt;br /&gt; &lt;br /&gt;aptitude install postfix libsasl2 ca-certificate libsasl2-modules &lt;br /&gt;&lt;br /&gt;During Postfix Configuration Package configuration wizard&lt;br /&gt;On first page, choose "Internet with smarthost"&lt;br /&gt;For SMTP relay host enter: [smtp.gmail.com]:587&lt;br /&gt; (brackets are to avoid mx lookups)&lt;br /&gt;&lt;br /&gt;paste in /etc/postfix/main.cf:&lt;br /&gt;&lt;br /&gt;smtp_sasl_auth_enable = yes&lt;br /&gt;smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd&lt;br /&gt;smtp_sasl_security_options = noanonymous&lt;br /&gt;smtp_tls_CAfile = /etc/ssl/certs/Equifax_Secure_CA.pem&lt;br /&gt;smtp_use_tls = yes&lt;br /&gt;&lt;br /&gt;while still in main.cf, add your local IP network to the mynetworks variable&lt;br /&gt;&lt;br /&gt;create /etc/postfix/sasl_passwd with the following contents:&lt;br /&gt;&lt;br /&gt;[smtp.gmail.com]:587    user.name@gmail.com:password&lt;br /&gt;&lt;br /&gt;do:&lt;br /&gt;&lt;br /&gt;chmod 400 /etc/postfix/sasl_passwd&lt;br /&gt;postmap /etc/postfix/sasl_passwd&lt;br /&gt;&lt;br /&gt;/etc/init.d/postfix reload&lt;br /&gt;&lt;br /&gt;Now test:&lt;br /&gt;&lt;br /&gt;telnet postfixserverip 25&lt;br /&gt;ehlo anything.com&lt;br /&gt;mail from:me@whatever.com&lt;br /&gt;rcpt to:someone@somewhere.com notify=success,failure&lt;br /&gt;data&lt;br /&gt;subject:Test from awgtek&lt;br /&gt;&lt;br /&gt;This is a test message&lt;br /&gt;&lt;br /&gt;.&lt;br /&gt;quit&lt;br /&gt;&lt;br /&gt;check someone@somewhere.com's email to see if message arrived&lt;br /&gt;check for errors in /var/log/mail.log&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1138208274065767718-2695301748835523975?l=awgtek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://awgtek.blogspot.com/feeds/2695301748835523975/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://awgtek.blogspot.com/2011/05/setup-postfix-ubuntu-gmail-smtp-relay.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/2695301748835523975'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/2695301748835523975'/><link rel='alternate' type='text/html' href='http://awgtek.blogspot.com/2011/05/setup-postfix-ubuntu-gmail-smtp-relay.html' title='Setup Postfix Ubuntu Gmail SMTP Relay'/><author><name>S931Coder</name><uri>http://www.blogger.com/profile/17609807805714986516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1138208274065767718.post-251166019613093398</id><published>2011-03-10T19:27:00.000-08:00</published><updated>2011-05-30T15:14:49.804-07:00</updated><title type='text'>After DLP DB install, start database if necessary</title><content type='html'>Was getting errors when verifying the Symantec Data Loss Prevention database. When I would type the command &lt;code&gt;$ORACLE_HOME/bin/lsnrctl services LISTENER&lt;/code&gt; I would get &lt;code&gt;The listener supports no services&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;This can happen if for some reason the database has not started.&lt;br /&gt;&lt;br /&gt;Try starting the database:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$ sqlplus '/ as sysdba'&lt;/code&gt;&lt;br /&gt;Then, enter&lt;br /&gt;&lt;code&gt;startup&lt;/code&gt; at the SQL prompt.&lt;br /&gt;&lt;br /&gt;Once the database has started, verification succeeds!&lt;br /&gt;&lt;br /&gt;See &lt;a href="http://www.thegeekstuff.com/2009/01/oracle-database-startup-and-shutdown-procedure/"&gt;http://www.thegeekstuff.com/2009/01/oracle-database-startup-and-shutdown-procedure/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Notes:&lt;br /&gt;&lt;br /&gt;If you get "TNS-12541: TNS:no listener" when running the first command above, try doing: &lt;code&gt;$ORACLE_HOME/bin/lsnrctl start&lt;/code&gt; :)&lt;br /&gt;After that, you may need to restart the Vontu services. Then you should be able to login to https://vontuIP/ or https://vontuIP:8443&lt;br /&gt;&lt;br /&gt;Here's a quick script to restart the services on the Enforce server. Add VontuMonitor.sh if single-tier:&lt;br /&gt;&lt;code&gt;cd /opt/Vontu/Protect/bin&lt;br /&gt;&lt;br /&gt;  ./VontuUpdate.sh stop&lt;br /&gt;  ./VontuIncidentPersister.sh stop&lt;br /&gt;  ./VontuManager.sh stop&lt;br /&gt;  ./VontuMonitorController.sh stop&lt;br /&gt;  ./VontuNotifier.sh stop&lt;br /&gt;  ./VontuNotifier.sh start&lt;br /&gt;  ./VontuManager.sh start&lt;br /&gt;  ./VontuIncidentPersister.sh start&lt;br /&gt;  ./VontuUpdate.sh start&lt;br /&gt;  ./VontuMonitorController.sh start&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1138208274065767718-251166019613093398?l=awgtek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://awgtek.blogspot.com/feeds/251166019613093398/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://awgtek.blogspot.com/2011/03/after-dlp-db-install-start-database-if.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/251166019613093398'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/251166019613093398'/><link rel='alternate' type='text/html' href='http://awgtek.blogspot.com/2011/03/after-dlp-db-install-start-database-if.html' title='After DLP DB install, start database if necessary'/><author><name>S931Coder</name><uri>http://www.blogger.com/profile/17609807805714986516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1138208274065767718.post-111775258015802212</id><published>2011-03-06T16:49:00.000-08:00</published><updated>2011-05-30T17:16:54.709-07:00</updated><title type='text'>Three-tier DLP Installation - The Oracle Client</title><content type='html'>There is little in the way of documentation for this.&lt;br /&gt;&lt;br /&gt;So, I unwrapped Oracle_11.2.0.1.0_64bit_Client_Lin. Start reading the docs, i.e., the Client Quick Installation Guide. Followed all the instructions in there, including creating the oracle account, etc. For user oracle creation, running oracle_prepare.sh from 11g_r2_32_bit_Installation_Tools.tar.gz works.&lt;br /&gt;&lt;br /&gt;Then in order to get past the DLP installation wizard's Oracle page, i.e. error  "sqlplus is not executable at /opt/oracle/product/11.2.0/db_1/bin", I needed to do the following for the root account:&lt;br /&gt;&lt;br /&gt;If you did not install the Oracle client to /opt/oracle/product/11.2.0/db_1/ then perform the following.&lt;br /&gt;Add the following lines to the root .bash_profile:&lt;br /&gt;&lt;code&gt;export ORACLE_BASE=/u01/app/oracle&lt;br /&gt;export ORACLE_HOME=/u01/app/oracle/product/11.2.0/client_1&lt;br /&gt;LD_LIBRARY_PATH=$ORACLE_HOME:/lib:/usr/lib&lt;br /&gt;LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib&lt;br /&gt;export LD_LIBRARY_PATH&lt;br /&gt;&lt;br /&gt;PATH=$PATH:$HOME/bin:$ORACLE_HOME&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Then,&lt;br /&gt;&lt;code&gt;. ~/.bash_profile&lt;/code&gt; to set the environment.&lt;br /&gt;Then, &lt;code&gt;&lt;br /&gt;mkdir $ORACLE_HOME/bin&lt;br /&gt; cd $ORACLE_HOME/bin&lt;br /&gt; ln -s ../sqlplus&lt;br /&gt;mkdir $ORACLE_HOME/lib&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Copy all *.so, and so.11.1 files to $ORACLE_HOME/lib&lt;br /&gt;I also created $ORACLE_HOME/jdbc/lib and to it copied ojdbc*.jar from $ORACLE_HOME.&lt;br /&gt;&lt;br /&gt;Be sure to:&lt;br /&gt;&lt;br /&gt;set the Base directory and Home directory to match the ORACLE_HOME and ORACLE_BASE paths above in the installation wizard of DLP.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1138208274065767718-111775258015802212?l=awgtek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://awgtek.blogspot.com/feeds/111775258015802212/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://awgtek.blogspot.com/2011/03/three-tier-dlp-installation-oracle.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/111775258015802212'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/111775258015802212'/><link rel='alternate' type='text/html' href='http://awgtek.blogspot.com/2011/03/three-tier-dlp-installation-oracle.html' title='Three-tier DLP Installation - The Oracle Client'/><author><name>S931Coder</name><uri>http://www.blogger.com/profile/17609807805714986516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1138208274065767718.post-4336754384206720837</id><published>2011-01-22T13:17:00.000-08:00</published><updated>2011-01-22T14:07:38.539-08:00</updated><title type='text'>SSH Access to PIX</title><content type='html'>First generate a public key:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;ca gen rsa key 1024&lt;/code&gt;&lt;br /&gt;or 512 or 768 for modulus size (less secure)&lt;br /&gt;&lt;br /&gt;&lt;code&gt;ca save all&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;ssh 0.0.0.0 0.0.0.0 inside&lt;/code&gt;&lt;br /&gt;or outside&lt;br /&gt;&lt;code&gt;ssh timeout 60&lt;/code&gt;&lt;br /&gt;&lt;code&gt;passwd mypassword123&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Then ssh in with user: pix&lt;br /&gt;&lt;br /&gt;ref:&lt;br /&gt;see http://www.ciscopress.com/articles/article.asp?p=24664&amp;seqNum=5&lt;br /&gt;http://www.velocityreviews.com/forums/t57033-ssh-on-pix-506e-login-name.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1138208274065767718-4336754384206720837?l=awgtek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://awgtek.blogspot.com/feeds/4336754384206720837/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://awgtek.blogspot.com/2011/01/ssh-access-to-pix.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/4336754384206720837'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/4336754384206720837'/><link rel='alternate' type='text/html' href='http://awgtek.blogspot.com/2011/01/ssh-access-to-pix.html' title='SSH Access to PIX'/><author><name>S931Coder</name><uri>http://www.blogger.com/profile/17609807805714986516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1138208274065767718.post-393697036942210648</id><published>2010-10-16T08:38:00.000-07:00</published><updated>2010-10-16T08:54:30.583-07:00</updated><title type='text'>WSS Inaccessible after Windows Updates</title><content type='html'>After a scheduled Windows Update, several WSS sites became inaccessible. The Application Event Log contained events like:&lt;code&gt;Unknown SQL Exception 33002 occured. Additional error information from SQL Server is included below.&lt;br /&gt;&lt;br /&gt;Access to module dbo.proc_GetRunnableWorkItems is blocked because the signature is not valid.&lt;/code&gt;&lt;br /&gt;I got similar errors when attempting to open any of the tables of the affected content databases in the embedded SQL Server (SSMS to \\.\pipe\MSSQL$MICROSOFT##SSEE\sql\query).&lt;br /&gt;Relatedly, WSS creates copious logs at&lt;br /&gt;C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\LOGS whenever anything goes wrong with one of the WSS services, which fills up the hard drive. This may have had something to do with the failed update.&lt;br /&gt;&lt;br /&gt;Anyway, after much googling and trying various solutions, some of which did more harm than good, I followed one suggestion and tried running the following command:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\BIN&gt;PSCO&lt;br /&gt;NFIG -cmd upgrade -inplace b2b -wait -force&lt;/code&gt;&lt;br /&gt;After some time, the operation completed and all my sites were oparational!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1138208274065767718-393697036942210648?l=awgtek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://awgtek.blogspot.com/feeds/393697036942210648/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://awgtek.blogspot.com/2010/10/wss-inaccessible-after-windows-updates.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/393697036942210648'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/393697036942210648'/><link rel='alternate' type='text/html' href='http://awgtek.blogspot.com/2010/10/wss-inaccessible-after-windows-updates.html' title='WSS Inaccessible after Windows Updates'/><author><name>S931Coder</name><uri>http://www.blogger.com/profile/17609807805714986516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1138208274065767718.post-2089510234962917349</id><published>2010-09-25T15:05:00.000-07:00</published><updated>2010-09-25T19:42:55.261-07:00</updated><title type='text'>Missing GPOs After DC Decommission</title><content type='html'>I followed the standard Microsoft method for &lt;a href="http://technet.microsoft.com/en-us/library/cc755937(WS.10).aspx"&gt;decommissioning a domain controller&lt;/a&gt;. After retiring the server from lab, to my consternation, I started getting errors such as the following, for instance, when running gpupdate /force from a member workstation:&lt;code&gt;The processing of Group Policy failed. Windows attempted to read the file \\my.domain\sysvol\my.domain\Policies\{31B2F340-016D-11D2-945F-00C04FB984F9}\gpt.i&lt;br /&gt;ni from a domain controller and was not successful. Group Policy settings may no&lt;br /&gt;t be applied until this event is resolved. This issue may be transient and could&lt;br /&gt; be caused by one or more of the following:&lt;br /&gt;a) Name Resolution/Network Connectivity to the current domain controller.&lt;br /&gt;b) File Replication Service Latency (a file created on another domain controller&lt;br /&gt; has not replicated to the current domain controller).&lt;br /&gt;c) The Distributed File System (DFS) client has been disabled.&lt;/code&gt;&lt;br /&gt;I found out that all the GPOs were missing from \\my.domain\sysvol\my.domain\policies. In fact even the policies folder was missing until and I created a couple of new GPOs in gpmc.msc. &lt;br /&gt;The only way to fix things now is delete the dangling referenced GPOs from Group Policy Management (for which there is no corresponding ID file in the policies folder), and recreate them. I should have either backed up the DC or the GPOs individually so that I could &lt;a href="http://technet.microsoft.com/en-us/library/cc781458(WS.10).aspx"&gt;restore&lt;/a&gt; them.&lt;br /&gt;I followed the decommision procedure to a tee, however, I did encounter errors which I assumed were cleared up after fixing them...but apparently not.&lt;br /&gt;&lt;br /&gt;Other symptoms of this problem: when you right click the policy in Group Policy Management and click edit, this error message appears: &lt;code&gt;"Failed to open the group policy object. You may not have appropriate rights." "Details: the system cannot find the path specified." &lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Besides the missing GPOs, the NetLogon share was missing as well. This was solved by creating a folder called "Scripts" in \\my.domain\sysvol\my.domain and rebooting the computer.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1138208274065767718-2089510234962917349?l=awgtek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://awgtek.blogspot.com/feeds/2089510234962917349/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://awgtek.blogspot.com/2010/09/missing-gpos-after-dc-decommission.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/2089510234962917349'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/2089510234962917349'/><link rel='alternate' type='text/html' href='http://awgtek.blogspot.com/2010/09/missing-gpos-after-dc-decommission.html' title='Missing GPOs After DC Decommission'/><author><name>S931Coder</name><uri>http://www.blogger.com/profile/17609807805714986516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1138208274065767718.post-7615964228167772036</id><published>2010-09-19T13:44:00.000-07:00</published><updated>2010-09-19T17:23:26.270-07:00</updated><title type='text'>gSOAP Client Setup Steps</title><content type='html'>My environment is Vista x64, Visual Studio 2008&lt;br /&gt;&lt;br /&gt;Download gSoap from here: http://www.cs.fsu.edu/~engelen/soap.html. I downloaded gsoap_2.8.0.&lt;br /&gt;open command prompt and change to gsoap_2.8.0\gsoap-2.8\gsoap\bin\win32&lt;br /&gt;enter: wsdl2h -c -o iptocountry.h http://www.ecubicle.net/iptocountry.asmx?wsdl&lt;br /&gt;&lt;br /&gt;enter: soapcpp2 -c -C iptocountry.h&lt;br /&gt;&lt;br /&gt;Create a new Visual Studio 2008 Visual C++ Win32 Console Application with Empty project selected (no Precompiled header)&lt;br /&gt;&lt;br /&gt;Copy the following files generated above by gsoap to your VS project directory (with the .vcproj). &lt;br /&gt;&lt;br /&gt;files to copy: iptocountrySoap12.nsmap, soapC.c, soapClient.c, soapH.h, soapStub.h&lt;br /&gt;&lt;br /&gt;Copy stdsoap2.c and stdsoap2.h to your VS project directory from gsoap_2.8.0\gsoap-2.8\gsoap\&lt;br /&gt;&lt;br /&gt;Include the files in your project&lt;br /&gt;&lt;br /&gt;Add a file called myclient.c to your project with the following contents:&lt;br /&gt;&lt;code&gt;#include "soapH.h" // obtain the generated stub  &lt;br /&gt;#include "iptocountrySoap12.nsmap"&lt;br /&gt;main()  &lt;br /&gt;{  &lt;br /&gt;   struct soap *soap = soap_new(); &lt;br /&gt;   struct _ns1__FindCountryAsString *_myipv4address;&lt;br /&gt;   struct _ns1__FindCountryAsStringResponse *myresponse;&lt;br /&gt;   char text[20];   &lt;br /&gt;    &lt;br /&gt;   _myipv4address = (struct _ns1__FindCountryAsString *)malloc(sizeof(struct _ns1__FindCountryAsString));&lt;br /&gt;    myresponse = (struct _ns1__FindCountryAsStringResponse *)malloc(sizeof(struct _ns1__FindCountryAsStringResponse));&lt;br /&gt;&lt;br /&gt;   fputs("enter an IP: ", stdout);   &lt;br /&gt;   fflush(stdout);   &lt;br /&gt;   if ( fgets(text, sizeof text, stdin) != NULL )   &lt;br /&gt;   {      &lt;br /&gt;       char *newline = strchr(text, '\n'); /* search for newline character */      &lt;br /&gt;       if ( newline != NULL )      &lt;br /&gt;       {         &lt;br /&gt;           *newline = '\0'; /* overwrite trailing newline */      &lt;br /&gt;       }      &lt;br /&gt;       printf("text = \"%s\"\n", text);   &lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   _myipv4address-&gt;V4IPAddress = text; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   if (soap_call___ns2__FindCountryAsString(soap, NULL, NULL, _myipv4address, myresponse) == SOAP_OK)  &lt;br /&gt;       printf("Country code is = %s\n", myresponse-&gt;FindCountryAsStringResult); &lt;br /&gt;   else // an error occurred  &lt;br /&gt;      soap_print_fault(soap, stderr); // display the SOAP fault on the stderr stream  &lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Compile.&lt;br /&gt;&lt;br /&gt;If you have installed a Microsoft Windows 7 SDK and are getting "fatal error LNK1104: cannot open file 'kernel32.lib'" try adding the path to the SDK lib (e.g. C:\Program Files\Microsoft SDKs\Windows\v7.1\Lib) to your project Configuration Properties \ Linker \ General \ Additional Library Directories.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1138208274065767718-7615964228167772036?l=awgtek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://awgtek.blogspot.com/feeds/7615964228167772036/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://awgtek.blogspot.com/2010/09/gsoap-client-setup-steps.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/7615964228167772036'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/7615964228167772036'/><link rel='alternate' type='text/html' href='http://awgtek.blogspot.com/2010/09/gsoap-client-setup-steps.html' title='gSOAP Client Setup Steps'/><author><name>S931Coder</name><uri>http://www.blogger.com/profile/17609807805714986516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1138208274065767718.post-871546663612043063</id><published>2010-08-24T21:31:00.000-07:00</published><updated>2010-08-31T14:57:31.442-07:00</updated><title type='text'>Sharepoint 2010 ASP.NET Impersonation</title><content type='html'>I was getting&lt;br /&gt;&lt;br /&gt;"Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'&lt;br /&gt;&lt;br /&gt;when attempting to access my list linked to an external content type, a remote SQL Server Database.&lt;br /&gt;&lt;br /&gt;To resolve the issue, I opened IIS 7 \ Sites \ SharePoint - 80 \ Authentication \ ASP.NET Impersonation \ edit, then added a domain account here that could access the SQL Server.&lt;br /&gt;&lt;br /&gt;I'm sure this might not be the best practice, security-wise, but hey, at least now it works!&lt;br /&gt;&lt;br /&gt;Oh, to even get as far as the above login failed error, I had to do:&lt;br /&gt;&lt;br /&gt;Central Administration \ Manage service applications \ Business Data Connectivity Service \ [my external content type] \ Set Object Permissions, then add the above domain account.&lt;br /&gt;&lt;br /&gt;---&lt;br /&gt;Update:&lt;br /&gt;&lt;br /&gt;Trying on another machine in a different domain now and got: "access denied by business data connectivity"&lt;br /&gt;when trying to add a connection to the External Content Types.&lt;br /&gt;Solved by going to Central Administration \ Manage service applications \ Business Data Connectivity Service \ Set Metadata Store Permissions, and adding my domain account with all available permissions.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1138208274065767718-871546663612043063?l=awgtek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://awgtek.blogspot.com/feeds/871546663612043063/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://awgtek.blogspot.com/2010/08/sharepoint-2010-aspnet-impersonation.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/871546663612043063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/871546663612043063'/><link rel='alternate' type='text/html' href='http://awgtek.blogspot.com/2010/08/sharepoint-2010-aspnet-impersonation.html' title='Sharepoint 2010 ASP.NET Impersonation'/><author><name>S931Coder</name><uri>http://www.blogger.com/profile/17609807805714986516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1138208274065767718.post-3625361936286420578</id><published>2010-08-24T12:43:00.000-07:00</published><updated>2010-08-24T12:50:20.882-07:00</updated><title type='text'>ORM LINQ Style</title><content type='html'>I'm rediscovering LINQ, and came across this article - &lt;a href="http://weblogs.asp.net/scottgu/archive/2007/05/19/using-linq-to-sql-part-1.aspx "&gt;http://weblogs.asp.net/scottgu/archive/2007/05/19/using-linq-to-sql-part-1.aspx &lt;/a&gt;-  by Scott Guthrie (probably not the first time I've read this article). &lt;br /&gt;&lt;br /&gt;Ever wonder why arrows seem to point in the opposite direction in E-R diagrams? This paragraph explains it. It ties in well with O/RM, in that the mapped objects will be composed of their children. I always tended to look at it in the direction of the diamond head as more intuitive speaking of foreign keys and all.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;The arrows between the four entity classes above represent associations/relationships between the different entities.  These are typically modeled using primary-key/foreign-key relationships in the database.  The direction of the arrows on the design-surface indicate whether the association is a one-to-one or one-to-many relationship.  Strongly-typed properties will be added to the entity classes based on this.  For example, the Category class above has a one-to-many relationship with the Product class.  This means it will have a "Categories" property which is a collection of Product objects within that category.  The Product class then has a "Category" property that points to a Category class instance that represents the Category to which the Product belongs.&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1138208274065767718-3625361936286420578?l=awgtek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://awgtek.blogspot.com/feeds/3625361936286420578/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://awgtek.blogspot.com/2010/08/orm-linq-style.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/3625361936286420578'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/3625361936286420578'/><link rel='alternate' type='text/html' href='http://awgtek.blogspot.com/2010/08/orm-linq-style.html' title='ORM LINQ Style'/><author><name>S931Coder</name><uri>http://www.blogger.com/profile/17609807805714986516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1138208274065767718.post-4959461384354440286</id><published>2010-08-08T01:25:00.000-07:00</published><updated>2010-08-08T01:33:15.598-07:00</updated><title type='text'>I Discover DCI</title><content type='html'>I just now discovered DCI; see &lt;a href="http://www.artima.com/articles/dci_vision.html"&gt;http://www.artima.com/articles/dci_vision.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;All I can say is, it's about freakin' time! For too long we programmers have struggled with staying true to OO, but faltering because as a model OO does not provide an adequate place to store algorithms. That's why of late, I have been putting the algorithms in stored procedures. Hey maybe that's a DCI best practice! Too early to tell. Hopefully a language comes out that supports DCI.&lt;br /&gt;&lt;br /&gt;BTW, is Trygve Reenskaug a god or what?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1138208274065767718-4959461384354440286?l=awgtek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://awgtek.blogspot.com/feeds/4959461384354440286/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://awgtek.blogspot.com/2010/08/i-discover-dci.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/4959461384354440286'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/4959461384354440286'/><link rel='alternate' type='text/html' href='http://awgtek.blogspot.com/2010/08/i-discover-dci.html' title='I Discover DCI'/><author><name>S931Coder</name><uri>http://www.blogger.com/profile/17609807805714986516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1138208274065767718.post-760001170351509666</id><published>2010-07-31T23:56:00.000-07:00</published><updated>2010-08-01T00:09:45.162-07:00</updated><title type='text'>Controller Example</title><content type='html'>Found a good example of the notion of controller of the MVC:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;strong&gt;they handle web requests and URLs of the request map to a controller class and a closure within the class&lt;/strong&gt; &lt;/blockquote&gt;&lt;a href="http://grails.org/Quick+Start"&gt;http://grails.org/Quick+Start&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Essentialy it's &lt;em&gt;the thing you need&lt;/em&gt; (generated automatically in this case, i.e. grails) to map a URL, crafted according to the conventions of the current framework in use, to a desired output. So &lt;code&gt;http://localhost:8080/my-project/book/list&lt;/code&gt; maps to an output containing a list of book items.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1138208274065767718-760001170351509666?l=awgtek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://awgtek.blogspot.com/feeds/760001170351509666/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://awgtek.blogspot.com/2010/07/controller-example.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/760001170351509666'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/760001170351509666'/><link rel='alternate' type='text/html' href='http://awgtek.blogspot.com/2010/07/controller-example.html' title='Controller Example'/><author><name>S931Coder</name><uri>http://www.blogger.com/profile/17609807805714986516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1138208274065767718.post-3718436215799993080</id><published>2010-07-25T21:02:00.000-07:00</published><updated>2010-07-25T23:09:17.916-07:00</updated><title type='text'>Using WDS for VMware Server Deployment</title><content type='html'>The goal was to follow this excellent walk-through -- http://www.oakdome.com/lab/?page_id=78 -- to capture and deploy a Windows XP image (as a test) from and to a guest in the free VMware Server.&lt;br /&gt;&lt;br /&gt;Everything went real well except for a few stumbling blocks.&lt;br /&gt;&lt;br /&gt;First, I found out through much googling that it's acceptable, even preferred to run the WDS on a separate server than the DHCP server. Perfect. My DHCP server is a CISCO router anyway. For some reason I thought they had to be on the same server and a Windows one at that.&lt;br /&gt;&lt;br /&gt;Then, I had to setup the guest to use the right nic. Again, I found out that I need to run Manage Virtual Networks as Administrator (on Vista) or else the Automatic Bridging options are greyed out.&lt;br /&gt;&lt;br /&gt;Then I learned through a few threads on social technet that the reason the Windows Deployment Services Image Capture Wizard would freeze after checking the Upload image to WDS server checkbox and entering the server name is because the network connection is not setup. I hit shift-F10 and did ipconfig, and there was no network. The solution is to export the currently loaded boot image from the WDS to a temp directory. Then make sure you have WAIK (for Vista) installed on the WDS or another server to which you copy the wim file image. Then copy all the files from C:\Program Files\VMware\VMware Tools\Drivers\vmxnet to c:\temp\vmxnet. Then &lt;code&gt;C:\Program Files\Windows AIK\Tools\PETools&gt;imagex /mountrw c:\capture\capturebootimage.WIM 1 c:\image&lt;/code&gt;&lt;br /&gt;Then&lt;br /&gt;&lt;code&gt;C:\Program Files\Windows AIK\Tools\PETools&gt;peimg /inf=c:\temp\vmxnet\*.inf /image=c:\image\Windows&lt;/code&gt;&lt;br /&gt;Then &lt;code&gt;C:\Program Files\Windows AIK\Tools\PETools&gt;imagex /unmount /commit c:\image&lt;/code&gt;&lt;br /&gt;Then copy back the image, and reimport it into the boot images of WDS, naming it something like "Boot image with VMXnet drivers." Then when you PXE boot choose that image from the menu. &lt;br /&gt;&lt;br /&gt;This same process has to be done for the deployment image. But this time, since you are using the Vista boot image, the command has to be run from a Vista or later OS apparently, or else you get &lt;code&gt;PEIMG failed to complete the operation with status code 0x800703fb.&lt;/code&gt; when attempting to inject the drivers. I managed to inject the drivers by installing WAIK on a Windows 7 Ultimate VM, with VMware tools installed, from which I injected the vmxnet drivers. Be sure to do &lt;code&gt;c:\windows\system32&gt;imagex /mountrw c:\temp\boot.wim 2 c:\image&lt;/code&gt; -- Note the "2." Evidentally, there's a second image in the boot.wim that came with the Vista sources, which contains the WDS image. Note that the boot.wim file was copied from the Vista 32 DVD sources NOT the Windows 7 sources. The latter will not work.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1138208274065767718-3718436215799993080?l=awgtek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://awgtek.blogspot.com/feeds/3718436215799993080/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://awgtek.blogspot.com/2010/07/using-wds-for-vmware-server-deployment.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/3718436215799993080'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/3718436215799993080'/><link rel='alternate' type='text/html' href='http://awgtek.blogspot.com/2010/07/using-wds-for-vmware-server-deployment.html' title='Using WDS for VMware Server Deployment'/><author><name>S931Coder</name><uri>http://www.blogger.com/profile/17609807805714986516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1138208274065767718.post-3820827292228298156</id><published>2010-07-06T21:48:00.000-07:00</published><updated>2010-07-06T21:54:19.758-07:00</updated><title type='text'>Set clientJsLocation when using HTML_AJAX in XAMPP</title><content type='html'>Please remember to set clientJsLocation, e.g.: &lt;code&gt;&lt;br /&gt;$server-&gt;setClientJsLocation('C:/xampp/php/PEAR/data/HTML_AJAX/js/');&lt;/code&gt;&lt;br /&gt; &lt;br /&gt;Or else, you will get an error like: &lt;code&gt;Unable to find javascript file: .\pear\data\HTML_AJAX\js\HTML_AJAX.js&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;HTML_AJAX 0.5.6 with XAMPP 1.7.3. &lt;br /&gt;&lt;br /&gt;The only thing I can think of that causes this is reinstalling HTML_AJAX-beta via pear install? Otherwise, I guess it's understand we should always set the path. Now you know. (speaking to self)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1138208274065767718-3820827292228298156?l=awgtek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://awgtek.blogspot.com/feeds/3820827292228298156/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://awgtek.blogspot.com/2010/07/set-clientjslocation-when-using.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/3820827292228298156'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/3820827292228298156'/><link rel='alternate' type='text/html' href='http://awgtek.blogspot.com/2010/07/set-clientjslocation-when-using.html' title='Set clientJsLocation when using HTML_AJAX in XAMPP'/><author><name>S931Coder</name><uri>http://www.blogger.com/profile/17609807805714986516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1138208274065767718.post-7147371596342249129</id><published>2010-07-02T13:40:00.000-07:00</published><updated>2010-07-02T16:16:56.027-07:00</updated><title type='text'>WSS 3.0 Incoming Email -- Must use FQDN</title><content type='html'>I wanted to be able to send email from my Outlook to a WSS discussion list. After much testing and troubleshooting with various configurations (and a lot of googling) I came to realize that (barring any workarounds that I'm not aware of) the CA - Operations - Incoming E-Mail Settings - &lt;em&gt;E-mail server display address&lt;/em&gt; MUST match the machine FQDN! It cannot be the machine's DNS name. I tried adding the DNS name of the machine here, and email would just get bounced back (or get stuck in the Queue since I didn't have the smart host configured and this is not an Exchange server).&lt;br /&gt;&lt;br /&gt;So as a result, I can send email using discussions@mymachine.fq.dn -- but NOT discussions@mymachine.dns.name.&lt;br /&gt;&lt;br /&gt;I'm sure there are workarounds, but they might involve fiddling with Exchange servers and/or DNS servers that are outside of my control.&lt;br /&gt;&lt;br /&gt;Now that I think about it, it makes sense that the WSS doesn't understand the DNS implications; why should it? On the other hand, why &lt;em&gt;can't&lt;/em&gt; WSS figure out that mymachine.dns.name is the local server? Hmmmmm. Perhaps it's an IIS 6 SMTP limitation...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1138208274065767718-7147371596342249129?l=awgtek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://awgtek.blogspot.com/feeds/7147371596342249129/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://awgtek.blogspot.com/2010/07/wss-30-incoming-email-must-use-fqdm.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/7147371596342249129'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/7147371596342249129'/><link rel='alternate' type='text/html' href='http://awgtek.blogspot.com/2010/07/wss-30-incoming-email-must-use-fqdm.html' title='WSS 3.0 Incoming Email -- Must use FQDN'/><author><name>S931Coder</name><uri>http://www.blogger.com/profile/17609807805714986516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1138208274065767718.post-4258290254440376181</id><published>2010-06-05T11:48:00.000-07:00</published><updated>2010-06-05T12:58:10.061-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MySQL'/><category scheme='http://www.blogger.com/atom/ns#' term='indexes'/><category scheme='http://www.blogger.com/atom/ns#' term='relational'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='RDBMS'/><title type='text'>MyEDB - NO Indexes to be Managed</title><content type='html'>This is because in My Entity Database all Entities are defined in a single index table called &lt;i&gt;entity&lt;/i&gt;, which provides the link between the types and properties. The actual values of an entity reside in type tables which themselves are all indexed on their value column. &lt;br /&gt;&lt;br /&gt;So, no indexes to add and manage. That eliminates probably 50% of a DBA's duties...&lt;br /&gt;&lt;br /&gt;ref: http://myedb.blogspot.com/2010/06/myedb-no-indexes-to-be-managed.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1138208274065767718-4258290254440376181?l=awgtek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://awgtek.blogspot.com/feeds/4258290254440376181/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://awgtek.blogspot.com/2010/06/myedb-no-indexes-to-be-managed.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/4258290254440376181'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/4258290254440376181'/><link rel='alternate' type='text/html' href='http://awgtek.blogspot.com/2010/06/myedb-no-indexes-to-be-managed.html' title='MyEDB - NO Indexes to be Managed'/><author><name>S931Coder</name><uri>http://www.blogger.com/profile/17609807805714986516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1138208274065767718.post-3363093559288606347</id><published>2010-06-04T07:28:00.000-07:00</published><updated>2010-06-04T07:34:34.154-07:00</updated><title type='text'>Errors when adding FormView to SmartPart with AJAX</title><content type='html'>When I added a FormView control embedded in an UpdatePanel in a User Control, in a SmartPart with AJAX I got the following error when attempting to switch to Edit mode:&lt;br /&gt;&lt;code&gt;Sys.InvalidOperationException: Could not find UpdatePanel with ID 'ctl00_ctl00_xxxx'. If it is being updated dynamically then it must be inside another UpdatePanel.&lt;/code&gt;&lt;br /&gt;I never did find a solution to this problem. But I found that if I cleared out the web parts out of the Web Part zone, then readded the smart part that appears to have fixed the issue. &lt;br /&gt;&lt;br /&gt;I did run into other issues when adding multiple AJAX-enabled SmartParts to a Web Part zone, such as the entire zone blanking out other than the one control when switching to Edit Mode. Again, clearing out the controls and re-adding them, seems to resolve these issues, although I fear they'll crop up again...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1138208274065767718-3363093559288606347?l=awgtek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://awgtek.blogspot.com/feeds/3363093559288606347/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://awgtek.blogspot.com/2010/06/errors-when-adding-formview-to.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/3363093559288606347'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/3363093559288606347'/><link rel='alternate' type='text/html' href='http://awgtek.blogspot.com/2010/06/errors-when-adding-formview-to.html' title='Errors when adding FormView to SmartPart with AJAX'/><author><name>S931Coder</name><uri>http://www.blogger.com/profile/17609807805714986516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1138208274065767718.post-760648408940903642</id><published>2010-05-23T11:38:00.000-07:00</published><updated>2010-05-23T14:45:46.125-07:00</updated><title type='text'>The Original MVC</title><content type='html'>The MVC is the object of somewhat of a religious ferver in the web development community. Many frameworks -- e.g. Zend Framework, CodeIgniter, etc. -- appear to me to be attempts at literal instantiations of the paradigm. Those frameworks have little appeal to me because they lock the developer into this single way of doing things. When the inevitable time comes that that way is not appropriate, the developer must resort to the framework's many workarounds, e.g. helpers or plugins (to plug the leaks? :)), extended classes, or hacks.&lt;br /&gt;&lt;br /&gt;I wondered if the MVC is being used as it was originally intended so I researched it and read some of the creator's comments. &lt;br /&gt;&lt;br /&gt;The MVC wasn't even called the model-view-controller; originally it was the model-view-editor. Additionally it was conceived by Trygve M. H. Reenskaug to solve the problem of network problems of the yards of the Aker Group in Norway. I think the idea got over-subscribed to by wannabe developer purists and their disciples, and as a consequence was bastardized into the impractacal forms we see depicted today around the internet. &lt;br /&gt;&lt;br /&gt;Now, I admit, I haven't done complete dilligence on this research and so my conclusions may be premature or inaccurate. But when I see what I perceive to be serious inconsistencies between a implementations/interpretations of a model, I have to question whether the model as we know it is itself in its purest form.&lt;br /&gt;&lt;br /&gt;For example, the Zend Framework, in which I'm no expert, apparently presupposes a single view delivered to a user at one time. If the model data must be aspected on the page, the developer has to use helpers or the ActionStack or some other hack to get the data on the page. I think this is a too-strict, too-literal, and consequently untenable, implementation of the MVC.&lt;br /&gt;&lt;br /&gt;By contrast, the author of MVC appears to indicate multiple views presented can be the norm:&lt;br /&gt;&lt;cite&gt;A user task may commonly be better performed with several Views present on the screen at the same time. The user will want to manipulate these Views through pointing at them, through selection in menus, or through some other means. Commands like selection typically apply to several Views at the same time. The purpose of an Editor is to establish and position a given set of Views on the screen, to coordinate them and to provide the user with a suitable command interface.&lt;/cite&gt;&lt;br /&gt;&lt;br /&gt;Some comments by Reenskaug lead me to wonder whether the MVC or MVE is applicable to web development at all:&lt;br /&gt;&lt;cite&gt;Conversely, a view should never know about user input, such as mouse operations and keystrokes. It should always be possible to write a method in a controller that sends messages to views which exactly reproduce any sequence of user commands.&lt;/cite&gt; &lt;a href="http://heim.ifi.uio.no/~trygver/2007/MVC_Originals.pdf"&gt;http://heim.ifi.uio.no/~trygver/2007/MVC_Originals.pdf&lt;/a&gt;&lt;br /&gt;How can we conclude that a PHP script can be an implementation of a "view" then? Is this what Reenskaug meant when he referred to the "perverted variants" of his model found in texts? &lt;a href="http://heim.ifi.uio.no/~trygver/"&gt;http://heim.ifi.uio.no/~trygver/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1138208274065767718-760648408940903642?l=awgtek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://awgtek.blogspot.com/feeds/760648408940903642/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://awgtek.blogspot.com/2010/05/original-mvc.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/760648408940903642'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/760648408940903642'/><link rel='alternate' type='text/html' href='http://awgtek.blogspot.com/2010/05/original-mvc.html' title='The Original MVC'/><author><name>S931Coder</name><uri>http://www.blogger.com/profile/17609807805714986516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1138208274065767718.post-2061081017154985538</id><published>2010-05-16T20:17:00.000-07:00</published><updated>2010-05-23T20:48:31.728-07:00</updated><title type='text'>CodeIgniter versus MyEDB</title><content type='html'>CodeIgniter like most CMS's and their underlying frameworks assumes entities are mapped to tables in relational databases. MyEDB presumes the MyEDB model of data (http://www.myedb.com).&lt;br /&gt;&lt;br /&gt;CodeIgniter like most (PHP based) CMS's assumes the view (in the MVC pattern) is composed of templates in the form of PHP files (some CMS's use non-PHP files but are nonetheless PHP interpretable in some form) which are passed parameters ala Smarty. MyEDB uses XSLT.&lt;br /&gt;&lt;br /&gt;CodeIgniter allows the user/developer to invoke a single entry point to the system through a single controller class action pair. MyEDB allows the client to invoke a series of class action pairs, in essence multi-action controllers (maybe like Spring multiactioncontrollers? but more specifically multiple controllers) to be executed iteratively in sequence through the HTTP posting of appropriately named array variables, specifically class method pairs.&lt;br /&gt;&lt;br /&gt;In CodeIgniter (and Zend Framework, and CakePHP, and... you get the picture) the view is an intrinsic component of the controller (defeating the notion of controller view independence). In MyEDB, the "view" is abstracted from the "controller" by a series of processing steps (see image below), ensuring total flexibility. In short, in MyEDB you are not chained down to a single way of doing things from an MVC perspective!&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_Zl39QP9tSP4/S_C6DmEPFXI/AAAAAAAAADI/1v_-dC84PBw/s1600/sequence.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 200px;" src="http://4.bp.blogspot.com/_Zl39QP9tSP4/S_C6DmEPFXI/AAAAAAAAADI/1v_-dC84PBw/s400/sequence.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5472078118175839602" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/myedbproj/downloads/list"&gt;MyEDB Source&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.myedb.com"&gt;myedb.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1138208274065767718-2061081017154985538?l=awgtek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://awgtek.blogspot.com/feeds/2061081017154985538/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://awgtek.blogspot.com/2010/05/codeigniter-versus-myedb.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/2061081017154985538'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/2061081017154985538'/><link rel='alternate' type='text/html' href='http://awgtek.blogspot.com/2010/05/codeigniter-versus-myedb.html' title='CodeIgniter versus MyEDB'/><author><name>S931Coder</name><uri>http://www.blogger.com/profile/17609807805714986516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_Zl39QP9tSP4/S_C6DmEPFXI/AAAAAAAAADI/1v_-dC84PBw/s72-c/sequence.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1138208274065767718.post-6672543823265280527</id><published>2010-05-06T18:33:00.000-07:00</published><updated>2010-05-08T08:05:58.841-07:00</updated><title type='text'>Uploading InfoPath Form Templates</title><content type='html'>So, I'm working through Sharepoint 2007 for Dummies, and I'm on page 200, and I go to upload my test form, and get &lt;code&gt;The restricted trust level is not supported&lt;/code&gt;. Quickly googled, and found &lt;a href="http://sharepointknowledgebase.blogspot.com/2009/03/restricted-trust-level-is-not-supported.html"&gt;http://sharepointknowledgebase.blogspot.com/2009/03/restricted-trust-level-is-not-supported.html&lt;/a&gt;. So I follow the fellow's excellent advice (Tools - Form Options - Security and Trust - Domain) and the error goes away.&lt;br /&gt;&lt;p&gt;&lt;br /&gt;But it can be that easy. I just get a new error (what do I expect right?): &lt;code&gt;The form template is not browser-compatible&lt;/code&gt;. So google around again, and finally decide to do the following: Tools - Form Options - Compatibility - (check) Design a form template that can be opened in a browser or InfoPath. Click Ok. Then an error shows up in my form. It's the combo box, apparently not supported on the web. So I delete it; error goes away.&lt;br /&gt;&lt;br /&gt;Save the form and try uploading again, first clicking Verify. Now it says &lt;code&gt;This form template has not been correctly published to be browser-enabled. Open the form template in InfoPath Design mode, and click Publish Form Template in the Design Tasks task pane. Follow the steps in the Publishing Wizard to republish the form template, and then try again.&lt;/code&gt; So I do as instructed, choosing to "Publish this form template as a template in a document library." Published it. Still get the same error. Then, I tried selecting "To a network location" and leaving the third screen in the Publishing Wizard blank per &lt;a href="http://www.novolocus.com/category/sharepoint/infopath/"&gt;http://www.novolocus.com/category/sharepoint/infopath/&lt;/a&gt;, Next, Ok, Next, publish. This saved the form again. I then tried verifying the form once more in the Upload Form Template page and it verified...I then uploaded it, got another error: &lt;code&gt;The timer job for the operation has been created. However, it cannot be run because the administrative service for this server is not enabled. To run the timer job, use the stsadm.exe command line utility (stsadm.exe -o execadmsvcjobs).&lt;/code&gt; Googled again and got &lt;a href="http://vspug.com/ssa/2007/10/22/a-deployment-or-retraction-is-already-under-way-for-the-solution-publishing-infopath-form/"&gt;http://vspug.com/ssa/2007/10/22/a-deployment-or-retraction-is-already-under-way-for-the-solution-publishing-infopath-form/&lt;/a&gt;. So I start the Windows SharePoint Services Administration service, run the stsadm.exe -o execadmsvcjobs command, check the Manage Form Templates page, but see that my form is "Installing". Found this: &lt;a href="http://www.infopathdev.com/forums/p/8034/29193.aspx"&gt;http://www.infopathdev.com/forums/p/8034/29193.aspx&lt;/a&gt;, tried the suggestions, including turning on my other sharepoint server in the farm that happened to be off, but that didn't fix it. I was able to delete the "Installing" form templates through the timer definitions page and subsequently through the Manage Form Templates. Still need to figure out why it won't finish "Installing". Later, I noticed that the second Sharepoint web frontend server is low on disk space. Checking how a 25GB drive can fill up so quickly, I used windirstat and found that C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\LOGS is taking up 21 GB of space. Huh? So I delete all those log files and try uploading again. Still getting "Installing" forever....&lt;br /&gt;Finally I decided that the second Sharepoint server, which is sitting on a VMware Workstation guest, needs to be removed from the farm as it appears to be experiencing issues, e.g. the ever-increasing logs mentioned earlier (containing entries like "Tracing Service lost trace events," as well as a failing system clock. As soon as I removed the second server, and attempted the template upload, the results were successful.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1138208274065767718-6672543823265280527?l=awgtek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://awgtek.blogspot.com/feeds/6672543823265280527/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://awgtek.blogspot.com/2010/05/uploading-infopath-form-templates.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/6672543823265280527'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/6672543823265280527'/><link rel='alternate' type='text/html' href='http://awgtek.blogspot.com/2010/05/uploading-infopath-form-templates.html' title='Uploading InfoPath Form Templates'/><author><name>S931Coder</name><uri>http://www.blogger.com/profile/17609807805714986516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1138208274065767718.post-6596586341858933670</id><published>2010-05-01T20:24:00.000-07:00</published><updated>2010-05-01T22:08:05.066-07:00</updated><title type='text'>Replacing Form Action Scripts with sed</title><content type='html'>I needed to replace all form action scripts in all my XSLT templates, specifically to make the script relative to the current path. So I did:&lt;br /&gt;&lt;code&gt;find . -name "*.xsl" -type f -exec sed -i "s#\([\"|'|&gt;]\)/index.php#\1index.php#g" {} \;&lt;/code&gt;&lt;br /&gt;There are a few of things to notice about this command: &lt;br /&gt;&lt;br /&gt;I used a double quote and not a single quote for the sed script namely because &lt;em&gt;A single quote may not occur between single quotes, even when preceded by a backslash.&lt;/em&gt; *&lt;br /&gt;&lt;br /&gt;The parenthesis required backslashes because sed apparently is not running in extended mode on my machine. &lt;br /&gt;&lt;br /&gt;The argument to sed needs to be quoted to avoid being parsed by the bash shell interpreter. Aside the from the parenthesis the only other character needing escaping is the double quote in the regex. Even the \ don't need further escaping because &lt;em&gt;a double quote string preserves the literal value of all characters except \, $, and `. The backslash has its special meaning only if followed by ", $, `, \, and newline.&lt;/em&gt;  *&lt;a href="http://answers.google.com/answers/threadview/id/496910.html"&gt;http://answers.google.com/answers/threadview/id/496910.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1138208274065767718-6596586341858933670?l=awgtek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://awgtek.blogspot.com/feeds/6596586341858933670/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://awgtek.blogspot.com/2010/05/replacing-form-action-scripts-with-sed.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/6596586341858933670'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/6596586341858933670'/><link rel='alternate' type='text/html' href='http://awgtek.blogspot.com/2010/05/replacing-form-action-scripts-with-sed.html' title='Replacing Form Action Scripts with sed'/><author><name>S931Coder</name><uri>http://www.blogger.com/profile/17609807805714986516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1138208274065767718.post-4413059775843304281</id><published>2010-04-09T14:53:00.000-07:00</published><updated>2010-04-16T07:34:05.688-07:00</updated><title type='text'>Use the User DSN When Debugging</title><content type='html'>Couldn't figure out why I kept getting "failed to call the odbc driver connection utility" when attempting to configure data tables in the DataSet designer in Visual Studio 2005 on a Windows 7 machine -- a duo that has incompatibility problems apparently.&lt;br /&gt;&lt;br /&gt;I finally realized that the problem was that I had created a System DSN (like I always do) for the ODBC connection. I created a corresponding User DSN and it worked like a charm.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1138208274065767718-4413059775843304281?l=awgtek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://awgtek.blogspot.com/feeds/4413059775843304281/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://awgtek.blogspot.com/2010/04/may-need-to-use-user-dsn.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/4413059775843304281'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/4413059775843304281'/><link rel='alternate' type='text/html' href='http://awgtek.blogspot.com/2010/04/may-need-to-use-user-dsn.html' title='Use the User DSN When Debugging'/><author><name>S931Coder</name><uri>http://www.blogger.com/profile/17609807805714986516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1138208274065767718.post-5817949671390942521</id><published>2010-04-02T15:55:00.000-07:00</published><updated>2010-04-04T12:17:59.644-07:00</updated><title type='text'>Virtual Host in Tomcat and NAT</title><content type='html'>Well, I didn't figure out how to separate the apps by port, but I did learn that it's possible to do so by IP -- by setting the name attribute in the Host tag of server.xml.&lt;br /&gt;&lt;br /&gt;The problem appeared however when I attempted to port forward port 80 to the second host entry in the m0n0wall NAT configuration. Browsing to the site from outside the firewall kept bringing me back to the first host entry which by default was set to localhost. That will never do, because I don't want external users seeing the Tomcat management page or welcome page for that matter. That was the whole point of creating a separate app in a separate location on the hard drive (which was done by the way via setting the docBase attribute of the Context tag which goes under the Host tag. I was creating an Open Blue Dragon or openbd application and I didn't want it sitting under the default webapps virtual host.&lt;br /&gt;&lt;br /&gt;I solved the problem by simply setting my new app, the second host in server.xml, to localhost, and assigning the default app a second IP (from a second NIC) for management purposes. I'm not sure why or how, but this fixed the problem. I can now access my ColdFusion web app from outside the firewall through port forwarding. And the managment app is only visible from the server itself.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1138208274065767718-5817949671390942521?l=awgtek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://awgtek.blogspot.com/feeds/5817949671390942521/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://awgtek.blogspot.com/2010/04/virtual-host-in-tomcat-and-nat.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/5817949671390942521'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/5817949671390942521'/><link rel='alternate' type='text/html' href='http://awgtek.blogspot.com/2010/04/virtual-host-in-tomcat-and-nat.html' title='Virtual Host in Tomcat and NAT'/><author><name>S931Coder</name><uri>http://www.blogger.com/profile/17609807805714986516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1138208274065767718.post-1922662447648558174</id><published>2010-04-01T08:04:00.000-07:00</published><updated>2010-04-01T08:19:58.493-07:00</updated><title type='text'>Don't forget the Share Permissions...</title><content type='html'>I was getting errors when attempting to access a Visual Source Safe DB configured as a share from the network:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;error: Microsoft Visual SourceSafe&lt;br /&gt;Unable to open user login file ....user.log&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;I thought how could this be, my computer user account is in the Administrator's group. I even tried copying a file to the ...data\loggedin folder, and got this error:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;Destination Folder Access Denied&lt;br /&gt;You need permission to perform this action&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Silly me. The sharing permissions were not set up correctly. &lt;br /&gt;&lt;br /&gt;To fix, open sharing on the VSS DB folder. Click Permissions. Add the Users group, and assign Full Control.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1138208274065767718-1922662447648558174?l=awgtek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://awgtek.blogspot.com/feeds/1922662447648558174/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://awgtek.blogspot.com/2010/04/dont-forget-share-permissions.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/1922662447648558174'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/1922662447648558174'/><link rel='alternate' type='text/html' href='http://awgtek.blogspot.com/2010/04/dont-forget-share-permissions.html' title='Don&apos;t forget the Share Permissions...'/><author><name>S931Coder</name><uri>http://www.blogger.com/profile/17609807805714986516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1138208274065767718.post-1877752143684579795</id><published>2010-03-30T13:55:00.000-07:00</published><updated>2010-03-30T14:01:56.324-07:00</updated><title type='text'>MIssing BIN DLLs from VS Website References</title><content type='html'>If you are ever in the predicament where after copying over a Visual Studio 2005 website to another machine and are not finished working out the dependencies, here's a tip: Make sure all the assemblies listed in the "add assembly" tags in the web.config can be found on the current machine first, or else none of the Bin folder DLLs will be added as references, no matter how hard you try. &lt;br /&gt;&lt;br /&gt;I ran into this problem, and Visual Studio 2005 refused to add the Bin folder references, until those web.config assemblies had their match in the GAC. Go figure!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1138208274065767718-1877752143684579795?l=awgtek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://awgtek.blogspot.com/feeds/1877752143684579795/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://awgtek.blogspot.com/2010/03/missing-bin-dlls-from-vs-website.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/1877752143684579795'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/1877752143684579795'/><link rel='alternate' type='text/html' href='http://awgtek.blogspot.com/2010/03/missing-bin-dlls-from-vs-website.html' title='MIssing BIN DLLs from VS Website References'/><author><name>S931Coder</name><uri>http://www.blogger.com/profile/17609807805714986516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1138208274065767718.post-5150025809176652366</id><published>2010-03-16T21:20:00.000-07:00</published><updated>2010-03-16T21:29:37.446-07:00</updated><title type='text'>MyEDB SQL One Liner</title><content type='html'>In this case the use case is to reduce the quantity of each product variation ("ron" in myedb speak), i.e. items in a shopping cart, when the total transaction is finalized. The following code can be placed in a transaction inside a MySQL 5.x stored procedure:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;update property natural join int_prop natural join entity_property natural join entity &lt;br /&gt;inner join medb_transaction on entity.eid = medb_transaction.eiddst and entity_property.ron = medb_transaction.ron&lt;br /&gt;and property.prop_group_id = medb_transaction.prop_group_id&lt;br /&gt;set int_val = int_val - qty&lt;br /&gt; where medb_transaction.eidsrc = 8  and property.prop_id = 15&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;The prop_id 15 is the ID of the 'quantity' property. eidsrc is passed as a parameter to the stored procedure and represents the user id (or "eid" for entity id in myedb speak ;) ).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1138208274065767718-5150025809176652366?l=awgtek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://awgtek.blogspot.com/feeds/5150025809176652366/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://awgtek.blogspot.com/2010/03/myedb-sql-one-liner.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/5150025809176652366'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/5150025809176652366'/><link rel='alternate' type='text/html' href='http://awgtek.blogspot.com/2010/03/myedb-sql-one-liner.html' title='MyEDB SQL One Liner'/><author><name>S931Coder</name><uri>http://www.blogger.com/profile/17609807805714986516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1138208274065767718.post-983415509742414324</id><published>2010-03-10T20:01:00.000-08:00</published><updated>2010-03-20T12:21:23.628-07:00</updated><title type='text'>New myedb.com Domain for Framework</title><content type='html'>My first post to describe my MyEDB (My Entity Database) framework/CMS was placed on a holding &lt;a href="http://www.myedb.com/"&gt;site&lt;/a&gt; at netfirms:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;This is my stand-in site to promote my concept of an "Entity Database" which is more than a relational database -- it gives the DB designer more flexibility in setting up and tearing down entities. I call it and the supporting code framework MyEDB for My Entity DB.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://4.bp.blogspot.com/_Zl39QP9tSP4/S5hr-dR4JkI/AAAAAAAAADA/N18zQioWm64/s1600-h/ER.png"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 295px; DISPLAY: block; HEIGHT: 400px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5447222470060287554" border="0" alt="" src="http://4.bp.blogspot.com/_Zl39QP9tSP4/S5hr-dR4JkI/AAAAAAAAADA/N18zQioWm64/s400/ER.png" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;br /&gt;It does away with the traditional notion of entity relationships, and just focuses on pure entities, no relationships and the headaches they cause Database designers. The purpose for relationships has evolved from an ingenuous desire to model entities and their relationships into being merely an optimization device. My framework gets rid of the pretense. All optimization is stored natively through the use of single type tables. &lt;br/&gt;&lt;br /&gt;One added benefit of this static architecture is that of being essentially a low level database per se, but one that is accessible to database designers.&lt;br/&gt;&lt;br /&gt;Combine this with an elegant PHP-based RESTful MVC framework, and all that's left is defining inputs and outputs and coding them. And the effort of coding the input/output wire-ups simply scales to the level of your requirements -- i.e. pay per requirement.&lt;br/&gt; Requirements can be defined as any of the following:&lt;br /&gt;- Create a form for Inserting, updating, or deleting an entity (e.g. a customer record)&lt;br /&gt;- Create a new view of the entity, purely for display (e.g. a product, or any entity. Examine one of your Excel spreadsheets rows for examples of "entities")&lt;br /&gt;- Build search functionality for all your entities or only a subset&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Copyright 2010&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1138208274065767718-983415509742414324?l=awgtek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://awgtek.blogspot.com/feeds/983415509742414324/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://awgtek.blogspot.com/2010/03/new-myedbcom-domain-for-framework.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/983415509742414324'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/983415509742414324'/><link rel='alternate' type='text/html' href='http://awgtek.blogspot.com/2010/03/new-myedbcom-domain-for-framework.html' title='New myedb.com Domain for Framework'/><author><name>S931Coder</name><uri>http://www.blogger.com/profile/17609807805714986516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_Zl39QP9tSP4/S5hr-dR4JkI/AAAAAAAAADA/N18zQioWm64/s72-c/ER.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1138208274065767718.post-4663293878308123861</id><published>2010-02-24T06:19:00.000-08:00</published><updated>2010-02-24T07:01:18.200-08:00</updated><title type='text'>Connecting to Web Service with .NET</title><content type='html'>I needed to connect to a remote Java WSRF Web Service having access only to the WSDL and login credentials. At first I tried using Visual Studio 2008, but found it doesn't support old style WSE so well, so had to revert to Visual Studio 2005, over which I installed Microsoft WSE 3.0.msi. &lt;br /&gt;&lt;br /&gt;I then pointed wsdl.exe at the https://url?wsdl to generate the proxy class, which I put in the App_Code folder of a test web project. wsdl.exe caused the Service class to inherit from System.Web.Services.Protocols.SoapHttpClientProtocol. I had to replace this with Microsoft.Web.Services3.WebServicesClientProtocol to get the proper authentication interface.&lt;br /&gt;&lt;br /&gt;I then had to manually add a wse3policyCache.conf file to get the policy setting intialized (see https://www-secure.symantec.com/connect/forums/newbie-help-adding-security-header-request-object#comment-3625021).&lt;br /&gt;&lt;br /&gt;Then, following guidance in http://bytes.com/topic/net/answers/560786-how-add-soap-header-soap-message, I added a SoapHeader class as well as an attribute to the target proxy class method.&lt;br /&gt;&lt;br /&gt;The SoapDocumentMethodAttribute Action attribute was set to a blank string so I had to set that to the fully qualified url of the method from the WSDL, i.e. .../PortType/TheMethod.&lt;br /&gt;&lt;br /&gt;In the client code, I then just had to call myproxy.SetClientCredential(..), then I could use the proxy class without problems.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1138208274065767718-4663293878308123861?l=awgtek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://awgtek.blogspot.com/feeds/4663293878308123861/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://awgtek.blogspot.com/2010/02/connecting-to-web-service-with-net.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/4663293878308123861'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/4663293878308123861'/><link rel='alternate' type='text/html' href='http://awgtek.blogspot.com/2010/02/connecting-to-web-service-with-net.html' title='Connecting to Web Service with .NET'/><author><name>S931Coder</name><uri>http://www.blogger.com/profile/17609807805714986516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1138208274065767718.post-255718214696812973</id><published>2009-12-06T16:51:00.000-08:00</published><updated>2009-12-06T19:42:40.056-08:00</updated><title type='text'>Resize Root Filesystem (/) with LVM</title><content type='html'>I made the mistake of accepting the default LVM options during a Debian Lenny installation, only to find out that the root / had filled up quite quickly, having started out with only around 300mb.&lt;br /&gt;&lt;br /&gt;I wanted to transfer some free space from /home to /; so did as follows:&lt;br /&gt;&lt;br /&gt;Select filesystem (e.g. /dev/mapper/debian-home ... 2.5G) to shrink from Filesystem column in df -h&lt;br /&gt;I chose /home, so must be ssh'd as root; use 'who' command to verify no other users are logged in and have the home dir open.&lt;br /&gt;&lt;br /&gt;Resize /home:&lt;br /&gt;#umount /dev/mapper/debian-home&lt;br /&gt;#e2fsck -f /dev/mapper/debian-home&lt;br /&gt;#resize2fs /dev/mapper/debian-home 1G &lt;br /&gt;select the corresponding volume to shrink from lvdisplay, i.e., the LV Name field (e.g. /dev/debian/home)&lt;br /&gt;#lvreduce -L -1.3G /dev/debian/home&lt;br /&gt;&lt;br /&gt;Extend root volume (/):&lt;br /&gt;verify there is Free PE in vgdisplay. Check this value against the following lvextend command size option&lt;br /&gt;To extend root volume (/), find it's coresponding name by looking up [LV Name] (e.g. &lt;br /&gt;/dev/debian/root) containing 'root' in lvdisplay&lt;br /&gt;then:&lt;br /&gt;#lvextend -L +1G /dev/debian/root&lt;br /&gt;resize the root file system. Find out the Filesystem name for the / mount by checking df&lt;br /&gt;# resize2fs /dev/mapper/debian-root&lt;br /&gt;check df to verify / is resized.&lt;br /&gt;remount home:&lt;br /&gt;#mount /dev/mapper/debian-home&lt;br /&gt;&lt;br /&gt;Warning! This procedure is very risky. A full backup of the system immediately before resizing volumes is strongly advised on production systems. After the volumes are resized, run fsck to fix any errors.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;refs:&lt;br /&gt;ref for shrinking: http://www.linuxquestions.org/questions/linux-enterprise-47/shrink-lvm-without-dataloss-557746/&lt;br /&gt;ref for extending /: http://www.linuxquestions.org/questions/linux-general-1/lvm-resizing-the-root-partition-361663/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1138208274065767718-255718214696812973?l=awgtek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://awgtek.blogspot.com/feeds/255718214696812973/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://awgtek.blogspot.com/2009/12/resize-root-filesystem-with-lvm.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/255718214696812973'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/255718214696812973'/><link rel='alternate' type='text/html' href='http://awgtek.blogspot.com/2009/12/resize-root-filesystem-with-lvm.html' title='Resize Root Filesystem (/) with LVM'/><author><name>S931Coder</name><uri>http://www.blogger.com/profile/17609807805714986516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1138208274065767718.post-1702641204991799093</id><published>2009-11-27T15:00:00.000-08:00</published><updated>2009-11-27T15:25:46.573-08:00</updated><title type='text'>Vertical List Oriented Columns with XSLT</title><content type='html'>The general idea is snake your list of items a set number of times down each column. So for a list of 7 items (XML siblings)  and "n-rows" being set to 3, the resulting columns will look like this:&lt;table border="1" style="margin-top:0"&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;item 1&lt;/td&gt;&lt;td&gt;item 4&lt;/td&gt;&lt;td&gt;item 7&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;item 2&lt;/td&gt;&lt;td&gt;item 5&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;item 3&lt;/td&gt;&lt;td&gt;item 6&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/table&gt;&lt;br /&gt;The XSLT code:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&amp;lt;xsl:variable name=&amp;quot;n-rows&amp;quot; select=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;xsl:template name=&amp;quot;recurse-rows&amp;quot;&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;xsl:param name=&amp;quot;index&amp;quot; select=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;xsl:param name=&amp;quot;modrow&amp;quot; select=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;tr&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;xsl:for-each select=&amp;quot;/root/item[position() mod $n-rows = $modrow]&amp;quot;&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;td&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;xsl:value-of select=&amp;quot;value&amp;quot; /&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/td&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;xsl:if test=&amp;quot;$index &amp;amp;lt; $n-rows&amp;quot;&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;xsl:call-template name=&amp;quot;recurse-rows&amp;quot;&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;xsl:with-param name=&amp;quot;index&amp;quot; select=&amp;quot;$index + 1&amp;quot;/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;xsl:with-param name=&amp;quot;modrow&amp;quot; select=&amp;quot;($index + 1) mod $n-rows&amp;quot;/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/xsl:if&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/xsl:template&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;sources for ideas:&lt;br /&gt;&lt;a href="http://www.stylusstudio.com/xsllist/200407/post30810.html"&gt;http://www.stylusstudio.com/xsllist/200407/post30810.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.perlmonks.org/?node_id=518095"&gt;http://www.perlmonks.org/?node_id=518095&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1138208274065767718-1702641204991799093?l=awgtek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://awgtek.blogspot.com/feeds/1702641204991799093/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://awgtek.blogspot.com/2009/11/vertical-list-oriented-columns-with.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/1702641204991799093'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/1702641204991799093'/><link rel='alternate' type='text/html' href='http://awgtek.blogspot.com/2009/11/vertical-list-oriented-columns-with.html' title='Vertical List Oriented Columns with XSLT'/><author><name>S931Coder</name><uri>http://www.blogger.com/profile/17609807805714986516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1138208274065767718.post-2170677711576304310</id><published>2009-11-15T13:23:00.000-08:00</published><updated>2009-11-15T20:22:26.691-08:00</updated><title type='text'>Tips for when Setting up WordPress</title><content type='html'>Platform: Ubuntu 9.04/Apache 2&lt;br /&gt;&lt;br /&gt;To set up WordPress as a virtual directory under a VirtualHost, add an alias to the host file in /etc/apache2/sites-available:&lt;br /&gt;&lt;br /&gt;e.g.:&lt;pre&gt;&lt;code&gt;&amp;lt;VirtualHost 172.16.134.5:80&amp;gt;&lt;br /&gt;&lt;br /&gt;  Alias /blog/ &amp;quot;/usr/share/wordpress/&amp;quot;&lt;br /&gt;&lt;br /&gt;  ServerAdmin webmaster@localhost&lt;br /&gt; DocumentRoot /home/wordpress/public_html&lt;br /&gt; DirectoryIndex index.php&lt;br /&gt;&lt;br /&gt;  &amp;lt;Directory &amp;quot;/usr/share/wordpress/&amp;quot;&amp;gt;&lt;br /&gt;&lt;br /&gt;  Options Indexes FollowSymLinks&lt;br /&gt;&lt;br /&gt;  AllowOverride All&lt;br /&gt;&lt;br /&gt;  Order allow,deny&lt;br /&gt;&lt;br /&gt;  Allow from all&lt;br /&gt;&lt;br /&gt;  &amp;lt;/Directory&amp;gt;&lt;br /&gt;&lt;br /&gt;  ...&lt;br /&gt;&lt;br /&gt;&amp;lt;/VirtualHost&amp;gt;&lt;/code&gt;&lt;/pre&gt;The guide I used was &lt;a href="https://help.ubuntu.com/community/WordPress"&gt;https://help.ubuntu.com/community/WordPress&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;Note: where you run the command "sudo bash /usr/share/doc/wordpress/examples/setup-mysql -n wordpress localhost" you MUST change localhost to the IP or DNS name if you are setting up the site on a remote server. The reason, as I found out the hard way (I use "localhost" at first) is that the script creates a file under /etc/wordpress called config-&amp;lt;hostname&amp;gt;.php. Then when you go to run the web installation routine, the application can't find the config file, unless you set &amp;lt;hostname&amp;gt; in the above command to match exactly the domain used in the URL. This is because the config file is constructed in /etc/wordpress/wp-config.php using $_SERVER['HTTP_HOST'].&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1138208274065767718-2170677711576304310?l=awgtek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://awgtek.blogspot.com/feeds/2170677711576304310/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://awgtek.blogspot.com/2009/11/tips-for-when-setting-up-wordpress.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/2170677711576304310'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/2170677711576304310'/><link rel='alternate' type='text/html' href='http://awgtek.blogspot.com/2009/11/tips-for-when-setting-up-wordpress.html' title='Tips for when Setting up WordPress'/><author><name>S931Coder</name><uri>http://www.blogger.com/profile/17609807805714986516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1138208274065767718.post-8134308162863127944</id><published>2009-11-01T09:35:00.000-08:00</published><updated>2009-11-01T10:20:01.702-08:00</updated><title type='text'>Dell Memory Errors with BIOS USB Support</title><content type='html'>My 2550 Dell Server was displaying memory errors. It would split the amount of memory available and errors would be produced in the Windows Memory Diagnostic utility starting with the MATS+ test. It also mentioned something about an invalid NVRAM configuration in the startup messages. Dell Diagnostic utility was not helpful. I started disabling all options in the Integrated devices section of the BIOS. I found that by disabling BIOS USB support, the memory errors went away. Go figure!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1138208274065767718-8134308162863127944?l=awgtek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://awgtek.blogspot.com/feeds/8134308162863127944/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://awgtek.blogspot.com/2009/11/dell-memory-errors-with-bios-usb.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/8134308162863127944'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/8134308162863127944'/><link rel='alternate' type='text/html' href='http://awgtek.blogspot.com/2009/11/dell-memory-errors-with-bios-usb.html' title='Dell Memory Errors with BIOS USB Support'/><author><name>S931Coder</name><uri>http://www.blogger.com/profile/17609807805714986516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1138208274065767718.post-3726339672606006866</id><published>2009-10-17T12:42:00.000-07:00</published><updated>2009-10-17T12:48:54.705-07:00</updated><title type='text'>Change Directory with String Replacement</title><content type='html'>Found out through experimentation how to change directories in the bash shell using sed string replacement. I need a quick way to switch from production to staging sites which have the same path but for the user home directory.&lt;br /&gt;&lt;br /&gt;First I tried:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;echo `pwd` | echo `sed -e 's/production/staging/' ` | cd&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;That didn't work.&lt;br /&gt;&lt;br /&gt;Then I tried:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;cd $(echo `pwd` | echo `sed -e 's/production/staging/' ` )&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;That worked. Go figure...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1138208274065767718-3726339672606006866?l=awgtek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://awgtek.blogspot.com/feeds/3726339672606006866/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://awgtek.blogspot.com/2009/10/change-directory-with-string.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/3726339672606006866'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/3726339672606006866'/><link rel='alternate' type='text/html' href='http://awgtek.blogspot.com/2009/10/change-directory-with-string.html' title='Change Directory with String Replacement'/><author><name>S931Coder</name><uri>http://www.blogger.com/profile/17609807805714986516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1138208274065767718.post-9114224260078937421</id><published>2009-10-04T11:53:00.000-07:00</published><updated>2009-10-04T12:20:17.922-07:00</updated><title type='text'>Add Hyperlink using jQuery</title><content type='html'>You can test this out in Firebug. Say you have a td element, &amp;lt;td id=&amp;quot;foo&amp;quot; /&amp;gt;,&lt;br /&gt;you can add a link to this using jQuery:&lt;br /&gt;&lt;code&gt;jQuery("&amp;lt;a /&amp;gt;").attr("href", "http://yahoo.com").appendTo("#foo").text("link to yahoo").after("&amp;lt;br /&amp;gt;"); &lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1138208274065767718-9114224260078937421?l=awgtek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://awgtek.blogspot.com/feeds/9114224260078937421/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://awgtek.blogspot.com/2009/10/add-hyperlink-using-jquery.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/9114224260078937421'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/9114224260078937421'/><link rel='alternate' type='text/html' href='http://awgtek.blogspot.com/2009/10/add-hyperlink-using-jquery.html' title='Add Hyperlink using jQuery'/><author><name>S931Coder</name><uri>http://www.blogger.com/profile/17609807805714986516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1138208274065767718.post-1092764284534040789</id><published>2009-09-28T10:04:00.000-07:00</published><updated>2009-09-28T10:10:41.642-07:00</updated><title type='text'>WSS 2.0 to WSS 3.0 Migration</title><content type='html'>I had a WSS 2.0 site (no custom parts) that I needed to upgrade AND migrate to another server. So I pretty much followed the advice on &lt;a href="http://geekswithblogs.net/redwards/archive/2007/10/26/116365.aspx"&gt;http://geekswithblogs.net/redwards/archive/2007/10/26/116365.aspx&lt;/a&gt; .&lt;br /&gt;&lt;br /&gt;The above article is unclear about how the DB was transferred however, so had to wing it. Basically what I ended up doing was copying the .mdf and .ldf files of the WSS 2.0 content DB over to the Data folder of a SQL Express 2005 server --NOT the WSS 3.0 embedded DB (I tried that, but it gave me errors when I ran stsadm).&lt;br /&gt;&lt;br /&gt;Note, after the DB was added and all set up in the Central Administration, I had to change the site collection administrator. The migrated site still had the OldServer\Administrator as the Primary site collection administrator. Other than that pretty seamless...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1138208274065767718-1092764284534040789?l=awgtek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://awgtek.blogspot.com/feeds/1092764284534040789/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://awgtek.blogspot.com/2009/09/wss-20-to-wss-30-migration.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/1092764284534040789'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/1092764284534040789'/><link rel='alternate' type='text/html' href='http://awgtek.blogspot.com/2009/09/wss-20-to-wss-30-migration.html' title='WSS 2.0 to WSS 3.0 Migration'/><author><name>S931Coder</name><uri>http://www.blogger.com/profile/17609807805714986516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1138208274065767718.post-8118186093798877761</id><published>2009-09-20T01:00:00.000-07:00</published><updated>2009-09-20T02:22:46.377-07:00</updated><title type='text'>Getting memcached to Run at Startup on Ubuntu</title><content type='html'>For some reason memcached would start and then die shortly after on reboot. This is on an Ubuntu 8.04 with updated packages for Apache2, PHP5, and memcached installed through apt-get.&lt;br /&gt;&lt;br /&gt;The only way I could fix the problem was to remove memcached from the rc scripts:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;update-rc.d -f memcached remove&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Then add the following line to /etc/rc.local:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;/usr/bin/memcached -d -p 11211 -u nobody -l 127.0.0.1 -m 64&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;I'm sure this will have to be adjusted if I ever need more memcached processes or if I need the PID file. Speaking of which, I suspect that the canned scripts that came with this memcached 3.0.1 from Ubuntu are too convoluted with regard to the PIDs, which already have &lt;a href="http://perfec.to/stalepid.html"&gt;problems&lt;/a&gt; of their own.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://bugzilla.redhat.com/show_bug.cgi?id=250141"&gt;This&lt;/a&gt; bug report set me in the right direction.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1138208274065767718-8118186093798877761?l=awgtek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://awgtek.blogspot.com/feeds/8118186093798877761/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://awgtek.blogspot.com/2009/09/getting-memcached-to-run-at-startup-on.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/8118186093798877761'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/8118186093798877761'/><link rel='alternate' type='text/html' href='http://awgtek.blogspot.com/2009/09/getting-memcached-to-run-at-startup-on.html' title='Getting memcached to Run at Startup on Ubuntu'/><author><name>S931Coder</name><uri>http://www.blogger.com/profile/17609807805714986516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1138208274065767718.post-8909509487124542601</id><published>2009-08-24T21:09:00.000-07:00</published><updated>2009-08-24T21:18:48.076-07:00</updated><title type='text'>Eclipse Simpletest plug-in Path errors</title><content type='html'>I struggled with this one until through experimentation I found out the problem. I have the Simpletest plug-in 0.2.5 for Eclipse.&lt;br /&gt;&lt;br /&gt;I had&lt;br /&gt;&lt;code&gt;&lt;br /&gt;require_once dirname(__FILE__) . '\MyClass.php'; &lt;br /&gt;class test extends UnitTestCase {&lt;br /&gt; function test_pass(){&lt;br /&gt;  $tc = new MyClass();&lt;br /&gt;        $boolean = $tc-&gt;my_method() == "hello";&lt;br /&gt;        $this-&gt;assertFalse($boolean);&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;But when running, I kept getting:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;PHP Fatal error:  Class 'MyClass' not found in ...test.php...[line number]&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;I finally found out through trial and error that to fix this fatal error I simply needed to replace the opening short tag with the full php tag &amp;lt;?php . That means I'm going to need to do this to all my class files. Might as well make that a best practice from now on.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1138208274065767718-8909509487124542601?l=awgtek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://awgtek.blogspot.com/feeds/8909509487124542601/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://awgtek.blogspot.com/2009/08/eclipse-simpletest-plug-in-path-errors.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/8909509487124542601'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/8909509487124542601'/><link rel='alternate' type='text/html' href='http://awgtek.blogspot.com/2009/08/eclipse-simpletest-plug-in-path-errors.html' title='Eclipse Simpletest plug-in Path errors'/><author><name>S931Coder</name><uri>http://www.blogger.com/profile/17609807805714986516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1138208274065767718.post-6198024956965407924</id><published>2009-08-23T20:45:00.000-07:00</published><updated>2009-08-23T20:53:10.225-07:00</updated><title type='text'>IIS 7 and Permissions Quirks</title><content type='html'>I just enabled IIS 7 on Windows Vista SP 2 and enable FastCGI. I create a new website and point it to a folder under my Documents folder with a test.php file. I open the page http://localhost/test.php in IE and get: &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;HTTP Error 401.3 - Unauthorized&lt;br /&gt;You do not have permission to view this directory or page because of the access control list (ACL) configuration or encryption settings for this resource on the Web server.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Ok, so I add IIS_IUSRS to folder ACL, but that doesn't fix it. I then added the Users group to the ACL and that fixes it. Strange indeed because my user account is already in the ACL and I'm in the Administrators group, which is also already in the site folder ACL. Now I just have to wonder whether this is a Windows bug, or whether there's some other user under the Users group that's being impersonated by some process. Hmmmmm.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1138208274065767718-6198024956965407924?l=awgtek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://awgtek.blogspot.com/feeds/6198024956965407924/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://awgtek.blogspot.com/2009/08/iis-7-and-permissions-quirks.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/6198024956965407924'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/6198024956965407924'/><link rel='alternate' type='text/html' href='http://awgtek.blogspot.com/2009/08/iis-7-and-permissions-quirks.html' title='IIS 7 and Permissions Quirks'/><author><name>S931Coder</name><uri>http://www.blogger.com/profile/17609807805714986516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1138208274065767718.post-4498172396368796690</id><published>2009-08-09T11:59:00.000-07:00</published><updated>2009-08-09T12:10:55.995-07:00</updated><title type='text'>Use encodeURIComponent in AJAX</title><content type='html'>In the XMLHttpRequest "send" method it's best to encode the parameters using the Javascript function &lt;code&gt;encodeURIComponent&lt;/code&gt; as opposed to &lt;code&gt;escape&lt;/code&gt; or &lt;code&gt;encodeURI&lt;/code&gt;. For details why, see&lt;br /&gt;&lt;a href="http://xkr.us/articles/javascript/encode-compare/"&gt;http://xkr.us/articles/javascript/encode-compare/&lt;/a&gt; .&lt;br /&gt;&lt;br /&gt;I learned this by researching why the solution at &lt;a href="http://www.captain.at/howto-ajax-form-post-request.php"&gt;http://www.captain.at/howto-ajax-form-post-request.php&lt;/a&gt; did not work for me. For example, if I use &lt;code&gt;escape&lt;/code&gt;, the '+' symbol converts to a space in the database; and if I use &lt;code&gt;encodeURI&lt;/code&gt;, any '&amp;' will cause all subsequent characters to not make it into the database -- because those characters aren't converted with the other two Javascript methods.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1138208274065767718-4498172396368796690?l=awgtek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://awgtek.blogspot.com/feeds/4498172396368796690/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://awgtek.blogspot.com/2009/08/use-encodeuricomponent-in-ajax.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/4498172396368796690'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/4498172396368796690'/><link rel='alternate' type='text/html' href='http://awgtek.blogspot.com/2009/08/use-encodeuricomponent-in-ajax.html' title='Use encodeURIComponent in AJAX'/><author><name>S931Coder</name><uri>http://www.blogger.com/profile/17609807805714986516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1138208274065767718.post-7712349650114182367</id><published>2009-08-08T12:23:00.000-07:00</published><updated>2009-08-08T12:37:19.802-07:00</updated><title type='text'>Hacking CAPTCHA</title><content type='html'>One way to hack &lt;em&gt;one type&lt;/em&gt; of CAPTCHA is as follows:&lt;br /&gt;&lt;br /&gt;Assuming the web app sets the captcha code in a session variable and assuming it only checks it for equality, you can use Paros Proxy to trap and alter the captcha url in the image tag (assuming, once again, this is the method used to display the image).&lt;br /&gt;&lt;br /&gt;First clear all of the target website's cookies (including session cookies -- still not sure how to do this in IE), then open the target web page form with Paros running with "Trap response" checked in the Trap tab. Then edit or remove the link in the image tag to the captcha image generator, then click Continue. When the page is resolved the captcha image will appear broken, indicating the script that produced it never was run for this session and hence no security session variables were set. Finally, leave the captcha input box empty and submit. If all goes well the form will submit successfully.&lt;br /&gt;&lt;br /&gt;The way to protect against this kind of attack is to set another secret session variable in the captcha script then check for it in the form validation.&lt;br /&gt;&lt;br /&gt;(this advice is provided to assist newbie web developers with no guarantees. Malicious hackers and script kidies are not welcome.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1138208274065767718-7712349650114182367?l=awgtek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://awgtek.blogspot.com/feeds/7712349650114182367/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://awgtek.blogspot.com/2009/08/hacking-captcha.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/7712349650114182367'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/7712349650114182367'/><link rel='alternate' type='text/html' href='http://awgtek.blogspot.com/2009/08/hacking-captcha.html' title='Hacking CAPTCHA'/><author><name>S931Coder</name><uri>http://www.blogger.com/profile/17609807805714986516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1138208274065767718.post-3736023539128457686</id><published>2009-07-04T20:11:00.000-07:00</published><updated>2009-07-04T21:03:19.831-07:00</updated><title type='text'>udp_scan on Debian 4</title><content type='html'>Download &amp; Setup:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;lftp -c 'open -e "mget port-scan*" ftp.porcupine.org/pub/security'&lt;br /&gt;tar zxvf port-scan.tar.gz&lt;br /&gt;cd port-scan&lt;br /&gt;make CFLAGS=-D_BSD_SOURCE&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;There will be some errors.&lt;br /&gt;&lt;br /&gt;Then, run udp_scan on target:&lt;br /&gt;&lt;code&gt;./udp_scan 10.10.10.10 1-1024&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Note: udp_scan also comes with the SATAN package (and its successors).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1138208274065767718-3736023539128457686?l=awgtek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://awgtek.blogspot.com/feeds/3736023539128457686/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://awgtek.blogspot.com/2009/07/udpscan-on-debian-4.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/3736023539128457686'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/3736023539128457686'/><link rel='alternate' type='text/html' href='http://awgtek.blogspot.com/2009/07/udpscan-on-debian-4.html' title='udp_scan on Debian 4'/><author><name>S931Coder</name><uri>http://www.blogger.com/profile/17609807805714986516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1138208274065767718.post-4307416338878580158</id><published>2009-07-04T13:29:00.000-07:00</published><updated>2009-07-04T15:01:16.188-07:00</updated><title type='text'>Installing SATAN 1.1.1 on Debian 4.0</title><content type='html'>wget http://www.ibiblio.org/pub/packages/security/Satan-for-Linux/satan-1.1.1.linux.fixed2.tgz&lt;br /&gt;&lt;br /&gt;unpack in /tmp and cd to satan-1.1.1&lt;br /&gt;&lt;br /&gt;edit reconfig:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;sed -i 's/version 5/v\(ersion \)\?5/' reconfig&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;if no dev environment:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;apt-get install make &lt;br /&gt;apt-get install build-essential&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;then:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;perl reconfig&lt;br /&gt;make linux&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;run:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;./satan&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1138208274065767718-4307416338878580158?l=awgtek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://awgtek.blogspot.com/feeds/4307416338878580158/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://awgtek.blogspot.com/2009/07/installing-satan-111-on-debian-40.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/4307416338878580158'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/4307416338878580158'/><link rel='alternate' type='text/html' href='http://awgtek.blogspot.com/2009/07/installing-satan-111-on-debian-40.html' title='Installing SATAN 1.1.1 on Debian 4.0'/><author><name>S931Coder</name><uri>http://www.blogger.com/profile/17609807805714986516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1138208274065767718.post-8224350186085810020</id><published>2009-07-01T11:26:00.001-07:00</published><updated>2009-09-15T07:43:26.517-07:00</updated><title type='text'>vtund Experimentation  part 3 - Bridging</title><content type='html'>Picking up from "vtund Experimentation part 2" we are going to set up the bridge interface, which will bridge tap0 and eth1 as depicted in http://blog.kovyrin.net/2006/04/05/connecting-two-remote-local-networks-with-transparent-bridging/ (although there it's eth0).&lt;br /&gt;&lt;br /&gt;On both server and client sever the vtund connection (if any) and kill the vtund process.&lt;br /&gt;&lt;br /&gt;On the server:&lt;br /&gt;in the lion config of vtund-server.conf, replace &lt;br /&gt;         "ifconfig "%% 10.1.0.1 netmask 255.255.255.0"; &lt;br /&gt;with the following lines:&lt;br /&gt;         ifconfig "%% up";&lt;br /&gt;         program "brctl addif br0 %%";&lt;br /&gt;comment out the route command.&lt;br /&gt;change the password (recommended)&lt;br /&gt;&lt;br /&gt;On the client:&lt;br /&gt;in the lion config of vtund-client.conf, replace &lt;br /&gt;         "ifconfig "%% 10.1.0.2 netmask 255.255.255.0"; &lt;br /&gt;with the following lines:&lt;br /&gt;         ifconfig "%% up";&lt;br /&gt;         program "brctl addif br0 %%";&lt;br /&gt;change the password to same as server's (if changed on server).&lt;br /&gt;&lt;br /&gt;On the server:&lt;br /&gt;in /etc/network/interfaces&lt;br /&gt;remove the eth1 ip configuration, except for the line&lt;br /&gt;auto eth1 # to bring up eth1&lt;br /&gt;Add the br0 ip configuration:&lt;br /&gt;  iface br0 inet static&lt;br /&gt;  address 192.168.100.99&lt;br /&gt;  netmask 255.255.255.0&lt;br /&gt;  bridge_ports eth1&lt;br /&gt;&lt;br /&gt;On the client:&lt;br /&gt;in /etc/network/interfaces&lt;br /&gt;remove the eth1 ip configuration, except for the line&lt;br /&gt;auto eth1 # to bring up eth1&lt;br /&gt;Add the br0 ip configuration:&lt;br /&gt;  iface br0 inet static&lt;br /&gt;  address 192.168.100.100&lt;br /&gt;  netmask 255.255.255.0&lt;br /&gt;  bridge_ports eth1&lt;br /&gt;&lt;br /&gt;On both server and client bring up br0:&lt;br /&gt;ifup br0&lt;br /&gt;&lt;br /&gt;On the server:&lt;br /&gt;vtund -n -s -f /etc/vtund-server.conf&lt;br /&gt;&lt;br /&gt;Then on client:&lt;br /&gt;vtund -n -f /etc/vtund-client.conf lion server_public_ip_address&lt;br /&gt;&lt;br /&gt;With luck, a UDP connection (tunnel) will be initialized. From client you should be able to ping 192.168.100.99 (server's br0 ip address). &lt;br /&gt;&lt;br /&gt;On the server, type &lt;br /&gt;brctl show&lt;br /&gt;results:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;bridge name bridge id STP enabled interfaces&lt;br /&gt;br0         xxxxxxxx  no          eth1&lt;br /&gt;                                  tap0&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Now set up another machine on the 192.168.100.x network on either side and ping both machines from it. If the machines can't ping eachother, ensure that the switch (vSwitch if in VMware) is set to Accept in Promiscuous Mode Policy Exceptions.&lt;br /&gt;&lt;br /&gt;(see also Building Linux Virtual Private Networks (VPNs) on Google Books for example of the Ethernet Tunnel)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1138208274065767718-8224350186085810020?l=awgtek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://awgtek.blogspot.com/feeds/8224350186085810020/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://awgtek.blogspot.com/2009/07/vtund-experimentation-part-3-bridging_01.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/8224350186085810020'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/8224350186085810020'/><link rel='alternate' type='text/html' href='http://awgtek.blogspot.com/2009/07/vtund-experimentation-part-3-bridging_01.html' title='vtund Experimentation  part 3 - Bridging'/><author><name>S931Coder</name><uri>http://www.blogger.com/profile/17609807805714986516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1138208274065767718.post-1408703666389398736</id><published>2009-07-01T06:40:00.001-07:00</published><updated>2009-07-04T13:23:21.003-07:00</updated><title type='text'>vtund Experimentation  part 2</title><content type='html'>On both client and server:&lt;br /&gt;fresh stable (ubuntu LTS 8.04) Ubuntu, get all updates.&lt;br /&gt;then apt-get install bridge-utils (per http://blog.kovyrin.net/2006/04/05/connecting-two-remote-local-networks-with-transparent-bridging/)&lt;br /&gt;then:&lt;br /&gt;apt-get install uml-utilities&lt;br /&gt;tunctl -u root -t tap0&lt;br /&gt;ifconfig tap0 0.0.0.0 promisc up&lt;br /&gt;&lt;br /&gt;then apt-get install vtun&lt;br /&gt;&lt;br /&gt;modprobe tun&lt;br /&gt;&lt;br /&gt;Then on server, copy /usr/share/doc/vtun/examples/vtund-server.conf to /etc&lt;br /&gt;comment out: bindaddr { iface lo; };&lt;br /&gt;in lion configuration:&lt;br /&gt;   change: "compress lzo:9;" to "compress no;"&lt;br /&gt;   change: "encrypt yes;" to "encrypt no;"&lt;br /&gt;   comment out firewall lines&lt;br /&gt;&lt;br /&gt;Then on client, copy /usr/share/doc/vtun/examples/vtund-client.conf to /etc&lt;br /&gt;edit /etc/vtund-client.conf: under the "lion" configuration, change "device tap1" to "device tap0"&lt;br /&gt;&lt;br /&gt;Then on server:&lt;br /&gt;   edit /etc/network/interfaces:&lt;br /&gt;auto lo&lt;br /&gt;iface lo inet loopback&lt;br /&gt;&lt;br /&gt;iface eth0 inet static&lt;br /&gt;address public_ip_address&lt;br /&gt;netmask public_mask&lt;br /&gt;gateway public_gateway&lt;br /&gt;auto eth0&lt;br /&gt;&lt;br /&gt;Then on client:&lt;br /&gt;   edit /etc/network/interfaces:&lt;br /&gt;auto lo&lt;br /&gt;iface lo inet loopback&lt;br /&gt;&lt;br /&gt;iface eth0 inet static&lt;br /&gt;address public_ip_address&lt;br /&gt;netmask public_mask&lt;br /&gt;gateway public_gateway&lt;br /&gt;auto eth0&lt;br /&gt;&lt;br /&gt;Then on server:&lt;br /&gt;vtund -n -s -f /etc/vtund-server.conf&lt;br /&gt;&lt;br /&gt;Then on client:&lt;br /&gt;vtund -n -f /etc/vtund-client.conf lion server_public_ip_address&lt;br /&gt;&lt;br /&gt;With luck, a UDP connection (tunnel) will be initialized. From client you should be able to ping 10.1.0.1 (server's tun0 ip address).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1138208274065767718-1408703666389398736?l=awgtek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://awgtek.blogspot.com/feeds/1408703666389398736/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://awgtek.blogspot.com/2009/07/vtund-experimentation-part-2_01.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/1408703666389398736'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/1408703666389398736'/><link rel='alternate' type='text/html' href='http://awgtek.blogspot.com/2009/07/vtund-experimentation-part-2_01.html' title='vtund Experimentation  part 2'/><author><name>S931Coder</name><uri>http://www.blogger.com/profile/17609807805714986516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1138208274065767718.post-8542198204341565283</id><published>2009-06-30T13:09:00.001-07:00</published><updated>2009-07-04T13:23:21.004-07:00</updated><title type='text'>Read latest log entries created on Linux</title><content type='html'>&lt;code&gt;find / -name \*.log\* -mmin -3 -print &amp;#124;  xargs tail&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;This lists all the &lt;code&gt;log&lt;/code&gt; entries on the machine in the last three minutes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1138208274065767718-8542198204341565283?l=awgtek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://awgtek.blogspot.com/feeds/8542198204341565283/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://awgtek.blogspot.com/2009/06/read-latest-log-entries-created-on_30.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/8542198204341565283'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/8542198204341565283'/><link rel='alternate' type='text/html' href='http://awgtek.blogspot.com/2009/06/read-latest-log-entries-created-on_30.html' title='Read latest log entries created on Linux'/><author><name>S931Coder</name><uri>http://www.blogger.com/profile/17609807805714986516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1138208274065767718.post-1630406751109317103</id><published>2009-06-18T09:51:00.001-07:00</published><updated>2009-07-04T13:23:21.004-07:00</updated><title type='text'>Ubuntu Default Gateway</title><content type='html'>auto eth0 -- sets eth0 to come up on /etc/init.d/networking restart&lt;br /&gt;&lt;br /&gt;tip: put auto eth1 before auto eth0 in /etc/network/interfaces in order to make eth0 the default gateway&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1138208274065767718-1630406751109317103?l=awgtek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://awgtek.blogspot.com/feeds/1630406751109317103/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://awgtek.blogspot.com/2009/06/ubuntu-default-gateway_18.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/1630406751109317103'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/1630406751109317103'/><link rel='alternate' type='text/html' href='http://awgtek.blogspot.com/2009/06/ubuntu-default-gateway_18.html' title='Ubuntu Default Gateway'/><author><name>S931Coder</name><uri>http://www.blogger.com/profile/17609807805714986516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1138208274065767718.post-6767911996909115828</id><published>2009-06-17T21:00:00.001-07:00</published><updated>2009-07-04T13:23:21.004-07:00</updated><title type='text'>vtun Experimentation</title><content type='html'>So I get fresh stable (ubuntu LTS 8.04) Ubuntu, get all updates.&lt;br /&gt;then apt-get install bridge-utils (per &lt;a href="http://blog.kovyrin.net/2006/04/05/connecting-two-remote-local-networks-with-transparent-bridging/"&gt;http://blog.kovyrin.net/2006/04/05/connecting-two-remote-local-networks-with-transparent-bridging/&lt;/a&gt;)&lt;br /&gt;then:&lt;br /&gt;apt-get install uml-utilities&lt;br /&gt;tunctl -u root -t tap0&lt;br /&gt;ifconfig tap0 0.0.0.0 promisc up&lt;br /&gt;&lt;br /&gt;then apt-get install vtun&lt;br /&gt;&lt;br /&gt;on both client and server:&lt;br /&gt;modprobe tun&lt;br /&gt;&lt;br /&gt;then put at end of /etc/network/interfaces (note: &lt;strong&gt;create bridge dynamically through vtun program commands instead?&lt;/strong&gt;):&lt;br /&gt;auto br0&lt;br /&gt;iface br0 inet static&lt;br /&gt;address 192.168.1.200 (199 for server)&lt;br /&gt;netmask 255.255.255.0&lt;br /&gt;bridge_ports eth0&lt;br /&gt;&lt;br /&gt;then ifup br0&lt;br /&gt;&lt;br /&gt;on client /etc/vtund.conf&lt;br /&gt;&lt;br /&gt;options {&lt;br /&gt;port 5000;&lt;br /&gt;timeout 60;&lt;br /&gt;&lt;br /&gt;# Path to various programs&lt;br /&gt;ifconfig /sbin/ifconfig;&lt;br /&gt;route /sbin/route;&lt;br /&gt;firewall /sbin/iptables;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;IP-Tunnel {&lt;br /&gt;passwd abcd1234; # Password&lt;br /&gt;type ether; # Ethernet tunnel&lt;br /&gt;device tun0;&lt;br /&gt;up {&lt;br /&gt;# Connection is Up&lt;br /&gt;ifconfig "%% up";&lt;br /&gt;program "brctl addif br0 %%";&lt;br /&gt;};&lt;br /&gt;down {&lt;br /&gt;# Connection is Down&lt;br /&gt;ifconfig "%% down";&lt;br /&gt;};&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;On server /etc/vtund.conf:&lt;br /&gt;options {&lt;br /&gt;    # type stand;&lt;br /&gt;    # stand(default), inet (used only at server)&lt;br /&gt;    port 5000;&lt;br /&gt;    # Server will listen on this port for incoming requests.&lt;br /&gt;    syslog daemon;&lt;br /&gt;    # Syslog facility&lt;br /&gt;&lt;br /&gt;    # Path to various programs&lt;br /&gt;    ppp /usr/sbin/pppd; #Path to the pppd. Use "which pppd" to find this.&lt;br /&gt;    ifconfig /sbin/ifconfig;&lt;br /&gt;    route /sbin/route;&lt;br /&gt;    firewall /sbin/iptables;&lt;br /&gt;    ip /sbin/ip;&lt;br /&gt;}&lt;br /&gt;# Default session options&lt;br /&gt;default {&lt;br /&gt;    type ether;&lt;br /&gt;    #tun, ether, tty(default), pipe (Used only at Server)&lt;br /&gt;    proto udp;&lt;br /&gt;    #udp, tcp(default) (Used only at server)&lt;br /&gt;    # device tun0;&lt;br /&gt;    compress no;&lt;br /&gt;    # no, yes, zlib:(1-9), lzo:(1-9); e.g. zlib:1 (default) (Used only at server)&lt;br /&gt;    encrypt no;&lt;br /&gt;    #yes, no (used only at server)&lt;br /&gt;    stat yes;&lt;br /&gt;    #yes, no: check /var/log/vtund/SessionName_X&lt;br /&gt;    speed 0;&lt;br /&gt;    #By default maximum speed, NO shaping (Used only at server)&lt;br /&gt;    keepalive yes;&lt;br /&gt;    #Used to keep alive the connection. (Used only at server)&lt;br /&gt;}&lt;br /&gt;# TUN example. Session 'cobra'.&lt;br /&gt;    IP-Tunnel {&lt;br /&gt;        passwd abcd1234; # Password&lt;br /&gt;        type ether; # IP tunnel&lt;br /&gt;        proto udp; # UDP protocol&lt;br /&gt;        device tap0;&lt;br /&gt;        compress no; # lzo:9; # LZO compression level 9&lt;br /&gt;        encrypt no; # Encryption&lt;br /&gt;        keepalive yes; # Keep connection alive&lt;br /&gt;        stat yes; #yes, no&lt;br /&gt;&lt;br /&gt;        up {&lt;br /&gt;            # Connection is Up&lt;br /&gt;            # 10.3.0.1 - local, 10.3.0.2 - remote&lt;br /&gt;            # ifconfig "%% 192.168.254.201 pointopoint 192.168.254.200 mtu 1450";&lt;br /&gt;            # route "add -net 192.168.0.0 netmask 255.255.255.0 gw 192.168.254.200";&lt;br /&gt;            ifconfig "%% up";&lt;br /&gt;            program "brctl addif br0 %%";&lt;br /&gt;        };&lt;br /&gt;        down {&lt;br /&gt;        # Connection is down&lt;br /&gt;        # 10.3.0.1 - local, 10.3.0.2 - remote&lt;br /&gt;        ifconfig "%% down";&lt;br /&gt;        # route "del -net 192.168.0.0 netmask 255.255.255.0 gw 192.168.254.200";&lt;br /&gt;        };&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;then on server, vtund -s (change port to 5000?)&lt;br /&gt;&lt;br /&gt;then on client: vtund IP-Tunnel 172.16.2.16 (real of IP of server).&lt;br /&gt;&lt;br /&gt;other references:&lt;br /&gt;recompile kernel &lt;a href="http://www.howtogeek.com/howto/ubuntu/how-to-customize-your-ubuntu-kernel/"&gt;http://www.howtogeek.com/howto/ubuntu/how-to-customize-your-ubuntu-kernel/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;check Universal Tun/tap device driver support under Device Drivers &gt; Network device support&lt;br /&gt;&lt;br /&gt;try tunctl to create tap, e.g. &lt;a href="http://www.mail-archive.com/vtun-users@lists.sourceforge.net/msg00001.html"&gt;http://www.mail-archive.com/vtun-users@lists.sourceforge.net/msg00001.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;try steps here: &lt;a href="http://adamolson.com/articles/UnixReview.com%20%20Secure%20Tunneling%20between%20Intranets%20with%20VTun%202000.htm"&gt;http://adamolson.com/articles/UnixReview.com%20%20Secure%20Tunneling%20between%20Intranets%20with%20VTun%202000.htm&lt;/a&gt;&lt;br /&gt;or here: &lt;a href="http://www.opennet.ru/soft/vpn_table/vtund1.html"&gt;http://www.opennet.ru/soft/vpn_table/vtund1.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;read &lt;a href="http://vtun.sourceforge.net/setup.html"&gt;http://vtun.sourceforge.net/setup.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;tips for manual setup: &lt;a href="http://www.blindhog.net/linux-bridging-for-gns3-lan-communications/"&gt;http://www.blindhog.net/linux-bridging-for-gns3-lan-communications/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;and &lt;a href="http://www.linux.com/archive/articles/54894"&gt;http://www.linux.com/archive/articles/54894&lt;/a&gt; vtun tutorial&lt;br /&gt;&lt;br /&gt;bridging in Linux: &lt;a href="http://www.linuxfoundation.org/en/Net:Bridge"&gt;http://www.linuxfoundation.org/en/Net:Bridge&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://dkprojects.wordpress.com/transparent-ethernet-bridge/"&gt;http://dkprojects.wordpress.com/transparent-ethernet-bridge/&lt;/a&gt; - transparent bridge (hub)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1138208274065767718-6767911996909115828?l=awgtek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://awgtek.blogspot.com/feeds/6767911996909115828/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://awgtek.blogspot.com/2009/06/vtun-experimentation_17.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/6767911996909115828'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/6767911996909115828'/><link rel='alternate' type='text/html' href='http://awgtek.blogspot.com/2009/06/vtun-experimentation_17.html' title='vtun Experimentation'/><author><name>S931Coder</name><uri>http://www.blogger.com/profile/17609807805714986516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1138208274065767718.post-4363124504276372276</id><published>2009-03-22T13:01:00.001-07:00</published><updated>2011-09-08T09:58:02.710-07:00</updated><title type='text'>TortoiseSVN - Quick Start</title><content type='html'>TortoiseSVN repository set up:&lt;br /&gt;&lt;br /&gt;-Install TortoiseSVN&lt;br /&gt;-Perform these steps in Windows Explorer:&lt;br /&gt;-right click in new empty dir (named after your project) and&lt;br /&gt;choose ToroiseSVN &amp;gt; create repository here. This will be your repository, so make note of its location.&lt;br /&gt;-Then rightclick your project folder and click TortoisSVN &amp;gt; Import, Browse to the path to your newly created repository and hit ok. Alternatively, enter a path like &lt;a href="file:///SVNRepos/MyProject"&gt;file:///SVNRepos/MyProject&lt;/a&gt;&lt;br /&gt;-Rename your project folder by appending ".bak" or anything&lt;br /&gt;-Create a new empty folder next to your old folder having the same original name of the project folder&lt;br /&gt;-Open the new empty project folder and right click in the empty folder and choose SVN Checkout...&lt;br /&gt;-Make sure the path to your newly crated repository is under "URL of repository:" and hit OK&lt;br /&gt;&lt;br /&gt;Now you have a version controlled project!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1138208274065767718-4363124504276372276?l=awgtek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://awgtek.blogspot.com/feeds/4363124504276372276/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://awgtek.blogspot.com/2009/03/tortoisesvn-quick-start_22.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/4363124504276372276'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/4363124504276372276'/><link rel='alternate' type='text/html' href='http://awgtek.blogspot.com/2009/03/tortoisesvn-quick-start_22.html' title='TortoiseSVN - Quick Start'/><author><name>S931Coder</name><uri>http://www.blogger.com/profile/17609807805714986516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1138208274065767718.post-2770004653707972002</id><published>2009-03-07T21:11:00.001-08:00</published><updated>2009-07-04T13:23:21.004-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby rails schema'/><title type='text'>Thoughts on Ruby on Rails</title><content type='html'>Was doing some research on the pros and cons of ROR and came across &lt;a href="http://www.oracle.com/technology/pub/articles/haefel-oracle-ruby.html"&gt;this article&lt;/a&gt;. A snippet:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Rails is designed from the ground up to create dynamic Web sites that use a relational database backend. It adds key words to the Ruby programming language that make Web applications easier to configure. In addition, it's designed to automatically generate a complete, if somewhat crude, Web application from an existing database schema. The latter is both Ruby's greatest strength and its Achilles' heel. Rails makes assumptions about database schema naming conventions that, if followed, make generating a basic Web site a matter of executing single command. But to do this may require additional configurations or in some cases may not be possible at all. You're also likely to find that just about every database convention that Rails expects can be overridden, but the more overriding that is needed, the less productive the platform becomes.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;I knew this instinctively long ago when I did research debating whether to use an existing content management system (CMS) or create one from scratch. At that time, I was visiting blogs where followers of the ROR cult would rave about ROR and attack anyone that pointed out its flaws. There was this one guy in particularly that kept pointing to the database, and noting that the database design is too restrictive. He argued in favor of his own CMS, RADICORE, from which I got the idea to incorporate XSLT into my new CMS.&lt;br /&gt;&lt;br /&gt;My opinion is that ROR is too tightly coupled to the database. The database design dictates the application. In that sense, it's a two-tiered application. I know next to nothing about ROR, but I've got friends and associates who work with it for a living. But I can't for the life of me understand the attraction of a platform that doesn't have a robust middle layer! Is there any concept of business objects in ROR?&lt;br /&gt;&lt;br /&gt;Another &lt;a href="http://www.oracle.com/technology/pub/articles/saternos-rails.html"&gt;article &lt;/a&gt;was linked to from the above article which lays out the restrictions and implications of a rails application:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Conventions that relate to legacy schema integration with Oracle and Rails include the following:&lt;br /&gt;Tables are named in using the plural form of the model they represent. For example, an "employee" model maps to an "employees" table.&lt;br /&gt;All tables that contain data that will be updated contain a primary key called "id."&lt;br /&gt;In the case of Oracle Database, this primary key is incremented using a sequence with a name based on the table it increments. A table named "employees" that contains an "id" will be incremented by a sequence named "employee_seq."&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Apart from the unappealingness of the restictions of how one must name the tables, I find something else more disquieting. The unspoken assumption in the Rails architecture is that tables map to entities in the traditional sense, i.e. that they reflect entities that appear perhaps in the real world and directly against which the application will perform its actions.&lt;br /&gt;&lt;br /&gt;This makes integration of rails with one of my CMS's impossible, since the tables in my "MyEntityDB" framework are really meta-tables.&lt;br /&gt;&lt;br /&gt;Then there's all those files in the "layouts" folder. That's another unspoken assumption that the design will reside in files. That makes another one of my CMS's impossible to work with Rails, because the design parts happen to reside in database table fields.&lt;br /&gt;&lt;br /&gt;It also appears to be a cryptic version of Smarty.&lt;br /&gt;Here's some sample ROR code from a downloadable app from &lt;a href="http://www.alistapart.com/articles/gettingstartedwithrubyonrails"&gt;here&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_Zl39QP9tSP4/SbOCRA9nw8I/AAAAAAAAACk/HiW0JRo7VfY/s1600-h/rubycode.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5310731614427792322" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 291px; CURSOR: hand; HEIGHT: 155px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_Zl39QP9tSP4/SbOCRA9nw8I/AAAAAAAAACk/HiW0JRo7VfY/s400/rubycode.jpg" border="0" /&gt;&lt;/a&gt; The embedded variables indicate a strong reliance on the application environment, which also I find disquieting. I prefer pure XSLT for the view layer, since it depends on XML for its data. That's what I use in my MyEntityDB framework, because it enforced complete separation between code and presentation (not just token separation as in Smarty Templates).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1138208274065767718-2770004653707972002?l=awgtek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://awgtek.blogspot.com/feeds/2770004653707972002/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://awgtek.blogspot.com/2009/03/thoughts-on-ruby-on-rails_07.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/2770004653707972002'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/2770004653707972002'/><link rel='alternate' type='text/html' href='http://awgtek.blogspot.com/2009/03/thoughts-on-ruby-on-rails_07.html' title='Thoughts on Ruby on Rails'/><author><name>S931Coder</name><uri>http://www.blogger.com/profile/17609807805714986516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_Zl39QP9tSP4/SbOCRA9nw8I/AAAAAAAAACk/HiW0JRo7VfY/s72-c/rubycode.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1138208274065767718.post-926859402319349074</id><published>2009-02-21T23:34:00.001-08:00</published><updated>2009-07-04T13:23:21.004-07:00</updated><title type='text'>Volts, Amps, and Watts, Oh my!</title><content type='html'>&lt;a href="http://en.wikipedia.org/wiki/Volt"&gt;http://en.wikipedia.org/wiki/Volt&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Had to read it twice before I realized that a Volt represents the &lt;em&gt;potential&lt;/em&gt; power, while Amps represents the actual power. "Watts" represent the actual power as well, but it's the &lt;em&gt;total &lt;/em&gt;power arrived at by multiplying amps by volts.&lt;br /&gt;&lt;br /&gt;Another realization I had when researching power consumption constraints for a possible home data center was that the "watts" specification on the side of appliances is actually the measure of watts &lt;em&gt;per hour&lt;/em&gt; (DUH!). So if the space heater is 1500 watts, that means it's using 1500 watts (1.5 kW) per hour (if it's turned on and set to High).&lt;br /&gt;&lt;br /&gt;More notes:&lt;br /&gt;Helpful discussion &lt;a href="http://www.webhostingtalk.com/archive/index.php/t-184584.html"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1138208274065767718-926859402319349074?l=awgtek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://awgtek.blogspot.com/feeds/926859402319349074/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://awgtek.blogspot.com/2009/02/volts-amps-and-watts-oh-my_21.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/926859402319349074'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1138208274065767718/posts/default/926859402319349074'/><link rel='alternate' type='text/html' href='http://awgtek.blogspot.com/2009/02/volts-amps-and-watts-oh-my_21.html' title='Volts, Amps, and Watts, Oh my!'/><author><name>S931Coder</name><uri>http://www.blogger.com/profile/17609807805714986516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
