DevTwitter | توییت برنامه نویسی
23.6K subscribers
4.36K photos
358 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
یک رایت‌آپ خیلی خوب در مورد Exploit کردن CORS که بعضی از use caseهای آن خیلی جذاب هستند مثل به سرقت بردن توکن‌های CSRF قبل از دسترسی بهEndpointهای حساس که با Exploit کردن CORS همراه شده است.
https://outpost24.com/blog/exploiting-permissive-cors-configurations/

@DevTwitter | <Vahid Nameni/>
👍9🔥5
از بدی‌های آنریل اینه که بدون اعلام قبلی یهو یه کامیت دراپ میشه کامل یه چیزی رو شخم میزنه، مثل این مورد که بخاطر تغییر Layout دیتای OpenXR باعث بریک شدن API هندترکینگ آنریل شده. ۳ماهه میدونم و هنوز وقت نشده تغییرات رو اعمال کنم و Preview 1 دیروز معرفی شد
http://github.com/EpicGames/UnrealEngine/

@DevTwitter | <Mamadou On GameDev/>
🤣23👍5
یه دولوپر بعد از ۳۰ سال کار با ویندوز به لینوکس مهاجرت کرده، سر چی؟
ماجرا اینه که شش تا کارت گرافیک ۲۴ گیگابایتی واسه اجرای مدل‌های AI میخره و یکی یکی به سیستم اضافه میکنه، رو ویندوز افت عملکرد زیادی میبینه، یعنی از کل ظرفیت کارت‌ها نمیتونه استفاده کنه.
بعد میاد لینوکس رو به شکل مجازی داخل ویندوز اجرا میکنه و دوباره تست میگیره که کمک زیادی نمیکنه، نهایتا تصمیم میگیره یه لینوکس مستقیما نصب کنه.
بعد از تغییر ویندوز به لینوکس شاهد افزایش ۳ برابری سرعت اجرای وظایف میشه و سیستمش هم به حافظه بیشتری دسترسی پیدا میکنه.
سرعت بالاتر معنیش اینه که میتونه مدل‌های بزرگتر رو هم اجرا کنه، کاری که داخل ویندوز نمیتونست.
در کل ماجرای کاربر Inevitable-Start-653 هم دوست داشتید میتونید بخونید، جالب هست.
https://www.reddit.com/r/Oobabooga/comments/1b1pm0m/after_30_years_of_windowsive_switched_to_linux/

@DevTwitter | <Soroush Ahmadi/>
🔥87👍2611👎5
این سایت futureme.org‎ عالیه. مخصوصاً اگه در مسیری هستین که نسبت به آینده مرددین.

می‌تونین به خودِ آینده‌تون ایمیل بزنین (خصوصی/عمومی، ۶ ماه، یک سال یا ده بیست سال دیگه) و می‌رسه. نامه‌های بامزه عمومی بقیه رم داره (مثل این بعد ۱۷ سال) و نیز آرشیو خصوصی خودتون رو هم!

@DevTwitter | <لوکوموتیو/>
👍29🔥4🤣2
اکثر apikey هایی که روی تارگت پیدا میشه چیزایی چرت و بی ارزش هستند ولی گاها از توشون چیز خوبم در میاد
این گیت در مورد هر سرویس و نحوه تستش یه توضیح داده
اگه ناشناخته بودن براتون حتما تست کنید
https://github.com/streaak/keyhacks

@DevTwitter | <Arshiya/>
🔥18👍2👎1
‏اگر میخواید پروسه ساخت یک چت بات با RAG رو فقط تبدیل به چند تا API CALL کنید میتونید از API اوپن سورسی که نوشتم استفاده کنید. همه چی از embeding تا ساخت Chat completions اتوماتیک انجام میشه
https://github.com/xmannii/Maux-RAG-API

@DevTwitter | <Mani/>
👍13🤣3👎1
This media is not supported in your browser
VIEW IN TELEGRAM
کمپانی Meta ی مجموعه مدل به اسم MovieGen که ساخت ویدیو را متحول کرده. Movie Gen چهار قابلیت ارائه می‌دهد: تولید ویدیو، ویدیوهای شخصی‌سازی شده، ویرایش دقیق ویدیو و تولید صدا. کیفیت ویدیوها واقعا بالاست بخصوص درآوردن نور و فیزیک توی ویدیو واقعا سخته.

https://ai.meta.com/blog/movie-gen-media-foundation-models-generative-ai-video/

@DevTwitter | <Mehdi Allahyari/>
👍10🔥9
سوال مصاحبه: چطور میشه بررسی کرد که نام کاربری بین یک میلیارد کاربر تکراری نباشه؟

