DevOps Labdon
401 subscribers
22 photos
1 video
1 file
585 links
👑 DevOps Labdon

حمایت مالی:
https://www.coffeete.ir/mrbardia72

ادمین:
@mrbardia72
Download Telegram
🔵 عنوان مقاله
Unlock 66% better price-performance with new M4 VMs for memory-intensive workloads (4 minute read)

🟢 خلاصه مقاله:
گوگل کلود اخیراً مدل جدیدی از ماشین‌های مجازی با عنوان Compute Engine M4 را رونمایی کرده که بهینه‌سازی شده برای کارکردهای حافظه‌ای با عملکرد بالا است. این ماشین مجازی جدید می‌تواند تا 224 vCPU و 6TB حافظه DDR5 را پشتیبانی کند. M4 عملکرد قیمت به نسبت بهتری تا 2.44 برابر نسبت به نسل‌های قبلی ارائه می‌دهد و از ذخیره‌سازی پیشرفته Hyperdisk بهره می‌برد. این ویژگی‌ها M4 را یک راه‌حل قدرتمند برای کاربرانی که به حافظه بالا و قدرت پردازشی زیاد نیاز دارند، تبدیل می‌کند، که امکان پیاده‌سازی و اجرای برنامه‌ها و دیتابیس‌های عظیم را در محیط ابری فراهم می‌آورد. این پیشرفت‌ها در عملکرد و ظرفیت به کاربران اجازه می‌دهد تا به صورت کارآمدتر و مقرون به صرفه‌تر برنامه‌های کلان داده و یادگیری ماشینی خود را به اجرا درآورند.

🟣لینک مقاله:
https://cloud.google.com/blog/products/compute/m4-vms-are-designed-for-memory-intensive-workloads-like-sap?utm_source=tldrdevops


👑 @DevOps_Labdon
1
🔵 عنوان مقاله
OpenTelemetry for Go: measuring the overhead (6 minute read)

🟢 خلاصه مقاله:
مقاله به بررسی تأثیر افزودن OpenTelemetry به برنامه‌های نوشته‌شده با زبان برنامه‌نویسی Go می‌پردازد. OpenTelemetry ابزاری است که به مشاهده‌پذیری کارایی برنامه کمک می‌کند و امکان ردیابی و مانیتورینگ عملکرد برنامه را در طول زمان فراهم می‌آورد. گرچه وجود این ابزار مزایای بسیاری دارد، مطالعه نشان می‌دهد که استفاده از آن منجر به افزایش مصرف منابع سیستمی مانند CPU، حافظه و شبکه می‌شود. این افزایش منابع می‌تواند بر توان عملیاتی و بازده کلی سیستم تأثیر بگذارد، اما در مقابل، ارزش‌های قابل توجهی در زمینه قابلیت نظارت و تحلیل عمقی عملکرد را ارائه می‌دهد. دست‌یابی به تعادل بین منافع به‌دست‌آمده از مشاهده‌پذیری و هزینه افزایش استفاده از منابع محور بحث اصلی مقاله است.

🟣لینک مقاله:
https://coroot.com/blog/opentelemetry-for-go-measuring-the-overhead/?utm_source=tldrdevops


👑 @DevOps_Labdon
2
Forwarded from Gopher Academy
🎬 استخدام – تولید ویدیو با کمک هوش مصنوعی (AI Video Creator)

درود به همه 🙌
ما به‌دنبال یک فرد خلاق و مسلط هستیم که بتونه با استفاده از ابزارهای هوش مصنوعی، ویدیوهای حرفه‌ای و جذاب تولید کنه.

🧠 مهارت‌های موردنیاز:

آشنایی کامل با ابزارهای ساخت ویدیو مبتنی بر هوش مصنوعی

توانایی پرامپت‌نویسی حرفه‌ای برای تولید محتوای حرفه های ویدیویی با AI

درک خوب از اصول تدوین، داستان‌پردازی تصویری و خلاقیت در تولید محتوا

آشنایی با مفاهیم پایه تولید محتوا در شبکه‌های اجتماعی

🌍 همکاری به‌صورت دورکاری / پروژه‌ای

