Developer.manifest – Telegram
Developer.manifest
77 subscribers
64 photos
2 videos
1 file
28 links
👋 سلام! من سعید عبدالهیان (saeedvir) هستم.
💻 توسعه‌دهنده وب و متخصص PHP / Laravel
📂 پروژه‌ها و نمونه‌کارها:
https://github.com/saeedvir

تماس با من
@PhpWebDeveloper

🚀 علاقه‌مند به ساخت پروژه‌های تمیز، بهینه و حرفه‌ای
Download Telegram
Developer.manifest
سوال چالشی: فرض کنید یک رشته حداقل پنج کارکتری دارید به صورت abcde ابتدا این رشته را به چهار قسمت تقسیم کند و در یک آرایه بریزید بعد ایندکس های آرایه را به صورت تصادفی به هم بریزد حالا روشی طراحی کنید که بعد از این به هم ریختن بتوانید دوباره این رشته را…
پاسخ #چالش_یک

در حقیقت بدون ذخیره کردن اطلاعات اصلا امکان به هم ریختن و بازیابی وجود نداره

پس میاییم اطلاعات ایندکس اطلاعات را به نحوی که قابل بازیابی باشه ذخیره می کنیم


روش اول :
1- تقسیم رشته به یک آرایه 4 تایی
2-ذخیره ایندکس ها و به هم ریختن آرایه
3-بازیابی آرایه جدید و تبدیل به رشته

روش دوم:
1- تقسیم رشته به یک آرایه 4 تایی
2-ذخیره ایندکس ها به صورت جداگانه (maping) و به هم ریختن آرایه
3-بازیابی آرایه جدید و تبدیل به رشته

روش سوم:
1- تقسیم رشته به یک آرایه 4 تایی
2-استفاده از الگوریتم "Fisher - Yates"
3-بازیابی آرایه جدید و تبدیل به رشته


کد این سه روش در گیت هاب ببینید :

https://gist.github.com/saeedvir/b449c12aa68857c559e719fd15389b29



😎👇
@DeveloperManifest
🔥2
supabase-table-editor.webm
2.4 MB
پلتفرم Supabase در دسته‌ی Backend-as-a-Service (BaaS) است که مجموعه‌ی کاملی از ابزارها را برای توسعه‌دهندگان فراهم می‌کند تا بتوانند به‌سرعت برنامه‌های مدرن بسازند.

پکیج لاراول کار با این سرویس :👇
https://news.1rj.ru/str/DeveloperManifest/35


نسخه FREE برای کارهای سبک کاملا جواب میده

https://supabase.com

😎👇@DeveloperManifest
Developer.manifest
supabase-table-editor.webm
🌐 ویژگی‌های اصلی
پایگاه داده و APIها

پایگاه داده‌ی PostgreSQL به همراه PostgREST API برای ساخت فوری APIهای REST

پشتیبانی از GraphQL از طریق افزونه‌ی pg_graphql

دارای قابلیت جستجوی تمام‌متنی (Full-text search)

احراز هویت (GoTrue)

سیستم احراز هویت داخلی با پشتیبانی از ورود با شبکه‌های اجتماعی

پشتیبانی از احراز هویت چندمرحله‌ای (MFA)

سازگار با ارائه‌دهندگان مختلف احراز هویت مانند Keycloak و OAuth

قابلیت‌های بلادرنگ (Realtime)

همگام‌سازی داده‌ها به‌صورت بلادرنگ

پشتیبانی از امنیت در سطح ردیف (Row-Level Security) برای اشتراک‌گذاری امن داده‌ها

مناسب برای برنامه‌های هم‌زمان، مشارکتی و چندنفره (multiplayer)

فضای ذخیره‌سازی (Storage)

مدیریت و ذخیره‌سازی فایل‌ها

یکپارچگی کامل با پایگاه داده

توابع بدون سرور (Serverless Functions)

اجرای Edge Functions برای منطق اختصاصی

مقیاس‌پذیری بالا برای پردازش سمت سرور

هوش مصنوعی و بردارها (pgvector)

پشتیبانی از بردارهای嵌ه برای کاربردهای هوش مصنوعی

اتصال به OpenAI و سرویس‌های هوش مصنوعی دیگر

مناسب برای ساخت برنامه‌های مجهز به هوش مصنوعی (AI-powered)

تجربه توسعه‌دهنده (Developer Experience)

داشبورد گرافیکی برای مدیریت آسان

ابزار خط فرمان (CLI) برای توسعه‌ی محلی

پشتیبانی از شاخه‌های پیش‌نمایش (Preview Branches) برای جریان‌های کاری توسعه

