| AmirHossein | – Telegram
| AmirHossein |
593 subscribers
44 photos
8 videos
2 files
73 links
نوشته‌های یک برنامه‌نویس ناشی

🫂 @StartUnity
Download Telegram
خیلی از مردم واکنش عجیبی به این وضعیت فعلی دارن
نمی‌دونم چرا ولی انگار خوشحالن که جنگ شده
با هیجان و اشتیاق ازش صحبت می‌کنن
اون رو مسخره می‌کنن
و حرفای بچه‌گونه

نمی‌دونیم هدف از حمله چی بوده
سران مملکت؟ یا کی؟
مهم نیست، مهم اینه وسط مردم عادی هم آسیب دیدن
ویدیوهایی هست که نشون میده بچه‌های کوچیک کشته شدن، یا زیر آوار موندن

شاید شما توی خونتون آرامش داشته باشید(هنوز) ولی یه عده عزیزانشون رو از دست دادن

جنگ، جنگه؛ اونو بچه‌بازی ندونید، مسخره نکنید، نخندید، فاز هجیان و خوشحالی نگیرید

به امید آزادی و امنیت، تسلیت به مردم از دست رفته(جز مسئولین)
👍174👎1🍓1
وزارت قطع‌ارتباطات وصل‌شدن #ایران به اینترنت بین‌الملل رو تکذیب کرد.

چنان گند زدن به #اینترنت و جریان آزاد اطلاعات، که اخبار رسانه‌های رسمی کشور هم تحت‌شعاع قرار داده.

🔍 ircf.space
@ircfspace
💔5
Forwarded from جادی | Jadi
به مناسبت شرایط جنگی و بی اینترنت و بقیه خباثت‌ها، محتوای دوره جدید «جامع پایتون» من در مکتبخونه حالا صد در صد رایگانه تا شاید کمکی باشه برای تمرین و یاد گرفتن و دور شدن از جنگی که برامون درست کردن.

برای تخفیف صد در صد، تیک «دسترسی کامل» رو بردارید، به سبد اضافه کنید و کد PEACE رو بزنید.

https://maktabkhooneh.org/course/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D8%A8%D8%A7-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-%D9%85%D9%82%D8%AF%D9%85%D8%A7%D8%AA%DB%8C-mk346/
1🍓1
اگر دنبال VPN رایگان و پرسرعت هستید، پیشنهاد می‌کنم از نپسترنت استفاده کنید.

- آموزش اتصال در اندروید
- آموزش اتصال در آیفون

توی کانلش هم کانفیگ‌های بروز و پرسرعت رو به صورت رایگان قرار میده:
@mitivpn

البته برای ویندوز، مک و لینوکس کلاینتی نداره. ولی می پ‌تونید با استفاده از برنامه‌هایی مثل Every Proxy اون رو برای ویندوز و ... به اشتراک بگذارید، و همچنین با برنامه‌هایی مثل Proxifire کل سیستم رو بر پایه اون پروکسی تانل کنید.

@AmirhDeveloper
.
2🍓1
خروجی کد بالا کدام است؟

A
Outer 1
Inner 1
Outer 2
Inner 1

B
Outer 1
Inner 1
Inner 2
Outer 2
Inner 1

C
Outer 1
Inner 1

D
Outer 1
Inner 1
Inner 2

💢 نکته : لطفا اندکی تامل کنید، از اجرای کد و استفاده از هوش مصنوعی خودداری کنید.

⚜️ پاسخ خود را همراه با توضیح ارسال کنید.

#PHP
@AmirhDeveloper
.
1🍓1
| AmirHossein |
خروجی کد بالا کدام است؟ A Outer 1 Inner 1 Outer 2 Inner 1 B Outer 1 Inner 1 Inner 2 Outer 2 Inner 1 C Outer 1 Inner 1 D Outer 1 Inner 1 Inner 2 💢 نکته : لطفا اندکی تامل کنید، از اجرای کد و استفاده از هوش مصنوعی…
🔰 این سوال بسیار راحت است، درصورتی که با break و continue که با یک عدد همراه است آشنا باشید.

