مطالب
نظرات نظرسنجیها
آیا مانیتورهای منحنی برای برنامه نویسی مناسب هستند؟
اگر چند مانیتور استفاده کنید کنار هم قراردادن دو مانیتور منحنی یا یک مانیتور تخت و منحنی خیلی سخت است.
از طرفی فقط برای کارهای ویدئوئی کاربرد دارد نه برای کارهای برنامه نویسی ، شاید این نظر بنده باشد و بقیه دوستان نظرشان متفاوت باشد.
استفاده از مانیتورهای منحنی روی میزکار فضای بسیارزیادی را لازم دارد و اگر بخواهید یک مانیتور دیگری بجز مانیتوری دقیقا شبیه خودش ، بالای آن بذارید اصلا هماهنگی نخواهد داشت.
از طرفی فقط برای کارهای ویدئوئی کاربرد دارد نه برای کارهای برنامه نویسی ، شاید این نظر بنده باشد و بقیه دوستان نظرشان متفاوت باشد.
استفاده از مانیتورهای منحنی روی میزکار فضای بسیارزیادی را لازم دارد و اگر بخواهید یک مانیتور دیگری بجز مانیتوری دقیقا شبیه خودش ، بالای آن بذارید اصلا هماهنگی نخواهد داشت.
نظرات مطالب
Dependency Injection
مشکلی که ما داریم دید ادغام وزارت ICT و وزارت راه و برداشتهایی در ردههای بالا در این حد و اندازه است که نهایتا منجر به عدم وجود صنعت برنامه نویسی به شکلی که در کشورهای دیگر هست شده است. با این اوصاف وقتی برنامهها در حد چند سفارش کوچک خلاصه میشود یا عموما تک کاربره یا یکی دو کاربره هستند، شاید زیاد تفاوتی نکند که ابزار شما VB6 باشد یا دلفی یا دات نت (همچنین بحث پشتیبانی سیستمهای قدیمی هم مطرح است).
اما زمانیکه تعداد کاربران شما بالای 200 نفر همزمان بودند و در یک شرکت باید اینها رو جمع و جور و پشتیبانی میکردید، استفاده از دلفی و دید برنامه نویسی دسکتاپ فقط در حد یک شوخی قابل طرح بود (فقط یکبار این تصور را بکنید که برنامه شما باید در طی روز حداقل سه بار بر اساس درخواستهای رسیده به روز شود. اگر تونستید ادمینی رو پیدا کنید که 200 تا کامپیوتر رو برای شما روزی سه بار به روز کند به من خبر بدید)
اما زمانیکه تعداد کاربران شما بالای 200 نفر همزمان بودند و در یک شرکت باید اینها رو جمع و جور و پشتیبانی میکردید، استفاده از دلفی و دید برنامه نویسی دسکتاپ فقط در حد یک شوخی قابل طرح بود (فقط یکبار این تصور را بکنید که برنامه شما باید در طی روز حداقل سه بار بر اساس درخواستهای رسیده به روز شود. اگر تونستید ادمینی رو پیدا کنید که 200 تا کامپیوتر رو برای شما روزی سه بار به روز کند به من خبر بدید)
زبانهای برنامهنویسی ساختارهای زبانی دستورمداری در کامپیوتر هستند که بهوسیله آنها میتوان یک الگوریتم را بهوسیله ساختارهای دستوری متفاوت برای اجرای رایانه توصیف کرد و با این روش امکان نوشتن برنامه جهت تولید نرمافزارهای جدید بهوجود میآید. معمولا هر زبان برنامهنویسی دارای یک محیط نرمافزاری برای وارد کردن متن برنامه، اجرا، کامپایل و رفع اشکال آن است.
در این گزارش میتوانید اطلاعاتی در مورد «10 زبان برنامه نویسی که باید در سال 2014 بیاموزید» را مطالعه کنید
نظرات مطالب
ASP.NET MVC #8
«تعریف HTML Helpers سفارشی به صورت عمومی:
برای این منظور فایل web.config موجود در پوشه Views را باز کنید (و نه فایل web.config قرار گرفته در ریشه اصلی برنامه). سپس فضای نام مورد نظر را در قسمت namespaces صفحات اضافه نمائید:»
برای من برعکس بود و باید در فایل web.config در ریشه اصلی برنامه اضافه میشد تا بدون مشکل متد Html Helper اجرا شود
البته من با VB برنامه نویسی میکنم
برای این منظور فایل web.config موجود در پوشه Views را باز کنید (و نه فایل web.config قرار گرفته در ریشه اصلی برنامه). سپس فضای نام مورد نظر را در قسمت namespaces صفحات اضافه نمائید:»
برای من برعکس بود و باید در فایل web.config در ریشه اصلی برنامه اضافه میشد تا بدون مشکل متد Html Helper اجرا شود
البته من با VB برنامه نویسی میکنم
سلام
به چه مبحث خوبی اشاره کردید.
یکی دیگر از نکاتی که مهم است ، از یکپارچگی درآمدن تیم پیاده سازی است که از لحاظ مدیریت پروژه بسیار مهم است. بدین معنی که اعضای تیم پروژه باید مفهوم جدیدی به نام sp را آموزش ببینند که این امر باعث کاهش سرعت توسعه می شود در حالی که با استفاده از یک ORM برنامه نویسان در لایه DAL با همان زبان برنامه نویسی که در لایه BLL برنامه می نویسند کار می کنند.
از طرف دیگر استفاده از sp ممکن است شما را به استفاده از پایگاه داده خاصی محدود کند.
به چه مبحث خوبی اشاره کردید.
یکی دیگر از نکاتی که مهم است ، از یکپارچگی درآمدن تیم پیاده سازی است که از لحاظ مدیریت پروژه بسیار مهم است. بدین معنی که اعضای تیم پروژه باید مفهوم جدیدی به نام sp را آموزش ببینند که این امر باعث کاهش سرعت توسعه می شود در حالی که با استفاده از یک ORM برنامه نویسان در لایه DAL با همان زبان برنامه نویسی که در لایه BLL برنامه می نویسند کار می کنند.
از طرف دیگر استفاده از sp ممکن است شما را به استفاده از پایگاه داده خاصی محدود کند.
سلام با توجه به رقابتی بودن بازار برنامه نویسی ؛ استفاده از این ابزارها به شدت در سرعت اتمام پروژه و در نتیجه قیمت نهایی موثر خواهد بود .
ولی باید یک استاندارد کاری() برای شرکت یا فرد برنامه نویس (منظور شیوه مورد قبول کدنویسی و انجام پروژه ) تعریف و بر اساس آن خود شرکت برنامه تولید کننده کد را آماده نماید.
در فصل دوم کتاب تا به الان یاد گرفتیم چگونه ماژولها را کامپایل کنیم و چگونه آنها را در یک اسمبلی قرار دهیم. حال وقت آن فرا رسیده است که با بسته بندی کردن (Package) و انتشار آن (Deploy) به طوری که کاربران بتوانند برنامه را اجرا کنند آشنا شویم.
نصب برنامه از طریق فروشگاه ویندوز
در فروشگاه ویندوز Windows Store Apps قوانین سخت و شدیدی برای بسته بندی کردن اسمبلیها وجود دارد. ویژوال استودیو تمام اسمبلیهای مورد نیاز برنامه را در یک فایل با پسوند appx قرار داده و آن را به سمت فروشگاه آپلود میکند. هر کاربری که این فایل appx را نصب کند، همهی اسمبلیهایی را که در دایرکتوری مربوطه قرار گرفته است، توسط CLR بار شده و آیکن برنامه هم در صفحهی start ویندوز قرار میگیرد و اگر دیگر کاربران همان سیستم هم این فایل appx را نصب کنند، از آنجا که قبلا روی سیستم موجود هست، تنها آیکن برنامه به صفحهی start اضافه میگردد و برای حذف هم تنها آیکن برنامه از روی این صفحه حذف میشود؛ مگر اینکه تنها کاربری باشد که این برنامه را نصب کردهاست که در آن صورت کلا همهی اسمبلیهای آن از روی سیستم حذف میشود.
در صورتیکه کاربرهای مختلف نسخههای مختلفی از همان برنامه را روی سیستم نصب کنند، برای اسمبلیها هر کدام یک دایرکتوری ایجاد شده و به ازای نسخهی نصب شده آن کاربر، یکی از این دایرکتوریها مورد استفاده قرار میگیرند. کاربران مختلف میتوانند روی سیستم به طور همزمان از نسخههای مختلف برنامه استفاده کنند.
روشهای پکیج گذاری
برای برنامههای دسکتاپ که ربطی به فروشگاه ندارند و بین ایرانیان طرفدار زیادی دارد، نیازی به استفاده از هیچ روش خاصی نیست و یک کپی معمولی هم کفایت میکند. همهی فایلهای مثل اسمبلی، باید در یک دایرکتوری قرار گرفته و به روش کپی کردن آن را انتقال داد. یا برای بسته بندی از یک فایل batch کمک گرفت و آن را روی سیستم نصب کرد و نیازی به هیچ تغییری در رجیستری نیست. برای حذف برنامه هم، حذف معمولی دایرکتوری مربوطه کفایت میکند.
البته گزینههای دیگری هم برای پکیج کردن این نوع برنامهها وجود دارند:
یکی از روشهای پکیج کردن فایلها به صورت cab هست که عموما برای سناریوهای اینترنتی و فشرده سازی و کاهش زمان دانلود به کار میرود.
روش دوم استفاده از پکیج MSI است که توسط سرویس نصب مایکروسافت Microsoft Installer Service یا MSIExec.exe انجام میگیرد. فایلهای MSI به اسمبلیها اجازه میدهند که بر اساس زمان تقاضای CLR برای بارگیری اولیه نصب شوند. البته این ویژگی جدیدی نیست و برای فایلهای exe یا dll مدیریت نشده هم به کار میرود.
استفاده از نصاب سازها
بهتر هست که برای انتشار برنامه از برنامههای نصاب سازی استفاده کنید که با واسطی جذابتر به نصب پرداخته و امکاناتی از قبیل shotrcutها، حذف و بازیابی و نصب و .. را هم به کاربر میدهند.
نصاب سازهای متفاوتی وجود دارند که در زیر به تعدادی از آنها اشاره میکنیم:
Install Shield (+ ) : این برنامه نسخههای متفاوتی را با قیمتهای متفاوتی، عرضه میکند و در این زمینه، جزء بهترینها نام برده میشود. حتی ویژگیهای مخصوصی هم برای ویژوال استودیو دارد. شرکت سازنده، برنامهی دیگری را هم اخیر تحت نام Install Anywhere عرضه کرده است که اجازه میدهد از روی یک برنامه برای پلتفرمهای مختلف setup بسازد.
NSIS : این برنامه هم در زمینهی ساخت setup محبوبیت زیادی دارد. این برنامه به صورت متن باز منتشر شده و رایگان است. امکانات این برنامه ساده است و برای راه اندازی سریع یک setup و اجرای راحت آن توسط کاربر، کاملا کاربردی است.
Tarma Installmate : این نرم افزار نسبت به InstallShield سادهتر و کم حجمتر است. حداقل برای برنامههای عادی امکانات مناسبی دارد.
DeployMaster : یک برنامهی دیگر با امکانات حرفهای جهت انشار برنامههای دسکتاپ، که از ویندوز 98 تا 8.1 را در حال حاضر پشتیبانی میکند.
QSetup Installation Suite : یک برنامهی نصب حرفهای که فایل نهایی آن میتواند به دو فرمت exe یا MSI باشد و قابلیتهایی چون پشتیبانی از زبان فارسی، ورود لایسنس، سریال نرم افزار و ... را نیز پشتیبانی میکند.
Inno Setup : این برنامه هم امکانات خوبی را برای ساخت یک نصاب ساز دارد و همچنین از زبان پاسکال جهت اسکریپت نویسی جهت توسعه امکانات بهره میبرد.
Visual Patch : وب سایت پی سی دانلود این برنامه را اینگونه توضیح میدهد:
انتشار توسط ویژوال استودیو
ویژوال استودیو هم امکانات خوبی برای انتشار در بخش Properties پروژه، برگهی publish ارائه میکند و فایل MSI نتیجه را به سمت وب سرور، FTP Server یا روی دیسک ارسال میکند. یکی از خصوصیات خوب این روش این است که میتواند پیش نیازهایی مانند فریم ورک دات نت یا sql server Express را به سیستم اضافه کنید؛ در نهایت با مزیت آپدیت و نصب تک کلیکی، کاربر، برنامه را بر روی سیستم نصب کند.
اسمبلیهای انتشاریافته اختصاصی
در روشهایی که ذکر کردیم، از آنجا که اسمبلیها در همان شاخه یا دایرکتوری برنامه قرار گرفتهاند و نمیتوان آنها را با برنامههای دیگر به اشتراک گذاشت (مگر اینکه برنامه دیگری را هم در همان دایرکتوری قرار داد) به این روش Privately Deployed Assemblies میگویند. این روش برگ برنده بزرگی برای برنامه نویسان، کاربران و مدیران سیستمها محسوب میشود. زیرا که جابجایی آنها راحت بوده و CLR در همانجا اسمبلیها را در حافظه بار کرده و اجرا میکند. در این نوع برنامهها عملیات نصب/جابجایی/ حذف به راحتی صورتی میگرد و نیازی به تنظیمات خارجی مانند رجیستری ندارد. یکی از خصوصیات مهمی که دارد این هست که جداول متادیتا به اسمبلی اشاره میکنند که برنامه بر پایه آن ساخته شده و با آن تست شده است؛ نه با اسمبلی موجود دیگر در سیستم که شاید نام نوع مورد استفاده آن یا اسمبلی آن به طور تصادفی با آن یکی است.
در مقالات آتی در مورد اشتراک گذاری اسمبلیها بین چند برنامه مفصلتر صحبت خواهیم کرد.
نصب برنامه از طریق فروشگاه ویندوز
در فروشگاه ویندوز Windows Store Apps قوانین سخت و شدیدی برای بسته بندی کردن اسمبلیها وجود دارد. ویژوال استودیو تمام اسمبلیهای مورد نیاز برنامه را در یک فایل با پسوند appx قرار داده و آن را به سمت فروشگاه آپلود میکند. هر کاربری که این فایل appx را نصب کند، همهی اسمبلیهایی را که در دایرکتوری مربوطه قرار گرفته است، توسط CLR بار شده و آیکن برنامه هم در صفحهی start ویندوز قرار میگیرد و اگر دیگر کاربران همان سیستم هم این فایل appx را نصب کنند، از آنجا که قبلا روی سیستم موجود هست، تنها آیکن برنامه به صفحهی start اضافه میگردد و برای حذف هم تنها آیکن برنامه از روی این صفحه حذف میشود؛ مگر اینکه تنها کاربری باشد که این برنامه را نصب کردهاست که در آن صورت کلا همهی اسمبلیهای آن از روی سیستم حذف میشود.
در صورتیکه کاربرهای مختلف نسخههای مختلفی از همان برنامه را روی سیستم نصب کنند، برای اسمبلیها هر کدام یک دایرکتوری ایجاد شده و به ازای نسخهی نصب شده آن کاربر، یکی از این دایرکتوریها مورد استفاده قرار میگیرند. کاربران مختلف میتوانند روی سیستم به طور همزمان از نسخههای مختلف برنامه استفاده کنند.
روشهای پکیج گذاری
برای برنامههای دسکتاپ که ربطی به فروشگاه ندارند و بین ایرانیان طرفدار زیادی دارد، نیازی به استفاده از هیچ روش خاصی نیست و یک کپی معمولی هم کفایت میکند. همهی فایلهای مثل اسمبلی، باید در یک دایرکتوری قرار گرفته و به روش کپی کردن آن را انتقال داد. یا برای بسته بندی از یک فایل batch کمک گرفت و آن را روی سیستم نصب کرد و نیازی به هیچ تغییری در رجیستری نیست. برای حذف برنامه هم، حذف معمولی دایرکتوری مربوطه کفایت میکند.
البته گزینههای دیگری هم برای پکیج کردن این نوع برنامهها وجود دارند:
یکی از روشهای پکیج کردن فایلها به صورت cab هست که عموما برای سناریوهای اینترنتی و فشرده سازی و کاهش زمان دانلود به کار میرود.
روش دوم استفاده از پکیج MSI است که توسط سرویس نصب مایکروسافت Microsoft Installer Service یا MSIExec.exe انجام میگیرد. فایلهای MSI به اسمبلیها اجازه میدهند که بر اساس زمان تقاضای CLR برای بارگیری اولیه نصب شوند. البته این ویژگی جدیدی نیست و برای فایلهای exe یا dll مدیریت نشده هم به کار میرود.
استفاده از نصاب سازها
بهتر هست که برای انتشار برنامه از برنامههای نصاب سازی استفاده کنید که با واسطی جذابتر به نصب پرداخته و امکاناتی از قبیل shotrcutها، حذف و بازیابی و نصب و .. را هم به کاربر میدهند.
نصاب سازهای متفاوتی وجود دارند که در زیر به تعدادی از آنها اشاره میکنیم:
Install Shield (+ ) : این برنامه نسخههای متفاوتی را با قیمتهای متفاوتی، عرضه میکند و در این زمینه، جزء بهترینها نام برده میشود. حتی ویژگیهای مخصوصی هم برای ویژوال استودیو دارد. شرکت سازنده، برنامهی دیگری را هم اخیر تحت نام Install Anywhere عرضه کرده است که اجازه میدهد از روی یک برنامه برای پلتفرمهای مختلف setup بسازد.
NSIS : این برنامه هم در زمینهی ساخت setup محبوبیت زیادی دارد. این برنامه به صورت متن باز منتشر شده و رایگان است. امکانات این برنامه ساده است و برای راه اندازی سریع یک setup و اجرای راحت آن توسط کاربر، کاملا کاربردی است.
Tarma Installmate : این نرم افزار نسبت به InstallShield سادهتر و کم حجمتر است. حداقل برای برنامههای عادی امکانات مناسبی دارد.
DeployMaster : یک برنامهی دیگر با امکانات حرفهای جهت انشار برنامههای دسکتاپ، که از ویندوز 98 تا 8.1 را در حال حاضر پشتیبانی میکند.
QSetup Installation Suite : یک برنامهی نصب حرفهای که فایل نهایی آن میتواند به دو فرمت exe یا MSI باشد و قابلیتهایی چون پشتیبانی از زبان فارسی، ورود لایسنس، سریال نرم افزار و ... را نیز پشتیبانی میکند.
Inno Setup : این برنامه هم امکانات خوبی را برای ساخت یک نصاب ساز دارد و همچنین از زبان پاسکال جهت اسکریپت نویسی جهت توسعه امکانات بهره میبرد.
Visual Patch : وب سایت پی سی دانلود این برنامه را اینگونه توضیح میدهد:
نرم افزار Visual Patch یک ابزار توسعه یافتهی نرم افزاری برای ساخت پچ و آپدیت برنامهها میباشد. این سازنده پچ باینری، استفاده از فشرده سازی داده DeltaMAX برای سریعتر کردن توسعهی نرم افزار، یکپارچگی با نصب نرم افزار و ابزارهای مدیریت پچ از فروشندگانی نظیر Installshield, Lumension, Patchlink, Shavlik, Indigo Rose و ...، را به طور برجسته نمایان ساخته است.و ...
با استفاده از این ابزار پچ کردن برنامهها که برای توسعه دهندگان نرم افزار و برنامه نویسان طراحی شده است، توزیع نرم افزار و سیستم گسترش پچ بهبود مییابد. Visual Patch الگوریتمهای فشرده سازی و state-of- the-art binary differencing را نمایان میسازد و این کمک میکند که شما به کوچکتر شدن و بهتر شدن پچهای نرم افزار اطمینان داشته باشید.
انتشار توسط ویژوال استودیو
ویژوال استودیو هم امکانات خوبی برای انتشار در بخش Properties پروژه، برگهی publish ارائه میکند و فایل MSI نتیجه را به سمت وب سرور، FTP Server یا روی دیسک ارسال میکند. یکی از خصوصیات خوب این روش این است که میتواند پیش نیازهایی مانند فریم ورک دات نت یا sql server Express را به سیستم اضافه کنید؛ در نهایت با مزیت آپدیت و نصب تک کلیکی، کاربر، برنامه را بر روی سیستم نصب کند.
اسمبلیهای انتشاریافته اختصاصی
در روشهایی که ذکر کردیم، از آنجا که اسمبلیها در همان شاخه یا دایرکتوری برنامه قرار گرفتهاند و نمیتوان آنها را با برنامههای دیگر به اشتراک گذاشت (مگر اینکه برنامه دیگری را هم در همان دایرکتوری قرار داد) به این روش Privately Deployed Assemblies میگویند. این روش برگ برنده بزرگی برای برنامه نویسان، کاربران و مدیران سیستمها محسوب میشود. زیرا که جابجایی آنها راحت بوده و CLR در همانجا اسمبلیها را در حافظه بار کرده و اجرا میکند. در این نوع برنامهها عملیات نصب/جابجایی/ حذف به راحتی صورتی میگرد و نیازی به تنظیمات خارجی مانند رجیستری ندارد. یکی از خصوصیات مهمی که دارد این هست که جداول متادیتا به اسمبلی اشاره میکنند که برنامه بر پایه آن ساخته شده و با آن تست شده است؛ نه با اسمبلی موجود دیگر در سیستم که شاید نام نوع مورد استفاده آن یا اسمبلی آن به طور تصادفی با آن یکی است.
در مقالات آتی در مورد اشتراک گذاری اسمبلیها بین چند برنامه مفصلتر صحبت خواهیم کرد.