📩 اگر فکر می‌کنی می‌تونی این نقش رو به خوبی اجرا کنی، به شماره زیر توی واتساب یا تلگرام پیام بفرستید

+989355167911
🔵 عنوان مقاله
Prometheus data source update: Redefining our big tent philosophy (5 minute read)

🟢 خلاصه مقاله:
Grafana Labs اخیراً اعتبارسنجی AWS و Azure را از منبع داده‌های اصلی Prometheus خود حذف کرده و به جای آن، پلاگین‌های اختصاصی که مخصوص نیازهای هر پلتفرم طراحی شده‌اند، معرفی نموده است. این تغییرات در راستای تکامل فلسفه "چادر بزرگ" شرکت است که حال به منابع داده‌ای که مخصوصاً ساخته شده‌اند تأکید دارد تا هم سازگاری با نسخه‌های قبلی را حفظ کنند و هم قابلیت همکاری و پشتیبانی از ویژگی‌های خاص فروشنده را بدون آنکه به integrité پروژه‌های متن‌باز مانند Prometheus لطمه‌ای وارد شود، فراهم آورند. این رویکرد به Grafana Labs امکان می‌دهد که تمرکز بیشتری بر توسعه‌ منابع داده‌ای داشته باشد که به طور موثرتری پاسخگوی نیازهای کاربران در محیط‌های مختلف ابری باشد.

🟣لینک مقاله:
https://grafana.com/blog/2025/06/16/prometheus-data-source-update-redefining-our-big-tent-philosophy/?utm_source=tldrdevops


👑 @DevOps_Labdon
1
🔵 عنوان مقاله
AWS Certificate Manager introduces public certificates you can use anywhere (2 minute read)

🟢 خلاصه مقاله:
AWS Certificate Manager اکنون امکان ارائه گواهینامه‌های عمومی TLS قابل صادرات را فراهم کرده که دسترسی به کلید خصوصی را شامل می‌شود. این تغییر جدید، کاربران را قادر می‌سازد تا از گواهینامه‌ها در محیط‌های مختلف از جمله AWS، هیبریدی و چند ابری استفاده کنند. این ویژگی به کاربران امکان می‌دهد به طور امن و مرکزی تمامی گواهینامه‌ها و کلیدهای خود را مدیریت کرده و به این ترتیب از امنیت و پیکربندی یکپارچه در کل زیرساخت‌های شبکه خود اطمینان حاصل کنند. این امکان گسترش قابلیت‌های مدیریت گواهینامه در AWS Certificate Manager بسیار مفید و ضروری است، زیرا با افزایش تمایل سازمان‌ها به محیط‌های ابری مختلط و چندگانه، نیاز به راه‌حل‌هایی با انعطاف‌پذیری و امنیت بیشتر افزایش می‌یابد.

🟣لینک مقاله:
https://aws.amazon.com/about-aws/whats-new/2025/06/aws-certificate-manager-public-certificates-use-anywhere/?utm_source=tldrdevops


👑 @DevOps_Labdon
1
🔵 عنوان مقاله
Announcing Argo CD v3.1 (4 minute read)

🟢 خلاصه مقاله:
نسخه 3.1 Argo CD ویژگی‌های جدیدی را معرفی می‌کند که از جمله آن‌ها می‌توان به پشتیبانی بتا برای رجیستری‌های OCI، افزونه‌های CLI، بهبودهای متادیتا Hydrator، امکان تغییر مقیاس منابع از طریق رابط کاربری و مهاجرت به کاربرد سمت سرور اشاره کرد. این نسخه همچنین شامل تعداد زیادی رفع اشکال، به‌روزرسانی‌های امنیتی، بهبود عملکرد و به‌روزرسانی‌های عمده وابستگی‌ها نظیر Go 1.24.4 است. این ویژگی‌ها به بهبود کارایی و امنیت کاربران کمک می‌کنند و به توسعه‌دهندگان این امکان را می‌دهند که پروژه‌ها و منابع خود را به طور مؤثرتری مدیریت کنند.