🔸 کد ما به این صورت است:
for ($i = 1; $i < 3; $i++) {
echo "Outer $i\n";
for ($j = 1; $j < 3; $j++) {
echo "\tInner $j\n";
if ($j == 1) break 2;
if ($j == 2) continue 2;
}
}

🔹 و خروجی آن گزینه C، یعنی:
Outer 1
Inner 1


⁉️ اما چرا؟
⚜️ بیایید ابتدا با دستورات break، و continue به صورت دقیق تر آشنا شویم.

🔻 ‏break N چیست؟
‏break به صورت معمول از یک حلقه خارج می‌شود. اما اگر بنویسیم break 2، به معنی خروج از دو سطح حلقه است.
یعنی در این کد:
if ($j == 1) break 2;

اگر شرط ‎$j == 1 برقرار شود، هم از حلقه داخلی و هم خارجی خارج می‌شود. یعنی اجرای کل حلقه‌ها متوقف می‌شود.

🔻continue N چیست؟
‏continue معمولاً ادامه حلقه جاری را رها می‌کند و می‌رود سراغ تکرار بعدی همان حلقه. اما continue 2 می‌گوید برو سراغ تکرار بعدی حلقه سطح دوم.
در این کد:
if ($j == 2) continue 2;

اگر این شرط اجرا شود، کل حلقه داخلی متوقف می‌شود و حلقه بیرونی به تکرار بعدی می‌رود.

🔸 در هر دو حالت، عدد بعد از break یا continue مشخص می‌کند که چند سطح از حلقه را تحت تأثیر قرار می‌دهد.
⭕️ نکته: عدد بعد از break یا continue باید به تعداد سطوح حلقه باشد.

⚜️ حالا بیایید ببینیم این کد دقیقاً چطور اجرا می‌شود:

اولین دور حلقه بیرونی: ‎$i = 1
Outer 1
اولین دور حلقه داخلی: ‎$j = 1
Inner 1
سپس:
if ($j == 1) break 2;


شرط درست است، پس اجرای break 2 انجام می‌شود. یعنی از هر دو حلقه خارج می‌شویم و برنامه پایان می‌یابد.

⭕️ نکته: دستور continue هرگز اجرا نخواهد شد.

#PHP
@AmirhDeveloper
.
🍓52
فکر کنید دما ۴۳ درجه‌س، گرم‌ترین ساعت روزه و وسط کارتون هستید که دارید به نتیجه‌ای که کلی براش زمان گذاشتید می‌رسید و زارت برق قطع میشه
💔7🗿1
Forwarded from Start Unity (ali reza)
درود دلاوران 🌟
یکی از دوستان برام یه کد تخفیف ۱۰۰٪ فرستاد برای سایت فرادرس
فرادرس الان تخفیف ۱۰۰ درصد گذاشته، فقط برای یه دوره!

من خودم یه دوره فن بیان گرفتم، گفتم قبل اینکه تموم شه،
براتون بذارم شاید به دردتون بخوره ❤️

🔹 کد تخفیف: IRAN (با حروف بزرگ)

یادتون نره فقط می‌تونید یه دوره رو با این کد بگیرید
پس اون دوره‌ای که واقعاً لازم دارید رو انتخاب کنید 😉
موفق باشید رفقا 🌱
4🍓1
قرار بود تا 25 خرداد ورژن 3 LaraGram منتشر بشه، ولی خب اتفاقات زیادی افتاد که باعث شد پروژه خیلی عقب بیوفته.

تا الان بخش‌های زیادیش توسعه داده شده و یک سری زیره کاری ازشون باقی مونده.

اما سرویس هایی مثل
Validation, Auth, Divider, Broadcast
و احتمالا یک سری چیز دیگه هنوز باقی موندن.

در بهترین حالت امیدوارم تا دو هفته دیگه منتشر بشه.

