DevTwitter | توییت برنامه نویسی – Telegram
DevTwitter | توییت برنامه نویسی
23.6K subscribers
4.36K photos
357 videos
6 files
4.1K links
توییت های برنامه نویسی و طراحی وب :)

@dvtwi

Hashtags:
devtwitter.t.me/5

DevBooks Channel:
https://news.1rj.ru/str/+AYbOl75CLNYxY2U0

Github:
https://github.com/DevTwitter

X:
https://x.com/devtwittir
Download Telegram
امروز یه مشکل عجیب تو پروژه Next.js داشتم که کلی وقت من رو گرفت.

داشتم روی یه صفحه جدید کار می‌کردم، اما هرچی وارد اون صفحه می‌شدم، هیچ چیزی لود نمی‌شد! فقط با رفرش کردن صفحه بود که محتوا نمایش داده می‌شد.

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

مشکل چیه؟
وقتی در یک صفحه از Layout مخصوص و جداگانه استفاده می‌کنید، به هیچ عنوان نباید تگ‌های <html> و <body> رو در اون صفحه تکرار کنید.

چرا؟
چون این تگ‌ها به صورت سراسری و در Root Layout پروژه شما تعریف می‌شن.وقتی شما دوباره اونها رو در یک Layout یا صفحه داخلی استفاده کنید، با Layout اصلی تداخل پیدا کرده و باعث به هم ریختن ساختار DOM و مشکلات رندر شدن می‌شن.

نتیجه گیری:
این شاید یه نکته ساده و ابتدایی به نظر بیاد،ولی تاثیر مستقیم روی عملکرد و تجربه کاربری (UX) سایت می‌ذاره. همیشه به ساختار سلسله مراتبی Layout ها در فریمورک‌هایی مثل Next.js دقت کنید!

@DevTwitter | <Mohammed Milad Ahmadi/>
🍌53👍258🔥1
وقتی پروژه‌ها بزرگ‌تر می‌شن، پیچیدگی کد فقط فنی نیست، بلکه کسب‌وکاریه.
قوانین، فرآیندها، استثناها و موجودیت‌ها (Entities) از دنیای واقعی میان توی نرم‌افزار، و معمولاً جایی بین Controller و Service گم می‌شن.
معماری Domain-Driven Design (DDD) اومده تا این مشکل رو حل کنه.

لینک مقاله

@DevTwitter | <Erfan Yousefi/>
21👍12🍌2🔥1
درود! اگر با کشف خودکار سرویس‌ها (Service Discovery)، ارتباطات امن و نظارت بر سلامت نود ها در Express.js مشکل داشتید، پکیج express-micro یه پلاگین برای اکسپرس و یه راه حل سبک و کم دردسره! – با پروکسی API، وایت‌لیستینگ IP و امضای HMAC.
شما می‌تونید سرویس‌هاتون رو بدون هماهنگی دستی به طور خودکار متصل کنید و امنیت ارتباطات بین نودها رو با روش‌های متعدد تضمین کنید.

لینک پروژه: https://www.npmjs.com/package/express-micro
مستندات: https://github.com/Tariux/Express-Micro
نصب: npm install express-micro

نمونه کد:
const expressMicro = require('express-micro');
const { services } = expressMicro(app, {
serviceName: 'my-service',
port: 3000,
peers: ['http://localhost:3001']
});
// فراخوانی سرویس:
await services.otherService.getData({ id: 123 });


@DevTwitter | <madman/>
👍11🍌2👎1🔥1
یکی از جذاب ترین خبر برای باری کسانی که باگ بانتی کار میکنند یا علاقه دارند به این موضوع
مجموعه‌ای از ایجنت های هوش مصنوعی‌به اسم Strix که مثل یک هکر واقعی عمل می‌کنن! کد شما رو به‌صورت پویا اجرا می‌کنن، حفره‌های امنیتی رو پیدا می‌کنن، و حتی با نمونه‌ی واقعی (Proof-of-Concept) اون‌ها رو تأیید می‌کنه!

چرا مهمه؟
بزرگ‌ترین مشکل تست امنیتی سنتی اینه که با سرعت توسعه‌ی نرم‌افزار هماهنگ نیست.

اما Strix مستقیماً در جریان کاری شما ادغام می‌شه:
اجرای خودکار در CI/CD برای کشف آسیب‌پذیری‌ها قبل از انتشار!

دریافت PoC واقعی به‌جای هشدارهای اشتباه تحلیل‌های ایستا

تست کامل حملات تزریقی، کنترل دسترسی و باگ‌های منطقی

و بهترین بخش ماجرا:
نیازی نیست کارشناس امنیت باشید!
Strix با یک جعبه‌ابزار کامل هک میاد از HTTP Proxy و مرورگر خودکار گرفته تا محیط اجرای Python برای توسعه‌ی Exploit.
مثل اینه که یک تیم امنیتی حرفه‌ای در سرعت خط CI/CD شما کار کنه!( البته فکر کنم بزرگنمایی شده ولی خب قطعا ارزش تست داره )!

