Dev Perfects – Telegram
Dev Perfects
41 subscribers
9.23K photos
1.26K videos
468 files
13K links
بخوام خیلی خلاصه بگم
این کانال میاد مطالب کانالای خفن تو حوزه تکنولوژی و برنامه نویسی رو جمع میکنه

پست پین رو بخونید
https://news.1rj.ru/str/dev_perfects/455


ارتباط:
https://news.1rj.ru/str/HidenChat_Bot?start=936082426
Download Telegram
Forwarded from Database Labdon
وقتی Cache بیشتر از این که کمک کنه، دردسر می سازه!

چند وقت پیش روی یه پروژه بزرگ کار می کردم که توش Redis برای کشینگ استفاده می کردیم. همه چیز خوب پیش می رفت تا اینکه یه روز، یه تغییر ظاهرا بی ضرر تو کد باعث شد کش درست Invalid نشه. نتیجه چی شد؟ کاربرا داده های قدیمی رو می دیدن، بعضیا نمی تونستن اطلاعاتشون رو آپدیت کنن، و پشتیبانی حسابی شلوغ شد!

کش توزیع شده یه شمشیر دولبه ست!
از یه طرف، می تونه فشار روی دیتابیس رو کم کنه و سرعت پاسخ گویی رو بالا ببره، ولی از طرف دیگه، اگه درست مدیریت نشه، مشکلاتی مثل:

مشکل Cache Inconsistency – وقتی دیتا تو کش و دیتابیس ناهماهنگ می شه و بعضی کاربرا داده های قدیمی می بینن.

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

مشکل TTL Misconfiguration – تنظیم اشتباه زمان اعتبار کش که باعث می شه یا دیتا زودتر از حد لازم حذف بشه یا تا مدت زیادی به روز نشه.


اون تجربه یه درس مهم بهم داد: کش چیزی نیست که فقط یه بار تنظیمش کنیم و فراموشش کنیم. باید یه استراتژی کش هوشمند داشته باشیم که همیشه بهینه بمونه.

<Hamed Farzanefar/>

https://news.1rj.ru/str/addlist/KpzXaiSpKENkMGM0
Forwarded from Python Hints
هر 1 دلار 90000 تومان
هر 1 گرم طلای ۱۸ عیار 6525000 تومان

مهمتر از همه؛ این افزایش قیمت‌هایی که الان روی تجهیزات و مواد غذایی و ... هست رو دقت کنید بهش؛ اینا برای دلار 65000 تومان بوده و نه دلار 90000 تومانی
🔳 مقایسه Tailwind و Bootstrap
همونطور که در جریان هستین؛ تیلویند و بوت استرپ دوتا از محبوب ترین فریمورک های css هستن که خیلیا وقتی میخوان یه css فریمورک انتخاب کنن؛ واسه انتخاب یکی از این دوتا توی دوراهی میمونن.
البته که توی چند سال اخیر استفاده از تیلویند افزایش بسیار چشم گیری داشته و محبوبیت بوت‌استرپ خیلی کمتر شده و ما میخوایم توی این پست این مسئله رو به طور کامل باز کنیم و ببینیم چه مزیت ها و معایبی دارند هردوشون


تیلویند | Tailwind
مزایا
➊ قابلیت کاستومایز سازی بسیار بالا
➋ فوق‌العاده سبک و بهینه، بخاطر ساختارش
➌ یادگیری نسبتاً ساده
 پروسه استایل‌دهی سریع‌.

معایب
➊ محدودیت‌ در طراحی‌های پیچیده
➋ جدا نبودن استایل ها و HTML، که میتونه باعث شلوغ شدن کد‌ها بشه، و خب این مورد توی بوت‌استرپ کمتر دیده میشه چپن کامپوننت های از پیش اماده داره


بوت‌ استرپ | Bootstrap
مزایا
➊ وجود کامپوننت های از پیش آماده
➋ وجود grid system برای ریپانسیو سازی

معایب
➊ شباهت زیاد به بقیه سایت هایی که از بوت‌استرپ استفاده میکنند و یونیک نبودن
➋ نیاز مند تایم بیشتر برای یونیک کردن کامپوننت ها
➌ حجم بالا و تاثیر منفی بر روی پرفرمونس، به دلیل عدم وجود بهینه سازی های مناسب
البته مورد سوم توی بوت‌استرپ ۵ بهتر شده 🔺


📊 نتیجه گیری
از این مقایسه میشه نتیجه گرفت که برای توسعه پروژه هایی که دیزاین منحصر به فردی دارن و در مقیاس بزرگ تری هستن، بهتره که از Tailwind استفاده بشه؛ ولی برای پروژه هایی که تایم کمی دارن و یا دیزاین و پرفورمنس در اولویت نیست، بوت استرپ هم میتونه انتخاب خوبی باشه


