Dev Perfects – Telegram
Dev Perfects
40 subscribers
9.23K photos
1.26K videos
468 files
13K links
بخوام خیلی خلاصه بگم
این کانال میاد مطالب کانالای خفن تو حوزه تکنولوژی و برنامه نویسی رو جمع میکنه

پست پین رو بخونید
https://news.1rj.ru/str/dev_perfects/455


ارتباط:
https://news.1rj.ru/str/HidenChat_Bot?start=936082426
Download Telegram
📕 کتاب REST API Design Rulebook

📌 فصل اول: معرفی (Introduction)

📍پارت: سوم

#کتاب

💎 REST 💎
در سال ۲۰۰۰، بعد از اینکه مشکل مقیاس‌پذیری وب حل شد، فیلدینگ تو پایان‌نامه دکترای خودش سبک معماری وب رو اسم‌گذاری کرد و اسمش رو "انتقال حالت نمایشی" یا همون REST رو برای این سبک معماری انتخاب کرد. این سبک شامل محدودیت‌هایی هست که قبلاً بهشون اشاره کردیم.

💎 REST API ها 💎

وب سرویس‌ها (Web Services) سرورهای مخصوصی هستن که نیازهای یه سایت یا هر اپلیکیشن دیگه‌ای رو برطرف می‌کنن.

برنامه‌های کلاینت (یا همون نرم‌افزارهایی که با سرور ارتباط می‌گیرن) از طریق API با این وب سرویس‌ها ارتباط برقرار می‌کنن.

به زبان ساده، API ها یه سری داده و عملکرد رو در اختیار برنامه‌های دیگه قرار می‌دن تا بتونن با هم تعامل کنن و اطلاعات رد و بدل کنن.

یه وب API مثل ویترین یه وب سرویسه که مستقیماً درخواست‌های کلاینت رو می‌شنوه و بهشون جواب می‌ده.

سبک معماری REST معمولاً برای طراحی API های وب سرویس‌های مدرن استفاده می‌شه. اگه یه وب API با سبک معماری REST طراحی شده باشه، بهش می‌گیم REST API.


⭕️ نکات:

مقیاس‌پذیری: یعنی یه سیستم بتونه بدون کاهش کیفیت، با افزایش ترافیک (مثلا تعداد کاربران) کنار بیاد و بتونه هندلشون کنه.

کلاینت: دستگاه یا نرم‌افزاری که به سرور وصل می‌شه و ازش درخواست می‌کنه. مثلاً مرورگر وب که به یه سایت وصل می‌شه.

وب سرویس: یه سرویس تحت وب که از طریق اینترنت قابل دسترسیه و خدمات خاصی رو ارائه می‌ده.

API: یه واسطه که به برنامه‌ها اجازه می‌ده با هم ارتباط برقرار کنن.


وقتی یه وب سرویس از REST API استفاده کنه، بهش می‌گیم که اون سرویس "RESTful" هست. یه REST API از یه سری منابع به هم پیوسته تشکیل شده که بهشون مدل منابع (Resource Model) گفته می‌شه. REST API هایی که خوب طراحی شده باشن، می‌تونن برنامه‌نویس‌های کلاینت رو جذب کنن تا از اون وب سرویس استفاده کنن. امروزه که سرویس‌های وب رقیب دارن با هم برای جلب توجه رقابت می‌کنن، داشتن یه REST API با طراحی تمیز و کاربرپسند یه ویژگی ضروریه.

طراحی REST API برای خیلی از ماها بیشتر شبیه یه هنره تا یه علم. یه سری از بهترین روش‌ها برای طراحی REST API توی استاندارد HTTP وجود داره، ولی یه سری روش‌های دیگه هم طی سال‌های اخیر به‌صورت نیمه‌استاندارد شکل گرفته.

با این حال، هنوز هم باید دنبال جواب برای یه سری سوالات مهم بگردیم، مثلا:

- کی باید اسم route هامون رو با اسم‌های جمع بنویسیم؟
- از کدوم متد ریکوست (مثل POST یا PUT) باید برای به‌روزرسانی وضعیت منابع استفاده کنیم؟
- چطور باید عملیات‌هایی که مربوط به CRUD نیستن (CRUD: ایجاد، خواندن، به‌روزرسانی، حذف) رو به route ها مپ کنیم؟
- کدوم کد استاتوس HTTP برای یه سناریوی خاص مناسبه؟
- چطور می‌تونم نسخه‌های مختلف نمایه‌های وضعیت یه منبع رو مدیریت کنم؟
- چطور باید لینک‌ها رو توی JSON ساختاردهی کنم؟

