انتقال تجربیات در حوزه برنامه نویسی دات نت

سیستم مناسب تدوین

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

CPU

نرم افزار after effects به فرکانس بالا نیاز داره تا به core های بیشتر یکی از پیشنهاد های مناسب intel Core i7 7700K با یک فن خنک کننده مناسب هست. (فن رو باید جدا تهیه کنید)

RAM

RAM حداقل 32 گیگ (خداییش خیلی زیاده ما که کارمون برنامه نویسیه با یه سیستم ذغالی هم کارمون راه میوفته این بنده خداها چقدر باید هزینه کنن!!!) و ترجیحاً با فرکانس بالا. سراغ فرکانس های 2400 و پایین تر نرید از 3000 به بالا شروع کنید و از نوع DDR4 (فراموش نکنید که مادربردتون هم باید ساپورت کنه) اگه مادربرتون دو کاناله هست و چهارتا اسلات داره فعلا دوتا 16 گیگ دوکاناله بخرید تا بعدا هم بتونید دوتا 16 دیگه اضافه کنید.

Motherboard

ترجیاً ASUS باشه مثلا من z270 رو مناسب دیدیم. چون هم با CPU های نسل هفتم اینتل سازگاری داشت و هم 4 تا اسلات DDR4 با قابلیت پشتیبانی از 64 گیگ رم رو داشت. (دوکاناله)

HDD

یک هارد SSD برای درایو C و نصب ویندوز و after effects

یک هارد SSD با کیفیت بالاتر (مثل Samsung Evo 960) برای درایو D به عنوان Cache Time Line افترافکت. که از تنظیمات باید فعالش کنید.

یک هارد معمولی هم مثلا با ظرفیت 2 ترابایت برای ذخیره سازی و آرشیو کردن فایلهاتون.

در مورد SSD هم به نظرم سامسونگ خوبه. اگرم نمیخواید فعلا زیاد هزینه کنید همون یک عدد برای درایو C رو samsung Evo 960 با حجم ٥١٢ یا ٢٥٦ بگیرید

Graphic

بازهم فرکانس بالا بسیار موثره. ترجیحا از asus 1070 یا 1080 استفاده کنید. افترافکت هم برای مسائل زیر از کارت گرافیک استفاده میکنه:

  • Brightness & Contrast
  • Find Edges
  • Gaussian Blur
  • Glow
  • Hue/Saturation
  • Invert
  • Lumetri Color
  • Mosaic
  • Sharpen
  • Tint

البته هزینه بیشتر برای کارت گرافیک به معنی سرعت بالاتر در افترافکت نیست.



۱۹ تیر ۹۶ ، ۰۸:۴۰ ۰ نظر موافقین ۰ مخالفین ۰
احسان احسانی اطهر

آموزش Bundling and Minification


Bundling and Minification

دو تکنیکی هستند که در ASP.NET 4.5 میتوانید از آنها جهت بهبود زمان بارگذاری در وب سایت استفاده نمایید. این دو تکنیک باعث کاهش تعداد درخواست ها به سرور و همچنین کاهش حجم فایل ها (مانند CSS و JavaScript) میگردد.

Minification

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

ادامه مطلب...
۲۰ خرداد ۹۶ ، ۰۹:۵۰ ۰ نظر موافقین ۰ مخالفین ۰
احسان احسانی اطهر

نکات کاربردی در ویژوال استدیو

افزودن Bookmark:

اگر در حین نوشتن کد میخواهید قسمتی را مشخص کنید که در آینده دوباره به آنجا برگردید و آن قسمت را به یاد داشته باشید میتوانید از bookmark استفاده کنید:
Ctr + K + K (Press K Twice)
برای نمایش Bookmark ها :
Ctr + K + W (=> View > Bookmark Window)
با دوبار کلیک بر روی نام Bookmark به محل مورد نظر میروید. ضمنا با کلیک راست کردن روی نام Bookmark و انتخاب گزینه Rename میتوانید نام آن را تغییر دهید تا مدیریت بهتری رو آنها داشته باشید.

ادامه مطلب...
۱۷ خرداد ۹۶ ، ۰۹:۱۸ ۰ نظر موافقین ۰ مخالفین ۰
احسان احسانی اطهر

استفاده از Resharper

Ctr + T : جستجو در بین تمامی فایل ها و محتوای آنهای

Ctr + Shift + T : جستجوی فایل

ُShift + Alt + T : جستجو در کل یک Solution

, + Ctr : آخرین فایلهایی که باز بودند

, + Ctr + Shift : بازگشت به محل قبلی که در حال ادیت بودید

