<?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-24791333</id><updated>2011-08-26T04:21:02.809-07:00</updated><title type='text'>Kris Mattson's Tech Blog</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://kmattson.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24791333/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://kmattson.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Kris Mattson</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://static.flickr.com/103/251745677_1453893a63.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>4</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-24791333.post-4018409156775936355</id><published>2011-03-07T07:41:00.000-08:00</published><updated>2011-03-07T07:55:28.542-08:00</updated><title type='text'>Low Budget E-commerce site</title><content type='html'>Like I mentioned in my previous post, I use &lt;a href="http://www.nopcommerce.com"&gt;nopCommerce&lt;/a&gt; open source shopping cart.  I host it at home and use &lt;a href="http://www.dyndns.com"&gt;dyndns&lt;/a&gt; for dynamic dns service which basically maps your host name to your home IP address if your ISP uses DHCP, which most, like Qwest or Comcast do.  Usually,  you would have to upgrade to a business account to get a static IP.  Lastly, I use &lt;a href="http://www.montastic.com."&gt;montastic&lt;/a&gt; for free site monitoring.&lt;br /&gt;You'll most likely end up paying for the dyndns servcie, unless someone else out there knows of a better/cheaper way.  Everything else...FREE.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24791333-4018409156775936355?l=kmattson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kmattson.blogspot.com/feeds/4018409156775936355/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24791333&amp;postID=4018409156775936355' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24791333/posts/default/4018409156775936355'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24791333/posts/default/4018409156775936355'/><link rel='alternate' type='text/html' href='http://kmattson.blogspot.com/2011/03/low-budget-e-commerce-site.html' title='Low Budget E-commerce site'/><author><name>Kris Mattson</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://static.flickr.com/103/251745677_1453893a63.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24791333.post-8348972079279105845</id><published>2010-05-31T16:43:00.001-07:00</published><updated>2010-05-31T16:45:36.393-07:00</updated><title type='text'>New Web Site</title><content type='html'>Used NopCommerce for building a new E-commnerce website.  I would recommend it if you want to get an e-commerce site up and running quickly.  &lt;a href="http://www.nopcommerce.com/"&gt;http://www.nopcommerce.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You can view my website here &lt;a href="http://www.bloomnbabies.com"&gt;Bloom'n Babies&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24791333-8348972079279105845?l=kmattson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kmattson.blogspot.com/feeds/8348972079279105845/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24791333&amp;postID=8348972079279105845' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24791333/posts/default/8348972079279105845'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24791333/posts/default/8348972079279105845'/><link rel='alternate' type='text/html' href='http://kmattson.blogspot.com/2010/05/new-web-site.html' title='New Web Site'/><author><name>Kris Mattson</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://static.flickr.com/103/251745677_1453893a63.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24791333.post-2346503729514373732</id><published>2007-12-12T15:31:00.001-08:00</published><updated>2007-12-12T16:01:21.657-08:00</updated><title type='text'>Who changed that file?</title><content type='html'>Windows doesn't actually track who changes a file unless you tell it to.  Right click on your directory -&gt; Properties -&gt; Security -&gt; Advanced -&gt; Auditing -&gt; Add Everyone -&gt; Check access control attributes you want to change (in my case "Write Attributes").&lt;br /&gt;&lt;br /&gt;Start tracking changes using FileSystemWatcher and EventLog :&lt;br /&gt;&lt;br /&gt;private void StartFileMon()&lt;br /&gt;    {&lt;br /&gt;  FileSystemWatcher fsw = new FileSystemWatcher();&lt;br /&gt;  fsw.Path = @"C:\test\temp";&lt;br /&gt;     fsw.EnableRaisingEvents = true;&lt;br /&gt;     fsw.Changed += new FileSystemEventHandler(fsw_changed);&lt;br /&gt;}&lt;br /&gt;private void fsw_changed(object Sender, FileSystemEventArgs E)&lt;br /&gt;    {&lt;br /&gt;  Console.WriteLine("The file" + E.FullPath + " was " + E.ChangeType.ToString() + " on " +         System.DateTime.Now.ToString());&lt;br /&gt;  DateTime timespan = System.DateTime.Now.Subtract(TimeSpan.FromSeconds(60));&lt;br /&gt;             EventLog Log = new EventLog("Security");&lt;br /&gt;             EventLogEntry[] Entries = EventLogSearch.FindInstanceId(Log.Entries, 560);&lt;br /&gt;             Entries = EventLogSearch.FindTimeGeneratedAtOrAfter(Entries, timespan);&lt;br /&gt;     foreach (EventLogEntry Entry in Entries)&lt;br /&gt;  {&lt;br /&gt;  Console.WriteLine("Message:        " + Entry.Message);&lt;br /&gt;     Console.WriteLine("InstanceId:        " + Entry.InstanceId);&lt;br /&gt;     Console.WriteLine("Category:       " + Entry.Category);&lt;br /&gt;     Console.WriteLine("EntryType:      " + Entry.EntryType.ToString());&lt;br /&gt;     Console.WriteLine("Source:         " + Entry.Source);&lt;br /&gt;     Console.WriteLine("Source:         " + Entry.UserName);&lt;br /&gt; }&lt;br /&gt;    }&lt;br /&gt;public static EventLogEntry[] FindTimeGeneratedAtOrAfter(&lt;br /&gt;         IEnumerable logEntries, DateTime timeGeneratedQuery)&lt;br /&gt;     {&lt;br /&gt;         ArrayList entries = new ArrayList();&lt;br /&gt;         foreach (EventLogEntry logEntry in logEntries)&lt;br /&gt;         {&lt;br /&gt;             if (logEntry.TimeGenerated &gt;= timeGeneratedQuery)&lt;br /&gt;             {&lt;br /&gt;                 entries.Add(logEntry);&lt;br /&gt;             }&lt;br /&gt;         }&lt;br /&gt;         EventLogEntry[] entriesArray = new EventLogEntry[entries.Count];&lt;br /&gt;         entries.CopyTo(entriesArray);&lt;br /&gt;         return (entriesArray);&lt;br /&gt;     }&lt;br /&gt;public static EventLogEntry[] FindInstanceId(IEnumerable logEntries,&lt;br /&gt;         int instanceIDQuery)&lt;br /&gt;     {&lt;br /&gt;         ArrayList entries = new ArrayList();&lt;br /&gt;&lt;br /&gt;         foreach (EventLogEntry logEntry in logEntries)&lt;br /&gt;         {&lt;br /&gt;             if (logEntry.InstanceId == instanceIDQuery)&lt;br /&gt;             {&lt;br /&gt;                 entries.Add(logEntry);&lt;br /&gt;             }&lt;br /&gt;         }&lt;br /&gt;&lt;br /&gt;         EventLogEntry[] entriesArray = new EventLogEntry[entries.Count];&lt;br /&gt;         entries.CopyTo(entriesArray);&lt;br /&gt;         return (entriesArray);&lt;br /&gt;     }&lt;br /&gt;&lt;br /&gt;Searching the EventLogs is slow so use common sense when doing this.&lt;br /&gt;&lt;br /&gt;For more info buy this book: &lt;a href="http://www.oreilly.com/catalog/csharpckbk2/"&gt;http://www.oreilly.com/catalog/csharpckbk2/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24791333-2346503729514373732?l=kmattson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kmattson.blogspot.com/feeds/2346503729514373732/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24791333&amp;postID=2346503729514373732' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24791333/posts/default/2346503729514373732'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24791333/posts/default/2346503729514373732'/><link rel='alternate' type='text/html' href='http://kmattson.blogspot.com/2007/12/who-changed-that-file.html' title='Who changed that file?'/><author><name>Kris Mattson</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://static.flickr.com/103/251745677_1453893a63.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24791333.post-7591019892641186515</id><published>2006-11-21T12:45:00.000-08:00</published><updated>2006-11-21T13:49:19.093-08:00</updated><title type='text'>Web Service Application proxy for Ajax Cross Domain requests</title><content type='html'>Calling web services using Ajax (XMLHTTPRequest) should be an easy thing to do, however due to a constraint that inhibits the browser from calling a web service on another machine (for security reasons).  See the following article for more details, &lt;a href="http://www.xml.com/pub/a/2005/11/09/fixing-ajax-xmlhttprequest-considered-harmful.html"&gt;http://www.xml.com/pub/a/2005/11/09/fixing-ajax-xmlhttprequest-considered-harmful.html&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I submit a C# application proxy like this:&lt;br /&gt; [WebMethod]&lt;br /&gt;    public XmlDocument ServiceRequest()&lt;br /&gt;    {  &lt;br /&gt;        System.Web.HttpRequest req = this.Context.Request;&lt;br /&gt;        ASCIIEncoding encoding = new ASCIIEncoding();&lt;br /&gt;       // The url parameter is the destination web service you are calling&lt;br /&gt;        string url = req.Form.Get("url");&lt;br /&gt;        string postData = req.Form.ToString();&lt;br /&gt;&lt;br /&gt;        byte[] buffer = encoding.GetBytes(postData);&lt;br /&gt;       &lt;br /&gt;        HttpWebRequest myRequest = (HttpWebRequest)&lt;br /&gt;            WebRequest.Create(url);&lt;br /&gt;        myRequest.Method = "POST";&lt;br /&gt;        myRequest.ContentType = "application/x-www-form-urlencoded";&lt;br /&gt;        myRequest.ContentLength = buffer.Length;&lt;br /&gt;        Stream newStream = myRequest.GetRequestStream();&lt;br /&gt;       &lt;br /&gt;        newStream.Write(buffer, 0, buffer.Length);&lt;br /&gt;        newStream.Close();&lt;br /&gt;&lt;br /&gt;        HttpWebResponse myHttpWebResponse =            (HttpWebResponse)myRequest.GetResponse();&lt;br /&gt;&lt;br /&gt;        Stream streamResponse = myHttpWebResponse.GetResponseStream();&lt;br /&gt;        StreamReader streamRead = new StreamReader(streamResponse);&lt;br /&gt;        string strResult = streamRead.ReadToEnd();&lt;br /&gt;        XmlDocument xmlDoc = new XmlDocument();&lt;br /&gt;        xmlDoc.LoadXml(strResult);&lt;br /&gt;        streamRead.Close();&lt;br /&gt;        streamResponse.Close();&lt;br /&gt;        myHttpWebResponse.Close();&lt;br /&gt;        return xmlDoc;&lt;br /&gt;          &lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;Using javascript construct your POST request and pass the destination url and one of the parameters.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24791333-7591019892641186515?l=kmattson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kmattson.blogspot.com/feeds/7591019892641186515/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24791333&amp;postID=7591019892641186515' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24791333/posts/default/7591019892641186515'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24791333/posts/default/7591019892641186515'/><link rel='alternate' type='text/html' href='http://kmattson.blogspot.com/2006/11/web-service-application-proxy-for-ajax.html' title='Web Service Application proxy for Ajax Cross Domain requests'/><author><name>Kris Mattson</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://static.flickr.com/103/251745677_1453893a63.jpg'/></author><thr:total>1</thr:total></entry></feed>
