DevTwitter | توییت برنامه نویسی
32.6K subscribers
5.54K photos
447 videos
6 files
5.47K links
توییت های برنامه نویسی و طراحی وب :)

Admin:
@dvtwi

Hashtags:
devtwitter.t.me/5

DevBooks Channel:
https://t.me/+AYbOl75CLNYxY2U0

Github:
https://github.com/DevTwitter

X:
https://x.com/devtwittir
Download Telegram
یک تیم کامل سه‌بعدی برای Blender متن‌باز شده؛ از طراحی کانسپت و مدل‌سازی گرفته تا انیمیشن، نورپردازی، دوربین و صدا، همه در قالب یک پلاگین!

معرفی Scenario Plugin؛ ابزاری که می‌تونی مستقیم داخل Blender ازش استفاده کنی یا از طریق MCP به Claude Code وصلش کنی.

قابلیت‌های این پلاگین:

طراح کانسپت (Concept Artist) ساخت تصاویر کانسپت از روی پرامپت و استخراج تصاویر مرجع از نمای فعلی محیط Blender.

هنرمند سه‌بعدی (3D Artist) ساخت Mesh از متن یا عکس و تغییر بافت یا بازسازی مش مدل انتخاب‌شده.

انیماتور (Animator) ریگ کردن کاراکتر انتخاب‌شده و تولید حرکت از روی توضیحات متنی.

هنرمند متریال (Surfacing Artist) اعمال متریال‌های PBR روی اسلات‌های مختلف و ساخت نقشه‌های متریال از روی عکس.

طراح صحنه (Layout Artist) ساخت بلوک‌بندی اولیه صحنه (Greybox) از روی توضیحات و تولید محیط‌ها و آسمان‌های ۳۶۰ درجه.

اپراتور دوربین (Camera Operator) تعریف مسیر حرکت دوربین با یک جمله و ایجاد حرکت‌هایی مثل Orbit، Dolly، Crane و Flyover.

متخصص رندر (Render Artist) تبدیل نمای محیط به تصویر نهایی باکیفیت و تبدیل Playblast به شات نهایی.

طراح صدا (Sound Designer) تولید موسیقی، صداگذاری و افکت‌های صوتی و انتقال آن‌ها به Sequencer پروژه.

نکته جذاب اینجاست که می‌تونی این قابلیت‌ها رو از طریق Claude Code و MCP وارد جریان کاری خودت کنی؛ یعنی به‌جای انجام دستی تک‌تک مراحل، بخشی از فرایند ساخت صحنه و ویدیو رو با دستورهای متنی مدیریت کنی.

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

مخزن GitHub :
https://github.com/scenario-labs/blender-plugin

@DevTwitter | <Yarad/>
❤65🔥47👍2
بزرگترین دیتابیس مواد غذایی فیگ‌فیت با ۱۵۰۰۰ ورودی رو به شکل رایگان منتشر کردیم:
https://kaggle.com/datasets/amirparsadd/figfit-food-database
خوشحال می‌شم ببینم چه چیزایی باهاش می‌سازید

@DevTwitter | <Amirparsa Baghdadi/>
🔥25❤4👍1
داری روی سرور جدیدت با ۵۱۲ هسته Nginx رو کانفیگ می‌کنی، همه‌چیز خوبه و خوشحالی که چه سرور خفنی داری
بعد یهو nginx -s reload می‌زنی و کل سرویس‌ها از دسترس خارج می‌شن

امروز موقع ریلیز یکی از پروژه‌ها متوجه شدیم که Nginx یه محدودیت کمتر شناخته‌شده داره:

NGX_MAX_PROCESSES

مستر برای Child Processها حداکثر 1024 تا Slot داره؛ یعنی Nginx نمی‌تونه بیشتر از این تعداد Process رو همزمان مدیریت کنه.

البته این عدد کاملاً جدا از worker_connections هست که داخل nginx.conf تعیین می‌کنیم و مشخص می‌کنه هر Worker چند Connection می‌تونه داشته باشه.

ضمن اینکه محدودیتی که اینجا راجع بهش صحبت می‌کنم از داخل nginx.conf قابل تغییر نیست و توی سورس Nginx تعریف شده.

حالا اگه worker_processes auto داشته باشی، روی ۵۱۲ Core تقریباً ۵۱۲ تا Worker داری.

