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
این متن

It took me nearly 1 year of full-time programming in Rust to become proficient and no longer
have to read the documentation every 5 lines of code


از کتاب
Black hat Rust

بنظرم خیلی درسته؛ حالا که درگیر کد زدن هستم واقعاً متوجه میشم خیلی پیش میاد یک مفهوم رو بفهمی و به راحتی کدهای دیگران رو بخونی و متوجه بشی!
اما اینکه خودت اون کد رو بنویسی و همه چیز درست و تا حد خوبی بهینه و idiomatic باشه خیلی چیز متفاوتی هست، اما

Favor getting things done rather than the perfect design that will never ship. It’s
far better to re-work an imperfect solution than to never ship a perfect system.


خیلی وقتا میزان خطاهایی که میگیرفتم، یا توضیحات clippy و ... باعث می‌شد پنیک کنم و هی تغییرات بیشتر بدم.

If you are fighting with the limits of the language, it may mean that you are doing something wrong. Stop what you are doing, take a break, and think about how you can do things differently.


بعضی وقتا دست کشیدن و فکر کردن مجدد باعث میشه کد بهتری بزنم، خیلی وقتا شده کد رو زدم و بعد از چندتا اجرا و ... برگشتم و refactor کردم و کد خیلی بهتر اجرا شده!
با اینکه کد اول خیلی خفن‌تر هم بوده شاید (چون از بچه‌ها شنیدم) اما ترجیح میدم کدم راحت‌تر خونده و درک بشه تا خفن‌تر بنظر بیاد.

و درنهایت، اگر Error handling رو درست انجام داده باشید unwrap, expect همه جا نداشته باشید توی پروداکشن هیچ موقع کد کرش نمی‌کنه و این خیلی چیز جذابی هست.

چندتا توضیح:
پروژه jsedit استثنا بود چون می‌خواستم بعنوان cookbook نگهش دارم؛ که چیزای پر تکرار توی سخت‌ترین حالتش همیشه دمه دستم باشه.

دلیل خوندن این کتاب هم این نیست که می‌خوام به دنیای امنیت برگردم (گذشته‌ها گذشته) فقط چون کتابی برای optimization پیدا نکردم دارم این کتاب رو می‌خونم.

توی همه‌ی زبان‌های برنامه‌نویسی کتاب‌های مربوط به امنیت و نفوذ و توسعه ابزارهای نفوذ معمولاً کدهای بهینه‌تری دارند.
اینم از من به شما