🟣لینک مقاله:
https://blog.argoproj.io/announcing-argo-cd-v3-1-f4389bc783c8?utm_source=tldrdevops


👑 @DevOps_Labdon
🔵 عنوان مقاله
Remote Code Execution on 40,000 WiFi alarm clocks 2024-12-13 23:44 label reverse engineering IoT (6 minute read)

🟢 خلاصه مقاله:
یک محقق امنیتی کشف کرده است که ساعت‌های زنگ‌دار Loftie دارای آسیب‌پذیری‌های بحرانی هستند. این آسیب‌پذیری‌ها شامل اطلاعات کاربری که به صورت عمومی در دسترس قرار دارند و می‌توان از آن‌ها برای دسترسی به تنظیمات زنگ‌دار، BSSIDs شبکه WiFi، و حتی ارسال دستورات به بیش از 40,000 ساعت استفاده کرد. این نقص‌های امنیتی می‌توانند امکان سوء استفاده و دستکاری در تنظیمات ساعت‌ها و دسترسی به اطلاعات شبکه‌های وای‌فای کاربران را فراهم آورند. برطرف کردن این نواقص می‌تواند از دسترسی‌های غیرمجاز به ساعت‌ها و حفاظت از حریم خصوصی کاربران جلوگیری کند. این مسئله نیاز به توجه فوری از سوی تولیدکنندگان Loftie را نشان می‌دهد تا از پیامدهای احتمالی جلوگیری شود.

🟣لینک مقاله:
https://iank.org/posts/loftie-rce/?utm_source=tldrdevops


👑 @DevOps_Labdon
🤝1
🔵 عنوان مقاله
Jemalloc Postmortem (6 minute read)

🟢 خلاصه مقاله:
jemalloc، یک تخصیص‌کننده حافظه که ابتدا برای FreeBSD توسعه یافت و بعداً توسط پروژه‌هایی مانند Firefox و زیرساخت‌های Facebook به طور گسترده‌ای پذیرفته شد، اکنون در حالت سکون قرار گرفته است، زیرا توسعه بالادستی آن رسماً به پایان رسیده است. با وجود موفقیت‌های فنی قابل توجه و تأثیر عمده بر صنعت، jemalloc با چالش‌هایی در همکاری پایدار میان سازمان‌های مختلف مواجه شد و در نهایت به دلیل تغییر اولویت‌ها در شرکت Meta و انباشت بدهی‌های فنی، با مشکلاتی روبرو شد. این وضعیت نشان دهنده دشواری‌هایی است که پروژه‌های نرم‌افزاری عمده در حفظ همکاری‌های طولانی‌مدت و پایدار با وجود تغییر در اولویت‌های شرکتی ممکن است با آن مواجه شوند.

🟣لینک مقاله:
https://jasone.github.io/2025/06/12/jemalloc-postmortem/?utm_source=tldrdevops


👑 @DevOps_Labdon
Forwarded from Linux Labdon
🧠 توضیح ساده:
Threads چیست؟
یک thread یک واحد اجرایی در برنامه است که توسط سیستم‌عامل ایجاد و کنترل می‌شود.

اجرای چند thread به صورت همزمان، multithreading نام دارد.

thread ها برای برنامه‌های سنگین مناسب‌اند، اما ساختن و مدیریت آن‌ها پرهزینه است (از نظر حافظه و زمان CPU).

Goroutines چیست؟
Goroutine یک رشته سبک (lightweight thread) در زبان Go است.

بسیار سریع‌تر و سبک‌تر از thread سنتی است.

وقتی شما می‌نویسید go myFunction()، یک goroutine جدید ایجاد می‌شود.

Goroutineها توسط runtime زبان Go مدیریت می‌شوند، نه سیستم‌عامل.

👑 @Linux_Labdon
🔵 عنوان مقاله
Why Generative AI Coding Tools and Agents Do Not Work For Me (5 minute read)

