PHP & MYSQL
1.34K subscribers
21 photos
1 video
36 files
23 links
Download Telegram
Forwarded from اتاق برنامه نویسی </> (PapiDon)
Learn things that don't change

یادگیری چیزهایی که تغییر نمی‌کنند.

در این پست، تلاش می‌کنیم بفهمیم چرا باید اصول پایه را به جای فریم‌ورک‌ها یاد بگیریم و این موضوع چه تاثیری دارد.

🤔 آیا تاکنون به این فکر کرده‌اید که چرا برخی تکنولوژی‌ها هنوز با ما هستند و برخی دیگر از بین رفته‌اند؟

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

👀 اثر Lindy

ما توسعه‌دهندگان دوست داریم هرچه زودتر چیزهای جدید را یاد بگیریم. این چیزها عمدتا شامل فریم‌ورک‌ها و ابزارهای جدید است (مانند React، Angular، Spring، Web Forms و غیره). با این حال، این فریم‌ورک‌ها معمولاً عمر کوتاهی دارند، در بهترین حالت ۲ تا ۵ سال. به جای یادگیری فریم‌ورک‌ها، که تا حدی لازم است، باید بیشتر روی یادگیری اصول پایه تمرکز کنیم.

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

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

مثالی از یک اپلیکیشن وب که به کاربران امکان آپلود و اشتراک‌گذاری تصاویر را می‌دهد در نظر بگیرید که مثلاً در Ruby on Rails و قابلیت‌های آن برای پردازش تصاویر انجام شده است. اگر تعداد کاربران افزایش یابد، فقط می‌توانیم با مسائل عملکردی کار کنیم اگر فریم‌ورک را خوب بشناسیم. با این حال، اگر اصول پایه توسعه وب را بفهمیم، می‌توانیم نقاط ضعف را شناسایی کرده و راه‌حل‌های مختلفی مانند استفاده از CDN، بهینه‌سازی اندازه تصاویر، استفاده از راه‌حل‌های مختلف ذخیره‌سازی و غیره را امتحان کنیم.


⁉️پس کدام اصول پایه را یاد بگیریم؟ اینجا برخی از آنها آمده است :

🔸Algorithms
🔹Data
🔸Clean Code
🔹SOLID Principles
🔸OO Programming
🔹Design Patterns
🔸Distributed Computing
🔹 System Design
...


⚠️سعی کنید چیزهایی که تغییر نمی‌کنند را یاد بگیرید (نقل قول از جف بزوس). روی پایه‌ها تمرکز کنید، نه فریم‌ورک‌ها.

🔝 کتاب‌هایی که هر مهندس نرم‌افزاری باید در سال ۲۰۲۴ بخواند ...

📌 The Pragmatic Programmer
نوشته دیوید توماس و اندرو هانت.

📌 Modern Software Engineering
دیوید فارلی

📌 Code Complete: A Practical Handbook of Software Construction
استیو مک‌کانل

📌 Software Engineering at Google
تیتوس وینترز، تام منشرک و هیروم رایت


💥 Good Practices


📌 Clean Code
عمو باب مارتین

📌 Head First Design Patterns
اریک فریمن

📌 Refactoring
مارتین فاولر

📌 Grokking Algorithms
آدیتیا بارگاوا




📁 #Skills

کانال تخصصی لاراول
📌 @PapiDon_state

☕️ اتاق برنامه‌نویسی
📌 @PapiDon_coding
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥2👏1
PHP & MYSQL pinned « Learn things that don't change یادگیری چیزهایی که تغییر نمی‌کنند. در این پست، تلاش می‌کنیم بفهمیم چرا باید اصول پایه را به جای فریم‌ورک‌ها یاد بگیریم و این موضوع چه تاثیری دارد. 🤔 آیا تاکنون به این فکر کرده‌اید که چرا برخی تکنولوژی‌ها هنوز با ما هستند…»
Forwarded from اتاق برنامه نویسی </> (PapiDon)
🤓 کتاب‌هایی که هر مهندس نرم‌افزاری باید در سال ۲۰۲۴ بخواند ...

🔖The Pragmatic Programmer The Pragmatic Programmer
David Thomas and Andrew Hunt

این کتاب توصیه‌های عملی و حرفه‌ای برای توسعه‌دهندگان ارائه می‌دهد. موضوعاتی مانند مسئولیت‌پذیری شخصی و توسعه حرفه‌ای تا تکنیک‌های معماری را پوشش می‌دهد. با وجود اینکه در سال ۱۹۹۹ نوشته شده است، هنوز در بسیاری از جنبه‌ها معتبر است. ویژگی منحصر به فرد این کتاب این است که به صورت عملی با مجموعه‌ای از نکات برای بهبود فرآیند توسعه به شما آموزش می‌دهد.