#framework #css #tailwind

𝗖𝗛𝗔𝗡𝗡𝗘𝗟  |  𝗚𝗥𝗢𝗨𝗣

یه فکت باحال:
هزینه های api مدل‌ gpt 4o mini من هر ماه با تقریبا ۱۵۰ یوزر اکتیو و کلی پیام به صورت مهمان به ماهی کمتر از 0.60$ می‌رسید.

مدل‌ gpt 4o mini میتونه یه آپشن عالی برای ساختن چت بات های مبتنی بر RAG باشه به خاطر هزینه فوق العاده پایین Input اش.

@DevTwitter | <Mani/>
Forwarded from 🎄 یک برنامه نویس تنبل (The Lazy 🌱 Raymond)
🔶 کابل پاورم سوخت و حالا لینوکسم بالا نمیاد و معلوم نیست مشکل کرنل هست یا ...

@TheRaymondDev
Forwarded from Gopher Academy
🔵 عنوان مقاله
How a Malicious Package Exploited Module Proxy Caching for Persistence

🟢 خلاصه مقاله:
محققان حمله‌ای پیچیده در زنجیره تأمین را کشف کرده‌اند که از روش‌های "typosquatting" (تقلید از نام دامنه‌ها با تغییرات اندک املاکی) و "caching" ماژول‌های برنامه‌نویسی Go جهت ماندن نامحسوس در طول چندین سال استفاده می‌کند. درک این مکانیزم بسیار مهم است، زیرا ممکن است هر فردی با آن مواجه شود. در این روش، مهاجمان با ایجاد بسته‌های نرم‌افزاری دارای نام‌های بسیار نزدیک به نام‌های اصلی و معتبر، توسعه‌دهندگان نرم‌افزار را فریب می‌دهند. هنگامی که توسعه‌دهنده‌ای از این بسته‌های جعلی استفاده می‌کند، کد مخرب به صورت خودکار در نرم‌افزار او اجرا می‌شود. این تکنیک از قابلیت‌های کش ماژول پروکسی زبان برنامه‌نویسی Go بهره می‌برد تا فعالیت‌های مخرب خود را پنهان کند و تشخیص آن‌ها را دشوار سازد.

🟣لینک مقاله:
https://golangweekly.com/link/165328/web


👑 @gopher_academy
This media is not supported in your browser
VIEW IN TELEGRAM
نرم افزار isd (interactive systemd) روشی بهتر برای کار با units های systemd

اگر کار با Systemd براتون سخته حتما استفاده کنید

@DevTwitter | <MehrdadLinux/>
به جای استفاده از تولز های درایوری برای داکیومنت کردن کدت برای llm knowledge base بیا از تولزم استفاده کن openai compatible سرعت پشم ریزوم. ایجنت رو تعریف کن بنداز به جون پروزه

https://github.com/ingig/code-narrator

@DevTwitter | <raas/>
Forwarded from Code Module | کد ماژول (genix)
‏Trust Proxy توی Express.js چیه و دقیقاً چه کاری میکنه؟ 🤔

‏Trust Proxy یه تنظیم توی Express هست که به اپلیکیشن میگه آیا باید به اطلاعاتی که توی هدرهای X-Forwarded-For و X-Forwarded-Proto میاد، اعتماد کنه یا نه.

حالا این یعنی چی؟ یعنی وقتی برنامه بک اند یه سرور واسطه‌ای (مثل Nginx یا Cloudflare) قرار داره، IP و پروتکل واقعی کاربر توی این هدرها قرار می‌گیره. Express به‌طور پیش‌فرض به این اطلاعات اعتماد نداره اما اگه trust proxy رو فعال کنید، Express از این هدرها برای تعیین IP و پروتکل واقعی کاربر استفاده میکنه.

‏۲. Trust Proxy به چه دردی میخوره؟

وقتی که برنامه‌ شما رو یه پراکسی معکوس (Reverse Proxy) یا یه لود بالانسر اجرا میشه، در حالت عادی Express فقط IP و اطلاعاتی که از سمت اون پراکسی دریافت کرده رو می‌بینه، نه اطلاعات اصلی کاربر. این یعنی ممکنه req.ip اشتباه باشه، req.protocol به جای https مقدار http داشته باشه و کلی مشکل دیگه.

اینجاست که Trust Proxy به درد می‌خوره 👇🏻

‏- وقتی فعال بشه، Express مقدار واقعی IP کاربر رو از X-Forwarded-For میخونه.

‏- req.protocol‏ رو بر اساس X-Forwarded-Proto تنظیم میکنه. ‌‌‏
‏- req.hostname رو درست مقداردهی میکنه‏

۳. چجوری Trust Proxy رو توی Express فعال کنیم؟

