تبلیغات
مقالات آموزشی برنامه نویسی و شبکه

شاخص های تاثیر گذار در کیفیت پروژه های وب

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

به هر یک از شرکت ها هم که مراجعه می کنید یک رنج قیمتی جلوتون میزارن .
وقتی ازشون می پرسین که چرا شما؟ چرا باید پروژمو به شما بدم، کلی اصطلاح و شعار و ... به سمتتون شلیک می کنن.
خوب مشتریای بنده خدا هم که اکثریت اطلاعات تخصصی درباره نرم افزار ندارن و فقط چشمشون به جیبشون و قیمت های ارائه شده است.
(دقت کنین که گفتم اکثریت)

در مقاله پیش رو بنده سعی کرده ام عوامل موثری که مشتریان باید در هنگام سفارش پروژه های تحت وب در نظر داشته باشند رو اشاره کنم و نکاتی هم درباره درآمدزایی از بستر وب بگم.
البته موارد زیر کاملا تجربی می باشند و بنده طی سالهایی که تو عرصه وب مو سفید کردم این موارد رو برخورد کرده ام.

مقالات آموزشی دانشجویی برنامه نویسی و الکترونیک و شبکه
مهم ترین شاخص های تاثیر گذار در کیفیت و قیمت نرم افزارهای تحت وب

تکنولوژی ساخت:
خیلی مهمه که چه تکنولوژی در ساخت نرم افزار استفاده میشه، تغییر در تکنولوژی می تونه روی امنیت، سرعت و کارایی سایت شما تاثیر زیادی داشته باشه و مسلما روی قیمتش هم تاثیر خواهد داشت.
مثلا ASP.Net MVC خیلی سریع تر از ASP.Net WebForm است و الان در بسیاری از کشورها اکثر پروژه ها با ASP.Net MVC ساخته میشه.
از طرفی توسعه نرم افزار با ASP.Net MVC نیاز به کدنویسی بیشتر و صرف زمان بیشتری است و مسلما قیمتش هم بالاتره ولی خوب این کجا و اون کجا ، فقط در یک فاکتور سرعت ، کلی تفاوت بین نرم افزار وب فرم و نرم افزار ام وی سی است.


معماری نرم افزار:
خیلی مهمه که نرم افزار با چه معماری تولید میشه.
اکثر شرکت ها میگن که معماری 3و4و5 لایه داریم استفاده می کنیم و ...
ولی در عمل می بینیم که بخش زیادی از منطق برنامه در پشت فرم یا داخل اکشن ها داره انجام میشه
معماری خوب تاثیر زیادی در قابلیت نگهداری ، توسعه سریع و راحت نرم افزار در آینده و همچنین سرعت نرم افزار می تونه داشته باشه


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

این مورد خیلی مهمه که شرکت چقدر تضمین می کنه که فازهای بعدی پروژه شما رو براتون انجام بده و هر تغییر چقدر زمان می بره تا انجام بشه ؟ (سرعت توسعه)
این مورد به عواملی چون معماری نرم افزار، کدنویسی تمیز (Clean Coding)، مستند سازی پروژه (Documentation) و ... بستگی داره
اینجاست که تفاوت شرکت ها از یکدیگر مشخص میشه

دوستان بنده مثلی ساخته اند که میگه: هیچ پروژه ای تموم نمیشه بلکه از فازی به فاز بعد یا از شرکتی به شرکت بعد منتقل میشه ، مگر اینکه پروژه  کلا کنسل بشه!

پشتیبانی مناسب (در صورت بروز خطا و یا نیاز به توسعه نرم افزار در آینده)
:
پشتیبانی اصلی است که امروزه شرکت ها بسیار عالی به اهمیت آن پی برده اند.
پشتیبانی می تونه شامل رفع خطاهای برنامه نویسی احتمالی، تضمین توسعه نرم افزار در آینده و سایر خدمات باشه


بومی بودن کامل نرم افزار جهت اطمینان از امنیت هسته نرم افزار و توانایی توسعه سریع در آینده
متاسفانه برخی شرکت ها CMS های سورس باز رایگان رو ویرایش می کنن و به اسم نرم افزار بومی و با قیمت های نجومی در اختیار مشتریان قرار میدن.

البته بنده نمیگم که CMS سورس باز چیز بدیه ، اتفاقا در مواردی بسیار مناسبه.
یه وقتی مشتری سایتی می خواد که 4 تا مطلب و محصول توش معرفی کنه و ... ، که در این موارد بهترین گزینه استفاده از همین CMS های رایگانه که شرکت ها بر اساس سلیقه مشتری اونو شخصی سازی می کنن و با قیمت خوب به مشتری میدن

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

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

میزان تحمل بار
خیلی مهمه نرم افزار تحمل این رو داره که مثلا 10.000 یا 100.000 کاربر بصورت آنی ازش استفاده کنن ؟

