Pishro App – Telegram
Pishro App
149 subscribers
258 photos
50 videos
5 files
215 links
از دنیای صفر و یک



👨‍💻 @imanborumand_ir


Website: https://pishroapp.net
Download Telegram
-اصل Avoid disinformation در  کلین کد


این اصل توی کلین کد میگه که باید از دادن اطلاعات غلط یا سرنخ ها  ناقص و مبهم که معنی کد رو به خوبی نشون نمیده تو اسم متغیر ها استفاده نکنیم

برای مثلا  hp , aix , و sco متغیر های ضعیفی محسوب میشن چون که اونا اسم های پلتفرم های یونیکس هستن . حتی اگه شما یه hypotenuse مینویسید و hp بنظر متغیر خوبی میاد اما باز هم این میتونه یه متغیری باشه که اطلاعات غلط میده


یا مثلا برای نشون دادن گروهی از اکانت ها از accountList استفاده نکنید مگه اینکه واقعا یه لیست باشه
اگه کانتیرنتون یه سری اکانت رو نگهداری میکنه در واقع یه لیست نیست و ممکنه خواننده کد اشتباه متوجه بشه پس accountGroup یا bunchOfAccounts یا حتی accounts میتونه گزینه بهتری باشه/CleverDevs


#CleanCode


👾 @pishroapp
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍1
🧠 جدیدترین و مهمترین اخبار، نکته ها و مقالاتِ حوزه‌ی برنامه نویسی رو داشته باشید


فرقی نداره #بک_اند باشی یا #فرانت ‼️


PHP, Laravel, Golang, React Js, Docker, Git

🩷💢 @pishroapp

⚡️همین الان عضو شو 👍

👾 @pishroapp
Please open Telegram to view this post
VIEW IN TELEGRAM
💙 پروتکل UDP چیست؟

⭐️ پروتکل UDP (User Datagram Protocol) یکی از پروتکل‌های لایه حمل در مجموعه پروتکل‌های اینترنت (TCP/IP) است. برخلاف پروتکل #TCP که اتصال‌گرا است و قبل از ارسال داده‌ها نیاز به برقراری ارتباط بین فرستنده و گیرنده دارد، UDP یک پروتکل بدون اتصال (connectionless) است. این به این معناست که در UDP، داده‌ها بدون نیاز به تأیید یا برقراری یک ارتباط پایدار بین فرستنده و گیرنده ارسال می‌شوند.


⭐️ این #پروتکل بدون نیاز به برقراری اتصال بین دو نقطه، داده‌ها را ارسال می‌کند. این باعث می‌شود ارسال داده‌ها سریع‌تر باشد، اما به این معنا هم هست که هیچ اطمینانی برای تحویل داده‌ها وجود ندارد.

⭐️ از آنجایی که هیچ فرآیند کنترلی برای برقراری و حفظ اتصال وجود ندارد، ارسال داده‌ها در UDP بسیار سریع‌تر از TCP است. این ویژگی آن را برای کاربردهایی که سرعت از اهمیت بیشتری نسبت به دقت و اطمینان برخوردار است، ایده‌آل می‌کند.

⭐️ پروتکل UDP تضمینی برای تحویل موفقیت‌آمیز بسته‌های داده به گیرنده نمی‌دهد. اگر بسته‌ای گم شود، دوباره ارسال نخواهد شد و هیچ مکانیزم بازپخش بسته‌ها وجود ندارد.

⭐️ در UDP، بسته‌های داده (datagrams) ممکن است خارج از ترتیب به مقصد برسند، زیرا این پروتکل هیچ‌گونه مکانیسمی برای مدیریت ترتیب داده‌ها ندارد.

⭐️ به دلیل ساده‌تر بودن و عدم نیاز به کنترل جریان و کنترل خطا، #UDP منابع کمتری از سیستم را مصرف می‌کند.



