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 Linuxor ?
این توییت که توی کامیونیتی DevOps گذاشته بودن خیلی جالب بود، اینو من با وجودم احساس کردم کلا هرجا کلمه Container شنیدید گزینه دیگه ای جز لینوکس ندارین.

مثل دسکتاپ ها نیست که بگین از ویندوز یا چیز دیگه ای استفاده کنم اینجا بهترین گزینه لینوکسه.


لینوکس دارای ویژگی های منحصر به فردی مثل

نام‌فضاها (Namespaces): این ویژگی اجازه می‌ده تا هر کانتینر فضای جداگانه‌ای از منابع سیستم (مانند شبکه، فایل‌سیستم، و پردازنده‌ها) داشته باشه، در حالی که تمام کانتینرها از یک هسته (Kernel) استفاده کنن.

کنترل گروه‌ها (Cgroups): این ویژگی به کنترل میزان استفاده منابع (پردازنده، حافظه، و ...) توسط هر کانتینر کمک می‌کنه. این امکان به کانتینرها می‌ده که به‌طور مؤثر و ایمن از منابع سیستم استفاده کنن.

چکیده کردن سیستم‌فایل (Union Filesystems): این تکنیک به کانتینرها اجازه می‌دهد تا از یا تصویر پایه (base image) استفاده کنن و تغییرات جدید رو به‌طور موقت و مجزا در یک لایه جدید ذخیره کنن.

و کلی ویژگی دیگه که به طور خاص توی هسته لینوکس وجود داره و در نتیجه باعث شده تنها انتخاب برای محیط توسعه بین سیستم عامل های موجود باشه.

@Linuxor
Forwarded from Agora (Alireza Azadi)
Forwarded from Agora (Alireza Azadi)
Forwarded from Agora (Alireza Azadi)
Forwarded from Agora (Alireza Azadi)
کاش یکی یه پس‌گردنی قایم به این آقای Matt schnuck (و امثالهم) میزد که این مزخرفاتو تحویل ملت نده.

یکی اینا باید کتک مفصل بخورن، یکی این اینفلوئنسر‌هایی که ظاهراً رفتن گوگل کار بکنن و حداقل روزی یه پست با بک‌گراند سردر گوگل (در پوزیشن‌های مختلف) میذارن که توش میگن: «من هیچی سابقه و تجربه نداشتم. رفتم تمرین و تلاش کردم و الآن گوگلم» و هی «من گوگلم» رو به بهونه‌های مختلف تکرار میکنن. دوزار حرف بدرد بخور هم نمیزنن.

عجب دکون دستگاهیه. یکی از یکی دیگه بی چشم و رو تر و دروغ‌گو تر و البته احمق‌تر.
Forwarded from Agora (Alireza Azadi)
به نمونه‌ش همین اقا Sahil (اون یکی دیگه یه نفر دیگه‌س که نمیدونم کیه) یه داستان روایت کرده که نه میدونیم واقعیه نه چیزی. ما فرض رو بر این می‌گیریم که این بابا صادقه. با فرض صدق حرف‌هاش، دوزارم این چیزی که نوشته بدرد نمیخوره. چون اصلاً و ابداً قابل تعمیم نیست. برای چی همچین داستانی رو باید نقل کرد وقتی هدف «امید» دادن به بقیه‌است (اگر واقعا هدف این باشه که نیست)؟!

د آخه مرد مومن، ۵ ماه بعد از نوشتن اولین خط کد، کدوم آدمی میاد تو رو ریفر کنه گوگل؟! گیریم یکی بود و کرد. تو اون گوگل یه آدم عاقل نیست که بگه خرت به چند من؟! بری مصاحبه؟! اگر اینقدر هرکی به هرکیه که چرا همه پا نمیشیم بریم؟ شما تخمت دو زرده‌س؟ چجوری‌ای؟! بعد مصاحبه اولت با این عملکرد درخشانت، ریجکت شدی؟! چرا خب ریجکت شدی؟ فیدبک ندادن بهتون آقای خر دانا؟! بعد با سابقه‌ی یک سال، تو که تا اونجا رفتی، یه مسئله دادن تا کمر رفتی توش گیر کردی درجا ریجکت شدی؟ بعد رفتی
آمازون؟؟ کنتور که نمیندازه.

