Forwarded from Codino School (ایمان غفوری)
Forwarded from Woland's Linux Journal (Woland)
کانال پیرتوب Woland's Machine راه اندازی شده و ویدیوها منبعد علاوه بر یوتوب در پیرتوب هم بارگزاری میشن.
خوبی پیرتوب اینه که فیلتر نیست (فعلا)
لینک کانال:
👉🔗 Woland's Machine
#معرفی
خوبی پیرتوب اینه که فیلتر نیست (فعلا)
لینک کانال:
👉🔗 Woland's Machine
#معرفی
Forwarded from PhiloLearn | فیلولرن
به نظرتون یکم زیاد نمیگه قیمت رو؟؟
یوتیوب رو ۱۰۰-۲۰۰ تومن هم میشه در آورد جدا
یوتیوب رو ۱۰۰-۲۰۰ تومن هم میشه در آورد جدا
Forwarded from IRCF | اینترنت آزاد برای همه
بخش قابلتوجهی از مردم برای استفاده از اینترنت به VPN وابسته هستن. وبسایت mintpressnews مدعیشده که ۳ #فیلترشکن ExpressVPN، CyberGhost و Private Internet Access توسط شرکتی اداره میشن که روابط نزدیکی با نهادهای اطلاعاتی اسرائیل داره!
👉 mintpressnews.com/exposed-how-israeli-spies-control-your-vpn/288259
🔍 ircf.space
@ircfspace
👉 mintpressnews.com/exposed-how-israeli-spies-control-your-vpn/288259
🔍 ircf.space
@ircfspace
MintPress News
Exposed: How Israeli Spies Control Your VPN
A new report uncovers the troubling ties between top VPN services like ExpressVPN and the Israeli security state, raising alarms about how much control Israel’s Unit 8200 has over your online privacy.
Forwarded from DevTwitter | توییت برنامه نویسی
Forwarded from DevAcademy
خب دوستان عزیزم!
با توجه به اینکه پروژه های جدیدی در راه است و نیاز داریم اسکواد های شرکت را کاملتر کنیم، به 1 نفر نیروی Mid-Level جدید نیاز داریم
مهارت های زیر برای ما مهم هست:
JavaScript/TypeScript
React.js
Next.js 14
Tailwind CSS
Wagmi یا Ethers.js یا.. (آشنایی کفایت می کند)
از آنجایی که برخی پروژه های شرکت مرتبط با بلاکچین و Web3 هست، آشنایی با مفاهیم Blockchain، Smart Contract، Solidity و.. نیاز هست ولی اگر آشنایی نداشتید در کنار هم، بیشتر یاد می گیریم
شرکت مشهد هست ولی همکاری به صورت Remote می باشد
حقوق هم پس از مصاحبه و براساس توانایی های شما کارجوی عزیز تعیین می شود
توجه: ارائه نمونه کار در رزومه الزامی هست
لطفا رزومه های خود را فقط با عنوان «Front-End» به ایمیل من ارسال کنید:
[email protected]
https://www.linkedin.com/posts/alibahaari_aepaezaedaesabraecaeiaesahy-activity-7243572895455625216-Q1TB?utm_source=share&utm_medium=member_desktop
💻@DevAcaademy
💬@DevAcademyGroup
با توجه به اینکه پروژه های جدیدی در راه است و نیاز داریم اسکواد های شرکت را کاملتر کنیم، به 1 نفر نیروی Mid-Level جدید نیاز داریم
مهارت های زیر برای ما مهم هست:
JavaScript/TypeScript
React.js
Next.js 14
Tailwind CSS
Wagmi یا Ethers.js یا.. (آشنایی کفایت می کند)
از آنجایی که برخی پروژه های شرکت مرتبط با بلاکچین و Web3 هست، آشنایی با مفاهیم Blockchain، Smart Contract، Solidity و.. نیاز هست ولی اگر آشنایی نداشتید در کنار هم، بیشتر یاد می گیریم
شرکت مشهد هست ولی همکاری به صورت Remote می باشد
حقوق هم پس از مصاحبه و براساس توانایی های شما کارجوی عزیز تعیین می شود
توجه: ارائه نمونه کار در رزومه الزامی هست
لطفا رزومه های خود را فقط با عنوان «Front-End» به ایمیل من ارسال کنید:
[email protected]
https://www.linkedin.com/posts/alibahaari_aepaezaedaesabraecaeiaesahy-activity-7243572895455625216-Q1TB?utm_source=share&utm_medium=member_desktop
💻@DevAcaademy
💬@DevAcademyGroup
Linkedin
Ali Bahaari on LinkedIn: #فرصت_شغلی | 82 comments
#فرصت_شغلی
خب دوستان عزیزم!
با توجه به اینکه پروژه های جدیدی در راه است و نیاز داریم اسکواد های شرکت را کاملتر کنیم، به 1 نفر نیروی Mid-Level جدید نیاز داریم… | 82 comments on LinkedIn
خب دوستان عزیزم!
با توجه به اینکه پروژه های جدیدی در راه است و نیاز داریم اسکواد های شرکت را کاملتر کنیم، به 1 نفر نیروی Mid-Level جدید نیاز داریم… | 82 comments on LinkedIn
Forwarded from Anophel | آنوفل
حالا Mapped Types در TypeScript به شما اجازه میده تا نوعهای جدیدی را بر اساس نوعهای موجود ایجاد کنید. با استفاده از یک نوع ژنریک ( Generic) که از یک union از PropertyKeyها (معمولاً با استفاده از keyof ایجاد میشه) برای تکرار کلیدها و ایجاد یک نوع جدید انجام میشه.
این باعث میشه دیگه نگران مقدار های null یا undefined نباشید.
حالا Utility Types در TypeScript مجموعهای از نوعهای از پیش تعریف شده هستند که به شما کمک میکنند تا تغییرات و عملیاتهای رایج روی نوعها را انجام بدید. این نوعها به شما اجازه میده تا نوعهای جدیدی بر اساس نوعهای موجود ایجاد کنید، پراپرتی ها Partial یا Required و همچنین Readonly کنید، نسخههای غیرقابل تغییر از نوعها بسازید و ...
اینم قشنگه و در تایپاسکریپت یک روش برای ایجاد انواع یونیک است که از اشتباهات لاجیکال جلوگیری میکنه. این نوعها با اضافه کردن یک ویژگی خاص به نوع اصلی، به نوعی “برند” میشوند.
دقت کنید این ویژگی در زمان اجرا وجود ندارد، اما به کامپایلر تایپاسکریپت کمک میکند تا تفاوت بین انواع مختلف را تشخیص بده.
موارد دیگه ای هم بودن، در پست های آینده بهش می پردازیم.
موردی هم بود حتما در بخش کامنت ها بنویسید ♥️
Anophel | آنوفل
#تایپ_اسکریپت #ts #typescript
Please open Telegram to view this post
VIEW IN TELEGRAM
Anophel
Anophel | Where Developers Create Their Own Path
Anophel is an ecosystem for developers—a place for those who prefer building over consuming. If you want to create tools, think differently, and forge your own path in coding, Anophel is with you.
Forwarded from DevTwitter | توییت برنامه نویسی
گوگولی بود برای خودش یه دورانی
هنوز هم برنامه هایی که باهاش نوشتم دارن کار میکنن
@DevTwitter | <Keyhan jk/>
هنوز هم برنامه هایی که باهاش نوشتم دارن کار میکنن
@DevTwitter | <Keyhan jk/>
Forwarded from LearnPOV | لرن پی او وی
Forwarded from Ninja Learn | نینجا لرن
توی پست جدیدمون داکر رو معرفی کردیم، یه سر بهش بزنید 🌹
https://www.instagram.com/p/DAQGDXQIRcI/?igsh=NHd2czUxYmF5azZ4
https://www.instagram.com/p/DAQGDXQIRcI/?igsh=NHd2czUxYmF5azZ4
Forwarded from Gopher Academy
Forwarded from Ninja Learn | نینجا لرن
🌳 همهچی درباره B-Tree توی دیتابیسهای رابطهای 🌳
امروز میخوایم درباره B-Tree توی دیتابیسهای رابطهای صحبت کنیم. اگه تا حالا با دیتابیسهای مثل MySQL یا PostgreSQL کار کرده باشی، احتمالاً اسم B-Tree به گوشت خورده. B-Tree یکی از مهمترین ساختارهای داده توی دیتابیسهاست که برای ایندکس کردن و جستجوی سریع دادهها استفاده میشه 📈.
حالا B-Tree چیه؟ 🌳
خب B-Tree یه ساختار درختی (tree structure) هست که توی ایندکسهای دیتابیس استفاده میشه. این درخت بهصورت بالانس طراحی شده، یعنی همه شاخهها از ریشه تا برگها تقریباً به یه اندازه طول دارن. این باعث میشه عملیات جستجو، درج، حذف و بهروزرسانی دادهها با سرعت بالایی انجام بشه 🚀.
توی B-Tree، هر گره (node) میتونه چندین کلید (key) و فرزند (child) داشته باشه. این یعنی برخلاف درختهای دودویی معمولی که هر گره فقط ۲ فرزند داره، توی B-Tree هر گره میتونه چند فرزند و کلید داشته باشه. این باعث میشه که عمق درخت کم بشه و دسترسی به دادهها سریعتر باشه.
چرا B-Tree توی دیتابیسها استفاده میشه؟ 🤔
1⃣ سرعت بالای جستجو 🔍
یکی از مزیتهای بزرگ B-Tree اینه که جستجو توی اون خیلی سریع انجام میشه. چون این درخت بهصورت متوازن طراحی شده، عمق زیادی نداره و سریع میشه به دادهها رسید.
2⃣ مناسب برای عملیات درج و حذف ➕➖
خب B-Tree نهتنها برای جستجو عالیه، بلکه برای درج و حذف دادهها هم خیلی بهینه است. وقتی یه داده جدید رو وارد میکنی یا دادهای رو حذف میکنی، درخت همچنان بالانس خودش رو حفظ میکنه و کارایی رو پایین نمیاره.
3. مقیاسپذیری 📏
دیتابیسهایی مثل MySQL و PostgreSQL برای اینکه بتونن حجم زیادی از دادهها رو مدیریت کنن، از B-Tree استفاده میکنن. این ساختار داده بهخاطر توانایی مدیریت تعداد زیادی از کلیدها و گرهها، مقیاسپذیری خوبی داره.
چطوری B-Tree کار میکنه؟ ⚙️
فرض کن یه جدول توی دیتابیس داری که میخوای ازش بهسرعت دادههایی رو پیدا کنی. اگه این جدول بزرگ باشه، جستجوی خطی خیلی طول میکشه. اینجاست که ایندکس به کمک میاد! وقتی یه ایندکس میسازی، دیتابیس از B-Tree برای ذخیره کردن اون ایندکس استفاده میکنه.
مثلاً اگه یه کوئری مثل این داشته باشی:
اگه روی ستون
تفاوت B-Tree و B+Tree چیه؟ 🤨
خیلی از دیتابیسهای مدرن از نسخهای به نام B+Tree استفاده میکنن. فرق B+Tree اینه که همه دادهها فقط توی برگها (leaf nodes) ذخیره میشن و گرههای میانی فقط برای جستجو استفاده میشن. این باعث میشه که دسترسی به دادهها سریعتر بشه، چون برگها بهصورت مرتب ذخیره شدن و بهراحتی میشه بین اونها پیمایش کرد.
چطوری ایندکس B-Tree بسازیم؟ 🛠️
ساختن ایندکس B-Tree توی دیتابیس خیلی ساده است. مثلاً توی MySQL میتونی اینجوری یه ایندکس روی ستون
با این کار، دیتابیس یه index برای ستون
جمعبندی 🎯
فهمیدیم B-Tree یه ساختار داده عالی برای مدیریت ایندکسها توی دیتابیسهای رابطهایه. سرعت بالای جستجو، درج و حذف دادهها، و مقیاسپذیری بالا از ویژگیهای خوبشه. با اینکه B-Tree یه ساختار پیچیدهست، ولی خیلی از دیتابیسهای معروف مثل MySQL و PostgreSQL از اون استفاده میکنن تا کارایی کوئریها رو بهینه کنن.
امیدوارم مفید بوده باشه :)
@ninja_learn_ir
امروز میخوایم درباره B-Tree توی دیتابیسهای رابطهای صحبت کنیم. اگه تا حالا با دیتابیسهای مثل MySQL یا PostgreSQL کار کرده باشی، احتمالاً اسم B-Tree به گوشت خورده. B-Tree یکی از مهمترین ساختارهای داده توی دیتابیسهاست که برای ایندکس کردن و جستجوی سریع دادهها استفاده میشه 📈.
حالا B-Tree چیه؟ 🌳
خب B-Tree یه ساختار درختی (tree structure) هست که توی ایندکسهای دیتابیس استفاده میشه. این درخت بهصورت بالانس طراحی شده، یعنی همه شاخهها از ریشه تا برگها تقریباً به یه اندازه طول دارن. این باعث میشه عملیات جستجو، درج، حذف و بهروزرسانی دادهها با سرعت بالایی انجام بشه 🚀.
توی B-Tree، هر گره (node) میتونه چندین کلید (key) و فرزند (child) داشته باشه. این یعنی برخلاف درختهای دودویی معمولی که هر گره فقط ۲ فرزند داره، توی B-Tree هر گره میتونه چند فرزند و کلید داشته باشه. این باعث میشه که عمق درخت کم بشه و دسترسی به دادهها سریعتر باشه.
چرا B-Tree توی دیتابیسها استفاده میشه؟ 🤔
1⃣ سرعت بالای جستجو 🔍
یکی از مزیتهای بزرگ B-Tree اینه که جستجو توی اون خیلی سریع انجام میشه. چون این درخت بهصورت متوازن طراحی شده، عمق زیادی نداره و سریع میشه به دادهها رسید.
2⃣ مناسب برای عملیات درج و حذف ➕➖
خب B-Tree نهتنها برای جستجو عالیه، بلکه برای درج و حذف دادهها هم خیلی بهینه است. وقتی یه داده جدید رو وارد میکنی یا دادهای رو حذف میکنی، درخت همچنان بالانس خودش رو حفظ میکنه و کارایی رو پایین نمیاره.
3. مقیاسپذیری 📏
دیتابیسهایی مثل MySQL و PostgreSQL برای اینکه بتونن حجم زیادی از دادهها رو مدیریت کنن، از B-Tree استفاده میکنن. این ساختار داده بهخاطر توانایی مدیریت تعداد زیادی از کلیدها و گرهها، مقیاسپذیری خوبی داره.
چطوری B-Tree کار میکنه؟ ⚙️
فرض کن یه جدول توی دیتابیس داری که میخوای ازش بهسرعت دادههایی رو پیدا کنی. اگه این جدول بزرگ باشه، جستجوی خطی خیلی طول میکشه. اینجاست که ایندکس به کمک میاد! وقتی یه ایندکس میسازی، دیتابیس از B-Tree برای ذخیره کردن اون ایندکس استفاده میکنه.
مثلاً اگه یه کوئری مثل این داشته باشی:
SELECT * FROM users WHERE id = 123;
اگه روی ستون
id ایندکس ساخته باشی، دیتابیس از B-Tree برای پیدا کردن رکورد مورد نظر استفاده میکنه و این کار خیلی سریع انجام میشه.تفاوت B-Tree و B+Tree چیه؟ 🤨
خیلی از دیتابیسهای مدرن از نسخهای به نام B+Tree استفاده میکنن. فرق B+Tree اینه که همه دادهها فقط توی برگها (leaf nodes) ذخیره میشن و گرههای میانی فقط برای جستجو استفاده میشن. این باعث میشه که دسترسی به دادهها سریعتر بشه، چون برگها بهصورت مرتب ذخیره شدن و بهراحتی میشه بین اونها پیمایش کرد.
چطوری ایندکس B-Tree بسازیم؟ 🛠️
ساختن ایندکس B-Tree توی دیتابیس خیلی ساده است. مثلاً توی MySQL میتونی اینجوری یه ایندکس روی ستون
id بسازی:CREATE INDEX idx_id ON users (id);
با این کار، دیتابیس یه index برای ستون
id میسازه و از این به بعد جستجوها خیلی سریعتر میشن.جمعبندی 🎯
فهمیدیم B-Tree یه ساختار داده عالی برای مدیریت ایندکسها توی دیتابیسهای رابطهایه. سرعت بالای جستجو، درج و حذف دادهها، و مقیاسپذیری بالا از ویژگیهای خوبشه. با اینکه B-Tree یه ساختار پیچیدهست، ولی خیلی از دیتابیسهای معروف مثل MySQL و PostgreSQL از اون استفاده میکنن تا کارایی کوئریها رو بهینه کنن.
#db #btree #bptree
Forwarded from Geek Alerts
سامسونگ میخواد با همکاری TSMC یک کارخونه تولید تراشه داخل امارات تاسیس کنه، این پروژه ۱۰۰ میلیارد دلاری سرمایهگذارش صندوق Mubadala ابوظبی هست و شامل همون پروژه MGX میشه که میخواد امارات رو به یکی از مراکز هوشمصنوعی و تراشه تبدیل کنه، با OpenAI هم همکاری دارن.
ولی از یه طرف اینا چون تکنولوژی هایتک حساب میشن هر کشوری مثل امارات و ... نمیتونه تولید تراشه داشته باشه.
برای حل این موضوع امارات و سامسونگ اومدن پیشنهاد دادن که آمریکا بر روند تولید و فروش تراشهها نظارت داشته باشه.
سخنگوی امنیت ملی آمریکا هم گفتن تو مسیر درستی برای این همکاری هستیم که یعنی منظورشون ساخته شدن قطعی کارخانه تولید تراشه در امارات هست.
اینا البته جدال بین غرب و شرق هم میشه، آمریکا با این شرط به کشورهای عربی اجازه میده وارد تکنولوژیهای پیشرفته بشن که در واقع سمت غرب باشن. «نقطه مقابل چین هست»
the-decoder
@geekalerts
ولی از یه طرف اینا چون تکنولوژی هایتک حساب میشن هر کشوری مثل امارات و ... نمیتونه تولید تراشه داشته باشه.
برای حل این موضوع امارات و سامسونگ اومدن پیشنهاد دادن که آمریکا بر روند تولید و فروش تراشهها نظارت داشته باشه.
سخنگوی امنیت ملی آمریکا هم گفتن تو مسیر درستی برای این همکاری هستیم که یعنی منظورشون ساخته شدن قطعی کارخانه تولید تراشه در امارات هست.
اینا البته جدال بین غرب و شرق هم میشه، آمریکا با این شرط به کشورهای عربی اجازه میده وارد تکنولوژیهای پیشرفته بشن که در واقع سمت غرب باشن. «نقطه مقابل چین هست»
the-decoder
@geekalerts
Forwarded from Geek Alerts
توی زندانها متداول هست که از زندانیها توی کارهای مثل خیاطی، نظافت و ... استفاده میکنن.
الان توی فنلاند اومدن به کمک یه استارتاپ به اسم Metroc از زندانیها برای کارهای مرتبط با هوشمصنوعی استفاده میکنن.
اینجوری که اول یه دوره آموزشی هوشمصنوعی برای زندانیها میذارن، به هر کدوم یک لپتاپ میدن و بعد زندانیها توی تمرین دادن هوشمصنوعی کمک میکنن.
هم حقوق دریافت میکنن و هم زمان آزادی یک تخصص برای کار کردن دارن که سمت خلاف نرن.
میگن انقدر کار خاصی بوده که کشورهای دیگه ازشون درخواست کردن برای اجراش بهشون مشاوره بدن.
euronews
@geekalerts
الان توی فنلاند اومدن به کمک یه استارتاپ به اسم Metroc از زندانیها برای کارهای مرتبط با هوشمصنوعی استفاده میکنن.
اینجوری که اول یه دوره آموزشی هوشمصنوعی برای زندانیها میذارن، به هر کدوم یک لپتاپ میدن و بعد زندانیها توی تمرین دادن هوشمصنوعی کمک میکنن.
هم حقوق دریافت میکنن و هم زمان آزادی یک تخصص برای کار کردن دارن که سمت خلاف نرن.
میگن انقدر کار خاصی بوده که کشورهای دیگه ازشون درخواست کردن برای اجراش بهشون مشاوره بدن.
euronews
@geekalerts
Forwarded from Syntax | سینتکس (𝙰𝚖𝚒𝚛𝚑𝚘𝚜𝚜𝚎𝚒𝚗)
▎Django Serializers: Related Fields in Serializer
وقتی با مدلهای مرتبط در Django کار میکنیم، نمایش اطلاعات کامل آنها در سریالایزرها میتواند چالشبرانگیز باشد. خوشبختانه، Django REST Framework (DRF) ابزارهای قدرتمندی برای این کار در اختیار ما قرار میدهد.
سریالایزر DRF بهطور پیشفرض برای فیلدهای مرتبط در هنگام سریالسازی دادهها از مقدار primary key استفاده میکند. به عنوان مثال:
خروجی
حالا اگر بخواهیم به جای PK، اطلاعات اضافی از Author نمایش دهیم، چند راه حل وجود دارد:
▎1. استفاده از
با تنظیم پارامتر 1 = depth در Meta کلاس سریالایزر، میتوانید مشخص کنید که تا چه عمقی از روابط مدلها سریالایز شوند. این روش ساده و سریع است، اما کنترل کمتری بر روی دادههای خروجی به شما میدهد.
خروجی
▎2. استفاده از Nested Serializers:
با تعریف سریالایزرهای تو در تو، میتوانید کنترل کاملی بر روی فیلدهایی که میخواهید از مدلهای مرتبط نمایش دهید داشته باشید. این روش انعطافپذیرتر است، اما نیاز به نوشتن کد بیشتری دارد , مثال:
خروجی به شکل زیر خواهد بود:
▎مشکل N + 1 در هنگام استفاده از Depth یا Nested Serializer:
حتما باید در queryset خود از
▎Django Serializers: Validators
1 : field level validators
برای اعتبار سنجی داده ها در سطح فیلد در drf باید از دستور زیر پیروی کنید:
2 : object level validator
▎Django Serializers: to_internal_value
متود to_internal_value در ModelSerializer قبل از اجرای اعتبارسنجی داده ها به داده های خام دسترسی دارد و میتوانید برای تغییر داده ها یا اضافه کردن داده ها قبل از اعتبارسنجی از اون استفاده کنید:
نکته:
اقا حتما موقع return از super().to_internal_value(data) استفاده کنید و return data استفاده نکنید ; چون اینطوری باعث میشه تمام validatorهای modelSerializer که از روی مدل شما بطور پیشفرض ساخته شده , غیرفعال بشن!
▎Django Serializers: to_representation
ما میتوانیم این رو ش را override کنیم تا قبل از داده های سریالی که نمونه سریالسازبر میگرداند،
دستکاری داده ها را انجام دهیم , مثال:
برای اطلاعات بیشتر به کتاب :django in production مراجعه کنید.
وقتی با مدلهای مرتبط در Django کار میکنیم، نمایش اطلاعات کامل آنها در سریالایزرها میتواند چالشبرانگیز باشد. خوشبختانه، Django REST Framework (DRF) ابزارهای قدرتمندی برای این کار در اختیار ما قرار میدهد.
سریالایزر DRF بهطور پیشفرض برای فیلدهای مرتبط در هنگام سریالسازی دادهها از مقدار primary key استفاده میکند. به عنوان مثال:
class Author(models.Model):
name = models.CharField()
last_name = models.CharField()
class Blog(models.Model):
title = models.CharField()
author = models.ForeignKey(Author, on_delete=models.CASCADE)
class BlogSerializer(serializers.ModelSerializer):
class Meta:
model = Blog
fields = "__all__"
خروجی
BlogSerializer به شکل زیر خواهد بود:{
"title": "black python",
"author": 3
}
حالا اگر بخواهیم به جای PK، اطلاعات اضافی از Author نمایش دهیم، چند راه حل وجود دارد:
▎1. استفاده از
depth:با تنظیم پارامتر 1 = depth در Meta کلاس سریالایزر، میتوانید مشخص کنید که تا چه عمقی از روابط مدلها سریالایز شوند. این روش ساده و سریع است، اما کنترل کمتری بر روی دادههای خروجی به شما میدهد.
class BlogSerializer(serializers.ModelSerializer):
class Meta:
model = Blog
depth = 1
خروجی
BlogSerializer به شکل زیر خواهد بود:{
"title": "python black",
"author": { "name": "amirhossein", "id": 1, "last_name": "some last name" }
}
▎2. استفاده از Nested Serializers:
با تعریف سریالایزرهای تو در تو، میتوانید کنترل کاملی بر روی فیلدهایی که میخواهید از مدلهای مرتبط نمایش دهید داشته باشید. این روش انعطافپذیرتر است، اما نیاز به نوشتن کد بیشتری دارد , مثال:
class AuthorSerializer(serializers.ModelSerializer):
class Meta:
model = Author
fields = ("name",)
class BlogSerializer(serializers.ModelSerializer):
author = AuthorSerializer()
class Meta:
model = Blog
fields = "__all__"
خروجی به شکل زیر خواهد بود:
{
"title": "black python",
"author": { "name": "amirhossein" }
}
▎مشکل N + 1 در هنگام استفاده از Depth یا Nested Serializer:
حتما باید در queryset خود از
select_related یا prefetch_related استفاده کنید تا از بروز مشکل N + 1 جلوگیری کنید!▎Django Serializers: Validators
1 : field level validators
برای اعتبار سنجی داده ها در سطح فیلد در drf باید از دستور زیر پیروی کنید:
class BlogSerializer(serializers.ModelSerializer):
....
def validate_<field name>(self, value): # validate_email
if vlaue in "_" :
serializers.ValidationError("some error")
return value
2 : object level validator
class BlogSerializer(serializers.ModelSerializer):
....
def validate(self, attrs):
if attrs.name == attrs.title :
serializers.ValidationError("name and title can not be same")
return value
▎Django Serializers: to_internal_value
متود to_internal_value در ModelSerializer قبل از اجرای اعتبارسنجی داده ها به داده های خام دسترسی دارد و میتوانید برای تغییر داده ها یا اضافه کردن داده ها قبل از اعتبارسنجی از اون استفاده کنید:
class BlogSerializer(serializers.ModelSerializer):
....
def to_internal_value(self, data):
data["user"] = self.context["user"] # افزودن شی user به data
return super().to_internal_value(data)
نکته:
اقا حتما موقع return از super().to_internal_value(data) استفاده کنید و return data استفاده نکنید ; چون اینطوری باعث میشه تمام validatorهای modelSerializer که از روی مدل شما بطور پیشفرض ساخته شده , غیرفعال بشن!
▎Django Serializers: to_representation
ما میتوانیم این رو ش را override کنیم تا قبل از داده های سریالی که نمونه سریالسازبر میگرداند،
دستکاری داده ها را انجام دهیم , مثال:
class BlogSerializer(serializers.ModelSerializer):
....
def to_representation(self, instance):
resp = super().to_representation(instance)
resp['title'] = resp['title'].upper()
return resp
برای اطلاعات بیشتر به کتاب :django in production مراجعه کنید.
Forwarded from Ninja Learn | نینجا لرن
یه آمار بگیریم ببینیم دوستان چیکاره هستن 😄
لطفا همه شرکت کنن، بهمون برای تولید محتوای بهتر و مناسب تر کمک میکنه ❤
لطفا همه شرکت کنن، بهمون برای تولید محتوای بهتر و مناسب تر کمک میکنه ❤
Anonymous Poll
7%
فرانت کارم
73%
بک اند کارم (Django)
5%
بک اند کارم (Node.js)
15%
سایر
Forwarded from Python BackendHub (Mani)
https://martinheinz.dev/blog/92
یک پست خوب از بنیامین که تو گروه گذاشته بود که چرا نباید از ایمیج Alpine استفاده کنید. سه نکته همیشه موقع تصمیم گیری یادتون باشه:
۱. خیلی کم پیش میاد که یک چیزی خوبه مطلق باشه. همین که قدرت تصمیم گیری تو اپلیکیشن بالغی برای شما فراهم شده یعنی یک ترید آف وجود داشته که maintainer ها گذاشتن خودتون تصمیم بگیرید. اینکه ایمیج سایز کمتر بهتره واقعا جمله چرتیه! درستش اینه که ایمیج چیزه اضافه ای نداشته باشه که نیاز نداشته باشین و مراحل بیلدش درست باشه.
۲. همیشه تحقیق کنید. پیرو مورد یک, خیلی وقتا نیازه که تصمیم گیری کنید. اگه چند تا آپشن دارین, گوگل کنید که چرا اون آپشن بده. و drawback های اون آپشن چیه. درکش کنید چطور کار میکنه. همینطوری از یک توتوریال برندارین کپی پیست کنید.
۳. بهتره داکیومنت که چرا اون تصمیم رو گرفتین. تحقیق کردین, دراوبک هارو متوجه شدید, و طبق یک منطقی یک چیزی رو انتخاب کردین. سعی کنید این پروسه رو داکیومنت کنید, چون ۲ ماه دیگه ممکنه یادتون نباشه چرا اون تصمیم رو گرفتین. و یا هم تیمی هاتون ممکنه بعدا گیج بشن چرا فلان تصمیم گرفته شده. تو این مثال فکر کنید یک نفر بگه خب ما این مشکلی که تو این مقاله گفته شده رو نداریم, پس میریم از ایمیج Alpine استفاده میکنیم. ۱ سال دیگه همون مشکل پیش میاد, چون فرضیاتی که داشتین موقع تصمیم گیری دیگه درست نیست. اشتراک دانش یکی از عناصر مهم پویایی یک تیم و پروداکته.
@PyBackendHub
یک پست خوب از بنیامین که تو گروه گذاشته بود که چرا نباید از ایمیج Alpine استفاده کنید. سه نکته همیشه موقع تصمیم گیری یادتون باشه:
۱. خیلی کم پیش میاد که یک چیزی خوبه مطلق باشه. همین که قدرت تصمیم گیری تو اپلیکیشن بالغی برای شما فراهم شده یعنی یک ترید آف وجود داشته که maintainer ها گذاشتن خودتون تصمیم بگیرید. اینکه ایمیج سایز کمتر بهتره واقعا جمله چرتیه! درستش اینه که ایمیج چیزه اضافه ای نداشته باشه که نیاز نداشته باشین و مراحل بیلدش درست باشه.
۲. همیشه تحقیق کنید. پیرو مورد یک, خیلی وقتا نیازه که تصمیم گیری کنید. اگه چند تا آپشن دارین, گوگل کنید که چرا اون آپشن بده. و drawback های اون آپشن چیه. درکش کنید چطور کار میکنه. همینطوری از یک توتوریال برندارین کپی پیست کنید.
۳. بهتره داکیومنت که چرا اون تصمیم رو گرفتین. تحقیق کردین, دراوبک هارو متوجه شدید, و طبق یک منطقی یک چیزی رو انتخاب کردین. سعی کنید این پروسه رو داکیومنت کنید, چون ۲ ماه دیگه ممکنه یادتون نباشه چرا اون تصمیم رو گرفتین. و یا هم تیمی هاتون ممکنه بعدا گیج بشن چرا فلان تصمیم گرفته شده. تو این مثال فکر کنید یک نفر بگه خب ما این مشکلی که تو این مقاله گفته شده رو نداریم, پس میریم از ایمیج Alpine استفاده میکنیم. ۱ سال دیگه همون مشکل پیش میاد, چون فرضیاتی که داشتین موقع تصمیم گیری دیگه درست نیست. اشتراک دانش یکی از عناصر مهم پویایی یک تیم و پروداکته.
@PyBackendHub
martinheinz.dev
Why I Will Never Use Alpine Linux Ever Again
<p>
Nowadays, Alpine Linux is one of the most popular options for container base images. Many people (maybe including you) use it for anything and everythi...
Nowadays, Alpine Linux is one of the most popular options for container base images. Many people (maybe including you) use it for anything and everythi...
Forwarded from DevTwitter | توییت برنامه نویسی
این article رو در مورد prompt engineering و قدم های بعدیش نوشتم
خوشحال میشم اگه بهش یه نگاه بندازید
https://msnp1381.github.io/posts/Evolution-Prompt/
@DevTwitter | <Nemat/>
خوشحال میشم اگه بهش یه نگاه بندازید
https://msnp1381.github.io/posts/Evolution-Prompt/
@DevTwitter | <Nemat/>
Forwarded from Geek Alerts
۵ تا استارشیپ بدون سرنشین تا ۲ سال آینده پرتاب میشن، اگه موفقیت آمیز باشن تا ۴ سال دیگه SpaceX اولین انسانهارو به مریخ میفرسته.
سفر از زمین به مریخ فقط هر دو سال یک بار شدنی هست، زمانی که سیارات در یک راستا هستن، قراره مثل تاکسی خطی باشه، یعنی هرکسی بخواد بتونه به مریخ سفر کنه.
اگه برنامه ۵ تا استارشیپ با مشکل مواجه بشه برنامه بعدی یعنی ارسال انسان به مریخ ۲ سال به تعویق میفته.
در واقع تاریخ اول ۲۰۲۸ هست و اگر این تاریخ انجام نشه برای ۲۰۳۰ قطعی هست.
X
@geekalerts
سفر از زمین به مریخ فقط هر دو سال یک بار شدنی هست، زمانی که سیارات در یک راستا هستن، قراره مثل تاکسی خطی باشه، یعنی هرکسی بخواد بتونه به مریخ سفر کنه.
اگه برنامه ۵ تا استارشیپ با مشکل مواجه بشه برنامه بعدی یعنی ارسال انسان به مریخ ۲ سال به تعویق میفته.
در واقع تاریخ اول ۲۰۲۸ هست و اگر این تاریخ انجام نشه برای ۲۰۳۰ قطعی هست.
X
@geekalerts