Warning: Undefined array key 0 in /var/www/tgoop/function.php on line 65

Warning: Trying to access array offset on value of type null in /var/www/tgoop/function.php on line 65
734 - Telegram Web
Telegram Web
سوالات مصاحبه های پایتون
👎19🥱4🤔3🔥2😁2👍1
Forwarded from CodeCrafters (Behzad Azadi)
طراحی میکروسرویس با جنگو بخش دوم میکروسرویس چیست

میکروسرویس ها روندهای جدید توسعه هستند. امروزه شرکت ها معماری میکروسرویس را برای توسعه پروژه ترجیح می دهند. این یک راه حل بسیار فشرده برای یک پروژه است. مدیریت ماژول را آسان می کند و اجرای پروژه را سریعتر می کند. همچنین به توسعه سریعتر پروژه کمک می کند. این دلایل ذکر شده و بسیاری موارد دیگر باعث تقاضای میکروسرویس می شود.

معرفی میکروسرویس
برای میکروسرویس تعریف خاصی وجود ندارد و ممکن هست هر فرد به شکلی آنرا تعریف کند اما دو تعریف عمده آن به شکل زیر است
۱-میکروسرویس‌ها، سرویس‌های کوچک و مستقلی هستند که باهم کار میکنند
۲-میکروسرویس‌ها معماری سرویس گرا با زمینه‌های محدود هستند،بطور مستقل و با یک جزء دیگر در داخل ارتباط برقرار میکنند، این معماری بسیار خودکار و و سیستم‌های نرم افزاری را تکامل می‌دهد

بیایید ببینیم که آیا از معماری سرویس گرا (SOA) آگاه هستید یا خیر، سپس ماژولار بودن پروژه و ارتباط از طریق پیام را نیز می دانید. اگر از شیوه های DevOps آگاه هستید، در مورد استقرار خودکار نیز می دانید. هر دو بیشتر به رویکرد میکروسرویس نزدیک هستند.


سه اصل مهم در طراحی میکروسرویس‌ها:
۱-از میکروسرویس برای استقرار سیستم‌ها و پروژه‌های بزرگ استفاده کنید: برای تمام مقیاس‌های پروژه استفاده از میکروسرویس اشتباه است، بلکه مناسب پروژه‌های بزرگ است که مدیریت آن چالش برانگیز باشد، اما خود این موضوع هم سردرگم کننده هستش اینکه کدوم پروژه رو کوچیک، متوسط، بزرگ بنامیم، منتها اگر سیستم ما دارای بار بالایی از درخواست کاربر است و نیاز به مقیاس پذیری دارد، میتوانیم رویکرد میکروسرویس رو پیاده سازی کنیم(در حجم تعداد اپ نیز تعداد اپ بالا میتواند به این منزله باشد)

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

۳-قابلیت تعویض ماژول ها: در پروژه های توسعه یافته قبلی که با رویکرد میکروسرویس ساخته نشده اند، امکان تغییر هر جزء از پروژه کمتر است. قبل از تغییر سازنده کامپوننت باید در مورد تغییرات برنامه ریزی کند، وابستگی کد خاصی را پیدا کند، در صورت عدم موفقیت کد به هر دلیلی، مراحل بازگشت را فهرست کند و تاثیر کد را مشخص کند. پس از همه، تغییرات نیاز به انجام عملیات تست واحد و سپس آزمایش ادغام با کل محصول دارند


در برخی سناریوها، پروژه ها بسیار پیچیده هستند یا وابستگی‌های حیاتی شدیدی دارند، در چنین شرایطی در مورد مسائل آینده یا افزایش حجم بار، ما مجبوریم به جای تغییر، اجزا را حفظ کنیم، که این بزرگترین ضرر یک رویکرد است

در میکروسرویس ها، کل پروژه را بر اساس ماژول ها به یک جزء‌های کوچک تقسیم می کنیم. بطوری که امکان تکرارپذیری را بر روی هر جزء فراهم می کند که تعمیر و نگهداری پروژه رو راحتتر میکند

اپلیکیشن‌های میکروسرویس دارای بخش‌های مهم زیر هستند:
● به اندازه های کوچک تقسیم می شوند
● برای برقراری ارتباط نیازمند انتقال پیام هستند
● مقید به زمینه‌ها هستند
● توسعه انها بصورت مستقل هستش
● استقرار هر بخش مستقل هست
● متصل به کنترل کننده مرکزی نیستند
● ساخت ها توسط فرآیندهای خودکار مستقر می شوند

