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

پست پین رو بخونید
https://t.iss.one/dev_perfects/455


ارتباط:
https://t.iss.one/HidenChat_Bot?start=936082426
Download Telegram
چرا PHP نسبت به بقیه زبان‌ها کندتر است و راهکار چیست؟ قسمت سوم

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

یعنی برای هر بخش از برنامه از زبان ها و تکنولوژی های مختلف استفاده میکردن

اما وردپرس به مرور که سنگین تر میشد جواب سایتای بزرگ رو نمیداد و سایتای بزرگ از وردپرس کوچ میکردن

تا اینکه با تکنولوژی های ردیس و میم کش و opcache باز میشد امید تازه ایی به وردپرس داد و جلو رفت

اما باز جواب گو نبود و باید یک معماری جدید برای php ساخته میشد...

@poinair پوینا
چرا PHP نسبت به بقیه زبان‌ها کندتر است و راهکار چیست؟ - قسمت چهارم


معماری FrankenPHP یک راه حل سازمانی برای وردپرس بود

یکی از بزرگترین مزایای FrankenPHP این است که، بر خلاف PHP سنتی، پردازش‌های قبلی را حفظ می‌کند و نیازی نیست که هر بار درخواست جدید از صفر شروع شود. این معماری، با استفاده از قابلیت‌های مدرنی مانند WebSocket و Server Push، به PHP این امکان را می‌دهد که به شکلی نزدیک به برنامه‌های Go عمل کند.

از لحاظ سرعت، FrankenPHP می‌تواند به طرز چشمگیری به عملکرد زبان‌هایی مثل Go نزدیک شود. با حذف نیاز به فرآیندهای متعدد و قابلیت پردازش درخواست‌ها در زمان کوتاه‌تر، FrankenPHP عملکردی مشابه برنامه‌های نوشته شده با Go و سایر زبان‌های بهینه شده برای وب سرورها را ارائه می‌دهد.


github.com/dunglas/frankenphp-wordpress


و امروز اگر یک سازمان و سایت بزرگ وردپرسی دارید میتوانید از این استفاده کنید

@poinair پوینا
Forwarded from Morteza Bashsiz مرتضی باشسیز (Morteza Bashsiz)
درود بر همه دوستان

ورژن تازه NipoVPN رلیز شد v1.0.25
در این ورژن مشکل هندل کردن پروسس‌های همزمان برطرف شد

بزودی یه ویدیو براش درست میکنم
سپاس فراوان

https://github.com/MortezaBashsiz/nipovpn/releases/tag/v1.0.25
همه جواب بدید ببینیم چجوریاس 😁🔥
Forwarded from Python Hints
باقی فصل‌ها آخر هفته اضافه خواهد شد. (لایو نداریم)

قطعاً باید یک تشکر هم از آیدین بکنم، که باوجود تمام درگیری‌های کاری که داره و می‌دونم

وقت اختصاص داد و ویدیو‌ها رو ادیت زد.

پ.ن :
همچنان ویدیو فصل ۱۳ رو نداریم (بجاش عکس می‌ذاریم روی یوتیوب)
تا شاید بعدها فرصت ضبط مجدد داشتیم.
Forwarded from Yasha
من اینجا دیگه از ایردراپ چیزی نمی‌نویسم. اسکریپت‌ها رو از اینجا به بعد توی این کانال می‌ذارم:
@ScriptAirdr0p
Forwarded from Gopher Academy
🔵 عنوان مقاله
The Notifier Pattern for Apps That Use Postgres

🟢 خلاصه مقاله:
متأسفانه شما متن کامل مقاله را در اختیار من قرار ندادید و اطلاعات فراهم شده بسیار محدود است. با این حال، بر اساس جمله‌ای که داده‌اید، می‌توانم چنین خلاصه‌ای ارائه دهم:

در مقاله‌ای که بررسی می‌شود، Brandur به بیان تجربیات و نگرش‌های مثبت خود نسبت به قابلیت‌های بومی pub/sub (انتشار و اشتراک‌گذاری) در پایگاه داده Postgres می‌پردازد. او این ویژگی‌ها را از نظر فنی بررسی کرده و نحوه‌ی بهره‌برداری از آن‌ها را برای بهبود ارتباطات و تعاملات درون برنامه‌های کاربردی توصیف می‌کند. Brandur تاکید می‌کند که این قابلیت‌ها به توسعه‌دهندگان اجازه می‌دهند جریان‌های داده‌ای را به شیوه‌ای کارآمد و به زمان واقعی مدیریت کنند، که می‌تواند به بهینه‌سازی عملکرد کلی سیستم‌های مبتنی بر داده کمک کند.

🟣لینک مقاله:
https://brandur.org/notifier


👑 @gopher_academy
Forwarded from Gopher Academy
در گولنگ ما دوتا از تکنیک استفاده می کنیم که به آن type assertion یا interface satisfaction checking گفته می‌شود. بیایید تفاوت‌ها را بررسی کنیم:

### 1. var _ io.ReadWriter = (*T)(nil)

این عبارت برای اطمینان از این استفاده می‌شود که نوع T از اینترفیس io.ReadWriter پیروی می‌کند. این یک تکنیک برای تایید کامپایل‌تایم است.

