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 Anarchonomy
از جمله «خبرهای تلخ ولی قابل انتظار» این بود که شرکت سازنده آلمانی دوربین‌های الکسا، که ۸۰ درصد فیلم‌هایی که از بچگی تا الان دیدید رو با یکی از دوربین‌هاش فیلمبرداری کرده‌اند، در آستانه ورشکستگیه و اگه کسی پیدا بشه که بخردشون خوشحال میشن. وقتی دیگه حتی با آیفون هم میشه فیلم سینمایی ساخت، بازار دوربینی که ۵۰ هزار دلار قیمت داره محدود میشه به چندتا استودیو فیلم‌سازی، که اون‌ها هم هر ده سال یکبار ممکنه خرید جدید انجام بدن. این شرکت بیزینس خودش رو با فروختن به اجاره‌بده‌ها تنظیم کرده بود و الان دیگه کسی حاضر نیست این مبالغ سنگین روزانه رو برای اجاره بده وقتی با همون پول میتونه دوربینی بخره که ۹۰ درصد همون کیفیت رو میده (چون مردم متوجه ۱۰ درصد مابقی نمیشن) و دوربین هم مال خودشه. همزمان ارتقاء سریع هوش مصنوعی داره کل موضوع فیلمبرداری رو به حاشیه میبره.
نسل ما نسل خاصی بود که هم نوار نگاتیو رو دید، هم بی‌مشتری شدن بهترین سنسور دیجیتال رو.
افزونه Laravel Idea برنامه PHPStorm رایگان شده
برای توسعه راحتتر پیشنهاد میشه نصب کنید
https://blog.jetbrains.com/phpstorm/2025/07/laravel-idea-is-now-free/

@DevTwitter | <Developer One/>
آسیب‌پذیری IDOR

آسیب‌پذیری IDOR یا Insecure Direct Object Reference که زیرمجموعه‌ای از آسیب‌پذیری‌های کنترل دسترسیه، زمانی اتفاق می‌افته که یه API طوری طراحی شده باشه که با استفاده از شناسه‌های قابل حدس، مثل یوزرنیم یا عددهای افزایشی (مثلاً 123)، امکان دسترسی به اطلاعات رو بده.

یعنی اگر من یوزر 123 هستم و به اطلاعات خودم دسترسی دارم، بتونم با تغییر عدد به 124، اطلاعات یوزر بعدی رو هم ببینم.

حالا تصور کنید این مسئله فقط برای خوندن داده‌ها نباشه؛ یه متد update هم وجود داشته باشه که با گرفتن همون ID اطلاعات رو تغییر بده. این‌جوری مهاجم نه‌تنها می‌تونه اطلاعات بقیه رو ببینه، بلکه حتی می‌تونه تغییرشون هم بده.

با وجود این که خیلی‌هامون با این مسئله آشناییم، IDOR هنوز هم جزء آسیب‌پذیری‌های خیلی رایج محسوب می‌شه و توی پروژه‌های زیادی دیده می‌شه. [+][+]

راه‌حل چیه؟
اولین چیزی که به ذهن می‌رسه استفاده از شناسه‌های غیرقابل پیش‌بینیه؛ مثلاً UUID. این‌جوری دیگه مهاجم نمی‌تونه حدس بزنه که یوزر بعدی کیه. اما این راه‌حل کامل نیست.

درسته که دیگه نمی‌شه با یه اسکریپت ساده یا تغییر دستی آیدی‌ها به اطلاعات بقیه رسید، ولی اگه مهاجم به یه لیست از UUIDها دسترسی پیدا کنه (مثلاً از طریق ایندکس‌های دایرکتوری یا ابزارهایی مثل gau)، همچنان می‌تونه از API سوءاستفاده کنه. استفاده‌ی صرف از UUID حتی ممکنه توهم امنیت ایجاد کنه و باعث شه مشکل برای مدت طولانی کشف نشه.