این روزها با رشد سریع کسب‌وکارها، ثبت‌نام کاربرهای جدید هم به یه چالش تبدیل شده. یکی از مهمترین بخش‌ها اینه که مطمئن بشیم هر کاربر یه نام کاربری منحصربه‌فرد داره. اخیراً در مورد این موضوع یه تحقیقی کردم و دو راه‌حل خوب پیدا کردم: استفاده از حافظه Redis و فیلتر Bloom. هر دو کمک میکنن سریع و بدون فشار زیاد به سیستم، نام کاربری جدید رو بررسی کنیم.

مشکل کجاست؟
اگه بخوایم از روش‌های سنتی و دیتابیس برای بررسی نام کاربری استفاده کنیم، با زیاد شدن کاربرها سیستم کند میشه و با مشکلات زیر روبه‌رو میشیم:
- کندی در درخواست‌ها
- فشار زیاد به دیتابیس، که باعث مصرف زیاد منابع میشه.
- مشکل در مقیاس‌پذیری، یعنی وقتی تعداد درخواست‌ها زیاد بشه، سرور نمیتونه همه رو مدیریت کنه.

استفاده از Redis: سریع ولی پرمصرف
ردیس Redis کمک میکنه که بررسی نام کاربری خیلی سریع بشه، چون داده‌ها رو توی حافظه ذخیره میکنه. اما این روش یه مشکل بزرگ داره: حافظه زیادی مصرف میکنه. مثلاً برای یک میلیارد نام کاربری به 15 گیگابایت حافظه نیاز داریم! که تو سیستمهای بزرگ، خیلی پرهزینه و غیرعملی میشه.

فیلتر Bloom: ساده، بهینه و کم‌مصرف
حالا بریم سراغ فیلتر Bloom. این فیلتر یه روش خیلی بهینه‌تره که فضای حافظه خیلی کمتری استفاده میکنه. برای همون یک میلیارد نام کاربری، فقط 1.67 گیگابایت حافظه نیاز داره!

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

با این روش:
- حافظه کمی استفاده میشه
- سرعت بررسی خیلی بالاست

البته یه نکته کوچیک داره: بعضی وقتا ممکنه به اشتباه بگه که یه نام کاربری هست در حالی که نیست (این همون خطای مثبت یا False Positive هست)، ولی در اکثر مواقع این خطا قابل چشم‌پوشیه.

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

@DevTwitter | <Massimo Dev/>
1👍99🔥14👎92
اگر مثل من با Django REST Framework (DRF) کار میکنی و دنبال راهی برای سریعتر کردن APIهات هستی، حتماً باید drf-cache رو امتحان کنی.

این ابزار چیکار میکنه؟

با کش کردن درخواست‌های API به شما کمک میکنه تا فشار روی دیتابیس کمتر بشه و سرعت پاسخ‌دهی APIها به‌طور چشمگیری افزایش پیدا کنه

میتونی کش کردن رو برای هر ویو یا کوئری به‌طور جداگانه تنظیم کنی، این یعنی کنترل کامل روی نحوه ذخیره‌سازی و بازیابی داده‌ها

فوق‌العاده مفیده برای APIهای سنگین یا پرتقاضا که نیاز به بهینه‌سازی دارن

اگه میخوای کارایی APIهات رو بهبود بدی و لود سرورت رو کم کنی، drf-cache یکی از بهترین گزینه‌هاست!

پ.ن: (اگه داده‌های زیادی رو کش کنی، این میتونه حافظه سرور رو بیشتر مصرف کنه. به‌خصوص اگر کوئری‌ها یا درخواست‌ها خیلی بزرگ و پیچیده باشن و برای APIهایی که باید به سرعت اطلاعات رو به‌روزرسانی کنن (جایی که داده‌ها مرتباً تغییر میکنن)، استفاده از کش میتونه باعث بشه کاربران داده‌های جدید رو دیرتر ببینن. در این مواقع، باید خیلی هوشمندانه کشینگ رو تنظیم کنی.
و همچنین استفاده از drf-cache نیاز به تنظیمات دقیق داره، و اگر به‌درستی تنظیم نشه، ممکنه اصلاً نتونی ازش بهینه استفاده کنی یا برعکس، عملکرد رو حتی بدتر کنی.)

https://github.com/chibisov/drf-extensions

@DevTwitter | <Shima Fallah/>
👍20🔥6👎2🤣2
ترکیب وردپرس و لاراول Laravel خیلی جذابه واقعا.
اول از همه Corcel رو نصب می‌کنید و پروژه لاراول رو باهاش کانفیگ می‌کنید.
حالا وردپرس رو نصب می‌کنید و با پلاگین WordPress Pete ستش می‌کنید روی لاراول.

