Dev Perfects – Telegram
Dev Perfects
41 subscribers
9.23K photos
1.26K videos
468 files
13K links
بخوام خیلی خلاصه بگم
این کانال میاد مطالب کانالای خفن تو حوزه تکنولوژی و برنامه نویسی رو جمع میکنه

پست پین رو بخونید
https://news.1rj.ru/str/dev_perfects/455


ارتباط:
https://news.1rj.ru/str/HidenChat_Bot?start=936082426
Download Telegram
همزمانی (Concurrency) در لاراول 11 را بیشتر بشناسیم
همزمانی یا Concurrency در Laravel نقش مهمی در بهبود عملکرد و مدیریت بار دارد. با استفاده از مکانیزم Queue و قابلیت Task Scheduling، می‌توان وظایف را به‌صورت همزمان اجرا کرد. برای جلوگیری از Race Condition، اغلب از Lock و Transaction در سطح دیتابیس بهره می‌بریم. هنگامی که تعداد درخواست‌ها بالا می‌رود، توزیع بار توسط سرورهای متعدد در کنار مدیریت صحیح Session و Cache، Concurrency را کارآمدتر می‌کند. همچنین نظارت بر Performance و پیاده‌سازی الگوی Event-driven رویکردی کلیدی برای ساخت اپلیکیشن‌های مقیاس‌پذیر است. همچنین به‌کارگیری ابزارهایی مثل Horizon جهت مانیتورینگ Queue و Jobها، در تضمین سلامت Concurrency کمک میکند.

@DevTwitter | <Alireza Javadi/>
Forwarded from DevAcademy
استخدام برنامه نویس Nest.js

Required Skills:
Strong proficiency in Nest.js and Node.js
Experience with TypeScript
Familiarity with GraphQL and RESTful APIs
Hands-on experience with MongoDB or PostgreSQL
Knowledge of Microservices Architecture and Message Brokers (RabbitMQ, Kafka)
Experience with Docker and Kubernetes is a plus
Understanding of CI/CD Pipelines

Responsibilities:
🔹 Develop and maintain backend services using Nest.js
🔹 Optimize system performance and scalability
🔹 Collaborate with frontend and DevOps teams
🔹 Write unit and integration tests to ensure code quality

First month test
payment 10 $ per hour
Cv: Zoobin@predipie.com
working time from
12pm dubai time to 8pm dubai time
project: Game

💻@DevAcaademy
💬
@DevAcademyGroup
چرا بعضی Unit Testها به هیچ دردی نمی خورن؟

تا حالا براتون پیش اومده که بعد از کلی وقت گذاشتن روی نوشتن تست های واحد، بازم سیستم با یه باگ ناجور منفجر بشه؟ اون حس ناامیدی که انگار همه اون تست ها فقط وقت تلف کردن...

خب، چرا این اتفاق می افته؟
یه سری اشتباهات رایج باعث می شه تست ها بی اثر بشن. مثلا:

استفاده از داده های واقعی به جای داده های ساختگی:
فکر کنید تست تون روی دیتابیس واقعی اجرا بشه. اگه رکوردها تغییر کنن یا دسترسی به دیتابیس قطع بشه، تست می ترکه. تست خوب باید مستقل از محیط باشه.

عدم استفاده از Mocking:
وقتی همه وابستگی های کد واقعی باشن، دارین کل سیستم رو تست می کنید، نه فقط یه بخش خاص رو. این دیگه Unit Test نیست! استفاده از Mock باعث می شه به جای اینکه به API واقعی یا دیتابیس وصل بشید، شبیه ساز اون ها رو تست کنید.

نوشتن تست های زیاد ولی بدون هدف مشخص:
یه زمانی فکر می کردم هرچی تعداد تست ها بیشتر باشه بهتره. بعد فهمیدم تستی که هدفمند نباشه، فقط کد رو شلوغ می کنه و باعث می شه موقع تغییرات کلی مشکل زا بشه.

حالا راه حل چیه؟
۱. وابستگی ها رو Mock کنید. با ابزارهایی مثل Mockito می تونید رفتار وابستگی ها رو شبیه سازی کنید.
۲. از داده های ثابت و ساختگی (Fake Data) استفاده کنید که تغییر نمی کنن.
۳. روی سناریوهای کلیدی تمرکز کنید. مثلا یه تابع مهم چطوری ورودی های خاص رو هندل می کنه؟ این مهم تر از اینه که صد تا تست بنویسید که همشون بی هدف باشن.