موقع Reload هم Nginx اول Workerهای جدید رو بالا میاره و Workerهای قدیمی رو نگه می‌داره تا Connectionهای موجودشون تموم بشه.

یعنی خیلی راحت می‌رسی به:

512 old workers + 512 new workers = 1024

حالا اگه فقط چند تا Worker از Reload قبلی هنوز Gracefully خارج نشده باشن، دیگه برای ساختن همه Workerهای جدید Slot کافی وجود نداره

و اینجاست که فاجعه اتفاق می‌افته:

no more than 1024 processes can be spawned

روی سرورهای خیلی بزرگ، استفاده از worker_processes auto همیشه هم بهترین انتخاب نیست.

پس بهتره همیشه حواسمون به کانفیگ‌هایی که در حالت auto میزان مصرف منابعشون رو بر اساس منابع موجود سرور انتخاب می‌کنن باشه؛ چون چیزی که روی یه سرور معمولی کاملاً منطقیه، روی یه سرور خیلی بزرگ ممکنه ما رو به یه Limit فاجعه‌بار برسونه


@DevTwitter | <Mohammad Falahat/>
❤15👍3🍌3
Forwarded from DevTwitter Ads.
سلام دوستان وقتتون بخیر
امیدوارم سالم و سرحال باشین
این پرسشنامه مربوط به یه کار تحقیقاتی در حوزه پت هست و نهایتاً ۴-۳ دقیقه وقت می‌بره پر کردنش؛ ممنون میشم اگر پت دارید پر کنین.
در انتها هم اگر شماره‌تون رو وارد کنید یه هدیه ناقابلی برای خرید اقلام پت‌، تقدیم‌‌تون میشه 🙏🏻🌱
🍌14👍5👎4
آیا همیشه برای دریافت داده‌های ورودی به یک سرویس اختصاصی نیاز داریم ؟ معرفی RudderStack
به‌عنوان مهندس داده، یکی از اولین قدم‌ها در ساخت یک خط پردازش داده، دریافت رویدادها از کلاینت‌های مختلف و انتقال سریع و قابل‌اعتماد آن‌ها به زیرساختی مثل Kafka است.

بسیاری از تیم‌ها برای این کار سراغ توسعهٔ یک سرویس اختصاصی با زبان‌هایی مثل Go می‌روند؛ اما پیاده‌سازی و نگهداری SDKها، بافرگذاری، ارسال گروهی، تلاش مجدد و مقیاس‌پذیری، خودش به پروژه‌ای جداگانه تبدیل می‌شود.

آیا واقعاً لازم است این بخش را از صفر بسازیم؟

معرفی RudderStack؛ درگاه ورود رویدادها به خطوط پردازش داده
رادراستک (RudderStack) در اصل یک پلتفرم مدیریت داده‌های مشتریان (CDP) است که برای جمع‌آوری، پردازش و انتقال داده‌های رفتاری از وب‌سایت‌ها، اپلیکیشن‌ها و سرویس‌های مختلف به کار می‌رود. بخشی از این پلتفرم به‌صورت متن‌باز ارائه شده است. در این پست، مشخصاً Rudder Server را معرفی می‌کنیم؛ موتور سمت سرور این پلتفرم که وظیفهٔ پردازش و مسیریابی رویدادها را بر عهده دارد و می‌توان از آن به‌عنوان لایهٔ ورود رویدادها به خط پردازش داده، برای مثال پیش از Kafka، استفاده کرد.
معماری پیشنهادی به کمک این ابزار، به شکل زیر خواهد بود :

Client SDK → RudderStack → Kafka → Consumers → ClickHouse

در این معماری، RudderStack رویدادها را از کلاینت‌های مختلف دریافت می‌کند و به Kafka تحویل می‌دهد. سپس مصرف‌کنندگان Kafka مسئول پردازش و تبدیل داده‌ها هستند و در نهایت، داده‌ها می‌توانند در ClickHouse ذخیره شوند.

چه قابلیت‌هایی دارد؟

پشتیبانی از SDKهای متنوع: پشتیبانی از پلتفرم‌هایی مانند JavaScript، iOS، Android، React Native و Flutter و زبان‌هایی مثل Python، Go، Java، .NET و Rust.

