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
Forwarded from Gopher Academy
🔵 عنوان مقاله
Bufstream: Robust Streaming for gRPC

🟢 خلاصه مقاله:
**
اBufstream یک سیستم جدید و مخصوصی است که برای پیاده‌سازی Kafka با استفاده از جریان‌های gRPC در محیط ابری طراحی شده است. این سیستم که ترکیبی از فناوری پخش جریان موزون Kafka و کارایی و سرعت gRPC است، به‌خوبی آزمون‌های سختگیرانه Jepsen را پشت سر گذاشته و در شرایط مختلف شبکه و تنش، داده‌ها را با دقت و قابلیت اطمینان بالا حفظ می‌کند.

🟣لینک مقاله:
https://golangweekly.com/link/168169/web


👑 @gopher_academy
یک ساعت در Linux معادل ۷ سال در ویندوز
آپدیت ، ریستارت،
آپدیت ، ریستارت😩.
یه فانکشن کاربردی به اسم batched توی ماژول itertools از پایتون ۳.۱۲ اضافه شده. هر بار n تا آیتم از iterable بهت می‌ده. خیلی چیز کاربردیه:
https://docs.python.org/3/library/itertools.html#itertools.batched

@DevTwitter | <GreateBahram/>
Forwarded from  (Amir Hossein (Amiria) Maher)
عیسی از معجزه برسازد رنگ
او چه محتاج به نیل و بقم است

— خاقانی

عید پاک مبارک. 🥚🎉

#event #موقت
Forwarded from Md Daily (Mahan)
قسمت دوم (پایانی)

بعد از تلاش برای باز تولید مشکل هیچ پیغام خطا یا کرش واضحی وجود نداشته. stack trace مشخصی هم روی صفحه دیده نمی‌شده. فقط سکوت محض تا لحظه پیدا شدن یه خطای runtime error که از لایه‌های عمیق اون SDK آپدیت‌شده‌ی Apple Pay سرچشمه می‌گرفت.داشته سعی می‌کرده از یه method خاص استفاده کنه که توی محیط بعضی از مرورگرهای قدیمی‌تر اصلاً پشتیبانی نمی‌شده. نکتش اینجاس که Apple Pay فقط روی سافاری کار می‌کنه پس این خطا فقط روی نسخه های قدیمی سافاری خودشو نشون میداده. SDK موقع بالا اومدن و مقداردهی اولیه از یه تابع استفاده می کرده که باعث کرش می‌شده. نه فقط برای خود Apple Pay، بلکه برای همه چی! از همون باگ‌های موذی که موقع توسعه از زیر دست در میره و دیده نمی‌شه.

فقط درست کردن باگ مهم نیست؛ بحث سرِ قبول مسئولیت کاره

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

- این خرابی و قطعی، واقعاً چه معنی و تجربه‌ای برای کاربر داشت؟

- این قطعی چقدر برای کل کسب‌وکار هزینه برداشت؟

- آیا می‌شد این مشکل رو زودتر تشخیصش داد؟

- ممکنه دوباره همچین اتفاقی بیفته؟

ما اینجا نیستیم که فقط مثل ربات به آلارم‌ها واکنش نشون بدیم و کدها رو سرسری وصله‌پینه کنیم و ما کدنویس‌هایی نیستیم که بشه مثل ChatGPT بهمون پرامپت داد و انتظار داشت مشکل غیب بشه. اینجاییم که عمیق فکر کنیم، مسئولیت کامل نتایج کارهامون رو به عهده بگیریم و فعالانه جلوی آسیب‌های آینده رو بگیریم.

پس برای مستند کردن چه چیز هایی رو میتونیم بنویسیم؟


- چی رو تغییر داده بودیم

- اصلاً چرا تغییرش داده بودیم

- چی و کجا خراب شد

- چطور شد که این مشکل از زیر دست تیم QA در رفت و دیده نشد

- چه چیزهایی توی monitoring ما از قلم افتاده بود که زودتر نفهمیدیم

این کار رو نه به خاطر اینکه کسی خواسته انجام بدیم، بلکه به این دلیل انجام بدیم که شاید خودِ آینده (یا یکی از هم‌تیمی‌های آینده‌) به مشکل مشابهی بر بخوره و اون‌ها بتونن خیلی سریع‌تر به جواب و راه حل برسن.

این قطعی و اوت‌ایج ها فقط بهمون یاد نمیده که چی اشتباه شده بود یا کجای کار می‌لنگید. باعث میشه از خودمون بپرسیم: اگه دوباره همچین اتفاقی بیفته، این بار چه کارهایی رو متفاوت انجام می‌دیم؟

جمع‌بندی و حرف آخر


راستش هیچ‌کس به آدم نمیگه اولین باری که یه مشکل جدی و یه «آتیش‌سوزی» تو محیط پروداکشن درست می‌کنی، دقیقاً چه حسی داره. فوق‌العاده پراسترسه و بله، گاهی وقتا هم واقعاً تقصیر کدیه که شما نوشتین.

ولی خب، آدم یاد می‌گیره.

یاد می‌گیری که «قبول کردن کامل مسئولیت» واقعاً یعنی چی.

