Syntax | سینتکس – Telegram
Canary

کانری دیپلویمنت روشی برای انتشار نرم‌افزار است که در آن یک بخش کوچک از کاربران به نسخه جدید یک سرویس یا نرم‌افزار منتقل می‌شوند تا اشکالات احتمالی در نسخه جدید شناسایی شود

در این روش یک درصد کوچکی از کاربران به عنوان "کانری" انتخاب می‌شوند تا نسخه جدید نرم‌افزار یا سرویس را تجربه کنند. اگر هیچ مشکلی پیدا نشود، بقیه کاربران هم به تدریج به نسخه جدید منتقل می‌شوند

اما اگر مشکلاتی در نسخه جدید پیدا شود، تنها کانری‌ها تحت تاثیر قرار می‌گیرند و بقیه کاربران همچنان از نسخه قبلی استفاده می‌کنند. بنابراین احتمال خسارت وارده به تمام کاربران کاهش می‌یابد

برای مثال فرض کنید یک وب‌سایت خبری می‌خواهد نسخه جدید سیستم مدیریت محتوای آن را پیاده و راه‌اندازی کند. با استفاده از روش کانری دیپلویمنت، ابتدا تنها 1 درصد از کاربران به صورت تصادفی به نسخه جدید منتقل می‌شوند

اگر مشکلی پیش نیاید، مقدار بیشتری از کاربران هم به تدریج به نسخه جدید انتقال پیدا می‌کنند. اما اگر مشکلی مانند خرابی سایت یا عدم دسترسی به محتوا پیش بیاید، تنها همان درصدی که به عنوان کانری منتقل شدند تحت تاثیر قرار می‌گیرند

#Canary

@Syntax_fa
🔥4👌3👍2
با چند تا مثال regex رو یاد بگیر‌(قسمت اول)

1. پترن ما این هستش که توی متن hello داشته باشه:
Pattern := "hello"


2. به بزرگ و کوچیک بودن حروف حساس نباشه:
برای این موارد یه سری flag هایی رو regex در اختیار ما قرار داده. برای اینکه به بزرگ و کوچک بودن حروف حساس نباشه از فلگ i استفاده می کنیم:
Pattern := "(?i)Hello"


3. اول متن با hello شروع بشه و به بزرگ و کوچیک بودن حروف حساس نباشه:
Pattern := "(?i)^hello"

برای اینکار اول الگو از ^ استفاده میکنیم.

4. اول هر خط با hello شروع بشه:
تو مثال قبلی گفتیم اول متن hello باشه اما اینبار اول هر خط رو میخوایم حساب کنیم. برای اینکار از فلگ m استفاده می کنیم که به معنی این است روی چند تا خط ^ و $ رو اعمال کن. همچنین از فلگ g که مخفف global هست، استفاده میکنیم‌ که بعد از پیدا کردن اولین نتیجه return نکنه و بره بقیه متن رو هم بگرده(توی هر زبان به یه شکلی فلگ هارو میدیم)

نکته:
اگه بخوایم بجای اینکه اول رشته با الگو ما تطابق داشته باشه، آخر خط و یا رشته رو چک کنیم، بجای ^ آخر الگو میایم $ قرار میدیم:
pattern := "hello$"


5. کاراکتر اول h باشد، کاراکتر دوم هرچیزی باشه فرقی نمیکنه و کاراکتر های بعدی llo باشد:
Pattern := "h.llo"

با استفاده نقطه مشخص میکنیم هر کاراکتری باشه فرقی نمیکنه.

6. فقط حروف کوچک انگلیسی:
Pattern:= [a-z]

داخل براکت میتونیم مشخص کنیم که چه کاراکتر هایی توی الگو ما هستش. ما اینجا میتونستیم تمامی حروف کوچک انگلیسی را بنویسیم(abcdefghi...) اما بجایش به این صورت نوشتیم که از a تا z باشد.

7. حروف انگیسی باشد و به بزرگ و کوچک بودن حساس نباشد. همچنین اعداد 0 تا 9 را هم داشته باشد:
Pattern := "(?i)[a-z0-9]"

