#نکته #داکر
یکی از نکاتی که موقع ایجاد داکر فایل برای پروژه هاتون باید بهش توجه کنید عدم استفاده مکرر از دستور RUN برای هر بخش هست.
🔥 هر دستور RUN در Dockerfile یک لایه اضافی در تصویر نهایی ایجاد می کند.
پس بهترین روش این است که تعداد لایه ها را محدود کنید تا تصویر سبک بمونه.
برای نمونه به جای این:
به این صورت استفاده کنید:
🧠 پس موقع نوشتن داکر فایل سعی کنید از دستور RUN بصورت بهینه استفاده کنید
👾 @pishroapp
یکی از نکاتی که موقع ایجاد داکر فایل برای پروژه هاتون باید بهش توجه کنید عدم استفاده مکرر از دستور RUN برای هر بخش هست.
پس بهترین روش این است که تعداد لایه ها را محدود کنید تا تصویر سبک بمونه.
برای نمونه به جای این:
RUN curl -SL "https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-x64.tar.gz" --output nodejs.tar.gz
RUN echo "$NODE_DOWNLOAD_SHA nodejs.tar.gz" | sha256sum -c -
RUN tar -xzf "nodejs.tar.gz" -C /usr/local --strip-components=1
RUN rm nodejs.tar.gz
RUN ln -s /usr/local/bin/node /usr/local/bin/nodejsبه این صورت استفاده کنید:
RUN curl -SL "https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-x64.tar.gz" --output nodejs.tar.gz \
&& echo "$NODE_DOWNLOAD_SHA nodejs.tar.gz" | sha256sum -c - \
&& tar -xzf "nodejs.tar.gz" -C /usr/local --strip-components=1 \
&& rm nodejs.tar.gz \
&& ln -s /usr/local/bin/node /usr/local/bin/nodejsPlease open Telegram to view this post
VIEW IN TELEGRAM
برای نمونه دستور زیر فایل هایی که تو ده دقیقه اخیر تغییر کردن. و لیست میکنه
find . -type f -mmin -10
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
دوستان Eloquent #لاراول متدهای زیر رو برای کار با تاریخ و تایم داره، میتونید با استفاده از این متدها query های خودتون رو بهتر بنویسید
whereDay()
whereMonth()
whereYear()
whereDate()
whereTime()
روش استفاده از هرکدوم هم بصورت زیر هست:
👾 @pishroapp
whereDay()
whereMonth()
whereYear()
whereDate()
whereTime()
روش استفاده از هرکدوم هم بصورت زیر هست:
Product::whereDate('created_at', '2023-01-31')->get();
Product::whereMonth('created_at', '12')->get();
Product::whereDay('created_at', '31')->get();
Product::whereYear('created_at', date('Y'))->get();
Product::whereTime('created_at', '=', '14:13:58')->get();Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
🔰 شما از تکنولوژی چی میخواهید؟
از حالا به بعد، میتونیم هر وقت بخوایم شب را به روز تبدیل کنیم! یک شرکت نوآور به اسم رفلکت اوربیتال، سفارش برای "ارسال نور" را شروع کرده است.
چطور کار میکنه؟
این شرکت از شبکهای از ماهوارهها استفاده میکنه که نور خورشید رو مستقیم به زمین میتابونن. جالب اینجاست که شما میتونید هر جایی رو که دوست دارید برای این نور درخشان انتخاب کنید.
یعنی چی؟ دیگه میتونیم هر جایی رو که دلمون میخواد روشن کنیم، حتی اگه وسط شب باشه!
https://www.reflectorbital.com
👾 @pishroapp
از حالا به بعد، میتونیم هر وقت بخوایم شب را به روز تبدیل کنیم! یک شرکت نوآور به اسم رفلکت اوربیتال، سفارش برای "ارسال نور" را شروع کرده است.
چطور کار میکنه؟
این شرکت از شبکهای از ماهوارهها استفاده میکنه که نور خورشید رو مستقیم به زمین میتابونن. جالب اینجاست که شما میتونید هر جایی رو که دوست دارید برای این نور درخشان انتخاب کنید.
یعنی چی؟ دیگه میتونیم هر جایی رو که دلمون میخواد روشن کنیم، حتی اگه وسط شب باشه!
https://www.reflectorbital.com
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1👨💻1
قبلا به این صورت بود:
$comment = Comment::find(1);
$comment->forceDelete();
Comment::forceDestroy(1);
اگه بخواید چند ردیف رو با هم حذف کنید هم بصورت زیر هست که نتیجه تعداد حذف شده ها رو برمیگردونه:
$count = Comment::forceDestroy([1, 2]);
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥3
بچه ها یه دستور توی #داکر داریم که میتونید با استفاده از اون توی لیست images های توی داکرهاب جستجو کنید
✨ docker Search
✅ این دستور توی #Docker برای جستجوی تصاویر (images) در Docker Hub یا مخازن دیگه استفاده میشه.
✅ با استفاده از این دستور، میتونید نام و توضیحات تصاویر مختلف Docker را در مخازن عمومی پیدا کنید.
🧠 دستور کلی بصورت زیر هست:
OPTIONS: شامل گزینه هایی برای برای فیلتر کردن نتایج هست
TERM: عبارت یا نامی است که میخواهید آن را جستجو کنید.
🏴☠️ مثلا با دستور زیر میتونید لیست تمام images های مربوط به #nginx رو توی داکرهاب ببینید
👾 @pishroapp
docker search [OPTIONS] TERM
OPTIONS: شامل گزینه هایی برای برای فیلتر کردن نتایج هست
TERM: عبارت یا نامی است که میخواهید آن را جستجو کنید.
docker search nginx
Please open Telegram to view this post
VIEW IN TELEGRAM
حالا میخواید ببینید چه برنچ هایی روی استیج هست که روی main نرفته
میتونید از دستور زیر استفاده کنید:
git branch --contains stage --no-contains main
این دستور لیست برنچ هایی که توی stage هست و توی main نیست رو به شما میده
#git
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
به کمک هوش مصنوعی هکرا تونستن از طریق سیگنال های اطراف کابل HDMI تصویر رو به سرقت ببرن
سیگنالی که از سیم HDMI رد میشه یه میدان مغناطیسی درست میکنه که اگه بخوایم اونو کپچر کنیم نمیشه به تصویر واضحی رسید و اصلا بدرد نمیخوره.
به کمک هوش مصنوعی هکرا این کارو روی سیستم های خودشون به دفعات زیاد کردن و با استفاده از دیتای نویزی و دیتای دقیق یه مدل با دقت 70% تونستن train کنن.
یعنی اگه هکر دیتای نویزی که به نظر میاد بدرد نمیخوره رو کپچر کنه بده به مدلش به تصویر با کیفیت تقریبا 70 درصدی سیستم شما میرسه و حتی میتونه رمز هاتون رو به سرقت ببره.
مثلا هکر میتونه بیاد باهاتون احوال پرسی کنه و الکی مثلا ماگش کنار مانیتورتون جا بمونه توی این ماگ یه قطعه کار گذاشته باشه که سیگنال های HDMI شمارو کپچر کنه و در نتیجه بعدا با این سیگنال ها و مدلی که از قبل train کرده ویدیوی ضبط شده از مانیتور شما رو بازسازی کنه و حتی پسورداتون رو که روی حالت show بودن رو ببینه :)
👾 @pishroapp
سیگنالی که از سیم HDMI رد میشه یه میدان مغناطیسی درست میکنه که اگه بخوایم اونو کپچر کنیم نمیشه به تصویر واضحی رسید و اصلا بدرد نمیخوره.
به کمک هوش مصنوعی هکرا این کارو روی سیستم های خودشون به دفعات زیاد کردن و با استفاده از دیتای نویزی و دیتای دقیق یه مدل با دقت 70% تونستن train کنن.
یعنی اگه هکر دیتای نویزی که به نظر میاد بدرد نمیخوره رو کپچر کنه بده به مدلش به تصویر با کیفیت تقریبا 70 درصدی سیستم شما میرسه و حتی میتونه رمز هاتون رو به سرقت ببره.
مثلا هکر میتونه بیاد باهاتون احوال پرسی کنه و الکی مثلا ماگش کنار مانیتورتون جا بمونه توی این ماگ یه قطعه کار گذاشته باشه که سیگنال های HDMI شمارو کپچر کنه و در نتیجه بعدا با این سیگنال ها و مدلی که از قبل train کرده ویدیوی ضبط شده از مانیتور شما رو بازسازی کنه و حتی پسورداتون رو که روی حالت show بودن رو ببینه :)
Please open Telegram to view this post
VIEW IN TELEGRAM
👨💻1
▪️تو نسخهی بتای اپلیکیشن گوگل یه سری دکمههای جدید اضافه شده که افزونههای جمنای رو برای واتساپ، پیامرسان گوگل و اعلانهای سیستم اندروید فعال کنیم.
RoidBest
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
اگر به دنبال ابزاری هستین که بتونید فایلهای صوتی رو به متن تبدیل کنید، سایت زیر برای شماست.
تو این سایت میتونید هم فایل صوتی ضبط شده آپلود کنید و هم اینکه به صورت لایو صحبت کنید و متن مدنظرتونو بگیرید.
من برای فارسی رو امتحان کردم کیفیت خوبی داشت.DevTwitter
https://www.speechmatics.com/
👾 @pishroapp
تو این سایت میتونید هم فایل صوتی ضبط شده آپلود کنید و هم اینکه به صورت لایو صحبت کنید و متن مدنظرتونو بگیرید.
من برای فارسی رو امتحان کردم کیفیت خوبی داشت.DevTwitter
https://www.speechmatics.com/
Please open Telegram to view this post
VIEW IN TELEGRAM
SELECT DISTINCT department_id FROM employees;
SELECT department_id FROM employees GROUP BY department_id;
این دوتا Query میان و مقادیر یکتای department_id رو برمیگردونن
اما کدوم یکی بهینه تر هست بنظر شما؟
کوئری اول همه مقادیر یکتای department_id رو ز جدول employees انتخاب میکنه. اما DISTINCT برای انجام این کار نیاز داره که دادهها رو مرتب (sort) کنه که این عملیات برای مجموعههای داده بزرگ ممکنه بسیار سنگین و زمانبر باشه.
کوئری دوم هم همه ی مقادیر یکتای department_id رو انتخاب میکنه اما بدون نیاز به مرتبسازی.
به طور معمول، استفاده از GROUP BY به جای DISTINCT در چنین مواردی میتونه سریعتر باشه چونکه روشهای پیادهسازی متفاوتی دارند که میتونه کارآمدتر باشه.
استفاده غیرضروری از DISTINCT ممکنه باعث کاهش سرعت اجرای کوئریها بشه و در برخی موارد، استفاده از GROUP BY میتونه راه حل بهتری باشه.
#sql
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1 1
کدام یک را انتخاب کنیم؟
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2 1
🔰فریم ورک Aurelia:
Aurelia یک فریمورک مدرن برای توسعه وب است که بر پایه استانداردهای وب بنا شده و به برنامهنویسان این امکان را میدهد تا برنامههای کاربردی پیچیده و مقیاسپذیر بسازند. این فریمورک به دلیل سادگی، قابلیت انعطافپذیری و استفاده از تکنولوژیهای مدرن مانند ES6 و TypeScript شناخته شده است.
🌀ویژگیهای کلیدی Aurelia:
1⃣مدلسازی داده: Aurelia از الگوی MVVM (Model-View-ViewModel) استفاده میکند که به جداسازی منطق تجاری از رابط کاربری کمک میکند.
2⃣قابلیت استفاده مجدد: کامپوننتها در Aurelia به راحتی قابل استفاده مجدد هستند و میتوانند در پروژههای مختلف به کار روند.
3⃣تستپذیری: طراحی Aurelia به گونهای است که تست کردن کدها را آسان میکند.
4⃣مدیریت وضعیت: Aurelia ابزارهای مناسبی برای مدیریت وضعیت برنامه ارائه میدهد.
اگر شما به دنبال یک فریمورک سبک و مدرن برای توسعه وب هستید، Aurelia میتواند گزینه مناسبی
باشد. studio_amozesh
#فریم_ورک
👾 @pishroapp
Aurelia یک فریمورک مدرن برای توسعه وب است که بر پایه استانداردهای وب بنا شده و به برنامهنویسان این امکان را میدهد تا برنامههای کاربردی پیچیده و مقیاسپذیر بسازند. این فریمورک به دلیل سادگی، قابلیت انعطافپذیری و استفاده از تکنولوژیهای مدرن مانند ES6 و TypeScript شناخته شده است.
🌀ویژگیهای کلیدی Aurelia:
1⃣مدلسازی داده: Aurelia از الگوی MVVM (Model-View-ViewModel) استفاده میکند که به جداسازی منطق تجاری از رابط کاربری کمک میکند.
2⃣قابلیت استفاده مجدد: کامپوننتها در Aurelia به راحتی قابل استفاده مجدد هستند و میتوانند در پروژههای مختلف به کار روند.
3⃣تستپذیری: طراحی Aurelia به گونهای است که تست کردن کدها را آسان میکند.
4⃣مدیریت وضعیت: Aurelia ابزارهای مناسبی برای مدیریت وضعیت برنامه ارائه میدهد.
اگر شما به دنبال یک فریمورک سبک و مدرن برای توسعه وب هستید، Aurelia میتواند گزینه مناسبی
باشد. studio_amozesh
#فریم_ورک
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
یک بار برای همیشه فرق Emulator و Simulator رو یاد بگیر
ایمولیتور "دقیقا" اون سیستم رو شبیه سازی میکنه مثل VirtualBox یا شبیه سازی بازی های کنسول.
اما سیمولیتور "تقریبی" اون سیستم رو شبیه سازی میکنه، مثلا شبیه ساز های مدار الکتریکی، یا شبیه ساز پرواز هواپیما
توی شبیه ساز VirtualBox شما دقیقا دارید یه سیستم عامل رو شبیه سازی میکنید یعنی اگه یه عملی توی شبیه ساز انجام بدید دقیقا توی واقعیت هم همون عمل انجام میشه. اما توی شبیه ساز مدار الکتریکی به صورت ریاضی این عمل انجام میشه و تا حد ممکن توی واقعیت هم همین رفتار رو داره ولی ممکنه رفتارش متفاوت باشه. Linuxor
👾 @pishroapp
ایمولیتور "دقیقا" اون سیستم رو شبیه سازی میکنه مثل VirtualBox یا شبیه سازی بازی های کنسول.
اما سیمولیتور "تقریبی" اون سیستم رو شبیه سازی میکنه، مثلا شبیه ساز های مدار الکتریکی، یا شبیه ساز پرواز هواپیما
توی شبیه ساز VirtualBox شما دقیقا دارید یه سیستم عامل رو شبیه سازی میکنید یعنی اگه یه عملی توی شبیه ساز انجام بدید دقیقا توی واقعیت هم همون عمل انجام میشه. اما توی شبیه ساز مدار الکتریکی به صورت ریاضی این عمل انجام میشه و تا حد ممکن توی واقعیت هم همین رفتار رو داره ولی ممکنه رفتارش متفاوت باشه. Linuxor
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1 1
دوستان متد rawValue() توی #لاراول به شما این امکان رو میده که مقادیر رو مستقیماً از عبارات SQL دریافت کنید.
این متد زمانی مفیده که بخواید از توابع یا عبارات SQL# خاصی برای استخراج دادهها، بدون نیاز به اجرای یک کوئری کامل و گرفتن یک آبجکت مدل استفاده کنید
مثال زیر رو ببینید:
توی این مثال، متد rawValue() برای ترکیب دو ستون first_name و last_name با استفاده از تابع CONCAT در SQL به کار رفته.
یا نمونه ی زیر:
فرض کنید ما یه جدول محصولات داریم که شامل قیمتهاست و میخوایم قیمت رو با تخفیف محاسبه کنیم. برای این کار از rawValue() و یک عبارت SQL برای محاسبه استفاده میکنیم.
بصورت کلی متد rawValue() به شما این امکان رو میده که مستقیماً مقادیر خام از یک کوئری SQL دریافت کنید، بدون نیاز به اجرای کامل یک کوئری و برگرداندن آبجکت مدل.
این روش زمانی مفید هست که شما تنها یک مقدار خاص از یک عبارت SQL نیاز دارید و نمیخواید زمان یا منابع بیشتری برای پردازش اضافی صرف کنید.
👾 @pishroapp
این متد زمانی مفیده که بخواید از توابع یا عبارات SQL# خاصی برای استخراج دادهها، بدون نیاز به اجرای یک کوئری کامل و گرفتن یک آبجکت مدل استفاده کنید
مثال زیر رو ببینید:
$fullname = UserModel::where('id', $id)
->rawValue('CONCAT(first_name, " ", last_name)');توی این مثال، متد rawValue() برای ترکیب دو ستون first_name و last_name با استفاده از تابع CONCAT در SQL به کار رفته.
یا نمونه ی زیر:
فرض کنید ما یه جدول محصولات داریم که شامل قیمتهاست و میخوایم قیمت رو با تخفیف محاسبه کنیم. برای این کار از rawValue() و یک عبارت SQL برای محاسبه استفاده میکنیم.
$discountedPrice = ProductModel::where('id', $productId)
->rawValue('price - (price * discount / 100) AS discounted_price');
بصورت کلی متد rawValue() به شما این امکان رو میده که مستقیماً مقادیر خام از یک کوئری SQL دریافت کنید، بدون نیاز به اجرای کامل یک کوئری و برگرداندن آبجکت مدل.
این روش زمانی مفید هست که شما تنها یک مقدار خاص از یک عبارت SQL نیاز دارید و نمیخواید زمان یا منابع بیشتری برای پردازش اضافی صرف کنید.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
🔰 حمله هکری به ۲۰ بانک کشور و دریافت باج ۳ میلیون دلاری برای عدم انتشار داده های مشتریان بانکها
مجله آمریکایی پولیتیکو به نقل از منابع مطلع گزارش داده است که نظام بانکی ایران در ماه گذشته میلادی هدف یک حمله سایبری قرار گرفته است.
پولتیکو به نقل از منابع مطلع گزارش داده که حمله سایبری ماه گذشته که تهدیدی برای ثبات سیستم بانکداری ایران بود موجب شد که شرکت تامین کننده خدمات الکترونیکی برای بانکهای ایران (شرکت توسن) به هکرها میلیونها دلار باج پرداخت کند.
پولیتیکو در گزارش خود اظهارات متخصصان و مقامات مطلع غربی را بازتاب داده است که میگویند یک شرکت ایرانی در ماه گذشته دستکم ۳ میلیون دلار به یک گروه ناشناس از هکرها باج پرداخت کرد تا از انتشار اطلاعات حسابهای شخصی در بیش از ۲۰ بانک داخلی ایران صرفنظر کند .
این گزارش تاکید میکند که به نظر میرسد این حمله، بدترین حمله سایبری باشد که در کشور ایران رخ داده است.
به گفته مقامات آگاه، گروهی به نام «آیآر لیکس» که سابقه هک شرکتهای ایرانی را در پرونده دارد، احتمالاً پشت این نفوذ بوده است. گفته میشود هکرها ابتدا تهدید کرده بودند که دادههای به سرقت رفته را که شامل اطلاعات حساب شخصی و کارت اعتباری میلیونها ایرانی میشود، در «وب تاریک» بفروشند، مگر اینکه ۱۰ میلیون دلار ارز دیجیتال دریافت کنند، اما بعداً با دریافت مبلغ کمتری موافقت کردند.
این گروه هکری از طریق شرکتی تحت عنوان «توسن» که به بخش مالی ایران خدمات دیجیتال ارایه میکند، وارد سرورهای بانکها شدند. آنها توسن را به عنوان اسب تراوا (Trojan horse) استفاده کردند و اطلاعات بانکهای خصوصی و دولتی را استخراج کردند. از ۲۹ موسسه مالی فعال، ۲۰ بانک هدف حمله قرار گرفتند. در بین این بانکها نام بانک توسعه و معادن، بانک مهر، پستبانک ایران، بانک ایران زمین، بانک سرمایه، بانک ایران ونزوئلا، بانک دی، بانک شهر، اقتصاد نوین، بانک سامان و شعبههایی در ایتالیا و آلمان به چشم میخورد.
ایران هرگزاعتراف نکرد که ماه گذشته چه مشکلی باعث شد تا دستگاههای خودپرداز در سراسر کشور از کار بیفتد. اگرچه این حمله در آن زمان توسط شبکه تلویزیونی ایران اینترنشنال، گزارش شد، اما موضوع هکرها و باجخواهی آنها فاش نشد.
با وجود این تنشها میان تهران، واشینگتن و تلآویو، افراد مطلع از این واقعه به پولتیکو گفتند که «آی آر لیکس» نه به ایالات متحده و نه به اسرائیل وابسته است، و نشان میدهد که این حمله ممکن است کار هکرهای آزاد بوده باشد که عمدتاً انگیزههای مالی دارند.
منبع
👾 @pishroapp
مجله آمریکایی پولیتیکو به نقل از منابع مطلع گزارش داده است که نظام بانکی ایران در ماه گذشته میلادی هدف یک حمله سایبری قرار گرفته است.
پولتیکو به نقل از منابع مطلع گزارش داده که حمله سایبری ماه گذشته که تهدیدی برای ثبات سیستم بانکداری ایران بود موجب شد که شرکت تامین کننده خدمات الکترونیکی برای بانکهای ایران (شرکت توسن) به هکرها میلیونها دلار باج پرداخت کند.
پولیتیکو در گزارش خود اظهارات متخصصان و مقامات مطلع غربی را بازتاب داده است که میگویند یک شرکت ایرانی در ماه گذشته دستکم ۳ میلیون دلار به یک گروه ناشناس از هکرها باج پرداخت کرد تا از انتشار اطلاعات حسابهای شخصی در بیش از ۲۰ بانک داخلی ایران صرفنظر کند .
این گزارش تاکید میکند که به نظر میرسد این حمله، بدترین حمله سایبری باشد که در کشور ایران رخ داده است.
به گفته مقامات آگاه، گروهی به نام «آیآر لیکس» که سابقه هک شرکتهای ایرانی را در پرونده دارد، احتمالاً پشت این نفوذ بوده است. گفته میشود هکرها ابتدا تهدید کرده بودند که دادههای به سرقت رفته را که شامل اطلاعات حساب شخصی و کارت اعتباری میلیونها ایرانی میشود، در «وب تاریک» بفروشند، مگر اینکه ۱۰ میلیون دلار ارز دیجیتال دریافت کنند، اما بعداً با دریافت مبلغ کمتری موافقت کردند.
این گروه هکری از طریق شرکتی تحت عنوان «توسن» که به بخش مالی ایران خدمات دیجیتال ارایه میکند، وارد سرورهای بانکها شدند. آنها توسن را به عنوان اسب تراوا (Trojan horse) استفاده کردند و اطلاعات بانکهای خصوصی و دولتی را استخراج کردند. از ۲۹ موسسه مالی فعال، ۲۰ بانک هدف حمله قرار گرفتند. در بین این بانکها نام بانک توسعه و معادن، بانک مهر، پستبانک ایران، بانک ایران زمین، بانک سرمایه، بانک ایران ونزوئلا، بانک دی، بانک شهر، اقتصاد نوین، بانک سامان و شعبههایی در ایتالیا و آلمان به چشم میخورد.
ایران هرگزاعتراف نکرد که ماه گذشته چه مشکلی باعث شد تا دستگاههای خودپرداز در سراسر کشور از کار بیفتد. اگرچه این حمله در آن زمان توسط شبکه تلویزیونی ایران اینترنشنال، گزارش شد، اما موضوع هکرها و باجخواهی آنها فاش نشد.
با وجود این تنشها میان تهران، واشینگتن و تلآویو، افراد مطلع از این واقعه به پولتیکو گفتند که «آی آر لیکس» نه به ایالات متحده و نه به اسرائیل وابسته است، و نشان میدهد که این حمله ممکن است کار هکرهای آزاد بوده باشد که عمدتاً انگیزههای مالی دارند.
منبع
Please open Telegram to view this post
VIEW IN TELEGRAM
😐3
Anonymous Quiz
14%
__call()
43%
__callStatic()
24%
__invoke()
19%
__setStatic()
Please open Telegram to view this post
VIEW IN TELEGRAM
فرض کنید میخواید پس از اینکه کاربر عضو شد و توی جدول user ذخیره سازی با موفقیت انجام شد برای کاربر پیام خوش آمد بفرستید
فرض کنید بصورت زیر داریم یک کاربر جدید ایجاد میکنیم
DB::transaction(function () {
$user = User::create([...]);
$user->teams()->create([...]);
});خوب حالا میتونیم توی متد booted خوده مدلمون یا توی یه Observer کد زیر رو قرار بدیم
class User extends Model
{
protected static function booted()
{
static::created(function ($user) {
// Will send the email only if the
// transaction is committed
DB::afterCommit(function () use ($user) {
Mail::send(new WelcomeEmail($user));
});
});
}
}
خوب اینجا ما گفتیم وقتی یه کاربر ایجاد شد، و توی جدول هم کامیت خورد اونوقت مثلا ایمیل خوش آمد گویی ارسال کنید
اینطور شما میتونید به راحتی به خیلی از اکشن ها دسترسی داشته باشید و کد تمیزتری هم داشته باشید
#laravel
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5 3