🔖The Pragmatic Programmer Modern Software Engineering
David Farley

این کتاب بر ساخت نرم‌افزار عالی تمرکز دارد و نویسنده یک چارچوب محکم برای اتصال بهترین شیوه‌ها مانند Continuous Delivery (CD)، معماری شش ضلعی و Test-Driven Development به ایده‌های اصلی در مهندسی نرم‌افزار ارائه می‌دهد. او همچنین در مورد تاریخچه توسعه نرم‌افزار و ایده‌هایی که صنعت را تغییر داده‌اند، می‌نویسد.

🔖The Pragmatic Programmer Code Complete: A Practical Handbook of Software Construction
Steve McConnell

یکی از کتاب‌هایی که بیش از ۱۵ سال پیش نوشته شده و هنوز معتبر است. این کتاب به طراحی، کدنویسی، اشکال‌زدایی و تست می‌پردازد. در بیش از ۹۰۰ صفحه، نویسندگان نحوه نوشتن برنامه‌ها برای مردم اول و سپس برای کامپیوترها، چگونگی تقسیم کد به دامنه‌ها و چگونگی تسلط بر ویژگی‌های انسانی بهترین برنامه‌نویسان (تواضع، کنجکاوی و مهم‌تر از همه، کنترل اگو) را توضیح می‌دهند.

🔖The Pragmatic Programmer Software Engineering at Google
Titus Winters, Tom Manshreck, and Hyrum Wright

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

🔖The Pragmatic Programmer Head First Design Patterns
Eric Freeman

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

🔖The Pragmatic Programmer Grokking Algorithms
Aditya Bhargava

این کتاب به زبانی ساده درباره کاربرد الگوریتم‌های استاندارد در مسائل روزمره توسعه‌دهندگان توضیح می‌دهد. از مرتب‌سازی و جستجو شروع می‌کند و سپس به فشرده‌سازی داده‌ها و هوش مصنوعی با نمونه کدهایی در پایتون می‌پردازد. احتمالاً بهترین کتاب برای شروع یادگیری الگوریتم‌ها است.

🔖The Pragmatic Programmer Designing Data-Intensive Applications
Martin Kleppman

این کتاب مفاهیم پیشرفته داده مانند پایگاه‌های داده و مدل‌های داده و مفاهیم توزیع‌شده مانند تراکنش‌ها، تکرار، سازگاری و غیره را توضیح می‌دهد. این کتاب یکی از تأثیرگذارترین کتاب‌ها در این دسته است.

🔖The Pragmatic Programmer Growing Object-Oriented Software by Tests
Steve Freeman

نویسندگان رویه‌های خود، اهداف طراحی و برخی ابزارهایی که برای انجام کار استفاده می‌کنند را شرح می‌دهند. در یک مثال گسترده، خواهید فهمید که چگونه TDD در چند سطح عمل می‌کند، با استفاده از تست‌ها برای هدایت ویژگی‌های کد و ساختار شیءگرا و استفاده از اشیاء شبیه‌سازی‌شده برای یافتن و سپس تعریف پیوندها بین اشیاء.

🔖The Pragmatic Programmer A Philosophy of Software Design
John Ousterhout

این کتاب توضیح می‌دهد که چگونه سیستم‌های نرم‌افزاری پیچیده را به قطعات قابل پیاده‌سازی مستقل تقسیم کنیم. سپس به مسائل فلسفی در مورد نحوه برخورد با فرآیند طراحی نرم‌افزار می‌پردازد و فهرستی از راهنمایی‌های طراحی برای دنبال کردن ارائه می‌دهد. این کتاب همچنین فهرستی از علائم هشدار برای طراحی بد ارائه می‌دهد. این کتاب یک همراه عالی برای Clean Code است زیرا دیدگاه متفاوتی ارائه می‌دهد.


📁 #Skills

کانال تخصصی لاراول
📌 @PapiDon_state

☕️ اتاق برنامه‌نویسی
📌 @PapiDon_coding
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍3
PHP & MYSQL pinned «🤓 کتاب‌هایی که هر مهندس نرم‌افزاری باید در سال ۲۰۲۴ بخواند ... 🔖The Pragmatic Programmer The Pragmatic Programmer David Thomas and Andrew Hunt این کتاب توصیه‌های عملی و حرفه‌ای برای توسعه‌دهندگان ارائه می‌دهد. موضوعاتی مانند مسئولیت‌پذیری شخصی و توسعه حرفه‌ای…»
Forwarded from اتاق برنامه نویسی </> (PapiDon)
🎓 تفاوت بین تعریف Volume در Dockerfile و استفاده از v- هنگام اجرای کانتینر

