nav-right
امین مصباحی

BlogEngine.NET سکوی پایدار وبلاگ نویسی و الگویی برای NET. نویس ها

BlogEngine.NET رو میشناسم، از همون روزهای اولی که توسط Mads Kristensenو  Al Nyveldt پروژه پیش می رفت، تا روزی که نسخه 2.0 با تغییرات بنیادین عرضه شد و دیشب که 2.5 نگارش RC عرضه شد… تا جایی که چند سال پیش ترجیح دادم برای بلاگ خودم به جای استفاده از سیستم شخصی و یا گزینه های متعدد کدباز و تجاری از BlogEngine استفاده کنم و تغییراتی که مدنظر دارم به صورت شخصی روی این بسترکدباز و مطمئن بنویسم… تا الان که با هر به روزرسانی BE کدهای خودم رو که به BE اضافه کردم باید به روز کنم… هدف از این مقدمه که شاید غیرمرتبط به خواننده ی پست بوده باشه این بود که درحالی این پروژه رو به عنوان الگویی برای برنامه نویس های دات نت مثال می زنم که به خوبی میشناسمش و قصد تعریف بی جهت ندارم… دیشب نسخه 2.5 نگارش Release Candidate این محصول عرضه شد، دیشب نسخه نهایی 2.5 عرضه شد، با قابلیت مدیریت چندین بلاگ به صورت متمرکز (قابلیت چندین نویسنده برای یک بلاگ از قدیم بوده است)… و این یعنی یک فرصت برای سایت های که نیازمند بلاگ های مجزا جهت ارائه مطالبشون هستند… تغییرات اصلی رو در ادامه ذکر میکنم: قابلیت مدیریت متمرکز چندین بلاگ ارتقاء به NET Framework 4.0. استفاده از Razor در تم ها و صفحات (دوستانی که با Razor اشنا هستند میفهند یکی از علل سبک شدن و تسریع لود صفحات و کاهش بار بر روی سرور در این نسخه، چیه و چقدر برتری خواهد داشت، اولین باری که چند ماه پیش دیدم اولین صفحات پروژه رفت سراغ Razor، شعفی بس بسیار مرا دربرگرفت! ) اضافه شدن NETBlogEngine Gallery. در داشبرد نرم افزار و امکان مشاهده آخرین افزونه ها و تم هایی که به صورت رایگان در BE Gallery برای BE عرضه شده است…   برای برنامه نویس ها، لطفا حتی اگر بلاگ هم ندارید از شیوه استفاده از JSON، سبک بودن صفخات و استفاده بهینه از AJAX و سرویس ها الگو بگبرید… Insert/Update/Delete/Select هاتون رو که میتونید از روی سورس کد این پروژه و الهام گرفتن از مکانیسم های مورد استفاده بهبود ببخشید و نرم افزارهای امین تر و سریع تری تولید کنید…. لینک دانلود  نسخه ی 2.5 نهایی ویژه آپلود لینک دانلود سورس کد نسخه 2.5 نهایی جهت یادگیری، تغییر و…

برچسب ها:

مقدمه ای بر پروتکل های دسترسی به داده ها و Open Data Protocol

