DevTwitter | توییت برنامه نویسی – Telegram
DevTwitter | توییت برنامه نویسی
23.6K subscribers
4.36K photos
358 videos
6 files
4.1K links
توییت های برنامه نویسی و طراحی وب :)

@dvtwi

Hashtags:
devtwitter.t.me/5

DevBooks Channel:
https://news.1rj.ru/str/+AYbOl75CLNYxY2U0

Github:
https://github.com/DevTwitter

X:
https://x.com/devtwittir
Download Telegram
قطعاً آرزوی هر برنامه نویسیه که وقتی می‌خواد ریپو گیتهابش رو با کسی به اشتراک بزاره، یه بنر خوشگل نمایانگر تلاشش باشه.

این پروژه دات‌نت توی محیط کنسول به دو صورت (خودکار و دستی) برای ریپوهای گیت هاب بنر سوشال مدیا در سایز مناسب ایجاد میکنه و میشه اونو به تنظیمات ریپو اضافه کرد...

پیشنهاد میکنم حداقل یبار تست کنین

منتظر استارهای گرمتون هستم

https://github.com/AmirHosseinOstad/Paint_Hub

@DevTwitter | <Amir Hossein/>
👎43👍177🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
رپویی که قبلا درست کرده بودم الان به روز کردم. الان شامل یک دیتابیس از ۶۵۰ مطالعه‌ی موردی از بیش از ۱۰۰ شرکت مختلفه (طراحی سیستم‌های ماشین لرنینگ) که نشون می‌ده شرکت‌هایی مثل نتفلیکس، ایر‌بی‌ان‌بی و doordash و خیلی کمپانی های دیگه چطور از یادگیری ماشین برای بهبود محصولات و فرایندهاشون استفاده می‌کنن. این مطالعات موردی نمونه‌های واقعی از کاربردهای ماشین لرنینگ، مدلهای LLM و نکات ارزشمندی از طراحی سیستم‌های ML رو در اختیارتون می‌ذاره.
Github: https://github.com/mallahyari/ml-practical-usecases

@DevTwitter | <Mehdi Allahyari/>
11👎5👍1🔥1
کجا نباید از داداشمون RabbitMQ استفاده کنیم؟

1- وقتی نیاز به real-time response داریم.
چرا؟ چون RabbitMQ صف هست و ارسال/دریافت پیام ممکنه با تاخیر انجام شود.
پیشنهادم WebSocket، gRPC یا Redis Pub/Sub است.

2- وقتی به message replay یا history نیاز داریم
چرا؟ چون RabbitMQ پیام‌ها رو بعد از مصرف حذف می‌کند. البته میشه کانفیگ کرد که نگه داره.

3- زمانی که پیام‌ها حجمشون خیلی زیاد است.
چرا؟ چون در حجم بالا RabbitMQ دچار افت performance می‌شود. Kafka رو پیشنهاد می‌کنم برای اینجا.

4- وقتی ترتیب دقیق پردازش پیام‌ها خیلی مهم است. چرا؟ چون RabbitMQ تضمین دقیقی برای ترتیب پیام‌ها ندارد. اینجا هم پیشنهادم Kafka است.


@DevTwitter | <Amirhossein Dehghan/>
👍368👎6
اگر تک سرور دارید و سیستم IDS/IPS ندارید و برای امن سازی Fail2Ban استفاده می‌کنید یک GUI برای آن طراحی شده که دید بهتری برای log این نرم‌افزار هم دارد.

اگر لینوکسی نیستید چنین ابزارهایی ممکن است برای آغاز، مناسب باشند ولی قطعا CLI آن هم خوب است.
https://github.com/SubleXBle/Fail2Ban-Report

@DevTwitter | <VAHID NAMENI/>
10🔥1
اینکه با AI می‌تونی یکی از سخت‌ترین کارها، یعنی فهمیدن مسائل پیچیده، رو ساده کنی از مهم‌ترین نعمت‌هاشه.

این system prompt رو نوشتم که مفاهیم مهندسی کامپیوتر رو با داستان توضیح بده، بعدش تعریف علمی دقیقش رو هم بگه. برای من که خیلی life changer بوده.