راه حل اصولی‌تر چیه؟
راه‌حل بهتر، اضافه کردن ولیدیشن و authorization قبل از دسترسی به اطلاعاته. اگه قراره کاربری بتونه به اطلاعاتی دسترسی داشته باشه یا تغییری روش اعمال کنه، باید توی کد بررسی کنیم که آیا کاربر احراز هویت‌شده مجاز به دسترسی به اون داده هست یا نه.

مثلاً اگه یوزری لاگین کرده و تلاش می‌کنه اطلاعاتی شخصی رو تغییر بده، مطمئن بشیم که user_id اون رکورد مربوط به خودشه.

@aminrbg
توی گروه مشهدلاگ دیشب یک بحثی در این رابطه توی گروه بود، که حالا می‌خوام یک سری توضیحات بنویسم در موردش.

به صورت پیشفرض، برنامه‌ای که لایسنس نداشته باشه (مخزنی که لایسنس نداشته باشه) به صورت پیشفرض انحصاری تلقی میشه:

توی وبسایت choosealicense که توسط گیت‌هاب میزبانی میشه، در صفحه‌ای که مربوط به این موضوع هستش یک پاراگراف توضیح نوشته برای کاربر:

If you find software that doesn’t have a license, that generally means you have no permission from the creators of the software to use, modify, or share the software. Although a code host such as GitHub may allow you to view and fork the code, this does not imply that you are permitted to use, modify, or share the software for any purpose.


که میشه چندتا کار در قبال این موارد انجام داد که عبارتند از:
۱- درخواست از توسعه دهنده برای اضافه کردن لایسنس
۲- نوشتن معادل یا پیدا کردن معادل
۳- دوری کردن از اون سورس‌کد


در مبنای حقوقی هم، لایسنس نداشتن به این معنی نیست که با اون سورس‌کد شما هرکاری دوست داشتید بکنید، به صورت پیشفرض قانون کپی‌رایت شاملش میشه و مالک اون مخزن می‌تونه از شما شکایت کنه:
https://www.wipo.int/treaties/en/ip/berne/summary_berne.html

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


طبق بند ۹ اون قانون:

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


شما بدون اجازه مالک اون مخزن امکان استفاده از اون سورس رو ندارید.


@SohrabContents
Forwarded from Linuxor ?
This media is not supported in your browser
VIEW IN TELEGRAM
یه مدل جدید اومده برای Parse کردن داکیومنت و OCR.حدود 100 زبان از جمله فارسی را هم پشتیبانی میکنه. من برای یه عکس یه مقاله امتحان کردم که نتیجه خیلی عالی بود. مدل با اینکه 1.7B پارامتر داره ولی نتایج خیلی خوبه؛ با اینکه خیلی سبکه ولی نتایج در حد Gemini 2.5 Pro عمل می‌کنه.


تست :
dotsocr.xiaohongshu.com
سورس کد :
github.com/rednote-hilab/dots.ocr


@Linuxor ~ MehdiAllahyari
Forwarded from Gopher Academy
📊 مقایسه سریع با bytes.Buffer
Forwarded from Go Casts 🚀
اگه طرفدار و کاربر editorهای ترمینالی مثل vim و مشتقاتش هستید پیشنهاد میکنم حتما Helix رو امتحان کنید.
با Rust توسعه داده شده و learning curve خیلی راحت تری داره.
همیشه لیست hotkeyهای مد نظرتون جلوی چشمتونه و لازم نیست همه چیز رو حفظ کنید یا اونقدر تمرین کنید که ملکه ذهنتون بشه.
دو هفته ای میشه که محیط اصلی توسعه خودم هست و بشدت ازش راضیم.
مزیت اصلی ش نسبت به vim همینه که در یه زمان خیلی محدود میتونید روش مسلط بشید و به عنوان محیط اصلی توسعه ازش استفاده کنید.

ترکیب zellij با helix یه محیط خیلی حرفه ای و customize شده توسعه رو میتونه بهتون بده.
اگه تجربه تون با vim شکست خورده مثل من، با helix یه تلاش مجدد کنید شاید این بار موفقیت آمیز باشه...
https://helix-editor.com