اینجوری یه سایت لاراولی دارید با بک‌اند وردپرس

@DevTwitter | <Pedram/>
🤣82👎16👍10🔥7
فرقی نداره تو چه حوزه‌ای می‌خواین کار کنید؛ بک‌اند، فرانت‌اند، هوش مصنوعی یا هر چی که به ذهنتون می‌رسه، سایت roadmap.sh‎ برای شماست.

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

@DevTwitter | <Reza Jafari/>
👍767👎4🔥3
#حاجی_پشمام

با وجود تمام فریمورک های خفن js و کلی لایبراری، هنوز jQuery توی 75 درصد وبسایتا هست

@DevTwitter
👍87🤣53👎12🔥4
مقایسه فریمورک های بک‌اند

مقایسه شده توسط CHAT GPT 4

@DevTwitter | <Majid Barmaki/>
👎84👍53🤣14🔥5
یکی از مزایای استفاده از JWT (JSON Web Token) این است که برخلاف Sessionها، توکن در سرور ذخیره نمی‌شود و نیازی به نگهداری وضعیت کاربر در سمت سرور نیست. این موضوع باعث کاهش سربار سرور و افزایش مقیاس‌پذیری برنامه می‌شود.
اما یک چالش مهم در این روش وجود دارد: اگر نیاز باشد که دسترسی کاربر لغو یا توکن بلاک شود (به عنوان مثال پس از خروج کاربر)، توکن JWT تا زمان انقضای آن همچنان معتبر است و می‌تواند درخواست‌ها را به سمت سرور ارسال کند.
برای رفع این مشکل، از Token Blacklisting یا همان فهرست سیاه توکن‌ها استفاده می‌شود. در این رویکرد، توکن‌هایی که باید بلاک شوند در یک فهرست ذخیره می‌شوند (معمولاً در یک پایگاه داده سریع مانند Redis). هر زمان که توکنی به سرور ارسال می‌شود، ابتدا بررسی می‌شود که آیا در لیست سیاه قرار دارد یا خیر. اگر توکن در این لیست باشد، درخواست رد می‌شود حتی اگر هنوز مدت زمان اعتبار توکن به پایان نرسیده باشد.
این روش نه تنها امنیت بیشتری را فراهم می‌کند، بلکه مدیریت بهتری برای مواردی چون لغو دسترسی کاربران یا بروز تغییرات در حساب‌های کاربری را امکان‌پذیر می‌سازد.

@DevTwitter | <Firoozeh Daeizadeh/>
👍806👎5
لاراول بلدی ولی لایووایر نه؟ میخوای شروع کنی ولی نمیدونی کدوم دوره خوبه؟
جرمی مک پیک (Jeremy McPeak) دوست داشتنی یه کورس آموزش لایووایر گذاشته که اگه نبینی، بعدا خعلی پشیمون میشی!


Today, we're launching a complete refresh of our introductory Livewire course.

"Livewire 3 From Scratch"

- 4 Hours of Content
- 29 Episodes
- 100% Free to All
- Ready to watch right now!

https://laracasts.com/series/livewire-3-from-scratch

@DevTwitter | <Ali Salehi/>
👍29🤣91
خودمون رو به چالش کشیدیم و گفتیم وقتشه که CI/CD رو به بهترین شکل ممکن پیاده کنیم! نتیجه‌اش یک راهکار جامع و ساده برای راه‌اندازی Jenkins و GitLab شد که فرآیندهای استقرار رو کاملاً خودکار میکنه. از Docker و Rsync گرفته تا SSH، همه مراحل رو مستند کردیم تا هرکسی بتونه با کمترین دردسر، همین سیستم رو اجرا کنه.
این داکیومنت رو روی گیت هابمون گذاشتیم تا هر کسی که دنبال یک راه‌حل سریع و کارآمد برای اتوماسیون توسعه و استقرار هست، بتونه ازش استفاده کنه. حتماً یه نگاهی بندازید!

https://github.com/aligharaei/jenkins_cicd

@DevTwitter | <ali gharaei/>
🔥38👍5🤣2👎1
میخوایی بدونی پس قضیه جاواسکریپت چی میگذره و توی مصاحبه ها هم ازش استفاده کنی ؟

من یه مجموعه مقالاتی به اسم اندراحوالات جاواسکریپت توی سایت ویرگول نوشتم که جواب سوال بالا رو بهت میده:
تا جایی که تونستم هر موضوعی رو به ساده ترین نوع ممکن توضیح و پوشش دادم

اندر احوالات جاوا‌اسکریپت قسمت اول
در مورد نحوه کار js و javascript Engine
https://vrgl.ir/fH7sf

