درود دوستان سینتکسی! 👋
ما در انجمن Persian CC Books قصد داریم کتابهای رایگان و آزاد را در زمینه برنامهنویسی منتشر کنیم.
یکی از اهداف ما نگارش مجموعه کتابهای آموزشی PHP است. برای تولید محتوای با کیفیت و درست این مجموعه کتاب PHP، نیاز به مشارکت شما عزیزان در یک نظرسنجی داریم. نظرسنجی در ابتدا دارای سوالات عمومی جهت احراز هویت و افزایش کیفیت نظرسنجی میباشد؛ تمام اطلاعات شما نزد ما محفوظ خواهد ماند.
با تشکر. کوچیک شما، محمد از PCCBs.😇
#public
@Syntax_fa | boost
ما در انجمن Persian CC Books قصد داریم کتابهای رایگان و آزاد را در زمینه برنامهنویسی منتشر کنیم.
یکی از اهداف ما نگارش مجموعه کتابهای آموزشی PHP است. برای تولید محتوای با کیفیت و درست این مجموعه کتاب PHP، نیاز به مشارکت شما عزیزان در یک نظرسنجی داریم. نظرسنجی در ابتدا دارای سوالات عمومی جهت احراز هویت و افزایش کیفیت نظرسنجی میباشد؛ تمام اطلاعات شما نزد ما محفوظ خواهد ماند.
🚀 آدرس نظرسنجی (از طریق پلتفرم پرسلاین):💎 https://survey.porsline.ir/s/tdca0t0f
با تشکر. کوچیک شما، محمد از PCCBs.
#public
@Syntax_fa | boost
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8❤3👍1👏1
✏️ مقدمه: همه ما برنامهنویسان با کمی پیشرفت در حوزه کاری خودمون، کم کم متوجه میشویم که باز دانشمون کافی نیست. معمولا تحقیقات خودمون رو با زبان فارسی شروع میکنیم؛ اما پس از مدتی میفهمیم که اطلاعات به زبان فارسی آنطور که فکر میکنیم هم کاربردی نیستند. اینجاست که متوجه یک موضوع مهم میشویم: زبان انگلیسی بهترین ابزار یادگیری برنامهنویسی است.
– با توجه به اهمیت فراوان این موضوع تصمیم گرفتم برخی نکات کاربردی در مسیر یادگیری را به شما آموزش بدم. پس Let's Go سینتکسیها!
مهمترین نکته در مسیر یادگیری انگلیسی، منبع یادگیری این زبان شیرین است. با انتخاب منبع و روش مطالعه مناسب در این مسیر اصلا احساس ناامیدی نخواهید کرد و با هر بار مطالعه بیشتر به ارتقا دانشتون کمک خواهد نمود.
با توجه به ویژگی شخصیتی خودتون انتخاب کنید که روش خودآموزی برای شما مناسبتر است یا کلاس رفتن. معمولا افرادی که تازه قصد شروع یادگیری را دارند کلاس زبان به آنها توصیه میشود. اما اگر تا حدودی با انگلیسی آشنایی دارید و قصد دارید آن را تقویت سازید روش خودآموزی میتواند برای شما انتخاب خوبی باشد. در کنار خودآموزی میتوانید یک منتور هم داشته باشید.
یادگیری زبان انگلیسی مانند هر مهارت دیگر نیز، نیاز به تمرین زیاد دارد. با داشتن استمرار در فرایند یادگیری زبان انگلیسی، نکاتی را که یادگرفتهاید را فراموش نخواهید کرد و به مرور خواهید توانست حتی انگلیسی فکر کنید!
آیا پس از تولد، برای یادگیری زبان مادری نیاز به زبان دیگری داشتهاید؟ جواب قطعا خیر است؛ پس سعی کنید انگلیسی را حتما با انگلیسی یادبگیرید. توصیه میشود از دیکشنری English To English استفاده کنید و برای فهم جملات و کلمات اصلا نگران نباشید. در صورتی که توضیحات برای شما قابل فهم نباشد کافی است صبر داشته باشید تا به مرور زمان درک نمایید. همچنین میتوانید با جستجو کلمات و دیدن تصاویرشان آنها را به خاطر بسپارید و متوجه شوید.
جملهسازی توسط خودتان سبب به حافظهسپردن میشود و کمتر انگلیسی را فراموش خواهید کرد. با بلند خواندن جملات، عضلات صورت و حنجره خود را به تلفظ واژگان انگلیسی عادت میدهید.
طبق نکته سوم ما برای یادگیری زبان مادری خود فقط تکرار کردهایم. پس در اوایل یادگیری خود مانند اوایل تولد خود فیلسوف نباشید. وسواس داشتن بر گرامر در نهایت سبب گیج شدن شما و در نهایت ناامیدی خودتان میشود.
با استفاده از چنین تکنیکهایی میتوانید مهارت زبان انگلیسی را در بخشهای Listening, Reading, Speaking و Writing تقویت سازید. یکی از معروفترین و کاربردیترین این تکنیکها، تکنیک شادوئینگ است. این تکنیک بسیار ساده است و در طولانی مدت معجزه میکند.
#public #english
@Syntax_fa | boost
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥1👌1
Syntax | سینتکس
درود دوستان سینتکسی! 👋 ما در انجمن Persian CC Books قصد داریم کتابهای رایگان و آزاد را در زمینه برنامهنویسی منتشر کنیم. یکی از اهداف ما نگارش مجموعه کتابهای آموزشی PHP است. برای تولید محتوای با کیفیت و درست این مجموعه کتاب PHP، نیاز به مشارکت شما عزیزان…
دوستان بخدا کیک نیست واقعیه. داوطلبانه کتاب مینویسیم لطفا شرکت کنید. شرکت نکنید حقیقتا انگیزهای نمیمونه برای ما.
هدف ما کاملا غیر تجاریه. دوست داریم کل بچههای ایران زمین به آموزش با کیفیت رایگان دسترسی داشته باشند. دوست نداریم به زبان فارسی همش مطالب تکراری و دورههای بی کیفیت تولید بشه. اون هم دورههایی که بیشتر با هدف درامدزایی انجام میشه و نتیجهای جز پکیج فروشهای اینستاگرامی نداره.
حتی شما هم میتونید همکاری کنید. از کتاب نوشتن تا ترجمه. اما بزرگترین و سادهترین کمک شما دوستان همین شرکت در نظرسنجی هست.
ببخشید که زیاد صحبت کردم. پیام موقتی هست.
هدف ما کاملا غیر تجاریه. دوست داریم کل بچههای ایران زمین به آموزش با کیفیت رایگان دسترسی داشته باشند. دوست نداریم به زبان فارسی همش مطالب تکراری و دورههای بی کیفیت تولید بشه. اون هم دورههایی که بیشتر با هدف درامدزایی انجام میشه و نتیجهای جز پکیج فروشهای اینستاگرامی نداره.
حتی شما هم میتونید همکاری کنید. از کتاب نوشتن تا ترجمه. اما بزرگترین و سادهترین کمک شما دوستان همین شرکت در نظرسنجی هست.
ببخشید که زیاد صحبت کردم. پیام موقتی هست.
👍6👎2❤1
پکیج `python-decouple`
یک ابزار مفید برای جداسازی تنظیمات و پیکربندیهای پروژههای پایتون است. این کار باعث میشود که کد شما از وابستگیهای محیطی جدا باشد و تنظیمات را به راحتی تغییر دهید بدون اینکه نیاز به تغییر در کد داشته باشید. این پکیج به خصوص برای مدیریت متغیرهای محیطی و تنظیمات حساس مانند کلیدهای API، اطلاعات پایگاه داده و غیره بسیار مفید است.
ویژگیها
- مدیریت متغیرهای محیطی: متغیرهای محیطی را از فایل
- پشتیبانی از انواع دادهها: قابلیت تبدیل مقادیر متغیرها به انواع دادهای مختلف مانند
- مقدار پیشفرض: امکان تعریف مقادیر پیشفرض برای متغیرهایی که ممکن است در محیط تنظیم نشده باشند.
نصب
برای نصب پکیج
نحوه استفاده
1. ایجاد فایل `.env`:
ابتدا یک فایل با نام
2. استفاده از `config` در کد پایتون:
در کد پایتون خود، پکیج
3. توضیحات بیشتر:
-
این خط مقدار متغیر
-
این خط مقدار متغیر
-
این خط مقدار متغیر
مثال کامل
فرض کنید یک پروژه ساده دارید که از Flask استفاده میکند و میخواهید تنظیمات خود را با استفاده از
1. ایجاد فایل `.env`:
2. کد پایتون:
این کد یک برنامه ساده Flask ایجاد میکند که تنظیمات خود را از فایل
#python_decouple
@Syntax_fa
یک ابزار مفید برای جداسازی تنظیمات و پیکربندیهای پروژههای پایتون است. این کار باعث میشود که کد شما از وابستگیهای محیطی جدا باشد و تنظیمات را به راحتی تغییر دهید بدون اینکه نیاز به تغییر در کد داشته باشید. این پکیج به خصوص برای مدیریت متغیرهای محیطی و تنظیمات حساس مانند کلیدهای API، اطلاعات پایگاه داده و غیره بسیار مفید است.
ویژگیها
- مدیریت متغیرهای محیطی: متغیرهای محیطی را از فایل
.env بارگذاری میکند.- پشتیبانی از انواع دادهها: قابلیت تبدیل مقادیر متغیرها به انواع دادهای مختلف مانند
int`، `float`، `bool و ...- مقدار پیشفرض: امکان تعریف مقادیر پیشفرض برای متغیرهایی که ممکن است در محیط تنظیم نشده باشند.
نصب
برای نصب پکیج
python-decouple میتوانید از دستور زیر استفاده کنید:pip install python-decouple
نحوه استفاده
1. ایجاد فایل `.env`:
ابتدا یک فایل با نام
.env در ریشه پروژه خود ایجاد کنید و تنظیمات مورد نظر خود را در آن وارد کنید. برای مثال:DEBUG=True
SECRET_KEY=mysecretkey
DATABASE_URL=postgres://user:password@localhost:5432/mydatabase
2. استفاده از `config` در کد پایتون:
در کد پایتون خود، پکیج
decouple را وارد کرده و از Config استفاده کنید:from decouple import config
DEBUG = config('DEBUG', default=False, cast=bool)
SECRET_KEY = config('SECRET_KEY')
DATABASE_URL = config('DATABASE_URL')
3. توضیحات بیشتر:
-
config('DEBUG', default=False, cast=bool):این خط مقدار متغیر
DEBUG را از فایل .env میخواند و آن را به نوع bool تبدیل میکند. اگر این متغیر در فایل .env موجود نباشد، مقدار پیشفرض False استفاده میشود.-
config('SECRET_KEY'):این خط مقدار متغیر
SECRET_KEY را از فایل .env میخواند.-
config('DATABASE_URL'):این خط مقدار متغیر
DATABASE_URL را از فایل .env میخواند.مثال کامل
فرض کنید یک پروژه ساده دارید که از Flask استفاده میکند و میخواهید تنظیمات خود را با استفاده از
python-decouple مدیریت کنید.1. ایجاد فایل `.env`:
DEBUG=True
SECRET_KEY=mysecretkey
DATABASE_URL=sqlite:///mydatabase.db
2. کد پایتون:
from flask import Flask
from decouple import config
app = Flask(__name__)
app.config['DEBUG'] = config('DEBUG', default=False, cast=bool)
app.config['SECRET_KEY'] = config('SECRET_KEY')
app.config['SQLALCHEMY_DATABASE_URI'] = config('DATABASE_URL')
@app.route('/')
def home():
return "Hello, World!"
if __name__ == '__main__':
app.run()
این کد یک برنامه ساده Flask ایجاد میکند که تنظیمات خود را از فایل
.env میخواند. با این کار، میتوانید به راحتی تنظیمات خود را تغییر دهید بدون اینکه نیاز به تغییر در کد داشته باشید.#python_decouple
@Syntax_fa
👍3🔥2❤1👌1
سوال مصاحبه جنگویی:
سطح: سخت
تو جنگو میخوایم هر درخواست HTTP بصورت خودکار توی یک تراکنس دیتابیس قرار بگیره. یعنی اگه هرکدوم از عملیات های دیتابیس در طول پردازش یک درخواست HTTP با خطا مواجه بشه، تموم تغییراتی که توی دیتابیس اعمال شده rollback شه.
بنظرت چیکار میتونیم بکنیم؟
قبل اینکه جوابو ببینی یکم فکر کن یا سرچ کن😒 :
و اما جواب:
میتونیم با اضافه کردن این خط تو settings.py این قابلیت رو اضافه کنیم:
و اما یه جواب خفن و درست تر توسط [abbasi_ai]:
Atomic request
جواب اصلی سوال نیست، بنظرم چیزی جا افتاده
با توجه به صورت سوال؛ فکر میکنم یک session manager هم نیاز هست.
و اگر توی درخواستهای بعدی یوزر هم چیزی به خطا بخوره تا درخواست اصلی همه چیز باید
Rollback
بخوره
اگه فقط بخوایم تو ویو های خاصی atomic requets رو داشته باشیم چیکار کنیم؟
و جواب این سوال:
میتونیم از دکوریتور atomic استفاده کنیم:
#interview_question #django
@Syntax_fa
سطح: سخت
تو جنگو میخوایم هر درخواست HTTP بصورت خودکار توی یک تراکنس دیتابیس قرار بگیره. یعنی اگه هرکدوم از عملیات های دیتابیس در طول پردازش یک درخواست HTTP با خطا مواجه بشه، تموم تغییراتی که توی دیتابیس اعمال شده rollback شه.
بنظرت چیکار میتونیم بکنیم؟
قبل اینکه جوابو ببینی یکم فکر کن یا سرچ کن
و اما جواب:
میتونیم با اضافه کردن این خط تو settings.py این قابلیت رو اضافه کنیم:
DATABASES["default"]["ATOMIC_REQUESTS"] = True
و اما یه جواب خفن و درست تر توسط [abbasi_ai]:
Atomic request
جواب اصلی سوال نیست، بنظرم چیزی جا افتاده
با توجه به صورت سوال؛ فکر میکنم یک session manager هم نیاز هست.
و اگر توی درخواستهای بعدی یوزر هم چیزی به خطا بخوره تا درخواست اصلی همه چیز باید
Rollback
بخوره
اگه فقط بخوایم تو ویو های خاصی atomic requets رو داشته باشیم چیکار کنیم؟
و جواب این سوال:
میتونیم از دکوریتور atomic استفاده کنیم:
from django.db import transaction
from django.views import View
class MyView(View):
@transaction.atomic
def get(self, request, *args, **kwargs):
...
#interview_question #django
@Syntax_fa
Please open Telegram to view this post
VIEW IN TELEGRAM
👀8👍6👌3❤2
This media is not supported in your browser
VIEW IN TELEGRAM
از اونجا که بعضیاتون گفتید چرا همش درباره سی شارپو پی اچ پی میم میذاری. اینم یه میم درباره پایتون
#fun
@Syntax_fa
#fun
@Syntax_fa
🤣28❤🔥4👎3👍2👌1
اگه کدی که مینویسی، این ویژگی هارو نداره، یه فکری به حال خودت کن 😔 :
۱. کدتون مستقل از فریم ورک باشه:
معماری شما نباید وابسته به یه فریم ورک خاص باشه.
کدتون این امکانو بده از فریم ورک ها مثل ابزار ها استفاده کنید بدون اینکه وابسته به محدودیت های یک فریم ورک خاص بشید.
۲. کدتون قابل تست کردن باشه:
قابل تست بودن به این معنیه که بتونید business logic هارو بدون یو آی، دیتابیس، وب سرور یا هر چی وابستگی خارجی که هست، تست کنید.
۳. نباید به ui وابستگی داشته باشید!
قسمت ui رو باید بتونید به راحتی جایگزینش کنید.
مثلا از یک وب ui بتونید بدون اینکه قسمت های دیگه کدتون تغییره کنه، به کنسول و برنامه cli تغییرش بدید.
۴. معماریتون باید مستقل از دیتابیس باشه!
برای مثال: میتونید دیتابیستون رو به راحتی از mysql به mongodb تغییر بدید؟
۵. نباید به یک سرویس خارجی وابستگی داشته باشید!
برای مثال اگه از سرویس اس ام اس استفاده میکنید، آیا میتونید به راحتی بجای کاوه نگار از یه سرویس دیگه استفاده کنید؟
منبع:
https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html
#note
@Syntax_fa
۱. کدتون مستقل از فریم ورک باشه:
معماری شما نباید وابسته به یه فریم ورک خاص باشه.
کدتون این امکانو بده از فریم ورک ها مثل ابزار ها استفاده کنید بدون اینکه وابسته به محدودیت های یک فریم ورک خاص بشید.
۲. کدتون قابل تست کردن باشه:
قابل تست بودن به این معنیه که بتونید business logic هارو بدون یو آی، دیتابیس، وب سرور یا هر چی وابستگی خارجی که هست، تست کنید.
۳. نباید به ui وابستگی داشته باشید!
قسمت ui رو باید بتونید به راحتی جایگزینش کنید.
مثلا از یک وب ui بتونید بدون اینکه قسمت های دیگه کدتون تغییره کنه، به کنسول و برنامه cli تغییرش بدید.
۴. معماریتون باید مستقل از دیتابیس باشه!
برای مثال: میتونید دیتابیستون رو به راحتی از mysql به mongodb تغییر بدید؟
۵. نباید به یک سرویس خارجی وابستگی داشته باشید!
برای مثال اگه از سرویس اس ام اس استفاده میکنید، آیا میتونید به راحتی بجای کاوه نگار از یه سرویس دیگه استفاده کنید؟
منبع:
https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html
#note
@Syntax_fa
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13👌4👎3🔥2❤1
با پیشرفت فنّاوری و توسعه روزافزون استفاده از نرمافزارها و هوش مصنوعی، استفاده از ابزارها و مکانیزمهای مختلفی برای توسعهٔ سریع و باکیفیت نرمافزارها ضروری است. در این کتاب مجموعه مواردی بیان شده است که به معرفی و پیادهسازی این روشها میپردازند. چه برای افزایش دانش در حوزه نرمافزار و چه برای آشنایی با ابزارها و روشهای پیادهسازی نرمافزارهای مدرن و چه برای آمادگی برای مصاحبههای شغلی برای مهندسی نرمافزار، این کتاب برای شما بسیار مناسب است.
لینک دانلود کتاب
آدرس گیتهاب این کتاب برای بروزرسانیها
https://system-design.ir
Source:
@GoInsights
#book
@Syntax_fa
لینک دانلود کتاب
آدرس گیتهاب این کتاب برای بروزرسانیها
https://system-design.ir
Source:
@GoInsights
#book
@Syntax_fa
👍9❤2🔥1
GHOFLE
قفله یک پروژه اپن سورس جنگویی است.
تمرکز اصلی پروژه کار با AWS S3 و Authentication و Payment service هستش.
از اساتید و افراد باتجربه درخواست میکنم اگه میتونن یه نگاه به سورس کد پروژه بندازن و مشکلاتش رو تو کامنت همین پست یا پیوی بگن🙏
نهایت هدف اینه تبدیل به یه پروژه اپن سورس خوب بشه تا بدرد بقیه افراد بخوره
(همچنین اگه دوست دارید برای توسعه پروژه مشارکت داشته باشید، پیوی پیام بدید)
https://github.com/alireza-fa/ghofle
قفله یک پروژه اپن سورس جنگویی است.
تمرکز اصلی پروژه کار با AWS S3 و Authentication و Payment service هستش.
از اساتید و افراد باتجربه درخواست میکنم اگه میتونن یه نگاه به سورس کد پروژه بندازن و مشکلاتش رو تو کامنت همین پست یا پیوی بگن🙏
نهایت هدف اینه تبدیل به یه پروژه اپن سورس خوب بشه تا بدرد بقیه افراد بخوره
(همچنین اگه دوست دارید برای توسعه پروژه مشارکت داشته باشید، پیوی پیام بدید)
https://github.com/alireza-fa/ghofle
GitHub
GitHub - alireza-fa/ghofle: Ghofle is a web service for securely exchanging your files. With Ghofle, you can easily sell your files.…
Ghofle is a web service for securely exchanging your files. With Ghofle, you can easily sell your files. For enhanced file security, the AMAZON AWS S3 storage service is utilized, and expiring link...
🔥7❤2👍2👏1
هفت روش برای پیاده سازی dto ها در پایتون:
https://dev.to/izabelakowal/some-ideas-on-how-to-implement-dtos-in-python-be3
#python #dto
@Syntax_fa
https://dev.to/izabelakowal/some-ideas-on-how-to-implement-dtos-in-python-be3
#python #dto
@Syntax_fa
DEV Community
7 ways to implement DTOs in Python and what to keep in mind
Data Transfer Objects are simply data structures typically used to pass data between application...
🔥5👍3❤2👎1
Gitmoji
وبسایت [Gitmoji](https://gitmoji.dev/) یک منبع آنلاین است که به توسعهدهندگان کمک میکند تا از ایموجیها در پیامهای کامیتهای خود استفاده کنند. این وبسایت مجموعهای از ایموجیها را فراهم میکند که هر یک به یک نوع تغییر یا فعالیت خاص در کد اشاره دارند. به عنوان مثال:
- 🐛: برای فیکس کردن باگها
- ✨: برای اضافه کردن یک ویژگی جدید
- 📝: برای بهروزرسانی مستندات
- 🎨: برای بهبود ساختار یا ظاهر کد بدون تغییر عملکرد
استفاده از Gitmoji باعث میشود که تاریخچه کامیتها خواناتر و قابل فهمتر شود و اعضای تیم توسعهدهنده بتوانند با نگاه به ایموجیها به سرعت متوجه نوع تغییرات اعمال شده شوند. این ابزار بهخصوص برای پروژههای متنباز و تیمهای بزرگی که بر روی یک کدبیس کار میکنند، مفید است.
مثال:
#note #gitmoji
@Syntax_Fa
وبسایت [Gitmoji](https://gitmoji.dev/) یک منبع آنلاین است که به توسعهدهندگان کمک میکند تا از ایموجیها در پیامهای کامیتهای خود استفاده کنند. این وبسایت مجموعهای از ایموجیها را فراهم میکند که هر یک به یک نوع تغییر یا فعالیت خاص در کد اشاره دارند. به عنوان مثال:
- 🐛: برای فیکس کردن باگها
- ✨: برای اضافه کردن یک ویژگی جدید
- 📝: برای بهروزرسانی مستندات
- 🎨: برای بهبود ساختار یا ظاهر کد بدون تغییر عملکرد
استفاده از Gitmoji باعث میشود که تاریخچه کامیتها خواناتر و قابل فهمتر شود و اعضای تیم توسعهدهنده بتوانند با نگاه به ایموجیها به سرعت متوجه نوع تغییرات اعمال شده شوند. این ابزار بهخصوص برای پروژههای متنباز و تیمهای بزرگی که بر روی یک کدبیس کار میکنند، مفید است.
مثال:
git commit -m ":bug: fix a bug"
#note #gitmoji
@Syntax_Fa
👍9🔥3❤1👎1
زبون برنامه نویسیت پرحرفه یا کم حرفه ؟🤏
موقع صحبت از کد زبانهای برنامهنویسی، کلمات verbose و concise زیاد به گوشمان میخورند.
Verbose:
هرچقدر یک زبان برنامهنویسی بیشتر با شما حرف بزند، برای مثال برای انجام یک کار، استپهایی که طی کرده بیشتر در کد دیده شوند و بهصراحت نوشته شوند، آن زبان پرحرفتر است و به آن زبان verbose میگویند.
Concise:
از طرف دیگر، هرچقدر یک زبان برنامهنویسی برای انجام یک سری کارها، استپهایی که انجام شده کمتر در کد بیایند یا بهعبارتی ضمنی انجام شوند، به آن زبان کمحرف یا concise میگویند.
حالا یک مثال از نحوه خواندن خط به خط فایل در🥰 و 🐍 ببینیم:
بسیاری از استپها بهطور صریح در کد آمدهاند. فایل را باز میکنیم و یک اسکنر تعریف میکنیم و ...
حالا اگر میخواستیم از فایل بخوانیم و در یک متغیر بریزیم، باید درباره این تصمیم میگرفتیم که چطور انجامش دهیم. مثلاً یک آرایه خالی میسازیم، سپس حلقه میزنیم و یک آرایه با ظرفیت مشخص (مثلاً صد تا) تعریف میکنیم. سپس صد تا صد تا از فایل میخوانیم. چک میکنیم ببینیم تعداد بایتهایی که خواندیم چقدر بودهاند و به همان تعداد در آرایه نهایی میریزیم. اگر خطا از نوع End of File بود، یعنی بدون مشکل کل فایل را خواندهایم و...
خب حالا ببینیم در پایتون چطور خط به خط از فایل میخوانیم:
در Python، تمام مراحل خواندن فایل بهطور خلاصه و با کد کمتری انجام میشود. فایل را با استفاده از
شما بگید زبونی که پرحرف باشه رو میپسندید یا زبونی که کم حرف باشه؟
@Syntax_fa
موقع صحبت از کد زبانهای برنامهنویسی، کلمات verbose و concise زیاد به گوشمان میخورند.
Verbose:
هرچقدر یک زبان برنامهنویسی بیشتر با شما حرف بزند، برای مثال برای انجام یک کار، استپهایی که طی کرده بیشتر در کد دیده شوند و بهصراحت نوشته شوند، آن زبان پرحرفتر است و به آن زبان verbose میگویند.
Concise:
از طرف دیگر، هرچقدر یک زبان برنامهنویسی برای انجام یک سری کارها، استپهایی که انجام شده کمتر در کد بیایند یا بهعبارتی ضمنی انجام شوند، به آن زبان کمحرف یا concise میگویند.
حالا یک مثال از نحوه خواندن خط به خط فایل در
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
file, err := os.Open("example.txt")
if err != nil {
fmt.Println("Error opening file:", err)
return
}
defer file.Close()
scanner := bufio.NewScanner(file)
for scanner.Scan() {
fmt.Println(scanner.Text())
}
if err := scanner.Err(); err != nil {
fmt.Println("Error reading file:", err)
}
}
بسیاری از استپها بهطور صریح در کد آمدهاند. فایل را باز میکنیم و یک اسکنر تعریف میکنیم و ...
حالا اگر میخواستیم از فایل بخوانیم و در یک متغیر بریزیم، باید درباره این تصمیم میگرفتیم که چطور انجامش دهیم. مثلاً یک آرایه خالی میسازیم، سپس حلقه میزنیم و یک آرایه با ظرفیت مشخص (مثلاً صد تا) تعریف میکنیم. سپس صد تا صد تا از فایل میخوانیم. چک میکنیم ببینیم تعداد بایتهایی که خواندیم چقدر بودهاند و به همان تعداد در آرایه نهایی میریزیم. اگر خطا از نوع End of File بود، یعنی بدون مشکل کل فایل را خواندهایم و...
خب حالا ببینیم در پایتون چطور خط به خط از فایل میخوانیم:
with open("example.txt", "r") as file:
for line in file:
print(line.strip())در Python، تمام مراحل خواندن فایل بهطور خلاصه و با کد کمتری انجام میشود. فایل را با استفاده از
with باز میکنیم که بهطور خودکار فایل را بعد از اتمام عملیات میبندد. سپس با یک حلقه for، خط به خط فایل را میخوانیم و چاپ میکنیم.شما بگید زبونی که پرحرف باشه رو میپسندید یا زبونی که کم حرف باشه؟
@Syntax_fa
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥5❤1
دنیای تکنولوژی و Buzzwordها: حقیقت پشت واژههای پر زرق و برق
در دنیای پر سرعت و پیچیده تکنولوژی، واژههای پر زرق و برق یا همان buzzwordها همواره نقش مهمی ایفا کردهاند. این واژهها اغلب به عنوان نمادهای نوآوری و پیشرفت معرفی میشوند، اما واقعیت این است که بسیاری از آنها چیزی جز بازتعریف مفاهیم قدیمی با نامهای جدید نیستند.
Buzzword
به واژه یا عبارتی گفته میشود که بهطور گسترده در رسانهها و گفتگوهای عمومی استفاده میشود و به نظر میرسد که نشاندهنده یک مفهوم جدید و پیشرفته است. این واژهها اغلب برای جلب توجه، ایجاد هیجان و فروش محصولات یا خدمات استفاده میشوند.
واژههای پر زرق و برق در صنعت تکنولوژی سابقه طولانی دارند. از دهه ۱۹۶۰ میلادی، وقتی که واژههایی مانند "cybernetics" و "artificial intelligence" برای اولین بار مطرح شدند، buzzwordها همواره بخشی از تبلیغات و بازاریابی تکنولوژی بودهاند.
چگونه Buzzwordها شکل میگیرند؟
1. بازتعریف مفاهیم قدیمی
بسیاری از buzzwordها در واقع چیزی جز بازتعریف مفاهیم قدیمی با نامهای جدید نیستند. برای مثال، مفهوم "cloud computing" در واقع بازتعریفی از ایده قدیمی "remote hosting" یا "shared services" است.
2. بازاریابی و تبلیغات
شرکتهای تکنولوژی اغلب از buzzwordها به عنوان ابزاری برای بازاریابی استفاده میکنند. این واژهها به ایجاد هیجان و جذب مشتریان جدید کمک میکنند. به عنوان مثال، واژه "Big Data" به مجموعه دادههای بزرگ اشاره دارد که نیاز به تحلیل پیچیده دارند، اما این مفهوم از دههها پیش وجود داشته است.
3. موجهای نوآوری
هرچند برخی buzzwordها تنها بازتعریفی از مفاهیم قدیمی هستند، اما برخی دیگر واقعاً نمایانگر نوآوریهای جدید هستند. به عنوان مثال، "Blockchain" یک تکنولوژی جدید است که واقعاً تغییرات بزرگی در حوزههای مختلف ایجاد کرده است.
تاثیرات Buzzwordها بر صنعت
1. ایجاد انتظارات غیرواقعی
یکی از مشکلات اصلی buzzwordها ایجاد انتظارات غیرواقعی است. مشتریان و کاربران ممکن است تصور کنند که یک فناوری جدید همه مشکلاتشان را حل میکند، اما در واقعیت، این فناوریها ممکن است محدودیتها و مشکلات خاص خود را داشته باشند.
2. سرمایهگذاریهای نادرست
شرکتها و سازمانها ممکن است به دلیل هیجان و تبلیغات پیرامون یک buzzword، سرمایهگذاریهای نادرستی انجام دهند. این سرمایهگذاریها ممکن است به نتایج مطلوب نرسند و منابع مالی و زمانی زیادی را هدر دهند.
ما برنامه نویسا وقتی با یه buzzword مواجه میشیم بهترین کار اینه اول به اندازه کافی تحقیق کنیم بعد اگه دیدیم واقعا ابزار و تکنولوژی بدرد بخوری برای کارمون هستش، بریم سمتش.
#buzzword
@Syntax_fa
در دنیای پر سرعت و پیچیده تکنولوژی، واژههای پر زرق و برق یا همان buzzwordها همواره نقش مهمی ایفا کردهاند. این واژهها اغلب به عنوان نمادهای نوآوری و پیشرفت معرفی میشوند، اما واقعیت این است که بسیاری از آنها چیزی جز بازتعریف مفاهیم قدیمی با نامهای جدید نیستند.
Buzzword
به واژه یا عبارتی گفته میشود که بهطور گسترده در رسانهها و گفتگوهای عمومی استفاده میشود و به نظر میرسد که نشاندهنده یک مفهوم جدید و پیشرفته است. این واژهها اغلب برای جلب توجه، ایجاد هیجان و فروش محصولات یا خدمات استفاده میشوند.
واژههای پر زرق و برق در صنعت تکنولوژی سابقه طولانی دارند. از دهه ۱۹۶۰ میلادی، وقتی که واژههایی مانند "cybernetics" و "artificial intelligence" برای اولین بار مطرح شدند، buzzwordها همواره بخشی از تبلیغات و بازاریابی تکنولوژی بودهاند.
چگونه Buzzwordها شکل میگیرند؟
1. بازتعریف مفاهیم قدیمی
بسیاری از buzzwordها در واقع چیزی جز بازتعریف مفاهیم قدیمی با نامهای جدید نیستند. برای مثال، مفهوم "cloud computing" در واقع بازتعریفی از ایده قدیمی "remote hosting" یا "shared services" است.
2. بازاریابی و تبلیغات
شرکتهای تکنولوژی اغلب از buzzwordها به عنوان ابزاری برای بازاریابی استفاده میکنند. این واژهها به ایجاد هیجان و جذب مشتریان جدید کمک میکنند. به عنوان مثال، واژه "Big Data" به مجموعه دادههای بزرگ اشاره دارد که نیاز به تحلیل پیچیده دارند، اما این مفهوم از دههها پیش وجود داشته است.
3. موجهای نوآوری
هرچند برخی buzzwordها تنها بازتعریفی از مفاهیم قدیمی هستند، اما برخی دیگر واقعاً نمایانگر نوآوریهای جدید هستند. به عنوان مثال، "Blockchain" یک تکنولوژی جدید است که واقعاً تغییرات بزرگی در حوزههای مختلف ایجاد کرده است.
تاثیرات Buzzwordها بر صنعت
1. ایجاد انتظارات غیرواقعی
یکی از مشکلات اصلی buzzwordها ایجاد انتظارات غیرواقعی است. مشتریان و کاربران ممکن است تصور کنند که یک فناوری جدید همه مشکلاتشان را حل میکند، اما در واقعیت، این فناوریها ممکن است محدودیتها و مشکلات خاص خود را داشته باشند.
2. سرمایهگذاریهای نادرست
شرکتها و سازمانها ممکن است به دلیل هیجان و تبلیغات پیرامون یک buzzword، سرمایهگذاریهای نادرستی انجام دهند. این سرمایهگذاریها ممکن است به نتایج مطلوب نرسند و منابع مالی و زمانی زیادی را هدر دهند.
ما برنامه نویسا وقتی با یه buzzword مواجه میشیم بهترین کار اینه اول به اندازه کافی تحقیق کنیم بعد اگه دیدیم واقعا ابزار و تکنولوژی بدرد بخوری برای کارمون هستش، بریم سمتش.
#buzzword
@Syntax_fa
👍8👌1
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣23😱5😁2❤🔥1
Foodanywhere
پروژه Foodanywhere یک پروژه food delivery جنگویی هستش.
- از Postgis برای ثبت اطلاعات جغرافیایی استفاده میکنه.
- این پروژه برای مانیتورینگ از prometheus استفاده میکنه.
- برای مدیریت لاگ ها از loki استفاده میکنه.
- برای دیپلویمنت از kubernetes استفاده میشه و برای ci/cd از github actions.
- اکثر بخش ها هم تست شده و تمامی تستا با pytest نوشته شدن
لطفاً نظراتتون رو جهت بهتر کردن پروژه، حتما در میون بذارید🙏
سورس کد پروژه:
(برای حمایت از محمد، استار فراموش نشه🍸 )
https://github.com/mohamad-liyaghi/FoodAnywhere
#django #project
@Syntax_fa
پروژه Foodanywhere یک پروژه food delivery جنگویی هستش.
- از Postgis برای ثبت اطلاعات جغرافیایی استفاده میکنه.
- این پروژه برای مانیتورینگ از prometheus استفاده میکنه.
- برای مدیریت لاگ ها از loki استفاده میکنه.
- برای دیپلویمنت از kubernetes استفاده میشه و برای ci/cd از github actions.
- اکثر بخش ها هم تست شده و تمامی تستا با pytest نوشته شدن
لطفاً نظراتتون رو جهت بهتر کردن پروژه، حتما در میون بذارید
سورس کد پروژه:
(برای حمایت از محمد، استار فراموش نشه
https://github.com/mohamad-liyaghi/FoodAnywhere
#django #project
@Syntax_fa
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13👏2❤1❤🔥1🎉1
از اونجا که بچه های گروه زیادی از جنگو خوششون میاد، اینم چند تا نکته جنگویی(قسمت اول):
۱. چطور از ایمپورت circular تو مدل هامون جلوگیری کنیم؟
برای جلوگیری از این مشکل، جنگو برامون یه راه حل گذاشته. فرض کنید به یه مدل دیگه فارن کی زدید. بجای اینکه مستقیم ایمپورتش کنید. میایم داخل استرینگ بهش میگیم که به کدوم مدل فارن کی بخوره.
مثال:
2. مدل های داخل یک اپ رو بشکنید!
پیشنهاد اینه مدل های یک اپ خیلی زیاد نشه. اما اگه دلایل مشخصی دارید، بهتره مدل هارو داخل یک پکیج قرار بدید تا زیادی شلوغ نشه.
برای اینکار داخل اپ یک پکیج به اسم models میسازیم و داخل فایل های مختلف مدل هامون رو قرار میدیم. در نهایت داخل init ایمپورتشون میکنیم:
3. کوئری هامون چقدر بهینه هستن؟
خب بیاید با نوشتن یدونه دکوریتور بررسی کنیم:
خروجی دکوریتور در دو حالت مختلف:
میبینیم که پدر دیتابیسو درآورده. ولی با استفاده از select_related تعداد کوئری ها از 4 تا به یکی میرسه.
پس همیشه از روش هایی استفاده کنید برای اینکه کوئری هایی که میزنید رو بررسی کنید.
#django
@Syntax_fa
۱. چطور از ایمپورت circular تو مدل هامون جلوگیری کنیم؟
برای جلوگیری از این مشکل، جنگو برامون یه راه حل گذاشته. فرض کنید به یه مدل دیگه فارن کی زدید. بجای اینکه مستقیم ایمپورتش کنید. میایم داخل استرینگ بهش میگیم که به کدوم مدل فارن کی بخوره.
مثال:
app1/models.py
class ModelOne(models.Model):
...
app2/models.py
class ModelTwo(models.Model):
model_one = models.ForeignKey("app1.ModelOne")
2. مدل های داخل یک اپ رو بشکنید!
پیشنهاد اینه مدل های یک اپ خیلی زیاد نشه. اما اگه دلایل مشخصی دارید، بهتره مدل هارو داخل یک پکیج قرار بدید تا زیادی شلوغ نشه.
برای اینکار داخل اپ یک پکیج به اسم models میسازیم و داخل فایل های مختلف مدل هامون رو قرار میدیم. در نهایت داخل init ایمپورتشون میکنیم:
#### blog_app/models/__init__.py
from .comment import Comment
from .post import Post
#### blog_app/models/comment.py
class Comment(models.Model):
# comment fields
#### blog_app/models/post.py
3. کوئری هامون چقدر بهینه هستن؟
خب بیاید با نوشتن یدونه دکوریتور بررسی کنیم:
from django.db import connection
from django.db import reset_queries
def database_debug(func):
def inner_func(*args, **kwargs):
reset_queries()
results = func(*args, **kwargs)
query_info = connection.queries
print(f'function_name: {func.__name__}')
print(f'query_count: {len(query_info)}')
queries = [f'{ query["sql"]}\n' for query in query_info]
print(f'queries: \n{"".join(queries)}')
return results
return inner_func
خروجی دکوریتور در دو حالت مختلف:
@database_debug
def regular_query():
blogs = models.Blog.objects.all()
return [blog.author.name for blog in blogs]
## OUTPUT
function_name: regular_query
query_count: 4
queries:
SELECT "blog_blog"."id", "blog_blog"."noscript",
"blog_blog"."content", "blog_blog"."author_id",
"blog_blog"."created_at", "blog_blog"."updated_at" FROM
"blog_blog"
SELECT "author_author"."id", "author_author"."name",
"author_author"."email", "author_author"."bio" FROM
"author_author" WHERE "author_author"."id" = 1 LIMIT 21
SELECT "author_author"."id", "author_author"."name",
"author_author"."email", "author_author"."bio" FROM
"author_author" WHERE "author_author"."id" = 2 LIMIT 21
SELECT "author_author"."id", "author_author"."name",
"author_author"."email", "author_author"."bio" FROM
"author_author" WHERE "author_author"."id" = 2 LIMIT 21
میبینیم که پدر دیتابیسو درآورده. ولی با استفاده از select_related تعداد کوئری ها از 4 تا به یکی میرسه.
پس همیشه از روش هایی استفاده کنید برای اینکه کوئری هایی که میزنید رو بررسی کنید.
#django
@Syntax_fa
🔥6👍3
polymorphism in relational database
این پست درباره یکی از مفاهیم ساده ای هستش که خیلی بدرد بخوره.
بیاید با مثال بررسی کنیم.
فرض کنید ما یک مدل order داریم که انواع مختلفی از محصولات رو میفروشیم.
برای مثال اشتراک میفروشیم که وقتی اشتراک رو میخرن به یه سری سرویس هامون دسترسی خواهند داشت.
در کنار اشتراک یک سری محصولات فیزیکی هم میفروشیم.
در کنار همه اینا یه سری خدمات دیگه هم داریم که پرداخت نیاز دارن.
خب شاید اولین چیزی که بهش فکر میکنیم این باشه بیایم داخل تیبل order فیلد هایی مثل plan و product و ... رو قرار بدیم بعد اگه هرکدوم null نبود یعنی order مربوط به اون خدمات یا محصول هستش:
اما روش بهتر اینه بیایم دوتا فیلد به اسم type_name و type_id ذخیره کنیم. اگه type_name مثلا plan بود پس order مربوط به پلن با آیدی فلان هستش پس موقعی که خرید موفقیت آمیز بود میدونیم باید چه اکشنی داشته باشیم.
توسعه در آینده هم برامون خیلی راحت تر میشه بدون اینکه نیازی باشه تیبل order تغییری کنه.
#note
@Syntax_fa
این پست درباره یکی از مفاهیم ساده ای هستش که خیلی بدرد بخوره.
بیاید با مثال بررسی کنیم.
فرض کنید ما یک مدل order داریم که انواع مختلفی از محصولات رو میفروشیم.
برای مثال اشتراک میفروشیم که وقتی اشتراک رو میخرن به یه سری سرویس هامون دسترسی خواهند داشت.
در کنار اشتراک یک سری محصولات فیزیکی هم میفروشیم.
در کنار همه اینا یه سری خدمات دیگه هم داریم که پرداخت نیاز دارن.
خب شاید اولین چیزی که بهش فکر میکنیم این باشه بیایم داخل تیبل order فیلد هایی مثل plan و product و ... رو قرار بدیم بعد اگه هرکدوم null نبود یعنی order مربوط به اون خدمات یا محصول هستش:
CREATE TABLE order (
id INT PRIMARY KEY AUTO_INCREMENT,
...
plan_id INT NULL,
product_id INT NULL,
)
اما روش بهتر اینه بیایم دوتا فیلد به اسم type_name و type_id ذخیره کنیم. اگه type_name مثلا plan بود پس order مربوط به پلن با آیدی فلان هستش پس موقعی که خرید موفقیت آمیز بود میدونیم باید چه اکشنی داشته باشیم.
توسعه در آینده هم برامون خیلی راحت تر میشه بدون اینکه نیازی باشه تیبل order تغییری کنه.
#note
@Syntax_fa
👍4🔥1👌1
Gracefully shutdown
در برنامهنویسی، فرآیند "gracefully shutdown" به معنی خاموش کردن برنامه بهصورتی است که از بروز اختلالات و از دست رفتن دادهها جلوگیری شود. این موضوع در سیستمهای توزیعشده، سرورها و برنامههای بلادرنگ اهمیت بیشتری پیدا میکند.
مدیریت سیگنالها
- سیگنالها: سیستمعاملها سیگنالهایی مثل
لیستی از سیگنال های LINUX. هر سیگنال معنی خاص خودش رو داره. SIGTERM به معنی سیگنالی هستش که برای Process termination ارسال شده است.
https://faculty.cs.niu.edu/~hutchins/csci480/signals.htm
- واکنش به سیگنالها: برنامه باید این سیگنالها را مدیریت کرده و فرآیند خاموشی را آغاز کند.
پردازش درخواستهای جاری
- تکمیل درخواستها: برنامه باید مطمئن شود که تمامی درخواستهای در حال پردازش به اتمام میرسند و پاسخها بهطور کامل ارسال میشوند.
- پذیرش درخواست جدید: ممکن است لازم باشد که پذیرش درخواستهای جدید متوقف شود تا منابع آزاد شوند.
مدیریت منابع
- بستن اتصالات: همهی اتصالات باز به پایگاههای داده و سوکتها باید بهصورت ایمن بسته شوند.
- آزادسازی حافظه: برنامه باید تمام حافظههای تخصیص دادهشده را آزاد کند تا از نشت حافظه جلوگیری شود.
ذخیرهسازی وضعیت
- ذخیرهسازی وضعیت برنامه: در برنامههای حالتگرا، وضعیت فعلی باید ذخیره شود تا در راهاندازی مجدد قابل بازیابی باشد.
- ثبت لاگها: ثبت وقایع و لاگهای مهم برای عیبیابی ضروری است.
هماهنگی با سرویسهای دیگر
- اطلاعرسانی به سرویسهای وابسته: اگر برنامه با سرویسهای دیگر تعامل دارد، باید به آنها اطلاع دهد که در حال خاموش شدن است تا آنها بتوانند اقدامات لازم را انجام دهند.
پیادهسازی در زبانهای مختلف
- جاوا: استفاده از
- پایتون: استفاده از کتابخانه
- Node.js: مدیریت خاموشی با استفاده از رویدادهای
#gracefully_shutdown
@Syntax_fa
در برنامهنویسی، فرآیند "gracefully shutdown" به معنی خاموش کردن برنامه بهصورتی است که از بروز اختلالات و از دست رفتن دادهها جلوگیری شود. این موضوع در سیستمهای توزیعشده، سرورها و برنامههای بلادرنگ اهمیت بیشتری پیدا میکند.
مدیریت سیگنالها
- سیگنالها: سیستمعاملها سیگنالهایی مثل
SIGTERM یا SIGINT را برای اطلاعرسانی به برنامهها ارسال میکنند که باید خاموش شوند.لیستی از سیگنال های LINUX. هر سیگنال معنی خاص خودش رو داره. SIGTERM به معنی سیگنالی هستش که برای Process termination ارسال شده است.
https://faculty.cs.niu.edu/~hutchins/csci480/signals.htm
- واکنش به سیگنالها: برنامه باید این سیگنالها را مدیریت کرده و فرآیند خاموشی را آغاز کند.
پردازش درخواستهای جاری
- تکمیل درخواستها: برنامه باید مطمئن شود که تمامی درخواستهای در حال پردازش به اتمام میرسند و پاسخها بهطور کامل ارسال میشوند.
- پذیرش درخواست جدید: ممکن است لازم باشد که پذیرش درخواستهای جدید متوقف شود تا منابع آزاد شوند.
مدیریت منابع
- بستن اتصالات: همهی اتصالات باز به پایگاههای داده و سوکتها باید بهصورت ایمن بسته شوند.
- آزادسازی حافظه: برنامه باید تمام حافظههای تخصیص دادهشده را آزاد کند تا از نشت حافظه جلوگیری شود.
ذخیرهسازی وضعیت
- ذخیرهسازی وضعیت برنامه: در برنامههای حالتگرا، وضعیت فعلی باید ذخیره شود تا در راهاندازی مجدد قابل بازیابی باشد.
- ثبت لاگها: ثبت وقایع و لاگهای مهم برای عیبیابی ضروری است.
هماهنگی با سرویسهای دیگر
- اطلاعرسانی به سرویسهای وابسته: اگر برنامه با سرویسهای دیگر تعامل دارد، باید به آنها اطلاع دهد که در حال خاموش شدن است تا آنها بتوانند اقدامات لازم را انجام دهند.
پیادهسازی در زبانهای مختلف
- جاوا: استفاده از
Shutdown Hook برای اجرای کد لازم در زمان خاموشی.- پایتون: استفاده از کتابخانه
signal برای مدیریت سیگنالها و اجرای فرآیندهای نهایی.- Node.js: مدیریت خاموشی با استفاده از رویدادهای
process مانند SIGINT.#gracefully_shutdown
@Syntax_fa
👍5❤1🔥1
مراحل دپلوی:
مرحله اول
1. نوشتن کد ها
2. ران کردن تست با استرس
موفقیت آمیز:
- به جدم کسی نیست در حدم
ناموفق:
- من چقدر برنامه نویس بدبختی هستم😔
مرحله دوم
1. تصحیح کد ها
2. ران کردن تست با استرس فراوان
موفقیت:
- خدایا شکرت
ناموفق:
خشم فروان
مرحله سوم
1. تصحیح دوباره کد ها
2. ران کردن تست
3. تستا چه موفق بود چه ناموفق دپلوی کن بره
#fun
@Syntax_fa
مرحله اول
1. نوشتن کد ها
2. ران کردن تست با استرس
موفقیت آمیز:
- به جدم کسی نیست در حدم
ناموفق:
- من چقدر برنامه نویس بدبختی هستم
مرحله دوم
1. تصحیح کد ها
2. ران کردن تست با استرس فراوان
موفقیت:
- خدایا شکرت
ناموفق:
خشم فروان
مرحله سوم
1. تصحیح دوباره کد ها
2. ران کردن تست
3. تستا چه موفق بود چه ناموفق دپلوی کن بره
#fun
@Syntax_fa
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣20👍7😁3
یبار برا همیشه Cron expressions رو یاد بگیر
برای زمانبندی خودکار دستورات یا اسکریپتها استفاده میشود. این ابزار در سیستمعاملهای یونیکس و لینوکس رایج است و در ابزارهایی مثل Jenkins، Kubernetes و غیره هم کاربرد دارد. Cron expressions از پنج یا شش فیلد تشکیل شدهاند که هر کدام بیانگر یک واحد زمانی است:
مثالها
1. اجرای دستور هر دقیقه:
2. اجرای دستور هر روز در ساعت ۳:۳۰ صبح:
3. اجرای دستور هر یکشنبه ساعت ۵ عصر:
4. اجرای دستور در روز اول هر ماه ساعت ۱۲ ظهر:
5. اجرای دستور هر ۵ دقیقه:
6. اجرای دستور هر دو ساعت:
علائم خاص
- **ستاره (
خط فاصله (-)
کاما (,)
اسلش (/)
مثال پیچیدهتر
اجرای یک دستور در ساعت ۱:۱۵ بعد از ظهر هر دوشنبه و چهارشنبه:
همچنین اکثر scheduler ها از cron expressions پشتیبانی میکنن. پس یبار یاد بگیر همه جا استفاده کن🍸
#cron_expression
@Syntax_fa
برای زمانبندی خودکار دستورات یا اسکریپتها استفاده میشود. این ابزار در سیستمعاملهای یونیکس و لینوکس رایج است و در ابزارهایی مثل Jenkins، Kubernetes و غیره هم کاربرد دارد. Cron expressions از پنج یا شش فیلد تشکیل شدهاند که هر کدام بیانگر یک واحد زمانی است:
* * * * * [دستور]
| | | | |
| | | | +--- روزهای هفته (۰-۷) (۰ و ۷ برای یکشنبه)
| | | +----- ماه (۱-۱۲)
| | +------- روز ماه (۱-۳۱)
| +--------- ساعت (۰-۲۳)
+----------- دقیقه (۰-۵۹)مثالها
1. اجرای دستور هر دقیقه:
* * * * *
2. اجرای دستور هر روز در ساعت ۳:۳۰ صبح:
30 3 * * *
3. اجرای دستور هر یکشنبه ساعت ۵ عصر:
0 17 * * 0
4. اجرای دستور در روز اول هر ماه ساعت ۱۲ ظهر:
0 12 1 * *
5. اجرای دستور هر ۵ دقیقه:
*/5 * * * *
6. اجرای دستور هر دو ساعت:
0 */2 * * *
علائم خاص
- **ستاره (
*)**: همه مقادیر ممکن را شامل میشودخط فاصله (-)
-): برای تعیین بازه از-تا استفاده میشود. مثلاً 1-5کاما (,)
,): برای تعیین مقادیر مختلف در یک فیلد استفاده میشود. مثلاً 1,3,5 یعنی روز ۱، ۳ و ۵اسلش (/)
/): برای تعیین گامهای تکرار استفاده میشود. مثلاً */15 در فیلد دقیقه یعنی هر ۱۵ دقیقه.مثال پیچیدهتر
اجرای یک دستور در ساعت ۱:۱۵ بعد از ظهر هر دوشنبه و چهارشنبه:
15 13 * * 1,3همچنین اکثر scheduler ها از cron expressions پشتیبانی میکنن. پس یبار یاد بگیر همه جا استفاده کن
#cron_expression
@Syntax_fa
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13💋4🔥2👌1