🟢 خلاصه مقاله:
مقاله مورد نظر به چالش‌های استفاده از ابزارهای برنامه‌نویسی مبتنی بر هوش مصنوعی می‌پردازد و توضیح می‌دهد که چگونه این ابزارها می‌توانند در عمل غیرکارآمد باشند. مهم‌ترین اشکال آنها این است که بررسی و اصلاح خروجی‌های تولیدی توسط آنها اغلب زمان بیش‌تری نسبت به نوشتن کد از ابتدا به طول می‌انجامد. علاوه بر این، این ابزارها فاقد قابلیت یادگیری و پاسخگویی کافی هستند که برای توسعه نرم‌افزار حرفه‌ای ضروری می‌باشند. در نتیجه، با توجه به این نقایص، ابزارهای برنامه‌نویسی مدرن با هوش مصنوعی نمی‌توانند به طور موثر در محیط‌های توسعه نرم‌افزاری حرفه‌ای به کار گرفته شوند. این مقاله تأکید می‌کند که توجه و ارزیابی دقیق‌تری لازم است قبل از اینکه بتوان از این ابزارها در پروژه‌های واقعی به‌ طور گسترده‌ای استفاده نمود.

🟣لینک مقاله:
https://blog.miguelgrinberg.com/post/why-generative-ai-coding-tools-and-agents-do-not-work-for-me?utm_source=tldrdevops


👑 @DevOps_Labdon
🔵 عنوان مقاله
Defending the Internet: how Cloudflare blocked a monumental 7.3 Tbps DDoS attack (8 minute read)

🟢 خلاصه مقاله:
در میانه ماه مه، Cloudflare به صورت خودکار حمله DDoS را با حجم رکوردشکن 7.3 ترابیت بر ثانیه (Tbps) مسدود کرد که هدف آن یک ارائه‌دهنده میزبانی بود. این حمله که از طریق Magic Transit صورت گرفت، در مدت 45 ثانیه 37.4 ترابایت داده را منتقل کرد. منبع این حمله 122,145 آدرس IP در 161 کشور بود، که تقریبا نیمی از این ترافیک از برزیل و ویتنام آمده بود.

🟣لینک مقاله:
https://blog.cloudflare.com/defending-the-internet-how-cloudflare-blocked-a-monumental-7-3-tbps-ddos/?utm_source=tldrdevops


👑 @DevOps_Labdon
🔵 عنوان مقاله
A Cloud Dev Hack: Connecting Local Code to Remote Clusters (8 minute read)

🟢 خلاصه مقاله:
مقاله معرفی‌شده به بررسی ابزاری به نام Mirrord از شرکت MetalBear می‌پردازد که به توسعه‌دهندگان امکان می‌دهد کد محلی خود را به پاد ریموت در Kubernetes متصل سازند. این قابلیت به آن‌ها اجازه می‌دهد تا بدون نیاز به استقرار کامل در ابر، توسعه، اشکال‌زدایی، و آزمایش کدهای خود را با دسترسی به منابع واقعی کلاستر انجام دهند. ابزار Mirrord با دخالت در فراخوانی‌های سیستمی و مسیریابی مجدد آن‌ها از طریق کلاستر، به برنامه‌های محلی اجازه دسترسی به API‌های داخلی، صف‌ها و اسرار مانند آنکه از داخل کلاستر اجرا می‌شوند را می‌دهد. Mirrord می‌تواند به صورت ابزار CLI مستقل، از طریق افزونه VS Code، یا از طریق پلاگین IntelliJ نصب شود. این ابزار برای بهبود فرآیندهای توسعه و آزمایش، انعطاف‌پذیری و کارایی زیادی را برای توسعه‌دهندگان فراهم می‌آورد.

🟣لینک مقاله:
https://metalbear.co/blog/cloud-dev-hack/?utm_source=tldrdevops


👑 @DevOps_Labdon
🔵 عنوان مقاله
GitLab 18.1 released (1 minute read)

