Dev Fuel – Telegram
Dev Fuel
144 subscribers
41 photos
12 videos
28 links
تو این چنل قراره در مورد تکنولوژی های مختلف برنامه نویسی ، خصوصا JS با هم کلی چیز یاد بگیریم.
(بیشتر حول محور بک اند).
Download Telegram
📦 مشکل فایل ext4.vhdx در ویندوز (وقتی داکر نصبه)

اگر در ویندوز از Docker Desktop استفاده می‌کنید ، احتمالاً در مسیر زیر یک فایل به نام ext4.vhdx دارید که چند گیگابایت جا گرفته:

C:\Users\<User>\AppData\Local\Docker\wsl\data\ext4.vhdx

(البته ممکنه نام فایل و آدرسش متفاوت باشه. با WinDirStat می‌تونید آدرس دقیق اش رو پیدا کنید.)

🔍 ext4.vhdx دقیقاً چیست؟

‏Docker Desktop روی ویندوز، کانتینرها را داخل WSL2 اجرا می‌کنه.
‏WSL2 هم برای ذخیره‌سازی فایل‌های لینوکسی خودش یک دیسک مجازی می‌سازه، و اون دیسک دقیقاً همین ext4.vhdx است.

پس این فایل شامل تمام موارد زیره:

ایمیج‌ها

کانتینرها

ولوم‌ها

سیستم‌فایل لینوکسی Docker

به همین دلیل حذفش باعث از بین رفتن کامل داکر می‌شه.

علت حجیم بودن این فایل چیه؟

‌‏WSL2‏ و Docker حجم فایل رو خودکار کم نمی‌کنند.
هر ایمیجی که دانلود می‌کنید و هر کانتینری که می‌سازید، کم‌کم این فایل بزرگ‌تر می‌شه.

✔️ چطور حجم ext4.vhdx را کم کنید؟
1) ابتدا WSL و Docker را خاموش کنید:
wsl --shutdown


2) سپس تمامی ایمیج‌ها، کانتینرهای بلااستفاده و کش‌ها را پاک کنید:

docker system prune -a
docker volume prune
docker builder prune



این مرحله معمولاً چند گیگابایت آزاد می‌کنه.

3) در نهایت خود فایل ext4.vhdx را بدون خطر فشرده کنید:

روی فایل راست‌کلیک کنید:

Properties

Advanced


گزینه Compress contents to save disk space را فعال کنید

این کار روی همه نسخه‌های ویندوز جواب می‌ده و معمولاً ۳۰ تا ۶۰٪ از حجم فایل را کم می‌کنه.

⚠️ نکات مهم

فایل را هرگز با WinRAR یا 7zip فشرده نکنید.
خود فایل ext4.vhdx را دستی حذف نکنید.
این دستور تمام کانتینر و ایمیج هایی که در حال اجرا نباشند رو حذف می‌کنه.

#docker
🔥2
از AI در پروژه هاتون استفاده می‌کنید؟
اگر بله ، در چه بخشی و از چه مدلی؟
اگر خیر ، چرا استفاده نمی‌کنید؟
Dev Fuel
از AI در پروژه هاتون استفاده می‌کنید؟ اگر بله ، در چه بخشی و از چه مدلی؟ اگر خیر ، چرا استفاده نمی‌کنید؟
یکی از بهترین بخش هایی که میتونید از AI استفاده کنید ، تست نویسه.
تست هایی که می‌نویسه فوق‌العاده است. هم سریعه و هم تمیز.
کافیه روت ها ( اگر e2e می‌نویسید) و ورودی و خروجی هاشون رو مشخص کنید و ازش بخواهید تست رو بنویسه.
من برای اکثر تسک ها از Claude استفاده می‌کنم.
هیچکدوم از مدل هایی که استفاده کردم به Claude نمی‌رسند.
👍2
This media is not supported in your browser
VIEW IN TELEGRAM
ساخت یک ربات مایع توسط یک تیم در کره جنوبی !
جالب بود 👌
👍1
جای همه بَرو بچ خالی
🤣7
Forwarded from My experiences
امروز میخوایم راجب یک موضوعی حرف بزنیم که اسمش رو شاید شنیده باشین ولی خب به ظاهر خیلی پیچیده میاد. CQRS

