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

پست پین رو بخونید
https://t.iss.one/dev_perfects/455


ارتباط:
https://t.iss.one/HidenChat_Bot?start=936082426
Download Telegram
Forwarded from Anophel | آنوفل
چطور گوروتین‌های گولنگ رو مدیریت کنیم؟💢

تا حالا شده تو برنامه‌هاتون بخواید یه کار طولانی رو نصفه‌نیمه قطع کنید؟ اینجاست که دو تا ابزار قدرتمند گولنگ یعنی Cancel و Done به کمکتون میان!



💠Cancel:

فرض کنید یه گوروتین دارید که نمی‌خواید ادامه بده. با Cancel می‌تونید مستقیم بهش بگید "بسه، دیگه جلوتر نرو!" و منابعش هم آزاد بشه. این کارو با تابع context.WithCancel انجام می‌دید و هر وقت ()cancel رو صدا بزنید، همه گوروتین‌های مربوط به اون کانتکست متوقف می‌شن.



💠Done:

حالا یه حالت دیگه: به جای اینکه دستی گوروتین‌ها رو متوقف کنید، بذارید خودشون بفهمن باید کارشون رو تموم کنن. اینجا Done به درد می‌خوره. Done یه کاناله که وقتی کانتکست تموم شد (مثلاً به خاطر تایم‌آوت یا لغو شدن)، بسته می‌شه و گوروتین‌ها سیگنال می‌گیرن که "وقت رفتنه!".



⭐️خلاصه صحبت ها

💢Cancel برای متوقف کردن مستقیمه.

💢Done برای سیگنال دادن غیرمستقیمه.



💙 Anophel | آنوفل
#
گولنگ #گو #go #golang
Please open Telegram to view this post
VIEW IN TELEGRAM
💎 بررسی Utility Type‌ها در TypeScript 💎

بعضی وقت ها تو تایپ‌اسکریپت, نوع خاصی از type یا interface موجود نیازمون میشه، مثل optional یا required کردن تمامی پورپرتی های تایپ، یه همچین مواردی رو میتونیم خیلی ساده با Utility Type‌ها به شکل مد‌نظرخون تغییر بدیم، تقریبا میشه گفت یک instance با تغییرات و شرطهایی ازشون بسازیم....
#typescript


کاربردی ترین Utility Type‌ها

Partial<Type>

تمام ویژگی‌های یک تایپ رو اختیاری می‌کنه.
type User = { id: number; name: string };
type PartialUser = Partial<User>; // { id?: number; name?: string }


Required<Type>

تمامی پروپرتی‌های یک تایپ رو اجباری می‌کنه.
type User = { id?: number; name?: string };
type RequiredUser = Required<User>; // { id: number; name: string }


Readonly<Type>

تمام پروپرتی‌های تایپ رو ReadOnly می‌کنه.
type User = { id: number; name: string };
type ReadonlyUser = Readonly<User>; // { readonly id: number; readonly name: string }

یعنی اگر بعد از تعریف آبجکت بخواید مقدار یکی از پروپرتی‌های اون آبجکت رو تغییر بدید بهتون ارور میده.


Pick<Type, Keys>

این یکی واقعا کاربردیه و کارش اینه که فقط ویژگی‌های مشخص‌شده از یک تایپ رو برگردونه.
type User = { id: number; name: string; email: string };
type PickedUser = Pick<User, 'id' | 'name'>; // { id: number; name: string }

به Pick باید دو تا مقدار پاس بدید، اول تایپ مد نظرتون و دوم لیست پراپرتی‌ها که می‌خواهید از نوع اولیه انتخاب کنید به این شکل : 'id' | 'name'


Omit<Type, Keys>

ویژگی‌های مشخص‌شده رو از یک تایپ حذف می‌کنه.
type User = { id: number; name: string; email: string };
type OmittedUser = Omit<User, 'email'>; // { id: number; name: string }

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


امیدوارم از این مطلب لذت برده باشید، با ری‌اکشنای خودتون بهمون انرژی بدید ❤️‍🔥

🚀 @CoolyCode
یکی از دستورات جالب shell دستور rev هستش که تنها کاری که انجام میده اینه که استرینگی که بهش پاس میدی رو برعکس می‌کنه و بهت برمیگردونه.