زبان سرور PostgreSQL برای پشتیبانی بهتر در محیط IDE

🚀 چرا توسعه‌دهندگان از Supabase استفاده می‌کنند

بسته‌ی کامل: تمام سرویس‌های بک‌اند به‌صورت یکپارچه در کنار هم کار می‌کنند

کاربرپسند: کاهش کارهای تکراری و پیچیدگی زیرساخت

مقیاس‌پذیر: توانایی رشد بدون نیاز به تغییرات سنگین

متن‌باز: قابلیت استقرار شخصی (Self-hosted) یا استفاده به‌صورت سرویس ابری مدیریت‌شده

حفظ حریم خصوصی: سازگار با GDPR و دارای کنترل‌های امنیتی قوی

این پروژه از حمایت مالی قابل توجهی (در قالب سرمایه‌گذاری سری A و B) برخوردار است و توسط شرکت‌های زیادی برای ساخت برنامه‌های SaaS، ابزارهای مبتنی بر هوش مصنوعی، بازی‌های چندنفره بلادرنگ و موارد دیگر استفاده می‌شود.
یک پکیج برای Supabase منتشر کردم که می تونید از اون استفاده کنید

composer require saeedvir/supabase


اطلاعات بیشتر در صفحه گیت هاب

وب سایت Supabase

😎👇@DeveloperManifest
1
یک ضعف امنیتی در
symfony/http-foundation
مشاهده شده است

symfony/http-foundation

CVE-2025-64500: Incorrect parsing of PATH_INFO can lead to limited authorization | bypass

https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2025-64500

https://symfony.com/blog/cve-2025-64500-incorrect-parsing-of-path-info-can-lead-to-limited-authorization-bypass

https://www.tenable.com/cve/CVE-2025-64500?utm_source=chatgpt.com


composer show symfony/http-foundation

composer update symfony/http-foundation


لطفا هرچه سریعتر نسبت به بروزرسانی آن اقدام کنید


#باگ
#laravel
#laravel_security
#security

اطلاعات بیشتر در
😎👇
@developermanifest
Developer.manifest
یک ضعف امنیتی در symfony/http-foundation مشاهده شده است symfony/http-foundation CVE-2025-64500: Incorrect parsing of PATH_INFO can lead to limited authorization | bypass https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2025-64500 https://symfony.com/blog/cve…
این باگ در کدام بخش اتفاق افتاده ؟

در فایل
src/Symfony/Component/HttpFoundation/Request.php‎   Line : 1985



        if (false === $pathInfo || '' === $pathInfo) {
// If substr() returns false then PATH_INFO is set to an empty string
return '/';
}


که برای رفع این مشکل ، این کد
if (false === $pathInfo || '' === $pathInfo || '/' !== $pathInfo[0]) {
return '/'.$pathInfo;
}

جایگزین شده است.
شاید وقت اون رسیده به فکر جایگزین برای JSON باشیم !

اخیرا فرمت TOON یا
Token-Oriented Object Notation
معرفی شده.

{
"users": [
{ "id": 1, "name": "Alice", "role": "admin" },
{ "id": 2, "name": "Bob", "role": "user" }
]
}


users[2]{id,name,role}:
1,Alice,admin
2,Bob,user


که حدود 40 درصد کاهش نسبت به json رو نشون میده.

اگر علاقه مند هستید :


https://github.com/toon-format/toon

https://scalevise.com/json-toon-converter


😎👇 نمونه کد PHP کانال قرار گرفت
https://news.1rj.ru/str/DeveloperManifest
Developer.manifest
شاید وقت اون رسیده به فکر جایگزین برای JSON باشیم ! اخیرا فرمت TOON یا Token-Oriented Object Notation معرفی شده. { "users": [ { "id": 1, "name": "Alice", "role": "admin" }, { "id": 2, "name": "Bob", "role": "user" } ] } users[2]{id,name,role}:…
https://github.com/HelgeSverre/toon-php

https://github.com/matmper/php-toon/tree/main


https://github.com/toon-format/toon?tab=readme-ov-file#installation--quick-start

https://www.curiouslychase.com/playground/format-tokenization-exploration
چه طور در PowerShell دستورات خلاصه درست کنیم ؟

ابتدا پاورشل را باز کنید و دستور زیر را اجرا کنید :
echo $PROFILE


سپس ئدر مسیر مشخص شده ، یک فایل ایجاد کنید
برای مثال :
C:\Users\YourName\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1


حالا داخل این فایل عبارت زیر را وارد کنید :
function a {
& php .\artisan @args
}


