Syntax | سینتکس
2.98K subscribers
423 photos
111 videos
35 files
392 links
Download Telegram
🎤 Voice Recorder using Python

این کد برای ضبط صدا و ذخیره آن به عنوان یک فایل WAV استفاده می‌شود. برنامه از کتابخانه‌های sounddevice و scipy استفاده می‌کند. کاربر را دعوت می‌کند تا مدت ضبط را به صورت ثانیه وارد کند، سپس صدا را برای این مدت ضبط می‌کند و با فرمت WAV با نام "myrecording.wav" در پوشه فعلی ذخیره می‌کند.

لطفاً قبل از اجرای این کد، مطمئن شوید که کتابخانه‌های مورد نیاز (sounddevice و scipy) را نصب کرده‌اید. در صورت بروز هرگونه خطا، ممکن است نیاز به نصب آنها با استفاده از دستورات زیر باشد:


pip install sounddevice
pip install scipy
با نصب کتابخانه‌ها، می‌توانید کد را برای ضبط صدا اجرا کنید.

#code
#python


@khat_academy
👍41
برنامه ایجاد تایمر شمارش معکوس



‼️کد پایتونی که مشاهده میکنید , یک تایمر معکوس را پیاده‌سازی می‌کند. در این تابع، با ورودی یک مقدار زمان به ثانیه، تایمر را شروع می‌کند و به صورت معکوس زمان را نمایش می‌دهد تا به صفر برسد.

‼️همچنین برای اجرای تاخیر یک ثانیه در هر مرحله، از تابع time.sleep(1) استفاده می‌شود.

‼️برای استفاده از این کد، ابتدا یک عدد صحیح به عنوان ورودی وارد کنید تا زمان تایمر را تنظیم کنید. سپس تابع countdown فراخوانی می‌شود و تایمر شروع می‌شود.


#code
#python


@khat_academy
👍6
🖥 اعلان های لپ تاپ با پایتون


‼️این کد از ماژول‌های time و plyer.notification استفاده می‌کند. ماژول time برای کنترل زمان استفاده می‌شود و plyer.notification برای نمایش هشدارها استفاده می‌شود.

‼️در اینجا یک حلقه بی‌نهایت (while True) استفاده شده است تا به طور مداوم هشدارها را نمایش دهد. داخل حلقه، تابع notification.notify() فراخوانی شده است تا هشدار را نمایش دهد. سپس با استفاده از تابع time.sleep(3600)، برنامه به مدت یک ساعت (3600 ثانیه) منتظر می‌ماند و سپس دوباره هشدار را نمایش می‌دهد.

برای اجرای این کد، اطمینان حاصل کنید که پکیج plyer را نصب کرده‌اید. می‌توانید از مدیر بسته pip برای نصب آن استفاده کنید با اجرای دستور زیر:


pip install plyer
سپس کد را در یک فایل Python با پسوند .py ذخیره کنید و برنامه را اجرا کنید. برنامه شروع به نمایش هشدارها پس از گذشت یک ساعت می‌کند.

لطفاً توجه داشته باشید که برای استفاده از ماژول plyer، سیستم عامل شما باید از آن پشتیبانی کند و تنظیمات مربوط به نمایش هشدارها باید مجاز باشد.


#code
#python

@Syntax_fa
👍7👌3
📶 Get Saved Wi-Fi Passwords

⭕️این کد یک اسکریپت پایتون است که با استفاده از دستورات سیستم عامل ویندوز (netsh)، اطلاعات مربوط به شبکه‌های Wi-Fi موجود در رایانه را جمع‌آوری می‌کند و نام‌ها و رمزهای عبور آن‌ها را در یک فایل متنی ذخیره می‌کند.

#code

#python

@Syntax_fa
👍5
🖥 کد ساخت دوربین امنیتی OpenCV Python :

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

🔹 ویدیوهای ضبط شده با فرمت mp4 و با نام‌های مختلف برای هر زمان ضبط شده‌اند.

🔺به طور خلاصه، این برنامه قابلیت تشخیص چهره و بدن انسان را در ویدیو فراهم می‌کند و در صورت تشخیص، ویدیویی را ضبط می‌کند.

#code
#python

@Syntax_fa
چرا Code-level Monolith معماری برنده است؟ (درس‌هایی از Grafana Loki)