@SohrabContents
Forwarded from Geek Alerts
اولین اتصال 5G ماهواره‌ای انجام شد.
سازمان فضایی اروپا (ESA) و شرکت Telesat برای اولین بار، به کمک ماهواه‌هاشون که توی مدار (LEO) هست تونستن تو محدوده فرکانسی Ka-band از فضا با یه گوشی 5G رو زمین ارتباط بگیرن.
این بخشی از پروژه فضا برای 5G/6G و ارتباط پایدار اروپا هست.
esa
@geekalerts
Forwarded from 🎄 یک برنامه نویس تنبل (The Lazy 🌱 Raymond)
🔶 بر اساس آخرین اطلاعات،خلبانان روسی قبل از ۱۹ بهمن اولین سوپر فلانکر ایرانی را به آسمان خواهند برد

تمام پارامتر های پروازی در این تست به ستاد فرماندهی نهاجا تحویل داده شده و اگر مشکلی نباشد،ثبت ریجستری در سازمان رزم آغاز می‌شود

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

به طور رسمی وزرات دفاع این کشور تا به الان هشت فروند از این هواپیما را به نیروی هوایی ایران تحویل داده است

اخبار جدیدی از جنگنده شکاری آموزشی متعاقبا اعلام خواهد شد


#Technology
@TheRaymondDev | @PARVAZDAROJ
خب خب خب gRPC چیه؟ 🛰

اگه تاحالا با سیستم‌های توزیع‌شده کار کرده باشی، احتمالاً فهمیدی که یکی از چالش‌هاش ارتباط بین سرویس‌هاست. اینجا gRPC میاد وسط. یه فریم‌ورکه برای ارتباط سریع و بهینه بین سرویس‌ها.
gRPC (Google Remote Procedure Call)

یه سیستم Remote Procedure Call یا همون RPC مدرنه که گوگل توسعه داده. تو این مدل، می‌تونی توابعی رو از یه سرویس صدا بزنی انگار که دارن تو همون سرویس لوکال اجرا می‌شن.

چرا gRPC؟

دلیل‌هاش زیاده:

سرعت بالا 🚀
ـgRPC از HTTP/2 استفاده می‌کنه که خیلی سریع‌تر از HTTP/1.1 عادیه. این یعنی درخواست‌ها موازی می‌شن، فشرده‌سازی هدرها انجام می‌شه و ارتباطات پایدار (persistent connections) دارن.
استفاده از Protocol Buffers 📦
ـgrpc به جای JSON یا XML، از ProtoBuf استفاده می‌کنه که فشرده‌تر، سریع‌تر و بهینه‌تره. این باعث کاهش پهنای باند مورد نیاز می‌شه که برای سیستم‌های توزیع‌شده فوق‌العاده مهمه.
پشتیبانی از استریم 📡
ـgRPC بهت اجازه می‌ده ارتباط دوطرفه (bidirectional streaming) داشته باشی. این یعنی هم کلاینت و هم سرور می‌تونن هم‌زمان داده بفرستن و دریافت کنن.
زبان‌باز بودن 🌍
ـgRPC از خیلی زبان‌ها مثل Go، Python، Java، C# و... پشتیبانی می‌کنه.


قابلیت مقیاس‌پذیری 🔄
ـgRPC به دلیل طراحی کارآمد و استفاده از HTTP/2 برای سیستم‌هایی که قراره در آینده بزرگ بشن، انتخاب خیلی خوبیه.


ـgRPC چطور کار می‌کنه؟
برای استفاده از gRPC، باید با مفهوم Protocol Buffers (یا همون ProtoBuf) آشنا باشی. ProtoBuf یه فرمت برای تعریف داده‌ها و توابعه. یه فایل .proto می‌نویسی و توش مشخص می‌کنی که چه متدهایی داری و ورودی و خروجی‌هاش چیه. بعدش gRPC این فایل رو به کدی برای زبان دلخواهت تبدیل می‌کنه.

مثلاً:
syntax = "proto3";  

service Greeter {
rpc SayHello (HelloRequest) returns (HelloResponse);
}

message HelloRequest {
string name = 1;
}

message HelloResponse {
string message = 1;
}

اینجا یه متد SayHello داریم که یه درخواست می‌گیره و یه پاسخ برمی‌گردونه.

کجاها از gRPC استفاده کنیم؟
ـgRPC معمولاً تو سیستم‌های توزیع‌شده استفاده می‌شه، مثل:

ارتباط بین میکروسرویس‌ها 🔗
اگه داری میکروسرویس‌ها رو مدیریت می‌کنی، gRPC می‌تونه ارتباط بینشون رو سریع‌تر و ساده‌تر کنه.


