مقایسهای بین Go و NET.
مفهوم زبان مشترک در DDD
Account
A bank account allows us to send and receive money and has its unique number. Anytime we tell about an account in a bank, an account is always a bank account. In the other hand, an account in an information system is used to authorize a user. We have the term "account" meaning something absolutely different in two different domains. Domain has an impact on what we imagine when someone says a concrete term. So we have to learn and specify domain terms first.
Price
Let's speak about e-shop domain. What is a price? For us, as customers, it is how much we pay. A manager can think about price as an amount that his company pays to the supplier. For an accountant, a price is just a number. And e-shop programmer is now confused.
Language is crucial because customers and experts are telling their stories in their language. But it is also natural language, inaccurate, ambiguous, context-aware. And as we can see, language can be tricky even within one domain.
Protocol Buffers are a language-neutral, platform-neutral, extensible way of serializing structured data for use in communications protocols, data storage, and more, originally designed at Google (see).
protobuf.js is a pure JavaScript implementation with TypeScript support for node.js and the browser. It's easy to use, blazingly fast and works out of the box with .proto files!
سری 6 قسمتی در رابطه با User Stories
یکی
از ویژگیهای جدید اضافه شده به سی شارپ 9، Attributes on
local functions نام دارد و این توانایی را به ما میدهد تا بر روی متدهای محلی که
درون متدها تعریف میشوند، Attributes قرار دهیم. قابلیت local functions در نسخه 7 سی شارپ اضافه شدهاست و با استفاده از این قابلیت میتوانیم درون یک متد، تابع دیگری را تعریف کنیم و در همان متد، از آن تابع درونی
استفاده کنیم. در واقع تابع درونی، لوکال متد بیرونی است و در خارج از متد بیرونی،
قابل دسترسی نیست. مانند مثال زیر:
// Main method public static void Main() { // Local Function void AddValue(int a, int b) { Console.WriteLine("Value of a is: " + a); Console.WriteLine("Value of b is: " + b); Console.WriteLine("Sum of a and b is: {0}", a + b); Console.WriteLine(); } // Calling Local function AddValue(20, 40); AddValue(40, 60); }
برای بررسی این ویژگی جدید سی شارپ 9.0، از یک مثال استفاده میکنیم. فرض کنید یک برنامهی کنسول را داریم و میخواهیم یک قطعه کد فقط در حالتی در خروجی نوشته شود که برنامه در حالت دیباگ اجرا شده باشد و اگر در حالت ریلیز باشد، در خروجی مشاهده نشود. قبل از نسخهی 9.0 سی شارپ، مجبور هستیم از directive های کامپایلر زبان استفاده کنیم و از طریق آن به کامپایلر بفهمانیم که چه زمانی این قطعه کد را کامپایل کند. مانند مثال زیر:
static void Main(string[] args) { static void DoAction() { // DoAction Console.WriteLine("DoAction..."); } #if DEBUG DoAction(); #endif }
اما با استفاده قابلیت اضافه شدهی در این نسخه از سی شارپ، میتوان روی متدهای محلی هم Attributes اضافه کرد. پس میتوانیم از ConditionalAttribute استفاده کنیم و آن را در بالای متد محلی قرار دهیم و از کامپایلر بخواهیم در حالت دیباگ اجرا شود. مانند کد زیر
static void Main(string[] args) { [Conditional("DEBUG")] static void DoAction() { // Do Action Here Console.WriteLine("Do Action..."); } DoAction(); }
اگر بر روی متدهای محلی C# 8.0 از Attribute استفاده کنیم، با خطای زیر روبرو میشویم:
ErrorCS8400Feature 'local function attributes' is not available in C# 8.0. Please use language version 9.0 or greater.
آزمون اطلاعات عمومی JavaScript
JS Is Weird
JavaScript is a great programming language, but thanks to the fact that its initial release was built in only ten days back in 1995, coupled with the fact that JS is backward-compatible, it's also a bit weird. It doesn't always behave the way you might think. In this quiz, you'll be shown 25 quirky expressions and will have to guess the output. Even if you're a JS developer, most of this syntax is probably, and hopefully, not something you use in your daily life.