سلام دوستان ! 👋

امروز می‌خواهیم درباره یکی از مفاهیم مهم در داکر صحبت کنیم: Volume. شاید این سوال برای شما پیش آمده باشد که وقتی می‌توانیم Volume را هم در Dockerfile و هم هنگام اجرای کانتینر با استفاده از v- تعریف کنیم، تفاوت بین این دو روش چیست؟ 🤔

🔍 تعریف Volume در Dockerfile

وقتی شما یک Volume را در داخل Dockerfile تعریف می‌کنید، در حقیقت دارید به داکر می‌گویید که این دایرکتوری‌ها باید به عنوان نقاط ذخیره‌سازی پایدار (Persistent Storage) عمل کنند. به عبارت دیگر، وقتی یک کانتینر از روی این ایمیج ساخته می‌شود، آن دایرکتوری‌هایی که به عنوان Volume تعریف کرده‌اید، از کانتینر جدا شده و داده‌های آنها حفظ می‌شود، حتی اگر کانتینر متوقف شود یا از بین برود.

🔧 مثال:

FROM ubuntu:latest
VOLUME /data


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

مزیت :

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

🔍 استفاده از v- هنگام اجرای کانتینر

حالا فرض کنید شما یک ایمیج داکر دارید و می‌خواهید هنگام اجرای کانتینر، یک دایرکتوری خاص از سیستم فایل میزبان (Host) خود را به داخل کانتینر Mount کنید. اینجاست که v- به کار می‌آید. این گزینه به شما اجازه می‌دهد یک Volume را دینامیک (در زمان اجرا) ایجاد کنید و یک دایرکتوری میزبان را به دایرکتوری کانتینر متصل کنید.

🔧 مثال:

docker run -v /path/on/host:/path/in/container myimage


در اینجا، /path/on/host
(که روی سیستم میزبان است) به /path/in/container (که داخل کانتینر است) متصل می‌شود. هر تغییری که در این مسیرها رخ دهد، بین میزبان و کانتینر به اشتراک گذاشته می‌شود.


مزیت:

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

🎯 نتیجه‌گیری: تفاوت کلیدی

- تعریف Volume در Dockerfile بیشتر به معنای تعیین مکان‌های پیش‌فرض برای ذخیره‌سازی پایدار در هنگام ساخت ایمیج است.

- استفاده از v- به شما اجازه می‌دهد در زمان اجرا، به صورت پویا دایرکتوری‌های میزبان و کانتینر را به یکدیگر متصل کنید.

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


📌 توجه داشته باشید که تعریف VOLUME در Dockerfile الزاما به معنای این نیست که این مسیرها به طور خودکار به بیرون (میزبان) پاس داده می‌شوند یا به اشتراک گذاشته می‌شوند. این تنها به داکر اعلام می‌کند که این مسیرها باید به صورت پایدار و مستقل از چرخه زندگی کانتینر ذخیره شوند. اینکه این Volume‌ها به یک دایرکتوری در میزبان متصل شوند یا نه، به زمان اجرای کانتینر و نحوه استفاده از v- بستگی دارد.

📁 #Docker

کانال تخصصی لاراول
📌 @PapiDon_state

☕️ اتاق برنامه‌نویسی
📌 @PapiDon_coding
👍41🔥1
PHP & MYSQL pinned «🎓 تفاوت بین تعریف Volume در Dockerfile و استفاده از v- هنگام اجرای کانتینر سلام دوستان ! 👋 امروز می‌خواهیم درباره یکی از مفاهیم مهم در داکر صحبت کنیم: Volume. شاید این سوال برای شما پیش آمده باشد که وقتی می‌توانیم Volume را هم در Dockerfile و هم هنگام اجرای…»
Forwarded from اتاق برنامه نویسی </> (PapiDon)
🔥 درسگفتار کامل درباره Spread Syntax و Rest Operator در جاوااسکریپت

جاوااسکریپت دو قابلیت بسیار مهم و کاربردی داره که شاید در نگاه اول شبیه به هم به نظر بیان، ولی در واقع کاربردهای کاملاً متفاوتی دارن:

🔸 Spread Syntax

🔹 Rest Operator



هر دو از سه نقطه (...) استفاده می‌کنن، اما تفاوت اصلی اینه که:

- Spread Syntax برای باز کردن (پخش کردن) داده‌ها استفاده می‌شه.
- Rest Operator برای جمع کردن (گروه‌بندی کردن) داده‌ها استفاده می‌شه.

حالا بریم سراغ توضیح دقیق و ساده برای هرکدوم.

