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

۲۱ بازديد
Delegate در زبان برنامه‌نویسی #C همانند اشاره‌گر‌ها در توابع C و ++C است. یک delegate معرف یک متغییر نوع مرجع (Reference Type Variable) بوده که ارجاع به یک متد را در خود ذخیره می‌کند و این ارجاع در طی اجرای برنامه ممکن است تغییر کند.
از نظر نوع دقیقا مشابه interfaceها است. Delegateها به خصوص برای پیاده‌سازی Eventها و متدهای call-back (بازگشتی) بسیار مفید می‌باشند. تمام delegateها به صورت implicit از کلاس System.Delegate مشتق شده‌اند. ممکن است این سوال برای شما پیش بیاید که چرا نیاز داریم که یک ارجاع به یک متد داشته باشیم؟ در پاسخ به این سوال باید بگوییم که با استفاده از این کار حداکثر انعطاف‌پذیری برای اجرای هرگونه عملکردی را در زمان اجرا بدست می‌آورید.


مزایای استفاده از delegateها

۱) یک نماینده یا delegate به نوع static (بدون ساخت شیء) یا nonStatic (همراه با ساخت شیء) توجهی نمی‌کند.
۲) مدیریت کردن عملیات‌ها و اجرای هر یک از آنها هنگام بروز یک رویداد مشخص
 


تعریف Delegate

