🔻چرا #جیسون ؟
🔶️جیسون نخستین قالبی نیست که از جفتهای خصوصیت-کلید برای تبادل دادهها بر روی اینترنت استفاده میکند. فناوریهای مختلفی در این زمینه وجود دارند که ممکن است حتی برخی از آنها مانند XML را نیز بشناسید. جیسون و ایکسامال تقریباً به روش مشابهی عمل میکنند. پس چرا باید جیسون را بر ایکسامال ترجیح بدهیم؟
🔷️در وب امروز بارگذاری asynchronous (غیر همزمان و یا در مواردی نامتقارن نامیده میشود) دادهها بسیار مهم است. به بیان دیگر صفحههای وب میخواهند قادر باشند تا دادهها را بدون نیاز به بارگذاری مجدد کل صفحه به کاربر ارسال نمایند. نتیجه چنین امکانی، ایجاد تجربه مرور روانتر و مطلوبتر برای کاربر است. جیسون برای ارسال و دریافت غیر همزمان دادهها عالی است، زیرا ساده است و استفاده از آن آسان است.
🖥 @FunProGraming
🔶️جیسون نخستین قالبی نیست که از جفتهای خصوصیت-کلید برای تبادل دادهها بر روی اینترنت استفاده میکند. فناوریهای مختلفی در این زمینه وجود دارند که ممکن است حتی برخی از آنها مانند XML را نیز بشناسید. جیسون و ایکسامال تقریباً به روش مشابهی عمل میکنند. پس چرا باید جیسون را بر ایکسامال ترجیح بدهیم؟
🔷️در وب امروز بارگذاری asynchronous (غیر همزمان و یا در مواردی نامتقارن نامیده میشود) دادهها بسیار مهم است. به بیان دیگر صفحههای وب میخواهند قادر باشند تا دادهها را بدون نیاز به بارگذاری مجدد کل صفحه به کاربر ارسال نمایند. نتیجه چنین امکانی، ایجاد تجربه مرور روانتر و مطلوبتر برای کاربر است. جیسون برای ارسال و دریافت غیر همزمان دادهها عالی است، زیرا ساده است و استفاده از آن آسان است.
🖥 @FunProGraming
🔻ظاهر #جیسون چگونه است؟
🔶️جیسون تنها یک سری از جفتهای خصوصیت-کلید است که میتوان در صورت لزوم آنها را به صورت تو در تو نوشت. برای مثال اگر دادههای ما در مورد یک شخص باشند، این شخص را میتوان به وسیله دادههای جیسون شکل بالا نشان داد.
🔷️هر خط با یک خصوصیت آغاز میشود و با علامت دو نقطه (:) ادامه مییابد، سپس مقدار خصوصیت ذکر میشود. این مقدار همان طور که در مورد خصوصیت شماره تلفن در مثال فوق مشاهده میکنید، میتواند یک آرایه باشد. همچنین مقدار یک خصوصیت همان طور که در مورد خصوصیت آدرس در مثال فوق میبینید، میتواند خود جفتهایی دیگر از خصوصیت-کلید باشد. این حالت یک شیء نامیده میشود.
🖥 @FunProGraming
🔶️جیسون تنها یک سری از جفتهای خصوصیت-کلید است که میتوان در صورت لزوم آنها را به صورت تو در تو نوشت. برای مثال اگر دادههای ما در مورد یک شخص باشند، این شخص را میتوان به وسیله دادههای جیسون شکل بالا نشان داد.
🔷️هر خط با یک خصوصیت آغاز میشود و با علامت دو نقطه (:) ادامه مییابد، سپس مقدار خصوصیت ذکر میشود. این مقدار همان طور که در مورد خصوصیت شماره تلفن در مثال فوق مشاهده میکنید، میتواند یک آرایه باشد. همچنین مقدار یک خصوصیت همان طور که در مورد خصوصیت آدرس در مثال فوق میبینید، میتواند خود جفتهایی دیگر از خصوصیت-کلید باشد. این حالت یک شیء نامیده میشود.
🖥 @FunProGraming
🔻 #ترفند #سی_شارپ
🔶️ آیا تا به حال اتفاق افتاده است که بخواهید برای متدهای غیر public یک اسمبلی unit test case بنویسید؟ خیلی از برنامه نویسان این کار را انجام نمیدهند. چرا که این متدها برای پروژه تست، قابل دیدن نیستند. سی شارپ به شما اجازه میدهد متدهای internal یک اسمبلی را برای یک اسمبلی دیگر، قابل دیدن کنید. کافی است که attribute زیر را به فایل AssemblyInfo.cs اضافه کنید:
🔷️این کد اعضای اینترنال یک اسمبلی را برای اسمبلی دیگر قابل دیدن میکند
[assembly: InternalsVisibleTo("MyTestAssembly")]
🖥 @FunProGraming
🔶️ آیا تا به حال اتفاق افتاده است که بخواهید برای متدهای غیر public یک اسمبلی unit test case بنویسید؟ خیلی از برنامه نویسان این کار را انجام نمیدهند. چرا که این متدها برای پروژه تست، قابل دیدن نیستند. سی شارپ به شما اجازه میدهد متدهای internal یک اسمبلی را برای یک اسمبلی دیگر، قابل دیدن کنید. کافی است که attribute زیر را به فایل AssemblyInfo.cs اضافه کنید:
🔷️این کد اعضای اینترنال یک اسمبلی را برای اسمبلی دیگر قابل دیدن میکند
[assembly: InternalsVisibleTo("MyTestAssembly")]
🖥 @FunProGraming
🔶️ #ترفند #سی_شارپ : عدم استفاده از collection
🔻معمولا وقتی که ما میخواهیم تعدادی از آیتم های یک Collection را برگردانیم و نگه داریم، از یک Collection کمکی استفاده میکنیم. مانند تصویر بالا .
🖥 @FunProGraming
🔻معمولا وقتی که ما میخواهیم تعدادی از آیتم های یک Collection را برگردانیم و نگه داریم، از یک Collection کمکی استفاده میکنیم. مانند تصویر بالا .
🖥 @FunProGraming
🔻 #ترفند #سی_شارپ : استفاده از Tuples
🔶️ بعضی از برنامه نویسان، کلاس های بی استفاده ای میسازند تا بتوانند مقادیر خروجی یک متد را درون پراپرتی های آن بریزند. Tuples ها در دات نت ۴ معرفی شدند و میتوانند در چنین مواقعی استفاده شوند همچون تصویر بالا .
🖥 @FunProGraming
🔶️ بعضی از برنامه نویسان، کلاس های بی استفاده ای میسازند تا بتوانند مقادیر خروجی یک متد را درون پراپرتی های آن بریزند. Tuples ها در دات نت ۴ معرفی شدند و میتوانند در چنین مواقعی استفاده شوند همچون تصویر بالا .
🖥 @FunProGraming
🔻#جاوا_اسکریپت
🌀 علیرغم اشتباه عمومی، زبان جاوااسکریپت با زبان جاوا ارتباطی ندارد، اگر چه ساختار این زبان به سی پلاس پلاس (++C) و جاوا شباهت دارد که این امر برای یادگیری آسان در نظر گرفته شدهاست. از همین رو دستورهای متداول مانند if, for, try..catch ,"while" و… در این زبان هم یافت میگردند .
🌀 این زبان میتواند هم به صورت ساخت یافته و هم به صورت شی گرا مورد استفاده قرار گیرد. در این زبان اشیاء با اضافه شدن متدها و خصوصیات پویا به اشیاء خالی ساخته میشوند، بر خلاف جاوا. بعد از ساخته شدن یک شی به روش فوق، این شی میتواند به عنوان نمونهای برای ساخته شدن اشیاء مشابه مورد استفاده قرار گیرد.
✅به علت این قابلیت زبان جاوااسکریپت برای ساختن نمونه از سیستم، مناسب است.
🖥 @FunProGraming
🌀 علیرغم اشتباه عمومی، زبان جاوااسکریپت با زبان جاوا ارتباطی ندارد، اگر چه ساختار این زبان به سی پلاس پلاس (++C) و جاوا شباهت دارد که این امر برای یادگیری آسان در نظر گرفته شدهاست. از همین رو دستورهای متداول مانند if, for, try..catch ,"while" و… در این زبان هم یافت میگردند .
🌀 این زبان میتواند هم به صورت ساخت یافته و هم به صورت شی گرا مورد استفاده قرار گیرد. در این زبان اشیاء با اضافه شدن متدها و خصوصیات پویا به اشیاء خالی ساخته میشوند، بر خلاف جاوا. بعد از ساخته شدن یک شی به روش فوق، این شی میتواند به عنوان نمونهای برای ساخته شدن اشیاء مشابه مورد استفاده قرار گیرد.
✅به علت این قابلیت زبان جاوااسکریپت برای ساختن نمونه از سیستم، مناسب است.
🖥 @FunProGraming
📓 64 واژه کلیدی #جاوا اسکریپت :
▪️abstract ▫️arguments▪️await▫️boolean▪️break ▫️byte▪️case▫️catch▪️char▫️class▪️const▫️continue▪️debugger▫️default▪️delete▫️do▪️double▫️else▪️enum▫️eval▪️export▫️extends▪️false ▫️final▪️finally ▫️float▪️for ▫️function▪️goto ▫️if▪️implements ▫️import▪️in ▫️instanceof▪️int ▫️interface▪️let ▫️long▪️native▫️new▪️null▫️package▪️private ▫️protected▪️public ▫️return▪️short▫️static▪️super▫️switch▪️synchronized ▫️this▪️throw▫️throws▪️transient▫️true▪️try▫️typeof▪️var▫️void▪️volatile▫️while▪️with▫️yield
🖥 @FunProGraming
▪️abstract ▫️arguments▪️await▫️boolean▪️break ▫️byte▪️case▫️catch▪️char▫️class▪️const▫️continue▪️debugger▫️default▪️delete▫️do▪️double▫️else▪️enum▫️eval▪️export▫️extends▪️false ▫️final▪️finally ▫️float▪️for ▫️function▪️goto ▫️if▪️implements ▫️import▪️in ▫️instanceof▪️int ▫️interface▪️let ▫️long▪️native▫️new▪️null▫️package▪️private ▫️protected▪️public ▫️return▪️short▫️static▪️super▫️switch▪️synchronized ▫️this▪️throw▫️throws▪️transient▫️true▪️try▫️typeof▪️var▫️void▪️volatile▫️while▪️with▫️yield
🖥 @FunProGraming
🔻نکاتی در خصوص #جاوا_اسکریپت
🖇️فریم ورک ها :
فریم ورکها و کتابخانههای زیادی برای این زبان مانند جیکوئری، آنگولار جیاس ، نود جیاس ، ری اکت ، وی یو جی اس و فریم ورک انگولار وجود دارد.
🖇️زبان امری و ساخت یافته: ویرایش
جاوااسکریپت از تمامی نحو ساختاری زبان C پشتیبانی میکند. مانند گزاره (if و switch و حلقههای while و…) یک مورد استثناء تعیین حوزهٔ متغیرهاست: تعریف حوزه در حد block در جاوااسکریپت وجود ندارد. هر چند جاوااسکریپت ۱٫۷ با کلمهٔ کلیدی let این نوع حوزه دهی را امکانپذیر میسازد. مانند زبان c در جاوااسکریپت بین عبارت و گزاره تفاوت وجود دارد.
🖇️تایپ دهی پویا: مانند اکثر زبانهای نویسهای تایپ به مقدارها منسوب میگردد و نه به متغیرها. برای مثال متغیر x ممکن است به یک عدد وابسته سازی شود، و بعداً به یک رشته. جاوااسکریپت برای تعیین تایپ شی راههای مختلفی از جمله تایپ دهی اردکی (duck typing) را دارد.
تایپ دهی ضعیف: زبان جاوااسکریپت از نظر تایپ دهی ضعیف به شمار میآید و در آن نتیجهٔ عملیاتی مانند ۵ + “۳۷”، عبارت “۵۳۷” خواهد بود (عدد را با رشته جمع کردهاست)
🖥 @FunProGraming
🖇️فریم ورک ها :
فریم ورکها و کتابخانههای زیادی برای این زبان مانند جیکوئری، آنگولار جیاس ، نود جیاس ، ری اکت ، وی یو جی اس و فریم ورک انگولار وجود دارد.
🖇️زبان امری و ساخت یافته: ویرایش
جاوااسکریپت از تمامی نحو ساختاری زبان C پشتیبانی میکند. مانند گزاره (if و switch و حلقههای while و…) یک مورد استثناء تعیین حوزهٔ متغیرهاست: تعریف حوزه در حد block در جاوااسکریپت وجود ندارد. هر چند جاوااسکریپت ۱٫۷ با کلمهٔ کلیدی let این نوع حوزه دهی را امکانپذیر میسازد. مانند زبان c در جاوااسکریپت بین عبارت و گزاره تفاوت وجود دارد.
🖇️تایپ دهی پویا: مانند اکثر زبانهای نویسهای تایپ به مقدارها منسوب میگردد و نه به متغیرها. برای مثال متغیر x ممکن است به یک عدد وابسته سازی شود، و بعداً به یک رشته. جاوااسکریپت برای تعیین تایپ شی راههای مختلفی از جمله تایپ دهی اردکی (duck typing) را دارد.
تایپ دهی ضعیف: زبان جاوااسکریپت از نظر تایپ دهی ضعیف به شمار میآید و در آن نتیجهٔ عملیاتی مانند ۵ + “۳۷”، عبارت “۵۳۷” خواهد بود (عدد را با رشته جمع کردهاست)
🖥 @FunProGraming
📚نظام تایپ دهی در جاوا_اسکریپت:
📙 تعریف نشده: این تایپ فقط یک مقدار با نام undefined دارد و متعلق به تمام متغییرهای مقدار دهی نشدهاست
📘 نوع تهی: نوع تهی هم فقط یک مقدار دارد با نام null
📗 نوع دودویی: نمایندهٔ یک مقدار منطقی است و دو مقدار true و false را میپذیرد.
📕 نوع رشته: در بر گیرندهٔ تمام رشتههای متناهی از ۰ یا بیشتر عنصر ۱۶ بیتی بدون علامت است. این عناصر با اندیسهای نامنفی قابل دسترسی هستند. طول رشته تعداد عناصر داخل آن و طول رشتهٔ تهی برابر ۰ است.
📗نوع عدد: نوع عدد در جاوااسکریپت مطابق با استادارد IEEE برای اعداد شناور دودویی است (با اندکی تفاوت) .
📘نوع شی: شی در جاوااسکریپت یک مجموعه بدون ترتیب از ویژگیها است. هر ویژگی میتواند داخلی، فقط خواندنی، غیرقابل حذف، و غیرقابل پیمایش باشد (یا ترکیبی از اینها یا هیچکدام)
🖥 @FunProGraming
📙 تعریف نشده: این تایپ فقط یک مقدار با نام undefined دارد و متعلق به تمام متغییرهای مقدار دهی نشدهاست
📘 نوع تهی: نوع تهی هم فقط یک مقدار دارد با نام null
📗 نوع دودویی: نمایندهٔ یک مقدار منطقی است و دو مقدار true و false را میپذیرد.
📕 نوع رشته: در بر گیرندهٔ تمام رشتههای متناهی از ۰ یا بیشتر عنصر ۱۶ بیتی بدون علامت است. این عناصر با اندیسهای نامنفی قابل دسترسی هستند. طول رشته تعداد عناصر داخل آن و طول رشتهٔ تهی برابر ۰ است.
📗نوع عدد: نوع عدد در جاوااسکریپت مطابق با استادارد IEEE برای اعداد شناور دودویی است (با اندکی تفاوت) .
📘نوع شی: شی در جاوااسکریپت یک مجموعه بدون ترتیب از ویژگیها است. هر ویژگی میتواند داخلی، فقط خواندنی، غیرقابل حذف، و غیرقابل پیمایش باشد (یا ترکیبی از اینها یا هیچکدام)
🖥 @FunProGraming