ably ably برای هدایت شدن به سایت جدید اینجا کلیک کنید

آموزش برنامه نویسی

آموزش برنامه نویسی وب، اندروید، ویندوز , اسکیوال و...
Tell: 0912 097 5516
| Email: Hello@EduOnline.ir

۷۹ مطلب با کلمه‌ی کلیدی «برنامه نویسی» ثبت شده است

الگوهای برنامه نویسی

بسم الله الرحمن الرحیم

بخش پنجم

الگوهای برنامه نویسی

الگوی Factory

شاید با مفهوم (OCP (Open Close Principle آشنا باشید، OCP یکی از اصول اساسی طراحی سیستم های شی گرا می باشد که بسیاری از ما این اصل را رعایت نمی کنیم. OCP بیانگر این مفهوم می باشد که کدهای  شما باید در برابر تغییر (modification) بسته و در برابر توسعه (extension) باز باشد.

اگر این مفهوم را نمی دانستیم و  رعایت نمی کردیم، از امروز سعی کنیم هنگامی که کد نویسی می کنیم، کد خود را بررسی کنیم که آیا OCP را رعایت می کند و یا خیر، رعایت کردن OCP و قوانین کار چندان پیچیده ای نیست.

یکی از الگوهای طراحی (Design Pattern) که این اصل رعایت کرده، الگوی Factory می باشد. همانطور که در آموزش های قبلی هم گفته شد این الگو جز الگوهای ایجاد اشیا می باشد، از طریق لینک زیر می توانید این مباحث را مطالعه کنید.

آموزش Design Pattern

همانطور که می دانید کلمه Factory به معنای کارخانه است، در این روش کدهای مانند یک کارخانه عمل می کنند، کارخانه ای که وابسته به نیاز مشتری محصولی را در اختیار او می گذارد و ساخت شی محصول را به کلاس­های پایین تر می سپارد و از آوردن کلمه new  در کلاس مشتری خودداری می کند.

مثل همیشه سعی می کنیم مباحث را در قالب یک مثال بیان کنیم.

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

شکل بالا نشان دهنده ارتباط بین 3 کلاس با کلاس Shape است، می خواهیم با ارتباط بین این 4 کلاس یک Simple Factory ایجاد کنیم. ابتدا یک interface به شکل زیر ایجاد می کنیم:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Factory
{
    public interface Ishape
    {
        void Draw();
    }
}

حالا کلاس Circle را به صورت زیر پیاده سازی می کنیم:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Factory
{
    class Circle:Ishape
    {
        public void Draw()
        {
            Console.WriteLine("Draw one Circle");
        }
    }
}

ادامه مطلب...

آموزش برنامه نویسی

بسم الله الرحمن الرحیم

آموزش خطایابی در visual studio

آموزش برنامه نویسی

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

بخش دوم

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

مثال، کد ما به صورت زیر می باشد:

int i = 0;
while (i<50)
{
    button_Debug.Text = (i++).ToString();
}

 

در کد بالا ما انتظار داریم، متن Button ما در آخرین بار 50 باشد اما متاسفانه 49 است، طبیعتا اگر کد خود را به صورت زیر تغییر دهیم، این مشکل حل خواهد شد. اما تصور کنید علت این خطا را نمی دانیم معمولا در چنین شرایطی ما بر روی خط مورد نظر خود Break Point قرار می دهیم، ما نیز این کار را انجام می دهیم. سپس برنامه را اجرا می کنیم تا آن را تست کنیم.

 

آموزش برنامه نویسی

 

طبیعتا در هنگام اجرای برنامه باید 48 بار کلید F5 را برای continue شدن فرایند Debug بزنیم. تصور کنید این حلقه 1000 مرتبه قرار بود تکرار شود و شما در آخرین مرتبه ی تکرار نیاز داشتید کد خود را بررسی کنید.

مطمئنا همه ی ما در کد های واقعی با چنین شرایطی روبرو شده ایم و می شویم. راه حل چیست؟

 آموزش visual studio 2015

یکی از ویژگی های Visual Studio امکانات مربوط به Debug کردن برنامه ها و Break Point می باشد این امکانات Visual Studio در صورتی که به صورت صحیح مورد استفاده قرار گیرد، بسیار کمک کننده خواهد بود. در اینجا می خواهیم امکانات مربوط به Break Point را در Visual Studio به شما معرفی کنیم.

بر روی خطی که Break point ایجاد کرده اید راست کلیک کنید.

 

 آموزش برنامه نویسی

 

زیر منوهای Break Point را با هم بررسی خواهیم کرد.

مورد اول و دوم که مشخصا برای حذف و غیر فعال کردن Break point به کار می رود.

ادامه مطلب...

حذف تمام پروسیجر ها

بسم الله الرحمن الرحیم

حذف کردن تمامی پروسیجر ها

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

 برای حذف تمامی پروسیجر های موجود در یک پایگاه داده کافی است که کد زیر را اجرا کنید تا تمامی پروسیجر های شما

حذف شوند.می توان این دستور را به صورت یک پروسیجر ذخیره کنید تا در مواقع نیاز از آن استفاده کنید و در نهایت کد ما

به این صورت می شود.

 

ادامه مطلب...

آموزش auto complete در asp.net mvc

بسم الله الرحمن الرحیم

آموزش auto complete text در asp.net mvc


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

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

آموزش full text search در asp.net mvc


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

آموزش auto complete

ادامه مطلب...

تغییر عناصر یک DropDown با jQuery

بسم الله الرحمن الرحیم

ممکن است شما نیاز داشته باشید، برخی از عناصر یک Drop Down را با استفاده jQuery حذف و یا Hidden کنید برای این کار می توانید به صورت زیر عمل کنید:

<html>
<head>
    <script src="https://code.jquery.com/jquery-1.11.3.min.js"></script>
</head>
<body>
    <select id="MyDropDown">
        <option value="1">Ably.ir</option>
        <option value="2">__________________ ABLY ____________</option>
        <option value="3">yahoo.com</option>
        <option value="2">google.com</option>
    </select>

    <button type="button" onclick="HiddenOptionInDropDown(2)">Hidden Secound Item</button>


    <script>  
        function HiddenOptionInDropDown(id) {
            $("#MyDropDown option").css("display", "block"); // show all hidden option
            $("#MyDropDown option[value='" + id + "']").css("display", "none"); // hidden current option
        }
    </script>
</body>

</html>

در کد بالا ما توسط یک button دومین عنصر Drop Down را مخفی می کنیم.

ادامه مطلب...

احراز هویت بدون پسورد در ASP Identity

بسم الله الرحمن الرحیم

نحوه لاگین کردن یک کاربر بدون داشتن کلمه عبور در  ASP Identity

ASP.NET Identity دارای توابع و قابلیت های بسیار زیادی می باشد، یکی از این قابلیت ها اجازه Login کردن بدون داشتن پسورد می باشد.

در تمامی پروژه ها معمولا نیاز است تا مدیر اصلی سیستم بتواند با یک کاربر Login کند، یکی از بهترین روش های ممکن برای انجام اینکار اضافه کردن یک Button در بخش مورد نیاز و اضافه کردن کد زیر برای انجام عملیات احراز هویت و Login کردن بدون دسترسی به پسورد فرد می باشد.

ابتدا یک پراپرتی از ApplicationSignInManager به صورت زیر ایجاد می کنیم تا بتوانم به متدهای ASP.Identity دسترسی داشته باشیم.


   private ApplicationSignInManager _signInManager;

        public ApplicationSignInManager SignInManager
        {
            get
            {
                return _signInManager ?? HttpContext.GetOwinContext().Get<ApplicationSignInManager>();
            }
            private set { _signInManager = value; }
        }

ادامه مطلب...

مسیریابی (Routing) در ASP.NET MVC

بسم الله الرحمن الرحیم

مشخص کردن area پیش فرض در asp.net mvc

ممکن است شما بخواهید در پروژه asp.net mvc خود یکی از area ها را به صورت پیش فرض معرفی کنید تا کاربران نیاز نداشته باشند نام آن area را در آدرس خود ذکر کنند برای این کار می بایست از کد زیر استفاده کنید

 routes.MapRoute(
               name: "Default",
               url: "{controller}/{action}/{id}",
               defaults: new { controller = "Homepage", action = "Index", id = UrlParameter.Optional } //, namespaces: new string[] { "ContentManagmentMVC.Areas.Frontend.Controllers" }
           ).DataTokens.Add("area", "MyArea");

این خط کد را باید در پوشه App_Start خود و سپس در فایل RouteConfig قرار دهید.

ادامه مطلب...

خطای Cannot open user default database

بسم الله الرحمن الرحیم

برطرف کردن خطای Cannot open user default database

هر User در SQL Server یک Database Default دارد، شما می توانید Database پیش فرض یک User را از طریق بخش Security زیر منو Logins برای User خود مشخص کنید. در تصویر زیر ما بر روی کاربر Sa دابل کلیک کرده ایم.




همانطور که در تصویر بالا مشاهده می کنید، در اینجا پایگاه داده پیش فرض کاربر ما Master می باشد.
اگر شما به هر دلیلی پایگاه داده پیش فرض یک User را حذف کنید، خطای زیر اتفاق خواهد افتاد.

خطای Cannot open user default database

حال اگر شما تنها یک کاربر برای SQL Server خود داشته باشید و پایگاه داده پیش فرض این کاربر را حذف کنید، طبیعتا دیگر نمی توانید به Instance مربوطه Login کنید.
در این شرایط راه حل اول نصب یک Instance جدید برای SQL Server  است، در این شرایط طبیعتا دیگر به سایر دیتابیس های Instance قبلی دسترسی نخواهید داشت!

راه حل دوم تغییر پایگاه داده پبش فرض یک User توسط SQL Command می باشد.

ادامه مطلب...

چند تا اصطلاح

بسم الله الرحمن الرحیم

شاید دانستن این مطلب برای همه ما یک تکرار خوب باشد!. هر شرکتی و هر گروهی که بخواهند یک نرم افزار و یا محصول نرم افزاری را طراحی کنند نیاز به یک SDK خواهند داشته که می توانند بر اساس آن نرم افزار خود را طراحی کنند مثلا NET. ، پس از انتخاب SDK خود باید یک محیط برای برنامه نویسی انتخاب کنید که به آن IDE می گویند مثلا Visual Studio 2012

در این میان اتفاقات زیادی خواهد افتاد که IT Life cycle گفته می شود، که معمولا همان روش های مهندسی نرم افزار برای توسعه و طراحی یک سیستم است.

در نهایت سیستم شما یک روز رونمایی می شود به نسخه ای که هنوز در حال تست بر روی جامعه آماری واقعی هستید نسخه RC می گویند، پس از این تست نسخه نهایی نرم افزار شما معرفی و آماده فروش می شود که به این نسخه RTM گفته می شود.

 طبیعتا این مطالب ساده هستند اما گاهی اوقات دانستن چند نکته ساده باعث می شود شما بهتر بتوانید کار خود را بانجام رسانید.


SDK = Software Development Kit

IDE =  integrated development environment

RC  = release candidate (beta version)

RTM = release to manufacturing

برطرف کردن مشکل LINQ to Entities does not recognize

بسم الله الرحمن الرحیم

Server Error in '/' Application.


LINQ to Entities does not recognize the method 'EduOnline' method, and this method cannot be translated into a store expression.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

این خطا زمانی رخ می دهد که شما می خواهید یک دستور مشابه دستور زیر اجرا کنید:

db.Accounts.Where(m => m.AccountType == Enum.AccountTypes.Admin

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

db.Accounts.Where(m => m.AccountType == (int)Enum.AccountTypes.Admin)

در اینجا شما با تبدیل عبارت خود به یک به عبارت قابل مقایسه برای LINQ این مشکل را حل کرده اید

تعیین یک Button به عنوان DefaultButton در MVC

بسم الله الرحمن الرحیم

تعیین یک Button به عنوان DefaultButton در MVC

در MVC  برای اینکه شما یک Button را به عنوان Button  پیش فرض قرار دهید و در صورتی که کاربر دکمه Enter کیبورد را زد آن Button را فراخوانی کنید کافی است به صورت زیر عمل کنید.

<script type="text/javascript"> 
$(document).ready(function (){
$("#MyForm").keypress(function (e) {
kCode = e.keyCode || e.charCode /*for cross browser */
if (kCode == 13) { var defaultbtn = $(this).attr("DefaultButton");
$("#" + defaultbtn).click();
return false;
}
});
});
</script>
@using (Html.BeginForm("Index", "Home", FormMethod.Post, new { DefaultButton = "SubmitButton", id = "MyForm" }))
{
@Html.TextBox("txtname")
<span>Please Enter value and then press Enter Key</span><br />
<input type="submit" name="btnSubmit" id="SubmitButton" value="Submit" />
}

آدرس دهی در HTML

بسم الله الرحمن الرحیم

در طراحی وب و HTML  ما چندین نوع روش آدرس دهی به فایل ها و مسیر ها داریم

آدرس دهی نسبی

<img src="../../Images/file.jpg" />

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

آدرس دهی مطلق

<img src="http:www.EduOnline.ir/content/theme/Images/file.jpg" />

در این روش ما بر اساس ریشه اصلی و نام سایت شروع به آدرس دهی می کنیم که تکنولوژی ASP.NET , MVC  نیز به همین روش در انجین های سمت  View  خود آدرس دهی می کنند مانند زیر

<asp:image ImageUrl="~/content/theme/Images/file.jpg" />

 علامت ~ به معنای این است که باید از ریشه وب سایت جستجو برای یافتن فولدر Content انجام شود

ادامه مطلب...

طراحی یک قالب ایمیل

بسم الله الرحمن الرحیم

طراحی یک قالب ایمیل

در ابتدا یک صفحه html  ایجاد نمایید و سپس در قسمت head  صفحه مورد نظر کدهای زیر را قرار دهید

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <title>Demystifying Email Design</title>
  <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
</head>
</html>

حال برای طراحی بدنه و قسمت محتوای خود می توانید به صورت زیر عمل کنید

ادامه مطلب...

نحوه نمایش تگ های HTML در یک فایل HTML

بسم الله الرحمن الرحیم

استفاده از تگ <pre>

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

برای این کار کافی است به صورت زیر کد های خود را در سایتتان قرار دهید

<xmp id="snippet-container">
<div>
    <div>this is an example div &amp; holds an xmp tag:<br />
        <xmp>
<html><head>  <!-- indentation col 0!! -->
    <title>My Title</title>
</head><body>
    <p>hello world !!</p>
</body></html>
        &lt;/xmp>  <!-- note this encoded/escaped tag -->
    </div>
    This line is also part of the snippet
</div>
</xmp>

ادامه مطلب...

میزان استفاده از زبان های مختلف در دنیا

بسم الله الرحمن الرحیم

زبان های برنامه نویسی

تصویر زیر بیان گر میزان استفاده از زبان های مختلف در دنیا می باشد.

اگر به این تصویر دقت نمایید:

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

اما تکنولوژی ASP.NET در این میان دقیقا در وسط قرار دارد یعنی هم از لحاظ تعداد برنامه نویسان و هم از لحاظ استفاده در پروژه های بزرگ در میانه قرار دارد.

ادامه مطلب...

خطای undefined

بسم الله الرحمن الرحیم

خطای undefined

<script>
        $(document).ready(function () {
            $("#login").click(function () {

           
                var username = $("#username").val();
                var password = $("#password").val();
              
                alert(username);
               
        });
});
</script>

در پنجره alert پیغام زیر نمایش داده می شود.

undefined

1) فایل jquery را در ابتدای head قراردهید نه انتهای body

2) Id  کنترل ها را چک کنید

<input name="username" id="username" type="text" class="input username" placeholder="Username" />
<input name="password" id="password" type="password" class="input password" placeholder="Password" />

System.IO.FileNotFoundException: Could not load file or assembly

بسم الله الرحمن الرحیم

خطای System.IO.FileNotFoundException: Could not load file or assembly

اگر از Visual Studio 2012 یا 2013 استفاده می کنید ممکن است در اجرای دستور

Enable-Migrations

یا

update-database

با خطای زیر موجه شوید

ادامه مطلب...

تغییر Layout.cshtml_

بسم الله الرحمن الرحیم

آموزش asp.net mvc

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

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>@ViewBag.Title - My ASP.NET MVC Application</title>
        <link href="~/favicon.ico" rel="shortcut icon" type="image/x-icon" />
        <meta name="viewport" content="width=device-width" />
        @Styles.Render("~/Content/css")
        @Scripts.Render("~/bundles/modernizr")
        <script src="~/Temporary/jquery-1.8.2.js"></script>
    </head>
    <body>
        <header>
            <div class="content-wrapper">
                <div class="float-left">
                    <p class="site-title">@Html.ActionLink("your logo here", "Index", "Home")</p>
                </div>
                <div class="float-right">
                    <section id="login">
                        @Html.Partial("_LoginPartial")
                    </section>
                    <nav>
                        <ul id="menu">
                            <li>@Html.ActionLink("Home", "Index", "Home")</li>
                            <li>@Html.ActionLink("About", "About", "Home")</li>
                            <li>@Html.ActionLink("Contact", "Contact", "Home")</li>
                        </ul>
                    </nav>
                </div>
            </div>
        </header>
        <div id="body">
            @RenderSection("featured", required: false)
            <section class="content-wrapper main-content clear-fix">
                @RenderBody()
            </section>
        </div>
        <footer>
            <div class="content-wrapper">
                <div class="float-left">
                    <p>&copy; @DateTime.Now.Year - My ASP.NET MVC Application</p>
                </div>
            </div>
        </footer>

        @Scripts.Render("~/bundles/jquery")
        @RenderSection("scripts", required: false)
    </body>
</html>

این قالب یک Layout است که در پروژه MVC با نوع  Internet ایجاد شده است ترجیحا برای اینکه به مشکل برنخورید بهتر است تغییراتی را در آن ایجاد کنید

مثال:

ممکن است شما یک تابع jquery یا javascript  داشته باشید که در پروژه MVC شما کار نمی کند در صورتی که تابع شما صحیح است مثلا مثل تابع زیر

 <script>
        $(document).ready(function () {
            $("#TestButton").click(function () {

                alert("Huge Code :)");

    });
        });</script>

خوب اگر این کد اجرا نشود پس یک جای کار مشکل دارد!!!

برای اجرا شدن این چنین کد های سنگینی :) بهتر است که Layout پیش فرض را کمی تغییر دهید. برای اجرا شدن این کد کافی است که فقط دستور زیر را که در پایین ترین خط body  نوشته شده است به میان دستورات Head انتقال دهید

