از تجربه گراگ استفاده کنید (The Grug Brained Developer)
200, OK
https://grugbrain.dev/ icon

A layman's guide to thinking like the self-aware smol brained 

این رو به اشتراک گذاشتم چون هم فان هم آموزنده است, ابتدا سعی کردم عنوانش رو فارسی کنم ترجمه مناسبی به ذهنم نرسید. اگر با انگلیسی بودنش مشکلی ندارید, پیشنهاد میکنم بخونید.

از تجربه گراگ استفاده کنید (The Grug Brained Developer)
پکیج Gridify.Elasticsearch به کتابخانه Gridify اضافه شد!
200, OK
https://www.nuget.org/packages/Gridify.Elasticsearch icon

اگر با Elasticsearch کار کرده باشید میدانید که تولید Elasticsearch DSL Query کمی پیچیده است و عموما باید به صورت manual این Query هارو تولید کنید. 

با استفاده از این پکیج برای تولید این Query‌ها میتوانید از syntax پشتیبانی شده در Gridify استفاده کنید که کار ساخت Query برای Elasticsearch را ساده میکند. 

Documentation 

Github Repo


مثال:

await client.SearchAsync<User>(s => s
    .Index("users")
    .ApplyFiltering("emailAddress = John"));

query زیر را تولید میکند:

GET users/_search
{
  "query": {
    "term": {
      "emailAddress.keyword": {
        "value": "test@test.com"
      }
    }
  }
}



پکیج Gridify.Elasticsearch به کتابخانه Gridify اضافه شد!
BitVector 0.0.1 منتشر شد 🚀
200, OK
https://github.com/alirezanet/BitVector icon

دات نت متاسفانه هیچ تایپ مناسبی برای کار و دستکاری داده‌های باینری (Bit) به غیر از کلاس BitArray ندارد, که این کلاس اولا Immutable و ValueType نیست و دوم به عنوان بافر از Int32 استفاده میکند که باعث میشود (بسته به نوع دیتا) Memory زیادی مصرف کند و همچنین امکاناتی مثل Bit Shifting هم ندارد. 
BitVector یه struct ساده ولی قدرتمند است که این مشکلات را برطرف میکند.

(البته struct BitArray32 هم وجود دارد که برای دیتاست‌های بزرگ به دلیل اینکه نهایتا از 32 بیت استفاده میکند مناسب نیست.)

BitVector 0.0.1 منتشر شد 🚀
معرفی کتابخانه InfiniteEnumFlags
200, OK
https://github.com/alirezanet/InfiniteEnumFlags icon

Enum‌های دات نت با [Flags] attribute, ویژگی قدرتمندی است که امکان ذخیره و ترکیب چندین گزینه یا Feature را تنها به صورت یک مقدار ثابت فراهم میکند که از طریق Bitwise operator‌ها میتوانیم به ترکیب چندین Enum بپردازیم و یا از طریق این مقدار ثابت به تک تک اعضای تشکیل دهنده آن برسیم. ولی مشکل بزرگی این این ویژگی دارد محدودیت آن است که برای Enum هایی از نوع int تنها 32 آیتم و از نوع long تنها 64 مورد را پشتیبانی میکند. این مشکل سبب میشود در اکثر سناریو‌ها به سراغ این ویژگی نرویم, 

به طور مثال برای تعریف دسترسی‌های یک نرم افزار به صورت Strongly Type به احتمال زیاد با بزرگ‌تر شدن برنامه در آینده به مشکل برخورد میکنیم.

InfiniteEnumFlags کتابخانه کوچکی است که تمام امکانات [Flags] را در اختیار ما میگذارد و میتواند حدود 2.1 میلیارد آیتم را پشتیبانی کند. 

public class Permission : InfiniteEnum<Permission>
{
    public static readonly Flag<Permission> None = new(-1);
    public static readonly Flag<Permission> ViewRoles = new(0);
    public static readonly Flag<Permission> ManageRoles = new(1);
    public static readonly Flag<Permission> ViewUsers = new(2);
    public static readonly Flag<Permission> ManageUsers = new(3);
    public static readonly Flag<Permission> ConfigureAccessControl = new(4);
    public static readonly Flag<Permission> Counter = new(5);
    public static readonly Flag<Permission> Forecast = new(6);
    public static readonly Flag<Permission> ViewAccessControl = new(7);

