مهدی ولی خانی (ولیخانی) هستم .متولد دوم خرداد سال 63 . فارغ التحصیل رشته نرم افزار کامپیوتر ، مقطع کاردانی ، دانشگاه جامع علمی - کاربردی واحد داده پردازی. در حال حاضر حرفه ی من طراحی و برنامه نویسی وب می باشد . هدف اصلی من از انتخاب رشته نرم افزار کامپیوتر فقط ورود به دنیای طراحی و برنامه نویسی تحت وب بود . در واقع بزرگترین سرگرمی من طراحی و برنامه نویسی می باشد .(چه بهتر که تحت وب باشه!) ساعات زیادی از وقت روزانه من پشت یک کامپیوتر در اتاقم میگذره . به موسیقی زیاد علاقه دارم . دو سبک موسیقی را بسیار می پسندم . موسیقی اصیل ایرانی و موسیقی راک . رنگ مورد علاقه آبی و تیم مورد علاقه پرسپولیسه .

<November 2008>
SunMonTueWedThuFriSat
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456
RSS 2.0 | Atom 1.0 | CDF
Google Reader
del.icio.us blog.mehdiVK.net latest Posts
Add to my Yahoo!
Subscribe with Bloglines
Subscribe in NewsGator Online

my Feedster
Add to my AOL
Furl blog.mehdiVK.net latest Posts
Subscribe to Rojo


Total Posts: 159
This Year: 68
This Month: 0
This Week: 0
Comments: 112
newtelligence dasBlog 1.9.6264.0


وبلاگ مهدی ولیخانی
وبلاگ مهدی ولیخانی در رابطه با تکنولوژی دات نت
Monday, September 29, 2008
ویژوال استودیو 2010

مایکروسافت اطلاعات اولیه ای در رابطه با Visual Studio 2010 , .net Framework 4.0 ارائه داده است که می توانید از طریق لینک های زیر مطالعه کنید:

+ Microsoft Unveils Next Version of Visual Studio and .NET Framework
+ Visual Studio 2010 and .NET Framework 4.0 Overview
+ Visual Studio Team System 2010 Week on Channel 9
+ Microsoft Announces Visual Studio 2010. Developers Respond


  (  |  )  ( Comments [0] | Trackback )
Saturday, September 27, 2008
blog.mehdivk.net وارد سومین سال فعالیت خود شد.

26 ام سپتامبر 2006 اولین پست این وبلاگ با عنوان "یه وبلاگ اونم فقط با یک کلیک" منتشر شد ، امروز 27 ام سپتامبر 2008 است و این وبلاگ وارد سومین سال فعالیت خود می شود . آمار نشون میده در مدت این 2 سال در مجموع 138 پست منتشر شده و 103 نظر در رابطه با مطالب منتشر شده ارسال شده است . به طور متوسط در هر ماه 5 مطلب در این وبلاگ منتشر شده است و می توان گفت بطور متوسط در هر هفته این وبلاگ با یک مطلب جدید بروز شده است . آمار نشان از این دارد که این وبلاگ یک وبلاگ فعال نیست ! همچنین آمار فید برنر میگوید که این وبلاگ در حال حاضر 120 خواننده فید دارد.


  (  |  )  ( Comments [2] | Trackback )
Friday, September 26, 2008
Silverlight 2.0 RC ارائه شد.

دیروز نسخه RC این محصول مایکروسافت ارائه شد ، جهت اطلاعات بیشتر کلیک کنید.


  (  )  ( Comments [0] | Trackback )
Wednesday, September 24, 2008
ResolveUrl و ResolveClientUrl در ASP.net
کلاس Control در ASP.net شامل دو متد ResolveUrl و ResolveCilentUrl می باشد که هر دو این متدها یک ورودی دارند که همانا مسیر یک فایل است ، خروجی متد اول آدرس یک فایل نسبت به Root است و خروجی متد دوم مسیر یک فایل نسبت به شاخه فعلی است .

