استفاده از Promises در JavaScript
ReSharper 8.1 RTM منتشر شد
تشخیص لرزش موبایل با jQuery
ایده جالبی که میخواهیم با این روش پیاده کنیم این است که کاربر گوشی خود
را به لرزش در بیاورد و سایت به او تخفیف دهد . این ایده برای سایتهای تجاری و فروشگاهها میتواند جالبتر باشد و حتی باعث جذب کاربران و فروش
بیشتر شود .
این کار با مرورگرهای وب موبایل و سنسور شتاب سنج(accelerometer) گوشی انجام میگیرد.
مجموعه ای از Datasetها در زمینه کسب و کارهای مختلف در جامعه آمریکا که با تحلیل بر روی آنها میتوان آمار جالبی در بعضی از کسب و کارها به دست آورد و آن را به جوامع دیگر هم تعمیم داد.
اطلاعات، ابزار و منابع انجام تحقیقات، توسعه وب و اپلیکیشنهای موبایل، تصویر سازی اطلاعات و غیره را در اینجا پیدا خواهید کرد.
نمونه سایت دیگری در همین زمینه : kaggle.com
دوره آموزش سیشارپ مقدماتی
نگاهی به زبان Swift
5 کتاب رایگان در مورد Node.js
As software creation processes continue to become more complicated, development teams are taking a more all-encompassing approach that involves agile testing methodologies. Like agile software development, agile testing involves running test cases that assess the overall integrity of a solution, rather than simply ensuring that each part and piece are technically sound. Viewed as an analogy, agile testing methodologies ensure that software is a well-oiled machine, whereas a linear approach to testing just ensures that each of the gears is in good order. Herein lies the difference between unit tests and test automation.
آغاز سادهتر مجموعهها با کمک Collection Expressions
تا پیش از C# 12 برای آغاز یک آرایه میتوان از روش زیر استفاده کرد که در آن نوع آرایه از طریق نوع اعضای آن حدس زده میشود:
var numbers1_CS11 = new[] { 1, 2, 3 };
var numbers1_CS_11 = new int[] { 1, 2, 3 };
int[] numbers1_CS12 = [ 1, 2, 3 ];
error CS9176: There is no target type for the collection expression.
یک collection expression و یا collection literals، به مجموعهای از عناصر گفته میشود که بین دو براکت [] قرار میگیرند.
نمونهی دیگر آن کار با Spanها است که نمونه کد C# 11 آن:
Span<string> span1_CS11 = new string[] { "AC", "AL" };
Span<string> span1_CS12 = [ "AC", "AL" ];
ReadOnlySpan<string> readOnlySpan_CS12 = [ "Africa", "Asia", "Europa"];
مثال دیگر، نحوهی آغاز آرایههای چندبعدی است:
int[][] array2D_CS11 = { new int[] { 2002, 2006, 2010}, new int[] { 2014, 2018}, new int[] { 2022, 2026, 2030} };
int[][] array2D_CS12 = [ [2002, 2006, 2010], [2014, 2018], [2022, 2026, 2030] ];
و یا حتی این مورد را در مورد نحوهی آغاز Listهای پیش از C#12
List<string> list_CS11 = new List<string> { "Item 1", "Item 2" };
List<string> list_CS12 = [ "Item 1", "Item 2" ];
در کل همانطور که مشاهده میکنید، این تغییر، تغییر مثبتی است و حجم قابل ملاحظهای از کدها را کاهش داده و خواندن آنها را نیز سادهتر میکند.
یک نکته: روش ساده شدهی آغاز یک لیست با مجموعهای خالی در C# 12 به صورت زیر است:
// Before C#12 List<User> users = new List<User>(); // or var users = new List<User>(); // or List<User> user = new(); // C#12 List<User> users = [];
اضافه شدن spread operator به زبان #C
اگر پیشتر با زبان JavaScript کار کرده باشید، با spread operator هم آشنایی دارید. کار آن ساده سازی یکی کردن مجموعهها و یا افزودن سادهتر عناصری به آنها است و .. بالاخره به زبان #C هم راه پیدا کردهاست! برای مثال دو آرایهی زیر را درنظر بگیرید:
int[] numbers1_CS12 = [ 1, 2, 3 ]; int[] numbers2_CS12 = [ 4, 5, 6 ];
int[] allItems = [ ..numbers1_CS12, ..numbers2_CS12 ];
اگر در نگارشهای قبلی #C بخواهیم چنین کاری را انجام دهیم، یک روش آن به صورت زیر است:
int[] allItems_CS11 = numbers1_CS12.Concat(numbers2_CS12).ToArray();
همچنین اپراتور پخش کردن، قابلیت قرارگرفتن در کنار سایر اعضای یک آرایه را هم به سادگی و با خوانایی بیشتری به همراه دارد:
int[] join = [..a, ..b, ..c, 6, 5];
به علاوه محدودیتی در مورد نوع مجموعهی بکار گرفته شده نیز در اینجا وجود ندارد. برای نمونه در مثال زیر، یک آرایه، یک Span و یک لیست، با هم یکی شدهاند:
int[] a =[1, 2, 3]; Span<int> b = [2, 4, 5, 4, 4]; List<int> c = [4, 6, 6, 5]; List<int> join = [..a, ..b, ..c, 6, 5];
و مثالی دیگر، نحوهی سادهی تعریف لیستی از tuples است:
List<(string, int)> otherScores = [("Dave", 90), ("Bob", 80)];
(string name, int score)[] scores = [("Alice", 90), ..otherScores, ("Charlie", 70)];