فایل را ذخیره کنید.

حالا از پاورشل خارج شوید.

از این به بعد در هر پوشه پروژه لاراول می توانید دستور زیر را استفاده کنید :

a optimize
a optimize:clear
a route:list


در حقیقت دستور a معادل php artisan هست.


😎👇
@developerManifest
🔥1
مقایسه حالت‌های بارگذاری تصاویر

مرورگرها هنگام نمایش تصاویر، می‌توانند از دو ویژگی مهم استفاده کنند:

1️⃣ ویژگی loading :
تعیین می‌کند تصویر کی و چگونه بارگذاری شود

حالت Lazy:

فقط وقتی تصویر به نزدیکی صفحه می‌آید بارگذاری می‌شود (صرفه‌جویی در پهنای باند).

حالت eager:
بلافاصله با بارگذاری صفحه، همه تصاویر شروع به دانلود می‌کنند.

2️⃣ ویژگی decoding
تعیین می‌کند تصویر چطور رمزگشایی شود

حالت sync :
مرورگر هنگام دریافت تصویر، رندر صفحه را متوقف می‌کند تا تصویر رمزگشایی شود.

حالت async:
رمزگشایی تصویر به صورت غیربلاک‌کننده انجام می‌شود و رندر صفحه متوقف نمی‌شود.

به طور کلی 4 حالت داریم :

lazy + async:
بهترین حالت برای گالری‌ها و لیست‌های طولانی

lazy + sync
مناسب برای صفحاتی با تعداد کم تصویر، اما کمی کندتر در اسکرول کردن صفحه

eager + async
خوب برای تصویر اصلی یا تصاویر مهم، اما برای ۲۰ تصویر همزمان سنگین می‌شود

eager + sync
⚠️ بدترین حالت برای عملکرد و اسکرول روان، فقط برای تصاویر تک و حیاتی استفاده شود

<img alt="" src="" decoding="async" loading="lazy">


اطلاعات بیشتر در :😎👇
@DeveloperManifest
یک نمونه از استفاده از IF در CSS مدرن :

body {
background: if(
media(width > 850px): #9400D3; media(width > 700px): #4B0082;
media(width > 600px): #0000FF; media(width > 500px): #00FF00;
media(width > 400px): #FFFF00; media(width > 300px): #FF7F00;
else:
#ff0000
);
min-height: 100vh;
font-family: system-ui, -apple-system, sans-serif;
transition: background 0.3s ease;
}


اطلاعات بیشتر در :😎👇
@DeveloperManifest
پکیج های Verta و morilog به سایت Context7 اضافه شد.

از این پس برای دریافت نمونه کد یا سوال در مورد این پکیج ها می تونید از آدرس های زیر استفاده کنید :

https://context7.com/hekmatinasser/verta?tab=chat

https://context7.com/morilog/jalali?tab=chat


برای مثال از هوش مصنوعی بخواهید یک نمونه از اعتبارسنجی تاریخ شمسی برای فرم ها به شما بدهد :

Basic Date Validation


use Illuminate\Http\Request;

public function store(Request $request)
{
$validated = $request->validate([
'birthday' => ['required', 'jdate'],
'appointment' => ['required', 'jdatetime'],
]);
}


Date Comparison Validation

$request->validate([
'start_date' => ['required', 'jdate'],
'end_date' => ['required', 'jdate_after:' . $request->start_date],
'event_date' => ['required', 'jdate_before:1402-01-01'],
'registration' => ['required', 'jdate_after_equal:1401-01-01'],
'deadline' => ['required', 'jdate_before_equal:1401-12-29'],
]);



اطلاعات بیشتر در :😎👇
@DeveloperManifest
خدا رو شکر این پکیجی که نوشتم مورد عنایت تیم LaravelNews قرار گرفته 😊😎

Supabase Package for Laravel

https://laravel-news.com/supabase-laravel

https://github.com/saeedvir/supabase
🔥2🍾1
می دونستید HeidiSQL قابلیت تولید داده های Fake داره ؟

برای پرکردن جدول ها به راحتی می تونید استفاده کنید.

#tip

@developerManifest
یک اسلایدشو سبک و زیبا / بهینه سازی شده برای موبایل به همراه Lazy Loading
https://dev.to/saeedvir/pure-cssjs-slideshow-30bk




نسخه bootstrap

نسخه Tailwind

😎👇
@developerManifest
1
اشتباهات رایج Livewire

قسمت اول

در مثال زیر فیلتر محصولات در تابع mount بعد از تغییر کردن ، اعمال نمی شود.بنابراین باید در تابع Render قرار دهید.
// 
public function mount()
{
$this->products = Product::where('status', $this->filter)->get();
}