https://gist.github.com/mhrlife/26a279b4fcacc71e20d2068219dd7bbc

@DevTwitter | <The Big Rad/>
👍356👎3🔥1
فیچر های ++C توی ورژن های 2020 2017 2014 2011 رو به صورت یه جا همشو اینجا جمع کردن با توضیح کوتاه و ساده:

https://github.com/AnthonyCalandra/modern-cpp-features

@DevTwitter | <Nimo/>
17👎3👍2🔥1
جدا از مهندسی پشت تلگرام که بهینه نوشته شده، تلگرام چیزی داره به اسم Update Queue. چیزی که ۱ سال از دوران جوونیم رو صرف مهندسی معکوسش کردم.
تلگرام برای پوش کردن تغییرات مثل پیام جدید، ادیت، ری اکشن، تایپینگ و… به کلاینت‌ها از سرویس Updates تو پروتکل MTProto استفاده میکنه، ایده ی کلی و کلیدی خیلی ساده اس و اینه که کلاینت ها یه state محلی نگه میدارن و آپدیتارو دقیقا با ترتیب درست اعمال میکنن؛ اگه شکافی بینشون افتاد، Difference می‌گیرن و دوباره پرش میکنن.

چرا اینکارو کرده و کلا چالشا چیه؟
• ترتیبش مهمه چون ممکنه یه اپدیت وابسته به چیزی باشه که توی خود همون پچ میاد
• تحویل دقیق باید انجام بشه و هیچی گم نشه
• مقیاسش هم میلیون‌ها کاربر همزمان باید بگیرنش، مثل کانال های بزرگ

از اونجایی که هر پیامرسان منبع عظیمی از اتفاقاتیه که هر لحظه میوفته ما میتونیم اسم این اتفاقات رو event بزاریم. تلگرام هم یه پیامرسان مولتی کلاینته، یعنی هر کاربر میتونه چندین دیوایس برای یه حساب داشته باشه، پس وقتی یه ایونت اتفاق میوفته که باید یه کاربر از اون خبردار بشه باید اون ایونت رو به دیوایس های دیگه ی کاربر هم بفرسته، حدودا با مرتبه زمانی On^2.

مکانیزم اینجوریه که وقتی دیوایسی انلاین باشه و سوکت همون سوکتی باشه که keep alive هست یا اخرین rpc رو کال کرده سرور ایونت رو توی queue برای اون دیوایس نگه نمیداره و مستقیم میفرسته به کلاینت، حالا از اونجایی که کلاینت های دیگه ممکنه افلاین باشن یا حتی توی بکگراند پروسسشون کیل شده باشه عقب میمونن. حالا وقتی اون دیوایسی که عقب مونده بود با باز شدن سوکتش درخواست گرفتن اپدیت هارو وقتی که افلاین بوده رو از سرور میکنه و اطلاعات لوکالش رو میفرسته به سرور، من برای ساده شدنش اینجوری میگم که دیوایس میاد به سرور میگه من تا این زمان t رو داشتم و بعد این رو بهم بده، سرور هم میاد حساب کتابش رو میکنه و جواب رو توی یه پچ میفرسته! حالا چی توی این پچ هست و چی رو میفرسته رو میتونم یه رشته توییت دیگه در موردش بزنم.

حالا اگه اعدادی که توی پچ میاد با اعداد توی کلاینت نخونه عملا میگیم گپ اتفاق افتاده، برای همین هم کلاینت باید رکویست getDiff رو بزنه.
رکویست updates.getDifference به کلاینت اجازه می‌ده بگه:
من الان pts = X و seq = Y هستم و هر چی بین این و حالت جدید هست بهم بده.
• سرور ممکنه جواب بده:
difference: همه ی آپدیت های گمشده
differenceSlice: بخشی از آپدیت ها یعنی هنوز باید به فچ کردن ادامه بدی
differenceEmpty: چیزی تغییر نکرده

