DevTwitter | توییت برنامه نویسی – Telegram
DevTwitter | توییت برنامه نویسی
23.6K subscribers
4.36K photos
358 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
امنیت:  Go با Secret mode از اسرار شما محافظت می‌کند!
تیم Go در حال افزودن یک ویژگی امنیتی حیاتی به نام runtime/secret است. اما این قابلیت جدید چیست و چرا یک تغییر بزرگ برای امنیت برنامه‌ هاست؟

مشکل اصلی چه بود؟
تا امروز، توسعه‌ دهندگان برای پاک کردن کلیدهای حساس از حافظه، مجبور بودند به "هک‌ های ناجور" (unholy hacks) و استفاده از reflection روی بیاورند. چرا؟ چون خود Go هیچ تضمینی برای پاک کردن فوری اطلاعات از RAM نمی‌داد و کلیدها ممکن بود در memory dump لو بروند.

راه حل secret چیست؟
حالا Go یک راهکار استاندارد و داخلی فراهم کرده! با استفاده از تابع secret.Do، کد حساس شما درون یک بلاک امن اجرا می‌شود. به محض خروج از این بلاک، Go فوراً و با دقت تمام داده‌های حساس (روی stack و registers) را پاک می‌کند.

نتیجه نهایی:
امنیت واقعی در سطح حافظه: کلیدها بلافاصله پس از استفاده، نابود می‌شوند.
راهکار استاندارد و رسمی: دیگر نیازی به reflection یا ترفند های غیراستاندارد نیست.
توانمند سازی کتابخانه‌ ها: این ویژگی به توسعه‌ دهندگان کتابخانه‌ های رمزنگاری قدرت می‌ دهد تا ابزارهای امن‌ تری برای کل جامعه Go بسازند.

این ویژگی که از یک بحث طولانی در سال ۲۰۱۷ شروع شد، قرار است در نسخه‌  Go 1.26 ارائه شود و یک گام بزرگ برای امنیت کل اکوسیستم است.

https://github.com/golang/go/issues/21865

@DevTwitter | <Saeed Shamsi/>
29🔥3👍2🍌2
#کدبوک

یک منبع جامع و تمرینی برای تسلط بر الگوریتم‌ها با Python:

- مجموعه‌ای گسترده از بیش از ۳۰۰ الگوریتم متنوع
- تمرکز بر حل مسئله و تفکر الگوریتمی
- پیاده‌سازی‌ها به زبان ساده و قابل‌فهم پایتون
- مناسب برای تقویت مهارت‌های الگوریتمی و آمادگی مصاحبه‌ها


* فایل PDF این کتاب رو میتونید از کانال DevBooks که لینکش توی بیو هست دانلود کنید.

@DevTwitter
13👍2
ولیدیشن داده‌های ایرانی با Zod

توی یکی از پروژه‌هام که با Zod کار می‌کردم، خودم دقیقاً به همون چالشی خوردم که احتمالاً خیلی‌ها تجربه‌ش کردن.
همه‌چیز خوب پیش می‌رفت تا رسیدیم به داده‌های ایرانی…
کد ملی، شناسه ملی، شبا، شماره کارت، موبایل، اعداد فارسی کاربر و…
گشتم دنبال یه راه‌حل آماده که تمیز، به‌روز و واقعاً با Zod مچ باشه.
یا چیزی که می‌خواستم پیدا نشد، یا شاید هم من درست نگشته بودم
در هر صورت، چیزی که به دردم بخوره دستم نیومد.
برای همین تصمیم گرفتم خودم این بخش رو یک‌بار درست حل کنم.
نتیجه شد zod-ir
یک پکیج سبک و TypeScript-first برای ولیدیشن داده‌های ایرانی،
طوری که بدون دردسر کنار Zod، React Hook Form، Next.js، NestJS و Node.js بشینه.
فیچرها به‌صورت خلاصه:
- ولیدیشن کد ملی با الگوریتم رسمی checksum
- شناسه ملی اشخاص حقوقی
- شماره کارت بانکی (Luhn)
- شبا / IBAN با checksum استاندارد (ISO 7064)
- شماره موبایل با حالت‌های مختلف و strict
- تلفن ثابت با کد شهر
- پاسپورت ایرانی
- کد پستی ۱۰ رقمی
- تبدیل خودکار اعداد فارسی/عربی به انگلیسی (preprocess)
- پیام خطا به فارسی و انگلیسی
الان نسخه 1.2.1 منتشر شده و تو همین مدت،
۳۵۰+ دانلود هفتگی داشته که نشون می‌ده این مسئله فقط چالش من نبوده.
اگه تو پروژه‌هاتون با Zod کار می‌کنید و به ولیدیشن‌های ایرانی نیاز دارید،
خوشحال می‌شم امتحانش کنید.
نصب:
npm i zod-ir
https://www.npmjs.com/package/zod-ir
https://github.com/Reza-kh80/zod-ir

