An introduction to System.Web.Portal

One of my resolutions that I didn’t mentioned in my previous post about “Things I’m going to do in 2009” is to upgrade my portal to ASP.NET 3.5 add some great features to it.

But as a matter of fact, it hadn’t has a name because the portal was not my main goal and I really didn’t have any plan for it till a few weeks ago. Because I’m going to release this version officially, I decided to select a name for it. I researched a lot about a good name and found lots of names! Finally and after lots of researches, I’ve selected System.Web.Portal and think it’s a good name for it.

I’ve seen lots of portals and have worked with most of them such as DotNetNuke, Rainbow, etc. and realized that these portals are only good for those who are a normal user and don’t want to develop anything under these portals. Also these portals have some kind of limitations such as the database limitations and more.

In System.Web.Portal it’ll be easy like a piece of cake to develop modules, controls, providers, etc. and I’m sure you’ll enjoy it.

In the first version of this portal witch will be available in few months, I’m going to use the following technologies:

ASP.NET 3.5 Web Forms

I’m going to use ASP.NET Web Forms in this project and as a matter of fact, I don’t want to move into ASP.NET MVC or any other alternative solutions but a developer with a knowledge of ASP.NET can develop an ASP.NET MVC version because it’ll be so easy to develop under this platform!

LINQ

I think it’s now time to leave some interesting things such as DataSet, DataTable, etc. and move to LINQ because of its ease-of-use. The first version of this portal will have two providers; a provider for Microsoft SQL Server and one for XML and I’m going to use LINQ in order to do so. Besides, the next versions will support some other database engines like Sqlite, VistaDB, FireBird SQL, Oracle and more.

Compatible With Mono

First of all, Lets see what is mono:

Mono is a software platform designed to allow developers to easily create cross platform applications. It is an open source implementation of Microsoft’s .Net Framework based on the ECMA standards for C# and the Common Language Runtime. We feel that by embracing a successful, standardized software platform, we can lower the barriers to producing great applications for Linux.

More info: http://www.mono-project.com/What_is_Mono

This portal will be writing in C# 3.0 which is completely supported by Mono. It means you can also run this portal in Linux, Sun Solaris and any other platforms you want!

All you’ll need is to create a provider for your database like MySQL (that of more common in Linux) and then enjoy! You don’t want? The default XML provider is supported in all platforms; so don’t change anything if you’re not going to use any specific database.

There are some other great features in this portal that you’ll see in the first release of this project.

How to permanently delete files from your computer

Sometimes you want to sale your PC or laptop to another person but there are some important or high-privacy files that you don’t want anyone to access them.

You may format your hard drives but these days formatting a hard drive is not a safe way because of some recovery tools that a person can use and recover all your files!

www.recovermyfiles.com is one of the most famous one that enables you recover all your deleted files.

So what should a person do if wants to permanently delete file that no recovery software can recover?

In this quick post I want to introduce you to a good application name “SDelete” that is a recommendation software from the Microsoft in order to do so.

I really don’t want to explain more because Microsoft already did in the link below. You can find all you need to know about it and also there is a download link for “SDelete”.

Here we go: http://technet.microsoft.com/en-us/sysinternals/bb897443/

How to encrypt data using Microsoft SQL Server

Today I had a problem with Encryption. I wanted to encrypt some data and then compare to the thing that user entered. It’s so easy to do it in .NET environment using System.Security.Cryptography but the problem was, the company had been developed an application using Visual Basic 6 and there was no way to change it.

That company had been developed an encryption algorithm to use in their own products and I didn’t know the structure. I called the old software’s developer and he told me that “I cannot change my structure!”. “The only thing I can do for you is to pass you passwords which users entered”, he said. After lots of challenges, He accepted to add some codes to his application in order to save another password is another database field. So I decided to create a User-Defined Function in order to encrypt my data using MD5 algorithm.

As a matter of fact, I was gotten so far from SQL Server programming since the release of LINQ and after this long time, I got back to the SQL Server T-SQL programming.

In this post, I’m going to tell you how to encrypt data using Microsoft SQL Server.

