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
اگه تا حالا API زدی، حتماً به این فکر کردی که GraphQL بهتره یا REST؟ هرکدوم یه سری مزایا و معایب دارن،
پس بیاید یه مقایسه ساده کنیم :
RESTful API :
- هر چیزی یه Endpoint داره، مثلاً /users یا /products.
- اگه اطلاعات مختلف بخوای، باید چند تا درخواست بزنی. (گاهی داده اضافی میگیری، گاهی کمتر از چیزی که لازم داری!)
- کشینگش راحتتره، چون روی HTTP سوار شده.
GraphQL :
- فقط یه Endpoint داری، ولی میتونی دقیقاً همون دادهای که لازم داری رو درخواست بدی.
- یه درخواست، چندین جواب! یعنی بهینهتر، مخصوصاً برای اپهای موبایل.
- کشینگش سختتره، ولی Apollo Client کمک میکنه.
- برای کشینگش و ارور های خاص نیاز به تنظیمات داره
پس کدومو انتخاب کنیم ؟
+ اگه API ساده میخوای که سریع بالا بیاد و کشینگ برات مهمه → REST!
+ اگه یه سرویس پیچیده داری که قراره چندین نوع کلاینت (موبایل، وب و ...) بهش وصل شن → GraphQL عالیه!
+ گاهی ترکیبشون هم جواب میده! REST برای بخشهای عمومی، GraphQL برای بخشهای خاص.
در نهایت، انتخاب بین GraphQL و REST به نیازهای پروژه بستگی داره! مهم اینه که بدونیم هر کدوم کجا بهتر عمل میکنن.
@DevTwitter | <Mohsen Abbasi/>
پس بیاید یه مقایسه ساده کنیم :
RESTful API :
- هر چیزی یه Endpoint داره، مثلاً /users یا /products.
- اگه اطلاعات مختلف بخوای، باید چند تا درخواست بزنی. (گاهی داده اضافی میگیری، گاهی کمتر از چیزی که لازم داری!)
- کشینگش راحتتره، چون روی HTTP سوار شده.
GraphQL :
- فقط یه Endpoint داری، ولی میتونی دقیقاً همون دادهای که لازم داری رو درخواست بدی.
- یه درخواست، چندین جواب! یعنی بهینهتر، مخصوصاً برای اپهای موبایل.
- کشینگش سختتره، ولی Apollo Client کمک میکنه.
- برای کشینگش و ارور های خاص نیاز به تنظیمات داره
پس کدومو انتخاب کنیم ؟
+ اگه API ساده میخوای که سریع بالا بیاد و کشینگ برات مهمه → REST!
+ اگه یه سرویس پیچیده داری که قراره چندین نوع کلاینت (موبایل، وب و ...) بهش وصل شن → GraphQL عالیه!
+ گاهی ترکیبشون هم جواب میده! REST برای بخشهای عمومی، GraphQL برای بخشهای خاص.
در نهایت، انتخاب بین GraphQL و REST به نیازهای پروژه بستگی داره! مهم اینه که بدونیم هر کدوم کجا بهتر عمل میکنن.
@DevTwitter | <Mohsen Abbasi/>
👍96🔥8👎3❤1
فرق بین Heap Memory و Stack Memory در جاواسکریپت؟
دیروز با یکی از شرکت ایرانی مصاحبه رفتم فارغ از یه سری سوالات تکراری مباحثی مانند hoisting closure , type vs interface , prototype , hook ها و... از heap و stack مموری ازم پرسیدن و همچنین مدیرت درست heap در جاوااسکریپت!
۱ - Stack Memory
- پشته (Stack) در JS برای ذخیره متغیرهای مقدار (Primitive Values) و فراخوانی توابع استفاده میشود.
- هر تابعی که فراخوانی شود، یک Stack Frame (قاب پشته) دریافت میکند که شامل متغیرهای محلی و پارامترهای آن تابع است.
- تخصیص حافظه در استک سریع و خودکار است.
۲ - Heap Memory
- حافظه هیپ (Heap) برای ذخیره اشیاء (Objects) و دادههای غیر اولیه (Non-Primitive) استفاده میشود.
- حافظه در هیپ داینامیک تخصیص داده میشود و Garbage Collector آن را مدیریت میکند که هندل کردن این بر عهده برنامه نویس هست.
نکته مهم: هنگامی که یک شیء یا آرایه ساخته میشود، مقدار آن در Heap Memory ذخیره شده و آدرس (Reference) آن در Stack Memory قرار میگیرد.
خب نکته مهم دیگر این هست که اگر برنامه نویس داده زیادی را در heap ذحیره کند باید حتما بعد از استفاده مموری را آزاد کند تا سیستم دچار Memory Leak نشود که روش آزاد سازی هم به این شکل هست که اگر دیگر نیازی به داده ندارید، مقدار null یا undefined را به متغیر اختصاص دهید تا ارجاع از بین برود و یا میتونید از WeakMap استفاده کنید که خود به خود ارجاع های بدون استفاده را حذف میکند.
@DevTwitter | <Alireza Majdi/>
دیروز با یکی از شرکت ایرانی مصاحبه رفتم فارغ از یه سری سوالات تکراری مباحثی مانند hoisting closure , type vs interface , prototype , hook ها و... از heap و stack مموری ازم پرسیدن و همچنین مدیرت درست heap در جاوااسکریپت!
۱ - Stack Memory
- پشته (Stack) در JS برای ذخیره متغیرهای مقدار (Primitive Values) و فراخوانی توابع استفاده میشود.
- هر تابعی که فراخوانی شود، یک Stack Frame (قاب پشته) دریافت میکند که شامل متغیرهای محلی و پارامترهای آن تابع است.
- تخصیص حافظه در استک سریع و خودکار است.
۲ - Heap Memory
- حافظه هیپ (Heap) برای ذخیره اشیاء (Objects) و دادههای غیر اولیه (Non-Primitive) استفاده میشود.
- حافظه در هیپ داینامیک تخصیص داده میشود و Garbage Collector آن را مدیریت میکند که هندل کردن این بر عهده برنامه نویس هست.
نکته مهم: هنگامی که یک شیء یا آرایه ساخته میشود، مقدار آن در Heap Memory ذخیره شده و آدرس (Reference) آن در Stack Memory قرار میگیرد.
خب نکته مهم دیگر این هست که اگر برنامه نویس داده زیادی را در heap ذحیره کند باید حتما بعد از استفاده مموری را آزاد کند تا سیستم دچار Memory Leak نشود که روش آزاد سازی هم به این شکل هست که اگر دیگر نیازی به داده ندارید، مقدار null یا undefined را به متغیر اختصاص دهید تا ارجاع از بین برود و یا میتونید از WeakMap استفاده کنید که خود به خود ارجاع های بدون استفاده را حذف میکند.
@DevTwitter | <Alireza Majdi/>
👍47👎9❤4
غروب افتاب Create React App
یادم نمیاد از منسوخ شدن کتابخونه یا فریمورکی ناراحت شده باشم ولی وقتی این رو دیدم خیلی احساساتی و غمگین شدم چون با این که من پنج سال بود که پروژهای رو تحت CRA دولوپ نکرده بودم ولی من با اون بود که عاشق ریاکت شدم.
@DevTwitter | <Mohammad Ebrahimi Aval/>
یادم نمیاد از منسوخ شدن کتابخونه یا فریمورکی ناراحت شده باشم ولی وقتی این رو دیدم خیلی احساساتی و غمگین شدم چون با این که من پنج سال بود که پروژهای رو تحت CRA دولوپ نکرده بودم ولی من با اون بود که عاشق ریاکت شدم.
@DevTwitter | <Mohammad Ebrahimi Aval/>
❤54👍6👎3