🚀 پکیج GPDF یک پکیج PHP/Laravel برای تولید PDFهای عربی، راستچین (RTL) و چندزبانه است که بهصورت بومی از ۱۷ فونت عربی داخلی پشتیبانی میکند. این پکیج با پشتیبانی از فضای ابری S3 بر اساس DomPDF توسعه یافته و مشکلات رندر متن عربی را حل کرده است، در عین حال قابلیتهای مدرنی را برای اسناد، فاکتورها و گزارشها اضافه میکند.
https://github.com/omaralalwi/Gpdf
#package
@panicdev
https://github.com/omaralalwi/Gpdf
#package
@panicdev
GitHub
GitHub - omaralalwi/Gpdf: Gpdf: PHP PDF Generator - HTML to PDF Converter for Laravel & PHP with native Arabic/RTL support, with…
Gpdf: PHP PDF Generator - HTML to PDF Converter for Laravel & PHP with native Arabic/RTL support, with built-in 17 fonts, and S3 storage. Extends DomPDF to fix Arabic limitations and add ad...
🔥9👍4
حتماً برات پیش اومده که بخوای از سرورهای ایران به وبسرویس رباتهای تلگرام وصل بشی، ولی همیشه کلی دردسر داشتی. خوب، یه راهحل ساده، رایگان و بیدردسر برات دارم که میتونی راحت ازش استفاده کنی! 🚀
❔ راه حل چیه؟
✅ Cloudflare Workers
سرویس Cloudflare Workers این امکان رو بهت میده که یه قطعه کد یا پروژه رو روی سابدامین خودت یا حتی سابدامین workers.dev (که خود کلادفلر ارائه میده) اجرا کنی. این سرویس کاملاً رایگانه و استفاده ازش خیلی سادهست.
🎯 چطور راهاندازی کنیم؟
خیلی راحت:
1. تو Cloudflare ثبتنام کن.
2. یه Worker جدید بساز.
3. این کد رو توش کپی کن:
🚀 چطور ازش استفاده کنیم؟
وقتی Worker رو دیپلوی کردی، یه دامنه اختصاصی براش میگیری. حالا کافیه بهجای این که درخواستهات رو به
💡 چرا این روش عالیه؟
✅ کاملاً رایگان و بدون نیاز به سرور
✅ نیازی نیست کدهای اصلی باتت رو تغییر بدی
✅ سرعت بالا و بدون محدودیت دسترسی
✅ امکان استفاده روی دامنه اختصاصی
برای جزئیات بیشتر، یه سر به مستندات Cloudflare Workers بزن. 😉
Happy Coding! 🥳
@PanicDev
سرویس Cloudflare Workers این امکان رو بهت میده که یه قطعه کد یا پروژه رو روی سابدامین خودت یا حتی سابدامین workers.dev (که خود کلادفلر ارائه میده) اجرا کنی. این سرویس کاملاً رایگانه و استفاده ازش خیلی سادهست.
🎯 چطور راهاندازی کنیم؟
خیلی راحت:
1. تو Cloudflare ثبتنام کن.
2. یه Worker جدید بساز.
3. این کد رو توش کپی کن:
export default {
async fetch(request, env, ctx) {
const requestClone = request.clone();
try {
const url = new URL(request.url);
const targetUrl = `https://api.telegram.org${url.pathname}${url.search}`;
const telegramRequest = new Request(targetUrl, {
method: request.method,
headers: request.headers,
body: request.method !== 'GET' && request.method !== 'HEAD' ? await requestClone.blob() : undefined,
});
const response = await fetch(telegramRequest);
return new Response(await response.clone().blob(), {
status: response.status,
statusText: response.statusText,
headers: response.headers,
});
} catch (error) {
return new Response(`Proxy Error: ${error.message}`, { status: 500 });
}
},
};🚀 چطور ازش استفاده کنیم؟
وقتی Worker رو دیپلوی کردی، یه دامنه اختصاصی براش میگیری. حالا کافیه بهجای این که درخواستهات رو به
api.telegram.org بفرستی، به دامنه Worker خودت بفرستی و همون جواب رو بگیری. 🎉💡 چرا این روش عالیه؟
✅ کاملاً رایگان و بدون نیاز به سرور
✅ نیازی نیست کدهای اصلی باتت رو تغییر بدی
✅ سرعت بالا و بدون محدودیت دسترسی
✅ امکان استفاده روی دامنه اختصاصی
برای جزئیات بیشتر، یه سر به مستندات Cloudflare Workers بزن. 😉
Happy Coding! 🥳
@PanicDev
Please open Telegram to view this post
VIEW IN TELEGRAM
Cloudflare
Cloudflare Workers
Welcome to the Cloudflare Dev Platform - Powering the next generation of applications
🔥12👍10❤🔥5
واقعا بعضیا خودشونو مسخره کردن 😐
بعد همینا میگن :
بابا ما آگهی میزنیم نیرو کار نیست .
دیگه کسی کار نمیکنه
یا همه روزمه هایی که میفرستن سطح پایین جونیور
بعد همینا میگن :
بابا ما آگهی میزنیم نیرو کار نیست .
دیگه کسی کار نمیکنه
یا همه روزمه هایی که میفرستن سطح پایین جونیور
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣15👍3
#نکات دیتابیسی
شما یه جدول درست میکنی که تراکنش های هر کاربر رو ذخیره میکنه
مثلا میگه کاربر شماره X امده ۲۰ دلار در تاریخ فلان تراکنش انجام داده .
بعد اینو به زیبایی با یک میلیون رکورد پر میکنید . به وسیله PROCEDURE عزیز .
حالا نکته اینه که میخوایم ببینیم یه کوئری مثل این چقدر زمان لازم داره .
تا به ما بگه که هر کاربر در مجموع چقدر تراکنش داشته
به صورت یک گزارش .
خوب این کوئری ظاهرا ۱۵۰ ثانیه زمان لازم داره
چیکار کنیم ۱۵۰ ثانیه بشه ۲ ثانیه
@panicdev
شما یه جدول درست میکنی که تراکنش های هر کاربر رو ذخیره میکنه
مثلا میگه کاربر شماره X امده ۲۰ دلار در تاریخ فلان تراکنش انجام داده .
بعد اینو به زیبایی با یک میلیون رکورد پر میکنید . به وسیله PROCEDURE عزیز .
حالا نکته اینه که میخوایم ببینیم یه کوئری مثل این چقدر زمان لازم داره .
تا به ما بگه که هر کاربر در مجموع چقدر تراکنش داشته
به صورت یک گزارش .
SELECT user_id, SUM(amount) AS total_amount
FROM transactions
GROUP BY user_id;
خوب این کوئری ظاهرا ۱۵۰ ثانیه زمان لازم داره
چیکار کنیم ۱۵۰ ثانیه بشه ۲ ثانیه
@panicdev
گفتند که بیایم بر اساس transaction_date
جدول و پارتیشن بندی کنیم .
اینجوری سرعت کوئری از ۸۰ میرسه به ۲۰ .
من خودم روی صحت این قضیه شک دارم . چون که برای کوئری کلی مثل این ( گزارش تمام کاربر ها در تمام سال هارو بخوایم بگیریم ). نباید تاثیر خاصی داشته باشه .
ولی در عوض اگه بگیم گزارش همه کاربر هارو برای سال ۲۰۲۱ بده . خیلی باید تاثیر گذار و سریع باشه .
نظر شما چیست ؟
@panicdev
جدول و پارتیشن بندی کنیم .
اینجوری سرعت کوئری از ۸۰ میرسه به ۲۰ .
من خودم روی صحت این قضیه شک دارم . چون که برای کوئری کلی مثل این ( گزارش تمام کاربر ها در تمام سال هارو بخوایم بگیریم ). نباید تاثیر خاصی داشته باشه .
ولی در عوض اگه بگیم گزارش همه کاربر هارو برای سال ۲۰۲۱ بده . خیلی باید تاثیر گذار و سریع باشه .
نظر شما چیست ؟
@panicdev
خوبه ، دوستان اشارات خوبی کردن ، مچکریم
بعله ، میریم سراغ Materialized
اینجا میگه یه جدول جدا میکنی روی
بعد یه cron درست میکنی برای اونت
که این میاد scheduler میکنه ، هر یک ساعت یکبار ، محاسبات رو مجدد روی جدول انجام بده
و جدول شبه Materialized رو براتون آپدیت کنه .
الان میتونید از این کوئری بگیرید در حد ۲ ثانیه خروجی رو ببینید.
@panicdev
بعله ، میریم سراغ Materialized
اینجا میگه یه جدول جدا میکنی روی
user_transaction_sumsبعد یه cron درست میکنی برای اونت
update_user_sumsکه این میاد scheduler میکنه ، هر یک ساعت یکبار ، محاسبات رو مجدد روی جدول انجام بده
و جدول شبه Materialized رو براتون آپدیت کنه .
الان میتونید از این کوئری بگیرید در حد ۲ ثانیه خروجی رو ببینید.
@panicdev
👍4
آقا ، دید مثلا این سایت های بزرگ
وقتی یه درخواستی میزنی ، به هر دلیلی میخوره تو دیوار ، یه پیام نشونت میده .
میگه که این درخواست شما رفت تو دیوار ،
این UUID خدمت شما (که مربوط به درخواست میشه ) بردار ببر پشتیبانی پیگیری کن
حالا سوال پیش میاد که این UUID چی هست ؟
و چطور از روی اون میفهمن که شما بودید و چیکار داشتید میکردید که به این خطا خوردید .
خوب یه بنده خدایی امده مفهوم Context رو معرفی کنه .
و این مثال رو زده ،
گفته شما میتونید در ابتدای امر یه UUID بسازید و به درخواست اتچ کنید .
و این رو در جاهای مختلف که خواستید لاگ بندازید ازش استفاده کنید .
مثلا :
یه API کال میشه . اینو همون اول اتچ میکنید به API و هرجایی که خواستید لاگ بندازید .
اینو از Context برمیدارید و لاگ و همراه با متعلقاتش و این UUID ثبت میکنید .
(شاید بگید من همونو مریزم داخل request ، از همون جا هم بر میدارم ، Context نمندی .
خوبه ولی جاهایی مثل جاب ها دیگه بهش دسترسی نداری. )
آما ،
یه نکته به چشم خورد (تصویر دوم )
امده گفته که شما میتونی یه Middleware بنویسی و بزارید برای API تا بتونید Status , response time اینارو در بیارید به Context اضافه کنید .
ولی بنظرتون این کد درسته ؟ و جای درستی نوشته شده ؟
@panicdev
وقتی یه درخواستی میزنی ، به هر دلیلی میخوره تو دیوار ، یه پیام نشونت میده .
میگه که این درخواست شما رفت تو دیوار ،
این UUID خدمت شما (که مربوط به درخواست میشه ) بردار ببر پشتیبانی پیگیری کن
حالا سوال پیش میاد که این UUID چی هست ؟
و چطور از روی اون میفهمن که شما بودید و چیکار داشتید میکردید که به این خطا خوردید .
خوب یه بنده خدایی امده مفهوم Context رو معرفی کنه .
و این مثال رو زده ،
گفته شما میتونید در ابتدای امر یه UUID بسازید و به درخواست اتچ کنید .
و این رو در جاهای مختلف که خواستید لاگ بندازید ازش استفاده کنید .
مثلا :
یه API کال میشه . اینو همون اول اتچ میکنید به API و هرجایی که خواستید لاگ بندازید .
اینو از Context برمیدارید و لاگ و همراه با متعلقاتش و این UUID ثبت میکنید .
(شاید بگید من همونو مریزم داخل request ، از همون جا هم بر میدارم ، Context نمندی .
خوبه ولی جاهایی مثل جاب ها دیگه بهش دسترسی نداری. )
آما ،
یه نکته به چشم خورد (تصویر دوم )
امده گفته که شما میتونی یه Middleware بنویسی و بزارید برای API تا بتونید Status , response time اینارو در بیارید به Context اضافه کنید .
ولی بنظرتون این کد درسته ؟ و جای درستی نوشته شده ؟
@panicdev
👍3
🚀 امدیم با Flow PHP: جادوگر دادهها!
اگه فکر میکنی پردازش داده توی PHP دردسر داره، Flow PHP اومده که کارت رو راحت کنه! یه فریمورک سبک، سریع و با مصرف کم حافظه که حتی با کوهی از دادهها هم کم نمیاره! 😎
✨ ویژگیهای خفن:
🔹 حافظه کم مصرف: حتی با دادههای عظیم، مصرفش ثابته!
🔹 وصل شدن به هر منبع دادهای: دیتابیس، اکسل، فضای ابری؟ مشکلی نیست!
🔹 تغییر شکل داده با کلی فانکشن آماده! 🔄
🔹 پردازش مستقیم فایلهای راه دور (دیگه دانلود نمیخواد!)
🔹 گروهبندی، مرتبسازی، و حتی جدول ASCII برای دادهها! 😍
🔹 کش داخلی برای پردازش سریعتر 🚀
یه PHP 8.2+ فقط کافیه، بقیهشو Flow میسازه! 😏
🔗 لینک : https://flow-php.com
@panicdev
اگه فکر میکنی پردازش داده توی PHP دردسر داره، Flow PHP اومده که کارت رو راحت کنه! یه فریمورک سبک، سریع و با مصرف کم حافظه که حتی با کوهی از دادهها هم کم نمیاره! 😎
✨ ویژگیهای خفن:
🔹 حافظه کم مصرف: حتی با دادههای عظیم، مصرفش ثابته!
🔹 وصل شدن به هر منبع دادهای: دیتابیس، اکسل، فضای ابری؟ مشکلی نیست!
🔹 تغییر شکل داده با کلی فانکشن آماده! 🔄
🔹 پردازش مستقیم فایلهای راه دور (دیگه دانلود نمیخواد!)
🔹 گروهبندی، مرتبسازی، و حتی جدول ASCII برای دادهها! 😍
🔹 کش داخلی برای پردازش سریعتر 🚀
یه PHP 8.2+ فقط کافیه، بقیهشو Flow میسازه! 😏
🔗 لینک : https://flow-php.com
@panicdev
👍9🔥3❤🔥2
#متفرقه
۱. زندگی اسون نمیشه/ تو قوی میشی
۲. هیچکس به مشکلات شما اهمیت نمیده
۳. شما در یک جنگ چند بعدی نابرابر هستید
۴. بیشتر آدما شما رو دوست ندارن/ همه دنبال منافع خودشون هستن
۵. زندگی، همین لحظه های بدیهی و عادی هست که میزنیم جلو ببینیم چی میشه
۶. هر چیزی که به سمت تعالی نره، خود به خود به سمت تباهی میره
۷. زندگی بر اساس قدرت کار میکنه نه عدالت
۸. هیچ اتفاقی تصادفی نمیوفته
هر اتفاقی که میوفته
و هر اتفاقی که نمیوفته دلیل داره
@panicdev
۱. زندگی اسون نمیشه/ تو قوی میشی
۲. هیچکس به مشکلات شما اهمیت نمیده
۳. شما در یک جنگ چند بعدی نابرابر هستید
۴. بیشتر آدما شما رو دوست ندارن/ همه دنبال منافع خودشون هستن
۵. زندگی، همین لحظه های بدیهی و عادی هست که میزنیم جلو ببینیم چی میشه
۶. هر چیزی که به سمت تعالی نره، خود به خود به سمت تباهی میره
۷. زندگی بر اساس قدرت کار میکنه نه عدالت
۸. هیچ اتفاقی تصادفی نمیوفته
هر اتفاقی که میوفته
و هر اتفاقی که نمیوفته دلیل داره
@panicdev
👍27❤🔥4🕊1
🚀 ابزار DDEV: نجاتدهنده توسعه محلی!
🛠 دوست داری محیط توسعه خودت رو سریع و بیدردسر راه بندازی؟
💡 اگه تا حالا با Docker کار کردی، میدونی که میشه با چند تا ایمیج ساده یک محیط توسعه محلی ساخت. اما چرا وقتی DDEV هست، باید وقتت رو برای ساخت یه محیط دستی با Docker تلف کنی؟ 🤔
⚡️ مقایسه DDEV با ساخت دستی محیط توسعه با Docker
🔹 راهاندازی محیط توسعه دستی با Docker 🔨
✅ کنترل کامل روی تنظیمات
✅ شخصیسازی نامحدود
❌ باید تمام مشکلات رو خودت حل کنی
❌ پشتیبانی از تیم روی دوش تو هست
❌ ممکنه وقت زیادی ازت بگیره
🔹 استفاده از DDEV 🚀
✅ کاملاً متنباز، بدون قفل شدن به یک شرکت خاص
✅ بیش از ۶ سال توسعه و بهبود توسط جامعه
✅ پشتیبانی از Drupal، Laravel، WordPress، Magento، Shopware و...
✅ پشتیبانی از MySQL، MariaDB، PostgreSQL
✅ امکان استفاده روی macOS، Windows (WSL2)، Linux
✅دارای HTTPS داخلی برای هر پروژه
✅ امکان اجرای چند پروژه بهصورت همزمان
✅ برای Xdebug آماده به کار!
✅ قابلیت اضافه کردن امکاناتی مثل Redis، Elasticsearch، Apache Solr و...
---
🎯 نتیجهگیری؟ وقت خودتو تلف نکن!
😎 اگه نمیخوای همش درگیر تنظیمات Docker و پشتیبانی از تیم بشی، DDEV انتخاب عالیه!
با DDEV، بیشتر روی کدنویسی تمرکز کن، کمتر روی پیکربندی! 🔥
🖥 امتحان کن و از وقت آزاد بیشترت لذت ببر! 🚀
@panicdev
#Docker #برنامهنویسی #DevOps
🛠 دوست داری محیط توسعه خودت رو سریع و بیدردسر راه بندازی؟
💡 اگه تا حالا با Docker کار کردی، میدونی که میشه با چند تا ایمیج ساده یک محیط توسعه محلی ساخت. اما چرا وقتی DDEV هست، باید وقتت رو برای ساخت یه محیط دستی با Docker تلف کنی؟ 🤔
⚡️ مقایسه DDEV با ساخت دستی محیط توسعه با Docker
🔹 راهاندازی محیط توسعه دستی با Docker 🔨
✅ کنترل کامل روی تنظیمات
✅ شخصیسازی نامحدود
❌ باید تمام مشکلات رو خودت حل کنی
❌ پشتیبانی از تیم روی دوش تو هست
❌ ممکنه وقت زیادی ازت بگیره
🔹 استفاده از DDEV 🚀
✅ کاملاً متنباز، بدون قفل شدن به یک شرکت خاص
✅ بیش از ۶ سال توسعه و بهبود توسط جامعه
✅ پشتیبانی از Drupal، Laravel، WordPress، Magento، Shopware و...
✅ پشتیبانی از MySQL، MariaDB، PostgreSQL
✅ امکان استفاده روی macOS، Windows (WSL2)، Linux
✅دارای HTTPS داخلی برای هر پروژه
✅ امکان اجرای چند پروژه بهصورت همزمان
✅ برای Xdebug آماده به کار!
✅ قابلیت اضافه کردن امکاناتی مثل Redis، Elasticsearch، Apache Solr و...
---
🎯 نتیجهگیری؟ وقت خودتو تلف نکن!
😎 اگه نمیخوای همش درگیر تنظیمات Docker و پشتیبانی از تیم بشی، DDEV انتخاب عالیه!
با DDEV، بیشتر روی کدنویسی تمرکز کن، کمتر روی پیکربندی! 🔥
🖥 امتحان کن و از وقت آزاد بیشترت لذت ببر! 🚀
@panicdev
#Docker #برنامهنویسی #DevOps
❤🔥12👍1
بهش گفتیم یه PSR استاندارد درست کنید یا از یه چیزی pint استفاده کنید . کد یه دست بشه .
این طرز تفکر یه برنامه نویس بکند مثلا ارشد یه شرکت نسبتا بزرگ با سه تا دفتر تو خارج هست ..
قبلا هم بهش گفتیم چرا توکدتون از form request ها استفاده نمیکنید برای ولیدیشن ها .
گفتن بیخودی فایل جنریت میشه . چه کاریه وقتی میتونیم اینجا ارایه بسازیم
بعد خود ولیدیشن ۲۰ خط جا میگیره تو کنترلر...
خواستم بگم کلا فک نکنید اونور خبریه .
هرکی اونور کار میکنه خفنه ، یا حتما باید دانش عجیب غریبی داشته باشی تا اونور استخدام بشی .
بیشتر این شرکتارو برنامه نویس های هندی تشکیل میده که فقط کارشون تولید شِت کد هست .
و خیلی هم با اعتماد بنفس ازش دفاع میکنند .🙂
این طرز تفکر یه برنامه نویس بکند مثلا ارشد یه شرکت نسبتا بزرگ با سه تا دفتر تو خارج هست ..
قبلا هم بهش گفتیم چرا توکدتون از form request ها استفاده نمیکنید برای ولیدیشن ها .
گفتن بیخودی فایل جنریت میشه . چه کاریه وقتی میتونیم اینجا ارایه بسازیم
بعد خود ولیدیشن ۲۰ خط جا میگیره تو کنترلر...
خواستم بگم کلا فک نکنید اونور خبریه .
هرکی اونور کار میکنه خفنه ، یا حتما باید دانش عجیب غریبی داشته باشی تا اونور استخدام بشی .
بیشتر این شرکتارو برنامه نویس های هندی تشکیل میده که فقط کارشون تولید شِت کد هست .
و خیلی هم با اعتماد بنفس ازش دفاع میکنند .
Please open Telegram to view this post
VIEW IN TELEGRAM
👍43🔥1
این روز ها یه متولوژی مورد بحث و توجه گرفته به اسم Shape Up که تازگی ها برخی شرکت ها شروع کردن به استفاده کردن که برخی از نقایص اسکرام رو پوشش میده ظاهرا
برام جالب بود . گفتم با شما هم به اشتراک بزارم .
اگر تجربه ای در این زمینه دارید . به اشتراک بزارید.😊
شیپآپ یک چارچوب مدیریت پروژه است که توسط شرکت Basecamp معرفی شده و هدف اصلی آن افزایش کنترل و پیشبینیپذیری در فرآیند توسعه نرمافزار است. برخلاف اسکرام که مبتنی بر اسپرینتهای کوتاهمدت (۲-۴ هفته) و رویکرد چابک (Agile) است، Shape Up از چرخههای ۶ هفتهای استفاده میکند. در این روش، تیمها ابتدا بهطور دقیق ایدهها را پردازش (Shaping) میکنند و سپس در یک بازه زمانی ثابت توسعه میدهند.
مراحل اصلی شیپآپ:
اول Shaping: مشخص کردن ایدههای کلی و طراحی محدوده پروژه قبل از ورود تیم توسعه.
دوم Betting Table: بررسی ایدهها و انتخاب پروژههایی که بیشترین ارزش را دارند.
سوم Building: یک دوره ۶ هفتهای که در آن تیم توسعه بدون وقفه روی محصول کار میکند.
چهارم Cool Down: یک دوره استراحت و مرور پس از تکمیل پروژه.
در این باره bootcamp یک کتاب ارائه داده که میتونید از اینجا بخونید .
https://basecamp.com/shapeup
یک شخص هم امده شروع کرد این کتاب رو به فارسی ترجمه کنه که اینجا در دسترس هست
https://github.com/mohamadsmt/Shapeup
این هم یک مقاله که اسکرام و shape up رو مقایسه کرد .
https://vrgl.ir/n93i3
@panicdev
برام جالب بود . گفتم با شما هم به اشتراک بزارم .
اگر تجربه ای در این زمینه دارید . به اشتراک بزارید.
شیپآپ یک چارچوب مدیریت پروژه است که توسط شرکت Basecamp معرفی شده و هدف اصلی آن افزایش کنترل و پیشبینیپذیری در فرآیند توسعه نرمافزار است. برخلاف اسکرام که مبتنی بر اسپرینتهای کوتاهمدت (۲-۴ هفته) و رویکرد چابک (Agile) است، Shape Up از چرخههای ۶ هفتهای استفاده میکند. در این روش، تیمها ابتدا بهطور دقیق ایدهها را پردازش (Shaping) میکنند و سپس در یک بازه زمانی ثابت توسعه میدهند.
مراحل اصلی شیپآپ:
اول Shaping: مشخص کردن ایدههای کلی و طراحی محدوده پروژه قبل از ورود تیم توسعه.
دوم Betting Table: بررسی ایدهها و انتخاب پروژههایی که بیشترین ارزش را دارند.
سوم Building: یک دوره ۶ هفتهای که در آن تیم توسعه بدون وقفه روی محصول کار میکند.
چهارم Cool Down: یک دوره استراحت و مرور پس از تکمیل پروژه.
در این باره bootcamp یک کتاب ارائه داده که میتونید از اینجا بخونید .
https://basecamp.com/shapeup
یک شخص هم امده شروع کرد این کتاب رو به فارسی ترجمه کنه که اینجا در دسترس هست
https://github.com/mohamadsmt/Shapeup
این هم یک مقاله که اسکرام و shape up رو مقایسه کرد .
https://vrgl.ir/n93i3
@panicdev
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍3
🚫 خداحافظ reCAPTCHA، سلام Turnstile! 👋
🤖 قبلاً Google reCAPTCHA خیلی خوب بود. بدون دردسر رباتها رو فیلتر میکرد، بدون اینکه تجربه کاربر رو خراب کنه.
همه خوشحال بودن، تا وقتی که...
💰 گوگل تصمیم گرفت پول دربیاره!
💸 فقط 10,000 درخواست رایگان؟ 😬
اگه یه سایت کوچولو داری، شاید کافی باشه.
ولی برای ورود کاربرا، ثبت کامنت، دانلود، فرمهای ثبتنام و…
🎯 خیلی زود به سقف میخوری!
🔄 من دنبال جایگزین گشتم:
🔍 استفاده از hCaptcha:
ظاهرش مثل reCAPTCHA ولی قیمتش از گوگل هم بدتره 😓
🧪 ساختن CAPTCHA دستی:
با کلی دردسر، کلی کد، و قابل عبور برای رباتهایی با OCR باهوش😐
🚀 و بالاخره رسیدیم به Cloudflare Turnstile
✔️ بدون انتخاب تصویر دوچرخه یا تاکسی 😅
✔️ بررسی رفتار کاربر و دستگاه بهجای اذیت کردن کاربر
✔️ بدون هزینه، راحت و سریع
✔️ 📦 پکیج آماده برای Laravel
⚠️ ولی بدون: Turnstile گل بیخار نیست!
🟡 ممکنه بعضی رباتها رد بشن (طبق داشبورد خودش)
🔵 ولی تعامل کاربریش بینقصه
🔴 اگه دنبال نمرهدهی نامرئی مثل reCAPTCHA v3 هستی، باید بری سراغ جیب 😅
🎉 نتیجه؟
با Turnstile کاربرا راحتترن، رباتا محدودترن، و توسعهدهندهها خوشحالترن.
📦 مخصوصاً اگه با Laravel کار میکنی، این پکیج رو نصب کن و یه نفس راحت بکش 😌
#laravel #captcha #package
@panicdev
🤖 قبلاً Google reCAPTCHA خیلی خوب بود. بدون دردسر رباتها رو فیلتر میکرد، بدون اینکه تجربه کاربر رو خراب کنه.
همه خوشحال بودن، تا وقتی که...
💰 گوگل تصمیم گرفت پول دربیاره!
💸 فقط 10,000 درخواست رایگان؟ 😬
اگه یه سایت کوچولو داری، شاید کافی باشه.
ولی برای ورود کاربرا، ثبت کامنت، دانلود، فرمهای ثبتنام و…
🎯 خیلی زود به سقف میخوری!
🔄 من دنبال جایگزین گشتم:
🔍 استفاده از hCaptcha:
ظاهرش مثل reCAPTCHA ولی قیمتش از گوگل هم بدتره 😓
🧪 ساختن CAPTCHA دستی:
با کلی دردسر، کلی کد، و قابل عبور برای رباتهایی با OCR باهوش
🚀 و بالاخره رسیدیم به Cloudflare Turnstile
✔️ بدون انتخاب تصویر دوچرخه یا تاکسی 😅
✔️ بررسی رفتار کاربر و دستگاه بهجای اذیت کردن کاربر
✔️ بدون هزینه، راحت و سریع
✔️ 📦 پکیج آماده برای Laravel
⚠️ ولی بدون: Turnstile گل بیخار نیست!
🟡 ممکنه بعضی رباتها رد بشن (طبق داشبورد خودش)
🔵 ولی تعامل کاربریش بینقصه
🔴 اگه دنبال نمرهدهی نامرئی مثل reCAPTCHA v3 هستی، باید بری سراغ جیب 😅
🎉 نتیجه؟
با Turnstile کاربرا راحتترن، رباتا محدودترن، و توسعهدهندهها خوشحالترن.
📦 مخصوصاً اگه با Laravel کار میکنی، این پکیج رو نصب کن و یه نفس راحت بکش 😌
#laravel #captcha #package
@panicdev
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥20👍10
#شاید_برای_شما_هم_اتفاق_بیفتد .
برای اینکه یک سری دیتا رو به فرانت اند برگردونم .
باید سه تا API از سرویس های مختلف call میکردم تا اون آرایه ای که مد نظرم هست رو بسازم .
در حالت عادی باید به ترتیب API ها کال میشد تا بتونم آرایه رو بسازم . که باعث میشد ریسپانس تایم چیزی بین ۵ تا ۱۰ ثانیه طول بکشه .
ولی با کلاس جدیدی که از لاراول ۱۱ معرفی کرده به اسم😊
@panicdev
برای اینکه یک سری دیتا رو به فرانت اند برگردونم .
باید سه تا API از سرویس های مختلف call میکردم تا اون آرایه ای که مد نظرم هست رو بسازم .
در حالت عادی باید به ترتیب API ها کال میشد تا بتونم آرایه رو بسازم . که باعث میشد ریسپانس تایم چیزی بین ۵ تا ۱۰ ثانیه طول بکشه .
ولی با کلاس جدیدی که از لاراول ۱۱ معرفی کرده به اسم
Concurrency سرویس ها را همزمان کال میکنم . که باعث شد ریسپانس تایمم بشه چیزی بین ۱.۵ تا ۲ ثانیه .@panicdev
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18🔥5
Panic Dev
🚫 خداحافظ reCAPTCHA، سلام Turnstile! 👋 🤖 قبلاً Google reCAPTCHA خیلی خوب بود. بدون دردسر رباتها رو فیلتر میکرد، بدون اینکه تجربه کاربر رو خراب کنه. همه خوشحال بودن، تا وقتی که... 💰 گوگل تصمیم گرفت پول دربیاره! 💸 فقط 10,000 درخواست رایگان؟ 😬 اگه یه سایت…
پکیج برای استفاده در لاراول و لایوایر
https://github.com/ryangjchandler/laravel-cloudflare-turnstile
#package #laravel
https://github.com/ryangjchandler/laravel-cloudflare-turnstile
#package #laravel
GitHub
GitHub - ryangjchandler/laravel-cloudflare-turnstile: A simple package to help integrate Cloudflare Turnstile.
A simple package to help integrate Cloudflare Turnstile. - ryangjchandler/laravel-cloudflare-turnstile