به شکل آرمان گرایانه به میکروسرویس‌ها نگاه نکنید و با این تصور که در دنیای واقعی قابل پیاده سازی نیست، اگر تصور میکنید که میکروسرویس‌ها توسط بانک‌ها، سیستم‌های بیمارستانی و هتلی پیاده سازی میشه سخت در اشتباه هستید هیچکدام از میکروسرویس استفاده نمیکنند بلکه بیشتر توسط شرکت‌های فعال در حوزه محتوای جریانی(stream content) مورد استفاده قرار میگیرد، استفاده و پیاده سازی میکروسرویس یک انتخاب فردی هست و محدود به دامنه‌ای نیست، اما هدف از آن دو مورد تمرکززدایی و استقلال می‌باشد

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

استقلال: به این معنی است که به تیم‌های توسعه خود برای تولید نرم افزار ایمان داشته باشیم

مزیت این دو رویکرد این است که تغییرات در نرم افزار آسانتر و سریعتر میشود و امکان تصمیم گیری سریعتر را فراهم میکند


ادامه در وبسایت

لینک وبسایت


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


#microservice
#django

@code_crafters
👍1
جنگولرن
سری مهندسی نرم‌افزار: پست 9 از لینکدین Saeed Shahrivari Joghan اسکرام: قدیمی، سبک، پر حاشیه در پست‌های قبلی خدمتتون عرض کردم روش‌های چابک معمولاً با استفاده از فرآیند توسعه تکرارشونده و افزایشی با چاشنی فیدبک مستمر سعی در هضم تغییرات دارند و با استفاده از…
سری مهندسی نرم‌افزار: پست 10
از لینکدین Saeed Shahrivari Joghan
اسکرام چکش طلایی نیست!

در پست قبلی اجمالاً راجع به چارچوب بودن اسکرام صحبت کردم. مجدداً تاکید می‌کنم که من طرفدار اسکرام نیستم ولی شدیداً با روال توسعه بی‌برنامه و یلخی هم مشکل دارم. من اخیراً تیم‌های زیادی رو دیدم که با توسل به حربه «ما داریم کنبان کار می‌کنیم» بدون داشتن فرآیند تکرارشونده حرکت می‌کنند و متاسفانه حتی قوانین پایه کنبان مثل «تعیین WIP» رو هم اجرا نمی‌کنند و یا در برخی موارد من زیاد دیدم که مدیر تیم بدون برگزاری حتی یک جلسه گروهی در ماه صرفا به صورت هفته به هفته و با استفاده از یک دفترچه و جلسات یک به یک به اعضای تیم وظایف هفتگی می‌ده. اغلب مخالفین سرسخت اسکرامی که من تا به حال دیدم خودشون یکبار به صورت عمیق راجع بهش مطالعه نکردنند و یا در برخی موارد حوصله روال و قانون رو ندارند. بدیهیه که برای هر پروژه‌ای اسکرام و حتی اجایل ممکنه مناسب نباشه و خیلی جاها همون تکنیک «مدیر + دفترچه یادداشت + جلسات تک به تک» ممکنه کار کنه ولی من مطابق تجربه خودم در بازار طی سال‌های اخیر به این رسیدم که روش‌های چابک در خیلی از پروژه‌ها کار می‌کنند فقط باید از روش چابک مناسب، در جای مناسب، و با تیلورینگ/کاستومایزیشن مناسب استفاده کرد (بازم تاکید می‌کنم که تیلورینگ به معنی تغییرات اساسی در چارچوب نیست بلکه به معنی انطباق روش با شرایطه). معمولاً در سازمان‌های بالای ۱۰۰ نفر، استفاده از مشاوره و یا همکاری یک فرد مسلط و با تجربه در زمینه چابکی می‌تونه خیلی کمک‌کننده باشه.

