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 Python BackendHub (Mani)
خلاصه پروداکتا یک وقتا به یک جایی میرسن که هر تغییری بدی یکی یک شکایتی میکنه :))
وقتی باگ ها تبدیل به فیچر میشن
@PyBackendHub
تا حالا شده با خودتون فکر کنید که توی مریخ چقدر زلزله میاد؟ میدان مغناطیسیش چقدر تغییر می‌کنه؟ خب تو ذهن ژئوفیزیست مریضی مثل من همچین سؤال‌هایی هست و تصمیم گرفتم یه ابزار بصری‌سازی داده‌ لرزه‌نگاری برای InSight Lander هم به صورت دو بعدی و هم بصورت سه بعدی بنویسم :)
شاید زیاد تو زندگی روزمره‌تون کاربرد نداشته باشه ولی می‌تونه برای افراد کنجکاو جالب باشه :)

https://github.com/aradfarahani/PlanetaryGeophysics

@DevTwitter | <Arad/>
Forwarded from Frontend with Erfun👨🏻‍💻 (Erfun Ghodoosi)
واقعا وقتی خیلی توی یه موضوع عمیق میشید عملا برای کار کردن باهاش براتون گلوگاه ذهنی ایجاد میشه:)

یکمی پیدا کردن اون راه حل ساده براتون سخت میشه چون حتی یک خط کد که میزنید هزار تا مسئله رو در نظر میگیرید و عملا اجازه حرکت بهتون نمیده این سنگینی فکری که ایجاد شده.

برای همینه team lead ها یا senior ها کمتر کد میزنن. اینقدر همه چیز رو میدونن و با فهمیدن خیلی چیزا تازه متوجه این موضوع شدن که "چقدر هیچی نمیدونن" کلا حرکت کردن با فکر و روح آزاد براشون سخت میشه.

در نتیجه بنظرم تا یه حدی بیشتر توی ابزاری که دارید باهاش کار میکنید عمیق نشید.

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

بجای اینکه مثل یه حکیم پیر بشید توی کارتون. یه جوون قوی و سریع باشید که مسائل رو واقعا حل میکنه.
Forwarded from Frontend with Erfun👨🏻‍💻 (Erfun Ghodoosi)
امروز یه ارائه فنی برای بچه های تیم فرانت اندمون دارم
قراره مسائل عمیقی از nextjs رو براشون بگم که محصول با کیفیت تری بسازیم.
(پروژه فوتبالی قبلا روی انگولار بوده و توسعه دهنده هاش تازه به ریکت مهاجرت کردند)

داشتم برای خودم یه سری مسائل رو مرور میکردم

و یه جایی یهو بیدار شدم حقیقتا...
که این عمق از درک اینکه دقیقا یه چیزی چطور داره کار میکنه واقعا مسئله ای رو از من حل میکنه یا نه؟...
آیا من قراره فریمورک nextjs رو بازنویسی کنم؟!
یا قراره صرفا ازش استفاده کنم؟

بله درک تا یه جایی خوبه.
ولی با دونستن همه چیز راجع به اینکه موتور ماشین چطور کار میکنه و دقیقا سیستم انتقال قدرت هر لحظه داره چه تجربه ای رو پشت سر میذاره شمارو یه راننده خوب نمیکنه. شاید یه مکانیک خوب بکنه که این مسئله‌ی شما توی خیابون و ترافیک نیست...
معرفی کتاب Multiplayer Game Programming

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

لینک یوتیوب
https://www.youtube.com/watch?v=FNGGJNukryY

@DevTwitter | <Rouzbeh/>
اگه Next.js کار میکنیم، باید بدونیم که امنیت فقط کار بک اند نیست!
هر فِرانت اِند دولوپری، باید یسری نکات امنیتی رو رعایت کنه!
+ چرا ؟
- یه ورودی ساده از URL میتونه دروازه ای باشه برای حمله از سمت هکر!
- یه dangerouslySetInnerHTML اشتباه میتونه کل سایتت رو به خطر بندازه!
- یه کوکی بدون HttpOnly یعنی دعوت رسمی از هکرها!
- یه فرم بدون CSRF protection میتونه فاجعه درست کنه!
- استفاده از یه پکیج npm مشکوک، هر لحضه ریسک خطر داره!
- یه متغیر env مهم در NEXT_PUBLIC، یعنی همه میتونن این دیتای مهم رو بخونن!
- یه آپلودر فایل بدون فیلتر، راهی برای آپلود فایل آلوده از سمت هکره!
تک تک نکات بالارو بصورت مفصل + تیکه کد تو مقاله زیر بررسی کردیم:
https://frontendi.com/security-in-nextjs/

