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 ShadowLink
🚀 فیلترشکن | ShadowLink
امن ، سریع ، بدون فیلتر.

با یه کلیک از محدودیت عبور کن.
سرورهای پایدار و تونل‌شده 🇩🇪 🇺🇸 🇫🇷
💻 مناسب برای گیم، ترید و دولوپرها

💬 پشتیبانی ۲۴/۷

📍 تست رایگان برای اعضای جدید
👉 @shdwlnk_net
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Linuxor ?
This media is not supported in your browser
VIEW IN TELEGRAM
اگر با داده‌های پرنویز سروکار داری مثلاً GPS، سنسورهای ربات، یا داده‌های مالی این طلاست:

این پروژه یه کتاب تعاملی پایتونیه که قدم‌به‌قدم یاد می‌ده چطور با فیلتر کالمن (Kalman Filter) و سایر فیلترهای بیزی (Bayesian Filters) داده‌های پرخطا رو تصحیح و تخمین دقیق بسازی.

فیلتر کالمن چیه؟
یه الگوریتم هوشمنده که داده‌های پرنویز (مثلاً موقعیت از GPS) رو با پیش‌بینی مدل ترکیب می‌کنه تا بهترین تخمین از وضعیت واقعی سیستم بده.

github.com/rlabbe/Kalman-and-Bayesian-Filters-in-Python

@Linuxor
Forwarded from Linuxor ?
رفیقم رزومش چاقه؛ رزومه رفیقش :

@Linuxor
Forwarded from Linuxor ?
شاید براتون سوال باشه این هکرا چطوری حمله MITM (هکر بین کاربر و سرور قرار می‌گیره و دیتا رو تغییر و شنود می‌کنه) چطوری انجام می‌شن؟

ابزار bettercap که یه فریم ورک هم محسوب می‌شه یه ابزار قدرتمند برای تست نفوذ، تحلیل شبکه و حملات man-in-the-middle هستش. این ابزار با زبان Go نوشته شده و به‌عنوان چاقوی سوئیسی برای شبکه‌های 802.11 (WiFi)، BLE، HID، CAN-bus و شبکه‌های IPv4 و IPv6 هستش و هکرا خیلی دوسش دارن. باهاش می‌شه ترافیک وب هم دستکاری کرد.

یکی از پروژه های باحاله که بهتون کلی چیز از امنیت یاد می‌ده، مستندات و نحوه نصبش رو از اینجا بخونید :

www.bettercap.org/project/introduction


@Linuxor
Forwarded from Linuxor ?
خبر خوب برای ری‌اکت

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


@Linuxor
Forwarded from Linuxor ?
این سایتارو دیدین اولش اسکرول می‌کنید یه انیمیشن باحال داره؟ با ScrollMagic می‌شه همچین کاری کرد توی سایت خودش هم پیادش کرده برید تستش کنید و همونجا مستنداتش هم هست:

scrollmagic.io

@Linuxor
Forwarded from Linuxor ?
یکی از هکرای خوب به اسم santosomar اومده و هرچی درباره هک اخلاقی دیده جمع کرده، از ابزار بگیر تا سایت و مقاله و کتاب، همه رو فولدر بندی که اگه به هک علاقه دارید برید اینجا یه چرخی بزنید دید خوبی بهتون می‌ده به خصوص برای استخدام و کار پیدا کردن:
github.com/The-Art-of-Hacking/h4cker

@Linuxor
Forwarded from Linuxor ?
وقتی سرورا هک شده و تلفنی بهت زنگ زدن و تو بهشون گفتی کابل های شبکه رو قطع کنید :


@Linuxor
Forwarded from Linuxor ?
می‌دونستین اگه گیتهابتون از این badge ها داشته باشه کدهاتون توی قطب شمال نگهداری می‌شه؟


@Linuxor ~ The_Pesar
Forwarded from Linuxor ?
هوش مصنوعی توسعه‌دهندگان بد را بهتر نمی‌کند. باعث می‌شود آنها سریع‌تر بد شوند.


@Linuxor
Forwarded from Linuxor ?
سال 2011 یه نفر همه بیتکوین‌هاش فروخت و نوشت بیتکوین دیگه هیچوقت دوباره 20 دلارو نمی‌زنه.


@Linuxor ~ ImanOracle
Forwarded from Linuxor ?
بخاطر اشتباه یک مدرس، ریپازیتوری فریمورک اکسپرس به گند کشیده شده

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