@DevTwitter | <Hamed Farzanefar/>
Forwarded from Go Casts 🚀
ویکی postgresql یه لیستی از anti-patternهارو لیست کرده و در موردشون توضیح داده، خوبه که لیست رو ببینید، احتمالش زیاده همین الان، در لحظه چند تا از این anti-patternهارو در حال استفاده باشید که بهتره جایگزین کنید.
مثلا NOT IN یا BETWEEN شاید استفاده ش کم نباشه تو کوئری ها.

https://wiki.postgresql.org/wiki/Don%27t_Do_This


@gocasts
Forwarded from Code Module | کد ماژول (genix)
چند تا کامند کاربردی و کمتر شناخته شده از گیت 🦦

میدونستی به جز push و pull گیت کامند های دیگه ای هم داره؟ در این پست من چند کامند کمتر شناخته شده و کاربردی رو بهتون معرفی میکنم.

💎 ‏git stash

زمانی که شما در برنچ A هستید و یهویی مجبورید به برنچ B سوییچ کنید و نمی‌خواید این تغییرات نیمه‌کاره رو کامیت کنید، git stash به دادتون میرسه. تغییراتتون رو جمع می‌کنه و میتونید بدون کامیت کردن به یک برنچ دیگه برید.

💎 ‏conditional config

اینجوری بگم که با این قابلیت می‌تونید تعیین کنید یه تنظیم خاص تو گیت فقط تحت شرایط خاصی اعمال بشه. مثلا اگه در یک پروژه خاص بودید، یا برای یه ایمیل خاص، تنظیمات متفاوتی داشته باشی.

💎 ‏git blame

این کامند برای وقتی هست که در تیم، یک قسمت از کد خراب شده و میخواید بدونید کدوم دولوپر کامیت کرده و مقصر کیه. با این کامند به راحتی میتونید بفهمید چه کسی اون فایل رو تغییر داده.

💎 ‏git reflog

این کامند برای زمانی خوبه که یک خرابکاری کردی، مثلا یک کامیت پاک کردی و این کامند بهت نشون میده چه تغییراتی صورت گرفته. این کامند به طور پیش‌فرض فعال هست و تغییرات محلی رو ثبت می‌کنه. (مثلا زمانی که ما از کامند git log استفاده میکنیم)

💎 ‏git diff —word —diff

به جای اینکه کل تغییرات رو خط‌به‌خط رو ببینی، این کامند تغییرات رو کلمه‌به‌کلمه نشون میده. برای وقتایی که کد زیاد داری، خیلی کمک می‌کنه.

💎 ‏git push —force-with-lease


این یه جور فورس پوش هست، ولی با احتیاط! به جای اینکه فورس بزنی و تغییرات دیگران رو overwrite کنی، این تضمین می‌کنه که اگه کسی دیگه چیزی تو ریپازیتوری تغییر داده، پوش تو انجام نشه.

به صورت خلاصه این کامند ها قطعا یه روز به کارتون میاد و به نوبه خودشون کاربردی هستن. دقت کنید تعداد کامند های گیت حدودا بیشتر از ۱۵۰ تا هست و اگه علاقه مند به کشف باقی موارد هستید، میتونید از YouTube اقای Scott Chacon اطلاعات خوبی به دست بیارید. ایشون نویسنده کتاب معروف Git Pro، و یکی از بنیانگذاران گیت هاب هستن.

#git
@CodeModule
Forwarded from Gopher Academy
هفته نامه Golang Nugget رو اگه دوست داشتید دنبال کنید.
منابع خوبی رو معرفی میکنه
این یه نمونه ش هست

https://golangnugget.com/p/go-concurrency-upgrade-strategies-memory-management-january-6-2024

این خبرنامه رو آقا لیام عزیز مدیریت میکنه
https://x.com/liammanesh


<Hossein Nazari/>


https://news.1rj.ru/str/addlist/KpzXaiSpKENkMGM0
Forwarded from Gopher Academy
دیزاین پترن Facade در Golang
یکی از دیزاین پترن های جذاب و کاربردی، پترن Facade! شاید اسمش یه کم شیک به نظر بیاد، ولی قول میدم که خیلی کاربردیه و کارمون رو راحت‌تر می‌کنه.

حالا Facade چیه؟
فرض کن جلوی یه ساختمون خیلی شیک و بزرگ وایسادی، ولی لازم نیست بری داخلش و همه اتاقاشو ببینی. فقط کافیه از بیرون، نمای ساده و مرتبش رو ببینی و کارتو راه بندازی. پترن Facade دقیقاً همینه! یه رابط کاربری ساده می‌ده که دیگه لازم نباشه با پیچیدگی‌های سیستم درگیر بشی.

چرا باید ازش استفاده کنیم؟
دو تا اصل مهم دنیای کدنویسی اینجا برامون روشن‌تر می‌شه:
1- همه چی ساده باشه KISS
  2- تکرار نکن DRY