🟢 خلاصه مقاله:
مقاله‌ی مرور شده نسخه 18.1 GitLab را معرفی می‌کند که با امکانات جدید و بهبودهای گسترده‌ای عرضه شده است. این نسخه شامل راه‌اندازی بتای Maven virtual registry است که امکان مدیریت بهتر و متمرکزتر پکیج‌های Java را فراهم می‌آورد. همچنین، Duo Code Review به عنوان ابزاری برای بررسی خودکار و هوشمندانه‌ی merge requests با استفاده از قابلیت‌های هوش مصنوعی به کار گرفته شده است. علاوه بر این، GitLab 18.1 شامل بیش از 110 بهبود دیگر است که از جمله‌ی آن‌ها تشخیص رمز عبورهای مختل شده و اجزای سازگار با SLSA Level 1 می‌باشد. تمرکز اصلی این به‌روزرسانی بر افزایش امنیت و بهبود فرآیندهای توسعه نرم‌افزار است که به تیم‌های توسعه‌دهنده کمک می‌کند تا بتوانند به طور مؤثرتری کار کنند.

🟣لینک مقاله:
https://about.gitlab.com/blog/gitlab-18-1-released/?utm_source=tldrdevops


👑 @DevOps_Labdon
2
🔵 عنوان مقاله
DNS best practices for implementation in Azure Landing Zones (5 minute read)

🟢 خلاصه مقاله:
مقاله‌ مورد بررسی به بررسی چگونگی استفاده از مناطق فرود Azure (Azure Landing Zones) برای ایجاد یک ساختار DNS متمرکز به کمک مناطق DNS خصوصی و حل‌کننده‌ها در شبکه‌های محوری و متحدالمرکز (hub-and-spoke) می‌پردازد. این روش به منظور تأمین یک راه‌حل امن و قابل مقیاس برای تعیین نام در سراسر شبکه‌ها استفاده می‌شود. همچنین، ادغام DNS‌های محلی نیازمند استفاده از فورواردرهای شرطی است، بدون نیاز به تکثیر AD، تا امکان حفظ اتصال و کنترل هیبریدی وجود داشته باشد. این توضیحات به شرح دقیق‌تری از چگونگی پیکربندی و مدیریت DNS در محیط‌های ترکیبی پرداخته و نشان می‌دهد که چگونه Azure می‌تواند به کارگیری فناوری‌های ابری را برای تسهیل ادغام سیستم‌های محلی و ابری توسعه دهد.

🟣لینک مقاله:
https://techcommunity.microsoft.com/blog/azurenetworkingblog/dns-best-practices-for-implementation-in-azure-landing-zones/4420567?utm_source=tldrdevops


👑 @DevOps_Labdon
🔵 عنوان مقاله
Is Documentation Like Pineapple on Pizza? (4 minute read)

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

🟣لینک مقاله:
https://techleadtoolkit.substack.com/p/is-documentation-like-pineapple-on?utm_source=tldrdevops


👑 @DevOps_Labdon
1👍1
🔵 عنوان مقاله
Governance as an Enabler: Scaling Safely and Confidently (8 minute read)

🟢 خلاصه مقاله:
مهندسی پلتفرم با تبدیل حکمرانی به یک ابزار خودکار به وسیله سیاست‌های قابل کدگذاری، کنترل دسترسی بر پایه نقش در سطح پلتفرم، گزارش‌های حسابرسی، تشخیص انحرافات و کنترل‌های چرخه حیات منابع، این امکان را فراهم می‌آورد که حکمرانی به طور مستقیم درون پلتفرم تعبیه شود. این کار اطمینان از تطابق، یکپارچگی و کنترل هزینه‌ها را همزمان با حفظ استقلال و سرعت تیم‌ها ممکن می‌سازد. Pulumi با دارا بودن ویژگی‌های حکمرانی تعبیه شده مانند CrossGuard، کنترل دسترسی بر پایه نقش، گزارش‌های حسابرسی و استک‌های TTL، به این تبدیل کمک می‌کند. این ویژگی‌ها به کسب‌وکارها اجازه می‌دهند تا با اعمال سیاست‌های حکمرانی به صورت خودکار، به طور مؤثرتری مدیریت کنند، بدون آنکه بر خودمختاری و کارایی تیم‌های فنی تأثیر منفی بگذارد.

🟣لینک مقاله:
https://www.pulumi.com/blog/platform-engineering-pillars-7/?utm_source=tldrdevops


