Syntax | سینتکس – Telegram
تفاوت سایز Json با Protobuf
Json: 214
Protobuf: 53
حدودا چهار برابر بیشتره. (البته تو این کیس و تو این حالت)

@khat_academy
👍8
تو این قسمت از khat weekly، مهمون ما امین علی مزاریان هست که توسعه دهنده بک انده (Python Back-end developer)

اما جز اینکه تو برنامه نویسی کارش خوبه،‌توی مهارت های نرم و رزومه نویسی هم تجربیات خوبی داره و قراره تو میت از ساخت یک رزومه مناسب تا مصاحبه صحبت کنیم 💥

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

همچنین هر سوالی دارید، تو کامنت بپرسید تا توی پادکست دربارش صحبت کنیم

تاریخ میت:
چهارشنبه ۱۹ مهر ساعت ۱۹:۰۰

LinkedIn
Github

#meet #weekly

@khat_academy
👍5🔥2🥰1👏1😁1
collections.namedtuple

در پایتون، namedtuple یک کلاس فراهم می‌کند که به شما امکان ساخت ساده‌تر و مدیریت آسان‌تر داده‌های ساختارمند را می‌دهد. namedtuple به شما اجازه می‌دهد یک کلاس ساده‌تر را با فیلدها و مقادیرش ایجاد کنید و به طور خودکار ویژگی‌هایی مانند نامگذاری و استخراج مقادیر از آنها را برای شما مدیریت کند.

شما می‌توانید یک namedtuple با استفاده از تابع namedtuple از ماژول collections ایجاد کنید. این تابع به شما اسم کلاس مورد نظرتان را و همچنین نام فیلدها را به عنوان ورودی می‌گیرد. به عنوان نتیجه، یک کلاس ایجاد می‌شود که دارای ویژگی‌هایی مانند نامگذاری فیلدها و روش‌های استخراج مقادیر است.

در زیر یک مثال ساده استفاده از namedtuple را مشاهده می‌کنید:

from collections import namedtuple

# تعریف یک `namedtuple` برای نمایش اطلاعات یک شخص
Person = namedtuple('Person', ['name', 'age', 'gender'])

# ایجاد یک شخص جدید
person1 = Person(name='John', age=30, gender='Male')

# استخراج مقادیر
print(person1.name) # خروجی: John
print(person1.age) # خروجی: 30
print(person1.gender) # خروجی: Male

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

از مزایای استفاده از namedtuple می‌توان به سادگی کد، قابلیت خوانا بودن بیشتر کد اشاره کرد. همچنین، `namedtuple`‌ها در مواردی که نیاز به داده‌های ساختارمند و غیرقابل تغییر دارید، مفید هستند.

#python

@khat_academy
👍8
پورت صفر:

در مفاهیم شبکه و ارتباطات، پورت 0 به معنای یک پورت خاص است که به عنوان پورت "رزرو شده" شناخته می‌شود. وقتی به یک برنامه یا سرویس شبکه نیاز دارید تا به یک پورت خاص متصل شود، می‌توانید از یک شماره پورت عددی استفاده کنید. پورت‌ها از اعداد صحیح بین 0 تا 65535 تشکیل شده‌اند.

اما پورت 0 به طور خاص به معنای یک پورت رزرو شده است که به عنوان پورت پیش‌فرض (default) مورد استفاده قرار می‌گیرد. وقتی یک برنامه یا سرویس به پورت 0 متصل می‌شود، این به معنای این است که برنامه یا سرویس مورد نظر، سیستم عامل را مکلف می‌کند یک پورت آزاد و در دسترس را به آن اختصاص دهد.

به عنوان مثال، در برنامه‌نویسی شبکه، وقتی یک سوکت (socket) برای برقراری ارتباط با سروری فراخوانی می‌شود و شماره پورت آن را برابر با 0 قرار می‌دهید، سیستم عامل یک پورت آزاد را به برنامه اختصاص می‌دهد و برنامه می‌تواند آن را برای ارتباط استفاده کند.

استفاده از پورت 0 معمولاً برای برنامه‌هایی است که نمی‌خواهند به طور صریح پورت خاصی را انتخاب کنند، به سیستم اجازه می‌دهند یک پورت خالی را برایشان انتخاب کند.

برای مثال توی جنگو اگه بنویسید‌ runserver 0 بصورت رندوم یک پورت خالی رو انتخاب می کنه.

#port

@khat_academy
👍14
چند نکته کلیدی در مورد شماره پورت:

- پورت ها با اعداد صحیح بین 0 تا 65535 شناسایی می شوند. این محدوده به عنوان فضای شماره پورت شناخته می شود.


0-1023
- شماره پورت های پایین تر (0-1023) به عنوان پورت های شناخته شده و برای پروتکل های خاص رزرو شده اند. به عنوان مثال، پورت 80 برای ترافیک HTTP استفاده می شود.


