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


| December, 2008 (10) |
| November, 2008 (1) |
| October, 2008 (15) |
| September, 2008 (10) |
| August, 2008 (5) |
| July, 2008 (1) |
| June, 2008 (4) |
| May, 2008 (4) |
| April, 2008 (10) |
| March, 2008 (6) |
| February, 2008 (3) |
| January, 2008 (4) |
| December, 2007 (21) |
| November, 2007 (3) |
| October, 2007 (2) |
| September, 2007 (13) |
| August, 2007 (5) |
| July, 2007 (3) |
| May, 2007 (1) |
| April, 2007 (3) |
| March, 2007 (6) |
| February, 2007 (4) |
| January, 2007 (9) |
| December, 2006 (7) |
| November, 2006 (6) |
| October, 2006 (2) |
| September, 2006 (1) |
 Total Posts: 172 This Year: 0 This Month: 0 This Week: 0 Comments: 125
 newtelligence dasBlog 1.9.6264.0
|
|
Sunday, September 21, 2008
|
|
دانلود فایل در #C
با استفاده از کلاس System.Net.WebClient شما می توانید فایل های مورد نطر خود را از طریق #C دانلود کنید ، بطور مثال در یک سیستم نرم افزاری برای دریافت سرویس پک های یک نرم افزار می توان از روش زیر استفاده کرد .
|
|
|
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
|
|
|
Thursday, September 18, 2008
|
|
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 (بخش توسعه دهندگان مرورگر اپرا)
|
|
|
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 Methods2 - 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.
|
|
|
Inbox در خوشمزه
نسخه جدید وب سايت خوشمزه چند وقتی است که ارائه شده است . به معنای واقعی کلمه خوشمزه جدید فوق العاده است ، طراحی این نسخه استثنائی است ، یکی از امکانات جالب وجود Inbox است ، با استفاده از این امکان شما می توانید لینک های خود را برای دوستان خود ارسال کنید و بلعکس دوستان شما لینک هائی را برای شما ارسال کنند ، اما جالب نحوه ارسال است ، کافیست در تگ های لینک خود عبارت for:YOUR_FRIEND_USERNAME را وارد کنید مثلا با وارد کردن for:asroone لینک برای نوید کاشانی ارسال می شود. جالب است ؟! حتما به نسخه جدید خوشمزه سر بزنید و از قابلیت شبکه آن استفاده کنید ، میتوانید در یک یا چند تگ خاص مشترک شوید و هر روز بهترین های این تگ را در بخش مربوطه را مشاهده کنید .
|
|
|
Thursday, August 28, 2008
|
 |
|
 |
|
معرفی sp_MSforeachtable و sp_MSforeachdb دو رویه در SQL Server
بعنوان یک توسعه دهنده برايتان موقعيتی پیش آمده است که بخواهید یک دستور را بر روی تمامی جداول یک پایگاه داده اجرا کنید ، و یا دستوری را بر روی تمامی پایگاه های داده موجود اجرا نمائید ؟ راه های مختلفی برای رسیدن به این هدف وجود دارد اما یکی از ساده ترین و صد البته سریع ترین راه ها استفاده از دو فراخوان sp_MSforeachtable و sp_MSforeachdb می باشد . با استفاده از این دو فراخوان می توانید دستورات مورد نظر خود را بر روی کلیه جداول یک پایگاه داده خاص و یا کلیه پایگاه های داده اجرا نمائید . ورودی این دو فراخوان یک رشته است که همانا دستوری است که شما میخواهید اجرا نمائید . در زیر به ذکر دو مثال در رابطه با نحوه استفاده از این دو فرخوان خواهیم پرداخت:
1 - استفاده از sp_MSforeachtable برای اجرای یک دستور بر روی تمامی جداول : بطور مثال برای بدست آوردن میزان فضائی که هر جدول اشغال کرده است می توانیم از کد زیر استفاده نمائیم:
USE DropThings; EXECUTE sp_MSforeachtable 'EXECUTE sp_spaceused [?];'; توجه داشته باشید که [?] در واقع Place Holder ی است برای نام جدول. خروجی کد زیر برای پایگاه داده DropThings بشکل زیر است : 2 - استفاده از sp_MSforeachdb برای اجرای دستور بر روی تمامی پایگاه های داده : بطور مثال برای بدست آوردن میزان فضائی که هر پایگاه داده اشغال کرده است می توانیم از کد زیر استفاده نمائیم:
EXECUTE master.sys.sp_MSforeachdb 'USE [?]; EXEC sp_spaceused [?] در دستور فوق Place Holder ی است برای نام پایگاه داده . خروجی حاصل از اجرای دستور فوق به شکل زیر می باشد: منابع : The undocumented sp_MSforeachtable procedure The undocumented sp_MSforeachdb procedure
|
|
|
Thursday, August 14, 2008
|
 |