⭕️ نکات:
- URI آدرس مشخصی که برای دسترسی به یه منبع توی وب استفاده می‌شه.
- CRUD مخفف چهار عمل اصلی روی داده‌ها؛ ایجاد (Create)، خواندن (Read)، به‌روزرسانی (Update)، و حذف (Delete).
- HTTP Status Code کدهایی که وضعیت درخواست‌های HTTP رو نشون می‌دن، مثل 200 برای موفقیت‌آمیز بودن یا 404 برای پیدا نشدن.


این کتاب یه سری قوانین طراحی REST API رو معرفی می‌کنه که هدفش اینه تا جواب‌های واضح و مختصری به سوالات مهمی که مطرح کردیم، بده.
این قوانین می‌خوان بهت کمک کنن تا REST API هایی با یکپارچگی و نظم طراحی کنی که بتونن به‌خوبی توسط کلاینت‌هایی که ازشون استفاده می‌کنن، بهره‌برداری بشن. می‌تونی این قوانین رو کامل دنبال کنی یا هر کدوم که دوست داشتی انتخاب کنی. شاید با بعضی از این قوانین مخالفت کنی، ولی من معتقدم هر کدومشون ارزش بررسی دقیق رو دارن.

خیلی از قوانین طراحی این کتاب از بهترین روش‌هایی گرفته شدن که به‌نوعی استانداردهای نانوشته‌ای شده‌ان. اگه تجربه‌ای توی طراحی REST API ها داری، احتمالاً با قوانینی که مربوط به طراحی URI در فصل ۲ و استفاده از HTTP در فصل ۳ هستن، آشنا خواهی بود. ولی در مقابل، بیشتر قوانین فصل ۴ و فصل ۵ (مخصوصاً اونایی که به نوع داده‌ها و فرم‌های نمایشی مربوط می‌شن) راه‌حل‌هایی هستن که خودم برای مسائلی که توافقی روشون نیست، ارائه دادم.

@ninja_learn_ir

#کتاب
📕 کتاب REST API Design Rulebook

📌 فصل اول: معرفی (Introduction)

📍پارت: دوم

#کتاب

💎 معماری وب 💎

در اواخر سال ۱۹۹۳، "روی فیلدینگ"، یکی از بنیان‌گذاران پروژه سرور HTTP آپاچی، نگران مشکل مقیاس‌پذیری وب شد.
بعد از تحلیل، فیلدینگ متوجه شد که مقیاس‌پذیری وب تحت تأثیر یه سری محدودیت‌های کلیدی قرار داره. اون و دیگران تصمیم گرفتن که با یه رویکرد عملیاتی، وب رو بهبود بدن: باید همه این محدودیت‌ها رو به‌صورت یکسان برآورده کنن تا وب بتونه به گسترش خودش ادامه بده.
فیلدینگ این محدودیت‌ها رو به شش دسته تقسیم کرد و به مجموعه این دسته‌ها "سبک معماری وب" گفت:

۱. کلاینت-سرور (Client-server)
۲. رابط یکپارچه (Uniform interface)
۳. سیستم لایه‌ای (Layered system)
۴. کش (Cache)
۵. بدون حالت (Stateless)
۶. کد به‌صورت درخواستی (Code-on-demand)

1️⃣ کلاینت-سرور (Client-server)
موضوع اصلی محدودیت‌های کلاینت-سرور در وب، جداسازی وظایف است. وب یک سیستم مبتنی بر کلاینت-سرور است که در آن کلاینت‌ها و سرورها نقش‌های مجزا و مشخصی دارند. این بخش‌ها می‌توانند به‌صورت مستقل پیاده‌سازی و مستقر شوند، با استفاده از هر زبان یا فناوری، به شرطی که با رابط یکنواخت وب سازگار باشند.

2️⃣ رابط یکپارچه (Uniform interface)
تعاملات بین اجزای وب، یعنی کلاینت‌ها، سرورها و واسطه‌های مبتنی بر شبکه، به یکنواختی رابط‌هایشان بستگی دارد. اگر هر یک از این اجزا از استانداردهای تعیین‌شده خارج شوند، سیستم ارتباطی وب دچار اختلال می‌شود.
اجزای وب در چارچوب چهار محدودیت رابط یکنواخت که فیلدینگ شناسایی کرده است، به‌طور سازگار با هم کار می‌کنند:

1- شناسایی منابع
2- دستکاری منابع از طریق نمایه‌ها
3- پیام‌های خودتوصیفی
4- هایپرمدیا به عنوان موتور حالت برنامه (HATEOAS)