از الان بهتون اطمینان میدم که مثل LaraGram رو ندیدید و یک فریم‌ورک تمام‌اعیار برای توسعه ربات تلگرامی هست(فخر فروشی)😁
7🍓1
| AmirHossein |
قرار بود تا 25 خرداد ورژن 3 LaraGram منتشر بشه، ولی خب اتفاقات زیادی افتاد که باعث شد پروژه خیلی عقب بیوفته. تا الان بخش‌های زیادیش توسعه داده شده و یک سری زیره کاری ازشون باقی مونده. اما سرویس هایی مثل Validation, Auth, Divider, Broadcast و احتمالا یک…
وقتی ورژن 3 منتشر بشه بیکار نمی‌مونیم و توسعه ورژن 4 رو شروع می‌کنیم تا برای سال آینده آماده باشه.

خیلی سعی کردم جلوی خودم رو بگیرم و نگم توی ورژن 4 چه‌خبره، ولی خب نمیشه😂

ورژن 4 روی دو چیز متمرکز میشه:
1- MTProto
2- TMAs

به عنوان اولین قابلیت به شما امکان توسعه ربات‌های کلاینتی و کار با متدهای MTProto رو میده، که قبلا هم زیاد ازش نام برده بودم

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

اما همه چیز توی بک‌اند تموم نمیشه، لاراگرام برای فرانت‌هم قابلیت‌هایی در اختیارتون میذاره، اگر لاراول کار باشید با پکیج هایی مثل inertia.js و livewire آشنا هستید، که قرار مشابه‌ش رو توی لاراگرام داشته باشیم.
شما می‌تونید ری‌اکت یا ویو بنویسید و با یک متد ساده اون رو رندر کنید.
بدون هیچ دردسر اضافی یا نیاز به پکیج‌ها و فریم‌ورک‌های جاوااسکریپتی
🔥11🍓2
بعد مدت‌ها اومدم دوره لاراول رو ادامه بدم که برق رفت
چند وقته کانال خوابیده و محتوایی نداره، فردا هر طور شده شروع می‌کنم
11🔥1🍓1
انقدر از پست قبلی لاراول می‌گذره که یادم نبود کجای بحث بودیم.
بعد یک دوساعتی دیدم که از ولیدیشن‌ها همه چیز رو گفتم و صرفا Ruleها باقی مونده که به خودتون و داکیومنت می‌سپارم، چون واقعا تعدادشون زیاد هست و مناسب پست نوشتن نیست.

درنتیجه وارد فصل 7 می‌شیم، مبحث Dependency Injection و Services که بحث مورد علاقه‌م هم هست.

از این فصل به بعد دیگه مباحث حرفه‌ای لاراول به حساب میاد.

پستش رو می‌نویسم و تا یک ساعت دیگه ارسال می‌کنم🤝
12🙉2🍓1
فصل هفت - Services و Dependency Injection

بخش اول - سرویس کانتینر


‏Service Container (IoC Container) یکی از قدرتمندترین ابزارها در لاراول هست، وظیفه این سرویس قدرتمند Dependency Injection و Inversion of Control می‌باشد.

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

همونطور که گفته شد لاراول به صورت خودکار کلاس‌هایی که وابستگی ندارن، یا فقط به کلاس‌های کامل (concrete) وابسته‌ان رو بدون نیاز به تنظیم دستی و به صورت خودکار resolve بکنه. مثلا:
Route::get('/', function (Service $service) {
dd($service::class);
});

وقتی یک کلاس ساده مثل Service به صورت type-hint تعریف شده باشه، کانتینر خودش اون رو instantiate و inject می‌کنه بدون این که ما جای دیگه‌ای مشخص کنیم.

اما همه این دپندنسی ها به صورت خودکار فراهم نمی‌شوند، به همین دلیل Service Providerها به کمک ما می‌آیند.
لاراول به صورت پیشفرض یک پروایدر در مسیر App\Providers\AppServiceProvider.php دارد، شما نیز می‌توانید پروایدرهای خود را با دستور زیر در همین مسیر ایجاد کنید:
php artisan make:provider MyServiceProvider