گاهی اوقات غربت یک مفهوم حتی صرف نظر از دانش اجرا در جامعه ی نرم افزاری کشور، علت نگارش پست های من میشه. Open Data Protocol هم از جمله ایین مفاهیمه، چرا که با وجود تمام قابلیت ها و امکانی که به سازمان ها و تولید کنندگان نرم افزار میده تا بتوانند با یک ساختار و پروتکل شناخته شده اطلاعات را از منابع مختلف اعم از دیتابیس های تولیدشده توسط شرکت های دگه، فایل هایی نظیر XML و حتی وب سرویس ها و … بازخوانی و ویرایش نمایند، هنوز نمیشناسند. درحالیکه ابزار استفاده از آن نیز در دات تحت عنوان WCF Data Services مدت هاست که عرضه شده و شرکت های بزرگی نظیر مایروسافت، IBM و SAP نیز از آن استفاده کرده اند. متاسفانه بعد از گذشت دو سال ازکنفرانس PDC09 که محصول WCF Data Services معرفی شده (در کنفرانس MIX07 تحت عنوان Astoria project معرفی و در سال 2008 با نام ADO.NET Data Servicesهمراه با NET Framework 3.5 SP1. عرضه نهایی شد و در کنفرانس PDC09 به  WCF Data Services تغییر نام داد) هنوز که هنوزه در بین اکثریت قریب به اتفاق برنامه نویس ها و مدیران تیم های نرم افزاری کشور غریب و ناآشنا است… معرفی Open Data Protocol که به اختصار OData ذکر می شود: امروزه با گسترش و فراگیر شدن نرم افزارها، با تولید حجم عظیم داده ها روبرو هستیم که در حال ثبت در دیتابیس ها هستند. به طور کلی، اکثریت نرم افزارها مکانیسم و فرمت خاص خود را برای ثبت و بازیابی داده ها به کار می گیرند و این تنوع در ساختار نگهداری اطلاعات، موجب دشمواری ارتباط بین سیستم ها و دیتابیس های مختلف از منظر فهم و ارتباط با ساختار اطلاعات ذخیره شده درآنها می باشد (ازنظر تکنیکال اکثر دیتابیس های استاندارد نظیر SQL Server و Oracle به راحتی با یکدیگر ارتباط برقرار می کنند و لی پس از برقراری ارتباط، چگونگی کوئری گرفتن، ثبت، ویرایش داده ها با در نظر گرفتن ساختارهای متفاوت جداول و طراحی دیتابیس و از حیث کنترل دسترسی ها و مسائل امنیتی نکته مهمی خواهد بود). همچنین گاها اطلاعات درون فایل ها و یا از سریق وب سرویس ها مورد دسترس اند و به دیتابیس ها محدود نمی شوند. با توجه به توضیح مختصر فوق، Open Data Protocol به عنوان یک پروتکل وب ( یک ساختار استاندارد مورد استفاده در وب) به وجود آمد تا عملیات کوئری گرفتن و ویرایش اطلاعات را با استفاده از روش هایی متفاوت با دسترسی مستقیم یا از طریق ساختارهای دلخواه برنامه نویسان محیا سازد. این دسترسی از طریق پروتکل هایی نظیر HTTP, Atom Publishing Protocol, JSON امکان پذیر است که تقریبا از کلیه ی نرم افزارهای وب قابل استفاده هستند، انجام می گیرد. OData را میتوان پروتکلی دانست که از دل تجربیات ناشی از تولید نرم افزارهای مبتنی بر AtomPub که طی چند سال گذشته به تولید رسیده اند، برخواسته است. OData محدود به  دسترسی داده های ذخیره شده در دیتابیس های رایطه ای مثل SQL Server, Oracle,…  یا وب سرویس ها یا CMS ها و… نیست. تمامی این اعمال از طریق متدهای استاندارد وب نظیر GET, POST, DELETE, PUT انجام می شود… به تصویر زیر دقت کنید که فرمان کوئری چگونه از طریق URI به سرویس پاس داده می شود و اطلاعات فراخوانی میشود… راه میانبر که به کیفیت و اهمیت و سهمی که این پروتکل در بازار از آن خود دارد نیم نگاهی است به استفاده کنندگان از این پروتکل: Microsoft SharePoint 2010 IBM WebSphere Microsoft SQL Server Reporting Services SAP NetWeaver Gateway Telerik OpenAccess ORM … پس دیدیم که استفاده از این پروتکل، خیلی زود و آوانگارد منشانه هم نیست… حالا بریم سراغ معرفی ابزار دات نتی جهت استفاده از OData… WCF Data Services یک از کامپوننت های NET Framework. می باشد که نرم افزار را قادر به استفاده از OData جهت دسترسی به داده های نزد متبع مختلف می کند. جهت آشنایی بیشتر با این لینک مراجعه کنید. میبینیم که روز به روز دامنه ارتباطات دات نت با دنیای بیرون از مرزهای نرم افزارهایی که ما مینویسیم گسترده تر میشه… حال فرض کنید اگر تولید کننده های نرم افزارهای مالی و اداری و تخصصی ایرانی از چنین مکانیسم هایی بهره می بردند… هزینه سازمان ها چقدرکاهش می یافت؟؟ ارتباط بین نرم افزارهای مختلف تسریع می شد و دامنه ی انتخاب خریداران از محدوده ی انتخاب مجموعه ای خاص که می بایست تمامی زیرسیستم های مورد نیاز یک سازمان را دارا باشد تا مشکل ارتباط بین سیستم ها حل شود، وسیع تر می شد. این به نفع تولید کننده ها هم بود تا بتوانند با دارا بودن تعداد نرم افزارهای کمتر ولی تخصصی تر مشتریان بزرگ را جذب کنند. لزوم مهاجرت به WCF سوالی است که مکررا باید به شرکت ها و تیم های طرف مشاوره پاسخ داد که مگر Web Service های کلاسیک چه کاری کمتر انجام می دادند؟ جواب واضح است: در مقایسه با میزان تخصص و استفاده مجموعه های داخلی از مفهوم سرویس، هیچی!! ولی در مقایسه با دنیای بیرون، محدودیت های وب سرویس های کلاسیک غیرقابل ورود ساختن یک شرکت تولید کننده نرم افزار به عرصه رقابت با امروز را تضمین میکند! این پروتکل یک رقیب سرسخت هم داره: GData — competing protocol از Google