یک نکته ی مهم دیگه هم اینه که میتونید اونو بصورت داکر و لوکال ران کنید !

آموزش نصب و توضیحات اولیه به فارسی:
https://github.com/xPOURY4/strix/blob/main/README_FA.md

نسخه اصلی:
https://github.com/usestrix/strix

@DevTwitter | <POURYA/>
👍156🍌4🔥2
ترکیب CachyOs با Hyprland سریع، امن و راحت ترین تجربه ستاپی بود که داشتم
یه سری تست نیازه از بابت یه سری چیزا بگیرم که بتونم مهاجرت کنم بهش البته

فقط اینکه، کانفیگ hyprland بدهید
خودم از این استفاده میکنم و راضیم، ولی یه کم اوضاع توسعش خرابه ظاهرا

https://github.com/HyDE-Project/HyDE

@DevTwitter | <Taqi/>
7👍6👎2🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
یک browser جدید اپن سورس به اسم BrowserOS اومده که میتونید روش AI agent اجرا کنید. مثل browser کمپانی openai به اسم Atlas. یعنی اکثر کارهایی که میخواهید تو browser انجام بدید را به ایجنت میگید و اون انجام میده.
روی همه سیستم عامل ها نصب میشه و میتونید مدلهای لوکال را هم استفاده کنید. کلی کارهای جالب میشه باهاش انجام داد مثلا scrape کردن دیتا و ...
Github: https://github.com/browseros-ai/BrowserOS

@DevTwitter | <Mehdi Allahyari/>
👎23👍4🍌2🔥1
این بهترین زبان برنامه‌نویسیه که تا حالا دیدم! به نظرم سی‌شارپ و جاوا و جاوای کوچک باید دیگه ماست‌هاشون رو کیسه کنند!
https://github.com/TodePond/GulfOfMexico
جوان ایرانی! وقتشه زبان خلیج فارس رو حتا قوی‌تر کار کنید!

@DevTwitter | <Shilan/>
👎86🍌55👍84
یکی از دوستام داشت یه فایل منیجر می ساخت. منم می خواستم یه ایده ای رو تست کنم. جفتمون به یه File Search Engine نیاز داشتیم. در نتیجه، یکی ساختم. می ذارمش اینجا شاید به کار بقیه هم بیاد
https://github.com/naseridev/omega

@DevTwitter | <Nima Naseri/>
24👍6👎3🔥3
نیازمند یک روز تعطیلی، پس از روز تعطیل هستیم

@DevTwitter
👍23717🍌6👎5
یه اکستنشن دارم برای لینکدین که متن پست‌ها رو باهاش استخراج می‌کنم

این لینکدین هر روز DOM رو آپدیت می‌کنه و تغییر میده
زخم شدم یعنی، بس کن دیگه دو روز آروم بگیر
👍32🍌112🔥2
اگر دوست دارید سرویس ها مختلف مثل اور لیف و جوپیتر و ار استدیو و ... لوکال بیارید بالا و همشو باهم داشته باشید
این ریپو به دردتون میخوره

https://github.com/parvvareshInfrastructure/local-service

@DevTwitter | <Alireza Parvaresh/>
🔥121🍌1
https://w3schools.com
بچه ها این سایت برای یادگیری برنامه نویسی خیلی عالیه
نکته ای که متمایزش میکنه از بقیه 1-اکثر زبان های برنامه نویسی رو داره 2-ازت سوال میپرسه و عملی تمرینت میده
ترجیحا پایتون یا سی شارپ یادبگیرید (مرگ بر جاوااسکریپت)

@DevTwitter | <MaHdI/>
👎131🍌63👍165
لیستی از پروژه‌های پیشنهادی GenAI که می‌تونه بهتون کمک کنه رزومه بهتری در این حوزه داشته باشید، از دستش ندید!

https://github.com/aishwaryanr/awesome-generative-ai-guide/blob/main/resources/60_ai_projects.md

@DevTwitter | <zhiwar/>
👍12🍌2
تاحالا با cli hashtag هوش‌مصنوعی qwen کار کردین؟

خب نصبش که خیلی راحته:

npm install -g @qwen-code/qwen-code

حالا تو ویندوز command prompt رو باز میکنید و به شاخه پروژه میرید
اونجا دستور qwen رو میزنید و عملیات لاگین رو با جیمیل‌تون انجام میدید
بعد از لاگین فقط کافیه بهش بگید که چیکار کنه

این cli هوش‌مصنوعی عالیه، حتی خیلی بهتر از gemini گوگل

من یک پروژه کامل رو با این cli نوشتم (laravel inertia)
بک و فرانت رو همزمان پشتیبانی میکنه

