هوک جدید Next.js که میتونه چند لول UX اپ شمارو بهتر کنه.
اسمش useLinkStatus هست و میاد و وضعیت لودینگ کامپوننت Link والدش رو مشخص میکنه و اگر درحال لودینگ بود pending رو true بر میگردونه.
به این صورت دغدغه بزرگ لودینگ پیج ها حل میشه و متونیم به راحتی در UI به کاربر نمایشش بدیم.
لینک رفرنس:
https://nextjs.org/docs/app/api-reference/functions/use-link-status
@DevTwitter | <Farzad Vahdati/>
اسمش useLinkStatus هست و میاد و وضعیت لودینگ کامپوننت Link والدش رو مشخص میکنه و اگر درحال لودینگ بود pending رو true بر میگردونه.
به این صورت دغدغه بزرگ لودینگ پیج ها حل میشه و متونیم به راحتی در UI به کاربر نمایشش بدیم.
لینک رفرنس:
https://nextjs.org/docs/app/api-reference/functions/use-link-status
@DevTwitter | <Farzad Vahdati/>
👍51👎2🔥1
در سیستمهای توزیعشده همیشه یه نگرانی اساسی وجود داره:
اگر یکی از سرویسها بیصدا از کار بیفته، بقیه چطور متوجه میشن؟
اینجاست که Heartbeat Pattern وارد عمل میشه
یه سیگنال ساده و دورهای که تضمین میکنه سیستم بفهمه هر جزء هنوز زندهست یا نه.
کجا استفاده میشه؟
توی Load Balancerها برای تشخیص سرورهای سالم
توی Kubernetes (liveness و readiness probes)
توی دیتابیسهای توزیعشده مثل Cassandra یا MongoDB
من توی مقالهی جدیدم در Medium، این الگو رو توضیح دادم — از تعریف و کاربردها تا چالشها و یه نمونه پیادهسازی با Go.
متن کامل مقاله:
https://medium.com/@a.mousavi/understanding-the-heartbeat-pattern-in-distributed-systems-5d2264bbfda6
سورس کد کامل:
https://github.com/arash-mosavi/go-test-heartbeat-pattern
@DevTwitter | <Arash Mousavi/>
اگر یکی از سرویسها بیصدا از کار بیفته، بقیه چطور متوجه میشن؟
اینجاست که Heartbeat Pattern وارد عمل میشه
یه سیگنال ساده و دورهای که تضمین میکنه سیستم بفهمه هر جزء هنوز زندهست یا نه.
کجا استفاده میشه؟
توی Load Balancerها برای تشخیص سرورهای سالم
توی Kubernetes (liveness و readiness probes)
توی دیتابیسهای توزیعشده مثل Cassandra یا MongoDB
من توی مقالهی جدیدم در Medium، این الگو رو توضیح دادم — از تعریف و کاربردها تا چالشها و یه نمونه پیادهسازی با Go.
متن کامل مقاله:
https://medium.com/@a.mousavi/understanding-the-heartbeat-pattern-in-distributed-systems-5d2264bbfda6
سورس کد کامل:
https://github.com/arash-mosavi/go-test-heartbeat-pattern
@DevTwitter | <Arash Mousavi/>
👍20👎2🔥1
کامپایلرهای درجا (JIT Compilers) در JVM چگونه پرفورمنس برنامهها را بهبود میدهند؟
میدونیم که برنامههای نوشته شده با جاوا، ابتدا به بایتکد (bytecode) کامپایل میشن و JVM بایتکدها رو بهصورت مفسری اجرا میکنه. این فرآیند نسبت به این که کدهای جاوا مستقیم به زبان ماشین کامپایل و اجرا بشن کندتره اما وجود همین مکانیزمه که جاوا رو کراسپلتفرم میکنه.
برای حل این مساله، دو کامپایلر درجا به نامهای C1 و C2 در JVM وجود دارن. وظیفه این کامپایلرها بهطور خلاصه اینه که قسمتهایی از برنامه که بیشتر از میزان مشخصی اجرا میشن (اصطلاحا نقاط داغ) رو به زبان ماشین کامپایل میکنن تا اون قسمتها دیگه بهصورت مفسری اجرا نشن. کدهای ماشینی که این کامپایلرها تولید میکنن در محلی از حافظه به نام Code Cache ذخیره میشه.
واحد کامپایل برای کامپایلرهای درجا، متده. تعداد دفعاتی که یه متد اجرا میشه توسط JVM ذخیره میشه و وقتی این تعداد از میزان مشخصی بالاتر بره، کامپایلرهای درجا وارد عمل میشن.
نحوه عملکرد این دو کامپایلر بهطور خلاصه به این صورته:
۱- متد بهصورت پیشفرض، مفسری اجرا میشه.
۲- وقتی تعداد دفعات اجرای متد از مقدار خاصی بیشتر بشه، کامپایلر C1 اون متد رو به زبان ماشین کامپایل میکنه. همچنین C1 دستورهایی رو در متد کامپایل شده قرار میده تا اطلاعاتی رو درباره جزئیات عملکرد متد در طول اجرای برنامه جمعآوری کنن (پروفایلینگ). این اطلاعات بعدا توسط C2 استفاده میشن.
۳- اگر متد همچنان زیاد اجرا بشه یعنی واقعا متد پرکاربرد و اصطلاحا داغیه. اینجا C2 وارد عمل میشه و متد رو دوباره به کد ماشین کامپایل میکنه. اما این بار C2 از اطلاعاتی که از اجرای متد در طول برنامه جمعآوری شده (با استفاده از دستورایی که C1 به متد اضافه کرده بود) استفاده میکنه و با این اطلاعات میتونه بهینهترین و سریعترین کد ماشین ممکن رو تولید کنه.
پس ممکنه متدی که کم اجرا میشه هیچوقت به کد ماشین کامپایل نشه. یا متدی با C1 کامپایل بشه اما به اندازهای زیاد اجرا نشه که C2 کامپایلش کنه. این که دقیقا بعد از چندبار اجرای یه متد این دوتا کامپایلر وارد عمل بشن قابل تنظیمه اما مقادیر پیشفرضی که دارن احتمالا برای اکثر برنامهها مناسبه و نیازی به تغییرشون نیست.
@DevTwitter | <Mostafa Nasiri/>
میدونیم که برنامههای نوشته شده با جاوا، ابتدا به بایتکد (bytecode) کامپایل میشن و JVM بایتکدها رو بهصورت مفسری اجرا میکنه. این فرآیند نسبت به این که کدهای جاوا مستقیم به زبان ماشین کامپایل و اجرا بشن کندتره اما وجود همین مکانیزمه که جاوا رو کراسپلتفرم میکنه.
برای حل این مساله، دو کامپایلر درجا به نامهای C1 و C2 در JVM وجود دارن. وظیفه این کامپایلرها بهطور خلاصه اینه که قسمتهایی از برنامه که بیشتر از میزان مشخصی اجرا میشن (اصطلاحا نقاط داغ) رو به زبان ماشین کامپایل میکنن تا اون قسمتها دیگه بهصورت مفسری اجرا نشن. کدهای ماشینی که این کامپایلرها تولید میکنن در محلی از حافظه به نام Code Cache ذخیره میشه.
واحد کامپایل برای کامپایلرهای درجا، متده. تعداد دفعاتی که یه متد اجرا میشه توسط JVM ذخیره میشه و وقتی این تعداد از میزان مشخصی بالاتر بره، کامپایلرهای درجا وارد عمل میشن.
نحوه عملکرد این دو کامپایلر بهطور خلاصه به این صورته:
۱- متد بهصورت پیشفرض، مفسری اجرا میشه.
۲- وقتی تعداد دفعات اجرای متد از مقدار خاصی بیشتر بشه، کامپایلر C1 اون متد رو به زبان ماشین کامپایل میکنه. همچنین C1 دستورهایی رو در متد کامپایل شده قرار میده تا اطلاعاتی رو درباره جزئیات عملکرد متد در طول اجرای برنامه جمعآوری کنن (پروفایلینگ). این اطلاعات بعدا توسط C2 استفاده میشن.
۳- اگر متد همچنان زیاد اجرا بشه یعنی واقعا متد پرکاربرد و اصطلاحا داغیه. اینجا C2 وارد عمل میشه و متد رو دوباره به کد ماشین کامپایل میکنه. اما این بار C2 از اطلاعاتی که از اجرای متد در طول برنامه جمعآوری شده (با استفاده از دستورایی که C1 به متد اضافه کرده بود) استفاده میکنه و با این اطلاعات میتونه بهینهترین و سریعترین کد ماشین ممکن رو تولید کنه.
پس ممکنه متدی که کم اجرا میشه هیچوقت به کد ماشین کامپایل نشه. یا متدی با C1 کامپایل بشه اما به اندازهای زیاد اجرا نشه که C2 کامپایلش کنه. این که دقیقا بعد از چندبار اجرای یه متد این دوتا کامپایلر وارد عمل بشن قابل تنظیمه اما مقادیر پیشفرضی که دارن احتمالا برای اکثر برنامهها مناسبه و نیازی به تغییرشون نیست.
@DevTwitter | <Mostafa Nasiri/>
❤20🔥6👍3👎1
گیتهاب نسخه سه بعدی و قابل چاپ رابرداک رو برای چاپ توی پرینتر سه بعدی به صورت متن باز و رایگان گذاشته:
https://github.com/martinwoodward/octoprints
@DevTwitter | <Mohsen Shabanian/>
https://github.com/martinwoodward/octoprints
@DevTwitter | <Mohsen Shabanian/>
👍23❤5🔥1
Qwen dropped smaller (competitive) VLM - competitive to GPT-5 Mini
> 30B A3B MoE
> Reasoning and non-reasoning
> 256K context (can go up to 1M)
> Multilingual (32 languages)
https://huggingface.co/Qwen/Qwen3-VL-30B-A3B-Instruct
@DevTwitter | <Vaibhav (VB) Srivastav/>
> 30B A3B MoE
> Reasoning and non-reasoning
> 256K context (can go up to 1M)
> Multilingual (32 languages)
https://huggingface.co/Qwen/Qwen3-VL-30B-A3B-Instruct
@DevTwitter | <Vaibhav (VB) Srivastav/>
👍7🔥3
مبحث جذاب و پر کاربرد Accessor در لاراول
فرض کنید، قصد دارید یکسری از دیتا هارو قبل از اینکه به دست کاربر برسه، شامل تغییراتی بشه به عنوان مثال میخوایید عکس هارو لینک دار کنید، به راحتی میتونید اینکارو با accessor ها در مدل مربوطه انجام بدین
به شدت شبیه cast ها هستن ولی یک تفاوت جزئی اما مهم دارن، اونم اینه که از cast ها معمولا برای تغییر دیتا تایپ مورد نظر استفاده میشه
حالا چه مزیت هایی برای شما داره؟؟! اینکه دیگه نیاز نیست در بیزینیس لاجیک خودتون دیتا رو map و یا حتی transform کنید که باعث میشه کد بیس اصلی مرتب و تمیز تر باشه
نکته : accessor ها تا حدودی سنگین هستن، پس عملیات های پیچیده رو به هیچ عنوان در این متد ها قرار ندین
@DevTwitter | <Mojtaba Zaferani/>
فرض کنید، قصد دارید یکسری از دیتا هارو قبل از اینکه به دست کاربر برسه، شامل تغییراتی بشه به عنوان مثال میخوایید عکس هارو لینک دار کنید، به راحتی میتونید اینکارو با accessor ها در مدل مربوطه انجام بدین
به شدت شبیه cast ها هستن ولی یک تفاوت جزئی اما مهم دارن، اونم اینه که از cast ها معمولا برای تغییر دیتا تایپ مورد نظر استفاده میشه
حالا چه مزیت هایی برای شما داره؟؟! اینکه دیگه نیاز نیست در بیزینیس لاجیک خودتون دیتا رو map و یا حتی transform کنید که باعث میشه کد بیس اصلی مرتب و تمیز تر باشه
نکته : accessor ها تا حدودی سنگین هستن، پس عملیات های پیچیده رو به هیچ عنوان در این متد ها قرار ندین
@DevTwitter | <Mojtaba Zaferani/>
👍12👎5❤3🔥1
به تازگی یه پروژه ای رو دیدم به اسم node-hooker که سازندش اومده از هوک های wordpress الهام گرفته و یه چیزی شبیه به اونارو برای ران تایم node نوشته
استفاده ازش میتونه وابستگی بخش های مختلف رو کمتر کنه و این امکان رو بده که باهاش یه معماری پلاگین محور بتونیم پیاده کنیم
اگه علاقه مند بودین یه سری به این پروژه بزنین.
https://mamedul.github.io/node-hooker/
@DevTwitter | <Ali Nazari/>
استفاده ازش میتونه وابستگی بخش های مختلف رو کمتر کنه و این امکان رو بده که باهاش یه معماری پلاگین محور بتونیم پیاده کنیم
اگه علاقه مند بودین یه سری به این پروژه بزنین.
https://mamedul.github.io/node-hooker/
@DevTwitter | <Ali Nazari/>
👍15👎5❤3🔥1
کتابخونهٔ «hazm» آپدیت نمیشه و با نسخههای جدید پایتون و کتابخانههایی مثل pandas و langchain سازگار نیست.
اما کتابخونهٔ جدیدتری توسعه داده شده به نام «شِکَر». کتابخانهای مدرن، بهروز و هماهنگ با آخرین نسخههای پایتون برای پردازش متن فارسی.
https://github.com/amirivojdan/shekar
@DevTwitter | <Ali Moameri/>
اما کتابخونهٔ جدیدتری توسعه داده شده به نام «شِکَر». کتابخانهای مدرن، بهروز و هماهنگ با آخرین نسخههای پایتون برای پردازش متن فارسی.
https://github.com/amirivojdan/shekar
@DevTwitter | <Ali Moameri/>
❤53👎1🔥1
Angular 20 Project Structure — Clean, Scalable & Future-Ready
With Angular 20, structuring your project well is as important as writing clean code. A well-organized folder structure makes your app scalable, testable, and maintainable. Here’s a recommended layout for modern Angular apps:
Highlights in Angular 20
- app.config.ts instead of app.module.ts (module-less bootstrap)
- Standalone components as the default approach
- Signals & fine-grained reactivity support
- Better lazy-loading structure for features
Pro tip: Keep core for singletons and shared for reusables. Every feature should live in features/ for clean boundaries.
@DevTwitter | <Rania Chaeib/>
With Angular 20, structuring your project well is as important as writing clean code. A well-organized folder structure makes your app scalable, testable, and maintainable. Here’s a recommended layout for modern Angular apps:
Highlights in Angular 20
- app.config.ts instead of app.module.ts (module-less bootstrap)
- Standalone components as the default approach
- Signals & fine-grained reactivity support
- Better lazy-loading structure for features
Pro tip: Keep core for singletons and shared for reusables. Every feature should live in features/ for clean boundaries.
@DevTwitter | <Rania Chaeib/>
👍9🔥5👎1
داشتم با N8N کار میکردم که دیدم یه سری چیزا نداره. با کامیونیتی نود هاش آشنا شدم. دیدم بازم یه چیزی کمه. گفتم بزنیم چرا که نه!
این شد که احتمالا جامع ترین پکیج ایسنتا رو زدم.
https://github.com/Msameim181/n8n-nodes-instagram-integrations
https://npmjs.com/package/n8n-nodes-instagram-integrations
@DevTwitter | <Mohammad Mahdi Samei/>
این شد که احتمالا جامع ترین پکیج ایسنتا رو زدم.
https://github.com/Msameim181/n8n-nodes-instagram-integrations
https://npmjs.com/package/n8n-nodes-instagram-integrations
@DevTwitter | <Mohammad Mahdi Samei/>
👎32👍13❤6🔥1
مدت ها از notion استفاده کردم ولی حدود یک سال که کوچ کردم به obsidian
از خیلی جهت ها از notion بهتره امکاناتش خیلی بیشتر ، سریع تره و دردسر های تحریم نداره و افلاین هم کار میکنه
چون متن بازه پلاگین های خیلی زیادی داره و حتی خودتون هم میتونید براش بنویسید
https://github.com/obsidianmd
@DevTwitter | <white wolf/>
از خیلی جهت ها از notion بهتره امکاناتش خیلی بیشتر ، سریع تره و دردسر های تحریم نداره و افلاین هم کار میکنه
چون متن بازه پلاگین های خیلی زیادی داره و حتی خودتون هم میتونید براش بنویسید
https://github.com/obsidianmd
@DevTwitter | <white wolf/>
👍45❤10🔥5👎3
تقریبا ۹ ماه پیش یه پکیج فلاتر ساختم به اسم ParsValidator برای استفاده توی پروژه هام.
یه کتابخونه سبک و مفیده که یسری ابزار های باحال رو به پروژه هاتون اضافه میکنه و سورستون رو تمیز تر نگه میداره :)
علاوه بر کلی قابلیت های دیگه، امکاناتی مثل اعتبارسنجی کدملی و کدپستی، گرفتن محل صدور با کدملی و همچین ولیدیشن روی کارت بانکی و گرفتن آیکون بانک ها، اعتبارسنجی اپراتور های موبایل و ایکون هاشون رو هم داره. دیگه چی میخوایید؟
تازه کلی امکانات جدید هم تو راهه
حتما یه سر بزنید و اگه ازش خوشتون اومد:
بهش ستاره بدید و اگه دوست داشتید کانتریبیوت کنید
لینکها:
GitHub:
https://github.com/MohammadTaghipour/pars_validator
Pub:
https://pub.dev/packages/pars_validator
@DevTwitter | <Mohammad Taghipour/>
یه کتابخونه سبک و مفیده که یسری ابزار های باحال رو به پروژه هاتون اضافه میکنه و سورستون رو تمیز تر نگه میداره :)
علاوه بر کلی قابلیت های دیگه، امکاناتی مثل اعتبارسنجی کدملی و کدپستی، گرفتن محل صدور با کدملی و همچین ولیدیشن روی کارت بانکی و گرفتن آیکون بانک ها، اعتبارسنجی اپراتور های موبایل و ایکون هاشون رو هم داره. دیگه چی میخوایید؟
تازه کلی امکانات جدید هم تو راهه
حتما یه سر بزنید و اگه ازش خوشتون اومد:
بهش ستاره بدید و اگه دوست داشتید کانتریبیوت کنید
لینکها:
GitHub:
https://github.com/MohammadTaghipour/pars_validator
Pub:
https://pub.dev/packages/pars_validator
@DevTwitter | <Mohammad Taghipour/>
❤32👍4🔥1
ابزار Dock مثل یک نوار ابزار شیک برای دسکتاپه؛
چیزی شبیه به اون چیزی که توی macOS پایین صفحه میبینید.
ابزار Cairo-Dock یکی از قدیمیترین و پرامکاناتترین Dockها توی لینوکسه و نسخه 3.6 تازه منتشر شده
https://github.com/Cairo-Dock/cairo-dock-core
@DevTwitter | <MehrdadLinux/>
چیزی شبیه به اون چیزی که توی macOS پایین صفحه میبینید.
ابزار Cairo-Dock یکی از قدیمیترین و پرامکاناتترین Dockها توی لینوکسه و نسخه 3.6 تازه منتشر شده
https://github.com/Cairo-Dock/cairo-dock-core
@DevTwitter | <MehrdadLinux/>
👎26👍3🔥1
تا حالا به این فکر کردید که فرق بین کولیشن utf8mb4_0900_ai_ci و utf8mb4_bin دقیقا چیه؟ یا همینطور بقیه کولیشن ها؟
کولیشن utf8mb4_0900_ai_ci: کولیشن پیشفرض MySQL 8 برای utf8mb4.
معنی اسم:
0900 → بر اساس Unicode 9.0.0
ai → accent insensitive (تفاوت حروف با/بدون لهجه رو نادیده میگیره)
ci → case insensitive (تفاوت حروف بزرگ و کوچک رو نادیده میگیره)
یعنی:
'a' = 'A'
'é' = 'e'
پس برای سرچ و مقایسه، راحتتره چون نرمالسازی بیشتری میکنه.
کولیشن utf8mb4_bin: کولیشن باینری برای utf8mb4.
اینجا همهچیز دقیقا بایت به بایت مقایسه میشه.
یعنی case-sensitive و accent-sensitive:
'a' != 'A'
'é' != 'e'
معمولا برای جاهایی که شناسهها (ID، Token، UUID، Hash، آدرس والت و ...) ذخیره میشن استفاده میشه، چون اونجا نباید نرمالسازی بشه.
خلاصه:
کولیشن utf8mb4_0900_ai_ci: مناسب برای دادههای متنی کاربر (نام، توضیحات، محتوا) → جستجو راحتتر.
کولیشن utf8mb4_bin: مناسب برای دادههای حساس به حروف/بایت (شناسه، کلید، رمز، UUID، مقایسه دقیق).
یک قانون عملی:
متن قابل خواندن توسط کاربر → utf8mb4_0900_ai_ci
دادهی تکنیکال/یونیک → utf8mb4_bin
@DevTwitter | <Abbas Goudarzi/>
کولیشن utf8mb4_0900_ai_ci: کولیشن پیشفرض MySQL 8 برای utf8mb4.
معنی اسم:
0900 → بر اساس Unicode 9.0.0
ai → accent insensitive (تفاوت حروف با/بدون لهجه رو نادیده میگیره)
ci → case insensitive (تفاوت حروف بزرگ و کوچک رو نادیده میگیره)
یعنی:
'a' = 'A'
'é' = 'e'
پس برای سرچ و مقایسه، راحتتره چون نرمالسازی بیشتری میکنه.
کولیشن utf8mb4_bin: کولیشن باینری برای utf8mb4.
اینجا همهچیز دقیقا بایت به بایت مقایسه میشه.
یعنی case-sensitive و accent-sensitive:
'a' != 'A'
'é' != 'e'
معمولا برای جاهایی که شناسهها (ID، Token، UUID، Hash، آدرس والت و ...) ذخیره میشن استفاده میشه، چون اونجا نباید نرمالسازی بشه.
خلاصه:
کولیشن utf8mb4_0900_ai_ci: مناسب برای دادههای متنی کاربر (نام، توضیحات، محتوا) → جستجو راحتتر.
کولیشن utf8mb4_bin: مناسب برای دادههای حساس به حروف/بایت (شناسه، کلید، رمز، UUID، مقایسه دقیق).
یک قانون عملی:
متن قابل خواندن توسط کاربر → utf8mb4_0900_ai_ci
دادهی تکنیکال/یونیک → utf8mb4_bin
@DevTwitter | <Abbas Goudarzi/>
👍28❤4🔥3
#کدبوک
دانشگاه MIT یه کتاب رایگان داده بیرون دربارهی مبانی (Deep Learning) که پر از نکتهست
توش همه چی هست: از ریاضیات DL گرفته تا روشهای آموزش مدل، شبکههای CNN، شبکههای گرافی (GNN) و حتی ترنسفورمرها!
هم تئوری داره، هم کد، هم اسلاید — یعنی هر چی لازمه یه مهندس هوش مصنوعی واقعی شی.
لینک دانلود اینجاست:
https://udlbook.github.io/udlbook/
* همچنین فایل PDF این کتاب رو میتونید از کانال DevBooks که لینکش توی بیو هست دانلود کنید.
@DevTwitter | <Mohsen Rad/>
دانشگاه MIT یه کتاب رایگان داده بیرون دربارهی مبانی (Deep Learning) که پر از نکتهست
توش همه چی هست: از ریاضیات DL گرفته تا روشهای آموزش مدل، شبکههای CNN، شبکههای گرافی (GNN) و حتی ترنسفورمرها!
هم تئوری داره، هم کد، هم اسلاید — یعنی هر چی لازمه یه مهندس هوش مصنوعی واقعی شی.
لینک دانلود اینجاست:
https://udlbook.github.io/udlbook/
* همچنین فایل PDF این کتاب رو میتونید از کانال DevBooks که لینکش توی بیو هست دانلود کنید.
@DevTwitter | <Mohsen Rad/>
❤23🔥3👍2👎1
اگه فرانتدولوپرین باید وبسایتتونو روی نسخههای قبلی کروم تست کنین!
تا حالا پیش اومده که یه باگ فقط روی نسخه قدیمیتر کروم رخ بده و شما ساعتها وقتتونو صرف کنین تا یه نسخه قدیمی کروم پیدا کنید؟
بعد از سالها استفاده از nvm برای Node و gvm برای Go، یه سوال به ذهنم رسید: چرا ابزاری برای مدیریت نسخههای مختلف کروم وجود نداره؟
برای همین chvm رو ساختم!
چیه این chvm؟
یه CLI tool سبک و سریع که به شما امکان میده:
- نسخههای مختلف Chromium رو نصب و مدیریت کنید
- با یه دستور ساده بین نسخهها جابهجا بشید
- برای هر نسخه یه پروفایل جداگانه داشته باشید
- میتونید CORS رو برای توسعه غیرفعال کنید
نکات مهم:
- فعلا نسخههای 92 تا آخرین ورژن Chromium رو پشتیبانی میکنه
- همه چی تو ~/.chvm ذخیره میشه
- فعلا فقط روی macOS با ARM (Apple Silicon) کار میکنه، ولی ساپورت پلتفرمهای دیگه تو راهه!
پروژه open-source هست و هنوز unstable! اگه دوست داشتین روش کارکنین یا فیدبکی برای بهبودش داشتین خیلی خوشحال میشم کانتریبیوت کنید.
توضیحات نصب و استفاده تو ریپوی گیتهاب:
https://github.com/amirkabiri/chvm
@DevTwitter | <Amir Kabiri/>
تا حالا پیش اومده که یه باگ فقط روی نسخه قدیمیتر کروم رخ بده و شما ساعتها وقتتونو صرف کنین تا یه نسخه قدیمی کروم پیدا کنید؟
بعد از سالها استفاده از nvm برای Node و gvm برای Go، یه سوال به ذهنم رسید: چرا ابزاری برای مدیریت نسخههای مختلف کروم وجود نداره؟
برای همین chvm رو ساختم!
چیه این chvm؟
یه CLI tool سبک و سریع که به شما امکان میده:
- نسخههای مختلف Chromium رو نصب و مدیریت کنید
- با یه دستور ساده بین نسخهها جابهجا بشید
- برای هر نسخه یه پروفایل جداگانه داشته باشید
- میتونید CORS رو برای توسعه غیرفعال کنید
نکات مهم:
- فعلا نسخههای 92 تا آخرین ورژن Chromium رو پشتیبانی میکنه
- همه چی تو ~/.chvm ذخیره میشه
- فعلا فقط روی macOS با ARM (Apple Silicon) کار میکنه، ولی ساپورت پلتفرمهای دیگه تو راهه!
پروژه open-source هست و هنوز unstable! اگه دوست داشتین روش کارکنین یا فیدبکی برای بهبودش داشتین خیلی خوشحال میشم کانتریبیوت کنید.
توضیحات نصب و استفاده تو ریپوی گیتهاب:
https://github.com/amirkabiri/chvm
@DevTwitter | <Amir Kabiri/>
🔥47❤7👍3👎3
This media is not supported in your browser
VIEW IN TELEGRAM
گوگل دوباره داره برای دوره ۵ روزه AI Agents ثبت نام میکنه که از ۱۰ نوامبر شروع میشه. دوره قبلیش لینکش تو همین وب سایت هست که میتونید برید و همه مطالبش را استفاده کنید. ولی دوره جدید موضوعاتش خیلی خیلی جالبند. حتما ثبت نام کنید.
Link: https://rsvp.withgoogle.com/events/google-ai-agents-intensive_2025
@DevTwitter | <Mehdi Allahyari/>
Link: https://rsvp.withgoogle.com/events/google-ai-agents-intensive_2025
@DevTwitter | <Mehdi Allahyari/>
❤15👎5👍3
چند وقته درگیر این سایتم. تقریبا از صفر تا صد توسعه یه سیستم عامل و کرنل رو پروژه محور توضیح داده.
برا درک یه سری مفاهیم پیشنهاد میشه
https://wiki.osdev.org
@DevTwitter | <Behi/>
برا درک یه سری مفاهیم پیشنهاد میشه
https://wiki.osdev.org
@DevTwitter | <Behi/>
👍28🔥8❤5
میتونم بگم کامل ترین و بهترین دانلودر یوتوب برای اندروید رو پیدا کردم، کلی امکانات داره که خودتون کشف کنید لذت بخش تره
https://github.com/deniscerri/ytdlnis
@DevTwitter | <iman/>
https://github.com/deniscerri/ytdlnis
@DevTwitter | <iman/>
❤22🔥6