ارسال کارآمد: بافرگذاری و ارسال گروهی رویدادها برای کاهش سربار ارتباطات شبکه.

اتصال به Kafka: پشتیبانی از ارسال گروهی پیام‌ها، فشرده‌سازی و قابلیت‌های مرتبط با قالب و اعتبارسنجی داده‌ها.

مقیاس‌پذیری افقی: امکان اجرای چند نمونه پشت Load Balancer برای افزایش ظرفیت دریافت رویدادها.
(هر چند نسخه رایگان آن تک نود هست اما می‌توان با اتخاذ راهکارهایی ، از چند نسخه آن پشت یک Load Balancer استفاده کرد)
میزبانی مستقل: امکان استقرار نسخهٔ متن‌باز در زیرساخت خودمان.

️ چند نکتهٔ عملیاتی

توان عملیاتی واقعی به سخت‌افزار، اندازهٔ رویدادها و تنظیمات وابسته است؛ بنابراین اعداد بنچمارک را باید در محیط خودمان آزمایش کنیم.

همچنین اگر ترتیب رویدادهای هر کاربر اهمیت دارد، باید مسیریابی، رفتار مصرف‌کنندگان و کلید پارتیشن‌بندی Kafka را با دقت طراحی کنیم. اجرای چند نمونه به‌تنهایی تضمین‌کنندهٔ ترتیب رویدادها نیست.

یک نکتهٔ تکمیلی

اگر مسئلهٔ ما دریافت داده‌های تله‌متری، مانند لاگ، متریک و تریس است، OpenTelemetryCollector هم راهکار مهمی برای دریافت و انتقال این نوع داده‌هاست. اما برای رخدادهای محصول و کسب‌وکار، مانند کلیک کاربران، ثبت سفارش و فعالیت اپلیکیشن‌ها، RudderStack می‌تواند گزینه‌ای برای لایهٔ ورود رویدادها باشد.

کد منبع: https://github.com/rudderlabs/rudder-server
وب‌سایت: https://www.rudderstack.com/

@DevTwitter | <Mojtaba Banaie/>
👍3❤1
مدیریت JWT در اندروید؛ Retrofit یا Ktor Client؟

در بررسی احراز هویت با JWT، یکی از نکاتی که برام جالب بود، تفاوت رویکرد Retrofit و Ktor Client در مدیریت توکن‌هاست.

استفاده از Retrofit + OkHttp: برای پروژه‌های Native Android گزینه‌ای جاافتاده‌ست. با Interceptor و Authenticator می‌تونیم ارسال توکن و مدیریت پاسخ‌های 401 و فرایند Refresh رو پیاده‌سازی کنیم؛ البته بخش مهمی از این منطق به طراحی و کدنویسی خودمون نیاز داره.

استفاده از Ktor Client: با پلاگین Auth و قابلیت Bearer Authentication، بخشی از این فرایند رو ساده‌تر می‌کنه. همچنین برای پروژه‌های Kotlin Multiplatform گزینه مناسبیه.

البته در هر دو روش، ذخیره امن توکن‌ها، مدیریت خطاها و جلوگیری از Refresh هم‌زمان درخواست‌ها اهمیت زیادی داره.

در نهایت، انتخاب منوط به نیاز پروژه‌ست؛ Retrofit برای Native Android اکوسیستم جاافتاده‌ای داره و Ktor هم با قابلیت‌های داخلی و پشتیبانی از Multiplatform انعطاف خوبی ارائه می‌ده.

AndroidDevelopment Kotlin JWT Retrofit Ktor Authentication
برنامه_نویسی اندروید برنامه_نویس_اندروید

@DevTwitter | <Amir Hossein Jalili/>
❤3👍1🍌1
Please open Telegram to view this post
VIEW IN TELEGRAM
❤23👍5🍌1
Forwarded from DevTwitter Ads.
❓امروزه علت و ریشه‌ی عدم ثبات و زودرنجی بازیکنان برزیلی چیه؟

❓چرا انسان به کنش‌های منفی نسبت به کنش‌های مثبت اهمیت بیشتری میده؟

❓آیا روشی هست تا تمرین و استمرار در یک کار، برای ما لذت‌بخش باقی بمونه؟

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