حتی کارهایی که من ازش نمیخواستم و به ذهن منم نمیرسید رو خودش انجام میداد

قبل از هر تغییری هم که بخواد ایجاد کنه، از شما سوال میکنه که آیا موافق هستید یا نه

@DevTwitter | <sina Khaghani/>
24👎4👍3🍌3
من یه ربات تلگرام ساختم برای دانلود فایل‌ها از کانال‌ها.

باهاش می‌تونید:
- همه فایل‌های یه کانال رو دانلود کنید
- بر اساس نوع فایل فیلتر کنید (عکس، PDF، ویدیو و ...)
- تعداد فایل‌هایی که می‌خواین دانلود بشه رو مشخص کنید

یه اسکریپت ساده‌ که با Python و Telethon نوشته شده

لینک گیت هاب:
https://github.com/erfanghorbanee/Telegram-File-Downloader

@DevTwitter | <Erfan/>
52👍6👎3🔥2
سرویسی که گفت: “من دیگه نمی‌کشم…” و ما رفتیم سراغ Go!
چند ماه پیش متوجه شدم که بار روی یکی از سرویس‌هامون که مسئولیت محاسبه قیمت، تخفیف و موجودی کالا را برعهده داشت، عجیب بالا رفته.
هی باید بهش ریسورس اضافه می‌کردیم و هی فاکتور پشت‌فاکتور… هی سعی می کردیم کد های سمت node js رو باز نویسی کنیم اما باز مشکل وجود داشت

اما یک جایی ایستادم و به مانیتور زل زدم:
«واقعاً تا کی Scale out ؟ تا کی پول بریزیم برای پادهای بیشتر؟»

با بررسی لاگ های کمی که تو سیستم داشتیم و کمی تعمل بیشتر دیدم مشکل ما فقط زبان نیست بلکه دید طراحی ما برای همچین فشاری آماده نشده بود.
و دیدم که مشکل فقط «بار زیاد» نیست؛ مشکل این بود که مدلِ اجرا (single-threaded event loop + heavy allocations) با الگوی کاری سرویس (محاسبهٔ همزمان قیمت/تخفیف/موجودی) همخوانی نداشت.
هرچقدر پاد اضافه می‌کردیم، هزینه افزایش می‌یافت اما مشکل اصلی — CPU-bound hot path و فشار GC — همچنان پابرجا بود.

وقتی این‌طوری باشه، مهاجرت به runtimeی که برای concurrency و low-overhead execution طراحی شده (مثل Go) یک انتخاب فنی معقول و قابل دفاعه.

پس تصمیم گرفتم همه‌چیز را با Go دوباره بسازم؛
اما نه صرفاً rewrite — بلکه یک refactor درست در مون

اول از همه، متریک‌ها را جمع کردم.(این کار برای شروع کار حیاتیه)
p95، مصرف CPU، ترافیک همزمان، صف درخواست‌ها…
می‌خواستم دقیقاً بفهمم کجا درد می‌کنیم.

بعد شروع کردم به بازطراحی معماری:
سرویس باید کاملاً Stateless می‌شد
هر درخواست باید موازی و بدون dependency محلی قابل پاسخ باشد
عملیات سنگین محاسبات تخفیف باید Pipeline بشود

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

می خواستم برم سمت gRPC که محدودیت زمان اجازه نداد پس رفتم سمت DB و ایندکس گزاری های بهنر و جدا کردن read , write از هم
کش کویری هم اورد وسط و بعد هم از ردیس واسه کش کمک گرفتم

برای invalidate کردن قیمت و موجودی هم معماری event driven کمک گرفتم (حالا هی بگید چرا مهمه بدونیمش)

خوب گفتیم قبل از این که سرور بیاد پایین بفهیم چه خبره تو سیستم… پس یک logging , metrics هم توی سیستم گذاشتم حتی گوروتین ها رو همو پروفایل کردم که oberservity رو افزایش بدم
خلاصه بعد از این کارها . latency تا ۶۰ درصد در پیک ها پایین امد…مصرف cpu قابل حدس شد و هزینه ها به شدت کم شد و بچه های محصول خوشحال (البته بعدش یک عالمه فیچر امد سمتمون)

در کل باید به " performance از همان ابتدای طراحی معماری فکر کرد"

@DevTwitter | <Hessam Zaheri/>
👍6316👎4🍌3
کتاب Apprenticeship Patterns راهنماییه برای برنامه‌نویس‌هایی که می‌خوان از یه تازه‌کار، تبدیل به یه حرفه‌ای واقعی بشن.
این ترجمه فارسی، نسخه‌ای روان و کاربردیه از کتاب اصلیه و بهت کمک می‌کنه مسیر رشد شخصی و فنی‌ت رو آگاهانه طی کنی.