سیستم‌هایی با نیاز به استریم 🎥
مثل چت‌روم‌ها، بازی‌های آنلاین یا هر جایی که داده‌ها باید به‌صورت زنده رد و بدل بشن.


سیستم‌های چندزبانه 🌐
چون gRPC از زبان‌های مختلف پشتیبانی می‌کنه، تو سیستم‌های چندزبانه عالیه.


کجاها از gRPC استفاده نکنیم؟

وب اپلیکیشن‌های عمومی 🌍:
اگه می‌خوای چیزی مثل REST API برای کلاینت‌های مرورگر بسازی، gRPC خیلی انتخاب مناسبی نیست چون مرورگرها به طور مستقیم با gRPC سازگار نیستن. البته می‌تونی از gRPC-Web استفاده کنی تا این محدودیت رو رفع کنی.
وقتی که نیاز به دیباگ ساده داری 🛠️:
ـJSON رو راحت می‌تونی تو مرورگر یا ابزارهای مختلف دیباگ کنی، ولی ProtoBuf این‌طور نیست و نیاز به ابزارهای خاص خودش داره.
پروژه‌های کوچیک 🪶:
برای پروژه‌هایی که سرعت یا مقیاس‌پذیری خیلی مهم نیست، پیچیدگی gRPC ممکنه بیش از حد باشه. REST API یا حتی JSON-RPC می‌تونه ساده‌تر و کافی باشه.

اشتباهات رایج در استفاده از gRPC 🚨
نادیده گرفتن محدودیت مرورگرها:
مرورگرها مستقیم gRPC رو ساپورت نمی‌کنن و باید از gRPC-Web استفاده کنی.

بی‌توجهی به اندازه پیام‌ها:
اگه پیام‌های بزرگ یا سنگین می‌فرستی، ممکنه gRPC بهینه نباشه.

عدم استفاده از استریم وقتی لازمه:
بعضی وقت‌ها دولوپرها استریم رو نادیده می‌گیرن و همین باعث می‌شه از پتانسیل gRPC کامل استفاده نکنن.

تنظیم نکردن Timeouts و Retries⏱️:
فراموش کردن تنظیم timeouts و retries می‌تونه باعث مشکلات بزرگی در ارتباط بین سرویس‌ها بشه.

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

یادت باشه: هر ابزاری جای خودش رو داره. با انتخاب هوشمندانه، می‌تونی بهترین نتیجه رو بگیری.


#programming #web #grpc



🔆 CHANNEL | GROUP
ارزون تریم سرور اختصاصی هتزنرم که دیگه 4.5 پاتون در میاد بخواید لایسنس و اینا هم بریزید روش ماهی 5.3 حداقل باید هزینه کنید یه سرور بکاپم بخواید بگیرید

تقریبا 6 تومن ارزون ترین سرور اختصاصی خارج میشه

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

فقط 60 تا سایت اول پول خودش در میاد

اینم اگر تا خرید 100 تا مشتری گیرش بیاد

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

چون تمام خرجا شده به دلار ما به تومان هستیم

برای همین الان هر مشتری میاد سمت ما شرکت ها چنان اور سل میکنن سی پی یو ها همه صد

واقعا شرکت ها براشون نمیصرفه چی کار کنن ؟

بعضی شرکتا هم هاست میدن 5 هزار تومن اینا برای رقابت قیمت رو نمیتونن ببرن بالا هاست 5 تومنی نمیدونیم چیه اصلا

سایتت بخوای روی کاغذ پرینت کنی گرون تر میشه

@poinair پوینا
Forwarded from Python BackendHub (Mani)
یک باگ خیلی مزخرف تو pylance که هنوز بعد ۳ ماه اصلاح نشده هنوز

وقتی type alias دارین تو پروژتون, دیگه تو یک فایل دیگه وقتی میخواین ایمپورتش کنید suggest بهتون نمیده.
اگه pylanceتون رو به نسخه 2024.9.2 داونگرید کنید درست میشه.

@PyBackendHub
This media is not supported in your browser
VIEW IN TELEGRAM
Forwarded from Md Daily (Mahan)
دوازدهمین رویداد ابر ها با موضوع Effortless Infrastructure جمعه ی همین هفته در تهران به همراه قهوه، صبحانه، ارائه و گفتگوی کاری در کنار متخصصین برگزار میشه.