🆔 @footballaslife
🍌11👎2🔥1
داشتم از روی کنجکاوی بررسی میکردم که چطور میشه جمع‌آوری و انتقال لاگ‌های لینوکس رو قابل‌ اعتمادتر کرد؛ اینکه اگر مقصد از دسترس خارج شد، داده‌ها چه وضعیتی پیدا میکنن و چطور میشه تحویلشون رو مدیریت کرد. همین کنجکاوی کم‌کم به دِئنا (daena) رسید؛ پروژه‌ای که تا الان نسخه‌ 0.2.0 پیاده‌سازی کردم.

دِئنا لاگ‌ها رو از systemd journal میخونه، از یه پایپ لاین ماژولار برای پردازش، فیلتر و افزودن اطلاعات تکمیلی به رکوردها استفاده میکنه و قبل از ارسال، اونا رو با lmdb روی دیسک نگه میداره.

بخش جذاب ماجرا برای من، مدل تحویل داده‌ هاس که هر مقصد (sink) وضعیت تحویل مستقل خودش رو داره؛ بنابراین اختلال یه مقصد لزوماً بقیه رو متوقف نمیکنه. ارسال مجدد با backoff مدیریت میشه و رکوردهای ناموفق هم از طریق dead-letter queue قابل بررسی و بازیابی هستن...

معماری پروژه هم ماژولاره؛ سورس ها، پروسسورها و sink ها قابل توسعه‌ اند و میشه
رکوردها رو به مقصدی مثل loki یا هر سرویس که روی http فرستاد. برای مدیریت و عیب‌یابی هم یه api روی grpc و یه cli پیاده کردم تا وضعیت سرویس، صف تحویل و رکوردهای ناموفق قابل بررسی باشن.

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

اگه دوست داشتین خوشحال میشم نگاهی بهش بندازید اگه مفید بود بهتون ایده بده یا ازش استفاده کنید.
لینک سورس پروژه:
https://src.panahifar.ir/ahp/daena

@DevTwitter | <Amir Husayn Panahifar/>
❤11👍1💔1
خب من دوباره کلی توکن کلاد سوزوندم تا مشکل اساسی فارسی‌نویسی رو توی ترمینال ویندوز حل کنم

به‌نظرم این پروژه واقعاً کاربردیه، چون تا قبل از این عملاً امکان استفاده درست‌وحسابی از ترمینال‌های ویندوز نبود

https://github.com/amiralimanzar/windowsterminal-rtl

@DevTwitter | <Amir Ali Manzar/>
❤68🍌16👍7
This media is not supported in your browser
VIEW IN TELEGRAM
یه اپ برای مدیریت clipboard توی مک. دیگه با خیال راحت چندین چیز رو میشه کپی کرد و انتخاب کنی کدومش paste بشه.

موارد مشابه از ۱۰ دلار تا ۱۰۰ دلار قیمتشونه. ممکنه ورژن متن باز هم باشه اما این نسخه رو من کاستومایز کردم.

لینک گیتهاب:‌ https://github.com/sonatina-dream/copywren

@DevTwitter | <Sonata/>
👍14🍌13🔥4
اگر AI بتواند کد را ۱۲ برابر سریع‌تر تولید کند، آیا Git، Code Review و CI/CD ما هم برای چنین سرعتی آماده‌اند؟
مقاله جدید Anthropic درباره بازطراحی Source Control، یک نکته مهم دارد:

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

اعداد جالب‌اند:
- تعداد تغییرات Merge شده در روز، از حدود ۲٬۵۰۰ در ماه مه ۲۰۲۶ به بیش از ۳۰٬۰۰۰ در سپتامبر رسید.
- آن‌ها برای پاسخ به این مقیاس، سیستم کنترل نسخه داخلی خودشان به نام Scion را ساختند و طی پنج ماه، مخزن اصلی را از Git به آن منتقل کردند.
- نتیجه؟ زیرساختی با مصرف CPU و حافظه حدود ۲۰۰ برابر کمتر از زیرساخت قبلی Git Mirror ها و Checkout هایی که تا دو مرتبه بزرگی سریع‌تر شده‌اند.