🧠مثال: UDP اغلب در پخش زنده و بازی‌های آنلاین استفاده می‌شود، جایی که  سرعت از اطمینان بیشتر اهمیت دارد.


👾 @pishroapp
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
👾 کدوم یکی از متدهای جادویی PHP این قابلیت رو میده که یک شی ساخته شده از کلاس رو شبیه یک متد باهاش رفتار کرد؟
Anonymous Quiz
19%
__call()
38%
__construct()
25%
__invoke()
19%
__callStatic()
👍21
#نکته #داکر

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

🔥 هر دستور RUN در Dockerfile یک لایه اضافی در تصویر نهایی ایجاد می کند.
پس  بهترین روش این است که تعداد لایه ها را محدود کنید تا تصویر سبک بمونه.

برای نمونه به جای این:
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/nodejs


🧠 پس موقع نوشتن داکر فایل سعی کنید از دستور RUN بصورت بهینه استفاده کنید

👾 @pishroapp
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍2
با دستور زیر میتونید فایل هایی که تو بازه ی مشخص تغییر کردن رو توی #لینوکس مشاهده کنید


برای نمونه دستور زیر فایل هایی که تو ده دقیقه اخیر تغییر کردن. و لیست میکنه
find . -type f -mmin -10

👾 @pishroapp
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
دوستان Eloquent #لاراول متدهای زیر رو برای کار با تاریخ و تایم داره، میتونید با استفاده از این متدها query های خودتون رو بهتر بنویسید

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();

👾 @pishroapp
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍1👏1
This media is not supported in your browser
VIEW IN TELEGRAM
🔰 شما از تکنولوژی چی میخواهید؟

از حالا به بعد، می‌تونیم هر وقت بخوایم شب را به روز تبدیل کنیم! یک شرکت نوآور به اسم رفلکت اوربیتال، سفارش برای "ارسال نور" را شروع کرده است.

چطور کار می‌کنه؟
این شرکت از شبکه‌ای از ماهواره‌ها استفاده می‌کنه که نور خورشید رو مستقیم به زمین می‌تابونن. جالب اینجاست که شما می‌تونید هر جایی رو که دوست دارید برای این نور درخشان انتخاب کنید.

یعنی چی؟ دیگه می‌تونیم هر جایی رو که دلمون می‌خواد روشن کنیم، حتی اگه وسط شب باشه!
https://www.reflectorbital.com

👾 @pishroapp
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1👨‍💻1
🧠 توی #لاراول 11.21 یه متد جدید اضاف شده که میتونید با اون مدل هایی که از SoftDelete استفاده میکنند رو راحت تر حذف کنید

قبلا به این صورت بود:
$comment = Comment::find(1);
$comment->forceDelete();
 


حالا میتونید به این صورت مدل با ای دی یک رو حذف کنید:
Comment::forceDestroy(1);



اگه بخواید چند ردیف رو با هم حذف کنید هم بصورت زیر هست که نتیجه تعداد حذف شده ها رو برمیگردونه: 
$count = Comment::forceDestroy([1, 2]);



👾 @pishroapp
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥3
بچه ها یه دستور توی #داکر داریم که میتونید با استفاده از اون توی لیست images های توی داکرهاب جستجو کنید

docker Search


این دستور توی #Docker برای جستجوی تصاویر (images) در Docker Hub یا مخازن دیگه استفاده میشه.


با استفاده از این دستور، میتونید نام و توضیحات تصاویر مختلف Docker را در مخازن عمومی پیدا کنید.


🧠 دستور کلی بصورت زیر هست:
docker search [OPTIONS] TERM


OPTIONS:  شامل گزینه هایی برای برای فیلتر کردن نتایج هست

TERM: عبارت یا نامی است که می‌خواهید آن را جستجو کنید.


🏴‍☠️ مثلا با دستور زیر میتونید لیست تمام images  های مربوط به #nginx رو توی داکرهاب ببینید
docker search nginx