@DevTwitter | <Ahmad Ahmad-Nejad/>
Forwarded from 🎄 یک برنامه نویس تنبل (Lazy 🌱)
🔶 یه برنامه نویس به نام Donghao Zhang در برنامه OpenCut مشارکت کرده و یک درخواست با تغییرات بیش از ۱۲۸۰۰۰ خط کد ارسال کرد اما به دلایلی این درخواست خودش را بست.

ایشون این حجم تغییرات کد را با هوش مصنوعی کلود انجام داده است.

در کل این همه حجم تغییرات کد, تعجب سازنده این برنامه را برانگیخت.

پل ریکوئست گیت هاب :

https://github.com/OpenCut-app/OpenCut/pull/479

@TheRaymondDev
Forwarded from a pessimistic researcher (Kc)
وقتشه که یک آپدیت روی این پست بنویسم. پستی که روش ریپلای زدم در حقیقت نقدی بود بر نوع نگاه سیستم آموزشی ایران نسبت به Game Theory. در کنار نقد، سعی کردم گیم تئوری رو با دید فرمال معرفی کنم و جایگاهش رو توی ترک B علوم کامپیوتر بازگو کنم. توی این پست یکی از منابعی که معرفی کردم کتاب Games on Graphs بود که بسیار کتاب خوبی در راستای معرفی تکنیک‌های algorithmic برای آنالیز کردن این دست از بازی‌هاست. دیروز ورژن جدیدی از این کتاب منتشر شد و بهونه‌ای دستم داد تا دوباره یادی از این پست کنیم و کمی در مورد تغییرات این کتاب بنویسم.

اولین تغییر، عنوان کتاب هست که به تایتل اصلی، یک ساب‌تایتل اضافه شده و عنوان کتاب رو به :
Games on Graphs - From Logic and Automata to Algorithms
تغییر داده و من بسیار این تغییر رو دوست دارم. چرا که همگام با نقد ما بر نگاه عمومی نسبت به گیم تئوری، سعی در بهتر معرفی کردن دیدگاه کتاب نسبت به game داره. تغییر دوم بازنویسی بسیار از فصول هست. مثلا فصل regular games کمی جمع و جور تر شده و parity games مشروح تر. علاوه‌بر این فصول بیشتری به کتاب اضافه شدن. مثلا توی ورژن قبلی turned-based games و concurrent games پوشش داده شده بود ولی جای خالی Bidding games حس میشد. توی وزژن جدید آقای Thomas Henzinger و دانشجوی سابق‌شون آقای Guy Avni این مبحث رو پوشش دادن. مورد دیگه‌ای که جاش خالی بود بحث Strategy Complexity در گیم بود که توی ورژن جدید در فصل Positionality and Memory این مباحث پوشش داده شدن. بحث دیگه‌ای که جاش خالی بود Synchronous Distributed Games هست. این بحث هم توی ورژن جدید پوشش داده شده که کاربردهای خیلی مهمی توی Contract-based Verification و سنتز program و controller داره.

خلاصه که این کتاب واقعا تو دنیای فرمال، یک Hidden Gem به تمام معناست.

فایل ورژن دوم این کتاب رو میتونید از اینجا دانلود کنید.
Forwarded from Python Hints
#تجربه

بیش از ۹۸٪ پروژه‌های اپلیکیشن‌هایی که کار کردم دیتابیس رو اشتباه انتخاب کرده بودند!

اصلا طبیعیت دیتاها و کار با دیتابیس و ... اشون SQL نیست
اما ۱۰۰٪ تأکید دارند که از SQL استفاده بشه و اکثراً بعد از مدتی کوئری‌های پیچیده کل سیستمشون رو می‌گیره !


مشکل کجاس ؟
- عدم شناخت کافی از دیتابیس‌های دیگه:
Mongo, Janus, Casandra, Scylla, ....
این بیشترین موردی هست که دیدم.

- عدم توانایی طراحی درست سیستم؛ معماری سیستم خیلی مهم هست.

