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

@dvtwi

Hashtags:
devtwitter.t.me/5

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

Github:
https://github.com/DevTwitter

X:
https://x.com/devtwittir
Download Telegram
وقتی دارید یه استراکچر توی گولنگ (Golang) تعریف می‌کنید، ترتیب قرار دادن فیلدهاش خیلی مهمه. این ترتیب روی حافظه‌ی که استفاده می‌کنه و سرعت دسترسی بهش تاثیر داره و بهش Memory Alignment می گویند.

اگر تکه کد اول در تصویر رو در نظر بگیریم:
اینجا اول یه char داریم که یه بایت فضا می‌گیره و بعدش یه int که ۴ بایت. بین این‌ها یه فاصله (padding) می‌افته که حافظه‌ی بیشتری می‌گیره.

حالا بیاید بخش دوم کد رو بررسی کنیم:
توی این حالت، اول int میاد و بعد char. حافظه‌بندی بهتری داره و فضاهای خالی (padding) کمتری استفاده می‌شه.

تو معماری‌ های مختلف، این ترتیب‌ها ممکنه تاثیرات متفاوتی داشته باشن. ولی معمولاً تو حالت دوم، حافظه بهینه‌تری استفاده می‌شه و برنامه سریع‌تر عمل می‌کنه.

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

@DevTwitter | <Mohammad Abdorrahmani/>
1👍62🤣15🔥4👎2
DevTwitter | توییت برنامه نویسی
وقتی دارید یه استراکچر توی گولنگ (Golang) تعریف می‌کنید، ترتیب قرار دادن فیلدهاش خیلی مهمه. این ترتیب روی حافظه‌ی که استفاده می‌کنه و سرعت دسترسی بهش تاثیر داره و بهش Memory Alignment می گویند. اگر تکه کد اول در تصویر رو در نظر بگیریم: اینجا اول یه char…
شما وقتی یک سیستمی رو با گولنگ می نویسید و الزامتون برای اینکار سرعت بالا هست ولی اگر شما یکسری تریک ها و best practice ها رو رعایت نکنید عملا اون کد هاتون رو داخل JS یا PHP پیاده سازی می کردید فرقی نمی کرد ( نه فقط گولنگ هر زبان برنامه نویسی یا دیتابیسی).

حالا در Go، یه چیزی داریم به اسم ترازبندی حافظه یا همون Memory Alignment. این ترازبندی به این معناست که داده‌ها توی حافظه باید به یه شکل خاص چیده بشن تا پردازنده بتونه سریع‌تر بهشون دسترسی داشته باشه.

سوال پیش میاد : چرا Memory Alignment اهمیت داره؟!
وقتی داده‌ها تو حافظه درست و حسابی تراز باشن، پردازنده می‌تونه راحت‌تر و سریع‌تر بهشون دسترسی پیدا کنه. اینجوری که پردازنده داده‌ها رو توی بلاک‌های حافظه‌ای مثل 8، 16 یا 32 بیتی می‌خونه و وقتی که این داده‌ها توی مرزهای مشخصی (مثل مضرب 2 یا 4 بایت) قرار بگیرن، همه چی سریع‌تر پیش می‌ره.

البته من در پست قبلی کامل توضیح دادم با مثال

ابزارهای ترازبندی در Go
توی Go می‌تونی با استفاده از پکیج unsafe ترازبندی حافظه رو بررسی کنی. این بسته توابعی مثل unsafe.Alignof داره که می‌تونه ترازبندی یه نوع داده خاص رو بهت بگه.

ی سوال دیگه Memory Alignment چه تاثیری بر روی عملکرد داره؟!
اگه داده‌ها ناهماهنگ باشن، عملکرد برنامه می‌تونه افت کنه و حتی بعضی پردازنده‌ها ممکنه به خاطر این مسئله خطا بدن. به همین خاطر Go سعی می‌کنه همه چی رو تراز کنه.

در ضمن در حال حاضر کامپایلر به صورت خودکار اینکارو انجام نمیده.

@DevTwitter | <Mohammad Abdorrahmani/>
👍42👎2
ایده‌مون اینه که یک رودمپ جامع و باکیفیت بسازیم که نه تنها مسیر یادگیری رو روشن کنه، بلکه برای هر موضوع، دوره‌های آموزشی باکیفیت و کاربردی هم معرفی کنه.

برای خودم بارها پیش اومده که پیام‌هایی دریافت کنم با این سؤال که "فرانت‌اند رو از کجا شروع کنم؟ یا چطور ادامه بدم؟" با توجه به حجم زیاد مطالب و عدم دسته‌بندی مناسب، ما سعی کردیم این منابع رو به صورت یک رودمپ منظم و کاربردی برای همه ارائه بدیم.