@DevTwitter | <Reza Kheradmandi/>
4👍7315🔥1
دیشب داشتم درس میخوندم که هی دیدم میرم گوشیم بینش و لپ تاپ جلوم بازه ،هیچی دیگه یه مینی اپ ساختم اگه ۵دقیقه afkبودم سریع الرت بده بگه "برگرد سر کارت!"
https://github.com/AMIRAK-code/idle-monitor-alert

@DevTwitter | <StarKid/>
1🍌63👍298🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
بیش از ۷۵۰۰ تمپلیت ورکفلو n8n کاملاً رایگان توی یک سایت جمع شده
تا دیگه برای هر اتوماسیونی که میخوای بسازی،
لازم نباشه چرخ رو از صفر اختراع کنی!

تا حالا شده یه ایده خفن برای اتوماسیون داشته باشید ولی ندونید دقیقاً چه نودهایی (Nodes) رو باید به هم وصل کنید؟ یا از اون «صفحه سفید» شروع کنی و هی ارور بگیرید؟

توی این سایت هزاران نفر قبل از ما مسیر رو رفتن و ورکفلوهاشون رو به اشتراک گذاشتن. دنبال ورکفلوهای پیشرفته CRM یا هوش مصنوعی هستی؟ هست و کلی use case های دیگه.

توی ویدیو کامل نشون دادم چطوری در عرض چند ثانیه فایل JSON رو دانلود و توی پنلت ایمپورت کنید. اینطوری به جای ۳ ساعت وقت گذاشتن برای ساختن، ۳ دقیقه وقت میذارید برای شخصی‌سازی!

لینک سایت رو توی کامنت اول براتون گذاشتم. اگر هم این پست براتون مفید بود خوشحال میشم با ریپست کردن به دیده شدن بیشترش کمک کنید
https://n8nworkflows.xyz/

@DevTwitter | <Mohammadrasoul Asghari/>
120👍7👎2🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
تو پروژه جدیدم به Multi Select نیاز داشتم، اما دیدم shadcn/ui به‌صورت رسمی چنین کامپوننتی نداره.
بعد از کمی جستجو، به این پیاده‌سازی رسیدم که واقعاً کارمو راه انداخت:
https://wds-shadcn-registry.netlify.app/components/multi-select/
کاملاً Responsive
دارای قابلیت Search
هماهنگ با استایل و تجربه کاربری shadcn/ui
گفتم به اشتراک بذارم، شاید به درد پروژه یکی دیگه هم بخوره

@DevTwitter | <Mohammad Soleimanikia/>
26👍5🍌2🔥1
مدتی بود تو چند تا پروژه Django درگیر محدود کردن دسترسی بعضی مسیرها بر اساس IP و hostname بودم؛
به‌خصوص وقتی Kubernetes و چند تا سرویس داخلی وسط میاد و مدیریت این چیزها با Nginx و Security Group کم‌کم پیچیده می‌شه.

برای همین یه پکیج ساده و منعطف نوشتم به اسم django-ip-access-middleware که این کار رو از داخل خود Django هندل کنه:

کنترل دسترسی بر اساس IP و بازه‌های CIDR (از داخل دیتابیس، بدون ری‌استارت)

تعریف hostnameهای مجاز از طریق env

تشخیص خودکار هم‌شبکه بودن کلاینت و سرور (مناسب Kubernetes)

تعریف قوانین دسترسی بر اساس مسیر:

- exact
- startswith / endswith
- regex