میزان تحمل تعداد تراکنش در لحظه
مثلا سایتی مثل دیجی کالا که در هر ثانیه ممکنه n تا تراکنش مالی داشته باشه رو در نظر بگیرین، خوب آیا این سایت با یک سایت ساده که روزی 1 تراکنش مالی داره یکیه ؟ مسلما Stable بودن نرم افزار و قدرت تحمل تراکنش های بالا خیلی مهمه و مسلما برای داشتن همچین تحملی باید کلی روی کدهای نرم افزار کار بشه.
بدیهی است که قیمت و زمان طراحی همچین نرم افزاری هم خیلی بیشتره.
سال گذشته 2 تا از مشتریامون می گفتن که یک سایت مثل دیجی کالا می خوان ، و جالبه که وقتی می گفتیم بالای 60 میلیون هزینه اش میشه، تعحب می کردن و جالب تر این بود که انتظار رقمی در حدود 5 میلیون تومان رو داشتند !
این نشون میده که مشتریان به "میزان تحمل تعداد تراکنش در لحظه" سایت دیجی کالا اصلا توجه نکرده بودند ، حال آنکه طراحی دیزاین سنگین و کاملا ای جکس بیس و حجم دیتابیسی که این سایت داره بماند ...


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



امکانات مدیریتی ارائه شده در نرم افزار و میزان مدیریت بخش های مختلف سایت
یکی از عوامل مهم در کیفیت نرم افزار امکاناتی است که در پنل مدیریتی در اختیار شما قرار داده شده است.
چقدر می تونین بخش های مختلف نرم افزار رو کنترل کنین ؟
 چقدر می تونین راحت اطلاعات مورد نیازتونو پیدا کنین ؟
چقدر جزئیات از اطلاعات در اختیار دارید ؟
البته در این بین داشتن یک قالب مناسب (ترجیحا Responsive) خیلی می تونه مهم باشه و احساس خوبی در حین کار با پنل به شما بده.
برخی امکانات ممکنه تا مدت ها به چشم نیان ولی یه موقع متوجه وجودشون میشی که واقعا کارت گیره.
مثلا وجود دکمه Settle دستی در پنل نرم افزارهایی که دارای درگاه بانکی (پرداخت آنلاین) هستند ممکنه تا ماه ها مهم نباشه ولی یک موقع می بینین یکی از مشتری های مهمتون پرداختش به مشکل می خوره و پول به حساب شما واریز نمیشه (Settle عملیاتی است که طی اون نرم افزار درخواستی به درگاه بانکی ارسال می کنه تا پولی که از حساب مشتری کسر و در دست بانک قرار داره ، به حساب صاحب سابت واریز بشه، جالبه که بدونین اگر عملیات Settle با موفقیت انجام نشه، پول پیش بانک می مونه! و انگار شما پولی دریافت نکرده اید )
بسیاری از نرم افزارها فاقد دکمه Settle دستی هستند و مدیریت سایت بنده خدا در این مواقع دستش به جایی بند نیست !
حتی نرم افزارهای بنده تا چند ماه پیش همین مشکل رو داشتند و تا وقتی که دوستم به مشکل فوق الذکر برخورد نکرده بود ، نیاز به همچین دکمه ای رو احساس نکرده بودم (اینو گفتم که بگم تولیدات خود بنده نیز کامل نیستند تا اینجور برداشت نشه که این مقاله رو دارم برای کوبیدن شرکت های مختلف و خوب نشون دادن خودم می نویسم، هدف بنده ارائه یک سری معیار برای تشخیص کیفیت نرم افزارهاست، کاری که خیلی پیش باید از طرف یک سازمان حامی انجام میشد) .
اینجاست که تجربه شرکت های تولید نرم افزار می تونه اونارو از هم متمایز کنه.


امنیت کنترل پنل ها ، اطلاعات تراکنش ها و اطلاعات کاربران سایت
بخش ورود به پنل مدیریتی تا چه حد امن سازی شده است ؟
یادمه وقتی سایت WMFA.ir رو برای یکی از بهترین دوستانم می ساختم ، خیلی روی امنیت پنل مدیریتی سایتش حساس بود، بطوری که مجبور شدم یک سیستم امنیتی 3 لایه روی پنلش پیاده سازی کنم که حتی خودمم نمی تونم الان حتی با داشتن یوزرنیم و پسورد پنلش ، وارد پنل مدیریتیش بشم
همچنین امنیت اطلاعات حساس مثل نام های کاربری ، کلمات عبور ، اطلاعات مهم درگاه های بانکی داخلی یا خارجی و ... بسیار مهم است.


امکانات بکاپ گیری از اطلاعات
این خیلی مهمه که نرم افزار چه امکاناتی برای بکاپ گیری از اطلاعات نرم افزار بهتون میده و اینکه آیا امکان ریستور کردن بکاپ ها از طریق پنل مدیریتی میسر است یا خیر.
آیا بدون نیاز به داشتن اطلاعات تخصصی می تونین به راحتی از اطلاعات بکاپ تهیه کنین و در صورت نیاز بکاپ ها رو ریستور کنین؟