خیلی ساده!
const app = express();
app.set("trust proxy", true);


با این تنظیم:

‏- req.ip مقدار واقعی آی‌پی کاربر رو میده.
‏- req.protocol مقدار واقعی http یا https رو نشون میده.

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


‏ ۴. Trust Proxy چه مقدارهایی میگیره؟


مقدار true همیشه بهترین گزینه نیست. Express چند مدل مقدار رو قبول میکنه:

app.set("trust proxy", false);  // پیش‌فرض، هیچ پراکسی‌ای رو قبول نمی‌کنه.
app.set("trust proxy", true); // به همه پراکسی‌ها اعتماد میکنه.
app.set("trust proxy", "loopback"); // فقط به 127.0.0.1 اعتماد میکنه.
app.set("trust proxy", "127.0.0.1"); // فقط به این IP خاص اعتماد میکنه.
app.set("trust proxy", ["192.168.1.1", "10.0.0.1"]); // لیستی از پراکسی‌های قابل‌اعتماد.
app.set("trust proxy", 2); // از آخرین دو پراکسی مقدار رو می‌خونه.


- مقدار 2 یعنی چی؟
وقتی مقدار 2 رو میدید، Express میاد ip واقعی کاربر رو از دو پراکسی آخر توی X-Forwarded-For استخراج میکنه. این کار به درد جایی میخوره که چند تا سرور بین کاربر و اپلیکیشن هستن.

- پس مقدار true بدیم یا نه؟
بهتره فقط به پراکسی‌هایی که می‌شناسی اعتماد کنید. مثلاً اگه سرور فقط Cloudflare یا Nginx قرار داره، میتونید فقط به اون آی‌پی‌ها اعتماد کنین تا از IP Spoofing جلوگیری بشه.


‏Trust Proxy یه تنظیم مهمه که وقتی برنامتون یه پراکسی مثل Nginx یا Cloudflare باشه، کمک میکنه Express اطلاعات واقعی کاربر رو تشخیص بده. اما باید دقت کنی که به هر پراکسی‌ای اعتماد نکنید! برای امنیت بیشتر، فقط به آی‌پی‌هایی که واقعاً Proxyهای خودتون هستن اجازه بدید.

برای جزئیات بیشتر میتونید به مستندات رسمی Express در مورد TrustProxy مراجعه کنید، که این جنبه ها رو با عمق بیشتری توضیح میده.

#nodejs #express
@CodeModule
Forwarded from LinAcademy
زندگی مثل یه بازی rpg هستش لول گرفتی اسکیل آپ کن، نگرفتی بازم mob بکش یا quest بزن تا لول بگیری.

این یعنی چی؟

تو باید توی نقشی که داری تاثیر گذار باشی پس شروع می کنی به یادگیری یا پیشرفت، اگه یادگرفتی میری مرحله بعد و اگر یادنگرفتی باید یا موانع سر راحت رو حذف کنی یا بیشتر آموزش ببینی.


@LinAcademy
Forwarded from linuxtnt(linux tips and tricks) (hosein seilany https://seilany.ir/)
Forwarded from یه شعر (Poem Bot)
مولانا | دیوان شمس | رباعیات | رباعی شمارهٔ ۱۷۸۲

با زهره و با ماه اگر انبازی
رو خانه ز ماه ساز اگر میسازی
بامی که به یک لگد فرو خواهد شد
آن به که لگد زنی فرو اندازی

#مولانا | گنجور
📍@iipoem
هر وقت ازتون پرسیدن ValueTuple چیه این رو به یاد بیارید
https://github.com/Farfetch/kafkaflow/blob/3.0.10/src/KafkaFlow.Abstractions/Message.cs

هیچی نیست به جز یه کانتینر برای جا به جا کردن memory address ها ولی با هر بار پاس دادنش، کپی میشه.

و اگر داخل یه کلاس هم ذخیره اش کنید میره روی Heap و اونجا Allocate میشه.

@DevTwitter | <Armin/>
Forwarded from DevAcademy
سلام دوستان!
ما در شرکت Nomarz LTDدر حال گسترش تیم فنی هستیم و به دنبال یک Senior Java Developer می‌گردیم!

🔹 نیازمندی‌ها:
حداقل 5 سال سابقه کار در Backend Development
تسلط به Java و مفاهیم Microservices
آشنایی با Golang
آشنایی کامل با Spring Boot و REST APIs
آشنایی با مفاهیم Blockchain و Web3
درک عمیق از Multithreading، Concurrency و Asynchronous Programming

💰 حقوق: پرداخت به صورت Tether (USDT)، از $2000 شروع و بسته به توانایی‌های شما قابل افزایش هست.
📍 محل کار: کاملاً Remote
📆 روزهای کاری: دوشنبه تا جمعه

اگه شرایط رو دارید و به این فرصت علاقه‌مندید، رزومه‌تون رو برامون تو لینکدین بفرستید! 🚀

https://www.linkedin.com/posts/ali-abbasi1990_golang-java-backend-activity-7290737975074676736-GHFI?utm_source=share&utm_medium=member_ios

💻@DevAcaademy
💬
@DevAcademyGroup
Forwarded from Geek Alerts
آپدیت Windsurf wave 2 مدل R1 از دیپ‌سیک رو آورده و Cascade رو اضافه کردن که مکالمات یه پروژه رو یادش میمونه، مثلا میتونید برید دنبال یه پروژه دیگه و وقتی برگردید مکالمه‌های پروژه قبلی سر جاشون هست. بعضی از کاربرها گفتن از Cursor بهتره ولی به نظرم تست کنید.

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

https://codeium.com/download
codeium
@geekaerts
Forwarded from Go Casts 🚀
سازنده Redis که چند وقتی میشه مجدد به تیم Redis برگشته، در بلاگ شخصی ش یه پست گذاشته و یه سری practice های رایج رو مورد انتقاد قرار داده و میگه که ما با این کارها داریم دنیای نرم افزار رو خراب میکنیم.

مثلا اشاره داره به اینکه وقتی به جوونترا توصیه میکنیم don't invent the wheel و چرخ رو از اول نساز، یعنی بهشون اجازه نمیدیم که بفهمن ابزارها چطوری کار میکنن و این خوب نیست

با اینکه میگیم کد نباید کامنت داشته باشه خوب نیست

یا اینکه دغدغه مون شده سرعت تولید نرم افزار به جای طراحی درست نرم افزار

خلاصه دل پری دارن ایشون :)