Ctr + Click : پنجره Navigate to

F12: با زدن F12 بر روی کلاسهای دات نت میتوان به Source آنها دسترسی پیدا کرد.

Alt + Enter : اصلاح خطا

Ctr + Shift + R: جهت Refactor کردن

روی Solution میتوان کلیک راست کرد و گزینه Refactor و سپس گزینه adjust name spaces را کلیک کرد تا تمامی namespace ها را اصلاح کند.

و یا remove unused references باعث حذف reference های اضافه بدون استفاده خواهد شد.

Ctr + Alt + Insert: جهت ساختن کلاس، اینترفیس، صفحه ،و ... بدون نیاز به کلیک راست کردن روی solution و انتخاب new item

Ctr + E + U: نوشتن بدنه برخی دستورات: مثل try..catch یا while و ...

Resharper همچنین از سایر framework ها مثل jQuery یا MVC پشتیبانی میکند. مثلا به راحتی در MVC میتوانید نام PartialView های موجود را مشاهده کنید و یا مثلا در jQuery میتوانید لیست عناصر صفحه را با توجه به id و یا css کلاس آنها مشاهده و به راحتی آیتم مورد نظر را انتخاب کنید:

$("#createmenu").

همچنین resharper امکانات خوبی در css به شما میدهد.

resharper را میتوان در پروژه های Unit test نیز استفاده کرد.


نکته: اگر برخی از دستورات بالا به درستی کار نکرد مراحل زیر را انجام دهید:

  1. Reset current keyboard configuration (Tools | Options | Environment | Keyboard | Reset).
  2. Go to ReSharper | Options | Environment | Keyboard & Menus | "Visual Studio" | Apply Scheme.
  3. Click Ctrl+T
  4. Choose "Use ReSharper command" in the opened popup(check "Apply to all ReSharper shortcuts")

اگر این روش جواب نداد از روش زیر استفاده کنید:


Setting to Resharper / Options / KeyBoard & Menus / None / Apply and Save

and then

Resharper / Options / KeyBoard & Menus / Set to Visual Studio / Apply and Save

۱۰ خرداد ۹۶ ، ۰۶:۵۰ ۰ نظر موافقین ۰ مخالفین ۰
احسان احسانی اطهر