مقالات آموزشی دانشجویی برنامه نویسی و الکترونیک و شبکه
انواع گزارشات
گزارش گیری مهم ترین وظیفه یک نرم افزار خوب است، نمایش اعداد بصورت نموداری ، جدولی و ... یکی از مهم ترین بخش های هر نرم افزار است
توانایی جستجوی داده ها و گرفتن خروجی هایی مثل اکسل ، اکسس ، CSV، XML و خروجی جهت چاپ (پرینت) جهت نگهداری در بایگانی خیلی مهمه

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



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

پ.ن:
شایان ذکر است که در بحث سایت های خبری ، لاگ تغییرات خبرها رو گردش خبر می نامند(شامل لاگ کلیه تغییرات هر خبر بعلاوه یک سری سلسله مراتب جهت دریافت تاییدیه نمایش خبر میشه)


سیستم لاگ خطاهای نرم افزار
امروزه نرم افزارها را به سیستم های لاگی مثل ELMAH مجهز می کنن که کلیه خطاهای برنامه  (Exception ها) رو لاگ می کنند و شرکت های سازنده بصورت دوره ای لاگ ها را بررسی می کنند تا اگر مشکلی در سیستم وجود دارد ، سریعا شناسایی و رفع گردد.
این مورد روی امنیت نیز تاثیر زیادی دارد ، چرا که اغلب حمله های سایبری موجب تزریق اطلاعات نادرست به سایت می شود و در این حین خطاهایی نیز در نرم افزار رخ می دهد که می تواند شما را از وجود حملات باخبر سازد تا سریعا راه های نفوذ را شناسایی و برای بستن یا محکم تر کردن سدهای دفاعی نرم افزار اقدام نمایید.


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

موفق باشید

نوشته شده در تاریخ یکشنبه 6 اردیبهشت 1394    | توسط: ح.م    | طبقه بندی: یادداشت های یک برنامه نویس خوش ذوق،     | نظرات()


دستور جادویی virtual در سی شارپ

اگر تا به حال برنامه نویسی سی شارپ انجام داده باشید و در حوزه برنامه نویسی فعال بوده باشید ، با احتمال زیاد نام دستور virtual را به کررات شنیده اید و حتی شاید از آن در برنامه های خود استفاده نیز کرده باشید ، ولی آیا به واقع می دانید که کاربرد اصلی آن چیست ؟
شاید دوستانی که MVC کار کرده باشند بیشتر با این دستور دست و پنجه نرم کرده باشند تا دوستانی که به شکل سنتی با ASP.Net WebFrom کار می نمایند ، البته شاید دوستان ناراحت بشن که من وب فرم را با عنوان روش سنتی یاد می کنم ، ولی خوب این دوستان اگر به ام وی سی مراجعه نمایند ، شوکه میشن که چقدر دستشون توی ام وی سی بازه و اینکه چقدر معماری قشنگی داره ...
در توضیح این مطلب باشد عرض کنم که مدت ها بود به این موضوع فکر می کردم که بخشی از کند بودن پروژه های وب فرم به دلیل رندر شدن کنترل های ASP.Net به تگ های HTML ای است که در ام وی سی تقریبا میشه گفت مهر تاییدی به فکر من زده شده و کلا دیگه خبری از کنترل های ASP.Net نیست

در کل بی خیال این حرف ها ، بهتره بریم سر اصل مطلب.
فرض کنین شما کلاسی دارین که یک رویداد (Event) یا تابع درون اون داره ، فرض کنین کلاس شما قراره DLL بشه و DLL اون در اختیار همکار شما قرار بگیره ؛ همکار شما DLL رو توی پروژه اش استفاده می کنه و در این حین نیاز پیدا می کنه که قبل یا بعد از اجرای تابع شما یک سری کد رو اجرا کنه !
فرض کنین می خواد یک سیستم لاگ بسازه که هر بار Event موجود در DLL شما اجرا شد ، درون دیتابیس یک لاگ ذخیره بشه...
بعنوان مثال می تونیم اینجوری فرض کنیم که شما یک DLL برای عملیات لاگین نوشته اید که وقتی لاگین با موفقیت انجام میشه ، یک Event با عنوان SuccessLogin اجرا میشه و یک سری داده رو درون کوکی یا سشن ذخیره میکنه.
حال همکار شما درون پروژه ای این DLL رو استفاده کرده ولی مشتری از اون خواسته که پروژه اش دارای سییتم لاگ باشه و تمامی آی پی و تاریخ لاگین های موفق درون دیتابیس ثبت بشه.

مقالات آموزشی دانشجویی برنامه نویسی و الکترونیک و شبکه
خوب در چنین مواردی باید چکار کرد ؟

اینجاست که دستور Virtual به کمک شما می تونه بیاد.
کافی است شما تابع Event تون رو بصورت Virtual بنویسین:


در کد نمونه بالا مشاهده می نمایید که ما تابع Event مون رو بصورت Virtual ساخته ایم.

حال همکار شما می تونه DLL شما رو بدین صورت استفاده کنه :