- خب میخوایم ببینیم چیشد که میخوایم راجبش حرف بزنیم ، از رو سرگرمی داشتم به این فکرمیکردم پلتفرمی مثل اینستاگرام وقتی یک فرد مشهور از خودش پستی رو منتشر میکنه ، میلیون ها نفر اون پست رو میبینن و لایک میکنن ، و همزمان هم اینستاگرام مقدار ویو و لایک و کامنت و ... رو بهتون نشون میده ، خب این چطور ممکنه ؟ شما چطور میتونی این حجم از دیتای عظیمو همزمان write کنی و بلافاصله بدون مشکل read کنی ، خب با چه منطقی اینستاگرام این رو هندل میکنه که این مشکل رو نداره ؟

- با یکم سوال و سرچ رسیدم به چیزی به اسم CQRS , مخفف Command query responsibility segregation ، بهمون میفهمونه که ما باید وظایف read , write رو جدا کنیم از همدیگه ، اما منظور این جداسازی چیه ؟ این چیزیه ک ما میخوایم بهش جواب بدیم.

- جوابش اینه که ما مدل های read , write از هم جدا باشن ، نه لزوما فیزیکی ، ممکنه از یک دیتابیس استفاده کنن ، ولی مدل ها و index ها و جزئیات دیگه ممکنه فرق کنن ، و بعضی مواقع کلا دیتابیس های جدا درنظر میگیریم ! یعنی شما دوتا مدل توی دوتا دیتاییس جداگونه برای خودتون دارین که این یک سری مزایا داره و یک سری معایب که راجبشون حرف میزنیم

- خب ما میتونیم تو سه سطح جداسازی انجام بدیم : ( mvp , mid-systems , enterprise-systems)
توی mvp ما میایم صرفا مدل هارو از هم دیگه جدا میکنیم ولی همچنان دیتابیس یکیه ، برای پروژه های کوچیک و نسخه های اولیه اپلیکیشنا بسیار مناسبه . توی mid-system میایم دیتابیسارو جدا میکنیم ، مثلا شما دیتابیسی ک میخوای توش عملیاتای write به خوبی و با پرفورمنس خوب انجام بشن رو postgres-sql درنظر میگیری و برای دیتابیسی که میخوای read رو با سرعت و بهینه انجام بدی ، از elasticSearch استفاده
میکنی( به عنوان دیتابیس عمومی نه )
توی enterprise-systems هر سرویس دیتابیس مربوط به خودشو داره که با Event ها باهم sync میشن.

- خب حالا اینهمه از مزایاش حرف زدیم که مشکلی رو ازمون حل میکنه ، ولی حالا میخوایم راجب معایبشم بگیم ، اونا چیا هستن ؟ اولین چیزی به ذهنتون میرسه اینه که سیستم بسیار پیچیده میشه ، مدل ها جدا میشن و لاجیک های خودشون رو دارن و sync کردن اونا باهم و همین باعث پیچیدگی بیشتر داخل سیستم میشه ، مشکل بعدی اینه که read model بلافاصله sync نیست ، چون زمان میبره که دیتابیسا باهم sync شن و ما بتونیم طبق انتظار read model بتونه بهمون response مورد نظرو بده ، مشکل خیلی چالش بر انگیزش debugging هست ، شما دیگه فقط یک state نداری که دیتاها داخلش جریان داشته باشن ، همونطور که گفتیم همه چیز جداس ، و شما برای دیباگ کردن باید چندین مسیر رو دنبال کنی و همین خودش هزینه های بسیار بالاییو به همراه داره

ختم کلام : اگه صرفا میخوای توی لاجیک ببینی cqrs چجوری کارمیکنه ، میتونی فقط مدل هارو جدا کنی ، از این بزرگتر رو حتما باید دلیل موجه براش داشته باشی وگرنه چیزی جز هزینه برات نداره
2
چرا برای تولید OTP نباید از Math.random() استفاده کنیم؟

بسیاری از سیستم‌ها برای تولید کدهای یک‌بارمصرف هنوز به Math.random() تکیه می‌کنن؛ درحالی‌که این تابع امنیت لازم برای تولید توکن های حساس رو نداره.