|
 |
|
فراخوانی دستورات سیستمی از طریق SQL ، استفاده از xp_cmdshell
SQL server به شما این امکان را میدهد که بتوانید دستورات سیستمی را از طریق SQL اجرا کرده و احیانا بر روی خروجی های حاصل از اجرای این دستورات پردازش های مورد نظر خود را انجام دهید .با استفاده از xp_cmdshell شما قادر خواهید بود کلیه دستورات سیستمی را فراخوانی کنید .
فعال سازی مجوز استفاده از xp_cmdshell در SQL Server در نسخه 2000 ، xp_cmdshell بصورت پیشفرض فعال است . اما به دلیل اینکه فعال بودن این امکان برای همه خطرات جبران ناپذیری در پی دارد لذا تنها کاربرانی که در گروه sysadmin هستند می توانند از این امکان استفاده کنند. در صورتیکه کاربر عضو نباشد و اقدام به اجرای این دستور کند خطای زیر را مشاهده می کند. Msg 15281, Level 16, State 1, Procedure xp_cmdshell, Line 1 SQL Server blocked access to procedure 'sys.xp_cmdshell' of component 'xp_cmdshell' because this component is turned off as part of the security configuration for this server. A system administrator can enable the use of 'xp_cmdshell' by using sp_configure. For more information about enabling 'xp_cmdshell', see "Surface Area Configuration" in SQL Server Books Online. در نسخه 2005 ، xp_cmdshell بصورت پیشفرض فعال نیست ، برای فعال کردن دو راه وجود دارد: 1- فعال کردن از طریق اجرای command : در این روش برای فعال کردن باید دستورات زیر را اجرا نمائید:
EXEC sp_configure 'show advanced options', 1 RECONFIGURE EXEC sp_configure 'xp_cmdshell', 1 RECONFIGURE 2- فعال سازی از طریق SQL Server 2005 Surface Area Configuration
برای فعال سازی بر روی Start کلیک کرده و در بخش All Programs به Microsoft SQL Server 2005 و سپس به زیر شاخه Configuration Tools بروید ، حال گزینه SQL Server Surface Area Configuration بروید . در پنجره باز شده بر روی گزینه Surface Area Configuration for features کلیک کرده و در پنجره باز شده در زیر شاخه Database Engine بر روی آیتم xp_cmdshell کلیک کرده و آیتم Enable xp_cmdshell را تیک بزنید و بر روی Apply و سپس OK کلیک نمائید. حال xp_cmdshell آماده استفاده است و شما می توانید با فراخوانی این SP دستورات سیستمی را از طریق xp_cmdshell اجرا نمائید.در زیر تصویر صفحه مربوطه را مشاهده می فرمائید: مثال : EXEC master..xp_cmdshell 'dir c:\' در نظر داشته باشید که کاربری میتواند از این SP استفاده کند که در گروه sysadmin عضو باشد.
|
|
 |
|
 |