جالبترش اینه که توی نسخه های جدیدترش برای کانال ها مکانیسم جدا getChannelDifference هست، چون هر کانال pts مستقل داره و این باعث میشه شما فقط کانال هایی رو بگیری که تغییر کردن! برای سوپر گروه هم مکانیزم همینه.

این باعث می‌شه حتی اگر چند ساعت آفلاین باشی، بعد از اتصال دوباره دقیقاً همه‌چی رو بگیری و هیچ پیامی رو از دست ندی

حتی با packet loss یا reconnect، state کلاینت خراب نمیشه و سرور مجبور نیست برای هر کلاینت همه چی رو دوباره بفرسته. فقط gap ها sync میشن

@DevTwitter | <Abolfazl/>
🔥129👍2821👎2
#wordpress

ببینید یه چیز کوچیک باعث میشه افزونه وردپرس نوشته بشه و بیشتر از 50 هزار نصب هم بگیره.
تغییر ایمیل اصلی مدیر سایت، بدون ارسال ایمیل تاییدیه!

https://wordpress.org/plugins/change-admin-email-setting-without-outbound-email/

@DevTwitter | <Morteza Geransayeh/>
🔥213👍2
#wordpress

خیلیا میگن: همین فقط یه دکمه ساده چت واتساپ؟
https://wordpress.org/plugins/simple-chat-button/
بعضیاشون ۶۰۰ ۵۰۰ هزار تا نصب دارن
چند تا دونه هم بفروشن کلی پوله
حالا جدا از اعتباری که براشون داره

@DevTwitter | <Rasoul Mousavian/>
👍17👎122🔥2
تقریبا یکسال پیش پروژه‌ای شبیه این پروژه modern cpp features رو برای جاوا شروع کردم و تا حد خیلی زیادی از ویژگی‌هاش رو پوشش دادم. با اين که به نسبت، استارهای قابل توجهی دریافت کرد اما مشارکتی از سمت کامیونیتی دریافت نکرد. شاید الان با دوباره دیده شدنش مشارکت‌هایی بوجود بیاد.

لینک پروژه : https://github.com/javabaz/jhistory

@DevTwitter | <AI Komaki/>
👍164🔥3
گواه آماری از بی‌اثری دانشگاه در کیفیت شغل
گزارش بسیار عالی جاب‌ویژن از بازار کار و انتخاب رشته دوره کارشناسی نشان می‌دهد بیش از ۸۰ درصد فارغ‌التحصیلان دانشگاهی در محدوده حقوق پایین قرار دارند و بخش عمده آنها رضایت کاری نازلی نیز تجربه می‌کنند.
فقط پنج دانشگاه شریف، تهران، امیرکبیر، علم‌وصنعت و خواجه نصیرالدین طوسی بالای خط متوسط «درآمد و رضایت» هستند. بدون شک این مساله نیز نتیجه این دانشگاه‌ها نیست، زیرا سیستم عجیب پذیرش و قیف سرسخت «کنکور» افرادی را وارد این دانشگاه‌ها کرده که به صورت خودجوش توانمندی‌های بالایی در کسب رضایت از شغل و درآمد دارند؛ چه بسا دانشگاه مانعی برای آنها نیز بوده است.

@DevTwitter | <Behzad Bahmannejad/>
👍74👎116
نسخه Linux Mint 22.2 "Zara" منتشر شد! LTS تا ۲۰۲۹
تغییرات کلیدی:
هسته Linux 6.14 + Mesa 25.0.7
احراز هویت با اثر انگشت Fingwit

@DevTwitter | <MehrdadLinux/>
🔥32👍43👎1
#wordpress

امروز خیلی اتفاقی داشتم بخش بلوک‌های وردپرس رو چک میکردم که دیدم محتوای آموزشی این قسمت رو بهتر کردن و الان خیلی خوب شده، پیشنهاد می‌کنم حتما بهش سر بزنید، البته اگه علاقمند به شروع توسعه بلوک هستید و پیش‌زمینه‌ش رو دارید :)

https://developer.wordpress.org/block-editor/getting-started/tutorial/

@DevTwitter | <Morteza Geransayeh/>
👍18👎12🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
#javanoscript