@gocasts
Forwarded from Morteza Bashsiz مرتضی باشسیز (Morteza Bashsiz)
ویدیو شماره ۱۲ - سرویس dnsdist
توی این ویدیو از سرویس dnsdist استفاده کردم و توضیح دادم که چه قابلیت‌هایی داره و کجاها میتونیم و باید ازش استفاده کنیم.

https://youtu.be/Vkmep7WNk5M?si=qvm4ZaSMbXmvyk-4
یه cli ساختم برای ساخت پروژه های جاوااسکریپت
پروژه ها میتونن فول استک یا به صورت تکی بکند یا فرانت باشن
هر بار میخواستم یه پروژه ری اکت + vite بسازم میخواست یه command طولانی رو حفظ کنم برا همین اینو ساختم امیدوارم شما هم خوشتون بیاد و خوشحال میشم مشکلاتش رو توی issues گیتهاب بزارید

https://www.npmjs.com/package/booz-stack

@DevTwitter | <../>
Forwarded from Linuxor ?
یه میمی هست که می‌گه ORM ها خیلی خوبن اما فقط وقتی که SQL رو از قبل بلد باشید


@Linuxor
Forwarded from Frontend with Erfun👨🏻‍💻 (Erfun Ghodoosi)
در راستای تاثیر ai روی افرادی که تازه شروع کردن
یکی اونایی که میبینن ai هست و موقعیت رو برای خودشون برای یادگیری غیر ممکن و بدون آینده میبینن برام خنده داره

یکی هم خنده دار تر، اونایی که میبینن ai هست خودشونو همه کاره جا میزنن:))
طرفو باهاش حرف میزنی هیچی حالیش نیست ولی همه جور پروژه ای میزنه. نمیدونم بک اند بدی میزنه فرانت بدی میزنه دواپس بدی کار میکنه دیزاین هرچیییی.
بعد وقتی داری باهاش صحبت میکنی یه کلمه در میون اینارو میشنوی:
ai
LLM
grok
gpt
4o
Gemeni
...

نه که استفاده کردن از اینا بد باشه ها...
بحث اینه که این افراد دیگه یباره بالا خونه رو دادن اجاره و اوج زحمتی که میکشن تمدید اکانت cursor یا نمیدونم copilot های مختلفه
بالاخره فرصتش پیش اومد روی موبایل تستش کنم.



نسخه‌های اولیه‌اش رو به زودی میدم بیرون
@SohrabContents
Forwarded from Curious Geek ⚡️
سلام به همگی ❤️🌱
امشب هم مثل هر هفته ویس کالمون با قدرت پابرجاست.

پوزش میخوام بابت این که دیر داریم اطلاع میدیم.🥲
تو ذهنتون باشه هر هفته این برنامه رو داریم مگر قبلش اعلام کنیم که نیست.
ساعت ۹:۳۰ امشب تا ۱۲ یا حتی بیشتر(ببینیم چی میشه 😅) هیچ مشکلی هم نداره وسطش بیاید!!! هر ساعتی تونستید بیاید

موضوعات امشب خیلیی جذابن امیدوارم از دستش ندید!
🕺 "اگه بخوای یه مهارت غیرفنی یاد بگیری، چی انتخاب می‌کنی؟"
🎭 "نقشی که دوست داشتی توی یه فیلم بازی کنی چی بود؟"
🎮 "بازی دوران کودکی که هنوزم دلت براش تنگ میشه"
🌚 "اگه می‌تونستی یک روز با کسی عوض بشی، کی رو انتخاب می‌کردی و چرا؟"
🏝️ "اگه هیچ محدودیتی نداشتی، الان کجای دنیا بودی و چیکار می‌کردی؟"
🎭  "یه چیزی که از بیرون خفن به نظر میاد ولی وقتی تجربه‌ش کردی گفتی: فقط همین بود؟!"