گفته شد که لاراول همیشه نمی‌تواند یک سرویس را بدون تنظیم قبلی inject کند. اما در چه زمان هایی؟

1- وقتی برای یک interface چند پیاده سازی داریم و می‌خواهیم مشخص کنیم که لاراول از کدام پیاده‌سازی استفاده کند.
2- وقتی که یک پکیج برای لاراول توسعه داده‌ایم و می‌خواهیم سرویس‌هایی تعریف کنیم.

در این موارد کافی است در یکی از متدهای boot یا register (بسته به نیاز که بعدا توضیح داده می‌شود) در سرویس پروایدر خود آن پیاده‌سازی را به کانتینر bind کنیم:
$this->app->bind(Transistor::class, function (Application $app) {
return new Transistor($app->make(PodcastParser::class));
});

در این کد گفته شده زمانی که Transistor نیاز شود، کالبک اجرا شود و یک نمونه از کلاس Transistor ایجاد و به کانتینر اضافه کند.

انواع binding

1- ‏bind
این نوع از binding در مثال قبل گفته شد. و در هر بار درخواست یک سرویس، یک نمونه جدید از آن را ایجاد می‌کند.

2- ‏singleton
همانطور که از نامش پیداست، تنها یک نمونه از کلاس را می‌سازد و در هر درخواست سرویس، از نمونه ایجاد شده قبلی استفاده می‌کند:
$this->app->singleton('RedisClient', function () {
return new RedisClient(config('redis'));
});


3- ‏instance
زمانی استفاده می‌شود که خودمان یک instance آماده از یک آبجکت داشته باشیم و بخواهیم آن را به کانتینر bind کنیم:
$logger = new \App\Services\CustomLogger();
$this->app->‏instance('logger', $logger);


4- ‏scoped
در اپ‌هایی که هر request (یا queue job) باید نسخه جداگانه‌ای از کلاس داشته باشند ولی در همون request بین کلاس‌ها مشترک باشند.
این نوع برای stateful کردن کلاس‌هایی مثل کانکشن دیتابیس بسیار مهم است.
$this->app->scoped(MyService::class, function ($app) {
return new MyService(now());
});

در پروژه‌های Laravel Octane یا اپ‌های multi-tenant یا زمانی که Queue Jobها به ایزولاسیون نیاز دارن کاربرد دارد.

5- ‏bindIf
فقط زمانی bind رو انجام میده که کلاس یا کلیدی با اون نام bind نشده باشه:
$this->app->bindIf(SomeInterface::class, DefaultImplementation::class);


6- ‏singletonIf
مشابه bindIf عمل خواهد کرد با این تفاوت که نمونه‌ای که ایجاد می‌کند از نوع singleton خواهد بود.

7- ‏scopedIf
مشابه bindIf و ‏singletonIf برای scoped bindigها.

‏Interface Binding
ما می‌توانیم مشخص کنیم که وقتی یک کلاس خاص (یا Interface) خواسته شد، چه پیاده‌سازی (concrete class) برایش استفاده شود.
فرض کنید:
interface PaymentGateway {
public function charge($amount);
}

class StripeGateway implements PaymentGateway {
public function charge($amount) {
//
}
}

در این صورت کافی است در سراسر برنامه از PaymentGateway استفاده کنیم و لاراول خودش تصمیم می‌گیرد چه چیز را inject کند.
برای این کار کافی است در سرویس پروایدر خود به صورت زیر عمل کنیم:
$this->app->bind(PaymentGateway::class, StripeGateway::class);

در این صورت اگر PaymentGateway نیاز شود، یک نمونه از StripeGateway ساخته و inject می‌شود.

در قسمت‌های بعدی با سایر Injectionها آشنا خواهیم شد.

#laravel #لاراول #فصل_۷
@AmirhDeveloper
.
🔥5🙉21🍓1
بعد از ۱۳ ماه تلاش، 🎉 LaraGram 3 منتشر شد!

در این نسخه به یک ورژن پایدار رسیدیم که دیگه قرار نیست تغییرات ساختاری یا سینتکسی داشته باشیم.

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