1- شناسایی منابع
هر مفهوم مجزای مبتنی بر وب به عنوان یک منبع شناخته می‌شود و می‌تواند با یک شناسه یکتا، مثل URI، مورد خطاب قرار گیرد. برای مثال، یک URI خاص مثل http://www.google.com منحصراً به مفهوم ریشه‌ی یک وبسایت خاص اشاره دارد.

2- دستکاری منابع از طریق نمایه‌ها
کلاینت‌ها نمایه‌های منابع را دستکاری می‌کنند. یک منبع مشخص می‌تواند به شکل‌های مختلف برای کلاینت‌های مختلف نمایه شود. مثلاً، یک سند ممکن است به‌صورت HTML به یک مرورگر وب نمایش داده شود و به‌صورت JSON به یک برنامه خودکار. ایده کلیدی این است که نمایه‌ها راهی برای تعامل با منبع هستند، اما خود منبع نیستند. این تمایز مفهومی اجازه می‌دهد که منبع به روش‌ها و فرمت‌های مختلف نمایه شود بدون اینکه شناسه‌اش تغییر کند.

3- پیام‌های خودتوصیفی (Self-denoscriptive)
وضعیت مورد نظر یک منبع می‌تواند در پیام درخواست کلاینت نمایه شود. وضعیت کنونی منبع ممکن است در پیام پاسخ سرور که بازمی‌گردد، نمایش داده شود. به‌عنوان مثال، یک ویرایشگر صفحه ویکی ممکن است از پیام درخواست برای انتقال یک نمایه که پیشنهاد یک بروزرسانی صفحه (وضعیت جدید) برای یک صفحه وب مدیریت‌شده توسط سرور است، استفاده کند. سرور تصمیم می‌گیرد که درخواست کلاینت را بپذیرد یا رد کند.

4- هایپرمدیا به عنوان موتور حالت برنامه (HATEOAS)
نمایش وضعیت یک منبع شامل لینک‌هایی به منابع مرتبط هست. لینک‌ها مثل نخ‌هایی هستند که وب رو به هم متصل می‌کنن و به کاربرا این امکان رو می‌دن که به صورت معنادار و هدفمند بین اطلاعات و برنامه‌ها حرکت کنن. وجود یا نبودن یه لینک روی یک صفحه، بخش مهمی از وضعیت فعلی اون منبعه.

3️⃣ سیستم لایه‌ای (Layered system)
محدودیت‌های سیستم لایه‌ای این امکان رو می‌ده که واسطه‌های مبتنی بر شبکه مثل پروکسی‌ها و درگاه‌ها، به‌صورت شفاف بین کلاینت و سرور مستقر بشن و از رابط یکنواخت وب استفاده کنن. به‌طور کلی، یه واسطه مبتنی بر شبکه برای یه هدف مشخص ارتباط کلاینت و سرور رو رهگیری می‌کنه. این واسطه‌ها معمولاً برای اجرای امنیت، کش کردن پاسخ‌ها و متعادل کردن بار ترافیکی استفاده می‌شن.

4️⃣ کش (Cache)
کش کردن یکی از مهم‌ترین محدودیت‌های معماری وب هست. محدودیت‌های مربوط به کش به سرور وب می‌گن که باید قابلیت کش شدن داده‌های هر پاسخ رو مشخص کنه. کش کردن داده‌های پاسخ می‌تونه به کاهش تأخیر احساس‌شده توسط کاربر، افزایش دسترسی‌پذیری و قابلیت اطمینان یک برنامه، و کنترل بار سرور وب کمک کنه. به طور خلاصه، کش کردن هزینه کلی وب رو کاهش می‌ده.
کش می‌تونه در هر جایی از مسیر شبکه بین کلاینت و سرور وجود داشته باشه. این کش‌ها ممکنه در شبکه سرور وب یک سازمان، داخل شبکه‌های تحویل محتوای تخصصی (CDNها) یا حتی داخل خود کلاینت باشن.
ضمن خوش آمد گویی به دوستانی که تازه به جمعمون اضافه شدن 🌹، باید بگم که ما هر روز بخشی از خلاصه کتاب REST API Design Rulebook رو داخل کانال منتشر میکنیم و میتونید مطالعه کنید.

فایل PDF هم قبلا آپلود شده، فقط کافیه سرچ بزنید 🔎

از هشتگ #کتاب هم میتونید استفاده کنید برای دسترسی سریعتر #️⃣

استفاده کنید 😄❤️
Forwarded from Syntax | سینتکس (Petres)
Consumer data platform