ویس کال در گروه The Geeks برگزار میشه، کافیه از این لینک درخواست بدید تا وال ای برای یک مصاحبه دو دقیقه ای بهتون پیام بده

🔗 t.iss.one/+FYq2IWScw69hMDA8

قانون اصلی: حرف فنی در گروه ممنوع.
🍃🙂

🆔 t.iss.one/TheGeeksCommunity
Forwarded from Codino School (ایمان غفوری)
This media is not supported in your browser
VIEW IN TELEGRAM
بالاخره بعد از ۵ سال... میکروسکوپ رسید به اون حالتی که من همیشه آرزوش رو داشتم.

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

این کار در پشت صحنه با استفاده از Generator ها و کیورد yield انجام شده.

@codino
علوم کامپیوتر یا مهندسی کامپیوتر؟ مسئله این است.

اگر قصدتون انتخاب کردن رشته‌ی کامپیوتر باشه، دوتا انتخاب دارید:

1️⃣علوم کامپیوتر
2️⃣مهندسی کامپیوتر

تفاوت این دوتا برخلاف تصور واقعا زیاده، اول معرفیشون کنیم بعد به چنتا از ویژگی هاشون بپردازیم.

علوم کامپیوتر درواقع رشته‌ایه که ارتباط نزدیک‌تری به ریاضیات کاربردی داره و ریاضیات نقش زیادی توش ایفا میکنن. از شروط واقعا لازم برای خوندن این رشته داشتن علاقه به ریاضیه.

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

🔄 سیکل دنیای کامپیوتر به این شکله:

1️⃣ دانشمندان کامپیوتر میان یک‌سری الگوریتم هارو میسازن و محاسبات رو انجام میدن و کدش رو مینویسن.

2️⃣ مهندسان کامپیوتر میان با قطعاتی که مهندسان برق تولید کردن این الگوریتم هارو توی کامپیوتر جاساز میکنن.

‼️ یعنی الگوریتم های معروف رمزنگاری، انکریپشن، پروتوکل های ارسال مدیا و ... همشون توسط کسانی که علوم کامپیوتر خوندن ساخته میشن و محاسباتشون انجام میشه و بعد implement میشن.

بررسی این رشته برای آینده:

1️⃣ مهاجرت:
تو خارج از ایران ما Computer Science داریم و چیزی تحت عنوان Comuter Engineering اصلا شناخته شده نیست. موقعیت علوم کامپیوتر بهتره.

2️⃣ استخدامی دولتی:
مهندسی کامپیوتر فراخوان های استخدامی بیشتری رو به خودش اختصاص داده ولی جدیدا علوم کامپیوتر هم تک و توک درخواست میکنن.

3️⃣ استخدامی شرکت های خصوصی:
حقیقتا فرقی نداره؛‌ اینجا بیشتر مهارتتون رو میسنجن، ولی من اگر بخوام کسی رو که میخواد رو نرم‌افزارم کار کنه رو استخدام کنم نه سخت‌افزار، ترجیحم اینه کسی که علوم کامپیوتر رو «درست» خونده باشه روش کار کنه.

💎 آینده‌ی علوم کامپیوتر با وجود پیشرفتای Ai و ML و NLP و ... خیلی روشن‌تر بنظر میاد. و البته اینو باید اشاره کنم که اکثر زیرشاخه های کامپیوتر تو ارشد توی علوم کامپیوتر هستن (شبکه، امنیت شبکه، هوش مصنوعی، یادگیری ماشین و ...)

درنهایت، ببینید علاقتون چیه و به کدوم سمت میخواید برید. علوم کامپیوتر یه رشته‌ی به نسبت جدیدتره تو ایران و هر سال دانشگاه های بیشتری دارن ارائش میدن. سالی که من کنکور دادم (۱۴۰۳) گزینشش کشوری بود (یعنی سهمیه بومی و قطبی و ... نداشتید) و با رتبه کشوریتون قبولیتون اعلام میشد.

امسال رو خبر ندارم.
موفق باشید.