Encrypting data in SQL Server is much easier than .NET, in my opinion. The HashBytes function will enables you to do so!

Note: HashBytes function is only available in Microsoft SQL Server 2005 and 2008.

Here is the structure:

HashBytes ( <algorithm>, { @input | 'input' } )

And here is the sample:

DECLARE @HashThis nvarchar(4000);
SELECT @HashThis = CONVERT(nvarchar(4000),'dslfdkjLK85kldhnv$n000#knf');
SELECT HashBytes('SHA1', @HashThis);

You can also convert it to HEX. To do this you need to make a use of a UDF in the master database named “fn_varbintohexstr” witch do it for you!

This is one of those functions that look simple but you cannot believe how much time I spent in order find it out :-); because I couldn’t find it even in MSDN!

So the code will change a little:

DECLARE @HashThis nvarchar(4000);
SELECT @HashThis = CONVERT(nvarchar(4000),'dslfdkjLK85kldhnv$n000#knf');
SELECT master.dbo.fn_varbintohexstr(HashBytes('SHA1', @HashThis));

Windows 7 is now available on MSDN!

Windows 7 - Photo taken from http://en.onsoftware.com/wp-content/uploads/2008/05/windows-7-logo.jpg About 2 days ago, Microsoft released Windows 7 beta 1 and it’s now available on MSDN.

I think it’s necessary for Microsoft to release a new version of Windows because in my opinion, current Windows Vista SP1 is good-for-nothing. I’m using Windows Vista SP1 while developing applications and think it’s not good even for development purposes.

I haven’t tried Windows 7 because of some internet problems we have in the country and my internet bandwidth limitations, but I recommend it because Microsoft said, “Over the past few years, you’ve asked us to make some changes to Windows. We listened closely. Now it’s time to share an early look at how we’ve used your feedback.”

People aren’t satisfied of Windows Vista because of errors it has so Microsoft released Windows Mojave™. You can check out its website to see how people hate Windows Vista.

Microsoft is trying to release a better version of Windows which you can call it Windows because they lost a lot of things on Windows Vista. In my opinion, Windows Vista Project has been lost.

By the way, Windows 7 has some great features that you can checkout at: http://www.microsoft.com/windows/windows-7/whats-new/

Organizing my online communities