@Linuxor
Forwarded from SoniaCircuit (Sonia Fatholahi)
هاکر سابو
عقابی کش عینکی
Forwarded from Gopher Academy
این بخش درباره‌ی مفهوم Span Class در مدیریت حافظه‌ی Go است، و توضیح می‌دهد چطور وجود یا نبود اشاره‌گرها (pointers) روی عملکرد Garbage Collector تأثیر می‌گذارد. خلاصه و نکات مهمش به شکل زیر است 👇


📌 اSpan Class در Go

د🔹 Garbage Collector (GC در Go از نوع tracing است؛ یعنی برای یافتن آبجکت‌های زنده، کل گراف حافظه را پیمایش می‌کند.

🔹 اگر یک نوع داده (type) هیچ اشاره‌گری نداشته باشد — مستقیم یا غیرمستقیم — GC می‌تواند آن را اسکن نکند**، چون مطمئن است که آن شیء به هیچ آبجکت دیگری اشاره ندارد.

🔹 این ویژگی در زمان کامپایل مشخص می‌شود، بنابراین هیچ هزینه‌ی زمان اجرا (runtime cost) ندارد.


🧩 مفهوم Span Class:

برای استفاده از این بهینه‌سازی، Go مفهوم **Span Class
را معرفی می‌کند.
هر Span Class بر اساس دو ویژگی تعریف می‌شود:

1.ا Size Class آبجکت‌هایی که در آن قرار دارند
2. وجود یا نبود اشاره‌گر در آن آبجکت‌ها


🔸 اگر آبجکت‌های Span شامل اشاره‌گر باشند → Scan Class
🔸 اگر اشاره‌گر نداشته باشند → NoScan Class

چون وجود اشاره‌گر یک ویژگی دودویی است (دارد یا ندارد)،
تعداد کل Span Classها برابر است با:

> 68 (تعداد Size Classها) × 2 = 136 Span Class



🔢 نحوه‌ی تشخیص:

* هر Span Class یک عدد بین 0 تا 135 دارد.
* عدد زوج → Scan Class
* عدد فرد → NoScan Class
* Size Class = spanClass / 2


جمع‌بندی
هر Span در Go نه فقط به یک Size Class بلکه به یک Span Class خاص تعلق دارد.
این تفکیک باعث می‌شود GC سریع‌تر و بهینه‌تر کار کند، چون لازم نیست آبجکت‌های بدون اشاره‌گر را اسکن کند.


👑 @gopher_academy
Forwarded from Gopher Academy
این بخش به ساختار Span Set در مدیریت حافظه‌ی Go می‌پردازد. در واقع توضیح می‌دهد چطور runtime با کارایی بالا مجموعه‌ای از spanها را سازمان‌دهی می‌کند. خلاصه‌ی دقیق و نکات کلیدی 👇


📘 Span Set در Go Runtime

🔹 برای مدیریت بهتر spanها، Go از ساختاری به نام Span Set استفاده می‌کند.
🔹 هر Span Set شامل مجموعه‌ای از mspan**‌هایی است که همگی متعلق به **یک Span Class مشخص هستند


🧩 ساختار درونی Span Set

* از نظر فنی، Span Set یک slice از آرایه‌ها است.
* اندازه‌ی هر آرایه 512 خانه دارد.
* هر خانه شامل یک mspan object است (ممکن است null باشد).

* سلول‌های بنفش → mspan معتبر (non-null)
* سلول‌های سفید → تهی (null)

⚙️ عملیات (Push / Pop)

* دو متغیر کلیدی دارد: head و tail

* head → اولین span معتبر (برای pop)
* tail → آخرین span معتبر (برای push)

* هنگام pop از head شروع می‌کند (بالا به پایین، چپ به راست).
* هنگام push از tail ادامه می‌دهد (بالا به پایین، چپ به راست).
* اگر آرایه‌ای خالی شود، حذف شده و به pool آزاد برای استفاده‌ی آینده برگردانده می‌شود.


🧵 هم‌زمانی (Concurrency)

* متغیرهای head و tail atomic هستند.
* به همین دلیل، چند goroutine می‌توانند هم‌زمان span اضافه یا حذف کنند
بدون نیاز به قفل (lock).

---

خلاصه:
اSpan Set در Go ابزاری کارآمد برای نگهداری و مدیریت هم‌زمان مجموعه‌ای از spanهاست.
این ساختار ساده اما قدرتمند، به runtime اجازه می‌دهد تا مدیریت حافظه را سریع، بدون قفل و با حداقل سربار انجام دهد.

👑 @gopher_academy
Forwarded from Gopher Academy
این بخش وارد جزئیات مهمی از نحوه‌ی تشخیص محل اشاره‌گرها (pointers) در حافظه توسط Garbage Collector در Go می‌شود. در ادامه توضیح مختصر و مفیدش 👇



📘 Heap Bits و Malloc Header در Go Runtime

🔹 در زبان Go، Garbage Collector (GC) باید بداند کدام قسمت از یک شیء شامل pointer است تا بتواند به درستی گراف حافظه را پیمایش کند.
اما بررسی تک‌تک فیلدهای هر struct در زمان اجرا (runtime) بسیار پرهزینه خواهد بود، مخصوصاً برای ساختارهای بزرگ یا تو در تو.



💡 راه‌حل Go: استفاده از متادیتا (Metadata)

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

1. Heap Bits

* برای هر ناحیه از حافظه‌ی heap، اطلاعاتی به‌صورت بیت‌فیلد ذخیره می‌شود که مشخص می‌کند
هر بخش از آن حافظه شامل pointer است یا داده‌ی معمولی (non-pointer).
* این بیت‌ها توسط کامپایلر در زمان کامپایل ساخته و در زمان اجرا توسط GC استفاده می‌شوند.
* نتیجه: GC می‌تواند مستقیماً بداند کدام قسمت‌ها را باید دنبال کند، بدون نیاز به اسکن کل struct.

2. Malloc Header

* هر شیء در heap یک هدر (header) دارد که اطلاعات مدیریتی مثل اندازه، نوع و آدرس بیت‌های مربوط به آن (heap bits) را نگهداری می‌کند.
ا * GC از این هدر برای دسترسی سریع به متادیتای مورد نیاز در زمان جمع‌آوری حافظه استفاده می‌کند.


⚙️ نتیجه

با ترکیب heap bits و malloc header**، GC در Go می‌تواند:

* تنها بخش‌های لازم را اسکن کند (به جای کل حافظه)
* با سرعت و دقت بالا گراف اشیاء را پیمایش کند
* و در عین حال، **کارایی بالایی در مدیریت حافظه
حفظ کند.


خلاصه:
اGo با استفاده از *Heap Bits* و *Malloc Header*، مکان pointerها را از پیش می‌داند و به این ترتیب، فرآیند جمع‌آوری زباله را بسیار سریع و بهینه انجام می‌دهد — بدون نیاز به بررسی تکی‌تکی فیلدها در زمان اجرا.


👑 @gopher_academy
Forwarded from Gopher Academy
🧠د Heap Bits در Go — هوشمندی در مدیریت حافظه

در Go، اشیاء کوچکتر از ۵۱۲ بایت درون span‌هایی نگهداری می‌شن که خودشون چندین شیء هم‌اندازه دارن.
اما چطور Garbage Collector می‌فهمه کدوم بخش از این اشیاء شامل pointer هست؟
پاسخ: با Heap Bitmap

🔹 هر span یک نقشه‌ی بیتی (bitmap) در انتهای خودش داره.
🔹 هر بیت مربوط به یک "word" از حافظه (معمولاً ۸ بایت) هست:

1️⃣ = شامل pointer

0️⃣ = داده‌ی عادی (non-pointer)

به این ترتیب، GC فقط بخش‌هایی رو اسکن می‌کنه که واقعاً pointer دارن — سریع‌تر و بهینه‌تر از اینکه کل حافظه بررسی بشه.

📦 هر span علاوه‌بر فضای مورد نیاز برای اشیاء، مقداری فضا برای این bitmap کنار می‌گذاره.

👑 @gopher_academy
Forwarded from Gopher Academy
برای اشیایی که اندازه‌شان بیشتر از ۵۱۲ بایت باشد، استفاده از یک بیت‌مپ بزرگ برای مدیریت حافظه کارآمد نیست. به جای آن، هر شیء با یک هدر ۸ بایت به نام "malloc header" همراه می‌شود. این هدر شامل یک اشاره‌گر به اطلاعات نوع شیء (type information) است.
این اطلاعات نوع شامل یک فیلد به نام "GCData" است که چیدمان اشاره‌گرها (pointer layout) در نوع شیء را کدگذاری می‌کند. جمع‌آوری زباله (garbage collector) از این داده‌ها استفاده می‌کند تا به طور دقیق و کارآمد فقط فیلدهایی که حاوی اشاره‌گرها هستند را هنگام پیمایش گراف اشیاء پیدا کند.
به زبان ساده، این روش به جمع‌آوری زباله کمک می‌کند تا بدون نیاز به بررسی کل حافظه، فقط بخش‌های مهم را که به اشیاء دیگر اشاره دارند، شناسایی و مدیریت کند.

👑 @gopher_academy
Forwarded from Gopher Academy
♥️جزییات فنی این بخش از مقالات رو می تونید توی لینک زیر بخونید

- https://github.com/golang/go/blob/go1.24.0/src/runtime/runtime2.go#L529-L529
🎯 کد تنظیمات اولیه runtime در Go - بخش اصلی اجرا!

- https://github.com/golang/go/blob/go1.24.0/src/runtime/proc.go#L117-L117
🚀 مدیریت فرآیندها (goroutines) در runtime Go.

- https://man7.org/linux/man-pages/man2/mmap.2.html
📚 مستندات mmap لینوکس - تخصیص حافظه به فرآیندها.

- https://github.com/golang/go/blob/go1.24.0/src/runtime/mheap.go#L245-L311
🗂 مدیریت هیپ در Go - تخصیص و آزادسازی صفحات حافظه.

- https://github.com/golang/go/blob/go1.24.0/src/runtime/mheap.go#L402-L496
🔧 مدیریت پیشرفته هیپ - ردیابی و تخصیص حافظه.

- https://github.com/golang/go/blob/go1.24.0/src/runtime/sizeclasses.go#L6
📏 تعریف کلاس‌های اندازه اولیه برای حافظه کارآمد.

- https://github.com/golang/go/blob/go1.24.0/src/runtime/sizeclasses.go#L61
🧮 محاسبات دقیق‌تر برای کلاس‌های اندازه حافظه.

- https://github.com/golang/go/blob/go1.24.0/src/runtime/sizeclasses.go#L44
⚙️ تنظیمات اضافی برای دسته‌بندی اندازه‌ها.

- https://github.com/golang/go/blob/go1.24.0/src/runtime/sizeclasses.go
📂 فایل کامل کلاس‌های اندازه حافظه در Go.

- https://github.com/golang/go/blob/go1.24.0/src/runtime/mheap.go#L556-L562
♻️ کد آزادسازی صفحات حافظه در هیپ.

- https://github.com/golang/go/blob/go1.24.0/src/runtime/mspanset.go#L14-L52
🌐 مدیریت مجموعه اسپن‌ها برای تخصیص حافظه.

- https://github.com/golang/go/blob/go1.24.0/src/runtime/mbitmap.go#L549-L582
🖼 مدیریت بیت‌مپ برای ردیابی حافظه.

- https://github.com/golang/go/blob/go1.24.0/src/runtime/malloc.go#L1470-L1470
💾 بخشی از تابع malloc برای تخصیص حافظه.

- https://github.com/golang/go/blob/go1.24.0/src/internal/abi/type.go#L31-L42
📋 تعریف ساختار نوع و متادیتای ABI در Go.



👑 @gopher_academy
Forwarded from Gopher Academy
🔵 عنوان مقاله
The new() Function Will Take an Expression in Go 1.26

🟢 خلاصه مقاله:
در Go 1.26 یک بهبود کوچک اما کاربردی می‌آید: تابع new() می‌تواند یک عبارت بگیرد، نه فقط یک نوع؛ Chris Siebenmann توضیح می‌دهد که این تغییر برخی الگوهای تخصیص و مقداردهی را ساده‌تر و خواناتر می‌کند. Tim Little با استفاده از raylib-go یک شبیه‌سازی آب بلادرنگ در Go می‌سازد و نشان می‌دهد چگونه می‌توان با ترکیب کارایی Go و سادگی raylib، رندر و فیزیک ساده را پیاده‌سازی کرد. Vladimir Makarov به تخصیص ثبات در کامپایلر Go می‌پردازد و تأثیر آن بر کارایی، استراتژی‌ها و ملاحظات بخش SSA را شرح می‌دهد. در نهایت، Ted Unangst یادآوری می‌کند که «دم» برش‌ها در Go بی‌نهایت رشد نمی‌کند و باید به ظرفیت، بازبرش و رفتار append توجه کرد تا از خطاها و افت کارایی جلوگیری شود.

#Go #Golang #Go126 #Compiler #RegisterAllocation #raylib #GameDev #Slices

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


👑 @gopher_academy