Saturday, June 27, 2009
Real time web analytics
Friday, January 9, 2009
Amazon releases web based console for EC2
maintaining EC2 instance much more easier. https://console.aws.amazon.com
Repcached - Replicated memcached
http://repcached.lab.klab.org/. For now it only works on linux. Hopefully, Win32 version
will follow soon.
Thursday, December 25, 2008
Time Zone ability for SQL Server 2005 and 2008
Thursday, October 23, 2008
Saturday, October 18, 2008
Database scripts and contiguous integration
We kept our database scripts in VS.net database projects. Idea is to create the database with sql scripts everytime before running the unit tests. This way we can detect any mistakes in the sql server scripts. We wrote two power shell scripts. First one to combine all the sql scripts together into a file and the other one to drop and create the database. Integration with CC.net was done using the Executable Task in CC.net.
Friday, October 10, 2008
Cloud for Windows
Recently Amazon made an announcement that they will be introducing Windows Server and SQL Server in cloud. However, they are not first ones to do that. There is already a cloud service called Go Grid. It been around since March and not many people know about. For our latest project we decided to give it a try and found it to very useful. Few advantages Go Grid have right now over EC2
· 24/7 technical support that comes with the account at no extra change.
· Nice interface for creating and deleting servers.
· Licensed Win 2003, Win 2008 and SQL Server 2005.
· Have prepaid plans.
· Free F5 load balancers.
· They have a $50 trial plan.
Few disadvantages compare to EC2
· Right now they don’t have a cloud storage service. (According to Go Grid blog this feature will be made available very soon).
· They don’t have a backup solution. To backup one has to use some third party solution as mozy.com or S3.
· No support for custom OS images for now.
· Will get charged for server resources even if the server is shutdown. Only way to not incur charges is to delete the server.
· Currently their instances are limited to 2GB of RAM. However, this month they are supposed to be introducing 4GB and 8GB instances. (Can’t wait for that.)
Overall, my experience with the service is good except some initial setup issues. I would recommend anyone who is interested in hosting their application in a cloud give Go Grid a try.
Sunday, October 5, 2008
Memcached 1.2.6 for Windows
http://code.jellycan.com/memcached/
It has quite a few bugs and crash fixes.
Sunday, September 7, 2008
Improve ASP.net response time
- View State
o Reduce the use of view state as much as possible.
o If need to store objects in view state consider using type convertors.
o Move view state to the bottom of the page.
- Java Script and CSS
o Try to use ToolkitScriptManager instead of ScriptManager if using ASP.net AJAX Control Toolkit. It has the ability to combine Toolkit scripts together to reduce number of request.
o Use release mode in production for ToolkitScriptManager to get already compact ASP.net AJAX Control Toolkit script files.
o Combine custom java script and CSS files into one file.
o Cache CSS and Java Script in the browser.
o Compact Java Script and CSS to reduce size.
- Images
- Cache
o Cache data and page output. (Note: ASP.net cache is not a distributed cache and will not work in a Web farm. Consider using memcached and memcached providers.)
Saturday, September 6, 2008
Creating an Alert System with NHibernate, WCF and MSMQ
- Manuel Abadia's ASP.NET stuff - NHibernate and calculated properties
- SOA'izing MSMQ with WCF (and Why It's Worth It)
Using these two posts we were able to create a subscriber based alert system. For our solution we created a marker interface IAlert and have all domain objects we needed to alert on inherit from this interface. Instead of using the FindDirty method as mentioned in the first post, we used OnSave [for Insert], OnFlushDirty [for Update] and OnDelete [for delete]. In these functions we place a check if the object is of type IAlert we converted its current and previous state if any into an xml packet. Then that packet was saved on the HttpContext.Current.Items collection. The reason for saving it on the Items collection is that transaction could fail and we don’t want to generate alerts for failed transactions. Then in the PostFlush method in the interceptor we called the WCF service that places that xml packet on to the MSMQ queue. This operation is asynchronous and does not add time to the transaction. On the other side we wrote a WCF service that processes that packet. This way, alert was sent asynchronously and transaction time was not effected. Another advantage of using this approach is processing WCF service has all the information needed to process that alert in the xml packet and only needs to hit that database when it needs to gets that list of subscribers to send messages.