برچسب ها: ,

یک گام به تولید نرم افزار با کیفیت نزدیک شویم…

تا حالا فکر کرده اید که چرا بسیاری از نرم افزارهای تولید شرکت های معتبر خارجی رو به راحتی خریداری یا دانلود کرده و با کمترین زحمتی اقدام به نصب و استفاده از آن می نمایید؟ در حین کار با مشکلات بسیار کمی مواجه می شوید و در صورت رویارویی با مشکلات (باگ های نرم افزاری)، با استفاده از منابع آنلاین اختصاصی تیم تولید کننده و یا منابع عمومی تر اینترنت مشکل خود را برطرف می نمایید... اگر در حوزه عملکرد نرم افزار مورد استفاده ی خود، متخصص باشید (مثال: اگر پزشک هستید با نرم افزارهای تخصصی پزشکی) به راحتی با نرم افزار ارتباط برقرار می نمایید ولی در مورد اکثر نرم افزارهای تولید داخل چنین نکاتی را نمی یابید. به راستی چرا؟؟ چرا حتی برای نصب نرم افزار، در بسیاری موارد شرکت تولید کننده خود اقدام به نصب نرم افزار در محل مشتری می نماید؟ چرا برقراری ارتباط و درک نرم افزارهای داخلی علیرغم برخورداری از محیط پارسی، دشوارتر می نماید؟ چرا خطاهای نرم افزارهای داخلی و کاستی هایشان این قدر پررنگ به نظر می رسند؟ با این مقدمه، قصد بررسی خیلی سریع و گذرای کاستی های روند تحلیل، تولید، نگهداری و توسعه نرم افزار را خواهیم داشت... برای بررسی دقیق تر این مهم، شناخت روند و فضای تولید امری اجتناب ناپذیر به نظر می رسد، از این رو در اولین سری از این مجموعه مقالات به معرفی مفاهیم کلان تولید نرم افزار خواهم پرداخت و در بخش های بعدی به مسائل کیفی، امنیتی و توسعه. بیاییم تا مراحل تولید یک نرم افزار سفارش مشتری رو در کشورمون مرور کنیم: ابتدا باید نرم افزار تحلیل شود: اگر در بندهای قرارداد مشتری استفاده از RUP را به عنوان متدولوژی تحلیل و تولید ذکر نکرده باشد، به احتمال 90% خود تولیدکننده در بروشورها و متون مربوط به معرفی خود استفاده از این متدولوژی را به عنوان بخش لاینفک کارهای خود ذکر کرده است… اگر و تنها اگر نشانه ای از متدولوژی ببینیم، مستنداتی خواهد بود که پس از تولید نرم افزار!!! طی مدت یک هفته توسط یک نیروی جوان و یا طی قراردادی با یک نیروی بیرون از سازمان در قالب use case diagram, State diagram, … تولید خواهد شد. بریم سراغ تولید: یک تیم داریم که اگر اغراق نکرده باشیم، از OOP, OOA, OOD, AOP, AOA, SOA و خیلی مسائل دیگه هیچ درک صحیحی ندارند و فقط در دوران دانشجویی یا بعد از اون در دوره های آزاد مطالبی رو که هیچ ارتباط فکری ای نتونسته اند باهاش برقرار کنند شنیده اند. Build Integration, Source Control, Code Versioning, Test,… نیز عباراتی غریبه اند و در توجیه پرسش اینکه چرا این ها را ندارید یک جواب میشنویم: این ها برای پروژه های خیلی بزرگ اند نه پروژه های ما!!!! محصول با شیوه های سلیقه ای مدیر تیم هدایت و تحلیل و با شیوه های دلخواه برنامه نویس تولید و کد می شود… پس از تولید هم خانم منشی موظف خواهند بود تا میان کارهای روزانه فرم های نرم افزار را با دیتای تستی پر کنند و ببینند error می دهد یا خیر… نصب، پشتیبانی و کیفیت نرم افزار خود حدیث مجملی است که از مراحل قبل مابقی آن را بخوانید…   چگونه تحلیل، طراحی و تولیدی اصولی را پیش بگیریم؟ امروزه مفاهیم متنوعی در امر تحلیل، طراحی و تولید نرم افزار مورد بررسی قرار می گیرند، مانند: متدولوژی تحلیل و تولید: هرگز به دلیل کوچک بودن حجم پروژه و قلت نفرات تیم تولید، استفاده از متدولوژی را ترک نکنید… متدولوژی تنهای محدود به RUP نیست، سعی کنید با توجه به سایز پروژه و تعداد نفرات درگیر در پروسه تحلیل، طراحی و تولید متدولوژی مناسب را انتخاب نمایید. متدولوژی های Agile برای 80% تیم های تولید نرم افزار در ایران گزینه ای مناسب هستند.(نسبت 80% بر پایه تجربه شخصی نگارنده این متن می باشد) ابزار تولید: یک پروژه هرچند کوچک ولی در صورت تجهیز به ابزار تولید مناسب، علاوه بر جلوگیری از سردرگمی تیم تولید، تاثیر بسزایی در بهبود کیفی فرایند تولید خواهد داشت، منظور از ابزار تولید سامانه هایی نظیر: ابزار Revision Control/ Source Control: استفاده از ابزارهای رایگان، کدباز و یا تجاری متنوعی که به تیم تولید امکان دسترسی به نگارش های قبلی پروژه، مشاهده سیر تغییرات کد، علاوه بر امکان بررسی و مراجعه و کنکاش تغییرات نرم افزار، موجب تعمیق دید مدیرپروژه نسبت به چگونگی و سرعت تولید و عملکرد اعضاء تیم را محیا می سازد. در اینجا می توانید مقایسه و فهرست برخی ابزارهای مدیریت نگارش را مشاهده نمایید. ابزار Continuous integration: این دسته از نرم افزارها که به اختصار CI نامیده می شوند، تولید نرم افزار و مدیریت کد را به گونه ای تسهیل می نمایند که بیش از یک برنامه نویس قادر به کار بر روی آن باشند، در ایران Source Safe شناخته شده ترین ابزار CI می باشد که چند سالی است نسل آن منقرض شده و Team Foundation Server جایگزینی برای آن می باشد که علاوه بر نقش CI قبلیت های متعدد دیگری را در اختیار تیم قرار میدهد که در مجال این مقاله نیست، ابزارهای کدباز، تجاری و رایگان دیگری نیز علاوه بر این دو در اختیار برنامه نویسان می باشد که کمک به ممانعت اخلال ناشی از تولید همزمان یک کد توسط چند برنامه نویس در تیم میشود و یا به عبارت ساده تر توسعه ی کد با دید باز سایر کدنویس ها از عملکرد دیگر همکارانشان بر روی پروژه انجام می شود. ابزار Test/ Memory profiling/ …: چرا ما تست نرم افزار را یاد نمی گیریم؟ تا کی می خواهیم تست نرم افزار را محدود به پر کردن فرم ها و انتخاب دکمه ثبت و خطاهای نرم افزار را این قدر سطحی می بینیم؟ گاها حین تدریس از کتاب How we test software at Microsoft که به حق کتاب آموزنده ایه یاد می کنم و آرزو می کنم روزی تست نرم افزار در ایران بتونه به امری مهندسی شده و اصولی در بیاد، امکانات خود Visual Studio 2010 فوق العاده مفیده ولی دریغ از حتی آگاهی جمع کثیری از تولید کنندگان نرم افزار ایران با این امکان ویژوال استدیو، به کار بردن آن پیشکش… یافتن میزان استفاده نرم افزار از RAM و یافتن گلوگاه های Performance نرم افزار نیز ابزارهای متنوعی را در اختیار برنامه نویس قرار می دهد. ابزار Bug Tracking: یک Bug نرم افزاری چه از طرف اعضاء تیم چه از طرف کاربر نهایی کشف گردد، باید جایی ثبت گردد تا بسته به اهمیت و اولویت آن، توسط تیم تولید برطرف گردد، از این رو نرم افزارهای متعددی در این رابطه تولید شده اند که فرم هایی جهت ذکر خطا، اهیمت آن و میزان دفعات موجهه با آن در اختیار کاربر داده و مدیر تیم و یا خود کاربر امکان پیگیری وضعیت خطا را از طریق این نرم افزارها پیدا می کنند، علاوه بر ارتباط سریع تر و بی واسطه کاربر، تست کننده و… با تیم توسعه، بهبود نرم افزار را تسریع کرده و چشم انداز بهتری را نسبت به کیفیت نرم افزار و رسیدگی و پیگیری تیم تولید نسبت به خطاها در اختیار مدیران تولید قرار می دهد. آنچه ذکر شد بخشی از ابزارها و فرآیند صحیح تولید نرم افزار بود… نگهداری، توسعه و تحویل نرم افزار نیز دارای مفاهیمی مشابه با رویکرد مربوط به خود می باشند. به مجموعه روش ها و روندی که مفاهیم فوق را انتخاب و چیدمان می نمایند ALM یا Application Lifecycle Management می گویند. این که چه متدولوژی انتخاب نماییم، از چه نوع تست هایی بهره بگیریم، چگونه نرم افزار را ارزیابی نماییم و فرایند توسعه و نگهداری را چگونه مدیریت نماییم، از جمله مفاهیم موجود در ALM می باشد. در صورت استقبال از مفاهیم فوق هر یک از ابزارها رو طی پستی مجزا بررسی خواهیم کرد…

