Thursday, March 20, 2014

Cloud CMS (cms4biz.com )

I'm proud to announce that our centralized cloud CMS is launched and ready to use. Some of the basic features of our CMS are:
  • Unlimited page, sub page 
    (Drop-down menu, List page, External Link​)
  • Online theme (design) editor 
    (Unique feature presented by CMS4BIZ)
  • Content versioning
  • Rich text editing for content pages
  • Integration with Google Analytics
  • Site map, Bread crumb, photo gallery
  • Daily Information & Database backup
  • SEO friendly URLs
  • Social share tools for each page
  • RSS feeds
  • Integration with social networks pages

399 $AUD

  • Custom design+ 200 AUD
  • ​Object based pages + 100 AUD
    (Unique feature presented by CMS4BIZ)

Monday, July 22, 2013

Export Html to Excel using C - کد سی شارپ انتقال اچ تی ام ال بصورت اکسل

یکی از راحتترین کدهایی که برای تبدیل HTML به خروجی Excel وجود داره: کافیه شما کد Html خودتون رو بتونید توی یک متغیر ذخیره کنید ( در اینجا نام متغیر output می باشد و form1 نیز نام فرم اصلی صفحه می باشد )
نام فایلی که دانلود می شود print.xls است که در خط دوم ذکر شده است


Thursday, October 04, 2012

خطای 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)

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




Tuesday, December 13, 2011

دهها قطعه کد کاربردی بسیار مفید در سایت css-tricks

دهها قطعه کد کاربری بسیار جالب در زمینه HTML ، CSS ، JQuery ، Javascript ، PHP ، WordPress و... در این صفحه وجود دارد. بسیار ساده ، کاربردی و مفید
کلا سایت به قول معروف خفنی است این css-tricks ، همه صفحاتش آموزنده و کاربری و کاملا بروز است. در بین کدها این کد را پیدا کردم که یاد قدیما افتادم. "نوستالژی برنامه نویسی (:   "
<meta http-equiv="refresh" content="5;url=http://example.com/" />
فوروارد صفحه بعد از 5 ثانیه به مسیر دیگر

Friday, December 09, 2011

چگونه در یک فرم MVC مانع حملات از نوع CSRF شویم؟

هنگامی که در MVC فرمی را برای عملیاتی مثل ذخیره سازی یا ویرایش به سرور ارسال می کنید، در صورتی که کاربر در فرم از تگهای Html یا کدهای JavaScript  استفاده کرده باشد ، کنترلر بصورت پیش فرض آن تگ یا کد را خطرناک تشخیص می دهد و خطای زیر را ارسال می کند :

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

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






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

