Forwarded from tech-afternoon (Amin Mesbahi)
🧪 مفهوم و کاربرد API Mocking & Virtualization
خیلی از سردردها از نداشتن محیط اجرای مناسب نشأت میگیره؛ و خیلی از محیط خوب نداشتنها از ترس پیچیده یا زمانبر بودنِ پیادهسازی. از طرف دیگه خیلی از integration ها با آسودگی و سرعت پیش نمیرن؛ چون API سیستمِ دیگه، شفاف نیست، یا محیط test نداره.
شنیدن جمله "منتظرم API شون آماده شه!" چیز غریب و نادری نیست! ولی واقعیت اینه که توی تیمهای بالغ، منتظر نمیمونن، mock میکنن، یا قبل از توسعه API واقعی، اول API Spec رو مینویسن و در اختیار تیمهای دیگه قرار میدن. اگر هم خیلی بالغ باشن که به جز API Spec ساز و کارkey management برای محیطهای dev/test/stage/production رو هم محیا و ارائه میکنن.
بیاین در گام اول بیخیالِ میزان بلوغ تیم مقابل بشیم و خودمون رفتارهای بالغانه در تیم داشته باشیم:
مفهوم Mocking و Virtualization یعنی ساخت یه نسخهی شبیهسازیشده از سرویسها، قبل از اینکه backend واقعی در دسترس باشه. این کمک میکنه تا فرانتاند یا بکندی که API رو صدا میکنه، یا تست خودکار، و حتی همزمانی توسعه بین تیمها سریعتر بشه.
🚦 چرا مهمه؟
- کاهش وابستگیها: تیمها میتونن موازی کار کنن.
- بهبود تست و استیجینگ: سناریوهای خطا و پاسخهای خاص قابل بازسازی هستن.
- تکرارپذیری: تستها بدون وابستگی به دادههای زنده انجام میشن.
- پیشرفت بدون صبر: تا backend آماده بشه، frontend یا consumer هم رشد میکنه.
🧰 ابزارها
۱: ابزار Mockoon
رایگانه، دسکتاپ اپلیکیشن با رابط گرافیکی خوب است (نسخه مک و ویندوز داره) نسخه CLI هم داره.
۲: ابزار WireMock
یکی از بهترین ابزارها بود تا اینکه نسخه رایگان و پولی منتشر کرد! هنوز هم از نظر قابلیتها ابزار خیلی خوبیه و مثلا rule-based mock، یا fault simulation رو خیلی خوب پشتیبانی میکنه.
۳: ابزار Microcks
هنوز به بلوغ WireMock نرسیده ولی ابزار خیلی خوبیه، یه UI وب ساده هم داره ولی هنوز کامل نیست (مثلا اینکه بتونید با UI انواع payloadها رو تعریف کنید یا chain بسازید رو نداره.
۴: ابزار (سرویس) Postman Mock Server
خب پستمن دیگه برای همه شناخته شده است، ولی سرویسها انترپرایزش نیاز به لایسنس داره چون نسخه رایگان همین mock server فقط ۳ کاربر رو پشتیبانی میکنه و محدودیتهای زیادی داره.
چجوری payload رو محیا کنیم؟
۱. استخراج از مستندات موجود
اگر تیم backend مستندات OpenAPI/Swagger داره، راحتترین راهه:
حتی اگر schema دقیق نباشه، حداقل مسیرها و ساختار پایه آمادهست.
۲. Sniff کردن درخواستها در زمان کار
اگه endpointها در محیط تست یا staging یا جایی که بتونین حداقل یک بار صداشون کنین در دسترس هستن؛ ولی مستندات ندارن:
از Fiddler, Charles, یا mitmproxy یا ابزارهای مشابه استفاده کنید برای کپی کردن و استخراج درخواستها و پاسخها. بعد اونها رو به JSON تبدیل و برای mock استفاده کنین.
(یه snapshot واقعی از تعامل سیستمهاست)
۳. تولید خودکار مدل از JSON
وقتی چند تا نمونه JSON داری ولی model نه:
ابزارهای زیادی از جمله خود IDE های رایج سریع JSON رو به تایپ تبدیل میکنن و این کمک میکنه تا schema بسازین و بر اساس اون mock بنویسین.
۴. ساخت چند سناریو
فقط happy path رو mock نکن! یعنی اینکه همه چیز خیلی خوب و باب طبع باشه کافی نیست؛ سناریوهای مختلف مثل انواع خطاهای کد 4xx یا 5xx یا کندیها یا تاماوت یا... رو هم در mockهات بسازین.
جمعبندی
فراموش نکنین که Mocking فقط یه کار “موقتی” نیست، یه مهارت توسعهی تیمیه برای استقلال، سرعت و کیفیت. وقتی payloadها درست جمعآوری بشن، Mocking تبدیل میشه به پلی بین توسعه، تست و واقعیت سیستم.
💬 اگر موضوعاتی مثل Governance and Standardization یا API-First یا API Monitoring براتون جذاب بود حتمن بگید تا کمی در موردشون گپ بزنیم.
خیلی از سردردها از نداشتن محیط اجرای مناسب نشأت میگیره؛ و خیلی از محیط خوب نداشتنها از ترس پیچیده یا زمانبر بودنِ پیادهسازی. از طرف دیگه خیلی از integration ها با آسودگی و سرعت پیش نمیرن؛ چون API سیستمِ دیگه، شفاف نیست، یا محیط test نداره.
شنیدن جمله "منتظرم API شون آماده شه!" چیز غریب و نادری نیست! ولی واقعیت اینه که توی تیمهای بالغ، منتظر نمیمونن، mock میکنن، یا قبل از توسعه API واقعی، اول API Spec رو مینویسن و در اختیار تیمهای دیگه قرار میدن. اگر هم خیلی بالغ باشن که به جز API Spec ساز و کارkey management برای محیطهای dev/test/stage/production رو هم محیا و ارائه میکنن.
بیاین در گام اول بیخیالِ میزان بلوغ تیم مقابل بشیم و خودمون رفتارهای بالغانه در تیم داشته باشیم:
مفهوم Mocking و Virtualization یعنی ساخت یه نسخهی شبیهسازیشده از سرویسها، قبل از اینکه backend واقعی در دسترس باشه. این کمک میکنه تا فرانتاند یا بکندی که API رو صدا میکنه، یا تست خودکار، و حتی همزمانی توسعه بین تیمها سریعتر بشه.
🚦 چرا مهمه؟
- کاهش وابستگیها: تیمها میتونن موازی کار کنن.
- بهبود تست و استیجینگ: سناریوهای خطا و پاسخهای خاص قابل بازسازی هستن.
- تکرارپذیری: تستها بدون وابستگی به دادههای زنده انجام میشن.
- پیشرفت بدون صبر: تا backend آماده بشه، frontend یا consumer هم رشد میکنه.
🧰 ابزارها
۱: ابزار Mockoon
رایگانه، دسکتاپ اپلیکیشن با رابط گرافیکی خوب است (نسخه مک و ویندوز داره) نسخه CLI هم داره.
۲: ابزار WireMock
یکی از بهترین ابزارها بود تا اینکه نسخه رایگان و پولی منتشر کرد! هنوز هم از نظر قابلیتها ابزار خیلی خوبیه و مثلا rule-based mock، یا fault simulation رو خیلی خوب پشتیبانی میکنه.
۳: ابزار Microcks
هنوز به بلوغ WireMock نرسیده ولی ابزار خیلی خوبیه، یه UI وب ساده هم داره ولی هنوز کامل نیست (مثلا اینکه بتونید با UI انواع payloadها رو تعریف کنید یا chain بسازید رو نداره.
۴: ابزار (سرویس) Postman Mock Server
خب پستمن دیگه برای همه شناخته شده است، ولی سرویسها انترپرایزش نیاز به لایسنس داره چون نسخه رایگان همین mock server فقط ۳ کاربر رو پشتیبانی میکنه و محدودیتهای زیادی داره.
چجوری payload رو محیا کنیم؟
۱. استخراج از مستندات موجود
اگر تیم backend مستندات OpenAPI/Swagger داره، راحتترین راهه:
curl https://api.company.com/openapi.json -o spec.json
mockoon-cli import --data spec.json
حتی اگر schema دقیق نباشه، حداقل مسیرها و ساختار پایه آمادهست.
۲. Sniff کردن درخواستها در زمان کار
اگه endpointها در محیط تست یا staging یا جایی که بتونین حداقل یک بار صداشون کنین در دسترس هستن؛ ولی مستندات ندارن:
از Fiddler, Charles, یا mitmproxy یا ابزارهای مشابه استفاده کنید برای کپی کردن و استخراج درخواستها و پاسخها. بعد اونها رو به JSON تبدیل و برای mock استفاده کنین.
(یه snapshot واقعی از تعامل سیستمهاست)
۳. تولید خودکار مدل از JSON
وقتی چند تا نمونه JSON داری ولی model نه:
ابزارهای زیادی از جمله خود IDE های رایج سریع JSON رو به تایپ تبدیل میکنن و این کمک میکنه تا schema بسازین و بر اساس اون mock بنویسین.
۴. ساخت چند سناریو
فقط happy path رو mock نکن! یعنی اینکه همه چیز خیلی خوب و باب طبع باشه کافی نیست؛ سناریوهای مختلف مثل انواع خطاهای کد 4xx یا 5xx یا کندیها یا تاماوت یا... رو هم در mockهات بسازین.
جمعبندی
فراموش نکنین که Mocking فقط یه کار “موقتی” نیست، یه مهارت توسعهی تیمیه برای استقلال، سرعت و کیفیت. وقتی payloadها درست جمعآوری بشن، Mocking تبدیل میشه به پلی بین توسعه، تست و واقعیت سیستم.
Please open Telegram to view this post
VIEW IN TELEGRAM
Mockoon
Mockoon - Create mock APIs in seconds with Mockoon
Mockoon is the easiest and quickest way to run mock REST API servers. No remote deployment, no account required, free, open source and cross-platform.
Forwarded from Linuxor ?
ساختن پروژه اوپن سورس توی گیتهاب یا هر جایی یه فرهنگی داره، مثلا اینکه چطوری کانتریبیوت کنیم، چطوری اصلا خودمون پروژه اوپن سورس بسازیم و یا چطوری کاربر برای پروژمون پیدا کنیم، اینجا قوانین و روش هاشو نوشته خیلی کوتاه و مفید هم هستن :
opensource.guide
@Linuxor
opensource.guide
@Linuxor
مثلا آینده توی این کلاس های موفقیت میگم تا وقتی پشت پاتون پینه نزده از راه رفتن به این اداره و اون اداره و شرکت به شرکت موفقیت رو بیخیال بشین
🔥1
Forwarded from DevTwitter | توییت برنامه نویسی
تقریبا تمام کدهایی که در گیتهاب وجود دارند، fine tune یک LLM رو به شما یاد میدن. در طی دو روز گذشته من درگیر این پروژه شدم که pretrain یک LLM رو یادتون میده:
https://github.com/prp-e/minillm
و صدالبته یه مدل کوچک هم باهاش پریترین کردم که میتونید تست کنید.
@DevTwitter | <Muhammadreza Haghiri/>
https://github.com/prp-e/minillm
و صدالبته یه مدل کوچک هم باهاش پریترین کردم که میتونید تست کنید.
@DevTwitter | <Muhammadreza Haghiri/>
Forwarded from Linuxor ?
اگه از با ++C کد میزنی و حس میکنی یکم کد زدن سخته نگران نباش چون توی زبان هایی مثل ++C ناخودآگاه آدم به سمت ساخت از نوی چرخ میره، گوگل کل تجربه هاشو توی یه لایبری و یا مجموعه ابزار به اسم abseil قرار داده، از مدیریت زمان بگیر تا رشتهها، همزمانی، کانتینرها و هشها کلی کارتون رو جلو میندازه
مستنداتش اینجاست :
abseil.io/docs/cpp
این کتابی هم که می بینید توش روش گوگل روش هایی از مهندسی نرم افزار رو گفته که توی استفاده abseil بدرتون میخوره، لینک کتاب :
abseil.io/resources/swe-book
@Linuxor
مستنداتش اینجاست :
abseil.io/docs/cpp
این کتابی هم که می بینید توش روش گوگل روش هایی از مهندسی نرم افزار رو گفته که توی استفاده abseil بدرتون میخوره، لینک کتاب :
abseil.io/resources/swe-book
@Linuxor
Forwarded from DevTwitter | توییت برنامه نویسی
زیر 10 دقیقه؛
با توجه به اینکه قبلا Gemini Pro رو گرفتیم؛
اینجا Perplexity PRO رو میگیریم...
یکساله | رایگان
لینک ویدیو:
https://www.youtube.com/watch?v=0p6dZ1NPecc&list=PLwUWEGKy5kyNrPv05-Asbhm6g6S8_eRPb&index=16
@DevTwitter | <Ryan Heida/>
با توجه به اینکه قبلا Gemini Pro رو گرفتیم؛
اینجا Perplexity PRO رو میگیریم...
یکساله | رایگان
لینک ویدیو:
https://www.youtube.com/watch?v=0p6dZ1NPecc&list=PLwUWEGKy5kyNrPv05-Asbhm6g6S8_eRPb&index=16
@DevTwitter | <Ryan Heida/>
Forwarded from ذهن زیبا - A beautiful Mind
طراحی UI گرچه قبلتر با هوش مصنوعی امکانپذیر بود اما الان «صرفا با یک پرامپت» و بدون تغییر خاصی، با کمک Gemini Flash Image یا همون Nano Banana میتونید چنین چیزی طراحی کنید. سوال پیش میاد چطور میشه از این به محصول رسید؟
این مسالهایه که نیاز به بررسی داره :)
@haghiri75_blog
این مسالهایه که نیاز به بررسی داره :)
@haghiri75_blog
Forwarded from ذهن زیبا - A beautiful Mind
در حالی که یک سری در توییتر میخوان این فیچر رو به صورت پولی یادتون بدن خود گوگل رایگانش کرده :)
https://www.youtube.com/watch?v=KW_n1u429uI
استفاده کنید.
@haghiri75_blog
https://www.youtube.com/watch?v=KW_n1u429uI
استفاده کنید.
@haghiri75_blog
YouTube
Google Just Cloned Lovable (And Made It Free)
⚡Build Your AI Agency & Land Your First Client ⚡
https://www.skool.com/chase-ai
🔥 FREE Skool community with all the templates! 🔥
https://www.skool.com/chase-ai-community
💻 Need custom work? Book a consult 💻
https://chaseai.io
Google just launched AI Studio…
https://www.skool.com/chase-ai
🔥 FREE Skool community with all the templates! 🔥
https://www.skool.com/chase-ai-community
💻 Need custom work? Book a consult 💻
https://chaseai.io
Google just launched AI Studio…
ذهن زیبا - A beautiful Mind
در حالی که یک سری در توییتر میخوان این فیچر رو به صورت پولی یادتون بدن خود گوگل رایگانش کرده :) https://www.youtube.com/watch?v=KW_n1u429uI استفاده کنید. @haghiri75_blog
اسمش اسکل کامیونیتیه
فکر کنم تنها کامیونیتی باشه که کسی توی ایران نگه من جزوشم
فکر کنم تنها کامیونیتی باشه که کسی توی ایران نگه من جزوشم
Forwarded from Linuxor ?
This media is not supported in your browser
VIEW IN TELEGRAM
اگه بتونید یه برنامه وب Node.js بسازین، ساختن نسخه اجرایی ویندوز و لینوکس و مکش کاری نداره با nexe میشه این کارو کرد. خیلی کاربردیه به خصوص برای زمانی که نمیخواید برای توسعه برنامه برای سیستم عامل های متفاوت وقت بذارید:
github.com/nexe/nexe
@Linuxor
github.com/nexe/nexe
@Linuxor
Forwarded from پک پکیج 💾
ریفکتورینگ در برنامه نویسی Refactoring
💜 سایت : کدیاد
✅ مدرس : ساسان صفری
⏬ جهت دانلود ⏫
https://t.iss.one/p_4kbot?start=d30a4c8ab283
پسورد فایل
@P4_ir
https://t.iss.one/p_4kbot?start=d30a4c8ab283
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from DevTwitter | توییت برنامه نویسی
چرا از pnpm به جای npm استفاده کنیم؟
جوابش سادست. فرض کنید ده تا پروژه روی کامپیوتر خودتون در دست توسعه دارید که از node modules استفاده میکنن.
️ قطعا بین این ده تا پروژه تعداد زیادی پکیج مشابه و مشترکه، اما اگر از npm استفاده کنید:
۱- همه پکیج ها توی هر یک از پروژه ها هر بار نصب میشن و نتیجتا شما پکیج های مشابه رو برا هر پروژه دوباره و دوباره دانلود میکنید.
۲- همچنین نهایتا روی دیسکتون از هر پکیج مشترک ده تا کپی خواهید داشت که بهینه نیست.
حالا pnpm چیکار میکنه؟
میاد و به جای این که این ماژول هارو هر بار توی فولدر هر پروژه ذخیره کنه، توی یک دایرکتوری مرکزی ذخیره میکنه و صرفا به هر پروژه ای که به اون دپندنسی نیاز داره لینکش میکنه.
اینطوری شما برای پروژه های مختلف مجبور نیستید پکیج هایی که قبلا یک بار نصبشون کردید رو مجددا نصب کنید و یک کپی جدید ازش روی دیسکتون ذخیره کنید، در نتیجه از نظر مدیریت حافظه و سرعت نصب قطعا جلو میوفتید.
البته مزایای دیگه ای هم داره که میتونید تو داکیومنت خود pnpm بخونید:
https://pnpm.io/pnpm-vs-npm
@DevTwitter | <Omid Baharifar/>
جوابش سادست. فرض کنید ده تا پروژه روی کامپیوتر خودتون در دست توسعه دارید که از node modules استفاده میکنن.
️ قطعا بین این ده تا پروژه تعداد زیادی پکیج مشابه و مشترکه، اما اگر از npm استفاده کنید:
۱- همه پکیج ها توی هر یک از پروژه ها هر بار نصب میشن و نتیجتا شما پکیج های مشابه رو برا هر پروژه دوباره و دوباره دانلود میکنید.
۲- همچنین نهایتا روی دیسکتون از هر پکیج مشترک ده تا کپی خواهید داشت که بهینه نیست.
حالا pnpm چیکار میکنه؟
میاد و به جای این که این ماژول هارو هر بار توی فولدر هر پروژه ذخیره کنه، توی یک دایرکتوری مرکزی ذخیره میکنه و صرفا به هر پروژه ای که به اون دپندنسی نیاز داره لینکش میکنه.
اینطوری شما برای پروژه های مختلف مجبور نیستید پکیج هایی که قبلا یک بار نصبشون کردید رو مجددا نصب کنید و یک کپی جدید ازش روی دیسکتون ذخیره کنید، در نتیجه از نظر مدیریت حافظه و سرعت نصب قطعا جلو میوفتید.
البته مزایای دیگه ای هم داره که میتونید تو داکیومنت خود pnpm بخونید:
https://pnpm.io/pnpm-vs-npm
@DevTwitter | <Omid Baharifar/>
👍1
Forwarded from DevTwitter | توییت برنامه نویسی
این ریپو Gini Impurity منه که که پارسال برای پروژه درس دادهکاوی دانشگاه درستش کرده بودم و الان رتبه اول گیتهاب تاپیک شده و از نظر ستاره محبوب ترین ریپو گیتهاب من هم هست.
شامل یک اسکریپت محاسبه شاخص جینی بصورت کلاسیک و یک مدل تکامل یافته که ابداع خودم بوده.
کاربرد شاخص جینی در درخت های تصمیم و پیش پردازش دیتاست ها است و ... خیلی چیز های دیگه.
داخل ریپو یک فایل PDF بصورت جزوه هست(به زبان انگلیسی) که صفر تا 99 درصد کار رو توضیح میده و برای دانشجوهایی که مثل من پروژه و ارائه داشتن عالیه
github.com/a-partovii/Gini-Impurity
@DevTwitter | <Ashkan-P/>
شامل یک اسکریپت محاسبه شاخص جینی بصورت کلاسیک و یک مدل تکامل یافته که ابداع خودم بوده.
کاربرد شاخص جینی در درخت های تصمیم و پیش پردازش دیتاست ها است و ... خیلی چیز های دیگه.
داخل ریپو یک فایل PDF بصورت جزوه هست(به زبان انگلیسی) که صفر تا 99 درصد کار رو توضیح میده و برای دانشجوهایی که مثل من پروژه و ارائه داشتن عالیه
github.com/a-partovii/Gini-Impurity
@DevTwitter | <Ashkan-P/>
Forwarded from DevTwitter | توییت برنامه نویسی
This media is not supported in your browser
VIEW IN TELEGRAM
بهتازگی با Mage-UI آشنا شدم
مجموعهای از کامپوننتهای رابط کاربری که طراحی مدرن، انیمیشنهای نرم و افکتهای چشمنواز رو با سادهترین روش ممکن ترکیب کرده.
چیزی که منو جذب کرد اینه که فقط با یه copy-paste ساده میتونی جلوههایی حرفهای و مدرن به پروژههات اضافه کنی، بدون نیاز به تنظیمات پیچیده یا وابستگیهای سنگین.
برای توسعهدهندهها و طراحهایی که دنبال سادگی، خلاقیت و سرعت هستن، Mage-UI یه ابزار کمنظیره برای ساخت تجربههای کاربری زنده و جذاب.
لینکش هم که اینجاست
mageui.live
@DevTwitter | <Abolfazl Shekarshekan/>
مجموعهای از کامپوننتهای رابط کاربری که طراحی مدرن، انیمیشنهای نرم و افکتهای چشمنواز رو با سادهترین روش ممکن ترکیب کرده.
چیزی که منو جذب کرد اینه که فقط با یه copy-paste ساده میتونی جلوههایی حرفهای و مدرن به پروژههات اضافه کنی، بدون نیاز به تنظیمات پیچیده یا وابستگیهای سنگین.
برای توسعهدهندهها و طراحهایی که دنبال سادگی، خلاقیت و سرعت هستن، Mage-UI یه ابزار کمنظیره برای ساخت تجربههای کاربری زنده و جذاب.
لینکش هم که اینجاست
mageui.live
@DevTwitter | <Abolfazl Shekarshekan/>
Forwarded from EFN
مهدی اینو بزار تو کانال میتونن یک دوره رو بصورت کاملا رایگان دریافت کنن
Forwarded from EFN
Forwarded from سید فرندز / برنامه نویسی / هک و امنیت / تکنولوژی
CVE-2025-64095
CVE-2025-59287
CVE-2025-53770
CVE-2019-18935
که مربوط به ویندوز هم هستند و این یعنی فاجعه!
البته یک پیامی هم داشت :
یادآوری راهبردی برای تحلیلگران امنیت
معیار سنجش توانمندی یک جنگجو در میدان نبرد، صرفاً بر اساس قدرت حمله نیست؛ بلکه دفاع مؤثر و هوشمندانه بخش مهمی از مهارتهای او را تشکیل میدهد. نیازی نیست با ادعای شکار گروههای APT نظیر APT15 خود را مطرح کنید؛ آنچه اهمیت دارد، توانایی درک تهدیدات، پیشگیری از نفوذ، و محافظت از داراییهای اطلاعاتی کشور است.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2