1024-49151
- شماره پورت های بالاتر (1024-49151) پورت های ثبت شده ای هستند که هم توسط کلاینت ها و هم توسط سرورها برای برنامه ها و خدمات خاص قابل استفاده هستند.

پورت‌های اپلیکیشن‌ها و سرویس‌های نرم‌افزاری معمولاً در محدوده‌ای بین عدد 1024 و 49151 هستند.

اپلیکیشن‌های معمول نرم‌افزاری مانند پوستگرس، ردیس و مای‌اس‌کیوال عموماً از پورت‌های ثابت و ثبت‌شده در محدوده 1024 تا 49151 استفاده می‌کنند.

برای مثال پورت پستگرس 5432 و ردیس 6379 است که هر دو در این محدوده قرار دارند.


49152-65535
محدوده پورت‌های 49152 تا 65535 به طور معمول برای پورت‌های خصوصی و پورت‌های برگشتی که توسط کلاینت درخواست می‌شوند، اختصاص داده می‌شود.

- پورت های پویا و/یا خصوصی از 49152 تا 65535 متغیر است. این پورت ها معمولاً بر اساس تقاضا تخصیص داده می شوند و اغلب برای ترافیک برگشتی برای اتصالات شروع شده از مشتری استفاده می شوند.

#port

@khat_academy
👍9
چرا پورت بین 0 تا 65535 است؟ آیا نمی توان پورت بیشتری برای استفاده تنظیم کرد؟

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

چند دلیل کلیدی که چرا پورت ها نمی توانند بالاتر از 65535 بروند:

فیلد پورت در هدرهای TCP و UDP 16 بیت است. با 16 بیت، می توانید اعداد باینری را تا 65535 نمایش دهید (2^16 - 1). بنابراین شماره پورت از نظر فنی به این محدوده توسط مشخصات پروتکل محدود شده است.

IANA
(مرجع شماره های اختصاص داده شده به اینترنت) مسئول هماهنگی تخصیص شماره پورت است. آنها محدوده پورت را 0-65535 استاندارد کرده اند. هیچ نهاد استانداردی افزایش این محدوده را پیشنهاد نکرده است.

شماره پورت به شناسایی منحصر به فرد پروتکل حمل و نقل (TCP/UDP)، آدرس های IP و برنامه یا فرآیند خاص در یک سوکت کمک می کند. افزایش رنج مستلزم تغییراتی در پروتکل‌ها و سیستم‌های شبکه است.

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

بنابراین به طور خلاصه، به دلیل محدودیت‌های فنی، استانداردها و کافی بودن، پورت‌ها روی 65535 محدود شده‌اند. افزایش رنج به تغییرات عمده در مشخصات و پیاده سازی شبکه اصلی نیاز دارد.

#port

@khat_academy
👍8
معماری Microservices با هسته Monolithic

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

هسته Monolithic
منطق اصلی کسب‌وکار در یکپارچگی اصلی باقی می‌ماند، اما مواردی مانند
‌background jobs، notifications،
یا سایر سیستم‌های فرعی کوچک که می‌توانند به برنامه‌های کاربردی خود منتقل شوند.

مثال:
گر تیم توسعه دهنده تصمیم بگیرد که از معماری Monolithic به نوع Microservices تغییر مسیر دهد، نیازی به نوشتن کل برنامه از ابتدا نیست. در این شرایط می‌توان فقط کامپوننت‌هایی را که دردسر ساز شده‌اند، به نوع سرویسی آن تبدیل کرد. به این نوع برنامه‌های سمت سروری که بخش اصلی برنامه به صورت Monolithic ولی برخی از عملکردهای خاص آن به صورت سرویسی نوشته شده باشد، اصطلاحا معماری Microservices با هسته Monolithic گفته می‌شود.

more

@khat_academy
👍9
پیشخان توسعه‌دهندگان کافه‌بازار: از Monolithic به Microservices

بخوبی توضیح داده از اون ابتدا که با معماری monolithic جنگو شروع کردن و ...

@khat_academy

https://virgool.io/cafebazaar/%D9%BE%DB%8C%D8%B4%D8%AE%D8%A7%D9%86-%D8%AA%D9%88%D8%B3%D8%B9%D9%87%D8%AF%D9%87%D9%86%D8%AF%DA%AF%D8%A7%D9%86-%DA%A9%D8%A7%D9%81%D9%87%D8%A8%D8%A7%D8%B2%D8%A7%D8%B1-%D8%A7%D8%B2-monolithic-%D8%A8%D9%87-microservices-aesbnymda2gi
👍6🎉1
تو این قسمت از khat weekly، مهمون ما امین علی مزاریان هست که توسعه دهنده بک انده (Python Back-end developer)

اما جز اینکه تو برنامه نویسی کارش خوبه،‌توی مهارت های نرم و رزومه نویسی هم تجربیات خوبی داره و قراره تو میت از ساخت یک رزومه مناسب تا مصاحبه صحبت کنیم 💥

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

