تصور کن توی یه سیستم مالی، چند نفر همزمان بخوان همون مبلغ رو برداشت کنن! نتیجه؟ فاجعهای شبیه یه قرعهکشی نامنظم!
راهحل؟ استفاده از lockForUpdate در Laravel!
چرا؟ چون:
- جلوی برداشتهای تکراری رو میگیره.
- امنیت تراکنشهای مالی رو تضمین میکنه.
- عملکرد سیستم رو توی تراکنشهای همزمان بهبود میده.
اگه به امنیت و پایداری سیستم مالی اهمیت میدی، lockForUpdate رو فراموش نکن!
@DevTwitter | <Navid Vakili/>
راهحل؟ استفاده از lockForUpdate در Laravel!
چرا؟ چون:
- جلوی برداشتهای تکراری رو میگیره.
- امنیت تراکنشهای مالی رو تضمین میکنه.
- عملکرد سیستم رو توی تراکنشهای همزمان بهبود میده.
اگه به امنیت و پایداری سیستم مالی اهمیت میدی، lockForUpdate رو فراموش نکن!
@DevTwitter | <Navid Vakili/>
👍53👎17🔥5❤2
DevTwitter | توییت برنامه نویسی
اگر کتاب کلین کد رو نخوندید ، متن زیر رو بخونید انگار کل کتاب رو خوندید (توسط هوش مصنوعی تولید شده) در زیر یک خلاصه از کتاب کلین کد (Clean Code) نوشته رابرت سی. مارتین (عمو باب) ارائه شده است: 1. اهمیت کد تمیز: کتاب تأکید میکند که کد نوشته شده باید مانند…
حالا اگر کتاب کلین کد رو نخوندید و احساس میکنید تو ۴۶۰ صفحه، احتمالا حرفهای خیلی بیشتری زده شده و آماده هستید که یک نفر همهی اونها شسته رفته و به زبان فارسی + توضیحات و مثالهای بیشتر بهتون بگه؛ در عین حال از اونجایی که کتاب رو screen share کرده میبینید که هیچ آیتمی رو هم الکی رد نمیکنه... میتونید به پلیلیستی که درست کردم سر بزنید و اونها رو ببینید و کدتون رو چند پله بهتر کنید!
https://www.youtube.com/playlist?list=PLvComYym9Hg3mXWX4hjIEAnqo5vv4ccS-&themeRefresh=1
@DevTwitter | <Amin Bazgir/>
https://www.youtube.com/playlist?list=PLvComYym9Hg3mXWX4hjIEAnqo5vv4ccS-&themeRefresh=1
@DevTwitter | <Amin Bazgir/>
👍46❤16👎3
تا حالا شده دیزاینر یه طرحی بهت بده که بوردرش گرادینت داشته باشه و تو دلت حسابی بهش بد و بیراه بگی؟
اون بنده خدا رو ول کن، به جاش بیا از این کد استفاده کن!
امروز یه ترفند جالب براتون دارم که بهتون کمک میکنه بدون div اضافی و pseudo element یه بوردر گرادینت خفن درست کنید. فقط با CSS خالص!
چطوری کار میکنه؟
از linear-gradient برای ایجاد گرادینت استفاده میکنیم.
با padding-box و border-box مشخص میکنیم که گرادینت فقط روی بوردر اعمال بشه.
بوردر رو transparent میذاریم تا پسزمینهی گرادینت معلوم بشه.
نکته:
این کد تو مرورگرهای مدرن به خوبی کار میکنه، اما اگه نیاز به پشتیبانی از مرورگرهای قدیمی مثل IE دارید، باید از روشهای دیگه استفاده کنید.
حالا دیگه میتونید با خیال راحت به دیزاینر بگید: «باشه، حله!»
@DevTwitter | <Hossein Akbari/>
اون بنده خدا رو ول کن، به جاش بیا از این کد استفاده کن!
امروز یه ترفند جالب براتون دارم که بهتون کمک میکنه بدون div اضافی و pseudo element یه بوردر گرادینت خفن درست کنید. فقط با CSS خالص!
چطوری کار میکنه؟
از linear-gradient برای ایجاد گرادینت استفاده میکنیم.
با padding-box و border-box مشخص میکنیم که گرادینت فقط روی بوردر اعمال بشه.
بوردر رو transparent میذاریم تا پسزمینهی گرادینت معلوم بشه.
نکته:
این کد تو مرورگرهای مدرن به خوبی کار میکنه، اما اگه نیاز به پشتیبانی از مرورگرهای قدیمی مثل IE دارید، باید از روشهای دیگه استفاده کنید.
حالا دیگه میتونید با خیال راحت به دیزاینر بگید: «باشه، حله!»
@DevTwitter | <Hossein Akbari/>
🔥43👍10❤1
This media is not supported in your browser
VIEW IN TELEGRAM
یک پلتفرم اپن سورس اومده به اسم Potpie که ایجنت های متخصص برای کدتون (codebase) میسازه. این ایجنتها میتونن به صورت خودکار کدتون رو تحلیل کنن، تست کنن و کارای توسعهاش رو انجام بدن. Potpie یه گراف دانش (knowledge graph) کامل از کدتون میسازه و به این ترتیب ایجنتها میتونن رابطههای پیچیده رو بفهمن و تو همهچی، از دیباگ کردن گرفته تا توسعهی ویژگیهای جدید، کمکتون کنن.
خیلی ویژگی های جالبی داره از جمله اینکه هم یک سری ایجنت آماده داره مثل Debugging Agent و Unit Test Agent و چندتای دیگه. و اینکه میتونید ایجنت خودتون را هم بسازید. و همچنین اینکه کدبیس با هر اندازه و زبانی رو هندل میکنه.
Github: https://github.com/potpie-ai/potpie
@DevTwitter | <Mehdi Allahyari/>
خیلی ویژگی های جالبی داره از جمله اینکه هم یک سری ایجنت آماده داره مثل Debugging Agent و Unit Test Agent و چندتای دیگه. و اینکه میتونید ایجنت خودتون را هم بسازید. و همچنین اینکه کدبیس با هر اندازه و زبانی رو هندل میکنه.
Github: https://github.com/potpie-ai/potpie
@DevTwitter | <Mehdi Allahyari/>
👍26🔥3👎2
DevTwitter | توییت برنامه نویسی
The SheCodes Foundation supports Iranian women’s right to work and to close the gender gap. Women in Iran can join SheCodes workshops for free to learn how to code and develop key professional skills. shecodesfoundation.org/iran * آموزش برنامه نویسی و کد…
یه سال و نیم پیش این پست رو گذاشتم و ازش استقبال خوبی شد.
وبسایت SheCodesFoundation سعی داره برنامهنویسی رو به بانوان آموزش بده.
از سال 1401 که آزادی بانوان ایرانی تو دنیا مطرح شد، این وبسایت اومد و برای خانمهای ایرانی بوتکمپهای رایگان برگزار کرد. اون سال تا 10,000 نفر ظرفیت داشت.
الان بررسی کردم دیدم هنوز فعاله و ظرفیتش شده 50,000 بانو که حدودا نصفش پر شده.
حتما شرکت کنید که خیلی خوبه، برای دوستاتون هم بفرستید.
https://shecodesfoundation.org/iran
@DevTwitter
وبسایت SheCodesFoundation سعی داره برنامهنویسی رو به بانوان آموزش بده.
از سال 1401 که آزادی بانوان ایرانی تو دنیا مطرح شد، این وبسایت اومد و برای خانمهای ایرانی بوتکمپهای رایگان برگزار کرد. اون سال تا 10,000 نفر ظرفیت داشت.
الان بررسی کردم دیدم هنوز فعاله و ظرفیتش شده 50,000 بانو که حدودا نصفش پر شده.
حتما شرکت کنید که خیلی خوبه، برای دوستاتون هم بفرستید.
https://shecodesfoundation.org/iran
@DevTwitter
👎137🔥38👍21❤2
This media is not supported in your browser
VIEW IN TELEGRAM
برای اینکه از این مدلهای AI به صورت لوکال استفاده کنید معمولا نیاز به یک UI دارید. و کلی هم درست کردن. ولی این یکی را من خیلی دوست دارم چون که یک extension هست. تو این ویدیوی کوتاه توضیح میدم (با صدا هست) که چیه و چطور استفاده کنید.
Github: https://github.com/n4ze3m/page-assist
@DevTwitter | <Mehdi Allahyari/>
Github: https://github.com/n4ze3m/page-assist
@DevTwitter | <Mehdi Allahyari/>
👍23
امکان آپلود فایل در Gemini گوگل حالا برای تمام کاربران رایگان هست، فعلا فقط با مدل Gemini Flash 2.0 کار میکنه و فرمتهای زیر پشتیبانی میشن:
متن ساده: TXT
فایل کد شامل C, CPP, PY, JAVA, PHP, SQL و HTML
سند: DOC, DOCX, PDF, RTF, DOT, DOTX, HWP, HWPX و گوگل داکس
جدول: CSV, TSV
اکسل: XLS, XLSX و گوگل شیت
@DevTwitter | <Soroush Ahmadi/>
متن ساده: TXT
فایل کد شامل C, CPP, PY, JAVA, PHP, SQL و HTML
سند: DOC, DOCX, PDF, RTF, DOT, DOTX, HWP, HWPX و گوگل داکس
جدول: CSV, TSV
اکسل: XLS, XLSX و گوگل شیت
@DevTwitter | <Soroush Ahmadi/>
👍55❤6👎4
شرکت Kaspersky در 5 نسل از Apple silicon بکدور سختافزاری پیدا کرده است!
نکته مهم:
درِ پشتی کشف شده، یک ویژگی عمداً طراحیشده در CPU است، نه یک اشکال یا اشتباه. این یک قابلیت سختافزاری مستند نشده است که از مکانیزمهای امنیتی سختافزاری عبور کرده و امکان دستکاری نواحی حافظهی محافظتشده را فراهم میکند.
اپل آسیبپذیریهای مربوطه را اصلاح کرده است.
منبع و دلیل وجود درِ پشتی همچنان نامشخص باقی مانده است.
به دنیای واقعی خوش آمدید!
https://xstore.co.za/stuff/2024/01/kaspersky-finds-hardware-backdoor-in-5-generations-of-apple-silicon/
@DevTwitter | <Vahid Nameni/>
نکته مهم:
درِ پشتی کشف شده، یک ویژگی عمداً طراحیشده در CPU است، نه یک اشکال یا اشتباه. این یک قابلیت سختافزاری مستند نشده است که از مکانیزمهای امنیتی سختافزاری عبور کرده و امکان دستکاری نواحی حافظهی محافظتشده را فراهم میکند.
اپل آسیبپذیریهای مربوطه را اصلاح کرده است.
منبع و دلیل وجود درِ پشتی همچنان نامشخص باقی مانده است.
به دنیای واقعی خوش آمدید!
https://xstore.co.za/stuff/2024/01/kaspersky-finds-hardware-backdoor-in-5-generations-of-apple-silicon/
@DevTwitter | <Vahid Nameni/>
👍43🔥6👎1
شاید براتون جالب باشه که بدونید توی نسخههای آیندهی سیستمعامل FreeBSD احتمالا قراره یه رابط گرافیکی برای Installer اضافه بشه.
خبر مربوط به اوایل 2024 هست ولی خبر جالبی بود که گفتم با شما هم به اشتراک بذارم.
https://freebsdfoundation.org/project/graphical-installer-for-freebsd/
@DevTwitter | <Mohammad Shokoohi/>
خبر مربوط به اوایل 2024 هست ولی خبر جالبی بود که گفتم با شما هم به اشتراک بذارم.
https://freebsdfoundation.org/project/graphical-installer-for-freebsd/
@DevTwitter | <Mohammad Shokoohi/>
❤17👍10
This media is not supported in your browser
VIEW IN TELEGRAM
امروز یه چیز یاد گرفتم خیلی کیف داد :)
چهجوری توی مرورگرهای کرم بیس مثل Brave بدون هیچ افزونهای تمام صفحه و Lossless هر چقدر هم صفحه بلند باشه اسکرینشات گرفت!
۱. کلیدهای Crtl+Shift+I رو بزنید
۲. به محض باز شدن کنسول Ctrl+Shift+P
۳. تایپ کنید screenshot و گزینه Capture full size screenshot رو بزنید.
۴. کمی صبر کنید و به محض باز شدن کادر ذخیره فایل، اسم مورد نظرتون رو انتخاب و ذخیره کنید.
۵. حالش رو ببرید و یکی به حساب من ذخیره کنید :))
@DevTwitter | <Mamadou On GameDev/>
چهجوری توی مرورگرهای کرم بیس مثل Brave بدون هیچ افزونهای تمام صفحه و Lossless هر چقدر هم صفحه بلند باشه اسکرینشات گرفت!
۱. کلیدهای Crtl+Shift+I رو بزنید
۲. به محض باز شدن کنسول Ctrl+Shift+P
۳. تایپ کنید screenshot و گزینه Capture full size screenshot رو بزنید.
۴. کمی صبر کنید و به محض باز شدن کادر ذخیره فایل، اسم مورد نظرتون رو انتخاب و ذخیره کنید.
۵. حالش رو ببرید و یکی به حساب من ذخیره کنید :))
@DevTwitter | <Mamadou On GameDev/>
👍74❤13👎4🔥3
قطعا هممون اسم فریم ورک یا کتابخانه هایی مثل React.js, Vue و یا Angular رو شنیدیم و حتی باهاشون کار کردیم
خب این فریم ورک ها توسط یک تیم یا شرکت ساخته شده اند و کدهای پیچیده و سنگینی برای اجرا شدن دارند و برای یادگیریشون هم نیاز به دیدن دوره های چندین ساعته داریم!
اما من در طی یکسال گذشته قسمتی از وقتم رو صرف ساختن یک کتابخانه ای کردم که منطق آن با الگو برداری از فریم ورک های بزرگی مثل React.js و Next.js نوشته شده و به علت حجم کم و بهینه کدی که برای اجرا شدن نیاز داره(نزدیک به ۲۰۰ خط)، بسیار بسیار سریع هستش.
توی چندتا پروژه اخیری که داشتم هم تستش کردم و این پروژه ها با این کتابخانه نوشته شده اند، در نهایت چند وقت پیش روی npm پکیج اش رو publish کردم و در هفته اول نزدیک به ۱۷۰۰ بار دانلود شد!
اسم این کتابخانه لومینا هستش و یک Full-Stack SPA Maker هست!
یعنی همزمان هم بک اند(به صورت api) و هم فرانت اند و اتصالات به دیتابیس رو میتوانید داخل این پکیج کدنویسی کنید، و حتی از میدل ور ها هم پشتیبانی میکنه!
خیلی قابلیت های دیگه هم داره که همگی داخل داکیومنتش نوشته شده.
دوستان تاجایی که من میدونم این اولین کتابخانه spa ایرانی هستش، پس اگر استفاده کردید و دوستش داشتید ممنون میشم با دادن ستاره و فورک کردن در گیت هاب از لومینا حمایت کنید.
دستور نصب با npm:
https://www.npmjs.com/package/create-lumina
https://github.com/kiarashAlizadeh/create-lumina
@DevTwitter | <Kiarash Alidazadeh/>
خب این فریم ورک ها توسط یک تیم یا شرکت ساخته شده اند و کدهای پیچیده و سنگینی برای اجرا شدن دارند و برای یادگیریشون هم نیاز به دیدن دوره های چندین ساعته داریم!
اما من در طی یکسال گذشته قسمتی از وقتم رو صرف ساختن یک کتابخانه ای کردم که منطق آن با الگو برداری از فریم ورک های بزرگی مثل React.js و Next.js نوشته شده و به علت حجم کم و بهینه کدی که برای اجرا شدن نیاز داره(نزدیک به ۲۰۰ خط)، بسیار بسیار سریع هستش.
توی چندتا پروژه اخیری که داشتم هم تستش کردم و این پروژه ها با این کتابخانه نوشته شده اند، در نهایت چند وقت پیش روی npm پکیج اش رو publish کردم و در هفته اول نزدیک به ۱۷۰۰ بار دانلود شد!
اسم این کتابخانه لومینا هستش و یک Full-Stack SPA Maker هست!
یعنی همزمان هم بک اند(به صورت api) و هم فرانت اند و اتصالات به دیتابیس رو میتوانید داخل این پکیج کدنویسی کنید، و حتی از میدل ور ها هم پشتیبانی میکنه!
خیلی قابلیت های دیگه هم داره که همگی داخل داکیومنتش نوشته شده.
دوستان تاجایی که من میدونم این اولین کتابخانه spa ایرانی هستش، پس اگر استفاده کردید و دوستش داشتید ممنون میشم با دادن ستاره و فورک کردن در گیت هاب از لومینا حمایت کنید.
دستور نصب با npm:
npx create-lumina@latest my-lumina
https://www.npmjs.com/package/create-lumina
https://github.com/kiarashAlizadeh/create-lumina
@DevTwitter | <Kiarash Alidazadeh/>
👍80🔥27❤10👎5
اگر توی پروژه React js و یا Next js از کتابخانه framer motion استفاده میکنید این پست میتونه براتون خیلی مفید باشه!
سایت aceternity UI با استفاده از framer motion کلی انیمیشن های خفن و کاربری توی زمینه و قسمت های مختلف توسعه دادن که میتونید ببینید و اگر دوست داشتید کدش رو مستقیم کپی و استفاده کنید.
پیشنهاد میکنم حتما به سایتش سر بزنید!!!
https://ui.aceternity.com
@DevTwitter | <Mohammad Reza Moradi/>
سایت aceternity UI با استفاده از framer motion کلی انیمیشن های خفن و کاربری توی زمینه و قسمت های مختلف توسعه دادن که میتونید ببینید و اگر دوست داشتید کدش رو مستقیم کپی و استفاده کنید.
پیشنهاد میکنم حتما به سایتش سر بزنید!!!
https://ui.aceternity.com
@DevTwitter | <Mohammad Reza Moradi/>
👍32🔥10❤4
چند وقت پیش با یکی از دوستام که برنامه نویس یه فروشگاه اینترنتی بزرگه، حرف میزدم. سایتشون یه وردپرس سنگین بود که ترافیکش از یه حدی که رد شد، شروع کرد به کند شدن و داون شدنهای پشت سر هم. مشکل چی بود؟ مثل همیشه، MySQL به گلوگاه تبدیل شده بود.
یه دوستی بهشون گفته بود که راهش واضحه، Read/Write Splitting. دیتابیس رو Replica بزنید، Readها رو بفرستید روی Replica و Writeها روی Primary، فشار کم میشه، مشکل حله!
من خندیدم گفتم: این روی کاغذ جواب میده، ولی توی یه فروشگاه واقعی به درد نمیخوره. فرض کن یه مشتری یه محصول رو میخره، ولی چون Replica هنوز Sync نشده، توی صفحه محصول هنوز موجود نشون داده میشه. بعد یکی دیگه میاد، خرید میکنه، و یهویی دوتا سفارش برای یه محصولی که فقط یکی ازش مونده ثبت میشه. حالا میخای چیکار کنی؟
پرسید پس چیکار کنیم؟
سه تا راه به ذهنم میرسید برای بهینه کردن.
اول کوئری های سنگین مثل لود محصولات رو redis cache کن، دیتابیس یکم نفس بکشه
دوم شاردینگ رو امتحان کن. جدول های ووکامرس رو روی یه دیتابیس دیگه ببر ببین فرقی میکنه یا نه
۳ اینکه چرا سبد خرید کاربرات رو توی دیتابیس نگه میداری؟ ببرشون روی ردیس
نمیدونم مشکلشون برطرف شد یا نه
ولی تجربه ثابت کرده وردپرس بالای دوهزار تا پست، دردسرش بیشتره تا منفعتش.
همین که بیزینستون بزرگ شد، به مهاجرت از وردپرس اقدام کنید,
@DevTwitter | <Mohammad Haquqatkhah/>
یه دوستی بهشون گفته بود که راهش واضحه، Read/Write Splitting. دیتابیس رو Replica بزنید، Readها رو بفرستید روی Replica و Writeها روی Primary، فشار کم میشه، مشکل حله!
من خندیدم گفتم: این روی کاغذ جواب میده، ولی توی یه فروشگاه واقعی به درد نمیخوره. فرض کن یه مشتری یه محصول رو میخره، ولی چون Replica هنوز Sync نشده، توی صفحه محصول هنوز موجود نشون داده میشه. بعد یکی دیگه میاد، خرید میکنه، و یهویی دوتا سفارش برای یه محصولی که فقط یکی ازش مونده ثبت میشه. حالا میخای چیکار کنی؟
پرسید پس چیکار کنیم؟
سه تا راه به ذهنم میرسید برای بهینه کردن.
اول کوئری های سنگین مثل لود محصولات رو redis cache کن، دیتابیس یکم نفس بکشه
دوم شاردینگ رو امتحان کن. جدول های ووکامرس رو روی یه دیتابیس دیگه ببر ببین فرقی میکنه یا نه
۳ اینکه چرا سبد خرید کاربرات رو توی دیتابیس نگه میداری؟ ببرشون روی ردیس
نمیدونم مشکلشون برطرف شد یا نه
ولی تجربه ثابت کرده وردپرس بالای دوهزار تا پست، دردسرش بیشتره تا منفعتش.
همین که بیزینستون بزرگ شد، به مهاجرت از وردپرس اقدام کنید,
@DevTwitter | <Mohammad Haquqatkhah/>
1👍131👎12
لاراول نایتواچ - Laravel Nightwatch
تیلور آتوِل عزیز این ابزار خفنُ برای نظارت بر اپهای لاراولی ساخته که بهت کمک میکنه همیشه حواست به عملکرد و سلامت سیستمت باشه ولی هنوز ریلیز نشده. از درخواستها و لاگها گرفته تا ارورها و مسیرهای کند، همه رو زیر نظر داره و سریع بهت هشدار میده. دیگه Telescope و Pulse رو بنداز دور
https://www.youtube.com/watch?v=-fJnnAm1qBs
@DevTwitter | <Vahid Kaargar/>
تیلور آتوِل عزیز این ابزار خفنُ برای نظارت بر اپهای لاراولی ساخته که بهت کمک میکنه همیشه حواست به عملکرد و سلامت سیستمت باشه ولی هنوز ریلیز نشده. از درخواستها و لاگها گرفته تا ارورها و مسیرهای کند، همه رو زیر نظر داره و سریع بهت هشدار میده. دیگه Telescope و Pulse رو بنداز دور
https://www.youtube.com/watch?v=-fJnnAm1qBs
@DevTwitter | <Vahid Kaargar/>
👍35❤3👎2
🔥30👍9👎2
یه اشتباهی که خیلی ها می کنند اینه که فکر می کنند که Typenoscript یه زبان در مقابل جاوا اسکریپته
مثلا پایتون یه زبانه و جاوا یه زبان دیگه هست و شما تصمیم میگیری که کدت رو به زبان پایتون یا جاوا بزنی
اما رابطه تایپ اسکریپت و جاوااسکریپت به این شکل نیست
یعنی تایپ اسکریپت یه زبان جداگانه و جدید نیست که اومده باشه جاوا اسکریپت رو جایگزین کنه
بلکه تایپ اسکریپت همراه جاوا اسکریپته تا تایپ ها استاتیک باشند و خطا های زمان اجرا به زمان کامپایل بیاد و همینطور دولوپر ها تجربه بهتری هنگام کد زدن داشته باشند و بعد از کامپایل(ترنسپایل) کل کد تایپ اسکریپت به جاوا اسکریپت تبدیل میشه.
یعنی این دو تا زبان همراه هم خواهند بود.
(تا اینکه روزی browser ها به صورت native از تایپ اسکریپت پشتیبانی کنند)
البته تو بک اند deno و bun به صورت native می تونن typenoscript رو اجرا کنن که این خیلی خبر خوبیه
@DevTwitter | <Pouria Jahandideh/>
مثلا پایتون یه زبانه و جاوا یه زبان دیگه هست و شما تصمیم میگیری که کدت رو به زبان پایتون یا جاوا بزنی
اما رابطه تایپ اسکریپت و جاوااسکریپت به این شکل نیست
یعنی تایپ اسکریپت یه زبان جداگانه و جدید نیست که اومده باشه جاوا اسکریپت رو جایگزین کنه
بلکه تایپ اسکریپت همراه جاوا اسکریپته تا تایپ ها استاتیک باشند و خطا های زمان اجرا به زمان کامپایل بیاد و همینطور دولوپر ها تجربه بهتری هنگام کد زدن داشته باشند و بعد از کامپایل(ترنسپایل) کل کد تایپ اسکریپت به جاوا اسکریپت تبدیل میشه.
یعنی این دو تا زبان همراه هم خواهند بود.
(تا اینکه روزی browser ها به صورت native از تایپ اسکریپت پشتیبانی کنند)
البته تو بک اند deno و bun به صورت native می تونن typenoscript رو اجرا کنن که این خیلی خبر خوبیه
@DevTwitter | <Pouria Jahandideh/>
👍76🔥8❤6
Media is too big
VIEW IN TELEGRAM
یک پروژه دیدم امروز روی گیتهاب که یک AI Agent بود که از طریق Whatsapp میتونستی باهاش صحبت کنید. فقط شلوغش کرده بود. فکر کردم یک پروژه مشابه درست کنم با تلگرام. این ویدیوی دمو هست (صدا هم داره قسمتی که ایجنت صحبت میکنه).
فعلا میتونید باهاش چت کنید، عکس generate میکنه و همچین متن به صدا. برای متن به صدا از Kodoro استفاده کردم و کاملا هم لوکال هست . برای عکس هم میشه از Dalle و هم از یک کمپانی/api دیگه به اسم Novita استفاده کنید.
اسم این agent را گذاشتم Nova. بیشتر از ۲ ساعت وقت نذاشتم و هنوز خیلی کار داره تا یک agent کامل بشه. ولی هسته کد آماده است. حتا readme هم کامل نیست. ولی میتونید متوجه بشید و استفاده کنید. pull request بدید اگه دوست داشتید.
Github: https://github.com/mallahyari/nova-assistant
@DevTwitter | <Mehdi Allahyari/>
فعلا میتونید باهاش چت کنید، عکس generate میکنه و همچین متن به صدا. برای متن به صدا از Kodoro استفاده کردم و کاملا هم لوکال هست . برای عکس هم میشه از Dalle و هم از یک کمپانی/api دیگه به اسم Novita استفاده کنید.
اسم این agent را گذاشتم Nova. بیشتر از ۲ ساعت وقت نذاشتم و هنوز خیلی کار داره تا یک agent کامل بشه. ولی هسته کد آماده است. حتا readme هم کامل نیست. ولی میتونید متوجه بشید و استفاده کنید. pull request بدید اگه دوست داشتید.
Github: https://github.com/mallahyari/nova-assistant
@DevTwitter | <Mehdi Allahyari/>
👍36👎4❤3
بچه ها اگه کسی علاقه داره به ترجمه داکیومنت فارسی Vite کمک کنه اینجا درحال توسعه هست و قبل از انتقال به org اصلی نیاز به بررسی داره.
- https://github.com/mostafa-nematpour/vite-docs-fa
- https://vite.liara.run
@DevTwitter | <پویا/>
- https://github.com/mostafa-nematpour/vite-docs-fa
- https://vite.liara.run
@DevTwitter | <پویا/>
👍37❤6👎6
روش درست برنامه نویسی Node.js
۱. برنامه نویسی رویداد محور و asynchronous
در برنامه نویسی node خیلی مهمه که به event loop توجه داشته باشیم و از callback ها و promise ها و async/await موثر استفاده کنیم.
نیازه که از callback hell دوری کنیم و جریان async رو مدیریت کنیم.
۲. استفاده از stream ها و پردازش داده real time
یکی از امکانات استفاده از stream ها هست که کمک داده ها را به صورت بهینه پردازش کنیم و مشکلات حافظه نداشته باشیم.
برای کار کردن با dataset های بزرگ استفاده از stream api خیلی کمک کننده است.
۳. مایکروسرویس ها و معماری Modular
به عنوان برنامه نویس بک اند خیلی خوبه که با modular monolith پروژمون رو شروع کنیم و کم کم تبدیل به microservice های مختلف بکنیم.
برای اینکار نیازه که به معماری های مایکروسرویس ها و همینطور الگو های data در آنها تسلط داشته باشیم.
۴. کار با دیتابیس ها
خیلی مهمه که بدونیم کجا از query استفاده کنیم، کجا query builder و کجا ORM
چطور data model رو برای query هایی که داریم بهینه کنیم و همینطور مطمئن بشیم که در query های زمانبر سیستم از index ها استفاده میشه.
مهمه که روش های مختلف کار با دیتابیس به صورت async رو بدونیم
۵. برنامه نویسی شبکه و TCP/UDP
برنامه نویسی فقط REST و WEB نیست و گاهی برای کاربرد های خاص از سوکت های خام TCP و UDP استفاده می کنیم تا پرفورمنس بالاتری داشته باشیم.
همینطور مهمه که بتونیم از WebSocket ها یا grpc یا http 2 برای پیاده سازی real time استفاده کنیم.
۶. تست نویسی و دیباگ کردن
شناخت ابزار تست نویسی یه بحثه، اینکه چه تست کیس هایی بنویسیم یه مهارته که طی زمان رشد پیدا می کنه.
علاوه بر این مهمه که بتونیم کد node رو دیباگ کنیم برای اینکار میتونیم از node inspector استفاده کنیم.
۷. دیپلوی و scale کردن
در نهایت نیازه که بتونیم کد های node رو به صورت scalable دیپلوی کنیم.
برای scalable بودن می توانیم از استراتژی هایی مانند clustering و load balancing استفاده کنیم.
۸. امنیت
همینطور مهمه که در پیاده سازی authentication از ایجاد آسیب پذیری ها امنیتی جلوگیری کنیم.
مهمه که حملات رایج مانند XSS و CSRF و نحوه جلوگیری را در عمل آنها را بشناسیم.
@DevTwitter | <Pouria Jahandideh/>
۱. برنامه نویسی رویداد محور و asynchronous
در برنامه نویسی node خیلی مهمه که به event loop توجه داشته باشیم و از callback ها و promise ها و async/await موثر استفاده کنیم.
نیازه که از callback hell دوری کنیم و جریان async رو مدیریت کنیم.
۲. استفاده از stream ها و پردازش داده real time
یکی از امکانات استفاده از stream ها هست که کمک داده ها را به صورت بهینه پردازش کنیم و مشکلات حافظه نداشته باشیم.
برای کار کردن با dataset های بزرگ استفاده از stream api خیلی کمک کننده است.
۳. مایکروسرویس ها و معماری Modular
به عنوان برنامه نویس بک اند خیلی خوبه که با modular monolith پروژمون رو شروع کنیم و کم کم تبدیل به microservice های مختلف بکنیم.
برای اینکار نیازه که به معماری های مایکروسرویس ها و همینطور الگو های data در آنها تسلط داشته باشیم.
۴. کار با دیتابیس ها
خیلی مهمه که بدونیم کجا از query استفاده کنیم، کجا query builder و کجا ORM
چطور data model رو برای query هایی که داریم بهینه کنیم و همینطور مطمئن بشیم که در query های زمانبر سیستم از index ها استفاده میشه.
مهمه که روش های مختلف کار با دیتابیس به صورت async رو بدونیم
۵. برنامه نویسی شبکه و TCP/UDP
برنامه نویسی فقط REST و WEB نیست و گاهی برای کاربرد های خاص از سوکت های خام TCP و UDP استفاده می کنیم تا پرفورمنس بالاتری داشته باشیم.
همینطور مهمه که بتونیم از WebSocket ها یا grpc یا http 2 برای پیاده سازی real time استفاده کنیم.
۶. تست نویسی و دیباگ کردن
شناخت ابزار تست نویسی یه بحثه، اینکه چه تست کیس هایی بنویسیم یه مهارته که طی زمان رشد پیدا می کنه.
علاوه بر این مهمه که بتونیم کد node رو دیباگ کنیم برای اینکار میتونیم از node inspector استفاده کنیم.
۷. دیپلوی و scale کردن
در نهایت نیازه که بتونیم کد های node رو به صورت scalable دیپلوی کنیم.
برای scalable بودن می توانیم از استراتژی هایی مانند clustering و load balancing استفاده کنیم.
۸. امنیت
همینطور مهمه که در پیاده سازی authentication از ایجاد آسیب پذیری ها امنیتی جلوگیری کنیم.
مهمه که حملات رایج مانند XSS و CSRF و نحوه جلوگیری را در عمل آنها را بشناسیم.
@DevTwitter | <Pouria Jahandideh/>
👍37❤4👎1🔥1
#کوته_نیوز
شبکه پرداخت
@DevTwitter
شبکه پرداخت
pay.ir تعطیل شد. مدیرعاملش گفته دهنمونو سرویس کردن سر اینترنت و بانک مرکزی هم سرورهامونو برد که روش سالاد درست کنه.@DevTwitter
👍65❤5🔥3👎1
بیا با یه ترفند خفن توی پی اچ پی آشنات کنم؟
خیلی جاها پیش میاد که میخوایم اعضای یک آرایه رو داخل متغیر قرار بدیم. توی تصویر زیر، به دو روش این کار انجام شده و نتیجه یکسان هست.
البته آرایه نباید indexed باشه.
@DevTwitter | <Pouya Farshidnia/>
خیلی جاها پیش میاد که میخوایم اعضای یک آرایه رو داخل متغیر قرار بدیم. توی تصویر زیر، به دو روش این کار انجام شده و نتیجه یکسان هست.
البته آرایه نباید indexed باشه.
@DevTwitter | <Pouya Farshidnia/>
👍45👎11🔥7