🟢 Spread Syntax → باز کردن محتوا

کاربرد اصلی:

استفاده برای کپی کردن، ترکیب کردن، یا ارسال مقدارهای جدا از هم به یک تابع.

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

مثال ۱: کپی کردن آرایه

const numbers = [1, 2, 3];
const newNumbers = [...numbers]; // کپی آرایه اصلی

console.log(newNumbers); // [1, 2, 3]


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


مثال ۲: ترکیب دو آرایه

const numbers1 = [1, 2, 3];
const numbers2 = [4, 5, 6];

const combined = [...numbers1, ...numbers2];

console.log(combined); // [1, 2, 3, 4, 5, 6]


این روش یک روش تمیز و سریع برای ترکیب آرایه‌هاست، بدون نیاز به ()concat.


مثال ۳: ارسال آرایه به عنوان آرگومان‌های یک تابع

const numbers = [1, 2, 3];

function sum(a, b, c) {
return a + b + c;
}

console.log(sum(...numbers)); // 6


این روش به جای فرستادن آرایه، مقدارهای درونش رو جدا جدا به تابع ارسال می‌کنه.



مثال ۴: کپی کردن و ترکیب آبجکت‌ها

const person = { name: "Ali", age: 30 };
const newPerson = { ...person, city: "Tehran" };

console.log(newPerson);
// { name: "Ali", age: 30, city: "Tehran" }


این روش برای کپی کردن یا اضافه کردن مقدار به آبجکت‌ها خیلی کاربردی‌ست.



🔴 Rest Operator → جمع کردن مقادیر

کاربرد اصلی:
برای جمع‌آوری مقادیر باقی‌مانده در آرایه‌ها یا توابع استفاده می‌شه.

برخلاف Spread Syntax که "باز" می‌کنه، Rest Operator مقدارها رو "جمع" می‌کنه و داخل یک آرایه می‌ذاره.

مثال ۱: گرفتن چند آرگومان در تابع

function sum(...numbers) {
return numbers.reduce((total, num) => total + num, 0);
}

console.log(sum(1, 2, 3, 4, 5)); // 15


این روش همه‌ی ورودی‌ها رو جمع می‌کنه و داخل یک آرایه numbers ذخیره می‌کنه.


مثال ۲: جداسازی اولین مقدار و جمع‌آوری بقیه

const [first, ...rest] = [10, 20, 30, 40];

console.log(first); // 10
console.log(rest); // [20, 30, 40]


و `first` مقدار اول رو دریافت کرده، و `rest` بقیه‌ی مقدارها رو درون آرایه ذخیره کرده.

مثال ۳: دریافت مقادیر باقی‌مانده در آبجکت
const person = { name: "Ali", age: 30, city: "Tehran" };

const { name, ...rest } = person;

console.log(name); // "Ali"
console.log(rest); // { age: 30, city: "Tehran" }


و name مقدار Ali رو دریافت کرده، و rest بقیه‌ی ویژگی‌ها رو جمع‌آوری کرده.


جمع‌بندی نهایی

🔹 اگر می‌خواهی داده‌ها را از داخل یک آرایه یا آبجکت بیرون بکشی و در جاهای مختلف استفاده کنی → `Spread Syntax`

🔹 اگر می‌خواهی چندین مقدار را به عنوان یک مجموعه بگیری و در قالب یک آرایه نگه داری → `Rest Operator`


📁 #javascript

کانال تخصصی لاراول
📌 @PapiDon_state

☕️ اتاق برنامه‌نویسی
📌 @PapiDon_coding
👍31
PHP & MYSQL pinned «🔥 درسگفتار کامل درباره Spread Syntax و Rest Operator در جاوااسکریپت جاوااسکریپت دو قابلیت بسیار مهم و کاربردی داره که شاید در نگاه اول شبیه به هم به نظر بیان، ولی در واقع کاربردهای کاملاً متفاوتی دارن: 🔸 Spread Syntax 🔹 Rest Operator هر دو از سه…»
Forwarded from اتاق برنامه نویسی </> (PapiDon)
⚜️ مدل‌های نوین در هوش مصنوعی: LLM، VLM و Diffusion و مدل‌های چندوجهی Multimodal Models

در این توضیح، سه نوع مدل هوش مصنوعی پیشرفته یعنی مدل‌های زبانی بزرگ (LLM)، مدل‌های بینایی-زبانی (VLM) و مدل‌های انتشار (Diffusion Models) را بررسی می‌کنیم. همچنین به مدل‌های چندوجهی (Multimodal Models) می‌پردازیم.


🔸 ۱. مدل‌های زبانی بزرگ (LLM - Large Language Models)

