This media is not supported in your browser
VIEW IN TELEGRAM
🔹 6 API Architectures you MUST know/be aware
1 - REST
2 - Webhook
3 - SOAP
4 - MQTT
5 - Web Socket
6 - GraphQL
Vladimir Romanov
@fullStackDevs
1 - REST
2 - Webhook
3 - SOAP
4 - MQTT
5 - Web Socket
6 - GraphQL
Vladimir Romanov
@fullStackDevs
Forwarded from Jadi Var Log
ترماکس (که بعضی بهش می گن ترموکس) برنامه ای است که یه محیط ترمینال در سیستمعامل اندروید برای شما فراهم میکنه. این ترمینال کلی از برنامههای مرسوم دنیای گنو و ابزارهای برنامه نویسی و مدیریت سیستم رو داره یا میشه توش نصب کرد. در نتیجه با داشتن ترماکس فضا شبیه اینه که شما پشت ترمینال یه سیستم عامل گنو/لینوکس نشستین و میتونین توی ویم برنامه بنویسین، با پایتون اجراش کنین، به یه سرور اس اس اچ کنین و توی تی ماکس در حال کمپایل برنامه راست خودتون باشین.
چه آدمی باشین که به کامپیوتر دسترسی نداره و می خواد لینوکس و برنامه نویسی حرفه ای تر یاد بگیره و چه آدم حرفه ای باشین که لازم داره گاه گداری یه ترمینال دم دستش باشه، ترماکس ابزار بسیار مناسبی است که روی تبلت یا گوشی خودتون داشته باشینش.
https://youtu.be/kqYTYlLjKYE
چه آدمی باشین که به کامپیوتر دسترسی نداره و می خواد لینوکس و برنامه نویسی حرفه ای تر یاد بگیره و چه آدم حرفه ای باشین که لازم داره گاه گداری یه ترمینال دم دستش باشه، ترماکس ابزار بسیار مناسبی است که روی تبلت یا گوشی خودتون داشته باشینش.
https://youtu.be/kqYTYlLjKYE
YouTube
نصب و کار با ترماکس/ترموکس در اندروید؛ یه محیط گنو/لینوکسی مناسب یادگیری، کار و برنامهنویسی
نکته مهم: دوستان تذکر میدن که برای رسیدن به آخرین نسخه ترماکس (و البته کلی برنامه آزاد دیگه) بهتره از مارکت F-droid استفاده کنین. سرچ و نصبش کنین و برنامههاتون رو از اونجا بگیرین.
ترماکس (که بعضی بهش می گن ترموکس) برنامه ای است که یه محیط ترمینال در سیستمعامل…
ترماکس (که بعضی بهش می گن ترموکس) برنامه ای است که یه محیط ترمینال در سیستمعامل…
🔹توی این پست قراره یه بررسی بیسیک و مفید در مورد دات نت و سی شارپ داشته باشیم.
🔰Convert Class
▫️متد های استاتیک این کلاس برای تبدیل Base Data Type ها در .Net استفاده میشن، و بسته به مقدار Base Data Type و تایپی که قراره به اون تبدیل بشن، در runtime ممکنه مواردی رخ بده.
یکی از اون موارد Overflow Exception هست. وقتی دو مقدار از دوتا تایپ که به هم قابل تبدیل شدن هستند رو Convert می کنید، اگر در این حین امکان از بین رفتن دیتا وجود داشته باشه با Overflow Exception مواجه میشید، پس حتما این Exception رو هندل کنید.
🔰Decimal Data Type in .Net
▫️اگه ازتون بپرسن که آیا decimal یک Primitive تایپه چی پاسخ میدین؟
نوع داده ای دسیمال یک تایپه بسیار خاصه، زبان هایی مثل C# و VB اون رو به عنوان Primitive Type در نظر میگیرن اما برای CLR اینطور نیست.
یعنی CLR برای manipulate کردن مقادیر از این نوع داده، دستور IL خاصی نداره، اگه سری به سورس کد این دیتا تایپ در .Net Framework SDK بزنین، می بینید که توی decimal.cs برای عملیات های Add , Subtract , Multiply , Divide متد های استاتیکی با همین نام وجود داره و operator های + , – , × , / و... هم oveload شدن.
▫️وقتی توی کدتون از مقادیری با نوع دسیمال استفاده میکنید، کامپایلر برای manipulate کردن این مقادیر باید IL تولید کنه و معادل دستور IL خاصی وجود نداره و این به این معنیه که manipulate کردن مقادیر از نوع دسیمال کندتر از Primitive Type هاییه که توسط CLR شناخته میشن.
▫️همچنین چون دستور IL خاصی برای manipulate کردن داده های از نوع دسیمال وجود نداره، درنتیجه operator, statement های checked و unchecked هم تاثیری برای نوع داده های دسیمالی نداره و انجام هر نوع عملیاتی بروی داده هایی از نوع دسیمال که باعث از بین رفتن دیتا بشه (unsafe باشه)، باعث Overflow Exception میشه.
@fullStackDevs
🔰Convert Class
▫️متد های استاتیک این کلاس برای تبدیل Base Data Type ها در .Net استفاده میشن، و بسته به مقدار Base Data Type و تایپی که قراره به اون تبدیل بشن، در runtime ممکنه مواردی رخ بده.
یکی از اون موارد Overflow Exception هست. وقتی دو مقدار از دوتا تایپ که به هم قابل تبدیل شدن هستند رو Convert می کنید، اگر در این حین امکان از بین رفتن دیتا وجود داشته باشه با Overflow Exception مواجه میشید، پس حتما این Exception رو هندل کنید.
🔰Decimal Data Type in .Net
▫️اگه ازتون بپرسن که آیا decimal یک Primitive تایپه چی پاسخ میدین؟
نوع داده ای دسیمال یک تایپه بسیار خاصه، زبان هایی مثل C# و VB اون رو به عنوان Primitive Type در نظر میگیرن اما برای CLR اینطور نیست.
یعنی CLR برای manipulate کردن مقادیر از این نوع داده، دستور IL خاصی نداره، اگه سری به سورس کد این دیتا تایپ در .Net Framework SDK بزنین، می بینید که توی decimal.cs برای عملیات های Add , Subtract , Multiply , Divide متد های استاتیکی با همین نام وجود داره و operator های + , – , × , / و... هم oveload شدن.
▫️وقتی توی کدتون از مقادیری با نوع دسیمال استفاده میکنید، کامپایلر برای manipulate کردن این مقادیر باید IL تولید کنه و معادل دستور IL خاصی وجود نداره و این به این معنیه که manipulate کردن مقادیر از نوع دسیمال کندتر از Primitive Type هاییه که توسط CLR شناخته میشن.
▫️همچنین چون دستور IL خاصی برای manipulate کردن داده های از نوع دسیمال وجود نداره، درنتیجه operator, statement های checked و unchecked هم تاثیری برای نوع داده های دسیمالی نداره و انجام هر نوع عملیاتی بروی داده هایی از نوع دسیمال که باعث از بین رفتن دیتا بشه (unsafe باشه)، باعث Overflow Exception میشه.
@fullStackDevs
🔰تا حالا به این فکر کردین وقتی توی سی شارپ operator ای رو overload می کنین چه اتفاقی می افته ؟
▫️به طور کلی بعضی زبان های برنامه نویسی، اجازه overload کردن operator ها رو بهتون میدن، برای مثال در سی شارپ، تایپ های string, decimal, datetime عملگرهای == و != overload کردن.
🔰از نظر CLR اما overload کردن یک operator به چه شکله؟
▫️درواقع برای CLR اورلود کردن یک operator باعث به وجود اومدن شرایط خاصی نمیشه چون اصلا CLR اطلاعی نداره که یک operator مثل (+) چه معنی ای میده.
درواقع زبان برنامه نویسی که ازش استفاده میکنین برای نمایش این operator ها از symbol هایی استفاده میکنه و مشخص میکنه که درهنگام استفاده از این symbol ها چه کدی باید تولید بشه.
🔹️برای مثال درسی شارپ استفاده از سیمبل + برای primitive تایپی مثل int باعت میشه تا کامپایلر کدی رو برای جمع کردن اونها باهم تولید کنه و یا وقتی ازسیمبل + برای تایپ های string استفاده میکنین، کامپایلر کد concatenate براشون تولید میکنه.
🔸️ناگفته نمونه که از طرف CLS ولی یک سری قوانین وجود داره که overload یک operator حتما باید public و static باشه.
▫️با overload کردن یک operator در سی شارپ، کامپایلر متدی رو برای مشخص کردن آنچه که operator باید انجام بده تولید میکنه.
اسم این متد به اضای هر operator برای کامپایلر یک اسم خاص هستش و اگه تایپتون از قبل متدی همنام با این متد و پارامتر های یکسان داشته باشه با یک ارور مواجه میشین.
🔹️برای مثال وقتی کامپایلر سی شارپ با عملگر + در سورس کد مواجه میشه، در operand های این operator به دنبال متدی با نام خاص op_Addition می گرده و اگه نتونه چنین متدی با پارامتر های مشابه با operand های این عملگر پیدا کنه یک کامپایل ارور صادر میکنه.
🔸️این فرایند برای core numeric تایپ هایی مثل (int32, int64, int16 و ...) که در FCL وجود دارند متفاوته و کامپایر در این تایپ ها مستقیما به دنبال خود operator می گرده و دستور معادل IL براشون تولید میکنه.
در آخر، براتون توی جدولی، متد خاص معادل هریک از operator ها، که کامپایلر در operand های عملگر بدنبال شون میگرده رو گذاشتم.
@fullStackDevs
▫️به طور کلی بعضی زبان های برنامه نویسی، اجازه overload کردن operator ها رو بهتون میدن، برای مثال در سی شارپ، تایپ های string, decimal, datetime عملگرهای == و != overload کردن.
🔰از نظر CLR اما overload کردن یک operator به چه شکله؟
▫️درواقع برای CLR اورلود کردن یک operator باعث به وجود اومدن شرایط خاصی نمیشه چون اصلا CLR اطلاعی نداره که یک operator مثل (+) چه معنی ای میده.
درواقع زبان برنامه نویسی که ازش استفاده میکنین برای نمایش این operator ها از symbol هایی استفاده میکنه و مشخص میکنه که درهنگام استفاده از این symbol ها چه کدی باید تولید بشه.
🔹️برای مثال درسی شارپ استفاده از سیمبل + برای primitive تایپی مثل int باعت میشه تا کامپایلر کدی رو برای جمع کردن اونها باهم تولید کنه و یا وقتی ازسیمبل + برای تایپ های string استفاده میکنین، کامپایلر کد concatenate براشون تولید میکنه.
🔸️ناگفته نمونه که از طرف CLS ولی یک سری قوانین وجود داره که overload یک operator حتما باید public و static باشه.
▫️با overload کردن یک operator در سی شارپ، کامپایلر متدی رو برای مشخص کردن آنچه که operator باید انجام بده تولید میکنه.
اسم این متد به اضای هر operator برای کامپایلر یک اسم خاص هستش و اگه تایپتون از قبل متدی همنام با این متد و پارامتر های یکسان داشته باشه با یک ارور مواجه میشین.
🔹️برای مثال وقتی کامپایلر سی شارپ با عملگر + در سورس کد مواجه میشه، در operand های این operator به دنبال متدی با نام خاص op_Addition می گرده و اگه نتونه چنین متدی با پارامتر های مشابه با operand های این عملگر پیدا کنه یک کامپایل ارور صادر میکنه.
🔸️این فرایند برای core numeric تایپ هایی مثل (int32, int64, int16 و ...) که در FCL وجود دارند متفاوته و کامپایر در این تایپ ها مستقیما به دنبال خود operator می گرده و دستور معادل IL براشون تولید میکنه.
در آخر، براتون توی جدولی، متد خاص معادل هریک از operator ها، که کامپایلر در operand های عملگر بدنبال شون میگرده رو گذاشتم.
@fullStackDevs
#CLI
#NETCLI
وقتی که از dotnet CLI برای پروژه ای میخواییم استفاده کنیم (مثلا زمانی که میخوایم از vsCode برای توسعه یه پروژه دات نتی مثلا web api استفاده میکنیم) و میخوایم Migrations بزنیم روی پروژه ای که یک سولوشنمون با دو تا یا بیشتر پروژه و لایبرری داریم (api,infra,application and ...) برای migration اضافه کردن باید از دستور زیر استفاده کنیم:
برای مثال فرض کنید MyDbContext توی لایه infrastructure است و AdminApi هم api و InitialCreate نام فایل ای که ایجاد خواهد شد:
و برای اپدیت کردن از دستور زیر استفاده کنید
دقت کنید پکیج زیر حتما روی پروژه ای (DataAccess_Project) که DBContext توش قرار داره و قراره مایگریشن بزنید باید نصب باشد.
و همچنین پکیج زیر باید در پروژه WebApp_Project
نصب باشد.
@fullStackDevs
#NETCLI
وقتی که از dotnet CLI برای پروژه ای میخواییم استفاده کنیم (مثلا زمانی که میخوایم از vsCode برای توسعه یه پروژه دات نتی مثلا web api استفاده میکنیم) و میخوایم Migrations بزنیم روی پروژه ای که یک سولوشنمون با دو تا یا بیشتر پروژه و لایبرری داریم (api,infra,application and ...) برای migration اضافه کردن باید از دستور زیر استفاده کنیم:
CD My_Solution
dotnet ef migrations add YourMigrationName --project DataAccess_Project --startup-project WebApp_Project
برای مثال فرض کنید MyDbContext توی لایه infrastructure است و AdminApi هم api و InitialCreate نام فایل ای که ایجاد خواهد شد:
dotnet ef migrations add InitialCreate --project Infrastructure --startup-project AdminApi
و برای اپدیت کردن از دستور زیر استفاده کنید
dotnet ef database update --project DataAccess_Project --startup-project WebApp_Project
دقت کنید پکیج زیر حتما روی پروژه ای (DataAccess_Project) که DBContext توش قرار داره و قراره مایگریشن بزنید باید نصب باشد.
dotnet add package Microsoft.EntityFrameworkCore.SqlServer
و همچنین پکیج زیر باید در پروژه WebApp_Project
نصب باشد.
dotnet add package Microsoft.EntityFrameworkCore.Design
@fullStackDevs
#Roslyn
#Performance
🔰 بررسی و معرفی یک نکته پرفورمنسی در شی شارپ
🔹 در نسخه 3.0 سی شارپ Anonymous type ها معرفی شدند.
که بهتون قابلیت نمونه سازی ابجکت های مختلف بدون مشخص کردن تایپ اونها رو میده.
▪️ به کمک این قابلیت و همچنین فیچری که در کامپایلر سی شارپ ( roslyn ) وجود داره می تونید آرایه هایی به شکل زیر تعریف کنید.
🔸 نکته ای که جالبه بدونید اینکه اگه ارایه بالا به شکل زیر تعریف بشه با کامپایلر ارور مواجه می شین.
▪️ علت این موضوع برمیگرده به ویژگی type identity کامپایلر برای Anonymous Type ها.
🔹 به این صورت که کامپایلر در مواجه با نمونه سازی یک Anonymous Type در کد (object initializer)، ابتدا نام و نوع پراپرتی ها رو تشخیص میده ( به طور خیلی خلاصه ) و در نهایت برای اون Anonymous type، یک تایپ (class) با نامی که خودش انتخاب میکنه میسازه و از اون نمونه سازی میکنه.
🔸 از نظر کامپایلر Anonymous Type ها دارای یک identical structure هستند که برای تشخیص identical بودن ( یکسان بودن ) دو Anonymous Type باید نام و نوع پراپرتی ها و همچنین ترتیب تعریف شدن پراپرتی های اونها یکسان باشه.
🔸 حتی اگه دو Anonymous Type نام و نوع پراپرتی های اونها یکی باشه اما ترتیب تعریف کردن پراپرتی هاشون موقع نمونه سازی متفاوت باشه، کامپایلر برای هرکدوم از اونها تایپ های متفاوتی generate میکنه.
▪️ به همین خاطره که نمونه کد دوم تعریف آرایه با کامپایل ارور مواجه میشه، چون تمام عناصر ارایه باید از یک نوع باشن.
🔸 رعایت این نکته در نمونه سازی از Anonymous Type ها باعث افزایش پرفورمنس و کاهش مصرف حافظه میشه چون اگه توی یک assembly یک یا چندین Anonymous Type وجود داشته باشه که identical structure باشن، کامپایلر اونها رو از یک نوع تایپ در نظر میگیره و فقط یک تایپ براشون generate میکنه.
@fullStackDevs
#Performance
🔰 بررسی و معرفی یک نکته پرفورمنسی در شی شارپ
🔹 در نسخه 3.0 سی شارپ Anonymous type ها معرفی شدند.
که بهتون قابلیت نمونه سازی ابجکت های مختلف بدون مشخص کردن تایپ اونها رو میده.
▪️ به کمک این قابلیت و همچنین فیچری که در کامپایلر سی شارپ ( roslyn ) وجود داره می تونید آرایه هایی به شکل زیر تعریف کنید.
var arr = new[]
{
new { Id = 1 , Name = "Anonymous" },
new { Id = 2, Name = "BitBard" }
};
🔸 نکته ای که جالبه بدونید اینکه اگه ارایه بالا به شکل زیر تعریف بشه با کامپایلر ارور مواجه می شین.
var arr = new[]
{
new { Id = 1 , Name = "Anonymous" },
new { Name = "BitBard" , Id = 2, }
};
▪️ علت این موضوع برمیگرده به ویژگی type identity کامپایلر برای Anonymous Type ها.
🔹 به این صورت که کامپایلر در مواجه با نمونه سازی یک Anonymous Type در کد (object initializer)، ابتدا نام و نوع پراپرتی ها رو تشخیص میده ( به طور خیلی خلاصه ) و در نهایت برای اون Anonymous type، یک تایپ (class) با نامی که خودش انتخاب میکنه میسازه و از اون نمونه سازی میکنه.
🔸 از نظر کامپایلر Anonymous Type ها دارای یک identical structure هستند که برای تشخیص identical بودن ( یکسان بودن ) دو Anonymous Type باید نام و نوع پراپرتی ها و همچنین ترتیب تعریف شدن پراپرتی های اونها یکسان باشه.
🔸 حتی اگه دو Anonymous Type نام و نوع پراپرتی های اونها یکی باشه اما ترتیب تعریف کردن پراپرتی هاشون موقع نمونه سازی متفاوت باشه، کامپایلر برای هرکدوم از اونها تایپ های متفاوتی generate میکنه.
▪️ به همین خاطره که نمونه کد دوم تعریف آرایه با کامپایل ارور مواجه میشه، چون تمام عناصر ارایه باید از یک نوع باشن.
🔸 رعایت این نکته در نمونه سازی از Anonymous Type ها باعث افزایش پرفورمنس و کاهش مصرف حافظه میشه چون اگه توی یک assembly یک یا چندین Anonymous Type وجود داشته باشه که identical structure باشن، کامپایلر اونها رو از یک نوع تایپ در نظر میگیره و فقط یک تایپ براشون generate میکنه.
@fullStackDevs
NET 9 is out today.
𝗖# 𝟭𝟯
Params collections, enhanced lock types, and a new escape make coding smoother. Plus, implicit index access to simplify initialization.
𝗔𝗦𝗣.𝗡𝗘𝗧 𝗖𝗼𝗿𝗲
OpenAPI enhancements, faster asset delivery, PAR support, and the new HybridCache library boost performance and security.
𝗘𝗙 𝗖𝗼𝗿𝗲
Improved Cosmos DB support, pre-compiled AOT queries, better LINQ, and streamlined migrations make data handling faster.
𝗥𝘂𝗻𝘁𝗶𝗺𝗲
Feature switches, control-flow enforcement, and dynamic adaptation improve performance across different app sizes.
𝗟𝗶𝗯𝗿𝗮𝗿𝗶𝗲𝘀
Base64Url, new TimeSpan overloads, new collections, and cryptography upgrades add flexibility and security.
𝗦𝗗𝗞
Run tests in parallel, new terminal logger by default, a workload sets feature.
.𝗡𝗘𝗧 𝗔𝘀𝗽𝗶𝗿𝗲
New MSBuild SDK, an improved dashboard, telemetry updates, support to wait for dependencies, and lots more.
.𝗡𝗘𝗧 𝗠𝗔𝗨𝗜
Opt into Native AOT deployment, embedding APIs, full trimming, and new controls for smaller, faster mobile apps.
@fullStackDevs
𝗖# 𝟭𝟯
Params collections, enhanced lock types, and a new escape make coding smoother. Plus, implicit index access to simplify initialization.
𝗔𝗦𝗣.𝗡𝗘𝗧 𝗖𝗼𝗿𝗲
OpenAPI enhancements, faster asset delivery, PAR support, and the new HybridCache library boost performance and security.
𝗘𝗙 𝗖𝗼𝗿𝗲
Improved Cosmos DB support, pre-compiled AOT queries, better LINQ, and streamlined migrations make data handling faster.
𝗥𝘂𝗻𝘁𝗶𝗺𝗲
Feature switches, control-flow enforcement, and dynamic adaptation improve performance across different app sizes.
𝗟𝗶𝗯𝗿𝗮𝗿𝗶𝗲𝘀
Base64Url, new TimeSpan overloads, new collections, and cryptography upgrades add flexibility and security.
𝗦𝗗𝗞
Run tests in parallel, new terminal logger by default, a workload sets feature.
.𝗡𝗘𝗧 𝗔𝘀𝗽𝗶𝗿𝗲
New MSBuild SDK, an improved dashboard, telemetry updates, support to wait for dependencies, and lots more.
.𝗡𝗘𝗧 𝗠𝗔𝗨𝗜
Opt into Native AOT deployment, embedding APIs, full trimming, and new controls for smaller, faster mobile apps.
@fullStackDevs
📌 LLM چیست؟ (مدلهای زبانی بزرگ) 🤖
🔹 تا حالا فکر کردی چطور چتباتهای هوشمند مثل ChatGPT میتونن باهات مکالمه کنن؟
🔹 چطور یه مدل هوش مصنوعی میتونه کدنویسی کنه، متن بنویسه و ترجمه کنه؟
همهی اینا به لطف LLM یا Large Language Model (مدلهای زبانی بزرگ) انجام میشه! 🚀
💡 LLM چطور کار میکند؟
مدلهای زبانی بزرگ با استفاده از شبکههای عصبی عمیق و معماری Transformer روی حجم عظیمی از دادههای متنی آموزش میبینن. این مدلها میتونن:
✅ متن تولید کنن
✅ سؤالات رو پاسخ بدن
✅ کدنویسی کنن
✅ ترجمه و خلاصهسازی کنن
🔥 چند نمونه از LLMهای معروف:
💠 GPT-4 (OpenAI) – مدل ChatGPT
💠 Gemini (Google DeepMind)
💠 Claude (Anthropic)
💠 LLaMA (Meta)
💠 Mistral (مدل متنباز)
این مدلها در حال تغییر دنیای برنامهنویسی، تولید محتوا و تعاملات دیجیتال هستن! 🌍💻
📢 نظر تو چیه؟ آیندهی هوش مصنوعی و برنامهنویسی رو چطور میبینی؟ 👇✨
🔹 #هوش_مصنوعی #LLM #ChatGPT #یادگیری_ماشین #توسعه_دهنده #کدنویسی
@fullStackDevs
🔹 تا حالا فکر کردی چطور چتباتهای هوشمند مثل ChatGPT میتونن باهات مکالمه کنن؟
🔹 چطور یه مدل هوش مصنوعی میتونه کدنویسی کنه، متن بنویسه و ترجمه کنه؟
همهی اینا به لطف LLM یا Large Language Model (مدلهای زبانی بزرگ) انجام میشه! 🚀
💡 LLM چطور کار میکند؟
مدلهای زبانی بزرگ با استفاده از شبکههای عصبی عمیق و معماری Transformer روی حجم عظیمی از دادههای متنی آموزش میبینن. این مدلها میتونن:
✅ متن تولید کنن
✅ سؤالات رو پاسخ بدن
✅ کدنویسی کنن
✅ ترجمه و خلاصهسازی کنن
🔥 چند نمونه از LLMهای معروف:
💠 GPT-4 (OpenAI) – مدل ChatGPT
💠 Gemini (Google DeepMind)
💠 Claude (Anthropic)
💠 LLaMA (Meta)
💠 Mistral (مدل متنباز)
این مدلها در حال تغییر دنیای برنامهنویسی، تولید محتوا و تعاملات دیجیتال هستن! 🌍💻
📢 نظر تو چیه؟ آیندهی هوش مصنوعی و برنامهنویسی رو چطور میبینی؟ 👇✨
🔹 #هوش_مصنوعی #LLM #ChatGPT #یادگیری_ماشین #توسعه_دهنده #کدنویسی
@fullStackDevs
Generate beautiful API documentation from OpenAPI
Redoc is an open source tool for generating documentation from OpenAPI (formerly Swagger) definitions.
By default Redoc offers a three-panel, responsive layout:
The left panel contains a search bar and navigation menu.
The central panel contains the documentation.
The right panel contains request and response examples.
Live demo
If you want to see how Redoc renders your OpenAPI definition, you can try it out online at https://redocly.github.io/redoc/.
Source: https://github.com/Redocly/redoc
#ReDoc #OpenAPI #Swagger
@fullStackDevs
Redoc is an open source tool for generating documentation from OpenAPI (formerly Swagger) definitions.
By default Redoc offers a three-panel, responsive layout:
The left panel contains a search bar and navigation menu.
The central panel contains the documentation.
The right panel contains request and response examples.
Live demo
If you want to see how Redoc renders your OpenAPI definition, you can try it out online at https://redocly.github.io/redoc/.
Source: https://github.com/Redocly/redoc
#ReDoc #OpenAPI #Swagger
@fullStackDevs
Ultimate Docker Commands Cheat Sheet – All You Need to Know! 🐳
Save these images to have all essential Docker commands at your fingertips! 💡
#Docker #DevOps #Containers #Kubernetes #Cloud #Backend
@fullStackDevs
Save these images to have all essential Docker commands at your fingertips! 💡
#Docker #DevOps #Containers #Kubernetes #Cloud #Backend
@fullStackDevs
#Algorithm #Sliding_window
#SlidingWindow #CSharp
🧩 الگوریتم Sliding Window:
الگوریتم Sliding Window یکی از تکنیکهای مهم برای حل مسائل آرایهها و رشتهها به طور بهینه است. این روش با استفاده از دو نشانگر برای بررسی بخشهای مختلف داده، به سرعت جواب رو پیدا میکنه.
🔑 چطور کار میکنه؟
- دو نشانگر (`left` و `right`) برای نمایش پنجره (قسمتی از داده) استفاده میکنیم.
- نشانگر راست حرکت میکنه و هر بار یک کاراکتر یا مقدار جدید بررسی میشه.
- وقتی که شرایط خاصی مثل وجود مقدار تکراری یا رسیدن به اندازهای خاص محقق بشه، نشانگر چپ حرکت میکنه تا پنجره رو کوچکتر کنیم.
مزیت اصلی: زمان اجرا به O(n) کاهش مییابد که نسبت به روشهای سنتی با O(n²) بسیار سریعتر است.
💡 مثال: طول بزرگترین زیررشته بدون کاراکتر تکراری
ورودی: "abcabcbb"
خروجی: 3 (زیربرنامه "abc" بزرگترین زیررشته بدون تکرار است)
کاربردها:
- پیدا کردن طول بزرگترین زیررشته یا زیرآرایه
- جستجوی زیرمجموعهها با ویژگیهای خاص
- مسائل مربوط به جمع یا مقایسه زیرآرایهها و زیررشتهها
این الگوریتم خیلی مفیده برای حل مسائل بهینه در آرایهها و رشتهها، خصوصاً وقتی نیاز به
بررسی بخشهای مختلف داریم!
@fullStackDevs
#SlidingWindow #CSharp
🧩 الگوریتم Sliding Window:
الگوریتم Sliding Window یکی از تکنیکهای مهم برای حل مسائل آرایهها و رشتهها به طور بهینه است. این روش با استفاده از دو نشانگر برای بررسی بخشهای مختلف داده، به سرعت جواب رو پیدا میکنه.
🔑 چطور کار میکنه؟
- دو نشانگر (`left` و `right`) برای نمایش پنجره (قسمتی از داده) استفاده میکنیم.
- نشانگر راست حرکت میکنه و هر بار یک کاراکتر یا مقدار جدید بررسی میشه.
- وقتی که شرایط خاصی مثل وجود مقدار تکراری یا رسیدن به اندازهای خاص محقق بشه، نشانگر چپ حرکت میکنه تا پنجره رو کوچکتر کنیم.
مزیت اصلی: زمان اجرا به O(n) کاهش مییابد که نسبت به روشهای سنتی با O(n²) بسیار سریعتر است.
💡 مثال: طول بزرگترین زیررشته بدون کاراکتر تکراری
ورودی: "abcabcbb"
خروجی: 3 (زیربرنامه "abc" بزرگترین زیررشته بدون تکرار است)
using System;
using System.Collections.Generic;
class Solution {
public int LengthOfLongestSubstring(string s) {
HashSet<char> set = new HashSet<char>();
int left = 0, maxLength = 0;
for (int right = 0; right < s.Length; right++) {
while (set.Contains(s[right])) {
set.Remove(s[left]);
left++;
}
set.Add(s[right]);
maxLength = Math.Max(maxLength, right - left + 1);
}
return maxLength;
}
}
کاربردها:
- پیدا کردن طول بزرگترین زیررشته یا زیرآرایه
- جستجوی زیرمجموعهها با ویژگیهای خاص
- مسائل مربوط به جمع یا مقایسه زیرآرایهها و زیررشتهها
این الگوریتم خیلی مفیده برای حل مسائل بهینه در آرایهها و رشتهها، خصوصاً وقتی نیاز به
بررسی بخشهای مختلف داریم!
@fullStackDevs