همچنین میتوانیم از فلگ استفاده نکنیم و داخل براکت مشخص کنیم حروف بزرگ هم هستش:
Pattern := [a-zA-Z0-9]


#Regex

@Syntax_fa
🔥102👍2👎1
سمبل های پر استفاده در برنامه نویسی

#Symbol

@Syntax_fa
👍10👎1
Syntax | سینتکس
اگه قرار باشه زبان برنامه نویسیه جدید یاد بگیری، کدوم یک از موارد زیر رو انتخاب می کنی؟
طبق نظر دوستان و همونطور که میشد حدس زد این روزا زبان golang و rust خیلی محبوب هستند و اکثرا وقتی ازشون بپرسی دوست داری کدوم زبانو یاد بگیری یکی از این دوتارو بر اساس فیلد کاریشون انتخاب می کنن

همچنین زبان JS و C sharp بعد از Go و Rust انتخاب ملت بود

نسبت به یادگیری Java کسی آنچنان شوقی نشون نداده

یه نکته رو بگم:
خیلیا میگن دوست دارم فلان کارو بکنم ولی اینکه واقعا انجامش بدن بستگی به این داره چقدر اون چیز حیاتی بشه. پس خیلی وقتا میخوام گفتنا هیچوقت عملی نمیشن.

نکته بعدی درباره پایتون هستش:
تا اونجا میدونم هشتاد درصد ممبرا پایتون کارن
نظرسنجی این بود زبان دومی که انتخاب میکنید چیه
اما خیلیا حتی زبان دومم زدن پایتون و میخوان دوبار پایتونو یاد بگیرن (تعصبشو میکشن😁)

#pool #Fun

@Syntax_fa
😁11
ساختار یک HTTP Request

#Note #HTTP

@Syntax_fa
👍61
This media is not supported in your browser
VIEW IN TELEGRAM
ویژن پرو چقدر خوبه

#Fun

@Syntax_fa
👌12😍1
Forwarded from CodeCrafters (Behzad Azadi)
چرا conda استفاده کنیم؟؟؟


اول اینکه نوع پایتون رو هم خودش براتون بالا میاره حین ساخت محیط و شما دیگه درگیر پیچیدگی و هندل کردن نصب و مدیریت چند نسخه مختلف پایتون نمیشید و حتی کار کردنش باهاش از pyenv راحت تره و عوض کردن نسخه پایتونش هم راحت تره

conda create -n MyENV python=3.8
دوم اینکه محیطی که براتون میسازه رو داخل home شما و در دایرکتوری مخصوص خودش میسازه و نه در مسیر جاری شما خب این مزیتش این هست که شما راحت هرجا باشید میتونید ۱-سریع فعال و ۲-غیرفعال و یا محیط خودتون رو تغییر بدید و یا بدون دغدغه نسبت به محل قرارگیریش محیط جدید بسازید و ۳-حذف هم کنید و بین محیط‌های مختلف راحت سویچ کنید

1- conda activate my_env

2- conda deactivate

3- conda env remove -n MyENV
مورد بعدی هم اینکه:
۱-نصب پکیج هم داخلش راحته
۲-و علاوه بر خودش میتونید از pip هم استفاده کنید
۳- همچنین بروز رسانی پکیج
1- conda install PackName

2- pip install PackName

3- conda update PackName
۱-لیست پکیج‌های نصب شده رو هم میتونید ببینید
۲-و یا یک فایل حاوی ادرس‌های آن جهت نصب بسازید
۳-و یا بصورت yaml براتون قرار میده که از دو بخش تشکیل شده پکیج‌هایی که خودش نصب کرده و پکیج‌هایی که با pip نصب شده

1- conda list

2- conda list --explicit

3- conda env --export > requirements.yml
که بالطبع میتونید اون رو هم در یک محیط دیگه نصب کنید
conda create -f requirements.yml