یاد می‌گیری که چطور یه قدم بری عقب‌تر و دید وسیع‌تری پیدا کنی (zoom out کنی)؛ دیگه فقط به این فکر نکنی که «چی خراب شد؟»، بلکه بری سراغ اینکه «این خرابی روی چه کسایی تأثیر گذاشت؟».

یاد می‌گیری که یه مهندس خوب بودن، به معنی نوشتن کدِ بی‌عیب‌ونقص و عالی نیست؛ بلکه به اینه که چطور بحران رو مدیریت می‌کنی، وقتی که اوضاع اصلاً خوب و عالی نیست.

یه چک‌لیست برای وقتی که این اتفاق برای شما میفته:

- سریع نپرین سراغ دیباگ کردن: اگه مشکل جدیه و روی کاربرها تأثیر مستقیم گذاشته، اولین قدم اینه که کد رو برگردونین به نسخه‌ی قبلی. بعدش با خیال راحت‌تر برین دنبال دلیل مشکل بگردین.

- زود و شفاف اطلاع‌رسانی کنین: حتی یه پیام کوتاه مثل «دوستان دارم بررسی می‌کنم» توی کانال‌های ارتباطی خیلی تأثیر مثبتی داره و به آروم شدن فضا کمک می‌کنه.

- سعی کنین مشکل رو توی محیط‌های کنترل‌شده و ایزوله باز تولید کنین: یعنی دقیقاً با همون شرایطی که مشکل پیش اومده (مثلاً همون مرورگر، همون نسخه و ...).

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

- آستانه‌ی هشدارهای سیستم پایش و مانیتورینگ رو دوباره یه نگاهی بندازین: آیا واقعاً جوری تنظیم شدن که خرابی‌های کوچیک، نامحسوس یا تدریجی رو هم زود تشخیص بدن؟

- اتفاقی که افتاده رو با زبون ساده و واضح مستند کنین: این کار رو فقط برای بقیه اعضای تیم انجام ندین، بلکه برای خودتون در آینده هم انجام بدین. حافظه یاری نمی‌کنه!

- به تأثیر مشکل روی کسب‌وکار (business impact) فکر کنین: حدوداً چند تا کاربر تحت تأثیر قرار گرفتن؟ و این مشکل برای چه مدت زمانی ادامه داشت؟

- اگه در حین بررسی، به الگوها یا نکته‌های کلیدی رسیدین، حتماً یادداشتشون کنین: این نکته‌ها برای بحران بعدی فوق‌العاده ارزشمندن.

—-

💡 مثل همیشه کنجکاو بمونید :)

🆔 @MdDaily
Please open Telegram to view this post
VIEW IN TELEGRAM
آقا من نمیدونستم همچین لیستی وجود داره:
Most active GitHub users in Iran
لینک:
https://committers.top/iran_private

@DevTwitter | <Ario Barzan/>
وقتی یک ادمین رو میخواید توی وردپرس پاک کنید که نوشته یا محصول داره

باید مشخص کنید مطالب این محصول و نوشته به کدوم از کاربران داده بشه

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

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

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

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


این کد رو بزارید توی فاکشن قالب :


add_filter( 'wp_dropdown_users_args', 'limit_users_in_delete_screen' );

function limit_users_in_delete_screen( $args ) {
global $pagenow;

if ( $pagenow === 'users.php' && isset($_GET['action']) && $_GET['action'] === 'delete' ) {
// فقط نقش مدیر کل
$args['role'] = 'administrator';
}

return $args;
}


@poinair پوینا
نمایش تعداد سفارشات تکمیل شده و مجموع پرداختی ها در قسمت یوزر ها در ووکامرس

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


@poinair پوینا
نمایش روش پرداخت در قسمت سفارشات ووکامرس

اگر میخواید در قسمت سفارشات ووکامرس یک ستون اضافه بشه روش پرداخت رو نشون بده

این کد رو بزارید انتهای فاکشن قالبتون

مثلا نشون بده با زرین پال بوده بانک ملی بوده ملت بوده چی بوده

فقط نامش رو فارسی نمینویسه



@poinair پوینا
باگ امنیتی مهم توی وردپرس و ووکامرس

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


باید کاری کنیم که از طریق صفحه‌هایی مثل my-account دیگه نشه با یوزر ادمین وارد سایت شد و صفحه لاگین مخصوص ادمین‌ها رو هم یه جای مخفی بذاریم.

توی کدی که براتون آماده کردیم، اگه کسی بخواد با یوزر ادمین از طریق my-account وارد بشه، بهش پیغام میده که همچین حسابی وجود نداره!

اگه لینک صفحه my-account سایتتون فرق داره، کافیه توی کد، لینک درست خودتون رو بذارید.

این کار باعث میشه امنیت سایتتون چند برابر بشه و صفحه لاگین ادمین‌ها و مشتری‌ها از هم جدا باشه!

فقط کافیه این کد رو انتهای فایل functions.php قالب سایتتون بذارید.