👑 @DevOps_Labdon
🔵 عنوان مقاله
Announcing KServe v0.15: Advancing Generative AI Model Serving (4 minute read)

🟢 خلاصه مقاله:
نسخه ۰.۱۵ KServe به تازگی منتشر شده است و پیشرفت‌های قابل توجهی در زمینه پیش‌بینی و ارائه مدل‌های هوش مصنوعی تولیدی ارائه می‌دهد. این نسخه جدید، پشتیبانی بهبود یافته‌ای برای مدل‌های بزرگ زبانی ارائه می‌دهد و ویژگی‌های جدیدی مانند مکانیزم‌های کش کردن مدل و KV را معرفی می‌کند. با این به روزرسانی‌ها، KServe به کاربران امکان می‌دهد تا با سرعت و کارایی بیشتری به استفاده و اجرای مدل‌های AI بپردازند، که برای پردازش‌های سنگین و نیازمند منابع زیاد، مانند مدل‌های پیچیده زبانی، ضروری است. این ویژگی‌ها به طور خاص به بهینه‌سازی عملکرد و کاهش زمان بارگذاری مدل‌ها کمک می‌کنند، در نتیجه امکان پذیرش گسترده‌تر مدل‌های AI را فراهم می‌آورد.

🟣لینک مقاله:
https://www.cncf.io/blog/2025/06/18/announcing-kserve-v0-15-advancing-generative-ai-model-serving/?utm_source=tldrdevops


👑 @DevOps_Labdon
🔵 عنوان مقاله
AWS WAF reduces web application security configuration steps and provides expert-level protection (2 minute read)

🟢 خلاصه مقاله:
شرکت AWS، کنسول جدید WAF خود را راه‌اندازی کرده است که مراحل پیکربندی را تا ۸۰٪ کاهش داده و به کاربران اجازه می‌دهد تا به سرعت از محافظت‌های امنیتی طراحی‌شده توسط متخصصان استفاده کنند که به طور خاص برای انواع مختلف برنامه‌های کاربردی طراحی شده‌اند. این کنسول جدید، استفاده از WAF را برای کاربران آسان‌تر می‌کند و امکان اعمال سریع و ساده‌ تنظیمات امنیتی برای محافظت از برنامه‌ها در برابر تهدیدات امنیتی را فراهم می‌آورد. این تغییر به افزایش امنیت برنامه‌های کاربردی کمک کرده و منجر به کاهش زمان و تلاش لازم برای پیکربندی و نگهداری محافظت‌های امنیتی می‌گردد.

🟣لینک مقاله:
https://aws.amazon.com/about-aws/whats-new/2025/06/aws-waf-web-application-security-configuration-steps-expert-level-protection/?utm_source=tldrdevops


👑 @DevOps_Labdon
🔵 عنوان مقاله
New: Use Terraform Modules in Pulumi Without Conversion (7 minute read)

🟢 خلاصه مقاله:
شرکت Pulumi از پشتیبانی مستقیم از اجرای ماژول‌های Terraform خبر داد که هدف از آن تسهیل انتقال کاربران با وابستگی‌های پیچیده به ماژول به Pulumi است. با این ویژگی جدید، امکان گنجاندن ماژول‌های موجود Terraform در پروژه‌های Pulumi فراهم می‌شود، با رویکرد سه مرحله‌ای: شروع پروژه‌های جدید در Pulumi، انتقال تدریجی ماژول‌ها و انتقال کامل زمانی که آماده شده‌اند. این امکان به کاربران اجازه می‌دهد تا با استفاده از زیرساخت‌های کدی موجود و با امکان استفاده از مزایای برنامه‌نویسی و پلتفرم‌‌های مدرن‌تر که Pulumi ارائه می‌دهد، به روزرسانی و تکامل دهند. این اقدام از طرف Pulumi گام بزرگی در ادغام قابلیت‌های Terraform و ارائه یک ابزار مدیریت زیرساخت قوی‌تر و انعطاف‌پذیرتر است.

🟣لینک مقاله:
https://www.pulumi.com/blog/announcing-direct-tf-modules/?utm_source=tldrdevops


👑 @DevOps_Labdon