//
public function render()
{
return view('livewire.products', [
'products' => Product::where('status', $this->filter)->get()
]);
}

قواعد اعتبارسنجی فرم ها را در From Request جداگانه قرار دهید
// 
public function rules(): array
{
return [
'field1' => ['required', 'string'],
'field2' => ['required', 'integer'],
'field3' => ['required', 'boolean'],
];
}

//
public function rules(): array
{
return (new MyFormRequest)->rules();
}

#اشتباهات_رایج

😎👇
@developerManifest
نمونه های Refactoring# :

همیشه اصل را بر سادگی و کاهش پیچیدگی و درک راحت تر کد بگذارید.

چرا که با بزرگ شدن و رشد پروژه به کاهش اتلاف وقت و هزینه توسعه منجر میشه.


نمونه یک:
مشکل تابع بزرگ با کارهای زیاد

function processOrder($order) { 
// Validate order
if (empty($order['customer']) || empty($order['items'])) { throw new Exception('Invalid order'); } // Calculate total
$total = 0; foreach ($order['items'] as $item) { $total += $item['price'] * $item['quantity']; } // Apply discount
if (!empty($order['discount'])) { $total -= $total * $order['discount']; } // Save (mock)
echo "Order saved. Total: $total\n"; // Send email (mock)
echo "Email sent to customer.\n";
}

به

function processOrder($order) { 
validateOrder($order);

$total = calculateTotal($order);
saveOrder($order, $total);
notifyCustomer($order);
}
function validateOrder($order) { /* ... */ }
function calculateTotal($order) { /* ... */ }
function saveOrder($order, $total) { /* ... */ }
function notifyCustomer($order) { /*

نمونه دوم:
مشکل : کد تکراری
$price = $product['price'] * $quantity; $tax = $price * 0.19; $total = $price + $tax; $fee = $service['fee'] * $hours; $tax = $fee * 0.19; $final = $fee + $tax; 

به
function addTax($amount, $rate = 0.19) { return $amount * (1 + $rate); } $total = addTax($product['price'] * $quantity); $final = addTax($service['fee'] * $hours);

#کد_تمیز
#clean_code

#زیبایی_در_سادگی

مطالب بیشتر در
😎👇
@developerManifest
اشتباهات لاراول / قسمت دوم

یک مثال کاربردی از تابع once در لاراول:

فرض کنید توسط تابع getSettings تنظیمات key/value را از دیتابیس واکشی می کنید:
function getSettings()
{
return DB::table('settings')->first();
}
$settings = getSettings();
$footerSettings = getSettings();
$headerSettings = getSettings();


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


function getSettings()
{
return once(function () {
return DB::table('settings')->first();
});
}
$settings = getSettings();
$footerSettings = getSettings();
$headerSettings = getSettings();


حالا با این تغییر یکبار درخواست به دیتابیس داده میشه و دفعه دوم و سوم و.... از کش کردن خروجی این تابع بهره میگیرید.

این کش تا پایان درخواست معتبر است.

#اشتباهات_رایج

مطالب بیشتر در
😎👇
@developerManifest
👍2
اجرا برنامه های ویندوزی روی اندروید !

آخرین نسخه را از صفحه گیت هاب آن دانلود کنید

توضیحات کاربردی :
https://github.com/brunodev85/winlator?tab=readme-ov-file#useful-tips


https://github.com/brunodev85/winlator/issues?q=is%3Aissue


1️⃣ ساخت محفظه (Container)
بالا سمت راست یه آیکون می‌بینی؛ بزن روش تا یک محیط اجرای جدید برای برنامه‌های ویندوز بسازی.

2️⃣ نکات مهم قبل از ساخت محفظه

🔸 رزولوشن مناسب انتخاب کن
اگه گوشیت قدیمیه یا سخت‌افزار ضعیف‌تری داره، رزولوشن پایین‌تر رو از قسمت Screen size انتخاب کن تا سرعت بهتر بشه.

🔹 برای پردازنده‌های اسنپ‌دراگون
گزینه Turnip (Adreno) رو انتخاب کن؛ بهترین پرفورمنس برای گرافیک رو میده.

🔸 برای پردازنده‌های مدیاتک یا سایر مدل‌ها
درایور گرافیک رو روی VirGL (Universal) بذار؛ سازگاری و عملکرد بهتری می‌گیری.


⚠️ این نرم افزار هنوز در مراحل تست هست.

مطالب بیشتر در
😎👇
@developerManifest