واقعیت تلخ و شاید شیرین اینه که اسکرام برای هر پروژه‌ای مناسب نیست! اسکرام معمولاً برای پروژه‌های با پیچیدگی بیزینسی بالا که نیاز به انعطاف بالایی در اجرا دارند مناسبه. برای چند نمونه از جاهایی که استفاده از اسکرام فایده‌ی زیادی نداره میشه به این موارد اشاره کرد:
◀️ پروژه‌های کوتاه مثلاً در حد یکی دو ماه
◀️ پروژه‌های که تیم‌های خیلی بزرگ و پراکنده از نظر جغرافیایی دارند. در این موارد شاید استفاده از چارچوب‌های مثل SAFe بهتر باشه
◀️ تیم‌هایی که بیشتر درگیر نگهداشت محصول هستند و بیشتر تیکت حل می‌کنند مثلاً تیم‌های DevOps و SRE (البته نه همیشه)
◀️ تیم‌هایی که کراس-فانکشنال نیستند مثلاً یه تیم UX و یا DevOps مستقل (بازم نه همیشه)
◀️ پروژه‌هایی که کل مسیر و گانت از اول تا آخر واضح و مشخصه و تغییری هم توش نخواهد بود
◀️ پروژه‌های خیلی خیلی تکنیکال مثلاً طراحی و توسعه یه هسته جدید برای یک سیستم‌عامل نهفته
◀️ تیم‌هایی که اصلاً به اسکرام و حتی در مرتبه بالاتر به چابکی اعتقادی ندارند

در پایان این نکته رو مرور کنیم که روش‌های متنوع چابک وجود دارند که اسکرام یکی از اونهاست و اسکرام قرار نیست همه جا کار کنه اما چابکی به معنی بی‌برنامگی نیست. در پست بعدی مفصلاً راجع به کاستومایز کردن صحبت می‌کنم.
👍1
Forwarded from محمد خشنوا / برنامه نویسی (SeYeD.Dev)
امشب اولین جلسه دوره هستش 😍💖💜

دیسکورد رو نصب کنید و توی سرور برگزاری دوره عضو بشید، لینک عضویت :
https://discord.gg/seyedbax

آموزش نصب دیسکورد
https://www.tgoop.com/SEYED_BAX/6716

امشب ساعت ۹ روی این Live که توی تصویر مشخص کردم کلیک کنید تا وارد کلاس بشید

یک vpn خوب حتما دم دست داشته باشید، شاید لازمتون شد. البته اگر بدون vpn وصل شدید و صدا و تصویر رو داشتید به گیرنده هاتون دست نزنید (متسوریفای میتونه گزینه خوبی باشه)

شب میبینمتون عشقا 🥳
@SEYED_BAX
Please open Telegram to view this post
VIEW IN TELEGRAM
محمد خشنوا / برنامه نویسی
امشب اولین جلسه دوره هستش 😍💖💜 دیسکورد رو نصب کنید و توی سرور برگزاری دوره عضو بشید، لینک عضویت : https://discord.gg/seyedbax آموزش نصب دیسکورد https://www.tgoop.com/SEYED_BAX/6716 امشب ساعت ۹ روی این Live که توی تصویر مشخص کردم کلیک کنید تا وارد کلاس بشید یک…
دوره رایگان آموزش برنامه نویسی توسط سید و رفقا (کانال @SEYED_BAX)

✔️قطعا مطالب مفیدی توی این دوره رایگان میتونید یاد بگیرید.
امشب (شنبه 25 فروردین 1403) اولین جلسه است.

من سید (@seyed_dev) رو میشناسم و میدونم دانش خوبی توی برنامه نویسی (بخصوص پایتون) و دیتابیس های no sql و داکر و... داره. ازش یاد بگیرید/بگیریم
👍12👎4
معرفی پکیج Django-Hijack

بدون اینکه رمز کاربرهای سایت تون رو بدونید وارد اکانت شون بشید 😬
من نمیدونم کجا میتونه کاربرد مفیدی داشته باشه

https://github.com/django-hijack/django-hijack
🔥3🥱2👍1
Link4Help
کاملترین دوره آموزشی کار با فرم ها در #جنگو به زبان فارسی، این آموزش را از سایت دانشجویار تهیه کنید. در این دوره با موارد زیر آشنا می شویم: - آشنایی با توکن CSRF - شخصی سازی فیلدها با widget ها - آشنایی با متد is_valid و دیکشنری cleaned_data - استفاده از…
کاملترین دوره آموزشی کار با فرم ها در #جنگو به زبان فارسی
عجب اعتماد به نفسی داشتم 4 سال پیش 😂

یاد نموداره افتادم

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

✔️این دوره رایگان نیست
😁12
This media is not supported in your browser
VIEW IN TELEGRAM
نکته مهم
یادگیری بدون تمرین به درد نمیخوره
✔️هفته ای 8 تا دوره و کتاب ببینی و بخونی. وقتی تمرین نکنی، هیچی نمیشی 😂

انگار جنگولرن داره از جنگو فاصله میگیره 😡🤬
👍11
Forwarded from محمد خشنوا / برنامه نویسی (SeYeD.Dev)
اگر نمیدونید یک کامند دقیقا چیکار میکنه دقیقا ، میتونید توی این سایت واردش کنید و توضیح برای هر قسمتش دریافت کنید