مشکلمون چیه؟
تابع Math.random() یک Pseudo Random Number Generator غیرکریپتوگرافیک هست. یعنی خروجی آن با دونستن seed یا الگوی تولید، قابل پیش‌بینیه. همین پیش‌بینی‌پذیری باعث می‌شود یک مهاجم با brute-force یا تحلیل خروجی‌ها بتونه OTP بعدی رو حدس بزنه.

در مقابل چی داریم؟
توابعی مثل crypto.randomInt() یا crypto.randomBytes() در Node.js از یک Cryptographically Secure PRNG استفاده میکنن.
این یعنی:
غیرقابل پیش‌بینی
دارای entropy کافی
مقاوم در برابر حملات آماری
مناسب برای توکن‌های امنیتی مثل OTP، لینک بازیابی، session secret و موارد دیگه.

@DevTwitter | <Amirali Allahverdi/>
2
ماجرای Body در متد DELETE

امروز سعی کردم با متد DELETE داده‌ای رو به سرور ارسال کنم،ولی چون داده ها زیاد شد تصمیم گرفتم بذارم در body. اما بعد متوجه شدم که Body اصلاً دریافت نمی‌شه!
وقتی متد رو تغییر دادم، مشکل حل شد.

برای اینکه ببینم داستان این که Body با DELETE اصلاً در دسترس نیست چیه، یه سرچ کردم.
متوجه شدم که استاندارد HTTP می‌گه DELETE می‌تواند body داشته باشد. اما در عمل، سرویس‌ها و کلاینت‌ها اصلاً محل نمی‌گذارند!

یعنی عملاً ۹۹٪ سرویس‌ها و فریم‌ورک‌ها Body داخل DELETE رو نادیده می‌گیرند و اصلاً پشتیبانی نمی‌کنن. به همین دلیل استاندارد صنعت اینه که DELETE هیچ‌وقت Body نداشته باشه.

در این باره، در RFC 2616 (HTTP/1.1) هم به این موضوع اشاره شده که برای درخواست‌ها، "متد DELETE می‌تواند بدنه (Body) داشته باشد"، اما عملاً هیچ الزام یا قاعده مشخصی برای استفاده از آن وجود نداره و بسیاری از سرویس‌ها آن را نادیده می‌گیرند.

در نتیجه، اگر داده‌ای باشه که بخواهید ارسال کنید، همیشه باید اون رو در URL قرار بدید. و اگر داده‌ها زیاد شدن، بهتره از متد POST استفاده کنید.
👍3
‏ ElysiaJs یک فریمورک بر پایه ران تایم Bun هست که سرعت فوق‌العاده ای داره!

طبق بنچمارک وب سایت techempower.com می‌تونه 2 میلیون و 454 هزار ریکویست در ثانیه رو هندل کنه و در رتبه 97 قرار داره.

این در حالیه که express با 113 هزار ریکویست در ثانیه در رتبه 359 ام قرار داره!

داکیومنت خیلی تمیزی هم داره. پیشنهاد می‌کنم حتما بهش سر بزنید :
https://elysiajs.com/
🔥4
یک بخش Playground هم داره که با تمرین های جالب یاد میده چطور ازش استفاده کنی.

سرگرم کننده است و میشه ازش کلی چیز یاد گرفت 👌
🆒2
نصف شبی هوش مصنوعی روزم رو ساخت!
داشتم روی یک فایلی کار می‌کردم و دیدم یکم کار های تکراری زیاد داره گفتم بدمش به هوش مصنوعی کار رو در میاره.

بعد از کلی فکر کردن آخرش گفت نتوانستم تغییرات لازم رو اعمال و کنم و delete ! زد کل فایل رو حذف کرد :/

متأسفانه فایل رو هم تازه ساخته بودم و track نمیشد. کلی هم روش کار کرده بودم 🤦‍♂

مشتی کد نتونستی بزنی زورت به حذف کردنش رسید؟
😁4👎1
به روایت تصویر 😂
🤯1🤣1
پورت برنامه سرور رو گذاشته بودم روی 6000
و از کلاینت هر چقدر سعی میکردم بهش request بزنم دیدم نمیشه!
خطای کنسول رو چک کردم با این رو به رو شدم : net::ERR_UNSAFE_PORT