مشاهده می نمایید که بدین صورت همکار شما می تواند یک کلاس جدید بسازد ، سپس کلاس جدید را از کلاس شما ارث بدهد و سپس متد مورد نظر را Override نماید.
درون متد Override شده همکار شما می تواند به راحتی کدهای مورد نظر را قبل یا بعد از اجرا کد تابع اصلی (تابعی که Override شده است) اضافه نماید و در هر زمان که نیاز داشت به کمک دستور base می تواند تابع اصلی را اجرا نماید.
بدین صورت می توان نتیجه گرفت که دستور Virtual دو خاصیت جدید را به کلاس شما می دهد:
  1. امکان تغییر کامل رفتار تابع را به کلاس های فرزند می دهد. بدین صورت که در صورتی که در مثال بالا همکار شما درون تابع از دستور base استفاده ننماید ، در اصل همکار شما بصورت کامل رفتار تابع شما را تغییر داده است
  2. امکان تغییر جزئی رفتار تابع را به کلاس های فرزند می دهد. بدین صورت که به کلاس های فرزند این امکان را می دهد که یک سری کد در قبل یا بعد از اجرا تابع شما اجرا نمایند که در مثال بالا به عینه می توانید این موضوع را مشاهده نمایید که همکار شما بطور مثال کدهای ثبت لاگ را در قبل یا بعد از اجرای کدهای تابع شما (تابع کلاس پدر) اضافه نموده است.

دوستانی که MVC  یا Entity Framework Code First کار می کنن و بالاخص دوستانی که E.F Code First کار می کنن ، به کررات کلاس هایی مشابه کلاس زیر را ساخته اند و بیشتر موضوع این پست را لمس کرده اند.

در کد فوق مشاهده می نمایید که در کد نویسی Migration در E.F Code First نیز مایکروسافت بصورت Virtual تابع Seed را ساخته است که این امکان را به ما می دهد که بتوانیم کدهایی را درون این تابع اضافه نماییم.

(تابع Seed تابعی است که در زمان ساخت دیتابیس اجرا می شود که توضیح تفصیلی این تابع خارج از بحث پست ما می باشد)

امیدوارم از این آموزش لذت برده باشید

نوشته شده در تاریخ شنبه 29 فروردین 1394    | توسط: ح.م    | طبقه بندی: آموزش سی شارپ،     | نظرات()


12 مشخصه یک محل کار ایده آل

امروز مطلب جالبی از یکی از بلاگ ها پیدا کردم که از زبون خودشون نقل قول می کنم :


سایت Harvard Business Review چند روز پیش مطلبی را منتشر کرده که 12 مشخصه یک مکان ایده آل برای کار را برشمرده است. این مطلب بر اساس بیش از 100 مطالعه صورت گرفته تنظیم شده است.

به قول نویسنده - Tony Schwartz  - در صورتی که شرکتی این شرایط را فراهم کند، کارکنان حداکثر رضایت شغلی ممکن را خواهند داشت و در نتیجه بیشترین بهره وری و وفاداری به سازمان حاصل خواهد شد.

بر اساس این مطالعه در سرتاسر جهان تنها 20% افراد از محیط کار خود ابراز رضایت کامل کرده اند.

1. پرداخت دستمزد کافی که شخص بتواند در حوزه استاندارهای خود زندگی کند.

2. شریک کردن مالی کارکنان در موفقیتهای کسب شده برای سازمان نظیر سهامدار کردن کارکنان، پرداخت پاداش متناسب با کارایی و بهره وری و از این دست.

3. طراحی محیط کاری به شکلی که محل امن، راحت و لذت بخشی برای کارکنان به وجود آورد، محیطی که امکان تعامل و فعالیتهای اجتماعی را فراهم کرده و در عین حال به اندازه کافی به شخص حس خصوصی بودن فضای اطراف خود را بدهد.

4. فراهم کردن مواد غذایی سالم و با کیفیت با کمترین هزینه ممکن.

5. ایجاد امکاناتی برای استراحت و کسب انرژی مجدد و ترغیب کارکنان به استفاده از این امکانات. در حالت ایده آل ایجاد محیطی برای چرت در میان روز برای کسب انرژی مجدد برای ساعتهای بعد از ظهر.

6. ایجاد امکانات ورزشی و فعالیتهای بدنی برای کارکنان و ترغیب آنان برای استفاده حتی در میان روز.

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

8. ایجاد شرایطی برای تعامل دوسویه برای بازخورد، انتقاد و بررسی عملکرد، به شکلی که کارکنان تنها گیرنده و شنونده بازخورد از بالا دست خود نبوده و این امکان برای آنان فراهم باشد که در مورد بالادستی های خود – در صورت لزوم به شکل بی نام – نظر دهند و انتقاد کنند.

9. ملزم کردن مدیران و راهبران سازمان به احترام و دلسوزی نسبت به زیردستان.

10. وضع قوانینی برای آزاد گذاشتن کارکنان برای تمرکز و تخصیص زمان برای پروژه هایشان خصوصا پروژه های طولانی مدت و در صورت امکان دنبال کردن پروژه هایی که صرفا به آن علاقه مند هستند و این گونه پروژه ها در بلند مدت برای سازمان ارزشمند خواهد بود (یا دستکم دارای این پتانسیل است)

