Dev Perfects – Telegram
Dev Perfects
41 subscribers
9.23K photos
1.26K videos
468 files
13K links
بخوام خیلی خلاصه بگم
این کانال میاد مطالب کانالای خفن تو حوزه تکنولوژی و برنامه نویسی رو جمع میکنه

پست پین رو بخونید
https://news.1rj.ru/str/dev_perfects/455


ارتباط:
https://news.1rj.ru/str/HidenChat_Bot?start=936082426
Download Telegram
Forwarded from SoniaCircuit (Sony)
Forwarded from Sadra Codes
Graveyard of empires 💀🥶
Forwarded from Gopher Academy
دوره آموزش برنامه‌نویسی گولنگ، از مقدماتی تا پیشرفته به‌صورت جلسات Live Coding و پروژه یک وبسایت مشابه اینستاگرام

🔹 در این دوره از صفر تا صد گولنگ رو یاد میگیریم

🔸 یک پروژه کامل با معماری clean arch مثل اینستاگرام با قابلیت‌های: پست، استوری، لایک، کامنت، پروفایل و... رو پیاده‌سازی می‌کنیم

🔹 در مسیر پروژه از تکنولوژی‌های مختلفی مثل: لود تست با k6، پرومتئوس و گرافانا، آبجکت استوریج MinIO استفاده می‌کنیم تا چالش‌های سیستم‌های پیچیده را درک‌
و پیاده‌سازی کنیم

🔸 یاد میگیریم مایکروسرویس‌ها چی هستن و چه زمانی باید ازشون استفاده کنیم و درنهایت میریم سراغ protobuff ،Grpc و RabbitMQ

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

https://cloudygo.ir/register

📣 اگر میخوای توو این مسیر همراهمون باشی تا ۲۵ بهمن فرصت داری تا از طریق لینک بالا با تخفیف ۲۱ درصدی ثبت‌نام کنی!
خوشحالم اعلام کنم که به عنوان یک ایرانی، یکی از پکیج های لاراولی من به 20 هزار نصب رسیده

این پکیج من که کار اعتبارسنجی در لاراول انجام میده، در خیلی از سایت های معروف لاراولی به اشتراک گذاشته شده مثل Laravel Daily، Laravel News و...

اگه دوست داشتید استار کنید تا به 500 تا استار در گیت هاب برسیم
https://github.com/milwad-dev/laravel-validate

@DevTwitter | <Milwad Khosravi/>
Forwarded from SoniaCircuit (Sony)
کار در ایران به روایت تصویر.

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

#اقتصاد_کثیف
#5min_Rust

انواع روش‌های لیبل زدن برای مقادیر رو توی این پست بررسی کنیم؛ معمولا این رو با اسم متغییر می‌شناسیم ولی خب توی زبان‌های مثل Rust اسم متغییر کمی گیج کننده هست. چرا ؟

اول با immutable, mutable شروع کنیم (تغییر پذیر و تغییر ناپذیر) :
بصورت پیش‌فرض تمام متغییرهایی که توی Rust تعریف می‌کنیم تغییرناپذیر هستند و برای تعریف یک متغییر از کلید let استفاده می‌شه یک مثال ببینیم:
let channel = "pyrust";

اگر بصورت immutable یک متغییر رو تعریف کنید تا آخر نمی‌تونید مقدارش رو تغییر بدید؛ اما توجه کنید با اینکه زبان Rust زبان Static type هست من توی این مثال type متغییر رو تعریف نکردم (راجب type ها تصمیم گرفتم بعد این پست صحبت کنم چون آموزش ویدئویی نیست و برای مثال زدن روی اون موارد باید این پست خونده می‌شد) فعلا بیاید قبول کنیم که "pyrust" توی مثال بالا از نوع داده اصطلاحا string slice هست. خود کامپایلر انقدر باهوش هست که شما نیازی ندارید این type هارو بهش بگید و می‌تونه خودش حدس بزنه ولی اگر خواستید بصورت دستی بهش تایپ هم بدید :
let channel: &str = "pyrust";