دوراهی مونولیت یا میکروسرویس:
از یک طرف، مونولیت (Monolith) ساده است اما اگر بد نوشته شود به "کد اسپاگتی" تبدیل می‌شود.
از طرف دیگر، میکروسرویس (Microservices) مقیاس‌پذیر است اما شما را در جهنمی از پیچیدگی‌های شبکه، دیپلوی و مدیریت ۵۰ کانتینر مختلف غرق می‌کند.

اما اگر راه سومی وجود داشته باشه چی؟ راهی که در آن کدتان را "مثل میکروسرویس" می‌نویسید، اما آن را "مثل مونولیت" اجرا می‌کنید.

در معماری Code-level Monolith، شما مرزهای سرویس‌هایتان را کاملا رعایت می‌کنید. یعنی سرویس Auth و سرویس Order کدهای کاملا جداگانه‌ای دارند (درست مثل میکروسرویس).
اما در زمان بیلد (Build Time)، به جای اینکه آنها را در کانتینرهای جداگانه بسته‌بندی کنید، همه را در یک فایل اجرایی (Binary) واحد لینک می‌کنید.

شعار این معماری:
> *"میکروسرویس در توسعه، مونولیت در اجرا."*

جادوی Grafana Loki و Tempo

بهترین مثال زنده این معماری در دنیا، ابزارهای شرکت Grafana Labs (مانند Loki برای لاگ، Tempo برای تریس و Mimir برای متریک) هستند.

سورس کد Grafana Loki از اجزای مختلفی تشکیل شده است:
* Ingester (دریافت لاگ)
* Distributor (توزیع بار)
* Querier (جستجو)

نکته نبوغ‌آمیز اینجاست: همه این‌ها در یک کدبیس و یک فایل باینری هستند.

1. حالت (All-in-One):
وقتی می‌خواهید Loki را روی لپ‌تاپ یا سرور کوچک خود اجرا کنید، دستور زیر را می‌زنید:
./loki -target=all
در این حالت، تمام اجزا در یک پروسه اجرا می‌شوند. ارتباط بین Distributor و Ingester از طریق Function Call در حافظه رم انجام می‌شود.
* تاخیر: صفر نانوثانیه.
* پیچیدگی: صفر.

2. حالتِ اسکیل بالا (Microservices):
وقتی ترافیک شما میلیونی می‌شود، همان فایل باینری را با فلگ متفاوتی اجرا می‌کنید:
./loki -target=ingester
حالا این باینری فقط نقش Ingester را بازی می‌کند و بقیه کدها خاموش می‌شوند. در این حالت، ارتباطات به صورت خودکار به gRPC/HTTP تغییر می‌کند.

چرا باید به این روش فکر کنید؟


1. حذف سربار شبکه (Zero Latency):
در میکروسرویس، داده‌ها باید Serialize شوند، به شبکه بروند و Deserialize شوند. در Code-level Monolith، این فقط یک جابجایی اشاره‌گر (Pointer) در حافظه است. سرعت اجرای شما وحشتناک بالا می‌رود.

2. دیپلوی آسان (Operational Simplicity):
برای شروع پروژه، نیازی به Kubernetes و مدیریت ۱۰ تا فایل YAML ندارید. یک فایل باینری را کپی و اجرا می‌کنید.

3. انعطاف‌پذیری (Agility):
شما امروز نمی‌دانید پروژه شما چقدر بزرگ می‌شود. با این روش، شما امروز ساده شروع می‌کنید، اما کدتان "Ready to Scale" است. هر زمان لازم شد، با تغییر کانفیگ، مونولیت را می‌شکنید.

چطور پیاده‌سازی کنیم؟ (مثال Go)

کلید کار در استفاده از Interface هاست.
به جای اینکه سرویس A مستقیماً با gRPC کلاینتِ سرویس B صحبت کند، با یک اینترفیس صحبت می‌کند.

* **در حالت Monolith:
پیاده‌سازی اینترفیس، مستقیماً متد سرویس B را صدا می‌زند.
* در حالت Microservice: پیاده‌سازی اینترفیس، یک درخواست gRPC می‌فرستد.

—-

این مقاله به خوبی پیاده سازیش رو توضیح میده:
بیایید فرض کنیم اینکه برنامه میکروسرویس باشد یا مونولیت، فقط یک جزئیات پیاده‌سازی است

سوال:
در گوئیک کانکت چطور میشه به code level monolith رسید؟
https://github.com/syntaxfa/quick-connect

#code_level_monolith

@Syntax_fa
👍11❤‍🔥52🔥1