| ᴅᴇᴠʟᴏꜱꜱᴏ |
Открыть в Telegram
𝙳𝚎𝚟𝙻𝚘𝚜𝚜𝚘 🚀 کانال تخصصی برنامه نویسی، شبکه و امنیت 📰 اخبار تکنولوژی | 💻 آموزش و سورس کد کاربردی| 🛠️ انجام پروژه اختصاصی 📩 همکاری و مشاوره: @imlosso
Больше608
Подписчики
+224 часа
+187 дней
+5630 день
Архив постов
608
⏺ وبهوک (Webhook) چیست و چه کاربردی دارد؟
وبهوک در اصل به معنی «قلاب وب» است. مفهومش اینه که ما یک نقطه اتصال روی سرور تعریف میکنیم که به یک رویداد خاص وصل میشه. هر زمان اون رویداد اتفاق بیفته، سرور بهطور خودکار یک درخواست (معمولاً HTTP POST) به آدرس مشخصشده ارسال میکنه.
به این ترتیب، بهجای اینکه ما مرتب سرور رو پول (Polling) کنیم و وضعیت رو بپرسیم، خود سرور ما رو بلافاصله از وقوع تغییر مطلع میکنه.
⭐️ @DevLosso
608
با این کد میتونید فرمت ایمیلارو صحت سنجی کنید✅🐍
import re
def is_valid_email_format(email):
e_regex = r'^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+$'
return re.match(e_regex, email) is not None
def check_email(email):
if not is_valid_email_format(email):
return "Invalid email format"
return "Email format is valid"
email_input = input("Please enter your email: ")
result = check_email(email_input)
print(result)
💙 @DevLosso608
🛜برای نوشتن مقاله نه از ChatGPT کمک بگیرید نه Gemini
🔂در حال حاضر بهترین هوش مصنوعی برای نوشتن مقالات طولانی ، هوش مصنوعیه چینی DeepSeek هست ، موضوع کتاب یا مقالتون رو بنویسید تا براتون یه متن جامع و کامل بنویسه.
As a world-renowned writer with seven years of experience and numerous published books, you have been tasked with writing a book consisting of 10 chapters, each chapter containing 5 sub-chapters. I will provide you with the book title, and you will respond with the table of contents and introduction. Then, you will ask me if I agree with the table of contents. If I say yes, you will begin writing chapter 1. If I say no, you will revise the table of contents accordingly. After writing chapter 1, you will ask me if I want to proceed to sub-chapter 1. If I say yes, you will begin writing sub-chapter 1. Once you finish writing sub-chapter 1, you will ask me if I want to proceed to sub-chapter 2 or revise sub-chapter 1. You will continue this process for sub-chapters 1-5 before moving on to chapter 2. This process will be repeated for chapters 2-10 until the book is completed. The book title is موضوع کتاب یا مقاله✨ @DevLosso
608
واقعیت پنهان: PHP-FPM اغلب گلوگاه (bottleneck) اصلی اپلیکیشن های PHP است، نه Nginx!
بسیاری از تیم ها با دیدن خطای 502 یا 504، انگشت اتهام را به سمت Nginx می گیرند. اما در اغلب موارد، مشکل از کانفیگ نادرست PHP-FPM (FastCGI Process Manager) است.✅
PHP-FPM چگونه کار می کند؟
به زبان ساده:
هر Worker فقط یک درخواست را در لحظه پردازش می کند.
وقتی Worker آزاد نباشد، درخواست های جدید وارد یک صف (Queue) می شوند.
اگر این صف پر شود، خطای 502 Bad Gateway یا 504 Gateway Timeout رخ می دهد.
تنظیمات حیاتی برای عملکرد بهینه
1⃣ مدیریت Concurrency بر اساس RAM، نه CPU
بزرگ ترین اشتباه، تنظیم max_children بر اساس تعداد هسته های CPU است. مصرف حافظه (RAM) هر Worker، عامل محدودکننده اصلی است.
فرمول صحیح:
max_children = (Total RAM for Pool) / (Avg RAM per Child)
2⃣ انتخاب Process Manager (pm) مناسب
dynamic: بهترین گزینه برای اپلیکیشن های وب و API با ترافیک متغیر.
ondemand: ایده آل برای سرورهای کم ترافیک و با حافظه محدود.
static: فقط برای سرورهایی با بار کاری کاملاً پایدار و قابل پیش بینی.
3⃣ حفاظت از منابع سرور
request_terminate_timeout: برای توقف خودکار اسکریپت های سرکش (runaway).
request_slowlog_timeout: برای شناسایی و لاگ گیری درخواست های کند و پیدا کردن گلوگاه ها.
pm.max_requests: برای جلوگیری از نشت حافظه (memory leak) در بلندمدت با ریستارت کردن Workerها.
4⃣ بهینه سازی OPcache
OPcache اولین و مهم ترین خط دفاعی شما برای بهبود پرفورمنس است. همیشه حداقل ۲۰٪ از حافظه آن را آزاد نگه دارید. بدون OPcache، سرور شما به یک کارخانه کامپایل مجدد کد تبدیل می شود!
مطالعه موردی (اپلیکیشن Laravel با 8GB RAM)
حافظه تخصیص داده شده به PHP-FPM: 6GB
میانگین حافظه مصرفی هر Worker: ~120MB
محاسبه max_children: 6000MB / 120MB = 50 (برای اطمینان روی 44 تنظیم شد)
نتیجه: پایداری کامل در تست بار 120 RPS و حذف کامل خطاهای 502.
جمع بندی
مشکل از PHP-FPM نیست، بلکه از کانفیگ های پیش فرض و کپی شده است. با درک صحیح مدیریت حافظه، صف ها و OPcache، می توان به عملکردی پایدار و قابل پیش بینی دست یافت.
گام بعدی: اگر ماهیت کار شما (مانند پردازش های طولانی مدت یا real-time) با معماری FPM سازگار نیست، ابزارهایی مانند RoadRunner یا Swoole را بررسی کنید.
آیا تجربه ای در زمینه خطاهای ناشی از کانفیگ نادرست PHP-FPM داشته اید؟ راه حل شما چه بوده است؟
⚡️ @DevLosso
608
✅اعداد اول کمتر از 😊
دوستان اگر ایده ای دارید خوشجال میشم بگید🤍
def find_primes(n):
if n <= 2:
return []
primes = [True] * n
primes[0], primes[1] = False, False
for i in range(2, int(n ** 0.5) + 1):
if primes[i]:
for j in range(i * i, n, i):
primes[j] = False
return [i for i, val in enumerate(primes) if val]
number = 123456789
print(find_primes(number))
اینجوریم میتونید بنویسید
primes[0] = primes[1] = False❤️ @DevLosso
608
😊 کدنویسی بدون حواسپرتی! Zen Mode همون چیزی که توی VSCode کم داشتی!
▫️اگه موقع کدنویسی تو VS Code، شلوغی صفحه و ابزارهای اضافی حواست رو پرت میکنن، حالت Zen دقیقاً همون چیزیه که نیاز داری!
▫️با فعالکردن این حالت، همه نوارها و منوهای اضافی مخفی میشن و فقط کدها جلوی چشمت هستن. اینجوری میتونی بدون هیچ مزاحمتی روی کدات تمرکز کنی. برای فعالسازی حالت Zen، مسیر زیر رو دنبال کن:
View -> Appearance -> Zen Modeیا از میانبرهای زیر استفاده کن: ❕ تو ویندوز و لینوکس ← Ctrl + K Z ❕تو سیستمعامل مک ← Cmd + K Z + با این کار، VS Code به حالت تمامصفحه میره و فقط ویرایشگر کد رو نمایش میده. برای خروج از حالت Zen، کافیه کلید Esc رو فشار بدی. ➡️ @DevLosso
608
⚙ساخت تقویم با وارد کردن ماه و سال دلخواه 📅
import calendar
print("calendar generator")
year = int(input("Enter year (for exmple 2025): "))
month = int(input("Enter month (1-12): "))
print(f"Calendar for {month}/{year}:\n")
print(calendar.month(year, month))
⚡️ @DevLosso608
پروژه تشخیص شرکت سیمکارت🔣
دوستان اگر ایده ای داشتید خوشحال میشم بگید💔
#shomare
from colorama import init, Fore, Style
init()
hamrahaval = ['0910', '0911', '0912', '0913', '0914', '0915', '0916', '0917', '0918', '0919', '0990', '0991', '0992', '0993', '0994', '0903']
irancell = ['0930', '0933', '0935', '0936', '0937', '0938', '0939', '0900', '0901', '0902', '0903', '0904', '0905', '0941']
ritel = ['0920', '0921', '0922', '0923']
attempts = 10
while attempts > 0:
phone = input(f"Enter your phone number ({attempts} attempts left): ")
if len(phone) != 11 or not phone.isdigit():
print(Fore.RED + "❌ Invalid phone number." + Style.RESET_ALL)
else:
prefix = phone[:4]
if prefix in hamrahaval:
print(Fore.GREEN + f"✅ The number [{phone}] belongs to Hamrah Aval." + Style.RESET_ALL)
elif prefix in irancell:
print(Fore.GREEN + f"✅ The number [{phone}] belongs to Irancell." + Style.RESET_ALL)
elif prefix in ritel:
print(Fore.GREEN + f"✅ The number [{phone}] belongs to RighTel." + Style.RESET_ALL)
else:
print(Fore.BLUE + f"The number [{phone}] is not recognized in known operators." + Style.RESET_ALL)
attempts -= 1
print("All attempts completed")
💎@DevLosso608
اگه دنبال یه نرم افزار خوب، سبک , و صد البته اپن سورس برای انتقال فایل تو شبکه 💻 داخلی هستین LocalSend رو جدا پیشنهاد میکنم
بدون هیچ دردسر اضافی یا تنظیمات خاصی
نسخه لینوکس 😁 ، ویندوز 🪟 و حتی اندروید 📱 هم داره
http://localsend.org💎 @DevLosso
608
🖥صفحه لاگین نوشته شده با: HTML , CSS , JS
شما میتونید به صورت رایگان سورس این صفحه دریافت کنید😎
Code: 7bf56298
@DevLosso
@DevLossoUp_bot
608
📊 تفاوت عملکرد و ساختار GPU و CPU
🔸 واحد پردازش گرافیکی GPU را می توان نسخه اختصاصی شده از CPU به حساب آورد که هر دو در کنار هم توان عملیاتی و پردازش همزمان فرآیندها را بالا میبرند در حالی که CPU توانایی پردازش عملیات مختلف را دارد تمرکز GPU روی انجام محاسبات ریاضی است.
🔸 همچنین برخلاف CPU که کارهای پشت سرهم را بهتر انجام میدهد GPUبا قدرت پردازش موازی خود در آن واحد از پس از چندین فرایند مختلف بر می آید
🔸 بنابراین با این که هر هسته GPU نسبت به CPU توان اجرایی پایین تری دارد اما در مجموع برای عملیاتی نظیر رندرینگ گرافیکی عملیات هوش مصنوعی مثل یادگیری ماشین و استخراج رمز ارز مثل بیت کوین کارآمد است
تصویر بالا تفاوت ساختاری جی پی یو و سی پی یو را نمایش می دهد.
🧬 @DevLosso
608
+1
matplotlib 🍆🐍
خب دوستان این سوال اینجوریه که ورودی اعداد از کاربر میگیره و به صورت نمودار بزرگترین اعداد بین اون ورودیارو نشون میده
import matplotlib.pyplot as plt
from colorama import Fore , init
init()
def max_num():
user_input = input(Fore.GREEN + "Please enter your numbers for example(x y x y): " + Fore.BLUE).strip()
nums = [float(x) for x in user_input.split()]
if not nums:
print(Fore.YELLOW + "List is empty")
return
max_val, max_idx = max((val, idx) for idx, val in enumerate(nums))
plt.figure(figsize=(7, 3))
bars = plt.bar(range(len(nums)), nums, color='green')
bars[max_idx].set_color('red')
plt.title(f"Max: {max_val} at index {max_idx}", fontsize=15)
plt.xlabel("Indices", fontsize=13)
plt.grid(True, alpha=0.5)
plt.tight_layout()
plt.show()
max_num()
🔥 @DevLosso608
این عکس باحال خروجی کد زیره 🐆📞
n = 8
for i in range(n):
print(" " * (n-i), end=" ")
for j in range(i+1):
if i % 2 == 0:
print("*", end=" ")
else:
print(j+1, end=" ")
print()
⭐️ @DevLosso608
608
ماشین حساب برای محاسبه معدل 📝
کد پایتونیه ✅
#average calculator
def grade_calculator():
print("📚 Grade Calculator")
grades_input = input("Enter your grades separated by commas (e.g. 18, 15.5, 20): ")
try:
grades = [float(g.strip()) for g in grades_input.split(",")]
average = sum(grades) / len(grades)
highest = max(grades)
lowest = min(grades)
status = "✅ Passed" if average >= 10 else "❌ Failed"
print("\n📊 Grade Summary:")
print(f"🔹 Average: {average:.2f}")
print(f"🔹 Highest: {highest}")
print(f"🔹 Lowest: {lowest}")
print(f"🔹 Status: {status}")
except:
print("⚠️ Invalid input. Please enter numbers separated by commas.")
grade_calculator()
🗣 @DevLosso608
حملهMan-in-the-Middle" (MitM) یعنی اینکه یک نفر بهطور مخفیانه بین دو طرف که به هم ریکوئست ارسال میکنند، قرار میگیرد و میتواند مکالمات یا اطلاعات آنها را ببیند یا حتی تغییر دهد.🥷
⚪️چطور این حمله کار میکند؟
🔤. شنود: مهاجم میتواند بهراحتی به صحبتهای دو نفر شنود کند و اطلاعات مورد نیازش را بدزدد.
⚡️. تغییر اطلاعات: مهاجم میتواند پیامها را عوض کند. مثلاً ممکن است پیام شما به دوستتان را تغییر دهد تا چیزی که نمیخواهید بفرستید، ارسال شود.
⚡️. جعل هویت: مهاجم میتواند خود را بهجای یکی از طرفین جا بزند و با طرف دیگر صحبت کند.
⚪️چطور این حمله انجام میشود؟
🔴 شبکههای Wi-Fi عمومی: مثلاً در کافیشاپ، کسی میتواند یک شبکه Wi-Fi جعلی بسازد و شما را فریب دهد که به آن متصل شوید.
🔴 تغییر آدرسها: در شبکههای محلی، مهاجم میتواند آدرسهای دستگاهها را عوض کند تا ترافیک شما به سمت او بیفتد.
🔴 تبدیل HTTPS به HTTP: مهاجم میتواند ارتباط امن شما را به ارتباط غیرامن تبدیل کند.
⚪️چطور از این حملات جلوگیری کنیم؟
1️⃣. استفاده از HTTPS: همیشه به وبسایتهایی بروید که آدرس آنها با HTTPS شروع میشود. این یعنی اطلاعات شما رمزگذاری شده است.
2️⃣. استفاده از VPN: اگر از اینترنت استفاده میکنید، یک VPN کمک میکند تا اطلاعات شما امنتر باشد.
3️⃣. اجتناب از شبکههای عمومی: اگر میتوانید، از اتصال به Wi-Fi عمومی خودداری کنید.
4️⃣. بررسی گواهینامهها: مطمئن شوید وبسایتهایی که به آنها وارد میشوید، معتبر هستند.
🔛 @DevLosso
608
پروژه تست سرعت تایپ (ترمینال) ⌨️👩💻
کد اینجوریه که ی جمله رندوم از لیست میده و اونو باید تایپ کنید بعد نتیجه بهتون میگه🐍
import time, random
sentences = [
"Python is amazing!",
"Typing speed test is fun.",
]
text = random.choice(sentences)
print(f"Type the following sentence as fast as you can:\n")
print(f"{text}\n")
start = time.time()
typed = input("Your Input: ")
end = time.time()
time_taken = end - start
accuracy = sum(a == b for a, b in zip(text, typed)) / len(text) * 100
wpm = len(typed.split()) / (time_taken / 60)
print(f"\n Time: {time_taken:.2f} sec")
print(f" Accuracy: {accuracy:.2f}%")
print(f" Words per minute: {wpm:.2f} WPM")
🎁 @DevLosso