برچسب ها: , ,

Expression Web 4.0 از راه رسید…

با توجه به وقت کم، سریع و مختصر می نویسم: Expression Studio 4.0 با تفاوت های بنیادین و امکانات جدید عرضه شد. گزارش دهی ویژه هماهنگی با موتورهای جستجو (SEO) یکی از قابلیت های کلیدی جدید Expression Web و بهبودهای شگفت انگیز در طراحی ظاهر نرم افزارها (WPF, Silverlight) از نکات کلیدی Expression Blend می باشد. هماهنگی با سیلورلایت 4 و دات نت 4 و همچنین یکپارچگی محصول با TFS به جهت انجام پروژه به صورت تیمی و موازی از دیگر امکانات جدید بسته ی ارائه شده می باشد. 10 قابلیت جدید محصول: تحول در سرعت لازم جهت نمونه سازی اولیه (Prototyping) تعامل فعال بدون نوشتن کد سرعت بخشی به ایجاد رابط کاربری کارا همراه با اطلاعات نمونه سریع ، قابل انعطاف ، بدون درز : گردش کاری که با شما و تیمتان سازگار گردیده است. ابزارهای حرفه ای جهت صرفه جویی در وقت و ایجاد وب سایت های که نتایج را ارائه می کنند ابزارهای تشخیص پیشرفته ویژه ی خطایابی سریع فابلیت های جدید ویژه طراحی صفحات وب آماده سازی ویدیوها جهت سیلورلایت یکپارچه سازی با Team foundation Server ( همون TFS) وارد کردن مستقیم اجزاء طراحی شده گرافیکی که از Photoshop یا illustrator   نیمه دوم تیرماه، ازمون ورودی دوره وب کاربردی 2 خواهیم داشت. دوره Bi شامل OLAP و Data Mining بر پایه SQL Server 2008 R2، تابستان 89

