Forwarded from DevTwitter | توییت برنامه نویسی
یک پروژه بزرگ با لاراول دارم انجام میدم. اول این که چرا اینقدر همش تکنولوژي ها سریع تغییر میکنه. هم Reactو هم Laravel. همه ی مطالعاتت با خاک یکسان میشه بعد از یک مدت ..
<Amin Ataee/>
@DevTwitter
<Amin Ataee/>
@DevTwitter
Forwarded from Geek Alerts
گوگل اعلام کرده که تا آخر سال، دستیار گوگل (Google Assistant) رو تعطیل میکنه و دیگه روی اکثر گوشیهای اندرویدی در دسترس نخواهد بود. فقط گوشیهای قدیمی که Gemini رو پشتیبانی نمیکنن میتونن Google Assistant رو نگه دارن.
🔗 androidpolice
🤓 @geekalerts
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from DevTwitter | توییت برنامه نویسی
حالا هرچقدر میخاین خودتون رو بکشید
این حقیقت ک اولین برنامه نویس یک خانوم بوده
تغیر نمیکنه
<Mastaneh/>
@DevTwitter
این حقیقت ک اولین برنامه نویس یک خانوم بوده
تغیر نمیکنه
<Mastaneh/>
@DevTwitter
Forwarded from DevTwitter | توییت برنامه نویسی
Forwarded from Geek Alerts
امروز، ۱۶ مارس، سالروز تولد ریچارد استالمن است
ریچارد متیو استالمن، برنامهنویس، فعال حقوق دیجیتال و بنیانگذار بنیاد نرمافزار آزاد (FSF) است. استالمن به خاطر تعهدش به فلسفه نرمافزار آزاد و تلاشهایش برای ترویج آزادیهای دیجیتال شناخته میشود. او در سال 1983 پروژه گنو را آغاز کرد، که به توسعه سیستمعامل GNU/Linux و بسیاری از ابزارهای نرمافزاری آزاد دیگر منجر شد.
استالمن به عنوان یک مدافع حریم خصوصی، به طور خستگیناپذیر برای آگاهیرسانی در مورد خطرات نرمافزارهای اختصاصی و نظارت دولتی تلاش میکند. او همچنین منتقد سرسخت قانون کپیرایت است و معتقد است که این قانون مانع نوآوری و خلاقیت میشود.
در سال 2021، استالمن به سرطان مبتلا شد و درحال حاضر در روند درمان قرار دارد. او امروز ۷۱ ساله شد.
🔗 https://stallman.org
🤓 hadi @geekalerts
ریچارد متیو استالمن، برنامهنویس، فعال حقوق دیجیتال و بنیانگذار بنیاد نرمافزار آزاد (FSF) است. استالمن به خاطر تعهدش به فلسفه نرمافزار آزاد و تلاشهایش برای ترویج آزادیهای دیجیتال شناخته میشود. او در سال 1983 پروژه گنو را آغاز کرد، که به توسعه سیستمعامل GNU/Linux و بسیاری از ابزارهای نرمافزاری آزاد دیگر منجر شد.
استالمن به عنوان یک مدافع حریم خصوصی، به طور خستگیناپذیر برای آگاهیرسانی در مورد خطرات نرمافزارهای اختصاصی و نظارت دولتی تلاش میکند. او همچنین منتقد سرسخت قانون کپیرایت است و معتقد است که این قانون مانع نوآوری و خلاقیت میشود.
در سال 2021، استالمن به سرطان مبتلا شد و درحال حاضر در روند درمان قرار دارد. او امروز ۷۱ ساله شد.
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from 🎄 یک برنامه نویس تنبل (The Lazy 🌱 Raymond)
ویکیتجربه · سایت فیلتره
انتخاب بهتر با تجربیات دیگران: از مصاحبه، رستوران، کافه، دکتر، تجربه خرید | ویکیتجربه
بهترین کافه، بهترین رستورانهای تهران، بهترین دکتر، بهترین آزمایشگاه، بهترین صرافی ارز دیجیتال، بهترین هتل (پلتفرمی برای به اشتراک گذاری تجربه کاری، تجربه خرید)
🗿1
Forwarded from LUGist (Amiria Maher)
🎨 رویداد «پیکاسو در تهران»
🖼️ موزهٔ هنرهای معاصر تهران
🚩 انقلاب، کارگر شمالی
🕛 ۱۲ ظهر، ۲۶ اسفند (فردا)
👤 هماهنگ کننده: @Alireza_j_am
💳 هزینهٔ ورودی: ۱۰ت برای ایرانیها و ۵ت برای دانشجویان
🖼️ موزهٔ هنرهای معاصر تهران
🚩 انقلاب، کارگر شمالی
🕛 ۱۲ ظهر، ۲۶ اسفند (فردا)
👤 هماهنگ کننده: @Alireza_j_am
💳 هزینهٔ ورودی: ۱۰ت برای ایرانیها و ۵ت برای دانشجویان
Forwarded from Rust for Python developers
توزیع
مشکل اصلی هم بخاطر، باگهای گزارش شده سر
پرفورمنس از کجا میاد؛ قطعا
توسط پروژه
اطلاع بیشتر :
Link
پ.ن : راستی اگر اینطوری بشه یعنی
زخممون نمیکنند که
اگر این مشکل رو حل میکنه من ۱۰۰٪ پایهام 😂
ubuntu اعلام کرده میره سراغ پروژه uutils؛ این پروژه یکی از بزرگترین بازنویسیها توی Rust هست که تمام ابزارهای مهم پروژه GNU Linux رو با Rust بازنویسی میکنه.ls, cd, cp, mv, mkfifo, ....مشکل اصلی هم بخاطر، باگهای گزارش شده سر
Memory Safety هست؛ اوبنتو هم این مورد و پرفورمنس رو دلیل این حرکت دونسته.پرفورمنس از کجا میاد؛ قطعا
Rust به خودی خود از C سریعتر نیست ولی سختی مالتیترد و مالتی پراسس روی C باعث شده بسیاری از توسعه دهندههای core utils سراغ اینکار نروند و خب بارها صحبت این موضوع شده بود که این یک bottleneck برای خیلی از ابزارهای دیگه که بر اساس core utils توسعه داده میشوند هست، مشکلی که توی Rust وجود نداره و با یک جستجو حتی نتایج بنچمارکها روی ابزارهایی که امکان Multi thread / Multi Process شدن براشون بوده رو میبینید که توی بعضی موارد حتی تا 10x سریعتر هستند.توسط پروژه
oxidizer میتونید همین الان اینکار رو بکنید و تست بگیرید ubuntu با نسخه rust ابزارها چیکار خواهد کرد.اطلاع بیشتر :
Link
پ.ن : راستی اگر اینطوری بشه یعنی
GNU از Ubuntu و بعد از Linux حذف بشه؛ دیگه اینایی که تازه مدرک کار با ترمینال لینوکس گرفتن زخممون نمیکنند که
Linux نگو، باید بگی Gnu Linux اگر این مشکل رو حل میکنه من ۱۰۰٪ پایهام 😂
Forwarded from 🎄 یک برنامه نویس تنبل (The Lazy 🌱 Raymond)
🔶 دوره آموزش پروژه محور ساخت وب سایت شرکتی با لاراول 12 به روز رسانی شد.
۱۲- نصب پکیچ Laravel UI و افزودن جدول Role و ایجاد صفحه کاربران
قیمت دوره 1,499,000 با تخفیف 60 درصد 599,000 تومان
https://rayium.ir/course/?p=1613
#لاراول
@TheRaymondDev
۱۲- نصب پکیچ Laravel UI و افزودن جدول Role و ایجاد صفحه کاربران
قیمت دوره 1,499,000 با تخفیف 60 درصد 599,000 تومان
https://rayium.ir/course/?p=1613
#لاراول
@TheRaymondDev
Forwarded from Frontend with Erfun👨🏻💻 (Erfun Ghodoosi)
چطور تشخیص بدیم سطحمون توی برنامه نویسی چیه و کجای بازی هستیم؟
junior/mid-level/senior
Junior:
صرفا به این فکر میکنید که چه کدی بنویسم که اجرا بشه.
به الگو های طراحی تسلط ندارید.
معمولا تسک های ساده و کوچیک انجام میدید و به کمک و راهنمایی یک mentor نیاز دارید توی اکثر مراحل.
Mid-level:
به این فکر میکنید که چه کدی بنویسم که بهینه باشه. کد ساده تری باشه. از ابزار های بهتری استفاده کنم. لایبرری های مختلف استفاده کنم. کدم تمیز باشه. خوانا باشه.
الگو های طراحی رو بلدید.
به best practice ها تسلط دارید.
ممکنه چیزایی راجع به مقیاس پذیری و مهندسی نرم افزار بدونید ولی دانشتون عمیق نیست.
Senior:
دغدغتون مقیاس پذیری و آیندهی کسب و کاره. کمتر کردن هزینه ها و بیشتر کردن درآمده. حس رضایت کاربر و تجربه کاربری روان و ساده هست. به حافظه و مدیریتش فکر میکنید. به این فکر میکنید که اگر بعدا سراغ این کد ها اومدید بتونید تغییرش بدید یا اگر شخص جدیدی اومد سریع بتونه روی کد های شما onboard بشه.
به رفتار و انتظار کاربر فکر میکنید.
دانشتون رو به اشتراک میگذارید و توی تیم ها به عنوان راهنما و کسی که تصمیمات فنی میگیره شناخته میشید.
میتونید سیستم های مقیاس پذیر طراحی کنید و تاثیر تصمیم های فنی رو روی بیزنس درک کنید.
————————————
هیچکدوم از این موارد بد نیست. راجع به جونیور بودن بدبین نباشید و اگر سنیور هستید مغرور نباشید🤍. همه در کنار هم مرحله به مرحله پیشرفت میکنیم و با ساخت بهترین تجربه ها برای کاربر، بهترین هارو تجربه میکنیم.
junior/mid-level/senior
Junior:
صرفا به این فکر میکنید که چه کدی بنویسم که اجرا بشه.
به الگو های طراحی تسلط ندارید.
معمولا تسک های ساده و کوچیک انجام میدید و به کمک و راهنمایی یک mentor نیاز دارید توی اکثر مراحل.
Mid-level:
به این فکر میکنید که چه کدی بنویسم که بهینه باشه. کد ساده تری باشه. از ابزار های بهتری استفاده کنم. لایبرری های مختلف استفاده کنم. کدم تمیز باشه. خوانا باشه.
الگو های طراحی رو بلدید.
به best practice ها تسلط دارید.
ممکنه چیزایی راجع به مقیاس پذیری و مهندسی نرم افزار بدونید ولی دانشتون عمیق نیست.
Senior:
دغدغتون مقیاس پذیری و آیندهی کسب و کاره. کمتر کردن هزینه ها و بیشتر کردن درآمده. حس رضایت کاربر و تجربه کاربری روان و ساده هست. به حافظه و مدیریتش فکر میکنید. به این فکر میکنید که اگر بعدا سراغ این کد ها اومدید بتونید تغییرش بدید یا اگر شخص جدیدی اومد سریع بتونه روی کد های شما onboard بشه.
به رفتار و انتظار کاربر فکر میکنید.
دانشتون رو به اشتراک میگذارید و توی تیم ها به عنوان راهنما و کسی که تصمیمات فنی میگیره شناخته میشید.
میتونید سیستم های مقیاس پذیر طراحی کنید و تاثیر تصمیم های فنی رو روی بیزنس درک کنید.
————————————
هیچکدوم از این موارد بد نیست. راجع به جونیور بودن بدبین نباشید و اگر سنیور هستید مغرور نباشید🤍. همه در کنار هم مرحله به مرحله پیشرفت میکنیم و با ساخت بهترین تجربه ها برای کاربر، بهترین هارو تجربه میکنیم.
Father and Son
Cat Stevens
سال جدید ؛ فقط حکم دکمه ریست رو داره
تا لود شدن دوباره هم که شده
ازش لذت ببریم
هرچندکم ؛ هرچند کوچیک
تا لود شدن دوباره هم که شده
ازش لذت ببریم
هرچندکم ؛ هرچند کوچیک
Forwarded from یه شعر (Poem Bot)
حافظ | غزلیات | غزل شمارهٔ ۱۶۸
گداخت جان که شود کار دل تمام و نشد
بسوختیم در این آرزوی خام و نشد
به لابه گفت شبی میر مجلس تو شوم
شدم به رغبت خویشش کمین غلام و نشد
پیام داد که خواهم نشست با رندان
بشد به رندی و دردی کشیم نام و نشد
رواست در بر اگر می تپد کبوتر دل
که دید در ره خود تاب و پیچ دام و نشد
بدان هوس که به مستی ببوسم آن لب لعل
چه خون که در دلم افتاد همچو جام و نشد
به کوی عشق منه بی دلیل راه قدم
که من به خویش نمودم صد اهتمام و نشد
فغان که در طلب گنج نامه مقصود
شدم خراب جهانی ز غم تمام و نشد
دریغ و درد که در جست و جوی گنج حضور
بسی شدم به گدایی بر کرام و نشد
هزار حیله برانگیخت حافظ از سر فکر
در آن هوس که شود آن نگار رام و نشد
#حافظ | گنجور
📍@iipoem
گداخت جان که شود کار دل تمام و نشد
بسوختیم در این آرزوی خام و نشد
به لابه گفت شبی میر مجلس تو شوم
شدم به رغبت خویشش کمین غلام و نشد
پیام داد که خواهم نشست با رندان
بشد به رندی و دردی کشیم نام و نشد
رواست در بر اگر می تپد کبوتر دل
که دید در ره خود تاب و پیچ دام و نشد
بدان هوس که به مستی ببوسم آن لب لعل
چه خون که در دلم افتاد همچو جام و نشد
به کوی عشق منه بی دلیل راه قدم
که من به خویش نمودم صد اهتمام و نشد
فغان که در طلب گنج نامه مقصود
شدم خراب جهانی ز غم تمام و نشد
دریغ و درد که در جست و جوی گنج حضور
بسی شدم به گدایی بر کرام و نشد
هزار حیله برانگیخت حافظ از سر فکر
در آن هوس که شود آن نگار رام و نشد
#حافظ | گنجور
📍@iipoem
Forwarded from DevOps Labdon
🔵 عنوان مقاله
How to manage tool dependencies in Go 1.24+ (6 minute read)
🟢 خلاصه مقاله:
مقالهای که مرور شده، درباره ورژن 1.24 زبان برنامهنویسی Go صحبت میکند که ویژگی جدیدی با عنوان پرچم "-tool" را معرفی کرده است. این ویژگی امکان مدیریت وابستگیهای ابزارهای توسعهدهندگان را مستقیماً در فایل go.mod فراهم میآورد. با استفاده از این پرچم، توسعهدهندگان میتوانند به سادگی ابزارهایی نظیر staticcheck، govulncheck، و stringer را افزوده، به روز رسانی کنند یا حذف نمایند. این امکان به انتگراسیون راحتتر این ابزارها در فرآیندهای توسعه کمک کرده و به بهبود جریان کاری توسعهدهندگان منجر میشود. در نتیجه، این تغییر جدید در Go 1.24 به تسهیل بخشیدن به مدیریت ابزارهای توسعه میپردازد و استفاده از آنها را در پروژههای Go کارآمدتر میکند.
🟣لینک مقاله:
https://www.alexedwards.net/blog/how-to-manage-tool-dependencies-in-go-1.24-plus?utm_source=tldrdevops
➖➖➖➖➖➖➖➖
👑 @DevOps_Labdon
How to manage tool dependencies in Go 1.24+ (6 minute read)
🟢 خلاصه مقاله:
مقالهای که مرور شده، درباره ورژن 1.24 زبان برنامهنویسی Go صحبت میکند که ویژگی جدیدی با عنوان پرچم "-tool" را معرفی کرده است. این ویژگی امکان مدیریت وابستگیهای ابزارهای توسعهدهندگان را مستقیماً در فایل go.mod فراهم میآورد. با استفاده از این پرچم، توسعهدهندگان میتوانند به سادگی ابزارهایی نظیر staticcheck، govulncheck، و stringer را افزوده، به روز رسانی کنند یا حذف نمایند. این امکان به انتگراسیون راحتتر این ابزارها در فرآیندهای توسعه کمک کرده و به بهبود جریان کاری توسعهدهندگان منجر میشود. در نتیجه، این تغییر جدید در Go 1.24 به تسهیل بخشیدن به مدیریت ابزارهای توسعه میپردازد و استفاده از آنها را در پروژههای Go کارآمدتر میکند.
🟣لینک مقاله:
https://www.alexedwards.net/blog/how-to-manage-tool-dependencies-in-go-1.24-plus?utm_source=tldrdevops
➖➖➖➖➖➖➖➖
👑 @DevOps_Labdon
www.alexedwards.net
How to manage tool dependencies in Go 1.24+ - Alex Edwards
Forwarded from DevTwitter | توییت برنامه نویسی
اولین مشارکت من در دنیای FOSS مختصر به اینکه یه افزونه تعویض DNS نوشتم برای گنوم با هوش مصنوعی. و با یه دستور میتونید DNS های تحریم شکن رو اضافه کنید بهش. اسمش هم ساناد هست.
https://extensions.gnome.org/extension/7861/sanad/
https://github.com/MirS0bhan/sanad
@DevTwitter | <میرسبحان/>
https://extensions.gnome.org/extension/7861/sanad/
https://github.com/MirS0bhan/sanad
@DevTwitter | <میرسبحان/>
Forwarded from Geek Alerts
امروز، ۱۶ مارس، سالروز تولد ریچارد استالمن است
ریچارد متیو استالمن، برنامهنویس، فعال حقوق دیجیتال و بنیانگذار بنیاد نرمافزار آزاد (FSF) است. استالمن به خاطر تعهدش به فلسفه نرمافزار آزاد و تلاشهایش برای ترویج آزادیهای دیجیتال شناخته میشود. او در سال 1983 پروژه گنو را آغاز کرد، که به توسعه سیستمعامل GNU/Linux و بسیاری از ابزارهای نرمافزاری آزاد دیگر منجر شد.
استالمن به عنوان یک مدافع حریم خصوصی، به طور خستگیناپذیر برای آگاهیرسانی در مورد خطرات نرمافزارهای اختصاصی و نظارت دولتی تلاش میکند. او همچنین منتقد سرسخت قانون کپیرایت است و معتقد است که این قانون مانع نوآوری و خلاقیت میشود.
در سال 2021، استالمن به سرطان مبتلا شد و درحال حاضر در روند درمان قرار دارد. او امروز ۷۲ ساله شد.
🔗 https://stallman.org
🤓 hadi @geekalerts
ریچارد متیو استالمن، برنامهنویس، فعال حقوق دیجیتال و بنیانگذار بنیاد نرمافزار آزاد (FSF) است. استالمن به خاطر تعهدش به فلسفه نرمافزار آزاد و تلاشهایش برای ترویج آزادیهای دیجیتال شناخته میشود. او در سال 1983 پروژه گنو را آغاز کرد، که به توسعه سیستمعامل GNU/Linux و بسیاری از ابزارهای نرمافزاری آزاد دیگر منجر شد.
استالمن به عنوان یک مدافع حریم خصوصی، به طور خستگیناپذیر برای آگاهیرسانی در مورد خطرات نرمافزارهای اختصاصی و نظارت دولتی تلاش میکند. او همچنین منتقد سرسخت قانون کپیرایت است و معتقد است که این قانون مانع نوآوری و خلاقیت میشود.
در سال 2021، استالمن به سرطان مبتلا شد و درحال حاضر در روند درمان قرار دارد. او امروز ۷۲ ساله شد.
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Ai Casts | Ai for Software
MCP آشنایی با
چند وقتی هست که شرکت Anthropic سازنده Cluade AI یک استانداردی رو معرفی کرده به اسم Model Context Protocol
خیلی خلاصه بخوام بگم MCP یه راه استاندارد برای integration هست که به AI systemها مثل Cluade اجازه بده به external resourceها مثل دیتابیس، api و غیره وصل بشن برای استخراج اطلاعات.
خودشون اینطوری معرفی کردن که MCP رو چیزی شبیه پورت USB-C ببینید برای اپلیکیشن های ai.
همانطور که پورت usb-c روی دستگاه ها یه روش استاندارد وصل کردن اونا به لوازم جانبی هست، MCP هم یه راه استاندارد برای اتصال مدل های ai به منابع و ابزار متفاوت و متنوع هست.
۳ تا کامپوننت اصلی داره:
هاست یا همون ai application مثل cluade
کلاینت MCP که توسط ai model استفاده میشه تا با منابع خارجی ارتباط بگیره
سرور MCP که مسئولیت برقراری ارتباط بین کلاینت MCP و منبع خارجی رو داره
مزیت ش چیه؟
به شما اجازه میده که ایجنت ها و workflowهای پیچیده بر روی LLMها بسازید و بین LLMهای مختلف سوییچ کنید.
https://modelcontextprotocol.io/introduction
@gocasts
Ai for Software
@aicasts_ir
چند وقتی هست که شرکت Anthropic سازنده Cluade AI یک استانداردی رو معرفی کرده به اسم Model Context Protocol
خیلی خلاصه بخوام بگم MCP یه راه استاندارد برای integration هست که به AI systemها مثل Cluade اجازه بده به external resourceها مثل دیتابیس، api و غیره وصل بشن برای استخراج اطلاعات.
خودشون اینطوری معرفی کردن که MCP رو چیزی شبیه پورت USB-C ببینید برای اپلیکیشن های ai.
همانطور که پورت usb-c روی دستگاه ها یه روش استاندارد وصل کردن اونا به لوازم جانبی هست، MCP هم یه راه استاندارد برای اتصال مدل های ai به منابع و ابزار متفاوت و متنوع هست.
۳ تا کامپوننت اصلی داره:
هاست یا همون ai application مثل cluade
کلاینت MCP که توسط ai model استفاده میشه تا با منابع خارجی ارتباط بگیره
سرور MCP که مسئولیت برقراری ارتباط بین کلاینت MCP و منبع خارجی رو داره
مزیت ش چیه؟
به شما اجازه میده که ایجنت ها و workflowهای پیچیده بر روی LLMها بسازید و بین LLMهای مختلف سوییچ کنید.
https://modelcontextprotocol.io/introduction
@gocasts
Ai for Software
@aicasts_ir
Forwarded from Ninja Learn | نینجا لرن
خب خب خب ORM چیه ؟ 🛸
امروز میخوام دربارهی یه موضوع مهم و کاربردی تو دنیای برنامهنویسی حرف بزنم: ORM یا همون Object-Relational Mapping.
🧠 ORM یعنی چی؟
ORM (Object-Relational Mapping) یه تکنیک تو برنامهنویسیه که دادههای دیتابیس رو به شکل اشیاء (objects) تو زبونهای شیگرا مثل پایتون، جاوا یا سیشارپ مدیریت میکنه. به بیان ساده، ORM یه پل ارتباطی بین دنیای شیگرایی (کلاسها و اشیاء) و دنیای دیتابیسهای رابطهای (جداول و ستونها) میسازه. با ORM دیگه لازم نیست مستقیم با کوئریهای SQL کار کنی؛ در عوض، با همون زبون برنامهنویسیات دیتابیس رو کنترل میکنی.
مثلاً به جای اینکه بنویسی:
میتونی تو پایتون با Django ORM اینجوری بنویسی:
و همون نتیجه رو بگیری
📚 ORM چطوری کار میکنه؟
فرض کن تو دیتابیست یه جدول به اسم
تو برنامهات یه کلاس به اسم
چند تا سناریو رو با هم ببینیم:
1⃣ ذخیره کردن داده:
یه شیء از کلاس
2⃣ خوندن داده:
میتونی به جای کوئری SQL، از متدهایی مثل
به همین سادگی ORM تمام پیچیدگیهای کار با دیتابیس رو از دید تو مخفی میکنه و یه رابط کاربری راحت بهت میده.
قبل از اینکه ORMها باشن، برنامهنویسها مستقیم با SQL کار میکردن. (هرچند همین الانشم توی زبان های هایی که orm مناسبی براش ساخته نشده برنامه نویسان بصورت خام کد sql میزنن مثل برنامه نویسان golang)
این چند تا مشکل داشت و داره:
کدهای طولانی:
برای هر عملیات ساده، باید یه کوئری SQL مینوشتی که گاهی خیلی پیچیده میشد.
خطای زیاد:
یه اشتباه کوچیک تو کوئری (مثل یه typo) میتونست ساعتها وقتت رو تلف کنه.
سختی نگهداری:
اگه ساختار دیتابیست عوض میشد (مثلاً یه ستون اضافه یا کم میشد)، باید همه کوئریها رو دستی تغییر میدادی.
تفاوت پارادایم:
SQL یه زبون declarative (اعلانی) هست، ولی زبونهایی مثل پایتون imperative (دستوری) هستن. این یعنی برنامهنویس باید مدام بین دو مدل فکری جابهجا میشد.
ORM اومد که این مشکلات رو حل کنه:
سادگی:
کار با دیتابیس مثل کار با اشیاء تو زبون خودت میشه.
امنیت:
ORMها معمولاً جلوی حملاتی مثل SQL Injection رو میگیرن.
انعطافپذیری:
میتونی دیتابیس رو عوض کنی (مثلاً از MySQL بری به PostgreSQL) بدون اینکه کل کدت رو تغییر بدی.
سرعت توسعه:
چون کوئرینویسی کمتر میشه، وقت بیشتری برای منطق اصلی برنامهات داری.
جمعبندی ✍
ORM یه ابزار باحال و قدرتمنده که کار با دیتابیس رو برای برنامهنویسها راحتتر، سریعتر و امنتر میکنه. با ORM دیگه لازم نیست با SQL خام کلنجار بری و میتونی با همون زبون برنامهنویسیات همهچیز رو مدیریت کنی.
➖➖➖➖➖➖➖➖➖
امروز میخوام دربارهی یه موضوع مهم و کاربردی تو دنیای برنامهنویسی حرف بزنم: ORM یا همون Object-Relational Mapping.
🧠 ORM یعنی چی؟
ORM (Object-Relational Mapping) یه تکنیک تو برنامهنویسیه که دادههای دیتابیس رو به شکل اشیاء (objects) تو زبونهای شیگرا مثل پایتون، جاوا یا سیشارپ مدیریت میکنه. به بیان ساده، ORM یه پل ارتباطی بین دنیای شیگرایی (کلاسها و اشیاء) و دنیای دیتابیسهای رابطهای (جداول و ستونها) میسازه. با ORM دیگه لازم نیست مستقیم با کوئریهای SQL کار کنی؛ در عوض، با همون زبون برنامهنویسیات دیتابیس رو کنترل میکنی.
مثلاً به جای اینکه بنویسی:
SELECT * FROM users
میتونی تو پایتون با Django ORM اینجوری بنویسی:
users = User.objects.all()
و همون نتیجه رو بگیری
📚 ORM چطوری کار میکنه؟
فرض کن تو دیتابیست یه جدول به اسم
users داری که ستونهاش اینان: id،nameو
تو برنامهات یه کلاس به اسم
User میسازی که پراپرتیهایی مثل id، name و email داره. ORM این کلاس رو به جدول users توی دیتابیس مپ (map) میکنه. یعنی هر شیء از کلاس User نمایانگر یه رکورد تو جدول users میشه.چند تا سناریو رو با هم ببینیم:
1⃣ ذخیره کردن داده:
یه شیء از کلاس
User میسازی، مقادیرش رو پر میکنی و با یه متد مثل save() ذخیرهاش میکنی. ORM این کار رو به یه دستور SQL (مثل INSERT) تبدیل میکنه و اجرا میکنه.user = User(name='علی', email='[email protected]')
user.save()
2⃣ خوندن داده:
میتونی به جای کوئری SQL، از متدهایی مثل
all() یا filter() استفاده میکنی. ORM پشت صحنه کوئری مناسب رو میسازه و دادهها رو به شکل اشیاء برمیگردونه.# همه کاربرها
users = User.objects.all()
# فیلتر کردن
ali_users =
User.objects.filter(name='علی')
به همین سادگی ORM تمام پیچیدگیهای کار با دیتابیس رو از دید تو مخفی میکنه و یه رابط کاربری راحت بهت میده.
البته هر orm با orm های دیگه فرق داره هرچی یه orm بیشتر abstraction انجام داده باشه استفاده ازش راحت تر میشه🚀 ORM برای چی به وجود اومد؟
ولی توی مقیاس بالاتر همین سادگی باعث پیچیدگی میشه.
قبل از اینکه ORMها باشن، برنامهنویسها مستقیم با SQL کار میکردن. (هرچند همین الانشم توی زبان های هایی که orm مناسبی براش ساخته نشده برنامه نویسان بصورت خام کد sql میزنن مثل برنامه نویسان golang)
این چند تا مشکل داشت و داره:
کدهای طولانی:
برای هر عملیات ساده، باید یه کوئری SQL مینوشتی که گاهی خیلی پیچیده میشد.
خطای زیاد:
یه اشتباه کوچیک تو کوئری (مثل یه typo) میتونست ساعتها وقتت رو تلف کنه.
سختی نگهداری:
اگه ساختار دیتابیست عوض میشد (مثلاً یه ستون اضافه یا کم میشد)، باید همه کوئریها رو دستی تغییر میدادی.
تفاوت پارادایم:
SQL یه زبون declarative (اعلانی) هست، ولی زبونهایی مثل پایتون imperative (دستوری) هستن. این یعنی برنامهنویس باید مدام بین دو مدل فکری جابهجا میشد.
ORM اومد که این مشکلات رو حل کنه:
سادگی:
کار با دیتابیس مثل کار با اشیاء تو زبون خودت میشه.
امنیت:
ORMها معمولاً جلوی حملاتی مثل SQL Injection رو میگیرن.
انعطافپذیری:
میتونی دیتابیس رو عوض کنی (مثلاً از MySQL بری به PostgreSQL) بدون اینکه کل کدت رو تغییر بدی.
سرعت توسعه:
چون کوئرینویسی کمتر میشه، وقت بیشتری برای منطق اصلی برنامهات داری.
جمعبندی ✍
ORM یه ابزار باحال و قدرتمنده که کار با دیتابیس رو برای برنامهنویسها راحتتر، سریعتر و امنتر میکنه. با ORM دیگه لازم نیست با SQL خام کلنجار بری و میتونی با همون زبون برنامهنویسیات همهچیز رو مدیریت کنی.
#️⃣ #database #sql #orm
➖➖➖➖➖➖➖➖➖
🥷 CHANNEL | GROUP
Forwarded from DevTwitter | توییت برنامه نویسی
شاید شما هم مثل عمو فری عاشق axios باشید و دلتون نیاد هیچوقت ازش جدا بشید!
همینطور شیفتهی Next.js 15 که کلی قابلیت خفن بهش اضافه شده!
دل نیست که، دریاست...
ولی یه مشکلی هست!
نکست توی داکیومنتش تاکید کرده که بهتره از fetch استفاده کنید، چون کلی API کاربردی مثل:
- مدت زمان کش (cache)
- صفحات استاتیک (Static Generation)
- بهروزرسانی صفحات بر اساس الگوی زمانی (Revalidation)
رو داره که باعث میشه صفحات شما همیشه بهروز و سریع بمونن.
اما اگر بگم یه راه هست که همه اینارو به axios هم بدیم ، اونوقت چی میگید؟
با استفاده از unstable_cache توی Next.js 15 میتونید axios رو مجهز به کش سرور، revalidation و static generation کنید!
برای این کار کافیه که unstable_cache رو فراخانی کنید و بپیچید دور درخواستتون
و کانفیگ مورد نظرتون رو هم بهش پاس بدید
و کار تمومه !
هر بار که این تابع رو صدا بزنید، اول کش چک میشه و اگه معتبر باشه، بدون درخواست جدید، دادههای کش شده برمیگرده!
َaxios همون axios میمونه، ولی از مزایای کش و ISR در Next.js هم بهره میبرید!
پس دیگه مجبور نیستید بین axios و fetch یکی رو انتخاب کنید!
توضیحات اضافه :
بعضی وقتا درخواستها سمت کلاینت هستن و بعضی وقتا سمت سرور.
برای درخواستهای کلاینتی، من از همین ترکیب + TanStack query استفاده میکنم تا مدیریت درخواستها راحتتر بشه.
البته اگه اصل Single Responsibility رو رعایت کنید، میتونید:
- درخواست unstable_cache رو جدا بسازید
- هوک استفاده از اون در TanStack Query رو هم جدا نگه دارید
و بعد، بسته به نیازتون، هرکدوم رو که لازم داشتید فراخوانی کنی
@DevTwitter | <Fariborz Shalghooni/>
همینطور شیفتهی Next.js 15 که کلی قابلیت خفن بهش اضافه شده!
دل نیست که، دریاست...
ولی یه مشکلی هست!
نکست توی داکیومنتش تاکید کرده که بهتره از fetch استفاده کنید، چون کلی API کاربردی مثل:
- مدت زمان کش (cache)
- صفحات استاتیک (Static Generation)
- بهروزرسانی صفحات بر اساس الگوی زمانی (Revalidation)
رو داره که باعث میشه صفحات شما همیشه بهروز و سریع بمونن.
اما اگر بگم یه راه هست که همه اینارو به axios هم بدیم ، اونوقت چی میگید؟
با استفاده از unstable_cache توی Next.js 15 میتونید axios رو مجهز به کش سرور، revalidation و static generation کنید!
برای این کار کافیه که unstable_cache رو فراخانی کنید و بپیچید دور درخواستتون
و کانفیگ مورد نظرتون رو هم بهش پاس بدید
و کار تمومه !
هر بار که این تابع رو صدا بزنید، اول کش چک میشه و اگه معتبر باشه، بدون درخواست جدید، دادههای کش شده برمیگرده!
َaxios همون axios میمونه، ولی از مزایای کش و ISR در Next.js هم بهره میبرید!
پس دیگه مجبور نیستید بین axios و fetch یکی رو انتخاب کنید!
توضیحات اضافه :
بعضی وقتا درخواستها سمت کلاینت هستن و بعضی وقتا سمت سرور.
برای درخواستهای کلاینتی، من از همین ترکیب + TanStack query استفاده میکنم تا مدیریت درخواستها راحتتر بشه.
البته اگه اصل Single Responsibility رو رعایت کنید، میتونید:
- درخواست unstable_cache رو جدا بسازید
- هوک استفاده از اون در TanStack Query رو هم جدا نگه دارید
و بعد، بسته به نیازتون، هرکدوم رو که لازم داشتید فراخوانی کنی
@DevTwitter | <Fariborz Shalghooni/>
Forwarded from Go Casts 🚀
استخدام دواپس (جونیور یا میدلول) - سازیتو - بصورت هیبرید
Sazito DevOps Engineer
اگر در موقعیت شغلی DevOps Engineer (جونیور یا میدلول) سابقه فعالیت دارید، لطفا رزومه خود را ارسال کنید.
نوع همکاری تمام وقت و هیبرید است.
لطفا این فرم رو پر کنید.
https://survey.porsline.ir/s/xXuaagrl
@gocasts
Sazito DevOps Engineer
اگر در موقعیت شغلی DevOps Engineer (جونیور یا میدلول) سابقه فعالیت دارید، لطفا رزومه خود را ارسال کنید.
نوع همکاری تمام وقت و هیبرید است.
لطفا این فرم رو پر کنید.
https://survey.porsline.ir/s/xXuaagrl
@gocasts
Porsline
devops-140312-sazito
با پُرسلاین به راحتی پرسشنامه خود را طراحی و ارسال کنید و با گزارشهای لحظهای آن به سرعت تصمیم بگیرید.