11. ایجاد شرایطی برای آموزش، مطالعه و پیشرفت کارکنان در زمینه های مرتبط با حرفه و حتی مهارتهای درونی و شخصی.

12. ایجاد برنامه هایی در سازمان که صرفا منجر به سود نشده و در عوض تمرکز بیشتری بر روی ایجاد ارزش برای آینده گان، محیط زیست و دیگران داشته باشد. در این حالت در کارکنان حس بهتری نسبت به کار و سازمانی که برای آن کار می کنند ایجاد خواهد شد.

منبع: http://softwaring.blogfa.com

نوشته شده در تاریخ دوشنبه 13 بهمن 1393    | توسط: ح.م    | طبقه بندی: اطلاعیه های مدیریت سایت،     | نظرات()


ساخت پروژه MVC5 در ویژوال استودیو 2013

چند وقتی بود که یک پروژه MVC رو شروع کرده بودم ، لایه های مختلف نرم افزار رو ساختم و داشتم خوب پیش ممی رفتم.
همه چیز خوب بود تا اینکه نیاز پیدا کردم که Enum های برنامم رو داخل دراپ داون لیست بایند کنم.
خوب روش های معمول نیاز به کدنویسی زیادی داشتند که اصلا به نظرم مناسب نیومدند ، در روش های معمول برای هر Enum باید یک Extention Method  (متد الحاقی) بنویسیم که در برنامه هایی که دارای تعداد زیادی Enum هستند مناسب به نظر نمیرسه.

روش جدیدتری که در MVC5 ارائه شده ، ساخت یک Html Helper سفارشی از نوع جنریک می باشد که برای انواع Enum می تواند مورد استفاده قرار گیرد

مقالات آموزشی دانشجویی برنامه نویسی و الکترونیک و شبکه

بنابراین برای Enum ها کدی مشابه کد زیر خواهیم داشت :


خوب وارد جزئیات کار نمی خوام بشم چون هر کس علاقه داره می تونه از اینجا جزئیات پیاده سازی رو بخونه


مشکل جایی پیش اومد که یکی از متدهای کد من ارور می داد و متن ارور مشخص می کرد که همچین متدی در کلاس HtmlHelper وجود ندارد !
ولی HtmlHelper که در فضا نام System.Web.Mvc است باید همچین متدی داشته باشه !
در بین مقالات خوندم که این تکنیک فقط در mvc 5 می باشد و در نسخه های قبلی امکان ساخت helper سفارشی میسر نبوده است ...

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


 در این کد نسخه ام وی سی را 5.1 معرفی کرده اند ، ولی من با بررسی نسخه اسمبلی system.web.mvc دیدم که نسخه من 4 است !

مگر پروژه من ام وی سی 5 نیست !
داستان چی بود ؟

با کمی سرچ توی اینترنت به این مقاله جالب برخورد کردم ، این مقاله مشخص می کنه که در ویژوال استودیو 2013 در زمان ساخت پروژه جدید mvc باید دقت کنید که به اشتباه پروژه رو از نوع mvc4 نسازید !
این یک کار عجیب غریب از مایکروسافته که 2 نوع منو برای ساخت پروژه ام وی سی داره که بایدحواستون جمع باشه که به اشتباه از طریق زیر اقدام به ساخت پروژه جدید mvc کنید ، چون اینجوری پروژه شما mvc 4 ساخته می شود!
File > New > Project > C# > Web > Visual Studio 2012

برای اینکه پروژه شما mvc 5 بشه باید پروژتونو اینطوری ایجاد کنین :

File > New > Project > C# > Web

باید دقت کنین که نباید زیر منوی Visual Studio 2012 رو انتخاب کنین.
در مرحله بعدی باید در پنجره جدیدی که باز میشه MVC رو انتخاب کنین و در پایان OK رو بزنین.

خوب پس از این به بعد حواستون به نحوه ساخت پروژه mvc تون باشه

نوشته شده در تاریخ جمعه 10 بهمن 1393    | توسط: ح.م    | طبقه بندی: آموزش mvc،     | نظرات()


کسب درآمد از طریق اینترنت!


اگر قصد سرمایه گذاری برای راه اندازی کسب و کار در عرصه وب رو دارید ، توصیه می کنم ادامه مقاله من رو مطالعه کنید.

بدیهی است که سایت خوب مثل داشتن یک مغازه با دکوراسیون مناسبی است که اجناس اون کاملا توی چشم هستند و دارای کارمندان خوش برخوردی نیز هست.

طبق تجربه بنده ، توی عرصه وب پول خوب بدست نمیاری مگر اینکه 3 اصل زیر رو داشته باشی :

مقالات آموزشی دانشجویی برنامه نویسی و الکترونیک و شبکه
1- ایده خوب
اگر ایده شما یک ایده تک باشه خوب خیلی عالیه ، ولی اگر تک هم نباشه می تونه ایده ای باشه که کامل شده ایده دیگران باشه مشابه سایت شیپور که کامل شده ایده سایت دیوار است

