Forwarded from Geek Alerts
گوگل Doodle نوروز ۱۴۰۴ رو معرفی کرد.
گوگل مثل هر سال برای نوروز، لوگوی خودش رو تغییر میده. این دودل مثل تمامی دودلهای دیگر با آیپی ایران نمایش داده نخواهد شد و برای سایر کشورهایی که نوروز را جشن میگیرند مثل تاجیکستان، ازبکستان، قزاقستان و ... به نمایش گذاشته خواهد شد.
دودل امسال هم توسط طراح ایرانیتبار، پندار یوسفی، طراحی شده است.
🔗 doodles
🤓 hadi @geekalerts
گوگل مثل هر سال برای نوروز، لوگوی خودش رو تغییر میده. این دودل مثل تمامی دودلهای دیگر با آیپی ایران نمایش داده نخواهد شد و برای سایر کشورهایی که نوروز را جشن میگیرند مثل تاجیکستان، ازبکستان، قزاقستان و ... به نمایش گذاشته خواهد شد.
دودل امسال هم توسط طراح ایرانیتبار، پندار یوسفی، طراحی شده است.
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Linuxor ?
Forwarded from Morteza Bashsiz مرتضی باشسیز (Morteza Bashsiz)
درود دوستان
نوروز رو پیشاپیش به همه شما عزیزان شادباش میگم
امیدوارم که همیشه سالم و سربلند و سرحال و خوشحال در کنار عزیزانتون باشید در حالی که جیبتون پر از پول و ذهنتون خالی از ناراحتی هست
ارادتمند شما
مرتضی باشسیز
نوروز رو پیشاپیش به همه شما عزیزان شادباش میگم
امیدوارم که همیشه سالم و سربلند و سرحال و خوشحال در کنار عزیزانتون باشید در حالی که جیبتون پر از پول و ذهنتون خالی از ناراحتی هست
ارادتمند شما
مرتضی باشسیز
Forwarded from کدنویس یکروزه
تبدیل کنندهی کامل واحدها
خوب از هوش مصنوعی Grok که واقعاً در برنامه نویسی از همهی نمونه ها بهتر عمل می کنه و حتا سلیقه اش در ساخت رابط کاربری واقعاً خاص هست، خواستم که اول مشخص کنه چه انواعی از واحدها داریم که عمومی تر و مهم هستن و بعد از مرتب سازی بر اساس اولویت، واحدهای اونها رو هم پیدا کنه و یک اینترفیس جذاب براش بسازه.
واقعاً جالب در آورد به خصوص در نمایش موبایلی که میتونید امتحان کنید.
اما یه چیز جالب ترش اینه که بعد از محاسبه، نتیجه رو به صورت یک جمله ی فارسی هم میسازه که مثلاً یک کیلومتر برابره با ۱۰۰۰ متر!
خوب از هوش مصنوعی Grok که واقعاً در برنامه نویسی از همهی نمونه ها بهتر عمل می کنه و حتا سلیقه اش در ساخت رابط کاربری واقعاً خاص هست، خواستم که اول مشخص کنه چه انواعی از واحدها داریم که عمومی تر و مهم هستن و بعد از مرتب سازی بر اساس اولویت، واحدهای اونها رو هم پیدا کنه و یک اینترفیس جذاب براش بسازه.
واقعاً جالب در آورد به خصوص در نمایش موبایلی که میتونید امتحان کنید.
اما یه چیز جالب ترش اینه که بعد از محاسبه، نتیجه رو به صورت یک جمله ی فارسی هم میسازه که مثلاً یک کیلومتر برابره با ۱۰۰۰ متر!
Forwarded from Syntax | سینتکس (Daimon)
به عنوان آخرین پست امسال این آموزش فان رو بهتون تقدیم می کنم
برای من خیلی پیش اومده ایمیلی که اشاره میکنه پول ریکوئست جدید زده شده رو میبینم و میگم حالا بعدا میرم ریویو میکنم الان حوصلش نیست ولی متاسفانه نصف مواقع یادم میره ریویو کنم و پول ریکوئسته همینجوری نامعلوم باقی میمونه مگه اینکه اون شخص دوباره یادآوری کنه یا اینکه خودم چک کنم پول ریکوئست هارو چیز جدیدی هست یا نه.
با خودم گفتم بهتره هر صبح قبل هر چیزی چک کنم آخرین تغییرات چیا هستن. ولی بازم نمیشه به ذهن فراموش کار آدم ها اعتماد کرد اما اگه میومد بصورت اتوماتیک هرصبح برای پول ریکوئست هایی که باز هستند و ریویو نشدن ایمیل یادآوری میزد، چقدر عالی میشد!
پس دست به کار شدم یچیز فان و جالب بزنم.
حالا چطور اینکارو انجام بدیم؟
گیتهاب اکشن یه قابلیتی داره که میتونیم تنظیم کنیم یه ورکفلو بصورت دوره تکرار همش اجرا بشه
خب پس قسمت اول مسئله حل شد بقیشم که کاری نداره یدونه smtp میخوایم اونم جیمیل در اختیارمون قرار میده و تا روزی 500 تا ایمیل هم رایگان میتونیم ارسال کنیم پس فقط نیازه یه سری ریکوئست و فیلتر ساده بزنیم تا پول ریکوئست های مدنظر رو در بیاریم و به آدرس ایمیل اشخاصی که ریویو میکنن ارسال کنیم.
در نهایت این ورکفلو رو پیادش کردم:
https://github.com/alireza-fa/github-actions/blob/main/.github/workflows/check_prs_and_send_email.yml
#github_action
@syntax_fa
برای من خیلی پیش اومده ایمیلی که اشاره میکنه پول ریکوئست جدید زده شده رو میبینم و میگم حالا بعدا میرم ریویو میکنم الان حوصلش نیست ولی متاسفانه نصف مواقع یادم میره ریویو کنم و پول ریکوئسته همینجوری نامعلوم باقی میمونه مگه اینکه اون شخص دوباره یادآوری کنه یا اینکه خودم چک کنم پول ریکوئست هارو چیز جدیدی هست یا نه.
با خودم گفتم بهتره هر صبح قبل هر چیزی چک کنم آخرین تغییرات چیا هستن. ولی بازم نمیشه به ذهن فراموش کار آدم ها اعتماد کرد اما اگه میومد بصورت اتوماتیک هرصبح برای پول ریکوئست هایی که باز هستند و ریویو نشدن ایمیل یادآوری میزد، چقدر عالی میشد!
پس دست به کار شدم یچیز فان و جالب بزنم.
حالا چطور اینکارو انجام بدیم؟
گیتهاب اکشن یه قابلیتی داره که میتونیم تنظیم کنیم یه ورکفلو بصورت دوره تکرار همش اجرا بشه
خب پس قسمت اول مسئله حل شد بقیشم که کاری نداره یدونه smtp میخوایم اونم جیمیل در اختیارمون قرار میده و تا روزی 500 تا ایمیل هم رایگان میتونیم ارسال کنیم پس فقط نیازه یه سری ریکوئست و فیلتر ساده بزنیم تا پول ریکوئست های مدنظر رو در بیاریم و به آدرس ایمیل اشخاصی که ریویو میکنن ارسال کنیم.
در نهایت این ورکفلو رو پیادش کردم:
https://github.com/alireza-fa/github-actions/blob/main/.github/workflows/check_prs_and_send_email.yml
#github_action
@syntax_fa
Forwarded from 🎄 یک برنامه نویس تنبل (The Lazy 🌱 Raymond)
🔶 دوره آموزش پروژه محور ساخت وب سایت شرکتی با لاراول 12 به روز رسانی شد.
۱۵- افزودن نوتیفیکیشن یا اطلاعیه ها
قیمت دوره 1,499,000 با تخفیف 60 درصد 599,000 تومان
https://rayium.ir/course/?p=1613
#لاراول
@TheRaymondDev
۱۵- افزودن نوتیفیکیشن یا اطلاعیه ها
قیمت دوره 1,499,000 با تخفیف 60 درصد 599,000 تومان
https://rayium.ir/course/?p=1613
#لاراول
@TheRaymondDev
Forwarded from Linuxor ?
سال نو پیشاپیش مبارک! امیدوارم سالی پر از یادگیری و پیشرفت در انتظارتون باشه.
اگه امسال محتوای کانال لینوکسور براتون مفید بوده، خوشحال میشیم ما رو به دوستهای کامپیوتریتون با فوروارد کردن این پست معرفی کنید. اینطوری هم به ما عیدی دادین، هم یه فرصت یادگیری به دوستتون هدیه کردید.
@Linuxor
اگه امسال محتوای کانال لینوکسور براتون مفید بوده، خوشحال میشیم ما رو به دوستهای کامپیوتریتون با فوروارد کردن این پست معرفی کنید. اینطوری هم به ما عیدی دادین، هم یه فرصت یادگیری به دوستتون هدیه کردید.
@Linuxor
Forwarded from یه شعر (Poem Bot)
حافظ | غزلیات | غزل شمارهٔ ۱۳۶
دست در حلقه آن زلف دوتا نتوان کرد
تکیه بر عهد تو و باد صبا نتوان کرد
آن چه سعی است من اندر طلبت بنمایم
این قدر هست که تغییر قضا نتوان کرد
دامن دوست به صد خون دل افتاد به دست
به فسوسی که کند خصم رها نتوان کرد
عارضش را به مثل ماه فلک نتوان گفت
نسبت دوست به هر بی سر و پا نتوان کرد
سرو بالای من آنگه که درآید به سماع
چه محل جامه جان را که قبا نتوان کرد
نظر پاک تواند رخ جانان دیدن
که در آیینه نظر جز به صفا نتوان کرد
مشکل عشق نه در حوصله دانش ماست
حل این نکته بدین فکر خطا نتوان کرد
غیرتم کشت که محبوب جهانی لیکن
روز و شب عربده با خلق خدا نتوان کرد
من چه گویم که تو را نازکی طبع لطیف
تا به حدیست که آهسته دعا نتوان کرد
بجز ابروی تو محراب دل حافظ نیست
طاعت غیر تو در مذهب ما نتوان کرد
#حافظ | گنجور
📍@iipoem
دست در حلقه آن زلف دوتا نتوان کرد
تکیه بر عهد تو و باد صبا نتوان کرد
آن چه سعی است من اندر طلبت بنمایم
این قدر هست که تغییر قضا نتوان کرد
دامن دوست به صد خون دل افتاد به دست
به فسوسی که کند خصم رها نتوان کرد
عارضش را به مثل ماه فلک نتوان گفت
نسبت دوست به هر بی سر و پا نتوان کرد
سرو بالای من آنگه که درآید به سماع
چه محل جامه جان را که قبا نتوان کرد
نظر پاک تواند رخ جانان دیدن
که در آیینه نظر جز به صفا نتوان کرد
مشکل عشق نه در حوصله دانش ماست
حل این نکته بدین فکر خطا نتوان کرد
غیرتم کشت که محبوب جهانی لیکن
روز و شب عربده با خلق خدا نتوان کرد
من چه گویم که تو را نازکی طبع لطیف
تا به حدیست که آهسته دعا نتوان کرد
بجز ابروی تو محراب دل حافظ نیست
طاعت غیر تو در مذهب ما نتوان کرد
#حافظ | گنجور
📍@iipoem
🔥1
Forwarded from IRCF | اینترنت آزاد برای همه
سالی سخت و تاریک را پشتسر گذاشتیم، اما امید همچنان در دلهایمان زنده است.
ایستادهایم، مصممتر از همیشه، در آستانه بهاری که نوید شکفتن و دگرگونی را با خود دارد.
نوروزتان، نوروزمان پیروز باد.
🔍 ircf.space
@ircfspace
ایستادهایم، مصممتر از همیشه، در آستانه بهاری که نوید شکفتن و دگرگونی را با خود دارد.
نوروزتان، نوروزمان پیروز باد.
🔍 ircf.space
@ircfspace
Forwarded from Morteza Bashsiz مرتضی باشسیز (Morteza Bashsiz)
اینا همش نشونست
۹۰۰۰ -> ۹ + ۰ + ۰ + ۰ = ۹
۱۴۰۴ -> ۱ + ۴ + ۰ + ۴ = ۹
۹ / ۹ = ۱
۹ + ۹ = ۱۸
۹ * ۹ = ۸۱
۹ - ۹ = ۰
۸۱ + ۱۸ + ۱ + ۰ = ۱۰۰
😁
۹۰۰۰ -> ۹ + ۰ + ۰ + ۰ = ۹
۱۴۰۴ -> ۱ + ۴ + ۰ + ۴ = ۹
۹ / ۹ = ۱
۹ + ۹ = ۱۸
۹ * ۹ = ۸۱
۹ - ۹ = ۰
۸۱ + ۱۸ + ۱ + ۰ = ۱۰۰
😁
Forwarded from Morteza Bashsiz مرتضی باشسیز (Morteza Bashsiz)
This media is not supported in your browser
VIEW IN TELEGRAM
Forwarded from 🎄 یک برنامه نویس تنبل ( MΞ)
Forwarded from یه آدم عادی (ArshA)
عیدتون مبارک باشه
ارزو میکنم که ۳۶۵ گردش بعدی زمین و همه ی گردش های بعدیش لحظات خوب زیادی براتون به همراه داشته باشه.
@y_adam_adi
ارزو میکنم که ۳۶۵ گردش بعدی زمین و همه ی گردش های بعدیش لحظات خوب زیادی براتون به همراه داشته باشه.
@y_adam_adi
Telegram
یه آدم عادی (ArshA)
شاید علاقمند به پاپ کالچر
شاید...
https://t.iss.one/boost/y_adam_adi
https://www.coffeete.ir/hr_arsha
@Hr_ArshA
شاید...
https://t.iss.one/boost/y_adam_adi
https://www.coffeete.ir/hr_arsha
@Hr_ArshA
Forwarded from 🎄 یک برنامه نویس تنبل ( MΞ)
Forwarded from Md Daily (Mahan)
سلام سلام 💖
اول از همه🎆 🎆 🎆 🎆 🎆 . سالی پر از اتفاقات خوب و پر از Notification's واریزی💸 و از همه مهم تر حال خوب و سلامتی به همراه باگ 🪲 های کمتر براتون آرزو میکنم :)
امیدوارم وقتی آخر سال ۱۴۰۴ رسید به لیست کار هاتون که نگاه می کنید همه ی هدف هاتون رو تیک زده باشید✅
تقریبا سه سال پیش بود که یه گروهی شیش نفره با دوستام داشتیم و خب هنوزم داریم و توی گروه مقالاتی که میخوندم و برام جالب بود رو مینوشتم بعد گفتم خب چرا براش یه کانال نزنم و عمومی ترش نکنم ؟ روزی که این کانال رو با هدف انتشار چیزایی که بلدم و میخونم زدم (۵ آذر ۱۴۰۱) اولین عضو های کانال بچه های همون گروه بودن و الان به لطف شما عزیزان و در کنارتون خانوادمون روز به روز بزرگتر شده و از همتون ممنونم❤️
پ ن :
دوستان از چند روز قبل تذکر دادن با ۴۰۴ شوخی نکنم. منم گفتم حله با ۴۰۳ شوخی میکنم. توی ۴۰۳ همه چیز forbidden، پارتنر پیدا نکردم، ۴۰۴ هم که باهاش شوخی نمیکنیم ایشالا همین جمع ۴۰۵ .
ارادتمند شما
ماهان
---
امسال بیشتر از پارسال کنجکاو باشید :)
🆔 @MdDaily
اول از همه
امیدوارم وقتی آخر سال ۱۴۰۴ رسید به لیست کار هاتون که نگاه می کنید همه ی هدف هاتون رو تیک زده باشید
تقریبا سه سال پیش بود که یه گروهی شیش نفره با دوستام داشتیم و خب هنوزم داریم و توی گروه مقالاتی که میخوندم و برام جالب بود رو مینوشتم بعد گفتم خب چرا براش یه کانال نزنم و عمومی ترش نکنم ؟ روزی که این کانال رو با هدف انتشار چیزایی که بلدم و میخونم زدم (۵ آذر ۱۴۰۱) اولین عضو های کانال بچه های همون گروه بودن و الان به لطف شما عزیزان و در کنارتون خانوادمون روز به روز بزرگتر شده و از همتون ممنونم
پ ن :
دوستان از چند روز قبل تذکر دادن با ۴۰۴ شوخی نکنم. منم گفتم حله با ۴۰۳ شوخی میکنم. توی ۴۰۳ همه چیز forbidden، پارتنر پیدا نکردم، ۴۰۴ هم که باهاش شوخی نمیکنیم ایشالا همین جمع ۴۰۵ .
ارادتمند شما
ماهان
---
امسال بیشتر از پارسال کنجکاو باشید :)
🆔 @MdDaily
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Geniuses Group (Omid Hekayati)
🌏🥳 سال نو مبارک 💐🌳
🧠 قبلا هم بارها اشاره کردیم جشن گرفتن مناسبت ها بر اساس الگوهای توافق شده جمعی، برای انسان ها کلی مزایا داره، یکی از این مزایا خروج ما از روتین های فکری و علمی گرفتار شده در آنها هست. پس به راحتی از کنار این مناسبت ها گذر نکنیم!
💬پیشنهاد می کنم سال جدید را با دقت به اینکه #تفکر یک حالت درونی ما انسان ها هست، بیشتر برای ارتقا این خصیصه درونی وقت بذاریم تا بتونیم درک بهتری از جهان پیرامون خودمون داشته باشیم. وقتی تاکید فراوان به یادگیری انواع تفکر مثل #تفکر_سیستمی یا #تفکر_انتقادی داریم، منظور ارتقا حالت درونی خودمون هست، نیاز نیست به سرعت انتظار داشته باشیم در خروجی های ذهن خودمون تغییری را مشاهده کنیم، یادمون باشه #توسعه امری زمان بر هست. به خودمون فرصت بدیم و از زندگی نهایت #شادی و #لذت را ببریم.
🧠 قبلا هم بارها اشاره کردیم جشن گرفتن مناسبت ها بر اساس الگوهای توافق شده جمعی، برای انسان ها کلی مزایا داره، یکی از این مزایا خروج ما از روتین های فکری و علمی گرفتار شده در آنها هست. پس به راحتی از کنار این مناسبت ها گذر نکنیم!
💬پیشنهاد می کنم سال جدید را با دقت به اینکه #تفکر یک حالت درونی ما انسان ها هست، بیشتر برای ارتقا این خصیصه درونی وقت بذاریم تا بتونیم درک بهتری از جهان پیرامون خودمون داشته باشیم. وقتی تاکید فراوان به یادگیری انواع تفکر مثل #تفکر_سیستمی یا #تفکر_انتقادی داریم، منظور ارتقا حالت درونی خودمون هست، نیاز نیست به سرعت انتظار داشته باشیم در خروجی های ذهن خودمون تغییری را مشاهده کنیم، یادمون باشه #توسعه امری زمان بر هست. به خودمون فرصت بدیم و از زندگی نهایت #شادی و #لذت را ببریم.
Forwarded from Agora (Alireza Azadi)
سلام به همه.
اول که داشتم مینوشتم، میخواستم بگم امسال سال سادهای بود ولی یهو یادم اومد که نخیر! یادم رفت که چه روزهای مهیبی گذشت و البته که این فراموشی حتماً خبر خوبیه و من این رو به فال نیک میگیرم. پوستی کلفت تر از کرگدن و چی مهم تر از این؟ چه چیزی مهمتر از تابآوری؟ همهی اینها در کنار داشتن همراهی ثابت قدم که هرجا نشستم و مشغول به خاکبازی شدم، عاشقانه دستگیر بود و بلندم کرد تا هم قدم بشیم. و رفقایی که بودند و هستند و اونهایی که اومدند و رفتند. چه به جبر، چه به اختیار.
فکر نمیکنم یه روزی برسه که بیام و بگم امسال سال سادهای بود و تا وقتی که تو پستیبلندی این زنده بودن و این زندگی غلت میخورم و تا این کشتی عنقریب به گل نشسته، هنوز به گل ننشسته، چیزی ساده نخواهد بود. باید تو این نفسبریدگیها تماشا کرد.
به هر حال! سال نوتون (کمی زودتر) مبارک. من از آینده تصویری نه چندان واضح ولی حتما روشنی دارم و امیدوارم که آیندهی روشنی پیش روی همهتون باشه. فرصتهایی برای قرار گرفتن در مسیرهای بهتر و انتخابهای تحمیلی خوب و آدمهایی خوبتر از انتخابها.
ارادتمند.
اول که داشتم مینوشتم، میخواستم بگم امسال سال سادهای بود ولی یهو یادم اومد که نخیر! یادم رفت که چه روزهای مهیبی گذشت و البته که این فراموشی حتماً خبر خوبیه و من این رو به فال نیک میگیرم. پوستی کلفت تر از کرگدن و چی مهم تر از این؟ چه چیزی مهمتر از تابآوری؟ همهی اینها در کنار داشتن همراهی ثابت قدم که هرجا نشستم و مشغول به خاکبازی شدم، عاشقانه دستگیر بود و بلندم کرد تا هم قدم بشیم. و رفقایی که بودند و هستند و اونهایی که اومدند و رفتند. چه به جبر، چه به اختیار.
فکر نمیکنم یه روزی برسه که بیام و بگم امسال سال سادهای بود و تا وقتی که تو پستیبلندی این زنده بودن و این زندگی غلت میخورم و تا این کشتی عنقریب به گل نشسته، هنوز به گل ننشسته، چیزی ساده نخواهد بود. باید تو این نفسبریدگیها تماشا کرد.
به هر حال! سال نوتون (کمی زودتر) مبارک. من از آینده تصویری نه چندان واضح ولی حتما روشنی دارم و امیدوارم که آیندهی روشنی پیش روی همهتون باشه. فرصتهایی برای قرار گرفتن در مسیرهای بهتر و انتخابهای تحمیلی خوب و آدمهایی خوبتر از انتخابها.
ارادتمند.
Forwarded from Ninja Learn | نینجا لرن
خب خب خب Alembic 🧪
مروز میخوام درباره یه ابزار کاربردی تو دنیای پایتون حرف بزنم: Alembic اگه با دیتابیس کار میکنین و دنبال یه راه ساده برای مدیریت تغییراتش هستین، این پست برای شماست. بیاین با هم ببینیم Alembic چیه، چطوری کار میکنه و چرا باید ازش استفاده کنین.
🧠 Alembic چیه؟
Alembic یه ابزار متنباز (open-source) برای مدیریت مهاجرتهای دیتابیس (database migrations) تو پایتونه. این ابزار بیشتر با SQLAlchemy (یه ORM معروف) جفتوجوره و بهتون کمک میکنه تغییرات ساختاری دیتابیستون رو (مثل اضافه کردن جدول، تغییر ستون یا حذف فیلد) به صورت خودکار و منظم مدیریت کنین. به جای اینکه دستی کوئریهای SQL بنویسین و دیتابیس رو عوض کنین، Alembic این کار رو براتون ساده و خودکار میکنه.
فکر کنین یه جدول جدید به پروژهتون اضافه کردین یا یه ستون رو تغییر دادین؛ Alembic این تغییرات رو به یه فایل مهاجرت (migration script) تبدیل میکنه که میتونین هر وقت خواستین اعمالش کنین یا حتی برگردونین (rollback).
📚 Alembic چطوری کار میکنه؟
Alembic مثل یه مدیر پروژه برای دیتابیستونه. بیاین قدمبهقدم ببینیم چطوری کار میکنه:
1⃣ نصب و راهاندازی:
اول با
نصبش میکنین. بعد با دستور
یه پوشه برای تنظیماتش میسازین (معمولاً به اسم
2⃣ ساخت Migration:
وقتی مدلهای SQLAlchemyتون رو تغییر میدین (مثلاً یه ستون به کلاس اضافه میکنین)، با دستور زیر Alembic تغییرات رو تشخیص میده و یه اسکریپت Migration میسازه:
این اسکریپت دو تا تابع داره:
3⃣ اعمال migration:
با دستور زیر تغییرات رو روی دیتابیس اعمال میکنین:
اگه بخواین برگردین به نسخه قبلی:
4⃣ مدیریت نسخهها:
Alembic یه جدول به اسم
🚀 چرا Alembic به وجود اومد؟
قبل از ابزارهایی مثل Alembic، اگه میخواستین دیتابیستون رو تغییر بدین، باید خودتون کوئریهای SQL مینوشتین و دستی اجرا میکردین. این چندتا مشکل داشت:
خطا:
پیچیدگی:
بازگشت پذیری:
Alembic اومد که:
اتوماسیون:
نسخه بندی:
هماهنگی:
🛠 یه مثال ساده
فرض کنین یه مدل Sqlalchemy دارین
حالا میخواین یه ستون
با دستور
Alembic یه فایل میسازه که تغییرات رو اعمال میکنه بعد با
دیتابیستون آپدیت میشه. به همین راحتی 😎
جمعبندی ✍
Alembic یه ابزار قدرتمند و باحاله که مدیریت Migrations های دیتابیس رو تو پایتون به یه تجربه لذتبخش تبدیل میکنه. با Alembic دیگه لازم نیست نگران کوئریهای خام یا هماهنگی تیمی باشین؛ همهچیز خودکار و منظمه. اگه با SQLAlchemy کار میکنین، حتماً یه امتحانش کنین و ببینین چقدر زندگیتون رو راحت میکنه.
➖➖➖➖➖➖➖➖➖
مروز میخوام درباره یه ابزار کاربردی تو دنیای پایتون حرف بزنم: Alembic اگه با دیتابیس کار میکنین و دنبال یه راه ساده برای مدیریت تغییراتش هستین، این پست برای شماست. بیاین با هم ببینیم Alembic چیه، چطوری کار میکنه و چرا باید ازش استفاده کنین.
🧠 Alembic چیه؟
Alembic یه ابزار متنباز (open-source) برای مدیریت مهاجرتهای دیتابیس (database migrations) تو پایتونه. این ابزار بیشتر با SQLAlchemy (یه ORM معروف) جفتوجوره و بهتون کمک میکنه تغییرات ساختاری دیتابیستون رو (مثل اضافه کردن جدول، تغییر ستون یا حذف فیلد) به صورت خودکار و منظم مدیریت کنین. به جای اینکه دستی کوئریهای SQL بنویسین و دیتابیس رو عوض کنین، Alembic این کار رو براتون ساده و خودکار میکنه.
فکر کنین یه جدول جدید به پروژهتون اضافه کردین یا یه ستون رو تغییر دادین؛ Alembic این تغییرات رو به یه فایل مهاجرت (migration script) تبدیل میکنه که میتونین هر وقت خواستین اعمالش کنین یا حتی برگردونین (rollback).
📚 Alembic چطوری کار میکنه؟
Alembic مثل یه مدیر پروژه برای دیتابیستونه. بیاین قدمبهقدم ببینیم چطوری کار میکنه:
1⃣ نصب و راهاندازی:
اول با
pip install alembic
نصبش میکنین. بعد با دستور
alembic init نام اختیاری
یه پوشه برای تنظیماتش میسازین (معمولاً به اسم
alembic).2⃣ ساخت Migration:
وقتی مدلهای SQLAlchemyتون رو تغییر میدین (مثلاً یه ستون به کلاس اضافه میکنین)، با دستور زیر Alembic تغییرات رو تشخیص میده و یه اسکریپت Migration میسازه:
alembic revision --autogenerate -m "اضافه کردن ستون جدید"
این اسکریپت دو تا تابع داره:
**upgrade()** برای اعمال تغییرات و**downgrade()** برای برگردوندنش.3⃣ اعمال migration:
با دستور زیر تغییرات رو روی دیتابیس اعمال میکنین:
alembic upgrade head
اگه بخواین برگردین به نسخه قبلی:
alembic downgrade -1
4⃣ مدیریت نسخهها:
Alembic یه جدول به اسم
alembic_version تو دیتابیستون میسازه و نسخه فعلی رو اونجا نگه میداره تا همیشه بدونین کجای کار هستین.🚀 چرا Alembic به وجود اومد؟
قبل از ابزارهایی مثل Alembic، اگه میخواستین دیتابیستون رو تغییر بدین، باید خودتون کوئریهای SQL مینوشتین و دستی اجرا میکردین. این چندتا مشکل داشت:
خطا:
یه اشتباه کوچیک تو کوئری میتونست دیتابیس رو به هم بریزه.
پیچیدگی:
تو پروژههای تیمی، هماهنگ کردن تغییرات دیتابیس بین اعضا سخت بود.
بازگشت پذیری:
اگه یه تغییر اشتباه میکردین، برگردوندنش یه کابوس بود.
Alembic اومد که:
اتوماسیون:
تغییرات رو خودکار تشخیص بده و اسکریپت
بسازه.
نسخه بندی:
تاریخچه تغییرات رو نگه داره و بتونه عقب و
جلو بره.
هماهنگی:
تو تیمها همه بتونن با یه سیستم مشخص کار کنن.
🛠 یه مثال ساده
فرض کنین یه مدل Sqlalchemy دارین
from sqlalchemy import Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)
حالا میخواین یه ستون
email اضافه کنین:class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)
email = Column(String)
با دستور
alembic revision --autogenerate -m "add email"
Alembic یه فایل میسازه که تغییرات رو اعمال میکنه بعد با
alembic upgrade head
دیتابیستون آپدیت میشه. به همین راحتی 😎
جمعبندی ✍
Alembic یه ابزار قدرتمند و باحاله که مدیریت Migrations های دیتابیس رو تو پایتون به یه تجربه لذتبخش تبدیل میکنه. با Alembic دیگه لازم نیست نگران کوئریهای خام یا هماهنگی تیمی باشین؛ همهچیز خودکار و منظمه. اگه با SQLAlchemy کار میکنین، حتماً یه امتحانش کنین و ببینین چقدر زندگیتون رو راحت میکنه.
#️⃣ #db #alembic #sqlalchemy
➖➖➖➖➖➖➖➖➖
🥷 CHANNEL | GROUP