متوجه شدم که کروم بعضی از پورت ها رو ناامن میدونه و اونا رو بسته!
اینجا لیستی از پورت هایی که توسط کروم ناامن تشخیص داده میشن وجود داره :

https://chromium.googlesource.com/chromium/src.git/+/refs/heads/main/net/base/port_util.cc
👍2🆒1
Forwarded from محمدرضا
جالب بود
AI:
مثلاً پورت ۶۰۰۰ (X11) روی لینوکس اجازه می‌ده یه برنامه به نمایشگر کاربر دسترسی پیدا کنه! اگه یه سایت بتونه بهش وصل بشه، می‌تونه اسکرین‌شات بگیره یا حتی کیبورد رو کنترل کنه (در نسخه‌های قدیمی X11).
🤯1
Forwarded from Linuxor ?
یه آسیب پذیری فوق العاده بحرانی توی فریم ورک ری‌اکت پیدا شده که به مهاجم دسترسی اجرای کد از راه دور رو می‌ده!


نمره CVSS این آسیب پذیری 10/10 یعنی بالا ترین درجه خطر رو داره، توصیه شده فورا ری‌اکت رو آپدیت کنید.

پکیج‌هایی که آلوده‌اند:

react‑server‑dom‑webpack
react‑server‑dom‑parcel
react‑server‑dom‑turbopack

و کلی دیگر از ابزار ها درگیر شدن، توضیحات بیشتر‌...

@Linuxor
توی آپدیت جدید گوگل کروم، یک قابلیت خیلی کاربردی اضافه شده: اسپلیت کردن تب‌ها!
از این پس میشه همزمان دو تب رو در کنار هم داشت.
👍1
قدم ها رو آهسته بردار
که وقتی CLT + Z زدی
به عقب پرتاب نشی!
اگر تا به الان برای دانلود ویدیو از یوتوب و ... به هزاران سایت متوصل میشدین دیگه لازم نیست!

yt-dlp یک ابزار متن باز و کاربردیه که می‌تونید از طریق ترمینال فقط با کپی پیست کردن url ویدیو به راحتی دانلودش کنید که علاوه بر یوتوب کلی وب سایت دیگه رو هم پوشش میده.

داکیومنت yt-dlp برای اطلاعات بیشتر و نصب :

https://github.com/yt-dlp/yt-dlp
Forwarded from Binary musings with sirmerdas (Reza)
#useful@sirmerdas_binary🔥

اگه روی سیستم عامل ویندوز هستید و به هر دلیلی زمانیکه دارید اپی رو توسعه میدید، نیاز داشتید آدرس دامنه ست کنید روی اپتون، برای مثال به جای وارد کردن آدرس
http://127.0.0.1
آدرس
sirmerdas.local
رو وارد کنید و به اپتون دسترسی داشته باشید، برید داخل مسیر زیر:
C:\Windows\System32\drivers\etc

فایل hosts رو با دسترسی administrator باز کنید، به هیچی دست نزنید، تاکید میکنم هیچی، بعد این خط رو اضافه کنید:
127.0.0.1   sirmerdas.local


طبیعتا به جای sirmerdas.local میتونید آدرس دلخواهتون رو وارد کنید.
اگر هم برای پورت خاصی میخواید، به همین صورت انجام بدید، ولی موقع دسترسی، همچین چیزی وارد کنید برای مثال:
sirmerdas.local:8080

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

پ.ن: subdomain هم میتونید اضافه کنید مثل api..sirmerdas.local
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Forwarded from KIANOLOGY🎄
Media is too big
VIEW IN TELEGRAM
دوستان
عملکرد من در گیتهاب رو طی سالی که گذشت می تونید به صورت انیمیشنی ببینید

https://github.com/KEANU2003


فقط کافیه نام کاربری اکانت (مثلا KEANU2003. نیازی به لینک کامل نیست) بهش بدید تا برای شما هم یه ویدیو بسازه
https://githubunwrapped.com


#برنامه_نویسی #معرفی_سایت #گیتهاب #عملکرد_سالانه #متن_باز #رایگان #کاربردی
2