اندر احوالات جاوا‌اسکریپت قسمت دوم
در مورد Execution Context, Call Stack و زیر و بم اش
https://vrgl.ir/REWoF

اندر احوالات جاوا‌اسکریپت قسمت سوم
هر آنچه که باید درمورد Scope و مخلفاتش بدونی
https://vrgl.ir/Zr7QI

اندر احوالات جاوا‌اسکریپت قسمت چهارم
در مورد Hoisting
https://vrgl.ir/A3CVT

اندر احوالات جاوا‌اسکریپت قسمت پنجم (آخر)
در مورد مفهوم this و کاربردش، arrow function و bind
https://vrgl.ir/JpJXp

نبرد async و sync
در مورد مفهوم asynchronous و synchronous - میکروتسک چیه؟نحوه کار کرد؟
https://vrgl.ir/96eJP

@DevTwitter | <Mohammad Bohluli/>
👍35🤣10🔥91
یک کد اتاق چت کامل به صورت real time با Node.js، Next.js و Socket.io نوشته‌ام که برای دوستانی که علاقه‌مند به نوشتن اتاق چت هست نمونه‌ی خوبیه.

می‌توانید برای دیدن کد به آدرس گیتهابم که در پایین گذاشتم مراجعه کنید.

https://github.com/mo3ito/chat-room

@DevTwitter | <Mostafa Entezami/>
👍32🤣104🔥4
‏«هوش مصنوعی هِزار: کتابخانه‌ای برای آسان‌سازی یادگیری هوش مصنوعی در زبان فارسی، ساخته شده توسط جامعه فارسی زبان!»

این مجموعه ابزار، کار با عکس، متن و صدا را به زبان فارسی تسهیل می‌کند.
شخصا برای آموزش OCR فارسی تصاویر،ازش استفاده کردم.
https://github.com/hezarai/hezar

@DevTwitter | <Mohammad/>
👍454👎1
(بررسی بهینگی روش آپلود تصاویر شما در بک اند)

خب نوبتی هم باشه نوبت یه گپ کوتاه و فلسفی درباره نحوه مدیریت یکی از پر استفاده ترین مباحث در برنامه نویسی بک انده (آپلود تصاویر)


از اونجایی که من خیلی وسواسی و کمال گرام، همیشه دنبال پرفورمنس و بهینه بودن در پیاده سازی هام هستم. اوایل خیلی واسم سوال بود که روش آپلود، پوشه بندی و مدیریت کردن تصاویری که آپلود میکنیم باید چطور باشه. بذارید خلاصه بگم:


فرض کنید برای یک مدل (مثلا Post) شما 5 تا تصویر آپلود کردید که هنگامی که Post رو Delete میکنید، میتونید به images مرتبط با اون Post دسترسی داشته باشید و هنگام این عملیات، تصاویرش رو هم با خودش از روی سرور حذف کنید، تا اینجای کار همه چیز اوکیه.

حالا چالش: فرض کنید تصاویر ما قبل از اجرا شدن عملیات Create اون پست و به صورت Ajax آپلود بشن (با ابزاری شبیه به Dropzonejs) در این صورت قبل از ایجاد شدن رکورد مرتبط با Post، ما ممکنه چند ده تصویر آپلود کرده باشیم.
حالا فرض کنید توی همین فرصت به هر دلیلی اون رکورد ایجاد نشه. حالا ممکنه فرد درج کننده بیخیال این قضیه بشه، مرورگر بسته بشه، برق بره یا هرچی....
این وسط تکلیف تصاویر آپلودی چی میشن؟ در طولانی مدت وقتی ده ها بار این اتفاق بیوفته چی میشه؟

توضیح راه حل:
بهتره در اون دایرکتوری ای که آپلود و ذخیره سازی تصاویر رو انجام میدیم، یه پوشه ای با نام temp داشته باشیم که تصاویر در ابتدا و به صورت موقت اونجا ذخیره میشن:

/images/uploads/articles/temp

و بعد از عملیات create شدن، فانکشن و سرویسی بنویسیم که عملیات Move کردن این تصاویر رو از اون پوشه temp به مسیر اصلی رو انجام بده:

/images/uploads/articles/2024/10/06/image1.jpg
/images/uploads/articles/2024/10/06/image2.jpg
...


با این روش میتونید از آپلود و تکرار تصاویر هرز و بی استفاده و استفاده شدن بیخودی از منابع ذخیره سازی سرور جلوگیری کنید و اون پوشه temp رو به صورت schedule یا حتی دستی هر از گاهی حذف کنید و هم در دنیا و هم در آخرت عاقبت بخیر بشید

@DevTwitter | <Keyvan Lotfi Kamran/>
👍70🤣43👎3