امیر مددی
تماس با من
پروفایل من
نویسنده (های) وبلاگ امیر مددی
آرشیو وبلاگ
      بازار آی تی (این وبلاگ آینه ای از وبلاگ اصلی من در بلاگر (itbazaar.blogspot.com) در زمینه برنامه نویسی تحت وب است که بدلیل مشکلات فیل‌ترینگ در پرشین بلاگ نیز کپی شده است.)
خطای Collation هنگام مقایسه دو فیلد متفاوت در MSSQL نویسنده: امیر مددی - ۱۳٩۱/٧/۱۳
داشتم کوئری زیر را اجرا می کردم که نام پروژه های استفاده نشده را در جدول دوم بدست بیاورم:  
select ProjectCode from table1
where ProjectCode not  in(select  ProjectCode  from table2)

که با خطای زیر مواجه شدم : 
Cannot resolve the collation conflict between "SQL_Latin1_General_CP1_CI_AS" and "Latin1_General_CI_AS" in the equal to operation.

اشکال اینجاست که فیلد ProjectCode در جدول اول از Collate یا نوع انطباق SQL_Latin1_General_CP1_CI_AS  و در جدول دوم از Collate  یا نوع انطباق  Latin1_General_CI_AS  است.

Collate  یا Collation چبست ؟ 
در SQL برای ذخیره رشته ها از روشهای متفاوتی استفاده می شود تا برای ایندکس و جستجوی آنها به کارایی بهتری رسید. به این روشها Collate می گویند . شما حتی اگر یک فیلد را با نوع مثلا nvcarchar ذخیره کرده باشید ولی با Collate متفاوت ، نمی توانید آنها را بدون تبدیل کردن مقایسه کنید. 
برای مقایسه فیلدهای با Collate متفاوت از تبدیل زیر استفاده کنید: 

select  FILEDNAME collate COLLATENAME from TABEL

مثال گفته شده در اول این مقاله به صورت زیر قابل اجراست :
select ProjectCode from table1
where ProjectCode not  in
(select  ProjectCode collate SQL_Latin1_General_CP1_CI_AS from table2)

مقاله کاملی در این باره همراه با مثال در آدرس زیر می توانید بخوانید : 




  نظرات ()
دهها قطعه کد کاربردی بسیار مفید در سایت css-tricks نویسنده: امیر مددی - ۱۳٩٠/٩/٢٢
دهها قطعه کد کاربری بسیار جالب در زمینه HTML ، CSS ، JQuery ، Javascript ، PHP ، WordPress و... در این صفحه وجود دارد. بسیار ساده ، کاربردی و مفید
http://css-tricks.com/snippets/
کلا سایت به قول معروف خفنی است این css-tricks ، همه صفحاتش آموزنده و کاربری و کاملا بروز است. در بین کدها این کد را پیدا کردم که یاد قدیما افتادم. "نوستالژی برنامه نویسی (:   "
<meta http-equiv="refresh" content="5;url=http://example.com/" />
فوروارد صفحه بعد از 5 ثانیه به مسیر دیگر
  نظرات ()
چگونه در یک فرم MVC مانع حملات از نوع CSRF شویم؟ نویسنده: امیر مددی - ۱۳٩٠/٩/۱۸
هنگامی که در MVC فرمی را برای عملیاتی مثل ذخیره سازی یا ویرایش به سرور ارسال می کنید، در صورتی که کاربر در فرم از تگهای Html یا کدهای JavaScript  استفاده کرده باشد ، کنترلر بصورت پیش فرض آن تگ یا کد را خطرناک تشخیص می دهد و خطای زیر را ارسال می کند :

A potentially dangerous Request.Form value was detected from the client

حتی اگر کد Html شما خطرناک هم نباشد ، باز هم این خطا داده می شود، مثلا در شکل زیر تنها یک تگ B وجود دارد که متن را توپر می کند ولی باز هم خطا صادر می شود : 

 