بطور مثال اگر ما بخواهیم مسیر فایل Detail.aspx  را نسبت به Root دربیارم کافیست از دستور زیر استفاده کنیم :
ResolveUrl("Detail.aspx");

حال اگر بخواهیم مسیر فایل Icon.png را که در شاخه Images می باشد را نسبت به شاخه فعلی بدست آوریم کافیست از دستور زیر استفاده کنیم:
ResolveClientUrl("~/Images/Icon.png");

  (  )  ( Comments [0] | Trackback )
Monday, September 22, 2008
معرفی nAML

NET. Application Modeling Language یا nAML (بخوانید namel) یک زبان وِيژوال برای مدل سازی برنامه های دات نت می باشد که از سوی آقای محمذ اشرف العالم (Mohammad Ashraful Alam) ارائه شده است .
جهت دریافت اطلاعات بیشتر در رابطه با nAML می توانید به صفحه این پروژه در msdn بروید و یا این فایل (فرمت pdf) را که حاوی معرفی این زبان و مثال های مختلفی از این زبان هست را دریافت نمائید.


  (  )  ( Comments [0] | Trackback )
Sunday, September 21, 2008
دانلود فایل در #C

با استفاده از کلاس System.Net.WebClient شما می توانید فایل های مورد نطر خود را از طریق #C دانلود کنید ، بطور مثال در یک سیستم نرم افزاری برای دریافت سرویس پک های یک نرم افزار می توان از روش زیر استفاده کرد .

System.Net.WebClient _client = new System.Net.WebClient();
_client.DownloadFile("http://www.example.com/somefile.exe",@"c:\somefile.exe");

  (  )  ( Comments [0] | Trackback )
Saturday, September 20, 2008
مشکل کنترل منوی ASP.net و مرورگر Safari شرکت اپل ، بیان دو راه حل دیگر

چندی پیش در پستی به بیان عدم نمایش صحیح کنترل منوی ASP.net در مرورگر Safari پرداخنم . در آن پست به بیان یک راه حل کلی پرداختم راه حلی که مشکل تمامی کنترل ها در تمامی پروژه های ASP.net ی که بر روی سرور مورد نظر هستند را رفع می کرد . اما یکی از معایت راه حل ارائه شده این بود که مدیران سرورهای به اصطلاح share امکان اعمال این چنین تغییراتی را بر روی سرور نمی دهند و برای ما که بیشتر برنامه هایمان بر روی سرورهای share اجرا می شوند شاید این روش کارائی نداشته باشد . در این پست قصد دارم 2 روش دیگر را برای رفع این مشکل ارائه کنم که نیازی به compile کردن مجدد dll های موجود بر روی سرور نیست و اصولا با خود سرور کاری ندارد و تغییرات بر روی پروژه اعمال می شود.

روش 1 - اضافه کردن "ClientTarget="UpLevel به Page Directive
با اضافه کردن بخش فوق به Page Directive مشکل فوق برای مرورگر سافاری برطرف می شود . به این نکته توجه داشته باشید که در مرورگر فایرفاکس اگر در یک صفحه همزمان از منو و کنترل TreeView استفاده می کنید و برای رفع مشکل نمایش "ClientTarget="UpLevel  را به Page Directive اضافه کرده اید آنگاه عمل Expand کردن Node ها در کنترل Tree View دیگر عمل نمیکند.

روش 2 - اضافه کردن "ClientTarget="UpLevel  در Code Behind
روش اول هم محدودیتی داشت و آن هم مشکل Expand کردن Node ها در TreeView می باشد پس بهتر است "ClientTarget="UpLevel  را در Code Behind اضافه کنیم ، حال می توانیم شرطی بگذاریم که اگر مرورگر Safari بود "ClientTarget="UpLevel  اضافه شود (تا مشکل برطرف شود) در غیر اینصورت "ClientTarget="UpLevel  اضافه نشود تا مشکلی هم برای کنترل TreeView پیش نیاد چرا که تنها سافاری است که مشکل دارد . برای این کار می توانیم از کد زیر استفاده نمائیم :

