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 Go Casts 🚀
یه ویدیوی تازه و داغ که یه کتابخونه جدید رو هم معرفی میکنه برای event stream processing

Processing Millions of Events Per Second Reliably Using Generics
https://youtu.be/tedFyfKqKeI?si=HoWXARoDv0BRbQRo

A blazingly fast event stream processing library powering the reveald event processing daemon.
https://github.com/runreveal/kawa

Kawa: The Event Processor for the Grug Brained Developer
https://blog.runreveal.com/kawa-the-event-processor-for-the-grug-brained-developer/


تعداد مشارکت کنندگاه دوره از ۵۰۰ نفر گذشت 🔥
به همین مناسبت، تخفیف ۵۳ درصدی دوره در نظر گرفتیم
جزییات بیشتر در این پست 👇
https://t.iss.one/gocasts/572


@gocasts
Forwarded from Meitix
البته البته، انتخاب Shard Key درست یکی از مهم‌ترین قدم‌ها توی طراحی دیتابیس مقیاس‌پذیره! 😅 اگه شارد کی اشتباهی انتخاب نکنیم، سیستم می‌تونه خیلی زود دچار مشکلاتی مثل hotspot یا عدم تعادل در شارد‌ها بشه.

1⃣ کاردینالیته بالا!
شارد کی که انتخاب می‌کنیم باید کاردینالیته بالا داشته باشه. یعنی تعداد مقادیر ممکن باید زیاد باشه تا بتونیم داده‌ها رو به خوبی بین شارد‌ها تقسیم کنیم. مثلاً یه فیلد booleanخیلی محدود میشه و تعداد شارد‌ها رو به دو تا می‌رسونه. انتخاب‌های بهتر مثل userID یا timestamp می‌تونن کار رو بهتر انجام بدن.

2⃣ توزیع یکنواخت (Frequency)
توی انتخاب شارد کی باید مطمئن بشیم که داده‌ها به طور یکنواخت پخش بشن. مثلاً اگه از سن به عنوان شارد کی استفاده کنیم، ممکنه همه داده‌ها توی رنج سنی ۳۰ تا ۴۵ جمع بشه و یه شارد شلوغ بشه! 🤦‍♂️ پس بهتره از یه شارد کی استفاده کنیم که داده‌ها توش پخش شده باشن.

3⃣ تغییرات یکنواخت (Monotonic Change)
اگه شارد کی‌ یه ویژگی تغییر یکنواخت داشته باشه، مثلاً timestamp که همیشه بیشتر میشه، ممکنه همش داده‌های جدید تو یه شارد بریزه. این کار می‌تونه باعث بشه یه شارد سنگین بشه و بقیه شارد‌ها خالی بمونن. راه‌حل اینه که شارد کی‌ رو با یه فیلد دیگه ترکیب کنیم.
This media is not supported in your browser
VIEW IN TELEGRAM
وردپرس رو بدون WAF رها نکنید.
اگه از طریق CDN براتون مقدور نیست، افزونه NinjaFirewall یه وف واقعیه که درخواست‌ها رو قبل از رسیدن به وردپرس، هوک، اسکن، پاکسازی یا رد می‌کنه.
تمام اسکریپت‌ها در محل نصب وردپرس محافظت میشن و رول‌های امنیتی، ساعتی به‌روز میشه.
https://wordpress.org/plugins/ninjafirewall

@DevTwitter | <Yaser Shahi/>
خب خب خب Django Channels چیه؟ و چرا من ازش خوشم نمیاد

قبل از اینکه با هم بریم سراغ Django Channels، یه کم درباره WebSocket بگیم که اصلاً بدونیم داریم درباره چی حرف می‌زنیم. خب، WebSocket یه پروتکل که بهت اجازه میده ارتباط دوطرفه و دائمی بین کلاینت و سرور داشته باشی. یعنی چی؟ یعنی مثلاً تو یه اپلیکیشن چت، به جای اینکه هر چند ثانیه یه بار درخواست بفرستی "چیزی جدید اومده؟"، سرور خودش هر وقت یه پیام جدید داشت، بلافاصله می‌فرسته سمتت 🚀.