🔐 سیستم کنترل مجوز با قابلیت تعریف Gate و Policy (برای کنترل دسترسی به عملیات‌های پایگاه‌داده)

🧠 سیستم کشینگ با پشتیبانی از ۷ درایور مختلف برای ذخیره داده‌های موقتی
📋 همچنین، Step Manager بر پایه همین سیستم پیاده‌سازی شده

🔁 کالکشن‌ها برای کار حرفه‌ای و راحت با Iterable‌ها

⚙️ سیستم Concurrency برای پردازش همزمان چند درخواست در پس‌زمینه

⚙️ بهبود سیستم کانفیگ و اضافه شدن فایل .env برای مدیریت بهتر تنظیمات

💻 کرنل کنسول برای ایجاد و اجرای راحت کامندها، به‌علاوه زمان‌بندی اجرای تسک‌ها

📦 بازنویسی کامل Eloquent ORM به صورت اختصاصی با پشتیبانی از ۵ دیتابیس مختلف و انواع روابط
📐 همراه با قابلیت‌های Migrations، Seeders و Factory

🔒 سیستم‌های Crypt و Hash برای رمزنگاری

📢 Event Dispatcher برای تعریف و مدیریت رویدادها

📁 سیستم File برای کار با فایل‌ها و پوشه‌ها

🎛 بهبود چشم‌گیر در کیبورد بیلدر و سهولت استفاده

🧭 سیستم Listening الهام‌گرفته از Routing لاراول با امکاناتی مثل:
▪️ پردازش ورودی‌ها
▫️ ایجاد گروه و کنترلر
▪️ اعمال محدودیت و Middleware
▫️ ریدایرکت بین بخش‌ها
▪️ نام‌گذاری مسیرها
▫️ و...

📝 سیستم Log برای ثبت لاگ‌ها با درایورهای متنوع

📨 سیستم Queue و Job برای ایجاد صف و زمان‌بندی اجرای کارها

🧰 اینترفیس جامع Redis با پشتیبانی کامل

🧬 پردازش هر درخواست در یک Pipeline مستقل برای کنترل بهتر

🧩 موتور قالب‌سازی پیشرفته الهام‌گرفته از Blade برای ساخت پیام‌ها

🌍 سیستم Translation برای ساخت ربات‌های چندزبانه

سیستم اعتبارسنجی داده‌ها با قوانین متنوع و قابلیت تعریف Rule سفارشی

🤖 امکان تعریف چندین کانکشن و مدیریت هم‌زمان چند ربات

🧹 امکان کش کردن کانفیگ‌ها، لیسنرها، ایونت‌ها، تمپلیت‌ها، سرویس‌ها و پکیج‌ها برای بهبود عملکرد ربات

و اما معرفی دو پکیج قدرتمند و جذاب:


‌‏🗓 Tempora: مشابه Carbon برای کار با تاریخ و زمان، به صورت چندزبانه و بازنویسی‌شده اختصاصی برای LaraGram

⚡️ LaraGram Surge: مشابه Octane برای اجرای ربات بر پایه Swoole و OpenSwoole
(و به‌زودی با پشتیبانی از RoadRunner و FrankenPHP!)

در آینده‌ای نزدیک LaraGram Installer برای ایجاد حرفه‌ای تر پروژه و همچنین پشتیبانی از MongoDB را نیز خواهیم داشت.

اگر خوشتون اومد، لطفاً به پروژه ⭐️ بدید، به دوستاتون معرفی کنید و حمایتتون رو نشون بدید
خودتون استفاده کنید، ایرادی دیدید بگید تا برطرف کنیم
یا حتی بیاید در توسعه کمک کنید ❤️

📌 پروژه در گیت‌هاب:
♦️ LaraGram
🔹 Laraquest
♦️ LaraGram Surge
🔹 Tempora
♦️ Core