conda create -n MyENV -f requirements.yml
گفتیم همه محیط‌ها رو در یک مسیر قرار میده که با دستور زیر هم میتونید لیست همه محیط هاتون رو ببینید

conda env list
۱- اگه بخواید یک‌محیط رو‌حذف کنید ۲-یا یک پکیج رو حذف کنید
1- conda env remove -n MyENV --all

2- conda remove PackName
برای دیدن اطلاعات مربوط به محیط تون
conda info
جهت تست و بررسی سلامت محیط
conda doctor
جهت تغییر نام محیط با شرط فعال نبودن محیط تون
conda rename 
۱-جستجوی پکیج با نمایش تاریخچه تگ آن
۲-مشاهده وابستگی های آن
۳-مشاهده پکیج‌ها استفاده کننده آن
1- conda search PackName

2- conda repoquery depends PackName

3- conda repoquery whoneeds PackName
ادغام محیط شل با conda
conda init bash
پاک کردن پکیج‌های نا استفاده
conda clean
برای کانفیگ از قبیل محیط نصب، پکیج‌ها محدودیت دانلود و ...
conda config

conda config --help

موضوع جالب اینکه هنگام نصب پکیج تمام وابستگی‌ها رو اجرایی میکنه و نصب و حتی اگه نیاز به نسخه دیگری از پایتون باشه اون رو downgraid میکنه که منجر میشه تا حد ممکن براتون خطایی رخ نده و دردسر نکشید


داخل کامنت ها هم نحوه نصبش رو در اوبونتو میزارم


@code_crafters
👍10👎1
دوست داشتم اولین پستم توی کانال رو به معرفی Larry Tesler اختصاص بدم؛ که اتفاقا کمتر کسی هم این مرد بزرگ رو می‌شناسه. ایشون آقای لارنس تسلر هستند، برنامه نویس کامپیوتر که «copy and paste» رو ابداع کردن و اگر بگیم در ذخیره‌ی عُمر جامعه برنامه‌نویسان موثر بودن اغراق نکردیم. در واقع اگر این آقا نبودن، هنوز باید باید کل پایانامه، تحقیقات و کدهامون رو خط به خط تایپ می‌کردیم! :))))

Syntax
16🏆3😁2👍1👏1
سلام BitSnake هستم کوچیک همتون

اسکریپتی که نوشتم از یک API برای دریافت پراکسی ها (Http, Socks4, Socks5) استفاده می کنه و پس از دریافت شروع به بررسی پراکسی ها با آدرس www.google.com میکنه.

بعد از بررسی پراکسی ها در دو فایل Proxy.txt و ProxyCheck.txt پراکسی ها رو ذخیره می کنه.

پراکسی های دریافت شده مستقیم از API در فایل Proxy.txt و پراکسی های علامت گذاری شده در فایل ProxyCheck.txt ذخیره می شن.

لینک پروژه:
https://github.com/bitsnakee/Proxy-rec

ایدی من جهت ارتباط:
@bit_snake

#proxy

@Syntax_fa
🔥14👎1
اقا اومدیم تست نویسیو تو جنگو شروع کنیم رسیدیم به داکیومنت خوندن و اینا
و خب یجایی ب این برخوردیم که خب الان من یه تست برای مدلم میخوام بنویسم با TestCase
و خب یه آبجکت به مدل بخوام اضافه کنم‌ تو تستم به کار ببرم یکم مشکله ! حالا مشکلش کجاست؟
شما فکر کن مدل من ۵۰ تا فیلد داره من باید بیام این ۵۰ تارو خودم مقدار دهی کنم 😐 خب چیکار کنم؟

یه کتابخونه هست‌ به اسم " model bakery" که براتون اینکارو انجام میده!


دستور نصب 👇

pip install model-bakery
____

from model_bakery import bakery
from .models import Todo

todo = bakery.make(Todo)
خب الان بهش گفتیم مدلمون  Todo هست و میاد خودش مقدار دهیش میکنه و یک‌ ابجکت  برامون میسازه !