مهم‌ترین ویژگی این رودمپ اینه که روی گیت‌هاب منتشر شده تا بتونیم از کمک و مشارکت شما عزیزان برای تکمیل و بهبودش بهره بگیریم. فعلاً با دوره‌های ویدئویی شروع کردیم، ولی در آینده منابعی مثل کتاب و مقاله هم اضافه خواهیم کرد.

امیدوارم این پروژه برای همه شما مفید باشه و بتونیم با هم به رشد و پیشرفت جامعه‌ی توسعه‌دهندگان کمک کنیم!

https://github.com/abolfazl930/frontend-roadmap

@DevTwitter | <Abolfazl Ahmadi/>
👍42🤣116👎2
اگه با مدلهای تصویری کار میکنید این ریپو از انویدیا واقعا به کارتون سرعت خوبی میده با بیشتر مدلهای خوب هم هماهنگه نود کامفی هم داره.
https://github.com/NVIDIA/TensorRT

@DevTwitter | <Xa|!/>
👍16🔥4
ما میخوایم برای چنل یه دامین بگیریم، یه اپی بیاد بالا و کارای باحال توش بکنیم
ولی واقعا از فکر کردن به اسمش خسته شدیم
(گرفتن اسم DevTwitter جدا از همه چی مشکلات حقوقی خواهد داشت)
لطفا اسم باحال پیشنهاد بدید، میتونه حتی مربوط به برنامه‌نویسی نباشه

* ادمین نمیخوایم، برای ادمین پیام ندید لطفا
* حتما هم لازم نیست تو کلمه‌ش dev وجود داشته باشه :))

@dvtwi
🔥43🤣5👎4👍2
کابوس شب هات به پایان رسید! nightwatch رو نمایی شد.

دیروز در LaraconAU ابزار مانیتورینگ nightwatch معرفی شد. همونطور که تیلور گفته بود، این ابزار قراره دید شما به مانیتورینگ رو تغییر بده و زیر و بم اپلیکیشن تون رو به صورت real time بهتون بگه.

این ابزار قراره در چهار ماهه ی اول سال 2025 به بازار عرضه بشه.

@DevTwitter | <Ali Salehi/>
👍39🔥104
اگر در حال آموزش فرانت اند هستین
و برای پروژه هاتون نیاز به دیتا و api دارید
آدرسی که بهتون معرفی میکنم عصای دست شما
یک منبع کامل با بیشتر از ۱۰۰۰+ api رایگان
با تمامی موضوعات
از آب و هوا گرفته
تا ترجمه، و فیلم و سریال
همه یک جا جمع شدن
و شما میتونید استفاده کنید

https://github.com/public-apis/public-apis

@DevTwitter | <Mona Rahmati/>
👍50🤣5👎2🔥2
حتی ویدیو را بخواند (Multimodal)، ببیند و درک کند و با ترکیب اطلاعات از این منابع مختلف، پاسخ‌های غنی‌تر و دقیق‌تری ارائه دهد.
این امکان از طریق سیستم های 𝗠𝘂𝗹𝘁𝗶𝗺𝗼𝗱𝗮𝗹 𝗥𝗲𝘁𝗿𝗶𝗲𝘃𝗮𝗹-𝗔𝘂𝗴𝗺𝗲𝗻𝘁𝗲𝗱 𝗚𝗲𝗻𝗲𝗿𝗮𝘁𝗶𝗼𝗻 (𝗥𝗔𝗚) به دست میاد. این یکی از داغترین زمینه های ریسرچ و از مهمترین اپلیکیشن های مدلهای LLM یا Vision Language Models (VLM) توی صنعت هست.

توی ویدیوی جدیدمون که تو YouTube آپلود شد توضیح دادم که Multimodal RAG چیه، روشهای اصلی پیاده سازی چیا هستن، و اینکه چطور یک مدل مناسب VLM برای تسک مورد نظرمون پیدا کنیم.
اینم لینک اسلایدها:
https://docs.google.com/presentation/d/1T3kenFEk2iZhVcHa3iQOqgWAE89vAoEDbpdb8IqQZWo/edit?usp=sharing

Youtube: https://youtube.com/watch?v=qlTSqU

@DevTwitter | <Mehdi Allahyari/>
👍11👎4🤣1
یک مفهومی که توی بحث performance زیاد مطرح میشه همین code splitting هستش که برای خودم یکم زیاد واضح نبود برای همین تصمیم گرفتم دربارش بخوونم خیلی خلاصه وار اینجا توضیح بدم
خوشحال می‌شم اگه سری بهش بزنید و نظرات و تجربیات خودتون رو هم با من به اشتراک بگذارید