اگه دنبال اینی بدونی چطور باید یاد بگیری، چطور تجربه کسب کنی و چطور خودت رو بسازی، این کتاب دقیقاً همونه که باید بخونی.


github.com/hheydarian/apprenticeship-patterns-persian

@DevTwitter <Hamed Heydarian/>
1🔥203👍2
توی پروژه‌های Django معمولاً وقتی می‌خوای فیلترهای داینامیک بسازی (مثلاً برای API یا صفحه جستجو)، مدیریت query stringها یه دردسر تکراریه.
برای همین یه پکیج نوشتم به اسم django-query-string-parser که کارش اینه query string رو مستقیم تبدیل کنه به Q object، با یه سینتکس خوانا و امن.

چند تا قابلیت مهمش:
- پشتیبانی از عملگرهای مختلف مثل :, !=, >, <, >=, <=, ~=
- ترکیب منطقی با AND / OR و پرانتز
- تعریف فیلدهای مجاز (whitelist) برای امنیت بیشتر
- پشتیبانی از استرینگ، عدد، بولین و null
- خروجی نهایی: یه Q object تمیز برای .filter() یا .exclude()

به درد جاهایی می‌خوره که بخوای فیلترهای پیچیده ولی قابل خواندن بسازی — مثل APIها، داشبوردها یا پنل ادمین.

نصب:
pip install django-query-string-parser

گیت‌هاب:
https://github.com/sepehr-mohseni/django-query-string-parser

@DevTwitter | <Nima Naseri/>
👍175👎4🔥1
منطق پشت کلاستر این CockroachDB چقدر قشنگه.
نوعی دیتابیس SQL که به صورت Master Master کلاستر میشه و از پروتکل RAFT استفاده میکنه.

اما چی!؟ ، مگه RAFT ساختارش به صورت Master Slave ایی تعریف نمیشد؟ پس چجوری توی دیتابیس Master Master داره استفاده‌ میشه؟
شاید اونجوری که CockroachDB میگه اصلا Master Master ایی در کار نیست یا تعریف ما متفاوته .
خلاصه اگه علاقه مند هستین چجوری توی CockroachDB ما RAFT داریم، خوشحال میشم مقاله ایی رو که نوشتم مطالعه کنین، حدودا هم ۵ دقیقه وقتتون رو میگیره.

https://medium.com/@parsagheiratian/the-mentality-behind-cockroachdb-0ed524fcc7ec

@DevTwitter | <Parsa Gheiratian/>
️️
👍10👎32🔥1
به اون کاری که امروز کردی نگو "ریفکتور" (Refactor). اگه تست نداره، اون فقط یه "گندکاریِ تمیزه".
این فقط یه جمله‌ی قشنگ نیست؛ این یه زخمه که من هنوز یادمه.
اوایل کارم، میخواستم قهرمان باشم. ‍️ تو یه پروژه‌ی لگسی، یه "God Function" هزار خطی پیدا کردم و گفتم: "من اینو تمیز میکنم!"
نشستم و تیکه‌تیکه‌اش کردم. ۵۰ تا تابع کوچولوی تر و تمیز. اصل DRY رو پیاده کردم. ظاهر کد عالی شد. "تمیز" و "حرفه‌ای". احساس غرور میکردم.
مشکل چی بود؟ اون کد اصلی لعنتی، یه دونه هم تست خودکار نداشت.
اونجا بود که فاجعه اتفاق افتاد. کاری که من انجام دادم، "ریفکتور" نبود؛ "تغییر دادنِ کورکورانه" بود.
اون کد "تمیز" من، چند تا باگ جدید و پنهان داشت. چرا؟ چون اون "کد اسپاگتی" زشت، پر از منطق‌های تجاری پنهان و وابستگی‌های زمانی بود که فقط تو همون حالت کار میکرد.
من "بدهی فنی" رو پرداخت نکردم؛ من یه بدهی کم‌بهره (مثل تکرار کد که فهمیدنش ساده بود) رو برداشتم و با یه بدهی پربهره (مثل یه "انتزاع اشتباه" که حالا دیباگ کردنش غیرممکنه) عوض کردم.
این "تله‌ی کد تمیز"ئه. مهم‌ترین تعریفی که تو این صنعت باید بلد باشیم مال مایکل فدرز (Michael Feathers) ئه: "کد لگسی، کدیه که تست نداره." همین.
تو یه سیستم لگسی، قانون اول "تمیز کن" نیست. قانون اول اینه: "اول امنش کن." برو "تست‌های مشخصه‌یابی" (Characterization Tests) بنویس تا رفتار فعلیِ سیستم (با همه‌ی باگ‌هاش) رو قفل کنی. وقتی اون تور ایمنی رو ساختی، اونوقت حق داری که شروع به تمیزکاری کنی.

@DevTwitter | <Hossein Moradi/>
👍81👎119🔥2