🔗 @NimaCodez
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Gopher Academy
🔐 مفهوم Mutex در Go

اsync.Mutex یک اصل اساسی برای کنترل دسترسی امن به منابع مشترک بین goroutineها است. این نوع قفل تضمین می‌کند که در هر لحظه تنها یک goroutine به بخش حیاتی از کد (critical section) دسترسی دارد

---

🧠 وضعیت‌های مختلف Mutex

می‌توان عملکرد آن را با وضعیت‌های زیر توضیح داد:
ا
ا* Unlocked (حالت اولیه): Mutex آزاد است و هر goroutine می‌تواند با فراخوانی Lock() آن را بگیرد.
ا* Locked: وقتی یک goroutine Lock() می‌زند، دیگران باید منتظر بمانند.
ا* Waiting: در صورت تلاش هم‌زمان چند goroutine برای گرفتن قفل، بقیه به صف انتظار اضافه می‌شوند.
ا* Starvation Mode: اگر یک goroutine بیش از \~۱ms نتواند قفل را بگیرد، سیستم وارد حالت گرسنگی (fair mode) شده و به ترتیب به goroutineهای قدیمی‌تر اجازه دسترسی می‌دهد ([CSDN Blog][3], [Zhihu Zhiwan][4]).

---

⚙️ عملکرد درونی Mutex

* از عملیات غیرقابل قطع (CAS) برای کنترل فیلد state استفاده می‌شود.
* در شرایط کم‌رقابت ابتدا به‌صورت spinning تلاش می‌کند تا حد ممکن بدون خوابیدن lock را بگیرد.
* در سطوح بالای رقابت، goroutineها به صف انتظار اضافه می‌شوند و بیدار می‌شوند وقتی قفل آزاد شد.
* حالت starvation زمانی فعال می‌شود که یک goroutine مدت طولانی در انتظار است تا از حالت FIFO استفاده شود

---

نکات کاربردی و بهترین شیوه‌ها

1. هیچ گاه Mutex را کپی نکنید؛ حتی تصادفاً**—مستقیماً باید از pointers استفاده شود
2. هیچ‌گاه موضعی در struct آن را جاسازی (embed) نکنید، چون باعث در دسترس‌پذیری ناخواسته متدهای Lock/Unlock می‌شود
3. از
defer m.Unlock() برای اطمینان از آزادسازی قفل حتی در صورت panic یا return زودهنگام استفاده کنید
4. بخش قفل‌شده باید حداقل زمان ممکن طول بکشد؛ انجام عملیات بلندمدت در آن ممکن است باعث کاهش concurrency و تأخیر جدی شود.

---

⚠️ مشکلات رایج و اشتباهات متداول

* **کپی ناخواسته Mutex: حذف ایمنی synchronization و موجب رفتار نامشخص.
ا* embedding Mutex: باعث انتشار متدهای داخلی قفل به بیرون struct می‌شود — روش اشتباهی است
ا* Double Unlock یا Unlock بدون Lock قبلی → panic.
* عدم رعایت defer → ممکن است در صورت خطا یا exit، قفل آزاد نشود و deadlock رخ دهد.
ا* Deadlock ناشی از تداخل دو یا چند goroutine با mutexهای متفاوت و انتظار متقابل بر مبنای نظم اشتباهی بین Lock()ها.
Forwarded from Untibody
یه گاوی از مجلس میگه «باید به مردم آموزش‌هایی داد که نمونه آن استفاده از آب خاکستری یا تصفیه مجدد آب مصرفی است که از سال‌ها پیش در برخی کشورها رایج بوده است»
کم کم باید آموزش ببینیم چطوری با سر مورچه وحشی بخیه بزنیم
با جویدن و قراردادن گزنه رودخانه روی زخم‌هایمان از خونریزی و عفونت جلوگریری کنیم
Forwarded from Linuxor ?
اگه به فارسی برنامه نویسی کنیم به دیکشنری باید بگیم فرهنگ لغت :)

@Linuxor