https://virgool.io/@siavash.aghazadeh/%F0%9F%A7%A9-code-splitting-concept-nfyesaftvh67

@DevTwitter | <Siavash Aghazadeh/>
👍266👎2
شما را نمی دانم ولی خودم از این راهنماهای فنی Hacking، به ندرت برای یک مورد خاص استفاده کنم و بیشتر به عنوان یک منبع یادگیری با تکنیک های جدید، استفاده می کنم.
یعنی با Watch کردن این پروژه‌ها سعی می کنم تکنیک هایی که ذکر می‌شوند را برایشان یک راه حل دفاعی در سامانه‌های Defensive شرکت پیاده کنم.
البته که نوع استفاده بسته به حیطه فعالیت شما دارد ولی در هر صورت یک نگاهی انداختن به این راهنماها بد نیست.
thehacker.recipes

@DevTwitter | <Vahid Nameni/>
👍174
‏این پروژه مایکروسافت Garnet می تونه رقیب جدی Redis باشه، حداقل در پروژه های دات نتی.
خودش با C# نوشته شده و به نظرم می تونه قدرت و سرعت C# رو به خوبی نشون بده.
همین الانم داره در Azure تو محیط عملیاتی استفاده میشه
https://github.com/microsoft/garnet

@DevTwitter | <Imun/>
👍39🤣13🔥5👎2
پروژه AutoGen هم یکی از اون پروژه هایی هستش که کار رو برای بیزینس های کوچیک واقعا راحت کرده.
به شخصه دیدم، یکی از خرده فروش‌های آمازون با AutoGen یه Agent درست کرده بود، نظرات رو بررسی میکرد و چندین نوع پردازش مختلف انجام بده و خروجی میداد برای پاسخ.

https://github.com/microsoft/autogen

@DevTwitter | <Mohammad/>
👍27🤣1
اگر FastAPI دولوپر هستید این ریپو به کارتون میاد
https://github.com/zhanymkanov/fastapi-best-practices

@DevTwitter | <Amir Motahari/>
👍27🤣5
به تازگی بدافزاری به نام SteelFox برای سیستم عامل ویندوز منتشر شده است که علاوه بر mine کردن ارزهای دیجیتال ، اطلاعات کارت های بانکی را نیز به سرقت می برد. این بدافزار یک driver آسیب پذیر به نام WinRing0.sys را بر روی سیستم قربانی نصب می کند.
https://protectcybersec.yek.link

@DevTwitter | <protect_cyber_sec/>
🤣17👍4🔥3👎1
یه مثال خوب برای اینکه چرا نباید از کدی که هوشمصنوعی میده توی پروداکشن استفاده کنید . این کد PHP رو یکی از دوستان فرستاده بود که بررسی کنم مشکلی نداشته باشه و میتونید خودتون مقایسه کنید تغییراتی که کرده. شاید تست کنید کار کنه ولی ممکن بود دچار خطا بشه در آینده در شرایط خاص

@DevTwitter | <Mahdi Akrami/>
👍42👎10🤣104
آیا میدانستید PeachPie
کد PHP را کامپایل میکنه روی .NET runtime اجرا میکنه
چه شود
https://peachpie.io
https://github.com/peachpiecompiler/peachpie
چرا یکی باید بخواد بین .net و php پل بزنه ؟

@DevTwitter | <MehrdadLinux/>
🤣51👍4👎4
یک پروژه توی گیت هاب پوش کردم الان، برای Data Analyst
اگر دارید یاد میگیرید، یا میخواید تمرین کنید و نگاهی به کد بندازید، این ریپازیتوری رو بهتون پیشنهاد میکنم، به صورت خط به خط توضیح دادم و از خروجی کار هم عکس آپلود کردم
اگر هم قابل بود، Star کنید

https://github.com/MisaghMomeniB/Tehran-Weather-Analysis

@DevTwitter | <Misagh Momeni Bashusqeh/>
1👍27🔥43
اشتراک‌گذاری داده‌ها در میکروسرویس‌ها: تعادل بین Consistency و Scalability

سال‌ها پیش وقتی شروع به کار با میکروسرویس‌ها کردم، قانون «هر سرویس نباید دیتابیس خودش رو با سرویس دیگه به اشتراک بذاره» رو خیلی جدی گرفتم. این قانون منطقی به نظر میومد. سرویس‌ها باید مالک داده‌هاشون باشن و بتونن بدون مشکل تغییرات خودشونو اعمال کنن. اما نکته‌ای که من اول متوجه نشدم این بود که تفاوتی بزرگ بین Sharing a data source (دیتابیس مرکزی) و Sharing data وجود داره.