مدل‌های زبانی بزرگ (LLM) مانند GPT-4، BERT و LLaMA، نوعی از مدل‌های یادگیری عمیق هستند که توانایی پردازش و تولید زبان طبیعی را دارند.

چگونه کار می‌کنند؟
- این مدل‌ها بر اساس شبکه‌های عصبی ترانسفورمر (Transformer) ساخته شده‌اند.
- با حجم عظیمی از متن آموزش داده می‌شوند و می‌توانند متون جدید تولید کنند.
- کاربرد اصلی آن‌ها در ترجمه، خلاصه‌سازی، چت‌بات‌ها، پاسخ‌گویی به سوالات و تولید محتوا است.

مثال:
🔹 وقتی از یک LLM مثل GPT بپرسید: "آیا می‌توانی یک متن کوتاه درباره گربه‌ها بنویسی؟"
🔹 مدل بر اساس داده‌هایی که قبلاً یاد گرفته، متنی درباره گربه‌ها تولید می‌کند.


🔸 ۲. مدل‌های بینایی-زبانی (VLM - Vision-Language Models)

مدل‌های VLM ترکیبی از بینایی (تصویر) و زبان (متن) هستند و می‌توانند ورودی‌هایی مانند تصویر و متن را همزمان پردازش کنند. مدل‌هایی مانند CLIP، BLIP و GPT-4V نمونه‌های معروفی از این دسته هستند.

چگونه کار می‌کنند؟
- این مدل‌ها با استفاده از ترکیب شبکه‌های عصبی بینایی (مانند CNN یا ViT) و مدل‌های زبانی (LLM) ساخته می‌شوند.
- می‌توانند یک تصویر را توصیف کنند، متن را در تصویر پیدا کنند، یا به سوالاتی درباره تصویر پاسخ دهند.

مثال:
🔹 اگر یک عکس از یک سگ را به مدل بدهید و بپرسید "این چه نژادی است؟"، مدل با تطبیق تصویر و متن پاسخ مناسب می‌دهد.
🔹 در ChatGPT با قابلیت بینایی (GPT-4V) می‌توان عکسی ارسال کرد و از مدل درباره آن سوال پرسید.



🔸 ۳. مدل‌های انتشار (Diffusion Models)
مدل‌های انتشار، نوعی از مدل‌های مولد هستند که در تولید تصاویر، ویدیو و حتی صدا استفاده می‌شوند. مدل‌هایی مانند Stable Diffusion، DALL·E و Midjourney نمونه‌های مشهور هستند.

چگونه کار می‌کنند؟
- این مدل‌ها ابتدا با اضافه کردن نویز به تصاویر و سپس یادگیری چگونگی بازگردانی آن‌ها آموزش داده می‌شوند.
- این فرآیند باعث می‌شود که مدل بتواند تصاویر واقعی از متن تولید کند.

مثال:
🔹 اگر به مدل Stable Diffusion دستور دهید "یک گربه در حال خواندن کتاب در کنار شومینه" را تولید کن، مدلی که از انتشار استفاده می‌کند تصویری جدید بر اساس این توضیح ایجاد می‌کند.


🔸 ۴. مدل‌های چندوجهی (Multimodal Models)
مدل‌های چندوجهی قادر به پردازش چندین نوع ورودی مانند تصویر، ویدیو، صدا و متن به طور همزمان هستند. این مدل‌ها ترکیبی از LLM، VLM و سایر فناوری‌ها هستند.

چگونه کار می‌کنند؟
- این مدل‌ها داده‌های چندوجهی (Multi-Modal) را با هم ترکیب می‌کنند.
- می‌توانند سوالات متنی را با ترکیب تصویر و صدا پاسخ دهند.

مثال:
🔹مدل‌های هوش مصنوعی در خودروهای خودران که همزمان اطلاعات دوربین (تصویر)، رادار (داده سنسور) و متن (فرمان‌ها) را پردازش می‌کنند.
🔹 مدل‌های هوش مصنوعی در پزشکی که می‌توانندعکس رادیولوژی و توضیحات پزشک را همزمان تحلیل کنند.


اگر فقط با متن کار داریم؟ LLM بهترین گزینه است.
اگر تصویر و متن را می‌خواهیم؟ VLM را انتخاب می‌کنیم.
اگر نیاز به تولید تصاویر جدید از متن داریم؟ Diffusion مناسب است.
اگر چندین نوع ورودی (صوت، تصویر، متن) را ترکیب می‌کنیم؟ از Multimodal استفاده می‌کنیم.



📁 #AI

کانال تخصصی لاراول
📌 @PapiDon_state