برای حل این مشکل از عبارت  (ValidateInput(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)
        {

Thursday, December 08, 2011

Monday, November 21, 2011

ویژگی Name در عناصر Html هنوز مهم است.

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




// Controller


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

Monday, November 14, 2011

چگونه دکمه like را به سایت یا وبلاگ خود اضافه کنیم؟

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


در این کد شما می بایست به جای YOUR_URL، آدرس کامل وب سایت یا صفحه یا پست خود را قرار دهید. 
در بخش "برنامه نویسی برا ی موبایل " نیز براحتی با اضافه کردن کلاسهای فیس بوک می توانید نرم افزار خود را به فیس بوک پیوند دهید. (لینک ) 

Friday, November 11, 2011

آموزش MVC - قسمت هشتم - نمایش Autocomplete DropDownList در MVC

قسمت هشتم آموزش MVC را نیز در سایت www.30sharp.com/mvc.aspx قرار دادم. این قسمت درباره نحوه نمایش AutoComplete DropDownList در MVC  است. امیدوارم مفید باشد.

Thursday, November 10, 2011

افزودنیهای مرورگر کروم

افزودنیهای کروم واقعا محشرند: ساده ، کارا، سبک و رایگان! لیست افزودنیهای محبوب را ببینید (آنقدر زیادند که من نتونستم به ته لیست برسم). این چند مورد را امتحان کنید: نمایشگر تعداد ایمیل ها، دیکشنری (با تلفظ ) ، web developer ، Blog this، FireBug Lite (همه با یک کلیک دانلود و نصب می شوند) دراین لیست آنهایی که یک نوار سبز با علامت تیک دارند، دارای رتبه بالاتر از 4 (از 5) می باشند. 
در صورتی که از نصب آنها پشیمان شدید روی آیکون آچار فرانسه کلیک کنید، سپس با انتخاب Tools و Extentions هر کدام را که دوست نداشتید پاک کنید. 

Friday, November 04, 2011

متد ()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 چسبانده شده و باعث می شود که متن درون آن سطر نمایش داده شود.
مرجع و مثالهای بیشتر را در این صفحه ببینید:


Tuesday, November 01, 2011

مشاهده صفحات طراحی شده در چند مرورگر

ویژال استودیو صفحات وب را بصورت پیش فرض در مرورگر IE  باز می کند و یکی از نگرانیهای طراحان وب این است که نمی‌دانند که صفحه ای که طراحی می‌کنند، در مرورگرهای مختلف چگونه دیده می‌شود و آیا تنظیمات ظاهری ( CSS ) آن بدرستی نوشته شده است یا خیر؟ برای حل این مسئله می‌توانید افزونه WOVS را دانلود و نصب کنید. با نصب این افزونه نوار ابزاری به ویژال استودیو اضافه می‌شود که می توانید مرورگر را براحتی تغییر دهید: 


برای نصب این افزونه به سایت آن مراجعه و آن را دانلود کنید. پس از دانلود فایل آن را اجرا و ویژال استودیو را باز و بسته کنید تا بتوانید آنرا ببینید. 
این مرورگر گاهگاهی Update می شود که باید برای نصب نسخه جدبد آن در ویژال استودیو از منوی Tools گزینه Extention Manager   را انتخاب کنید و در پنجره باز شده از گرینه های سمت چپ گزینه Update را انتخاب کنید تا نسخه جدید نصب شود.
یکی از مزایای این ابزار این است که می توانید با کلیک راست روی هر فایل در ویژال استودیو، آن را در مرورگر دلخواه خود ببینید: 


Friday, October 28, 2011

بخش هفتم سری مقالات آموزش MVC (فارسی)

در این بخش به نحوه استفاده از extention Method ها در MVC جهت ایجاد ابزارهایی که بصورت پیش فرض وجود ندارند، مثل CheckBoxList پرداخته شده است و سپس با استفاده از JQuery  و JSON نحوه ارسال مقادیر انتخاب شده به کنترلها بیان شده است. این مقاله را می توانید در سایت سی شارپ مطالعه کنید. 

Thursday, October 27, 2011

خانه برنامه نویسان افغانستان

داشتم مطلبی را جستجو می کردم که چشمم افتاد به سایت فکر نو : "خانه برنامه نویسان افغانستان". با ورود به سایت اگر چه مشخص است که سایت به تازگی تاسیس شده است ولی از مطالب بسیار خوب آموزشی به خصوص در زمینه برنامه نویسی دات نت و MVC ، لذت بردم. امیدوارم شاهد مطالب بیشتری از این وب سایت باشیم. خواندن مقاله زیر را به برنامه نویسان MVC توصیه می کنم: 

Monday, October 17, 2011

استفاده از چارت JQUERY در صفحات وب

If you looking for a tool for drawing the charts in web pages, regardless of the language you use, try HighCharts.com .It's a JQuery chart that works very quick, cross browser and easy databinding. You can easily pass the charts data in String or Numerous values like Integer or Double.

ابزاری که امروز قصد معرفی آن را دارم، برای تمام زبانهای برنامه نویسی (به خصوص مرتب با دات نت) می تواند مورد استفاده قرار گیرد. من خودم آنرا در MVC  امتحان کرده ام و بخوبی جواب می دهد. ابزارهای چارت HighChatrs بدلیل اینکه با JQuery نوشته شده اند، بسیار سبک، زیبا و سازگار با هر مرورگری هستند. کافی است فایل js آن را دانلود کنید و کد JQuery  آن را به صفحه اضافه کنید. 
یکی دیگر از خصوصیاتی که این چارتها دارند این است که اطلاعات چارت را در قالب متغیرهای String و Int دریافت می کنند و بنابراین DataBinging در آن براحتی صورت می گیرد. 
لینکهای مرتبط :

Tuesday, October 04, 2011

Window resizer Plugin

یکی از پلاگین های مفید مرورگر کروم، Windows resizer است که به شما کمک می کند تا سایز صفحه وب طراحی شده خود را در اندازه های دلخواه ببینید. 
روش نصب: در صورتی که مرورگر کروم نصب کرده اید، به آدرس زیر بروید: 
و آن را نصب کنید. سپس با کلیک روی آیکون زیر، در مرورگر خود آن را در اندازه مورد نظر ببینید: 




Monday, September 26, 2011

صفحه بندی، فیلترینگ و جستجوی جداول تحت وب

یکی از مواردی که همیشه کار برنامه نویسان وب (اعم از Asp.net، PHP  یا jsp ) را با دردسر مواجه می کند، امکان صفحه بندی جداول (گریدها) می باشد. اگر شما بخواهید یک کوئری که مثلا 10000 رکورد را نشان می دهد، در یک جدول ساده نمایش دهید، خواهید دید که جستجو در سطرهای جدول بسیار کند می شود و صفحه نیز بسیار سنگین و کند می شود. راه حل بسیار خوبی که وجود دارد استفاده از اسکریپتهای YUI است که مبتنی بر JQuery می باشد. کافی است رفرنس مورد نظر را دانلود کنید که چند فایل .js بسیار کم حجم می باشند، سپس رفرنس آن را به صفحه اضافه کنید و آی دی جدول خود را به آن پاس دهید. خواهید دید که چقدر عملیاتهای جستجو، فیلترینگ، صفحه بندی و نمایش اطلاعات سریع خواهد شد. نمونه جدول و کدها را از مسیر زیر دانلود کنید.

Wednesday, September 21, 2011

معرفی یک ادیتور متنی خوب

اگر به دنبال یک ادیتور متنی مستقل از پلاتفرم برای برنامه خود هستید و می خواهید از ابزاری استفاده کنید که در حالی که امکانات مختلفی دارد، دردسری هم نداشته باشد توصیه می‌کنم از TinyMCE استفاده کنید. این ابزار که با جاوااسکریپت نوشته شده بسیار راحت و عالی کار می کند و امکاناتی مثل "فاصله جامد" را نیز پشتیبانی می کند. ( دمو )

Wednesday, September 14, 2011

آموزش ++C در Pluralsight

یک بسته آموزشی با ارزش دیگر از شرکت Pluralsight امروز می توانید آموزش مبانی C++ را مجانی ببینید. 
پیشنهاد من به دوستان ایرانی این است که آموزشهای Pluralsight  را در صورت امکان خریداری کنند چون حتی ساده ترین آنها هم حاوی نکاتی است که در هیچ کتاب برنامه نویسی پیدا نمی شود.

Monday, September 05, 2011

Google+ or Facebook?

I guess the Google guys have missed the point: The people don't have enough time to post on two pages simultaneously, so they prefer to use the older one which is obviously easier. And I also believe the people use Gmail widely because of it's unique technical services (speed, capacity, ...), but it's a big mistake to think that Facebook suffer from technical issues like other email service providers.