@poinair پوینا
Forwarded from Philocode
بیایید بریم استرالیا... اگه عنکبوت سمی نیشمون نزنه و کانگورو شکممون رو پاره نکنه، آب و هواش خیلی خوبه!
Forwarded from Gopher Academy
🔵 عنوان مقاله
Vite Backend Integration for Go

🟢 خلاصه مقاله:

این مقاله به بررسی روش‌های ادغام یک فرانت‌اند مبتنی بر Vite با بک‌اند مبتنی بر Go می‌پردازد. Vite به دلیل بازسازی سریع و امکاناتی چون جایگزینی ماژول‌های داغ و بسته‌بندی بهینه‌شده، تجربه توسعه فرانت‌اند را بهبود می‌بخشد. از طرفی، Go برای بک‌اند به دلیل عملکرد قوی، کارایی بالا و مدیریت بهینه منابع در مدیریت ترافیک شبکه و پردازش داده مناسب است. ترکیب این دو فناوری اغلب از طریق تماس‌های API برای برقراری ارتباط بین فرانت‌اند و بک‌اند انجام می‌گیرد، که نتیجه آن ساختاری قابل ارتقا و قابل نگهداری است که به خوبی پاسخگوی نیازهای مدرن تولید نرم‌افزار می‌شود.

🟣لینک مقاله:
https://golangweekly.com/link/168171/web


👑 @gopher_academy
اگه بخوای فقط یه کامیت رو از یه برنچ دیگه بیاری چیکار میکنی؟

تاحالا شده رو یه برنچی یه کامیت بزنی بعد بفهمی اون کامیت رو تو یه برنچ دیگه هم نیاز داری؟

با دستور git cherry-pick میتونی اینکارو بکنی.

فقط یه کامیت رو میخوای بیاری تو برنچ فعلی:

𝗚𝗶𝘁 𝗰𝗵𝗲𝗿𝗿𝘆-𝗽𝗶𝗰𝗸 [𝗰𝗼𝗺𝗺𝗶𝘁𝗜𝗗]

چندتا کامیت پشت‌سر هم رو میخوای بیاری تو برنچ فعلی:

𝗚𝗶𝘁 𝗰𝗵𝗲𝗿𝗿𝘆-𝗽𝗶𝗰𝗸 [𝘀𝘁𝗮𝗿𝘁𝗖𝗼𝗺𝗺𝗶𝘁𝗜𝗗]..[𝗲𝗻𝗱𝗖𝗼𝗺𝗺𝗶𝘁𝗜𝗗]

کامیت اشتباهی رو آوردی تو برنچ و میخوای برگردونی:

𝗚𝗶𝘁 𝗰𝗵𝗲𝗿𝗿𝘆-𝗽𝗶𝗰𝗸 —𝗮𝗯𝗼𝗿𝘁


فقط حواست باشه اگه وابستگی به کامیت‌های قبلی داشته باشه، ممکنه conflict بخوری

@DevTwitter | <Soudabe Heydari/>
Forwarded from 🎄 یک برنامه نویس تنبل (The Lazy 🌱)
🔶 دوستان گرامی توی اگهی استخدامتون هر چی میخواید تخصص بزنید مثل قبل

کارجو هم میبینه بررسی میکنه نهایتا چند تخصص رو نداره میره دنبال افزایش دانشش

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

جوان n ساله یا شخص n ساله هر دو حق دارن کار کنن و متخصص باشن اما شرط سن یعنی محدود کردن و محروم کردن

یعنی فرار از پرداخت حق تجربه و دانش ادمی که در این تخصص سالها وقتش رو گذاشته

بقیش هم که خودتون میدونید....

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

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

#نه_به_فرهنگ_کاری_نادرست

</Akbar Rezaeyan Ghane>

@TheRaymondDev
Forwarded from Philocode
یکی از دلایل این‌که بچه نمی‌خوام، اینه که حوصله ندارم سر این‌که کی خوراکی‌هامو خورده دعوا کنم.
Forwarded from Dev Dastan
🧱 5 Core Pillars of System Design


✔️ Designing systems is one thing, but mastering the principles that guide their creation is where the real magic happens.


1️⃣ Availability Ensures systems are up and running.
⚠️ Trade-off: Complexity vs. uptime.


2️⃣ Scalability Handles growing loads efficiently.
⚠️ Trade-off: Cost vs. performance.


3️⃣ Reliability Guarantees consistent performance.
⚠️ Trade-off: Redundancy vs. simplicity.


4️⃣ Maintainability Eases updates and debugging.
⚠️ Trade-off: Initial effort vs. long-term gains.


5️⃣ Performance Optimizes speed and responsiveness.
⚠️ Trade-off: Resources vs. user experience.




📚 Article: [here]

#systemDesign #softwareEngineering


🖥 Follow @devDastan for more content.
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Geek Alerts
یه ماراتن تو پکن برگزار کردن که توش ۲۱ ربات انسان‌نما با ۱۲ هزار دونده رقابت کردن، هدف این بود نشون بدن ربات‌ها چقدر توی دویدن مسافت‌های طولانی پیشرفت کردن.

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

🔗 interestingengineering
🤓 @geekalerts
Please open Telegram to view this post
VIEW IN TELEGRAM