2- پیاده سازی صحیح و کامل ایده
ایده باید به نحوی پیاده سازی بشه که مشتری رو به خودش جذب کنه و مشتری باهاش راحت بتونه ارتباط برقرار کنه
ولی باید در نظر داشته باشید که هیچگاه نباید کارایی رو فدای زیبایی کنیم.

3- صرف وقت و هزینه
باید پشت ایدتون بمونین و روش وقت بذارید
تجربه ثابت کرده که خیلی از پروژه ها در همین مرحله متوقف میشن!
نمونه عملیش سایت WhatsJob.ir است که حدود 3 ماه با تلاش یک تیم روش کار کردیم و ایده و پیاده سازیش عالی بود ولی بانیان پروژه پای ایدشون نموندند و بعد از حدود 9 ماه تازه داشتن روش دیتا اینتری انجام میدادن  و در آخر هم استفاده ای از سایت نشد!
بازاریابی و صرف وقت جهت معرفی سایت به مردم از طریق شبکه های اجتماعی، تبلیغات اینترنتی و بالا بردن رنک در موتورهای جستجو بخش اعظم کار است.

به نظر من مرحله اول و دوم تازه 50% کار است ، بخش مهم تر کار بازاریابی و کسب کاربر است.
البته اگر خدمات ارائه شده و همچنین طراحی سایت شما بصورتی باشد که مطابق با علاقه کاربران باشد، این مورد می تواند در مرحله سوم بسیار به شما کمک کند.
سایت خوب سایتی است که تجربه ای دلنشین به کاربران خود هدیه می دهد و بدین صورت هر کاربر خود به یک پایگاه تبلیغاتی برای شما تبدیل می شود.

در این مرحله داشتن ارتباط پیوسته با کاربران و دریافت انتقادات و پیشنهادات می تواند خیلی روی تجارت شما تاثیر گذار باشد.

شایان ذکر است که داشتن یک دامین کوتاه و به یاد ماندنی و زیبا تاثیر زیادی می تواند در سرعت جذب کاربر داشته باشد.

اشتباه نکنید ، کار تمام نشده است ، هیچوقت نباید به خدماتی که روی سایت خود ارائه می دهید راضی باشید و همیشه باید در پی توسعه خدمات و امکانات سایت خود با کمک نظرات دریافتی از کاربرانتان باشید ، در این بین می توانید ایده های خلاقانه خود را نیز بکار ببندید.

سایتی در چرخه رقابت می ماند که مرتب خدمات جدید ارائه دهد و مرتبا دسترسی به خدمات خود را سریع تر و آسان تر نماید.
در این بین می توان به ارائه نرم افزارهای اختصاصی برای گوشی های موبایل اشاره نمود که می تواند بسیار تاثیر گذار باشد.
مقالات آموزشی دانشجویی برنامه نویسی و الکترونیک و شبکه

پیشنهاد می کنم اگر ایده نابی در زمینه وب دارید ، همین امروز استارت کار خود را بزنید.
فردا ممکن است شخصی دیگر ایده شما را به سرانجام برساند.
موفق باشید

نوشته شده در تاریخ دوشنبه 6 بهمن 1393    | توسط: ح.م    | طبقه بندی: یادداشت های یک برنامه نویس خوش ذوق،     | نظرات()


جذاب ترین فونت ها برای وب سایت

جذابیت و زیبایی سایت یکی از مهم ترین عوامل موثر در جذب مشتری است.
در گذشته با استفاده از تصاویر ، رنگ ها و جلوه های بصری مانند گرادیانت های رنگی سایت هایی جذاب ایجاد می کردیم ولی امروزه سایت ها به سمت جذابیت در عین سادگی می روند
با وجود سبک هایی مانند بوت استرپ ، مشاهده می نماییم که دیگر خبری از باکس ها و کادر بندی های بین بخش های مختلف سایت نیست و با تغییر در بک گراند بخش های مختلف را از یکدیگر تفکیک می نمایند
امروزه فونت سهم بسیار زیادی در زیبایی وب سایت ها دارد، تا جایی که یک قالب ساده با کمک یک یا دو فونت مناسب بسیار زیباتر جلوه می کند.

در زیر تعدادی فونت عالی رو معرفی کرده ام:

نوشته شده در تاریخ یکشنبه 5 بهمن 1393    | توسط: ح.م    | طبقه بندی: آموزش طراحی وب و css،     | نظرات()


تفاوت پروژه یک میلیونی با پروژه 5 میلیونی !

خیلی از مشتریان سوال می پرسن که چرا شما 5 تومن می گیری ولی فلان شرکت با جوملا میزنه 1 تومن !؟

عمده تفاوت قیمت به مسئله کیفیت کار و خدمات پشتیبانی معطوف می گردد

بعنوان نمونه تفاوت کیفیت می توان به دو لینک زیر اشاره نمود:

یک فرم به ظاهر ساده در یک پروژه یک میلیونی :

 http://www.bahmanemployment.com/information.aspx

یک فرم به ظاهر ساده در یک پروژه 5 میلیونی :