👾 @pishroapp
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍2
💡بچه ها فرض کنید یه برنچ main و به برنچ stage دارید که برای توسعه روی استیج مرج میزنید و در نهایت استیج رو مرج میکنید با main
حالا میخواید ببینید چه برنچ هایی روی استیج هست که روی main نرفته

میتونید از دستور زیر استفاده کنید:

git branch --contains stage --no-contains main 


این دستور لیست برنچ هایی که توی stage هست و توی main نیست رو به شما میده

#git

👾 @pishroapp
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
به کمک هوش مصنوعی هکرا تونستن از طریق سیگنال های اطراف کابل HDMI تصویر رو به سرقت ببرن

سیگنالی که از سیم HDMI رد میشه یه میدان مغناطیسی درست میکنه که اگه بخوایم اونو کپچر کنیم نمیشه به تصویر واضحی رسید و اصلا بدرد نمیخوره.

به کمک هوش مصنوعی هکرا این کارو روی سیستم های خودشون به دفعات زیاد کردن و با استفاده از دیتای نویزی و دیتای دقیق یه مدل با دقت 70% تونستن train کنن.

یعنی اگه هکر دیتای نویزی که به نظر میاد بدرد نمیخوره رو کپچر کنه بده به مدلش به تصویر با کیفیت تقریبا 70 درصدی سیستم شما میرسه و حتی میتونه رمز هاتون رو به سرقت ببره.


مثلا هکر میتونه بیاد باهاتون احوال پرسی کنه و الکی مثلا ماگش کنار مانیتورتون جا بمونه توی این ماگ یه قطعه کار گذاشته باشه که سیگنال های HDMI شمارو کپچر کنه و در نتیجه بعدا با این سیگنال ها و مدلی که از قبل train کرده ویدیوی ضبط شده از مانیتور شما رو بازسازی کنه و حتی پسورداتون رو که روی حالت show بودن رو ببینه :)


👾 @pishroapp
Please open Telegram to view this post
VIEW IN TELEGRAM
👨‍💻1
📱 هوش مصنوعی جمنای به‌زودی به پیام‌های واتساپ و Google message پاسخ میده!

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

📨 ظاهراً افزونه‌ی Messages (SMS) عملکرد ساده‌ای داره و فقط امکان خوندن و پاسخ‌دادن به پیام‌ها با استفاده از اپلیکیشن Google Messages رو فراهم می‌کنه.

🌐 ازطرفی افزونه‌ی واتساپ هم اضافه شده که به کاربر اجازه میده به وسیله اون پیام ارسال کنه، اونارو بخونه و حتی تماس‌های واتساپ رو برقرار کنه و همه‌ی اینا فقط با یک فرمان صوتی امکان‌پذیر است!
RoidBest

👾 @pishroapp
Please open Telegram to view this post
VIEW IN TELEGRAM
1
اگر به دنبال ابزاری هستین که بتونید فایل‌های صوتی رو به متن تبدیل کنید، سایت زیر برای شماست.
تو این سایت میتونید هم فایل صوتی ضبط شده آپلود کنید و هم اینکه به صورت لایو صحبت کنید و متن مدنظرتونو بگیرید.
من برای فارسی رو امتحان کردم کیفیت خوبی داشت.DevTwitter

https://www.speechmatics.com/

👾 @pishroapp
Please open Telegram to view this post
VIEW IN TELEGRAM
💡 سلام دوستان، دوتا Query زیر رو ببینید:



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


👾 @pishroapp
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11
⭐️پروتکل gRPC، REST و GraphQL
کدام یک را انتخاب کنیم؟



🙏 انتخاب پروتکل مناسب برای API یکی از تصمیمات کلیدی است که میتونه تأثیر قابل توجهی بر عملکرد و کارایی برنامه‌ها و زیرساخت‌ها داشته باشه. سه پروتکل پرکاربرد در این زمینه gRPC، REST و GraphQL هستند که هر یک ویژگی‌ها و مزایای منحصر به فرد خود را دارند.

