Forwarded from Ninja Learn | نینجا لرن
💎 استفاده از PostgreSQL با Django 💎
امروز میخوایم درباره PostgreSQL و اینکه چرا این دیتابیس رابطهای با Django فوقالعاده مچ میشه، صحبت کنیم. همچنین چندتا از فیچرهای خاصی که جنگو برای این دیتابیس داره رو معرفی میکنیم
چرا PostgreSQL؟ 🤔
خب PostgreSQL یه دیتابیس رابطهای قدرتمنده که خیلیها بهش میگن "Postgres". این دیتابیس اوپن سورس، خیلی خوب با Django هماهنگ میشه و خیلی امکانات و قابلیتهای پیشرفتهای رو ارائه میده که وقتی با جنگو کار میکنی حسابی به درد میخوره. از جمله پشتیبانی از JSONB، قفلهای پیچیده، پارتیشنبندی دادهها و ... 😍
چطوری از PostgreSQL توی Django استفاده کنیم؟ 🛠️
1⃣ اول از همه، باید مطمئن شی که PostgreSQL رو نصب داری.
2⃣ بعدش توی پروژه جنگویی، توی فایل settings.py باید دیتابیس رو به Postgres وصل کنی. یه همچین چیزی:
فیچرهای خاص Django برای PostgreSQL 📦
1⃣ مدلهای JSONField 📄
با استفاده از Postgres توی Django، میتونی از فیلد JSONField استفاده کنی. این فیلد بهت اجازه میده که دادههای JSON رو بهراحتی توی دیتابیس ذخیره کنی و بعداً کوئریهای خفن روشون بزنی! دیگه نیازی نیست همیشه ساختار دادهت فقط رابطهای باشه.
2⃣ فیلد ArrayField 🔢
اگه یه لیست یا آرایه داری و میخوای اون رو مستقیم توی دیتابیس ذخیره کنی، ArrayField بهترین انتخابه. با این فیلد، میتونی یه لیست از مقادیر (مثلاً یه سری عدد یا استرینگ) رو توی یه ستون ذخیره کنی.
خب HStore یه قابلیت خاص توی Postgresه که بهت اجازه میده دادههای کلید-مقدار (key-value) رو توی دیتابیس ذخیره کنی. Django از این فیلد پشتیبانی میکنه و باهاش میتونی دادههایی شبیه به دیکشنری رو ذخیره کنی.
این فیلد بهت اجازه میده که رِنجها رو توی دیتابیس ذخیره کنی. مثلاً میخوای یه بازه تاریخی یا عددی رو نگهداری، این فیلد دقیقاً به درد همون کار میخوره.
خب Postgres قابلیت جستجوی متنی پیشرفته داره و Django هم از این قابلیت پشتیبانی میکنه. با استفاده از این فیچر میتونی بهصورت سریع و بهینه توی متنها جستجو کنی.
استفاده از PostgreSQL توی Django یه انتخاب خیلی خوبه، چون هم دیتابیس قویایه و هم فیچرهای اختصاصی زیادی برای جنگو داره که میتونه کارتو سریعتر و راحتتر کنه. از ذخیره JSON گرفته تا جستجوی متنی، Postgres و Django یه ترکیب طلایین
امیدوارم مفید بوده باشه :)
@ninja_learn_ir
امروز میخوایم درباره PostgreSQL و اینکه چرا این دیتابیس رابطهای با Django فوقالعاده مچ میشه، صحبت کنیم. همچنین چندتا از فیچرهای خاصی که جنگو برای این دیتابیس داره رو معرفی میکنیم
چرا PostgreSQL؟ 🤔
خب PostgreSQL یه دیتابیس رابطهای قدرتمنده که خیلیها بهش میگن "Postgres". این دیتابیس اوپن سورس، خیلی خوب با Django هماهنگ میشه و خیلی امکانات و قابلیتهای پیشرفتهای رو ارائه میده که وقتی با جنگو کار میکنی حسابی به درد میخوره. از جمله پشتیبانی از JSONB، قفلهای پیچیده، پارتیشنبندی دادهها و ... 😍
چطوری از PostgreSQL توی Django استفاده کنیم؟ 🛠️
1⃣ اول از همه، باید مطمئن شی که PostgreSQL رو نصب داری.
2⃣ بعدش توی پروژه جنگویی، توی فایل settings.py باید دیتابیس رو به Postgres وصل کنی. یه همچین چیزی:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'your_db_name',
'USER': 'your_db_user',
'PASSWORD': 'your_db_password',
'HOST': 'localhost',
'PORT': '5432',
}
}
حالا میتونی از قابلیتهای خفن Postgres استفاده کنی و دیتابیس پروژهت رو به یه سطح بالاتر ببری! 🚀فیچرهای خاص Django برای PostgreSQL 📦
1⃣ مدلهای JSONField 📄
با استفاده از Postgres توی Django، میتونی از فیلد JSONField استفاده کنی. این فیلد بهت اجازه میده که دادههای JSON رو بهراحتی توی دیتابیس ذخیره کنی و بعداً کوئریهای خفن روشون بزنی! دیگه نیازی نیست همیشه ساختار دادهت فقط رابطهای باشه.
from django.db import models
class MyModel(models.Model):
data = models.JSONField()
2⃣ فیلد ArrayField 🔢
اگه یه لیست یا آرایه داری و میخوای اون رو مستقیم توی دیتابیس ذخیره کنی، ArrayField بهترین انتخابه. با این فیلد، میتونی یه لیست از مقادیر (مثلاً یه سری عدد یا استرینگ) رو توی یه ستون ذخیره کنی.
from django.contrib.postgres.fields import ArrayField3⃣ فیلد HStore 🗂️
from django.db import models
class MyModel(models.Model):
tags = ArrayField(models.CharField(max_length=100), blank=True)
خب HStore یه قابلیت خاص توی Postgresه که بهت اجازه میده دادههای کلید-مقدار (key-value) رو توی دیتابیس ذخیره کنی. Django از این فیلد پشتیبانی میکنه و باهاش میتونی دادههایی شبیه به دیکشنری رو ذخیره کنی.
from django.contrib.postgres.fields import HStoreField4⃣ فیلد Range 📏
from django.db import models
class MyModel(models.Model):
attributes = HStoreField()
این فیلد بهت اجازه میده که رِنجها رو توی دیتابیس ذخیره کنی. مثلاً میخوای یه بازه تاریخی یا عددی رو نگهداری، این فیلد دقیقاً به درد همون کار میخوره.
from django.contrib.postgres.fields import DateRangeField5⃣ و در اخر Full-Text Search 🔍
from django.db import models
class MyModel(models.Model):
date_range = DateRangeField()
خب Postgres قابلیت جستجوی متنی پیشرفته داره و Django هم از این قابلیت پشتیبانی میکنه. با استفاده از این فیچر میتونی بهصورت سریع و بهینه توی متنها جستجو کنی.
from django.contrib.postgres.search import SearchVectorجمعبندی 🎯
from .models import MyModel
MyModel.objects.annotate(search=SearchVector('title', 'description')).filter(search='keyword')
استفاده از PostgreSQL توی Django یه انتخاب خیلی خوبه، چون هم دیتابیس قویایه و هم فیچرهای اختصاصی زیادی برای جنگو داره که میتونه کارتو سریعتر و راحتتر کنه. از ذخیره JSON گرفته تا جستجوی متنی، Postgres و Django یه ترکیب طلایین
#django #postgressql #postgres
Forwarded from کانال مهرداد لینوکس (Mehrdad Linux)
This media is not supported in your browser
VIEW IN TELEGRAM
اینبار JavaScript روی ژوپیتر لب (Jupyterlab)
✅ میدانیم Jupyterlab یک IDE تعاملی مبتنی بر وب، با امکانات خاص برای اجرای کدهای پایتونی است
🔥نظرتون در مورد اجرای جاوااسکریپت (JavaScript) و TypeScript با Deno APIs روی کرنل Jupyterlab چیه؟ 😎 اینجا
اکستنشن Vscode هم داره
🗓 چطوری ؟
اول Deno را نصب کن
حالا Jupyter Kernel for Deno را نصب کن
برای من unstable کار نکرد و همینجوری نصب شد پس حالشو ببرید
حالا Jupyter و کرنل Deno را اجرا کنید بوووم 😍
⁉️ سوالی داشتید در بخش کامنت ها بپرسید 😎
✅ میدانیم Jupyterlab یک IDE تعاملی مبتنی بر وب، با امکانات خاص برای اجرای کدهای پایتونی است
🔥نظرتون در مورد اجرای جاوااسکریپت (JavaScript) و TypeScript با Deno APIs روی کرنل Jupyterlab چیه؟ 😎 اینجا
اکستنشن Vscode هم داره
🗓 چطوری ؟
اول Deno را نصب کن
curl -fsSL https://deno.land/install.sh | sh
حالا Jupyter Kernel for Deno را نصب کن
deno jupyter --install
برای من unstable کار نکرد و همینجوری نصب شد پس حالشو ببرید
حالا Jupyter و کرنل Deno را اجرا کنید بوووم 😍
⁉️ سوالی داشتید در بخش کامنت ها بپرسید 😎
Forwarded from Linuxor ?
اگه نمیتونید یه سیستم بزرگ رو پیاده کنید و وسطش هی گیر میکنه و پیش نمیره این پترن ساده رو استفاده کنید.
تایمی که قراره بزارید برای پروژتون رو نصف کنید و نصفش اولش رو شروع کنید با راحت ترین و احتمالا بد ترین ابزار و ماژول های ممکن پروژه رو پیش ببرید، اصلا مهم نیست اون ابزار و ماژوله چقدر بده فقط کار کنه حله.
و توی نیمه دوم تایمتون شروع کنید به Refactoring و اصلاح اون ابزار ها و ماژول های بد با نسخه بهترش، اینطوری دیگه پروژتون همیشه در حال توسعس و احتمال اینکه پیش بره خیلی بالا تره اون پروژه بدی هم که ساختین هم بهش میگن MVP نگران نباشین کم کم درست میشه.
🐧 @Linuxor
تایمی که قراره بزارید برای پروژتون رو نصف کنید و نصفش اولش رو شروع کنید با راحت ترین و احتمالا بد ترین ابزار و ماژول های ممکن پروژه رو پیش ببرید، اصلا مهم نیست اون ابزار و ماژوله چقدر بده فقط کار کنه حله.
و توی نیمه دوم تایمتون شروع کنید به Refactoring و اصلاح اون ابزار ها و ماژول های بد با نسخه بهترش، اینطوری دیگه پروژتون همیشه در حال توسعس و احتمال اینکه پیش بره خیلی بالا تره اون پروژه بدی هم که ساختین هم بهش میگن MVP نگران نباشین کم کم درست میشه.
🐧 @Linuxor
Forwarded from Gopher Academy
🔵 عنوان مقاله
Revive 1.4: A Faster, Configurable, Flexible Linter for Go
🟢 خلاصه مقاله:
این مقاله درباره ابزاری به نام "golint"، یک ابزار استاندارد برای تجزیه و تحلیل کد در زبان برنامهنویسی Go است که بحثی برای جایگزینی آن با نسخه بهبود یافتهای انجام شده است. جایگزین پیشنهادی قصد دارد ساختار، امکان پیکربندی و عملکرد بهتری نسبت به نسخه اصلی ارائه دهد. این ابزار جدید توسط بسیاری از پروژهها و کتابخانههای بزرگ Go مورد استفاده قرار گرفته و در مخزنی در GitHub قابل دسترسی است. این تغییر از نسخه اصلی golint به نسخه جدید، بر اساس نیازهای کاربرانی که به دنبال افزایش بازده و قابلیتهای بیشتر هستند، انجام شده است. این ابزار جدید به کاربران امکان میدهد تا با استفاده از گزینههای پیکربندی دقیقتر، کنترل بیشتری بر تجزیه و تحلیل کد خود داشته باشند.
🟣لینک مقاله:
https://golangweekly.com/link/160160/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Revive 1.4: A Faster, Configurable, Flexible Linter for Go
🟢 خلاصه مقاله:
این مقاله درباره ابزاری به نام "golint"، یک ابزار استاندارد برای تجزیه و تحلیل کد در زبان برنامهنویسی Go است که بحثی برای جایگزینی آن با نسخه بهبود یافتهای انجام شده است. جایگزین پیشنهادی قصد دارد ساختار، امکان پیکربندی و عملکرد بهتری نسبت به نسخه اصلی ارائه دهد. این ابزار جدید توسط بسیاری از پروژهها و کتابخانههای بزرگ Go مورد استفاده قرار گرفته و در مخزنی در GitHub قابل دسترسی است. این تغییر از نسخه اصلی golint به نسخه جدید، بر اساس نیازهای کاربرانی که به دنبال افزایش بازده و قابلیتهای بیشتر هستند، انجام شده است. این ابزار جدید به کاربران امکان میدهد تا با استفاده از گزینههای پیکربندی دقیقتر، کنترل بیشتری بر تجزیه و تحلیل کد خود داشته باشند.
🟣لینک مقاله:
https://golangweekly.com/link/160160/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
revive.run
revive - fast & configurable linter for Go
Revive documentation website
Forwarded from DevTwitter | توییت برنامه نویسی
بچهها اگه میخواید یه مدرک رایگان راجع به Generative AI و LLM Agents از دانشگاه Berkeley بگیرید این دورهای که دارن برگزار میکنن رو شرکت کنید. فیلماش ضبط میشه رو یوتیوب میذارن.واسه هر جلسه یه آزمون داره، همهرو تموم کنید مدرکش رو میدن بهتون.
https://llmagents-learning.org/f24
@DevTwitter
https://llmagents-learning.org/f24
@DevTwitter
Forwarded from Python Hints
#برگام
از گلوبالیست احمقتر توی دنیا
فقط بسیجی میتونه باشه تو ایران
طرف رفته توی پلتفرم
یاد اون کلیپ افتادم که میگفت :
تو خود خری، اصن خر بودن رو از روی تو ساختن.
از گلوبالیست احمقتر توی دنیا
فقط بسیجی میتونه باشه تو ایران
طرف رفته توی پلتفرم
X که مال خود Elon musk هست، هشتگ راه انداخته با موضوع blockelon بعد خود خرش رفته پول داده به پلتفرم X که بهش تیک آبی بده.یاد اون کلیپ افتادم که میگفت :
تو خود خری، اصن خر بودن رو از روی تو ساختن.
Forwarded from 🎄 یک برنامه نویس تنبل (Raymond Dev)
🔶 هیچ وقت به یک پلاگین اعتماد ۱۰۰ درصد نداشته باشید !
امروز وردپرس WP Engine رو بلاک کرد ! حالا این WP Engine چی هستش ، همون شرکتی که پلاگین محبوب ACF رو ساخته . خلاصه وردپرس اومده اکانتشونو بسته و کاربرای ACF فعلاً نمیتونن آپدیت بگیرن.
ظاهراً WP Engine اقداماتی رو سرورش کرده که به مذاق وردپرس خوش نیومده و کار اصلی این بوده که اومده یه سری از فانکشنهای اصلی وردپرس رو از کار انداخته و فانکشنهای خودشو جاش گذاشته. وردپرس هم تو بلاگش نوشته اجازه تغییر هسته وردپرس رو ندارید و فعلا بلاک هستید .
به همین علت هیچ وقت به یک پلاگین اعتماد ۱۰۰ درصد نداشته باشید چرا که همیشه وابسته به پلاگین هستید و در همچین شرایطی سایتتون به خطر می افتد بهترین راه نوشتن امکاناتی هست که نیاز دارید به وب سایتتون اضافه بشه .
</Mohammad Mahdi>
#وردپرس
@TheRaymondDev
امروز وردپرس WP Engine رو بلاک کرد ! حالا این WP Engine چی هستش ، همون شرکتی که پلاگین محبوب ACF رو ساخته . خلاصه وردپرس اومده اکانتشونو بسته و کاربرای ACF فعلاً نمیتونن آپدیت بگیرن.
ظاهراً WP Engine اقداماتی رو سرورش کرده که به مذاق وردپرس خوش نیومده و کار اصلی این بوده که اومده یه سری از فانکشنهای اصلی وردپرس رو از کار انداخته و فانکشنهای خودشو جاش گذاشته. وردپرس هم تو بلاگش نوشته اجازه تغییر هسته وردپرس رو ندارید و فعلا بلاک هستید .
به همین علت هیچ وقت به یک پلاگین اعتماد ۱۰۰ درصد نداشته باشید چرا که همیشه وابسته به پلاگین هستید و در همچین شرایطی سایتتون به خطر می افتد بهترین راه نوشتن امکاناتی هست که نیاز دارید به وب سایتتون اضافه بشه .
</Mohammad Mahdi>
#وردپرس
@TheRaymondDev
Linkedin
Mohammad Mahdi on LinkedIn: هیچ وقت به یک پلاگین اعتماد ۱۰۰ درصد نداشته باشید !
امروز وردپرس WP Engine…
امروز وردپرس WP Engine…
هیچ وقت به یک پلاگین اعتماد ۱۰۰ درصد نداشته باشید !
امروز وردپرس WP Engine رو بلاک کرد ! حالا این WP Engine چی هستش ، همون شرکتی که پلاگین محبوب ACF رو ساخته .…
امروز وردپرس WP Engine رو بلاک کرد ! حالا این WP Engine چی هستش ، همون شرکتی که پلاگین محبوب ACF رو ساخته .…
Forwarded from Code Module | کد ماژول (𔓙)
سیستمی قدرتمند به نام Strapi ⚔
Strapi یک سیستم مدیریت محتوا (CMS) اوپن سورسه که به زبان JavaScript و با استفاده از Node.js توسعه یافته. این سیستم بهتون این امکان رو میده که به سرعت APIهای قدرتمند رو ایجاد، و محتوا رو مدیریت کنید.
برخی از ویژگیهای برجسته Strapi
📍قابلیت ساخت و مدیریت APIهای REST و GraphQL: Strapi به شما اجازه میده تا به راحتی APIهای RESTful و GraphQL بسازید و مدیریت کنید. این امکان به دولوپرا این اجازه رو میده تا دادههای خودشون رو به شکل دلخواه در اختیار کلاینتها قرار بدن.
📍مدیریت محتوا از طریق داشبورد کاربرپسند: Strapi دارای یک رابط کاربری مدیریت محتوا هست که به شما اجازه میده تا به سادگی مدلهای دادهای خودتون رو تعریف کنید، مدیریت کنید و نقشهای کاربری و مجوزها رو تنظیم کنید.
📍سفارشیسازی بالا و توسعهپذیری: به دلیل اینکه Strapi با استفاده از Node.js ساخته شده، شما میتونید به راحتی کد پایه اون رو تغییر بدید و با افزودن پلاگینها و توسعههای سفارشی، CMS خودتون شخصیسازی کنید.
📍پشتیبانی از دیتابیسهای مختلف: Strapi از چندین دیتابیس مثل SQLite، MySQL، PostgreSQL و MongoDB پشتیبانی میکنه. این انعطافپذیری به شما اجازه میده تا با توجه به نیازهای پروژتون، دیتابیس مناسب رو انتخاب کنید.
📍امنیت و احراز هویت: Strapi دارای مکانیزمهای امنیتی پیشرفتهایه که شامل JWT (JSON Web Tokens)، RBAC (Role-Based Access Control) و پشتیبانی از OAuth و Passport.js برای احراز هویت هست.
📍مدیریت فایل: Strapi امکاناتی برای آپلود و مدیریت فایلها و تصاویر داره که میتونه اون هارو در منابع مختلف مانند AWS S3، Cloudinary و غیره ذخیره کرد.
در مجموع، Strapi یک ابزار قدرتمند و منعطف برای مدیریت محتوا و ساخت APIها هست، که میتونه به دولوپرا کمک کنه تا پروژههای خودشون رو سریعتر و با کیفیتتر به پیش ببرن. برای اطلاعات بیشتر میتونید به داکیومنتش مراجعه کنید.
🔗 Document
#strapi
@CodeModule
Strapi یک سیستم مدیریت محتوا (CMS) اوپن سورسه که به زبان JavaScript و با استفاده از Node.js توسعه یافته. این سیستم بهتون این امکان رو میده که به سرعت APIهای قدرتمند رو ایجاد، و محتوا رو مدیریت کنید.
برخی از ویژگیهای برجسته Strapi
📍قابلیت ساخت و مدیریت APIهای REST و GraphQL: Strapi به شما اجازه میده تا به راحتی APIهای RESTful و GraphQL بسازید و مدیریت کنید. این امکان به دولوپرا این اجازه رو میده تا دادههای خودشون رو به شکل دلخواه در اختیار کلاینتها قرار بدن.
📍مدیریت محتوا از طریق داشبورد کاربرپسند: Strapi دارای یک رابط کاربری مدیریت محتوا هست که به شما اجازه میده تا به سادگی مدلهای دادهای خودتون رو تعریف کنید، مدیریت کنید و نقشهای کاربری و مجوزها رو تنظیم کنید.
📍سفارشیسازی بالا و توسعهپذیری: به دلیل اینکه Strapi با استفاده از Node.js ساخته شده، شما میتونید به راحتی کد پایه اون رو تغییر بدید و با افزودن پلاگینها و توسعههای سفارشی، CMS خودتون شخصیسازی کنید.
📍پشتیبانی از دیتابیسهای مختلف: Strapi از چندین دیتابیس مثل SQLite، MySQL، PostgreSQL و MongoDB پشتیبانی میکنه. این انعطافپذیری به شما اجازه میده تا با توجه به نیازهای پروژتون، دیتابیس مناسب رو انتخاب کنید.
📍امنیت و احراز هویت: Strapi دارای مکانیزمهای امنیتی پیشرفتهایه که شامل JWT (JSON Web Tokens)، RBAC (Role-Based Access Control) و پشتیبانی از OAuth و Passport.js برای احراز هویت هست.
📍مدیریت فایل: Strapi امکاناتی برای آپلود و مدیریت فایلها و تصاویر داره که میتونه اون هارو در منابع مختلف مانند AWS S3، Cloudinary و غیره ذخیره کرد.
در مجموع، Strapi یک ابزار قدرتمند و منعطف برای مدیریت محتوا و ساخت APIها هست، که میتونه به دولوپرا کمک کنه تا پروژههای خودشون رو سریعتر و با کیفیتتر به پیش ببرن. برای اطلاعات بیشتر میتونید به داکیومنتش مراجعه کنید.
🔗 Document
#strapi
@CodeModule
Forwarded from 🎄 یک برنامه نویس تنبل ( MΞ)
🔸هیچ کودوم از اکانتایی که با این ربات اتومات بصورت ۲۴ساعته و بمدت ۳ماه claim شدن نه بن شدن نه کارت تقلب گرفتن
https://github.com/maanimis/hamsterBOT
@TheRaymondDev
https://github.com/maanimis/hamsterBOT
@TheRaymondDev
Forwarded from Laravel News
Laravel Config Checker Package https://laravel-news.com/laravel-config-checker-package
Laravel News
Laravel Config Checker Package - Laravel News
The Laravel Config Checker package scans your codebase to verify if configuration keys are correctly defined in your configuration files
Forwarded from محتوای آزاد سهراب
آلفا دوم میزکار کازمیک عرضه شد.
https://blog.system76.com/post/cosmic-alpha-2-press-release
@SohrabContents
https://blog.system76.com/post/cosmic-alpha-2-press-release
@SohrabContents
Forwarded from نوشتههای ترمینالی
چرا سورس کد بیشتر بد است؟
https://huly.blog/source-code-is-poison
این مطلب نگاه خیلی جالبی به سورس کد داره. میگه خیلی اوقات ما پاداش میگیریم چون کد جدید نوشتیم ولی کد یه بدهی و سمه. مقدار کمش میتونه به فیچر منجر بشه ولی زیاد که میشه مثل سم باعث میشه توسعه جلو نره و نیروی بیشتری نیاز داشته باشه و ...
https://huly.blog/source-code-is-poison
این مطلب نگاه خیلی جالبی به سورس کد داره. میگه خیلی اوقات ما پاداش میگیریم چون کد جدید نوشتیم ولی کد یه بدهی و سمه. مقدار کمش میتونه به فیچر منجر بشه ولی زیاد که میشه مثل سم باعث میشه توسعه جلو نره و نیروی بیشتری نیاز داشته باشه و ...
Huly Team
Source Code is Poison
Many people believe that source code is an asset. It is not. I'm not the first to suggest this idea; there are numerous articles on the internet asserting that source code is not an asset -- it's a liability. However, I want to take this a step furth...
Forwarded from Gopher Academy
😱اینم یه چک لیست امنیتی برای api که توسعه میدید
گزینه خوبیه
https://roadmap.sh/best-practices/api-security
➖➖➖➖➖➖➖➖
👑 @gopher_academy
گزینه خوبیه
https://roadmap.sh/best-practices/api-security
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Forwarded from محتوای آزاد سهراب
همه برنامههای پروتون درایو الان اوپن سورس هستند
https://proton.me/blog/drive-open-source
@SohrabContents
https://proton.me/blog/drive-open-source
@SohrabContents
Proton
All Proton Drive apps are now open source | Proton
Proton Drive’s desktop apps are open source, meaning you can review the code of any Proton Drive app for yourself.