وقتی از Facade استفاده می‌کنی، پیچیدگی‌های پشت پرده سیستم رو قایم می‌کنی و فقط چیزی که کاربر (یا حتی خودت!) نیاز داری رو نشون می‌دی. کدت مرتب‌تر، قابل نگهداری‌تر و قابل‌فهم‌تر می‌شه.

ی مثال ساده: اتصال به دیتابیس
فرض کن می‌خوای به دیتابیس وصل بشی، کوئری بزنی و قطع کنی. بدون Facade و با Facade داخل تصویر هست.

کاربردهای دیگه:
کار با فایل‌ها
ارتباط با API
راه‌اندازی وب‌سرور
مدیریت سفارش‌های فروشگاه آنلاین
و...

این Facade مثل یه شمشیر دولبه‌ست. اگه زیادی ساده‌سازی کنی یا بخوای همه کارها رو تو یه struct و متدهاش بذاری، ممکنه یه ساختار پیچیده (God Object) بسازی که خودش یه مشکل جدیده.

خلاصه صحبت هامون:
دیزاین پترن Facade، یه ابزار فوق‌العاده برای ساده‌سازی و مرتب کردن کدهاتونه. اما همون‌طور که هر چیزی حد داره، از این پترن هم فقط وقتی استفاده کن که به درد بخوره و لازم باشه.


<Mohammad Abdorrahmani/>

https://news.1rj.ru/str/addlist/KpzXaiSpKENkMGM0
اگر درس ساختمان داده داشتید و میخواستید بفهمید Linkedlist چطوریه این پروژه مثال خوبی ازشه ...

https://github.com/Mahdi-Rashidiyan/data-structure-study/blob/main/Liblinkedlist.py

@DevTwitter | <Mehdi Rashidiyan/>
Forwarded from 🎄 یک برنامه نویس تنبل (The Lazy 🌱 Raymond)
🔶 درآمد بیشتر پورن هاب از یوتیوب

بالاخره فهمیدم 😂

@TheRaymondDev
Forwarded from Mahi in Tech
یکی از مواردی که می‌تونه دید خیلی خوبی نسبت به سناریوهای مختلف توی پروژه‌های کوچیک و بزرگ بهتون بده و شما رو به مهندس بهتری تبدیل کنه نه صرفا کدنویس، مطالعه‌ی tech blog شرکت‌های بزرگ هست؛ حالا چه ایرانی و چه خارجی. معمولا تجربیات و مقالات ارزشمندی بین‌شون پیدا می‌شه.
در ادامه لیستی از مقالات تخصصی و فرانت‌اندی شرکت PayPal رو که توسط Soheib Kiani معرفی شده بود قرار دادم:

🔻چطور PayPal Checkout اپلیکیشن frontend خودش رو مقیاس‌پذیر کرد؟ 
 https://bluepnume.medium.com/sane-scalable-angular-apps-are-tricky-but-not-impossible-lessons-learned-from-paypal-checkout-c5320558d4ef

🔻‏PayPal درباره Dependency injection چه نظری داره؟ 
 https://bluepnume.medium.com/dependency-injection-in-angular-isn-t-worth-it-more-lessons-learned-from-scaling-paypal-checkout-2189ec9c21a0

🔻 کاهش 1000 دکمه PayPal به iFrame 
https://bluepnume.medium.com/less-is-more-reducing-thousands-of-paypal-buttons-into-a-single-iframe-using-xcomponent-d902d71d8875

🔻 درخواست‌های cross-origin بدون CORS 
https://bluepnume.medium.com/reinventing-cross-origin-requests-without-cors-b9c4cb645376

🔻 چرا اپلیکیشن وب جدید در PayPal از Typenoscript استفاده می‌کنه؟ 
 https://medium.com/@kentcdodds/why-every-new-web-app-at-paypal-starts-with-typenoscript-9d1acc07c839

🔻 مقیاس‌پذیری GraphQL در PayPal 
 https://medium.com/paypal-tech/scaling-graphql-at-paypal-b5b5ac098810

🔻 کامپوننت‌های UI قابل اشتراک‌گذاری PayPal در سطح Enterprise
 https://medium.com/paypal-tech/reusing-ui-components-at-enterprise-level-a7df1ea1f8dd

🔻 اپلیکیشن‌های PayPal معماری Microfrontend رو دنبال می‌کنند  
 https://medium.com/paypal-tech/how-micro-frontend-has-changed-our-team-dynamic-ba2f01597f48