🔗 https://pishroapp.net/article/164


👾 @pishroapp
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21
🔰فریم ورک Aurelia:


Aurelia یک فریم‌ورک مدرن برای توسعه وب است که بر پایه استانداردهای وب بنا شده و به برنامه‌نویسان این امکان را می‌دهد تا برنامه‌های کاربردی پیچیده و مقیاس‌پذیر بسازند. این فریم‌ورک به دلیل سادگی، قابلیت انعطاف‌پذیری و استفاده از تکنولوژی‌های مدرن مانند ES6 و TypeScript شناخته شده است.


🌀ویژگی‌های کلیدی Aurelia:

1⃣مدل‌سازی داده: Aurelia از الگوی MVVM (Model-View-ViewModel) استفاده می‌کند که به جداسازی منطق تجاری از رابط کاربری کمک می‌کند.

2⃣قابلیت استفاده مجدد: کامپوننت‌ها در Aurelia به راحتی قابل استفاده مجدد هستند و می‌توانند در پروژه‌های مختلف به کار روند.

3⃣تست‌پذیری: طراحی Aurelia به گونه‌ای است که تست کردن کدها را آسان می‌کند.

4⃣مدیریت وضعیت: Aurelia ابزارهای مناسبی برای مدیریت وضعیت برنامه ارائه می‌دهد.


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

#فریم_ورک


👾 @pishroapp
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
یک بار برای همیشه فرق Emulator و Simulator رو یاد بگیر

ایمولیتور "دقیقا" اون سیستم رو شبیه سازی میکنه مثل VirtualBox یا شبیه سازی بازی های کنسول.

اما سیمولیتور "تقریبی" اون سیستم رو شبیه سازی میکنه، مثلا شبیه ساز های مدار الکتریکی، یا شبیه ساز پرواز هواپیما


توی شبیه ساز VirtualBox شما دقیقا دارید یه سیستم عامل رو شبیه سازی میکنید یعنی اگه یه عملی توی شبیه ساز انجام بدید دقیقا توی واقعیت هم همون عمل انجام میشه. اما توی شبیه ساز مدار الکتریکی به صورت ریاضی این عمل انجام میشه و تا حد ممکن توی واقعیت هم همین رفتار رو داره ولی ممکنه رفتارش متفاوت باشه. Linuxor

👾 @pishroapp
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
⭐️ ریفکتورینگ «Refactoring» مجموعه‌ای از تکنیک‌هاست که به منظور اصلاح و بهبود کدهای قبلی بدون تغییر در عملکرد و رفتارشان جهت خوانایی، کارامدی و قابلیت نگهداری بیشتر انجام می‌شود.


‼️ یک نرم‌افزار برای ادامه حیات خود همواره نیاز به نگهداری، رفع مشکلات و بروزرسانی دارد. اغلب این بروزرسانی‌ها روی کدهای قبلی انجام می‌شود. کد کثیف و افزایش بدهی فنی، توسعه نرم‌افزار را کند و هزینه‌های آن را بالا خواهد برد.


ریفکتورینگ یک سرمایه‌گذاری و راه حلی برای مقابله با کد کثیف و بدهی فنی است که باعث کاهش هزینه‌های توسعه نرم‌افزار در آینده خواهد شد

👾 @pishroapp
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11
🐱


👾 @pishroapp
Please open Telegram to view this post
VIEW IN TELEGRAM
😁3😐1
دوستان متد  rawValue() توی #لاراول به شما این امکان رو میده که مقادیر رو مستقیماً از عبارات SQL دریافت کنید.
این متد زمانی مفیده که بخواید از توابع یا عبارات 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 نیاز دارید و نمی‌خواید زمان یا منابع بیشتری برای پردازش اضافی صرف کنید.

👾 @pishroapp
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3