Syntax | سینتکس – Telegram
ساختار یک 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
TERAPÎ-Pela Dûr(Gitar Cover)
👍2🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
میگن بالاترین سطح زبان، ادل لول هستش😁

#Fun

@Syntax_fa
🤣131
توضیح کوتاه درباره برخی از انواع تست نویسی

Unit testing
کلمه Unit به معنی واحد و تک و تنها هستش.
ما برای نوشتن تست برای یک بخش واحد از unit test استفاده میکنیم. برای مثال ما یک فانکشن داریم که کارش محاسبه مالیات بر اساس مقدار درآمد هستش. برای نوشتن تست برای این فانکشن واحد از unit test استفاده میکنیم.

Integration testing
بعضی وقتا خروجی مدنظر ما با کار کردن چند بخش واحد با هم دیگه بدست میاد.
برای مثال سبد خرید رو در نظر بگیرید. باید اول از همه چک کنیم ببینیم توی انبار موجود هستش یا نه بعدش موجودی حساب کاربر رو چک کنیم و خیلی کار های دیگه.
تو همچین شرایطی ما میایم از integration test استفاده میکنیم.

Load testing
برای اینکه مطمئن بشیم سیستم ما در حالت نرمال میتونه جوابگو ریکوئست ها باشه از load test استفاده میکنیم.

Stress testing
توی load testing سیستممون رو توی شرایط نرمال تست میکنیم. اما همیشه شرایط نرمال نیست و بعضی وقتا ممکنه سیستم ما زیر فشار بیشتری باشه.
برای تست کردن اینکه سیستم ما در شرایط سنگین و استرسی چجوری عمل میکنه از Stress test استفاده میکنیم.

مطلعه بیشتر تو این لینک

#Test

@Syntax_fa
👍8
سوال هایی که سطح دانش شما رو مشخص می کنه!

یکی از ساده ترین روش ها برای محک زدن دانشتون، سوال پیچ کردن خودتون هستش.
این کار در دراز مدت باعث میشه سطح دانش شما نسبت به قبل خیلی بیشتر بشه.
خب بیاید چند نوع از این سوالا رو بررسی کنیم.

چیه؟
سوال سطحی که از یک جونیور توقع میره باهاش زیاد سر و کله بزنه این نوع سوال ها هستش.
برای مثال:
فریم ورک چیه؟
داکر چیه؟
رشته چیه؟
فرق بین همروندی و موازی سازی چیه؟

این نوع سوالات شمارو با مفاهیم برنامه نویسی بصورت سطحی آشنا میکنه

اما یه سطح بالاتر سوال هایی هست که درباره چیستی اون ابزار و مفهومه
برای مثال:
چرا از داکر استفاده میکنیم؟
چرا از لاگر ها استفاده میکنیم؟
چرا از میدلور استفاده میکنیم؟
چرا همروندی نیازه؟

در نهایت سوال هایی که پاسخ دادن بهشون، به شما درک عمیقی میدن، سوال هایی هستش که درباره چگونگی کار کردن اون ابزار پرسیده میشه.
برای مثال:
کانتینر چجوری کار میکنه؟
چجوری یک تایپ دیتا از نوع رشته توی حافظه ذخیره میشه؟
فرق بین hypervisor و روش container چی هستش؟
همروندی چجوری باعث پرفورمنس بهتر تو شرایطی که IO داریم میشه؟

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

#Note

@Syntax_fa
👍234🔥1
ساختار پیشنهادی کامیونیتی گولنگ برای پروژه ها

https://github.com/golang-standards/project-layout

یکی از اشتباهات خیلیا اینه طبق تجربیات قبلیشون با فلان زبان و ابزار، میان تو یه زبان دیگه به همون روش قبل پیادش می کنن. تو golang standard project layout به همین اشاره کرده که بعضیا از دنیا جاوا میان و طبق یکی از پترن های پر استفادشون تو گولنگم میخوان به همون شکل ساختار پروژشون رو بسازن، ولی خب این تو جامعه گولنگ پیشنهاد نمیشه.

#Project_layout

@Syntax_fa
👍71