🔻 توضیح PayPal درباره پذیرش GraphQL 
https://medium.com/paypal-tech/graphql-at-paypal-an-adoption-story-b7e01175f2b7

🔻 داستان موفقیت PayPal Checkout 
https://medium.com/paypal-tech/graphql-a-success-story-for-paypal-checkout-3482f724fb53

#PayPal #FrontEnd
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Forwarded from Linuxor ?
توی ++C، توابع ()likely و ()unlikely به برنامه‌نویس اجازه می‌ده تا به کامپایلر اطلاع بده که احتمال وقوع یک مسیر خاص توی کد بیشتره یا کمتره. این موضوع می‌تونه بهینه‌سازی عملکرد برنامه را بهبود بده، به ویژه توی branch prediction یا پیش‌بینی انشعاب پردازنده.

وقتی پردازنده با یه دستور شرطی مثلا if یا switch روبه‌رو می‌شه، نیاز داره پیش‌بینی کنه که کدوم مسیر کد اجرا قراره بشه. اگه این پیش‌بینی درست باشه، پردازنده سریع‌تر عمل می‌کنه.

مثلا کد زیرو ببینید

if (likely(value > 0)) {
cout << "Positive value";
} else {
cout << "Non-positive value";
}


اینجا likely به کامپایلر اطلاع می‌ده که شرط value به احتمال زیاد بزرگ تر از 0 هستش پس کامپایلر این مسیرو بهینه مدیریت می‌کنه.


@Linuxor
دوستان یه ریپوزیتوری توی گیت‌هاب شروع کردم که دیزاین پترن ها توی پایتون رو کدش رو میزارم، دوست داشتید فورک کنید و کانتریبیوت کنید و در نهایت PR بزنید.

https://github.com/khodealib/designpattern-in-python

@DevTwitter | <فرداد/>
هفته پیش اولین پروژه Rust خودم رو تحویل دادم.

یک ابزار تحت ترمینال برای آنالیز فایل (تعداد خیلی بالا) بود.
توی پایتون نوشته شده بود، می‌خواستند بیارنش روی Rust و یکسری ویژگی جدید هم بهش اضافه کنند.
هرچند من بعد از خوندن کدها بهشون اطلاع دادم که کد پایتون درست نوشته نشده و همون باعث کند بودن هست و می‌تونم درستش کنم ولی به خواست خودشون رفتم روی Rust امروز تأیید خروجی و تست‌ها و پرداخت انجام شد و شد اولین دستمزد Rust من و سریعترین درآمد مبلغ خوبم از یادگیری زبان برنامه‌نویسی جدید.

البته این درآمد نشه موضوعی برای اینکه برید Rust یادبگیرید، چون قطعاً تجربیات دیگری که داشتم باعث شد این پروژه رو بگیرم.

اما، خواستم این رو بگم که بیشترین کمک رو بهم، خوندن سورس کد دیگران کرد.
مثلاً پروژه Limbo که بالاتر گفتم، خیلی خیلی کمکم کرد که توی ۱ روز تمام دستورات cli پروژه رو بزنم.

ازم درخواست tui کردند که گفتم درحال حاضر وقتش رو ندارم و حقیقتا تا حالا هم tui برای Rust نخوندم.
احتمالاً بعد از خوندن ۲-۳ تا سورس کد دیگری که در دستم هست و تمرین کردنشون برم سراغ یادگیری پکیج‌های tui و بعد از اون Tauri یا Dioxus ولی این موضوع انگیزه شد مضاعف برای ادامه مسیر.
همین چنل رو با همین محتوا توی واتساپ هم بزنیم، حمایت می‌کنید؟
Anonymous Poll
55%
نه، همین تلگرام خوبه
45%
خیر، واتساپ بدرد نمیخوره، همین تلگرام کافیه
من از ......... استفاده می‌کنم برای پایتون
Anonymous Poll
68%
VSCode
28%
PyCharm
8%
notebook
6%
notepad
20%
موارد دیگر
Forwarded from Linuxor ?
نسخه ۱۱ از اپ #mahsaNG در گوگل‌پلی منتشر شد.

👉 play.google.com/store/apps/details?id=com.MahsaNet.MahsaNG
💡 github.com/GFW-knocker/MahsaNG/releases/latest

برخی‌از تغییرات:
- بروزرسانی هسته به نسخه ۲۵.۱.۱
- پشتیبانی از hy2, quic, splitHttp, xHttp
- اضافه‌شدن گزینه مسدودسازی تبلیغات
- امکان تست بسیار سریع‌تر پینگ
و ...

🔍 ircf.space/software
@ircfspace‏⁧
به من خیلی پیام می‌دید که کامنت‌های چنل رو باز کنم.

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

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

مخلص همتون