این خطا از لحاظ امنیتی به ما کمک می کند تا جلو کدهای احیانا مخربی را که هکرها وارد می کنند ، بگیریم ولی گاهی اوقات لازم است که ما کد Html را دریافت کنیم ، مثلا اگر شما می خواهید به کاربر اجازه درج محتویات یک صفحه خبر و یا ارسال یک ایمیل را بدهید که معمولا یک ویرایشگر متنی در اختیار کاربر قرار می گیرد که کد html تولید می کند

 برای حل این مشکل  ValidationInput  را برابر  false قرار می دهیم که باعث می شود اعتبار سنجی روی تگهای Html صورت نگیرد. در این حالت کنترلر بصورت زیر در می آید:

 

  [ValidateInput(false)]        
 public ActionResult NewEmail(FormCollection form(
         {
اما با اینکار عملا راه را برای حمله های امنیتی از نوع Cross Site Request Forgery باز کرده ایم . این حمله ها به این صورت انجام می شود که هکر با ارسال فرمی که خودش ساخته است و قرار دادن کدهایی در آن ،  باعث ربوده شدن اطلاعاتی مثل Session از کامپیوتر کاربر می شود .

برای پیشگیری از این نوع حملات شما باید یک token از نوع encrypted تولید می کند که تنها توسط کنترلر قابل اعتبار سنجی است . بنابراین شما در ابتدای فرم خود ،  آن token را بصورت زیر تولید می کنید  :
 @using (Html.BeginForm("NewEmail""Emails"FormMethod.Post))   
  {   
      @Html.AntiForgeryToken()
و سپس در کنترلر خود آن را با عبارت [ValidateAntiForgeryToken] بررسی می کنید تا مطمئن شوید که مقادیر این فرم توسط برنامه خود شما تولید شده است. 

  [ValidateAntiForgeryToken]
        [ValidateInput(false)]
        public ActionResult NewEmail(FormCollection form)
        {
  نظرات ()
آموزش MVC - قسمت نهم - WebGrid در 3 MVC نویسنده: امیر مددی - ۱۳٩٠/٩/۱٧
قسمت نهم از آموزش MVC را نیز در سایت 30Sharp قراردادم. امیدوارم مورد توجه علاقه مندان قرار بگیرد.
http://30sharp.com/article/17/343/12/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-mvc-%D9%82%D8%B3%D9%85%D8%AA-%D9%86%D9%87%D9%85-webgrid-%D8%AF%D8%B1-3-mvc.aspx
  نظرات ()
ویژگی Name در عناصر Html هنوز مهم است. نویسنده: امیر مددی - ۱۳٩٠/۸/۳٠

چند روز پیش برای فراخوانی یک تابع با استفاده از Ajax در MVC و آپدیت کردن بخشی از صفحه به این مسئله برخورد کردم که به نظر می رسید Ajax.BeginForm هیچ مقداری را به سرور ارسال نمی کند:

View//

 Controller//

بعد از کمی کار خسته شدم و این سئوال را در StackOverFlow پرسیدم که متاسفانه هیچ جواب مثبتی نگرفتم و حتی جوابهای گمراه کننده ، نظیر این " Ajax.BeginForm خیلی دردآور (بد قلق) است. " نیز دریافت کردم. تا اینکه بر حسب اتفاق متوجه شدم که برای عناصر Html صفحه فقط ویژگی id تعریف کرده ا م و ویژگی قدیمی name را فراموش کرده ام. خیلی جالب بود که با اضافه کردن آن مساله حل شد! خیلی ساده اما وقت گیر. هر دو ویژگی id و name لازم هستند:

  نظرات ()
چگونه دکمه like را به سایت یا وبلاگ خود اضافه کنیم؟ نویسنده: امیر مددی - ۱۳٩٠/۸/٢۳
با اوج گیری فیس بوک در سالهای اخیر، اصطلاح facebook Programming (برنامه نویسی فیس بوک) نیز جایگاه ویژه ای در دنیای برنامه نویسی پیدا کرد، به طوریکه برخی از شرکتهای برنامه نویسی، آن را جز لیست مهارتهایی که از یک داوطلب کار انتظار دارند، قرار داده اند. در واقع فیس بوک با راه اندازی بخش برنامه نویسی خود در آدرس http://developers.facebook.com به برنامه نویسان این امکان را می دهد تا در سه بخش "برنامه‌نویسی برای وب سایت" ، برنامه‌نویسی برای موبایل" و "برنامه‌نویسی برای اپلیکشن‌ها" بتوانند ارتباط و مبادلات خود را با فیس بوک برقرار کنند. به عنوان مثال شما می‌توانید با اضافه کردن اسکریپت زیر یک دکمه like به وبلاگ یا سایت خود اضافه کنید که کاربران فیس بوک بتوانند علاقه خود را به مطالب شما نشان دهند: 

در این کد شما می بایست به جای YOUR_URL، آدرس کامل وب سایت یا صفحه یا پست خود را قرار دهید. 
در بخش "برنامه نویسی برا ی موبایل " نیز براحتی با اضافه کردن کلاسهای فیس بوک می توانید نرم افزار خود را به فیس بوک پیوند دهید. (لینک
  نظرات ()
افزودنیهای مرورگر کروم نویسنده: امیر مددی - ۱۳٩٠/۸/۱٩
افزودنیهای کروم واقعا محشرند: ساده ، کارا، سبک و رایگان! لیست افزودنیهای محبوب را ببینید (آنقدر زیادند که من نتونستم به ته لیست برسم). این چند مورد را امتحان کنید: نمایشگر تعداد ایمیل ها، دیکشنری (با تلفظ ) ، web developer ، Blog this، FireBug Lite (همه با یک کلیک دانلود و نصب می شوند) دراین لیست آنهایی که یک نوار سبز با علامت تیک دارند، دارای رتبه بالاتر از 4 (از 5) می باشند. 
در صورتی که از نصب آنها پشیمان شدید روی آیکون آچار فرانسه کلیک کنید، سپس با انتخاب Tools و Extentions هر کدام را که دوست نداشتید پاک کنید. 
  نظرات ()
متد ()on. در JQuery 1.7 نویسنده: امیر مددی - ۱۳٩٠/۸/۱۳
متدِ .on() در Jquery نگارش 1.7 متد ترجیحی برای چسباندن یک event handler (مثل click  ) به یک عنصر صفحه (مثل دکمه ) می باشد. در حالی که در نگارشهای قبلی متدهایی مانند bind()  ، .delegate() یا .live()  این عمل را انجام می دادند. فرم کلی آن :
.on(events[, selector, data], handler )
Events : می تواند یک یا بیشتر از یک event باشد (مثل click ، mouseOver و ... )
Selector : (اختیاری ) عنصری از صفحه که متد را برای آن تعریف می کنیم (مثل div یا button  )
Data : (اختیاری) اطلاعاتی که زمان رخ دادن این event به handler  پاس می دهیم (می تواند هر نوع اطلاعاتی از جمله id  یا value  عنصر باشد )
Handler : دستورات یا توابعی که می خواهیم در صورت رخ دادن این event اجرا شوند.
مثال:
$("#dataTable tbody tr").on("click", function(event){
      alert($(this).text());
});
در این مثال اگر رویداد click به بدنه سطری از جدولی به نام dataTable چسبانده شده و باعث می شود که متن درون آن سطر نمایش داده شود.
مرجع و مثالهای بیشتر را در این صفحه ببینید:
http://api.jquery.com/on/
  نظرات ()
مطالب قدیمی تر »
مطالب اخیر خطای Collation هنگام مقایسه دو فیلد متفاوت در MSSQL دهها قطعه کد کاربردی بسیار مفید در سایت css-tricks چگونه در یک فرم MVC مانع حملات از نوع CSRF شویم؟ آموزش MVC - قسمت نهم - WebGrid در 3 MVC ویژگی Name در عناصر Html هنوز مهم است. چگونه دکمه like را به سایت یا وبلاگ خود اضافه کنیم؟ افزودنیهای مرورگر کروم متد ()on. در JQuery 1.7 مشاهده صفحات طراحی شده در چند مرورگر بخش هفتم سری مقالات آموزش MVC (فارسی)
کلمات کلیدی وبلاگ mvc (۳) برنامه نویسی وب (۳) برنامه نویسی (٢) c# (٢) جاوااسکریپت (٢) html (۱) طراحی وب (۱) ajax (۱) css (۱) csrf (۱) mssql (۱) jquery (۱) لایک (۱) آی تی بازار (۱) mvc (۱) آموزش ++c در pluralsight (۱) ویرایشگر متنی (۱) جستجوی جدوال تحت وب با yui (۱) window resizer plugin (۱) آموزش jquery (۱) ابزار چارت (۱) highcharts (۱) collation (۱) جامعه برنامه نویسان افغانستان (۱) wovs default browser switcher (۱) افزودنیهای کرورگر کروم (۱) webgrid (۱) هک در mvc (۱) css-tricks (۱) collate (۱)
دوستان من مقالات آموزشی من MVC وبلاگ فنی من سیاره وردپرس فارسی .NET Tips (وحید نصیری) سایت آموزشی سی شارپ مهرداد کیانیان افشار محبی آرش آقاجانی مجتبی صحرایی خانه برنامه نویسان افغانستان مصطفی دیندار مقالات آموزشی برنامه نویسی رحمت رضایی ( ToString ) اخبار فناوری اطلاعات طراح قالب