حالا Django Channels چی میگه؟ 🤔
ـDjango Channels یه ابزار تو اکوسیستم Djangoئه که میاد پشتیبانی از WebSocket، پروتکل‌های real-time و کارای async رو به پروژه‌هات اضافه می‌کنه. به زبان ساده، اگه Django عادی رو یه "خیابون یک‌طرفه" فرض کنیم، Channels میاد این خیابون رو دوطرفه می‌کنه. این یعنی می‌تونی کارایی مثل:

چت real-time 💬


نوتیفیکیشن‌های فوری 🔔


استریم داده (مثل قیمت‌های ارز دیجیتال) 📈


و...

رو خیلی راحت‌تر با Django انجام بدی.

خب پس مشکلش چیه؟ چرا من ازش خوشم نمیاد؟ 🤷‍♂️

از دور که نگاه می‌کنی، Channels خیلی جذاب به نظر میاد، ولی وقتی می‌خوای باهاش کارکنی، مشکلات خودش رو نشون میده:

1⃣ پیچیدگی توی تنظیمات 😵‍💫
ـDjango همیشه به خاطر سادگی معروف بوده، ولی Channels میاد این سادگی رو خراب می‌کنه خیلی خراب میکنه. باید ASGI رو راه بندازی، Redis نصب کنی، routing یاد بگیری، و کلی تنظیمات دیگه انجام بدی. یه پروژه ساده که با Django راحت بود، یهو برات میشه یه جنگل از تنظیمات.

نکته: از Django 4.0 به بعد، پشتیبانی از ASGI مستقیم داخل هسته Django اومده، پس برای پروژه‌های ساده شاید نیاز نباشه کل پروژه رو وابسته به Channels کنی.

2⃣ وابستگی به Redis 🤦‍♂️
یکی از مشکلات بزرگ Channels اینه که برای مدیریت eventها و ارتباط‌ها حتماً نیاز به Redis داره. خب چرا؟ دلیلش اینه که Redis به‌عنوان message broker استفاده میشه تا پیام‌ها بین کلاینت‌ها و سرور مدیریت بشه. ولی اگه پروژه کوچیک باشه، این وابستگی می‌تونه دردسرساز بشه.

جایگزین: می‌تونی از RabbitMQ یا حتی راه‌حل‌های ساده‌تر مثل In-Memory Layers برای پروژه‌های سبک استفاده کنی.


3⃣ محدودیت توی scale کردن 😩
اگه پروژه کوچیک باشه، Channels بد نیست. ولی وقتی تعداد کاربران زیاد میشه و حجم درخواست‌ها بالا میره، Channels سریع از نفس می‌افته. این محدودیت بیشتر به خاطر پیچیدگی WebSocket و محدودیت‌های سرورهای تک رشته ای هست تا خود Channels. برای پروژه‌های بزرگ و real-time محور، ابزارای دیگه‌ای مثل Socket.IO یا FastAPI خیلی بهتر عمل می‌کنن.

4⃣ مشکلات performance 🚨
حتی اگه پروژه خیلی هم بزرگ نباشه، Channels برای real-time پروژه‌های سنگین خوب عمل نمی‌کنه. کارای پیچیده async و ارتباطات real-time می‌تونن سرور رو داغون کنن. البته با تنظیم درست workerها و Redis channel layers می‌تونی بخشی از این مشکلات رو کم کنی، ولی باز هم کار اضافه‌ست.

5⃣ کمبود مستندات و منابع آموزشی درست و حسابی 📚
یکی دیگه از مشکلات اینه که منابع آموزشی کامل و به‌روزی برای Channels خیلی کمه. هر وقت گیر کنی، یا باید بری توی GitHub دنبال issueها، یا دست به دامن دیگران بشی. این باعث میشه زمان زیادی صرف حل مشکلات کنی.

