Forwarded from Linuxor ?
آمدی جانم به قربانت ولی حالا چرا؟ / بیوفا حالا که من افتادهام از پا، چرا؟
فرمت png بعد 22 سال آپدیت داده و از این به بعد تصاویر متحرک هم پشتیبانی میکنه؛ قابلیتی که اگه همون موقع که باید اضافه میشد شاید امروز کسی فایل gif رو نمیشناخت...
این آپدیت در حالیه که webp هم بسیار قوی ظاهر شده و انگار این اپدیت از سر اجبار به png برای بقاش تحمیل شده.
@Linuxor
فرمت png بعد 22 سال آپدیت داده و از این به بعد تصاویر متحرک هم پشتیبانی میکنه؛ قابلیتی که اگه همون موقع که باید اضافه میشد شاید امروز کسی فایل gif رو نمیشناخت...
این آپدیت در حالیه که webp هم بسیار قوی ظاهر شده و انگار این اپدیت از سر اجبار به png برای بقاش تحمیل شده.
@Linuxor
Forwarded from DevTwitter | توییت برنامه نویسی
افزودن به سبد خرید» کجای پروژه باید انجام بشه؟
فرانت یا بکاند؟ یا هر دو؟
این سوال ظاهراً ساده، ولی پشتش معماری، UX و حتی امنیته.
گزینه اول: همهچی سمت فرانت (مثلاً فقط توی localStorage)
خوبه چون:
خیلی سریع اجرا میشه
کاربر حس "لگ" نمیگیره
ترافیک سرور هم کمتره
بدیهاش:
موجودی واقعی محصول چک نمیشه
سبد خرید بین دستگاهها همگام نیست
قیمتها ممکنه outdated باشن
گزینه دوم: هر بار تغییر → درخواست به بکاند
خوبه چون:
همهچیز همیشه دقیق و روی دیتابیسه
امکان تحلیل و گزارشگیری بهتره
ولی:
تجربه کاربری کند میشه
هر کلیک، یه درخواست جدید!
راه حل حرفهای: ترکیب جفتش با Optimistic UI
- کاربر روی "Add to cart" کلیک میکنه
- آیتم فوراً توی UI نشون داده میشه (خوشبینانه)
- همزمان، یه درخواست async به بکاند میره
- اگر خطا بود (مثلاً موجودی تموم شد)، تغییر UI برمیگرده
بکاند هم سبد رو توی دیتابیس ذخیره میکنه، موجودی و قیمت رو چک میکنه، و آماده تبدیل به سفارش نهایی هست
@DevTwitter | <Abolfazl Javadinia/>
فرانت یا بکاند؟ یا هر دو؟
این سوال ظاهراً ساده، ولی پشتش معماری، UX و حتی امنیته.
گزینه اول: همهچی سمت فرانت (مثلاً فقط توی localStorage)
خوبه چون:
خیلی سریع اجرا میشه
کاربر حس "لگ" نمیگیره
ترافیک سرور هم کمتره
بدیهاش:
موجودی واقعی محصول چک نمیشه
سبد خرید بین دستگاهها همگام نیست
قیمتها ممکنه outdated باشن
گزینه دوم: هر بار تغییر → درخواست به بکاند
خوبه چون:
همهچیز همیشه دقیق و روی دیتابیسه
امکان تحلیل و گزارشگیری بهتره
ولی:
تجربه کاربری کند میشه
هر کلیک، یه درخواست جدید!
راه حل حرفهای: ترکیب جفتش با Optimistic UI
- کاربر روی "Add to cart" کلیک میکنه
- آیتم فوراً توی UI نشون داده میشه (خوشبینانه)
- همزمان، یه درخواست async به بکاند میره
- اگر خطا بود (مثلاً موجودی تموم شد)، تغییر UI برمیگرده
بکاند هم سبد رو توی دیتابیس ذخیره میکنه، موجودی و قیمت رو چک میکنه، و آماده تبدیل به سفارش نهایی هست
@DevTwitter | <Abolfazl Javadinia/>
Forwarded from DevTwitter | توییت برنامه نویسی
نسخه 7 ویت (Vite) منتشر شد و چیزی که جالب بود اینه که مستندات به زبان فارسی رسماً اضافه شده:
https://fa.vite.dev
جزییات بیشتر:
https://vite.dev/blog/announcing-vite7.html
- دم بچههای پر تلاش جامعهٔ فارسیزبان گرم
@DevTwitter | <Ali Nazari/>
https://fa.vite.dev
جزییات بیشتر:
https://vite.dev/blog/announcing-vite7.html
- دم بچههای پر تلاش جامعهٔ فارسیزبان گرم
@DevTwitter | <Ali Nazari/>
Forwarded from Armon technical logs (armon Taheri)
مشارکتم روی یکی از پروژه هایی که در شرکت استفاده میکردم
https://github.com/030/n3dr/pull/716
https://github.com/030/n3dr/pull/714
https://github.com/030/n3dr/pull/716
https://github.com/030/n3dr/pull/714
GitHub
doc: add new supported formats and delete unsupported rows README.md by ArmanTaheriGhaleTaki · Pull Request #716 · 030/n3dr
What type of PR is this?
/kind documentation
What this PR does / why we need it:
This PR updates the README.md table to reflect the current repository format support in Nexus Repository Manager 3.8...
/kind documentation
What this PR does / why we need it:
This PR updates the README.md table to reflect the current repository format support in Nexus Repository Manager 3.8...
Forwarded from Armon technical logs (armon Taheri)
مشارکتم روی یکی از پروژه هایی که در شرکت استفاده میکردم
https://github.com/030/n3dr/pull/716
https://github.com/030/n3dr/pull/714
https://github.com/030/n3dr/pull/716
https://github.com/030/n3dr/pull/714
Forwarded from DevTwitter | توییت برنامه نویسی
میتونید سر وپلایزر رو کلاه بزاید و زبان دلخواهتون رو اضافه کنید داخلش
مثلا سایت با جنگو هست ولی شما میتونید اضافه کنید که بزنه سایت وردپرسی هست
https://github.com/mohammadhasananisi/display-fake-technology-of-site
@DevTwitter | <Mohammad Hasan/>
مثلا سایت با جنگو هست ولی شما میتونید اضافه کنید که بزنه سایت وردپرسی هست
https://github.com/mohammadhasananisi/display-fake-technology-of-site
@DevTwitter | <Mohammad Hasan/>
Forwarded from محتوای آزاد سهراب
بعد از دراماهایی که حول محور فایل سیستم جدید bcachefs صورت گرفته بود با لینوس توروالدز، در کرنل ۶.۱۷، پشتیبانی از اون رو حذف کرده.
https://news.itsfoss.com/linux-kernel-bcachefs-drop/
@SohrabContents
https://news.itsfoss.com/linux-kernel-bcachefs-drop/
@SohrabContents
It's FOSS
New Linux Kernel Drama: Torvalds Drops Bcachefs Support After Clash
Things have taken a bad turn for Bcachefs as Linux supremo Linus Torvalds is not happy with their objections.
Forwarded from Curious Geek ⚡️
معامله اوپن سورس: بکدور بده کانفیگ میدم
#ایرانی
https://github.com/NaMiraNet/namira-core/blob/779620a12c8e9c1df05977cd03434a5ee548dbe2/internal/api/handler.go#L59
🆔 @Hiradsajde
#ایرانی
https://github.com/NaMiraNet/namira-core/blob/779620a12c8e9c1df05977cd03434a5ee548dbe2/internal/api/handler.go#L59
🆔 @Hiradsajde
GitHub
namira-core/internal/api/handler.go at 779620a12c8e9c1df05977cd03434a5ee548dbe2 · NamiraNet/namira-core
Contribute to NamiraNet/namira-core development by creating an account on GitHub.
Forwarded from Gopher Academy
🔵 عنوان مقاله
How to Store Go Pointers from (Go) Assembly
🟢 خلاصه مقاله:
آسمبلر زبان برنامهنویسی Go بخش عمیق اما کمتر شناخته شدهای از ابزارهای Go است که به برنامهنویسان امکان میدهد تا به طور مستقیم با محیط اجرایی Go ارتباط برقرار کرده و برنامههای سطح پایین بنویسند. استفاده از این آسمبلر ممکن است برای اکثر توسعهدهندگان Go ضروری نباشد، اما داشتن دانش و منابع در این زمینه میتواند بسیار مفید باشد. این امکانات به برنامهنویسان اجازه میدهد تا تواناییهای Go را به حداکثر برسانند و عملکرد برنامههای خود را بهینه کنند.
🟣لینک مقاله:
https://golangweekly.com/link/170930/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
How to Store Go Pointers from (Go) Assembly
🟢 خلاصه مقاله:
آسمبلر زبان برنامهنویسی Go بخش عمیق اما کمتر شناخته شدهای از ابزارهای Go است که به برنامهنویسان امکان میدهد تا به طور مستقیم با محیط اجرایی Go ارتباط برقرار کرده و برنامههای سطح پایین بنویسند. استفاده از این آسمبلر ممکن است برای اکثر توسعهدهندگان Go ضروری نباشد، اما داشتن دانش و منابع در این زمینه میتواند بسیار مفید باشد. این امکانات به برنامهنویسان اجازه میدهد تا تواناییهای Go را به حداکثر برسانند و عملکرد برنامههای خود را بهینه کنند.
🟣لینک مقاله:
https://golangweekly.com/link/170930/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
mazzo.li
How to store Go pointers from assembly
The standard Go toolchain comes with an assembler out of the box. Said assembler is highly idiosyncratic, using syntax inherited from Plan 9 and choosing its own names for platform-specific instructions and registers. But it's great to have it readily available.…
Forwarded from کانال مهرداد لینوکس
🎯 اثر انگشت در Linux Mint 22.2 (Zara) با Fingwit !
Fingwit یک رابط کاربری گرافیکی (GUI) ساده و کاربرپسند برای مدیریت اثر انگشت در لینوکسه. با استفاده از این برنامه میتوانید:
✍️ اثر انگشتتان را ثبت کنید
🧹آنها را مدیریت و حذف کنید
✅تعیین کنید که اثر انگشت برای ورود (login)، اعتبارسنجی sudo، و سایر عملیات PAM استفاده بشه
نکات فنی:
✅ پشتیبانی از libfprint2
ادغام با PAM (Pluggable Authentication Modules)
کاربرمحور و مینیمال
آیا دستگاه شما پشتیبانی میکند؟
برای استفاده از Fingwit، دستگاه شما باید یک حسگر اثر انگشت داشته باشد که توسط libfprint پشتیبانی شود. برای بررسی این موضوع:
در مخزن Github پروژه یک فایل AppImage است که میتوانید دانلود کنید و همین حالا استفاده کنید
@MehrdadLinuxchannel
#linux #لینوکس
Fingwit یک رابط کاربری گرافیکی (GUI) ساده و کاربرپسند برای مدیریت اثر انگشت در لینوکسه. با استفاده از این برنامه میتوانید:
✍️ اثر انگشتتان را ثبت کنید
🧹آنها را مدیریت و حذف کنید
✅تعیین کنید که اثر انگشت برای ورود (login)، اعتبارسنجی sudo، و سایر عملیات PAM استفاده بشه
📦 Fingwit به صورت پیشفرض در Linux Mint 22.2 موجود خواهد بود 🤩 🎉 و از libfprint2 (کتابخانهی اصلی لینوکس برای اثر انگشت) پشتیبانی میکند.
نکات فنی:
✅ پشتیبانی از libfprint2
ادغام با PAM (Pluggable Authentication Modules)
کاربرمحور و مینیمال
آیا دستگاه شما پشتیبانی میکند؟
برای استفاده از Fingwit، دستگاه شما باید یک حسگر اثر انگشت داشته باشد که توسط libfprint پشتیبانی شود. برای بررسی این موضوع:
fprintd-enroll
در مخزن Github پروژه یک فایل AppImage است که میتوانید دانلود کنید و همین حالا استفاده کنید
@MehrdadLinuxchannel
#linux #لینوکس
Forwarded from Curious Geek ⚡️
معامله اوپن سورس: بکدور بده کانفیگ میدم
ناگفته ها: CVE-2024-31449 عاملی برای دسترسی کامل به سرور میشه.
اوپن سورس نبودن این بخش نمیتونه تصادفی باشه.
⚠️ به هیچ عنوان این پروژه مشکوک رو سلف هاست نکنید، ممکنه در نت ملی به عنوان پوشش قربانی حملات APT بشید.
❗️سلف هاست چنین پروژه ای میتونه اتهام جاسوسی رو براتون در پی داشته باشه.
https://github.com/NaMiraNet/namira-core/blob/779620a12c8e9c1df05977cd03434a5ee548dbe2/internal/api/handler.go#L59
🆔 @Hiradsajde
ناگفته ها: CVE-2024-31449 عاملی برای دسترسی کامل به سرور میشه.
اوپن سورس نبودن این بخش نمیتونه تصادفی باشه.
⚠️ به هیچ عنوان این پروژه مشکوک رو سلف هاست نکنید، ممکنه در نت ملی به عنوان پوشش قربانی حملات APT بشید.
❗️سلف هاست چنین پروژه ای میتونه اتهام جاسوسی رو براتون در پی داشته باشه.
https://github.com/NaMiraNet/namira-core/blob/779620a12c8e9c1df05977cd03434a5ee548dbe2/internal/api/handler.go#L59
🆔 @Hiradsajde
GitHub
namira-core/internal/api/handler.go at 779620a12c8e9c1df05977cd03434a5ee548dbe2 · NamiraNet/namira-core
Contribute to NamiraNet/namira-core development by creating an account on GitHub.
Forwarded from code2 - تکنولوژی و فناوری
This media is not supported in your browser
VIEW IN TELEGRAM
وقتی شرکت کارت تموم شده لپتاپ و sleep میکنی و میری خونه در کیف و باز میکنی میبینی مثل بخاری از کیف گرما میاد!
#مصائب_یک_برنامه_نویس
#درد_مشترک
@code2_ir
#مصائب_یک_برنامه_نویس
#درد_مشترک
@code2_ir
Forwarded from DevTwitter | توییت برنامه نویسی
This media is not supported in your browser
VIEW IN TELEGRAM
اپلیکیشن تحت وب لیست کارها (To-Do List WebApp) V.2.0
نسخه نهایی
امکانات:
قابلیت ویرایش تسکها
- ذخیرهسازی خودکار تسکها در Local Storage
- طراحی ساده، زیبا و واکنشگرا
- دکمه تغییر تم روشن/تاریک به همراه دکمه سوییچ
- شمارنده تسکهای انجامشده و کل
- فیلتر کردن تسکها (همه، انجامشده، انجامنشده)
- نوار جستجو برای یافتن تسکهای به خصوص
- قابلیت Progress Bar برای نمایش میزان درصد پیشرفت انجام تسکها
مخزن گیتهاب:
https://github.com/KEANU2003/To-Do-List-WebApp
@DevTwitter | <Kian Mahmoudi/>
نسخه نهایی
امکانات:
قابلیت ویرایش تسکها
- ذخیرهسازی خودکار تسکها در Local Storage
- طراحی ساده، زیبا و واکنشگرا
- دکمه تغییر تم روشن/تاریک به همراه دکمه سوییچ
- شمارنده تسکهای انجامشده و کل
- فیلتر کردن تسکها (همه، انجامشده، انجامنشده)
- نوار جستجو برای یافتن تسکهای به خصوص
- قابلیت Progress Bar برای نمایش میزان درصد پیشرفت انجام تسکها
مخزن گیتهاب:
https://github.com/KEANU2003/To-Do-List-WebApp
@DevTwitter | <Kian Mahmoudi/>
Forwarded from Agora (Alireza Azadi)
Hamid_Kashfi_Sparrows_2021.pdf
5.2 MB
The Curious Case of Predatory Sparrow Reconstructing the Attack from a 4th party collector’s point of view
رویداد ۲۴ هم یک خلاصه از این مقاله رو به فارسی آماده و منتشر کرده که اگر بخوایید:
فرآیند هک سامانه سوخت ایران چگونه انجام شده است؟
رویداد ۲۴ هم یک خلاصه از این مقاله رو به فارسی آماده و منتشر کرده که اگر بخوایید:
فرآیند هک سامانه سوخت ایران چگونه انجام شده است؟
Forwarded from linuxtnt(linux tips and tricks) (hosein seilany https://seilany.ir/)
🔰درامد 300 میلیون دلاری کانونیکال
کانونیکال، خالق اوبونتو، در سال گذشته نزدیک به ۳۰۰ میلیون دلار درآمد داشته است
🔹یک دهه پیش، کانونیکال (شرکت پشتیبان لینوکس اوبونتو) با حدود ۳۳۷ کارمند، درآمدی معادل ۸۱ میلیون دلار (در سال ۲۰۱۴) داشت. در آن زمان، تلاشهای آنها برای توسعه دسکتاپ لینوکس هنوز در حال پیشرفت بود، چه در زمینه پیش نصب روی دستگاههای تولیدکنندگان (OEM/ODM)، چه در محیطهای سازمانی و چه در فضای پردرآمد سرورها و ابری.
اما طبق گزارش سالانه ۲۰۲۴ که اخیراً توسط کانونیکال منتشر شده، این شرکت اکنون به درآمدی نزدیک به ۳۰۰ میلیون دلار و تعداد کارکنانی بیش از ۱۱۰۰ نفر رسیده است. این گزارش، بینش جالبی از سلامت مالی و رشد کلی این شرکت ارائه میدهد:
درآمد ۲۰۲۴: ۲۹۲ میلیون دلار (افزایش چشمگیر از ۲۵۱ میلیون دلار در سال ۲۰۲۳)
درآمد ۲۰۲۲: ۲۰۵ میلیون دلار
حاشیه سود ناخالص: ۸۳٪ (افزایش از ۸۰٪ در سال قبل)
🔹کانونیکال در سال ۲۰۲۴ بیش از ۱۰۰ کارمند جدید استخدام کرد و میانگین تعداد کارکنانش از ۱,۰۳۴ نفر به ۱,۱۷۵ نفر رسید. در سال ۲۰۲۲، این شرکت بهطور میانگین ۸۵۸ کارمند داشت.
🔹 سودآوری در سال ۲۰۲۴
سود ناخالص: ۲۵۸ میلیون دلار (از ۲۹۱ میلیون دلار درآمد)
سود عملیاتی: ۱۵.۵ میلیون دلار (افزایش از ۱۱.۲ میلیون دلار در سال ۲۰۲۳)
🔹جالب است بدانید که در سالهای اولیه، کانونیکال معمولاً با ضرر مالی مواجه بود و برای ادامه فعالیت به حمایتهای مالی «مارک شاتلورث» (بنیانگذار اوبونتو) وابسته بود. اما امروز، این شرکت به لطف رشد اوبونتو، سالهاست که روی پای خود ایستاده و عملکرد مالی پایداری دارد.
نویسنده: حسین سیلانی
اخبار و آموزش های بیشتر در کانال:
https://t.iss.one/linuxtnt
کانونیکال، خالق اوبونتو، در سال گذشته نزدیک به ۳۰۰ میلیون دلار درآمد داشته است
🔹یک دهه پیش، کانونیکال (شرکت پشتیبان لینوکس اوبونتو) با حدود ۳۳۷ کارمند، درآمدی معادل ۸۱ میلیون دلار (در سال ۲۰۱۴) داشت. در آن زمان، تلاشهای آنها برای توسعه دسکتاپ لینوکس هنوز در حال پیشرفت بود، چه در زمینه پیش نصب روی دستگاههای تولیدکنندگان (OEM/ODM)، چه در محیطهای سازمانی و چه در فضای پردرآمد سرورها و ابری.
اما طبق گزارش سالانه ۲۰۲۴ که اخیراً توسط کانونیکال منتشر شده، این شرکت اکنون به درآمدی نزدیک به ۳۰۰ میلیون دلار و تعداد کارکنانی بیش از ۱۱۰۰ نفر رسیده است. این گزارش، بینش جالبی از سلامت مالی و رشد کلی این شرکت ارائه میدهد:
درآمد ۲۰۲۴: ۲۹۲ میلیون دلار (افزایش چشمگیر از ۲۵۱ میلیون دلار در سال ۲۰۲۳)
درآمد ۲۰۲۲: ۲۰۵ میلیون دلار
حاشیه سود ناخالص: ۸۳٪ (افزایش از ۸۰٪ در سال قبل)
🔹کانونیکال در سال ۲۰۲۴ بیش از ۱۰۰ کارمند جدید استخدام کرد و میانگین تعداد کارکنانش از ۱,۰۳۴ نفر به ۱,۱۷۵ نفر رسید. در سال ۲۰۲۲، این شرکت بهطور میانگین ۸۵۸ کارمند داشت.
🔹 سودآوری در سال ۲۰۲۴
سود ناخالص: ۲۵۸ میلیون دلار (از ۲۹۱ میلیون دلار درآمد)
سود عملیاتی: ۱۵.۵ میلیون دلار (افزایش از ۱۱.۲ میلیون دلار در سال ۲۰۲۳)
🔹جالب است بدانید که در سالهای اولیه، کانونیکال معمولاً با ضرر مالی مواجه بود و برای ادامه فعالیت به حمایتهای مالی «مارک شاتلورث» (بنیانگذار اوبونتو) وابسته بود. اما امروز، این شرکت به لطف رشد اوبونتو، سالهاست که روی پای خود ایستاده و عملکرد مالی پایداری دارد.
نویسنده: حسین سیلانی
اخبار و آموزش های بیشتر در کانال:
https://t.iss.one/linuxtnt
Forwarded from DevTwitter | توییت برنامه نویسی
This media is not supported in your browser
VIEW IN TELEGRAM
گوگل اپلیکیشن هوش مصنوعی Doppl را برای پرو مجازی لباس معرفی کرد
گوگل اپلیکیشن جدیدی به نام Doppl را معرفی کرده است که کاربران به کمک آن میتوانند لباسهای مختلف را مجازی و با استفاده از فناوری هوش مصنوعی روی بدن خود مشاهده و پرو کنند.
نحوه عملکرد Doppl به این صورت است که کاربر ابتدا عکس تمامقد از خودش آپلود میکند. سپس میتواند تصاویری از لباسها، چه از فروشگاههای اینترنتی، شبکههای اجتماعی، یا حتی لباس تن دوستانش را انتخاب و روی نسخه مجازی خود امتحان کند. پس از انتخاب لباس، اپ تصویری میسازد که نشان میدهد لباس موردنظر بر تن کاربر چطور است. کاربران حتی میتوانند ویدیویی مبتنیبر هوش مصنوعی از خود با لباس انتخابی بسازند.
این اپ آزمایشی هماکنون برای سیستمعاملهای iOS و Android و فقط در ایالات متحده در دسترس است.
@DevTwitter | <Digiato/>
گوگل اپلیکیشن جدیدی به نام Doppl را معرفی کرده است که کاربران به کمک آن میتوانند لباسهای مختلف را مجازی و با استفاده از فناوری هوش مصنوعی روی بدن خود مشاهده و پرو کنند.
نحوه عملکرد Doppl به این صورت است که کاربر ابتدا عکس تمامقد از خودش آپلود میکند. سپس میتواند تصاویری از لباسها، چه از فروشگاههای اینترنتی، شبکههای اجتماعی، یا حتی لباس تن دوستانش را انتخاب و روی نسخه مجازی خود امتحان کند. پس از انتخاب لباس، اپ تصویری میسازد که نشان میدهد لباس موردنظر بر تن کاربر چطور است. کاربران حتی میتوانند ویدیویی مبتنیبر هوش مصنوعی از خود با لباس انتخابی بسازند.
این اپ آزمایشی هماکنون برای سیستمعاملهای iOS و Android و فقط در ایالات متحده در دسترس است.
@DevTwitter | <Digiato/>
Forwarded from IRCF | اینترنت آزاد برای همه
ادعا این است که «اینترنت وصل است» اما نه برای کار، نه برای زندگی!
کندی و اختلالهای مداوم، زمان و اعصاب مردم را نابود کرده؛
این وضعیت، فقط یک اختلال نیست، نقض سیستماتیک حقوق شهروندی است.
حق دسترسی آزاد به ارتباطات، مطالبهای لوکس نیست؛ حق اساسی و انسانی ماست.
© lotfi_maryam86
🔍 ircf.space
@ircfspace
کندی و اختلالهای مداوم، زمان و اعصاب مردم را نابود کرده؛
این وضعیت، فقط یک اختلال نیست، نقض سیستماتیک حقوق شهروندی است.
حق دسترسی آزاد به ارتباطات، مطالبهای لوکس نیست؛ حق اساسی و انسانی ماست.
© lotfi_maryam86
🔍 ircf.space
@ircfspace
Forwarded from Gopher Academy
🔴قابلیت Synthetic time for testing ویژگی های جدید گولنگ نسخه 1.25
⏱️ چی هست این Synthetic Time؟
قطعهای از کد که زمان واقعی (real-time) استفاده میکنه—مثلاً `time.Sleep(60*time.Second)`—در تست، باعث میشه نتایج:
* کند (شصت ثانیهای وسط تست منتظر شیم؟!)
* غیرقابل اعتماد (وابسته به scheduler واقعی و بار سیستم)
این ویژگی
---
🔧 نحوه استفاده با مثال
مثال تابع با تأخیر و timeout:
تست timeout بدون معطلی:
در این تست:
* تابع درون
*این clock از جنس مصنوعیه؛ بدون انتظار، بعد از بلاک شدن goroutine روی select، زمان مصنوعی ۶۰ ثانیه جلو میره و timeout فعال میشه—امتحان با سرعت و قابل اعتماد
---
⚙️ قابلیت
این متد اجازه میده تا:
1. کدی با goroutine اجرا بشه،
2. منتظر بشیم همه goroutineها بلاک بشن،
3. سپس دقیقاً بررسی انجام بشه،
4. و ادامهٔ تست.
مثل این مثال:
این تضمین میکنه که قبل از ادامه تست، همه goroutineها به نقطهٔ بلاک رسیده باشن
---
✅ جمعبندی & پیشنهاد
*این Go 1.25 با
* فقط کافیه تابع تست رو داخل
*این
* ویژگی در نسخه RC هست و باید ویژگی
➖➖➖➖➖➖➖➖
👑 @gopher_academy
⏱️ چی هست این Synthetic Time؟
قطعهای از کد که زمان واقعی (real-time) استفاده میکنه—مثلاً `time.Sleep(60*time.Second)`—در تست، باعث میشه نتایج:
* کند (شصت ثانیهای وسط تست منتظر شیم؟!)
* غیرقابل اعتماد (وابسته به scheduler واقعی و بار سیستم)
این ویژگی
testing/synctest این مشکل رو با فراهم کردن یک "زمان مصنوعی" حل میکنه—زمان فقط وقتی جلو میره که goroutineها بلاک بشن، و همه چی بلافاصله و به صورت دترمینیستیک اجرا میشه ---
🔧 نحوه استفاده با مثال
مثال تابع با تأخیر و timeout:
func Read(in chan int) (int, error) {
select {
case v := <-in:
return v, nil
case <-time.After(60 * time.Second):
return 0, fmt.Errorf("timeout")
}
}تست timeout بدون معطلی:
import "testing/synctest"
func TestReadTimeout(t *testing.T) {
synctest.Test(t, func(t *testing.T) {
ch := make(chan int)
_, err := Read(ch)
if err == nil {
t.Fatal("expected timeout, got nil")
}
})
}
در این تست:
* تابع درون
synctest.Test اجرا میشه.*این clock از جنس مصنوعیه؛ بدون انتظار، بعد از بلاک شدن goroutine روی select، زمان مصنوعی ۶۰ ثانیه جلو میره و timeout فعال میشه—امتحان با سرعت و قابل اعتماد
---
⚙️ قابلیت
synctest.Wait()این متد اجازه میده تا:
1. کدی با goroutine اجرا بشه،
2. منتظر بشیم همه goroutineها بلاک بشن،
3. سپس دقیقاً بررسی انجام بشه،
4. و ادامهٔ تست.
مثل این مثال:
func TestWait(t *testing.T) {
synctest.Test(t, func(t *testing.T) {
done := make(chan struct{})
go func() {
time.Sleep(time.Second)
close(done)
}()
synctest.Wait()
<-done
})
}این تضمین میکنه که قبل از ادامه تست، همه goroutineها به نقطهٔ بلاک رسیده باشن
---
✅ جمعبندی & پیشنهاد
*این Go 1.25 با
testing/synctest تست زمانمحور و همزمان را سریع، مطمئن و ساده میکند.* فقط کافیه تابع تست رو داخل
synctest.Test (یا Run) بنویسید.*این
Wait() هم برای سناریوهای چندgoroutine مفیده.* ویژگی در نسخه RC هست و باید ویژگی
GOEXPERIMENT=synctest رو هنگام اجرای go test فعال کنید➖➖➖➖➖➖➖➖
👑 @gopher_academy
Forwarded from محتوای آزاد سهراب
متأسفانه نشستم و دیس و دیسبک بین یک برنامه نویس طرفدار آزادی و همینطور هوش مصنوعی رو میبینم.
@SohrabContents
سلام chatgpt لطفاً این کد رو برای هرگونه مشکل امنیتی اسکن کن.
@SohrabContents