خلاصه‌ای از نکات مهم.
Forwarded from linuxtnt(linux tips and tricks) (hosein seilany https://seilany.ir/)
⭐️ مدیریت حافظه‌های کش در کرنل لینوکس

🔹سیستم‌عامل لینوکس به‌صورت هوشمند از حافظه‌ی RAM نه‌فقط برای اجرای برنامه‌ها، بلکه برای افزایش کارایی I/O از طریق مکانیزم‌های Cache و Buffer استفاده می‌کند.

🔹کرنل لینوکس برای آزادسازی حافظه‌ی کش، از الگوریتم معروف LRU (Least Recently Used) بهره می‌برد.
وقتی سیستم با کمبود RAM روبه‌رو می‌شود، کرنل صفحاتی را که کمتر استفاده شده‌اند (مثل *Page Cache* یا *Dentry Cache*) آزاد می‌کند تا فضای بیشتری برای پردازش‌ها فراهم شود.


🔻 سه سطح آزادسازی حافظه در کرنل:
🔻 Drop Clean Pages → صفحات کش تمیز که نیاز به نوشتن مجدد ندارند.
🔻 Write Back Dirty Pages → صفحاتی که تغییر کرده‌اند، ابتدا روی دیسک نوشته می‌شوند.
🔻 Shrink Slab Objects → پاک‌سازی ساختارهای کرنلی مانند *inode* و *dentry cache*.

🔹 مشاهده وضعیت Cache
برای بررسی وضعیت کش، از دستورات زیر استفاده کنید:

$ free -h
$ cat /proc/meminfo | grep -E "Cached|Buffers|Slab"
$ vmstat -s | grep cache


📘 انواع حافظه‌های Cache در لینوکس

🔹 Page Cache
داده‌های فایل‌هایی که از دیسک خوانده می‌شوند، در حافظه نگهداری می‌شوند.
🎯 هدف: افزایش سرعت خواندن فایل‌ها.

🔹 Buffer Cache
شامل اطلاعات متادیتا (metadata) مربوط به بلاک‌های دیسک است.
🎯 هدف: بهبود عملکرد نوشتن روی دیسک.

🔹 Dentry Cache
مسیرها و نام فایل‌ها (directory entries) را در حافظه ذخیره می‌کند.
🎯 هدف: افزایش سرعت دسترسی به فایل‌ها و دایرکتوری‌ها.

🔹 Inode Cache
ساختارهای *inode* فایل‌ها را در حافظه نگه می‌دارد.
🎯 هدف: کاهش بار روی فایل‌سیستم و تسریع عملیات فایل.

نویسنده: حسین سیلانی.اموزش بیشتر در:
https://learninghive.ir
Forwarded from linuxtnt(linux tips and tricks) (hosein seilany https://seilany.ir/)
نکته #لینوکس_پیشرفته 2
⭐️ مدیریت حافظه‌های کش در کرنل لینوکس

🔹سیستم‌عامل لینوکس به‌صورت هوشمند از حافظه‌ی RAM نه‌فقط برای اجرای برنامه‌ها، بلکه برای افزایش کارایی I/O از طریق مکانیزم‌های Cache و Buffer استفاده می‌کند. در کرنل‌های مدرن لینوکس (از حدود سال ۲۰۰۱ به بعد)، Page Cache و Buffer Cache ادغام شده‌اند

🔹کرنل لینوکس برای مدیریت و آزادسازی این حافظه‌های کش، از الگوریتم‌های پیشرفته‌ای مانند LRU/Active و Inactive بهره می‌برد. وقتی سیستم با کمبود RAM روبه‌رو می‌شود، کرنل ابتدا صفحات کم‌استفاده‌تر (غیرفعال) را از کش‌هایی مانند Page Cache یا Slab آزاد می‌کند.

🔻 مراحل کلی آزادسازی حافظه کش توسط کرنل:
🔻آزاد کردن صفحات تمیز (Clean Pages): این صفحات یک کپی معتبر در دیسک دارند و می‌توانند بلافاصله دور ریخته شوند.
🔻نوشتن صفحات کثیف (Dirty Pages): صفحاتی که تغییر کرده‌اند، ابتدا باید روی دیسک نوشته (Sync) شوند تا پس از آن به عنوان صفحه تمیز آزاد گردند.
🔻کوچک کردن حافظه Slab: در این مرحله ساختارهای کرنلی کم‌استفاده مانند dentry و inode cache آزاد می‌شوند.

🔹 مشاهده وضعیت Cache
برای بررسی وضعیت کش، از دستورات زیر استفاده کنید:
$ free -h
$ cat /proc/meminfo | grep -E "Cached|Buffers|SReclaimable"
$ vmstat -s | grep cache


📘 انواع حافظه‌های کش در لینوکس

🔹 Page Cache
داده‌های فایل‌ها و داده‌های خوانده شده از دیسک در این حافظه نگهداری می‌شوند.
🎯 هدف: افزایش سرعت عملیات خواندن و نوشتن (از طریق به‌تعویق انداختن نوشتن).

🔹 Dentry Cache
ساختارهای مربوط به مسیرها و نام فایل‌ها (directory entries) را در حافظه ذخیره می‌کند.
🎯 هدف: افزایش سرعت دسترسی به فایل‌ها و دایرکتوری‌ها.

🔹 Inode Cache
ساختارهای *inode* فایل‌های باز شده را در حافظه نگه می‌دارد.
🎯 هدف: کاهش بار روی فایل‌سیستم و تسریع عملیات فایل.

*(توضیح: در کرنل‌های مدرن، "Buffers" عمدتاً به متادیتای فایل‌سیستم و داده‌های بلاک‌دیوایس در حال انتقال اشاره دارد).*

نویسنده: حسین سیلانی. آموزش بیشتر در:
https://learninghive.ir
Forwarded from linuxtnt(linux tips and tricks) (hosein seilany https://seilany.ir/)
نکته #لینوکس_پیشرفته 1
⭐️ مفهوم Namespaces در لینوکس


🔹در سیستم‌عامل لینوکس، مکانیزم Namespace یکی از بنیادی‌ترین قابلیت‌های ایزولاسیون (Isolation) است که به هر گروه از پردازه‌ها اجازه می‌دهد دیدگاه جداگانه‌ای نسبت به منابع سیستم داشته باشند.
به بیان ساده‌تر، هر Namespace مثل یک “جهان کوچک” درون کرنل است که قوانین خودش را برای منابعی مانند پردازه‌ها (PIDs)، شبکه (Network)، سیستم فایل (Mounts)، کاربران (Users) و فضای بین‌پردازه‌ای (IPC) دارد.

🔹وقتی یک پردازه درون Namespace خاصی ایجاد می‌شود، فقط منابع همان Namespace را می‌بیند؛ به‌عنوان مثال، اگر دو container روی یک ماشین در حال اجرا باشند، هر دو می‌توانند پردازه‌ای با PID=1 داشته باشند، بدون اینکه تداخلی بین آن‌ها پیش بیاید.

🔹این ویژگی، یکی از پایه‌های اصلی فناوری‌های Containerization مانند Docker و LXC (Linux Containers) است. Namespaceها با استفاده از پرچم‌های clone() یا فراخوان سیستمی unshare() ساخته می‌شوند و از طریق ترکیب چند نوع Namespace، می‌توان محیط‌های کاملاً ایزوله (مانند container) ایجاد کرد.

مطالعه پست کامل
Forwarded from Linuxor ?
وایب کدینگ خوبه مخصوصا بعدش که مجبور میشی شبو بیدار بمونی وایب دیباگینگ کنی


@Linuxor
Forwarded from Armon technical logs (armon Taheri)
از لطف دوستان و تبریک هاشون بسیار متشکرم
Forwarded from Linuxor ?
این استار هایی که توی تلگرام میزنید اینکانسیستنته، یعنی مثلا همین الان دوتا بود بعد شد یکی،
چون ستاره ها روی بلاک چینه و تراکنش ها توی تلگرام زمان میبرن تلگرام اولش اعتماد میکنه و ستاره رو میزنه بعد میبینه ندارینش واقعیشو آپدیت میکنه. (بلخره ری اکشنه و باید سریع باشه نمیشه ری اکشن بزنید بعدش اعمال شه)

کلا توی کامپیوتر به چیزی میگن اینکاسیستنت که دیتا توی سرور های مختلف باهم یکسان نباشه. (هیچ راه حلی هم تقریبا برای حل مشکلش نیست)


@Linuxor
Forwarded from Shayan GeeDook🐧
این بشر خیلی خفنه یه سری مباحثی رو بردیم جلو که واقعاً دم عرفان گرم که وقت گذاشت و مبحث هایی که توشون مشکل و مسئله داشتم رو روشن کرد. اقا خیلی عشقی ❤️🔥
@erfuuan
Forwarded from Linuxor ?
دیروز یکی ازم پرسید سینیور دولوپر به کی می‌گن؟

دوساعت داشتم بهش فکر میکردم چی جوابشو بدم تا فردا (فردا منظورم فردای انسان های عادیه چون من هنوز تو دیشبم) یه چیز خوب مینویسم میزارم؛ پروژه سنگینی قبول کردم خدا به خیر کنه.


@Linuxor
Forwarded from یه شعر (Poem Bot)
حافظ | غزلیات | غزل شمارهٔ ۴۷

به کوی میکده هر سالکی که ره دانست
دری دگر زدن اندیشه تبه دانست
زمانه افسر رندی نداد جز به کسی
که سرفرازی عالم در این کله دانست
بر آستانه میخانه هر که یافت رهی
ز فیض جام می اسرار خانقه دانست
هر آن که راز دو عالم ز خط ساغر خواند
رموز جام جم از نقش خاک ره دانست
ورای طاعت دیوانگان ز ما مطلب
که شیخ مذهب ما عاقلی گنه دانست
دلم ز نرگس ساقی امان نخواست به جان
چرا که شیوه آن ترک دل سیه دانست
ز جور کوکب طالع سحرگهان چشمم
چنان گریست که ناهید دید و مه دانست
حدیث حافظ و ساغر که می زند پنهان
چه جای محتسب و شحنه پادشه دانست
بلندمرتبه شاهی که نه رواق سپهر
نمونه ای ز خم طاق بارگه دانست

#حافظ | گنجور
📍@iipoem
Forwarded from Gopher Academy
🔵 عنوان مقاله
Reverse Engineering Doesn't Have to Be Hard

🟢 خلاصه مقاله:
این مطلب نشان می‌دهد مهندسی معکوس الزماً سخت نیست و با یک نمونه بدافزار نوشته‌شده با Go به‌صورت گام‌به‌گام پیش می‌رود. بدون نیاز به دانستن Go یا کدنویسی، بر روش‌شناسی تمرکز دارد: راه‌اندازی محیط امن، تریاژ اولیه (هش‌ها، فراداده و بررسی سریع رشته‌ها)، تشخیص بسته‌بندی/ابهام‌سازی، تحلیل ایستا (بررسی imports، نقطه‌های ورود، نام‌گذاری تابع‌ها، و ترسیم جریان کنترل) و در کنار آن تحلیل پویا در محیط جداافتاده برای مشاهده رفتار پردازشی، تغییرات سیستم و ترافیک شبکه. نتیجه، یک جعبه‌ابزار فشرده از تکنیک‌های پایه است که به مبتدیان اعتمادبه‌نفس می‌دهد تا منطق بدافزار را روشن کنند و نشانگرهای آلودگی (IOC) را استخراج کنند—بدون تکیه بر ترفندهای وابسته به زبان.

#ReverseEngineering #MalwareAnalysis #Golang #Infosec #StaticAnalysis #DynamicAnalysis #CyberSecurity

🟣لینک مقاله:
https://golangweekly.com/link/175361/web


👑 @gopher_academy
Forwarded from Linuxor ?
واقعا سینیور دولوپر به کی می‌گن؟

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

+ باید بتونه پروژه با مقیاس بالا رو هندل کنه: قشنگ نشون میده معماری، دیزاین و دواپس رو خوب فهمیده کلمه مقیاس بالا خودش یه بار سنگین داره و هر کسی نمیتونه ادعاش کنه دولوپر های عادی معمولا سمتش نمی‌رن.

+ باید بتونه هدایت تیم کنه : اینم نشون می‌ده فرد می‌تونه تصمیم‌های فنی استراتژیک بگیره و مسئولیت خروجی تیم رو بپذیره. همچنین نیازمند یه درک خوبی از Soft skill هست برای این کار.

+ باید بتونه پروژه‌هایی با چالش فنی خاص یا فناوری جدید رو هندل کنه : مثلا یه هوش مصنوعی یه چیزی اضافه کنه یا اینکه زیرساخت و CI/CD رو از صفر بتونه بنویسه یا ابزار اختصاصی برای توسعه بسازه، سینیور وابسته به تکنولوژی خاصی نیست در کل انعطاف بالایی داره.


@Linuxor
متغیرهای سیستمی در SQL Server
در SQL Server، متغیرهایی که با @@ شروع می‌شوند به عنوان متغیرهای سیستمی شناخته می‌شوند و اطلاعات مهمی درباره وضعیت سرور، کوئری‌ها، تراکنش‌ها و تنظیمات جاری ارائه می‌دهند.
این متغیرها توسط SQL Server مدیریت می‌شوند و کاربر فقط می‌تواند مقادیر آنها را بخواند، نه تغییر دهد.

نکته پرفرمنس: استفاده مکرر از متغیرهای سیستمی روی کوئری‌های سنگین تاثیری مستقیم روی سرعت ندارد، اما بررسی‌های مکرر یا استفاده نادرست در کوئری‌های پیچیده می‌تواند منجر به کدهای نامفهوم یا غیر بهینه شود.

@DevTwitter | <Amirreza Moradi/>
Forwarded from محتوای آزاد سهراب (Sohrab)
بتای فری بی‌اس‌دی ۱۵ در راه هستش و تغییرات زیادی هم توی openzfs داشته.

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

https://www.phoronix.com/news/FreeBSD-15.0-Beta-1


@SohrabContents
Forwarded from محتوای آزاد سهراب (Sohrab)
لینوکس مینت دبیان ادیشن (LMDE) 7 هم برپایه دبیان ۱۳ منتشر شد.


بزرگترین تغییرش امکان OEM Install هستش که به سازندگان سخت‌افزار اجازه این رو میده تا نسخه دبیانی مینت رو هم بتونن استفاده کنن.



@SohrabContents
Forwarded from Gopher Academy
🔵 عنوان مقاله
GopherCon Korea 2025

🟢 خلاصه مقاله:
**GopherCon Korea 2025 حدود یک ماه دیگر، در تاریخ ۹ نوامبر برگزار می‌شود. این رویداد جامعه‌محور برای توسعه‌دهندگان Go (Golang) فرصتی مناسب است تا به‌روزترین روندها را دنبال کنند، تجربه‌های عملی را به اشتراک بگذارند و شبکه‌سازی مؤثری داشته باشند. معمولاً نشست‌ها به موضوعاتی مانند مفاهیم زبان و کارایی، الگوهای هم‌زمانی، توسعه cloud-native و microservices، ابزارها و observability و مطالعات موردی در مقیاس تولید می‌پردازد. اگر قصد حضور دارید، اکنون زمان خوبی برای ثبت‌نام و برنامه‌ریزی سفر است و پیگیری کانال‌های رسمی برای جزئیات برنامه و مکان توصیه می‌شود.

#GopherConKorea #GopherCon #Golang #Go #TechConference #Developers #Korea #SoftwareEngineering

🟣لینک مقاله:
https://golangweekly.com/link/175357/web


👑 @gopher_academy
Forwarded from محتوای آزاد سهراب (Sohrab)
پنج‌شنبه توی مشهدلاگ کارگاه نصب داریم :)) برای عزیزان تازه‌کار‌


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



درحال حاضر فعلا فقط لپتاپ می‌تونید بیارید برای روز پنج‌شنبه، حافظه usb هم خودتون بیارید.





@SohrabContents
#کدبوک

یکی از جامع‌ترین منابع برای یادگیری عمیق Rust و توسعه سیستم‌های سریع و ایمن:

- توضیح کامل مفاهیم پایه تا پیشرفته مثل ownership و borrowing
- آموزش ساخت نرم‌افزارهای سطح پایین با ایمنی حافظه بالا
- تمرکز بر عملکرد، هم‌زمانی و طراحی کد تمیز
- مناسب برای برنامه‌نویس‌هایی که می‌خوان Rust رو در پروژه‌های واقعی سیستم‌محور به‌کار ببرن


* فایل PDF این کتاب رو میتونید از کانال DevBooks که لینکش توی بیو هست دانلود کنید.

@DevTwitter
Forwarded from linuxtnt(linux tips and tricks) (hosein seilany https://seilany.ir/)
۴۰ شغل در معرض خطر هوش مصنوعی

🔸 وب‌سایت ویژوال کپیتالیست بر پایه داده‌های مایکروسافت، نموداری از میزان استفاده و تطابق هوش مصنوعی با وظایف شغلی تهیه کرده است.

🔸 برای این تحلیل، مایکروسافت ۲۰۰ هزار مکالمه کاربران آمریکایی را ارزیابی کرد.

🔸 مترجمان شفاهی و کتبی در مجموع رتبه اول را دارند و ۹۸ درصد از وظایف کاری آنها با مکالمات کوپایلوت با نرخ تکمیل نسبتا بالایی مطابقت داشت.

🔸 همچنین مشاغل دانش‌محور مانند مورخان و نویسندگان در معرض تهدید جدید هوش مصنوعی قرار دارند.
منبع خبر:
https://www.visualcapitalist.com/top-40-jobs-at-risk-from-ai/
پایتون ۳.۱۴ هم بلاخره اومد. ولی چه چیز های جدیدی داره؟؟ لینک


#Python #پایتون #Python314 #کدنویسی #برنامه‌نویسی


@PhiloLearn