خب حالا راه‌حل چیه؟ 💡
اگه بخوای real-time کار کنی، اینا می‌تونن گزینه‌های بهتری باشن:

ـFastAPI: اگه دنبال سرعت، سادگی و پرفورمنس خوب هستی، FastAPI انتخاب فوق‌العاده‌ایه. با WebSocket خیلی راحت کار می‌کنه و خبری از دردسرای Channels نیست 🚀.

ـSocket.IO: این یکی برای پروژه‌های real-time شاهکاره. خیلی ابزارای متنوع داره و با Node.js هم عالی مچ میشه.


جمع‌بندی 🎯
ـDjango Channels می‌تونه برای پروژه‌های کوچیک و ساده مناسب باشه، ولی اگه بحث scale، پرفورمنس یا راحتی کار مطرح باشه، اصلاً گزینه خوبی نیست. من از پیچیدگی‌ها و محدودیت‌هاش خسته شدم و به جای اون سراغ ابزارای دیگه رفتم.
نظر تو چیه؟ Django Channels تا حالا اذیتت کرده یا ازش خوشت میاد؟ بگو ببینم چی تو ذهنت می‌گذره🧐


#programming #web #django



🔆 CHANNEL | GROUP
Forwarded from linuxtnt(linux tips and tricks) (hosein seilany https://seilany.ir/)
🔰نحوه مشاهده لاگ‌ها در لینوکس (dmesg, journalctl)

🔹در لینوکس، برای بررسی و عیب‌یابی مشکلات سیستم، از لاگ‌ها استفاده می‌شود. دو ابزار مهم برای این کار dmesg و journalctl هستند.
🔸نمایش لاگ‌ها به صورت زنده:
journalctl -f

این دستور لاگ‌ها را به صورت زنده نمایش می‌دهد و هر تغییری که در لاگ‌ها ایجاد شود، بلافاصله نمایش داده می‌شود.

🔸نمایش لاگ‌های امروز:
journalctl -S today

این دستور فقط لاگ‌های مربوط به امروز را نمایش می‌دهد.

🔸نمایش فقط لاگ‌های با سطح خطا (err):
journalctl -S today -p err

این دستور فقط لاگ‌هایی که سطح آن‌ها "خطا" (error) است را نمایش می‌دهد. -p err مخفف --priority=err است.

🔸نمایش لاگ‌های با سطوح خطا (err) و هشدار (warning):
journalctl -S today -p 3..4

این دستور لاگ‌هایی با سطوح ۳ (err) و ۴ (warning) را نمایش می‌دهد. در اینجا ۳ و ۴ نشان‌دهنده سطوح اولویت لاگ‌ها هستند.

🔸نمایش لاگ‌های مربوط به یک سرویس خاص:
journalctl -u <نام_سرویس>.service

به جای <نام_سرویس> نام سرویس مورد نظر را قرار دهید. به عنوان مثال برای مشاهده لاگ‌های سرویس sshd از دستور زیر استفاده کنید:

journalctl -u sshd.service


dmesg - لاگ سیستم هسته (خواندن از /var/log/kern.log یا مستقیماً از هسته)
این دستور برای مشاهده پیام‌های مربوط به هسته سیستم (kernel) استفاده می‌شود.

🔸نمایش خروجی به صورت صفحه‌بندی شده (با less):
dmesg -H

این دستور خروجی dmesg را به صورت صفحه‌بندی شده نمایش می‌دهد و می‌توانید با استفاده از کلیدهای بالا و پایین در آن حرکت کنید.

🔸نمایش خروجی با فرمت خوانا (timestamp):
dmesg -T

این دستور زمان دقیق هر پیام را نیز نمایش می‌دهد.

🔸نمایش سطح (اولویت) پیام‌ها:
dmesg -x

این دستور اطلاعات بیشتری در مورد هر پیام، از جمله سطح اهمیت آن، نمایش می‌دهد.

🔸نمایش خروجی به صورت زنده:
dmesg -w

این دستور پیام‌های جدید هسته را به صورت زنده نمایش می‌دهد.

🔸ترکیب چند گزینه:
dmesg -HTx

این دستور خروجی را به صورت صفحه‌بندی شده، با فرمت خوانا و با نمایش سطح پیام‌ها نمایش می‌دهد.

📌نویسنده: حسین سیلانی
📌منبع :
آکادمی کندوی دانش
https://learninghive.ir
دو ماه پیش قالب ساده و مدرن پاندا برای وردپرس نوشتم که با استقبال مواجه شد. احتمالا این قالب برای انتشار جهانی در تم وردپرس منتشر خواهد شد و به صورت پیش فرض انگلیسی و مناسب برای وبلاگ است.

امکانات نظیر :

- منو بار
- دارک مد
- جستجو در سایت
- دکمه لایک
- ترجمه قالب
- برچسب ها
- پست های مرتبط
- دسته بندی ها
- اشتراک گذاری در فوتر
- لینک کوتاه پست
- تب بندی جدید و دیدگاه ها
- رسپانسیو شده
- کد نویسی اختصاصی
- و ...

https://github.com/Rayiumir/Panda

@DevTwitter | <Raymond Baghumian/>
Forwarded from CleverDevs (Mammad)
بین top ها مختلف برای دیدن یا مدیریت پروسس ها neohtop از لحاظ قیافه یه سر و گردن از بقیه بالاتره و برای کاربرای ادایی خوبه

https://abdenasser.github.io/neohtop/


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

#tools #gnu #linux
@CleverDevs - @CleverDevsGp
Forwarded from Linuxor ?
Forwarded from Linuxor ?
Forwarded from Linuxor ?
Forwarded from Linuxor ?
Forwarded from Linuxor ?
Forwarded from Anophel | آنوفل
Forwarded from Anophel | آنوفل
💢 تا حالا شده بخوای کلی فانکشن رو همزمان اجرا کنی، ولی نخوای با دردسرهای Goroutine و WaitGroup کلنجار بری؟
یا شاید دلت بخواد یه بار فانکشن‌ها رو آماده کنی و هر وقت خواستی دوباره اجراشون کنی؟
اینجاست که مفهوم Wrapper Types تو گولنگ میاد وسط. تو این پست، می‌خوام یه راه حل تمیز و شیک بهت معرفی کنم: ConcRunner

Wrapper Types چیه؟
⭐️تو گولنگ، Wrapper Type یه نوع خاصه که یه ساختار ساده می‌سازه و پشتش کلی جادو (یعنی همون منطق و پیچیدگی‌ها) قایم می‌کنه. هدفش اینه که کد رو تر و تمیز نگه داره.

💠مثال عملی:
فرض کن یه چیزی داری مثل اجرای فانکشن‌ها به صورت همزمان (concurrently). خب، این کار خودش یه ذره پیچیدگی داره چون باید با goroutine‌ها و sync.WaitGroup کلنجار بری. حالا ما اومدیم یه نوع جدید به اسم ConcRunner درست کردیم که این داستان رو می‌پیچه تو خودش. دولوپر فقط میگه «هی، این فانکشن‌هام رو بگیر و همزمان اجراشون کن»، دیگه نمی‌پرسه چطور این کار انجام میشه.

مثال تصویر 1

⭐️چرا این خوبه؟
سادگی در استفاده: دیگه کسی لازم نیست نگران goroutine و sync.WaitGroup باشه.
قابلیت استفاده مجدد: فانکشن‌ها رو هر چند بار که بخوای می‌تونی اضافه و اجرا کنی.
محافظت از جزئیات: کل سینک شدن و داستان‌های پشت پرده رو می‌سپری به ConcRunner، تمیز و بی‌دردسر.

⭐️چطوری استفاده کنیم؟ یه چیزی مثل تصویر 2.

💠این روش یه نمونه خوب از Encapsulation تو کده به‌قول معروف: «جادوی گولنگ تو اینجور جاها معلوم میشه!»

💙 Anophel | آنوفل

#گو #گولنگ #go #golang
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from a pessimistic researcher (Kc)
خیلی ها بیخیال نشدن. و خب به لطف بیخیال نشدن این عزیزان ما امروزه foundation مناسبی برای توسعه‌ی تکنیک‌های software model checking داریم. حالا اگر طبق عادتم دوباره نرفتم توی یک غیبت طولانی، براتون اولین تلاش‌ها برای رفع این مشکل رو توضیح میدم و می‌بینیم که چطور با ارائه چند تکنیک ساده تونستن model checker ای بسازن به اسم SPIN که با گذشت بیش از ۳۰ سال هنوزم یکی از قوی‌ترین ابزارهای verification برنامه‌های distributed و multi-thread هستش.

مسئله‌ی Reachability با تمام سادگیش، مسئله‌ی Hard ای محسوب میشه و توی ترک B تئوری علوم کامپیوتر اگر نگم مهم ترین، ولی یکی از مهم‌ترین مسائلی هست که پاسخ دادنش در هر setting ای ارزش بالایی داره.

به شکلی که ما یک کنفرانسی داریم به نام Reachability problems conference یا به اختصار RP که ۱۸ ساله داره برگزار میشه.

این کنفرانس برای ۱۹ امین سال قراره که توی سال ۲۰۲۵ در موسسه‌ی IMDEA software واقع در شهر مادرید برگزار بشه و ددلاین ارسال مقاله‌اش هم ۶ ماهه دیگه. اگر شما هم این موضوع براتون جذابیت بالایی داره، give it a shot و سعی کنید یه چیزی برای این کنفرانس آماده کنید.

https://rp25.software.imdea.org/index.html
۴ اصل پرامپت نویسی برای مدل‌های استدلالی مثل o1, o3, r1

@DevTwitter | <Reza Jafari/>
Forwarded from ASafaeirad
Cognitive load is what matters
How to make good decisions as a software engineer.

https://minds.md/zakirullin/cognitive

#article #cognitive
Forwarded from Linuxor ?
ابزار های معروفی که DevOps از اونا استفاده می‌کنه :

1. Version Control and Source Code Management (SCM) : Git, GitHub, GitLab, Bitbucket.

2. Continuous Integration/Continuous Delivery (CI/CD) : Jenkins, GitLab CI/CD, CircleCI, TravisCI, Azure DevOps.

3. Infrastructure as Code (IaC) : Terraform, Ansible, Puppet, Chef.

4. Monitoring and Logging : Prometheus, Grafana, ELK Stack (Elasticsearch, Logstash, Kibana), Datadog.

5. Containerization and Orchestration : Docker, Kubernetes, OpenShift.

6. DevSecOps (Security in DevOps) : Snyk, Aqua Security, SonarQube.

7. Collaboration and Communication Tools : Slack, Microsoft Teams, Jira, Trello.

8. Testing and Quality Management : Selenium, JUnit, TestNG.

@Linuxor
شرکت Microsoft در هر ثانیه 7000 حمله به رمزهای عبور را مسدود می‌کند، حملات فیشینگ هم 146٪ رشد داشته است!
با آمدن هوش مصنوعی وضعیت پیچیده‌تر شده و باید آماده‌تر بود.
- استفاده از احراز هویت چندمرحله‌ای (MFA) که sms نباشد!
- استفاده از Password Manager
این دو، لازمه حفظ امنیت شما هستند و البته که به تنهایی کافی نیستند.

https://forbes.com/sites/zakdoffman/2024/12/13/microsoft-confirms-password-deletion-for-1-billion-users-attacks-up-200/

@DevTwitter | <Vahid Nameni/>