Previously, I posted about my 2009 resolutions and I said there I’m going to move my blogs to here (http://ramezanpour.net).

I’ve quitted a few communities and these are fragmented:

Facebook

Facebook LogoCurrently, I’m using Yahoo 360 in order to stay connect with my friends but I believe that Facebook is more standard and much better than Yahoo 360, etc.

Facebook is a popular, free-access social networking website that is operated and privately owned by Facebook, Inc. Users can join networks organized by city, workplace, school, and region to connect and interact with other people. People can also add friends and send them messages, and update their personal profile to notify friends about themselves. The website’s name refers to the paper facebooks depicting members of a campus community that some US colleges and preparatory schools give to incoming students, faculty, and staff as a way to get to know other people on campus.

You can access my Facebook account from here: http://www.facebook.com/people/Mohammad_Mahdi_Ramezanpour/1373312940

Twitter

Twitter LogoI love blogging but some news cannot be published as a blog because they’re just one of two sentences. Because of that I’ve selected Twitter to do such as thing.

Twitter is a free social networking and micro-blogging service that allows its users to send and read other users’ updates (otherwise known as tweets), which are text-based posts of up to 140 characters in length.

Here’s my Twitter account: http://twitter.com/ramezanpour

Flickr

Flickr Logo Recently I started to publish my photos to the web and I know Flickr is the best place to publish them.

Flickr is an image and video hosting website, web services suite, and online community platform. It was one of the earliest Web 2.0 applications. In addition to being a popular Web site for users to share personal photographs, the service is widely used by bloggers as a photo repository. Its popularity has been fueled by its organization tools, which allow photos to be tagged and browsed by folksonomic means. As of November 2008, it claims to host more than 3 billion images.

Check out my Photostream at: http://www.flickr.com/people/ramezanpour/

Windows Mobile Arabic/Persian language support

Arabic/Persian language support on Windows Mobile using Arabizer - Photo taken from http://i4.tinypic.com/8511r1w.jpg Recently, I developed a SmartDevice application using .NET Compact Framework 3.5 Windows Mobile 5 SDK. Customer wanted me to develop the application with Persian language support so I started normally and used Persian because I didn’t feel anything bad. After I wanted to deploy it for tests, I realized that Windows Mobile 5 doesn’t support Arabic/Persian language by default! I also understood that Windows Mobile 5 does not support some specific SQL collations such as “SQL_Latin1_General_CP1256_CS_AS” because it hasn’t that kind of encoding until you install a specific encoder for it.

After some researches, I found a Pocket PC software name Arabizer which enables Windows Mobile to support Arabic language and it’s free to try. But as you may know, there are some specific characters in Persian language that Arabic doesn’t have.

I went through forums and found out that there is a company which had been developed an application based on Arabizer which adds Persian characters to it. This application is monetary but you will need it when want to develop a Persian application in Windows Mobile environment.

Because it was very difficult for me to find such an application, I decided to upload it here so you can download and have a free trial and I’m sure you’ll be definitely buying it if you want to develop an Arabic/Persian language SmartDevice application. Click here to download Arabizer.

With IMAGiNET Pocket Arabizer, you can Enter, Edit, and View Arabic Data inside Microsoft Applications, not only using an Arabic Soft Keyboard, but also using Arabic Handwriting character Recognition. You also get Prayer Times, Hijri Calendar and Arabic English bidirectional dictionary.

You can also download iPhone version if you want Arabic/Persian language support on iPhone.

Note: For those who want to add Persian language support to Arabizer I have to say that the name of that company is Part Asia.

What I’m going to do in 2009

Scheduling - Photo taken from http://www.viev.com/images/vievstock/scheduling_solutions_small_355048.jpg Planning is one of the best ways in order to keep organize, in my opinion. It’s good to have a plan every now and then. I myself fill out my Outlook calendar every week and also have an annual calendar which I’m using in order to schedule for a year. Today I’m going to publish some of my schedules for the year 2009 to public.

Move my blogs to my website

As you may know, I have some blogs such as Yahoo 360 (which I’m using to publish my non-technical blogs). I decided to move all of them to my website.

Last year, I launched http://ramezanpour.net as my website after I lost my previous (http://ramezanpour.net) in order to publish my technical articles and separated my personal and technical blogs. After a while, I realized that it’s possible to combine them.

I used .NETBlogEngine for my website and it satisfied me and now I think it can host even my personal blogs.

BlogEngine.NET is an open source .NET blogging project that was born out of desire for a better blog platform. A blog platform with less complexity, easy customization, and one that takes advantage of the latest .NET features.

BlogEngine.NET was designed using the current .NET framework and focused on simplicity, ease of extendibility, and innovative features. With BlogEngine.NET, we hope to create the natural blog of choice for all .NET developers worldwide.

Complete my self-studies

As I scheduled, I have to complete about 7 books until 2010. It’s not too easy for me because I spend about 60 hours of my life at work every week. According to my calculations, I must read up to 40 pages everyday in order to achieve my goal in studying.

The only thing I can do to achieve this is to plan in a right way.

The books have been bought and ready to read and I’ll start my reading from February 3rd (Right after my birthday).

Certifications

The year 2010 is a deadline for me so I have to take my IELTES till 2010. Also one of my IT certifications is going to expire in May, 2009 and I have to renew then whereas I must take some new certifications.

Reduce playing video games

It was about 3 years ago that I started playing games in a professional team. We were playing Counter-Strike in tournaments and more. Since I quitted playing Counter-Strike, I used to play some games in my free time. Every year I’m trying to reduce playing games and this year is something like before and I’m trying to develop some applications for free when I’m free. Maybe I want to start some open source applications and publish them in websites such as CodePlex, SourceForge, etc.

There are a lot to say about my planning for this year but I think, these were the most important.