اگه هم با کد تخفیف A12S1 ثبت نام کنید، شامل تخفیف میشه.

لینک ثبت‌نام:
abrh.ir/enjoy

پ ن:
یک ظرفیت حضور رایگان اختصاصی از طرف کانال هم وجود داره، اگر کسی تمایل داشت همین زیر اعلام کنه تا ثبت نامش انجام بشه :)




🆔 @MdDaily
Forwarded from  (Amir Hossein "Amiria" Maher)
میزان علاقهٔ کاربران ردیت به توزیع‌های مختلف:

#fun #linux
@amiria703_channel
This media is not supported in your browser
VIEW IN TELEGRAM
ببینید اختلافِ سرعتِ GPU و CPU در یک مدلِ زبانیِ ۱.۵ میلیارد پارامتری چقدر زیاده. مدل‌هایِ بزرگتر این اختلاف بیشتره؛ طوری که حتی آفلود کردن چند لایه روی GPU تأثیرشو به وضوح در TPS و TTFT نشون می‌ده. TPS تعداد توکن‌های تولیدشده در ثانیه و TTFT مدت زمانِ تولیدِ اولین توکنه.

@DevTwitter | <Ayub Kokabi/>
دولت با کلی شامورتی‌بازی فیلترینگ واتس‌اپ و گوگل‌پلی رو برداشت، اما جالبه بدونین GFW-knocker هم فیلترینگ یوتیوب و اینستاگرام رو با یک کانفیگ فرگمنت "بدون اینکه واسه بیت‌المال فاکتور بزنه و از جایی رانت بگیره" بی‌اثر کرده!

در توضیح این‌کانفیگ بگم: وزارت قطع‌ارتباطات برای اینکه واتس‌اپ رو در دسترس قرار بده، آی‌پی‌های متارو توی وایت‌لیست قرار داده و این‌مساله مثل نشستن روی "اره"، باعث‌شده که کانفیگ فرگمنت قدیمی مجددا به راه بیفته.

فعلا روی بعضی‌از اینترنت‌ها به خوبی جواب میده و برای استفاده ازش لازمه از نسخه‌های جدید v2rayN, v2rayNG، Hiddify یا Streisand استفاده کنین.

👉 https://raw.githubusercontent.com/GFW-knocker/gfw_resist_HTTPS_proxy/main/ServerLess_TLSFrag_Xray_Config.json
💡 github.com/GFW-knocker/gfw_resist_HTTPS_proxy

🔍 ircf.space
@ircfspace
Forwarded from Yasha
کتاب نسل مضطرب (The Anxious Generation) از جاناتان هایت رو بخونید یا حداقل خلاصه‌اش رو از علی بندری توی کست‌باکس گوش بدید. محض اطلاع این یکی از کتاب‌هایی بود که بیل گیتس امسال برای خوندن پیشنهاد کرده بود. نویسنده مستقیما درباره نسل ما و تاثیر سوشال مدیا روی زندگی ما صحبت می‌کنه.

@Yasha
یادمون نره که علت فیلتر شدن #گوگل‌پلی، صدور هشدار در رابطه با ناامن بودن اپ #روبیکا بوده!

🔍 ircf.space
@ircfspace
Forwarded from linuxtnt(linux tips and tricks) (hosein seilany https://seilany.ir/)
مروری بر اخبار لینوکسی در این روزهای اخیر:
یک مدت کوچیک فرصت نشد که پست بگذارم، گفتم به صورت کلی مروری بر خبرهای لینوکسی داشته باشیم.|

توزیع siduction Linux 2024.1.0 با محیط‌های دسکتاپ Xfce 4.20، KDE Plasma 6.2 و LXQt 2.1 عرضه شد.

توزیع postmarketOS 24.12 با KDE Plasma Mobile 6.2.4 و GNOME Shell 46 برای دستگاه‌های موبایل منتشر شد.

برنامه OpenShot 3.3 با بهبود‌هایی مانند انتخاب‌گر رنگ سازگار با Wayland و تم پیش‌فرض جدید منتشر شد.

برنامه Darktable 5.0 با ویژگی‌های جدید و پشتیبانی بهبودیافته از دوربین‌ها عرضه گردید.

توزیع Grml 2024.12 با پشتیبانی از پردازنده‌های 64 بیتی ARM و هسته لینوکس 6.11 منتشر شد.

برنامه DXVK 2.5.2 با بهبود پشتیبانی از بازی‌هایی مانند Alpha Protocol و Borderlands 2 عرضه شد.

برنامه IPFire 2.29 با آمادگی برای Wi-Fi 7 و رمزنگاری پساکوانتومی منتشر شد.

برنامه LibreOffice 24.8.4 با 55 اصلاحیه به‌عنوان به‌روزرسانی نگهداری عرضه گردید.

برنامه Xfce 4.20 با پشتیبانی آزمایشی از Wayland و بهبود‌هایی در مدیریت فایل و پنل عرضه شد.

توزیع CentOS Stream 10 با هسته لینوکس 6.12 LTS و GNOME 47 منتشر شد.

برنامه KDE Frameworks 6.9 با آیکون نمادین جدید برای Wine و اصلاحات مختلف عرضه شد.

برنامه KDE Gear 24.12 با ویژگی‌های جدید و انتقال Dolphin به دستگاه‌های موبایل منتشر شد.

برنامه Proton 9.0-4 با پشتیبانی از بازی‌هایی مانند Total War: Shogun 2 و Warhammer 40K: Space Marine 2 عرضه شد.
Forwarded from My CS Journey (‌Ali)
This media is not supported in your browser
VIEW IN TELEGRAM
زاکربرگ میگه به عنوان آخرین نسخهٔ Llama در سال 2024، Llama3.3-70B رو عرضه می‌کنیم (عرضه شد چند روز پیش) که عملکرد مشابه Llama3.1-405B داره. بعدش در سال 2025 می‌ریم برای Llama4.
Forwarded from linuxtnt(linux tips and tricks) (hosein seilany https://seilany.ir/)
🔰نسخه جدید میزکار Xfce با ویژگی‌های زیر منتشر شده است:
🔰ویژگی‌های جدید میزکار Xfce 4.20

🔹پشتیبانی از Wayland (آزمایشی)

بیشتر اجزای Xfce اکنون از Wayland پشتیبانی می‌کنند، بدون نیاز به XWayland.
یک کتابخانه جدید به نام "libxfce4windowing" معرفی شده است.
برای استفاده از Wayland نیاز به نصب مدیرهای پنجره‌ای مانند Labwc و Wayfire دارید.
محدودیت‌ها: برخی ویژگی‌ها مانند تنظیمات صفحه‌کلید، موس، و گرفتن اسکرین‌شات به صورت کامل در Wayland پشتیبانی نمی‌شوند.

🔹بهبودهای Thunar (مدیر فایل)
اضافه شدن دکمه‌های جدید در نوار ابزار (مانند باز کردن تب یا پنجره جدید).
پشتیبانی از لینک‌های سمبلیک در موقعیت‌های از راه دور.
بهبود عملکرد برای مدیریت فایل‌های حجیم.
قابلیت نمایش فایل‌های مخفی در نوار وضعیت و استفاده از آیکون‌های نمادین و رنگی.
اضافه شدن حالت Split View با میانبرهای جدید برای جابجایی بین پنجره‌ها.

🔹مدیر انرژی (xfce4-power-manager)
ساده‌سازی مدیریت قفل صفحه و پشتیبانی از حالت خواب هیبریدی.
اضافه شدن پشتیبانی از کلیدهای تنظیم روشنایی و نور پس‌زمینه صفحه‌کلید.
تنظیمات و سفارشی‌سازی (xfce4-settings)
بهبود بارگذاری تم‌ها برای جلوگیری از لگ و نمایش هشدار برای تم‌های ناقص.
پشتیبانی بهتر از تم‌های تیره.
مدیریت بهینه‌تر نمایشگرها، از جمله تنظیم ابعاد و مدیریت پروفایل‌های مختلف.

🔹پانل (xfce4-panel)
تنظیم عرض حاشیه پانل.
اضافه شدن ویژگی نمایش دسکتاپ با حرکت ماوس روی آیکون مربوطه.
پشتیبانی از حالت‌های مختلف نمایش ساعت (دیجیتال، آنالوگ و LCD).

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

—————————————
📌نویسنده: حسین سیلانی
📌منبع :
آکادمی کندوی دانش
https://learninghive.ir
ابزار innotop یک realtime مانیتورینگ شبیه به دستور top برای MySQL/MariaDB است.

ابزار innotopgo همان innotop که با Go باز نویسی شده
https://github.com/innotop/innotop
https://github.com/lefred/innotopgo

@DevTwitter | <MehrdadLinux />