شاید براتون جالب باشه که بدونید توی نسخههای آیندهی سیستمعامل 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
حل خطای Reduce unused CSS در وردپرس!
اگه توی ابزارهای بهینهسازی مثل Lighthouse یا PageSpeed Insights با خطای Reduce unused CSS مواجه شدین، یعنی یه سری استایلهای اضافی از پلاگینها و قالبهای آماده داره ناخواسته لود میشه و سرعت سایت رو پایین میاره.
با کدی که براتون ضمیمه کردم، میتونید این استایلهای اضافی رو حذف کنید (تصاویر رو مشاهده کنید)
کافیه لینک فایل رو توی کدها جستجو کنید و id رو جایگزین کنید و کد رو هم توی function.php قرار برید.
@DevTwitter | <Amir hossein Bagheri/>
اگه توی ابزارهای بهینهسازی مثل Lighthouse یا PageSpeed Insights با خطای Reduce unused CSS مواجه شدین، یعنی یه سری استایلهای اضافی از پلاگینها و قالبهای آماده داره ناخواسته لود میشه و سرعت سایت رو پایین میاره.
با کدی که براتون ضمیمه کردم، میتونید این استایلهای اضافی رو حذف کنید (تصاویر رو مشاهده کنید)
کافیه لینک فایل رو توی کدها جستجو کنید و id رو جایگزین کنید و کد رو هم توی function.php قرار برید.
@DevTwitter | <Amir hossein Bagheri/>
❤8👍5👎3
فشرده سازی فایل ها چجوری اتفاق میوفته؟
شاید براتون سوال شده باشه که نرم افزار هایی مثل WinRAR چجوری فایل ها رو فشرده میکنن؟
خیلی ها بر این باورند که فشرده سازی فایل ها با حذف بیت ها اتفاق میوفته که کاملا غلطه
در صورتی که با حذف حتی یک بیت از فایل به طور کل فایل ناقص میسه و دیگه قابل استفاده نیست!
کلی روش و الگوریتم مختلف برای فشرده سازی فایل ها وجود داره اما یکی از پر استفاده ترین روش فشرده سازی فایل ها RLE (Run-Length Encoding) نام داره که با حذف عناصر تکراری فایل های فشرده تولید میکنه.
این الگوریتم با شمارش تعداد تکرار هر المان و ذخیره سازی تعداد اون + المان مربوطه حجم فایل ها رو کم میکنه!
اجازه بدید با مثال توضیح بدم:
مثلا فرض کنیم شما pdf یک کتاب 100 صفحه ای رو دارید و میخواهید این فایل رو فشرده کنید.
طبیعتا موارد تکراری توی فایل شما وجود داره.برای مثال در جاهای مختلف فایل شما کلمه "سلام" چند بار تکرار شده(برای مثال 3 بار) در اینجا این الگوریتم این 3 تا سلام رو تبدیل میکنه به "سلام×3"
نکته : (این عملیات فقط مختص pdf نیست و روی همه نوع فایلی کار میکنه)
این الگوریتم برای خودش یک فایل راهنما میسازه و المان،تعداد تکرار و آدرس ها رو داخل اون ذخیره میکنه تا زمان استخراج فایل فشرده بتونه تمامی فایل ها رو بازیابی کنه
@DevTwitter | <Farzad Ebrahimi/>
شاید براتون سوال شده باشه که نرم افزار هایی مثل WinRAR چجوری فایل ها رو فشرده میکنن؟
خیلی ها بر این باورند که فشرده سازی فایل ها با حذف بیت ها اتفاق میوفته که کاملا غلطه
در صورتی که با حذف حتی یک بیت از فایل به طور کل فایل ناقص میسه و دیگه قابل استفاده نیست!
کلی روش و الگوریتم مختلف برای فشرده سازی فایل ها وجود داره اما یکی از پر استفاده ترین روش فشرده سازی فایل ها RLE (Run-Length Encoding) نام داره که با حذف عناصر تکراری فایل های فشرده تولید میکنه.
این الگوریتم با شمارش تعداد تکرار هر المان و ذخیره سازی تعداد اون + المان مربوطه حجم فایل ها رو کم میکنه!
اجازه بدید با مثال توضیح بدم:
مثلا فرض کنیم شما pdf یک کتاب 100 صفحه ای رو دارید و میخواهید این فایل رو فشرده کنید.
طبیعتا موارد تکراری توی فایل شما وجود داره.برای مثال در جاهای مختلف فایل شما کلمه "سلام" چند بار تکرار شده(برای مثال 3 بار) در اینجا این الگوریتم این 3 تا سلام رو تبدیل میکنه به "سلام×3"
نکته : (این عملیات فقط مختص pdf نیست و روی همه نوع فایلی کار میکنه)
این الگوریتم برای خودش یک فایل راهنما میسازه و المان،تعداد تکرار و آدرس ها رو داخل اون ذخیره میکنه تا زمان استخراج فایل فشرده بتونه تمامی فایل ها رو بازیابی کنه
@DevTwitter | <Farzad Ebrahimi/>
5❤97👍42🔥5👎2
جمعآوری زباله (Garbage Collection) در جاوا یعنی خود زبان حافظهای که دیگه استفاده نمیشه رو پاک میکنه. در C یا C++ باید خودت حافظه رو آزاد کنی، ولی در جاوا Garbage Collector (GC) این کار رو به طور اتوماتیک انجام میده.
@DevTwitter | <Misagh Momeni Bashusqeh/>
@DevTwitter | <Misagh Momeni Bashusqeh/>
👍56👎10❤3
این perplexity یه مدل Deep Research داده بیرون، که تا نزدیک ده دقیقه وقت میگیره جواب بده و به جاش یه مطلب رو دقیق تر با امار و رفرنس درست حسابی تحلیل میکنه تحویلت میده.
جون میده برای ریپورت و پروپوزال و …گرچه که هنوز جای کار داره ولی حداقل دیگه رفرنس سازی فیک نمیکنه
@DevTwitter | <Shana/>
جون میده برای ریپورت و پروپوزال و …گرچه که هنوز جای کار داره ولی حداقل دیگه رفرنس سازی فیک نمیکنه
@DevTwitter | <Shana/>
👍58👎1
با پیشرفت روزافزون agent های کدنویسی هوش مصنوعی، مهندسان نرمافزار باید تواناییهای زیر را داشته باشند:
۱- توانایی بررسی سریع و دقیق کد نوشته شده توسط هوش مصنوعی
۲- توانایی توصیف مشکلات بهصورت واضح و کامل
۳- توانایی انجام همزمان چند کار و تغییر سریع بین زمینههای مختلف
خوب است که از حالا این مهارتها را تمرین کنید!
@DevTwitter | <Mehdi Allahyari/>
۱- توانایی بررسی سریع و دقیق کد نوشته شده توسط هوش مصنوعی
۲- توانایی توصیف مشکلات بهصورت واضح و کامل
۳- توانایی انجام همزمان چند کار و تغییر سریع بین زمینههای مختلف
خوب است که از حالا این مهارتها را تمرین کنید!
@DevTwitter | <Mehdi Allahyari/>
👍80👎17