☕️ اتاق برنامه‌نویسی
📌 @PapiDon_coding
🔥21
PHP & MYSQL pinned «⚜️ مدل‌های نوین در هوش مصنوعی: LLM، VLM و Diffusion و مدل‌های چندوجهی Multimodal Models در این توضیح، سه نوع مدل هوش مصنوعی پیشرفته یعنی مدل‌های زبانی بزرگ (LLM)، مدل‌های بینایی-زبانی (VLM) و مدل‌های انتشار (Diffusion Models) را بررسی می‌کنیم. همچنین به مدل‌های…»
PHP & MYSQL pinned «https://laravel.com/docs/12.x 🚀 لاراول 12 منتشر شد! 🎉»
Forwarded from کانال آموزشی لاراول (PapiDon)
انقلابی در استقرار برنامه‌های لاراول Laravel Cloud در لاراول ۱۲

یک سرویس ابری جدید است که همراه با نسخه ۱۲ لاراول معرفی شده است. هدف آن ساده‌سازی استقرار (Deployment) و مدیریت برنامه‌های لاراول در فضای ابری است، بدون نیاز به تنظیمات پیچیده یا دانش DevOps

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

🔸بخش اول: Laravel Cloud چیست و چه کاربردی دارد؟

یک پلتفرم کاملاً مدیریت‌شده برای میزبانی و اجرای پروژه‌های لاراول است. این سرویس توسط تیم لاراول ساخته شده و تمام نیازهای زیرساختی برنامه‌های Laravel را خودکارسازی می‌کند. شما فقط کد خود را روی یک مخزن گیت (Git) قرار می‌دهید، و Laravel Cloud آن را به‌طور خودکار اجرا و مدیریت می‌کند.

کاربردهای Laravel Cloud:

1️⃣ استقرار سریع و بدون دردسر → بدون نیاز به تنظیم سرور یا پیکربندی‌های خاص.
2️⃣ مدیریت ساده → پایگاه‌داده، کش (Redis)، ذخیره‌سازی فایل و سایر خدمات از قبل تنظیم شده‌اند.
3️⃣ مقیاس‌بندی خودکار → در صورت افزایش ترافیک، منابع سرور به‌طور خودکار افزایش می‌یابند.
4️⃣ امنیت و پایداری بالا → شامل گواهی SSL، فایروال و محافظت در برابر حملات DDoS.
5️⃣ دیپلوی بدون قطعی → تغییرات جدید بدون توقف سرویس اعمال می‌شوند.

🔹چرا مهم است؟ Laravel Cloud نیاز به مدیریت دستی سرور و تنظیمات پیچیده را از بین می‌برد و به شما اجازه می‌دهد روی توسعه‌ی نرم‌افزار تمرکز کنید.


🔸بخش دوم: Laravel Cloud چگونه کار می‌کند؟

بر اساس مدل پلتفرم به عنوان سرویس (PaaS) کار می‌کند. روند کلی استفاده از آن به این صورت است:

1️⃣ مخزن گیت پروژه‌ی خود را متصل کنید → Laravel Cloud به‌طور خودکار کد را دریافت می‌کند.
2️⃣ ساخت و اجرای خودکار برنامه → بدون نیاز به کانفیگ سرور، برنامه‌ی شما روی ابر اجرا می‌شود.
3️⃣ مدیریت خودکار منابع → پایگاه‌داده، کش، ذخیره‌سازی و سایر منابع به‌صورت خودکار تنظیم می‌شوند.
4️⃣ مقیاس‌بندی هوشمند → با افزایش ترافیک، سیستم به‌طور خودکار سرورهای بیشتری اضافه می‌کند.
5️⃣ مانیتورینگ و پشتیبان‌گیری خودکار → شما می‌توانید مصرف منابع و لاگ‌های برنامه را مشاهده و تحلیل کنید.

🔹 ویژگی مهم: دیگر نیازی به دست‌وپنجه نرم کردن با تنظیمات Nginx، PHP-FPM، یا سرورهای اختصاصی ندارید!


🔸بخش سوم: مزایای Laravel Cloud برای توسعه‌دهندگان

ویژگی‌های متعددی را در اختیار توسعه‌دهندگان قرار می‌دهد که آن را از سایر روش‌های استقرار متمایز می‌کند:

1️⃣ استقرار آسان و سریع
- دیگر نیازی به کانفیگ پیچیده‌ی سرور، SSH، یا Docker ندارید.
- کافی است کد خود را Push کنید و Laravel Cloud به‌طور خودکار آن را اجرا می‌کند.

2️⃣ مدیریت پایگاه‌داده و کش
- پایگاه‌داده MySQL و PostgreSQL به‌طور مستقیم در سرویس وجود دارد.
- ردیس Redis برای کش و S3 برای ذخیره‌سازی فایل از پیش پیکربندی شده‌اند.