برچسب ها:

بازهم مشکل پارسی این بار در افزونه JQuery

یکی از علاقه مندان و گروه هایی که به شدت روی توسعه ی JQuery کار میکنند شرکت مایکروسافته که با دارا بودن Microsoft AJAX و AJAX Control Toolkit باز هم روی JQuery کار میکنه تا جایی که تو ویژوال استدیو 2010 نیز این کتایخونه رو داخل template هاش گنجونده. دیشب اسکات گاتری (ScottGu) تو بلاگش پلاگین جدید مایکروسافت جهت Globalization ویژه این محصول رو معرفی کرد. در حقیقت مایکروسافت بیش از 350 فرهنگ مختلف دنیا رو برای تطابق اعداد، تاریخ و واحد پولی و سایر مولفه هایی که با فرهنگ ملل و قومیت ها تفاوت می کنند، رو در این پلاگین در نظر گرفته. لطفا به تصویر سمت راست نخندید! این چیزی نیست جز سهم زبان یک کشور از همه جا تحریم که به قولی گلوبالایز شده… از این رو من هم شروع کردم به اصلاح بخش فارسیش، بعد از اینکه از صحت کارش مطمئن شم و کامل شه، جهت استفاده عموم قرار خواهم داد…

برچسب ها:

درباره نویسنده

محمدامین مصباحی، همین و بس!

نمونه سوالات آزمون ارزیابی #C

آزمون ارزیابی c#
دانلود نمونه سوالات ارزیابی دانش برنامه نویسی #C جهت ثبت نام در دوره های:

 

WCF

ASP.NET (MVC, Web Forms)

SharePoint (Development)

Silverlight

Design Patterns

 

دانلود

 

 

آرشیو ماهانه پست ها