میتونیم به مقادیر هم دسترسی پیدا کنیم مثال اگر فیلد name داخل مدل ما باشه
todo.name
میتونیم‌ اینطوری بهش دسترسی پیدا کنیم!


خب این گذشت حالا بعضی وقتا هست ما میخوایم یک فیلدی رو خودمون مقدار دهی کنیم و بقیه فیلد هارو رو بزاریم خودش مقدار دهی کنه ! چطوریه؟


from model_bakery import bakery
from .models import Todo

todo = bakery.make(Todo, name="Benyamin")

اینطوری فیلد دلخواه رو خودمون مقدار دهی کردیم و مابقیش رو خودش مقدار میده! #تمام


اینم بگم من‌وقتی با این‌ کتابخونه اشنا شدم و خب یکمی داخل تست نویسی داخل جنگو‌ جلو که رفتم  یه سری هم به مونگارد زدم‌ و‌ دوره اون رو شروع کردم‌  و داخل دوره تست نویسی مونگارد هم‌ دیدم‌  این رو توضیح داده :)

#تست_نویسی
#تست_نویسی_در_جنگو
#جنگو

🫶 نویسنده : @ownervin

@Syntax_fa
👍15🔥5🙏1
اپلیکیشن Real-Time بدون وب سوکت با Long Polling - از تلگرام یاد بگیریم

وقتی از اپلیکیشن Real-Time صحبت میکنیم اولین چیزی که همه به ذهنشون میاد #وب_سوکت هستش و منطقا میتونه انتخاب خوبی باشه اما #long_polling هم تکنیک خوبی هستش که اکثر نیازهای معمول ما رو برطرف میکنه، تا اونجایی که تلگرام برای پیاده‌سازی APIهای ربات هاش از این تکنیک استفاده کرده.

به شکل خلاصه، کانکشن HTTPرو باز نگه میداریم تا وقتی که notification جدیدی یا update جدیدی برای کاربرمون داشته باشیم، بدین شکل با استفاده از HTTP/1 هم میتونیم قابلیت Real-time بودن رو برای اپلیکیشنمون پیاده سازی کنیم.

توی این ویدیو با هم اول روش های مرسوم رو با هم مرور میکنیم و می بینیم چطور long-polling بخش زیادی از مشکلات Short-polling رو رفع میکنه و در نهایت با هم با کمک ردیس در Go اون رو پیاده سازی میکنیم.

https://youtu.be/Qmh7M6qx3H8?si=KoyorEX1J1Q8-b3C

[MHRCode]

#Go #Long_polling

@Syntax_fa
👍11👀2
Git-zeroversion.pdf
3.1 MB
پی دی اف آشنایی با گیت «جناب أقیه افشاری»

#git

@Syntax_fa
👍6👎1
یه وب سایت باحال برای تست سرعت و دقت تایپ کردنتون.

حتی می تونید انتخاب کنید کلمه هایی که تایپ می کنید، کلمات کلیدی و استفاده شده توی فلان زبان برنامه نویسی باشه.

https://monkeytype.com/

#Fun

@Syntax_fa
👍6👎1
اقا اومدم یه اپ معرفی کنم مخصوص اونایی که مثه بنز میخوابن " مثل خودم 😐

این اپی که عکسشو براتون گزاشتم توش تایم رو مثال ست میکنید ۹ صبح
بعد ۹ صبح که زنگ میخوره گوشیتون تا وقتی که داخل اپ یه سری کپچا‌هارو حل نکنید زنگ قطع نمیشه !

و اینطوری بزور بیدارتون میکنه

لینک دانلود از گوگل پلی 👇

https://play.google.com/store/apps/details?id=com.urbandroid.sleep

Writer " @ownervin "
Channel @Syntax_fa
👍5👎1
CKA-1.pdf
5.6 MB
دفترچه راهنمای کوبرنتیز به زبان فارسی «آقای افشاری»

#book

@Syntax_fa
👍8
مقایسه سرعت زبون های برنامه نویسی #بک_اند ⚡️ کدوم زبون انتخاب کنیم؟