@Scripts.Render("~/bundles/jquery")

مشکلات NET 4.5.

بسم الله الرحمن الرحیم

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

حال که مایکروسافت NET 4.5 خود را عرضه کرده است، ترجیحا تا stable شدن آن بهتر است از آن استفاده نکنید

چند مشکل ساده:

بجای اسیکوال کانکشن همیشگی می بایست چند property دیگر را set کنید که ممکن چندین ساعت وقت شما را بگیرد!!!

برای Run شدن پروژه همیشه یک سری dll در پوشه bin وجود دارند که فراخوانی می شوند متسفانه در اینجا هم اگر NET 4.5 استفاده کنید به مشکل برخواهید خرد

مشکل آخر :

شاید اگر از NET 4 استفاده کنید برای نصب Package ها و compatiable کردن آنها چند ساعت بگذارید!! که باز هم زیاد خواهد بود اما برای همان کار با NET 4.5 شاید چند روز :(

ساخت یک پروژه MVC

بسم الله الرحمن الرحیم

ساخت یک پروژه MVC

بهترین نسخه برای ایجاد پروژه در حال حاضر نسخه MVC 4 می باشد که بهتر است به صورت زیر ایجاد شود

1- MVC 4

2- NET 4 (در مورد معایب  4.5 NET توضحاتی در این بخش ارائه کردم )

3- EF 5 (در مورد معایب EF 6 توضحاتی در این بخش ارائه کردم )

4- نوع پروژه را Internet انتخاب کنید به دلیل نصب شدن یک سری از Package ها به صورت پیش فرض

up
ما را در گوگل محبوب کنید