قابل استفاده هم برای APIها و هم پروژه‌های Django معمولی (template-based)

ایده اصلی اینه که به‌جای درگیر شدن با لایه‌های زیرین، تصمیم بگیریم: چه IP یا سرویسی به کدوم مسیر دسترسی داشته باشه، مستقیماً از داخل Django.

این پکیج هنوز جا برای بهتر شدن داره و خوشحال می‌شم اگر:
روی پروژه‌های واقعی امتحانش کنی
باگ یا ایده‌ای داشتی Issue بزنی
یا برای بهبودها (تست، داکیومنت، فیچر جدید) PR بدی

نصب: pip install django-ip-access-middleware

سورس‌کد
https://github.com/mhmohamad1380/django-ip-access-middleware

@DevTwitter | <Mohammad Hosseini/>
👍17🍌43🔥1
آموزش راه اندازی اپلیکیشن لاراولی در سریعترین زمان ممکن با laravel installer
همیشه به نظر من بهترین روش برپایی یک اپلیکیشن لاراولی داکر است اما این روش خیلی ساده و کاربردی میتونه یه جاهایی بدرد بخوره که یا محیط اجرای داکر موجود نیست یا زمان پیکره بندی .
یک ویدئو در کانال یوتیوب شخصی من

https://www.youtube.com/watch?v=RcwMhRdulNg&feature=youtu.be

@DevTwitter | <Abolfazl Sabagh/>
110🔥4👍3
رقیبمون با یه محصول "زشت" بازار رو گرفت؛ در حالی که ما درگیر خوشگل کردن دکمه‌ها بودیم!

چند سال پیش توی پروژه‌ای بودم که مدیرش عاشق کلمه پرفکت بود. هر دوشنبه جلسه میذاشتیم. روی وایت‌برد ایده‌های شاهکار مینوشتیم. "این دکمه انیمیشن داشته باشه."، "اون گزارش باید خروجی اکسل و PDF همزمان بده."، "UI باید در حد اپل باشه."

ما داشتیم برای ایده‌آل میجنگیدیم. احساس میکردیم قراره تاریخ‌سازی میکنیم.

نتیجه؟ یه فاجعه‌ی تمام‌عیار.

۶ ماه گذشت و ما هنوز داشتیم دکمه‌ها رو پولیش میکردیم. یه روز صبح بیدار شدیم و دیدیم رقیبمون با یه محصول "نصفه و نیمه"، "زشت" و "باگ‌دار" اومد بالا.

ما خندیدیم: "این چیه؟ آبروریزیه!" ولی بازار نخندید. بازار خرید.

چرا؟ چون وقتی ما داشتیم توی آزمایشگاه روی "کمال‌گرایی" کار میکردیم، اونا داشتن توی "بازار" فیدبک میگرفتن. اونا باگ‌هاشون رو با مشتری حل کردن، ما باگ‌هامون رو با تخیلاتمون.

به این پدیده میگن: Feature Creep (خزش ویژگی). این قاتلیه که با لباس شیک کیفیت میاد تو شرکتت و استارتاپت رو خفه میکنه.

رید هافمن (بنیان‌گذار لینکدین) یه جمله‌ داره که میگه: "اگر از اولین نسخه محصولتان شرمنده نیستید، یعنی خیلی دیر لانچ کرده‌اید."

محصول کامل، محصولیه که مرده. محصول زنده، ناقصه ولی داره کار میکنه.

درس امروز: هر فیچری که قبل از لانچ (فقط برای خوشگل‌تر شدن) اضافه میکنی، یه میخ جدید به تابوت محصولته.

@DevTwitter | <Hossein Moradi/>
1👍14416🔥3🍌1
This media is not supported in your browser
VIEW IN TELEGRAM
تقویم شمسی برای Blazor به صورت RazorComponent نه پکیج
چون کدش دست خودتون هست میتونید با تم سایت تون هماهنگ کنید.

فقط کافیه کامپوننت رو توی پروژه‌تون کپی و استفاده کنید.
لینگ گیت هاب:
https://github.com/azade1490/PersianCalendarBlazor
دوتا کامپوننت تقویم هست ، یکی با انتخاب تاریخ بسته میشه و اون یکی سه تا دکمه‌‌ی تاریخ امروز ، انصراف و تایید داره.