از کلمه let برای تعریف متغییر استفاده می‌شه؛ بعد از اون اسم متغییر میاد که اینجا channel هست و بعد از اون : &str که معلوم می‌کنه این متغییر از چه نوع داده‌ای باید باشه و هست باقیشم که توی همه زبان‌ها یکسان هست.
اما اگر بخوایم یک متغییر تعریف کنیم و به کامپایلر بگیم در طول اجرای برنامه این متغییر اجازه داره مقدارش عوض بشه چطور ؟ فقط کافیه از کلمه کلیدی mut (مختصر شده mutable استفاده کنیم) :
let mut channel: &str = "pyrust";

تنها تفاوت اینه که قبل از اسم متغییر (channel) باید mut رو بذارید.
این موارد رو تست کنید:
let channel = "pyrust";
channel = "pyhints";
#5min_Rust

انواع روش‌های لیبل زدن برای مقادیر رو توی این پست بررسی کنیم؛ معمولا این رو با اسم متغییر می‌شناسیم ولی خب توی زبان‌های مثل Rust اسم متغییر کمی گیج کننده هست. چرا ؟

اول با immutable, mutable شروع کنیم (تغییر پذیر و تغییر ناپذیر) :
بصورت پیش‌فرض تمام متغییرهایی که توی Rust تعریف می‌کنیم تغییرناپذیر هستند و برای تعریف یک متغییر از کلید let استفاده می‌شه یک مثال ببینیم:
let channel = "pyrust";

اگر بصورت immutable یک متغییر رو تعریف کنید تا آخر نمی‌تونید مقدارش رو تغییر بدید؛ اما توجه کنید با اینکه زبان Rust زبان Static type هست من توی این مثال type متغییر رو تعریف نکردم (راجب type ها تصمیم گرفتم بعد این پست صحبت کنم چون آموزش ویدئویی نیست و برای مثال زدن روی اون موارد باید این پست خونده می‌شد) فعلا بیاید قبول کنیم که "pyrust" توی مثال بالا از نوع داده اصطلاحا string slice هست. خود کامپایلر انقدر باهوش هست که شما نیازی ندارید این type هارو بهش بگید و می‌تونه خودش حدس بزنه ولی اگر خواستید بصورت دستی بهش تایپ هم بدید :
let channel: &str = "pyrust";

از کلمه let برای تعریف متغییر استفاده می‌شه؛ بعد از اون اسم متغییر میاد که اینجا channel هست و بعد از اون : &str که معلوم می‌کنه این متغییر از چه نوع داده‌ای باید باشه و هست باقیشم که توی همه زبان‌ها یکسان هست.
اما اگر بخوایم یک متغییر تعریف کنیم و به کامپایلر بگیم در طول اجرای برنامه این متغییر اجازه داره مقدارش عوض بشه چطور ؟ فقط کافیه از کلمه کلیدی mut (مختصر شده mutable استفاده کنیم) :
let mut channel: &str = "pyrust";

تنها تفاوت اینه که قبل از اسم متغییر (channel) باید mut رو بذارید.
این موارد رو تست کنید:
fn main() {
let channel = "pyrust";
channel = "pyhints";
println!("Channel is: {}", channel);
}

اگر به ارور کامپایلر (یا rust-analyzer) دقت کنید؛ می‌بینید که علاوه بر اینکه ارور رو بهتون می‌گه راهکار رو هم بهتون نشون میده؛ تستش کنید.
fn main() {
let mut channel = "pyrust";
channel = "pyhints";
println!("Channel is: {}", channel);
}

توی مثال بالا مقداری warning می‌گیرید که اهمیتی نداره فعلا؛ اما حتی وقتی متغییر رو mut بکنید اجازه ندارید نوع داده داخلش رو عوض کنید:
fn main() {
let mut channel = "pyrust";
channel = 1590;
println!("Channel is: {}", channel);
}

این متغییر تا آخر باید از نوع string slice بمونه؛ البته با shadowing می‌شه از همین اسم مجدد استفاده کرد ولی اون موضوع برای آینده هست.