|
اجرای صفحات ASP.net 2.0 با استفاده از Apache
برای اجرای صفحات ASP.net 2.0 بر روی Apache کافیست که ابتدا آخرین نسخه Apache را از طریق این لینک دانلود کرده و نصب نمائید .سپس Mod AspDotNet را نیز از طریق این لینک دانلود و نصب نمائید. بعد از نصب دو برنامه به مسیر زیربروید :
C:\Program Files\Apache Software Foundation\Apache2.2\conf و فایل httpd.conf را باز کرده و کد زیر را به انتهای فایل اضافه نمائید. #asp.net LoadModule aspdotnet_module "modules/mod_aspdotnet.so" AddHandler asp.net asax ascx ashx asmx aspx axd config cs csproj licx rem resources resx soap vb vbproj vsdisco webinfo <IfModule mod_aspdotnet.cpp> # Mount the ASP.NET /asp application AspNetMount /SampleASP "c:/SampleASP" #/SampleASP is the alias name for asp.net to execute #"c:/SampleASP" is the actual execution of files/folders in that location # Map all requests for /asp to the application files Alias /SampleASP "c:/SampleASP" #maps /SampleASP request to "c:/SampleASP" #now to get to the /SampleASP type http://localhost/SampleASP #It'll redirect http://localhost/SampleASP to "c:/SampleASP" # Allow asp.net scripts to be executed in the /SampleASP example <Directory "c:/SampleASP"> Options FollowSymlinks ExecCGI Order allow,deny Allow from all DirectoryIndex index.htm index.aspx #default the index page to .htm and .aspx </Directory> # For all virtual ASP.NET webs, we need the aspnet_client files # to serve the client-side helper scripts. AliasMatch /aspnet_client/system_web/(\d+)_(\d+)_(\d+)_(\d+)/(.*) "C:/Windows/Microsoft.NET/Framework/v$1.$2.$3/ASP.NETClientFiles/$4" <Directory "C:/Windows/Microsoft.NET/Framework/v*/ASP.NETClientFiles"> Options FollowSymlinks Order allow,deny Allow from all </Directory> </IfModule> #asp.net حال شاخه SampleASP را در درایو C خود ایجاد کرده و فایل index.aspx را در آن قرار دهید : — index.aspx — <%@ Page Language="VB" %> <html> <head> <link rel="stylesheet"href="intro.css"> </head> <body> <center> <form action="index.aspx" method="post"> <h3> Name: <input id="Name" type=text> Category: <select id="Category" size=1> <option>One</option> <option>Two</option> <option>Three</option> </select> </h3> <input type=submit value="Lookup"> <p> <% Dim I As Integer For I = 0 to 7 %> <font size="<%=I%>"> Sample ASP.NET TEST</font> <br> <% Next %> </form> </center> </body> </html> حال Apache را ریستارت نمائید. Start-> Apache HTTP Server 2.2 ->Control Apache Server -> Restart حال در نوار آدرس مرورگر خود http://localhost/SampleASP/index.aspx را وارد نمائید. کار تمام شد ، شما موفق شده اید که از ASP.net 2.0 بر روی Apache اجرا بگیرید. منبع مطلب + کد صفحه index.aspx
|
|
|
مشکل پرداخت الکترونیکی بانک سامان با کاراکتر " , "!
سیستم پرداخت الکترونیکی بانک سامان بدین شکل است که شما باید اطلاعاتی شامل: Merchant ID, Order ID , RedirectUrl , Amount را در قالب متد POST به آدرس http://acquirer.sb24.com/CardServices/controller ارسال نمائید ، بانک سامان بعد از انجام تراکنش و یا کنسل شدن تراکنش از سوی کاربر ، کاربر را به صفحه ی RedirectUrl ارسال می کند اما نکته ای که امروز من به آن پی بردم این است که در RedirectUrl شما نمی توانید از کاراکتر "," استفاده نمائید ، به طور مثال سیستم URL Mapping وبلاگ های DasBlog از همین "," استفاده می کند که نمیتوان با این روش از سرویس پرداخت الکترونیکی استفاده کرد! .در صورتیکه در آدرس RedirectUrl از کاراکتر "," استفاده نمائید در صفحه ورودیه باتک سامان با خطائی نچندان واضح و بامعتی روبرو خواهید شد که دلیلش همین موضوع است ، جهت اطمینان با بخش مربوطه تماس گرفتم و مسئولین مربوطه هم ذکر کردند که کاما کاراکتر نامعتبر می باشد!
|
|
 |
|
 |
|
مشکل کنترل منوی ASP.net و مرورگر Safari شرکت اپل ، بیان یک راه حل
در صورتیکه از کنترل منوی ASP.net استفاده کرده باشید و احیانا وب سايت خود را در مرورگر Safari شرکت اپل ببینید حتما تعجب خواهید کرد که چرا منو اینگونه نمایش داده می شود ، موتور ASP.net سافاری را بعنوان یک مرورگر ناسازگار برای این کنترل می شناسد و کدهای تولید شده برای این مرورگر با کدهای تولید شده برای IE , FireFox , Opera متفاوت است و به این دلیل است که شما منوی خود را به آن صورت که در IE , Firefox , Opera می بینید در Safari مشاهده نمی کنید ، می توانید کدهای تولید شده را با هم مقایسه کنید . اما برطرف کردن این مشکل نیازمند اعمال تغییراتی کوچک و صد البته ساده بر روی سرور است . ابتدا به مسیر زیر بروید. C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG\Browsers فایل mozilla.browser را در ویرایشگر notepad و یا هر ویرایشگر متنی دیگری باز کرده و به دنبال بخش زیر در این فایل بگردید: <browser id=”Safari” parentID=”Gecko”> یکی از زیر شاخه های این بخش کد زیر می باشد که شما باید آن را حذف نمائید: <controlAdapters> <adapter controlType=”System.Web.UI.WebControls.Menu” adapterType=”System.Web.UI.WebControls.Adapters.MenuAdapter” /> </controlAdapters> بعد از حذف این بخش و ذخیره کردن تغییرات دستور زیر را از طریق خط فرمان اجرا نمائید: c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regbrowsers.exe -i حال صفحه خود را بار دیگر در سافاری اپل مشاهده کنید ،مشکل عدم نمایش صحیح کنترل منو برطرف شده است :  قبل از تغییرات بعد از تغییرات منبع: Big-O.comدر صورتیکه میخواهید بک آپ قبل از اعمال تغییرات داشته باشد خواهشا فایل mozilla.browser را در مسیری دیگر ذخیره کنید نه در همین مسیر و با نام دیگری چون با مشکل مواجه خواهید شد!
|
|
|