3️⃣ امنیت و مقیاس‌پذیری
- ترافیک سایت شما از طریق Cloudflare محافظت می‌شود.
- حملات DDoS و درخواست‌های مخرب مسدود می‌شوند.
- برنامه شما می‌تواند خودکار مقیاس‌بندی شود و در برابر افزایش ناگهانی ترافیک مقاوم باشد.

4️⃣ مانیتورینگ و اشکال‌زدایی ساده
- یک داشبورد برای مشاهده مصرف CPU، حافظه، لاگ‌ها و میزان درخواست‌های ورودی ارائه شده است.
- امکان مشاهده و جستجو در لاگ‌های برنامه برای رفع سریع خطاها.

5️⃣ همکاری تیمی
- شما می‌توانید اعضای تیم خود را اضافه کنید و دسترسی‌های مختلفی به آن‌ها بدهید.

🔹 نتیجه: Laravel Cloud یک راهکار سریع، ایمن، و بدون دردسر برای استقرار برنامه‌های لاراول است.


🔸بخش چهارم: آیا برای استفاده از Laravel Cloud نیاز به دانش DevOps است؟

خیر! Laravel Cloud به‌گونه‌ای طراحی شده است که تمام کارهای DevOps را خودکار انجام دهد. این سرویس تمام مراحل مدیریت سرور، بهینه‌سازی، مقیاس‌بندی، امنیت و پشتیبان‌گیری را برای شما انجام می‌دهد.

با این حال، آشنایی با مفاهیم زیر می‌تواند به شما کمک کند:
- استفاده از Git برای مدیریت کدها.
- آشنایی با متغیرهای محیطی (Environment Variables).
- درک مفاهیم استقرار و مدیریت پایگاه‌داده.

🔹 نتیجه: شما نیازی به دانش DevOps ندارید و می‌توانید مستقیماً از Laravel Cloud برای اجرای پروژه‌های خود استفاده کنید.

🔹مزایای اصلی Laravel Cloud:

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




کانال تخصصی لاراول
📌 @PapiDon_state

☕️ اتاق برنامه‌نویسی
📌 @PapiDon_coding
🔥21
PHP & MYSQL pinned «انقلابی در استقرار برنامه‌های لاراول Laravel Cloud در لاراول ۱۲ یک سرویس ابری جدید است که همراه با نسخه ۱۲ لاراول معرفی شده است. هدف آن ساده‌سازی استقرار (Deployment) و مدیریت برنامه‌های لاراول در فضای ابری است، بدون نیاز به تنظیمات پیچیده یا دانش DevOps…»
Forwarded from کانال آموزشی لاراول (PapiDon)
شرکت OpenAI امروز یک سری ابزار هیجان‌انگیز منتشر کرده که ساختن «ایجنت‌ها» (برنامه‌های هوشمند) را برای برنامه‌نویسان ساده‌تر از همیشه می‌کند!

🧐 حالا «ایجنت» دقیقاً چیه؟

یک «ایجنت» برنامه هوشمندی است که خودش و بدون دخالت انسان کارهایی مثل جواب دادن به ایمیل‌ها، جستجوی سریع و دقیق در اینترنت یا فایل‌ها و مدیریت هوشمندانه‌ی کارها را انجام می‌دهد.

OpenAI امروز سه ابزار جدید برای راحت کردن ساخت این ایجنت‌ها معرفی کرده:


🔸Web Search
🔹 File Search
🔸Agents SDK


👇 برای خواندن توضیح کامل این ابزارهای جدید و جذاب، حتماً این پست رو بخون...

🔗 اینجا ....


کانال تخصصی لاراول
📌 @PapiDon_state

☕️ اتاق برنامه‌نویسی
📌 @PapiDon_coding
👏2🔥1
PHP & MYSQL pinned a photo
Forwarded from اتاق برنامه نویسی </> (PapiDon)
در دنیای مدیریت پکیج‌ها و مخازن (ریپازیتوری‌ها) در ابزارهایی مثل Nexus Repository Manager یا Artifactory، سه نوع اصلی ریپازیتوری وجود دارد:

1️⃣ (میزبان‌شده) Hosted

2️⃣ (پراکسی) Proxy

3️⃣ (گروهی) Group

🔥حالا هرکدام را خیلی ساده توضیح می‌دهم و می‌گویم در چه زمانی باید از آن‌ها استفاده کنیم.

1️⃣ (ریپازیتوری میزبان‌شده) Hosted Repository

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

🔹چه زمانی استفاده می‌شود؟

زمانی که بخواهید بسته‌های اختصاصی خودتان را مدیریت کنید.