همچنین هر سوالی دارید، تو کامنت بپرسید تا توی میت دربارش صحبت کنیم

تاریخ میت:
چهارشنبه ۱۹ مهر ساعت ۱۹:۰۰ (گوگل میت)

https://www.linkedin.com/in/aminalih47/

https://github.com/AminAliH47

#meet #weekly

@khat_academy
🔥8😁5👎1🥰1
Syntax | سینتکس
http://meet.google.com/wbf-ywnx-dao لینک میت 🔥 جوین شید
خیلی ممنون از عزیزانی که حضور داشتن🙏

فردا شب ساعت هفت در خصوص کار ریموت و ادامه مباحثی امشب صحبت می شه
8
چند نکته وقتی که دارید از gunicron به عنوان wsgi application server استفاده می کنید:

امکان استفاده از چند پروسس: gunicorn هم مانند uWSGI امکان استفاده از چند پروسس و ترد همزمان را فراهم می کنه

- می‌توانید با پارامتر -w تعداد رکوئست هندلرها (workers) را مشخص کنید.

- پیشفرض تعداد ورکر ها یکی هست.

- می‌توانید این تعداد را بر اساس مقدار CPUها یا میزان ترافیک تنظیم کنید.

- هر worker می‌تواند چند تا ترد برای هندل کردن رکوئست‌ها داشته باشد که با -t تنظیم می‌شود.

بنابراین gunicorn قادر است به طور موازی از چند پروسس و ترد برای اسکیل مناسب سرویس خود استفاده کند.

https://docs.gunicorn.org/en/stable/design.html

#بک_اند

@khat_academy
👍82
چهار تا زبان پرکاربر برنامه نویسی که شاید خیلیا اسمشم نشنیده باشن !

Elixir:
Designed by: José Valim
First appeared: 2012; 11 years ago
زبان برنامه نویسی Elixir یک زبان برنامه نویسی کاربردی، همزمان و عمومی است که بر روی ماشین مجازی Erlang اجرا می شود . Elixir از Erlang تولید می شود و از همان انتزاع برای ساخت برنامه های توزیع شده و مقیاس پذیر استفاده می کند. Elixir همچنین یک ابزار تولیدی و یک طراحی گسترده را فراهم می کند. زبان برنامه نویسی Elixir برای توسعه وب توسط شرکت هایی مانند Bleacher Report، Discord و Inverse و همچنین برای ساخت سیستم های تعبیه شده مورد استقاده قرار می گیرد.
طبق گزارش Stackoverflow زبان‌ Elixir یکی از پر درآمدترین زبان‌های برنامه‌نویسی در سال ۲۰۱۹ در سطح دنیا بوده.


Clojure:
Designed by: Rich Hickey
Family: Lisp
First appeared: 2007; 16 years ago
کلوژر (Clojure) گویشی از زبان برنامه‌نویسی لیسپ است که توسط ریچ هیکی ایجاد شده‌است. این زبان، یک زبان همه‌منظوره تابعی است. کد کلوژر به بایت‌کد ماشین مجازی جاوا کامپایل می‌شود، بنابراین می‌تواند از کتابخانه‌های جاوا استفاده کند.
طبق گزارش Stackoverflow زبان‌ Clojure یکی از پر درآمدترین زبان‌های برنامه‌نویسی در سال ۲۰۱۹ در سطح دنیا بوده.


Scala:
Designed by: Martin Odersky
First appeared: 20 January 2004; 19 years ago
طی سال‌های اخیر توجه شرکت‌ها و مؤسسات بیشتری به سمت اسکالا جذب شده‌است. بلوغ اسکالا باعث شده تا نه تنها شرکت‌های پیشرو در صنعت IT (همچون Twitter، LinkedIn و ...) بلکه شرکت‌های ریز و درشت بسیاری که تنها مصرف کنندگان محصولات فناوری هستند نیز به استفاده از این زبان و بستر منحصر به فرد آن رو بیاورند. ابزارهای Build و Test، کتابخانه و چارچوب‌های منحصر به فردی همچون Scalaz، Play، Akka و ... در کنار دسترسی به طیف گستردهٔ کتابخانه‌های جاوا، اسکالا را به یکی از بهترین گزینه‌ها برای تولید انواع محصولات نرم‌افزاری تبدیل کرده.
طبق گزارش Stackoverflow زبان‌ scala یکی از پر درآمدترین زبان‌های برنامه‌نویسی در سال ۲۰۱۹ در سطح دنیا بوده.


Lua:
First appeared: 1993; 30 years ago
این زبان در بسیاری از برنامه های کاربردی صنعتی مانند Adobe Photoshop مورد استفاده قرار گرفته است. این زبان در حال حاضر پیشگام زبان اسکریپت در بازی است و دارای یک راهنمای مرجع کامل و جامع و چندین کتاب در مورد آن است.

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

@khat_academy
👍6👎2