http://fa.fanap.ir/node/add/resume

 

با مشاهده 2 نمونه بالا می توان فهمید که تا چه حد می توان روی یک فرم به ظاهر ساده کار کرد ...

حال همین مثال را می توان به کل صفحات پروژه بسط داد تا مشتری تفاوت را کاملا لمس نماید.

 در ادامه توضیحات تکمیلی جهت تکمیل بحث ارائه می گردد.

 

عوامل مهم موفقیت در راه اندازی یک کسب و کار مبتنی بر وب:

طبق تجربه بنده ، توی عرصه وب پول خوب بدست نمیاری مگر اینکه 3 اصل زیر رو داشته باشی :

 

1- ایده خوب

اگر ایده شما یک ایده تک باشه خوب خیلی عالیه ، ولی اگر تک هم نباشه می تونه ایده ای باشه که کامل شده ایده دیگران باشه

 

2- پیاده سازی صحیح و کامل ایده

ایده باید به نحوی پیاده سازی بشه که مشتری رو به خودش جذب کنه و مشتری باهاش راحت بتونه ارتباط برقرار کنه

در این بخض به مثال ابتدای مقاله می توان اشاره نمود

 

3- صرف وقت و هزینه

باید پشت ایدتون بمونین و روش وقت بذارید

تجربه ثابت کرده که خیلی از پروژه ها در همین مرحله متوقف میشن

نمونه عملیش سایت WhatsJob.ir است که حدود 3 ماه با تلاش یک تیم روش کار کردیم و ایده و پیاده سازیش عالی بود ولی بانیان پروژه پای ایدشون نموندند و بعد از حدود 9 ماه تازه دارن روش دیتا اینتری انجام میدن !

 

مقالات آموزشی دانشجویی برنامه نویسی و الکترونیک و شبکه

شاخص های مهم یک نرم افزار خوب:

 

·        تکنولوژی ساخت

·        معماری نرم افزار

·        امکان توسعه راحت و سریع در آینده

·        پشتیبانی مناسب (در صورت بروز خطا و یا نیاز به توسعه نرم افزار در آینده)

·        بومی بودن کامل نرم افزار جهت اطمینان از امنیت هسته نرم افزار

·        طراحی و پیاده سازی شده بصورت اختصاصی بر اساس نیاز کارفرما

·        میزان تحمل بار

·        میزان تحمل تعداد تراکنش در لحظه

·        طراحی کاربر پسند

·        امکانات مدیریتی ارائه شده در نرم افزار و میزان مدیریت بخش های مختلف سایت

·        امنیت کنترل پنل ها ، اطلاعات تراکنش ها و اطلاعات کاربران سایت

·        امکانات بکاپ گیری از اطلاعات

·        انواع گزارشات

·        سیستم ثبت و گزارش دهی لاگ

·        سیستم لاگ خطاهای نرم افزار

 

موفق باشید

نوشته شده در تاریخ شنبه 27 دی 1393    | توسط: ح.م    | طبقه بندی: آموزش ASP.NET، اطلاعیه های مدیریت سایت،     | نظرات()


نسخه بندی صحیح نرم افزار

نسخه بندی یک نرم افزار (از هر نوع) بخشی از یک پروژه است و این مورد زمانی که نیاز به نرم افزاری هست که در طول زمان گسترش میابد، بسیار اهمیت پیدا می کند.

روش ها و متدهای مختلفی برای نسخه  گذاری نرم افزارها ارائه شده است. در این بین روش Semantic Versioning که با نام اختصاری SemVer شناخته می شود در اکثر پروژه ها استفاده می شود (بطور مثال بیش از 90 درصد پروژه های موجود در گیت هاب از این روش برای نسخه بندی استفاده می کنند.)

ساختار SemVer به چه شکل است؟

SemVer شامل سه عدد به شکل x.y.z می باشد:

·        عدد x به معنای تغییرات گسترده در نرم افزار

·        عدد y به معنای تغییرات کوچک در نرم افزار

·        عدد z به معنای رفع اشکالات نرم افزار

در حقیقت نسخه نرم افزار به شکل Major.Minor.Patch می باشد.

نحوه کار SemVer به چه شکل است؟

بسیار ساده! بالا بردن عدد در بخش و زمان صحیح.

اگر اشکالاتی را در پروژه رفع کرده اید باید مقدار z را اضافه کنید.

اگر قابلیتی به پروژه اضافه کرده اید که با نسخه های قبلی سازگار است باید مقدار y را اضافه کنید (بدین معنی که بدون مشکلی می توان به نسخه جدید ارتقا داد.)

و در آخر اگر پروژه شما دارای تغییراتی گسترده است که ممکن است برخی API های موجود را پشتیبانی نکند و نیاز به صرف زمان و دقت بیشتری برای ارتقا هست، باید مقدار x را افزایش دهید.

چرا باید از این شیوه عدد گذاری استفاده کنیم؟

بدین دلیل که ساده و مشخص است و می توان به آن استناد کرد. بطور مثال بعد از تغییرات نسخه باید 4.2 باشد؟ یا 5؟ یا 4.1.1 ؟ و…