با پیشتیبانی از سال کبیسه
با استفاده از کلاس PersianCalender
بدون جاوااسکریپت، بدون Bootstrap
فقط html و css و سی‌شارپ
مناسب Blazor Server و WASM


@DevTwitter | <Mahnaz Azad/>
18🍌8👍2👎1
بزرگترین درسی که در سِمت CTO آموختم:
اصول Clean Code اغلب دروغ هستند!

این یک اعتراف است: من سال‌ها به تیمم اجازه نمی‌دادم کدی بنویسند که برای بیزینس حیاتی بود، فقط چون از نظر فنی "تمیز" نبود.

​من یک CTO وسواسی بودم که برای رعایتِ قوانین SOLID یا داشتن یک معماری بی‌نقص، سرعت رسیدن به بازار (Time-to-Market) را قربانی می‌کردم.
ما تبدیل شده بودیم به تیمی که سریع‌ترین کدهای تاریخ را برای محصولی نوشت که هنوز مشتری نداشت!

​کمال‌گرایی فنی (Technical Perfectionism) در فاز MVP، قتلِ خاموش استارتاپ‌هاست.
کتاب‌های معروف مهندسی نرم‌افزار به ما "چگونه خوب کد زدن" را یاد می‌دهند، اما هیچوقت نمی‌گویند "چه زمانی باید به عمد بد کد بزنیم."

​بدهی فنی، اما این‌بار آگاهانه:
​امروز، دیدگاه من ۱۸۰ درجه تغییر کرده است. به جای وسواس روی "Clean Code"، تمرکز من روی "کد تاکتیکی" است.

​تصمیم‌گیری به عنوان یک CTO، مدیریت تریدآف (Trade-off) است. من بدهی فنی (Tech Debt) را نه به عنوان یک شکست، بلکه به عنوان یک ابزار استراتژیک می‌بینم:

​بدهی ناآگاهانه: نوشتن کد کثیف از روی تنبلی یا بی‌دانشی (این غیرقابل بخشش است و باید حذف شود).

​بدهی آگاهانه (وام بیزینسی): ما آگاهانه، کیفیت نگهداری را فدای سرعت عرضه می‌کنیم. این شبیه به گرفتن وام تجاری با نرخ بهره مشخص است. ما باید سریع به بازار برسیم، و قول می‌دهیم که وقتی ارزش (Value) اثبات شد، اصل و سود این وام را با Refactoring پس دهیم.

​ سه حقیقت تلخ مهندسی
​کتاب Clean Code به ما یاد داد تمیز بنویسیم، اما یاد نداد "کی" تمیز بنویسیم.
​کتاب Clean Code رابرت مارتین مقدس است، اما "Time-to-Market" مقدس‌تر.
​اگر استارتاپ هستید، معماریِ "Good Enough" (به اندازه کافی خوب)، تنها معماری درستی است که نیاز دارید.

​اگر تیم شما ۶ هفته وقت می‌گذارد تا زیرساختی بسازد که توانایی مدیریت ۵ میلیون کاربر را دارد، در حالی که شما ۱۰ کاربر هم ندارید، شما در حال "بیش‌مهندسی" (Over-engineering) هستید.

​من امروز یک کد کثیف که ارزش را به سرعت می‌رساند را به یک شاهکار معماری که هفته‌ها طول کشیده، ترجیح می‌دهم.


@DevTwitter | <Bijan Biria/>
👍8722👎5
یک پروژه متن‌باز با ASP.NET Core هست که برای ساخت یک فضای ابری شخصی و ساده طراحی شده.
هدف اینه که یه نمونه واقعی و تمیز برای مدیریت فایل‌ها و پوشه‌ها داشته باشیم در بستر وب .

داخلش می‌تونی:
مدیریت فایل و پوشه داشته باشی،
فضای مصرفی رو کنترل کنی،
توضیحات برای هر فایل بنویسی


پروژه intentionally ساده نگه داشته شده تا با مشارکت بقیه بهتر بشه با معماری mvc توسعه داده شده اگر حوصله و وقت داشتید فورک بگیرید تا رو ایراداتش کار کنیم

