✅معرفی پکیج Django-Hijack
بدون اینکه رمز کاربرهای سایت تون رو بدونید وارد اکانت شون بشید 😬
من نمیدونم کجا میتونه کاربرد مفیدی داشته باشه
https://github.com/django-hijack/django-hijack
بدون اینکه رمز کاربرهای سایت تون رو بدونید وارد اکانت شون بشید 😬
من نمیدونم کجا میتونه کاربرد مفیدی داشته باشه
https://github.com/django-hijack/django-hijack
🔥3🥱2👍1
Link4Help
کاملترین دوره آموزشی کار با فرم ها در #جنگو به زبان فارسی، این آموزش را از سایت دانشجویار تهیه کنید. در این دوره با موارد زیر آشنا می شویم: - آشنایی با توکن CSRF - شخصی سازی فیلدها با widget ها - آشنایی با متد is_valid و دیکشنری cleaned_data - استفاده از…
✅کاملترین دوره آموزشی کار با فرم ها در #جنگو به زبان فارسی
عجب اعتماد به نفسی داشتم 4 سال پیش 😂
یاد نموداره افتادم
دوره کار بر فرم ها در جنگو رو برای دانشجویار حدودا 4 سال پیش ساختم. امروز یه نگاهی بهش انداختم.
آموزش بدی نیست. فقط موندم چرا توی دمو اینقدر رسمی حرف زدم.
✔️این دوره رایگان نیست
عجب اعتماد به نفسی داشتم 4 سال پیش 😂
یاد نموداره افتادم
دوره کار بر فرم ها در جنگو رو برای دانشجویار حدودا 4 سال پیش ساختم. امروز یه نگاهی بهش انداختم.
آموزش بدی نیست. فقط موندم چرا توی دمو اینقدر رسمی حرف زدم.
✔️این دوره رایگان نیست
😁12
This media is not supported in your browser
VIEW IN TELEGRAM
✅نکته مهم
یادگیری بدون تمرین به درد نمیخوره
✔️هفته ای 8 تا دوره و کتاب ببینی و بخونی. وقتی تمرین نکنی، هیچی نمیشی 😂
انگار جنگولرن داره از جنگو فاصله میگیره 😡🤬
یادگیری بدون تمرین به درد نمیخوره
✔️هفته ای 8 تا دوره و کتاب ببینی و بخونی. وقتی تمرین نکنی، هیچی نمیشی 😂
انگار جنگولرن داره از جنگو فاصله میگیره 😡🤬
👍11
Forwarded from سید فرندز / برنامه نویسی / هک و امنیت / تکنولوژی (SeYeD.Dev)
اگر نمیدونید یک کامند دقیقا چیکار میکنه دقیقا ، میتونید توی این سایت واردش کنید و توضیح برای هر قسمتش دریافت کنید
explainshell.com
✅ @SEYED_BAX
explainshell.com
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤1
Forwarded from CodeCrafters (Mojtaba)
انتخاب محل ذخیره سازی تصاویر: فایل سیستم یا پایگاه داده؟
تصمیم گیری در مورد بهترین راه برای ذخیره سازی تصاویر بین Blob (Binary Large Object)در پایگاه داده و فایل سیستم (مانند S3) همیشه بحث برانگیز بوده.
پایگاه داده یا فایل سیستم؟ کدوم بهتره؟
اول از همه، بریم سراغ مزایای هر کدوم:
پایگاه داده:
اطمینان و یکپارچگی: پایگاه داده ها از قوانین ACID (اتمی بودن، سازگاری، انزوا، دوام) پیروی می کنن. یعنی داده ها همیشه کامل، درست و هماهنگ باقی می مونن. این به این معنیه که حتی اگه یه فایل از روی فایل سیستم پاک بشه، اطلاعات اون تو پایگاه داده محفوظه.
بکاپ گیری راحت: چون همه اطلاعات یکجا هستن، گرفتن بکاپ از پایگاه داده خیلی آسون تره.
جستجوی سریع: با زیاد شدن تعداد تصاویر، پایگاه داده ها نسبت به جستجو تو فایل سیستم سریع تر عمل می کنن.
حذف و آپدیت ساده تر: حذف و آپدیت فایل ها تو پایگاه داده خیلی راحت تره. دیگه نیازی نیست نگران پاک کردن دستی فایل از روی فایل سیستم هم باشید.
فایل سیستم (مانند S3):
حجم کم و هزینه مناسب: اگه تصاویر زیادی با کیفیت بالا دارید، ذخیره کردنشون تو پایگاه داده باعث میشه بکاپ هاتون خیلی سنگین بشن و هزینه تون بره بالا. در حالی که فایل سیستم ها این مشکل رو ندارن.
دسترسی مستقیم از CDN: با استفاده از CDN می تونید بدون نیاز به طی کردن لایه های برنامه و پایگاه داده، به فایل ها از هر جای دنیا دسترسی داشته باشید. این کار سرعت نمایش تصاویر رو هم بیشتر می کنه.
اشتراک گذاری راحت: اگه نیاز دارید تصاویر رو با افراد یا سرویس های دیگه به اشتراک بذارید، فایل سیستم ها این کار رو خیلی ساده تر می کنن.
سرعت بالا برای استریم: اگه برنامه شما به عملکرد بالایی برای استریم ویدیو یا تصاویر زنده نیاز داره، فایل سیستم ها گزینه مناسب تری هستن.
پس کدوم رو انتخاب کنیم؟
خب، بستگی به نیاز شما داره!
تصاویر کوچیک: اگه تصاویر شما حجم کمی دارن (مثلا چند صد کیلوبایت)، مثلا عکس پروفایل یا مدارک شناسایی، ذخیره کردنشون تو پایگاه داده منطقی تره.
تصاویر بزرگ و به اشتراک گذاری شده: اگه پلتفرمی دارید که کاربرا تصاویر بزرگی رو آپلود و به اشتراک میذارن، بهتره از فایل سیستم استفاده کنید.
آپدیت کم: اگه تصاویر زیاد آپدیت نمی شن و بیشتر جایگزین یا حذف می شن، نیازی به استفاده از ویژگی های ACID پایگاه داده ندارید و فایل سیستم گزینه بهتر و به صرفه تریه.
در نهایت...
هیچ راه حل کاملی وجود نداره و انتخاب بهترین روش به نیازهای شما بستگی داره.
#Database #General
@Code_Crafters
تصمیم گیری در مورد بهترین راه برای ذخیره سازی تصاویر بین 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 پیام بدید
تشکر
بخشی از آپدیت جدید دوره فروشگاه اینترنتی با جنگو.
این قسمت در مورد اینا صحبت شد:
✔️ توی این قسمت پیغام با موفقیت با خطا مواجه شد رو دیدیم😂
✔️ نکاتی در مورد JsonResponse یاد گرفتیم
✔️ با Ajax دارپ دان های استان شهرستان رو اوکی کردیم
✔️ با متد dumps آشنا شدیم
و...
لینک آپارات:
https://www.aparat.com/v/yULMG
هر انتقاد یا پیشنهادی به این قسمت دارید به @miladhzz پیام بدید
تشکر
❤4👍3😁1
Forwarded from 🧑💻PythonDev🧑💻
سلام دوستان امروز می خواهیم درباره ی dunder new صحبت کنیم ، dunder new یک special method (یک class method هم هست پس اولین مقدارش خود کلاسه)
در پایتون هست که در واقع سازنده اصلی نمونه ها از کلاس این متد هست :)
خیلی جاها شنیدیم کهconstructor ، dunder init هست ولی dunder init فقط یک initializer هست و در واقع constructor اصلی dunder new هست
جالبه بدونید که dunder new قبل از ساخته شدن کامل یک نمونه کلاس و حتی قبل از dunder init کال میشه :)
اگر می خواهیم dunder new رو برای خودمون تغییر بدیم باید حواسمون باشه که این کار رو انجام بدیم
خب حالا بریم حرفمون رو اثبات کنیم :
خب الان براتون سوال میشه که اصلا این dunder new به چکاری میاد؟ یا چجوری تونستیم که خود کلاس رو به کلاسی که ازش ارث برده بفرستیم در صورتی که هنوز خود کلاس ایجاد نشده !
خب بریم که به سوالات جواب بدیم :)
برای سوال اول بعضی موقع ها هست ما می خواهیم قدرت بیشتری رو در ساختن نمونه های کلاسمون رو داشته باشیم یا در واقع اصلا نگذاریم اون نمونه از کلاس تشکیل بشه
مثل این مثال :
البته این مثال برای طنز قضیه بود :)
خب حالا می رسیم به سوال دوم در پایتون متد type علاوه بر تشخیص یک شی وظیفه ایجاد کلاس رو هم داره (جالبه نه؟)
و موقعی که داریم خود کلاس رو وقتی ایجاد نشده به کلاسی که ازش ارث برده می فرستیم در واقع همون تایپ هست که این کار رو انجام میده
برای ایجاد یک کلاس با متد type اینگونه عمل می کنیم
خب دیدن چه با حال بود :) در قسمت اول اسم کلاس و در قسمت بعد یک تاپل هست که کلاس هایی که قراره ازشون ارث ببره
و در قسمت آخر هم یک دیکشنری هست که خصوصیات اون کلاس رو به همراه داره
به همین راحتی !
اگر مفید بود به اشتراک بگذارید :)
در پایتون هست که در واقع سازنده اصلی نمونه ها از کلاس این متد هست :)
خیلی جاها شنیدیم که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
Forwarded from محمد لرنینگ (آموزش برنامه نویسی)
.
لینک ویدیوی جلسه 3:
https://youtu.be/quxptvrXuEk
تو این ویدیو، با پایتون در مورد data casting, conditions and if statement, input و یکسری سوالات الگوریتمی صحبت کردیم
🔔 حتما حتما یوتیوب رو فالو کنید و ویدیو رو لایک کنید و نوتیف رو روشن بزارید 🫶
از طریق لینک زیر میتونید از دوره حمایت کنید:
https://reymit.ir/seyedbax
هرگونه سوالی دارید توی گروه تخصصیمون یا دیسکورد بپرسید :
https://discord.gg/seyedbax
https://t.me/QaDeveloper
تمرین این جلسه :
یک برنامه بنویسید که وزن یک کیسه برنج را به گرم دریافت کند و سپس آن را به کیلوگرم بدون رقم اعشار تبدیل کند و اگر وزن کیسه برنج کمتر از ۱۰ کیلوگرم بود بگه که این کیسه برنج کمتر از ده کیلو وزن داره و مقدار وزنی که کم داره رو به گرم بنویسه
✅ @SEYED_BAX | @MakeDeveloper
لینک ویدیوی جلسه 3:
https://youtu.be/quxptvrXuEk
تو این ویدیو، با پایتون در مورد data casting, conditions and if statement, input و یکسری سوالات الگوریتمی صحبت کردیم
از طریق لینک زیر میتونید از دوره حمایت کنید:
https://reymit.ir/seyedbax
هرگونه سوالی دارید توی گروه تخصصیمون یا دیسکورد بپرسید :
https://discord.gg/seyedbax
https://t.me/QaDeveloper
تمرین این جلسه :
یک برنامه بنویسید که وزن یک کیسه برنج را به گرم دریافت کند و سپس آن را به کیلوگرم بدون رقم اعشار تبدیل کند و اگر وزن کیسه برنج کمتر از ۱۰ کیلوگرم بود بگه که این کیسه برنج کمتر از ده کیلو وزن داره و مقدار وزنی که کم داره رو به گرم بنویسه
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤1
Media is too big
VIEW IN TELEGRAM
✅فیلم آموزش نحوه اتصال پروژه جنگو به درگاه پرداخت زرین پال
از آپارات Mojtaba_Ghahri
توی این ویدئو از سندباکس زرین پال استفاده میشه.
لینک آپارات:
https://www.aparat.com/v/HBhix
از آپارات Mojtaba_Ghahri
توی این ویدئو از سندباکس زرین پال استفاده میشه.
لینک آپارات:
https://www.aparat.com/v/HBhix
👏9👍6
✅معرفی پکیج az-iranian-bank-gateways
از گیت هاب علی زاهدی
✔️اتصال جنگو به درگاه بانک های مختلف
اتصال به بانک های ایرانی
درگاه پرداخت بانک ملی ایران،بانک سامان، بانک ملت، درگاه پرداخت زرین پال و ...
لینک github:
https://github.com/ali-zahedi/az-iranian-bank-gateways
از گیت هاب علی زاهدی
✔️اتصال جنگو به درگاه بانک های مختلف
اتصال به بانک های ایرانی
درگاه پرداخت بانک ملی ایران،بانک سامان، بانک ملت، درگاه پرداخت زرین پال و ...
لینک github:
https://github.com/ali-zahedi/az-iranian-bank-gateways
👍13❤2
✅شبیه ساز درگاه های بانکی ایران
بعد از بررسی ها و خوندن پرسش و پاسخ های دوستان توی گروه های جنگو
متوجه شدم که محیط 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
بعد از بررسی ها و خوندن پرسش و پاسخ های دوستان توی گروه های جنگو
متوجه شدم که محیط 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
👍6❤1🔥1😁1
Forwarded from CodeCrafters (Mojtaba)
باینری ها در PostgreSQL: ذخیره سازی اطلاعات خام
تصور کنید میخواهید عکسی از گربهتان را در PostgreSQL ذخیره کنید. چطور میتوانید این کار را انجام دهید؟
پایگاه داده PostgreSQL نوع دادهای به نام
تفاوت باینری و رشتههای کاراکتری:
* رشتههای باینری مانند "بایتهای خام" هستند و میتوانند هر نوع دادهای را ذخیره کنند، از جمله صفر و کاراکترهای غیرقابل چاپ.
* رشتههای کاراکتری برای ذخیره متن مناسب هستند و محدودیتهایی در مورد کاراکترهای مجاز دارند.
فرمتهای ذخیره سازی:
هگزادسیمال: هر بایت به عنوان دو رقم شانزدهگانی نمایش داده میشود (مثلاً "00" برای بایت صفر). این فرمت خوانایی بیشتری دارد.
نوع Escape: برخی از بایتها با کاراکترهای خاص علامتگذاری میشوند. این فرمت قدیمیتر است و کاربرد کمتری دارد.
کاربردها:
۱.ذخیره تصاویر، فایلهای صوتی و ویدئوها
۲.ذخیره دادههای باینری مانند کدهای برنامه
۳.ذخیره اطلاعات رمزنگاری شده
مثال:
فرض کنید میخواهید تصویر گربهتان را با نام
نکات:
پایگاه داده PostgreSQL از نوع داده
میتوانید از توابع و عملگرهای مختلفی برای کار با دادههای
نتیجه:
نوع داده
#PostgreSQL
@Code_Crafters
تصور کنید میخواهید عکسی از گربهتان را در 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
👍5❤1
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
یکی از سوال های مهم در مصاحبه فنی برنامه نویسی و 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
در این ویدیو به معرفی روش Short Polling برای پیاده سازی مکانیزم Real Time Web پرداختیم. ابتدا یک سرویس ساده وب را با جنگو نوشتیم که تغییرات قیمت را برگرداند سپس در سمت کلاینت با استفاده از یک چارت تغییرات را نمایش دادیم و سعی کردیم شیوه اتصال مجدد به سرور را بهینه تر کنیم.
link: https://youtu.be/5GymaQGTmHc
playlist: https://www.youtube.com/watch?v=6d3smYCV7XQ&list=PLJ9zDGwhhsBw0ej6VPfTtMdssjqcNoSt8
〰️〰️〰️〰️〰️〰️
©@microfrontend_ir
❤4
هر چی کلمه سفته توش باشه من بهش حساس میشم.
دلیلش رو میخوای بدونی اینو بخون (اتفاقی که برای خودم افتاده):
https://t.me/djangolearn_ir/96
دلیلش رو میخوای بدونی اینو بخون (اتفاقی که برای خودم افتاده):
https://t.me/djangolearn_ir/96
😁16👍4
جنگولرن
✅ بالاخره بریم برای مطالعه کتاب Fluent Python شاید با این کتاب یکم پایتون یاد بگیریم اگه نکته خاصی وجود داشت. توی کامنت های همین پست قرار میدم.
✅کتاب Fluent Python
کانال @pyHints آموزش با این کتاب رو شروع کرده
✔️فقط سوالات رو پاسخ میده. لذا خودتون کتاب رو بخونید. و توی این جلسات آنلاین ابهامی اگه دارید بپرسید.
لینک قسمت صفر:
https://youtu.be/Jc5TrKIxybQ
کانال @pyHints آموزش با این کتاب رو شروع کرده
✔️فقط سوالات رو پاسخ میده. لذا خودتون کتاب رو بخونید. و توی این جلسات آنلاین ابهامی اگه دارید بپرسید.
لینک قسمت صفر:
https://youtu.be/Jc5TrKIxybQ
👍5
جنگولرن
✅ رشد ارگانیک کانال جنگولرن امیدوارم که مطالب کانال برای دوستان مفید باشه 😊 البته گاهی اوقات پیش اومده که پستی رو فوروارد میکنم برای گروه django2
✅ادامه رشد ارگانیک کانال جنگولرن - 3K
ان شاالله یکم سرم خلوت بشه مطالب تخصصی بیشتری در مورد جنگو پست می کنم.
ان شاالله یکم سرم خلوت بشه مطالب تخصصی بیشتری در مورد جنگو پست می کنم.
👏15❤5🔥3👍1👎1
Forwarded from Python BackendHub (Mani)
سوال پرسیدن که این پکیج چیه اصلا و کارش چیه. اولا باید بگم اگه onboarding guide اش رو بخونید خیلی راحته استفاده ازش. تو ۱ دقیقه میتونید بالا بیارین و شروع به استفاده کنید. بدون اینکه چیزی رو بخواین هاست کنید.
اول بذارین توضیح بدم observation یعنی چی. ما توی devops دو آپریشن داریم که شبیه همن و گاها باهم اشتباه گرفته میشن. اولیش مانتورینگه. مانیتورینگ به پروسه ای میگن که دیتا کالکت میشه از سرویسی, و یک ریپورت از سلامت سرویس بر اساس metric های مشخصی که برای سلامت سیستم رو نشون میدن و کالکت شدن ساخته میشه. یعنی چی؟ مثلا تعداد ریسپانس های 5xx در ۲۴ ساعت گذشته. یکی از شناخته شده ترین ابزار برای اینکار prometheus هست. observability به پروسه ای میگن که رویکرد تحقیقاتی داره. یعنی دنبال این نیست که بگه چقدر ریسپانس 5xx وجود داره. دنبال دلیل وجود این ریسپانس هاست. چرا الان این درخواست تو پروداکشن ارور ۵۰۰ میده؟ خوندن کل لاگ سرویس قدیمی ترین و ابتدایی ترین راهکار بود.
وقتی بک اند پیچیده تر شد, دیگه خوندن لاگ واقعا کارساز نبود. شما فکر کنید در لحظه ۱۰۰ درخواست داره میاد براتون. چطور میخواین لاگ هارو بخونید؟ تو قدم بعدی لاگ های هر درخواست رو جدا کردن. ولی بازم کار ساز نبود تو دنیای distributed system. چون مثلا یک سرویس ۱ با سرویس ۲ داشت حرف میزد. ورودی که میداد بهش درست نبود. سرویس ۱ صرفا یک exception میگرفت که سرویس ۲ استتوس ۵۰۰ داده. و این کافی نبود برای اینکه متوجه شیم چه اتفاقی میفته.
سولوشن های زیادی اومدن تو مارکت. از قبیل sentry که شاید اسمشو شنیده باشین. یا datadog و لوکی و ... . اینقدر این سولوشن ها زیاد شدن و هر کدوم ساز خودشون رو میزدن. نمیشد راحت از این سولوشن سوییچ کرد به اون یکی. نمیشد مزایا دو سولوشن رو همزمان داشت. و learning curve سختی داشت اگه میخواستین سوییچ کنید از یکی به یکی دیگه.
اینجا بود که CNCF (Cloud native compute foundation) یک پروژه جدید رو استارت زد. همون فاندیشنی که کوبر و prometheus و خیلی ابزار های تحت کلاد رو ساخته. اومد یک پروتکلی ساخت به اسم opentelemetry.
یعنی چی پروتکل؟ یعنی گفت sentry جان من برام مهم نیست شما لاگ رو چطور ذخیره میکنی یا پردازش میکنی اینترنالی. شما باید span داشته باشی. metric داشته باشی. و trace. و دقیقا تعریف کرد که اینا چین. یعنی اومد گفت اینترفیس خارجی یک سیستم observability چطور باید باشه؟ چون در نهایت همه این سیستما شبیه هم بودن. و حالا چون همشون داشتن از یک پروتکل خاصی پیروی میکردن شما میتونستی راحت از سولوشن یک سوییچ کنی به سولوشن دو. مثلا شاید مثالشو دیده باشین که تو سیستم فایل استوریج بعضی استوریجا s3 compatible هستن. اینم دقیقا شبیه همونه.
استک observation به دو قسمت تقسیم میشه. یکی میشه exporter و یکی میشه داشبورد. exporter معمولا یک لایبریه که شما نصب میکنی. و باهاش اون دیتایی که میخوای export میکنی. و میگی دیتا رو کجا بفرسته.(یک وقتام برعکسه, سرور داره دیتا رو میگیره). قسمت دوم میشه اینترنال اون استک. مثلا دیتایی که فرستاده میشه تو چه دیتابیسی ذخیره میشه؟ چطوری پردازش میشه؟ چی به شما نمایش داده میشه؟من بهش میگم داشبورد.
خوده opentelemetry داشبورد خاصی نداره. صرفا یک سری exporter تو زبون های مختلف داره که میتونید تو گیتهابش ببینید. مثلا برای fastapi و جنگو لایبری داره. ولی پیاده سازی و داشبوردی نداره برای نشون دادن این اطلاعات. چون همونطور که گفتم در نهایت فقط یک پروتکل و specification هست. از طرفی سولوشن های داشبورد زیاده.یک سرچ کنید میرسید بهش. مثلا من خودم signoz استفاده میکنم.
خب همه اینارو گفتم. حالا نقش logfire این وسط چیه؟ logfire همون لایبری های اکسپورتر opentelemetry رو اینترفیسشو بهتر کرده. و با pydantic هم اینتگریتشون کرده. و یکم utilty اضافه کرده. این قسمت exporter اش هست که اوپن سورسه.
یک قسمت داشبورد هم داره که هنوز اوپن سورس نشده. و مشخص نیست که بشه یا نه. ولی فعلا رایگانه.
اینجا قشنگ صفر تا صد توضیح داده. بعد توضیح های من حالا خیلی بهتر متوجه میشین.
@PyBackendHub
اول بذارین توضیح بدم observation یعنی چی. ما توی devops دو آپریشن داریم که شبیه همن و گاها باهم اشتباه گرفته میشن. اولیش مانتورینگه. مانیتورینگ به پروسه ای میگن که دیتا کالکت میشه از سرویسی, و یک ریپورت از سلامت سرویس بر اساس metric های مشخصی که برای سلامت سیستم رو نشون میدن و کالکت شدن ساخته میشه. یعنی چی؟ مثلا تعداد ریسپانس های 5xx در ۲۴ ساعت گذشته. یکی از شناخته شده ترین ابزار برای اینکار prometheus هست. observability به پروسه ای میگن که رویکرد تحقیقاتی داره. یعنی دنبال این نیست که بگه چقدر ریسپانس 5xx وجود داره. دنبال دلیل وجود این ریسپانس هاست. چرا الان این درخواست تو پروداکشن ارور ۵۰۰ میده؟ خوندن کل لاگ سرویس قدیمی ترین و ابتدایی ترین راهکار بود.
وقتی بک اند پیچیده تر شد, دیگه خوندن لاگ واقعا کارساز نبود. شما فکر کنید در لحظه ۱۰۰ درخواست داره میاد براتون. چطور میخواین لاگ هارو بخونید؟ تو قدم بعدی لاگ های هر درخواست رو جدا کردن. ولی بازم کار ساز نبود تو دنیای distributed system. چون مثلا یک سرویس ۱ با سرویس ۲ داشت حرف میزد. ورودی که میداد بهش درست نبود. سرویس ۱ صرفا یک exception میگرفت که سرویس ۲ استتوس ۵۰۰ داده. و این کافی نبود برای اینکه متوجه شیم چه اتفاقی میفته.
سولوشن های زیادی اومدن تو مارکت. از قبیل sentry که شاید اسمشو شنیده باشین. یا datadog و لوکی و ... . اینقدر این سولوشن ها زیاد شدن و هر کدوم ساز خودشون رو میزدن. نمیشد راحت از این سولوشن سوییچ کرد به اون یکی. نمیشد مزایا دو سولوشن رو همزمان داشت. و learning curve سختی داشت اگه میخواستین سوییچ کنید از یکی به یکی دیگه.
اینجا بود که CNCF (Cloud native compute foundation) یک پروژه جدید رو استارت زد. همون فاندیشنی که کوبر و prometheus و خیلی ابزار های تحت کلاد رو ساخته. اومد یک پروتکلی ساخت به اسم opentelemetry.
یعنی چی پروتکل؟ یعنی گفت sentry جان من برام مهم نیست شما لاگ رو چطور ذخیره میکنی یا پردازش میکنی اینترنالی. شما باید span داشته باشی. metric داشته باشی. و trace. و دقیقا تعریف کرد که اینا چین. یعنی اومد گفت اینترفیس خارجی یک سیستم observability چطور باید باشه؟ چون در نهایت همه این سیستما شبیه هم بودن. و حالا چون همشون داشتن از یک پروتکل خاصی پیروی میکردن شما میتونستی راحت از سولوشن یک سوییچ کنی به سولوشن دو. مثلا شاید مثالشو دیده باشین که تو سیستم فایل استوریج بعضی استوریجا s3 compatible هستن. اینم دقیقا شبیه همونه.
استک observation به دو قسمت تقسیم میشه. یکی میشه exporter و یکی میشه داشبورد. exporter معمولا یک لایبریه که شما نصب میکنی. و باهاش اون دیتایی که میخوای export میکنی. و میگی دیتا رو کجا بفرسته.(یک وقتام برعکسه, سرور داره دیتا رو میگیره). قسمت دوم میشه اینترنال اون استک. مثلا دیتایی که فرستاده میشه تو چه دیتابیسی ذخیره میشه؟ چطوری پردازش میشه؟ چی به شما نمایش داده میشه؟من بهش میگم داشبورد.
خوده opentelemetry داشبورد خاصی نداره. صرفا یک سری exporter تو زبون های مختلف داره که میتونید تو گیتهابش ببینید. مثلا برای fastapi و جنگو لایبری داره. ولی پیاده سازی و داشبوردی نداره برای نشون دادن این اطلاعات. چون همونطور که گفتم در نهایت فقط یک پروتکل و specification هست. از طرفی سولوشن های داشبورد زیاده.یک سرچ کنید میرسید بهش. مثلا من خودم signoz استفاده میکنم.
خب همه اینارو گفتم. حالا نقش logfire این وسط چیه؟ logfire همون لایبری های اکسپورتر opentelemetry رو اینترفیسشو بهتر کرده. و با pydantic هم اینتگریتشون کرده. و یکم utilty اضافه کرده. این قسمت exporter اش هست که اوپن سورسه.
یک قسمت داشبورد هم داره که هنوز اوپن سورس نشده. و مشخص نیست که بشه یا نه. ولی فعلا رایگانه.
اینجا قشنگ صفر تا صد توضیح داده. بعد توضیح های من حالا خیلی بهتر متوجه میشین.
@PyBackendHub
👍2
Python BackendHub
سوال پرسیدن که این پکیج چیه اصلا و کارش چیه. اولا باید بگم اگه onboarding guide اش رو بخونید خیلی راحته استفاده ازش. تو ۱ دقیقه میتونید بالا بیارین و شروع به استفاده کنید. بدون اینکه چیزی رو بخواین هاست کنید. اول بذارین توضیح بدم observation یعنی چی. ما…
✅این پست شاید به جنگو ارتباط مستقیمی نداشته باشه و نصفه نیمه فورواردش کردم
✔️اما با خوندنش با بعضی چالش هایی که ممکنه در آینده باهاش مواجه بشید آشنا میشید
✔️برنامه نویسی فقط کد زدن نیست🤓
✔️اما با خوندنش با بعضی چالش هایی که ممکنه در آینده باهاش مواجه بشید آشنا میشید
✔️برنامه نویسی فقط کد زدن نیست🤓
👍9