تعریف کردن Delegate باید دقت کرد که نوع متد مورد نظر ما باید با نوع Delegate ما مطابقت داشته باشد. یعنی اگر Signature متد ما از نوع int باشد باید Delegate ما نیز از نوع int تعریف شود. برای مثال، Delegate زیر را در نظر بگیرید :

 

 ;(public delegate int MyDelegate (string s



نمونه سازی Delegate ها

وقتی که یک Delegate تعریف میشود، یک از آن نیز باید توسط کلمه کلیدی new ایجاد شود و نام متد مورد نظر ما به عنوان پارامتر به آن داده شود. توجه داشته باشید که در این قسمت نباید متد را با پرانتز یا آرگومان به Delegate پاس بدهید. مثال زیر را ببینید:

 ;(public delegate void printString(string s

...

 ;(printString ps1 = new printString(WriteToScreen

 ;(printString ps2 = new printString(WriteToFile





Delegate ها دارای ویژگی های زیر می باشند:

1. delegate ها در C# مشابه pointer ها در C++ هستند اما بر خلاف آن ها TYPE SAFE بوده و کاربر را مستقیما با خانه های حافظه درگیر نمی کنند. به عبارت دیگر از رخداد خطاهای مربوط به نوع داده ای در برنامه جلوگیری می کند.

2. در این قسمت از آموزش C#توسط Delegate ها به توابع این امکان را می دهند تا خود به عنوان پارامتر به توابع دیگر فرستاده شوند.

3. می توان با استفاده از delegate ها، متدهای بازفراخوان یا callback تعریف کرد.

4. delegate ها را می توان به صورت زنجیره ای و پشت سرهم فراخوانی کرد. برای مثال چندین متد به هنگام اتفاق افتادن یک event یا رخداد صدا خورده شوند.

5. لزومی ندارد متدها و delegate ها از لحاظ نوع پارامتر ورودی، ترتیب و تعداد آن ها (signature) با هم برابر باشند.

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

7. یکی از ویژگی های جالب توجه و کاربردی delegate ها این است که برایشان اهمیت ندارد که آبجکتی که به آن اشاره می کنند، از جنس کدام کلاس می باشد. کافی است نوع آرگومان های ورودی و خروجی آبجکت مورد نظر با آرگومان های ورودی و خروجی delegate منطبق باشند. این قابلیت سبب فراخوانی آسان کد anonymous (توابع بی نام یا anonymous) می شود.

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

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

۴ بازديد

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

 

Docker and Kubernetes

 من معتقدم که هر برنامه‌نویس، مهندس نرم افزار، دانشمند داده و حتی مدیر پروژه باید درباره کانتینرها و ابزارهایی مانند Docker و Kubernetes بداند.

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

با کمک Docker می‌توانید به سرعت، برنامه خود را با تمام dependency ‌های آن توسعه دهید، همچنین امکان ایزوله‌سازی پردازش را هم برای شما فراهم می‌کند. به همین ترتیب، Kubernetes هم یک ارکستراتور است، آن را به سطح بعدی می برد و می تواند کانتینرها را برای شما مدیریت کند.

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

 

پلتفرم‌های ابری (AWS ، GCP یا Azure)

جدای از کانتینرها، Cloud چیز دیگری است که من فکر می‌کنم هر توسعه‌دهنده نرم‌افزار و دانشمند داده، باید در سال ۲۰۲۰ یاد بگیرند. شرکت‌ها درهرسایز و دامنه‌ای اکنون برای صرفه‌جویی در هزینه و مقیاس پذیری بهتر محیط‌های خود را به Cloud تغییر می‌دهند ، این بدان معنی است که دیر یا زود، شما باید با برنامه‌های بومی cloud کار کنید.

یادگیری پلتفرم‌های Cloud، مانندPlatform (GCP)، Amazon Web Service (AWS) ،Google Cloud  یا Microsoft Azure شما را یک قدم جلوتر از رقبای خود قرار می‌دهد. البته شما نیازی به یادگیری همه‌ی آن‌ها ندارید و یادگیری یکی نشان دهنده تسلط شما بر پلتفرم های ابری است و در آینده اگر نیاز به دیگر پلتفرم ها داشته باشید به راحتی می توانید آموزش ببینید.

برای شروع، پیشنهاد می‌کنم AWS را بیاموزید زیرا محبوب‌ترین و بالغ‌ترین پلتفرم ابری است و تقاضای زیادی برای توسعه‌دهندگان و مدیران‌سیستم با دانش AWS وجود دارد.

 

ساختار داده و الگوریتم

برای برنامه نویس شدن باید ساختار داده‌ها و الگوریتم‌ها را به خوبی بدانید. هیچ راه فراری هم نیست. این‌ها یکی از مباحث مهم هر مصاحبه شغلی برنامه نویسی هستند و بدون آگاهی از ساختار داده‌های اصلی مانند یک آرایه، linked list ،map ،set، نوشتن یک برنامه در دنیای واقعی امکان پذیر نیست.

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

 

ابزار کنترل ورژن (Git)

از سورس کنترل برای ذخیره کد استفاده می‌شود؛ اگر می‌خواهید یک کدنویس یا توسعه‌دهنده‌ نرم‌افزار شوید، باید با ابزارهای کنترل ورژن مانند Git و SVN آشنا شوید.

خوشبختانه گیت و گیت‌هاب بازار را بهبود بخشیده‌اند و اکنون بیش از ۷۰٪ سازمان‌ها از Git استفاده می‌کنند. از این رو یادگیری Git بهترین گزینه است و باید تلاش کنید تا آن را به خوبی یاد بگیرید. باید با مفاهیم کنترل ورژن پیشرفته مانند branching و merging و همچنین خود ابزار، راحت باشید؛ هم در خط فرمان و هم با استفاده از GUI. برای مبتدیان، GitHub Ultimate: Master Git و GitHub مکان مناسبی برای شروع است.

 

یک ویرایشگر متن (VIM)

به‌عنوان یک برنامه‌نویس، یک روز هم نشده که من هنگام کار از ویرایشگر متن استفاده نکرده باشم. این یکی از ابزارهای ضروری حتی برای افرادی غیر از برنامه‌نویسان و هر کسی است که با کامپیوتر کار می‌کند است.

من اکثرا از NotePad در ویندوز و VIM در لینوکس استفاده کرده‌ام ، اما امروزه شما از نظر ویرایشگرهای پیشرفته مانند Sublime، NotePad ++ ، VS Code گزینه‌های زیادی در دسترس دارید که عملکردی مانند IDE را ارائه می‌دهند.

 

IDEs 

IDE های مدرن مانند Eclipse و ..... مهم‌ترین ابزار برای هر برنامه نویسی است. برای برنامهنویسان C ،C ++  و C # انتخاب واضح است، ویژوال استودیو؛ برای توسعه‌دهندگان پایتون، Jupiter Notebook هر روز بهتر و بهتر می‌شود. 

برای برنامه‌نویسان جاوا، سه IDE اصلی برای انتخاب وجود دارد، مانند Eclipse ،NetBeans، IntelliJ

بانک اطلاعاتی و SQL

SQL یک پایگاه‌داده کلاسیک است، بیش از ۳۰ سال است که وجود دارد، و فکر می‌کنم ۳۰ سال دیگر هم در این حوزه خواهد بود. با توجه به این که پایگاه داده همه جا هست، از یک برنامه‌نویس انتظار می‌رود که با مفاهیم اساسی بانک اطلاعاتی مانند عادی سازی و طراحی جدول به همراه SQL آشنا باشد.

بسیاری از بانک‌های اطلاعاتی مانندOracle ، MySQL ، Microsoft SQL Server ، PostgreSQL و …  وجود دارد؛ اما دانستن فقط یکی از آن‌ها کافی است. نکته مهم این است که شما باید با بانک اطلاعاتی آشنا باشید. شما باید بدانید که چگونه داده‌ها را وارد کنید/ به‌روز کنید/ حذف کنید و برای آن کوئری بنویسید.

آگاهی از مفاهیم پیشرفته مانند join کردن یک aggregate function، یک امتیاز بزرگ است و اگر می‌خواهید آن را یادبگیرید، The Complete SQL BootCamp مکان بسیار خوبی برای شروع است.

 

لینوکس

مانند SQL، یونیکس نیز تست زمان را تحمل کرده است. همچنین بیش از ۳۰ سال است که از آن می‌گذرد و امیدوارم تا سا‌ل‌های آینده نیز همینطور پابرجا باشد. از آنجا که بیشتر اوقات، برنامه‌نویسان مجبورند با UNIX کار کنند، مانند سرورهای لینوکس، داشتن دانش خوب از خط فرمان linux، از آن‌ها انتظار می‌رود.

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

 

مبانی شبکه

دنیای امروز دنیای به‌هم پیوسته‌ای است و هر کجا که بروید، شبکه‌های رایانه‌ای را پیدا خواهیدکرد، از خانه‌ای که در آن از WIFI استفاده می‌کنید گرفته تا مدرسه، دانشگاه‌ها و دفاتر، از شبکه محلی (LAN)  تا اینترنت استفاده می‌کنند.

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

نکته اصلی این است که شما باید اصول اساسی شبکه را درک کنید، برنامه‌ای را توسعه بدهید و از برنامه خود پشتیبانی کنید.

 

یک زبان اسکریپتی یاد بگیرید

چرا باید یک زبان اسکریپتی یاد گرفت؟ آیا نمی‌توان از همان زبان برنامه نویسی به عنوان زبان اسکریپتی استفاده کرد؟

خوب، بدون شک برخی از زبان‌ها وجود دارد که مناسب برای هر دو کدنویسی OOP و اسکریپتی، مانند Python است؛ به‌همین دلیل از شما خواستم حداقل آن را یاد بگیرید. اما اگر زبانی را نتوانید برای هر دو مورد استفاده کنید چه؟ اینجاست که اگر یک زبان  اسکریپتی بلد باشید،‌ کار شما راحت خواهد شد.

 

آشنایی زبان نشانه گذاری html، اولین گام برای طراح سایت شدن

۵ بازديد

HTML چیست ؟

عبارت HTML ( اچ تی ام ال ) مخفف Hyper Text Markup Language به معنی زبان نشانه گذاری فوق متن است. Html زبان استاندارد طراحی صفحات وب است و کلیه کدهای صفحه اعم از طرف سرور و طرف مشتری در نهایت به کدهای HTML تبدیل شده و توسط مرورگر نمایش داده می شوند.
به عبارت دیگر مرورگر ها هیچکدام از کدها و کنترل های سمت سرور همچون کدهای asp و php را نمیشناسند و کد قابل فهم برای آنها اچ تی ام ال می باشد.
کامپایلر های زبان های برنامه نویسی سروری در نهایت کد های خود را برای نمایش به کد اچ تی ام ال تبدیل میکنند و برای مرورگر میفرستند تا به کاربران نمایش داده شود.
HTML یک زبان نشانه گذاری است ، به این معنی که بخش های مختلف توسط اجزایی به نام تگ از هم جدا شده ، که هر کدام دارای کاربرد و خواص مربوط خود هستند . این تگ ها به مرورگر اعلام می کنند که هر بخش از صفحه چه نوع عنصری است و باید به چه صورت نمایش داده شود .
در مقاله ی تگ های Html به این موصوع به طور مفصل پرداخته شده است.
در یک صفحه HTML می توان انواع عناصر از قبیل متن ، تیتر ، عکس ، جدول و ... را قرار داد ، که برای هر عنصر باید از تگ مربوط به آن استفاده کرد . صفحات HTML فقط از کد ها که به صورت متن هستند تشکیل شده اند. بدین معنا که برای تصویر کد مربوط به تمایش تصویر و جدول و ... کدهای اچ تی ام ال مربوط به هر یک را باید نوشت و مرورگر با رسیدن به این کد ها و تگ ها ، المنت های مرتبط با آن را نمایش می دهد.
هر یک از کدهای html ، معنا و مفهوم خاصی دارند و تأثیر مشخصی بر محتوا می‌گذارند. مثلاً برچسب‌هایی برای تغییر شکل ظاهری متن، نظیر درشت و ضخیم کردن یک کلمه یا برقراری پیوند به صفحات دیگر در اچ‌تی‌ام‌ال تعریف شده‌اند.

HTML چه کاربردی دارد؟
برای قرار دادن هر اجزایی در صفحه‌ی وب از HTML استفاده می‌شود. مثلاً می‌توانید به کمک این زبان یک متن را در سایت قرار دهید اما این متن هیچ استایل و ویژگی خاصی ندارد. برای تغییر سایز فونت، رنگ نوشته و ایجاد رنگ پس‌زمینه برای آن باید از زبان CSS کمک گرفت.
در واقع شما با HTML اسکلت‌بندی سایت را پیاده سازی می‌کنید.

HTML5 چیست؟
قصد داریم در این بخش به این موضوع بپردازیم که HTML5 چیست و چه فرقی با HTML دارد. تا سال 2008 بازار HTML4 داغ بود و به طور گسترده استفاده می‌شد. اما مشخص بود که این نسخه از HTML ضعف‌هایی دارد و باید بروزرسانی شود. به همین دلیل کمپانی WHATWG توسعه این زبان را در دست گرفت و استانداردهای آن را ارتقا داد. ضعف اصلی که باید روی آن کار می‌شد مربوط به چندرسانه‌ای (multimedia) و گرافیک بود.
HTML5 در سال 2014 یک آپدیت مهم و اساسی را تجربه کرد. در این آپدیت تگ‌های HTML جدیدی اضافه شدند که تاثیر بسیار مثبتی در بالا بردن کیفیت و بهبود تجربه کاربران داشتند. پس از این آپدیت طراحی سایت‌ها ساختار منظمی پیدا کرد و مفاهیم قدیمی (مانند استفاده از table در بدنه اصلی صفحات) کنار گذاشته شدند.

HTML چطور کار می‌کند؟

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

مزایا و معایب زبان HTML چیست؟
HTML در کنار css و js هسته اصلی وب را تشکیل می‌دهد و یک زبان بسیار مهم در دنیای وب حساب می‌شود. این زبان مزیت‌ها و محدودیت‌هایی هم دارد که در ادامه به آن‌ها اشاره می‌کنیم و میبینیم دلیل اصلی ماندگاری HTML چیست و چرا این زبان با تمام مشکلاتش هنوز زبان شماره یک وب به حساب می‌آید. برخی از مهمترین مزایا و معایب این زبان عبارتند از:

مزایای HTML :
• یادگیری آسان و لذت‌بخش
• قابلیت اجرا در تمام مرورگرها
• متن باز و رایگان بودن
• ادغام آسان با زبان‌های سمت سرور مثل php
معایب HTML:
• استاتیک بودن و وابستگی به زبان‌های سمت سرور برای تعامل با کاربر
• ضعف در پشتیبانی از مرورگرهای قدیمی
• نیاز به طراحی جداگانه هر صفحه به دلیل نبود قواعد منطقی برنامه نویسی

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