اما به نظرم مهم‌ترین بخش مقاله، خود Scion نیست؛ بلکه تغییر نگاه به مهندسی نرم‌افزار است.
۱. شاید دیگر هر Job به یک Checkout کامل نیاز نداشته باشد.
ابزار Scion برای محیطی طراحی شده که Agentها و Jobها تقریباً همیشه آنلاین‌اند. به‌جای اینکه هر کلاینت یک مخزن کامل داشته باشد، بسیاری از عملیات از طریق API و روی سرور انجام می‌شوند. فایل‌ها هم فقط در صورت نیاز دریافت می‌شوند.

۲. فرایندهای ساخته‌شده برای انسان‌ها، لزوماً برای Agentها مناسب نیستند.
وقتی صدها یا هزاران تغییر هم‌زمان تولید می‌شوند، مدل سنتی Merge Queue و انتظار برای اجرای تست‌ها ممکن است دیگر کافی نباشد. Anthropic به سمت تست‌های خودکار قبل از Deploy و بعد از Merge رفته است؛ حتی اگر بعضی تعارض‌ها پس از Merge آشکار شوند.

۳. نقش مهندس حذف نمی‌شود؛ تغییر می‌کند.
یکی از بخش‌های تأمل‌برانگیز مقاله این است که مهندسان تیم، Claude را در نوشتن کد از خودشان بهتر می‌دانستند؛ اما همچنان مسئول تصمیم‌های معماری، محدودیت‌های سیستم و انتخاب Trade-offها بودند.
حتی گاهی مهم‌ترین کارشان این بود که به AI بگویند «نه».
چون AI ممکن است راه‌حلی تولید کند که در ظاهر درست است، اما یک محدودیت معماری را نقض می‌کند یا سیستم را بی‌دلیل پیچیده‌تر می‌سازد.

۴. باید Code Review هم تغییر کند.
در این تیم، تمرکز Review به‌سمت بررسی Intent و هدف تغییر حرکت کرده، نه صرفاً خواندن تک‌تک خطوط کد. البته این به معنی حذف بررسی دقیق کد نیست؛ بلکه یعنی با افزایش حجم تغییرات، باید توجه انسانی را روی تصمیم‌ها و ریسک‌های مهم‌تر متمرکز کرد.

به نظرم باید از این مقاله یک نتیجه مهم بگیریم:
ما نمی‌توانیم فقط AI را به فرایند فعلی توسعه نرم‌افزار اضافه کنیم و انتظار داشته باشیم همه‌چیز به همان شکل قبلی کار کند.
اگر تولید کد ارزان‌تر و سریع‌تر شود، گلوگاه‌ها به جاهای دیگری منتقل می‌شوند: معماری، تست، Code Review، کنترل دسترسی، زیرساخت و حتی نحوه Merge کردن تغییرات.
البته خود Anthropic هم تأکید می‌کند که Scion جایگزین عمومی Git نیست؛ این سیستم برای مقیاس بسیار بزرگی از Monorepoها و Agentها طراحی شده است.

مقاله کامل:
https://www.anthropic.com/engineering/redesigning-source-control

@DevTwitter | <Pooya Sabramooz/>
👍9❤4🔥1
مایکروسافت، ابزار جدید، اُپن و رایگان sqlsimtools را با هدف تسهیل مهندسی و شبیه سازیِ «حجم کار[1]» مبتنی بر SQL Server، معرفی نمود.

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

این ابزار به چهار روش در اختیار مهندسان میباشد:
- ابزار محاوره ای sqlsim Studio مختص کاربران ویندوز
- ابزار خط فرمان بومی sqlsim CLI جهت کاربران ویندوز و لینوکس
- ابزار خط فرمان اسکریپتی sqlpysim جهت توسعه دهندگان پایتون در تمامی پلتفرم ها
- ابزار «هوشواره پسند[2]» Workload Bulder جهت کاربران Github Copilot

قابل ذکر است این ابزار فعلا بصورت «پیش-نمایش عمومی[3]» در دسترس قراردارد و نسخه نهایی نیست.

- خبر رسمی در بلاگ مایکروسافت:
https://techcommunity.microsoft.com/blog/sqlserver/introducing-sqlsimtools/4563955
- سایت رسمی:
https://microsoft.github.io/sqlsimtools/
- ریپوی رسمی در گیتهاب:
https://github.com/microsoft/sqlsimtools

@DevTwitter | <Arash Laylazi/>
❤1🍌1