وقتی نیاز دارید از یک فضای امن برای ذخیره‌ی artifactها (خروجی‌های بیلد، مثل فایل‌های jar یا Docker images) استفاده کنید.

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

🔹 مثال کاربردی:
فرض کنید شما در شرکت خودتان یک کتابخانه‌ی PHP یا جاوا اسکریپت نوشته‌اید که فقط اعضای شرکت باید از آن استفاده کنند. می‌توانید این کتابخانه را در یک Hosted Repository قرار دهید تا فقط همکارانتان به آن دسترسی داشته باشند.

2️⃣ (ریپازیتوری پراکسی) Proxy Repository

این نوع ریپازیتوری مثل یک واسطه عمل می‌کند. یعنی هر درخواست برای دریافت یک پکیج از یک ریپازیتوری عمومی (مثلاً Maven Central یا Docker Hub) را دریافت کرده، آن را دانلود و ذخیره می‌کند. بعداً اگر دوباره به همان پکیج نیاز داشتید، به‌جای دانلود مجدد از اینترنت، از کش (cache) خود استفاده می‌کند.

🔹 چه زمانی استفاده می‌شود؟

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

وقتی می‌خواهید از تغییرات ناگهانی یا حذف شدن پکیج‌ها در ریپازیتوری‌های عمومی جلوگیری کنید.

اگر در سازمان خودتان اینترنت محدود یا کندی دارید و می‌خواهید حجم دانلودهای اینترنتی را کاهش دهید.

🔹مثال کاربردی:

فرض کنید تیم شما دائماً از npm برای دانلود پکیج‌های جاوا اسکریپت استفاده می‌کند. اگر هر توسعه‌دهنده هر بار همه‌ی پکیج‌ها را مستقیماً از اینترنت دانلود کند، هم زمان زیادی هدر می‌رود و هم اینترنت زیادی مصرف می‌شود. اما اگر یک Proxy Repository برای npmjs.com داشته باشید، فقط اولین درخواست از اینترنت دریافت می‌شود و بعداً برای همه‌ی افراد داخل شرکت از نسخه‌ی کش‌شده استفاده می‌شود.

3️⃣ (ریپازیتوری گروهی) Group Repository

این نوع ریپازیتوری ترکیبی از چند ریپازیتوری مختلف (Hosted، Proxy، یا حتی دیگر Groupها) است و آن‌ها را در یک نقطه‌ی دسترسی واحد ارائه می‌دهد.

🔹چه زمانی استفاده می‌شود؟

وقتی می‌خواهید همه‌ی کاربران فقط یک URL را بدانند، بدون اینکه بدانند یک پکیج از Hosted می‌آید یا از Proxy.

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

🔹مثال کاربردی:

فرض کنید در یک شرکت کار می‌کنید که توسعه‌دهندگان از Maven Central، یک ریپازیتوری خصوصی داخلی (Hosted)، و یک Proxy Repository برای یک منبع خارجی دیگر استفاده می‌کنند. به‌جای اینکه سه مسیر مختلف تنظیم کنید، یک Group Repository می‌سازید که شامل هر سه ریپازیتوری باشد. حالا کاربران فقط با یک آدرس به همه‌ی این ریپازیتوری‌ها دسترسی دارند.


این سه نوع ریپازیتوری در کنار هم یک اکوسیستم کامل را برای مدیریت بسته‌ها فراهم می‌کنند. مثلاً شما ممکن است یک Proxy برای دانلود پکیج‌های عمومی، یک Hosted برای بسته‌های اختصاصی، و یک Group برای ترکیب این دو داشته باشید.




📁#Repository

کانال تخصصی لاراول
📌 @PapiDon_state

☕️ اتاق برنامه‌نویسی
📌 @PapiDon_coding
2👍1👏1
PHP & MYSQL pinned «در دنیای مدیریت پکیج‌ها و مخازن (ریپازیتوری‌ها) در ابزارهایی مثل Nexus Repository Manager یا Artifactory، سه نوع اصلی ریپازیتوری وجود دارد: 1️⃣ (میزبان‌شده) Hosted 2️⃣ (پراکسی) Proxy 3️⃣ (گروهی) Group 🔥حالا هرکدام را خیلی ساده توضیح می‌دهم و می‌گویم در…»
Forwarded from کانال آموزشی لاراول (PapiDon)
سلام رفقا! 👋😊

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

اگه به این دنیا علاقه دارید، حتماً بهمون ملحق بشید و توی بحث‌ها شرکت کنید!
منتظرتون هستیم اون طرف! 😍👇

🔗 لینک کانال
1🔥1
PHP & MYSQL pinned a photo