بعد از let به یک کلمه کلیدی دیگه میرسیم به اسم const مخفف constant برای تعریف مقادیر ثابت استفاده می‌شه و حتما هم باید بهشون type رو بدید اولین نکته درباره const در Rust اینه که مقدارش حتما باید قبلا از کامپایل بهش داده بشه.
این یعنی شما نمی‌تونی نتیجه محاسبات یا دیتای ورودی کاربر و ... رو توی const نگهدارید.

const OWNER: &str = "Mo.Abbasi";

fn main() {
let channel = "pyrust";
println!("Channel {channel} owner is {OWNER}");
}

توی این مثال چندتا نکته هست:
اول؛ const می‌تونه بعنوان global variable تعریف بشه؛ خارج از محدوده main. توی چندین scope جا میگیره تابع؛ ماژول و یا گلوبال (راجب scope هم مثال خواهم زد).
دوم؛ همیشه برای اسم constant ها از حروف بزرگ باید استفاده بشه.
سوم؛ println هست که می‌تونم اسم متغییر رو داخل {} بذارم؛ راحتر از موارد قبلی.

در نهایت آخرین مورد static هست؛ مثل const باید تایپ رو بهش بدید؛ مثل let هم mut, immut داره (که البته ۹۹٪ سعی کنید از mut اش استفاده نکنید.) مقدارش می‌تونه در زمان کامپایل یا در زمان initialize کردن برنامه مشخص بشه (مثلا config مربوط به اجرای برنامه‌)
خوبیش اینه که از شروع کار برنامه تا خروج ازش می‌تونید بهش دسترسی داشته باشید اصطلاحاْ liftime اش به اندازه خود پروسس کد اصلی هست.


توی تمام مثال‌های بالا بیشتر تفاوت و استفاده‌ها به lifetime, scope برمی‌گرده اما با همین توضیحات ساده هم شما باید بتونید تشخیص بدید چه زمانی از کدوم استفاده کنید.
نکته بعدی نحوه مصرف مموری هست؛ این رو فقط بعنوان رفرنس میذارم چون جلوتر بررسی خواهیم کرد (پست‌های آینده)

let: Stack/Heap depending on the data type.
const: Compiler inline / memory location.
static: Static memory region.
آخرای نود جی اسه؟ Bun و Deno جایگزین خواهند شد؟

آیا زمان خداحافظی با Node.js رسیده است؟
اخیرا، نود جی اس دو رقیب جدید پیدا کرده: Deno و Bun. هر دو وعده دادن که مشکلات Node.js را حل کنن و تجربه توسعه را بهبود ببخشن. ولی واقعا می‌تونن؟

نود جی اس(Node.js)؛ پیر ولی قدرتمند
- کامیونیتی بزرگ و اکوسیستم غنی (NPM)
- پشتیبانی گسترده در شرکت‌های بزرگ
- عملکرد خوب در پروژه‌های تولیدی
- تجربه توسعه‌دهنده آشنا و پایدار

اما در کنار این نقاط قوت، چالش‌هایی هم دارد:
- مدیریت دیپندسی ها (node_modules کابوس همیشگی!)
- سرعت پایین‌تر در اجرای برخی اسکریپت‌ها
- امنیت پیش‌فرض ضعیف‌تر نسبت به Deno

دینو(Deno)؛ با آینده‌!
دینو Deno، ساخته شده توسط خالق Node.js (Ryan Dahl)، قصد داره اشتباهات گذشتش را جبران کنه:
- امنیت داخلی (اجازه‌های محدود برای فایل‌ها و شبکه)
- پشتیبانی از TypeScript به‌صورت پیش‌فرض
- عدم نیاز به package.json و node_modules
- استفاده از URL برای مدیریت پکیج‌ها

اما هنوز مشکلاتی دارد:
- کامیونیتی و پکیج‌های کمتر نسبت به NPM
- نبود برخی ویژگی‌های پرکاربرد Node.js

بان(Bun)؛ سریع‌تر!
بان اومده تا نه‌تنها جایگزین Node.js باشه، بلکه تجربه توسعه‌دهنده را بهبود بده:
- سرعت بی‌نظیر در اجرای جاوااسکریپت (بیشتر از 3 برابر سریع‌تر از Node.js)
- ای پی آی Built-in Web APIs (مانند Fetch، WebSockets، و Buffer)
- جایگزین مستقیم npm، yarn و pnpm (مدیریت پکیج فوق‌سریع!)
- کاملاً سازگار با Node.js API

