Tuples with C# 7.0
Deconstruction In C# 7.0
C#7: Tuples
C#7 - Taking a second look at Tuples
Tackling Tuples: Understanding the New C# 7 Value Type
Tuples and Generics in C#7
C# Tuples. How tuples are related to ValueTuple
C# Tuples. Why mutable structs
C# 7.0 : Tuples to the Extreme
پیش از ارائه نهایی مطلب، تمام کدهای آن با VS 2017 RTM آزمایش و بررسی شوند.
.NET applications however rely on the ciphers provided by the OS, and the only way to get new ciphers into the OS is through a patch from Microsoft. Unsupported versions of Windows typically do not receive these patches, so over time you can expect an increasing number of websites to stop working with .NET applications.
> ng test --help
یک مثال: بررسی اجرای دستور ng test
یکی از مثالهای بررسی شدهی در این سری را انتخاب و یا حتی یک برنامهی جدید را توسط Angular CLI ایجاد کرده و سپس دستور ng test را در ریشهی این پروژه اجرا کنید. به این ترتیب برنامه به صورت خودکار کامپایل شده و سپس به صورت خودکار آزمونهای واحد آنرا که در فایلهای spec.ts.* قرار دارند، اجرا میکند. در آخر نتیجه را در مرورگر گزارش میدهد:
همانطور که مشخص است، 3 specs, 3 failures داریم. در اینجا میتوان بر روی لینک Spec List کلیک کرد و لیست آزمونهای واحد موجود را مشاهده نمود:
هر کدام از عناوین ذکر شده نیز به جزئیات مشکلات آنها، لینک شدهاند. برای مثال اگر بر روی اولین مورد کلیک کنیم، خطایی مانند «'alert' is not a known element» قابل مشاهدهاست. به این معنا که برای نمونه در قسمت قبل کامپوننت alert را به صفحه اضافه کردیم:
<alert type="success">Alert success!</alert>
import { NO_ERRORS_SCHEMA } from '@angular/core'; describe('AppComponent', () => { beforeEach(async(() => { TestBed.configureTestingModule({ declarations: [ AppComponent ], schemas: [NO_ERRORS_SCHEMA] }).compileComponents(); }));
پس از این تغییر، بلافاصله مجدد برنامه کامپایل شده و آزمونهای واحد آن با موفقیت اجرا میشوند (با این فرض که هنوز پنجرهی اجرا کنندهی دستور ng test را باز نگه داشتهاید):
تغییر افزودن schemas: [NO_ERRORS_SCHEMA] را باید در مورد تمام فایلهای spec موجود تکرار کرد.
گزینههای مختلف دستور ng test
دستور ng test به همراه گزینههای متعددی است که شرح آنها را در جدول ذیل مشاهده میکنید:
گزینه | مخفف | توضیح |
code-coverage-- | cc- | تولید گزارش code coverage که به صورت پیش فرض خاموش است. |
colors-- | به صورت پیش فرض فعال است و سبب نمایش رنگهای قرمز و سبز، برای آزمونهای شکست خورده و یا موفق میشود. | |
single-run-- | sr- | اجرای یکبارهی آزمونهای واحد، بدون فعال سازی گزینهی مشاهدهی مداوم تغییرات که به صورت پیش فرض خاموش است. |
progress-- | نمایش جزئیات کامپایل و اجرای آزمونهای واحد که به صورت پیش فرض فعال است. | |
sourcemaps-- | sm- | تولید فایلهای سورسمپ که به صورت پیش فرض فعال است. |
watch-- | w- | بررسی مداوم تغییرات فایلها و اجرای آزمونهای واحد به صورت خودکار که به صورت پیش فرض فعال است. |
بنابراین اجرا دستور ng test بدون ذکر هیچ گزینهای به معنای اجرای مداوم آزمونهای واحد، در صورت مشاهدهی تغییراتی در آنها، به کمک Karma است.
همچنین دو دستور ذیل نیز به یک معنا هستند و هر دو سبب یکبار اجرای آزمونهای واحد میشوند:
> ng test -sr > ng test -w false
اجرای بررسی میزان پوشش آزمونهای واحد
یکی از گزینههای ng test روشن کردن پرچم code-coverage است:
> ng test --code-coverage
> ng test -sr -cc
کار این آزمون بررسی قسمتهای مختلف برنامه و ارائه گزارشی است که مشخص میکند آیا آزمونهای واحد نوشته شده تمام انشعابات برنامه را پوشش میدهند یا خیر؟ برای مثال اگر در متدی if/else دارید، آیا فقط قسمت if را پوشش دادهاید و یا آیا قسمت else هم در آزمونهای واحد، بررسی شدهاست.
اجرای آزمونهای end to end
هدف از ساخت یک برنامه ... استفادهی از آن توسط دیگران است؛ اینجا است که آزمونهای end to end مفهوم پیدا میکنند. در آزمونهای e2e رفتار برنامه همانند حالتی که یک کاربر از آن استفاده میکند، بررسی میشود (برای مثال باز کردن مرورگر، لاگین و مرور صفحات). برای این منظور، Angular CLI در پشت صحنه از Protractor برای این نوع آزمونها استفاده میکند.
برای مشاهدهی راهنما و گزینههای مختلف مرتبط با آزمونهای e2e، میتوان دستور ذیل را صادر کرد:
>ng e2e --help
گزینه | مخفف | توضیح |
config-- | c- | به فایل کانفیگ آزمونهای e2e اشاره میکند که به صورت پیشفرض همان protractor.conf.js واقع در ریشهی پروژهاست. |
element-explorer-- | ee- | بررسی و دیباگ protractor از طریق خط فرمان |
serve-- | s- | کامپایل و توزیع برنامه بر روی پورتی اتفاقی (حالت پیش فرض آن true است) |
specs-- | sp- | پیش فرض آن بررسی تمام specهای موجود در پروژهاست. اگر نیاز به لغو آن باشد میتوان از این گزینه استفاده کرد. |
webdriver-update-- | wu- |
به روز رسانی web driver که به صورت پیش فرض فعال است. |
بنابراین زمانیکه دستور ng e2e صادر میشود، به معنای کامپایل، توزیع برنامه بر روی پورتی اتفاقی و اجرای آزمونها است.
از این جهت که این نوع آزمونها، وابستهی به جزئی خاص از برنامه نیستند، حالت عمومی داشته و فایلهای spec آنها را میتوان در پوشهی e2e واقع در ریشهی پروژه، یافت. برای مثال در قسمتی از آن کار یافتن متن نمایش داده شدهی در صفحهی اول سایت انجام میشود
getParagraphText() { return element(by.css('app-root h1')).getText(); }
expect(page.getParagraphText()).toEqual('app works!');
برای آزمایش آن دستور ng e2e را در ریشهی پروژه صادر کنید. همچنین دقت داشته باشید که در این حالت نیاز است به اینترنت نیز متصل باشد؛ چون از chromedriver api گوگل نیز استفاده میکند. در غیراینصورت خطای ذیل را دریافت خواهید کرد:
Error: getaddrinfo ENOTFOUND chromedriver.storage.googleapis.com chromedriver.storage.googleapis.com:443
منابع مطالعاتی ASP.NET Core
فناوریهایی برای مطالعه در سال 2017
- .NET Core
- Node.js
- Docker
- Elasticsearch: A distributed and open source search engine based on Lucene. A blazing fast NoSQL database with replication capabilities, it is the most widely known component of the ELK stack, together with Kibana (for reporting and visualizations), Logstash (for data import) and Beats (for data shipping). Even Azure Search uses it behind the covers. Free but some tools are paid. Get it from http://elastic.co.
- ECMAScript 2015
- HTML5
- Kafka
- TypeScript
- MongoDB
- Git
- Nginx
- Octopus Deploy
- Azure
- Amazon Web Services
- Linux
- Visual Studio Code
- Xamarin
- Google Analytics
- SQL Server 2016
- Let’s Encrypt
- TensorFlow
- GitLab
- Redis
PSScriptAnalyzer is a static code checker for PowerShell modules and scripts. PSScriptAnalyzer checks the quality of PowerShell code by running a set of rules. The rules are based on PowerShell best practices identified by PowerShell Team and the community. It generates DiagnosticResults (errors and warnings) to inform users about potential code defects and suggests possible solutions for improvements.
gRPC Service with .NET 7
In this video we build a gRPC service with 5 methods: Create, Read (single), List (multiple), Update and Delete. We then employ JSON transcoding (a new feature added in .NET 7) to allow our gRPC service to act as a REST based API. This allows web-based endpoints to consume our service, while at the same time continuing to allow native gRPC clients to consume as well.
⏲️ Time Codes ⏲️
- 0:33 - Welcome
- 2:00 - gRPC Overview
- 5:08 - Scaffold the prject
- 9:58 - Test "greeter" service with Postman
- 12:32 - Add package dependencies
- 14:48 - Create the Model
- 16:38 - Create DB Context & migrations
- 22:37 - Define the protobuf file
- 32:39 - Build the first service method
- 40:55 - Test method with postman
- 42:52 - Read method
- 48:42 - List method
- 52:39 - Update method
- 59:14 - Delete method
- 1:03:24 - Add the annotation files
- 1:06:07 - Annotate the first gRPC method
- 1:09:26 - Annotate remaining methods
- 1:12:42 - Test with Postman
- 1:16;00 - Patreon supporter credits