- هدف: بررسی می‌کند که نوع T تمام متدهای مورد نیاز برای اینترفیس io.ReadWriter را پیاده‌سازی کرده است.
- نحوه‌ی عملکرد: با اختصاص یک مقدار nil به یک اشاره‌گر از نوع T و سپس بررسی اینکه آیا می‌تواند به عنوان یک io.ReadWriter مورد استفاده قرار بگیرد، اگر نوع T همه متدهای مورد نیاز را نداشته باشد، کامپایلر ارور خواهد داد.
- استفاده در توسعه: این تکنیک به طور رایج برای ایمن‌سازی کد و جلوگیری از مشکلات پیاده‌سازی اینترفیس‌ها در زمان کامپایل استفاده می‌شود.

مثال:
type T struct{}

func (t *T) Read(p []byte) (n int, err error) {
return 0, nil
}

func (t *T) Write(p []byte) (n int, err error) {
return len(p), nil
}

// تایید می‌کند که T از io.ReadWriter پیروی می‌کند.
var _ io.ReadWriter = (*T)(nil)


در اینجا، اگر T متدهای Read و Write را نداشته باشد، کامپایلر خطا می‌دهد.

### 2. var PaymentInstance PaymentProcessor = nil

این عبارت برای تعریف یک متغیر از نوع PaymentProcessor و مقداردهی اولیه آن به nil است. در اینجا PaymentProcessor یک اینترفیس فرضی است و شما متغیری به نام PaymentInstance را به عنوان نوع اینترفیس تعریف می‌کنید و فعلاً مقدار آن nil است.

- هدف: تعریف یک متغیر از نوع اینترفیس PaymentProcessor که فعلاً به هیچ مقداری یا پیاده‌سازی‌ای اختصاص داده نشده است.
- نحوه‌ی عملکرد: این متغیر می‌تواند در آینده به یک مقداری که نوع آن پیاده‌سازی‌کننده‌ی اینترفیس PaymentProcessor است، مقداردهی شود.
- استفاده در توسعه: این مورد بیشتر برای مقداردهی اولیه و آماده‌سازی یک متغیر برای استفاده‌های بعدی است.

مثال:
type PaymentProcessor interface {
ProcessPayment(amount float64) error
}

var PaymentInstance PaymentProcessor = nil

// بعداً می‌توانیم به PaymentInstance یک پیاده‌سازی خاص بدهیم:
type PayPalProcessor struct{}

func (p *PayPalProcessor) ProcessPayment(amount float64) error {
// پردازش پرداخت
return nil
}

PaymentInstance = &PayPalProcessor{}


### تفاوت‌ها

- عبارت اول (`var _ io.ReadWriter = (*T)(nil)`): یک چک کردن کامپایل‌تایم است تا مطمئن شویم نوع T اینترفیس io.ReadWriter را پیاده‌سازی کرده است.

- عبارت دوم (`var PaymentInstance PaymentProcessor = nil`): یک متغیر از نوع اینترفیس PaymentProcessor تعریف می‌کند و مقدار اولیه آن را nil قرار می‌دهد که برای استفاده‌های بعدی آماده است.

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

👑 @gopher_academy
Forwarded from Code Module | کد ماژول (𔓙)
اگه برای تمرین و کدنویسی دنبال ui خاصی میگردید، این طرح فیگما رو به هیچ وجه از دست ندید 💀

🔗 Link

#figma
@CodeModule
Forwarded from Yasha
شب اسکریپت Cube رو بات می‌کنم می‌ذارم.
Forwarded from کانال اطلاع‌رسانی توزیع پارچ (بلاگ پارچ لینوکس)
این یک پیام آزمایشی از بلاگ پارچ لینوکس است.
Forwarded from CleverDevs (Mammad)
یکی از ابزار های باحال و کاربردی ای که میتونه کارتون رو آسون تر کنه mdbook هستش

اگه برنامه ای نوشتید و میخواید براش داکیومنت بنویسید یا حالا برای هر کاری میخواید یه داکیومنت تحت وب بسازید میتونید از این ابزار استفاده کنید

درواقع شما صفحه هاتون رو به صورت Markdown مینوسید و mdbook خودش بر اساس اون html جنریت میکنه

توضیحات بیشتر و نحوه نصب و استفاده رو میتونید تو صفحه خودش ببینید

https://rust-lang.github.io/mdBook/guide/installation.html

#tools | src
@CleverDevs - @CleverDevsGp
Forwarded from linuxtnt(linux tips and tricks) (hosein seilany https://seilany.ir/)
🔸ابزار M-Switch

یک ابزار تغییر سورس لیست برای کالی است. شما می‌توانید از این اسکریپت برای به‌روزرسانی فایل sources.list خود با سریع‌ترین مخزن موجود استفاده کنید. این ابزار از curl برای تست اتصال با مخزن استفاده می‌کند،.

🔸 ادرس گیت ها دسترسی به کد:

https://github.com/Sir-MmD/M-Switch



🔸باتشکر از دوست خوبمون که این سورس کد را آماده
کردند
Forwarded from Linuxor ?
گوگل بهتون رایگان یه شل دبیان بیس میده که 5 گیگ هم حافظه داره روش داکر، گیت، پایتون و پی اچ پی و ... هم از قبل نصب کرده


یه ادیتور هم داره که برای بالا اوردن پروژه های کوچیک خیلی کار راه بندازه

shell.cloud.google.com

🐧 @Linuxor
توی پست جدیدمون SSE یا همون Server Sent Events رو بررسی کردیم

مبحثی که ۹۰٪ بک اند کارا هنوز ازش خبری ندارن 😄

https://www.instagram.com/p/DAi-T83Jc5q/?igsh=ZHExOXA4NGFqb3By
Forwarded from Sadra Codes
آخرین تلاش های Edge واسه زنده موندن:
😁1