@AmirhDeveloper🔰
.
19🍓1
⚜️ پکیج LaraGram Installer به‌طور کامل آماده شده و با استفاده از آن می‌توانید تنها با چند دستور ساده، یک پروژه لاراگرامی کاملاً کانفیگ‌شده ایجاد کنید.

تنها یک‌بار پکیج را به صورت گلوبال نصب کنید:
composer global require laraxgram/installer

پس از نصب، در هر مسیری که باشید، تنها با اجرای دستور زیر:
laragram new

می‌توانید یک پروژه جدید لاراگرامی ایجاد کنید.

این ابزار به‌صورت پیش‌فرض قابلیت‌های زیر را دارد و به‌صورت خودکار برای شما انجام می‌دهد:

🔹 کانفیگ Git
♦️ ساخت ریپازیتوری و Push در GitHub
🔹 تنظیم دیتابیس
♦️ ست‌کردن Webhook
🔹 نصب پکیج LaraGram Surge

در نهایت یک پروژه کاملاً آماده و کانفیگ‌شده در اختیار شما خواهد بود.

——————

📚 مستندات رسمی LaraGram نیز منتشر شده و از طریق لینک زیر در دسترس است:
🔗 laraxgram.github.io

📌 پروژه در گیت‌هاب:
♦️ LaraGram
🔹 Laraquest
♦️ LaraGram Surge
🔹 Tempora
♦️ Core

@AmirhDeveloper
.
5🔥15🍓3👍1
شرمنده یه چند وقتیه سرم خیلی شلوغ شده و خیلی سخت می‌تونم پست بنویسیم
هر وقت هم می‌خوام بنویسم برق می‌ره

برای همینه که دوره لاراول خوابیده، و پست هم زیاد نداریم

و خب سوالم اینه که برای ادامه فعالیت کانال کمیت محتوا رو ترجیح می‌دید یا کیفیت؟
8💔1🍓1🙉1
Forwarded from جادی | Jadi
💌 پیام وارده


جادی عزیزم سلام

ما کمپین رایگان شدن دوره های مکتب‌خونه رو با پیام همدلی در مسیر یادگیری شروع کردیم
۱۰۰ تا دوره تو حوزه های مختلف رو رایگان کردیم
از برنامه نویسی گرفته تا شبکه و هوش مصنوعی و کلی مهارت های نرم و حتی مثلا گیتار و فرانسوی و تعمیر خودرو و غیره
خلاصه بهترین دوره های مکتب‌خونه رو گلچین کردیم و رایگان کردیم تا آدما یادگیریشون رو متوقف نکنند
چون یادگیری باعث رشد همه و حال خوب و حس پیش رفتن و زنده بودن میده

این لینک دوره CEH شماس
https://mktb.me/3w7y/

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

این لندینگ همه دوره های رایگان شده س
https://mktb.me/txvk/

کد HAMDELI
7🍓2
پکیج جدیدی برای LaraGram منتشر شد به نام LaraGram MongoDB.

این پکیج به شما این امکان رو میده که از دیتابیس MongoDB با استفاده از Eloquent ORM استفاده کنید. یعنی می‌تونید از مدل‌ها، مایگریشن‌ها، سیدرها و فکتوری‌های Eloquent استفاده کنید.

همچنین تمامی روابط مثل یک به یک و چند به چند برای دیتابیس MongoDB رو شبیه‌سازی می‌کنه و می‌تونید در یک دیتابیس غیررابطه‌ای از روابط استفاده کنید.

از طرفی، درایورهای MongoDB برای سیستم کش و صف‌ها هم در اختیارتون میذاره.

برای نصب و اضافه کردن به پروژه‌تون کافیه این دستور رو اجرا کنید:
composer require laraxgram/mongodb

بعد از اون کافیه کانکشن دیتابیس رو تغییر بدید، بدون نیاز به تغییر در مدل‌ها و کوئری‌ها، دیتابیس به MongoDB تغییر می‌کنه.

گیت‌هاب پروژه هم اینجاست اگر مایل بودید حمایت کنید:
LaraGram MongoDB

@AmirhDeveloper
.
🔥82🍓1