تصویر مهدی

اتصال خودکار رویداد به عناصر HTML با استفاده از نام class

مقدمه:

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

تایپ فارسی در صفحات وب سازگار با تمامی مرورگرهای متداول

مقدمه:

برای تایپ فارسی در صفحات وب سه راه متداول وجود دارد. اولین روش نصب کردن صفحه کلید فارسی در سیستم کاربر است که همیشه امکان آن وجود ندارد. روش دیگر استفاده از صفحه کلیدهای مجازی (On-Screen Keyboard) است که برای کاربران مبتدی (که مکان کلیدها را نمیشناسند) روش مناسبی است ولی برای کاربران متوسط و یا حرفه‌ای، روش وقت‌گیر و عذاب آوری است. در نهایت روش آخر استفاده از JavaScript برای تغییر صفحه کلید به فارسی است که به نظر من راحت‌ترین روش است و بحث من در اینجا محدود به این روش می‌شود.
اسکریپتهای مختلفی برای تایپ فارسی در صفحات وب وجود دارد. من هم تا کنون از این اسکریپت استفاده می‌کردم (با تشکر از تهیه کنندگان این اسکریپت). مشکلی که این اسکریپت و تمامی اسکریپتهای مشابهی که من دیده‌ام اینست که تنها در اینترنت اکسپلورر و فایرفاکس (و بعضا به طور ناقص در اپرا) کار می‌کنند، به طوری که من نتوانستم اسکریپتی که در تمامی مرورگرها بدون مشکل کار کند پیدا کنم. در نتیجه بعد از چند روز تلاش و امتحان کردن روشهای مختلف نهایتا به راه حلی رسیدم که در تمامی مرورگرهایی که من توانایی تست آنها را داشتم به خوبی کار می‌کند. در اینجا اسکریپت حاصل شده را ارایه داده‌ام.

تصویر مهدی

نگهداری وضعیت اسکرول ها در رفت و برگشت صفحات به سرور (در ASP.NET و سایر زبانهای تحت وب)

در صفحات وب، هنگامی که صفحه عملیات رفت و برگشت به سرور را انجام می دهد (یا اصطلاحا PostBack می شود)، موقعیت اسکرول صفحه و تمام المنتهای موجود در صفحه از بین خواهد رفت. در ASP.NET 2 به سادگی و با استفاده از ویژگی MaintainScrollPositionOnPostBack میتوان موقعیت اسکرول صفحه را حفظ کرد ولی برای حفظ موقعیت اسکرول سایر المنتهای موجود در صفحه (مانند TextBoxهای چند خطی، ListBoxها، Panelها و ...) چنین امکانی وجود ندارد. این موضوع در هنگام استفاده از UpdatePanel بیشتر نیز جلب توجه میکند. من برای حل این مساله، راه حل ساده ای پیدا نکردم و بنابراین خودم دست به کار شدم و نتیجه کار اسکریپتی شد که در اینجا آنرا ارایه کرده ام.

تصویر مهدی

ایجاد PDF فارسی در ASP.NET توسط #C (با استفاده از iTextSharp)

یکی از مهمترین قالبهای ایجاد خروجی، فایلهای PDF هستند. یکی از بهمترین ویژگی این فایلها (که در فرمتهای مشابه کمتر به چشم می خورد) این است که در تمام سیستم ها بدون توجه به نوع سیستم، سیستم عامل، فونتهای نصب شده و ... یکسان دیده میشوند و همچنین در اکثر سیستمها پشتبانی خوبی از آن شده است. با توجه به تنوع سیستمهای کاربران (مخصوصا در برنامه های تحت وب) این ویژگی بسیار بیشتر اهمیت خود را نشان می دهد. بنابراین چندان عجیب نیست که در حال حاضر یکی از محبوبترین فرمتهای ایجاد خروجی (مثلا در گزارشات) فرمت PDF محسوب میشود. کتابخانه های مختلفی برای ایجاد فایلهای PDF وجود دارد. بهترین کتابخانه ای که من برای زبانهای NET. دیده ام، کتابخانه iTextSharp است. این کتابخانه از روی iText که یکی از معروفترین کتابخانه های ایجاد و مدیریت فایلهای PDF است، نوشته شده است. استفاده از این کتابخانه برای کار کردن با زبان فارسی به سادگی امکان پذیر است ولی نیاز به کمی دقت هنگام استفاده است. در اینجا میخواهم روش ساده استفاده از این کتابخانه برای ایجاد صفحات فارسی را توضیح دهم.
تصویر مهدی