We are destroying software
https://antirez.com/news/145

@gocasts
Forwarded from Linuxor ?
توی پروتکل QUIC که HTTP 3 بر پایه اونه، شناسه اتصال (Connection ID) یه شناسه یکتاست که برای شناسایی و مدیریت ارتباطات استفاده می‌شه. این شناسه مستقل از آدرس IP هستش یعنی حتی اگه کاربر به شبکه‌ای جدید متصل شه و IP تغییر کنه، ارتباط قطع نمی‌شه و اتصال ادامه پیدا می‌کنه. این ویژگی به QUIC کمک می‌کنه که پایداری بیشتر و تأخیر کمتری توی تغییرات ناگهانی شبکه داشته باشه.


@Linuxor
بالاخره Codective Docs منتشر شد
تجربیاتی که تو این سال‌ها به عنوان Developer و Mentor کسب کردم رو اینجا جمع‌آوردی کردم
این مستندات نکات کاربردی که حرفه‌ای‌ها ازش استفاده میکنن و همچنین اشتباهات رایجی که بین تازه‌کارها رایجه رو شامل میشه

خوشحال میشم یه نگاهی بندازید و نظرتون رو بگید:
https://docs.codective.ir/clean-code

بعضی از سوالاتی که اینجا می‌تونید به جوابش برسید:
- چطور از Prettiern و ESLint و Stylelint استفاده کنیم؟
- کد تمیز (Clean Code) چه ویژگی‌هایی باید داشته باشه؟
- کد کثیف رو چطور تشخیص بدیم؟ (Code Smells)
- از چه تکنیک‌هایی برای Refactor میشه استفاده کرد؟
- چطور عکس‌های با کیفیت اما کم‌حجم داشته باشیم؟
- تفاوت تگ b با strong چیه و بهتره از کدوم باید استفاده کنیم؟
- چطور اعداد رو با کاراکترهای فارسی بنویسیم بدونِ اینکه تو محتوا دست ببریم؟
- چطور فقط یه CSS برای سایت چند-زبانه بنویسیم؟
- چه زمانی باید از Child Combinator استفاده کنیم؟
- تفاوت px با rem چیه و بهتره از کدوم استفاده کنیم؟
- تفاوت RGB و HSL چیه و بهتره از کدوم استفاده کنیم؟
- چطور Animation با Performance بالا داشته باشیم و از افت فریم جلوگیری کنیم؟
- اصول UI چیه و چرا باید ازشون پیروی کنیم؟
- کاربرد فایل‌های README.md و CONTRIBUTING.md چیه و تو هر کدوم چه محتوایی باید قرار بدیم؟

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

@DevTwitter | <Bijan Eisapour/>
توی یوتوب یک مدته این محتواهایی که طرف میاد کرنل رو با بیزی باکس می‌کنه توی هم و با و بعدش cpio میسازه ازشون خیلی یک مدته زیاد شده، حالا من که امیدوارم از این ترندهای زودگذر نباشه :)))))


@SohrabContents