Protected Sub Page_PreInit(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreInit
If InStr(Request.ServerVariables("http_user_agent"), "Safari") Then
Page.ClientTarget = "uplevel"
End If
End Sub

  (  )  ( Comments [0] | Trackback )
Thursday, September 18, 2008
scriptaculous کتابخانه ای جاوا اسکریپتی برای کار با رابط کاربری


script.aculo.us نام کتابخانه ای جاوا اسکریپتی است که برای ارتقاء رابط کاربری یک برنامه تحت وب به کار می رود . این کتابخانه  Cross Browser شامل بخش های زیر است:

1 - animation framework
2 - drag and drop
3 - Ajax controls
4 - DOM utilities
5 - unit testing

به وب سايت این کتابخانه سربزنید و حتما دموی های این کتابخانه را مشاهده کنید.


  (  |  )  ( Comments [0] | Trackback )
Sunday, September 07, 2008
CSS attribute selectors ها

یکی از وِیژگی هائی که در CSS 2 اضافه شد و در نسخه سوم نیز گسترش یافت css attribute selector ها هستند ، css attribute selector ها به شما این امکان را میدهند که style های خود را بر اساس مقادیر attribute های تگ های HTML نسبت دهید . فرض کنید میخواهید کد css ی بنویسید که یک آیکون rss به انتهای لینک های اضافه کند که دارای پسوند .rss و باشد ، یا میخواهید به لینک های که مقدار مشخصه title آنها xml است یک آیکون xml اضافه کنید و فونت نوشته را هم تغییر دهید ، کلیه این کارها با استفاده از css attribute selector ها میسر می باشد . در زیر به انواع مختلف استفاده از این ویژگی جالب css خواهیم پرداخت .البته برای تمامی روش های فوق یک روش سنتی هم وجود دارد و آن هم نسبت دادن کلاس خاص به هر المانی است که میخواهیم نوع نمایش خاصی داشته باشد . طبیعتا روش دوم ساده تر و صد البته زمان بر تر و خسته کننده تر از روش اول می باشد .

1- دسترسی به تگ هائی که دارای یک مشخصه هستند:
فرض کنید قرار است یک سری استایل مشخص را برای نمامی تگ هائی که دارای مشخه title هستند نسبت دهیم . کافیست از کد زیر استفاده نمائیم:

[attribue]
        {
              color:brown;
        }
کافیست در کد فوق به جای attribute مقدار title را قرار دهیم . اگر بخواهیم تنها لینک هائی که شامل مشخصه title هستند را هدف قراردهیم  می توانیم از کد زیر استفاده کنیم :
a[attribue]
        {
              color:brown;
        }

2 - برای هدف قراردادن تگ هائی که دارای مشخصه خاصی با یک مقدار مشخص هستند می توانیم از کد زیر استفاده نمائیم:
[attribue=value]
        {
              YOUR CSS
        }
بطور مثال برای تگ های لینکی که دارای مقدار href=http://friendfeed.com هستند می توانیم از کد زیر استفاده نمائیم:
a[href=http://friendfeed.com]
        {
              color:red;
        }

3 - برای هدف قراردادن تگ هائی که شامل یک مشخصه خاص هستند که مقدار این مشخصه حاوی یک کلمه خاص هست:
بطور مثال برای هدف قراردادن  تمامی لینک هائی که در مشخه title آن از کلمه web استفاده شده است می توانیم از کد زیر استفاده نمائیم:
a[title~=web]
        {
              color:red;
        }
توجه داشته باشید که در روش فوق کاراکتر Space جداکننده کلمات از همدیگر می باشد.
در صورتیکه بخواهیم - جداکننده محسوب شود به جای =~ از =| استفاده میکنیم.

4 - برای هدف قراردادن تگ هائی که شامل یک مشخصه خاص هستند که مقدار این مشخصه بک یک عبارت خاص ختم می شود :
به طور مثال با استفاده از کد زیر می توانیم یک آیکون در انتهای لینک های مربوط به فایل های با پسوند mov قرار دهیم .
a[href$='.mov']
        {
              padding-right: 17px;
              background: url(icons/video.png) no-repeat right;
        }

5 - برای هدف قراردان تگ هائی که شامل یک مشخصه خاص هستند که مقدار این مشخصه با یک عبارت خاص شروع می شود:
اگر بخواهیم سناریو فوق را برای لینک هائی که با mailto شروع می شوند پیاده سازی کنیم ، میتوانیم از کد زیر استفاده نمائیم:
a[href ^="mailto:"]
        {
                padding-right: 18px;
                background: url(icons/email.png) no-repeat right;
        }

6 - برای هدف قراردادن تگ هائی که شامل یک مشخصه خاص هستند که مقدار این مشخصه دارای یک عبارت می باشد:
فرض کنید من دوست داشته باشم بقل هر لینکی که href ان حاوی mehdivk هست یک آیکون asp.net قرار دهم ، می توانم از این کد استفاده کنم:
a[href *="mehdivk"]
        {
                padding-right: 17px;
                background: url(icons/aspdotnet.png) no-repeat right;
        }

منابع:
1 - CSS 3 attribute selectors (بخش توسعه دهندگان مرورگر اپرا)
  (  )  ( Comments [0] | Trackback )
Saturday, September 06, 2008
معرفی "Extension Method" ها در C# 3.0

هنگامیکه که سورس یک کلاس موجود نباشد ، وراثت یکی از راه هائی است که به ما کمک می کند تا متدهای مدنظر خود را به یک کلاس اضافه نمائیم ،  با نوشتن ساب کلاس ها و نوشتن متدهای مدنظر در این کلاس ها به این هذف میرسیم ، اما #C امکانی دارد تحت عنوان "Extension Methods" که به ما کمک می کند بدون استفاده از وراثت متدهای جدیدی را به مجموعه متدهای موجود یک کلاس که سورس آن را نداریم اضافه کنیم .

فرض کنید قرار است به کلاس string دات نت متد IsDate را اضافه کنیم ، کار این متد ارزیابی تاریخ بودن و یا نبودن یک رشته می باشد و خروجی یک مقدار bool می باشد .
به قطعه کد زیر توجه کنید :

namespace Utils
{
          public static class DateTimeHelper
                  {
                          public static bool IsDate(this string s)
                                 {
                                      DateTime dt;
                                      return DateTime.TryParse(s, out dt);
                                 }
                  }
}
متد IsDate یک Extension Method می باشد که به کلاس string اضافه شده است . برای استفاده از این متد کافیست که Utils را در کلاسی که قرار است از این متد استفاده کند Import کنیم.

همانطور که در تصویر فوق مشاهده میکنید متد IsDate به فهرست متدهای کلاس string اضافه شده است .توجه داشته باشید که متدهای Extension و کلاسی که این متدها در آن نوشته می شود باید static باشند . Extension Method ها به مانند سایر متدها می توانند هر تعداد پارامتر ورودی داشته باشند اما توجه داشته باشید که اولین پارامتر در واقع مشخص کننده data type ی است که extension متد به آن می پیوندد.

منبع :
1 -  Using Extension Methods
2 -  Extesion Methods

پی نوشت :
وب سايت ExtensionMethod.Net  یک وب سايت است مخصوص همین Extension متد ها می باشد ، شما می توانید متد های خود را با دیگران به اشتراک بگذارید و یا از متدهای دیگران استفاده کنید. این وب سايـت خود را اینگونه معرفی می کند.
ExtensionMethod.NET is a website on which .NET developers download and upload extension methods. It contains many user-rated methods that will expand your code library immediately.

Extension Methods add functionality to existing classes and allow you to expand the .NET framework. This way your favorite functions integrate seamlessly into the framework. They can be written in C# 3.0 or VB.NET 2008.
We invite you to publish your favorite extension methods and download and use others.

  (  )  ( Comments [1] | Trackback )