استانداردهای کدنویسی و قواعد نام گذاری در سی شارپ

  • در نام گذاری کلاسها و متدها از روش PascalCasing استفاده میکنیم:
    public class ClientActivity
    {
        public void ClearStatistics()
        {
            //...
        }

        public void CalculateStatistics()
        {
            //...
        }
    }

    • برای نام گذاری آرگومان های ورودی توابع و همچنین متغیر های Local از camelCasing استفاده میکنیم:
    public class UserLog
    {
        public void Add(LogEvent logEvent)
        {
            int itemCount = logEvent.Items.Count;
            // ...
        }
    }
    
    ادامه مطلب...
    ۰۲ خرداد ۹۶ ، ۰۸:۱۳ ۰ نظر موافقین ۰ مخالفین ۰
    احسان احسانی اطهر

    مفهوم RESTful در Web API 2

    قبل از اینکه به توضیح این قسمت بپردازم لازم میدونم که دو مفهوم رو توضیح بدم : Loosely Coupled و Tightly Coupled

    تفاوت Loosely Coupled و Tightly Coupled

    1- Loosely-Coupled به معنای اتصال و وابستگی ضعیف دلالت دارد. یعنی Client به Server وابستگی ضعیفی دارد و با حداقل دانش از نیازمندی های سرور میتواند با سرور کار کند. (در ادامه مثال را بررسی کنید.)

    2- Tightly-Coupled به معنای اتصال و وابستگی قوی میباشد. و کلاینت جهت کار با سرور باید اطلاعات زیادی از سرور داشته باشد.

    یک مثال ساده در دنیای واقعی از اتصال ضعیف رو میتونید در مادربرد تصور کنید، که شکاف های اتصال RAM به صورت Loosely Coupled تعبیه شده است و کاربر به راحتی میتواند RAM مادربرد خود را تعویض کند اما مثلا خازن ها به صورت اتصال قوی یا همان Tightly Coupled طراحی شده است و کاربر نهایی به راحتی نمیتوان آن ها را تعویض کند.

    حال فرض کنید اگر تمامی قطعات در مادربرد به صورت اتصال قوی ساخته میشد برای تعویض RAM,CPU,Graphic Card و سایر قطعات میبایست کل مادربرد تعویض گردد.

    ادامه مطلب...
    ۲۴ ارديبهشت ۹۶ ، ۱۱:۴۵ ۰ نظر موافقین ۰ مخالفین ۰
    احسان احسانی اطهر

    تفاوت Javascript و jQuery و Node.js و AngulerJS و Ajax چیست؟

    مفاهیم پایه ای :


    Javascript

    زبان برنامه نویسی ای است که برای استفاده در Browser یا همان مرورگر طراحی شده است. (این زبان هیچ ربطی به زبان Java شرکت اوراکل ندارد و فقط تشابه اسمی است.)

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

    یک تکه کد ساده جاوا اسکریپت بدین شکل میباشد:

    <script> alert("hello world!"); </script>

    که باعث میشود یک پیغام به کاربر نمایش داده شود.


    Ajax

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

    Ajax مخفف Asynchronous JavaScript and xml میباشد اصطلاح آسنکرون اشاره دارد به این موضوع که وقتی درخواستی برای لود کردن قسمتی از سایت ارسال میشود مابقی صفحه به اصطلاح فریز نشده و منتظر پاسخ نمی ماند بلکه عمل لودینگ فقط در همان قسمت از صفحه اتفاق افتاده. (یک مثال واضح تر مثلا در صفحه محصولات سایت دیجی کالا هستید و از قسمت مرتب سازی گزینه قیمت را انتخاب میکنید تا محصولات بر اساس قیمت مرتب شوند در این جا مشاهده میکنید که کل سایت رفرش نمیشود بلکه فقط همان قسمتی که لیست محصولات را نمایش میدهد لحظه ای کمرنگ تر شده و دوباره اطلاعات نمایش داده میشود.)

    برای ارسال یا دریافت اطلاعات در Ajax از xml و یا JSON استفاده میشود.


    jQuery

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


    AngularJS

    AngularJS فریم ورک MVC برای جاوا اسکریپت میباشد که توسط گوگل ساخته شد و روش هایی را مهیا میکند تا به سادگی و به سرعت بتوان وب سایت های Single-Page را طراحی کرد.


    Node.js

    تا قبل از Node.js برنامه نویسان مجبور بودند دو زبان برنامه نویسی را یاد بگیرند یکی برای سمت سرور (backend) مانند asp یا php و دیگری سمت کلاینت یا (frontend) مانند جاوااسکریپت. اما بوسیله Node.js برنامه نویسان میتوانند از javascript به همان خوبی که سمت کلاینت استفاده میکردند سمت سرور هم استفاده کنند. در واقع با یادگیری یک زبان برنامه نویسی میتوان هم سمت کلاینت و هم سمت سرور برنامه نویسی کرد.

    ۳۰ آذر ۹۵ ، ۱۱:۱۹ ۰ نظر موافقین ۰ مخالفین ۰
    احسان احسانی اطهر

    جلسه اول: چه چیزی در وب فرم اشتباه بود؟

    ایراد های اساسی Asp.Net WebForm چیست؟

    1- View State: در وب فرم برای حفظ وضعیت جاری فرم از View State استفاده میشود. مثلا وقتی کاربر مقادیر یک فرم ورود اطلاعات را وارد میکند این فرم پس از ارسال به سرور و بازگشت به سمت کاربر همچنان اطلاعات ورودی را حفظ کرده یعنی مقادیر تکست باکس ها و سایر عناصر خالی نمیشود این اتفاق به صورت پیش فرض فعال است و در سمت کلاینت ذخیره میشود. حالا فرض کنید حجم این داده ها بسیار زیاد باشد و فرایند رفت و برگشت به سرور هم چندین بار اتفاق بیوفتد که این امر سبب کندی زیادی خواهد شد.


    2- Page Life Cycle: فرایند اتصال Event های سمت کلاینت به Event Handler های سمت سرور پیچیده میباشد. و برای این کار باید یک بار چرخه حیات یک صفحه دوباره اتفاق بیوفتد.


    3- احساس کاذب در جداسازی مفاهیم!: asp.net web form code behind مفهومی را ارائه کرد که طی آن کدها و منطق برنامه از کدهای html جداسازی شوند که در واقع اتفاق بسیار خوبی بود تا Logic و presentation از هم جداشوند اما با گذشت زمان برنامه نویسان علاقه داشتند از سمت سرور تغییراتی سمت کلاینت داشته باشند مثلا فرض کنید در سمت کد میخواهید تغییراتی روی یک TextBox و یا حتی Div داشته باشید.


    4- کنترل محدود روی عناصر HTML : کنترل های سرور پس از بررسی یک درخواست و کامپایل شدن دستورات به html تبدیل میشوند و نتیجه کار با چیزی که خودتان نوشته اید متفاوت است. مثلا یک textbox به input تبدیل میشود و ID متفاوت با آن چیزی که شما داده ای میگیرد(هرچند که میتوان این مشکل را برطرف کرد) در نتیجه کنترل شما روی عناصر خروجی خصوصا برای کار با JavaScript کاهش پیدا میکند. ضمناً همین فرایند تبدیل کنترل های سمت سرور به html نیز میتواند سرباری را برای سیستم به وجود بیاورد.


    5- تستینگ ضعیف: از آنجایی که عناصر وب فرم و کدهای آن به صورت اتصال قوی (Tightly Coupled) میباشد این انتظار نمیرود که بتوان تست های اتوماتیک روی پروژه انجام داد.


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


    ۱۹ آذر ۹۵ ، ۱۲:۱۷ ۰ نظر موافقین ۰ مخالفین ۰
    احسان احسانی اطهر

    مقدمه آموزش سریع و کاربردی MVC

    سلام خدمت همه دوستان

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

    این سری از آموزش ها مناسب افرادی است که از قبل وب فرم کار کردند و با مفاهیم اصلی ASP.NET آشنایی دارند.

    بزرگترین تغییر MVC نسبت به ASP.NET چیست؟

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

    اگه بخوام خیلی ساده بگم بزرگترین تغییر اینه که در MVC برخلاف WebForm کاربر مستقیما یک صفحه را صدا نمیزند بلکه یک مفهوم را در سمت سرور صدا میزند(فرض کنید یک متد را صدا میزنیم) و آن متد مشخص میکند چه چیزی به سمت کاربر برگردد.

     همانطور که به یاد دارید در ASP.NET WebForm یک صفحه با پسوند aspx داشتیم که تمام کدها در فایل cs این صفحه و کدهای مربوط به ظاهر هم در همین صفحه aspx قرار میگرفت. یعنی خیلی راحت یک صفحه جدید اضافه میکردیم یک دکمه از ToolBox میکشیدیم و می انداختیم روی صفحه کمی ظاهر فرم را درست میکردیم و اگر نیاز بود بین قسمت های Design و Source سوییچ میکردیم تا ظاهر فرم را درست کنیم و در نهایت روی دکمه دوبار کلیک میکردیم تا به قسمت Code برویم و کدهای مورد نظر را همانجا مینوشتیم.

    در نهایت هم برای دیدن آن صفحه کافی بود در انتهای نام آدرس سایتمان آدرس آن صفحه مثلا test.aspx نوشته میشد تا آن صفحه نمایش داده میشد.

    www.MySite.com/test.aspx

    اما در MVC روند کار به صورت خیلی خلاصه به این صورت است:

    شما به جای اینکه در انتهای نام ساییتان آدرس یک صفحه را بنویسید فقط نام یک متد (اکشن) را مینویسید مثلا:

    www.MySite.com/Method1

    درون این Method1 هم یک سری کدهای سمت سرور (سی شارپ یا وی بی) قرار دارد که شما نوشته اید.

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

    به همین سادگی! به این متدهایی که شما مینویسید و از بیرون صدا زده میشوند کنترلر گفته میشود حرف C در MVC برای همین Controller میباشد.

    اصلا نترسید! این کنترلر ها کلاس های ساده ای هستند که به راحتی ایجاد میشوند و در فولدر Controller یک پروژه MVC قرار میگیرند. (مثلا با پسوند cs برای پروژه های سی شارپ)

    پس در واقع کنترلر شبیه یک واسطه ای بین سرور و مشتریان است.

    پس کدهای HTML کجا قرار دارند!

    کد های HTML درون صفحاتی با پسوند cshtml قرار دارند و این صفحات در فولدر View ذخیره میگردد. این صفحات همان صفحاتی هستند که قرار است در صورت نیاز برای درخواست کنندگان به عنوان خروجی ارسال شود. پس حالا متوجه شدید که کلمه V در MVC به همین View اشاره میکند.

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

    درباره مدل هم در قسمت های بعدی توضیح خواهم داد.



    ۱۷ آذر ۹۵ ، ۱۵:۰۱ ۰ نظر موافقین ۰ مخالفین ۰
    احسان احسانی اطهر

    مشاهده دستورات SQL تولید شده LINQ

    برای اینکه دستورات sql نهایی تولید شده توسط LINQ را مشاهده کنیم کافیست در انتهای دستورات ToString قرار دهیم. مثلا:

    var x = db.People.Where(p => p.ID == 1).ToString();
    ۲۷ مهر ۹۵ ، ۱۲:۴۷ ۰ نظر موافقین ۰ مخالفین ۰
    احسان احسانی اطهر