- عدم بررسی و آنالیز نیازمندی‌های سیستم؛ اینکه درگیر دنبال بهترین‌ها بودن نشید چیز خوبیه ولی اینکه سر چیزای ابتدایی هم تحقیق نمی‌کنید و می‌ندازید گردن اینکه من نمی‌خوام کمالگرا باشم یک موضوع متفاوت هست.

- ترس، ترس از تست کردن چیزای جدید.
طرف می‌گه من ۱۰ ساله دارم SQL کار می‌کنم (خب به درک!!)، نهایت همرو خودم Query می‌نویسم! به فکر نفرات بعدی روی پروژه هم باش
احمقانه تصمیم نگیر


راجب mongodb بخونید، خیلی از شما چیزی که بهش نیاز دارید mongodb هست
Transaction
رو هم داره؛ تا ۱۰۰ لول ارتباط تو در تو هم نگه میداره (که عمرا و عملاً بهش نمی‌رسید)
به راحتی می‌تونید replication و read-only داشته باشید

دیزاین collection (مثل table بهش فکر کنید) می‌تونی ثانیه‌ای عوض بشه اگر بخواید.
فرض کنید توی sql بتونید، هروقت خواستید بدون دردسر و migration, ... ستون اضافه کنید.

به کمک پکیج motor خیلی راحت؛ async رو هم در اختیار خواهید داشت

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


خلاصه که زرتی نرید با SQL شروع کنید.
چند روزی بود که درگیر توسعه یه پروژه با Claude Opus 4 بودم.
مثل خیلی از ماها که فعلاً به API این مدل دسترسی نداریم، مجبور بودم کل پروژه رو به‌صورت دستی تو چت بهش بدم.

ولی خب...
هر بار که می‌خواستم کدی رو export کنم، باید تکه‌تکه کدها رو کپی‌پیست می‌کردم.
و وقتی Claude جواب می‌داد، باز باید فایل‌هامو به‌صورت دستی import می‌کردم تو پروژه اصلی.

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

واسه همین نشستم و یه ابزار خط فرمان ساختم به اسم:
Interactive Project Export/Import Tool

کاری که این ابزار می‌کنه، دقیقاً همونه که ما توسعه‌دهنده‌ها لازم داریم:

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

با ساختاری مشخص، کلش رو export می‌کنی تو یه فایل تمیز

این فایل رو می‌دی به Claude

وقتی تغییرات رو گرفتیم، فقط کافیه با ابزار، اون فایل رو import کنیم
و همه چیز درست می‌ره سر جای خودش

حتی یه قابلیت جالب هم داره:
اگه یه دایگرام Tree از ساختار پروژه داشته باشی، می‌تونه از اون ساختار یه پروژه واقعی بسازه!

بدون هیچ dependency اضافی، فقط با Node.js
از React گرفته تا Vue، Express، Nest، Next و خیلی فریم‌ورک‌های دیگه رو پشتیبانی می‌کنه.

https://github.com/AliSaadat-ir/interactive-project-tool/

@DevTwitter | <علی سعادت/>
Forwarded from Golden Code (@lix)
متود insertOrIgnore() در لاراول برای وارد کردن چند رکورد بصورت دسته‌ ای هستش. اگه رکوردی باعث تکرار unique key یا نقض محدودیتهای دیتابیس بشه، بجای ایجاد خطا، اون رکورد هارو نادیده میگیره و بقیه رکورد هارو‌ وارد میکنه.


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

📌 مثال:
$data = [
['email' => '[email protected]', 'name' => 'User One'],
['email' => '[email protected]', 'name' => 'User Two'],
['email' => '[email protected]', 'name' => 'User One Duplicate'], // ایمیل تکراری
];

// جدول users ایمیل رو به عنوان UNIQUE تعریف کردیم

DB::table('users')->insertOrIgnore($data);

درین مثال، رکورد سوم دارای ایمیلی هستش که قبلاً در جدول وجود داره (پس تکراریه).

با insertOrIgnore() رکوردهای تکراری رو نادیده میگیره و فقط رکوردهای جدید ([email protected]) رو وارد میکنه.

@GoldenCodeir

#Laravel
(به‌منبع و مثالش دقت کنید 👇🏾)
https://x.com/PovilasKorop/status/1950492837373469057?s=1
👍1
یکی دو روزه صحبت از مدل جدید اوپن سورس چینی GLM-4.5 هست که ادعا داره در حد Grok 4 عمل می‌کنه، امشب به تست و جیلبریک آن خواهم نشست

