... my attempt at documenting my adventures as a developer.
I regularly come across, or generally do quite interesting things in my day job, so when I have some time I try and write about them. Hopefully you'll find some of the Articles handy.
I've been working on another project recently and have decided to stray away from typical relational databases (IE SQL), and get involved in the NoSQL revolution.... Primarily because I was sold the idea by Andy!
Getting this to work however with the latest version of MongoDb (2.4.6), proved to be some what of a challenge. Therefore I've wrote this guide for anyone else suffering! We will be installing and configuring the following on Ubuntu Server 12.04 LTS:
I was recently introduced to Redis by a colleague. For those of you who don't know what it is, it is essentially an incredibly fast key-value store.
We had decided to adopt this technology at work, so we began to think about Performance, Redundancy etc, and after a day or two of playing around discovered that there isn't really an established solution for what we wanted to do.
As a result I ended up combining a few different technologies to get the setup we required, to give us redundancy, automatic failover, and horizontal scaling.
Those of you who are familiar with Google Music know that you can upload up to 20,000 songs free of charge, which you can them stream from your PC/Laptop/iPad/Phone, whatever. They provide a winky little UI driven client which will automatically upload files in a monitored directory for you.
I have a media server on my home network where my music files live. It's the central place that I use to stream music to various devices around my home. This particular server runs a headless version of Linux and therein lies the problem, I don't have a GUI to use the Google client, and I don't want to install one just for that purpose!
I tried several methods of running the client on a headless box and eventually gave up and decided to write my own Python based script do sync for me.
My article on Throttling Requests got quite a bit of attention, so I thought I would continue the security theme and show you a simple method of automatically encrypting hidden form fields that you don't want the user to be able to change, or know the value of. I will be making use of an extension to the HtmlHelper, a custom ModelBinder to handle the decryption and also Rijndael encryption to secure your data (you could use any method of encryption you so desire).
I must stress that this is simply one measure to ensure the security of your data, you should always still be validating the action at the code and finally database level, to ensure you have a secure application!
Jambr is still a baby, as such it's content and structure is changing.
It originally existed on two urls (www and non-www), and google was indexing both of them and to add to it not long ago I changed the url structure for Articles to be more, SEO friendly.
All of these changes confuse search engine indexers and one way to help them out is to provide them with a Sitemap. My rough list of requirements were:
In my day job I work for HP Enterprise Security Services, part of my role is building secure and robust web applications which do everything possible to prevent malicious attacks.
One of the most simple things you can do in your MVC project is to prevent repeat requests to a page. This is primarily used in form submissions, for example in the comments box you see on Jambr, I don't want people to be able to repeatedly post to it over and over again, I want to introduce a time limit in-between these requests.
Also, there are going to be a lot of places on a typical site you want to limit such behaviour, but don't want to repeat the code everywhere. This is where custom Action Filter Attributes come in.
In my Previous Post I demonstrated how to create an RSS feed using an XML Document.
This got some attention as it was pointed out to me that I could achieve the same result using the .NET Syndication classes. As a result I have created this programming article with an alternate version of the class, which does away with the XMLDocument manipulation and uses these Syndication classes.
As with any default namespaces and classes in the .NET framework, they expose a lot of things that I quite simply don't need for my simple News or Article RSS feed, so I have wrapped them up as I did last time into a utility class, which enables you to quickly and easily create your feed.
Rather than post another article about setting up and using third party tools with .NET MVC, I thought I would take a slightly different approach this time and write a Programming with .NET article based on something I have had to do whilst creating Jambr.
I had the requirement to create an RSS feed for both the Articles and News sections of the site so you lovely readers could subscribe to either of them, I haven't actually had to create RSS feeds before so had to do some digging to find the best route to go down. I read numerous programming articles on line and compiled a simple class which enables me to create an RSS2.0 compliant feed, as seen here.
As promised, here is my next article regarding another tool I find completely invaluable in my life as a developer, Elmah.
Basically Elmah sites quietly on your site, logging any exceptions (Code based or Web Server, for example, 404) which occur to (in this example) a database. It then provides a nice neat GUI front end to allow you to view the details of these errors, including stack traces.
If you're anything like me, and are tired of conversations which go like this:
You will be happy Elmah exists!
The primary reason I started this web site was to share with you the things I come across in my day job as a Web Developer, the first batch of articles I am going to write will be around the tools I find invaluable in my role.
So first and foremost, let’s take a look at MiniProfiler.