باز هم JS عزیز بهمراه یاور همیشه مومن، CSS
بخودی خود css خودش ، کلی حرف برای گفتن داره و خیلی فراتر از کارهای معمول میشه پروژه و کارهای شگفت انگیز و باحال باهاش انجام داد
حالا توی این مینی پروژه ، با ترکیب این دوتا می‌بیند که میشه همچین شاهکاری رو ساخت
به نظرم فارغ از فضای کار ، خیلی خوبه همچین آثاری رو هم خلق کرد و با فرانت عشق کرد...

راستی لینکش هم اینجاست
https://codepen.io/amit_sheen/pen/gbbzbeR


@DevTwitter | <Abolfazl Shekarshekan/>
🔥638👍3👎2
امروز یکی از همکارانم سوال خوبی پرسید که فکر می‌کنم دغدغه خیلی‌هاست:
"فرق واقعی Async و Concurrency چیه؟ مگه هر دو به معنی انجام همزمان کارها نیستن؟"
این دو مفهوم اغلب با هم اشتباه گرفته می‌شن. بذارید با یک مثال ساده تفاوتشون رو باز کنم:
۱. Synchronous vs. Asynchronous
این مفاهیم درباره انتظار کشیدن هستن.
Sync
مثل اینه که بری کافه، قهوه سفارش بدی و همونجا جلوی پیشخوان منتظر بمونی تا آماده بشه و تحویل بگیری.
تا قهوه رو نگیری، هیچ کار دیگه‌ای نمی‌کنی.
Async
سفارش می‌دی، یک پیجر (Pager) می‌گیری و می‌ری سر میزت می‌نشینی.
در این فاصله می‌تونی ایمیل‌هاتو چک کنی.
هر وقت قهوه‌ات آماده شد، پیجر بهت خبر می‌ده.
تو منتظر نموندی و از زمانت استفاده کردی.

۲. Concurrency
این مفهوم درباره مدیریت چند کار در یک بازه زمانی هست.
باریستای کافه رو در نظر بگیرید:
اون همزمان هم سفارش شما رو آماده می‌کنه، هم سفارش نفر بعدی رو می‌گیره و هم شیر رو برای یک سفارش دیگه گرم می‌کنه.
در واقع اون با جابجایی سریع بین کارها (Context Switching)، چند وظیفه رو پیش می‌بره.
این یعنی هم‌روندی.

نکته کلیدی
برنامه‌نویسی Async یکی از راه‌های رسیدن به Concurrency هست.
درک این تفاوت، در طراحی سیستم‌های مدرن مثل میکروسرویس‌ها یا پایپ‌لاین‌های پردازش دیتا، یک مزیت فوق‌العاده است.
این درک به شما کمک می‌کنه تا بین ابزارهایی مثل Kafka, gRPC یا WebSockets انتخاب درستی داشته باشید و سیستمی بسازید که هم Scalable و هم Reliable باشه.


@DevTwitter | <Ali Naseri/>
61👍22🔥3
#angular

آیا تا حالا وسط پروژه Angular گیر کردید که بدونید یه فیچر هنوز Stable هست یا Deprecated شده؟
یه ابزار عالی پیدا کردم
درست مثل caniuse.com برای وب، اینجا هم می‌تونید ببینید هر فیچر Angular توی نسخه‌های مختلف چه وضعیتی داره (Stable, Deprecated, Experimental, Removed).
به نظرم برای هر دولوپر Angular (به‌خصوص موقع Upgrade) یه ابزار نجات‌بخش حساب میشه
https://www.dolmen.tools/en/angular/caniuse/explorer


@DevTwitter | <Hesam Valizadeh/>
🔥83
امنیت در Docker: چیزی که اغلب فراموش می‌کنیم!