در دنیای میکروسرویس‌ها، داده‌ها مثل یک زنجیره برای ارتباط بین سرویس‌ها عمل می‌کنن. مثلا سرویس Trips نیاز به اطلاعات مسافران از سرویس Passenger یا اطلاعات رانندگان از سرویس Driver داره. خیلی منطقی به نظر میاد که این داده‌ها رو به صورت Synchronous درخواست کنیم، اما این روش در مقیاس‌های بزرگ چالش‌هایی رو به همراه داره.

چرا درخواست‌های Synchronous برای داده‌ها نمی‌تونند به خوبی مقیاس‌پذیر باشند؟
درخواست‌های همزمان و دریافت داده‌های به‌روز اول به نظر منطقی میاد. در نهایت همه ما می‌خواهیم داده‌های جدید و دقیق داشته باشیم، درست؟ اما وقتی این روال رو برای مدت طولانی ادامه می‌دیم، مشکلاتی پیش میاد:

- زنجیره‌های وابستگی: وقتی هر سرویس برای دریافت داده‌هاش به سرویس دیگه‌ای وابسته باشه، در طول زمان تبدیل به یک شبکه پیچیده میشه. مثلا سرویس Leaderboard نیاز به اطلاعات User Service برای نمایش نام و آواتار کاربران داره، و این باعث میشه که یک زنجیره از درخواست‌ها به وجود بیاد.

- نقطه‌های شکست یا SPOF: وقتی سرویس‌های زیادی به یک سرویس مشترک مثل User Service وابسته هستند، اون سرویس تبدیل به یک گلوگاه میشه. اگه این سرویس خراب بشه، می‌تونه کل سیستم رو تحت تاثیر قرار بده.

- تاخیر در پردازش: هر درخواست اضافی در زنجیره باعث افزایش تاخیر میشه.

با این شرایط، باید این سوال رو بپرسیم: آیا همیشه به داده‌های آپدیت نیاز داریم؟

کار با Eventual Consistency: یک راه‌حل مقیاس‌پذیر
به جای اینکه هر سرویس برای داده‌های خودش درخواست‌های همزمان ارسال کنه، میشه هر سرویس کپی محلی از داده‌های مورد نیاز خودش رو نگه‌داری کنه و اون‌ها رو از طریق Event ها یا Caching آپدیت کنه. این رویکرد ممکنه باعث بشه داده‌ها در نهایت سازگار یا Consistent باشن، یعنی داده‌ها ممکنه کمی دیر به‌روزرسانی بشن، ولی هیچ‌وقت قدیمی و از تاریخ گذشته نمی‌مونن. این روش معمولاً بهترین انتخاب هست. چرا؟

- مقیاس‌پذیری: سرویس‌ها می‌تونن داده‌هایی رو که نیاز دارن به طور محلی ذخیره کنن و دیگه نیازی به درخواست همزمان به سرویس‌های دیگه نیست.
- کاهش SPOF: داده‌های محلی به این معنی هستند که سرویس‌ها می‌تونن مستقل عمل کنن و وابستگی به سرویس‌های دیگه رو کاهش بدن.
- عملکرد بهتر: چون هر سرویس دسترسی سریع به داده‌های ضروری خودش داره، دیگه نیازی به درخواست‌های همزمان نیست که باعث افزایش تاخیر بشه.

سازگاری داده‌ها در عمل
سرویس‌ها به داده‌های مختلف نیاز دارند و هر کدوم سازگاری یا Consistency متفاوتی می‌طلبند:
- سرویس Leaderboard: نیاز به داده‌های کاربری داره، ولی ممکنه آواتارها و نام‌های نمایشی کمی قدیمی هم مشکلی ایجاد نکنه. این سرویس می‌تونه یک کپی محلی از داده‌های کاربران داشته باشه.
- سرویس Notification: این سرویس نیاز به ایمیل‌های به‌روز داره تا به درستی به کاربران پیام ارسال کنه. اینجا شاید نیاز به همگام‌سازی دقیق‌تری باشه.

@DevTwitter | <Massimo Dev/>
👍21🔥7👎2
اقا یک دانلود منیجر دارم توسعه میدم شما میتونی ترد مشخص کنی و امکان resume و.. داره و میتونی یک لینک یا چند لینک بدید و بیشتر به درد ترمینال میخوره ولی دارم روی گرافیکش کار میکنم
https://github.com/rezabojnordi/shabi_download
دوست داشتید میتونید استفاده کنید و تعییرش بدید

@DevTwitter | <reza/>
👍66👎127