explainshell.com

@SEYED_BAX
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍131
Forwarded from CodeCrafters (Mojtaba)
انتخاب محل ذخیره سازی تصاویر: فایل سیستم یا پایگاه داده؟

تصمیم گیری در مورد بهترین راه برای ذخیره سازی تصاویر بین Blob (Binary Large Object)در پایگاه داده و فایل سیستم (مانند S3) همیشه بحث برانگیز بوده.

پایگاه داده یا فایل سیستم؟ کدوم بهتره؟

اول از همه، بریم سراغ مزایای هر کدوم:

پایگاه داده:

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

فایل سیستم (مانند S3):

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

پس کدوم رو انتخاب کنیم؟

خب، بستگی به نیاز شما داره!

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

در نهایت...

هیچ راه حل کاملی وجود نداره و انتخاب بهترین روش به نیازهای شما بستگی داره.

#Database #General
@Code_Crafters
👍5
Media is too big
VIEW IN TELEGRAM
نکاتی در مورد JsonResponse و Ajax در جنگو

بخشی از آپدیت جدید دوره فروشگاه اینترنتی با جنگو.
این قسمت در مورد اینا صحبت شد:
✔️ توی این قسمت پیغام با موفقیت با خطا مواجه شد رو دیدیم😂
✔️ نکاتی در مورد JsonResponse یاد گرفتیم
✔️ با Ajax دارپ دان های استان شهرستان رو اوکی کردیم
✔️ با متد dumps آشنا شدیم
و...

لینک آپارات:
https://www.aparat.com/v/yULMG
هر انتقاد یا پیشنهادی به این قسمت دارید به @miladhzz پیام بدید
تشکر
4👍3😁1
سلام دوستان امروز می خواهیم درباره ی dunder new صحبت کنیم ، dunder new یک special method (یک class method هم هست پس اولین مقدارش خود کلاسه)

در پایتون هست که در واقع سازنده اصلی نمونه ها از کلاس این متد هست :)

خیلی جاها شنیدیم کهconstructor ، dunder init  هست ولی dunder init فقط یک initializer  هست و در واقع constructor اصلی dunder new هست

جالبه بدونید که dunder new قبل از ساخته شدن کامل  یک نمونه کلاس و حتی قبل از dunder init کال میشه :)

اگر می خواهیم dunder new رو برای خودمون تغییر بدیم باید حواسمون باشه که این کار رو انجام بدیم
return super().new(cls)
تا ی
ک نمونه از اون کلاس ساخته بشه ساخته بشه
خب حالا بریم حرفمون رو اثبات کنیم :

class Test:
   
    def init(self):
        print("Hi i'm in dunder init")
   
    def new(cls):
       print("Hi i'm in dunder new")
       return super().new(cls)

t1 = Test()
print(t1)

#output
Hi i'm in dunder new                                                                                                                         
Hi i'm in dunder init
<main.Test o
bject at 0x7f7371425748>                                                                                                     


     خب الان براتون سوال میشه که اصلا این dunder new به چکاری میاد؟ یا چجوری تونستیم که خود کلاس رو به کلاسی که ازش ارث برده بفرستیم در صورتی که هنوز خود کلاس ایجاد نشده !
خب بریم که به سوالات جواب بدیم :)

برای سوال اول بعضی موقع ها هست ما می خواهیم قدرت بیشتری رو در ساختن نمونه های کلاسمون رو داشته باشیم یا در واقع اصلا نگذاریم  اون نمونه از کلاس تشکیل بشه
مثل این مثال :

class Person:
   
    def init(self, age, name):
        self.age = age
        self.name = name
       
    def new(cls, age, name):
       if age == 16 and name == 'parsa':
           return None
       return super().new(cls)

p1 = Person(16 , 'parsa')
print(p1)

#output
None


  خب در مثال
بالا ما گفتیم که قبل از اینکه نمونه از کلاس رو بسازی بیا و چک کن اگر سن اون آدم 16 و اسم اون parsa بود این  نمونه از کلاس رو نساز ( در واقع  با مقدار 16 و parsa   اون شی آدم نیست!)
البته این مثال برای طنز قضیه بود :)

خب حالا می رسیم به سوال دوم در پایتون متد type علاوه بر تشخیص یک شی وظیفه ایجاد کلاس رو هم داره (جالبه نه؟)