* از rootless containers استفاده کنید: اجرای اپلیکیشن با کاربر non-root ریسک نفوذ رو خیلی کم می‌کنه.
* از Base image سبک و امن استفاده کنید: مثلاً alpine یا distroless. imageهای بزرگ‌تر مثل ubuntu اغلب پکیج‌های غیرضروری دارن که سطح حمله رو زیاد می‌کنن.
* حتما وDependencyها رو pin کنید: همیشه نسخه دقیق کتابخونه‌ها رو مشخص کنید تا از تغییرات ناخواسته جلوگیری بشه.
* از .dockerignore استفاده کنید: فایل‌های حساس (مثل .env یا کلیدها) هرگز نباید داخل image قرار بگیرن.
* به‌روز نگه داشتن imageها: آسیب‌پذیری‌ها خیلی سریع پیدا می‌شن، پس آپدیت مرتب imageها ضروریه.
بارها پیش میاد که به خاطر استفاده از یک base image قدیمی، vulnerability جدی توی اسکن امنیتی پیدا میشه. فقط با عوض کردن base image به نسخه‌ی جدیدتر و سبک‌تر، هم امنیت بیشتر میشه، هم حجم image کاهش پیدا میکنه.

نکات تکمیلی امنیت در Docker
1. استفاده از Healthcheck
- توی Dockerfile با HEALTHCHECK وضعیت سرویس رو بررسی کنید که باعث می‌شه container ناسالم زودتر شناسایی و جایگزین بشن.
2. حداقل کردن Surface Attack با distroless images
- این imageها فقط باینری نهایی رو دارن (بدون package manager یا shell).
- دسترسی مهاجم به شدت محدود می‌شه.
3.فعال کردن User namespace remapping
- باعث می‌شه کاربر root داخل container، روی سیستم میزبان واقعاً root نباشه.
4. استفاده از Read-Only Filesystem
- container رو با --read-only بالا بیارید تا کسی نتونه فایل‌های سیستمی داخلش رو تغییر بده.
5. مدیریت Secretها به‌درستی
- هرگز secrets رو داخل image نذارید.
- از ابزارهایی مثل Docker secrets، HashiCorp Vault یا AWS/GCP Secret Manager استفاده کنید.
‏6. Scan امنیتی منظم
- ابزارهایی مثل Trivy, Grype یا Docker Scout رو برای اسکن image استفاده کنید.
- این ابزارها آسیب‌پذیری‌های شناخته‌شده (CVE) رو شناسایی می‌کنن.
7. محدود کردن Resourceها
- با --cpus و --memory منابع container رو محدود کنید تا جلوی حملات DoS یا مصرف بی‌رویه گرفته بشه.
8. استفاده از شبکه‌های ایزوله
- کانتینرهایی که لازم نیست با اینترنت یا کانتینرهای دیگه در ارتباط باشن رو توی یک شبکه‌ی جداگانه نگه دارید.
9. امضای دیجیتال و اعتبارسنجی Imageها
- با Docker Content Trust (DCT) یا cosign امضا و اعتبارسنجی کنید که image تغییر نکرده باشه.
10. بروزرسانی مرتب Docker Engine و Runtime
- چون آسیب‌پذیری‌ها فقط توی imageها نیستن، بلکه خود daemon و runtime هم می‌تونه مشکل امنیتی داشته باشه.


***امنیت در Docker فقط به Dockerfile محدود نیست؛ از انتخاب base image شروع می‌شه، به مدیریت secret و network می‌رسه و حتی شامل CI/CD pipeline هم می‌شه***

@DevTwitter | <Somaye Omidi/>
👍3310🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
اگه اهل افکت و هاور و انیمیشن‌های چشم‌گیر هستی، این سایت یه معدن طلاست!

یه منبع پیدا کردم که پره از افکت‌های موس و هاورهایی که وقتی تو پروژه‌ت استفاده کنی، دیگه کسی نمی‌پرسه "بلدی؟" خودشون پروژه رو دو دستی بهت میدن
افکت‌هایی که فقط زیبا نیستن تجربه می‌سازن
مناسب برای عکس ها، متن ها، بکگراند صفحات و...
خوبیش اینه که با React توسعه داده شده
دیگه چی از این بهتر؟؟
لینکش هم اینجاست ، تستش کن، عاشقش می‌شی
reactbits.dev

@DevTwitter | <Abolfazl Shekarshekan/>
🔥5710👍4