بیاید یه سناریو رو بریم جلو:
تو مرورگرتون درباره لپتاپ سرچ میکنید.
قصد دارید بخرید پس بیشتر سرچ میکنید و مدل های مختلف رو باهمدیگه بررسی میکنید.
بعد حالا بر اساس قیمت سرچ میکنید تا یچیز اقصادی پیدا کنید.
چند وقت بعد می‌بینید یه ایمیل با این موضوع دریافت کردید:
لیست بهترین لپتاپ ها با قیمت مناسب در دیجیکالا

همه اینا با استفاده از Customer data platform(CDP) انجام میشه.

تو این وب سایت میتونید دربارش اطلاعات بیشتری بدست بیارید:
https://revium.com.au/blog/what-is-segment-cdp

#CDP

@Syntax_fa
👍1
Forwarded from TechTube 𝕏 تک توب
اپ مدیریت پسورد محبوب Bitwarden اپدیت جدیدش رو با رابط کاربری جدیدی عرضه کرده که از نسخه قبلی روانتر و سریعتره، علاوه بر این طراحی شکیل تری داره.

نسخه های قبلی این اپ بر پایه فریمورک دات نت MAUI بودن که فریمورکی برای توسعه اپهایی با پشتیبانی از سیستم عاملهای مختلف هست اما اپهای ساخته شده با این پلتفرم عمدتا روان نیستن و از المان های Native هر سیستم عامل استفاده نمیکنن.

حالا بیت واردن چند ماه پیش تصمیم گرفت که اپهاش رو برای هر سیستم عامل با زبان بهینه اون یعنی سویفت برای iOS و کاتلین برای اندروید بازنویسی کنه و اپهای Native منتشر کنه.

اولین نتیجه اون یعنی اپ جدید iOS حالا به صورت عمومی منتشر شده و از حالا میتونین اون رو دانلود کنین. اپ جدید اندروید هم در حال حاضر در حالت بتا قرار داره و طی هفته ها و ماه های اینده به صورت عمومی منتشر خواهد شد.

🔗 دانلود نسخه iOS بیت واردن

🔗 دانلود نسخه اندروید بیت واردن (هنوز دارای رابط جدید نیست)

🔎 bitwarden

📍 @TechTube
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from code2 - تکنولوژی و فناوری (Mahdi Taleghani)
توی کانال های نخونده تلگرام یوهو اسم بیت واردن و دیدم چشام تیز شد. تو دلم گفتم الان نگه هک شده یا ...
اما نه بیت واردن کارش درست تر از این حرفاس!
اگر دنبال پسورد منیجر رایگان و خوب و امن میگردید بیت واردن جزو خوباس و سینکش هم رایگان هست. حتی هزینه دلاری اشتراکش هم اونقدری گرون نیست از قدیم یادمه.

درکل اپ و ابزار خوبی هست. توصیه میکنم.
البته اگر از کروم استفاده میکنید خود پسورد منیجر کروم و گوگل هم خیلی خوب هست ولی خب من نمی‌پسندیدم.
دوستان برای دسترسی دلفین به محتوای ریشه نیازی نیست برید فایل منیجر ثونار یا ناتیلوس گنوم رو نصب کنید!!!!!!!!


واقعاً از برخی از دوستان در عجبم در این زمینه.


برای داشتن دسترسی ریشه داخل برنامه‌های کی‌دی‌ای از جمله دلفین باید بسته kio-admin رو نصب کنید.

بعدش توی میله مکان (location bar) بنویسید:
admin:///



@SohrabContents
Forwarded from کداکسپلور | CodeExplore (Amin)
📚دوستان حتما کتاب Clean Code رو بخونین و قبلاً هم براتون PDFش رو قرار دادیم براتون ( راستی اگه انگلیسیتون خوب نیست ، نسخه ترجمه شدشو هم قرار دادیم ) و خلاصه می‌خوام بگم اگه حوصله خوندن این کتاب رو ندارین ( که امیدوارم داشته باشید 😅 ) میتونین تو ریپازیتوری زیر خلاصشو بخونید و نکات مهمی که گفته شده رو بهره مند بشید🤍

🌐 https://github.com/JuanCrg90/Clean-Code-Notes

🔥🔥🔥🔥🔥🔥🔥🔥

🙂 پایین لینک نسخه اصلی و ترجمه شده ی خود کتاب Clean Code رو قرار میدم:

👍 نسخه انگلیسی کتاب Clean Code

👍 نسخه ترجمه شده ی کتاب Clean Code

#clean #code #book #pdf #point
☕️ @CodeExplore
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Code Module | کد ماژول (genix)
ماژول perf_hooks چیکار میکنه؟ ⚡️

ماژول perf_hooks در Node.js یک ابزار قدرتمند برای نظارت بر عملکرد و بهینه سازی هست. این یک رابط برای اندازه‌گیری عملکرد عملیات مختلف در یک برنامه ارائه میکنه و دولوپر ها رو قادر میسازه تا Bottleneck رو شناسایی، کد رو بهینه و معیارهای کلیدی مثل تاخیرهای حلقه رویداد، زمان‌های اجرای عملکرد و موارد دیگه رو نظارت کنن.

ماژول «perf_hooks» در درجه اول بر روی اندازه‌گیری‌های عملکرد با وضوح بالا تمرکز داره. مثلا با استفاده از روش «performance.now()»، دولوپر ها میتونن فواصل زمانی دقیق تا میکروثانیه رو اندازه‌گیری کنن که برای ردیابی مدت زمان انجام عملیات خاص مفید هست.

- مثال:

     const { performance } = require('perf_hooks');
const start = performance.now();
// Execute some code here
const end = performance.now();
console.log(`Execution took ${end - start} milliseconds.`);


به صورت کلی ماژول perf_hooks ابزارهای ضروری رو برای درک و بهینه سازی عملکرد برنامه به دولوپر های Node.js، ارائه میده. با ارائه معیارهای دقیق در زمان‌بندی، تاخیرهای حلقه رویداد و استفاده از حافظه، به دولوپر ها کمک میکنه تا مشکلات عملکرد رو تشخیص داده و کارایی برنامه رو افزایش بدن. برای اطلاعات بیشتر به داکیومنت این ماژول مراجعه کنید.

#nodejs
@CodeModule
اگر تا امروز موفق به نصب نسخه تست‌فلایت اپ #هیدیفای در #آیفون نشدین، از طریق لینک زیر اقدام کنین:

👉 https://testflight.apple.com/join/URrT6ZWm

🔍 ircf.space/software.php
@ircfspace
اگر تا امروز موفق به نصب نسخه تست‌فلایت اپ #هیدیفای در #آیفون نشدین، از طریق لینک زیر اقدام کنین:

👉 testflight.apple.com/join/URrT6ZWm

🔍 ircf.space/software.php
@ircfspace
Forwarded from IRCF
این‌ابزار کاربردی امکان اصلاح کانفیگ‌های Vless/Vmess پشت CDN رو با استفاده از رنج آی‌پی‌های کلودفلر یا آی‌پی‌های موردنظر فراهم میکنه.

👉 seramo.github.io/v2ray-config-modifier
💡 github.com/seramo/v2ray-config-modifier
© seramo_ir

🔍 ircf.space
@ircfspace
Forwarded from CleverDevs (Mammad)
کامند های artisan توی لاراول 11

#php #laravel
@CleverDevs - @CleverDevsGp
Forwarded from CleverDevs (Mammad)
Forwarded from CleverDevs (Mammad)
Forwarded from CleverDevs (Mammad)
Forwarded from CleverDevs (Mammad)
تغییرات جدید برای پلاسما ۶.۲

این هفته در پلاسما

https://pointieststick.com/2024/09/07/this-week-in-plasma-stabilization-for-6-2/

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


@SohrabContents
Forwarded from Linuxor ?
اینارو بعدا قراره خیلی توی خونه ها ببینید.


بهشون میگن Mesh مِش، کارشون افزایش ناحیه تحت پوشش سیگنال Wi-Fi هست. مثلا اگه یه خونه با متراژ خیلی بزرگ دارید یه مودم اگه همه نقاط خونه رو آنتن نده، میتونید بجای تنها یک مودم اصلی، توی هر نقطه از خونه یه مش بزارید، مش ها بی سیم یا باسیم به هم دیگه وصل میشن و باعث میشن کل خونه Wi-Fi آنتن بده.


ایده مش توی دانشگاه ها و دفاتر خیلی استفاده میشه ولی برای استارلینک هم استفاده خواهد شد به این صورت که کافیه که روتر استارلینک روی پشت بوم باشه و هر طبقه یدونه از این دستگاه ها داشته باشه، حتی میشه باهاش ساختمون های اطراف هم از یه استارلینک مشترک استفاده کنن.


🐧 @Linuxor
‏هک کردن با ابزار های کالی لینوکس قبول نیست :(
آدم باید یاد بگیره خودش نفوذ کنه
کی برسه اون روز :(

<ولمار/>

@DevTwitter