و موقعی که  داریم خود کلاس رو  وقتی ایجاد نشده به کلاسی که ازش ارث برده می فرستیم در واقع همون تایپ هست که این کار رو انجام میده

برای ایجاد یک کلاس با متد type اینگونه عمل می کنیم

my_class = type('Class_name', (), {})

print(my_class)

#output
<class 'main.Class_name'>    
 

  خب دیدن چه با حال بود :)  در قسمت اول اسم کلاس و در قسمت بعد  یک تاپل هست که کلاس هایی که قراره ازشون ارث ببره
و در قسمت آخر هم یک دیکشنری هست که خصوصیات اون کلاس رو به همراه داره
به همین راحتی !

اگر مفید بود به اشتراک بگذارید :)
👍12
.

لینک ویدیوی جلسه 3:
https://youtu.be/quxptvrXuEk

تو این ویدیو، با پایتون در مورد data casting, conditions and if statement, input و یکسری سوالات الگوریتمی صحبت کردیم

🔔 حتما حتما یوتیوب رو فالو کنید و ویدیو رو لایک کنید و نوتیف رو روشن بزارید 🫶

از طریق لینک زیر می‌تونید از دوره حمایت کنید:
https://reymit.ir/seyedbax

هرگونه سوالی دارید توی گروه تخصصیمون یا دیسکورد بپرسید :
https://discord.gg/seyedbax

https://www.tgoop.com/QaDeveloper

تمرین این جلسه :
یک برنامه بنویسید که وزن یک کیسه برنج را به گرم دریافت کند و سپس آن را به کیلوگرم بدون رقم اعشار تبدیل کند و اگر وزن کیسه برنج کمتر از ۱۰ کیلوگرم بود بگه که این کیسه برنج کمتر از ده کیلو وزن داره و مقدار وزنی که کم داره رو به گرم بنویسه

@SEYED_BAX | @MakeDeveloper
Please open Telegram to view this post
VIEW IN TELEGRAM
👍51
Media is too big
VIEW IN TELEGRAM
فیلم آموزش نحوه اتصال پروژه جنگو به درگاه پرداخت زرین پال

از آپارات Mojtaba_Ghahri

توی این ویدئو از سندباکس زرین پال استفاده میشه.

لینک آپارات:
https://www.aparat.com/v/HBhix
👏9👍6
معرفی پکیج az-iranian-bank-gateways
از گیت هاب علی زاهدی

✔️اتصال جنگو به درگاه بانک های مختلف

اتصال به بانک های ایرانی
درگاه پرداخت بانک ملی ایران،بانک سامان، بانک ملت، درگاه پرداخت زرین پال و ...


لینک github:
https://github.com/ali-zahedi/az-iranian-bank-gateways
👍132
شبیه ساز درگاه های بانکی ایران

بعد از بررسی ها و خوندن پرسش و پاسخ های دوستان توی گروه های جنگو
متوجه شدم که محیط sandbox یا test زرین پال و pay.ir از یه تایمی به بعد دیگه غیرفعال شدن

✔️و متاسفانه داکیومنت هاشون رو آپدیت نکردن و همه رو به اشتباه انداختن

سایت banktest.ir زحمت کشیده و درگاه پرداخت بعضی بانکهارو شبیه سازی کرده

البته من ترجیح میدم خودم یه شبیه ساز بنویسم

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

✔️البته وقتی درگاه پرداخت مستقیم از بانک ها میگیریم، آی پی سرور رو میخوان و از هر آی پی نمیشه request داد. ولی شاید زرین پال اینو چک نمیکنه

آپدیت:
خدایا توبه 🤬 انصافا سرویس دهنده رو ببین. انگار هر کی استخدام شده یه داکیومنت ساخته
سایت زرین پال رو که باز میکنی. لینک توسعه دهندگان مستندات pdf گذاشته که برای سال 1393 هست و توضیحات وب سرویس WSDL یا SOAP هست:
https://www.zarinpal.com/pg/services/WebGate/wsdl
نمونه کد جنگو برای سال 1395 هست و سرویس REST هست و آدرس ها اینجوری هستن (اینجا سندباکس کار میکنه):
https://www.zarinpal.com/pg/rest/WebGate/PaymentRequest.json
حالا توی گوگل سرچ کن 'داکیومنت زرین پال' دو تا سایت داره با توضیحات متفاوت و آدرس ها اینجوری هستن (توی این جدیده سندباکس کار نمیکنه):
https://api.zarinpal.com/pg/v4/payment/request.json
👍61🔥1😁1
Forwarded from CodeCrafters (Mojtaba)
باینری ها در PostgreSQL: ذخیره سازی اطلاعات خام