اما
- هنوز به پایداری و تست گسترده در پروژه‌های بزرگ نرسیده
- اکوسیستم کوچکتر از Node.js

کدومو انتخاب کنیم؟
- پروژت پروداکشن و پایداره؟ هنوز Node.js بهترین گزینه س.
- اگه امنیت و TypeScript پیش‌فرض برات مهمه؟ Deno رو استفاده کن.
- اگه نهایت سرعتو میخوای؟ Bun رو تست کن.


@DevTwitter | <Amirreza Abdolrahimi/>
Forwarded from یه شعر (Poem Bot)
مولانا | دیوان شمس | رباعیات | رباعی شمارهٔ ۱۷۶۴

ای یار گرفته شراب آمیزی
برخیزد رستخیز چون برخیزی
می ریز شراب را که خوش می ریزی
چون خویش چنین شدی چرا بگریزی

#مولانا | گنجور
📍@iipoem
Forwarded from 🎄 یک برنامه نویس تنبل (The Lazy 🌱 Raymond)
🔶 قالب فروشگاهی شاپ فلکس، shopflex

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

قیمت ۵۰۰,۰۰۰ تومان

تخفیف ۴۰ درصدی : 40Percent

https://B2n.ir/b21612

@TheRaymondDev
Forwarded from 🎄 یک برنامه نویس تنبل (  MΞ)
🔸دانشمندان آکسفورد به تله‌پورت کوانتومی دست یافتند؛ آغازی برای اینترنت کوانتومی

محققان دانشگاه آکسفورد به نقطه عطف بزرگی در محاسبات کوانتومی رسیدند. آنها ۲ پردازنده کوانتومی را که حدوداً ۲۰۰ متر از هم فاصله داشتند، با استفاده از یک «رابط شبکه فوتونیک» به هم متصل کردند و به تله‌پورت کوانتومی دست یافتند. البته باید توجه کنید تله‌پورت کوانتومی با مفهوم متعارف تله‌پورت کاملاً فرق دارد و جسمی آنی از نقطه‌ای به نقطه دیگر جابه‌جا نمی‌شود.

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

منبع: دیجیاتو

@TheRaymondDev
نسخه اولیه پکیچ احراز هویت موبایلی ورودیا (Vordia) لاراول منتشر شد.

این پکیچ برای لاراول ساختم و از اپراتور sms.ir استفاده می کند.

به مرور زمان اپراتورهای sms دیگر نیز اضافه خواهد شد و دوستان می توانند در گسترش این پکیچ مشارکت کند.

این پکیچ اوپن سورس و رایگان است.

https://github.com/Rayiumir/Vordia

@DevTwitter | <Raymond Baghumian/>
لحظه نوشتن متن بالا مثال خوبی برای static یادم نیومد.
اما گفتم یکی از استفاده‌هاش برای Singleton هست؛ برای مثال اینجا مطمئن میشم همه تست‌ها فقط یکبار اجازه صدا زدن کد رو دارند.
Forwarded from LearnPOV | لرن پی او وی (Mohammad hossein)
خودم گرفتم و راضی بودم ؛)

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

حتما خواستید بگیرید، با خودشون صحبت کنید تا مطمئن شید از چیزی که نیاز دارید دقیقا
This media is not supported in your browser
VIEW IN TELEGRAM
چند هفته پیش پست گذاشتم که کمپانی HuggingFace قراره یک کورس راجع به AI Agents ها بذاره که رایگان هم هست. الان این کورس شروع شده و اولین قسمتش که یکجور مقدمه هست را گذاشتن. حتما برید ثبت نام کنید و توی کانال دیسکوردشون هم عضو بشید. کلی سوال و discussion و اینجور مطالب مفید هست. خلاصه از دست ندید این کورس را!
https://huggingface.co/learn/agents-course/en/unit0/introduction

@DevTwitter | <Mehdi Allahyari/>