و در نهایت بعد از سه مصاحبه رفتی گوگل و یهو شد «اگر هفت بار سکه پرتاب کنید و هربار شیر انتخاب کنی، شانس برد ۹۹٪ میشه»؟!! تو روحت! چقدر وجودتون غیر فابل تحمله….
Forwarded from Linuxor ?
شما توی دانشگاه سیستم عامل یاد نمی‌گیرین که بعدا سیستم عامل بسازین، درباره ساختار سیستم عامل ها می‌خونید که مفاهیمش رو توی طراحی سیستم‌های دیگه یا حل مسائل مشابه با کارکرد سیستم عامل استفاده کنین.


@Linuxor
Forwarded from Agora (Alireza Azadi)
“The most fundamental problem in computer science is problem decomposition: how to take a complex problem and divide it up into pieces that can be solved independently. Problem decomposition is the central design task that programmers face every day”

A Philosophy of Software Design, 2nd Edition
John K.
Forwarded from Linuxor ?
خلاصه امروز توییتر کامیونیتی برنامه نویسی و کامپیوتر :

اکثرا درگیر انتقاد از وضعیت فیلترینگ بودن، اما تو کامیونیتی خارجی بیشتر درباره هوش مصنوعی صحبت شده بود، و یه نفر گفته بود که می‌خواد یه API رایگان LLM بسازه ولی هر 5 تا ریکوست یه تبلیغ نشون بده، همچی داشت خوب پیش می‌رفت که یه نفر دیگه در جوابش گفته بود این برای ما رایگانه و ریکوست های مضرب پنج رو نادیده می‌گیریم و دوباره ارسال می‌کنیم.


@Linuxor
‏اخیراً یک موردی برخوردیم یارو امکانات پایه یک سی ام اس فروشگاهی رو حذف کرده بود، با پلاگین خودش شخصی سازی کرده بود و بابت فعال شدن همون امکانات پایه پول میخواست تا برنامه نویسی بشه:))

<MahdiGp/>

@DevTwitter
Forwarded from کانال مهرداد لینوکس (Mehrdad Linux)
⁉️ آیا انتخاب یک توزیع‌ لینوکس Immutable (غیرقابل تغییر) برای شما مناسبه ؟

یک لینوکس Immutable فایل‌سیستم فقط‌خواندنی (read-only) داره و برای تغییر باید از Layering یا Overlay استفاده بشه
به جای تغییرات مستقیم، نسخه‌های جدید یا کانتینر جایگزین نسخه قبلی می‌شه

🗓 ویژگی‌های اصلی :
امنیت بالا،پایداری،مدیریت ساده‌تر ، ایده‌آل برای محیط‌های Containarized و Cloud

🗓 موارد استفاده:
سیستم‌های سرور و دسکتاپ محیط های DevOps و Containerization و ...

🗓نمونه‌ توزیع :
Fedora Silverblue،openSUSE MicroOS،Ubuntu Core، NixOS
Flatcar Container Linux و ...

💠 به روزرسانی :
استفاده از Atomic Upgrades یا Snapshotting

⁉️ آزمون :
آیا می‌خواهید امکان بازگشت به حالت قبلی را در صورت بروز مشکل داشته باشید؟
آیا ثبات برای شما مهم‌تر از داشتن آخرین نسخه نرم‌افزارهاست؟
آیا رفع مشکلات برای شما خسته‌کننده است یا یک فرصت یادگیری؟
آیا یک هسته فقط‌خواندنی برای امنیت و ثبات، به جای محدودکننده بودن، احساس اطمینان ایجاد می‌کنه؟
آیا از ایده کانتینری کردن اکثر برنامه‌ها استقبال میکنید؟

❤️ ممنون از حمایت هاتون 💐🌺
#linux
This media is not supported in your browser
VIEW IN TELEGRAM
دنبال یه برنامه سبک و تمیز بودم که کلیدهایی که روی کیبورد فشار میدم رو نمایش بده

رسیدم به KeyViz

https://github.com/mulaRahul/keyviz

قابلیت شخصی‌سازی زیادی داره. کراس پلتفرم هم هست.

@DevTwitter | <Ali Hashemian/>
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 پوینا