https://github.com/mohammadfpage/Personal-Cloud-Drive


@DevTwitter | <Mohammad/>
126🍌11👍2🔥2
رابط کاربری وقت نکردم درست کنم و هنوز رو ترمیناله، ولی ورژن ۱.۰ رو گفتم آپلود کنم حالا که باگ‌هاشو درست کردم. راهنمای کامل نوشتم و برای اجراش اگر روی ویندوز هستید WSL نیاز دارید.
رابط کاربری درست کنم براش، ورژن پورتابل هم برای ویندوز درست می‌کنم براش.

https://github.com/Bloody-Crow/UltraDownloader

@DevTwitter | <Bloody Crow of Painhurts />
👍10👎9🔥3🍌3
#کوته_نیوز

گیتهاب self-runner رو پولی کرد
0.002 دلار به ازای هر دقیقه

@DevTwitter
🍌84👎63🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
اگه دنبال یه راه راحت و استاندارد برای وصل کردن ایجنت‌های هوش مصنوعی به فرانت‌اند اپلیکیشن‌تون هستید، این AG-UI رو از دست ندید!
چی هست؟ یک لایبرری سبک و event-based هست که کار تعامل بین ایجنت و کاربر (مثل استریم ریل‌تایم و مدیریت استیت) رو خیلی ساده می‌کنه. خوراکِ ساختن اپ‌های ایجنت‌محور و خفنه. بخصوص وقتی که ایجنت ابزارهای مختلف را صدا میکنه خیلی راحت میتونید تمام این وضعیت ها را سمت فرانت اند توی UI نشون بدید. من یک chat app نوشتم باهاش که نشون میده چطور tool calls توی UI نشون داده میشند. البته فقط شبیه سازی کردم ولی راحت میتونید فاکشن واقعی را کال کنید. میتونید کد این اپ که نوشتم را بسط بدید و کلی چیز دیگه بهش اضافه کنید.
AG-UI Github: https://github.com/ag-ui-protocol/ag-ui
اینم گیت هاب خودم:
https://github.com/mallahyari/agentic-chat-ui

@DevTwitter | <Mehdi Allahyari/>
10👍4🍌2
این اتفاقی که برای یوتیوبر‌های فارسی افتاد نشون داد که شما حتی اگر خارج از ایران هم باشی، بازم در امان نیستی!

@DevTwitter
👍131🍌294👎2
سایت System Design یکی از بهترین منابع برای فهم طراحی سیستم‌های بزرگیه که هر روز استفاده می‌کنیم.
خودم تقریبا هر روز یکی از مطالبش رو می‌خونم و واقعا دید خوبی برای پیاده‌سازی نرم‌افزار می‌ده؛
از WhatsApp و YouTube تا Instagram و Redis و ...

https://newsletter.systemdesign.one/

@DevTwitter | <Mohammad/>
👍3010🔥2
وقتی میکروسرویس‌ها بدون API Management وارد Production می‌شن…

خیلی از تیم‌ها با هیجان می‌رن سمت معماری Microservices؛
سرویس‌ها کوچک می‌شن، تیم‌ها مستقل می‌شن، deploy سریع‌تر می‌شه…
اما یه سؤال مهم معمولاً جا می‌مونه:

چه کسی قراره این همه API رو مدیریت کنه؟
اینجاست که API Management از یک ابزار لوکس تبدیل می‌شه به یک ضرورت.
در معماری Monolith، کنترل دسترسی، rate limit، versioning و monitoring معمولاً داخل خود اپلیکیشن پیاده‌سازی می‌شه.

اما در معماری Microservices، تکرار این موارد داخل هر سرویس یعنی کد تکراری، رفتارهای ناسازگار، policyهای امنیتی متفاوت و دردسر در نگهداری

دقیقاً اینجا API Management وارد بازی می‌شه:
- یک نقطه‌ی مرکزی برای Authentication و Authorization
- اعمال Rate Limiting و Throttling به‌صورت یکپارچه
- مدیریت Versioning بدون دست‌زدن به سرویس‌ها
- امکان Observability متمرکز (Logs، Metrics، Traces)
- محافظت از سرویس‌ها در برابر traffic ناخواسته یا مخرب