دلیل بعدی واضح بودن نسخه برای دیگران است. برای مثال با دیدن نسخه 1.3.37 از یک پروژه می توان دریافت که بعد از ارائه نسخه 1، سه نسخه برای افزودن قابلیت های جدید ارائه شده و در نسخه کنونی 37 نسخه برای رفع ایرادات ارائه شده است.

دلیل مهم دیگر مدیریت وابستگی است. فرض کنید پروژه ای دارید با نام felan  که برای اجرا نیازمند پروژه ای دیگر به نام bahman  است. پروژه bahman  در حال حاضر نسخه 2.3.7 را دارد. حالا شما می توانید با خیال راحت در صورت ارتقا bahman  آن را تا قبل از نسخه 3.0.0 ارتقا دهید و از امکانات و رفع اشکالات آینده آن استفاده نمائید.

نکاتی که باید توجه داشته باشید

در زیر نکاتی را مشاهده می کنید که باید در هنگام نسخه بندی پروژه در نظر داشته باشید:

شروع از نسخه 0.1.0

شروع پروژه از نسخه 0.1.0  است نه 0.0.1

قبل از ارائه نسخه 1.0.0  تنها برای زمان توسعه

چه زمانی نسخه 1.0.0  ارائه می شود؟ زمانی که پروژه شما برای استفاده توسط کاربر و مشتری آماده شده است. در حقیقت از نسخه 1.0.0  نرم افزار شما باید پایدار باشد.

نسخه های پیش از انتشار

در فرآیند توسعه زمان هایی هست که می خواهید قبل از ارائه آن به کاربر و مشتری توسط عده ای تست و ایرادیابی شود. برای این کار می توانید از نسخه های پیش از انتشار استفاده کنید.

خود مراحل پیش از انتشار شامل سه نوع هستند که به ترتیب از پایین به بالا عبارتند از alpha ( آلفا )، beta ( بتا ) و rc ( کاندیدای انتشار ). این سه عبارت بعد از نسخه مورد نظر اضافه می شوند. بطور مثال اولین نسخه آلفای 1.0.0 یک پروژه می شود 1.0.0-alpha.1 و نسخه بعدی 1.0.0-alpha.2 نام می گیرد.

همانطور که در بالا عنوان شد ترتیب آن ها مهم است یعنی بتا بعد از آلفا و کاندیدای انتشار بعد از آن دو قرار می گیرد و این یعنی نسخه 1.0.0-beta.1 بالاتر و جدید از نسخه 1.0.0-alpha.8 است.

سوالات متداول

در زیر سوالاتی که ممکن از در هنگام نسخه گذاری پروژه با آن مواجه شوید عنوان شده است. اگر سوال دیگر دارید می توانید در بخش نظرات همین نوشته بپرسید.

آیا باید برای هر رفع اشکال ویا افزودن قابلیت جدید باید نسخه ای جدید ارائه کرد؟

بایدی وجود ندارد و البته بهتر است به این شکل صورت نگیرد. شما می توانید بعد از 10 رفع ایراد یک عدد به مقدار z اضافه کرده و نسخه جدیدی را منتشر کنید. زمان انتشار بسته به خودتان و شرایط پروژه دارد.

آیا باید بعد از رسیدن به عدد 9 یک نسخه به عدد بالاتر اضافه کرد؟

خیر. نسخه برنامه شما می توانید چیزی شبیه به 1.3.17 و یا 2.14.1  باشد.
مقالات آموزشی دانشجویی برنامه نویسی و الکترونیک و شبکه


آیا حتما برای جدا کردن اعداد از نقطه و پیش از شروع عبارت نسخه های پیش از انتشار از -  استفاده کرد؟

بله. این روش استاندارد است و نحوه شماری گذاری نیز باید دقیقا به همین شکل باشد. این موضوع در برنامه های مدیریت وابستگی نظیر npm و bower بسیار اهمیت پیدا می کند و پیروی نکردن از آن باعث بروز مشکلات زیادی خواهد شد.

آیا نسخه برنامه باید حتما شامل 3 عدد باشد؟ بطور مثال برنامه من که در نسخه 1.1.0 است می تواند مختصرا با عبارت 1.1  شناخته شود؟

بله. عبارت باید حتما دارای 3 عدد باشد. شما در گفتگوهایتان می توانید از نسخه اختصاری گفته شده استفاده کنید!

نسخه پروژه من در حال حاضر 1.2.1  است و من تعدادی از ایرادات را برطرف و قابلیت هایی به آن اضافه کرده ام. نسخه بعدی من باید چه باشد؟

نسخه بعدی شما می شود 1.3.0

سخن آخر

اگر شما تاکنون از روش استانداردی برای نسخه گذاری پروژه خود استفاده نکردید بهتر است استفاده از آن را شروع کنید و آن را برای دیگر افراد تیمتان توضیح دهید.

نوشته شده در تاریخ سه شنبه 2 دی 1393    | توسط: ح.م    | طبقه بندی: اطلاعیه های مدیریت سایت،     | نظرات()