چرا APIها کند میشن؟ باتل نک یعنی چی؟ چی میتونه کمک کنه پرفورمنس سرویسمون بهتر شه؟ نقش OS Thread ها چیه؟ کانکارنسی یعنی چی؟ فرق Async با Thread چیه؟ پرفورمنس Development Server با Gunicorn در Django چه فرقی داره؟چرا توی Golang مثل Javanoscript از Async/Await استفاده نمیکنیم؟


و کلی سوال دیگه که کمکمون میکنن معنی پرفورمنس و بهبود پرفورمنس رو توی سرویس های بک‌اند متوجه بشیم و با این اصطلاح ها که روزمره استفاده میشن با بنچ مارک و عدد بهتر آشنا شیم.

[MHRCode]

https://youtu.be/TvWF1d1jLtY
🔥8👀3👍2
خبر خوش 🔥

استاد سعید شهریوری عزیز بزرگواری کرده و موافقت کرد با ما میت برگزار کنه تا ما بتونیم از تجربیات و سوادش بهره ببریم.

لینکدین استاد شهریوری:
https://www.linkedin.com/in/saeed-shahrivari-joghan-01358741

بچه ها استاد شهریوری یدونست. منکه خیلی لذت میبرم از نحوه بیان و توضیح دادنش👌

توی یوتیوب میتونید بعضی از آموزش هاشو ببینید:

پلی لیست ساختمان داده
https://youtube.com/playlist?list=PL7TO4klQB2X7HdJ49S-19vQxfP4gR2oi7&si=q1D6-3-Nh2xipSbh

پلی لیست هوش مصنوعی:
https://youtube.com/playlist?list=PL7TO4klQB2X6u1mpr5HFv-hJiOhOrkpTi&si=wOovzKz0hqK0ZigO

تو کامنت این پست بگید دوست دارید درباره چه موضوعی صحبت شه.
بنظرم بهتره میت به این صورت برگزار شه که اکثر تایم درباره یک مبحث صحبت کنیم و قسمت پایانی چند تا از سوالات پاسخ داده بشه

#meet

@Syntax_fa
🔥10👍1😁1
با توجه به سوالاتتون، یه سری نکات درباره payload بگم

Access token
تو قسمت payload اطلاعاتی که از کاربر تو قسمت پروفایلش نشون میدیم رو قرارش میدیم
رول های کاربر رو توی یک آرایه قرارش میدیم. برای مثال این کاربر فقط رول پیشفرض رو داره پس اگه اندپوینتی پرمیشن ادمین داشته باشه نمیتونه درسترسی داشته باشه.(چک کردن پرمیشن هارو از طریق middleware انجامش میدیم)

Refresh token
تو قسمت payload مقداری که بتونیم به کاربر دسترسی داشته باشیم رو ذخیره می کنیم. برای مثال UserId
بعد با استفاده از Userid سمت دیتابیس درخواست می زنیم و user رو میگیریم. بعدش یه access token جدید میسازیم.(با توجه به شرایط احراز هویت پروژمون ممکنه در کنار access token یه refresh token جدیدم بسازیم)

نکته مهم اینه access token رو مدت زمانشو کم بذارید.
داخل payload رفرش توکن آنچنان نیاز نیست چیزی جز userId و expireTime قرار بدید.
در نهایت اگه رمزنگاری کنید دیگه کسی جز خودتون نمیتونه اطلاعات توکن رو ببینه.

#JWT

@Syntax_fa
👍8
تو وب سایت Leetcode چجوری شروع به حل مسئله کنیم؟

این بخش leetcode یکی اومده ۷۵ تا مسئله رو معرفی کرده که بیسیک الگوریتم رو پوشش میده هدفش هم اینه توی مصاحبه شوکه نشی.
میتونی از این هفتادو پنج تا مسئله شروع کنی:
https://leetcode.com/discuss/general-discussion/460599/blind-75-leetcode-questions

[Amir]

#Leetcode #algorithms

@Syntax_fa
🔥11👍1