نکته مهم اینه که API Manager جای Microservice رو نمی‌گیره،
بلکه مثل یک قرارداد پایدار بین سرویس‌ها و مصرف‌کننده‌ها عمل می‌کنه.
تجربه‌ی من این بوده:
هر چقدر تعداد سرویس‌ها بیشتر می‌شه، نبود API Management هزینه‌ی بیشتری به تیم تحمیل می‌کنه — چه از نظر امنیت، چه پایداری، چه سرعت توسعه. Microservices بدون API Management قابل اجرا هست…
اما به‌سختی قابل رشد و نگهداریه.


@DevTwitter | <Mobin Mokhtarzadeh/>
👍24🍌64🔥2
توی پروژه‌هایی که از API مدل‌های Ai استفاده می‌کنم، همیشه با یه چالش تکراری روبرو میشم: نیاز به انعطاف‌پذیری بالای کد برای اینکه بتونم به‌راحتی مدل یا provider جدیدی رو به پروژه وصل کنم، در حالی که ساختار header، body یا نحوه احراز هویت هر سرویس کاملاً می تونه متفاوت باشه.

برای حل این مسئله، یه کتابخونه کوچک ساختم که به کمک یک کانفیگ ساده، امکان اتصال به هر provider دلخواهی رو فراهم می‌کنه. علاوه بر این، سیستم تمپلیت‌های آماده داره و همینطور مکانیزم retry خودکار که برای سناریوهای production مناسبه.

اسم پروژه Callix هست و از طریق گیت هاب یا حتی مخزن رسمی Rust می تونید بهش دسترسی داشته باشید.

https://crates.io/crates/callix
https://github.com/naseridev/callix

پ.ن: بله، قطعاً اولین کسی نیستم که به این ایده رسیده و احتمالاً پروژه‌های مشابهی از قبل وجود داره، اما به هر حال فرآیند طراحی و پیاده‌سازیش تجربه خیلی جذابی برام بود.

@DevTwitter | <Nima Naseri/>
👍118🍌3
اگه توی پروژه‌های Laravel تون به یه لیست آماده و تمیز از استان‌ها، شهرستان‌ها و شهرهای ایران نیاز داشتید،
می‌تونید از پکیج اوپن‌سورسی که برای اینکار ساختم، استفاده کنید

Laravel Iran Cities
ساده برای استفاده (شامل مدل ها و Seeder)
مناسب فرم‌ها، ثبت‌نام، آدرس‌دهی و…
قابل توسعه و شخصی‌سازی

سورس‌کد در گیت‌هاب:
https://github.com/sadegh19b/laravel-iran-cities

اگر به دردتون خورد بدید یا توی پروژه‌هاتون استفاده کنید.

@DevTwitter | <Sadegh Barzegar/>
26👍7🔥3🍌1
امروز می‌خوام درباره یکی از کتابخونه‌هایی صحبت کنم که واقعاً دید من رو نسبت به State Management در React تغییر داده.

والتیو (Valtio) بر پایه‌ی مفهوم Proxy-based State ساخته شده و مدیریت استیت رو به شکل خیلی ساده و قابل فهمی ارائه می‌ده. دیگه خبری از boilerplateهای سنگین، reducerهای طولانی یا پیچیدگی‌های غیرضروری نیست؛ فقط یک آبجکت جاوااسکریپتی و ری‌اکتیویتی واقعی.

چیزی که Valtio رو متمایز می‌کنه:
رندر مجدد فقط برای کامپوننت‌های مرتبط با تغییر استیت انجام می‌شه
کدها تمیزتر، خواناتر و نگهداریشون راحت‌تر می‌شه
تجربه توسعه‌دهنده (DX) به‌طور محسوسی بهتر می‌شه

اگه تو پروژه‌هات دنبال سادگی، عملکرد بهتر و تمرکز بیشتر روی منطق اصلی هستی، Valtio قطعاً ارزش بررسی رو داره.
اگه قبلاً باهاش کار کردین یا نظری درباره آینده‌ی state management در React دارین، خوشحال می‌شم تو کامنت‌ها باهم گپ بزنیم

لینک سایت: https://valtio.dev


@DevTwitter | <Soheil Ghanbary/>
👎10👍43🔥1