رسم نمودار در صفحات وب با استفاده از jQuery (و رفع مشکلات آن در صفحات فارسی)

چند وقت پیش، نیاز به کشیدن یک نمودار در صفحه HTML با استفاده از JavaScript داشتم و یکی از بهترین کتابخانه هایی که پیدا کردم، Flot بود. کتابخانه ای نسبتا کامل و قوی که با استفاده از jQuery نمودارهای جالبی رسم میکند و بهترین نکته برای من هم این بود که داده ها را از مقادیر جداول داخل صفحه نمی خواند و در عوض سری های داده را با فرمت JSON دریافت میکند.
تصویر مهدی

انتخابات نظام مهندسی

دیروز انتخابات نظام مهندسی ساختمان به صورت کامپیوتری برگزار شد. برنامه این انتخابات رو من نوشته بودم. این برنامه همزمان تو چند استان دیگه هم اجرا شد. کار خیلی خیلی سنگینی بود ولی تجربه خیلی جالبی بود. مهمترین موفقیت هم این بود که هیات نظارت که خیلی روی امنیت و دقت انتخابات حساس بودن هم کاملا از این انتخابات راضی بودن. یک نشونه سالم بودن برگزاری انتخابات هم این بود که عموی من که جزو کاندیداها بود، رای نیاورد!
بزودی یه پست درباره بعضی از نکات جالب این انتخابات اینجا میذارم.

تصویر مهدی

پیدا کردن موقعیت جغرافیایی کاربر (در فایرفاکس 3.5)

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

تصویر مهدی

انتخاب تاریخ شمسی توسط DatePicker در jQuery

برای انتخاب تاریخ (DatePicker) توسط JavaScript توابع زیادی نوشته شده و یکی از جالبترین آنها پلاگینی است که در jQueryUI وجود دارد. این پلاگین امکان شخصی شدن زیادی دارد ولی متاسفانه امکان استفاده از تقویم شمسی در آن وجود ندارد.
در اینجا نسخه اصلاح شده این تقویم را که پشتیبانی از تاریخ هجری شمسی را به آن اضافه کرده ام، به همراه نحوه استفاده و چند مثال ارایه نموده ام. ضمنا کلیه فایلهای مورد استفاده در اینجا به صورت یک فایل فشرده قابل دریافت است. در این نسخه امکان اضافه کردن تقویم های دیگر نیز به سادگی وجود دارد. به عنوان مثالی از چگونگی اضافه کردن تقویم جدید، تقویم هجری قمری را نیز پیاده سازی کرده ام و در مثال ضمیمه قابل مشاده است.

تصویر مهدی

تغییر تنظیمات پیشفرض Membership (مانند حداقل طول کلمه عبور) در ASP.NET

در ASP.NET میتوانید به سادگی و با استفاده از ویزارد مربوطه تنها با چند کلیک از طریق منوی ASP.NET Configuration (در قسمت Project) از Membership برای مدیریت کاربران سایت خود استفاده کنید. بحثی که در اینجا میخواهم به آن بپردازم، طریقه استفاده از این ویزارد نیست، بلکه طریقه تغییر تنظیمات پیشفرض آن است. این کار از طریق ویزارد قابل انجام نیست و نیاز به کمی اطلاعات بیشتر از سیستم Membership دارد.

تصویر مهدی

کامنتهای شرطی در CSS

توجه این مقاله ترجمه مطلبی از سایت quirksmode.org است
کامنتهای شرطی تنها در اینترنت اکسپلورر مخصوص ویندوز کار می‌کنند، بنابراین مناسب دستوراتی هستند تنها برای اینترنت اکسپلورر در ویندوز در نظر گرفته شده‌اند. این کامنتها در اینترنت اکسپلورر نسخه 5 به بعد پشتیبانی می‌شوند و با استفاده از آنها امکان تشخیص نسخه‌های مختلف مانند 5.0، 5.5، و 6.0 وجود دارد.
کامنتهای شرطی به صورت زیر هستند:

<!--[if IE 6]>
	دستورات مخصوص اینترنت اکسپلورر نسخه 6
<![endif]-->
همزمانی محتوا