    // We can support up to 2,147,483,647 items

}


مثال استفاده از آن برای تعریف سطح دسترسی‌ها در برنامه‌های Asp.net core  در فولدر Example این مخزن میتوانید پیدا کنید.

 git clone --recurse-submodules https://github.com/alirezanet/InfiniteEnumFlags.git


معرفی کتابخانه  InfiniteEnumFlags
Central Package Management بالاخره از Preview خارج شد
200, OK
https://devblogs.microsoft.com/nuget/introducing-central-package-management/ icon

Dependency management is a core feature of NuGet. Managing dependencies for a single project can be easy. Managing dependencies for multi-project solutions can prove to be difficult as they start to scale in size and complexity. In situations where you manage common dependencies for many different projects, you can leverage NuGet’s central package management features to do all of this from the ease of a single location. 

Central Package Management بالاخره از Preview خارج شد
DevToys - پکیجی از ابزارهای کاربردی برای برنامه نویسان
200, OK
https://mspoweruser.com/devtoys-is-powertoys-for-developers/ icon

The collection includes 14 different tools including a Json to Yaml and Yaml to Json converter, a JWT decoder, a Text compare tool, and more.

The full list includes:

  • Converters
    • Json <> Yaml
    • Number Base
  • Encoders / Decoders
    • HTML
    • URL
    • Base64
    • JWT Decoder
  • Formatters
    • Json
  • Generators
    • Hash (MD5, SHA1, SHA256, SHA512)
    • UUID 1 and 4
    • Lorem Ipsum
  • Text
    • Inspector & Case Converter
    • Regex Tester
    • Text Comparer
    • Markdown Preview
  • Graphic
    • Color Blindness Simulator
    • PNG / JPEG Compressor

Some of the tools will have wider appeal, for example, the text comparison tool would be useful for writers and solicitors alike, while the PNG/JPEG compressor could help webmasters. Expect more utilities to join the bundle in the future.

The collection is free, and can be accessed via GitHub here or free via the Microsoft Store. 

DevToys - پکیجی از ابزارهای کاربردی برای برنامه نویسان
Husky.Net v0.0.2 منتشر شد.
200, OK
https://github.com/alirezanet/Husky.Net icon

ابزاری ایست که به جرات میتونم بگم تمام شرکت‌ها و پروژه‌های Open-Source و تیم‌های متوسط تا بزرگ بهش نیاز دارند. برنامه نویس‌ها JavaScript و بیشتر وب, پکیج هایی با نام husky و lint-staged دارند که به صورت گستره روی بیشتر پروژه‌های خوبی که دیدم داره ازش استفاده میشه ولی پیش نیازهایی داره که برای دات نت کارها زیاد شاید جالب نباشه. مثل نصب node و yarn و .... 

این ابزار امکانات اون پکیج هارو دراختیار برنامه نویسان دات نت میگذاره. (البته فیچر هایی بیشتری هم داره)

تولید داخل هم هست حمایت فراموش نشه D:

اگر نیاز بود در مورد اینکه چرا گفتم تمام شرکت‌ها نیاز دارند بهش  نظر بدید سعی میکنم یک مقاله کوچک آماده کنم در این مورد.


Husky.Net v0.0.2 منتشر شد.
سایت داکیومنتیشن کتابخانه Gridify
200, OK
https://alirezanet.github.io/Gridify/ icon

سایت documentation کتابخانه Gridify رو امروز آپلود کردم. 


خوشحال میشم فیدبک یا نظری برای بهتر شدنش اگر داشتید بدید. هرچند امکانات اصلاح متون هم در خود این سایت تعبیه شده و راحت هست. اگر دنبال نمونه برای vuepress هم میگردید  بررسی سورس کدش میتونه گزینه خیلی خوبی باشه.

سایت داکیومنتیشن کتابخانه Gridify