تست :
https://chat.z.ai
بیشتر بخوانید :
https://z.ai/blog/glm-4.5
&
https://github.com/zai-org/GLM-4.5

@DevTwitter | <Amir/>
Forwarded from Ninja Learn | نینجا لرن (Mohammad)
This media is not supported in your browser
VIEW IN TELEGRAM
Forwarded from Geek Alerts
یوتیوب از ۱۳ آگوست (۲۲ مرداد) تخمین سن کاربرهارو با AI شروع میکنه، هدفشون اینه کاربرهای زیر ۱۸ سال رو با این روش پیدا کنن، وقتی شناسایی کنه در کنار ویدیوهای مناسب سنشون، تبلیغات به شکل محدود بهش نمایش داده میشن یا مثلا اینکه یادآور وقت خواب پخش میکنه.

یه مسئله اینه که یوتیوبرها احتمالا درآمدشون کاهش پیدا میکنه، چون بخش بزرگی از دنبال‌کننده‌هاشون رو AI ممکنه زیر ۱۸ سال تشخیص بده و نمایش تبلیغ که منبع درآمد یوتیوبرهاست محدود میشه. یوتیوب هم حساب هرکسی رو زیر ۱۸ سال تشخیص بده تنها راه اثبات اینه که فرد مدارک شناسایی ارسال کنه.

بیشتر صحبت‌ها در مورد آمریکا و بریتانیا هست ولی هنوز معلوم نیست این طرح دقیقا در چند کشور اجرا میشه. [L]

🤓 @geekalerts
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Geek Alerts
یه سند داخلی از مایکروسافت درز کرده که دستمزد پرداختی به مهندس‌هاش رو نشون میده، یعنی برای اولین بار میتونیم ببینیم یه شرکت بزرگ مثل مایکروسافت چقدر حقوق پرداخت میکنه.

اول اینکه توی مایکروسافت یه سیستم سطح‌بندی وجود داره، مثلا سطح ۵۷ تا ۵۹ میشن مهندس‌های تازه‌کار و سطح ۷۰ که بالاترین هست میشه مهندس‌های برجسته. توی هر سطحی هم کارمندها بر اساس اینکه توی کدوم دفتر مایکروسافت هستن حقوقشون فرق میکنه، مثلا دفتر سانفرانسیسکو و نیویورک حقوق بیشتری میگیرن.

یک نمونه اینکه در دفتر اصلی مایکروسافت یک کارمند تازه‌وارد سطح ۵۷ حقوقش سالانه ۸۳ تا ۱۰۸ هزار دلار هست. در زمان استخدام هم ۵ تا ۱۳ هزار دلار بهش سهام میدن. همین شرایط برای بالاترین سطح یعنی مهندس برجسته سطح ۷۰ میشه سالانه ۲۷۰ تا ۴۰۰ هزار دلار حقوق در کنار ۰.۸ تا ۱.۹ میلیون دلار سهام در زمان استخدام.

نسخه کامل‌تر رو در سایت براتون قرار دادیم. [L]

🤓 @geekalerts
Please open Telegram to view this post
VIEW IN TELEGRAM
راه اندازی سه سوته (حتی یه سوته ) فایل سرور سریع و ساده و زیبا و کاربردی و فوق العاده

https://github.com/9001/copyparty

@DevTwitter | <Rahmanism/>
Forwarded from Geek Alerts
لقب «اسلاپر» (Slopper) یکی از کلمات جدیده که ممکنه وارد دایره لغات بشه، به کسی میگن که زیاد از ChatGPT و هوش‌مصنوعی برای گرفتن هر جوابی استفاده میکنه و احتمالا اگه باهاش حرف بزنید بیشتر دیدگاه‌هاش از خودش نیست و جواب هر سوالی رو باید با AI چت کنه.

این کلمه از AI slop میاد که به محتواهای بی‌کیفیت تولید شده با هوش‌مصنوعی میگن، البته چون کلمه رو یه نفر استفاده کرده بقیه کاربرها هم اومدن کلمات خودشون‌رو پیشنهاد دادن، مثلا یه نفر second hand thinker یا «متفکر دست دوم» رو پیشنهاد داده. [L]

🤓 @geekalerts
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Ninja Learn | نینجا لرن (Mohammad)
فکرشو نمیکردم انقدر دانلود بگیره