تصور کنید می‌خواهید عکسی از گربه‌تان را در PostgreSQL ذخیره کنید. چطور می‌توانید این کار را انجام دهید؟

پایگاه داده PostgreSQL نوع داده‌ای به نام bytea را ارائه می‌دهد که برای ذخیره اطلاعات باینری مانند تصاویر، فایل‌های صوتی و ویدئوها ایده‌آل است.

تفاوت باینری و رشته‌های کاراکتری:

* رشته‌های باینری مانند "بایت‌های خام" هستند و می‌توانند هر نوع داده‌ای را ذخیره کنند، از جمله صفر و کاراکترهای غیرقابل چاپ.
* رشته‌های کاراکتری برای ذخیره متن مناسب هستند و محدودیت‌هایی در مورد کاراکترهای مجاز دارند.

فرمت‌های ذخیره سازی:

هگزادسیمال: هر بایت به عنوان دو رقم شانزده‌گانی نمایش داده می‌شود (مثلاً "00" برای بایت صفر). این فرمت خوانایی بیشتری دارد.
نوع Escape: برخی از بایت‌ها با کاراکترهای خاص علامت‌گذاری می‌شوند. این فرمت قدیمی‌تر است و کاربرد کمتری دارد.

کاربردها:

۱.ذخیره تصاویر، فایل‌های صوتی و ویدئوها
۲.ذخیره داده‌های باینری مانند کدهای برنامه
۳.ذخیره اطلاعات رمزنگاری شده

مثال:

فرض کنید می‌خواهید تصویر گربه‌تان را با نام cat.jpg در پایگاه داده ذخیره کنید:

INSERT INTO photos (name, data)
VALUES ('cat.jpg', BYTEA('\xFF\xD8\xFF\xE0'));


نکات:

پایگاه داده PostgreSQL از نوع داده BLOB (Binary Large Object) نیز برای ذخیره داده‌های باینری پشتیبانی می‌کند. فرمت ورودی BLOB با bytea متفاوت است، اما توابع و عملگرهای مشابهی دارند.
می‌توانید از توابع و عملگرهای مختلفی برای کار با داده‌های bytea استفاده کنید، مانند LENGTH(), SUBSTRING() و COMPARE().

نتیجه:

نوع داده bytea یک ابزار قدرتمند برای ذخیره و مدیریت داده‌های باینری در PostgreSQL است. با استفاده از این نوع داده، می‌توانید انواع مختلف اطلاعات را به طور کارآمد و ایمن ذخیره کنید.

#PostgreSQL
@Code_Crafters
👍51
Forwarded from Microfrontend.ir
کاربرد Real Time Web در مصاحبه System Design

یکی از سوال های مهم در مصاحبه فنی برنامه نویسی و System Design یا طراحی سیستم بهره گیری از کاربرد Real Time Web است. در این ویدیو به بررسی انواع روش های پیاده سازی و کاربردهای آن در طراحی سیستم می‌پردازیم. راهکارهایی همچون وب سوکت، Short and long Polling، امکانات HTTP/2 و ویژگی مهم Server Sent Event مطرح و در ادامه پلی
لیست هرکدام را پیاده سازی میکنیم.

Link: https://youtu.be/6d3smYCV7XQ

playlist: https://www.youtube.com/playlist?list=PLJ9zDGwhhsBw0ej6VPfTtMdssjqcNoSt8

〰️〰️〰️〰️〰️〰️
@microfrontend_ir
4
Forwarded from Microfrontend.ir
پیاده سازی Short Polling برای وب

در این ویدیو به معرفی روش Short Polling برای پیاده سازی مکانیزم Real Time Web پرداختیم. ابتدا یک سرویس ساده وب را با جنگو نوشتیم که تغییرات قیمت را برگرداند سپس در سمت کلاینت با استفاده از یک چارت تغییرات را نمایش دادیم و سعی کردیم شیوه اتصال مجدد به سرور را بهینه تر کنیم.


link: https://youtu.be/5GymaQGTmHc

playlist: https://www.youtube.com/watch?v=6d3smYCV7XQ&list=PLJ9zDGwhhsBw0ej6VPfTtMdssjqcNoSt8

〰️〰️〰️〰️〰️〰️
©@microfrontend_ir
4
2025/07/12 16:50:21
Back to Top
HTML Embed Code: